新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA和PCI的AFDX終端接口卡設(shè)計(jì)

基于FPGA和PCI的AFDX終端接口卡設(shè)計(jì)

作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

航空電子系統(tǒng)的發(fā)展已成為現(xiàn)代飛機(jī)性能不斷提高的重要因素。以ARINC429和1553B為代表的現(xiàn)役機(jī)載總線已不能滿足現(xiàn)代航空電子系統(tǒng)對通信速度和帶寬的要求。美國航空電子技術(shù)委員會(AEEC)提出了航空電子AFDX(Avionics Full Duplex Switched Ethernet),它是在商用交換式以太網(wǎng)的基礎(chǔ)上,經(jīng)過和可靠性等方面的改進(jìn)建立起來的,符合IEEE802.3和ARINC664規(guī)范。

AFDX是一種全雙工、高數(shù)據(jù)率、雙冗余的總線,具有傳輸速度快、易擴(kuò)展、可維護(hù)性好等優(yōu)點(diǎn),可以有效減少系統(tǒng)布線,減輕飛機(jī)重量。不僅能滿足航空電子系統(tǒng)數(shù)據(jù)通信對帶寬的需求,并已成功應(yīng)用于A380和B787,也是我國新研制大型客機(jī)的理想選擇[1]。作為AFDX的重要組成部分,終端接口卡性能的好壞直接影響到AFDX網(wǎng)絡(luò)的整體性能。因此,設(shè)計(jì)可靠性高、好、滿足實(shí)際應(yīng)用需求的AFDX終端接口卡具有廣闊的應(yīng)用前景和良好的經(jīng)濟(jì)、軍事效益。

1 AFDX終端接口卡總體設(shè)計(jì)

依據(jù)ARINC664規(guī)范對終端系統(tǒng)的要求,在參考了參考文獻(xiàn)[2]對終端協(xié)議芯片的設(shè)計(jì)和相關(guān)成熟產(chǎn)品的基礎(chǔ)上,提出一種AFDX終端接口卡的設(shè)計(jì)方案。該接口卡性能特點(diǎn)為:采用Stratix II系列芯片實(shí)現(xiàn)協(xié)議棧主要功能,可以實(shí)現(xiàn)256個傳輸虛鏈路(最多2 048個接收虛鏈路);獨(dú)立的MAC核簡化了設(shè)計(jì),保證了系統(tǒng)的穩(wěn)定性和100 Mb/s的傳輸速率;PCI總線可實(shí)現(xiàn)132~264 Mb/s的高速數(shù)據(jù)傳輸,最大限度地滿足接口卡對時延的性能要求;2個100/10 Mb/s端口,實(shí)現(xiàn)全雙工的雙冗余通道。AFDX終端接口硬件框圖如圖1所示。

模塊是系統(tǒng)的核心協(xié)議芯片,實(shí)現(xiàn)AFDX協(xié)議棧的主要功能,包括流量整形、虛鏈路調(diào)度、完整性檢查、冗余管理等。MAC模塊連接物理層和,為數(shù)據(jù)的發(fā)送和接收提供數(shù)據(jù)接口和控制接口,控制PHY進(jìn)行發(fā)送和接收。PHY模塊實(shí)現(xiàn)以太網(wǎng)的物理層接口功能。PCI接口電路是主機(jī)連接AFDX終端接口卡的橋梁,提供主機(jī)和接口卡間高速、雙向交互數(shù)據(jù)的接口。CPU模塊是系統(tǒng)的核心控制模塊,協(xié)調(diào)各模塊之間的工作,實(shí)現(xiàn)AFDX協(xié)議棧UDP、IP層的功能。

本文引用地址:http://2s4d.com/article/201706/349165.htm

2 AFDX終端接口卡的關(guān)鍵模塊設(shè)計(jì)

2.1 FPGA芯片設(shè)計(jì)

