文獻標識碼: A
文章編號: 0258-7998(2015)04-0087-04
0 引言
應用于航天遙測中的視頻攝像技術可以真實地還原航天器的飛行狀態(tài),、動作和現(xiàn)場環(huán)境等多項關鍵指標。航天器的飛行試驗要求圖像具有較高的空間分辨率和時間分辨率,,才不致丟失重要細節(jié),,通常使用高速攝像機作為采集系統(tǒng)前端。在該領域,,現(xiàn)場的場景必須完整,、真實地還原出來,而航天器有時可能不在地面監(jiān)測范圍之內,,一些在軌試驗數(shù)據(jù)只能先存入記錄器中,,進入監(jiān)測范圍內再將數(shù)據(jù)回傳。記錄裝置的容量,、帶寬以及其可靠性和穩(wěn)定性等因素都將影響數(shù)據(jù)能否準確保存,,并關系到整個試驗的成敗[1]。
數(shù)據(jù)存儲技術的進步主要體現(xiàn)在存儲介質的發(fā)展和各種通信總線的應用上,。存儲介質從磁帶到硬盤再到半導體器件,,逐漸向微小型化、低功耗,、高集成度和密集化發(fā)展,,而半導體存儲器件已廣泛應用于航天遙測領域。隨著1553B,、光纖接口,、以太網(wǎng)接口等高速總線的應用,存儲帶寬也得以提高,。LVDS接口憑借其低噪聲,、低功耗和極高的傳輸效率等特點在測試計量、圖像處理方面發(fā)揮重要作用,。本文旨在設計一種高可靠性的數(shù)據(jù)記錄器以實現(xiàn)對高速數(shù)字視頻信號的采集,、存儲和回傳。
1 設計思路
結合當前數(shù)據(jù)記錄器的研究現(xiàn)狀和發(fā)展趨勢,,采用FPGA作為數(shù)據(jù)記錄裝置的中控邏輯單元,,用Flash作為核心存儲芯片,使用LVDS作為數(shù)據(jù)傳輸接口,,特點是功耗低,、可控性高,并且數(shù)據(jù)不易丟失,。設計時,,采用自上而下的設計思想,分成多個模塊進行編碼和調試,。
已知數(shù)字視頻信號參數(shù):畫面分辨率為VGA(640×480),,幀率100 f/s,采樣位數(shù)為8 bit,,采樣頻率為40 MHz,。經(jīng)計算得出接口處的數(shù)據(jù)流為30.72 Mb/s,。應用于航天遙測的精密儀器對設備出現(xiàn)誤碼、數(shù)據(jù)丟失等情況有嚴格的限制,,其可靠性和穩(wěn)定性應得到保證,。確保設備研制成功的關鍵技術有三:一是數(shù)字視頻信號的完整采集,二是選擇合理的Flash工作方式并嚴格控制其時序約束,,三是準確高效地回傳混有幀標記的圖像,。
2 關鍵技術
2.1 圖像采集
攝像機輸出的數(shù)字視頻信號的時序如圖1所示。垂直同步信號vsync是實現(xiàn)圖像幀同步的標志,,當vsync為1時,,攝像頭有數(shù)據(jù)輸出,vsync上升沿是獲取一幀數(shù)據(jù)的初始時刻,;當vsync為0時,,無數(shù)據(jù)輸出,可以利用這段時間在一幀圖像采集完成后加入其他信息,,如時標,、幀計數(shù)和幀標記等。水平同步信號hsync的上升沿為采集每一行的初始時刻,,當hsync為1時,,完成此行640個像素點的采集。重復操作480次,,即可獲取一幀完整的圖像,。數(shù)據(jù)采集流程如圖2所示。
在高速數(shù)據(jù)處理過程中,,不同模塊在各自的同步時鐘下工作,,為解決跨時鐘域問題,要在數(shù)據(jù)交換接口處添加異步FIFO,,以匹配不同傳輸速率的數(shù)據(jù)流,。由圖1可知,在一個水平同步周期(18.75 s)內,,采集并寫入FIFO的數(shù)據(jù)量為640字節(jié),,若以33 MHz的速率讀FIFO,則在這一時間內,,流出FIFO的數(shù)據(jù)量為618.75字節(jié),。數(shù)據(jù)差值將在Vsync下降沿時達到最大,為10 200字節(jié),,若采用半滿即讀的方式,,則FIFO容量應大于20 400字節(jié),否則就可能溢出。攝像機在時鐘上升沿發(fā)數(shù),,記錄器用時鐘下降沿取數(shù),。存到記錄器中的數(shù)據(jù)是圖像和信息的組合,為了區(qū)分兩種類型的數(shù)據(jù),,采用9位的FIFO緩存數(shù)據(jù),,低8位用以寫入數(shù)據(jù)流,最高位(MSB)用來標識數(shù)據(jù)類型,。部分代碼如下:
writeclk<=((not clk) and hsync) and vsync);
---寫FIFO時鐘
fifo_in<=′0′ & information when vsync=′0′ else
′1′ & image_data;
---加 ′0′表示信息,,加 ′1′表示圖像
2.2 數(shù)據(jù)存儲
Nand Flash有多種編程方式,,如頁編程(Page Program)、雙平面頁編程(Two-plane Page Program)和交叉雙平面頁編程(Interleave Two-plane Page Program),,如圖3所示,。這三種工作方式最終導致Flash寫入數(shù)據(jù)的速度不同[2]。
由表1可以看出,,影響Flash編程時間的主要因素為tPRO,。前兩種方式都花費了大量的時間用在tPRO上,tPRO會隨著工作電壓和溫度的不同而變化,。寫完一整頁需要i個命令字周期,、j個尋址周期和m個數(shù)據(jù)周期。
在三種工作方式下,,若不考慮其他影響因素,,F(xiàn)lash的持續(xù)寫入速率計算如下:
事實上,在出廠時芯片就存在無效塊,,而且在使用過程中還會產(chǎn)生新的無效塊,。無效塊的存在一定程度上影響了Flash的寫入速度,按照“判一塊寫一塊”的方法顯然是行不通的,。為此,,本文采用一種“無效塊動態(tài)管理算法”,即:在執(zhí)行寫操作前對無效塊進行檢測,,在RAM中建立無效塊地址列表,;寫入數(shù)據(jù)時,將當前塊地址與列表中的無效塊地址按順序對比判斷,;若一致,,則認為當前塊無效,繼續(xù)判斷下一塊,;否則,,認為當前塊有效,可以進行寫操作[3],。讀取RAM無效塊列表的時間與無效塊檢測的時間相比微乎其微,,在理論上和實際應用中都得到了驗證,。
Flash的編程編碼算法本身并不復雜,但如果不對其做任何處理,,一旦數(shù)據(jù)產(chǎn)生誤碼或丟失,,在圖像回傳時,可能導致后續(xù)圖像紊亂影響全局,。因此,,有必要對Flash存儲空間進行特殊配置,以空間地址來記錄幀結構,。Flash每個Device存儲空間結構如圖4所示,,用A13~A31指定頁地址, 總共524 288頁,,2個Device共1 048 576頁[4],。一幀圖像數(shù)據(jù)為307 200字節(jié),占用75頁,,若按試驗要求,,飛行器每次工作記錄的5 000幀圖像數(shù)據(jù)僅占用了全空間的36%,有足夠的空間來配置地址,,甚至完成地址的選擇和跳躍,。空間地址配置方式如圖5所示:白,、灰兩色背景分別表示一幀數(shù)據(jù),,圖像數(shù)據(jù)累計寫滿75頁,緊跟在第76頁寫入信息,,這樣就完整地記錄了一幀數(shù)據(jù),,其中,代表信息的一頁用黑色加粗邊框標出,。采用交叉雙平面頁編程的工作模式,,寫入順序如黑色箭頭方向所示。Flash每一行有8個塊,,每塊有64頁,,共512頁,每行可以完整寫入6幀數(shù)據(jù),,然后跳過56頁進入下一行繼續(xù)按照以上方法寫數(shù)[5],。以此類推,每連續(xù)6個數(shù)據(jù)幀就有了統(tǒng)一的存儲結構,,便于對圖像的恢復,。這樣做的另一個優(yōu)點是可以實現(xiàn)數(shù)據(jù)的檢錯和糾錯:數(shù)據(jù)從FIFO中流出被寫入Flash時,假若最高位為0,而計數(shù)器并非76,,說明傳輸時有數(shù)據(jù)丟失,,則在寫完信息數(shù)據(jù)后,直接跳到指定位置寫下一幀,,將錯誤限制在一幀內,,而不影響后序數(shù)據(jù)幀[6]。
2.3 圖像回傳
圖像回傳的本質就是按照圖1的時序將Flash存儲的圖像數(shù)據(jù)通過LVDS接口發(fā)出,。由于每幀數(shù)據(jù)的附帶信息并非回傳所需,,因此可以將第76頁直接跳過;但這樣做的缺點是回傳讀數(shù)和普通讀數(shù)要被分為兩個不同的進程,,增加了程序占用的資源,。因此,可以合并這兩個進程,,由后續(xù)模塊提取圖像數(shù)據(jù)[7]。這個過程將包括兩部分:一是按照圖5所示黑色箭頭方向讀取數(shù)據(jù)并寫入FIFO低8位,,同時根據(jù)存儲空間地址判斷數(shù)據(jù)是圖像還是信息,,用FIFO的最高位加以區(qū)分。二是FIFO非空即讀,,若為圖像則合理產(chǎn)生vsync,、hsync和clk信號,并在clk上升沿時推送數(shù)據(jù),;否則將vsync,、hsync和clk信號全部置為低電平,且不把數(shù)據(jù)推送至LVDS接口處,。過程一相對比較簡單,,這里不再敘述;過程二的工作流程如圖6所示,。
3 系統(tǒng)驗證
為了驗證本文設計的記錄器的整體性能和可靠性,,專門設計了一套檢測設備,包括硬件平臺和測試軟件,。該設備的主要功能有:(1)模擬前端攝像機,,輸出垂直同步信號、水平同步信號,、時鐘信號和8位位寬的數(shù)據(jù)流,;(2)接收記錄器回傳的圖像;(3)測試軟件可以直接讀取記錄器中的完整數(shù)據(jù)(稱為“長線讀數(shù)”),,也可以讀取回傳至測試設備中的圖像數(shù)據(jù)(稱為“備用讀數(shù)”),;(4)判定幀結構是否完整,檢測數(shù)據(jù)是否正確;(5)顯示圖像,。
由于一幀圖像數(shù)據(jù)有300 KB,,若采用遞增模式的信號源,模擬攝像機輸出的數(shù)據(jù)格式為:1 200個“00h~FFh”+8字節(jié)的附加信息(“14 92”+幀計數(shù)+時標+狀態(tài)信息),。
計算機軟件執(zhí)行“長線讀數(shù)”或“備用讀數(shù)”命令后,,將在線讀取完整數(shù)據(jù)或圖像數(shù)據(jù),存入一個后綴名為.dat的文件,,經(jīng)多次考查,,記錄裝置存儲的數(shù)據(jù)與檢測設備發(fā)送的數(shù)字量一致,符合設計要求,。
4 結束語
本文主要介紹一種高速數(shù)字視頻信號記錄裝置,,從程序編碼方面入手,選擇了穩(wěn)健,、高效能的算法,,重點介紹了圖像采集、存儲和回傳三項關鍵技術,,并設計了一套專用的檢測平臺,。經(jīng)單機測試,設備穩(wěn)定性良好,、功能齊備,、滿足任務要求。由于采用的Flash芯片所限,,本文所提出的編碼算法僅適用于碼率在40 Mb/s以下的數(shù)據(jù)存儲,。
參考文獻
[1] 洪應平.高速圖像數(shù)據(jù)固態(tài)存儲器的研制[D].太原:中北大學,2011.
[2] 謝民.NAND型Flash在大容量存儲回放系統(tǒng)中的應用[J].集成電路應用,,2006,,3(4):94~98.
[3] SAMSUNG Electronics.K9WBGU1M Flash Memory:10-13.
[4] 孟令軍,嚴帥,,龔敬,,等.基于FPGA的高速圖像采集存儲系統(tǒng)設計[J].自動化與儀表,2011,,9(26):40-42.
[5] 常璐.基于NAND Flash陣列的數(shù)據(jù)存儲技術研究[D].太原:中北大學,,2011.
[6] 齊亞軍,趙鳳軍.一種專用高速數(shù)據(jù)記錄器的設計與實現(xiàn)[J].微計算機信息,,2007,,23(1):107-109.
[7] 王小艷,張會新,,孫永生.Camera Link協(xié)議和FPGA的數(shù)字圖像信號源設計[J].國外電子元器件,,2008(7):59-61.