teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2021/09/01 07:09

投稿

im_a_student
im_a_student

スコア6

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
- LEDを赤、緑、青、白、消灯の5つの状態に変化させる回路のソースコードです。17行目の以下の文の==の意味が分かりません。==は等しいという意味だと思いますが、代入するものに対して等しいとはどういう意味なのでしょうか。条件式に出てくるのならわかるのですが…
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の数値という意味だということ。