質問編集履歴
1
初心者マークを付けた。情報の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,16 +1,29 @@
|
|
1
|
-
### 前提・実現したいこと
|
2
|
-
|
3
1
|
verilog初心者です。テキストのソースコードにわからない部分があったので解説お願いいたします。
|
4
2
|
|
3
|
+
###分からないこと①
|
4
|
+
LEDを赤、緑、青、白、消灯の5つの状態に変化させる回路のソースコードです。
|
5
|
+
26ビットの分周カウンタで125MHzのクロック信号を分周して約1.86Hzにしています。
|
5
|
-
|
6
|
+
17行目の以下の文の==の意味が分かりません。==は等しいという意味だと思いますが、代入するものに対して等しいとはどういう意味なのでしょうか。条件式に出てくるのならわかるのですが…
|
6
7
|
また、26'h3ffffffは2進数で言う1が26桁並んだ数値ですが、なぜここで出てきているのでしょうか。
|
7
8
|
|
8
|
-
### わからない部分
|
9
|
+
### わからない部分①
|
9
10
|
|
10
11
|
```
|
11
12
|
wire ledcnten = (cnt26==26'h3ffffff);
|
12
13
|
```
|
13
14
|
|
15
|
+
###分からないこと②
|
16
|
+
以下の文はRST≠0のときcnt26に0を代入して、RST=0のときcnt26+1を代入していると思うのですが、テキストのブロック図にはALL1検出と書いてあります。この記述がなぜ26ビットで分周できるのでしょうか。システムクロックを分周というソースコード自体があまりよく分かっていないのかもしれません。
|
17
|
+
|
18
|
+
### わからない部分②
|
19
|
+
|
20
|
+
```
|
21
|
+
if ( RST )
|
22
|
+
cnt26 <= 26'h0;
|
23
|
+
else
|
24
|
+
cnt26 <= cnt26 + 1'h1;
|
25
|
+
```
|
26
|
+
|
14
27
|
### 該当のソースコード
|
15
28
|
|
16
29
|
```verilog
|
@@ -59,4 +72,9 @@
|
|
59
72
|
end
|
60
73
|
|
61
74
|
endmodule
|
62
|
-
```
|
75
|
+
```
|
76
|
+
|
77
|
+
###わかっていること
|
78
|
+
・@( posedge CLK ) beginでクロック信号の立ち上がりのタイミングでbegin以下が実行されること。
|
79
|
+
・if(RST)でRST≠0の時だということ。
|
80
|
+
・26'h0は26ビットの16進数で0の数値という意味だということ。
|