你的位置:首頁 > 互連技術(shù) > 正文

用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)

發(fā)布時(shí)間:2023-05-23 責(zé)任編輯:lina

【導(dǎo)讀】通常,傳統(tǒng)的雙觸發(fā)器同步器用于同步單比特電平信號。如圖1和圖2所示,觸發(fā)器A和B1工作在異步時(shí)鐘域。CLK_B 時(shí)鐘域中的觸發(fā)器 B1 對輸入 B1-d 進(jìn)行采樣時(shí),輸出 B1-q 有可能進(jìn)入亞穩(wěn)態(tài)。但在 CLK_B 時(shí)鐘的一個(gè)時(shí)鐘周期期間,輸出 B1-q 可能穩(wěn)定到某個(gè)穩(wěn)定值。


常規(guī)二觸發(fā)器同步器

通常,傳統(tǒng)的雙觸發(fā)器同步器用于同步單比特電平信號。如圖1和圖2所示,觸發(fā)器A和B1工作在異步時(shí)鐘域。CLK_B 時(shí)鐘域中的觸發(fā)器 B1 對輸入 B1-d 進(jìn)行采樣時(shí),輸出 B1-q 有可能進(jìn)入亞穩(wěn)態(tài)。但在 CLK_B 時(shí)鐘的一個(gè)時(shí)鐘周期期間,輸出 B1-q 可能穩(wěn)定到某個(gè)穩(wěn)定值。如果 B1 在一個(gè)時(shí)鐘周期內(nèi)沒有穩(wěn)定到穩(wěn)定值,則觸發(fā)器 B2 的輸出可以進(jìn)入亞穩(wěn)態(tài),但是 B2 在一個(gè)完整的目標(biāo)時(shí)鐘周期內(nèi)處于亞穩(wěn)態(tài)的概率非常接近于零。

如果頻率太高,可以使用更多數(shù)量的觸發(fā)器級,因?yàn)檫@將有助于降低同步器輸出保持在亞穩(wěn)態(tài)的可能性。


用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖 2傳統(tǒng) 2FF 同步器的時(shí)序


切換同步器用于將源時(shí)鐘域中生成的脈沖同步到目標(biāo)時(shí)鐘域。不能使用 2 FF 同步器直接同步脈沖。使用 2 FF 同步器從快速時(shí)鐘域同步到慢速時(shí)鐘域時(shí),可能會跳過脈沖,這會導(dǎo)致脈沖檢測丟失,因此依賴于它的后續(xù)電路可能無法正常運(yùn)行。圖 3和圖 4中的圖表顯示了切換同步器的實(shí)現(xiàn)和時(shí)序圖。


用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖 3切換同步器


用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖 4切換同步器的時(shí)序


在基于握手的脈沖同步器中,如圖 5和圖 6所示,通過提供確認(rèn)來保證生成到源時(shí)鐘域的脈沖同步到目標(biāo)時(shí)鐘域。脈沖同步器有一個(gè)限制,即無法處理背對背(一個(gè)時(shí)鐘間隙)脈沖。為了確保源時(shí)鐘域中下一個(gè)生成的脈沖在目標(biāo)時(shí)鐘域中得到明確傳輸和同步,基于握手的脈沖同步器通過對 A1 和 A3 觸發(fā)器輸出進(jìn)行“或”運(yùn)算來生成“忙”信號。因此,產(chǎn)生脈沖的邏輯將不會產(chǎn)生另一個(gè)脈沖,直到 busy 信號被斷言。

基于握手的脈沖同步器的定時(shí)。

