最近是IC相關(guān)專(zhuān)業(yè)學(xué)生找工作的高峰期,大家可以在文章末尾或者知識(shí)星球留言討論筆試或者面試題哦。跨時(shí)鐘域的處理在面試中常常被問(wèn)到,今天IC君就來(lái)聊一聊這個(gè)話題。
1
跨時(shí)鐘域是如何產(chǎn)生的呢?現(xiàn)在的芯片(比如SOC,片上系統(tǒng))集成度和復(fù)雜度越來(lái)越高,通常一顆芯片上會(huì)有許多不同的信號(hào)工作在不同的時(shí)鐘頻率下。比如SOC芯片中的CPU通常會(huì)工作在一個(gè)頻率上,總線信號(hào)(比如DRAM BUS)會(huì)工作在另一個(gè)時(shí)鐘頻率下,而普通的信號(hào)又會(huì)工作在另外的時(shí)鐘頻率下。這3個(gè)不同時(shí)鐘頻率下工作的信號(hào)往往需要相互溝通和傳遞信號(hào)。
不同時(shí)鐘域下的信號(hào)傳遞就涉及到跨時(shí)鐘域信號(hào)處理,因?yàn)橄嗷ブg的頻率、相位不一樣,如果不做處理或者處理不當(dāng),如下圖所示的時(shí)鐘域CLK_A的數(shù)據(jù)信號(hào)A可能無(wú)法滿足時(shí)鐘域CLK_B的setup/hold時(shí)間,可能導(dǎo)致:
1.數(shù)據(jù)丟失,無(wú)法采到預(yù)期中的信號(hào);
2.亞穩(wěn)態(tài)的產(chǎn)生。
從而導(dǎo)致某個(gè)電路模塊或者整顆IC無(wú)法工作。
2
那么,常見(jiàn)的跨時(shí)鐘域信號(hào)處理方法都有哪些呢?有如下的三種:
兩級(jí)DFF同步器
握手協(xié)議
異步FIFO
最簡(jiǎn)單的單比特信號(hào)處理通常采用兩級(jí)DFF串聯(lián)進(jìn)行同步,如下圖所示:
從時(shí)鐘域A(CLKA)傳過(guò)來(lái)的信號(hào)a_in, 直接用時(shí)鐘域B CLKB采用很容易產(chǎn)生亞穩(wěn)態(tài),用兩級(jí)DFF 敲過(guò)后再使用就可以把亞穩(wěn)態(tài)概率降到一個(gè)合理的值。
很多人可能會(huì)問(wèn),為什么是兩級(jí)DFF呢?一級(jí)或者三級(jí)DFF行不行呢?這里有一個(gè)平均失效間隔時(shí)間MTBF(Mean Time Between Failure)的考慮。MTBF時(shí)間越長(zhǎng),出現(xiàn)亞穩(wěn)態(tài)的概率就越小,但是也不能完全避免亞穩(wěn)態(tài)。注意采樣時(shí)鐘頻率越高,MTBF可能會(huì)迅速減小。
有文獻(xiàn)給出的數(shù)據(jù):對(duì)于一個(gè)采樣頻率為200Mhz的系統(tǒng),如果不做同步MTBF是2.5us,一級(jí)DFF同步的MTBF大概是23年,兩級(jí)DFF同步的大約MTBF大概是640年,MTBF越長(zhǎng)出錯(cuò)的概率越小。所以一級(jí)看上去不太穩(wěn),二級(jí)差不多夠用了,至于三級(jí)可能會(huì)影響到系統(tǒng)的性能,而且增加面積,所以看上去沒(méi)什么必要。
兩級(jí)DFF同步器聽(tīng)起來(lái)夠簡(jiǎn)單的吧?這個(gè)方法雖然很簡(jiǎn)單,但是很多人用起來(lái)還是常常會(huì)犯錯(cuò)。
3
錯(cuò)誤1 :時(shí)鐘域A的組合邏輯信號(hào)直接敲兩級(jí)DFF同步到時(shí)鐘域B
如下圖(1)所示雖然時(shí)鐘域A的邏輯信號(hào)c0 傳輸?shù)綍r(shí)鐘域B的時(shí)候,也用了兩級(jí)DFF 同步器,但我們知道組合邏輯電路各個(gè)輸入信號(hào)的不一致性以及組合邏輯內(nèi)部路徑的延時(shí)時(shí)間不一樣,運(yùn)算后的信號(hào)存在毛刺如圖(2),而我們又無(wú)法預(yù)先知道CLKB 的上升沿何時(shí)會(huì)到來(lái),CLKB 采樣到的信號(hào)就無(wú)法預(yù)知,這顯然不是我們想要的結(jié)果。
因此,要想CLKB 能采到穩(wěn)定的信號(hào),時(shí)鐘域A的信號(hào)必須是經(jīng)過(guò)CLKA 敲過(guò),在一個(gè)時(shí)鐘周期內(nèi)是穩(wěn)定的信號(hào),如圖(3)所示:
4
錯(cuò)誤2 :Clock-gating enable 信號(hào)沒(méi)有經(jīng)過(guò)異步處理
在下圖中a_in 信號(hào)經(jīng)過(guò)CLKA的DFF敲過(guò),再送到兩級(jí)DFF 同步器處理,完全沒(méi)毛病。但是F2的使能信號(hào)EN是從時(shí)鐘域A來(lái)的,當(dāng)EN信號(hào)變化的時(shí)候,由于時(shí)鐘域不一樣,無(wú)法保證使能之后的CLKB信號(hào)采樣數(shù)據(jù)時(shí)滿足setup/hold time 要求,這時(shí)F2輸出信號(hào)也就變得無(wú)法預(yù)測(cè)了。
兩級(jí)同步器處理單比特信號(hào)雖然比較簡(jiǎn)單,但還是要注意它的使用方法,不要犯上面的錯(cuò)誤哦。
-
IC
+關(guān)注
關(guān)注
36文章
5990瀏覽量
176344 -
時(shí)鐘域
+關(guān)注
關(guān)注
0文章
52瀏覽量
9582
原文標(biāo)題:IC面試中常被問(wèn)到——跨時(shí)鐘域信號(hào)如何處理?
文章出處:【微信號(hào):icstudy,微信公眾號(hào):跟IC君一起學(xué)習(xí)集成電路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
差分輸入的AD轉(zhuǎn)換芯片如何處理單端輸入的信號(hào)?
AFE5809EVM GUI如何處理低頻信號(hào)?
如何處理溫度傳感器的信號(hào)干擾
LMX2572LP如果輸入是單端信號(hào),OSC_INM不用,應(yīng)該如何處理?
如何處理時(shí)鐘電路的常見(jiàn)故障
請(qǐng)問(wèn)比較器不用的引腳如何處理比較好?
極限失控的大模型使電力系統(tǒng)面臨的跨域攻擊風(fēng)險(xiǎn)及應(yīng)對(duì)措施
FPGA異步信號(hào)處理方法
基于FPGA的多通道高速信號(hào)采集與處理平臺(tái)設(shè)計(jì)方案
![基于FPGA的多通道高速<b class='flag-5'>信號(hào)</b>采集與<b class='flag-5'>處理</b>平臺(tái)設(shè)計(jì)方案](https://file1.elecfans.com/web2/M00/CA/C3/wKgZomYfQIqAXPZdAAAUgtV657I217.png)
介紹一個(gè)IC設(shè)計(jì)錯(cuò)誤案例:可讀debug寄存器錯(cuò)誤跨時(shí)鐘
![介紹一個(gè)IC設(shè)計(jì)錯(cuò)誤案例:可讀debug寄存器錯(cuò)誤<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b>](https://file1.elecfans.com/web2/M00/C4/BB/wKgaomXuuaCAc1UAAAAs-lw8H8Y967.png)
評(píng)論