文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)11-0085-03
0 引言
近年來,隨著航天航空事業(yè)的不斷進(jìn)步,新型的航天產(chǎn)品(如新一代航天器、運(yùn)載火箭、衛(wèi)星及航天飛機(jī)等)已逐漸問世并向著自動化、智能化的方向發(fā)展,其系統(tǒng)構(gòu)成也變得多元化,對于研究和探索這些先進(jìn)的技術(shù)所需要采集的參數(shù)不斷增加,因而對于數(shù)據(jù)存儲設(shè)備的存儲容量、速度、質(zhì)量、便攜性及抗沖擊能力的要求也在不斷提高[1]。高速數(shù)據(jù)存儲設(shè)備不僅在航天產(chǎn)品中扮演重要的角色,在民用航空飛機(jī)上也是必不可少的一部分,如飛行數(shù)據(jù)記錄器等[2]。
為了滿足飛行數(shù)據(jù)記錄器的高速數(shù)據(jù)存儲需求,本文采用FPGA與DSPIC30F6014A單片機(jī)相結(jié)合的方式對數(shù)據(jù)記錄器進(jìn)行了設(shè)計(jì)。這種記錄器既充分發(fā)揮了FPGA并行讀寫大容量Flash數(shù)據(jù)的能力,也充分利用了DSP-IC30F6014A單片機(jī)的單指令周期和并口讀寫方式等優(yōu)越性能,通過結(jié)合高速文件管理芯片CH378和大容量Flash芯片,從而實(shí)現(xiàn)飛行數(shù)據(jù)的高速U盤存儲功能。這種設(shè)計(jì)方法可以有效地提高U盤讀寫數(shù)據(jù)的速度,避免了數(shù)據(jù)丟失現(xiàn)象,并減小了設(shè)備的體積,對體積小、成本低、速度高的飛行數(shù)據(jù)記錄系統(tǒng)設(shè)計(jì)具有十分重要的意義。
1 記錄器總體設(shè)計(jì)方案
高速數(shù)據(jù)記錄器的系統(tǒng)設(shè)計(jì)主要框圖如圖1所示,主要由現(xiàn)場可編程器件FPGA、DSPIC30F6014A單片機(jī)、USB接口控制芯片CH378、U盤、數(shù)據(jù)存儲芯片F(xiàn)lash和高速串行數(shù)據(jù)總線422等模塊組成。
整個(gè)系統(tǒng)工作過程:首先高速串行數(shù)據(jù)經(jīng)過422總線傳輸給FPGA,然后FPGA對高速數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換和編幀處理,通過控制Flash實(shí)現(xiàn)高速數(shù)據(jù)的大容量緩存功能,并將緩存的數(shù)據(jù)經(jīng)過并口與DSPIC30F6014A進(jìn)行通信,最后利用DSPIC30F6014A接收來自FPGA的數(shù)據(jù)并通過控制CH378將數(shù)據(jù)存儲到U盤中。
2 系統(tǒng)硬件電路設(shè)計(jì)
2.1 FPGA控制模塊
為了解決傳統(tǒng)的高速數(shù)據(jù)記錄系統(tǒng)直接由單片機(jī)作為主控制芯片造成的數(shù)據(jù)丟失問題,本設(shè)計(jì)選用FPGA作為高速數(shù)據(jù)的緩存控制芯片,以提高系統(tǒng)的可靠性。其中FPGA選用Xilinx公司Spartan-3E系列芯片XC3S500E,該芯片具有功耗低、資源豐富、高性能等特點(diǎn),其I/O口兼容多種電平標(biāo)準(zhǔn),有助于與單片機(jī)連接通信。內(nèi)部多達(dá)360 Kbit的Block RAM,可配置為雙端口RAM,添加必要的控制模塊構(gòu)成高速異步FIFO,為數(shù)據(jù)的寫入及讀取提供足夠的緩沖空間。同時(shí),它具有4個(gè)時(shí)鐘管理單元,可方便對FPGA的主頻分頻或倍頻,產(chǎn)生不同模塊所需的時(shí)鐘信號,并能夠保證這些時(shí)鐘信號精確穩(wěn)定。
2.2 DSPIC30F6014A控制模塊
系統(tǒng)選用了高性能的DSPIC30F6014A單片機(jī)作為U盤數(shù)據(jù)存儲部分的主控制芯片,該單片機(jī)為單指令周期,采用哈佛雙總線結(jié)構(gòu),功耗低,驅(qū)動能力強(qiáng),并且I/O端口功能強(qiáng)大,其與外部接口交換數(shù)據(jù)的效率非常高[3]。內(nèi)部有8 KB的片內(nèi)RAM,能夠作為高速數(shù)據(jù)的緩存區(qū),其與FPGA和CH378之間的通信都是通過8位并口的方式進(jìn)行數(shù)據(jù)傳輸?shù)?,能夠很大程度地提高讀寫數(shù)據(jù)的速度。其中DSPIC30F6014A與FPGA的連接示意圖如圖2所示。
2.3 CH378模塊
CH378能夠成為U盤記錄器首選的U盤接口芯片,是因?yàn)樵撔酒哂斜菴H376更高的通信速度[4],其可實(shí)現(xiàn)12 Mb/s全速通信和480 Mb/s高速通信;且在硬件連接方面,提供了高速8位被動并行接口,可直接掛接在單片機(jī)等處理器的數(shù)據(jù)總線上。其中CH378與DSPIC30F6014A單片機(jī)及U盤的部分引腳連接圖如圖3所示。將TXD引腳接GND,其余引腳懸空,使得CH378被配置為8位并口通信接口。8位并行數(shù)據(jù)線與單片機(jī)的RD口連接,CH378的WR#引腳、RD#引腳、PCS#引腳和A0引腳分別與單片機(jī)的RC4~RC1引腳相連,實(shí)現(xiàn)8位并口通信接口連接。
2.4 Flash模塊
大容量Flash選取了三星公司的NAND Flash K9M-DG08U5M,其內(nèi)部組織形式為16 G×8 bit,即容量為16 GB,與U盤的存儲容量相當(dāng),足以滿足海量數(shù)據(jù)緩沖所需的空間;供電電壓與FPGA的供電電壓相同,避免了為其單獨(dú)設(shè)計(jì)電源的麻煩;有8位數(shù)據(jù)引腳(D7~D0)、片選引腳(CS#)、命令鎖存引腳(CLE)、地址鎖存引腳(ALE)、寫控制引腳(WE)、讀控制引腳(RE)、Flash狀態(tài)引腳(R/B#)、電源及地引腳等,與FPGA的連接非常方便,只需FPGA分配相應(yīng)的引腳與Flash連接即可。
3 記錄器軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)主要由FPGA和DSPIC30F6014A兩大主控部分組成,其中采用VHDL語言對FPGA的程序進(jìn)行編寫,其主要實(shí)現(xiàn)串行數(shù)據(jù)的接收和處理、Flash數(shù)據(jù)讀寫控制以及與DSPIC30F6014A進(jìn)行通信等功能;單片機(jī)的程序利用C語言進(jìn)行描述,主要完成對CH378的控制、與FPGA的通信和數(shù)據(jù)傳輸?shù)墓δ堋?/p>
3.1 FPGA模塊程序設(shè)計(jì)
數(shù)據(jù)在存儲時(shí)是按照一定的幀格式進(jìn)行存儲的,本系統(tǒng)設(shè)計(jì)的幀格式如表1所示,每一幀數(shù)據(jù)由4 089 B數(shù)據(jù)、4 B幀標(biāo)志和3 B幀計(jì)數(shù)組成,其中幀標(biāo)志分別為BEH、90H、數(shù)據(jù)流標(biāo)識(第一路數(shù)據(jù)為11H,第二路數(shù)據(jù)為22H)和一個(gè)固定位00H。幀計(jì)數(shù)為3個(gè)字節(jié)表示,依次先為低位后為高位。
FPGA的主要工作流程圖如圖4所示,F(xiàn)PGA接收來自422總線接口的串行數(shù)據(jù),并對兩路數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換以及按照一定的數(shù)據(jù)格式進(jìn)行編幀處理,之后將編幀處理的數(shù)據(jù)存入寫FIFO中,判斷寫FIFO半滿標(biāo)志位WR_FIFO_HF是否為高電平。若為高電平則開始往Flash中寫入數(shù)據(jù),等到寫完一頁數(shù)據(jù)后,開始檢測單片機(jī)的讀數(shù)據(jù)信號是否有效。若有效,將由Flash數(shù)據(jù)讀寫控制模塊讀取Flash中的數(shù)據(jù),并暫存在讀FIFO,由單片機(jī)讀取讀FIFO中的數(shù)據(jù)。
3.2 DSPIC30F6014A模塊程序設(shè)計(jì)
DSPIC30F6014A程序流程圖如圖5所示。系統(tǒng)上電后,首先單片機(jī)復(fù)位。然后由單片機(jī)向CH378發(fā)送硬件連接測試命令CMD_CHECK_EXIST(06H),接著發(fā)送數(shù)據(jù)55H,若硬件連接正常,應(yīng)由CH378返回?cái)?shù)據(jù)AAH,否則說明硬件連接不正?;騿纹瑱C(jī)不工作。測試到CH378連接正常后,初始化CH378,并設(shè)置工作模式為USB主機(jī)方式,然后檢測U盤是否連接,如果U盤成功連接并已檢測到,則對U盤進(jìn)行初始化。初始化成功后,創(chuàng)建文件,檢測FIFO讀半滿標(biāo)志位是否為1,若為1則將FPGA的讀FIFO中的數(shù)據(jù)通過DSPIC30F6014A的控制以字節(jié)方式寫入U(xiǎn)盤文件,數(shù)據(jù)讀取完畢后結(jié)束操作。
4 系統(tǒng)調(diào)試結(jié)果及分析
由于U盤的寫數(shù)據(jù)速度會受到U盤的質(zhì)量、單片機(jī)的性能等一些因素的影響,因此為了最大程度地提高數(shù)據(jù)記錄器處理數(shù)據(jù)的速度,在具體應(yīng)用之前,對一些性能進(jìn)行了測試,通過分別往USB2.0和USB3.0的U盤中以字節(jié)方式一次性寫入100 MB的數(shù)據(jù)(其中分別選用單片機(jī)的RAM的2 KB、5 KB和7 KB作為數(shù)據(jù)的緩存區(qū)),得到了表2的U盤寫數(shù)據(jù)測試結(jié)果。結(jié)果表明,選用RAM為7 KB并結(jié)合USB3.0的U盤可以極大限度地提高數(shù)據(jù)記錄器處理數(shù)據(jù)的速度。
實(shí)驗(yàn)及調(diào)試過程中,采用以FPGA為控制核心,產(chǎn)生波特率均為460.8 kb/s的422總線串行數(shù)據(jù)作為模擬數(shù)據(jù)源。為了便于分析,數(shù)據(jù)采用遞減的鋸齒波。數(shù)據(jù)存儲完畢后,通過計(jì)算機(jī)讀取U盤中的數(shù)據(jù),由上位機(jī)軟件對文件進(jìn)行分析和繪圖顯示,圖6為數(shù)據(jù)波形整體圖,圖7為波形拉伸放大后的波形,從圖6和圖7中可以看出波形穩(wěn)定,并無明顯丟數(shù)現(xiàn)象。
將讀出的數(shù)據(jù)在UltraEdit中打開,如圖8所示,并沒有出現(xiàn)數(shù)據(jù)錯(cuò)誤并且數(shù)據(jù)幀格式正確,說明本電路具有可靠的高速數(shù)據(jù)傳輸性能。
5 結(jié)論
為了滿足目前飛行數(shù)據(jù)記錄器對數(shù)據(jù)的大容量和高速存儲的需求,文中提出了一種基于FPGA和DSPIC-30F6014A的數(shù)據(jù)記錄器設(shè)計(jì)方法,并對數(shù)據(jù)寫入U(xiǎn)盤的速度進(jìn)行了測試。結(jié)果表明,高速串行數(shù)據(jù)經(jīng)過數(shù)據(jù)記錄器的一系列處理后,最后以并行數(shù)據(jù)寫入U(xiǎn)SB3.0 U盤的速度可達(dá)到314 KB/s,并且通過上位機(jī)分析得知數(shù)據(jù)存儲可靠,并無數(shù)據(jù)丟失現(xiàn)象。該設(shè)備還具有設(shè)備體積小、成本低和便于攜帶等優(yōu)點(diǎn),很大程度緩解了數(shù)據(jù)存儲的壓力,具有很廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] 王偉,費(fèi)益.民用飛機(jī)飛行記錄系統(tǒng)研究[J].電光與控制,2013,20(3):73-74.
[2] 盧艷軍,牛闖,張曉東.新型通用飛機(jī)機(jī)載數(shù)據(jù)記錄儀的研究[J].沈陽航空航天大學(xué)學(xué)報(bào),2014,31(1):82-83.
[3] 王中華,郭改枝,王筱凱.基于DSPIC30F處理器的多路數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].內(nèi)蒙古師范大學(xué)學(xué)報(bào),2012,41(6):620-621.
[4] 蔡雪佳,周征翰,伍郁韓.基于USB-Host的大容量數(shù)據(jù)采集方案研究[J].電子設(shè)計(jì)工程.2011,19(16):1-3.