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