HDLBits (162) — 加法器/減法器
本題鏈接:
https://hdlbits.01xz.net/wiki/Bugs_addsubz
以下帶有零標志的加減法器不起作用,?修復(fù)錯誤。

題目

答案

輸出波形


條件(if)語句用于控制執(zhí)行語句要根據(jù)條件判斷來確定是否執(zhí)行。條件語句用關(guān)鍵字 if 和 else 來聲明,條件表達式必須在圓括號中。如果 if 條件每次執(zhí)行的語句只有一條,那么可以不使用 begin 與 end 關(guān)鍵字。但如果是 if-if-else 的形式,即便執(zhí)行語句只有一條,不使用 begin 與 end 關(guān)鍵字也會引起歧義。當然,編譯器一般按照就近原則,使 else 與最近的一個 if(例子中第二個 if)相對應(yīng)。但顯然這樣的寫法是不規(guī)范且不安全的。所以條件語句中加入 begin 與 and 關(guān)鍵字就是一個很好的習(xí)慣。
case 語句是一種多路條件分支的形式,可以解決 if 語句中有多個條件選項時使用不方便的問題。case 語句支持嵌套使用。case 語句中的條件選項表單式不必都是常量,也可以是 x 值或 z 值。當多個條件選項下需要執(zhí)行相同的語句時,多個條件選項可以用逗號分開,放在同一個語句塊的候選項中。但是 case 語句中的 x 或 z 的比較邏輯是不可綜合的,所以一般不建議在 case 語句中使用 x 或 z 作為比較值。
參考內(nèi)容:
4.5 Verilog 條件語句 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-condition-statement.html
4.6 Verilog 多路分支語句 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-case.html