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