【摘要】本文針對多時鐘域下的片上網絡在跨時鐘域傳輸數據時所遇到的問題進行分析,并探討其解決的方法。同時對異步時鐘的數據同步的幾種主要方法(同步器,握手傳輸,格雷碼傳輸等)進行仿真驗證和功能比較。
【關鍵詞】片上網絡;多時鐘域;數據同步法
1.引言
片上網絡是一種新的片上互連結構。使用片上網絡作為片上互連結構的微系統芯片稱為片上網絡系統。由于片上網絡本身就是全局異步而局部同步的,片上網絡中存在多個時鐘域,不同時鐘域之間采用的是異步通信。數據在不同時鐘域之間傳輸時,由于時鐘頻率的不同,勢必會出現亞穩態等數據傳輸錯誤的問題。
2.亞穩態現象
當觸發器或鎖存器無法在時序要求的規定時間段內達到一個確定的狀態 [1]時就會出現亞穩態,引起整個系統的功能混亂,傳輸的數據也會出現復寫現象甚至直接丟失數據。
亞穩態出現后,也就意味著觸發器的輸出達到一個穩定的低電平或者高電平狀態所需要的時間大于從時鐘到輸出的時間。觸發器的輸出在進入亞穩態后的這段時間內將在低電平0和高電平1之間來回一段時間。此時既無法預測何時才能將輸出穩定在某一正確的電平上,也無法預測輸出電平。這段時間稱為判決時間(Resolution Time),這之后輸出與輸入沒有必然的聯系,最后輸出的是0還是1,結果都是無法預測的。
亞穩態還會嚴重破壞系統的穩定性。由于輸出的信號在穩定前出現的固定的某一電壓值,毛刺或振蕩可能會導致邏輯上的誤判。更嚴重的是,亞穩態所產生的數據傳輸失真還會使下一級也產生亞穩態,導致連鎖反應,即亞穩態的傳播,進而引起整個系統的功能混亂,擴大故障面。
另外,處在亞穩態時,電源干擾,環境噪聲,工作溫度等細微的擾動都有可能造成更惡劣的狀態,這時系統數據傳輸的延遲增大,狀態輸出錯誤。
究其因,亞穩態主要是由于保持時間Thold或建立時間Tset在第一級的觸發器中發生沖突所導致的。
對于使用上升沿觸發的觸發器來說,Thold就是觸發器的數據端數據在時鐘上升沿到來之后能夠繼續保持穩定的最小時間[2]。而Tset則是觸發器的數據端數據在時鐘的上升沿到來之前保持穩定的最小時間。數據的Thold與Tset都是觸發器的基本參數。同時觸發器還是數字電路設計中最常用的基本時序元件。為確保觸發器的正常工作以及操作的可靠性,輸入的信號必須在其工作過程中的觸發器的Tset之前保持穩定,并且一直持續到觸發器的Thold才能發生改變,這就是必須滿足的數據建立時間與保持時間的約束。如果這種約束得不到滿足(如時序的余量不夠),使電路中的輸入電平無法上升或下降到所需要的邏輯電平1或0,觸發器就會進入到某個不確定的狀態——亞穩態[3]。如圖1所示:
圖1 亞穩態產生示意圖
圖1中,tres為判決時間,tnet是從第一級觸發器輸出端到第二級觸發器輸入端的延時,tw表示的是觸發器的輸入數據變化可能導致亞穩態發生的窗口。這個窗口由Thold和Tset兩部分組成。tco為輸出相對于時鐘沿的一個延遲時間,th是觸發器Thold ,ts表示的是觸發器的Tset。
3.多時鐘域數據傳輸的同步方法討論
當片上網絡系統中出現有兩個甚至兩個以上的非同源時鐘時,傳輸數據的Tset和Thold都很難得到保證。通常是對多時鐘域下各個模塊之間的接口部分做同步化處理,這樣才能更好的避免亞穩態的出現,這就要求同步化所有的非同源時鐘。
常用的同步化方案很多,而且各有特點。針對不同的傳輸數據類型,多時鐘域下的數據傳輸應該采用不同的傳遞方案,以盡量滿足可靠傳輸的需要。
3.1 同步器
在異步時鐘域之間,為避免亞穩態的發生,通常是使用一系列的寄存器鏈來實現同步,這類寄存器鏈被稱作同步器。其中寄存器到寄存器路徑上的時序裕量可以為潛在的亞穩態到達電路的其他部位提供一些判決時間,以便能達到穩定的值。這可防止第一級寄存器中出現的亞穩態在下一級寄存器里傳播。
一般來說,同步器的功能是對異步的輸入信號進行采樣,使其產生的輸出信號能夠滿足系統對建立時間和保持時間的要求,進而抑制住亞穩態對電路的影響。
對于控制信號的多時鐘域數據傳輸來說,比較常用的同步策略是兩級觸發器同步,即一個信號要進入下一個時鐘域之前,先用下一個時鐘域的時鐘進行兩次寄存。這種設計也叫做雙跳技術,是其他同步器的基礎。在設計時,應注意把這兩個寄存器放置的盡可能的靠近,以確保兩者之間的時滯最小。從上個時鐘域傳來的異步數據不需要通過時鐘域間的任何組合邏輯,在離開該時鐘域后就直接進入到兩個時鐘域之間的同步器中。這是一個不容忽視的條件。因為數據在通過時鐘域之間的組合邏輯時,很有可能會產生各種毛刺等,而這些毛刺很容易被同步器中的寄存器感應到,甚至如果有滿足保持時間/建立時間的約束的毛刺,同步器中的寄存器很有可能會把毛刺當做正常傳輸的數據而進行數據采集,這樣在發送給下一個時鐘域時會得到一個完全錯誤的數據。如圖2所示。
圖2 兩級同步器
在圖2中,左邊所示為異步的輸入端,經過兩級觸發器的采樣后,在右邊輸出與時鐘clock2同步。此時經過兩級觸發器后產生的同步信號已經基本沒有亞穩態了[4-6]。
其原因是,經過一個時鐘周期后,即使在第一個觸發器的輸出端存在有亞穩態,但在第二個觸發器輸入端的輸入電平,其尚未穩定的概率非常小,因此在第二個觸發器輸出端基本不會產生亞穩態。
可見,用兩級寄存器采樣可有效地減少亞穩態繼續傳播的概率。但是并不能完全保證第二個觸發器輸出的電平就是正確的電平。如上文所述,經過判決時間(Resolution Time)后的寄存器輸出電平是一個不確定的穩態值,即是說明兩級觸發器的處理方法不能完全排除錯誤的采樣。這就要求系統對采樣錯誤能夠有一定程度的容忍度,比如有些系統本身就對錯誤的采樣不敏感。但是對有些比較敏感的系統,可以使用糾錯編碼的手段完成錯誤采樣的糾正。
同步器使用的觸發器一般是D觸發器。使用同步器的目的是采樣異步的輸入信號,并產生同時滿足同步系統Tset和Thold要求的輸出信號。
在涉及多時鐘域的數據傳輸問題時,設計的基本思路只能是盡可能的減少亞穩態出現的概率。因為要想完全消除亞穩態是不可能的。
如果同步器的設計無法滿足實際的需求,為了給電路從亞穩態中恢復過來提供時間,可適當的增加一些同步寄存器鏈中的寄存器。一個有效的數據信號在同步器中只需要通過兩個時鐘周期就可以達到下一個時鐘域。在設計時還要考慮同步延遲對跨時鐘域的信號時序造成的影響,因同步器降低亞穩態對電路的影響是以犧牲時間為代價的。
使用上述兩級同步器法的缺點是一般只應用于同步控制信號,例如單根的數據傳輸,而且只適合一些不太追求性能的場合。當進行多位的總線數據傳輸時,每一個數據傳輸到下一寄存器的時間都無法同步。于是在通過二級寄存器同步后,很有可能出現一些數據與前一個時鐘域的時鐘同步時,另一些數據則與當前時鐘域的時鐘同步的情況。這樣傳輸數據時就會造成數據傳輸失真,并出現時鐘的偏移。如使用兩級同步器方法從快時鐘域向慢時鐘域進行傳輸數據,就會丟失數據。因此這種方法只能用于從慢時鐘域向快時鐘域傳輸數據。但如是從慢時鐘域向快時鐘域傳輸單根的數據信號,上述方法則是最適用的,電路結構和代碼的編寫都相對比較簡單有效,并且傳輸的效率高。
3.2 握手傳輸
握手傳輸是一種通用且簡單的同步策略,是通過握手信號來進行不同時鐘域之間的數據傳輸的一種方法,能有效的實現總線數據的跨時鐘域通信。這種方法非常廣泛的應用于各類通信系統中,能在避免亞穩態的同時正確的捕獲總線數據。
使用握手傳輸處理跨時鐘域下的數據傳輸時,雙方都要先等待對方的信號響應[7-9]之后才能中止或聲明各自的握手信號,并且需要分別用脈沖檢測的方法對雙方的握手信號進行同步。
假設用握手傳輸的方式從系統X向系統Y傳送數據,Req和Ack分別是這兩個系統使用的握手信號。但由于這兩個系統發送的握手信號,都需要使用另一個系統的時鐘來采樣,這樣兩個系統的保持時間和建立時間都無法得到滿足,這樣就會導致亞穩態的出現。因此這種過于直接的處理跨時鐘域數據傳輸的方法是很容易產生亞穩態的。
這時就需要把兩個異步時鐘域的握手信號在自己的本地時鐘域中先進行同步,該同步通常是使用兩級的觸發器,這樣才能有效的避免亞穩態的出現。做法是,只需對雙方的請求信號和應答信號分別進行同步和脈沖檢測,就能使每個時鐘域都清楚的知道對方處在什么狀態。全部的時序是:在第一個時鐘域中最多五個時鐘周期,再加上下一個時鐘域最多六個時鐘周期。但是信號經過一個時鐘域要花費兩個時鐘周期的時間,而控制信號的握手檢測會耗費雙方較多的時間。由此,要完成所有的交互,整個過程將會花費很多的時鐘周期,這反而降低了傳輸的速率。
握手傳輸彌補了同步器傳輸的不足,滿足了從快時鐘域向慢時鐘域進行的傳輸,而且多位數據的傳輸也可以完成。但是,該方法最大缺點就是延遲。傳輸數據時用到的控制信號越多,數據傳遞過程中的延遲就越大。并且此法犧牲了快時鐘域的性能,很難實時傳輸數據,往往傳輸一次數據就要用到多個時鐘周期,這樣導致的后果是降低了整個系統的效率。因此,該方法適用于數據的可靠性較高、系統結構比較簡單、從快時鐘域向慢時鐘域進行多位數據的傳輸、而對傳輸的性能要求不高等情況。
3.3 格雷碼傳輸
當讀寫地址指針在異步時鐘域間傳輸時,我們采用格雷碼數據傳輸的方式,把二進制形式的讀寫地址指針轉換為格雷碼形式的指針,這樣就能夠進一步減小亞穩態發生的概率。
格雷碼數據傳輸主要是希望在傳輸數據遞增或遞減時,利用格雷碼來保證只有一位數據進行翻轉。這樣再通過同步器進行跨時鐘域數據傳輸時就不會有數據發生錯誤。格雷碼數據傳輸在處理跨時鐘域數據傳輸時利用了格雷碼對同步器傳輸方法進行了優化。
格雷碼數據傳輸先將二進制的數據均轉換為格雷碼后再進行跨時鐘域數據傳輸,數據通過多位的觸發器、同步器被直接傳輸至下一個時鐘域,在下一個時鐘域里再將數據從格雷碼還原成原來的二進制,就可以繼續使用了。
同步多個異步的輸入信號時,據實踐可知,同步一個異步信號的幾率遠遠小于出現亞穩態的幾率。而格雷碼是最小的距離碼,在遞增或遞減時只需要改變相鄰碼元中的一位。產生的地址指針如果使用格雷碼來遞增或遞減,只需用到一個同步器發揮同步作用,每次也就只需要改變其中一位。因此有著較小的出現亞穩態或數據錯誤的概率。這樣,讀/寫地址的多時鐘域數據傳輸往往采用格雷碼,可以十分有效的減少亞穩態的發生,提高同步的效果。
由于過多的計數器位數會大大增加轉化計數值的電路規模,因此格雷碼的方法只能應用于位數不是很高的二進制連續遞增或遞減的計數器的傳輸。傳輸速度較高,而且結構簡單。同時,該方法也適合從慢時鐘域向快時鐘域傳輸數據的情況。
4.多時鐘域同步方法的對比仿真驗證
此處仿真均使用Multisim 10.0作為仿真軟件。
4.1 兩級同步器仿真
本文在Multisim 10中進行原理圖繪制時,Multisim 10不似PSPICE的仿真那樣有專門的時鐘發生器8284A。所以使用了信號發生器發送方波以模擬時鐘信號。此電路需要三塊D觸發器芯片,本文選擇了74HC74的D觸發器芯片。由于74HC74是維持阻塞D觸發器,即觸發器除了數據輸入端,時鐘輸入端之外,還帶有SD—L置1端和RD—L復位置0端。SD—L和RD—L均為低電平有效,且不依賴于時鐘輸入。因此,要使D觸發器正常工作,就要把SD—L和RD—L接高電平。
設計方案如圖3所示。
在多時鐘域下片上網絡的實際應用中,時鐘的單位幾乎都是以MHz計的,此處為了方便于仿真及結果的顯示,采用以Hz為單位的信號進行時鐘的仿真。本文先以測試信號200Hz,第一個時鐘600Hz,第二個時鐘400Hz為基礎仿真。
將測試信號data輸入第一個觸發器,與第一個時鐘aclk進行同步,得到同步信號adat。圖4即是與第一個時鐘同步的波形圖。顯示了與之同步時的輸入輸出。
圖4 第一個時鐘同步波形圖
之后,與第一個時鐘同步后的信號adat被送入第二級的兩個觸發器,與第二個時鐘bclk進行同步。最后得到同步信號bdat2。圖5即是與第二個時鐘同步的波形圖。顯示了同步信號adat,第二個時鐘bclk以及最后同步的輸出bdat2。
圖5 第二個時鐘同步波形圖
由圖5的仿真可看出,adat的脈沖必須比bclk的脈沖寬,否則同步器不會接收到正確的信號,也不能進行正常的仿真。圖6即是在上圖的數據基礎上進行了修改,使adat的脈沖寬度小于bclk的脈沖寬度,由此得到的結果,可以看出,此時的同步是失敗的。
圖6 adat 脈沖寬度小于bclk 脈沖寬度的同步波形圖
對片上網絡來說,一般都是以MHz作為其時鐘頻率單位。因此再對電路賦以高頻率的信號進行仿真。測試信號,第一個同步的時鐘和第二個時鐘分別取2MHz,6MHz,4MHz的值。圖7即是在邏輯分析儀里進行的仿真。同時包括了第一次同步和第二次同步的結果。
圖7 高頻率仿真結果
由圖7可知,在高頻率下的同步不是很規范,和低頻率的相比有時間上的延時。但是總的來說是完成了同步的。
除了有兩級同步器這個基本方法外,還有鎖定同步器和結繩同步器兩種改進的同步方法。
4.2 鎖定法仿真
鎖定法仿真相對兩級觸發器仿真更具針對性。鎖定法是專門針對從快時鐘域向慢時鐘域過渡的信號。以測試信號來說,由于兩個時鐘域之間的頻率快慢差異太大,當它從快時鐘域傳遞到慢時鐘域時,過快的變化,可能會導致采樣無法正常進行。
對于同步鎖高電平1的鎖定法電路來說,使用了二選一的數據選擇器,在慢時鐘域采樣來自快時鐘域的測試信號前鎖定測試信號。而給快時鐘域輸入一個理應是高電平的值,以此檢驗是否能正確的采樣。直至輸出穩定的高電平,證明電路穩定,采樣能正常進行后,再解除鎖定,送入測試信號完成同步。如圖8所示。
本文采用74HC157的四路二選一數據選擇器。將理應是高電平的一端輸入數據選擇器的1A端,而需要同步的測試信號輸入1B端。而控制選擇端則是由高電平和一個開關連接。經試驗證明,將開關斷開時,數據選擇器輸出1A端的數據。而閉合開關使之與高電平連通時選擇1B端。其余的觸發器均選擇74HC74的D觸發器芯片。同樣要將SD—L置1端和RD—L復位置0端接上高電平,以使電路正常運行。
圖8 同步鎖高電平1電路原理圖
圖9是此電路的電路圖。
本文選擇模擬輸入200Hz的測試信號data和2KHz的第一個時鐘信號以及300Hz的第二個時鐘信號。由于剛開始時鎖定了測試信號,所以一開始輸入的是data0。圖10即是此信號與快時鐘的同步。顯示了同步時的輸入輸出波形。
圖10 鎖定信號下的快時鐘同步
如圖11所示,剛開始data0并沒有獲得應得的高電平,而是不穩定的波形,直到穩定后才輸出正確的波形。
之后,一方面dat1通過了慢時鐘的兩個觸發器得到了輸出,另一方面,這個輸出又經過兩個快時鐘的觸發器返回,與第一個快時鐘輸出dat1的相反值進行求或運算。得到那個理應是高電平的值繼續送入快時鐘中,直到輸出應得的高電平。圖11是鎖定信號時與慢時鐘的同步。
圖11 鎖高信號下的慢時鐘同步
可見,一開始得到的輸出并不是應得的高電平,直到穩定后才會有高電平輸出。
輸出穩定的高電平后,即可改變控制選擇端——選擇輸入要同步的測試信號data。如圖12所示:
圖12 穩定后的快時鐘同步
與快時鐘同步后的信號dat1繼續與慢時鐘進行同步。圖13即為dat1與慢時鐘bclk同步的波形。
圖13 穩定后的慢時鐘同步
下面對此電路進行高頻率下的仿真。測試信號取2MHz,快慢兩個時鐘分別取20MHz和3MHz。圖14是鎖定信號,輸入data0時的波形圖,包括了第一次同步和第二次同步的輸入輸出波形。
圖14 高頻率下鎖定信號時的仿真結果
而圖15則是穩定輸出高電平后釋放鎖定,輸入data時的仿真結果。
圖15 高頻率下釋放信號后的仿真結果
如上所述,既然有同步鎖高電平1電路,就會有同步鎖低電平電路。其原理圖(圖16)和電路圖(圖17)的基本原與和同步鎖高電平1電路一樣,只不過在鎖定時,不是通過或門輸入高電平,而是用與門輸入低電平來進行檢驗。
此電路的仿真數據均采用同步鎖高電平1電路的數據。由于剛開始會出現采樣錯誤,所以此電路同樣是先鎖定測試信號,即輸入理應是低電平的信號data0。
若是data0以及輸出都正確的輸出了低電平,那么便表示開始了正確的同步。圖18是data0信號輸入快時鐘時的輸入輸出波形。
圖18 鎖定信號下的快時鐘同步
圖19是將上圖的輸出dat1輸入到慢時鐘域時得到的輸入輸出波形,可以看出,穩定后,其輸出dat2最終趨于了低電平。
得到穩定的低電平輸出后,就可控制數據選擇器,選擇測試信號輸入。
圖19 鎖定信號下的慢時鐘同步
圖20是改為測試信號data輸入后,通過快時鐘aclk的輸入輸出波形。圖21是經過了快時鐘同步后的輸出dat1通過慢時鐘bclk同步時的輸入輸出波形。
圖20 穩定后的快時鐘同步
圖21 穩定后的慢時鐘同步
用與同步鎖高電平1電路相同的數據進行高頻率下的仿真。即把2MHz、20MHz、3MHz等分別賦值給測試信號——快時鐘和慢時鐘。圖22和圖23分別是電路在一開始鎖定信號時和釋放鎖定后的仿真波形。包括了兩次同步時的輸入輸出波形。
圖22 高頻率下鎖定信號時的仿真結果
圖23 高頻率下釋放信號后的仿真結果
同步低電平0電路和同步鎖高電平1電路一樣,都防止了測試信號從快時鐘域過渡至慢時鐘域時所出現的錯誤采樣。而鎖定測試信號,利用一個已知的高電平或低電平,去檢測電路,直至其穩定,才將測試信號送入電路,就可避免不必要的損失。
從二者在高頻率下的仿真可見,這兩個電路和兩級觸發器一樣都有一些延時。但是它們都很正確的完成了對信號的仿真,且沒有使用過多的觸發器。
4.3 結繩法仿真
結繩法同樣是解決測試信號從快時鐘域至慢時鐘域時,信號變化過快導致第二個時鐘無法正確采樣到的問題。但與鎖定法不同的是,結繩法是在慢時鐘采樣信號時,想辦法使信號維持更長的時間,以便慢時鐘可以正確的采樣。
如圖24所示,在時鐘aclk處,data輸入數據選擇器的控制端,通過data的脈沖不斷選擇高電平和低電平,形成新的波形,即被“結繩”,延長了信號,確保下一個時鐘能正確采樣。之后,送至兩個D觸發器處,使其自然的被時鐘bclk同步。接著利用異或門,把結繩后的脈沖還原,再次送入時鐘bclk中被“結繩”,其后,再在時鐘aclk中同步,最后還原。根據所得波形判斷是否開始了正確的采樣。如圖25所示。
本文采用200Hz,占空比百分之二十的信號輸入,兩個快慢時鐘分別為1KHz和400Hz。電路繪制時用到了兩片74HC157的四路二選一數據選擇器和若干片D觸發器。電路中還用到了反相門和異或門。圖26是信號輸入時鐘aclk時被“結繩”的波形。
圖26 結繩法原理波形圖
圖27是data,out2,out1和out1輸入至時鐘bclk結繩后的Q2的波形。就data和out2的對比來看,out2剛開始不規則,規則后,和最開始輸入的數據data是一樣的,這樣便可判斷出data已被正確采樣。同樣的,out1在最開始也是錯誤的采樣。直到out2正常輸出后,out1也開始了正確的采樣。
圖27 結繩法同步及驗證同步波形圖
同樣的,本文也在高頻率下對結繩法進行了仿真。其中,測試信號為占空比10%的2MHz信號,快時鐘為10MHz,慢時鐘則是4MHz的信號。圖28就是結繩法的仿真波形,包括輸出以及可驗證同步是否正確的信號。
圖28 高頻率下的仿真結果
可見,在高頻率下的仿真和低頻率一樣,因信號變化太快,在剛開始會出現錯誤采樣出來的波形,直到out2的輸出和data信號一致后,就開始了正確的同步。但因結繩法使用了過多的觸發器,便很易出現錯誤導致同步失敗。
4.4 握手傳輸仿真
當幾個電路不能預知相互的響應時間時,握手傳輸法能讓數字電路間實現有效的通信。
本文就優于全握手(full-handshake)法的部分握手(partial-handshake)法進行仿真。
部分握手法類型使用的是脈沖同步器。脈沖同步器是將需要同步的信號輸入數據選擇器的選擇控制端,使其對第一個時鐘下的D觸發器的兩個輸出Q和Q的相反值進行不斷的選擇。通過這樣的不斷選擇,產生波形,然后送入第一個時鐘進行同步。同步的結果繼續進入第二個時鐘下的同步器同步。由于通過了數據選擇器,送入第一個時鐘的信號已經不是原來需要同步的信號了。因此,經過第二個同步器的同步后得到的信號要通過一個時鐘的延遲,與自身進行異或才能得到正確結果。
圖29是脈沖同步法的原理圖。
圖29 脈沖同步法原理圖
脈沖同步法仿真時采用的是74HC157的四路二選一數據選擇器,以及需要將SD—L置1端和RD—L復位置0端加上高電平的74HC74D觸發器。其中,數據選擇器使輸入端低電平有效,需要接地。若是將其置高的話,
所有輸出將會被強制置低。圖30是脈沖同步法的電路圖。
本文對測試信號data,第一個時鐘aclk,第二個時鐘bclk分別用200H(z20%的占空比)、900Hz和500Hz。
圖31即是電路所有輸入和輸出out的波形圖。
圖31 脈沖同步法輸入輸出波形圖
可以看出,上圖的仿真,測試信號之間的距離并不小。倘若測試信號的脈沖之間相互間隔過近,則最后同步出來的輸出信號的脈沖也會緊密相連。因此會導致同步器不能正確的檢測出每一個脈沖,甚至把很多個脈沖識別成一個較長的脈沖。圖32就是改變測試信號頻率為2KHz時得出的波形,顯然同步失敗。
圖32 過緊脈沖測試信號導致同步失敗
相應的,本文也對脈沖同步法在高頻率下的同步進行仿真。使用的數據為2MHz,占空比為百分之十的測試信號,9MHz的快時鐘和4MHz的慢時鐘。
圖33即是脈沖同步法在高頻率下的仿真結果。
圖33 高頻率下的仿真結果
如圖33所示,雖然能進行仿真,但是在片上網絡的高頻率下很容易因為信號過近的脈沖導致同步器錯誤的識別,最終致使同步失敗。
5.多時鐘域同步方法的比較探究
通過上述的仿真可以看到,在同步器法中,兩級觸發器法可避免一些因為觸發器或者門電路引發的錯誤,過于簡單的電路結構使它不能應對較為復雜的同步,只能應用于一些較為簡單的基礎同步。同時,在同步采樣時還必須避免被同步信號的脈沖比時鐘脈沖小而導致的同步失敗。而鎖定法有兩種,它們的基本原理都是一樣的。為了避免慢時鐘無法正確接收信號而選擇先將信號鎖定起來,直到確定慢時鐘能正確同步后再選擇送入信號。這樣既可清晰明了的判斷出同步正確與否,又可及時避免同步采樣的錯誤,還節約了資源。而在高頻率的仿真時,除了和兩級觸發器一樣有時間上的延遲,其余都能正確的完成同步。
結繩法主要是用來解決脈沖信號的同步問題。此法通過延長脈沖的維持時間來避免時鐘無法正確同步采樣的問題。但在判斷是否開始正確同步時,并沒有鎖定法那樣的直觀明確,且電路過于繁瑣,實現較為復雜,效率也不高。
鎖定法和結繩法都是針對測試信號從快時鐘域到慢時鐘域時,變化太快造成的錯誤采樣。結繩法相對來說較繁瑣,效率不高,使用時要多斟酌。而對握手傳輸來說,采用的脈沖同步器雖然沒有同步器方法中的結繩法這樣繁瑣,但是它去掉了判斷同步正確與否這個很關鍵的一環。在之后高頻率的仿真中也可看到,脈沖同步法很容易出現同步失敗的情況。而且握手傳輸的過程十分繁瑣,每傳輸一次數據就要對所有控制信號進行操作。即使對整個過程進行簡化,也仍然存在較大的耗時。倘若需要傳輸較多的數據,效率會很低。因此握手傳輸和同步器法一樣,比較適合在跨時鐘域傳輸時處理單根的信號,例如控制信號等。
其實,相比于同步器法和握手傳輸來說,異步FIFO有更大的適用性。不僅可以同步多位的數據還可以同步沒有任何關系的源時鐘域和目的時鐘域之間的數據交換。對異步FIFO同步的研究將另作專題詳細闡述。
參考文獻
[1]沈立,等.高速數字設計[M].北京:電子工業出版社,2004,96-105.
[2]Packet Communications Reference Architecture V2.0[EB/OL].http://www.ipcc.org,2003.
[3]彭莉,等.異步FIFO的設計與驗證[J].計算機工程與應用,2005(3):98-101.
[4]袁偉,等.多時鐘域的異步信號的參考解決[J].現代電子技術,2006(16):136-138.
[5]徐翼,等.異步時鐘域的亞穩態問題和同步器[J].《微計算機信息,2008(5):271-272.
[6]杜旭,等.ASIC系統中跨時鐘域配置模塊的設計與實現[J].微電子學與計算機,2004(6):173-177.
[7]袁偉,等.多時鐘域的異步信號的參考解決[J].現代電子技術,2006(16):136-142.
[8]謝修祥,等.異步多時鐘系統的同步設計技術[J].電子工程師,2005(5):33-37.
[9]黃隸凡,等.FPGA設計中的亞穩態研究[J].微電子學,2011(2):265-268.
作者簡介:趙文晗(1990—),碩士研究生,畢業于電子科技大學,現供職于四川省興文縣安檢局。