摘 要: 提出了一種基于USB接口的多功能ARINC429總線接口板設(shè)計(jì)方案。通過采用SoPC技術(shù)、USB協(xié)議芯片、基于VHDL的自定義429總線IP核設(shè)計(jì)以及基于SD卡的存儲(chǔ)設(shè)計(jì),快速構(gòu)建了系統(tǒng)硬件,在Nios II開發(fā)環(huán)境下采用C語言開發(fā)了系統(tǒng)核心軟件,實(shí)現(xiàn)了系統(tǒng)的總線通信和數(shù)據(jù)存儲(chǔ)多功能設(shè)計(jì)。應(yīng)用結(jié)果表明,該系統(tǒng)具有良好的性能、便攜性和經(jīng)濟(jì)效益。
關(guān)鍵詞: USB;ARINC429;SoPC
當(dāng)前,由于ARINC429總線在航空航天等領(lǐng)域應(yīng)用極為廣泛,國(guó)內(nèi)出現(xiàn)了各種針對(duì)不同平臺(tái)和接口的ARINC429接口板,包括ISA、PCI、USB、GPIB和VXI等接口類型。這些板卡大多采用專用的協(xié)議處理芯片(如HI-8585、DEI1016芯片等)來進(jìn)行ARINC429總線通信處理[1],也有部分板卡采用了自主協(xié)議芯片或FPGA來實(shí)現(xiàn)[2]。但是,它們的功能相對(duì)單一,一般只用于總線數(shù)據(jù)收發(fā)處理,自身不具備數(shù)據(jù)存儲(chǔ)功能,必須由主機(jī)軟件進(jìn)行實(shí)時(shí)數(shù)據(jù)的記錄、處理和存儲(chǔ),對(duì)于一些需要實(shí)時(shí)記錄和存儲(chǔ)多路429數(shù)據(jù),同時(shí)要求較高保密性、便攜性的場(chǎng)合來說,存在一定的局限性。因此,本文提出了一種基于USB接口的多功能ARINC429總線接口板設(shè)計(jì)方案,設(shè)計(jì)了一種既可以通過USB進(jìn)行多路ARINC429總線通信,又具備數(shù)據(jù)存儲(chǔ)功能的多用途接口板。
1 硬件設(shè)計(jì)
該板卡外形設(shè)計(jì)緊湊,體積與普通USB硬盤相當(dāng),便于攜帶,功耗較低,采用USB總線供電,無須外置電源。板卡核心為基于FPGA的嵌入式微計(jì)算機(jī)系統(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,該芯片本身具有可編程、可裁減等特點(diǎn),通過采用SoPC技術(shù),應(yīng)用Quartus開發(fā)環(huán)境提供的可裁減IP模塊,可在FPGA內(nèi)快速構(gòu)建一個(gè)嵌入式微計(jì)算機(jī)系統(tǒng)來實(shí)現(xiàn)系統(tǒng)的復(fù)雜事務(wù)處理功能[3]。FPGA內(nèi)實(shí)際應(yīng)用的IP模塊包括:32 bit RISC Nios II CPU、SDRAM控制器、2個(gè)SPI主控制器、PIO控制器以及用于軟件調(diào)試及程序引導(dǎo)的JTAG-UART和EPCS-Control等。
通過選用FPGA,采用SoPC技術(shù)定義必要的IP模塊,合理分配芯片資源,在實(shí)現(xiàn)系統(tǒng)功能的同時(shí)加快了開發(fā)周期,提升了系統(tǒng)性能。
1.2 USB協(xié)議處理模塊
USB協(xié)議處理模塊由FPGA芯片內(nèi)部的PIO控制器、SPI主控制器及CH376芯片組成。
其中,CH376芯片可支持USB設(shè)備方式和USB主機(jī)方式,并且內(nèi)置了USB通信協(xié)議的基本固件、SD卡的通信接口固件、FAT16和FAT32等文件系統(tǒng)的管理固件,支持常用的海量存儲(chǔ)設(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個(gè)物理端口,端點(diǎn)0是默認(rèn)端點(diǎn),支持上傳和下傳,緩沖區(qū)各為8 B;端點(diǎn)1包括上傳端點(diǎn)和下傳端點(diǎn),緩沖區(qū)各為8 B;端點(diǎn)2包括上傳端點(diǎn)和下傳端點(diǎn),緩沖區(qū)各為64 B。端點(diǎn)2的上傳端點(diǎn)作為批量數(shù)據(jù)發(fā)送端點(diǎn),端點(diǎn)2的下傳端點(diǎn)作為批量數(shù)據(jù)接收端點(diǎn),端點(diǎn)1的上傳端點(diǎn)作為中斷端點(diǎn),端點(diǎn)1的下傳端點(diǎn)作為輔助端點(diǎn)。根據(jù)板卡工作模式的不同,數(shù)據(jù)傳輸端點(diǎn)也不同,在總線模式下,由于ARINC429總線的收發(fā)速率較慢(最大100 KB),因此數(shù)據(jù)的傳輸采用中斷方式,應(yīng)用CH376芯片的端點(diǎn)1作為數(shù)據(jù)的上傳和下傳端點(diǎn);在U盤模式下,應(yīng)用端點(diǎn)2批量方式數(shù)據(jù)傳輸。
需要強(qiáng)調(diào)的是,在總線模式下, CH376芯片對(duì)數(shù)據(jù)的傳輸是基于中斷方式的,在對(duì)其進(jìn)行操作時(shí),F(xiàn)PGA本地端應(yīng)注意對(duì)中斷的處理。由于ARINC429總線是全雙工傳輸方式,數(shù)據(jù)的上傳和下傳是獨(dú)立的,在數(shù)據(jù)的上傳過程中,應(yīng)關(guān)閉FPGA的中斷,保證數(shù)據(jù)上傳成功后開啟中斷,且在數(shù)據(jù)上傳成功后,CH376將中斷信號(hào)INT置“0”,此時(shí),由于FPGA已關(guān)閉中斷,對(duì)該中斷不響應(yīng),可采用查詢方式,并對(duì)相應(yīng)的寄存器進(jìn)行操作,將INT信號(hào)復(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)組成,可實(shí)現(xiàn)429總線的雙極性與AVALON總線之間的轉(zhuǎn)換。ARINC429總線協(xié)議IP核采用VHDL語言設(shè)計(jì),完全自主開發(fā),以自定義IP方式掛接在FPGA內(nèi)的AVALON總線上,其內(nèi)部結(jié)構(gòu)如圖2所示。采用這種設(shè)計(jì)方法,可將429總線硬件的控制完全交由CPU軟件處理,降低了硬件設(shè)計(jì)的難度,同時(shí)也增強(qiáng)了總線控制的靈活性。
IP核的AVALON總線接口模塊的主要任務(wù)是實(shí)現(xiàn)AVALON總線信號(hào)和FIFO控制信號(hào)之間的轉(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,存儲(chǔ)深度為64 bit,主要任務(wù)是緩沖總線的數(shù)據(jù),防止由于CPU未及時(shí)響應(yīng)所帶來的數(shù)據(jù)丟失以及由于CPU操作過快造成的總線數(shù)據(jù)堵塞。編碼模塊實(shí)時(shí)讀取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;編、解碼模塊實(shí)現(xiàn)了4路ARINC429總線的收發(fā)通信,且通信速率可以配置。
電平轉(zhuǎn)換電路由4片HI-8588和4片HI-8570組成,主要完成雙極性三態(tài)碼和TTL電平差分碼之間的轉(zhuǎn)換。對(duì)于輸入,由HI-8588芯片將滿足ARINC429總線電氣特性的串行碼轉(zhuǎn)換為TTL電平差分碼;對(duì)于輸出,由HI-8570芯片將接收到的TTL電平差分碼轉(zhuǎn)換為滿足ARINC429總線電氣特性的串行碼。
1.4 SD卡模塊
SD卡作為非易失存儲(chǔ)器,負(fù)責(zé)實(shí)時(shí)存儲(chǔ)總線數(shù)據(jù)。由于SD卡本身具有價(jià)格低廉、存儲(chǔ)容量大、使用簡(jiǎn)單、可靠性高和安全性強(qiáng)等優(yōu)點(diǎn),其可用于對(duì)保密性和便攜性要求較高的場(chǎng)合。
系統(tǒng)通過FPGA以SPI方式對(duì)SD卡進(jìn)行數(shù)據(jù)訪問,其中,寫入數(shù)據(jù)按特定格式加密存儲(chǔ),讀出數(shù)據(jù)需依賴專用驅(qū)動(dòng)和應(yīng)用軟件,以確保安全使用。當(dāng)系統(tǒng)正進(jìn)行ARINC429總線通信時(shí),可以選擇開啟SD卡記錄功能,由FPGA實(shí)時(shí)地將收發(fā)的總線數(shù)據(jù)寫入SD卡;當(dāng)需要讀取SD卡內(nèi)所存總線數(shù)據(jù)時(shí),可由驅(qū)動(dòng)軟件關(guān)閉ARINC429總線通信及SD卡記錄功能,通過FPGA將數(shù)據(jù)從SD卡讀出,并通過USB總線發(fā)送至主機(jī)供專用應(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è)計(jì)
系統(tǒng)的軟件設(shè)計(jì)是指板內(nèi)的Nios軟件設(shè)計(jì),主要依托NIOS II 9.0集成開發(fā)環(huán)境[4],采用C語言編寫。該軟件主要負(fù)責(zé)控制系統(tǒng)硬件,完成USB總線通信、ARINC429總線通信以及SD卡內(nèi)數(shù)據(jù)的存取處理三大功能。
系統(tǒng)軟件主要流程如圖3所示,首先必須根據(jù)上位機(jī)發(fā)來的工作狀態(tài)代碼判斷系統(tǒng)工作方式。設(shè)計(jì)的工作方式有總線通信模式和數(shù)據(jù)讀取模式兩種。
在總線通信模式下,Nios II軟件主要完成兩項(xiàng)工作:一是實(shí)時(shí)監(jiān)測(cè)總線接收的數(shù)據(jù),循環(huán)查詢接收FIFO的狀態(tài),若已接收總線數(shù)據(jù),則將數(shù)據(jù)發(fā)送至CH376芯片;二是在主程序運(yùn)行過程中及時(shí)響應(yīng)429發(fā)送中斷,并在中斷服務(wù)子程序中將USB總線發(fā)送過來的數(shù)據(jù)進(jìn)行組合,發(fā)送到FIFO,最終發(fā)送到ARINC429總線。無論是接收總線數(shù)據(jù)還是發(fā)送總線數(shù)據(jù),都可以根據(jù)需要將數(shù)據(jù)存儲(chǔ)至SD卡。如果不開啟數(shù)據(jù)存儲(chǔ)功能,該模式下的系統(tǒng)功能與普通的ARINC429總線接口卡功能基本相同。
在數(shù)據(jù)讀取模式下,軟件循環(huán)將SD卡的數(shù)據(jù)依順序讀出,轉(zhuǎn)存至SDRAM,然后以批量傳輸?shù)姆绞桨l(fā)送到CH376芯片,最終通過USB總線傳送至上位機(jī),直至所有數(shù)據(jù)均讀取完畢。此時(shí),系統(tǒng)不會(huì)調(diào)用中斷服務(wù)子程序。正是由于數(shù)據(jù)讀取模式的軟件設(shè)計(jì),使系統(tǒng)在單一的ARINC429總線通信功能之外多了一項(xiàng)數(shù)據(jù)存儲(chǔ)功能。
通過上述系統(tǒng)硬件和軟件的設(shè)計(jì),完成了基于USB接口的多功能ARINC429總線接口板的開發(fā),并在WinDriver和Visual C++開發(fā)環(huán)境下開發(fā)了板卡的USB驅(qū)動(dòng)程序和API,進(jìn)而在USB驅(qū)動(dòng)和API的基礎(chǔ)之上開發(fā)了針對(duì)某型設(shè)備監(jiān)控系統(tǒng)的應(yīng)用程序。使用時(shí),用USB數(shù)據(jù)線將該板卡連接到便攜式計(jì)算機(jī)上,通過多路429總線對(duì)某型設(shè)備進(jìn)行監(jiān)控,并記錄所有總線數(shù)據(jù)存儲(chǔ)于板內(nèi)的SD卡中,然后通過專門的應(yīng)用程序獲取SD卡內(nèi)數(shù)據(jù)進(jìn)行事后分析。
應(yīng)用結(jié)果表明,該板卡實(shí)現(xiàn)了多功能設(shè)計(jì),性能穩(wěn)定可靠,極大地降低了成本,完全滿足保密性和便攜性要求。
參考文獻(xiàn)
[1] 鄧青海,景小寧,劉安.基于USB的多通道俄制串行總線接口卡設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2006,33(11):55-57.
[2] 丁文銳,劉春輝.ARINC429總線IP核設(shè)計(jì)及應(yīng)用[J]. 電子技術(shù)應(yīng)用,2009,35(9):85-87.
[3] 黃偉,吳華興,魯藝,等.基于SOPC技術(shù)的1553B總線接口卡設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2011,37(7):57-60.
[4] Altera Corporation. Nios II help version 9.0[Z]. 2009.