同一always块中两个非阻塞赋值语句对同一变量赋值的问题
always @ (posedge clk)begin
y1<=0;
y1<=1;
end
虽然是顺序执行的,但是由于采用了非阻塞赋值,y1<=0;该非阻塞赋值语句允许下面的非阻塞赋值同时执行,这样就在同一个always语句块中对同一变量同时进行了两次赋值。
最终结果是y1输出为1(Modelsim仿真结果),但我想了解下这是为什么?因为是顺序执行的原因吗?第二个非阻塞赋值替代了之前的非阻塞赋值?
如果不是顺序执行的,而是fork……join的并行语句呢,两个非阻塞赋值对同一个变量赋值结果为什么也是1(Modelsim仿真结果)?
always @ (posedge clk)
fork
y1<=0;
y1<=1;
join 第二个Y1是Y1的原值,不是0 最后一个有效大哥
页:
[1]