一般來(lái)說(shuō),復(fù)位信號(hào)有效后會(huì)保持比較長(zhǎng)一段時(shí)間,確保 register 被復(fù)位完成。但是復(fù)位信號(hào)釋放時(shí),因?yàn)槠浜?a href="http://ttokpm.com/tags/時(shí)鐘/" target="_blank">時(shí)鐘是異步的關(guān)系,我們不知道它會(huì)在什么時(shí)刻被釋放。
首先看圖1,考慮復(fù)位信號(hào)在兩個(gè)時(shí)鐘沿之間被釋放的情況。Reset 信號(hào)從 Device Pin 到 Flip-Flop 的延遲最大不能超過(guò)“Max Time Available”,如果延遲超過(guò)了這個(gè)限制,那么復(fù)位信號(hào)的釋放會(huì)進(jìn)入 Setup Time 要求的區(qū)間,導(dǎo)致 Flip-Flop 進(jìn)入亞穩(wěn)態(tài)。當(dāng)時(shí)鐘頻率變高,時(shí)鐘周期變短,不難發(fā)現(xiàn),要滿(mǎn)足這個(gè)要求是越來(lái)越難的。
圖1 - Reset timing diagram, deasserted between clock edges
前面我們提到過(guò),因?yàn)槭钱惒叫盘?hào),我們無(wú)法確保信號(hào)的釋放在一個(gè)確定的區(qū)間。如圖2所示,對(duì)于 Flip-Flop 來(lái)說(shuō),異步信號(hào)的釋放可能在A區(qū)間,也可能在B或者C區(qū)間。假設(shè)現(xiàn)在我們的設(shè)計(jì)中包含三個(gè) Flip-Flop,分別為FF1,F(xiàn)F2 和 FF3。FF1 的復(fù)位釋放落在A區(qū)間,所以 FF1 會(huì)在復(fù)位信號(hào)釋放后的第一個(gè)時(shí)鐘沿有效,F(xiàn)F3 的復(fù)位釋放落在C區(qū)間,那么 FF3 會(huì)在復(fù)位信號(hào)釋放后的第二個(gè)時(shí)鐘沿有效,而 FF2 的復(fù)位釋放落在B區(qū)間,所以 FF2 可能會(huì)進(jìn)入亞穩(wěn)態(tài)。
圖2 - Reset deasserted asynchronously to the clock
不同的 FF 因?yàn)閺?fù)位信號(hào)釋放的位置不同而在不同的時(shí)刻有效,這會(huì)對(duì)設(shè)計(jì)造成影響嗎?
假如我們的設(shè)計(jì)是如圖3所示的情況,是不會(huì)對(duì)設(shè)計(jì)的功能造成影響的。在復(fù)位釋放之后,任何有問(wèn)題的數(shù)據(jù)會(huì)被Pipeline排出去,經(jīng)過(guò)4個(gè)cycle之后,這個(gè)pipeline便會(huì)恢復(fù)到正常的工作狀態(tài)。
圖3 - Reset for a pipeline
但如果我們的設(shè)計(jì)是如圖4所示。被復(fù)位的FF是狀態(tài)機(jī)的狀態(tài),那么復(fù)位釋放后很有可能狀態(tài)機(jī)會(huì)被復(fù)位到一個(gè)無(wú)效的狀態(tài),影響正常的功能。
圖4 - Reset for a one-hot state machine
什么是同步釋放 ?
從上一部分的內(nèi)容我們發(fā)現(xiàn),異步信號(hào)的異步釋放會(huì)導(dǎo)致 FF 在不同的時(shí)刻有效,甚至進(jìn)入亞穩(wěn)態(tài),從而影響設(shè)計(jì)的功能運(yùn)行。如何避免這個(gè)問(wèn)題呢?考慮同步釋放。顧名思義,同步釋放就是讓復(fù)位信號(hào)的釋放過(guò)程與時(shí)鐘同步,從而確保所有 FF 在同一時(shí)刻有效。
如圖5所示,是異步復(fù)位同步釋放的電路設(shè)計(jì)。FDP的個(gè)數(shù)決定復(fù)位信號(hào)保持的長(zhǎng)度,最少要有兩個(gè)。當(dāng)復(fù)位信號(hào)釋放后,F(xiàn)DP chain 會(huì)將接地的0逐級(jí)pipe到最后一個(gè)FDP輸出,因?yàn)樵揊DP的輸出是和Clock同步的,所以FDR的復(fù)位釋放便是和Clock 同步的。
圖5 - Async reset with sync dessertion
最后一個(gè)FDP不是仍然是異步復(fù)位異步釋放么,會(huì)不會(huì)這個(gè)FDP因?yàn)楫惒结尫胚M(jìn)入亞穩(wěn)態(tài),那么其輸出的復(fù)位信號(hào)也不確定從而導(dǎo)致復(fù)位失???
答案是不會(huì)。FDP會(huì)進(jìn)入亞穩(wěn)態(tài)的條件是什么?一是異步釋放非常貼近時(shí)鐘沿,二是 FDP 輸入D在時(shí)鐘沿附近發(fā)生跳變。根據(jù)這個(gè)電路設(shè)計(jì),F(xiàn)DP的輸入D時(shí)不會(huì)在異步釋放時(shí)發(fā)生跳變的,所以FDP不會(huì)進(jìn)入亞穩(wěn)態(tài)。
異步復(fù)位同步釋放的時(shí)序約束
異步復(fù)位同步釋放的電路我們已經(jīng)設(shè)計(jì)好了,如何進(jìn)行時(shí)序約束呢?
對(duì)于 FDR,我們可以不用考慮的。因?yàn)楣ぞ邥?huì)分析復(fù)位信號(hào)的 Recovery Time 和 Removal Time 來(lái)確保時(shí)序收斂。如果發(fā)現(xiàn) Recovey Time 或者 Removal Time 的違反,我們可能需要看一下 reset tree 或者 clock skew。一般都是 Recovey Time的違反,類(lèi)似于 Setup Time,可能是由于 reset path的延遲太長(zhǎng)導(dǎo)致。
對(duì)于 FDP,D端是同步電路,而CLR輸入端是異步信號(hào),通過(guò)電路的設(shè)計(jì)我們已經(jīng)避免的異步信號(hào)帶來(lái)的問(wèn)題,所以為了避免 false timing violation,我們可以對(duì) FDP 的 CLR 端設(shè)置 false path。
審核編輯:劉清
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26465 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
491瀏覽量
27454 -
FDR
+關(guān)注
關(guān)注
0文章
10瀏覽量
8664 -
異步復(fù)位
+關(guān)注
關(guān)注
0文章
46瀏覽量
13297
原文標(biāo)題:FPGA復(fù)位設(shè)計(jì)中異步復(fù)位為什么要同步釋放 ?
文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論