为什么我的反击价值会产生 StX?

Why is my counter out value producing StX?

我制作了一个计数为 32 的简单计数器和一个测试平台。我不确定为什么输出值 (co) 仍然作为 StX 出现。我已经尝试调试它好几个小时了,但我不确定这个问题。

你的计数器重置为高电平有效。你永远不要将它设置为1。你需要将它设置为1至少一个时钟周期。

co 是 X(未知),因为它是对依赖于 current 的表达式的连续赋值,它是 X。current 是 X,因为您将其声明为 regreg 类型在时间 0 时默认为 X,然后您永远不会将其分配给已知值。

您的测试台始终将 rst 驱动为 0。这意味着永远不会执行第 8 行。第 10 行将在每个 clk 上升沿执行,但 current 将保持在 X. X+1 returns X.

您需要正确地重置您的设计。在时间 0,您应该通过设置 rst=1 来断言复位。延迟一段时间后,您应该释放重置设置 rst=0.

initial begin
    clk = 0;
    rst = 1; // Assert reset

    #20;
    rst = 0; // Release reset

    #10;
    en = 1;
    init = 1;
end