質問編集履歴
1
初心者マークを付けた。情報の追記
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
|
-
|
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の数値という意味だということ。
|