https://zhuanlan.zhihu.com/p/365826531
**同步釋放就是讓復位信號的釋放過程與時鐘同步,從而確保所有 FF 在同一時刻有效。**
在 FPGA 復位的設計中,常常聽到一個詞,叫“異步復位,同步釋放”。異步復位相對的是同步復位,很好理解。那么什么是同步釋放?為什么要用同步釋放?
本文主要包含以下三點內容:
* **異步復位異步釋放會有什么問題?**
* **同步釋放**
* **異步復位同步釋放的時序約束**
## 異步復位有什么問題?
一般來說,復位信號有效后會保持比較長一段時間,確保 register 被復位完成。但是復位信號釋放時,因為其和時鐘是異步的關系,我們不知道它會在什么時刻被釋放。
首先看圖1,考慮復位信號在兩個時鐘沿之間被釋放的情況。Reset 信號從 Device Pin 到 Flip-Flop 的延遲最大不能超過“Max Time Available”,如果延遲超過了這個限制,那么復位信號的釋放會進入 Setup Time 要求的區間,導致 Flip-Flop 進入亞穩態。當時鐘頻率變高,時鐘周期變短,不難發現,要滿足這個要求是越來越難的。

前面我們提到過,因為是異步信號,我們無法確保信號的釋放在一個確定的區間。如圖2所示,對于 Flip-Flop 來說,異步信號的釋放可能在A區間,也可能在B或者C區間。假設現在我們的設計中包含三個 Flip-Flop,分別為FF1,FF2 和 FF3。FF1 的復位釋放落在A區間,所以 FF1 會在復位信號釋放后的第一個時鐘沿有效,FF3 的復位釋放落在C區間,那么 FF3 會在復位信號釋放后的第二個時鐘沿有效,而 FF2 的復位釋放落在B區間,所以 FF2 可能會進入亞穩態。

不同的 FF 因為復位信號釋放的位置不同而在不同的時刻有效,這會對設計造成影響嗎?
假如我們的設計是如圖3所示的情況,是不會對設計的功能造成影響的。在復位釋放之后,任何有問題的數據會被Pipeline排出去,經過4個cycle之后,這個pipeline便會恢復到正常的工作狀態。

但如果我們的設計是如圖4所示。被復位的FF是狀態機的狀態,那么復位釋放后很有可能狀態機會被復位到一個無效的狀態,影響正常的功能。

## 同步釋放
從上一部分的內容我們發現,異步信號的異步釋放會導致 FF 在不同的時刻有效,甚至進入亞穩態,從而影響設計的功能運行。如何避免這個問題呢?考慮同步釋放。顧名思義,同步釋放就是讓復位信號的釋放過程與時鐘同步,從而確保所有 FF 在同一時刻有效。
如圖5所示,是異步復位同步釋放的電路設計。FDP的個數決定復位信號保持的長度,最少要有兩個。當復位信號釋放后,FDP chain 會將接地的0逐級pipe到最后一個FDP輸出,因為該FDP的輸出是和Clock同步的,所以FDR的復位釋放便是和Clock 同步的。

最后一個FDP不是仍然是異步復位異步釋放么,會不會這個FDP因為異步釋放進入亞穩態,那么其輸出的復位信號也不確定從而導致復位失敗?
答案是不會。FDP會進入亞穩態的條件是什么?一是異步釋放非常貼近時鐘沿,二是 FDP 輸入D在時鐘沿附近發生跳變。根據這個電路設計,FDP的輸入D時不會在異步釋放時發生跳變的,所以FDP不會進入亞穩態。
## 異步復位同步釋放的時序約束
異步復位同步釋放的電路我們已經設計好了,如何進行時序約束呢?
對于 FDR,我們可以不用考慮的。因為工具會分析 復位信號的 Recovery Time 和 Removal Time 來確保時序收斂。如果發現 Recovey Time 或者 Removal Time 的違反,我們可能需要看一下 reset tree 或者 clock skew。一般都是 Recovey Time的違反,類似于 Setup Time,可能是由于 reset path的延遲太長導致。
對于 FDP,D端是同步電路,而CLR輸入端是異步信號,通過電路的設計我們已經避免的異步信號帶來的問題,所以為了避免 false timing violation,我們可以對 FDP 的 CLR 端設置 false path。
- 空白目錄
- 流水線
- 流水線性能測評
- 計算機性能測評
- 流水線設計
- 購物車狀態機
- 序列檢測器
- 序列檢測10010
- 序列檢測10010帶圖
- 反相器
- 計數器
- 分頻電路
- 偶數分頻
- 奇數分頻
- 小數分頻
- 同步復位異步釋放all
- 對的-異步復位同步釋放原理
- 同步復位異步釋放
- 異步復位為什么要同步釋放 ?
- FPGA-異步復位同步釋放 通俗解釋
- 同步復位
- 狀態機
- 狀態機的分類
- 狀態機5個要素
- FIFO
- 異步fifo中同步為什么要用兩級觸發器
- 亞穩態
- 亞穩態的產生機理、消除辦法 (可以理解為什么打拍)
- 面向對象思想
- 為什么D觸發器有setup time和hold time的要求
- Tsu,Tco,Th,Tpd的概念
- verilog
- 自啟動
- 毛刺
- 馮諾依曼