为什么我的反击价值会产生 StX?
Why is my counter out value producing StX?
我制作了一个计数为 32 的简单计数器和一个测试平台。我不确定为什么输出值 (co
) 仍然作为 StX 出现。我已经尝试调试它好几个小时了,但我不确定这个问题。
你的计数器重置为高电平有效。你永远不要将它设置为1。你需要将它设置为1至少一个时钟周期。
co
是 X(未知),因为它是对依赖于 current
的表达式的连续赋值,它是 X。current
是 X,因为您将其声明为 reg
和 reg
类型在时间 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
我制作了一个计数为 32 的简单计数器和一个测试平台。我不确定为什么输出值 (co
) 仍然作为 StX 出现。我已经尝试调试它好几个小时了,但我不确定这个问题。
你的计数器重置为高电平有效。你永远不要将它设置为1。你需要将它设置为1至少一个时钟周期。
co
是 X(未知),因为它是对依赖于 current
的表达式的连续赋值,它是 X。current
是 X,因为您将其声明为 reg
和 reg
类型在时间 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