|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
Error: (vsim-3601) Iteration limit reached at time 2 ns.
module top是用来做test bentch的,后面两个module是实现D flip flop的。
代码如下:
module top;
wire Q,Qn;
reg D,clk;
reg restn;
E_D_Flip_Flop edfflp(Q,Qn,D,clk,restn);
initial
begin
clk = 1'b0;
restn = 1'b0;
#2 restn = 1'b1; //似乎是在restn=1的时候,仿真不下去的
end
always
#4.3 clk = ~clk;
initial
begin
#1 D = 1'b1;
#3.1 D = 1'b0;
#3.2 D = 1'b1;
#3.3 D = 1'b0;
#3.5 D = 1'b1;
#3.6 D = 1'b0;
#3.7 D = 1'b1;
#3.8 D = 1'b0;
#3.9 $finish; //terminate the simulation end
end
endmodule
//第一个图,Gated D Latch
module Gated_D_Latch(Q,Qn,D,clk,rstn);
input D,clk,rstn;
output Q,Qn;
wire Dn, So, Ro;
not #0.05 n0(Dn,D);
nand #0.03 nd0(So,D,clk);
nand #0.02 nd1(Ro,Dn,clk);
nand #0.01 nd2(Q,So,Qn,rstn);
nand #0.02 nd3(Qn,Ro,Q,rstn);
endmodule
//第二个图:edged D Flip Flop with reset.
module E_D_Flip_Flop(Q,Qn,D,clk,resetn);
input D,clk,resetn;
output Q,Qn;
wire clkn,Qm;
not #0.01 n0(clkn,clk);
Gated_D_Latch D_Master(Qm,,D,clk,resetn);
Gated_D_Latch D_Slave(Q,Qn,Qm,clkn,resetn);
endmodule
其中, D latch是这个图:
edged flip-flop如下图:
|
|