文獻標識碼: A
隨著FPGA應用范圍的不斷擴大以及對速度需求的不斷提升,集成高速串行模塊的FPGA已經應用于市場。以Xilinx的Virtex5系列為代表的集成GTPRocketIO模塊的FPGA受到廣泛關注。以XC5LX50T為例,這款FPGA集成了一個PCIE的Endpoint以及12個可以支持6 Gb/s以上的高速串行接口模塊,支持串行RapidIO、fiber channel以及其他多種串行協議。
高速串行接口是系統互聯的核心,業內使用較多的是應用于嵌入式系統互聯的串行RapidIO協議、應用于PCI系統互聯的PCI Express協議以及存儲中廣泛使用的Fibre光纖協議。在數據采集存儲應用中,多種接口的應用使得存儲系統越來越復雜,然而針對某些特定的以磁盤為存儲媒介的系統,PCI Express協議仍然占據優勢。標準的數據采集存儲系統結構圖如圖1。
由圖1可知,Fibre采集卡控制磁盤陣列的文件系統,PCIE轉存卡接收數據采集設備的數據。2塊板卡插在服務器提供的PCIE插槽上,通過PCIE協議交換數據。Fibre采集卡是成熟的硬件設備,而針對不同的數據采集設備只需要提供不同接口的PCIE轉存卡。因此針對于應用最廣泛的RapidIO和光纖接口協議,實現PCIExpress到RapidIO以及光纖協議的數據交換就非常有意義。
本文以光纖存儲為背景,用Xilinx公司的XC5LX50T實現4X模式串行RapidIO到4XPCIE的數據交換以及2X模式的光纖接口到4X模式的PCIE的數據交換。本文給出了整個交換模塊的原理框圖并解決了RocketIO模塊設計上的關鍵問題。
1 XC5LX50T及RockerIO模塊的主要特點
XC5LX50T是Xilinx穩定可靠的第五代FPGA Virtex-5中最有代表性的一款芯片,其內部集成一個可以用于Endpoint的PCIE硬核,該硬核可以支持1X模式、4X模式以及8X模式,并且遵循PCI Express Base Specification1.1協議,每一路的數據率為2.5 Gb/s,總的最大理論帶寬為2 Gb/s(8 B編碼后的帶寬)。
XC5LX50T提供了12個用于高速串行的RocketIO收發器,不同于前幾代的產品,XC5LX50T的收發器可以支持6 Gb/s以上的數據率而且設計更為簡單,工作更加穩定,其低功耗特性更加理想。RocketIO模塊可以支持串行RapidIO、xaui、fibre channel等標準協議。由于性能穩定、傳輸帶寬高等特點,串行RapidIO已經成為嵌入式系統中最理想的互聯協議之一,尤其在軍事以及國防這些對于高速互聯需求日益迫切的領域中,串行RapidIO逐漸成為最為主流的數據交換協議。
光纖由于其帶寬高、傳輸穩定以及接口簡單等特點,被廣泛應用于很多領域,例如光線存儲、系統互聯。XC5LX50T的RocketIO提供自定義的光纖協議,最高支持3.125 Gb/s。
有些領域中存在著將RapidIO協議的數據上傳至有標準PCIE接口的服務器中進行處理的應用,也存在著將光纖接口的數據通過有PCIE標準協議的服務器存儲到fibre channel協議的磁盤陣列中的應用。因此本文所設計的交換模塊在嵌入式系統的應用中是十分必要的。
2 高速串行交換模塊的基本功能
圖2為交換模塊功能圖。
(1)4X串行RapidIO數據與4XPCI Express數據的交換。這種交換模式分為主動和被動2種,主動模式指數據通過RapidIO協議輸入到交換模塊中,經過交流耦合電路和協議轉換FPGA以PCIE協議傳輸到另一模塊。被動模式指數據通過PCIE協議輸入到交換模塊中,經過協議轉換FPGA以串行RapidIO協議傳輸到另一模塊。
(2)2 bit光纖接口數據與4XPCI Exress數據的交換。這種交換模式同樣分為主動和被動2種,主動模式指數據通過光纖接口輸入到交換模塊中,經過交流耦合電路以及協議轉換FPGA以PCIE協議傳輸到另一模塊。被動模式指數據通過PCIE協議輸入到交換模塊中,經過協議轉換FPGA以自定義光纖協議通過光纖接口傳輸到另一模塊。
3 高速串行交換模塊的基本原理
3.1 RapidIO協議到PCIE協議的轉換
RapidIO協議到PCIE協議交換分為3個步驟:
(1)根據串行RapidIO協議將打包數據解析;
(2)將解析的數據緩存在乒乓使用的存儲器中,可以使用片外ZBTSRAM也可以使用片內RAM資源;
(3)數據根據PCIE協議規定的方式打包,并按照PCIE協議發送出去。
RapidIO與PCIE交換原理圖如圖3。
3.2 光纖協議到PCIE協議的轉換
光纖協議使用的自定協議較RapidIO協議簡單得多,因此實現原理也簡單很多。從光纖協議到PCIE協議交換分為3個步驟:
(1)根據光纖自定義協議將打包數據提取;
(2)將解析的數據緩存在乒乓使用的存儲器中,可以使用片外ZBTSRAM也可以使用片內RAM資源;
(3)數據根據PCIE協議規定的方式打包,并按照PCIE協議發送出去。
光纖與PCIE交換原理圖見圖4。
4 交換模塊實現的關鍵技術
在此交換模塊中,關鍵技術集中在PCIE的DMA實現上,本節將討論存儲器寫模式下的TLP結構以及基于FPGA實現的PCIE的DMA寫操作核心狀態機的設計與實現。
4.1 TLP結構簡介
PCIE設備之間以數據包形式傳送信息,最主要類型的數據包是處理層數據包TLP。其包格式如圖5。
事務是在PCIE請求者和完成者之間進行的操作,包括存儲器事務、IO事務、配置事務和消息事務。本文討論的DMA讀寫操作是針對存儲器空間的操作,存儲器寫操作TLP頭的格式如圖6。
4.2 PCIE的DMA寫操作的設計與實現
PCIE的DMA寫操作實現的主要方法是將TLP包頭中的各個字段正確填充,并將數據按照64 bit或者32 bit并行放在TLP包頭后,按照64 bit或者32 bit并行傳輸給PCIE硬核,由硬核以PCIE協議串行傳輸給其他設備。PCIE的寫操作封裝在TX模塊的狀態機中。在本設計中規定一次DMA寫操作分為65 536次包傳輸,每次包傳輸的最大載荷為128 B,一次寫操作的傳輸數據為8 MB。其狀態機轉換模型如圖7(CPLD指返回完成包)。
實際上FPGA在PCIE硬核中實現了8個TLP存儲空間,因此當發送模塊將8個以上的TLP包傳輸給硬核后,硬核可能會堵塞,因此發送模塊與硬核之間的交互非常必要。
5 測試結果
此測試包括3種模式。
(1)單純測試4路PCI Express的DMA上傳以及下傳速度。
(2)數據從RocketIO接口以2 bit自定義光纖協議與4XPCI Express協議進行交換。
(3)數據從Infiniband接口以4XRapidIO協議與4XPCI Express協議進行交換。
具體結果見表1。
本文分析了3種應用比較廣泛的系統互聯協議,并給出在FPGA內部實現3種協議交換的技術特點。詳細描述了多協議交換模塊的系統結構以及實現原理。
本文的創新點在于通過FPGA的方式實現了多種主流高速串行協議的轉換。通過將各種協議的端口獨立化,簡化了協議轉化工作,使整個模塊更易于更新維護。在FPGA提供的PCIE硬核的基礎上構建了用戶層的封裝并實現了DMA數據傳輸。該交換模塊已在某雷達信號存儲與回放系統中得到應用,帶寬是傳統存儲帶寬的2~3倍。
參考文獻
[1] BUDRUK R著.PCI Express系統體系結構標準教材[M]. 田玉敏,王崧,張波,譯.北京:電子工業出版社,2005.
[2] 馬鳴錦,朱劍冰,何紅旗,等.PCI、PCI-X和PCI Express的原理及體系結構[M].北京:清華大學出版社,2006.
[3] 閆振興.基于FPGA的PCI Express接口的設計玉實現[D].北京:北京理工大學出版社,2009.
[4] PCI-SIG.PCI Express Base Specification Revision1.1[M]. 2003.
[5] Xilinx INC.LogiCoreTM IP EndPoint Block Plus v1.9 for PCI Express Revision 9.0.2008.
[6] Xilinx INC.Virtex-5 FPGA RocketIO GTP Transceiver Revision 1.4.2009.
[7] PADS-PowerLogic和PowerPCB使用教程[M].北京:電子工業出版社,2004.
[8] RapidIO嵌入式系統互聯[M].北京:電子工業出版社,2006.