Altifigence Academy

45 / 63 · 概念

邏輯冒險與等價式的限制

分析穩態相同的兩個電路,如何因傳播延遲產生不同的瞬時波形。

真值表不包含時間

下式固定 B=C=1,無論 A 為 0 或 1,F 都為 1。

F=AB+A‾CF=AB+\overline A C

但實際邏輯閘的輸出不會與輸入同時改變。A 由 1 變 0 時,若 AB 路徑先降為 0,而經過反相器反相是將 0 變為 1、1 變為 0 的 NOT 運算。公式上方的橫線表示對線下的整個運算式套用 NOT。 詳細內容的 A‾C\overline A C 路徑稍後才升為 1,可能出現兩項同為 0 的區間。原本應保持 1 的輸出短暫變成 0,稱為 static-1 hazard(靜態 1 冒險)。

用數值比較延遲

假設到 OR 輸入的路徑延遲如下。數值僅用於說明原理,並非特定製程資料。

事件A 切換後的時間
AB 降為 02 ns
A‾C\overline A C 升為 14 ns

OR 輸入約有 2 ns 兩項皆為 0。實際輸出脈衝寬度及是否出現,也受 OR 閘延遲與短脈衝傳遞特性影響。只確認真值表真值表完整列出所有可能的輸入組合,以及每個組合的輸出。隨時間的變化須另外以波形確認。 詳細內容八組輸入正確,無法驗證這種暫態現象。

下方每格是 A 切換後的 1 ns。假設 AB 在 2 ns、NOT(A)C 在 4 ns 改變。最後兩列是忽略 OR 本身延遲的輸入合併值,不是實際元件量測波形。請確認 BC=1 的路徑是否覆蓋兩項間的空隙。

路徑延遲差造成的空隙
查看波形資料
波形資料:每個字元表示一個區間;句點保持先前狀態;p 表示一個時脈週期。
訊號波形匯流排值
時間(ns)2345230 → 1 → 2 → 3 → 4 → 5
AB1.0...
NOT(A)C0...1.
OR 輸入1.0.1.
含 BC 項1.....

冗餘項也可能有時間上的作用

加入 BC,讓 B=C=1 時的輸出維持為 1,不受 A 影響。

Fcovered=AB+A‾C+BCF_{\mathrm{covered}}=AB+\overline A C+BC

依布林代數布林代數處理 0、1 與 AND、OR、NOT 運算。此處的加號通常代表 OR,規則與整數加法不同。 詳細內容的共識定理,穩定輸入下功能相同。但 BC 在 A 切換時仍為 1,可覆蓋上述單一輸入轉換的空隙。在卡諾圖上,相當於用共同群組覆蓋兩個相鄰的 1。

此討論適用於單一輸入切換、兩層 SOP 等假設,不代表同時解決多輸入切換、多層邏輯的動態冒險或類比雜訊。

RTL 寫了某項,不代表實作一定保留

合成器可能辨識 BC 在功能上冗餘而將它移除。因此只在原始碼加入冗餘項,不能斷定實際電路無冒險。必須選擇符合要求的結構,並檢查實作後路徑與時序。

同步資料路徑的基本要求,是滿足 setup建立時間(setup)是輸入資料在時脈擷取邊緣之前,必須保持穩定的最短時間。若違反此條件,便無法保證儲存結果。 詳細內容、hold保持時間(hold)是輸入資料在時脈擷取邊緣之後,仍必須保持穩定的最短時間。請依上下文區分它與一般的數值保持行為。 詳細內容,讓暫存器暫存器儲存多個位元的狀態。本課程中的同步暫存器會在時脈邊緣儲存指定的輸入。 詳細內容在輸出充分穩定後取樣。若直接把組合毛刺用作時脈、非同步重設或外部裝置觸發,問題可能更嚴重。設計需連同訊號用途與接收方式一起考量。

自己試試看

H=A‾B+ACH=\overline A B+AC 中 B=C=1,A 由 0 變成 1。可加入哪個共識項覆蓋 static-1 hazard?加入後穩態真值表會改變嗎?

查看解說

加入 BC。A‾B+AC+BC\overline A B+AC+BC 與原式功能相同,但 BC 可覆蓋切換時兩路徑同為 0 的區間。此處假設單一輸入切換;該項是否保留於實際閘結構,仍須另外確認。

此選擇適用於本瀏覽器,隨時可從頁尾變更。