<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > Verilog HDL基礎(chǔ)教程之:數(shù)據(jù)類型和運(yùn)算符

          Verilog HDL基礎(chǔ)教程之:數(shù)據(jù)類型和運(yùn)算符

          作者: 時(shí)間:2013-08-23 來(lái)源:網(wǎng)絡(luò) 收藏

          2.位運(yùn)算符

          作為一種硬件描述語(yǔ)言是針對(duì)硬件電路而言的。在硬件電路中信號(hào)有4種狀態(tài)值1、0、x和z。在電路中信號(hào)進(jìn)行與或非時(shí),反映在 中則是相應(yīng)的操作數(shù)的位運(yùn)算。 提供了以下5種位運(yùn)算符。

          ~ :(取反)

          :(按位與)

          | :(按位或)

          ^ :(按位異或)

          ^~:(按位同或(異或非))

          說(shuō)明:

          位運(yùn)算符中除了~是單目運(yùn)算符以外,均為二目運(yùn)算符,即要求運(yùn)算符兩側(cè)各有一個(gè)操作數(shù)。

          位運(yùn)算符中的二目運(yùn)算符要求對(duì)兩個(gè)操作數(shù)的相應(yīng)位進(jìn)行運(yùn)算操作。

          下面對(duì)各運(yùn)算符分別進(jìn)行介紹。

          “取反”運(yùn)算符~

          ~是一個(gè)單目運(yùn)算符,用來(lái)對(duì)一個(gè)操作數(shù)進(jìn)行按位取反運(yùn)算。如表2所示為單目運(yùn)算符~的運(yùn)算規(guī)則表。

          表2 ~ 運(yùn)算規(guī)則表

          ~運(yùn)算

          操 作 數(shù)

          結(jié) 果

          1

          0

          0

          1

          x

          x

          舉例說(shuō)明:

          rega='b1010; //rega的初值為'b1010

          rega=~rega; //rega的值進(jìn)行取反運(yùn)算后變?yōu)?b0101

          “按位與”運(yùn)算符

          按位與運(yùn)算就是將兩個(gè)操作數(shù)的相應(yīng)位進(jìn)行與運(yùn)算,其運(yùn)算規(guī)則如表3所示。

          表3 運(yùn)算規(guī)則表

          運(yùn)算

          操作數(shù)1

          操作數(shù)2

          0

          1

          x

          0

          0

          0

          0

          1

          0

          1

          x

          x

          0

          x

          x

          “按位或”運(yùn)算符 |

          按位或運(yùn)算就是將兩個(gè)操作數(shù)的相應(yīng)位進(jìn)行或運(yùn)算,其運(yùn)算規(guī)則如表4所示。

          表4 | 運(yùn)算規(guī)則表

          | 運(yùn)算

          操作數(shù)1

          操作數(shù)2

          0

          1

          x

          0

          0

          1

          x

          1

          1

          1

          1

          x

          x

          1

          x

          “按位異或”運(yùn)算符^(也稱之為XOR運(yùn)算符)

          按位異或運(yùn)算就是將兩個(gè)操作數(shù)的相應(yīng)位進(jìn)行異或運(yùn)算,其運(yùn)算規(guī)則如表5所示。

          表5 ^ 運(yùn)算規(guī)則表

          ^ 運(yùn)算

          操作數(shù)1

          操作數(shù)2

          0

          1

          x

          0

          0

          1

          x

          1

          1

          0

          x

          x

          x

          x

          x

          “按位同或”運(yùn)算符^~

          按位同或運(yùn)算就是將兩個(gè)操作數(shù)的相應(yīng)位先進(jìn)行異或運(yùn)算再進(jìn)行非運(yùn)算,其運(yùn)算規(guī)則如表6所示。

          表6 ^~ 運(yùn)算規(guī)則表

          ^~ 運(yùn)算

          操作數(shù)1

          操作數(shù)2

          0

          1

          x

          0

          1

          0

          x

          1

          0

          1

          x

          x

          x

          x

          x

          不同長(zhǎng)度的數(shù)據(jù)進(jìn)行位運(yùn)算

          兩個(gè)長(zhǎng)度不同的數(shù)據(jù)進(jìn)行位運(yùn)算時(shí),系統(tǒng)會(huì)自動(dòng)將兩者按右端對(duì)齊。位數(shù)少的操作數(shù)會(huì)在相應(yīng)的高位用0填滿,以使兩個(gè)操作數(shù)按位進(jìn)行操作。

          3.邏輯運(yùn)算符

          在Verilog HDL語(yǔ)言中存在3種邏輯運(yùn)算符。

          :(邏輯與)

          ||:(邏輯或)

          ! :(邏輯非)

          “”和“||”是二目運(yùn)算符,它要求有兩個(gè)操作數(shù),如(a>b)(b>c),(a

          表7 邏輯運(yùn)算真值表

          操 作 數(shù)

          邏輯運(yùn)算及結(jié)果

          a

          b

          !a

          !b

          ab

          a||b

          邏輯運(yùn)算符中“”和“||”的優(yōu)先級(jí)別低于關(guān)系運(yùn)算符,“!”的優(yōu)先級(jí)別高于算術(shù)運(yùn)算符,例如。

          (a>b)(x>y) 可寫成: a>b x>y

          (a==b)||(x==y) 可寫成: a==b || x==y

          (!a)||(a>b) 可寫成: !a || a>b

          為了提高程序的可讀性,明確表達(dá)各運(yùn)算符間的優(yōu)先關(guān)系,建議使用括號(hào)。

          4.關(guān)系運(yùn)算符

          關(guān)系運(yùn)算符共有以下4種。

          a b:(a小于b)

          a > b:(a大于b)

          a = b:(a小于或等于b)

          a >= b:(a大于或等于b)

          在進(jìn)行關(guān)系運(yùn)算時(shí),如果聲明的關(guān)系是假的(flase),則返回值是0;如果聲明的關(guān)系是真的(true),則返回值是1;如果某個(gè)操作數(shù)的值不定,則關(guān)系是模糊的,返回值是不定值。

          所有的關(guān)系運(yùn)算符有著相同的優(yōu)先級(jí)別。關(guān)系運(yùn)算符的優(yōu)先級(jí)別低于算術(shù)運(yùn)算符的優(yōu)先級(jí)別,例如。

          a size-1 //這種表達(dá)方式等同于下面一行的表達(dá)方式

          a (size-1)

          size - (1 a) //這種表達(dá)方式不等同于下面一行的表達(dá)方式

          size - 1 a

          從上面的例子可以看出這兩種不同運(yùn)算符的優(yōu)先級(jí)別。當(dāng)表達(dá)式size -(1

          5.等式運(yùn)算符

          在Verilog HDL語(yǔ)言中存在4種等式運(yùn)算符。

          = =:(等于)

          != :(不等于)

          = = =:(等于)

          != =:(不等于)

          這4個(gè)運(yùn)算符都是二目運(yùn)算符,它要求有兩個(gè)操作數(shù)。“= =”和“!=”又稱為邏輯等式運(yùn)算符,其結(jié)果由兩個(gè)操作數(shù)的值決定。由于操作數(shù)中某些位可能是不定值x和高阻值z(mì),結(jié)果可能為不定值x。

          “= = =”和“!= =”運(yùn)算符則不同,它在對(duì)操作數(shù)進(jìn)行比較時(shí),對(duì)某些位的不定值x和高阻值z(mì)也進(jìn)行比較。兩個(gè)操作數(shù)必需完全一致,其結(jié)果才是1,否則為0。“= = =”和“!= =”運(yùn)算符常用于case表達(dá)式的判別,所以又稱為“case等式運(yùn)算符”。

          這4個(gè)等式運(yùn)算符的優(yōu)先級(jí)別是相同的。下面畫出“= =”與“= = =”的真值表,幫助理解兩者間的區(qū)別。

          表8 等式運(yùn)算符真值表

          = = = 運(yùn)算

          操作數(shù)1

          操作數(shù)2

          0

          1

          x

          z

          0

          1

          0

          0

          0

          1

          0

          1

          0

          0

          x

          0

          0

          1

          0

          z

          0

          0

          0

          1

          = = 運(yùn)算

          操作數(shù)1

          操作數(shù)2

          0

          1

          x

          z

          0

          1

          0

          x

          x

          1

          0

          1

          x

          x

          x

          x

          x

          x

          x

          z

          x

          x

          x

          x

          下面舉一個(gè)例子說(shuō)明“= =”與“= = =”的區(qū)別。

          if(A==1’bx) $display( AisX ); //當(dāng)A等于X時(shí),這個(gè)語(yǔ)句不執(zhí)行

          if(A===1’bx) $display( AisX ); //當(dāng)A等于X時(shí),這個(gè)語(yǔ)句執(zhí)行



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();