跨時鐘域信號同步方法6種_第1頁
跨時鐘域信號同步方法6種_第2頁
跨時鐘域信號同步方法6種_第3頁
跨時鐘域信號同步方法6種_第4頁
跨時鐘域信號同步方法6種_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、跨時鐘域信號同步方法6種asic中心 1 引言    基于fpga的數(shù)字系統(tǒng)設(shè)計中大都推薦采用同步時序的設(shè)計,也就是單時鐘系統(tǒng)。但是實際的工程中,純粹單時鐘系統(tǒng)設(shè)計的情況很少,特別是設(shè)計模塊與外圍芯片的通信中,跨時鐘域的情況經(jīng)常不可避免。如果對跨時鐘域帶來的亞穩(wěn)態(tài)、采樣丟失、潛在邏輯錯誤等等一系列問題處理不當(dāng),將導(dǎo)致系統(tǒng)無法運行。本文總結(jié)出了幾種同步策略來解決跨時鐘域問題。2 異步設(shè)計中的亞穩(wěn)態(tài)    觸發(fā)器是fpga設(shè)計中最常用的基本器件。觸發(fā)器工作過程中存在數(shù)據(jù)的建立(setup)和保持(hold)時間。對于使用上升沿觸發(fā)的觸發(fā)器

2、來說,建立時間就是在時鐘上升沿到來之前,觸發(fā)器數(shù)據(jù)端數(shù)據(jù)保持穩(wěn)定的最小時間。而保持時間是時鐘上升沿到來之后,觸發(fā)器數(shù)據(jù)端數(shù)據(jù)還應(yīng)該繼續(xù)保持穩(wěn)定的最小時間。我們把這段時間成為setup-hold時間(如圖1所示)。在這個時間參數(shù)內(nèi),輸入信號在時鐘的上升沿是不允許發(fā)生變化的。如果輸入信號在這段時間內(nèi)發(fā)生了變化,輸出結(jié)果將是不可知的,即亞穩(wěn)態(tài) (metastability) 圖1    一個信號在過渡到另一個時鐘域時,如果僅僅用一個觸發(fā)器將其鎖存,那么采樣的結(jié)果將可能是亞穩(wěn)態(tài)。這也就是信號在跨時鐘域時應(yīng)該注意的問題。如圖2所示。  

3、0;  信號dat經(jīng)過一個鎖存器的輸出數(shù)據(jù)為a_dat。用時鐘b_clk進行采樣的時候,如果a_dat正好在b_clk的setup-hold時間內(nèi)發(fā)生變化,此時b_ dat就既不是邏輯"1",也不是邏輯"0",而是處于中間狀態(tài)。經(jīng)過一段時間之后,有可能回升到高電平,也有可能降低到低電平。輸出信號處于中間狀態(tài)到恢復(fù)為邏輯"1"或邏輯"0"的這段時間,我們稱之為亞穩(wěn)態(tài)時間。     觸發(fā)器進入亞穩(wěn)態(tài)的時間可以用參數(shù)mtbf(mean time between failu

4、res)來描述,mtbf即觸發(fā)器采樣失敗的時間間隔,表示為: 其中fclock表示系統(tǒng)時鐘頻率,fdata代表異步輸入信號的頻率,tmet代表不會引起故障的最長亞穩(wěn)態(tài)時間,c1和c2分別為與器件特性相關(guān)的常數(shù)。如果mtbf很大,就認為這個設(shè)計在實際工作中是能夠正常運行的,不會因為亞穩(wěn)態(tài)導(dǎo)致整個系統(tǒng)的失效。當(dāng)觸發(fā)器處于亞穩(wěn)態(tài),且處于亞穩(wěn)態(tài)的時間超過了一個時鐘周期,這種不確定的狀態(tài)還會影響到下一級的觸發(fā)器,最終導(dǎo)致連鎖反應(yīng),從而使整個系統(tǒng)功能失常。3 同步策略    在異步設(shè)計中,完全避免亞穩(wěn)態(tài)是不可能的。因此,設(shè)計的基本思路應(yīng)該是:首先盡可能減少出現(xiàn)亞穩(wěn)態(tài)

