Verilog中的操作符按照功能可以分为下述类型:
1、算术运算符
2、关系运算符
3、逻辑运算符
4、条件运算符
5、位运算符
6、移位运算符
7、拼接运算符
算术运算符:
符号 | 使用方法 | 说明 |
+ | a + b | a 加上 b |
- | a - b | a 减去 b |
* | a * b | a 乘以 b |
/ | a / b | a 除以 b |
% | a % b | a 模除 b |
关系运算符:
符号 | 使用方法 | 说明 |
> | a > b | a 大于 b |
< | a < b | a 小于 b |
<= | a >= b | a 大于等于 b |
>= | a<= b | a 小于等于 b |
== | a == b | a 等于 b |
!= | a != b | a 不等于 b |
逻辑运算符:
符号 | 使用方法 | 说明 |
! | !a | a的非 如果a为0,那么a的非是1。 |
&& | a && b | a 与上 b 如果a和b都为1,a&&b结果才为1,表示真。 |
|| | a || b | a 或上 b 如果a或者b有一个为1,a||b结果为1,表示真。 |
条件操作符:
符号 | 使用方法 | 说明 |
? : | a ? b : c | 如果 a 为真,就选择 b,否则选择 c |
result = (a >= b) ? a : b;
位运算符:
符号 | 使用方法 | 说明 |
~ | ~a | 将 a 的每个位进行取反 |
& | a & b | 将 a 的每个位与 b 相同的位进行相与 |
| | a | b | 将 a 的每个位与 b 相同的位进行相或 |
^ | a ^ b | 将 a 的每个位与 b 相同的位进行异或 |
移位运算符:
符号 | 使用方法 | 说明 |
<< | a << b | 将 a 左移 b 位 |
>> | a >> b | 将 a 右移 b 位 |
两种移位运算都用0来填补移出的空位。
左移时,位宽增加;右移时,位宽不变。
4’b1001 << 2 = 6’b100100;
4’b1001 >> 1 = 4’b0100;
拼接运算符:
符号 | 使用方法 | 说明 |
{} | {a,b} | 将 a 和 b 拼接起来,作为一个新信号 |
c = { a, b[3:0] };
运算符的优先级: