カウンタ回路(Chisel)
カウンタ回路の用途
イベントのカウント
時間の間隔を定義
時間の間隔を定義?
例えば,クロックのサイクル数をカウントして,指定の時間間隔が経過したら,動作トリガを起動
Chiselの実装例
3サイクル後,0に戻るカウンタ回路
val countReg = RegInit(0.U(32.W)) countReg := Mux(countReg === 2.U, 0.U, countReg + 1.U)
レジスタはクロックの立ち上がりエッジで入力を取り組む.
0 -> 1 -> 2 -> このタイミングで0に戻したい.ので
countReg === 2.U
と設定する.
countRegの出力が2のときにリセットすれば,3サイクルを数えたことになる.
# 豆知識
Chiselでは「レジスタ信号」と「組み合わせ論理信号」を区別するために,レジスタ名の後ろにRegをつける習慣がある.
キャメルケースとサフィックスで分かりやすくしている.