一、单目运算符、双目运算符和三目运算符 在介绍这几种运算符之间的差别之前需要先介绍一个概念。在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); 最终会得到一个一位宽的逻辑值。
|