《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA和PCI的AFDX終端接口卡設(shè)計(jì)
基于FPGA和PCI的AFDX終端接口卡設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第8期
郭利鋒, 王 勇, 尹 路, 李俊鵬
(空軍工程大學(xué) 工程學(xué)院, 陜西 西安 710038)
摘要: 航空電子全雙工交換式以太網(wǎng)(AFDX)是在商用以太網(wǎng)的基礎(chǔ)上經(jīng)過改進(jìn)實(shí)時(shí)性和可靠性建立起來(lái)的。依據(jù)ARINC664規(guī)范第7部分對(duì)終端接口卡時(shí)延和抖動(dòng)的性能要求,提出基于FPGA和PCI的AFDX終端接口卡的整體設(shè)計(jì)方案,對(duì)發(fā)送和接收模塊等關(guān)鍵模塊進(jìn)行了設(shè)計(jì),并分析了PCI接口驅(qū)動(dòng)程序。測(cè)試結(jié)果表明,該接口卡實(shí)時(shí)性好、傳輸速率高、穩(wěn)定可靠,符合AFDX協(xié)議標(biāo)準(zhǔn)。
中圖分類號(hào): TN915.03
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)08-124-04
The design of AFDX end system card based on FPGA and PCI
Guo Lifeng, Wang Yong, Yin Lu, Li Junpeng
The Engineering College, Air Force Engineering University, Xi’an 710038, China
Abstract: Avionics full duplex switched Ethernet was based on the commercial Ethernet, which was established by improving real-time and reliability. According to the time-delay and the jitter performance demand of the ARINC 664 specification Part 7, this paper put forward a holistic scheme of the AFDX end system card based on FPGA and PCI. Also, introduced the key module’s design of the transmitter and the receiver etc., and analyzed the driver procedure of the PCI interface. Testing result shows that this card has better real-time performance, high communication performance and stability, meets the standard of the AFDX protocol.
Key words : AFDX; end system card; virtual link


    航空電子系統(tǒng)的發(fā)展已成為現(xiàn)代飛機(jī)性能不斷提高的重要因素。以ARINC429和1553B為代表的現(xiàn)役機(jī)載總線已不能滿足現(xiàn)代航空電子系統(tǒng)對(duì)通信速度和帶寬的要求。美國(guó)航空電子技術(shù)委員會(huì)(AEEC)提出了航空電子全雙工交換式以太網(wǎng)AFDX(Avionics Full Duplex Switched Ethernet),它是在商用交換式以太網(wǎng)的基礎(chǔ)上,經(jīng)過實(shí)時(shí)性和可靠性等方面的改進(jìn)建立起來(lái)的,符合IEEE802.3和ARINC664規(guī)范。
    AFDX是一種全雙工、高數(shù)據(jù)率、雙冗余的總線,具有傳輸速度快、易擴(kuò)展、可維護(hù)性好等優(yōu)點(diǎn),可以有效減少系統(tǒng)布線,減輕飛機(jī)重量。不僅能滿足航空電子系統(tǒng)數(shù)據(jù)通信對(duì)帶寬的需求,并已成功應(yīng)用于A380和B787,也是我國(guó)新研制大型客機(jī)的理想選擇[1]。作為AFDX的重要組成部分,終端接口卡性能的好壞直接影響到AFDX網(wǎng)絡(luò)的整體性能。因此,設(shè)計(jì)可靠性高、實(shí)時(shí)性好、滿足實(shí)際應(yīng)用需求的AFDX終端接口卡具有廣闊的應(yīng)用前景和良好的經(jīng)濟(jì)、軍事效益。
