鄭 建,徐 海
(重慶金美通信有限責任公司,重慶400030)
Serial Rapid IO橋接以太網設計和實現
鄭 建,徐 海
(重慶金美通信有限責任公司,重慶400030)
利用FPGA的SRIO核自主實現了RapidIO規范所定義的傳輸層和邏輯層的11類報文收發,并完成了11類報文和以太網報文相互的分片和重組功能,最終實現了千兆以太網和SRIO的高性能橋接。并通過了邏輯仿真和實際電腦ping包測試。
現場可編程邏輯陣列;串行Rapid IO;以太網;橋接;高性能
RapidIO技術最初是由Freescale和Mercury共同研發的一項互聯技術,最初是為了用于處理器之間的互聯。隨著互聯技術的發展,RapidIO技術漸漸成為通信、嵌入式系統內芯片與芯片之間互聯的新方法。串行RapidIO以其極少的信號走線來降低信號干擾,通過節約引腳資源和完善的傳輸協議來保證傳輸正確性這些優點在嵌入式互聯和背板互聯的設計中有著廣泛運用。
然而實際運用的需求千差萬別,用戶可能需自主實現傳輸層和邏輯層的部分功能,并實現上層數據的處理以及和其他類型接口的橋接。
2.1 RapidIO技術概述
RapidIO是新型的傳輸協議,該協議基于點對點分組包交換技術。RapidIO包含了三層結構:物理層、傳輸層以及邏輯層。
(1)物理層協議
物理層位于Rapid IO協議分層的最底層,主要完成包括器件接口的細節、包傳輸機制、流量控制機制、錯誤管理機制和電器特性等。
(2)傳輸層
傳輸層位于Rapid IO協議分層的中間層,主要定義了Rapid IO地址空間和設備之間包交換的路由信息。
(3)邏輯層
邏輯層位于Rapid IO協議分層的最高層,定義了Rapid IO協議所有類型的包格式,為設備完成事務傳輸提供完備的信息。RapidIO主要支持IO事務和消息事務兩種操作。
RapidIO事務操作是基于請求和響應的,該流程如圖1所示。
在請求端發出請求事務后,該請求經過交換結構單元送往請求的目的地。目的地在收到請求事務后對該事務作出響應應答。響應事務經過交換結構送往發出請求事務的設備,此時一次操作才算完成。請求發送到接收響應中間存在著各個層級之間的檢驗,包括CRC、長度等校驗。如果出錯,雖然操作完成但是操作失敗,目的地會返回一個錯誤指示響應。

圖1 Rapid IO事務操作流程
2.2 分片重組
Altera的CycloneⅣ芯片集成了串行RapidIO核。利用該IP核提供的Avalon_st接口可以實現消息類包的傳輸,并自主實現傳輸層和邏輯層處理。傳輸層字段主要定義了包類型和源、目的ID,處理相對簡單,不作為重點講述。邏輯層主要定義了消息長度、標準長度、信件、信箱以及消息段等分片和重組的關鍵信息,具體位置如圖2所示。

圖2 11類消息請求包格式
消息長度表示該事務共被分成了幾片,標準長度為除最后一片之外每一片的長度,信件、信箱標明該事務片段屬于哪個郵箱和那個信件,消息段標明該片段為事務所有分片中的某一片。信件、信箱、消息段唯一確定該片段的歸屬,據此即可完成片段的定位。
利用FPGA完成11類報文的分片重組功能可以達到線速處理能力,并可方便添加用戶自定義功能和實現對其他接口的橋接,這也為以后實現復雜交換系統打下堅實基礎。
FPGA處理框圖如圖3所示,圖中SGMII core和GMAC、rxFIFO、txFIFO組成千兆以太網收發系統。其中GMAC采用自主邏輯實現,完成以太網幀的收發,由于不是重點,具體細節不再贅述。Package_Div完成以太網幀到Rapid IO幀的分片功能,相反的Package_comb模塊完成RapidIO幀到以太網幀的重組功能。Avalon_st模塊完成RapidIO幀的緩存及收發。FPGA提供的SRIO核對內提供Avalon_st接口,對外為serdes差分信號。

