HDLBits (159) — 多路復(fù)用器
2022-06-07 22:09 作者:僚機(jī)Wingplane | 我要投稿
本題鏈接:
https://hdlbits.01xz.net/wiki/Bugs_mux2
這個(gè) 8 位寬的 2 對(duì) 1 多路復(fù)用器不起作用。 修復(fù)錯(cuò)誤。

題目

答案

輸出波形


1. 一個(gè)復(fù)用器,代碼為?(~sel & a) |? (sel & b) 不適用于向量。
這是因?yàn)檫@些是按位運(yùn)算符,而 sel 只是一個(gè) 1 位寬的量,這使得 a 和 b 的高位為零。 可以使用復(fù)制運(yùn)算符對(duì)其進(jìn)行編碼,但這有點(diǎn)難以閱讀:
( {8{~sel}} & a ) | ( {8{sel}} & b )
2.仿真波形顯示,當(dāng)sel=1時(shí),應(yīng)選擇a。 這是在建議的代碼中翻轉(zhuǎn)的。
條件表達(dá)式有 3 個(gè)操作符,結(jié)構(gòu)描述如下:
計(jì)算時(shí),如果 condition_expression 為真(邏輯值為 1),則運(yùn)算結(jié)果為 true_expression;如果 condition_expression 為假(邏輯值為 0),則計(jì)算結(jié)果為 false_expression。
其實(shí),條件表達(dá)式類似于 2 路(或多路)選擇器,其描述方式完全可以用 if-else 語句代替。當(dāng)然條件操作符也能進(jìn)行嵌套,完成一個(gè)多次選擇的邏輯。
參考內(nèi)容:
2.4 Verilog 表達(dá)式 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-expression.html
標(biāo)簽: