[求助] 非阻塞赋值的问题,求解释?

kready   2012-11-19 20:14 楼主
关于非阻塞赋值的问题,求解释?
Stop: begin
           if (clk_low) begin
                  mode <= 1'b0;
          State <= Stop;
                end  
          else if (clk_high) begin
                  ctrl_cnt <= ctrl_cnt + 1'b1;
                  if (ctrl_cnt[0] == 1'b0)
                      State <= Start;
                  else
                      State <= Idle;
                  end
         else
              State <= Stop;
End
如果一开始ctrl_cnt为0,那么第一次执行else if (clk_high) begin……end中的语句时,State是跳到Start还是Idle?

回复评论 (3)

可不可以这样理解

可不可以这样理解:当clk_high为1时,  ctrl_cnt <= ctrl_cnt + 1'b1 和 if (ctrl_cnt[0] == 1'b0) 同时被触发,所以这个时钟结束后,  ctrl_cnt 加1变为1,同时 State跳到 Start
点赞  2012-11-19 20:35
Start状态,因为这是非阻塞赋值;

要是ctrl_cnt <= ctrl_cnt + 1'b1,改为ctrl_cnt = ctrl_cnt + 1'b1的话,结果就为Idle状态
一个人,一本书,一杯茶,一帘梦。
点赞  2012-11-20 16:25
start .非阻塞是同时进行的,两个语句同时,所以在其加1同时满足下面的条件,故到start
点赞  2012-11-22 15:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复