1 AFDX終端接口卡總體設(shè)計(jì)
    依據(jù)ARINC664規(guī)范對(duì)終端系統(tǒng)的要求,在參考了參考文獻(xiàn)[2]對(duì)終端協(xié)議芯片的設(shè)計(jì)和相關(guān)成熟產(chǎn)品的基礎(chǔ)上,提出一種AFDX終端接口卡的設(shè)計(jì)方案。該接口卡性能特點(diǎn)為:采用Stratix II系列FPGA芯片實(shí)現(xiàn)協(xié)議棧主要功能,可以實(shí)現(xiàn)256個(gè)傳輸虛鏈路(最多2 048個(gè)接收虛鏈路);獨(dú)立的MAC核簡(jiǎn)化了設(shè)計(jì),保證了系統(tǒng)的穩(wěn)定性和100 Mb/s的傳輸速率;PCI總線可實(shí)現(xiàn)132~264 Mb/s的高速數(shù)據(jù)傳輸,最大限度地滿足接口卡對(duì)時(shí)延的性能要求;2個(gè)100/10 Mb/s端口,實(shí)現(xiàn)全雙工的雙冗余通道。AFDX終端接口硬件框圖如圖1所示。

    FPGA模塊是系統(tǒng)的核心協(xié)議芯片,實(shí)現(xiàn)AFDX協(xié)議棧的主要功能,包括流量整形、虛鏈路調(diào)度、完整性檢查、冗余管理等。MAC模塊連接物理層和FPGA,為數(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層的功能。
2 AFDX終端接口卡的關(guān)鍵模塊設(shè)計(jì)
2.1 FPGA芯片設(shè)計(jì)

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

 

 

    配置數(shù)據(jù)存儲(chǔ)器在片內(nèi)控制器的作用下完成終端接口卡的初始化,對(duì)有關(guān)硬件進(jìn)行配置。初始化完成后,即可進(jìn)行數(shù)據(jù)的發(fā)送和接收工作。發(fā)送數(shù)據(jù)時(shí),CPU模塊經(jīng)PCI接口通過DMA方式,將航空電子系統(tǒng)中的數(shù)據(jù)幀傳送到發(fā)送數(shù)據(jù)緩存器中;發(fā)送模塊按照調(diào)度算法將數(shù)據(jù)幀調(diào)度到相應(yīng)VL中,為數(shù)據(jù)幀添加序列號(hào)(SN)后,同時(shí)發(fā)往MAC A和MAC B;接收數(shù)據(jù)時(shí),PHY模塊將數(shù)據(jù)幀發(fā)送至MAC模塊(MAC A和MAC B),經(jīng)MAC模塊CRC校驗(yàn)后發(fā)送至接收模塊。接收模塊將MAC模塊傳來(lái)的數(shù)據(jù)存入自身緩存中,并進(jìn)行完整性檢查和冗余管理;CPU檢測(cè)到已收到新數(shù)據(jù)幀后啟動(dòng)DMA,將數(shù)據(jù)幀送至航空電子系統(tǒng)。數(shù)據(jù)緩存器用于存儲(chǔ)發(fā)送和接收過程中的數(shù)據(jù)。
2.1.1  接收模塊
 數(shù)據(jù)接收模塊負(fù)責(zé)接收從MAC送來(lái)的數(shù)據(jù),實(shí)現(xiàn)完整性檢查,消除從冗余通道接收的重復(fù)有效幀。該模塊包括完整性檢查模塊、冗余檢查模塊、SN表和包分棟器。
    完整性檢查模塊校驗(yàn)每個(gè)從MAC模塊傳來(lái)的接收幀是否具有該VL所期待的SN。冗余檢查模塊接收所有經(jīng)過完整性檢查的合法幀,若接收到兩個(gè)具有相同SN號(hào)的幀時(shí),將轉(zhuǎn)發(fā)先接收到的,然后丟棄第二個(gè)。SN表存儲(chǔ)接口卡各接收虛鏈路最后收到幀的SN,用于完整性檢查[2]。VL號(hào)映射表存儲(chǔ)各接收VL的邏輯VL號(hào)與物理VL號(hào)的對(duì)應(yīng)關(guān)系。查詢?cè)撚成浔恚傻玫絍L的邏輯VL號(hào)所對(duì)應(yīng)的物理VL號(hào)。包分揀器根據(jù)VL號(hào)判斷到來(lái)的幀屬于哪條虛鏈路,并將該幀存入該虛鏈路對(duì)應(yīng)的數(shù)據(jù)接收緩存中[3]。
