孟開元 唐君妍 曹慶年 樓曉強
關鍵詞:FPFA;千兆AFDX;端系統;PCIe接口;可靠性
0 引言
隨著數據流和多媒體服務的增加,具有高功率、快速和多功能模塊的高性能網絡產品的市場容量也不斷增加。以太網在數據中心網絡中發揮著重要作用,在移動網絡、汽車、航空和制造業中有許多新的用武之地。尤其是在航空網絡領域,通常需要對各種飛行試驗過程中的關鍵數據進行接收和存儲,對不同電子設備間高集成度、高效率、低成本、大容量的數據傳輸有著很廣泛的需求。
AFDX網絡是一種雙余度網絡,提高了傳輸速率,并且通過在AFDX網絡端系統中引入虛擬鏈路、冗余管理等概念,不斷優化以太網網絡結構,使網絡中的數據傳輸擁有更高的實時性、可靠性和確定性。目前,AFDX網絡在航空電子領域中大多采用百兆級別的速率[1],為了滿足傳輸網絡中更高更嚴格的速率要求,需要研究千兆級別的AFDX網絡時突破設備瓶頸的著力點。
本設計給主機配置4線的PCIe2.0接口,以太網內部連接選用RGMII接口連接模式,通過FPGA對發送和接收進行邏輯控制來實現傳輸網絡中的可靠性數據傳輸功能,更適合需要千兆以太網的高速傳輸場合。
1 AFDX 端系統介紹
1.1 AFDX 端系統架構
AFDX端系統主要實現網絡體系結構模型中的物理層、數據鏈路層、網絡層和傳輸層的功能[2]。
物理層根據AFDX端系統中的兩路PHY芯片來實現,每個PHY芯片都能提供一路以太網通信的接口。數據鏈路層的協議功能夠通過FPGA邏輯來實現,負責完成端系統的虛擬鏈路調度功能和數據的冗余管理功能。網絡層和傳輸層的相應協議完成對傳輸數據的封裝、拆解、分片、重組等。
AFDX端系統在傳輸時還需保障數據的安全性和可靠性[3]。通過對端口和虛擬鏈路的相關配置,保障數據傳輸的安全性和準確性,有效避免傳輸過程中以數據幀發生沖突;采用兩個獨立的冗余網絡進行傳輸,避免數據在傳輸過程中發生丟失,進一步提高了數據傳輸的效率,保障了網絡傳輸的高可靠性。
1.2 通信協議棧數據格式
本文通過硬件描述語言實現UDP/IP協議棧,根據項目中對數據傳輸協議的實際功能需求,只實現UDP和IP協議,就能滿足高速以太網傳輸數據的穩定和高速傳輸。
在進行數據傳輸時,消息數據會經過每一層的協議棧,按照該層協議的數據包格式要求,逐層進行封裝、打包。數據每經過一層協議,都會在數據包的首部添加相應包頭的信息,然后進入下一層協議棧再重新封裝和打包。本設計首先在用戶數據前添加UDP 首部信息組成UDP數據報,UDP數據報再傳至網絡層,添加IP數據報的首部信息封裝成IP數據報,然后傳至以太網MAC 層封裝成以太網的標準數據幀格式,最后送到物理層進行發送處理。以太網有效數據封裝為標準格式之后才能進行傳輸,具體的UDP/IP 協議棧格式如圖1所示。
2 系統設計
2.1 整體架構設計
整個設計的模塊結構主要劃分為主機PCIe接口、發送邏輯、接收邏輯、以太網接口和時鐘模塊。主機通過PCIe接口將創建的消息發出,經過發送邏輯的控制,從以太網接口發出數據幀給交換機,再發往其他設備;數據幀從以太網接口傳來,經過接收邏輯的控制,再從PCIe接口傳入主機接收。系統整體架構設計如圖2所示,圖中黑框部分需要通過FPGA邏輯來實現具體功能。
2.2 時鐘設計
1) 系統時鐘
2.3 接口設計
1) PCIe接口設計
PCIe接口包括PCIe_DMA(由PCIe協議處理模塊和DMA模塊兩部分組成)、DMA_AHB模塊、寄存器模塊和時鐘復位模塊。PCIe協議處理模塊可以支持端點、根端口的工作模式;DMA模塊可以支持包DMA或塊DMA的工作模式[4]。
MAC(媒體訪問控制)協議應用于OSI參考模型中的數據鏈路層中,完成的功能是控制與連接物理層的物理介質。PHY(端口物理層)屬于OSI協議中的物理層[6]。PHY與MAC控制器之間有多種連接接口可以選擇:十兆和百兆以太網通常采用MII、RMII接口;千兆以太網中通常采用GMII、RGMII等接口。相對于GMII與PHY接口連接,RGMII接口減少了接口管腳的數量,數據信號和控制信號減少,同時發送接收數據采用雙沿驅動,可以明顯地減少FPGA的I/O端口數量的占用,因此本設計采用RGMII接口。在1000M的傳輸速率下,使用125MHz的時鐘頻率。
2.4 發送邏輯設計
發送數據的具體流程如圖3所示:
發送數據時,外部CPU在內存中創建消息,通過主機PCIe接口訪問內部寄存器,將消息的地址和長度等信息填入相關寄存器。系統按序自主完成通信協議棧中的UDP層、IP層、MAC層數據的封裝,最終組裝成標準的以太網數據幀后發送至以太網接口進行傳輸。兩路網絡中復制相同的數據幀進制進行發送。
虛鏈路是AFDX端系統通信的核心部分[7],虛鏈路之間需要實現邏輯獨立,這一要求通過對帶寬分配間隙進行限制的方法來實現。當端系統中需要完成多個發送任務時,調度器就會依據BAG進行流量控制來防止數據幀在傳輸時發送沖突。AFDX端系統的這一功能是在數據鏈路層通過FPGA邏輯實現的。
2.5 接收邏輯設計
接收數據的具體流程如圖4所示:
系統首先對從以太網接收的數據幀進行冗余管理操作,采用“先到先有效”的算法,即第一個帶著有效順序號(Sequence Number,SN) 的數據幀將被系統網絡接收,并向上傳輸,通過協議棧的層層數據拆解將信息送達接收端口。但當帶有相同順序號的第二個數據幀被傳進網絡時,該幀將被丟棄,不能被網絡所接收。通過余度管理的檢測后,當數據幀的目的尋址信息與系統配置的MAC接收地址相匹配時,才可以從以太網幀中刪除MAC頭部信息。移除MAC首部的幀為IP數據報,系統處理IP數據報報頭中包含的地址和控制信息,當地址和控制信息與系統配置值相匹配時,系統才可以從IP數據報中刪除IP報頭。刪除IP報頭后,剩下的是UDP數據報,系統處理UDP數據報的地址和校驗和的值,當地址與系統配置的值相匹配且校驗和的值為0時,才可以從UDP數據報中刪除UDP報頭信息并將有效負載存儲起來等待端口接收。
3 系統測試結果
為了驗證在千兆以太網中的數據傳輸功能,使用Xilinx的ZYNQ7000系列的開發板進行測試[8],板卡與主機PCIe接口相連,并通過Wireshark軟件進行抓包來觀察實驗結果。為了方便觀察,將系統的發送和接收端口設置為同一個,即源地址和目的地址相同、源端口號和目的端口號相同。系統最終抓包測試結果如圖5、圖6所示。
從測試結果圖可以看出,設計的系統可以進行正常的數據報的收發,即可完成網絡數據傳輸的功能。
4 結論
本文通過對AFDX端系統技術進行分析和研究,在原有百兆AFDX 網絡的基礎上,提出一種基于FPGA 的千兆網絡端系統的設計方案,通過對千兆AFDX端系統結構設計和數據傳輸邏輯設計的改進,實現了系統的數據傳輸功能,可以滿足更高可靠性、更高確定性和更高速率的大體量數據傳輸要求。經過測試,數據傳輸模塊也能在以太網中正確收發千兆速率的網絡數據,可以很好地應對當下航空網絡系統的高速率、大容量的數據傳輸需求,也具有較好的應用前景和開發意義。