归约操作符<br>
<br>
归约操作符在单一操作数的所有位上操作,并产生1位结果。归约操作符有:<br>
<br>
* & (归约与)<br>
如果存在位值为0, 那么结果为0;若如果存在位值为x或z,结果为x;否则结果为1。<br>
* ~& (归约与非)<br>
与归约操作符&相反。<br>
* | (归约或)<br>
如果存在位值为1,那么结果为1;如果存在位x或z,结果为x;否则结果为0。<br>
* ~| (归约或非)<br>
与归约操作符|相反。<br>
* ^ (归约异或)<br>
如果存在位值为x或z,那么结果为x;否则如果操作数中有偶数个1, 结果为0;否则结果为1。<br>
* ~^ (归约异或非)<br>
与归约操作符^正好相反。<br>
如下所示。假定,<br>
A = 'b0110;<br>
B = 'b0100;<br>
那么:<br>
|B 结果为1<br>
& B 结果为0<br>
~ A 结果为1<br>
归约异或操作符用于决定向量中是否有位为x。假定,<br>
MyReg = 4'b01x0;<br>
那么:<br>
^MyReg 结果为x<br>
上述功能使用如下的if语句检测:<br>
<br>
if (^MyReg = = = 1'bx)<br>
$ display ("There is an unknown in the vector MyReg !")<br>
<br>
注意逻辑相等(==)操作符不能用于比较;逻辑相等操作符比较将只会产生结果x。全等操作符期望的结果为值1。 |