2.1.2 發(fā)送模塊
    發(fā)送模塊實(shí)現(xiàn)流量整形、多路復(fù)用及傳輸端冗余控制(TRC)功能。該模塊包括:寄存器模塊、虛鏈路調(diào)度模塊、傳輸端冗余控制。
    寄存器模塊存儲(chǔ)發(fā)送模塊所用到的信息,如VL的BAG值(帶寬分配間隔)、Lmax值(最大幀長(zhǎng)度)等。虛鏈路調(diào)度模塊由整形模塊和多路復(fù)用模塊組成。為消除虛鏈路相互競(jìng)爭(zhēng)引入的抖動(dòng),本設(shè)計(jì)的虛鏈路調(diào)度方案使用周期為125 μs的靜態(tài)調(diào)度方法。整形模塊負(fù)責(zé)確保每一條VL都遵守它所分配的帶寬限制,控制并監(jiān)視BAG和Jitter定時(shí)器,使數(shù)據(jù)流以比較均勻的速度向外發(fā)送,限制VL上的突發(fā)流量。通過多路復(fù)用技術(shù)將整形后的虛鏈路的幀合并到一條物理鏈路上,并確保多路復(fù)用后輸出的抖動(dòng)在可接受的范圍內(nèi)。傳輸端冗余控制(TRC)模塊的主要作用是根據(jù)調(diào)度模塊的輸入決定將要傳送幀的目的地,可以只傳送給MAC A和MAC B中的一個(gè),也可以同時(shí)傳送給MAC A和MAC B。
