45 / 63 · 概念
邏輯冒險與等價式的限制
分析穩態相同的兩個電路,如何因傳播延遲產生不同的瞬時波形。
單元可免費閱讀,註冊課程即可儲存學習進度。
真值表不包含時間
下式固定 B=C=1,無論 A 為 0 或 1,F 都為 1。
但實際邏輯閘的輸出不會與輸入同時改變。A 由 1 變 0 時,若 AB 路徑先降為 0,而經過反相器反相是將 0 變為 1、1 變為 0 的 NOT 運算。公式上方的橫線表示對線下的整個運算式套用 NOT。 詳細內容的 路徑稍後才升為 1,可能出現兩項同為 0 的區間。原本應保持 1 的輸出短暫變成 0,稱為 static-1 hazard(靜態 1 冒險)。
用數值比較延遲
假設到 OR 輸入的路徑延遲如下。數值僅用於說明原理,並非特定製程資料。
| 事件 | A 切換後的時間 |
|---|---|
| AB 降為 0 | 2 ns |
| 升為 1 | 4 ns |
OR 輸入約有 2 ns 兩項皆為 0。實際輸出脈衝寬度及是否出現,也受 OR 閘延遲與短脈衝傳遞特性影響。只確認真值表真值表完整列出所有可能的輸入組合,以及每個組合的輸出。隨時間的變化須另外以波形確認。 詳細內容八組輸入正確,無法驗證這種暫態現象。
下方每格是 A 切換後的 1 ns。假設 AB 在 2 ns、NOT(A)C 在 4 ns 改變。最後兩列是忽略 OR 本身延遲的輸入合併值,不是實際元件量測波形。請確認 BC=1 的路徑是否覆蓋兩項間的空隙。
查看波形資料
| 訊號 | 波形 | 匯流排值 |
|---|---|---|
| 時間(ns) | 234523 | 0 → 1 → 2 → 3 → 4 → 5 |
| AB | 1.0... | |
| NOT(A)C | 0...1. | |
| OR 輸入 | 1.0.1. | |
| 含 BC 項 | 1..... |
冗餘項也可能有時間上的作用
加入 BC,讓 B=C=1 時的輸出維持為 1,不受 A 影響。
依布林代數布林代數處理 0、1 與 AND、OR、NOT 運算。此處的加號通常代表 OR,規則與整數加法不同。 詳細內容的共識定理,穩定輸入下功能相同。但 BC 在 A 切換時仍為 1,可覆蓋上述單一輸入轉換的空隙。在卡諾圖上,相當於用共同群組覆蓋兩個相鄰的 1。
此討論適用於單一輸入切換、兩層 SOP 等假設,不代表同時解決多輸入切換、多層邏輯的動態冒險或類比雜訊。
RTL 寫了某項,不代表實作一定保留
合成器可能辨識 BC 在功能上冗餘而將它移除。因此只在原始碼加入冗餘項,不能斷定實際電路無冒險。必須選擇符合要求的結構,並檢查實作後路徑與時序。
同步資料路徑的基本要求,是滿足 setup建立時間(setup)是輸入資料在時脈擷取邊緣之前,必須保持穩定的最短時間。若違反此條件,便無法保證儲存結果。 詳細內容、hold保持時間(hold)是輸入資料在時脈擷取邊緣之後,仍必須保持穩定的最短時間。請依上下文區分它與一般的數值保持行為。 詳細內容,讓暫存器暫存器儲存多個位元的狀態。本課程中的同步暫存器會在時脈邊緣儲存指定的輸入。 詳細內容在輸出充分穩定後取樣。若直接把組合毛刺用作時脈、非同步重設或外部裝置觸發,問題可能更嚴重。設計需連同訊號用途與接收方式一起考量。
自己試試看
中 B=C=1,A 由 0 變成 1。可加入哪個共識項覆蓋 static-1 hazard?加入後穩態真值表會改變嗎?
查看解說
加入 BC。 與原式功能相同,但 BC 可覆蓋切換時兩路徑同為 0 的區間。此處假設單一輸入切換;該項是否保留於實際閘結構,仍須另外確認。