HDLBits (63) — 9至1多路復(fù)用器
本題鏈接:
https://hdlbits.01xz.net/wiki/Mux9to1v
創(chuàng)建一個位寬為16的9對1多路復(fù)用器。當 sel = 0時,選擇 a。當 sel = 1時,選擇 b,其它的以此類推。至于剩下的情況(sel=9到15),將所有輸出位設(shè)置為“1”。
預(yù)期解決方案長度:大約15行。

題目
提示:
對于這么多選項,case 語句可能會很有用。

答案

輸出波形


case 語句是一種多路條件分支的形式,可以解決 if 語句中有多個條件選項時使用不方便的問題。
case 語句格式如下:
case 語句執(zhí)行時,如果 condition1 為真,則執(zhí)行 true_statement1 ; 如果 condition1 為假,condition2 為真,則執(zhí)行 true_statement2;依次類推。如果各個 condition 都不為真,則執(zhí)行 default_statement 語句。
default 語句是可選的,且在一個 case 語句中不能有多個 default 語句。
條件選項可以有多個,不僅限于 condition1、condition2 等,而且這些條件選項不要求互斥。雖然這些條件選項是并發(fā)比較的,但執(zhí)行效果是誰在前且條件為真誰被執(zhí)行。
ture_statement1 等執(zhí)行語句可以是一條語句,也可以是多條。如果是多條執(zhí)行語句,則需要用 begin 與 end 關(guān)鍵字進行說明。
case 語句支持嵌套使用。
case 語句中的條件選項表單式不必都是常量,也可以是 x 值或 z 值。
當多個條件選項下需要執(zhí)行相同的語句時,多個條件選項可以用逗號分開,放在同一個語句塊的候選項中。
但是 case 語句中的 x 或 z 的比較邏輯是不可綜合的,所以一般不建議在 case 語句中使用 x 或 z 作為比較值。
參考資料:
4.6 Verilog 多路分支語句 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-case.html