2.2 MAC模塊
 為簡(jiǎn)化設(shè)計(jì),本系統(tǒng)采用ACTEL公司的兩個(gè)Core10/100 Ethernet IP核建立兩個(gè)獨(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)對(duì)Core10/100的中斷控制和電源管理,從而達(dá)到控制IP核的目的。數(shù)據(jù)控制模塊將外部模塊需要發(fā)送的數(shù)據(jù)存入內(nèi)部的發(fā)送FIFO中,等待發(fā)送,并自動(dòng)使用CPU間隙將接收FIFO中收到的數(shù)據(jù)發(fā)往外部模塊。發(fā)送、接收FIFO分別用于暫存待發(fā)送的數(shù)據(jù)和接收到的數(shù)據(jù),為外部存儲(chǔ)器工作于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ù)存儲(chǔ)器中,并完成地址過濾。
     主機(jī)與IP核之間的數(shù)據(jù)交換是通過FIFO緩存器進(jìn)行的。數(shù)據(jù)交換包括發(fā)送和接收兩個(gè)獨(dú)立的過程,這兩個(gè)過程都存在三種狀態(tài):運(yùn)行、終止和暫停。發(fā)送和接收進(jìn)程各有一個(gè)描述符列表,位置由CSR中的寄存器來(lái)定義。Core10/100執(zhí)行載波監(jiān)聽多路訪問/沖突檢測(cè)(CSMA/CD)算法來(lái)解決沖突[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時(shí)鐘,采用流水線架構(gòu)技術(shù)可以支持7個(gè)外部主控器,支持多路復(fù)用,可直接生成所有的控制、地址和數(shù)據(jù)信號(hào)以驅(qū)動(dòng)PCI總線,而不需要額外驅(qū)動(dòng)電路。
    根據(jù)需要,將PCI地址空間劃分為用戶配置空間、發(fā)送緩沖空間和接收緩沖空間。EEPROM作為配置信息存儲(chǔ)器,在控制器的作用下完成對(duì)PCI設(shè)備的初始化配置。本設(shè)計(jì)采用0類配置空間,需配置的信息包括設(shè)備的廠商、類別、設(shè)備所申請(qǐng)的存儲(chǔ)器和I/O空間、設(shè)備的中斷信息及工作方式等。
 申請(qǐng)局部總線控制權(quán)時(shí),PCI9656使LHOLD變高;FPGA檢測(cè)到LHOLD變高后,立即回應(yīng)LHOLDA,總線申請(qǐng)成功。讀數(shù)據(jù)時(shí),PCI9656先使LW/R變低,下一個(gè)周期使ADS變低,并根據(jù)地址高兩位進(jìn)行譯碼,選擇要訪問的SDRAM控制器模塊,使能SDRAM;當(dāng)FPGA發(fā)出REDAY信號(hào)有效后,從SDRAM中讀數(shù)據(jù)。寫數(shù)據(jù)時(shí),PCI9656使LW/R變高,下一個(gè)周期使ADS變低,此時(shí)地址有效,并根據(jù)地址高兩位進(jìn)行譯碼,選擇要訪問的SDRAM控制器模塊,使能SDRAM;當(dāng)FPGA發(fā)出REDAY信號(hào)有效后,把數(shù)據(jù)寫到SDRAM中。當(dāng)數(shù)據(jù)傳輸結(jié)束時(shí),PCI9656使REDAY信號(hào)無(wú)效、LW/R變高,下一個(gè)時(shí)鐘周期撤銷LHOLD,再下一個(gè)周期FPGA會(huì)撤銷LHOLDA信號(hào),至此取消總線成功。
2.3.2 驅(qū)動(dòng)程序
    本設(shè)計(jì)設(shè)備驅(qū)動(dòng)程序采用微軟的WDM驅(qū)動(dòng)程序模式,實(shí)現(xiàn)即插即用。驅(qū)動(dòng)程序的開發(fā)和調(diào)試采用DriverStudio開發(fā)工具包中的DriverWorks和SoftICE作為主要的工具。
    設(shè)計(jì)驅(qū)動(dòng)程序主要需要考慮四方面因素:PCI設(shè)備的硬件訪問;中斷處理;DMA數(shù)據(jù)傳輸和安全性、穩(wěn)定性、可靠性。為實(shí)現(xiàn)AFDX對(duì)數(shù)據(jù)傳輸實(shí)時(shí)性的要求,設(shè)備驅(qū)動(dòng)程序采用中斷方式。為滿足快速傳送數(shù)據(jù)、I/O響應(yīng)時(shí)間短和CPU額外開銷小的需求,采用DMA的塊傳輸方式進(jìn)行數(shù)據(jù)傳輸。為保證驅(qū)動(dòng)程序的可靠性和穩(wěn)定性,設(shè)計(jì)采用Windows 98/2000/XP內(nèi)核模式的標(biāo)準(zhǔn)驅(qū)動(dòng)程序例程。
 驅(qū)動(dòng)程序可分為兩部分,一部分用于PCI9656各個(gè)配置寄存器賦值并初始化;另一部分用于主程序,用來(lái)完成PCI9656與主機(jī)CPU之間的數(shù)據(jù)交互。使用DriverStudio中的DriverWizard創(chuàng)建PCI驅(qū)動(dòng)程序框架,采用VC++6.0的面向?qū)ο笤O(shè)計(jì)思想創(chuàng)建了接口芯片抽象類C_PCI9656,將PCI9656芯片的屬性和需實(shí)現(xiàn)的操作封裝起來(lái)。在頭文件Register_PCI9656.h中定義PCI9656提供的內(nèi)部寄存器,包括PCI配置寄存器、DMA寄存器、運(yùn)行時(shí)間寄存器和消息隊(duì)列寄存器等。資源分配通過IRP(I/O Request Packe)例程實(shí)現(xiàn)。DMA傳輸流程如圖6所示[5]。

    首先在應(yīng)用程序中創(chuàng)建一個(gè)事件對(duì)象,將該事件傳遞給驅(qū)動(dòng)程序并產(chǎn)生中斷,中斷例程判讀中斷來(lái)源。若是Local中斷,則應(yīng)用程序發(fā)送DMA讀寫命令,該操作將IRP傳遞給驅(qū)動(dòng)調(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ū)動(dòng)程序的安全性和可靠性,在設(shè)計(jì)中采用自旋鎖來(lái)保護(hù)共享數(shù)據(jù)和設(shè)備寄存器,編寫程序時(shí)嚴(yán)格遵循編程規(guī)范和C++語(yǔ)言標(biāo)準(zhǔn)語(yǔ)法格式。
