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