HDLBits (159) — 多路复用器
2022-06-07 22:09 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Bugs_mux2
这个 8 位宽的 2 对 1 多路复用器不起作用。 修复错误。

题目

答案

输出波形


1. 一个复用器,代码为 (~sel & a) | (sel & b) 不适用于向量。
这是因为这些是按位运算符,而 sel 只是一个 1 位宽的量,这使得 a 和 b 的高位为零。 可以使用复制运算符对其进行编码,但这有点难以阅读:
( {8{~sel}} & a ) | ( {8{sel}} & b )
2.仿真波形显示,当sel=1时,应选择a。 这是在建议的代码中翻转的。
条件表达式有 3 个操作符,结构描述如下:
计算时,如果 condition_expression 为真(逻辑值为 1),则运算结果为 true_expression;如果 condition_expression 为假(逻辑值为 0),则计算结果为 false_expression。
其实,条件表达式类似于 2 路(或多路)选择器,其描述方式完全可以用 if-else 语句代替。当然条件操作符也能进行嵌套,完成一个多次选择的逻辑。
参考内容:
2.4 Verilog 表达式 | 菜鸟教程:
https://www.runoob.com/w3cnote/verilog-expression.html