RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Verilog邏輯設計中的循環(huán)語句和運算符

FPGA之家 ? 來源:時沿科技 ? 作者:Nemo_Yxc ? 2022-03-15 11:41 ? 次閱讀

“本文主要分享了在Verilog設計過程中一些經驗與知識點,主要包括循環(huán)語句(forever、repeat、while和for)、運算符?!?/p>

01

循環(huán)語句

在Verilog中存在著4種類型的循環(huán)語句(forever、repeat、while和for),其中“while”與“for”的使用方法與C語言中的基本類似。

“forever”語句

語句格式如下: forever begin //add codes end

forever語句經常用于仿真時產生周期性的波形,但是必須寫在initial塊中。示例代碼如下
rega;  initial begin    a = 0;    forever      begin        #5 a = ~a;      end  end
仿真效果如下:

fb1b5090-9197-11ec-952b-dac502259ad0.png

可以看出,clk每5ns實現(xiàn)一次電平翻轉。
  • “repeat”語句

語句格式如下: repeat(重復次數(shù)) begin // add codes end示意代碼如下:
  parameter      times = 3;reg[7:0]b_1,b_2;  initial    begin      b_1 = 0;      #10;      b_1 = 8'b0000_0100;      #10;end  always@(b_1)    begin      b_2 = b_1;        repeat(times)        begin          b_2 = b_2 << 1;        end    end
仿真結果如下:

fb2e4cc2-9197-11ec-952b-dac502259ad0.png

在10ns的時候,b_1賦值為8’b0000_0100,這時候repeat語句觸發(fā),b_2變成了8’b0010_0000,可見b_2右移了三位,也就是repeat內的語句重復執(zhí)行了3次。

  • “while”語句

語句格式如下: while(表達式) begin end while后面的表達式為真時,while將會一直執(zhí)行,直到表達式為假時,才結束執(zhí)行while語句。示例代碼如下

reg[7:0]c_1,c_2;  initial    begin      c_1 = 0;      #10;      c_1 = 1;      c_2 = 8'b0000_0001;      while(c_1)        begin          c_2 = c_2 << 1;          #10;          if(c_2 == 8'b0001_0000)            c_1 = 0;          else            c_1 = 1;        end    end
仿真結果如下:

fb40361c-9197-11ec-952b-dac502259ad0.png

可以看出,當c_1==1的時候,while中的語句在不停的執(zhí)行,當c_1==0時,程序跳出while,不在執(zhí)行。
  • “for”語句

for語句的語句形式:for(表達式1;表達式2;表達式3)beginend 它的執(zhí)行過程如下:
  1. 先求表達式1;

  2. 求解表達式2。若其值為真,則執(zhí)行 for 語句中指定的內嵌語句,然后執(zhí)行第3步;若表達式2值為假,則結束循環(huán),轉到第5步;

  3. 求解表達式3;

  4. 轉回上面第2步繼續(xù)執(zhí)行;

  5. 循環(huán)結束,執(zhí)行 for 語句下面的語句。

    示例代碼如下:

  reg    [7:0]    d_1,d_2;  initial    begin      d_2 = 10;      #10;      for(d_1=1;d_1<5;d_1=d_1+1)        begin          d_2 = d_2 + 3;          #5;        end    end

fb4fb506-9197-11ec-952b-dac502259ad0.png

02

運算符

  • 基本算術運算符

  1. + (加法運算符);

  2. - (減法運算符);

  3. * (加法運算符);

  4. / (除法運算符);

  5. % (模運算符或者求余運算符,要求%兩側均為整型數(shù)據(jù),結果取第一個操作數(shù)的符號位,-10%3的結果是-1,11%-3的結果是2);

  • 賦值運算符

  1. =;

  2. <=;

  • 關系運算符

  1. > (大于);

  2. >= (大于等于);

  3. <=? ? ? (小于等于);

  4. == (等于);

  5. != (不等于);

  6. === (等于,可以比較含有X和Z的操作數(shù),在仿真中用的比較多);

  7. !== (不等于,可以比較含有X和Z的操作數(shù),在仿真中用的比較多)。

  • 邏輯運算符

  1. && (邏輯與);

  2. || (邏輯或);

  3. ! (邏輯非)。

  • 條件運算符

?:

例子:y=x?a:b(當x為真時,y=a,當x為假時,y=b)。

  • 位運算符

位運算符的操作數(shù)是幾位,結果也是幾位。

  1. ~ (取反);

  2. & (按位與);

  3. | (按位或);

  4. ^ (按位異或,XOR,相同為0,不同為1);

  5. ^~ (按位同或,相同為1,不同為0);

  6. ~& (與非,先按與的操作,然后結果取反);

  7. ~| (或非,先按或的操作,然后結果取反)。

  • 移位運算符

  1. <

  2. >> (右移,右移一位相當于除以2)。

  • 拼接運算符

{s1,s2,s3,s4}:將兩個或者多個信號拼接起來。

  • 縮減運算符(一元簡約運算符)

縮減運算符對單個操作數(shù)進行與、或、非遞推運算,最后的結果是1位的二進制數(shù)。具體過程如下:

  1. 先將操作數(shù)的第1位和第2位進行與、或、非運算;

  2. 運算的結果與第3位進行與、或、非運算;

  3. 一次類推,知道最后一位。

