Altifigence Academy

20 / 63 · 概念

D 正反器:從準位到邊緣

比較鎖存器與正反器的更新時點,連結暫存器、setup、hold 的意義。

時脈為 1 的期間,不同於變成 1 的瞬間

正準位鎖存器鎖存器在控制訊號啟用時跟隨輸入,未啟用時保持原值。它與只在邊緣儲存資料的正反器不同。 詳細內容在整段 CLK=1 期間跟隨 D。上升緣上升緣是時脈由 0 變成 1 的瞬間。它與表示整段 CLK=1 期間的高準位不同。 D 正反器正反器在指定的時脈邊緣儲存輸入,並保持至下一個邊緣。輸入須滿足 setup 與 hold 條件。則在 CLK 由 0 變成 1 的邊界採用 D,儲存至下一個上升緣。不能只看到 clk=1 的條件,就把兩種行為視為相同。

請親自做以下比較。

  1. CLK=0 時將 D 改成 1,兩個 Q 仍為 0。
  2. 把 CLK 升到 1,兩個 Q 都成為 1。
  3. 維持 CLK=1,將 D 改成 0,只有鎖存器 Q 變成 0。
  4. CLK 先降為 0,再升為 1,正反器 Q 也採用 0。
相同 D、CLK 下,兩種儲存元件的不同行為

假設兩個 q 初值皆為 0。D 鎖存器在 CLK=1 時跟隨 D,在 CLK=0 時保持。D 正反器只在 CLK 由 0→1 時擷取 D。

循序電路的一個週期

正反器輸出 Q 經過組合電路產生下一個輸入 D,就形成狀態轉移。以 DkD_k 表示邊緣前的輸入,Qk+1Q_{k+1} 表示邊緣後的儲存狀態,理想模型如下。

Qk+1=DkQ_{k+1}=D_k

實際輸出不會在邊緣瞬間改變,而是經過 clock-to-Q 延遲後才改變。多個正反器在同一邊緣各自採用輸入,因此可從彼此先前的狀態計算下一狀態。這是計數器與移位暫存器暫存器儲存多個位元的狀態。本課程中的同步暫存器會在時脈邊緣儲存指定的輸入。的起點。

從目前狀態到下一狀態
  1. 目前 Q: 本週期儲存的狀態
  2. 組合電路: 由 Q 與外部輸入計算 D
  3. 下一個上升緣: 儲存符合時序條件的 D
  4. 新的 Q: 經過 clock-to-Q 延遲後,輸出下一狀態

Setup、hold 是取樣的前提

D 必須在擷取邊緣前的 setup建立時間(setup)是輸入資料在時脈擷取邊緣之前,必須保持穩定的最短時間。若違反此條件,便無法保證儲存結果。 詳細內容 時間,以及邊緣後的 hold 時間保持時間(hold)是輸入資料在時脈擷取邊緣之後,仍必須保持穩定的最短時間。請依上下文區分它與一般的數值保持行為。 詳細內容內穩定。若 D 在邊緣附近改變,不能保證結果只是舊值或新值之一,也可能有亞穩態問題。上方練習不模擬這項類比現象。

暫存器是多個位元正反器的集合。8 位元暫存器寬度為 8,並不保證輸入的 8 位元構成同一個一致的值;還需要相同時序條件與資料傳遞規則。

起始狀態與重設

模擬以 Q=0 開始,不等於硬體上電必定為 0。下一堂會加入 reset 與 enable,指定何時初始化、何時保持。同步 reset 在邊緣作用;非同步 reset 不依賴邊緣,但也需注意解除時機。

自己試試看

CLK=1 期間 D 由 0→1→0,下一個上升緣前則穩定為 D=1。鎖存器與正反器的 Q 何時改變?正反器會在邊緣更新兩次嗎?

查看解說

鎖存器在 CLK=1 期間跟隨 D 的變化。正反器忽略這些變動,在下一個上升緣只擷取一次有效的 D=1。實際電路還需納入 setup、hold 與 clock-to-Q 條件解讀。

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