開発日記

Erlangをダラダラ書きます。

カウンタ回路(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をつける習慣がある.

キャメルケースとサフィックスで分かりやすくしている.