閂鎖器與正反器的差異:比較動作與使用時機

兩者都能儲存1個位元,但啟動的時機不同。閂鎖器是位準觸發,在致能有效的期間處於透明狀態,將輸入直接傳到輸出,致能無效後就保持該值。正反器是邊緣觸發,只在時脈邊緣的瞬間取入輸入,其餘時間的變化都會忽略。正反器是由兩個以相反相位動作的閂鎖器構成。

項目閂鎖器正反器
觸發位準觸發。在致能有效的期間動作邊緣觸發。只在時脈上升或下降的瞬間動作
輸出的動作透明期間跟隨輸入,之後保持只在時脈邊緣改變,其餘時間穩定
構成一個儲存級串接兩個以相反相位動作的閂鎖器(主從式)
尺寸與耗電量小,耗電也小大。電晶體數約為2倍
時序分析複雜。有跨越透明期間的時間借用簡單。時脈邊緣前後的建立時間與保持時間
對突波的影響透明期間,突波或競爭會通過不受時脈邊緣之間輸入變化的影響
主要用途利用時間借用的專用高速設計、時脈閘控的元件同步設計的暫存器、計數器、狀態機

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

閂鎖器
面積、功耗與速度的優點,值得承擔更困難的時序分析時。多為專用設計或高效能電路。
正反器
同步設計的標準元件。因為時序簡單且穩健。
HDL小提示
在Verilog或VHDL中,若組合電路的if或case不完整,就會產生非預期的閂鎖器。在所有分支都指定值即可避免。

常見問題

用一句話說明閂鎖器與正反器的差異?

閂鎖器是位準觸發,在致能有效的期間為透明。正反器是邊緣觸發,只在時脈邊緣取入輸入。

正反器是由閂鎖器構成的嗎?

是。主從式正反器是將兩個以相反相位動作的閂鎖器串接而成。

為什麼設計者偏好正反器?

因為時序分析只需看單一時脈邊緣前後的建立時間與保持時間,邊緣之間的突波也不成問題。

為什麼HDL程式碼中會產生非預期的閂鎖器?

因為在組合電路的always區塊或process中,若不在所有分支都對輸出指定值(if或case不完整),邏輯合成會推論為保持舊值,而產生閂鎖器。

理解度檢測

下列哪一項是對D鎖存器動作的正確說明?

  1. A只在時脈上升邊緣的瞬間取入輸入
  2. B將輸入一律反相後輸出
  3. C致能訊號有效期間,輸入會直接傳到輸出,無效後則保持該值
查看答案與解析

正確答案:C. 致能訊號有效期間,輸入會直接傳到輸出,無效後則保持該值

D鎖存器是以位準動作的記憶元件,致能有效期間輸入直接出現在輸出(透通),並保持致能變為無效瞬間的值。它的元件數比正反器少,有時也用於使用鎖存器的時序設計(時間借用,time borrowing)以達到高速化,但由於透通期間訊號直接穿過,時序分析會變得困難。只在邊緣瞬間取入的D型正反器,是將兩個鎖存器以反相連接而成。

下列哪一項是D型正反器的正確動作?

  1. A輸入的變化一律直接傳到輸出
  2. B輸出兩個輸入的互斥或
  3. C在時脈邊緣取入D輸入的值,並保持到下一個邊緣
查看答案與解析

正確答案:C. 在時脈邊緣取入D輸入的值,並保持到下一個邊緣

D型正反器在時脈的上升(或下降)邊緣取入D輸入的值,並保持到下一個邊緣。由於只看邊緣的瞬間,期間即使輸入變化,輸出也不會改變。它是CPU的暫存器、管線級的分隔、計數器等序向電路的基本元件,內部是將兩個鎖存器以主從(Master-Slave)方式連接的結構。要正確取入資料,必須遵守設置時間與保持時間。

下列哪一項是對正反器設置時間的正確說明?

  1. A時脈邊緣之後,資料必須持續保持的最短時間
  2. B時脈邊緣之前,資料輸入必須保持穩定的最短時間
  3. C從開啟電源到開始動作的時間
查看答案與解析

正確答案:B. 時脈邊緣之前,資料輸入必須保持穩定的最短時間

正反器要正確取入資料,資料必須從時脈邊緣前一段時間起就保持穩定,這就是設置時間。當資料路徑的延遲超過時脈週期減去設置時間的值時即違規,放慢時脈即可解決。邊緣之後資料必須保持的時間是保持時間,只要有一項不滿足,就會造成取入錯誤的值或亞穩態。

  1. 以正反器接收非同步訊號時,因無法滿足設置時間或保持時間,導致輸出暫時無法確定是0還是1的狀態,稱為什麼?
  2. 所有正反器以共同時脈動作的同步式電路,其優點下列哪一項正確?
  3. 上方描述會產生閂鎖器的原因與對策的組合,下列何者正確?

前往邏輯電路的練習題

相關名詞的解說

正反器
保存 1 位元資訊的循序電路基本元件。D 型會在時脈的邊緣擷取輸入。
非預期閂鎖(Unintended latch)
在原本想寫成組合電路的描述中,因某些條件下沒有對輸出賦值,使邏輯合成產生出保持值之閂鎖的情形。

相關的比較