Verilog初心者の質問
Q&A
分周器である1.のプログラムと2.のプログラムで、同じ動きをしてほしいのですが、2.のプログラムがうまく動きません。教えてください。
1.
module ClockDivider(
input CLK_IN,
output reg CLK_OUT
);
reg [24:0] count; // カウンター
always @(posedge CLK_IN) begin
// カウンターをインクリメント
count <= count + 1'b1;
// カウンターが250,000,000に達したら出力信号を反転
if (count == 25'd249999999) begin
CLK_OUT <= ~CLK_OUT;
count <= 25'd0;
end
end
endmodule
2.
module ClockDivider #(
parameter frequency = 1
)(
input CLK_IN,
output reg CLK_OUT
);
reg [24:0] count; // カウンター
wire COUNT_VALUE = frequency * (250000000 - 1);
always @(posedge CLK_IN) begin
// カウンターをインクリメント
count <= count + 1'b1;
// カウンターがCOUNT_VALUEに達したら出力信号を反転
if (count == COUNT_VALUE) begin
CLK_OUT <= ~CLK_OUT;
count <= 25'd0;
end
end
endmodule
0 likes