5、的可能性,其次是盡可能減少出現(xiàn)亞穩(wěn)態(tài)并給系統(tǒng)帶來危害的可能性。以下是根據(jù)實際工作總結(jié)出來的幾種同步策略。3.1電平同步器    為了避免進入亞穩(wěn)態(tài),應(yīng)當(dāng)使參數(shù)mtbf盡可能大。通常采用的方法是雙鎖存器法,即在一個信號進入另一個時鐘域之前,將該信號用兩個鎖存器連續(xù)鎖存兩次(如圖3所示)。理論研究表明這種設(shè)計可以將出現(xiàn)亞穩(wěn)態(tài)的幾率降低到一個很小的程度,但這種方法同時帶來了對輸入信號的一級延時,需要在設(shè)計時鐘的時候加以注意。     對于上面的雙鎖存器法,如果a_clk的頻率比b_clk的頻率高,將可能出現(xiàn)因為dat變化太快,而使

6、b_clk無法采樣的問題。即在信號從快時鐘域向慢時鐘域過渡的時候,如果信號變化太快,慢時鐘將可能無法對該信號進行正確的采樣,所以在使用雙鎖存器法的時候,應(yīng)該使原始信號保持足夠長的時間,以便另一個時鐘域的鎖存器可以正確地對其進行采樣。3.2 邊沿同步器如果我們需要用跳變沿而不是電平又該怎樣處理呢,在電平同步器之后再加一級觸發(fā)器,用第二級觸發(fā)器的輸出和第三級觸發(fā)器的輸出來進行操作。這種結(jié)構(gòu)叫做邊沿同步器。      always (posedge clk)        

7、0;     begin            inputs_reg1 <= inputs;            inputs_reg2 <= inputs_reg1;            inputs_reg3

8、<= inputs_reg2;            if (inputs_reg2 = 1'b1 && inputs_reg3 = 1'b0)            begin             

9、0;   .            end            .      end      以上兩種同步器在慢時鐘域信號同步入快時鐘域時工作的很好,但是反過來的話,可能就工作不正常了。舉一個很簡單的例子,如果被同步的信號脈沖只有一個快時鐘周期寬,且位于慢

10、時鐘的兩個相鄰跳變沿之間,那么是采不到的。這時就需要采用脈沖同步器。這種同步器也是由3個觸發(fā)器組成,同時需要對發(fā)送信號做一些處理。3.3 脈沖同步器脈沖同步器的輸入信號是一個單時鐘寬度脈沖,它觸發(fā)原時鐘域中的一個翻轉(zhuǎn)電路(下圖)。每當(dāng)翻轉(zhuǎn)電路接收到一個脈沖時,它就會在高、低電平間進行轉(zhuǎn)換,然后通過電平同步器到達異或門的一個輸入端,而另一個信號經(jīng)一個時鐘周期的延遲進入異或門的另一端,翻轉(zhuǎn)電路每轉(zhuǎn)換一次狀態(tài),這個同步器的輸出端就產(chǎn)生一個單時鐘寬度的脈沖。圖:脈沖同步器的輸入信號是一個單時鐘寬度脈沖,它觸發(fā)原時鐘域中的一個翻轉(zhuǎn)電路脈沖同步器的基本功能是從某個時鐘域取出一個單時鐘寬度脈沖,然后在新的時

11、鐘域中建立另一個單時鐘寬度的脈沖。脈沖同步器也有一個限制,即輸入脈沖之間的最小間隔必須等于兩個同步器時鐘周期。如果輸入脈沖相互過近,則新時鐘域中的輸出脈沖也緊密相鄰,結(jié)果是輸出脈沖寬度比一個時鐘周期寬。當(dāng)輸入脈沖時鐘周期大于兩個同步器時鐘周期時,這個問題更加嚴重。這種情況下,如果輸入脈沖相鄰太近,則同步器就不能檢測到每個脈沖。3.4 結(jié)繩法    由于雙鎖存器法在快時鐘域向慢時鐘域過渡中可能存在采樣失效的問題,我們引入了一種安全的跨時鐘域的方法:結(jié)繩法。結(jié)繩法適合任何時鐘域的過渡(clk1,clk2的頻率和相位關(guān)系可以任意選定),如圖4所示。  

12、;   圖4中的_clk1表示該信號屬于clk1時鐘域,_clk2的信號表示該信號屬于clk2時鐘域。在兩次src_req_clk1之間被src_vld_clk1結(jié)繩(pluse2toggle)。將src_vld_clk1用雙鎖存器同步以后,該信號轉(zhuǎn)換為dst_req_clk2(toggle2pluse)。同理,用dst_vld_clk2將dat_req_clk2結(jié)繩,dst_vld_clk2表明在clk2時鐘域中,src_dat_clk1已經(jīng)可以進行正確的采樣了。最后將dst_vld_clk2轉(zhuǎn)換為dst_ack_clk1(synchronizer and toggle2

13、pluse)。dst_ack_clk1表明src_dat_clk1已經(jīng)被clk2正確采樣了,此后clk1時鐘域就可以安全地傳輸下一個數(shù)據(jù)了。可以看出,結(jié)繩法的關(guān)鍵是將信號結(jié)繩以后,使其保持足夠長的時間,以便另一個時鐘可以正確采樣。圖5描述了結(jié)繩法的具體實現(xiàn),主要包括3個基本單元:pluse2toggle、synchronizer和toggle2pluse。     pluse2toggle模塊負責(zé)將兩個脈沖信號結(jié)繩,即將單脈沖信號延長;synchronizer模塊用雙鎖存器法將得到的信號過渡到另一個時鐘域;toggle2pluse模塊與pluse2tog

14、gle功能相對,即將延長的脈沖信號還原為單脈沖,這里用到了異或門。整體的設(shè)計思想就是用pluse2toggle將信號延長,用synchronizer過渡,再用toggle2pluse還原,以保證另一個時鐘域可以正確采樣,而接收方用相反的流程送回響應(yīng)信號。    結(jié)繩法可以解決快時鐘域向慢時鐘域過渡的問題,且適用的范圍很廣。但是結(jié)繩法實現(xiàn)較復(fù)雜,在設(shè)計要求較高的場合應(yīng)該慎用。3.5 握手協(xié)議在許多應(yīng)用中,跨時鐘域傳送的不只是簡單的信號,數(shù)據(jù)總線、地址總線和控制總線都會同時跨域傳輸。工程師們用一些其它的手段來處理這些情況,如握手協(xié)議等。當(dāng)幾個電路不能預(yù)知相互的響應(yīng)時間

15、時,握手方法能讓數(shù)字電路間實現(xiàn)有效的通信。例如,仲裁總線結(jié)構(gòu)可以讓一個以上的電路請求使用單個的總線,用仲裁方法來決定哪個電路可以獲得總線的訪問權(quán),例如 pci 或 amba(高級微控制器總線架構(gòu))。每個電路都發(fā)出一個請求信號,由仲裁邏輯決定誰是“贏家”。獲勝的電路會收到一個應(yīng)答,表示它可以訪問總線。該電路于是中斷請求,開始使用總線。不同時鐘域電路使用的握手協(xié)議有兩種基本類型:全握手(full-handshake)和部分握手(partial-handshake)。每種類型的握手都要用同步器,每種都各有自己的優(yōu)缺點。對全握手信號,雙方電路在聲明或中止各自的握手信號前都要等待對方的響應(yīng)(圖 4)。首

