質問編集履歴

1

初心者マークを付けた。情報の追記

2021/09/01 07:09

投稿

im_a_student
im_a_student

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,24 +1,50 @@
1
- ### 前提・実現したいこと
2
-
3
-
4
-
5
1
  verilog初心者です。テキストのソースコードにわからない部分があったので解説お願いいたします。
6
2
 
7
3
 
8
4
 
5
+ ###分からないこと①
6
+
7
+ LEDを赤、緑、青、白、消灯の5つの状態に変化させる回路のソースコードです。
8
+
9
+ 26ビットの分周カウンタで125MHzのクロック信号を分周して約1.86Hzにしています。
10
+
9
- LEDを赤、緑、青、白、消灯の5つの状態に変化させる回路のソースコードです。17行目の以下の文の==の意味が分かりません。==は等しいという意味だと思いますが、代入するものに対して等しいとはどういう意味なのでしょうか。条件式に出てくるのならわかるのですが…
11
+ 17行目の以下の文の==の意味が分かりません。==は等しいという意味だと思いますが、代入するものに対して等しいとはどういう意味なのでしょうか。条件式に出てくるのならわかるのですが…
10
12
 
11
13
  また、26'h3ffffffは2進数で言う1が26桁並んだ数値ですが、なぜここで出てきているのでしょうか。
12
14
 
13
15
 
14
16
 
15
- ### わからない部分
17
+ ### わからない部分
16
18
 
17
19
 
18
20
 
19
21
  ```
20
22
 
21
23
  wire ledcnten = (cnt26==26'h3ffffff);
24
+
25
+ ```
26
+
27
+
28
+
29
+ ###分からないこと②
30
+
31
+ 以下の文はRST≠0のときcnt26に0を代入して、RST=0のときcnt26+1を代入していると思うのですが、テキストのブロック図にはALL1検出と書いてあります。この記述がなぜ26ビットで分周できるのでしょうか。システムクロックを分周というソースコード自体があまりよく分かっていないのかもしれません。
32
+
33
+
34
+
35
+ ### わからない部分②
36
+
37
+
38
+
39
+ ```
40
+
41
+ if ( RST )
42
+
43
+ cnt26 <= 26'h0;
44
+
45
+ else
46
+
47
+ cnt26 <= cnt26 + 1'h1;
22
48
 
23
49
  ```
24
50
 
@@ -121,3 +147,13 @@
121
147
  endmodule
122
148
 
123
149
  ```
150
+
151
+
152
+
153
+ ###わかっていること
154
+
155
+ ・@( posedge CLK ) beginでクロック信号の立ち上がりのタイミングでbegin以下が実行されること。
156
+
157
+ ・if(RST)でRST≠0の時だということ。
158
+
159
+ ・26'h0は26ビットの16進数で0の数値という意味だということ。