这是关于Verilog HDL操作符的复习与总结的小短文:

Verilog HDL中的操作符总共有9大类:

1.算术操作符

+,-,*,/,%,**

其中的取模操作符(%)求出的余数的符号与第一个操作符符号相同。

2.关系操作符

>,<,>=,<=

3.相等操作符

==,!=,===,!==

若把x和z值当作数值(而不考虑其物理含义)严格地按字符值进行比较,后两个全等比较的结果不是1就是0,不可能出现未知值。而在前两个逻辑比较中,x和z具有通常的物理含义,其结果可能出现不定值。也就是说,在逻辑比较中若有操作数包含x或z,则结果必定为未知值x。

4.逻辑操作符

&&,||,!

5.按位操作符

~,&,|,^,~^(^~)

6.缩减操作符

&,~&,|,~|,^,~^

缩减操作符与前面的按位操作符有很大的区别,它是对单一操作数上的所有位进行操作,产生一为的操作结果。如&,只要操作数中只要有任一位的值为0,则结果为0,若操作数中只要有任一位为x或z,则结果为x,否则为1.其他的缩减操作符类似。

7.移位操作符

<<,>>,<<<,>>>

前两个为逻辑移位,其移位而腾出的位总是填0。后两个为算术移位,若操作数为无符号数,腾出的位填0,若是有符号数,腾出的位填符号位。

8.条件操作符

?:

在所有操作符中,除了该操作符是从右向左处理外,其余的操作符都是自左向右处理。

9.拼接和复制操作符

{},{{}}

这两个是非常实用的操作符,不过得注意在拼接操作符中不允许只用未指定位宽的常数,因为未定位宽的常数其位数是未知的。

最后给出在操作数中最为重要的一点就是操作符的优先级,如下表所示: