Verilog语法——操作符“&”
单目运算符 &
这里介绍一种特殊的用法,也就是&作为单目运算符:
Verilog 递减运算符(缩减运算符)(Reduction operators),以及$display系统函数 ModelSim 仿真
4 “&”操作符-FPGA笔试精解
“&”操作符有两种用途,既可以作为单目操作符,也可以作为二目操作符:
当“&” 作为单目操作符时, 是“缩位与”
“&”和“&&”在硬件中的区别
1、(AA && CC && BB)
逻辑分析:
当AA、BB、CC都为非0数时,表达式为“1”。
那么怎么判断AA、BB、CC为非“0”呢,咱们先分析一下为“0”的情况。当AA为0的时候,AA等于4’b0,即每位都为0,即只需AA的4位矢量之间做一下“逻辑或”运算,AA[3] || AA[2] || AA[1] || AA[0],也可写成(|AA);当4位矢量中只需有一位不为0,那么AA就必然不为“0”。
整个实现过程就是,先AA、BB、CC各自本身的各位之间做“逻辑或”运算,运算的结果之间做“逻辑与”运算。
2、(AA & CC & BB)
逻辑分析:
表达式(AA & CC & BB)等效为:
((AA[3] & BB[3] & CC[3]) || (AA[2] & BB[2] & CC[2]) || (AA[1] & BB[1] & CC[1]) || (AA[0] & BB[0] & CC[0]))
即只需要其中有一个表达式(AA[i] & BB[i] & CC[i]) 不为“0”,则整个结果就为“1” ,i取0到3。
3、((AA>5) && (CC<8) && (BB>4))
逻辑分析:
表达式(AA>5)、(CC<8)、(BB>4)结果均为1位的逻辑量,三个逻辑量之间做“逻辑与”。
4、((AA>5) & (CC<8) & (BB>4))
逻辑分析:
三个一位的逻辑量之间做“逻辑与”和“位与”是等效的。