HDLBits (36) — 避免鎖存
2022-02-11 14:20 作者:僚機(jī)Wingplane | 我要投稿
本題鏈接:
https://hdlbits.01xz.net/wiki/Always_nolatches
假設(shè)你正在為一個游戲構(gòu)建一個電路來處理 PS/2鍵盤上的掃描代碼。給定接收到的最后兩個字節(jié)的掃描代碼,您需要指示是否按下了鍵盤上的一個箭頭鍵。這涉及到一個相當(dāng)簡單的映射,它可以作為一個 case 語句(或者是 if-elseif)實現(xiàn),其中包含四個 case。

你的電路有一個16位輸入和四個輸出。建立這個電路,識別這四個掃描代碼并斷言正確的輸出。
為避免造成鎖存,必須在所有可能的條件下為所有輸出分配一個值(另請參見?always_if2)。僅僅有一個默認(rèn)項是不夠的。在所有四種情況和默認(rèn)情況下,你必須把所有四個項和默認(rèn)情況分配給所有四個輸出的值,這可能涉及大量不必要的輸入。解決此問題的一個簡單方法是在case語句之前為輸出指定一個“默認(rèn)值”:
這種類型的代碼確保在所有可能的情況下都為輸出分配一個值(0) ,除非 case 語句重寫了分配。這也意味著默認(rèn)的: case 項變得不必要了。
提醒:邏輯合成器會生成一個組合電路,該電路表現(xiàn)為代碼描述的內(nèi)容。硬件不按順序“執(zhí)行”代碼行。

題目

答案

輸出波形

標(biāo)簽: