基于USB接口的多功能ARINC429總線接口板設(shè)計
摘 要: 提出了一種基于USB接口的多功能ARINC429總線接口板設(shè)計方案。通過采用SoPC技術(shù)、USB協(xié)議芯片、基于VHDL的自定義429總線IP核設(shè)計以及基于SD卡的存儲設(shè)計,快速構(gòu)建了系統(tǒng)硬件,在Nios II開發(fā)環(huán)境下采用C語言開發(fā)了系統(tǒng)核心軟件,實現(xiàn)了系統(tǒng)的總線通信和數(shù)據(jù)存儲多功能設(shè)計。應(yīng)用結(jié)果表明,該系統(tǒng)具有良好的性能、便攜性和經(jīng)濟(jì)效益。
關(guān)鍵詞: USB;ARINC429;SoPC
當(dāng)前,由于ARINC429總線在航空航天等領(lǐng)域應(yīng)用極為廣泛,國內(nèi)出現(xiàn)了各種針對不同平臺和接口的ARINC429接口板,包括ISA、PCI、USB、GPIB和VXI等接口類型。這些板卡大多采用專用的協(xié)議處理芯片(如HI-8585、DEI1016芯片等)來進(jìn)行ARINC429總線通信處理[1],也有部分板卡采用了自主協(xié)議芯片或FPGA來實現(xiàn)[2]。但是,它們的功能相對單一,一般只用于總線數(shù)據(jù)收發(fā)處理,自身不具備數(shù)據(jù)存儲功能,必須由主機軟件進(jìn)行實時數(shù)據(jù)的記錄、處理和存儲,對于一些需要實時記錄和存儲多路429數(shù)據(jù),同時要求較高保密性、便攜性的場合來說,存在一定的局限性。因此,本文提出了一種基于USB接口的多功能ARINC429總線接口板設(shè)計方案,設(shè)計了一種既可以通過USB進(jìn)行多路ARINC429總線通信,又具備數(shù)據(jù)存儲功能的多用途接口板。
1 硬件設(shè)計
該板卡外形設(shè)計緊湊,體積與普通USB硬盤相當(dāng),便于攜帶,功耗較低,采用USB總線供電,無須外置電源。板卡核心為基于FPGA的嵌入式微計算機系統(tǒng),主要功能包括USB總線事務(wù)處理、429總線通信和數(shù)據(jù)存取處理,系統(tǒng)組成和結(jié)構(gòu)如圖1所示,分為微控制器模塊、USB協(xié)議處理模塊、ARINC429總線協(xié)議處理模塊、SD卡模塊和電源模塊。
1.1 微控制器模塊
微控制器模塊是系統(tǒng)的控制中心,它包括FPGA芯片、50 MHz有源晶振、JTAG調(diào)試模塊、4 MB EPCS串行FLASH和16 MB的48LC4M32型SDRAM。其中,F(xiàn)PGA芯片是微控制器模塊的核心,選用了Altera的BGA封裝的EP3C16F256型FPGA,該芯片本身具有可編程、可裁減等特點,通過采用SoPC技術(shù),應(yīng)用Quartus開發(fā)環(huán)境提供的可裁減IP模塊,可在FPGA內(nèi)快速構(gòu)建一個嵌入式微計算機系統(tǒng)來實現(xiàn)系統(tǒng)的復(fù)雜事務(wù)處理功能[3]。FPGA內(nèi)實際應(yīng)用的IP模塊包括:32 bit RISC Nios II CPU、SDRAM控制器、2個SPI主控制器、PIO控制器以及用于軟件調(diào)試及程序引導(dǎo)的JTAG-UART和EPCS-Control等。
通過選用FPGA,采用SoPC技術(shù)定義必要的IP模塊,合理分配芯片資源,在實現(xiàn)系統(tǒng)功能的同時加快了開發(fā)周期,提升了系統(tǒng)性能。
1.2 USB協(xié)議處理模塊
USB協(xié)議處理模塊由FPGA芯片內(nèi)部的PIO控制器、SPI主控制器及CH376芯片組成。
其中,CH376芯片可支持USB設(shè)備方式和USB主機方式,并且內(nèi)置了USB通信協(xié)議的基本固件、SD卡的通信接口固件、FAT16和FAT32等文件系統(tǒng)的管理固件,支持常用的海量存儲設(shè)備和SD卡。CH376芯片支持8 bit并口、SPI接口和異步串口3種通信接口。
在本系統(tǒng)中,CH376芯片工作于USB設(shè)備方式。 FPGA與CH376的通信方式采用SPI方式,為保證與CH376芯片的正常通信,F(xiàn)PGA的SPI設(shè)置為主模式,總線寬度為8 bit,模式為0,高位在前,速率設(shè)置為5 Mb/s(可設(shè)置在2 Mb/s~24 Mb/s之間)。CH376芯片在USB設(shè)備方式下支持5個物理端口,端點0是默認(rèn)端點,支持上傳和下傳,緩沖區(qū)各為8 B;端點1包括上傳端點和下傳端點,緩沖區(qū)各為8 B;端點2包括上傳端點和下傳端點,緩沖區(qū)各為64 B。端點2的上傳端點作為批量數(shù)據(jù)發(fā)送端點,端點2的下傳端點作為批量數(shù)據(jù)接收端點,端點1的上傳端點作為中斷端點,端點1的下傳端點作為輔助端點。根據(jù)板卡工作模式的不同,數(shù)據(jù)傳輸端點也不同,在總線模式下,由于ARINC429總線的收發(fā)速率較慢(最大100 KB),因此數(shù)據(jù)的傳輸采用中斷方式,應(yīng)用CH376芯片的端點1作為數(shù)據(jù)的上傳和下傳端點;在U盤模式下,應(yīng)用端點2批量方式數(shù)據(jù)傳輸。
需要強調(diào)的是,在總線模式下, CH376芯片對數(shù)據(jù)的傳輸是基于中斷方式的,在對其進(jìn)行操作時,F(xiàn)PGA本地端應(yīng)注意對中斷的處理。由于ARINC429總線是全雙工傳輸方式,數(shù)據(jù)的上傳和下傳是獨立的,在數(shù)據(jù)的上傳過程中,應(yīng)關(guān)閉FPGA的中斷,保證數(shù)據(jù)上傳成功后開啟中斷,且在數(shù)據(jù)上傳成功后,CH376將中斷信號INT置“0”,此時,由于FPGA已關(guān)閉中斷,對該中斷不響應(yīng),可采用查詢方式,并對相應(yīng)的寄存器進(jìn)行操作,將INT信號復(fù)位。數(shù)據(jù)的上傳由FPGA的中斷處理函數(shù)完成,在中斷處理函數(shù)中,將USB總線下傳的數(shù)據(jù)發(fā)送至發(fā)送FIFO,以供ARINC429協(xié)議處理模塊發(fā)送。
1.3 ARINC429總線模塊
ARINC429總線模塊主要由ARINC429總線協(xié)議IP核和電平轉(zhuǎn)換電路(HI-8588、HI-8570)組成,可實現(xiàn)429總線的雙極性與AVALON總線之間的轉(zhuǎn)換。ARINC429總線協(xié)議IP核采用VHDL語言設(shè)計,完全自主開發(fā),以自定義IP方式掛接在FPGA內(nèi)的AVALON總線上,其內(nèi)部結(jié)構(gòu)如圖2所示。采用這種設(shè)計方法,可將429總線硬件的控制完全交由CPU軟件處理,降低了硬件設(shè)計的難度,同時也增強了總線控制的靈活性。
IP核的AVALON總線接口模塊的主要任務(wù)是實現(xiàn)AVALON總線信號和FIFO控制信號之間的轉(zhuǎn)換。在發(fā)送數(shù)據(jù)狀態(tài)下,將CPU通過AVALON總線發(fā)送過來的數(shù)據(jù)發(fā)送至FIFO;在接收數(shù)據(jù)狀態(tài)下,它負(fù)責(zé)讀取存放在FIFO中的數(shù)據(jù),并在CPU的控制下,通過AVALON總線將數(shù)據(jù)發(fā)送至CPU。FIFO模塊由發(fā)送FIFO和接收FIFO組成,F(xiàn)IFO數(shù)據(jù)寬度為32 bit,存儲深度為64 bit,主要任務(wù)是緩沖總線的數(shù)據(jù),防止由于CPU未及時響應(yīng)所帶來的數(shù)據(jù)丟失以及由于CPU操作過快造成的總線數(shù)據(jù)堵塞。編碼模塊實時讀取FIFO的數(shù)據(jù),將32 bit并行碼轉(zhuǎn)換為32 bit差分形式的串行碼輸出,再發(fā)送至電平轉(zhuǎn)換電路;解碼模塊接收經(jīng)電平轉(zhuǎn)換電路轉(zhuǎn)換后的總線數(shù)據(jù),將32 bit差分串行碼轉(zhuǎn)換并行碼輸出發(fā)送至FIFO;編、解碼模塊實現(xiàn)了4路ARINC429總線的收發(fā)通信,且通信速率可以配置。
電平轉(zhuǎn)換電路由4片HI-8588和4片HI-8570組成,主要完成雙極性三態(tài)碼和TTL電平差分碼之間的轉(zhuǎn)換。對于輸入,由HI-8588芯片將滿足ARINC429總線電氣特性的串行碼轉(zhuǎn)換為TTL電平差分碼;對于輸出,由HI-8570芯片將接收到的TTL電平差分碼轉(zhuǎn)換為滿足ARINC429總線電氣特性的串行碼。
1.4 SD卡模塊
SD卡作為非易失存儲器,負(fù)責(zé)實時存儲總線數(shù)據(jù)。由于SD卡本身具有價格低廉、存儲容量大、使用簡單、可靠性高和安全性強等優(yōu)點,其可用于對保密性和便攜性要求較高的場合。
系統(tǒng)通過FPGA以SPI方式對SD卡進(jìn)行數(shù)據(jù)訪問,其中,寫入數(shù)據(jù)按特定格式加密存儲,讀出數(shù)據(jù)需依賴專用驅(qū)動和應(yīng)用軟件,以確保安全使用。當(dāng)系統(tǒng)正進(jìn)行ARINC429總線通信時,可以選擇開啟SD卡記錄功能,由FPGA實時地將收發(fā)的總線數(shù)據(jù)寫入SD卡;當(dāng)需要讀取SD卡內(nèi)所存總線數(shù)據(jù)時,可由驅(qū)動軟件關(guān)閉ARINC429總線通信及SD卡記錄功能,通過FPGA將數(shù)據(jù)從SD卡讀出,并通過USB總線發(fā)送至主機供專用應(yīng)用軟件處理。
1.5 電源模塊
電源模塊負(fù)責(zé)將USB總線電源(+5 V)轉(zhuǎn)換為各芯片工作電壓,如1.2 V、3.3 V、2.5 V、-5 V。其中,1.2 V、3.3 V和2.5 V由線性穩(wěn)壓模塊AMS7111系列芯片轉(zhuǎn)換,-5 V電壓由TPS63700型小封裝高效率開關(guān)類電源芯片產(chǎn)生。
2 軟件設(shè)計
系統(tǒng)的軟件設(shè)計是指板內(nèi)的Nios軟件設(shè)計,主要依托NIOS II 9.0集成開發(fā)環(huán)境[4],采用C語言編寫。該軟件主要負(fù)責(zé)控制系統(tǒng)硬件,完成USB總線通信、ARINC429總線通信以及SD卡內(nèi)數(shù)據(jù)的存取處理三大功能。
系統(tǒng)軟件主要流程如圖3所示,首先必須根據(jù)上位機發(fā)來的工作狀態(tài)代碼判斷系統(tǒng)工作方式。設(shè)計的工作方式有總線通信模式和數(shù)據(jù)讀取模式兩種。