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