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