摘 要: FPGA的內嵌RocketIO模塊在實際應用中需要解決時鐘不穩及通道綁定" title="綁定">綁定同步等問題。通過精心設計DCM單元保證了RocketIO內部時鐘的精確。同時,針對通道不同步的問題,設計了一種彈性存儲器方案,很好地解決了通道同步接收問題。該方案在863重大課題“可擴展到T比特的高性能IPv4/v6路由器基礎平臺及實驗系統”中得到了驗證。
關鍵詞: 同步 彈性存儲器
隨著線路傳輸技術的迅速發展,出現了10Gbps的鏈路接口類型,如10Gbps的POS、WAN、LAN等。863重大課題“可擴展到T比特的IPv4/v6路由器基礎平臺及實驗系統”要求T比特路由器支持10G的線卡。
傳統的單端互連方式在傳輸速率上(最高250Mbps)已無法滿足要求。而差分" title="差分">差分串行方式(如LVDS、LVPECL等),雖然采用源同步時鐘,但數據和時鐘分別發送,受信號瞬時抖動的影響,破壞了數據與時鐘的定時關系,傳輸速率也存在一定的瓶頸。XILINX的Virtex-ⅡPRO 系列提供了內嵌RocketIO模塊,通過采用CDR、8B/10B編碼,預加重等可在線配置技術,減少了信號衰減和線路噪聲的影響,所提供的全雙工高速通道最高支持3.125Gbps。
但在高速環境下,RocketIO易出現時鐘漂移,同時,在進行通道綁定時,也易出現通道間不同步的問題。針對時鐘不穩的現象,筆者利用FPGA 的數字時鐘管理器(DCM)對RocketIO的時鐘進行精心設計; 對通道不同步問題,設計了一種稱為“彈性存儲器”的改進方案。經工程驗證,本設計方案有效地解決了以上兩個問題。
1 RocketIO的特性
如圖1,RocketIO(也稱MGT)由物理媒質適配層(PMA)和物理編碼子層(PCS)兩部分組成。PCS主要包括發送FIFO、8B/10B編碼器、8B/10B解碼器、CRC生成與校驗,通路綁定與時鐘修正的Elastic Buffer等。PMA包括串/并轉換器、差分接收器、發送時鐘生成電路、接收時鐘恢復電路等。
以轉發引擎選取的XC2VP70 FF1704系列為例,該芯片最多可提供40路高速收發器,每路可提供最高3.125Gbps的全雙工帶寬,可支持FibreChannel、Ethernet、Custom、XAUI、Infiniband等高速通信標準。其優點有:(1)每個通道支持最高125Gbps的全雙工速率; (2)支持直流和交流耦合方式; (3)可編程差分終端電阻(50Ω、70Ω);(4)輸出預加重處理。
2 時鐘及復位
考慮到RocketIO的設計傳輸帶寬是10Gbps,RocketIO的參考時鐘選用差分輸入時鐘,這樣可極大地降低時鐘抖動。同時,利用FPGA內部的DCM(數字時鐘管理器)產生Rocket IO的主時鐘,根據MGT設計的四通道綁定,分別送給RXUSRCLK、RXUSRCLK2、TXUSRCLK和TXUSRCLK2。
同時,由于DCM的輸出時鐘在LOCKED指示信號無效之前處于非穩態,不適合直接作后級邏輯的參考時鐘。所以,選擇LOCKED作RocketIO的復位信號TX_RESET和RX_RESET,保證了DCM的輸出時鐘在RocketIO復位之后才送給下一級邏輯。如再加一級緩沖,保證RocketIO足夠的復位時間,效果更好。
DCM和MGT控制信號的對應關系,如圖2所示。
3 通道綁定
理論上,經MGT內部緩沖處理及時鐘修正,各個例化模塊應嚴格同步輸出。但由于硬件高頻時鐘電路" title="時鐘電路">時鐘電路的不穩定及時鐘漂移等不確定因素,在實際工程應用" title="工程應用">工程應用中經常發生格式錯位、通道之間不同步的現象,導致無法進行通道綁定。
3.1 錯誤情況分析
圖3給出了高速通道的幾種錯誤情況。
K碼指示規則是:當K碼依次為“10”、“00”、“01”時,對應數據包的包頭(數據為“BC95”)、正常數據報文、包尾(數據為“3CFB”); K碼為“11”時,表示通道空閑(數據為“95FB”)。
圖3(a)中,序列DATA1為正確的接收序列,DATA2、DATA3均為錯誤序列。
(1)DATA2:發生了前后兩字節錯位的現象,數據格式不正確;
(2)DATA3:在時序上與DATA1不同步,但數據格式是正確的。
對于錯位接收的原因分析,也可以從圖3(b)看出。對串行輸入的數據,串并轉換之前的正確接收采樣操作應該是采樣時鐘(RxClock)一次性采集到數據“b1b2b3b4”。但實際上,由于采用時鐘的不穩定及高頻環境的影響,一次采樣操作卻采集到了數據“b1c2b3c4”。
3.2 彈性存儲器方案
基于以上分析,在進行通道綁定之前,筆者引入了一種彈性存儲器的方案(以四通道綁定為例),按照先緩存、后控制輸出的思路,實現對高速通道的糾錯。彈性存儲器由異步FIFO(4個)、時鐘電路(寫FIFO 時鐘電路,讀FIFO時鐘電路)、內部控制邏輯" title="控制邏輯">控制邏輯三部分組成,如圖4所示。
(1)寫FIFO 時鐘電路
異步FIFO的寫時鐘產生電路。與內部控制邏輯模塊配合,控制異步FIFO的數據接收及K碼序列的緩存。
對于此時的輸入數據,不必考慮格式和數據的同步問題。
(2)讀FIFO 時鐘電路
4個異步FIFO及K碼FIFO的讀時鐘產生電路。與內部控制邏輯模塊配合,控制4個異步FIFO及K碼序列的同步輸出。
(3)內部控制邏輯
除了配合讀/寫時鐘電路來控制異步FIFO的讀寫,依據K碼序列對每個數據FIFO的接收數據進行整包檢測。
具體判斷依據是根據K碼“01”表示的包尾,判定FIFO接收到了一個整包。
4個FIFO都有一個完整包時,通過讀FIFO時鐘電路控制4個異步FIFO 的同步輸出,完成隨后的通道綁定。
可以看出,整個設計的關鍵在于對同步輸出時刻的把握。實現的重點在于內部控制邏輯的整包檢測操作上。由于4個FIFO的整包檢測獨立進行,這需要在實際編程實現時精心設計時序及對容錯情況的考慮。
4 工程實現
圖5給出了在863課題“T比特路由器”中,基于XILINX的VIRTEXⅡPRO系列的XC2VP70芯片,采用彈性存儲器方案得到的MGT測試數據。
4.1軟件仿真
根據K碼序列指示,方案在時序上準確實現了4個通道的數據對齊輸出,無通道錯位或不同步現象。
4.2 工程應用
(1)測試環境
利用光電轉換小板構成環路,測試報文的處理流程為:CPU→FPGA→光模塊→光電轉換小板→GIGA→FPGA→CPU。如圖6所示。
(2)測試結果
圖7為Virtex ⅡPRO-XC2VP70上實現兩平面接收、四通道綁定的ChipScope采樣波形。
rxk0、rxk1表示兩個平面的K碼序列。由K碼與通道的對應關系得知,K碼為“AA”(即二進制“10101010”),對應數據包頭(BC95);K碼為“FF”(即二進制“11111111”),對應包尾(3CFB)。
由圖7知,彈性存儲器方案有效解決了MGT的數據同步問題。
RocketIO的難點在于它的鏈路層本質及高速傳輸環境。其靈活的配置方式同時也增加了工程應用上的難點。本文針對時鐘部分及通道綁定問題,提出了一種切實可行的解決方案,并得到了工程驗證。
參考文獻
1 Howard Johnson, Martin Graham.High-Speed Digital Design. A Handbook of Black Magic.北京:電子工業出版社,2004.5
3 Xilinx Corporation. RocketIO Transceiver User Guide.2004.6