Verilog HDL按位操作符與歸約操作符的區別


以下來自百度知道:http://zhidao.baidu.com/question/420476218.html

按位是二元操作符,是將操作符兩邊的操作數進行 操作符所規定的運算 , 
例如:a & b(a=1,b=1),出來結果為1;
歸約是一元操作符,是將操作數的幾個bit位當成1bit的操作數進行操作符所規定的運算,
例如:a=4’b1101,則 &a= 1&1&0&1 =0
具體到程序綜合的時候,綜合工具會根據你操作數的多少來區分你的意圖

以下來自:http://www.dzsc.com/data/html/2007-4-30/28721.html
歸約操作符在單一操作數的所有位上操作,並產生1位結果。





 歸約操作符有:


& (歸約與)

如果存在位值為0, 那么結果為0;若如果存在位值為x或z,結果為x;否則結果為1。

~& (歸約與非)

與歸約操作符&相反。

 (歸約或) 

如果存在位值為1,那么結果為1;如果存在位x或z,結果為x;否則結果為0。

~ (歸約或非)

與歸約操作符相反。

^ (歸約異或)

如果存在位值為x或z,那么結果為x;否則如果操作數中有偶數個1, 結果為0;否則結果為1。

~^ (歸約異或非)

與歸約操作符^正好相反。


如下所示。假定,
A = 'b0110;
B = 'b0100;
那么
:
B 結果為1

& B 結果為0

~ A 結果為1

歸約異或操作符用於決定向量中是否有位為x。
假定,
MyReg = 4'b01x0;
那么
:
^MyReg 結果為x
  
上述功能使用如下的if語句檢測:


if (^MyReg = = = 1'bx)
$ display ("There is an unknown in the vector MyReg !")


注意邏輯相等(==)操作符不能用於比較;
邏輯相等操作符比較將只會產生結果x。全等操作符期望的結果為值1。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM