FPGA設計跨時鐘域的同步策略_第1頁
FPGA設計跨時鐘域的同步策略_第2頁
FPGA設計跨時鐘域的同步策略_第3頁
FPGA設計跨時鐘域的同步策略_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、間內發(fā)生變化,此時b_ dat就既不是邏輯1,也不是邏輯0,而是處于中間狀態(tài)。經(jīng)過一段時間之后,有可能上升到高電平,也有可能降低到低電平。輸出信號處于中間狀態(tài)到恢復為邏輯1或邏輯0的這段時間,我們稱之為亞穩(wěn)態(tài)時間。 觸發(fā)器進入亞穩(wěn)態(tài)的時間可以用參數(shù)MTBF(Mean Time Between Failures)來描述,MTBF即觸發(fā)器采樣失敗的時間間隔,表示為: 其中fclock表示系統(tǒng)時鐘頻率,fdata代表異步輸入信號的頻率,tmet代表不會引起故障的長亞穩(wěn)態(tài)時間,C1和C2分別為與器件特性相關的常數(shù)。如果MTBF很大,就認為這個設計在實際工作中是能夠正常運行的,不會因為亞穩(wěn)態(tài)導致整個系統(tǒng)

4、的失效。當觸發(fā)器處于亞穩(wěn)態(tài),且處于亞穩(wěn)態(tài)的時間超過了一個時鐘周期,這種不確定的狀態(tài)還會影響到下的觸發(fā)器,終導致連鎖反應,從而使整個系統(tǒng)功能失常。 3 同步策略 在異步設計中,完全防止亞穩(wěn)態(tài)是不可能的。因此,設計的基本思路應該是:首先盡可能減少出現(xiàn)亞穩(wěn)態(tài)的可能性,其次是盡可能減少出現(xiàn)亞穩(wěn)態(tài)并給系統(tǒng)帶來危害的可能性。以下是根據(jù)實際工作總結出來的幾種同步策略。 3.1 雙鎖存器法 為了防止進入亞穩(wěn)態(tài),應當使參數(shù)MTBF盡可能大。通常采用的方法是雙鎖存器法,即在一個信號進入另一個時鐘域之前,將該信號用兩個鎖存器連續(xù)鎖存兩次(如圖3所示)。理論研究說明這種設計可以將出現(xiàn)亞穩(wěn)態(tài)的幾率降低到一個很小的程度,

5、但這種方法同時帶來了對輸入信號的延時,需要在設計時鐘的時候加以注意。 對于上面的雙鎖存器法,如果a_clk的頻率比b_clk的頻率高,將可能出現(xiàn)因為dat變化太快,而使b_clk無法采樣的問題。即在信號從快時鐘域向慢時鐘域過渡的時候,如果信號變化太快,慢時鐘將可能無法對該信號開展正確的采樣,所以在使用雙鎖存器法的時候,應該使原始信號保持足夠長的時間,以便另一個時鐘域的鎖存器可以正確地對其開展采樣。 3.2 結繩法 由于雙鎖存器法在快時鐘域向慢時鐘域過渡中可能存在采樣失效的問題,我們引入了一種安全的跨時鐘域的方法:結繩法。結繩法適合任何時鐘域的過渡(clk1,clk2的頻率和相位關系可以任意選定

6、),如圖4所示。 圖4中的_clk1表示該信號屬于clk1時鐘域,_clk2的信號表示該信號屬于clk2時鐘域。在兩次src_req_clk1之間被src_vld_clk1結繩(Pluse2Toggle)。將src_vld-clk1用雙鎖存器同步以后,該信號轉換為dst_req_clk2(Toggle2Pluse)。同理,用dst_vld_clk2將dat_req_clk2結繩,dst_vld_clk2說明在clk2時鐘域中,src_dat_clk1已經(jīng)可以開展正確的采樣了。將dst_vld_clk2轉換為dst_ack_clk1(Synchronizer and Toggle2Pluse)。

7、dst_ack_clk說明src_dat_clk1已經(jīng)被clk2正確采樣了,此后clk1時鐘域就可以安全地傳輸下一個數(shù)據(jù)了。可以看出,結繩法的關鍵是將信號結繩以后,使其保持足夠長的時間,以便另一個時鐘可以正確采樣。圖5描述了結繩法的具體實現(xiàn),主要包括3個基本單元:Pluse2Toggle、Synchronizer和Toggle2Pluse. Pluse2Toggle模塊負責將兩個脈沖信號結繩,即將單脈沖信號延長;Synchronizer模塊用雙鎖存器法將得到的信號過渡到另一個時鐘域;Toggle2Pluse模塊與Pluse2Toggle功能相對,即將延長的脈沖信號復原為單脈沖,這里用到了異或門。整體的設計思想就是用Pluse2Toggle將信號延長,用Synchronizer過渡,再用Toggle2Pluse復原,以保證另一個時鐘域可以正確采樣,而接收方用相反的流程送回響應信號。 結繩法可以解決快時鐘域向慢時鐘域過渡的問題,且適用的范圍很廣。但是結繩法實現(xiàn)較復雜,在設計要求較高的場合應該慎用。 4 結束語 本文

溫馨提示

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

評論

0/150

提交評論