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

问题描述 投票:0回答:1

我正在读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怎么了?

verilog
1个回答
1
投票

您需要在电路中添加延迟;没有它们,你的逻辑循环在模拟中无限运行;例:

assign #1 qbar = ~(Q & clr & d);
© www.soinside.com 2019 - 2024. All rights reserved.