航空電子系統(tǒng)的運(yùn)行環(huán)境特殊,對AFDX終端接口卡芯片的性能參數(shù)、工作溫度和穩(wěn)定性的要求高,因此,應(yīng)選用集成度高、邏輯資源和存儲器資源豐富、速度快、可以完成復(fù)雜的時序與組合邏輯電路功能的芯片。普通商業(yè)級的FPGA無法勝任,必須要采用工業(yè)級FPGA。綜合考慮各方面因素,本接口卡選用Altera公司Stratix II EP2S180系列FPGA。FPGA芯片的內(nèi)部功能結(jié)構(gòu)如圖2所示。

配置數(shù)據(jù)存儲器在片內(nèi)控制器的作用下完成終端接口卡的初始化,對有關(guān)硬件進(jìn)行配置。初始化完成后,即可進(jìn)行數(shù)據(jù)的發(fā)送和接收工作。發(fā)送數(shù)據(jù)時,CPU模塊經(jīng)PCI接口通過DMA方式,將航空電子系統(tǒng)中的數(shù)據(jù)幀傳送到發(fā)送數(shù)據(jù)緩存器中;發(fā)送模塊按照調(diào)度算法將數(shù)據(jù)幀調(diào)度到相應(yīng)VL中,為數(shù)據(jù)幀添加序列號(SN)后,同時發(fā)往MAC A和MAC B;接收數(shù)據(jù)時,PHY模塊將數(shù)據(jù)幀發(fā)送至MAC模塊(MAC A和MAC B),經(jīng)MAC模塊CRC校驗(yàn)后發(fā)送至接收模塊。接收模塊將MAC模塊傳來的數(shù)據(jù)存入自身緩存中,并進(jìn)行完整性檢查和冗余管理;CPU檢測到已收到新數(shù)據(jù)幀后啟動DMA,將數(shù)據(jù)幀送至航空電子系統(tǒng)。數(shù)據(jù)緩存器用于存儲發(fā)送和接收過程中的數(shù)據(jù)。

2.1.1 接收模塊

數(shù)據(jù)接收模塊負(fù)責(zé)接收從MAC送來的數(shù)據(jù),實(shí)現(xiàn)完整性檢查,消除從冗余通道接收的重復(fù)有效幀。該模塊包括完整性檢查模塊、冗余檢查模塊、SN表和包分棟器。

完整性檢查模塊校驗(yàn)每個從MAC模塊傳來的接收幀是否具有該VL所期待的SN。冗余檢查模塊接收所有經(jīng)過完整性檢查的合法幀,若接收到兩個具有相同SN號的幀時,將轉(zhuǎn)發(fā)先接收到的,然后丟棄第二個。SN表存儲接口卡各接收虛鏈路最后收到幀的SN,用于完整性檢查[2]。VL號映射表存儲各接收VL的邏輯VL號與物理VL號的對應(yīng)關(guān)系。查詢該映射表,可得到VL的邏輯VL號所對應(yīng)的物理VL號。包分揀器根據(jù)VL號判斷到來的幀屬于哪條虛鏈路,并將該幀存入該虛鏈路對應(yīng)的數(shù)據(jù)接收緩存中[3]。

2.1.2 發(fā)送模塊

發(fā)送模塊實(shí)現(xiàn)流量整形、多路復(fù)用及傳輸端冗余控制(TRC)功能。該模塊包括:寄存器模塊、虛鏈路調(diào)度模塊、傳輸端冗余控制。

