关于Four-input gates(gate)中
assign out_and = ∈
assign out_or = |in;
assign out_xor = ^in;
部分,看到了csdn两个博客,问题得到了解答
assign out_and = ∈
assign out_or = |in;
assign out_xor = ^in;
与
assign out_and = in[0] & in[1] & in[2] & in[3];
assign out_or = in[0] | in[1] | in[2] | in[3];
assign out_xor = in[0] ^ in[1] ^ in[2] ^ in[3];
是相同的,是in的每一位进行按位操作。
其中涉及到多异或连续运算
首先看几个多异或连续运算的式子:
1⊕0⊕1⊕1⊕1=0
1⊕0⊕1⊕0⊕1=1
0⊕0⊕1⊕0=1
0⊕1⊕1⊕0=0
关于这种多异或连续运算,通常的思路是:
多个异或连续运算,就类似数学上的连加、连乘运算:将前两个数的运算结果,与第三个数继续运算;再将结果与第四个运算;直到最后得出结果,其中的每一步都要按照相应运算的规则进行;
但是也还有另外一种比较简单的判断方法:
多个命题(或命题变量)的“异或”运算:其结果依赖于参与运算的所有量中,取值为“真(1)”的量的“个数”的“奇偶性”:
若含“奇数”个“真命题(1)”,则结果为“真(1)”;
若含“偶数”个“真命题(1)”,则结果为“假(0)”;(注:零个也是偶数个)
所以这样看来,上面的式子中:
第一个有偶数个“1”则结果为“0”,
第二个有奇数个“1”则结果为“1”,
换句话说:命题表达式 A⊕B⊕C⊕D 结果为“真”,当且仅当 A、B、C、D 中有奇数个(即 1 个或 3 个)变量的取值为“真”;
而至于其中“假命题”的个数,则对结果“无任何影响”。关于这一点的证明,可以从下面两个恒等式中找到思路:
p ⊕ 1 = 非p;——增加一个“真命题”参与运算,总会将“原命题”变成其“反命题”;
p ⊕ 0 = p;——增加一个“假命题”参与运算,对“原命题”永远没影响;
引用博客链接
HDLBits之Verilog学习记录 Day4_开始学AI的博客-CSDN博客_hdlbits
https://blog.csdn.net/weixin_44985880/article/details/107895486