错误:在xxx ns的时间达到了迭代限制5000

时间:2018-09-01 00:41:49

标签: verilog

我正在阅读Samir Palnitkar的书“ Verilog Hdl”。在第6章的末尾进行了练习:使用主从JK触发器设计一个同步计数器。但是我在JK触发器部分苦苦挣扎。 这是本书中提供的JK触发器电路: Here's the JK flip-flop circuit provided in the book

这是我上面电路的Verilog代码(我已经检查了多次,希望不会有愚蠢的错误):

module test(in1, in2, clk, out, clr);
    input in1, in2, clk, clr;
    output out;

    mJKff wtf(
        .Q(out),
        .J(in1),
        .K(in2),
        .clk(clk),
        .clr(clr));

endmodule

module mJKff(Q, J, K, clk, clr);
    output Q;
    input J, K, clk, clr;

    wire
        a, b, c, d, y, ybar, cbar, qbar;

    assign
        a    = ~(qbar & J & clk & clr),
        b     = ~(clk & K & Q),
        y     = ~(a & ybar),
        ybar = ~(y & clr & b),
        c    = ~(y & cbar),
        d    = ~(ybar & cbar),
        cbar = ~clk;

    assign
        qbar = ~(Q & clr & d),
        Q    = ~(c & qbar);

endmodule

代码已成功编译,我使用Quartus Prime v18.0进行仿真并得到此错误:

  
    

错误(可抑制):(vsim-3601)在xxx ns的时间达到了迭代限制5000。

  

“ xxx”恰好在“ clk”上升且J = 1的时刻; K = 0; clr = 1 怎么了?

1 个答案:

答案 0 :(得分:1)

您需要在电路中增加延迟;没有它们,逻辑中的循环将在仿真中无限运行;例如:

assign #1 qbar = ~(Q & clr & d);