为什么 clk_o2 x 在这里?

why clk_o2 is x here?

我试过延迟初始但它不起作用 我是 Verilog 的新手,这是一个训练问题

The ClockDivisor Code

The Test bensh

The Result

如果我在负边沿更改它,我会在 clk_o2 处得到 x

我认为您指的是 clkdivisor 模块中的最后一个 always 块。问题是您的测试平台在时间 0 产生了一个 negedge clk,因为它从 X 编码到 0。这会导致 initial 块试图将 clockout2 分配给 0。

您可以使用阻塞赋值来摆脱竞争。 初始开始 时钟输出 1 = 0; 时钟输出 2 = 0; 结束

你的代码肯定是不可综合的。还有其他方法可以解决这个问题,但我们不知道具体应该做什么。