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