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

4ビットカウンタ:0から15までの効率的なバイナリカウント

4ビットカウンタの概要

4ビットカウンタは4'b0000から4'h1111(0〜15)までインクリメントし、オーバーフロー時に4'b0000にロールオーバーします。クロックが供給され、リセットが非アサート(High)の間、カウントを継続します。

ロールオーバーの仕組み

最大値4'b1111(15)の次にカウントアップすると、5ビット目5'b10000(16)になりますが、4ビットレジスタではMSBが捨てられ4'b0000(0)になります。

0000 → 0001 → 0010 → ... → 1110 → 1111 → 0000 → 0001 → ...

設計

クロック立ち上がりエッジで動作し、アクティブローリセット(rstn=0でリセット)を備えます。

module counter (
  input  clk,           // クロック入力
  input  rstn,          // アクティブローリセット
  output reg [3:0] out  // 4ビットカウンタ出力
);
  always @(posedge clk) begin
    if (!rstn)
      out <= 4'b0000;   // リセット時は0クリア
    else
      out <= out + 1;   // インクリメント
  end
endmodule

コード解説

回路図

テストベンチ

リセットのアサート/非アサートを複数回繰り返し、カウンタのリセット動作とロールオーバーを確認します。

module tb_counter;
  reg clk;
  reg rstn;
  wire [3:0] out;

  counter c0 (
    .clk(clk),
    .rstn(rstn),
    .out(out)
  );

  // クロック生成:10ns周期(100MHz)
  always #5 clk = ~clk;

  initial begin
    // 1. 初期化
    clk <= 0; rstn <= 0;
    
    // 2. 刺激:リセットを複数回アサート/非アサート
    #20 rstn <= 1;   // カウント開始
    #80 rstn <= 0;   // リセットアサート(カウント停止・クリア)
    #50 rstn <= 1;   // 再度カウント開始
    
    // 3. 終了
    #20 $finish;
  end
endmodule

シミュレーション結果

ncsim> run
[0ns]  clk=0 rstn=0 out=0xx
[5ns]  clk=1 rstn=0 out=0x0
[10ns] clk=0 rstn=0 out=0x0
[15ns] clk=1 rstn=0 out=0x0
[20ns] clk=0 rstn=1 out=0x0   // リセット解除、次エッジからカウント開始
[25ns] clk=1 rstn=1 out=0x1
[30ns] clk=0 rstn=1 out=0x1
[35ns] clk=1 rstn=1 out=0x2
...
[80ns] clk=0 rstn=1 out=0x7
[85ns] clk=1 rstn=1 out=0x8
[90ns] clk=0 rstn=0 out=0x8   // リセットアサート
[95ns] clk=1 rstn=0 out=0x0   // 即座にクリア
...
[150ns] clk=0 rstn=1 out=0x0  // 再度リセット解除
[155ns] clk=1 rstn=1 out=0x1  // 次エッジからカウント再開
Simulation complete via $finish(1) at time 170 NS + 0

波形観測

リセット(rstn=0)時に出力が即座に0になり、リセット解除後の最初のクロック立ち上がりエッジからカウントアップが再開する様子が確認できます。

ハードウェア回路図(合成後)

拡張のヒント

Verilog

  1. PIDリセットワインドアップ防止:信頼性の高いプロセス制御のための戦略
  2. 555タイマーと4027フリップフロップによる3ビットバイナリカウンタ
  3. 同期2進カウンタ:設計、アップ/ダウン動作、エンコーダ応用
  4. カウンタモダラス:現代システム向け最適化アルゴリズム
  5. リングカウンタとジョンソンカウンタ:設計、動作、実用応用
  6. デジタルランプ(カウンタ)ADC:動作、利点、限界
  7. 夏の成功に向けIT戦略をリチャージ、リセット、再構成する
  8. IT/OT融合:持続可能なデジタル変革のためのカルチャーリセット
  9. Verilog Mod-Nカウンタ:パラメータ化モジュールとテストベンチ
  10. Verilogグレイカウンタ:4ビットグレイコード生成モジュール
  11. Python collections.Counter:効率的なカウント、更新、演算操作