劉麗格,李天保,石鑫剛
(1.中國電子科技集團公司第五十四研究所,河北石家莊050081;2.河北先控電源設(shè)備有限公司,河北石家莊050035)
隨著數(shù)字信號處理技術(shù)的飛速發(fā)展,數(shù)字信號處理設(shè)備的速度和復(fù)雜度不斷提高。相應(yīng)地,系統(tǒng)對數(shù)字信號傳輸帶寬的要求也不斷增加。對一個數(shù)字處理設(shè)備而言,板間數(shù)據(jù)傳輸帶寬已經(jīng)成為限制設(shè)備性能的瓶頸之一。
提升并行傳輸帶寬需要解決2個問題,一是提高FPGA輸入輸出接口的比特速率,另一個是解決多路并行信號間的時延不一致的問題。
由于FPGA內(nèi)部邏輯單元處理速率有限,要實現(xiàn)數(shù)據(jù)的高速傳輸需要利用FPGA內(nèi)部與每一個輸入輸出(I/O)單元相連的并串轉(zhuǎn)換核(OSERDES)和串并轉(zhuǎn)換核(ISERDES),OSERDES可以把FPGA內(nèi)部的并行低速數(shù)據(jù)轉(zhuǎn)換為高速串行數(shù)據(jù),ISERDES可以把輸入的高速串行數(shù)據(jù)轉(zhuǎn)換為低速并行數(shù)據(jù)。如果把多路這樣的串行數(shù)據(jù)并行進行傳輸,就可以實現(xiàn)更大的傳輸帶寬。
然而,通過底板并行高速傳輸數(shù)據(jù)不可避免地造成了數(shù)據(jù)線與時鐘線之間、數(shù)據(jù)線與數(shù)據(jù)線之間時延不一致的問題。為解決此問題,可以利用FPGA每一個I/O管腳的輸入輸出延時(IODELAY)單元。IODELAY相當于是一段延遲線,該延遲線以大約78 ps為步進單位,最大可實現(xiàn)64階時延。因此,通過調(diào)整延遲線的時延,可以精確控制輸入信號到達FPGA內(nèi)部的處理邏輯單元的相位,進而對多路信號之間在底板上傳輸?shù)臅r延不一致進行補償。
板間高速同步并行數(shù)據(jù)傳輸?shù)氖疽饪驁D如圖1所示。發(fā)送方將較低速率的并行數(shù)據(jù)送入發(fā)送模塊,發(fā)送模塊將其轉(zhuǎn)換為的高速數(shù)據(jù)信號,并以低電壓差分信號(LVDS)標準的雙數(shù)據(jù)速率(DDR)接口形式通過底板發(fā)送到接收方。接收方的接收模塊將每一組數(shù)據(jù)恢復(fù)成原始的并行數(shù)據(jù)及相應(yīng)的時鐘,并以該時鐘存入先進先出存儲器(FIFO),并利用同一個讀時鐘和統(tǒng)一的復(fù)位信號將各路信號完全同步恢復(fù)。
圖1 板間高速數(shù)據(jù)傳輸?shù)目驁D
板間高速數(shù)據(jù)傳輸?shù)姆桨钢兄饕òl(fā)送模塊、底板、接收模塊和跨時鐘域同步模塊幾個部分組成。
在發(fā)送模塊內(nèi)部,輸入的64 bit數(shù)據(jù)按8 bit分組,分成8組。每一組8 bit數(shù)據(jù)送給FPGA內(nèi)部的OSERDES模塊轉(zhuǎn)換成8倍數(shù)據(jù)速率的單比特信號,再送給單端轉(zhuǎn)差分單元從FPGA管腳送出。而時鐘需要通過雙數(shù)據(jù)速率輸出(ODDR)模塊和單端轉(zhuǎn)差分單元從FPGA管腳送出。因此發(fā)送模塊內(nèi)部不需要更多的邏輯控制,僅僅是工作數(shù)據(jù)和訓(xùn)練序列之間需要一個選擇器,由監(jiān)控選擇將哪一種數(shù)據(jù)送出。通常在系統(tǒng)初始化階段控制將訓(xùn)練序列發(fā)送出去,在檢測到接收方已完成校準后再切換到工作數(shù)據(jù)流。
LVDS差分信號線在底板上傳輸不需要額外的驅(qū)動電路,也不需要差分端接電阻,只需要將所有差分信號線引入到接收方的FPGA即可。因為在FPGA內(nèi)部存在差分轉(zhuǎn)單端的硬件單元,該硬件單元有一個高直流輸入阻抗,幾乎所有的驅(qū)動電流都將流經(jīng)100 Ω終端電阻產(chǎn)生約350 mV電壓。其特有的低振幅和恒流源驅(qū)動模式只產(chǎn)生極低的噪聲,消耗很小的功率。但底板的設(shè)計中必須考慮信號線的阻抗設(shè)計和等長設(shè)計。盡管在接收方將對數(shù)據(jù)傳輸時延進行校準,但由于FPGA內(nèi)部的校準范圍是有限的,還是需要盡可能在設(shè)計中保證信號時延在可調(diào)整的范圍以內(nèi)。
接收方首先需要對輸入數(shù)據(jù)按照與發(fā)送方相反的流程執(zhí)行差分轉(zhuǎn)單端、DDR轉(zhuǎn)單數(shù)據(jù)速率(SDR)和串行化轉(zhuǎn)并行的步驟以外,還需要進行時延校準、比特排列(BIT ALIGNMENT)、字排列(WORD ALIGNMENT)及跨時鐘域數(shù)據(jù)同步等操作。其中接收模塊的實現(xiàn)示意框圖如圖2所示。
圖2 接收模塊實現(xiàn)示意框圖
圖中每一個ISERDES都會將輸入的單高速數(shù)據(jù)轉(zhuǎn)換為8 bit低速并行數(shù)據(jù),8個ISERDES接收從底板傳來的8位高速數(shù)據(jù),轉(zhuǎn)換為64 bit低速數(shù)據(jù)。所有的8組8 bit數(shù)據(jù)都被送入一個數(shù)據(jù)選擇器,由一個時分復(fù)用/資源共享控制模塊在一段時間內(nèi)選擇一組數(shù)據(jù)送入數(shù)據(jù)排序模塊,以減少邏輯資源的消耗。數(shù)據(jù)排列狀態(tài)機產(chǎn)生3個控制信號,分別是INC、ICE和 BITSLIP。其中 INC和 ICE能夠造成IODELAY產(chǎn)生對輸入信號以75 ps步進遞增和遞減的時延。而BITSLIP可以使ISERDES將并行輸出數(shù)據(jù)比特的順序進行循環(huán)移位,進而實現(xiàn)與訓(xùn)練序列的比較。
數(shù)據(jù)排序狀態(tài)機是整個接收模塊的核心控制部分,它主要實現(xiàn)2部分功能:一是比特對齊;二是字對齊。比特對齊就是通過調(diào)整數(shù)據(jù)信號的時延把時鐘的采樣沿盡量對準數(shù)據(jù)窗口的中心。而字對齊是為了確保ISERDES輸出的并行數(shù)據(jù)位以正確的排列順序輸出。比特對齊的步驟如圖3所示。
圖3 比特對齊步驟
整個比特對齊過程會測量出一個完整的數(shù)據(jù)眼圖(以78ps數(shù)據(jù)時延為步進),并返回到該眼圖的中心點。其中搜尋跳變點需要考慮數(shù)據(jù)傳輸過程中的抖動問題,從而避免第2個跳變點的錯誤檢測。
為了正確判斷出跳變的位置,需要考慮2種數(shù)據(jù)抖動的情況。第1種情況是隨機抖動的情況。在這種隨機抖動的情況下,通過把當前采樣值與上一次采樣值作比較,從比較結(jié)果就可以決斷出跳變的起始和結(jié)束時刻。第2種情況是確定性的抖動,在這種情況下,FPGA程序檢測不到前后2次采樣值的不同,但是采樣值與已知的訓(xùn)練序列是不同的。這就需要利用ISERDES的BITSLIP特性。
比特對齊確保數(shù)據(jù)位被可靠地獲取,但數(shù)據(jù)位的順序可能與發(fā)送方所期望的順序有所不同。字對齊操作利用ISERDES單元的BITSLIP功能實現(xiàn)順序調(diào)整。由于在系統(tǒng)初始化校準階段發(fā)送方發(fā)送的是訓(xùn)練序列,這對于接收方是已知的。接收方就不斷執(zhí)行比特滑動直到ISERDES輸出的數(shù)據(jù)與訓(xùn)練序列完全一致為止。
所有的發(fā)送方數(shù)據(jù)在送入接收方后經(jīng)各自的接收模塊恢復(fù)出了低速的64 bit的數(shù)據(jù)和與之對應(yīng)的時鐘。盡管所有發(fā)送方的時鐘都是由同一個時鐘源產(chǎn)生的,在頻率上完全相同,但由于路徑的不一致會造成各路時鐘會存在相位差。為了用同一個時鐘對所有數(shù)據(jù)進行處理還需要進行同步化操作。這種操作是利用FPGA內(nèi)部的異步FIFO來實現(xiàn)的。異步FIFO是指用一種時鐘執(zhí)行寫入操作,而用另外一種時鐘執(zhí)行讀出操作,這2種時鐘是異步的。每一路數(shù)據(jù)都以其隨路時鐘被寫入到一個異步FIFO中,所有FIFO的讀操作都采用同一個時鐘。這個時鐘可以是與發(fā)送方同源的另一種時鐘,也可以直接從接收過來的多個時鐘中選出一路使用。因而確保了讀時鐘的速率與寫的速率一致,不會由于時鐘頻差累積造成FIFO的寫滿或讀空。
設(shè)計中發(fā)送方與接收方都采用賽靈思(Xilinx)公司的Virtex4系列XC4VLX160型號FPGA芯片,底板接插件也采用標準CPCI的接插件。在一臺21槽CPCI工控機上進行實驗,對20個槽位的板間互連進行測試。以單根數(shù)據(jù)線的比特傳輸速率為參考,采用傳統(tǒng)的并行傳輸方式測試,傳輸速率最高可達到400 Mbit/s,而有的板卡間只能達到約200Mbit/s,這與布線和接插件造成的時延一致性有關(guān)。而采用該文中的高速板間傳輸技術(shù),全部的板間傳輸測試都達到800 Mbit/s,測試30 min無誤碼。特別重要的是,由于帶有硬件的自動校準功能,調(diào)試工作量大大減少。
數(shù)據(jù)傳輸性能是設(shè)備硬件設(shè)計必須充分考慮的基本問題之一,如何挖掘硬件平臺的數(shù)據(jù)傳輸潛力,尋找有效增加傳輸帶寬的方法,成為了一項非常具有現(xiàn)實意義的課題,也是衡量硬件性能的一項重要指標。這種板間高速傳輸技術(shù)降低了對硬件外圍電路的要求,結(jié)合高速串行傳輸?shù)牟糠痔匦?突破了傳統(tǒng)并行傳輸?shù)谋忍厮俾氏拗?為數(shù)字信號處理能力的提高提供了支持。
[1]趙增輝,劉中友,彭圻平.高速差分信號的互連設(shè)計[J].無線電通信技術(shù),2010,36(1):50-56.
[2]胡錦,彭成,譚明.基于RocketIO的高速串行協(xié)議設(shè)計與實現(xiàn)[J].微計算機信息,2008,24(18):196-197.
[3]武榮偉,蘇濤,翁春蕾.基于FPGA的高速數(shù)據(jù)傳輸方案設(shè)計與實現(xiàn)[J].重慶郵電大學(xué)學(xué)報,2010,22(2):205-208.
[4]史小波,程夢璋,許會芳.集成電路設(shè)計VHDL教程[M].北京:清華大學(xué)出版社,2005:145-147.
[5]楊翠紅,文豐,姚宗.基于LVDS的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計[J].通信技術(shù),2010,43(9):59-64.
[6]陳長林,邱兆坤.Rocket I0及其在高速數(shù)據(jù)傳輸中的應(yīng)用[J].單片機與嵌入式應(yīng)用,2010(11):25-28.
[7]薛隆全,文豐,張時華.基于LVDS總線的高速長距數(shù)據(jù)傳輸?shù)脑O(shè)計[J].電子設(shè)計工程,2009,17(2):39-42.
[8]馬將,任勇鋒,李圣昆.LVDS遠程傳輸中繼電路的設(shè)計應(yīng)用[J].通信技術(shù),2010,43(1):26-28.