D触发器
本代码描述的是一个正跳变沿触发的 D 触发器。时钟信号是唯一可以引起 Q 输出端发生变化的信号。当且仅当Clock处于上升沿时,输入D才传送给输出Q。在其他时刻,D的变化并不影响输出Q。
module flipflop (D, Clock, Q);
input D, Clock;
output reg Q;
always @(posedge Clock)
Q = D;
endmodule
`timescale 1ns/1ns
module flipflop_tb;
reg D,Clock;
wire Q;
initial
begin
D=1'b0;
Clock=1'b1;
end
always
#5 Clock=~Clock;
always
#10 D=~D;
initial
#100 $stop;
flipflop flip(D, Clock, Q);
Endmodule
其中Clock每隔5个ns取一次反;D每隔10ns取一次反。输入信号在100ns时停止输入。
含同步复位端的D触发器
module flipflop45 (D, Clock, Resetn, Q);
input D, Clock, Resetn;
output reg Q;
always @(posedge Clock)
if (!Resetn)
Q <= 0;
else
Q <= D;
endmodule
如果Reseten =