16、先,電路 a 聲明它的請求信號,然后,電路 b 檢測到該請求信號有效后,聲明它的響應(yīng)信號。當(dāng)電路 a 檢測到響應(yīng)信號有效后,中止自己的請求信號。最后,當(dāng)電路 b 檢測到請求無效后,它中止自己的響應(yīng)信號。除非電路 a 檢測到無效的響應(yīng)信號,否則它不會再聲明新的請求信號。圖4,對全握手信號,雙方電路在聲明或中止各自的握手信號前都要等待對方的響應(yīng)。這種類型的握手使用了電平同步器。設(shè)計人員將這種技術(shù)用在如下情況:響應(yīng)電路(電路 b)需要告知請求電路(電路 a)它可以處理請求。這種握手方法要求請求電路延遲它的下一個請求,直到它檢測到響應(yīng)信號無效??梢杂媒?jīng)驗估算法判斷這個協(xié)議的時序:信號跨越一個時鐘域要花

17、兩個時鐘周期的時間,信號在跨越多個時鐘域前被電路寄存。全部的時間序列是:a 時鐘域中最多五個周期加上 b 時鐘域最多六個周期。全握手類型很強健,因為通過檢測請求與響應(yīng)信號,每個電路都清楚地知道對方的狀態(tài)。這種方式的不足之處是完成所有交互的整個過程要花費很多時鐘周期。另一種類型是部分握手,它可以縮短這些事件的過程。使用部分握手信號時,通信雙方的電路都不等對方的響應(yīng)就中止各自的信號,并繼續(xù)執(zhí)行握手命令序列。部分握手類型比全握手類型在健壯性方面稍弱,因為握手信號并不指示各自電路的狀態(tài),每一電路都必須保存狀態(tài)信息(在全握手信號里這個信息被送出去)。但是,由于無需等待其它電路的響應(yīng),完整的事件序列花費時

18、間較少。當(dāng)使用部分握手信號方式時,響應(yīng)的電路必須以正確的時序產(chǎn)生它的信號。如果響應(yīng)電路要求先處理完一個請求,然后才能處理下一個請求,則響應(yīng)信號的時序就很重要。電路用它的響應(yīng)信號來指示它的處理任務(wù)何時完成。一種部分握手方法混合了電平與脈沖信號,而其它的方法則只使用脈沖信號。在第一種部分握手方法中,電路 a 以有效電平聲明其請求信號,電路 b 則以一個單時鐘寬度脈沖作為響應(yīng)。此時,電路 b 并不關(guān)心電路 a 何時中止它的請求信號。但為了使這種方法成立,電路 a 中止請求信號至少要有一個時鐘周期長,否則,電路 b 就不能區(qū)別前一個請求和新的請求。在這種握手方式下,電路 b 為請求信號使用一個電平同步

19、器,電路 a 為響應(yīng)信號使用一個脈沖同步器。只有當(dāng)電路 b 檢測到請求信號時才發(fā)出響應(yīng)脈沖。這種情況可以使電路 a 通過控制其請求信號的時序,控制同步器接收到的脈沖間隔(圖 5)。同樣可以用經(jīng)驗估算法確定時序,即信號跨越一個時鐘域要花兩個時鐘周期并且在跨越時鐘域前被電路寄存。圖5,在一種部分握手方法中,電路 a 發(fā)出它的請求信號,電路 b 則以一個單時鐘寬度脈沖作為響應(yīng)。全部的序列為 a 時鐘域最多三個周期加上 b 時鐘域最多五個周期。這種部分握手方法比全握手方法在 a、b 兩個時鐘域分別少用了兩個和一個時鐘周期。如果采用第二種部分握手方法可以再減少一些時鐘周期,此時電路 a 用一個單時鐘寬度