寄存器模塊存儲發(fā)送模塊所用到的信息,如VL的BAG值(帶寬分配間隔)、Lmax值(最大幀長度)等。虛鏈路調(diào)度模塊由整形模塊和多路復(fù)用模塊組成。為消除虛鏈路相互競爭引入的抖動,本設(shè)計(jì)的虛鏈路調(diào)度方案使用周期為125 μs的靜態(tài)調(diào)度方法。整形模塊負(fù)責(zé)確保每一條VL都遵守它所分配的帶寬限制,控制并監(jiān)視BAG和Jitter定時器,使數(shù)據(jù)流以比較均勻的速度向外發(fā)送,限制VL上的突發(fā)流量。通過多路復(fù)用技術(shù)將整形后的虛鏈路的幀合并到一條物理鏈路上,并確保多路復(fù)用后輸出的抖動在可接受的范圍內(nèi)。傳輸端冗余控制(TRC)模塊的主要作用是根據(jù)調(diào)度模塊的輸入決定將要傳送幀的目的地,可以只傳送給MAC A和MAC B中的一個,也可以同時傳送給MAC A和MAC B。

2.2 MAC模塊

為簡化設(shè)計(jì),本系統(tǒng)采用ACTEL公司的兩個Core10/100 Ethernet IP核建立兩個獨(dú)立的通道。該IP核具有100 Mb/s的傳輸速率,已經(jīng)在實(shí)驗(yàn)和實(shí)際應(yīng)用中多次驗(yàn)證符合IEEE802.3標(biāo)準(zhǔn)和ARINC664規(guī)范,可較好地實(shí)現(xiàn)MAC功能,其主要組成模塊及關(guān)系如圖3所示[4]。

控制、狀態(tài)寄存器及控制邏輯(CSR)模塊向外部模塊提供控制接口和MII管理接口,包含控制寄存器、狀態(tài)寄存器及控制邏輯。主機(jī)通過CSR模塊實(shí)現(xiàn)對Core10/100的中斷控制和電源管理,從而達(dá)到控制IP核的目的。數(shù)據(jù)控制模塊將外部模塊需要發(fā)送的數(shù)據(jù)存入內(nèi)部的發(fā)送FIFO中,等待發(fā)送,并自動使用CPU間隙將接收FIFO中收到的數(shù)據(jù)發(fā)往外部模塊。發(fā)送、接收FIFO分別用于暫存待發(fā)送的數(shù)據(jù)和接收到的數(shù)據(jù),為外部存儲器工作于FIFO模式提供接口。發(fā)送及接收控制模塊作為發(fā)送及接收的MII接口,控制PHY芯片進(jìn)行數(shù)據(jù)的發(fā)送與接收。發(fā)送控制模塊從發(fā)送FIFO中讀取待發(fā)送數(shù)據(jù),形成幀,并通過MII接口發(fā)送數(shù)據(jù)幀;接收控制模塊通過接收MII把數(shù)據(jù)從外部PHY設(shè)備傳送到接收數(shù)據(jù)存儲器中,并完成地址過濾。

主機(jī)與IP核之間的數(shù)據(jù)交換是通過FIFO緩存器進(jìn)行的。數(shù)據(jù)交換包括發(fā)送和接收兩個獨(dú)立的過程,這兩個過程都存在三種狀態(tài):運(yùn)行、終止和暫停。發(fā)送和接收進(jìn)程各有一個描述符列表,位置由CSR中的寄存器來定義。Core10/100執(zhí)行載波監(jiān)聽多路訪問/沖突檢測(CSMA/CD)算法來解決沖突[4]。其算法流程如圖4所示。


2.3 PCI接口模塊

2.3.1 硬件設(shè)計(jì)

為避免設(shè)計(jì)所有PCI總線協(xié)議需要的接口邏輯,減輕工作難度,本設(shè)計(jì)采用PLX公司的64 bit總線控制器PCI9656。PCI9656與FPGA連接如圖5所示。

PCI9656符合PCI V2.2協(xié)議,支持32/64 bit、33/66 MHz時鐘,采用流水線架構(gòu)技術(shù)可以支持7個外部主控器,支持多路復(fù)用,可直接生成所有的控制、地址和數(shù)據(jù)信號以驅(qū)動PCI總線,而不需要額外驅(qū)動電路。

