同步重置與非同步重置的差異:時序、時脈、解除的注意事項比較
兩者都是將正反器設為固定初始值的機制,但重置生效的時機不同。同步重置與其他資料一樣,在時脈邊緣擷取重置訊號。非同步重置直接使用正反器的重置端子,不論時脈如何都會立即生效。實際的設計中,常用的方式是施加時以非同步立即生效,只有解除時與時脈同步。
| 項目 | 同步重置 | 非同步重置 |
|---|---|---|
| 生效時機 | 在重置有效的狀態下,時脈邊緣到來時 | 重置變為有效的瞬間。不等待時脈 |
| 是否需要時脈 | 需要。時脈停止時無法重置 | 不需要。在時脈開始動作之前或停止時也會生效 |
| 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 個時脈週期以上 | 短脈衝也會生效 |
| 時序分析 | 可作為一般資料輸入,以建立與保持進行分析 | 另外確認解除的時序(恢復時間與移除時間) |
| 重置解除時的注意事項 | 與時脈同步,因此在同一時脈的範圍內不易發生問題 | 解除若接近時脈邊緣,各正反器的解除週期可能錯開,或進入亞穩態。以重置同步電路讓解除與時脈對齊 |
| 適合的電路 | 時脈持續動作的電路、重置訊號容易受雜訊干擾的電路 | 想在上電後立即初始化的電路、時脈可能停止的電路 |
數值為具代表性的大致參考值,會因世代或產品而異。