圖3 FPGA設計框圖
采用SRIO核的Avalon_st接口完成11類包的收發。使用該接口時SRIO核只提供物理層和部分傳輸層功能,邏輯層功能需用戶實現,所以傳輸過程中需要自主完成基于請求響應事務的全部邏輯功能。值得注意的是在接收請求事務時給出的響應事務的優先級需比該請求事務的優先級高一級;而在發送請求完成后,對接收到的響應事務檢查確保正確之后即可丟棄。
在完成基本Rapid IO幀收發的基礎上,還需進一步完成其對以太網幀的橋接工作。由于11類報文規定數據的最大凈荷長度為256字節,如需傳送超過256字節的以太網報文就必須完成對應的分片和重組功能。分片即是對超長的以太網幀按照標準長度的定義劃分為若干片,再將每個分片作為11類報文的凈荷并為其添加幀頭部信息,然后按照Avalon_st接口的發送數據端的時序發送出去。重組是分片的反方向操作,即接收端將同屬某一事務的各個片段按照其消息段號進行有序組裝。在過程中需刪除所有的Rapid IO幀頭部信息,并將重組后的長度信息附在自定義頭部,方便下級模塊使用。圖4為分片功能波形,可以看出該功能模塊將一個較長以太網幀分三次讀出,從而完成凈荷的分片工作;并在往下級傳時添加幀頭部信息,以完成完整的Rapid IO幀的組裝功能。

圖4 分片功能波形
圖5為重組功能波形,可以看出該功能模塊在收到11類報文后經檢查幀頭信息后將凈荷送往下級FIFO,只有在收到該事務的結束幀后才會給出eop結束標志。圖中還可以看到每收到一個11類請求事務幀,均由硬件向發送方回復一個響應事務幀。

圖5 重組功能波形
實驗硬件連接關系如圖6所示,FPGA采用ALTERA公司的EP4CGX75CF23I7芯片,該FPGA對外提供4個收發器;采用一個收發器實現SGMII,外部接88E1111PHY芯片即可通過以太網與電腦通信;采用另一個收發器實現SRIO,通過SRIO接口的直接與P2020模塊的相連即可和P2020通信。這樣便可形成電腦?以太網?FPGA?SRIO?P2020模塊的雙向通信鏈路。

圖6 設計場景框圖
將PC機端的IP地址設置為與P2020同網段后,利用P2020的控制臺以及電腦進行互相ping包測試,具體測試結果如表1所示。

表1 實驗測試結果
從實驗結果可以看出,對于各種長度的以太網幀均能正確處理,并且實現零掉包率。需注意對于大于1518字節的以太網幀,首先由數據發起端的協議棧進行分片,所以FPGA只處理小于1518字節的以太網幀即可。但是為了支持以太網巨幀模式,將分片和重組的最大幀長設計為4096,以應對將來的潛在需求。
下一步研究:在實現更多接口和SRIO接口橋接的基礎上,進一步完成這些接口相互間的數據交換以及QOS處理等功能。
利用了FPGA可編程的高度靈活性,實現了Rapid IO規定的11類消息事務的收發,并完成了傳輸以太網幀所必須的分片和重組功能,從而實現了SRIO到以太網的橋接功能,并達到了線速處理性能和零掉包率的目標。
[1] Sam Fuller.RapidIO:The embedded system interconnection[M].王勇,林粵偉,吳冰冰,等譯.北京:電子工業出版社,2006.
[2] 林玲.RapidIO在多處理器系統互連中的應用[J].計算機工程,2006,32(4):244-246.
[3] 聶新義,孫柯柯,馬克杰.PCI轉RapidIO橋接的設計與實現[J].計算機工程,2010,36(3):246-248.
[4] Altera Corporation.Cyclone IV Device Handbook[EB/OL].http://www.Altera.com.cn.
[5] Altera Corporation.RapidIO MegaCore Function User Guide[EB/OL].http://www.altera.com.cn.
Design and Im plementation of Serial Rapid IO Bridging to Ethernet
Zheng Jian,Xu Hai
(Chongqing Jinmei Communication Co.,Ltd.,Chongqing 400030,China)
The self-design is conducted,by the Rapid IO IPcore embedded in FPGA,for the type 11 packages transceiving through transport layer and logic layer.The function of combining and splitting for the packages between type 11 and Ethernet is completed.At last,the bridge between Gigabit Ethernet and SRIO,with high performance,is implemented,and the test of logic simulation and ping testwith PC computer are passed.
FPGA;SRIO;Ethernet;Bridge;High performance
10.3969/j.issn.1002-2279.2015.01.006
TP302.2
A
1002-2279(2015)01-0016-03
鄭建(1982-),男,四川南充人,助理工程師,主研方向:FPGA邏輯設計設計及應用。
2014-07-01