【问题标题】:Error: Iteration limit 5000 reached at time xxx ns错误:在时间 xxx ns 达到迭代限制 5000
【发布时间】:2018-09-01 00:41:49
【问题描述】:

我正在阅读 Samir Palnitkar 的《Verilog Hdl》一书。在第 6 章的最后有一个练习:使用主从 JK 触发器设计一个同步计数器。但是我在 JK 触发器部分苦苦挣扎。 这是书中提供的JK触发器电路:

这是我上面电路的 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】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2015-11-11
      • 1970-01-01
      相关资源
      最近更新 更多