module jk_ff(input J, input K, input Clock, output Q, output Qneg);
wire S,R,z,w;
assign w = Q !== 1'b0;
assign z = Qneg === 1'b1;
nand n1(S,J,Clock,z);
nand n2(R,K,Clock,w);
nand n3(Q,z,S);
nand n4(Qneg,w,R);
endmodule
module jk_ff_test();
reg J,K, Clock,reset;
wire Q, Qneg;
jk_ff uut( .J(J), .K(K), .Clock(Clock), .Q(Q), .Qneg(Qneg));
initial begin
Clock=0;
forever #20 Clock = ~Clock;
end
initial begin
J=0; K=0; #50
J=0; K=1; #50
J=1; K=0; #50
J=1; K=1; #50
J=0; K=0; #50
J=0; K=1; #50
J=1; K=0; #50
J=1; K=1; #50
$finish();
end
endmodule
我的verilog代码是这样的。我想设计一个不使用 always 块的 JK 触发器。它应该是上升沿触发的。我正在实施我的设计,但在模拟部分,我看到一个窗口显示“当前时间:160ns”并且它永远不会结束。
我尝试将 Q 更改为 reg,然后我将 Q 和 Qneg 而不是 z,w 放在与非门中。然后我将 z,w 而不是 Q 和 Qneg 作为最后 2 个与非门中的与非门输出。我将 Q 的首字母分配给 0。然后分配 w=Q,z=Qneg。但它没有用。