文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)04-0080-04
數(shù)據(jù)采集與存儲技術(shù)已經(jīng)在圖像數(shù)據(jù)處理、遙測信息分析、語音識別、GPS導(dǎo)航、可視電話等一系列高速信號記錄系統(tǒng)中扮演著越來越重要的角色,并且逐步滲透到其他重要領(lǐng)域。在航天應(yīng)用領(lǐng)域,為了了解飛行艙內(nèi)的情況,飛行器在執(zhí)行飛行任務(wù)的過程中,地面需要對飛行艙內(nèi)的環(huán)境進(jìn)行持續(xù)監(jiān)測,從而精確地獲取艙體內(nèi)部的各種參數(shù)信息。通過事后分析這些信息,可對飛行器的性能進(jìn)行評價并為下次飛行試驗做好準(zhǔn)備。然而,由于圖像數(shù)據(jù)傳輸速度快,信息量大,飛行艙的空間有限,因此,需要設(shè)計出一種具有采集與存儲速度快、容量大、體積小、抗干擾能力強(qiáng)、可靠性高的數(shù)據(jù)存儲系統(tǒng)[1]。
在數(shù)據(jù)存儲系統(tǒng)中,影響存儲速率的關(guān)鍵因素是數(shù)據(jù)傳輸和存儲方式。采用LVDS總線傳輸方式和混合編幀技術(shù)提高了數(shù)據(jù)接收的速率;為提高數(shù)據(jù)存儲器存儲速率,本文采用了一種可使Flash存儲速度達(dá)到最優(yōu)的交叉雙平面頁編程技術(shù)[1-3]。
1 系統(tǒng)總體設(shè)計
本文設(shè)計的高速數(shù)據(jù)存儲系統(tǒng)用于完成對飛行器飛行過程中圖像數(shù)據(jù)的采集、編碼和存儲。試驗結(jié)束后,通過PC控制專用的讀數(shù)裝置讀取存儲系統(tǒng)中的數(shù)據(jù),并由PC上的數(shù)據(jù)處理軟件完成數(shù)據(jù)的分析與處理。在單元測試過程中,PC通過PCI通信接口卡(PCI9054)完成與高速數(shù)據(jù)存儲系統(tǒng)之間的通信,實現(xiàn)指令的下發(fā)、在線實時監(jiān)測狀態(tài)顯示、數(shù)據(jù)回讀、對存儲數(shù)據(jù)的分析以及生成分析報告等功能。系統(tǒng)主要功能模塊可劃分為:主控單元、PC、地面監(jiān)控裝置、圖像采集單元、圖像存儲器(Flash)、電壓轉(zhuǎn)換模塊等,如圖1所示。
2 關(guān)鍵技術(shù)分析
2.1 PCI板卡設(shè)計
本文采用PLX公司的PCI9054芯片實現(xiàn)PCI總線接口的邏輯設(shè)計。PCI9054的數(shù)據(jù)寬度為32 bit,本地總線支持復(fù)用/非復(fù)用的32 bit地址數(shù)據(jù)總線。PCI總線作為橋接芯片,提供了PCI總線空間、本地總線空間以及配置空間,既能作為PCI總線的發(fā)起設(shè)備也可作為PCI從設(shè)備。FPGA作為本地總線控制器,即PCI局部總線的目標(biāo)設(shè)備,完成PC與下位機(jī)的通信。設(shè)計采用從模式,基于FPGA和PCI9054的硬件平臺完成PCI局部總線的設(shè)計,PCI板卡整體設(shè)計框圖如圖2所示。
PCI板卡插入PC的PCI擴(kuò)展槽使用,如果要正常工作,需要在Windows下編寫驅(qū)動程序。驅(qū)動程序主要實現(xiàn)以下幾個功能: (1)連接設(shè)備;(2)設(shè)備初始化;(3)設(shè)備讀和寫;(4)斷開設(shè)備。Windows操作系統(tǒng)下驅(qū)動程序開發(fā)最常用的有DDK、Driverstudio、Windriver等工具。其中DDK的效率最高,但編寫難度較大,因而多數(shù)技術(shù)人員使用Driverstudio、Windriver來編寫驅(qū)動程序,使用這兩種工具編寫出來的程序也稱為WDM(Windows Device Module)程序。DriverStudio中的DriverWorks軟件為WDM驅(qū)動程序提供了完整的框架,本設(shè)計利用其DriverWizard生成驅(qū)動程序框架,然后添加各功能函數(shù)。此處利用類KMemoryRange實現(xiàn)對PCI9054內(nèi)部存儲器的讀寫訪問,類KIoRange實現(xiàn)對其寄存器的訪問[4]。
2.2 LVDS圖像采集編幀技術(shù)
圖像數(shù)據(jù)由LVDS接口輸入,圖3所示為圖像信號接口時序,經(jīng)解串器DS90CR216解碼后轉(zhuǎn)換為21 bit并行總線輸出。圖像數(shù)據(jù)的幀同步信號周期為10 ms,高電平有效, 每幀有289行有效數(shù)據(jù); 行同步信號周期為32 μs,高電平有效,每行有384個有效數(shù)據(jù);其中,像素時鐘為15 MHz,圖像像素時鐘的上升沿為觸發(fā)條件。幀同步信號低電平期間仍有(10÷0.032)-289=23.5個行同步信號,即幀同步信號低電平的時間應(yīng)為23.5×0.032 ms= 0.752 ms。幀同步信號高電平的時間為9.248 ms,行同步低電平的時間為32-(384÷15)=6.4 μs。
測量信息伴隨著圖像數(shù)據(jù)而來,每接收一幀圖像就接收80 B的測量信息,測量信息的串行傳輸波特率為115 200 b/s,每包測量信息的數(shù)據(jù)共10 bit。為便于PC進(jìn)行圖像數(shù)據(jù)分析處理,在測量信息的數(shù)據(jù)前加上幀頭0X“14 92 00”和2 B幀計數(shù)。待80 B測量信息全部讀取出來后,給出圖像采集模塊的復(fù)位信號,同時清零行計數(shù)器并清空片內(nèi)FIFO中的信息,將采集到的一幀圖像數(shù)據(jù)和編好幀的測量信息寫入二選一數(shù)據(jù)選擇器。在幀同步信號高電平期間,將圖像數(shù)據(jù)寫入外部16 KB的FIFO(IDT7206);在幀同步信號低電平期間,將測量信息寫入,最后等待圖像記錄啟動信號。
2.3 片內(nèi)FIFO設(shè)計
圖像數(shù)據(jù)的緩存、Flash存儲與事后回讀等過程中都用到了片內(nèi)FIFO,采用片內(nèi)FIFO可降低硬件的復(fù)雜度、節(jié)約了成本且更有利于完成邏輯控制。本文選用的FPGA芯片是XC3S400,該芯片內(nèi)部的16個Block RAM不占用芯片的邏輯資源,設(shè)計中采用“A端口只寫,B端口只讀”的思想,根據(jù)每個端口的時鐘信號以及使能信號分別對各個端口進(jìn)行操作。利用IP核技術(shù)構(gòu)建容量為1 KB的片內(nèi)FIFO原理圖如圖4所示[1]。
圖4中的FIFO模塊調(diào)用數(shù)據(jù)寬度為8 bit、存儲深度為1 024 B的雙口RAM,該RAM共有兩個獨(dú)立的存儲單元(A和B)。RAM的每一個管腳都是獨(dú)立配置的,數(shù)據(jù)和地址的寫入發(fā)生在各個單元的時鐘上升沿。數(shù)據(jù)和地址的讀/寫操作還與讀/寫時鐘有關(guān),所以設(shè)計中將A端口寫使能信號接VCC,B端口的寫使能信號接GND,實現(xiàn)“A端口只寫,B端口只讀”。由外部控制模塊fifo_ctrl為雙口RAM的A端口產(chǎn)生寫時鐘和寫地址,為B端口產(chǎn)生讀時鐘和讀地址,根據(jù)讀寫地址的差值offset產(chǎn)生FIFO的空(empty)、半滿(half)以及滿(full)信號。
2.4 交叉雙平面技術(shù)
圖像傳輸速度快,對圖像數(shù)據(jù)的存儲采用寫入速度最快的交叉雙平面頁編程(Interleave Two-plane Page Program)技術(shù)[2-3]。為實現(xiàn)對Flash的交叉雙平面操作,首先要對Flash(K9WBG08U1M)芯片內(nèi)部平面結(jié)構(gòu)進(jìn)行劃分。整片F(xiàn)lash分為兩片(chip #1和chip #2),每片分為4個平面(plane),每個平面共2 048個存儲塊。也就是說,整個Flash存儲空間由8個平面(plane1~plane8)組成,將這8個平面分為4組:chip #1中的plane0與plane1為第0組,plane2與plane3為第1組;chip #2中的plane4與plane5為第2組,plane6與plane7為第3組,F(xiàn)lash的交叉雙平面操作必須嚴(yán)格按照這個分組執(zhí)行。
定義矢量plane(2:0)對這8個平面進(jìn)行操作管理:plane(0)用于控制平面組內(nèi)的兩個平面之間的切換:為0時表示對偶數(shù)平面操作,對應(yīng)操作偶數(shù)塊;為1時表示對奇數(shù)平面操作,對應(yīng)操作奇數(shù)塊。plane(1)用于完成各個平面組之間的切換:為0時表示操作的是偶數(shù)組(第0組與第2組),對應(yīng)操作Flash的前4 096塊,即A31為0;為1時表示對奇數(shù)組(第1組與第3組)進(jìn)行操作,對應(yīng)操作Flash的后4 096塊,即A31為1。plane(2)相當(dāng)于片選信號,用于內(nèi)部兩片F(xiàn)lash之間的切換,為0表示對chip #1進(jìn)行操作,為1表示對chip #2操作。進(jìn)行交叉雙平面操作時,可根據(jù)plane(2:0)的值確定所要操作的平面。
當(dāng)對第0組平面執(zhí)行編程操作時,依次往第1組、第2組、第3組的各個平面中寫入命令、地址和數(shù)據(jù)。經(jīng)過多次反復(fù)測試,F(xiàn)lash的峰值寫入速度不小于30 MB/s,完成這三組平面的數(shù)據(jù)寫入時間為 6×4 096 B÷30 MB/s=819.2 μs>700μs 。如果寫入Flash速度小于峰值速度,則后3組的數(shù)據(jù)寫入時間將會更大。所以,當(dāng)這4組依次編程結(jié)束準(zhǔn)備繼續(xù)對第0組其他頁進(jìn)行編程時,已經(jīng)錯過了第0組的頁編程時間。交叉雙平面頁編程的方法省去了等待頁編程的時間,縮短了Flash的寫入時間,提高了寫入速度[3]。交叉雙平面頁編程時序如圖5所示。
3 系統(tǒng)功能自檢
系統(tǒng)上電后,先運(yùn)行PC軟件,檢查監(jiān)控裝置與計算機(jī)之間通信是否正常,然后設(shè)置并啟動信號源,此時監(jiān)控裝置開始向記錄器發(fā)送數(shù)據(jù)。其中,監(jiān)控裝置下發(fā)的數(shù)字量串行波特率為115 200 b/s,實時監(jiān)測回收的信號波特率為800 kb/s,信號源數(shù)據(jù)格式設(shè)計為:每幀共128 B,前5 B由幀頭0X “EB 90”和3 B幀計數(shù)組成,剩余字節(jié)為0X“0F~89”遞增數(shù)據(jù)。PC監(jiān)測數(shù)據(jù)的內(nèi)容就是監(jiān)控裝置向記錄器發(fā)送的數(shù)據(jù)。根據(jù)實時顯示的監(jiān)測數(shù)據(jù)可以判斷系統(tǒng)是否正常工作。通過PC讀取并分析記錄器所存數(shù)據(jù)與下發(fā)信號源是否一致,完成系統(tǒng)功能自檢。
4 系統(tǒng)實測結(jié)果
系統(tǒng)上電后,存儲器接收到啟動記錄信號后開始記錄。記錄圖像數(shù)據(jù)的時間不限制,直到記滿。圖6是用圖像分析軟件對測試數(shù)據(jù)還原后的某幀圖像。
設(shè)計了一種以FPGA為主控單元,以Flash為存儲介質(zhì)的高速圖像數(shù)據(jù)存儲系統(tǒng)。系統(tǒng)用于完成對高速LVDS圖像數(shù)據(jù)的采集、存儲和實時監(jiān)測,系統(tǒng)具有存儲速度快、存儲容量大、系統(tǒng)可靠性高等優(yōu)點,能夠滿足實際測試的需求。在后續(xù)的設(shè)計中還可以做以下優(yōu)化工作:(1)采用雙片F(xiàn)lash進(jìn)行雙備份,防止單片F(xiàn)lash失效而造成數(shù)據(jù)丟失,進(jìn)一步提高數(shù)據(jù)存儲的完整性和可靠性[5-6]。(2)對FPGA代碼進(jìn)行優(yōu)化、提高FPGA資源的使用率[6-8]。
參考文獻(xiàn)
[1] 李勇. 基于LVDS接口的高速圖像數(shù)據(jù)記錄器的設(shè)計與實現(xiàn)[D]. 太原:中北大學(xué), 2013.
[2] 馬志剛, 朱思敏,劉文怡. 基于LVDS的高速圖像數(shù)據(jù)存儲系統(tǒng)設(shè)計[J]. 數(shù)據(jù)采集與處理,2013,28(3):382-385.
[3] 郭錚,劉文怡,馮妮.基于FPGA多通道高速數(shù)據(jù)采集存儲器設(shè)計[J]. 電視技術(shù),2012,36(17):55-57.
[4] 王麗莉. 基于CPCI光纖傳輸卡的設(shè)計與研究[D].太原:中北大學(xué),2012.
[5] 常鐵原,王欣,陳文軍.多路數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子技術(shù)應(yīng)用,2008,11(2):21-23.
[6] 劉攀,王紅亮,孟令軍.基于FPGA的數(shù)字圖像采集存儲系統(tǒng)的設(shè)計[J]. 電視技術(shù),2010,34(6):33-35.
[7] 胡振良.某導(dǎo)彈遙測數(shù)據(jù)存儲器系統(tǒng)的設(shè)計與實現(xiàn)[D].太原:中北大學(xué),2008.
[8] 段靜輝. 基于存儲測試技術(shù)的炮射導(dǎo)彈測試系統(tǒng)的研究[D]. 太原:華北工學(xué)院, 2000.
[9] 王國華, 宋卿, 徐旭偉,等.飛行數(shù)據(jù)采集器通用自動測試軟件[J]. 測試技術(shù)學(xué)報,2010,24(3):199-204.