文章目录
- 一、问题描述
- 二、verilog源码
- 三、仿真结果
一、问题描述
您已经熟悉两个值之间的按位运算,例如 a & b 或 a ^ b .有时,您希望创建一个多个位的门,该门对一个向量的所有位进行操作,例如 (a[0] & a[1] & a[2] & a[3] … ) ,如果向量很长,这会变得乏味。
缩减操作符可以对向量的位执行 AND、OR 和 XOR,从而产生一位输出:
& a[3:0] // AND: a[3]&a[2]&a[1]&a[0]. Equivalent to (a[3:0] == 4’hf)
| b[3:0] // OR: b[3]|b[2]|b[1]|b[0]. Equivalent to (b[3:0] != 4’h0)
^ c[2:0] // XOR: c[2]^C[1] ^C[0]
这些是只有一个操作数的一元运算符(类似于 NOT 运算符 ! 和 ~)。您还可以反转这些门的输出以创建 NAND、NOR 和 XNOR 门,例如 (~& d[7:0]) .
一点点练习
奇偶校验通常用作在通过不完美通道传输数据时检测错误的简单方法。创建一个电路,用于计算 8 位字节的奇偶校验位(这将向字节添加第 9 位)。我们将使用“偶数”奇偶校验,其中奇偶校验位只是所有 8 个数据位的异或