20、脈沖發(fā)出它的請求,而電路 b 也用一個單時鐘寬度脈沖響應(yīng)這個請求。這種情況下,兩個電路都需要保存狀態(tài),以指示請求正待處理。圖6,這種握手類型使用的是脈沖同步器,但如果其中一個電路時鐘比另一個電路時鐘快兩倍,則可以用邊沿檢測同步器來代替。這種握手類型使用的是脈沖同步器,但如果其中一個電路時鐘比另一個電路時鐘快兩倍,則可以用邊沿檢測同步器來代替(圖 6)。完整的時序是:a 時鐘域最多兩個周期加上 b 時鐘域最多三個周期。所以這種部分握手技術(shù)與全握手方法相比,在 a 時鐘域少用三個時鐘周期,在 b 時鐘域也少用三個時鐘周期。同時,也比第一種部分握手方法分別在 a、b 時鐘域快了一個和兩個周期。這些握

21、手協(xié)議針對的都是跨越時鐘域的單一信號。但當(dāng)幾組信號要跨越時鐘域時,設(shè)計人員就需要使用更加復(fù)雜的信號傳送方法。3.6 異步fifo在現(xiàn)代的集成電路芯片中,隨著設(shè)計規(guī)模的不斷擴大,一個系統(tǒng)中往往含有數(shù)個時鐘。多時鐘域帶來的一個問題就是,如何設(shè)計異步時鐘之間的接口電路。異步 fifo(first in first out)是解決這個問題一種簡便、快捷的解決方案。使用異步fifo可以在兩個不同時鐘系統(tǒng)之間快速而方便地傳輸實時數(shù)據(jù)。在網(wǎng)絡(luò)接口、圖像處理等方面, 異步fifo得到了廣泛的應(yīng)用。異步fifo是一種先進先出的電路,使用在需要產(chǎn)時數(shù)據(jù)接口的部分,用來存儲、緩沖在兩個異步時鐘之間的數(shù)據(jù)傳輸。在異步

22、電路中,由于時鐘之間周期和相位完全獨立,因而數(shù)據(jù)的丟失概率不為零。由圖1可以看出:整個系統(tǒng)分為兩個完全獨立的時鐘域讀時鐘域和寫時間域;fifo的存儲介質(zhì)為一塊雙端口ram,可以同時進行讀寫操作。在寫時鐘域部分,由寫地址產(chǎn)生邏輯產(chǎn)生寫控制信號和寫地址;讀時鐘部分由讀地址產(chǎn)生邏輯產(chǎn)生讀控制信號和讀地址。在空/滿標(biāo)志產(chǎn)生部分,由讀寫地址相互比較產(chǎn)生空/滿標(biāo)志。設(shè)計異步fifo有兩個難點:一是如何同步異步信號,使觸發(fā)器不產(chǎn)生亞穩(wěn)態(tài);二是如何正確地設(shè)計空、滿以及幾乎滿等信號的控制電路。3.6.1 亞穩(wěn)態(tài)問題的解決在數(shù)字集成電路中,觸發(fā)器要滿足setup/hold的時間要求。當(dāng)一個信號被寄存器鎖存時,如果

23、信號和時鐘之間不滿足這個要求,q端的值是不確定的,并且在未知的時刻會固定到高電平或低電平。這個過程稱為亞穩(wěn)態(tài)(metastability)。圖2所示為異步時鐘和亞穩(wěn)態(tài),圖中clka和clkb為異步時鐘。亞穩(wěn)態(tài)必定會發(fā)生在異步fifo中。圖中在異步fifo中,電路外部的輸入和內(nèi)部的時鐘之間是毫無時間關(guān)系的,因此setup/hold沖突是必然的;同在電路內(nèi)部的兩個沒有關(guān)系的時鐘域之間的信號傳遞,也必須會導(dǎo)致setup/hold沖突。雖然亞穩(wěn)態(tài)是不可避免的,但是,下面的設(shè)計改進可以將其發(fā)生的概率降低到一個可以接受的程度。對寫地址/讀地址采用格雷碼。由實踐可知,同步多個異步輸入信號出現(xiàn)亞穩(wěn)態(tài)的概率遠遠大于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論