關(guān)于異步電路,是面試?yán)锉粏?wèn)的最多的部分,網(wǎng)上也有很多很多的總結(jié)文章。這里有兩個(gè)原因。第一,這是一種比較成熟的通用設(shè)計(jì)手段,電路結(jié)構(gòu)也比較經(jīng)典。第二是因?yàn)檫@塊設(shè)計(jì)在項(xiàng)目中真的很重要。
那么為什么重要呢? 從功能角度來(lái)說(shuō),比起同步系統(tǒng)中各種功能的設(shè)計(jì)可以通過(guò)eda驗(yàn)證保證,異步交互模塊處理跨時(shí)鐘域信號(hào)傳輸這個(gè)功能是沒(méi)辦法通過(guò)rtl仿真用例測(cè)試其正確性的。而在物理實(shí)現(xiàn)的時(shí)候,因?yàn)楫惒诫娐窌r(shí)鐘沒(méi)有固定相位關(guān)系,無(wú)法像同步電路一樣通過(guò)時(shí)鐘關(guān)系去約束路徑走線,也需要被特別對(duì)待。
這些特殊性決定了異步電路需要設(shè)計(jì)人員對(duì)其結(jié)構(gòu)功能有一個(gè)更正確和完善的認(rèn)識(shí),這樣才能在rtl階段及時(shí)識(shí)別需求,做好review工作,并通過(guò)cdc檢視設(shè)計(jì)的正確性,以及對(duì)后端物理實(shí)現(xiàn)人員提出合理的約束需求。當(dāng)然有條件的還是需要做fpga原型驗(yàn)證和后仿,來(lái)增加設(shè)計(jì)的可靠性,因?yàn)閏dc和代碼review這些都僅僅是從設(shè)計(jì)本身的角度進(jìn)行確認(rèn),只有fpga和eda后仿真可以提供一個(gè)真實(shí)運(yùn)行結(jié)果的確認(rèn)。
這篇文章將分幾個(gè)角度概括性地歸納總結(jié)異步電路跨時(shí)鐘域一些比較重要的概念和處理方法,后續(xù)文章中將對(duì)不同的跨時(shí)鐘域同步器結(jié)構(gòu)再一一進(jìn)行展開(kāi)介紹。因?yàn)檫@些概念和處理方法已經(jīng)被翻來(lái)覆去總結(jié)過(guò)無(wú)數(shù)次了,可能大家也都很熟悉了。
1
異步電路的界定
異步電路不能根據(jù)時(shí)鐘是否同源來(lái)界定,時(shí)鐘之間沒(méi)有確定的相位關(guān)系是唯一準(zhǔn)則。 比如同一個(gè)時(shí)鐘源如果經(jīng)過(guò)pll分出33MHZ和50MHZ 的兩個(gè)時(shí)鐘,他們的相位關(guān)系會(huì)時(shí)鐘變化的變化,那么他們驅(qū)動(dòng)的電路也屬于異步電路。
2
跨時(shí)鐘域處理不當(dāng)?shù)奈:徒鉀Q方案
1. 亞穩(wěn)態(tài) :
異步系統(tǒng)交互時(shí)會(huì)出現(xiàn)亞穩(wěn)態(tài),如果直接使用亞穩(wěn)態(tài)信號(hào),或者因處理不當(dāng)導(dǎo)致其傳播,會(huì)使整個(gè)系統(tǒng)結(jié)果不可預(yù)期。合理的異步電路同步器設(shè)計(jì)可以有效降低亞穩(wěn)態(tài)出現(xiàn)的概率,但其是不可能被完全消除的。而亞穩(wěn)態(tài)出現(xiàn)的概率和器件工藝,時(shí)鐘頻率,信號(hào)頻率和同步器結(jié)構(gòu)都有關(guān)系。
解決方案:
- 使用合適的同步器,包括但不限于:1bit多級(jí)打拍同步(電平信號(hào),脈沖信號(hào)),多bit格雷碼轉(zhuǎn)換打拍同步,多bit Dmux同步,握手協(xié)議同步,異步FIFO同步。
- 若是打拍同步,需要根據(jù)工藝以及頻率選擇合適的打拍級(jí)數(shù)
2. 毛刺 :
異步系統(tǒng)交互時(shí)如果上游模塊有信號(hào)毛刺,不當(dāng)?shù)奶幚頃?huì)使其傳播并被下游異步模塊采樣,可能會(huì)導(dǎo)致下游功能錯(cuò)誤。同步系統(tǒng)內(nèi)有setup檢查保證毛刺在被采樣前有足夠的時(shí)間的消除,而異步電路只能靠設(shè)計(jì)保證毛刺不被傳播和誤采樣。
解決方案:
- 上游待同步信號(hào)寄存器輸出過(guò)濾毛刺
- 待同步信號(hào)的輸出寄存器和同步器之間不能存在任何組合邏輯
3. 漏采、誤采 :
異步系統(tǒng)交互時(shí)如果處理不當(dāng),可能會(huì)造成下游對(duì)傳播信號(hào)漏采樣或者誤采樣。
解決方案:
- 明確系統(tǒng)間的頻率關(guān)系,采用合適的同步器
- 單bit待采集信號(hào)要進(jìn)行位寬確認(rèn)和拓展(快->慢),一般要保證信號(hào)寬度大于采集時(shí)鐘加上一個(gè)margin(依據(jù)經(jīng)驗(yàn)而定,來(lái)源是采集時(shí)鐘域的setup,hold,skew,jitter等)
- 多bit信號(hào)不能直接打拍采樣,通過(guò)格雷碼或者握手,異步fifo等其他結(jié)構(gòu)的同步器。
4. 再匯集 :
有相互關(guān)系的上游信號(hào)經(jīng)過(guò)了異步處理之后到達(dá)另一個(gè)時(shí)鐘域的時(shí)間是不可預(yù)期的,那么他們?cè)俅螀R聚的時(shí)候會(huì)出現(xiàn)與預(yù)期功能不一致的錯(cuò)誤。這又被稱(chēng)為再收斂(reconverge)錯(cuò)誤。
解決方案:
- 多個(gè)1bit信號(hào)待同步時(shí),必須在原時(shí)鐘域完成組合匯聚和寄存處理,不能分別同步到另一個(gè)時(shí)鐘域再匯聚
- 同源信號(hào)復(fù)制跨時(shí)鐘域時(shí),需要先進(jìn)行跨時(shí)鐘域,再進(jìn)行復(fù)制。
5. 異步復(fù)位 :
如果處理不當(dāng)或者沒(méi)有做好相應(yīng)時(shí)序檢查,復(fù)位功能會(huì)有問(wèn)題。
解決方案:
- 采用穩(wěn)定的復(fù)位邏輯單元(普遍使用經(jīng)典的異步復(fù)位同步釋放結(jié)構(gòu))
- 做好recovery-removal檢查
- 保證對(duì)接模塊的異步復(fù)位不相互影響
3
異步電路跨時(shí)鐘域的設(shè)計(jì)檢查
- 明確設(shè)計(jì)規(guī)格,做好代碼review
- 做好Clock-Domain-Crossing(CDC)檢查
- 有條件的做好FPGA,EMU和后仿檢查確認(rèn)
以上便是異步電路跨時(shí)鐘域設(shè)計(jì)的一些總結(jié),希望拋轉(zhuǎn)引玉,得到更多有價(jià)值的經(jīng)驗(yàn)談。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21744瀏覽量
603662 -
EDA工具
+關(guān)注
關(guān)注
4文章
268瀏覽量
31801 -
異步電路
+關(guān)注
關(guān)注
2文章
48瀏覽量
11105 -
同步器
+關(guān)注
關(guān)注
1文章
98瀏覽量
14645 -
FIFO存儲(chǔ)
+關(guān)注
關(guān)注
0文章
103瀏覽量
5990
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論