进程语句中的(并发)信号分配是顺序的还是并发的? [英] Is the (concurrent) signal assignment within a process statement sequential or concurrent?
问题描述
据我所知,PROCESS 中的所有语句都是按顺序执行的.那么并发信号分配(<=)会发生什么?它的工作方式是否与顺序赋值 (:=) 相同,还是在 delta 延迟后执行?
From what I understand, all statements inside a PROCESS is executed sequentially. So what happens to a concurrent signal assignment(<=)? Does it work the same way as sequential assignment (:=) or does it execute after a delta delay?
如果它在一个delta延迟后执行,那么PROCESS里面的所有语句如何被称为顺序的?
If it executes after a delta delay, then how can all the statements inside PROCESS be called sequential?
如果立即执行,那么进程中的:=和<=有什么区别吗?
If it executes immediately, then is there any difference between := and <= in a process?
推荐答案
信号赋值 (<=) 在进程中的所有顺序代码执行完毕后执行.这是该时间步的所有活动进程完成的时间.
The signal assignment (<=) is performed after all the sequential code in the processes are done executing. This is when all the active processes for that timestep are done.
举个例子:
假设您有一个触发 2 个进程的事件.这2个过程使用相同的信号,但其中一个改变了该信号的值信号.模拟器只能执行一个进程由于顺序仿真模型(不要与vhdl 的并发模型).因此,如果首先模拟过程 A 并且 A改变信号,B 会有错误的信号值.因此信号只有在所有触发的过程都完成后才能改变.
Suppose you have an event that triggers 2 processes. These 2 processes use the same signal, but one of them changes the value of that signal. The simulator is only be able to perform one process at the time due to a sequential simulation model (not to confuse with the concurrent model of vhdl). So if process A is simulated first and A changes the signal, B would have the wrong signal value. Therefore the signal can only be changed after all the triggered processes are done.
变量赋值 (:=) 立即执行并可用于例如在进程中临时存储一些数据.
The variable assignment (:=) executes immidiatly and can be used to e.g. temporarely store some data inside a process.
这篇关于进程语句中的(并发)信号分配是顺序的还是并发的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!