工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Verilog

Verilogリングカウンタ:パラメータ化設計とテストベンチ例

リングカウンタとは

リングカウンタは、出力ビットを循環シフトさせるカウンタです。初期状態で1ビットのみが'1'(他は'0')で、クロックごとに'1'が左(または右)に1ビットずつ移動し、端まで達したら反対側に戻ります。NビットならNクロックで元の状態に戻るため、N進カウンタとして機能します。

設計(ストレートリングカウンタ)

パラメータWIDTHでビット幅を可変にし、リセット時はout = 1(LSBのみ1)で初期化します。クロックごとにMSBにLSBを、それ以外は右隣のビットをシフトインします。

module ring_ctr #(
  parameter WIDTH = 4
)(
  input  clk,
  input  rstn,
  output reg [WIDTH-1:0] out
);
  always @(posedge clk) begin
    if (!rstn)
      out <= 1;  // リセット時: 0001
    else begin
      out[WIDTH-1] <= out[0];           // MSBにLSBをシフトイン
      for (int i = 0; i < WIDTH-1; i = i + 1)
        out[i] <= out[i+1];             // 下位ビットに上位ビットをシフトイン
    end
  end
endmodule

テストベンチ

module tb;
  parameter WIDTH = 4;
  reg clk;
  reg rstn;
  wire [WIDTH-1:0] out;

  ring_ctr u0 (
    .clk(clk),
    .rstn(rstn),
    .out(out)
  );

  always #10 clk = ~clk;  // 20ns周期

  initial begin
    {clk, rstn} <= 0;
    $monitor("T=%0t out=%b", $time, out);
    repeat (2) @(posedge clk);  // リセット保持
    rstn <= 1;                  // リセット解除
    repeat (15) @(posedge clk); // 15サイクル観測
    $finish;
  end
endmodule

シミュレーション結果

ncsim> run
T=0   out=xxxx
T=10  out=0001  // リセット解除後初期値
T=50  out=1000  // 4クロック後: 1がMSBへ
T=70  out=0100  // 循環継続
T=90  out=0010
T=110 out=0001  // 4クロックで元に戻る(4進カウンタ)
T=130 out=1000
T=150 out=0100
T=170 out=0010
T=190 out=0001
T=210 out=1000
T=230 out=0100
T=250 out=0010
T=270 out=0001
T=290 out=1000
T=310 out=0100
Simulation complete via $finish(1) at time 330 NS + 0

リングカウンタの特徴

応用例

ツイステッドリングカウンタ(ジョンソンカウンタ)との違い

リングカウンタはLSBをMSBに戻しますが、ジョンソンカウンタはLSBの反転をMSBに戻します。これによりステート数が2×ビット幅になります(次記事で詳解)。

Verilog

  1. Verilog基礎:最初のANDゲートを設計する
  2. Verilogマスター:デジタル回路設計のための完全チュートリアル
  3. Verilog連結マスター:実践ガイド
  4. Verilog代入文の理解:種類、構文、ベストプラクティス
  5. Verilogブロッキング代入とノンブロッキング代入:違いを徹底解説
  6. Verilog関数のマスター:効率的なRTL設計のために
  7. Verilogタスクの理解:関数との違い、構文、使用法
  8. Verilogクロックジェネレータ:設計と実装ガイド
  9. Verilog数学関数のマスター:効率的なハードウェア設計のために
  10. Verilog Mod-Nカウンタ:パラメータ化モジュールとテストベンチ
  11. Verilogグレイカウンタ:4ビットグレイコード生成モジュール