归约运算符
归约运算符为单目运算符。被操作数是具有一定位宽的向量,操作结果为1bit。
(1) &
被操作数所有位做按位与操作
例:
wire [3:0] a = 4’b1111;
wire b = &a; // b=1’b1;
(2 ) ~&
被操作数的所有位先做归约与操作,再取反
(3) |
被操作数所有位做按位或操作
(4)~|
被操作数的所有位先做归约或操作,再取反
(5) ^
被操作数所有位做逻辑异或操作
(6) ~^
被操作数的所有位先做归约异或操作,再取反
算数运算符
+、—、* 、/、%
乘方运算 “ ** ”
“**” 完成一个数的n次幂运算符,双目运算符。
例:
parameter a = 2 ** 8;//a=256;
注:非常浪费资源,如果必须使用,可用IP核或自己编写。
迭代运算符
迭代运算符的完整性
例:
wire a = 1'b0;
wire[2:0] b = 3'b111;
wire[7:0] c= {{5{a}},b};//c = 8'b0000_0111
注: wire[7:0] c= {5{a},b}; //错误
先迭代再连接
wire [7:0] d = {2{a,b}};//c = 8'b0111_0111
移位运算符
两类移位运算符,即有符号移位和无符号移位
<< //无符号左移
<<< //带符号左移
>> //无符号右移
>>> //带符号右移