文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.002
中文引用格式: 馬林,李錦明,,張虎威,,等. 高速CMOS圖像存儲與實(shí)時顯示系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2017,,43(6):7-10,,14.
英文引用格式: Ma Lin,Li Jinming,,Zhang Huwei,,et al. Design of high-speed CMOS image storage and real-time display system[J].Application of Electronic Technique,2017,,43(6):7-10,,14.
0 引言
在航空航天圖像監(jiān)測領(lǐng)域,高分辨率,、高幀頻的工業(yè)相機(jī)有著廣泛的應(yīng)用,,它可以有效捕捉高速飛行器的飛行姿態(tài),最終通過計算機(jī)對圖像進(jìn)行分析與處理,,提取出其運(yùn)行速度,、加速度等重要參數(shù)[1]。隨著工業(yè)相機(jī)分辨率以及幀頻的不斷提高,,對圖像存儲系統(tǒng)的要求也越來越高,,特別是在載人航天測試領(lǐng)域,存儲系統(tǒng)必須能夠應(yīng)對復(fù)雜的工況環(huán)境,。傳統(tǒng)的Nand Flash以及機(jī)械硬盤等存儲介質(zhì)存在容量小,、操作復(fù)雜以及抗干擾能力差等缺點(diǎn),而SSD固態(tài)硬盤憑借其容量大,、速度快,、環(huán)境特性好等特點(diǎn),在科研,、航空航天以及軍事測試等領(lǐng)域,,有廣闊的應(yīng)用前景。
現(xiàn)階段,,主要使用傳統(tǒng)的Flash對圖像數(shù)據(jù)進(jìn)行采集,。文獻(xiàn)[2]和[3]采用Flash陣列進(jìn)行數(shù)據(jù)的存儲,雖然在一定程度上提高了讀寫速度,,但是存在接口操作復(fù)雜,、穩(wěn)定性差等缺點(diǎn)。文獻(xiàn)[4]使用圖像采集卡進(jìn)行圖像數(shù)據(jù)的實(shí)時顯示,,增加了系統(tǒng)的體積與復(fù)雜度,,而且圖像的分辨率不高。本文通過采用FPGA對系統(tǒng)功能進(jìn)行開發(fā),,利用4塊SSD固態(tài)硬盤構(gòu)成存儲陣列對高速圖像進(jìn)行存儲,,可以在飛行器回收后讀取原始圖像數(shù)據(jù),同時以抽幀并降低分辨率的形式對圖像數(shù)據(jù)進(jìn)行實(shí)時顯示,,以減小遙測數(shù)據(jù)回傳時的帶寬占用,,實(shí)現(xiàn)了圖像數(shù)據(jù)的大容量高速存儲與實(shí)時顯示,并且具有可移植性,。
1 系統(tǒng)總體設(shè)計
系統(tǒng)設(shè)計總體框圖如圖1所示,。系統(tǒng)選用Point Grey公司生產(chǎn)的GZL-CL-41C6型號高速灰度相機(jī),,通過Camera Link接口發(fā)送圖像數(shù)據(jù)和同步信號,串口接收相機(jī)控制命令,,圖像分辨率為2 048×2 048像素,,幀頻為150 f/s,像素格式為8 bit[5],。由于相機(jī)產(chǎn)生的數(shù)據(jù)量約為600 MB/s,,而SATA2.0接口的單塊固態(tài)硬盤的寫入速度約為180 MB/s[6],,所以使用4塊固態(tài)硬盤構(gòu)成RAID0陣列進(jìn)行存儲,。系統(tǒng)采集工業(yè)相機(jī)輸出的高速圖像數(shù)據(jù),并將數(shù)據(jù)發(fā)送到FPGA后分成兩路,,一路經(jīng)過DDR3緩存后,,并行存入固態(tài)硬盤整列中;另一路經(jīng)過格式轉(zhuǎn)換后存入DDR3緩存中,,然后通過VGA接口實(shí)時顯示圖像數(shù)據(jù),。
2 系統(tǒng)硬件電路設(shè)計
2.1 圖像采集模塊
系統(tǒng)前端工業(yè)相機(jī)使用了8-tap模式輸出像素數(shù)據(jù),即一次輸出8個像素數(shù)據(jù),,所以使用Full模式Camera Link接口電路,。在Full模式下,Camera Link接口使用兩個連接器,,需要使用3個數(shù)據(jù)接口芯片,、一個相機(jī)控制芯片和一個串行通信芯片。通過接口芯片將Camera Link電纜所傳輸?shù)腖VDS差分信號轉(zhuǎn)換為FPGA可以直接進(jìn)行處理的TTL電平信號,。
相機(jī)與FPGA連接示意圖如圖2所示,。系統(tǒng)選用TI公司生產(chǎn)的DS90CR288A作為數(shù)據(jù)接收芯片,DS90LV-047ATM為控制芯片,,DS90LV019TM為串行通信芯片,。其中,D0~D23為數(shù)據(jù)信號,,F(xiàn)VAL,、LVAL、DVAL為同步信號,,CC1~CC4為相機(jī)控制信號,,SerTC與SerTFG為串行通信信號。
2.2 VGA驅(qū)動電路
FPGA的輸出為3.3 V的電平信號,,而VGA接口要求的輸入信號為0~0.714 V的模擬信號,,所以為了滿足VGA顯示要求,必須對FPGA的輸出信號進(jìn)行D/A轉(zhuǎn)換,,以實(shí)現(xiàn)0~0.714 V的模擬信號輸入[7],。系統(tǒng)選用ADI公司生產(chǎn)的視頻轉(zhuǎn)換芯片ADV7123實(shí)現(xiàn)VGA驅(qū)動,,由于相機(jī)輸出的圖像數(shù)據(jù)為灰度圖像,所以將R,、G,、B三個通道中的任意一個與FPGA相連,并且將其他兩路接地,。本設(shè)計將FPGA輸出與紅色輸入端口相連,,并將未使用的綠色和藍(lán)色模擬信號連接37.5 Ω終端電阻。
2.3 千兆以太網(wǎng)接口電路
系統(tǒng)使用了Realtek公司生產(chǎn)的以太網(wǎng)收發(fā)器RTL8211EG實(shí)現(xiàn)千兆以太網(wǎng)數(shù)據(jù)傳輸,。鏈路層,、傳輸層以及網(wǎng)絡(luò)層使用UDP/IP協(xié)議,由FPGA實(shí)現(xiàn),。RTL8211EG與FPGA的電路連接示意圖如圖3所示,,RTL8211EG通過GMII接口與FPGA進(jìn)行連接,主要用來連接以太網(wǎng)的MAC層和PHY層,。當(dāng)使用千兆以太網(wǎng)進(jìn)行數(shù)據(jù)傳輸時,,接口時鐘為125 MHz。其中,,接收時鐘由RTL8211EG的E_RXC提供,;發(fā)送時鐘由FPGA的E_GTXC提供,接收與發(fā)送數(shù)據(jù)均在時鐘上升沿進(jìn)行采樣,。
3 系統(tǒng)軟件設(shè)計與仿真
3.1 圖像實(shí)時顯示模塊
系統(tǒng)相機(jī)輸出的圖像分辨率為2 048×2 048像素,、150 f/s幀頻的圖像,無論是分辨率還是幀頻都超過了通用VGA接口顯示器的顯示格式,,所以可以采取抽幀并降低分辨率的方式對圖像進(jìn)行顯示,。
3.1.1 圖像壓縮單元設(shè)計
系統(tǒng)對原始分辨率為2 048×2 048像素的圖像進(jìn)行如圖4所示的縮小,將3×3范圍內(nèi)的9個像素數(shù)據(jù)合成為1個像素數(shù)據(jù),,最終得到分辨率為682×682像素格式的圖像,。為了降低噪聲信號在圖像中的影響,使用了對9個像素數(shù)據(jù)取中值的方式進(jìn)行合成,。
在FPGA程序設(shè)計中,,使用了9個FIFO對算法進(jìn)行實(shí)現(xiàn),實(shí)現(xiàn)方法如圖5所示,。每個FIFO的大小為1 024×8 bit,,通過9個FIFO對3行像素數(shù)據(jù)進(jìn)行緩存。其中,,首先用FIFO1,、FIFO2、FIFO3分別存儲第一行的第1,、2,、3個數(shù)據(jù),,緊接著再存儲第一行的第4、5,、6個數(shù)據(jù),,直到第一行存儲完畢;之后使用FIFO4,、FIFO5,、FIFO6以相同的方式緩存第二行數(shù)據(jù),F(xiàn)IFO7,、FIFO8,、FIFO9緩存第三行數(shù)據(jù)。前三行數(shù)據(jù)緩存完之后,,再使用另外9個FIFO存儲第4,、5、6行數(shù)據(jù),,與第一組FIFO構(gòu)成乒乓緩存結(jié)構(gòu)。這樣,,每一組FIFO可以在一個周期讀出需要處理的9個像素數(shù)據(jù),,并對這9個數(shù)據(jù)提取中值。
對于N為奇數(shù)的中值運(yùn)算,,若N為9,,則需要比較的次數(shù)為36次,結(jié)合FPGA并行處理的優(yōu)勢,,同時使用36個比較器,,可以達(dá)到最大處理速度[8]。此外,,VGA顯示器分辨率為1 024×768像素,,而經(jīng)過處理后的圖像分辨率為682×682像素,所以圖像應(yīng)在顯示器中央顯示,,在進(jìn)行VGA驅(qū)動顯示時,,可以將其他像素補(bǔ)0,即黑色圖像,。
3.1.2 抽幀緩存模塊
由于相機(jī)輸出圖像的幀頻為150 f/s,,而常用VGA分辨率格式的幀頻一般都在75 Hz以下,為了匹配VGA接口分辨率,,對相機(jī)圖像進(jìn)行抽幀緩存處理,,每兩幀抽取一幀,依次存入兩片DDR3中,,最終以1 024×768@75格式的VGA分辨率進(jìn)行顯示,。
抽幀顯示時序圖如圖6所示,。將相機(jī)幀同步信號FVAL進(jìn)行4分頻,得到抽幀控制信號F_Control,再生成一個以F_Control的邊沿為復(fù)位信號的FVAL上升沿計數(shù)器CNT,。當(dāng)F_Control為低電平時,,將CNT為1的幀圖像存入緩存1;當(dāng)F_Control為高電平時,,將CNT為1的幀圖像存入緩存2,。讀緩存與寫緩存正好相反,在F_Control為低電平時讀取緩存2中的數(shù)據(jù),;在F_Control為高電平時讀取緩存1中的數(shù)據(jù),。
在程序設(shè)計時,對圖像分辨率,、圖像縮放因子,、圖像幀頻、抽幀系數(shù)等關(guān)鍵參數(shù)使用Verilog HDL語言中的`define語法進(jìn)行宏定義,,實(shí)現(xiàn)任意分辨率和幀頻的圖像格式轉(zhuǎn)換,,以便相機(jī)和顯示器型號的改變以及系統(tǒng)移植。
3.2 圖像存儲模塊
系統(tǒng)以Spartan6-T系列FPGA中的GTP高速串行收發(fā)器為基礎(chǔ),,實(shí)現(xiàn)SATA2.0控制器的物理層,,并使用Verilog HDL語言實(shí)現(xiàn)鏈路層、傳輸層以及命令層的開發(fā),,最終實(shí)現(xiàn)SATA2.0協(xié)議的DMA傳輸,。
在進(jìn)行圖像存儲時,首先將圖像采集模塊采集到的數(shù)據(jù)先通過異步FIFO進(jìn)行位寬轉(zhuǎn)換,,系統(tǒng)使用FPGA中的MCB(Memory Controller Block)硬核來控制DDR3存儲器,,為了最大化帶寬,其用戶端口位寬選擇為128 bit,,所以需要把Camera Link接口64 bit位寬的數(shù)據(jù)轉(zhuǎn)換為128 bit位寬數(shù)據(jù),,再把數(shù)據(jù)輸入數(shù)據(jù)分配模塊。數(shù)據(jù)分配模塊流程如圖7所示,。系統(tǒng)使用的DDR3存儲器型號為MT41J256M16,,容量為512 MB,將其分為上,、下半頁,,數(shù)據(jù)以256 MB為單位按照流水線方式依次存入兩片DDR3之中。
系統(tǒng)使用的SATA控制器的尋址方式為邏輯塊尋址,,每個邏輯塊的大小為512 B,。為了最大化利用存儲帶寬,使用突發(fā)讀寫模式,其中寫突發(fā)讀寫控制端口cmd_bl的位寬為18 bit,,最大讀寫深度為262 144,,一次可以讀寫262 144×512 B,即128 MB的數(shù)據(jù),。硬盤存儲數(shù)據(jù)分配流程圖如圖8所示,,以128 MB為單位將DDR存儲器每半頁再次分塊,SATA控制器0~SATA控制器4分別按照命令讀取DDR3_0和DDR3_1中的數(shù)據(jù),,并以流水線的方式存入固態(tài)硬盤中,。
4 系統(tǒng)測試
為了驗(yàn)證系統(tǒng)功能的正確性,對系統(tǒng)存儲模塊以及顯示模塊分別進(jìn)行了測試,。使用三星公司的750 EVO固態(tài)硬盤進(jìn)行測試,,在SATA控制器數(shù)據(jù)端口插入觸發(fā)信號,當(dāng)控制器讀取或?qū)懭胗脖P數(shù)據(jù)時,,記錄數(shù)據(jù)流量及時間,,當(dāng)計滿1GB的數(shù)據(jù)后,計算讀寫速度,,同時對計數(shù)器清零,,之后將速度信息通過串口模塊發(fā)送到上位機(jī)。系統(tǒng)存儲模塊讀寫速度測試如圖9,、圖10所示,。
通過Camera Link串行通信芯片發(fā)送命令,將相機(jī)圖像設(shè)定為測試圖像,。相機(jī)測試圖像在同一行中灰度值逐漸遞減,可以清晰地反映圖像數(shù)據(jù)的傳輸過程,,并且可以根據(jù)每一個像素的相鄰數(shù)據(jù)判斷圖像傳輸是否發(fā)生錯誤,。通過上位機(jī)回讀顯示的圖像與實(shí)時顯示的圖像均顯示良好,沒有發(fā)生像素缺損和錯位現(xiàn)象,。
5 結(jié)束語
本文設(shè)計了一種高速CMOS圖像存儲與實(shí)時顯示系統(tǒng),,主要包括系統(tǒng)圖像接口模塊、VGA驅(qū)動電路以及圖像回讀模塊等硬件電路,,同時對圖像顯示模塊及存儲模塊的軟件進(jìn)行設(shè)計,。經(jīng)過讀寫速度測試以及圖像顯示測試,表明該系統(tǒng)可以對分辨率為2 048×2 048像素,、幀頻為150 f/s的高速圖像進(jìn)行存儲與實(shí)時顯示,,具有較高的可移植性以及實(shí)用價值。
參考文獻(xiàn)
[1] 韓帥.基于工業(yè)相機(jī)的圖像采集與回放系統(tǒng)研究[D].太原:中北大學(xué),,2015.
[2] 張惠臻,,周炎,王成.基于NAND Flash的嵌入式大規(guī)模數(shù)據(jù)存儲機(jī)制[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),,2017,,45(1):46-51.
[3] 徐永剛,,任國強(qiáng),吳欽章,,等.NAND Flash圖像記錄系統(tǒng)底層寫入控制技術(shù)[J].光電工程,,2012,39(9):138-144.
[4] 馬志剛,,劉文怡,,凌偉.基于PCI和LVDS的高速數(shù)據(jù)存儲系統(tǒng)的設(shè)計[J].電子技術(shù)應(yīng)用,2014,,40(4):80-83.
[5] BARRERA E,,RUIZ M,SANZ D,,et al.Test bed for real-time image acquisition and processing systems based on F1exRI0,,Camera Link and EPICS[J].Fusion Engineering and Design,2014,,89(5):633-637.
[6] 劉偉.SATA接口雙硬盤控制技術(shù)研究與實(shí)現(xiàn)[D].太原:中北大學(xué),,2016.
[7] 吳偉學(xué).基于FPGA的圖像采集與處理系統(tǒng)設(shè)計[D].廣州:華南理工大學(xué),2015.
[8] 李飛飛,,劉偉寧,,王艷華.改進(jìn)的中值濾波算法及其FPGA快速實(shí)現(xiàn)[J].計算機(jī)工程,2009,,35(14):175-177.
作者信息:
馬 林1,,2,李錦明1,,2,,張虎威1,2,,侯天喜1,,2,降 帥1,,2
(1.中北大學(xué) 電子測試國家重點(diǎn)實(shí)驗(yàn)室,,山西 太原030051;
2.中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點(diǎn)實(shí)驗(yàn)室,,山西 太原030051)