在大规模集成电路里,硬件电路存在的信号有4种可能性:0、1、x、z。有些变量也许有很多比特位,有时候需要把不同变量的某些比特位进行数字操作。这就涉及位运算。
Verilog有5种位运算符:
(1)按位与&
&是个双目运算符,就是将&运算符两边的操作数按位进行与计算。具体的计算规则看表6.2。
表6.2 按位与的计算规则
(2)按位或|
|是个双目运算符,就是将|运算符两边的操作数按位进行|计算。具体的计算规则看表6.3。
表6.3 按位或的计算规则
(3)按位异或^
^是个双目运算符,就是将^运算符两边的操作数按位进行异或计算。
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,则异或结果为0。
具体的计算规则看表6.4。
表6.4 按位异或的计算规则
(www.xing528.com)
例6.21:异或操作符的用法。
异或操作符可以用来做某些特殊位的检测。比如有一个向量信号in,in有16位,其中也许有个别位为x,假设想知道该位是否为x。那么我们可以把该向量与它自己做异或。x与x做异或的结果依然为x。然后对这一位异或的结果进行if条件判断是否为x,则可实现某些特殊位的x状态检测。
异或还有一个用得比较多的地方。比如在奇偶校验位的添加上,就可以考虑使用异或操作符。
(4)按位同或^~
^~是个双目运算符,就是将^~运算符两边的操作数按位进行同或计算。
所谓按位同或计算,就是指将两个操作数的相应位先做异或,然后按位取反。
如果a、b两个值相同,则同或结果为1。如果a、b两个值不同,则同或结果为0。具体的计算规则看表6.5。
表6.5 按位同或的计算规则
(5)取反~
~是个单目运算符,就是将~右边的操作数按位进行取反。具体的计算规则看表6.6。
表6.6 取反的计算规则
例6.22:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。