當(dāng)多位信號與 2 觸發(fā)器同步器同步時(shí),每個(gè)位都使用單獨(dú)的 2-FF 同步器進(jìn)行同步。亞穩(wěn)態(tài)會導(dǎo)致觸發(fā)器穩(wěn)定為真值或假值。所以每個(gè)同步器的輸出可能不會在同一時(shí)鐘穩(wěn)定到正確的值。這會導(dǎo)致數(shù)據(jù)不一致。為了使用 2 觸發(fā)器同步器方法同步多位信號,必須保證在特定時(shí)鐘周期內(nèi)僅發(fā)生單個(gè)位變化。這可以通過格雷編碼來實(shí)現(xiàn)。因此,例如,在異步FIFO設(shè)計(jì)中,當(dāng)我們使用2-FF同步器在寫時(shí)鐘域中同步轉(zhuǎn)換為灰度值后的讀指針值時(shí),存在亞穩(wěn)態(tài)的可能性。由于格雷編碼只有一位變化,所以即使時(shí)鐘交叉時(shí)存在亞穩(wěn)態(tài),灰色計(jì)數(shù)器值將是以前的值。例如,讀指針(灰度計(jì)數(shù)器)值從 0110 變?yōu)?0111 并與寫時(shí)鐘同步,然后由于亞穩(wěn)態(tài)(如果發(fā)生)可能性是讀指針仍然保持 0110?,F(xiàn)在,假設(shè)較早的 FIFO 滿標(biāo)志在讀灰度時(shí)為高計(jì)數(shù)器值為 0110,然后 FIFO Full 將在 1 個(gè)時(shí)鐘周期內(nèi)保持高電平,但這不會導(dǎo)致問題,因?yàn)樵谙乱粋€(gè)時(shí)鐘周期中,讀指針值將變?yōu)?0111,并且 FIFO 滿標(biāo)志將被置為無效。如果通過兩個(gè)觸發(fā)器同步器將二進(jìn)制計(jì)數(shù)器從一個(gè)時(shí)鐘域取到另一個(gè)時(shí)鐘域而不是灰色計(jì)數(shù)器,則多位更改可能會導(dǎo)致亞穩(wěn)態(tài)后不同位的意外恢復(fù)(例如,值從“1001”變?yōu)椤?010”)。圖 7和圖 8顯示了二進(jìn)制到灰色的轉(zhuǎn)換如何幫助解決這個(gè)問題。


用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖 7多比特信號的格雷編碼


用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖8多比特信號格雷編碼時(shí)序


再循環(huán)多路復(fù)用同步

對于隔離數(shù)據(jù)和多個(gè)位可以同時(shí)傳輸?shù)那闆r,使用圖 9和圖 10中所示的再循環(huán)多路復(fù)用同步技術(shù)。為了同步數(shù)據(jù),當(dāng)數(shù)據(jù)在源觸發(fā)器處可用時(shí),在源時(shí)鐘域中生成控制脈沖。然后根據(jù)源域和目標(biāo)域之間的時(shí)鐘比率,使用 2 個(gè)觸發(fā)器同步器或脈沖同步器(切換或握手)同步控制脈沖。同步控制脈沖用于在目標(biāo)域中對總線上的數(shù)據(jù)進(jìn)行采樣。在目標(biāo)時(shí)鐘域中對其進(jìn)行采樣之前,數(shù)據(jù)應(yīng)該是穩(wěn)定的。

再循環(huán)多路復(fù)用器同步器的定時(shí)。

在這種同步方案中,請求和確認(rèn)機(jī)制用于保證將正確的數(shù)據(jù)采樣到目標(biāo)時(shí)鐘域中,而不管源時(shí)鐘和目標(biāo)時(shí)鐘之間的時(shí)鐘比如何。該技術(shù)主要用于同步不連續(xù)或不頻繁變化的矢量信號。如圖 12所示,數(shù)據(jù)應(yīng)在總線上保持穩(wěn)定,直到從目標(biāo)端接收到同步確認(rèn)信號 (A2-q) 并且 (A2-q) 變低。圖 11中的圖表顯示了此實(shí)現(xiàn),圖 12顯示了握手同步器的時(shí)序。


用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖 11握手同步器

用于多時(shí)鐘域 SoC 和 FPGA 的同步器技術(shù)
圖 12握手同步器的時(shí)序


異步 FIFO 同步

FIFO 是在兩個(gè)異步時(shí)鐘域之間同步不斷變化的矢量數(shù)據(jù)的方式。異步 FIFO 同步器提供跨時(shí)鐘域傳輸矢量信號的解決方案,而不會有亞穩(wěn)態(tài)和相干性問題的風(fēng)險(xiǎn)。

在異步 FIFO 設(shè)計(jì)中,F(xiàn)IFO 提供獨(dú)立于時(shí)鐘頻率的完全同步。如圖13所示,經(jīng)過二進(jìn)制轉(zhuǎn)灰度后,讀寫指針分別同步到寫時(shí)鐘域和讀時(shí)鐘域。


免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理。


推薦閱讀:

微控制器中的看門狗定時(shí)器

BLDC電機(jī)控制一文幫你總結(jié)好

如何利用1200 V EliteSiC MOSFET 模塊,打造充電更快的車載充電器?

采用增強(qiáng)互連封裝技術(shù)的1200 V SiC MOSFET單管設(shè)計(jì)高能效焊機(jī)

小電源,大講究


特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