首页 > 解决方案 > 为什么我的反价值产生 StX?

问题描述

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

Verilog 代码

模拟

标签: verilogfpgatest-bench

解决方案


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

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

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

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

    #20;
    rst = 0; // Release reset

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

推荐阅读