3、Verilog HDL--运算符和表达式
1、算术操作符
主要包括加“+”、减“-”、乘“x”、除“/”、取模“%”。
例:当 a = 4'b1111, b = 3'b011 时,即 a*b结果如下图所示:
二进制运算结果与十进制运算结果一致。比如,用十进制表示,a=15,b=3,即a*b=45,用二进制表示为101101。
因此,a/b=5,即为4'b0101。
2、关系操作符
主要包含大于“>”、小于“<”、大于等于“>=”、小于等于“<=”。
输出结果为1位,分为4类:0、1、未知状态x、高阻z。
3、相等关系操作符
主要包含等于“==”、不等于“!=”、全等于“===”、非全等“!==”。
输出结果为1位,分为4类:0、1、未知状态x、高阻z。
等于对有效数值有效,而全等于对未知状态x与高组态也有效。关系图如下:
当 a=4'b0011,b=2'b11时,a==b为真,a===b为假。
4、逻辑运算符
包含与“&&”、或“||”、非“!"。
不定状态的逻辑运算结果也是不定状态。
5、按位运算符
包含取反“~”、按位与“&”、按位或“/”、按位异或“^”、按位同或“^~”。
6、归约运算符
包含“&”、或“|”、异或“^”以及相应的非操作。
7、移位运算符
左移“<<”、右移“>>”。
例,a=6'101101,a<<2结果为6'b110100。移位后用“0”来填补空位。
8、条件运算符
<条件表达式>?<表达式1>:<表达式2>
条件表达式为1时,取表达式1的结果;条件表达式为0时,取表达式2的结果。
9、连接和复制运算符
连接运算符“{ }”:信号1的某几位,信号2的某几位,……,信号n的某几位。
复制运算符“{{ }}”:将一个表达式的放入双重花括号,复制倍数放在第一个括号中。
例,a=3'b101,b=4'b1110,d设为5位,e设为6位。
d={a[2:1],b[2:0]},其中,a取10,b取110,结果d为5'b10110。
e={2{a}},即e为6’b101101。