一、运算符
Verilog 运算符 | 功能 | 优先级别 |
!、~ | 反逻辑、位反相 | 从上至下 从高到低 |
*、/、% | 乘、除、取模 | |
+、- | 加、减 | |
<<、>> | 左移,右移 | |
<、<=、>、>= | 小于、小于等于、大于、大于等于 | |
==、!=、===、!== | 等、不等、全等·、非全等 | |
& | 按位与 | |
^、^~ | 按位逻辑异或和同或 | |
| | 按位逻辑或 | |
&& | 逻辑与 | |
|| | 逻辑或 | |
?: | 条件运算符,唯一的三目运算符, 等同于if else |
* 算术操作符
加法(+);减法(-);乘法(*);除法(/);取模(%)。
(1) 算术操作符结果的位宽
—— 算术表达式结果的长度由最长的操作数决定,在赋值语句下,算术操作结果的长度由操作左端目标长度决定。
例:
reg [3:0] A,B,C;
reg [5:0] D;
A = B+C; //4位
D = B+C; //6位
(2)有符号数和无符号数的使用
例:
module arith_tb;
reg [3:0] a;
ref [2:0] b;
inital
begin
a = 4'b1111; //15
b = 3'b011; //13
$display("%d",a*b); //乘法运算结果为4'b1101,高位被舍去
//等于45的低四位
$display("%d",a/b); //除法运算,结果为4'b0101
$display("%d",a+b); //加法运算,结果为4'b0010