vhdl中的事件和事务(时序图)

时间:2016-05-15 14:26:11

标签: vhdl

我试图解决这个问题,但是我得到的表与xilinx显示的表不同。我非常喜欢我的答案和真正的答案。 Xilinx显示“out”为“U”直到36ns,在36ns之后,它为“1”。任何人都可以帮我解释为什么“out”图形在36ns之前没有分配任何值?(我认为它应该在20 ns时首先分配)。 my answer question

1 个答案:

答案 0 :(得分:1)

结果证明这是一个非常好的问题。我最初认为你在模拟时做错了什么,但后来我运行了自己的模拟并得到了相同的结果。

事实证明,a <= b after x赋值默认使用称为“惯性时间模型”的东西。在此模式下,如果bx时间过去之前再次更改,则会取消预定事件。目的是过滤短于指定延迟的脉冲。在你的情况下,这就是模拟器将要做的事情:

  • 在t = 0时,out计划在t = 20时更改为1.
  • 在t = 12时,tem1 or tem2更改为0.取消t = 20时的预定更改,并在t = 32时安排新的更改为0。
  • 在t = 16时,tem1 or tem2更改回1.再次取消预定的更改,并在t = 36时安排新的更改。
  • tem1 or tem2保持为1后,执行t = 36时的更改,out最终从U更改。

您可以使用out <= transport tem1 or tem2 after 20 ns;更改为“传输延迟模型”在这种情况下,绘制的波形将与模拟匹配。