例子:
reg    [3:0]     a;reg              b;b = &a;   等同于   b = ((a[0]&a[1])&a[2])&a[3]。
審核編輯:郭婷


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110074
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136686

原文標題:Verilog基礎知識學習筆記(三)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    煉獄傳奇-移位和位拼運算符之戰(zhàn)

    運算符,就會使程序編寫起來變得簡單了。代碼的意思就是,每次把最低位放到最高位,讓前三位放到后面,這樣邏輯“1”就實現(xiàn)了移位,形成了循環(huán)。
    發(fā)表于 04-30 09:43

    求一道MATLAB編程題。要求: 使用循環(huán)語句編程,但不能使用數(shù)組運算符和sum

    求求求~~~要求: 使用循環(huán)語句編程,但不能使用數(shù)組運算符和sum; 使用數(shù)組運算符和sum編程,不能使用循環(huán)結構。
    發(fā)表于 06-03 17:22

    Java基礎之Java運算符

    = 5.0f; long l = 5;f==l; 結果為true,浮點數(shù)與整數(shù)進行比較,只要值相等就返回true。關系運算符主要用于條件語句循環(huán)語句中的判斷條件。而條件結構就是根據(jù)
    發(fā)表于 05-18 15:39

    邏輯運算符是什么

    邏輯運算符:與或非條件結構if -else及其嵌套循環(huán)結構whilefordo-while
    發(fā)表于 07-14 07:50

    Bitwise 邏輯運算符進行設計

    鎖定?! ND Bitwise 運算符  攝像頭滑塊的主要位運算符是 AND。該運算器使用 C 語言編程的安培 (&) 符號,使用圖 1
    發(fā)表于 04-02 17:39

    條件運算符是什么_條件運算符有哪些

    運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符。關系運算實際上是邏輯比較運算,它是
    發(fā)表于 11-16 16:02 ?1.1w次閱讀
    條件<b class='flag-5'>運算符</b>是什么_條件<b class='flag-5'>運算符</b>有哪些

    單目運算符是什么_單目運算符有哪些

    單目運算符是指運算所需變量為一個的運算符,又叫一元運算符,其中有邏輯運算符:!、按位取反
    的頭像 發(fā)表于 02-24 15:42 ?6.1w次閱讀
    單目<b class='flag-5'>運算符</b>是什么_單目<b class='flag-5'>運算符</b>有哪些

    淺析MySQL的各類運算符

    MySQL支持多種運算符,我們在寫SQL腳本時經常會需要用到各種各樣的運算符,這些運算符可以用來連接表達式,進而從數(shù)據(jù)庫查詢我們需要的結果集等。這些類型主要包括算術
    的頭像 發(fā)表于 05-03 17:41 ?2051次閱讀
    淺析MySQL<b class='flag-5'>中</b>的各類<b class='flag-5'>運算符</b>

    python運算符是什么

    python運算符 0. 什么是運算符? 本章節(jié)主要說明Python的運算符。舉個簡單的例子 4 +5 = 9 。 例子,4和5被稱為操作數(shù),“+”號為
    的頭像 發(fā)表于 02-21 16:44 ?2377次閱讀

    C語言總結_語句、運算符

    當前文章復盤C語言的: 位運算運算符、基本運算符、數(shù)據(jù)類型、變量、for語句、while語句、goto
    的頭像 發(fā)表于 08-14 09:39 ?1000次閱讀

    什么是邏輯運算符

    邏輯運算符對其操作數(shù)求值,并返回一個值,該值指示求值結果是真還是假(true or false)。例如,運算a && b測試a和b是否都為真,如果兩個操作數(shù)都為真,則運算符返回真。否則,運算符
    的頭像 發(fā)表于 02-09 15:55 ?2017次閱讀
    什么是<b class='flag-5'>邏輯運算符</b>

    KUKA機器人的邏輯運算符

    邏輯運算符用于布爾變量、常數(shù)和簡單的、借助比較運算符構成的邏輯表達式的邏輯運算。
    發(fā)表于 07-21 10:06 ?2518次閱讀
    KUKA機器人的<b class='flag-5'>邏輯運算符</b>

    verilog邏輯運算符

    寫在前面 之前曾經整理過verilog的各類運算符的表達方式,但是在學習的過程并未深入研究關于邏輯運算符的相關知識,導致在實際使用過程
    的頭像 發(fā)表于 09-21 10:07 ?2358次閱讀
    <b class='flag-5'>verilog</b>的<b class='flag-5'>邏輯運算符</b>

    python運算符的優(yōu)先級大小

    解。 Python運算符可以分為以下幾類:算術運算符、比較運算符邏輯運算符、位運算符、賦值
    的頭像 發(fā)表于 11-29 16:21 ?3386次閱讀

    Verilog語法運算符的用法

    verilog語法中使用以下兩個運算符可以簡化我們的位選擇代碼。
    的頭像 發(fā)表于 10-25 15:17 ?589次閱讀
    <b class='flag-5'>Verilog</b>語法<b class='flag-5'>中</b><b class='flag-5'>運算符</b>的用法
    RM新时代网站-首页