我在 Verilog 中的门级 JK 触发器设计中有永远的循环

问题描述 投票:0回答:0
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。但它没有用。

verilog hdl flip-flop
© www.soinside.com 2019 - 2024. All rights reserved.