Altifigence Academy

23 / 63 · 概念

組合選擇與暫存輸出的延遲

分析 MUX 結果存入暫存器後,介面與延遲如何改變。

為什麼在輸出加暫存器

MUX多工器是依選擇訊號,將多個輸入之一連至輸出的組合電路。必須明確定義選擇位元與輸入編號的對應關係。 詳細內容 的組合輸出會隨選擇線或資料改變。在後方加入暫存器暫存器儲存多個位元的狀態。本課程中的同步暫存器會在時脈邊緣儲存指定的輸入。 詳細內容,可讓下一級使用時脈邊界確定的值,但觀察時點與延遲也會改變。

以 ak,bk,ska_k,b_k,s_k 表示邊緣 k 前已準備好的輸入,以 qk+1q_{k+1} 表示該邊緣後的儲存值,則:

yk=sk‾ak+skbk,qk+1=yky_k=\overline{s_k}a_k+s_kb_k,\qquad q_{k+1}=y_k

談延遲時,必須同時定義何時提出輸入、何時觀察輸出。若介面的輸入與輸出都定義為暫存器輸出,中間暫存器級數便決定週期延遲。

先畫出簡短時間表

邊緣前absely邊緣後 q
101000
201111
310100

若 sel 在邊緣 1 與 2 之間改變,y 先變,q 則保持到邊緣 2。直接拿 q 的變化與輸入變化比較,可能看起來像差一週期的錯誤。

各欄是有順序的觀察時點,不是等間距時間軸。此處 a=0、b=1,請看 sel 改變後、下一邊緣前 q 保持的區段。

y 先改變,q 隨後更新
查看波形資料
波形資料:每個字元表示一個區間;句點保持先前狀態;p 表示一個時脈週期。
訊號波形匯流排值
事件23452E1 後 → sel → 1 → E2 後 → sel → 0 → E3 後
sel01.0.
y01.0.
q0.1.0

暫存器無法解決什麼

輸入若在擷取邊緣附近不穩定,即使加了暫存器也不安全。來自另一時脈域的選擇訊號需要另外設計同步機制。這也不代表組合輸出 y 的毛刺完全消失,必須確認介面是否只用 q,或其他路徑也使用 y。

自己試試看

考慮共用同一時脈的輸入暫存器 → MUX → 輸出暫存器。輸入暫存器在邊緣 k 產生的新值,通常在哪個輸出暫存器邊緣反映?

查看解說

正常的單週期同步路徑會在邊緣 k+1 擷取。邊緣 k 時,輸出暫存器看到輸入暫存器的舊值;新值經過 clock-to-Q 與組合延遲,準備供下一邊緣使用。不能認為新值在同一邊緣立刻穿過兩個暫存器。

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