asust2p4 发表于 2011-8-2 21:25:51

同一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

chenming1989 发表于 2011-8-2 22:36:42

第二个Y1是Y1的原值,不是0

cwfboy 发表于 2011-8-3 09:19:35

最后一个有效大哥
页: [1]
查看完整版本: 同一always块中两个非阻塞赋值语句对同一变量赋值的问题