嚴(yán) 帥,孟令軍,胡肖斌,尹維漢
(中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點實驗室 電子測試技術(shù)國家重點實驗室,山西 太原 030051)
責(zé)任編輯:孫 卓
在航天航空技術(shù)領(lǐng)域,經(jīng)常需要采集大容量高精度的紅外圖像信息,對于有些信息專業(yè)人員無法現(xiàn)場進(jìn)行數(shù)據(jù)處理,只能先存儲備份,然后讀取分析采集到的圖像數(shù)據(jù)并還原顯示在計算機(jī)上。由于圖像傳輸速度快、容量大,而Flash的存儲速度一般不超過40 Mbyte/s,本文充分利用乒乓緩存的思想對高速數(shù)據(jù)流進(jìn)行實時無縫緩存,避免了圖像快速傳輸過程中的丟數(shù)現(xiàn)象,利用流水線技術(shù)寫Flash,解決了Flash寫入速度的限制。與傳統(tǒng)的存儲系統(tǒng)相比,該系統(tǒng)具有存儲速度快、可靠性強(qiáng)、穩(wěn)定性高、適用范圍廣等優(yōu)點。
系統(tǒng)采用Altera公司Cyclone II系列EP2C35F484C6芯片作為主要控制核心[1],紅外相機(jī)捕捉到的視頻圖像信號通過LVDS接口電路進(jìn)入解碼模塊,經(jīng)FPGA處理過的圖像數(shù)據(jù)通過乒乓結(jié)構(gòu)實時無縫緩存,最后用流水線寫Flash技術(shù)將圖像數(shù)據(jù)存儲在NAND Flash閃存陣列。存儲的圖像數(shù)據(jù)在需要時可用分析軟件通過FT245控制的USB 2.0接口讀出并將圖像顯示在計算機(jī)上,系統(tǒng)組成框圖如圖1所示。
本系統(tǒng)采用National公司差分接收芯片DS90CR216作為視頻解碼芯片,經(jīng)LVDS接口電路解碼后的信號主要有幀同步信號(vsync)、行同步信號(hsync)、像素時鐘(mclk)以及8位數(shù)據(jù),其中,像素時鐘為29.5 MHz,行同步周期為64μs,高電平有效,每行有384個有效像素,幀同步周期為20 ms,高電平有效,每幀有289行有效數(shù)據(jù),圖像數(shù)據(jù)在時鐘上升沿變化,因此選擇2片128 kbyte的SRAM即可滿足要求。解碼后圖像信號時序如圖2所示。
乒乓緩沖技術(shù)是FPGA設(shè)計中最常用的一種數(shù)據(jù)緩沖方法,其最大的特點是能實現(xiàn)實時無縫緩沖與節(jié)約緩沖區(qū)空間[2]。
本系統(tǒng)每秒傳輸50幀圖像,每幀期間幀同步高電平時間約為18.5 ms,低電平時間約為1.5 ms,如果在幀同步低電平1.5 ms的時間內(nèi)從SRAM中將數(shù)據(jù)轉(zhuǎn)存至Flash,會產(chǎn)生丟數(shù)。因此,為了給數(shù)據(jù)處理單元贏得更多的處理時間[3],采用的乒乓緩沖模塊工作流程為:當(dāng)幀同步信號為高電平時,將經(jīng)過FPGA處理過的圖像數(shù)據(jù)寫入SRAM1,同時地址計數(shù)器1開始遞加計數(shù),此時地址計數(shù)器的值一方面為FPGA數(shù)據(jù)處理模塊提供觸發(fā)參考,另一方面也為緩存空間提供了參考。當(dāng)幀同步為低電平時,F(xiàn)PGA控制乒乓緩存邏輯切換總線開關(guān),開始選擇SRAM2為寫空間,將SRAM1切換為讀空間以讀取緩存在SRAM1中的圖像數(shù)據(jù),此時地址計數(shù)器1開始遞減計數(shù),當(dāng)SRAM1中的數(shù)據(jù)全部讀出后,地址計數(shù)器1計數(shù)到0。當(dāng)幀同步信號再次變高后,將圖像數(shù)據(jù)寫入SRAM2,地址計數(shù)器2遞加計數(shù),等待幀同步為低電平時,切換讀寫信號,選擇SRAM2為讀空間,SRAM1為寫空間,開始讀取SRAM2中的數(shù)據(jù)同時地址計數(shù)器2的值開始遞減計數(shù),同樣當(dāng)SRAM2中的數(shù)據(jù)全部讀出后,地址計數(shù)器2計數(shù)到0。待幀同步又一次為高電平時,將圖像數(shù)據(jù)寫入SRAM1中,地址計數(shù)器1開始遞加計數(shù)。如此循環(huán)切換讀寫空間,將緩存在2片SRAM中的數(shù)據(jù)讀出并存入Flash中。乒乓操作讀寫時序如圖3所示。
選用三星公司容量為1 Gbyte的閃存K9K8G08U0A,它由8192個存儲塊組成,每個存儲塊分為64頁,每頁容量為2 kbyte,其外部有8個I/O引腳和6個信號管腳,而這8個I/O腳既是命令和地址的輸入引腳,也是數(shù)據(jù)的輸入輸出端口。該閃存是一種高密度非易失性的存儲器,主要特點為:1)讀、寫(編程)操作均以頁為單位,擦除以塊為單位。2)讀取每頁時間為20μs,頁編程的典型時間是200μs,塊擦除的典型時間是1.5 ms。3)頁寄存器寫入最低時間是50μs,頁編程的最大時間是700μs,塊擦除的最大時間是2 ms。由于每次進(jìn)行頁編程之前都需要寫頁地址,不難計算出寫一頁所需時間為250~750 μs,寫入的速度約2.6000~7.8125 Mbyte/s。實驗證明,頁編程的時間正是限制Flash存儲速度的關(guān)鍵因素,因此在對其進(jìn)行頁編程操作時采用流水線技術(shù)來實現(xiàn)高速大容量Flash的存儲[4]。
本系統(tǒng)所采用的流水線技術(shù)主要分為3個步驟實現(xiàn):1)向Flash加載編程指令、地址以及數(shù)據(jù);2)待加載完成之后,F(xiàn)lash芯片會自動執(zhí)行將載入到頁數(shù)據(jù)寄存器的數(shù)據(jù)寫到內(nèi)部存儲單元的編程操作[5];3)當(dāng)自動編程結(jié)束后,由FPGA下發(fā)“70h”讀狀態(tài)指令以檢測Flash的I/O口最低位是否為“0”,如果是,表示編程成功,頁計數(shù)器遞加并繼續(xù)對下一頁編程,當(dāng)頁計數(shù)器從0加到63后,頁計數(shù)器清0,塊計數(shù)器加1,繼續(xù)進(jìn)行頁編程操作,當(dāng)塊計數(shù)器遞加至8192塊時,停止對Flash的頁編程操作,等待上位機(jī)的讀Flash指令。流水線存儲的示意圖如圖4所示。
由于每次對Flash加載數(shù)據(jù)和地址后總是有大概200μs以上的時間花費在芯片編程上,所以可用多片1 Gbyte的Flash組成流水線工作模式:在第1片加載完成執(zhí)行編程時可以加載第2片F(xiàn)lash,待第2片F(xiàn)lash編程時又加載第3片F(xiàn)lash,依此操作執(zhí)行,實現(xiàn)時間的復(fù)用,縮短了Flash陣列的有效頁編程時間,從而提高了寫Flash的整體速度。如果工程項目要求寫Flash的速度應(yīng)為60 Mbyte/s,用5片F(xiàn)lash組成流水線操作模式,那么每片的速度應(yīng)為12 Mbyte/s,經(jīng)計算加載一頁數(shù)據(jù)到Flash寄存器的時間大概為162.76 μs,而700 μs÷162.76 μs≈4.3,所以采用5級本系統(tǒng)的流水線技術(shù)是可以滿足設(shè)計要求的。
本系統(tǒng)經(jīng)多次實際存儲紅外相機(jī)捕捉視頻圖像的實驗,用讀數(shù)軟件從Flash中將數(shù)據(jù)讀取出來后再經(jīng)過Mat?lab處理還原,驗證了系統(tǒng)的可行性和可靠性。圖5為捕捉到的一張男士揮手的紅外圖。
實驗結(jié)果表明,本系統(tǒng)具有以下優(yōu)點:1)以FPGA為邏輯控制核心,采用乒乓緩存模塊將紅外相機(jī)下發(fā)的高速大容量數(shù)據(jù)進(jìn)行緩存能避免因傳輸速度太快而出現(xiàn)數(shù)據(jù)丟幀的現(xiàn)象。采用流水線陣列存儲,打破了傳統(tǒng)存儲方式下Flash存儲速度不能超過40 Mbyte/s的束縛,實現(xiàn)了高速大容量存儲技術(shù)的突破。2)系統(tǒng)占用體積小,成本低,硬件電路簡單,調(diào)試方便,能完成大量視頻數(shù)據(jù)的無縫緩存和實時存儲。3)為高速大容量數(shù)據(jù)可靠記錄、高速實時準(zhǔn)確存儲提供了有效的技術(shù)方案,并在多次實際應(yīng)用中以其穩(wěn)定、可靠的性能得到廣泛的應(yīng)用。
[1]宋海吒,唐立軍,謝新輝.基于FPGA和OV7620的圖像采集及VGA顯示[J].電視技術(shù),2011,35(5):45-47.
[2]姚遠(yuǎn),李辰.FPGA應(yīng)用開發(fā)入門與典型實例:修正版[M].北京:人民郵電出版社,2010.
[3]譚樹人,張茂軍,徐偉.多傳感器同步圖像采集系統(tǒng)的設(shè)計[J].電視技術(shù),2006,30(9):84-87.
[4]楊海濤,蘇濤.基于FPGA的高速大容量固態(tài)存儲設(shè)備設(shè)計[J].國外電子元器件,2007(5):68-72.
[5]劉瑞,黃魯,陳楠.基于Flash的高速大容量固態(tài)存儲系統(tǒng)設(shè)計[J].測控技術(shù),2009,28(4):10-14.