Altifigence Academy

22 / 63 · 概念

同步狀態轉移與時脈的角色

把同步系統解讀為讀取同一份前次狀態的暫存器集合。

整份狀態在同一邊緣一起更新

令同步電路狀態向量為 QkQ_k、輸入為 XkX_k,核心規格如下。

Qk+1=F(Qk,Xk),Yk=G(Qk,Xk)Q_{k+1}=F(Q_k,X_k),\qquad Y_k=G(Q_k,X_k)

F 是下一狀態函數,G 是輸出函數。時脈不決定計算內容,而是決定何時儲存已算好的下一狀態。若有多個暫存器暫存器儲存多個位元的狀態。本課程中的同步暫存器會在時脈邊緣儲存指定的輸入。 詳細內容,可視為全部以同一份前次狀態決定自己的下一值。

Q 經過組合函數 F 產生下一狀態輸入,最後儲存的值再作為下一區間的 Q 回授,將邊緣之間的計算與邊緣上的儲存分開。

依先前狀態計算下一狀態
  1. 目前狀態 Q: 在時脈邊緣之間保持
  2. F(Q, X): 由輸入與先前狀態計算
  3. 在邊緣儲存: 計算結果成為下一個 Q

時脈週期必須滿足最慢路徑

輸入暫存器產生新值需要時間,通過組合電路到下一暫存器也需要時間;下一個邊緣前還必須留出 setup建立時間(setup)是輸入資料在時脈擷取邊緣之前,必須保持穩定的最短時間。若違反此條件,便無法保證儲存結果。 詳細內容 餘裕。程式寫得短,不代表可使用高時脈頻率。

10 ns 的時脈週期就是 100 MHz。

f=1Tf=\frac{1}{T}

不要省略單位換算:1 ns 的倒數為 1 GHz,1 ps 的倒數為 1 THz。模擬中指定的週期是輸入排程,不是量測該實體電路能以這個頻率運作的結果。

判讀邊緣之間的訊號

暫存器輸出保持邏輯狀態直到下一個有效邊緣,組合輸出則可能在邊緣之間改變。上述保持規則的例外,也取決於重設重設將狀態回復至規格指定的初始值。必須一併定義它是同步或非同步,以及是否優先於其他控制訊號。 詳細內容採同步或非同步方式。本課程提供的練習採用單一時脈與同步重設。

閱讀波形前,先指定輸入有效時點、狀態更新時點與輸出觀察時點。比起「每個時脈執行一行程式」的軟體式解讀,狀態方程式更精確。

自己試試看

200 MHz 時脈的週期是多少?同一時脈連接的兩個暫存器 a、b,若 a<=d; b<=a;,b 會取得該邊緣剛更新的 a 嗎?

查看解說

週期為 5 ns。b 取得邊緣前的 a。兩個暫存器都從同一份前次狀態計算下一值,因此 d 的新值不會在一個邊緣就穿過兩級。

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