日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Verilog HDL——循环语句

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Verilog HDL——循环语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

循環語句

Verilog HDL中4種循環語句

  • for循環:指定循環次數
  • while循環:設置循環條件
  • repeat循環:連續執行語句N次
  • forever循環:連續執行某條語句(不可綜合,多用于仿真激勵)
  • for循環

    語法:
    for(循環變量賦初值;循環執行條件;循環變量增值)
    循環體語句的語句塊;

    /* for 無符號數乘法器 mult_8b_for */ module mult_8b_for( a,b,q);parameter bsize =8; input[bsize:0]a,b; output[2*bsize-1:0]q;reg[2*bsize:0]q,a_t; reg[bsize-1:0]b_t; reg[bsize-1:0]cnt;always@(a or b)beginq = 0;a_t ={{bsize[0]},a};b_t = b;cnt = bsize;for(cnt = bsize; cnt > 0; cnt = cnt-1)beginif(b_t[0])beginq = q + a_t;endelse beginq = q;enda_t = a_t<<1;b_t = b_t>>1;end endendmodule

    while循環

    while表達式在開始不為真(假、x、z)則語句不被執行。

    /* while 無符號數乘法器 mult_8b_while */ module mult_8b_while( a,b,q);parameter bsize =8; input[bsize:0]a,b; output[2*bsize-1:0]q;reg[2*bsize:0]q,a_t; reg[bsize-1:0]b_t; reg[bsize-1:0]cnt;always@(a or b)beginq = 0;a_t ={{bsize[0]},a};//{0000 0000 a}b_t = b;cnt = bsize;while(cnt>0)beginif(b_t[0])beginq = q + a_t;endelse beginq = q;endcnt = cnt - 1;a_t = a_t<<1;b_t = b_t>>1;end endendmodule

    repeat循環

    repeat循環計數表達式的值不確定時(x或z),則循環次數為0。

    /* 8比特數據乘法 mult_8b_repeat */module mult_8b_repeat( a,b,q );parameter bsize = 8;input[bsize-1:0]a,b;output[2*bsize-1:0]q;reg[2*bsize-1:0]q,a_t;reg[bsize-1:0]b_t;always@(a or b)beginq = 0;a_t = {{bsize[0]},a};b_t = b;repeat(bsize) beginif(b_t[0])beginq = q + a_t;endelse beginq = q;enda_t = a_t<<1;b_t = b_t>>1;endend endmodule

    輸出q為a、b相乘:

    總結

    以上是生活随笔為你收集整理的Verilog HDL——循环语句的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。