input x;
input y;
input[10:0] z;
wire a;
assign a = x & y & (|z);
我正在查看代码并且不明白分配线上的内容。关于这条线的含义的解释将不胜感激!
答案 0 :(得分:1)
z
是一个十一位宽的信号
|
是信号的or reduction
如果(|z)
中至少有一位是1
,则z
将为真(1
)。另一方面,如果(|z)
中的所有位均为0
,则z
将为false(0
)。这意味着信号的or reduction
是测试信号是否为0
的简短方法。
|z <==> z==0;
&
是bitwise and
。这意味着对于多位信号,它将在每个位索引之间执行and
操作。结果与输入的大小相同。例如:
wire [2:0] signal1, signal2, result;
assign result = signal1 & signal2;
相当于(bit-bit):
assign result[0] = signal1[0] && signal2[0];
assign result[1] = signal1[1] && signal2[1];
assign result[2] = signal1[2] && signal2[2];
或(连接):
assign result = {signal1[0] && signal2[0],signal1[1] && signal2[1],signal1[2] && signal2[2]}
在您的表达式中,由于所有信号均为1位宽(a
,b
和(|z)
),因此可以使用&
或&&
等效。
使用简单的2输入门执行表达式的示意图如下:
有关运营商的更多信息以及如何在硬件中进行转换,可以在this site上找到。
答案 1 :(得分:0)
wire a
由一些组合逻辑驱动。在该组合逻辑中,input [10:0] z
的所有位都被“或”在一起(这就是|z
的含义)。然后,ORing的结果(即11输入OR门的输出)与输入x
和y
进行AND运算。 AND的结果(即3输入AND门的输出)被分配给wire a
(即3输入AND门驱动wire a
)。