まず、Verilogでカウンタを作成するためには、以下の手順に従います。
-
カウンタのビット幅を決定します。例えば、4ビットのカウンタを作成する場合、4個のレジスタが必要です。
-
カウンタのモジュールを定義します。以下は、4ビットのカウンタを作成する例です。
module Counter4bit(
input wire clk, // クロック信号
input wire reset, // リセット信号
output wire [3:0] count // カウント値
);
reg [3:0] count;
always @(posedge clk or posedge reset) begin
if (reset) begin
count <= 0; // リセット時にカウントを0にする
end else begin
count <= count + 1; // クロックの立ち上がりエッジでカウントをインクリメントする
end
end
endmodule
- テストベンチを作成してカウンタをテストします。以下は、カウンタの動作を確認するためのテストベンチの例です。
module Counter4bit_TB;
reg clk;
reg reset;
wire [3:0] count;
Counter4bit counter(
.clk(clk),
.reset(reset),
.count(count)
);
initial begin
clk = 0;
reset = 0;
// クロックの生成
forever #5 clk = ~clk;
// リセット信号のアサート
#10 reset = 1;
// カウント値の表示
#20 $display("Count: %d", count);
// リセット信号のデアサート
#10 reset = 0;
// カウント値の表示
#20 $display("Count: %d", count);
// さらにカウントが進むことを確認するために、数回クロックを進める
#30;
#30;
#30;
// カウント値の表示
#20 $display("Count: %d", count);
// シミュレーションの終了
#10 $finish;
end
endmodule
上記のVerilogコードを使用すると、4ビットのカウンタが作成されます。クロックの立ち上がりエッジでカウントがインクリメントされ、リセット信号でカウントが0にリセットされます。
これらのコード例を使用して、Verilogでカウンタを作成する方法を学ぶことができます。必要に応じてカウンタのビット幅や動作条件を変更して、さまざまなカウンタを作成することもできます。