D フリップフロップを使用して非同期カウンターをシミュレートするために、このコードを書きました。プログラムは最初から反復まで正しい出力を提供しますが、その後、出力はまったく変化しません。私は何を間違っていますか?
コードは次のとおりです。
最初のモジュール:
module DFF(d,q,reset,clk);
input d,reset,clk;
output reg q;
always @(posedge reset, posedge clk) begin
if(reset) begin
q=0;
end
if(d)
q=d;
else
q=q;
end
endmodule
2 番目のモジュール:
module RippleCounter(d,clk,reset,out);
input [3:0] d;
input clk, reset;
output [3:0] out; // 4bit
DFF a(d[0],out[0],reset,clk);
DFF b(d[1],out[1],reset,out[0]);
DFF c(d[2],out[2],reset,out[1]);
DFF dx(d[3],out[3],reset,out[2]);
endmodule
3番目のモジュール:
module RippleCounterTOP;
reg [3:0] d;
reg clk, reset;
wire [3:0] out;
RippleCounter r(d,clk,reset,out);
initial begin
d=0;clk=0;reset=1;
end
always begin
#5 d=d+1; clk=~clk;
end
endmodule