2.operators

Tags
Operator Types
Bit Manipulation
Assignment Statements
AI summary
本文介绍了基本运算符及其用法,包括与、或、非、异或、加减、条件运算、移位运算和比较运算符。还讨论了缩位运算符和赋值语句的规则,强调赋值语句中变量和表达式的位数匹配的重要性,并指出电路语句将在后续内容中讨论。

运算符

基本运算符

Operator
Description
Usage (a, b can be constants)
Output Value
&
与运算
a[x-1:0] & b[x-1:0]
c[x-1:0]
|
或运算
a[x-1:0] | b[x-1:0]
c[x-1:0]
~
非运算
~a[x-1:0]
c[x-1:0]
^
异或运算
a[x-1:0] ^ b[x-1 : 0]
c[x-1:0]
!
!a[x-1:0]
?
+, -
加运算,减运算
a[x-1:0] + b[x-1:0]
?
? :
条件运算
a[0:0] ? b[x-1:0] : c [x-1:0]
d[x-1:0]
\>>
逻辑右移
a[$2^x-1$:0] >> b[x-1:0]
c[$2^x-1$:0]
<<
左移
a[$2^x-1$:0] << b[x-1:0]
c[$2^x-1$:0]
\>>>
算术右移
a[$2^x-1$:0] >>> b[x-1:0]
c[$2^x-1$:0]
*, /, %
乘运算,除运算,取模运算
少用
?
<, <=, !=, >, >=, ==
比较运算
a[x-1:0] op b[x-1:0]
?

缩位运算符

Operator
Description
Usage
Output Value
&
向量所有位相与运算
&a[x-1:0]
b[0:0]
|
向量所有位相或运算
|a[x-1:0]
b[0:0]
运算符不能视作向量:

赋值语句

variable = expression
  • 等号左边的variable,可以是单个变量,也可以是{a, b}, 但不能有常量或运算符
  • 等号右边的expression,可以是单个变量或常量,也可以是{a + b, 1'b1},要注意位数
  • 等号左右两边位数不同,会发生什么?

电路语句(To be continued)

电路是由电路语句构成的,上述例子都不是电路语句!
Loading...