我了解到遇到表达式时信号不会立即更改,但是当进程结束时。在这个例子中:
...
signal x,y,z : bit;
...
process (y)
begin
x<=y;
z<=not x;
end process;
这个例子说:
如果信号y改变,那么将在x上安排一个事件使其与y相同。此外,在z上安排一个事件使其与x相反。问题是,z的值是否与y相反?当然,答案是否定的,因为当执行第二个语句时,x上的事件尚未处理,并且在z上调度的事件将在进程开始之前与x的值相反。
好吧,我需要了解一些事情:
- 根据我的了解,信号值仅更新 在过程结束时。它是否正确?
- 信号
x
作为第一个语句更新。这还不会改变它的价值x
,此更改将放入队列中,以便在该过程结束后执行。这句话之后的所有内容x <= y
不会看到变化,会看到x
有其旧的价值。它是否正确? - 第二个陈述是试图改变信号的价值
z
。同样在这里,z不会改变它的值,但它取决于另一个进程的值。改变了z
将被放入队列中以在进程结束时执行。它是否正确?
在流程结束时会发生什么?
可能性编号1)中的值 x
被更改,因此x具有其新值。第二个信号 z
更新,第一个信号 x
更新了,鉴于此 z
依赖于取决于 x
,其值根据NEW UPDATED值更改 x
。这个例子应该可以正常工作。
可能性数字2)中的值 x
被更改,因此x具有其新值。第二个信号 z
已更新。鉴于 z
被分配了旧值 x
那就是价值 z
将持有,旧的价值 x
已更新,但未考虑此更新。
你能告诉我哪一个是正确的方法吗?