我试图使用Icarus Verilog在Verilog中编写和测试一个简单的16位宽RAM8芯片。我发现很难从概念上理解为什么iverilog模拟器会向我显示’x’(…
在这两种情况下,出现的X值都是初始值 ram (因为你没有指定任何初始值,所以是X)。如果你继续测试并循环访问相同的地址,下次你会看到你之前写的值。
ram
在第一个示例中,并发读取和写入不是问题。读取从时钟边沿之前返回值,并且 ram 将包含时钟边沿之后的新值。
在第二个示例中,触发X的事件是 address 递增,而不是 clk 和 load 信号。以来 out 未注册且与之无关 clk , 立刻 address 更改后,您会看到该地址的值显示在上面 out 。然后在写入新值的时钟边沿之后,您会看到 out 同时更改为该值。
address
clk
load
out