3 仿真與測(cè)試
  基于本文的設(shè)計(jì)方案,借助Altera公司的Quartus II軟件對(duì)AFDX接口卡的關(guān)鍵模塊進(jìn)行了功能和時(shí)序仿真。發(fā)送模塊時(shí)序仿真如圖7所示。當(dāng)主機(jī)需要發(fā)送數(shù)據(jù)時(shí),通過給發(fā)送模塊發(fā)送一個(gè)脈沖信號(hào)TxStartFrm來(lái)指示數(shù)據(jù)幀發(fā)送的開始,發(fā)送模塊檢測(cè)到這個(gè)脈沖后使發(fā)送使能MTxEn有效,開始數(shù)據(jù)的發(fā)送。由圖7可知,發(fā)送模塊發(fā)送的數(shù)據(jù)與待發(fā)送數(shù)據(jù)一致,較好地完成了發(fā)送模塊的功能。

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

    在對(duì)系統(tǒng)的功能和時(shí)序進(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é)議對(duì)時(shí)延和抖動(dòng)的要求,且能正確、完整地完成發(fā)送和接收功能,通信正常。使用SoftICE調(diào)試了PCI驅(qū)動(dòng)程序,結(jié)果表明,驅(qū)動(dòng)程序能正確加載,能實(shí)現(xiàn)對(duì)硬件的正確驅(qū)動(dòng)和控制管理,中斷正常,當(dāng)PCI傳輸大量的數(shù)據(jù)時(shí),數(shù)據(jù)傳輸也正確。
    本文根據(jù)ARINC664規(guī)范和AFDX協(xié)議對(duì)接口卡時(shí)延和抖動(dòng)的性能要求,提出了一種基于FPGA和PCI的AFDX終端接口卡設(shè)計(jì)方案,給出了關(guān)鍵模塊的詳細(xì)設(shè)計(jì),編寫了總線接口驅(qū)動(dòng)程序。使用Quartus II軟件對(duì)各功能模塊進(jìn)行了功能和時(shí)序仿真,并搭建測(cè)試平臺(tái)進(jìn)行初步測(cè)試驗(yàn)證。結(jié)果表明,本文提出的設(shè)計(jì)方案可行性好,穩(wěn)定性高,傳輸速度快,時(shí)延小,抖動(dòng)始終小于最大抖動(dòng),符合要求,為下一步的研究開發(fā)提供了可借鑒經(jīng)驗(yàn)。
參考文獻(xiàn)
[1] 徐科華. AFDX總線網(wǎng)絡(luò)數(shù)據(jù)傳輸分析[J].民用飛機(jī)設(shè)計(jì)與研究,2009(3):35-40.
[2] 張志,翟正軍,姚方圓. 基于FPGA的AFDX端系統(tǒng)協(xié)議芯片的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2010,18(2):422-442.
[3] 任向隆,馬捷中. 航空電子全雙工交換式以太網(wǎng)終端系統(tǒng)研究[J].計(jì)算機(jī)測(cè)量與控制,2009,17(5):924-926.
[4] Actel Corporation.Core 10/100 ethernet media access controller,actel corporation [EB/OL].http://www.actel.com.2005.
[5] 尹朕昊,詹亞鋒. PCI總線中DMA高速數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)[J].電腦開發(fā)與應(yīng)用,2009,22(11): 31-32.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。