写测试台的时候,写的有没有问题
wait for 1 ns ; wait until rising_edge( clock ) ;
Run Code Online (Sandbox Code Playgroud)
每次我想等待下一个上升沿?
我想将此序列放入一个过程中,然后始终使用它。
我想等待 1 ns 的原因是,如果我只有 swait until
并且其中两个之间没有信号分配,它们将合并为一个。
时钟周期时间为 10ns,因此 1 ns 应该不成问题。我真正想做的是等待一个增量,但我不知道该怎么做。是否可以?
这种方法是否存在隐藏的陷阱?
我们使用 VHDL 93 和 ISIM 模拟器。
你不需要wait for 1 ns
.
等待 5 个时钟的一种方法是:
wait until rising_edge( clock ) ;
wait until rising_edge( clock ) ;
wait until rising_edge( clock ) ;
wait until rising_edge( clock ) ;
wait until rising_edge( clock ) ;
Run Code Online (Sandbox Code Playgroud)
一个简化的规则是等待语句始终将进程挂起至少一个模拟/增量周期。
until
对于没有显式提供的等待on sensitivity-list
(例如上面的示例),存在一个隐含的子句on sensitivity-list
中的每个信号until
。因此,上式等价于:
wait on clock until rising_edge( clock ) ;
wait on clock until rising_edge( clock ) ;
wait on clock until rising_edge( clock ) ;
wait on clock until rising_edge( clock ) ;
wait on clock until rising_edge( clock ) ;
Run Code Online (Sandbox Code Playgroud)
也许这个较长的形式更明显一点 - 当时钟发生变化并且 Riding_edge(clock) 为 true 时,等待语句将恢复并继续到下一个等待语句。下一个等待语句将暂停,直到时钟发生变化。