根據(jù)需要,將PCI地址空間劃分為用戶配置空間、發(fā)送緩沖空間和接收緩沖空間。EEPROM作為配置信息存儲器,在控制器的作用下完成對PCI設(shè)備的初始化配置。本設(shè)計(jì)采用0類配置空間,需配置的信息包括設(shè)備的廠商、類別、設(shè)備所申請的存儲器和I/O空間、設(shè)備的中斷信息及工作方式等。

申請局部總線控制權(quán)時,PCI9656使LHOLD變高;FPGA檢測到LHOLD變高后,立即回應(yīng)LHOLDA,總線申請成功。讀數(shù)據(jù)時,PCI9656先使LW/R變低,下一個周期使ADS變低,并根據(jù)地址高兩位進(jìn)行譯碼,選擇要訪問的SDRAM控制器模塊,使能SDRAM;當(dāng)FPGA發(fā)出REDAY信號有效后,從SDRAM中讀數(shù)據(jù)。寫數(shù)據(jù)時,PCI9656使LW/R變高,下一個周期使ADS變低,此時地址有效,并根據(jù)地址高兩位進(jìn)行譯碼,選擇要訪問的SDRAM控制器模塊,使能SDRAM;當(dāng)FPGA發(fā)出REDAY信號有效后,把數(shù)據(jù)寫到SDRAM中。當(dāng)數(shù)據(jù)傳輸結(jié)束時,PCI9656使REDAY信號無效、LW/R變高,下一個時鐘周期撤銷LHOLD,再下一個周期FPGA會撤銷LHOLDA信號,至此取消總線成功。

2.3.2 驅(qū)動程序

本設(shè)計(jì)設(shè)備驅(qū)動程序采用微軟的WDM驅(qū)動程序模式,實(shí)現(xiàn)即插即用。驅(qū)動程序的開發(fā)和調(diào)試采用DriverStudio開發(fā)工具包中的DriverWorks和SoftICE作為主要的工具。

設(shè)計(jì)驅(qū)動程序主要需要考慮四方面因素:PCI設(shè)備的硬件訪問;中斷處理;DMA數(shù)據(jù)傳輸和安全性、穩(wěn)定性、可靠性。為實(shí)現(xiàn)AFDX對數(shù)據(jù)傳輸的要求,設(shè)備驅(qū)動程序采用中斷方式。為滿足快速傳送數(shù)據(jù)、I/O響應(yīng)時間短和CPU額外開銷小的需求,采用DMA的塊傳輸方式進(jìn)行數(shù)據(jù)傳輸。為保證驅(qū)動程序的可靠性和穩(wěn)定性,設(shè)計(jì)采用Windows 98/2000/XP內(nèi)核模式的標(biāo)準(zhǔn)驅(qū)動程序例程。

驅(qū)動程序可分為兩部分,一部分用于PCI9656各個配置寄存器賦值并初始化;另一部分用于主程序,用來完成PCI9656與主機(jī)CPU之間的數(shù)據(jù)交互。使用DriverStudio中的DriverWizard創(chuàng)建PCI驅(qū)動程序框架,采用VC++6.0的面向?qū)ο笤O(shè)計(jì)思想創(chuàng)建了接口芯片抽象類C_PCI9656,將PCI9656芯片的屬性和需實(shí)現(xiàn)的操作封裝起來。在頭文件Register_PCI9656.h中定義PCI9656提供的內(nèi)部寄存器,包括PCI配置寄存器、DMA寄存器、運(yùn)行時間寄存器和消息隊(duì)列寄存器等。資源分配通過IRP(I/O Request Packe)例程實(shí)現(xiàn)。DMA傳輸流程如圖6所示[5]。

