Verilog HDL中位运算符、逻辑运算符和缩减运算符的区别
文章目錄
- 前言
- 一、單目運算符、雙目運算符和三目運算符
- 二、位運算符
- 三、邏輯運算符
- 四、縮減運算符
- 五、總結
前言
我們在學習和理解Verilog HDL中的一些運算符的意義時,可能會對一些運算符的使用產生混亂,因此本文整理了Verilog HDL中&與&&、|與||、!與~等容易造成誤解的運算符的區別。
一、單目運算符、雙目運算符和三目運算符
在介紹這幾種運算符之間的差別之前需要先介紹一個概念。在Verilog HDL中運算符被分為3種,單目運算符、雙目運算符和三目運算符。
1、單目運算符就是運算符只有右邊有一個操作數。
例如: a = ~2’b01 ==> a = 2’b10
2、雙目運算符則要求運算符兩側各有一個操作。
例如: a = 2’b01 | 2’b11 ==> a = 2’b11;
3、三目運算符則要求運算符有三個操作數。
例如: out = sel ? a : b;
二、位運算符
運算符&、| 和 ~ 都是位運算符,當然了,還包括按位異或運算符^ 和按位同或運算符 ^~。在本篇文章中,主要介紹的前三種,也為了說明它們和邏輯運算符的區別。
這三個運算符都是按位操作,原操作數位寬為幾位,運算結束之后還是幾位。
例如:
a = 2’b01 & 2’b11 ==> a = 2’b01;
a = 2’b01 | 2’b11 ==> a = 2’b11;
a = ~2’b01 ==> a = 2’b10;
三、邏輯運算符
邏輯與 &&
邏輯或 ||
邏輯非 !
邏輯運算符和上面介紹的位運算符最大的區別就是輸出結果是一個邏輯結果,是一位的,如果是”1“就代表邏輯”真“,如果是”0“就代表邏輯”假“。
例如:
log = (x>y)&&(a<b); ==> 若真,則 log=1;若假,則 log=0;
log = (x>y)||(a<b);
log = !(x>y);
四、縮減運算符
還有一種運算符,它們和位運算符十分相像,但是使用的方式卻不一樣,它們就是縮減運算符,也是一種單目運算符,它們包括&、|、&、|、^ 和 ~^。
例如:
out = & 4’b0101; ==> out = ((( 1’b0 & 1’b1) & 1’b0) & 1’b1);
最終會得到一個一位寬的邏輯值。
五、總結
在本篇博文中,比較了位運算符、邏輯運算符和縮減運算符的區別,這在Verilog HDL的學習中很容易造成錯誤。
總結
以上是生活随笔為你收集整理的Verilog HDL中位运算符、逻辑运算符和缩减运算符的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大班美术教案《各式各样的房子》反思
- 下一篇: Verilog HDL中容易生成锁存器的