文獻標(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)境進行持續(xù)監(jiān)測,從而精確地獲取艙體內(nèi)部的各種參數(shù)信息,。通過事后分析這些信息,,可對飛行器的性能進行評價并為下次飛行試驗做好準(zhǔn)備。然而,,由于圖像數(shù)據(jù)傳輸速度快,信息量大,,飛行艙的空間有限,,因此,需要設(shè)計出一種具有采集與存儲速度快,、容量大,、體積小、抗干擾能力強,、可靠性高的數(shù)據(jù)存儲系統(tǒng)[1],。
在數(shù)據(jù)存儲系統(tǒng)中,影響存儲速率的關(guān)鍵因素是數(shù)據(jù)傳輸和存儲方式,。采用LVDS總線傳輸方式和混合編幀技術(shù)提高了數(shù)據(jù)接收的速率,;為提高數(shù)據(jù)存儲器存儲速率,本文采用了一種可使Flash存儲速度達到最優(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與下位機的通信。設(shè)計采用從模式,,基于FPGA和PCI9054的硬件平臺完成PCI局部總線的設(shè)計,,PCI板卡整體設(shè)計框圖如圖2所示。
PCI板卡插入PC的PCI擴展槽使用,,如果要正常工作,,需要在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進行圖像數(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ù)每個端口的時鐘信號以及使能信號分別對各個端口進行操作。利用IP核技術(shù)構(gòu)建容量為1 KB的片內(nèi)FIFO原理圖如圖4所示[1],。
圖4中的FIFO模塊調(diào)用數(shù)據(jù)寬度為8 bit,、存儲深度為1 024 B的雙口RAM,該RAM共有兩個獨立的存儲單元(A和B),。RAM的每一個管腳都是獨立配置的,,數(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)進行劃分。整片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個平面進行操作管理: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組)進行操作,,對應(yīng)操作Flash的后4 096塊,即A31為1,。plane(2)相當(dāng)于片選信號,,用于內(nèi)部兩片F(xiàn)lash之間的切換,為0表示對chip #1進行操作,,為1表示對chip #2操作,。進行交叉雙平面操作時,可根據(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īng)錯過了第0組的頁編程時間。交叉雙平面頁編程的方法省去了等待頁編程的時間,,縮短了Flash的寫入時間,,提高了寫入速度[3]。交叉雙平面頁編程時序如圖5所示,。
3 系統(tǒng)功能自檢
系統(tǒng)上電后,,先運行PC軟件,檢查監(jiān)控裝置與計算機之間通信是否正常,,然后設(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進行雙備份,,防止單片F(xiàn)lash失效而造成數(shù)據(jù)丟失,,進一步提高數(shù)據(jù)存儲的完整性和可靠性[5-6]。(2)對FPGA代碼進行優(yōu)化,、提高FPGA資源的使用率[6-8],。
參考文獻
[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.