关于always块内for循环的执行方式


//该模块主要用来说明for结构在时序逻辑中的执行方式
module for_test(input clk_1,nrst,output now_nine,nrst_pos,output reg[9:1] eq_dly
    );
    integer i;
    parameter eq=1'b1;
 always @(posedge clk_1 or negedge nrst)   
    begin
      if (!nrst) 
           for (i=1; i<=9; i=i+1)
               eq_dly[i] <= 0;  
       else    
         begin
           eq_dly[1] <= eq; 
          for (i=1; i<9; i=i+1)  //说明了整个 eq_dly[9:1]=9'b111111111;并不是一个时钟周期就完成了赋值。而是经过个九个时钟沿!!!!
               eq_dly[i+1] <= eq_dly[i];
         end            
    end      
     
     assign now_nine = !(&(eq_dly));  
     assign nrst_pos = !(eq && now_nine); 

endmodule

波形文件如下:

优质内容筛选与推荐>>
1、数据传输协议protobuf的使用及案例
2、asp.net控件开发基础七
3、Microsoft Live试用邀请[Teaks]
4、Jordan分解定理
5、关闭网络打开远程文件时防火墙安全弹窗


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号