采用Xilinx公司的Virtex-5系列FPGA設計了一個用于多種高速串行協議的數據交換模塊,并解決了該模塊實現中的關鍵問題。該交換模塊實現4X模式RapidIO協議與4X模式PCI Express協議之間的數據交換,以及自定義光纖協議與4X模式PCI Express協議之間的數據交換,實現了單字讀寫以及DMA操作,并提供高速穩定的傳輸帶寬。 隨著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倍。 |