欢迎光临散文网 会员登陆 & 注册

HDLBits (38) — 归约运算符

2022-02-13 01:23 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Reduction

您已经熟悉了两个值之间的按位操作,(例如:a & b or a ^ b)。有时,你想创建一个有一定位宽的门电路,这个门电路对一个向量的所有位都起作用,像(a[0] & a[1] & a[2] & a[3] ... ),如果数据很长,这会变得繁琐。

归约运算符可以对一个向量中的位执行 AND、 OR 和 XOR操作,从而产生一个位的输出:

上面这些是只有一个操作数的一元运算符(类似于 NOT 运算符!~)。还可以将这些输出反转以创建 NAND、 NOR 和 XNOR 门,例如(~& d[7:0])。

现在可以重新构建 4-input gates 100-input gates

题目

在通过不稳定信道传输数据时,奇偶校验通常被用作一种检测错误的简单方法。创建一个电路,用来计算一个8位字节的奇偶校验位(这将在字节中添加第9位)。我们将使用“偶数”奇偶校验,其中奇偶校验位只是所有8个数据位的异或。

预期解决方案长度:大约1行。

答案

归约操作符包括:归约与(&),归约与非(~&),归约或(|),归约或非(~|),归约异或(^),归约同或(~^)。

归约操作符只有一个操作数,它对这个向量操作数逐位进行操作,最终产生一个 1bit 结果。

逻辑操作符、按位操作符和归约操作符都使用相同的符号表示,因此有时候容易混淆。区分这些操作符的关键是分清操作数的数目,和计算结果的规则。

参考资料:

2.4 Verilog 表达式 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-expression.html


HDLBits (38) — 归约运算符的评论 (共 条)

分享到微博请遵守国家法律