设计带异步低电平有效复位的 D 触发器
D 触发器 是一种时序单元,在时钟的指定沿跟随输入引脚 d 的值。
设计 #1:异步低电平有效复位
module dff (
input d,
input rstn,
input clk,
output reg q
);
always @ (posedge clk or negedge rstn)
if (!rstn) q <= 0;
else q <= d;
endmodule
硬件原理图
测试平台
module tb_dff;
reg clk;
reg d;
reg rstn;
reg [2:0] delay;
dff dff0 (
.d(d),
.rsnt (rstn),
.clk (clk),
.q (q)
);
// 生成时钟
always #10 clk = ~clk;
// 测试用例
initial begin
clk <= 0;
d <= 0;
rstn <= 0;
#15 d <= 1;
#10 rstn <= 1;
for (int i = 0; i < 5; i=i+1) begin
delay = $random;
#(delay) d <= i;
end
end
endmodule
设计 #2:同步低电平有效复位
module dff (
input d,
input rstn,
input clk,
output reg q
);
always @ (posedge clk)
if (!rstn) q <= 0;
else q <= d;
endmodule
硬件原理图
测试平台
module tb_dff;
reg clk;
reg d;
reg rstn;
reg [2:0] delay;
dff dff0 (
.d(d),
.rsnt (rstn),
.clk (clk),
.q (q)
);
// 生成时钟
always #10 clk = ~clk;
// 测试用例
initial begin
clk <= 0;
d <= 0;
rstn <= 0;
#15 d <= 1;
#10 rstn <= 1;
for (int i = 0; i < 5; i=i+1) begin
delay = $random;
#(delay) d <= i;
end
end
endmodule
Verilog