同步重置與非同步重置的差異:時序、時脈、解除的注意事項比較

兩者都是將正反器設為固定初始值的機制,但重置生效的時機不同。同步重置與其他資料一樣,在時脈邊緣擷取重置訊號。非同步重置直接使用正反器的重置端子,不論時脈如何都會立即生效。實際的設計中,常用的方式是施加時以非同步立即生效,只有解除時與時脈同步。

項目同步重置非同步重置
生效時機在重置有效的狀態下,時脈邊緣到來時重置變為有效的瞬間。不等待時脈
是否需要時脈需要。時脈停止時無法重置不需要。在時脈開始動作之前或停止時也會生效
Verilog 的寫法always @(posedge clk) if (!rst_n) q <= 0; else q <= d;always @(posedge clk or negedge rst_n) if (!rst_n) q <= 0; else q <= d;
電路的構成在資料輸入之前加入重置用邏輯使用附有重置端子的正反器
面積與資料路徑資料路徑中的閘增加,延遲與面積可能隨之增加單元因重置端子而變大,但資料路徑中不會增加邏輯
抗突波能力強。邊緣瞬間以外的突波不會被擷取弱。重置線上的突波可能造成誤重置
重置的脈衝寬度必須維持有效至少 1 個時脈週期以上短脈衝也會生效
時序分析可作為一般資料輸入,以建立與保持進行分析另外確認解除的時序(恢復時間與移除時間)
重置解除時的注意事項與時脈同步,因此在同一時脈的範圍內不易發生問題解除若接近時脈邊緣,各正反器的解除週期可能錯開,或進入亞穩態。以重置同步電路讓解除與時脈對齊
適合的電路時脈持續動作的電路、重置訊號容易受雜訊干擾的電路想在上電後立即初始化的電路、時脈可能停止的電路

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

適用於什麼情況

同步重置
時脈持續動作,且重置訊號可能出現突波時。想將重置與一般資料路徑一樣進行時序分析時。
非同步重置
在時脈動作之前或停止時,也想立即初始化時。例如想讓輸出儘早進入安全狀態的電路等。
搭配使用
以非同步施加、同步解除的方式(重置同步電路)被廣泛使用。施加時立即生效,解除則以 2 級正反器與時脈邊緣對齊。

常見問題

為什麼要讓非同步重置的解除與時脈同步?

因為解除若發生在時脈邊緣附近,就無法遵守恢復時間或移除時間,會出現某個正反器在本週期、另一個在下一個週期才開始動作的錯開,或發生亞穩態。這會成為狀態機從非法狀態開始的原因,因此要先以 2 級正反器讓解除與時脈對齊後再分配。

同步重置在時脈停止時會怎樣?

即使輸入重置訊號,正反器也不會被初始化。在剛上電後等、時脈穩定之前就需要安全狀態的電路中,使用非同步重置。

所有正反器都需要重置嗎?

不需要。像資料通道這樣使用前一定會被寫入的暫存器,有時會省略重置以減少面積與佈線。狀態機或控制訊號等初始值會影響動作的部分則要重置。

理解度檢測

同步重置與非同步重置的差異,下列何者正確?

  1. A同步重置與時脈無關即生效,非同步重置只在時脈邊緣生效
  2. B同步重置只在時脈邊緣生效,非同步重置與時脈無關,立即生效
  3. C兩者的動作完全相同,只是名稱不同
查看答案與解析

正確答案:B. 同步重置只在時脈邊緣生效,非同步重置與時脈無關,立即生效

同步重置是將重置訊號與其他輸入一樣在時脈邊緣取入,因此時序分析較容易,但時脈沒有運作時就無法重置。非同步重置直接使用正反器的重置端子,所以即使沒有時脈也能立即重置,但若解除的瞬間靠近時脈邊緣,各個正反器的解除時序可能會產生參差。

在使用非同步重置的電路中,先以2級正反器使重置的解除(由0變為1)與時脈同步,再分送給各電路,其原因下列何者正確?

  1. A為了將施加重置的時間延遲2個時脈而使其安全
  2. B為了將重置訊號加快為2倍
  3. C因為若解除靠近時脈邊緣,各個正反器被解除的週期會產生偏差或變得不穩定,所以要讓解除與時脈對齊
查看答案與解析

正確答案:C. 因為若解除靠近時脈邊緣,各個正反器被解除的週期會產生偏差或變得不穩定,所以要讓解除與時脈對齊

若非同步重置的解除發生在時脈邊緣的前後,就無法滿足解除所需的時間條件,會產生某個正反器在這個週期、另一個在下一個週期才開始動作等偏差。這會成為狀態機從不正確的狀態開始的原因。重置同步電路在施加重置時立即生效,只將解除以2級正反器與時脈對齊後再分送到整體。

在模擬中,沒有重置的暫存器的值一開始是X。在實際的晶片中,會變成怎麼樣?

  1. A電源開啟時會成為0或1其中之一,但會是哪一個並不確定
  2. B在實際的晶片中也會停留在0與1中間的電壓
  3. C在實際的晶片中一定會成為0
查看答案與解析

正確答案:A. 電源開啟時會成為0或1其中之一,但會是哪一個並不確定

實際的正反器在電源開啟後會穩定在0或1其中一個狀態,但會是哪一個會隨晶片、位置、溫度等而改變,並不確定。模擬中的X表示「不知道是哪一個」。如果該值會影響電路的動作,就需要以重置使其成為固定的值。像資料通路這種在使用前一定會被寫入的暫存器,有時也會省略重置。

  1. 上方描述的重置種類與動作,下列何者正確?
  2. 以正反器接收非同步訊號時,因無法滿足設置時間或保持時間,導致輸出暫時無法確定是0還是1的狀態,稱為什麼?

前往硬體描述語言與驗證的練習題

相關名詞的解說

同步重設(Synchronous reset)
在時脈邊緣取入重設訊號來初始化正反器的重設。時序分析較容易,但在時脈停止時不會生效。
非同步重設(Asynchronous reset)
與時脈無關,重設訊號一旦有效就立即初始化正反器的重設。解除時基本上要與時脈同步。
重設同步器(Reset synchronizer)
施加非同步重設時立即生效,僅在解除時以兩級正反器對齊時脈後,再分送到整個電路的電路。
亞穩態
正反器未遵守設定時間或保持時間時,輸出在一段時間內既不是 0 也不是 1 而無法確定的狀態。對於非同步訊號,以兩級正反器同步化來因應。
突波(Glitch)
因各訊號路徑的延遲差異等,而在輸出上瞬間出現的多餘脈衝。在組合電路中也稱為危障(hazard),在 DA 轉換器中則於代碼切換時產生。

相關的比較