首先在應(yīng)用程序中創(chuàng)建一個事件對象,將該事件傳遞給驅(qū)動程序并產(chǎn)生中斷,中斷例程判讀中斷來源。若是Local中斷,則應(yīng)用程序發(fā)送DMA讀寫命令,該操作將IRP傳遞給驅(qū)動調(diào)用SerialRead()或SerialWrite()例程,運(yùn)行回調(diào)例程OnDmaReady()判定是否符合DMA傳輸條件并開啟StartDMA()例程實(shí)現(xiàn)DMA傳輸,產(chǎn)生DMA中斷;若是DMA中斷,則調(diào)用OnDmaReady()例程判定DMA傳輸是否結(jié)束,未結(jié)束則再一次開啟StartDMA()例程繼續(xù)DMA傳輸并產(chǎn)生中斷。如此循環(huán)一直到完成所有的DMA傳輸,應(yīng)用程序結(jié)束線程。為提高設(shè)備驅(qū)動程序的安全性和可靠性,在設(shè)計(jì)中采用自旋鎖來保護(hù)共享數(shù)據(jù)和設(shè)備寄存器,編寫程序時嚴(yán)格遵循編程規(guī)范和C++語言標(biāo)準(zhǔn)語法格式。

3 仿真與測試

基于本文的設(shè)計(jì)方案,借助Altera公司的Quartus II軟件對AFDX接口卡的關(guān)鍵模塊進(jìn)行了功能和時序仿真。發(fā)送模塊時序仿真如圖7所示。當(dāng)主機(jī)需要發(fā)送數(shù)據(jù)時,通過給發(fā)送模塊發(fā)送一個脈沖信號TxStartFrm來指示數(shù)據(jù)幀發(fā)送的開始,發(fā)送模塊檢測到這個脈沖后使發(fā)送使能MTxEn有效,開始數(shù)據(jù)的發(fā)送。由圖7可知,發(fā)送模塊發(fā)送的數(shù)據(jù)與待發(fā)送數(shù)據(jù)一致,較好地完成了發(fā)送模塊的功能。

接收模塊時序仿真如圖8所示。當(dāng)接收開始信號RxStartFrm有效時,RxValid信號被置為可用狀態(tài),開始數(shù)據(jù)的接收過程。接收MRxD表示從MAC發(fā)送過來的數(shù)據(jù)。由圖8可知,接收模塊工作正常,較好地完成了接收模塊的功能,滿足設(shè)計(jì)的要求。

在對系統(tǒng)的功能和時序進(jìn)行仿真并保證仿真正確的基礎(chǔ)上,將協(xié)議芯片的設(shè)計(jì)下載到Altera公司生產(chǎn)的Stratix II系列的EP2S180F1020C5中,并使用Sniffer協(xié)議分析軟件進(jìn)行在線系統(tǒng)驗(yàn)證。驗(yàn)證表明,該協(xié)議芯片最高工作頻率可達(dá)152.64 MHz,滿足AFDX協(xié)議對時延和抖動的要求,且能正確、完整地完成發(fā)送和接收功能,通信正常。使用SoftICE調(diào)試了PCI驅(qū)動程序,結(jié)果表明,驅(qū)動程序能正確加載,能實(shí)現(xiàn)對硬件的正確驅(qū)動和控制管理,中斷正常,當(dāng)PCI傳輸大量的數(shù)據(jù)時,數(shù)據(jù)傳輸也正確。

本文根據(jù)ARINC664規(guī)范和AFDX協(xié)議對接口卡時延和抖動的性能要求,提出了一種基于FPGA和PCI的AFDX終端接口卡設(shè)計(jì)方案,給出了關(guān)鍵模塊的詳細(xì)設(shè)計(jì),編寫了總線接口驅(qū)動程序。使用Quartus II軟件對各功能模塊進(jìn)行了功能和時序仿真,并搭建測試平臺進(jìn)行初步測試驗(yàn)證。結(jié)果表明,本文提出的設(shè)計(jì)方案可行性好,穩(wěn)定性高,傳輸速度快,時延小,抖動始終小于最大抖動,符合要求,為下一步的研究開發(fā)提供了可借鑒經(jīng)驗(yàn)。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