我试图解决这个问题,但是我得到的表与xilinx显示的表不同。我非常喜欢我的答案和真正的答案。 Xilinx显示“out”为“U”直到36ns,在36ns之后,它为“1”。任何人都可以帮我解释为什么“out”图形在36ns之前没有分配任何值?(我认为它应该在20 ns时首先分配)。 my answer question
答案 0 :(得分:1)
结果证明这是一个非常好的问题。我最初认为你在模拟时做错了什么,但后来我运行了自己的模拟并得到了相同的结果。
事实证明,a <= b after x
赋值默认使用称为“惯性时间模型”的东西。在此模式下,如果b
在x
时间过去之前再次更改,则会取消预定事件。目的是过滤短于指定延迟的脉冲。在你的情况下,这就是模拟器将要做的事情:
out
计划在t = 20时更改为1. tem1 or tem2
更改为0.取消t = 20时的预定更改,并在t = 32时安排新的更改为0。tem1 or tem2
更改回1.再次取消预定的更改,并在t = 36时安排新的更改。tem1 or tem2
保持为1后,执行t = 36时的更改,out
最终从U更改。您可以使用out <= transport tem1 or tem2 after 20 ns;
更改为“传输延迟模型”在这种情况下,绘制的波形将与模拟匹配。