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