信号driver_a重新分配在always块回0,但为什么始终阻止未激活和值分配给driver_b?
always @(driver_a) begin
driver_b = driver_a;
driver_a = 0;
end
initial begin
driver_a = 0; driver_b = 0;
#2 driver_a = 8'h8;
#2 driver_a = 8'hf;
end
在波形,我希望driver_a分配它的价值driver_b,然后在下一行时driver_a被分配到0之后,我期望always块重新激活并分配值0回driver_b。
然而,这并非如此,波形似乎表明,一旦driver_a获取always块分配到0时,总是块不激活并分配0回driver_b的价值。总之,我期望driver_b的价值总是一个永远块执行零仿真时间内保持0,因为代码。
我重视所产生的波形的图像,下面
因为代码被解释为单一的有序集合语句。这是一样的,如果你写
always begin
@(driver_a) // 1
driver_b = driver_a; // 2
driver_a = 0; // 3
end
语句// 1表示“等待driver_a改变”语句// 2种手段“更改driver_b到driver_a的值”语句// 3种手段“更改driver_a至0”
因为always
块是执行串行顺序陈述一个线程,从// 3的变化,当它返回到执行// 1已经发生了。