應(yīng)小軍,李瑜煜
(廣東工業(yè)大學(xué)材料與能源學(xué)院,廣東廣州510006)
CMOS圖像傳感器是近些年發(fā)展較快的一種新型圖像傳感器.與CCD相比,CMOS圖像傳感器具有體積小、成本低、重量輕、功耗低、編程方便、易于控制等優(yōu)點.CMOS圖像傳感器已經(jīng)廣泛應(yīng)用于各種通用圖像采集系統(tǒng)中.隨著CMOS集成電路設(shè)計和工藝的不斷進步和完善,CMOS正在朝著高分辨率,高靈敏度,低噪聲,大動態(tài)范圍,高智能化的方向不斷發(fā)展[1-5].采用FPGA作為主控芯片,整個系統(tǒng)具有設(shè)計方便、仿真簡單和傳送高速數(shù)據(jù)時有更小的高頻噪聲干擾等優(yōu)勢[6-8].因此,提出基于FPGA的CMOS圖像傳感器實時采集和顯示的設(shè)計方案,為圖像檢測系統(tǒng)項目的研究提供了有價值的設(shè)計參考.
系統(tǒng)整體結(jié)構(gòu)包括4部分:CMOS圖像傳感器圖像數(shù)據(jù)采集模塊、FPGA邏輯控制模塊、SRAM讀寫模塊及VGA顯示模塊.圖1為系統(tǒng)結(jié)構(gòu)框圖.
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 Diagram of the circuit system structure
系統(tǒng)以Altera公司的FPGA(現(xiàn)場可編程邏輯器件)EP2C8Q208C8N作為邏輯控制器[9],利用I2C(Inter-Integrate Circuit)總線配置CMOS圖像傳感器,采用兩片SRAM(靜態(tài)隨機存儲器)進行乒乓讀寫.FPGA根據(jù)CMOS圖像傳感器輸出的同步信號,將CMOS圖像傳感器采集到的圖像數(shù)據(jù)存儲到其中一片SRAM中,同時讀取另外一片SRAM,送到VGA顯示器進行顯示.整個系統(tǒng)的時序控制和數(shù)據(jù)流的讀寫控制都由FPGA來完成.
本文采用自頂向下的模塊化設(shè)計思想,在Quartus II平臺下用Verilog硬件描敘語言來描敘整個驅(qū)動電路.如圖2所示,系統(tǒng)由以下4部分構(gòu)成:時鐘模塊、圖像采集模塊、存儲器控制模塊、VGA顯示模塊.
時鐘模塊把輸入FPGA的20MHz時鐘進行倍頻,生成25MHz與50MHz時鐘,分別輸入VGA顯示模塊和存儲器控制模塊.圖像采集模塊的輸入時鐘為20MHz,該模塊由I2C配置模塊和圖像數(shù)據(jù)采集模塊構(gòu)成,圖中所示為cmos_i2c與cmos_work兩大模塊.在cmos_i2c模塊中對寄存器進行配置,輸出時鐘SIO_C與雙向數(shù)據(jù)sio_d.cmos_work,主要完成取亮度信號的同時過濾掉色差信號的功能,最后輸出寫地址信號w_address與數(shù)據(jù)w_data.存儲器控制模塊對兩片SRAM進行乒乓操作,即主要對圖像采集模塊輸出的數(shù)據(jù)w_data進行乒乓讀寫.上述乒乓操作主要是由read_over與write_over兩個輸入信號進行SRAM讀寫切換,即采集到的數(shù)據(jù)進行SRAM存儲與SRAM數(shù)據(jù)輸出至VGA顯示模塊.最終,VGA顯示模塊對VGA顯示的時序進行控制,達到很好的VGA顯示效果.
圖2 電路原理圖Fig.2 Schematic diagram of circuit
圖像采集模塊由I2C配置模塊和圖像數(shù)據(jù)采集模塊構(gòu)成[10-11].OV7670圖像傳感器的初始化配置由SCCB總線接口編程完成,可以輸出整幀、子采樣、取窗口等方式的各種分辨率8位影響數(shù)據(jù).用戶可以完全控制圖像質(zhì)量、數(shù)據(jù)格式和傳輸方式.所有圖像處理功能過程包括伽瑪曲線、白平衡、飽和度、色度等都可以通過SCCB接口編程[12].而用于OV7670圖像傳感器配置的SCCB總線與I2C總線類似,它是一種雙向二線制同步串行總線[13].因此,本文采用I2C總線對OV7670圖像傳感器進行配置.本設(shè)計只對主要的幾個寄存器進行重新配置,其他采用默認設(shè)置.
圖像數(shù)據(jù)采集模塊主要完成對I2C總線上的主從設(shè)備(傳感器和其內(nèi)部寄存器)的起始、讀寫和停止的時序控制[14].首先,要對OV7670內(nèi)部寄存器進行配置,當(dāng)write_en=1時,F(xiàn)PGA向OV7670發(fā)送寫地址0X42,然后OV7670向FPGA發(fā)送應(yīng)答信號;FPGA收到應(yīng)答后,發(fā)送要進行寫操作的寄存器的地址,然后OV7670向FPGA發(fā)送應(yīng)答信號,F(xiàn)PGA收到應(yīng)答后再發(fā)送寫入該寄存器的數(shù)據(jù),這樣對每個寄存器依次進行寫操作,其中發(fā)送每個地址和數(shù)據(jù)必須應(yīng)答.當(dāng)write_en=0時,對OV7670內(nèi)部寄存器進行讀操作,過程和寫操作類似,而本文主要對其進行配置,也即對OV7670進行寫操作.圖3為I2C時序控制流程圖.
本文采用兩片SRAM存儲器進行乒乓操作,存放分辨率640×480每幀的圖像數(shù)據(jù).兩塊SRAM通過寄存器wren來進行切換,當(dāng)wren=1時讀出寄存器SRAM_ED_2中的數(shù)據(jù),并把讀地址r_address送入寄存器SRAM_EA_2,同時向寄存器SRAM_ED_1寫入數(shù)據(jù),并把寫地址w_address送入寄存器SRAM_EA_1;當(dāng)wren=0時兩塊SRAM切換,此時讀出寄存器SRAM_ED_1數(shù)據(jù),并把讀地址r_address送入寄存器SRAM_EA_1,同時向寄存器SRAM_ED_2寫入數(shù)據(jù),并把寫地址w_address送入寄存器SRAM_EA_2.由于采用乒乓機制,圖像數(shù)據(jù)的采集與顯示并行,從而提高了圖像采集和顯示的效果.相應(yīng)Verilog代碼如下.
圖3 I2C時序控制流程圖Fig.3 Flow chart of I2C timing control
……
regwren;
assignSRAM_EA_1=wren?w_address:r_address;
assignSRAM_EA_2=wren?r_address:w_address;
assignSRAM_ED_1=wren?w_data:8'hzz;
assignSRAM_ED_2=wren?8'hzz:w_data;
assignr_data=wren?SRAM_ED_2:SRAM_ED_1;
……
對于普通的VGA顯示器,共有5個信號:R、G、B三基色信號,行同步信號HSYNC和場同步信號VSYNC.本系統(tǒng)中,F(xiàn)PGA產(chǎn)生分辨率640×480(約30萬像素),刷新頻率60Hz的VGA時序信號,包括行同步、場同步及顏色信號[15].其中的顏色信號為灰度信號,即為CMOS圖像傳感器輸出的YUV格式的信號去除色差信號U、V所剩下的亮度信號.該灰度信號經(jīng)過電阻網(wǎng)絡(luò)構(gòu)成的D/A轉(zhuǎn)換電路輸出VGA顯示.
本系統(tǒng)中,輸入CMOS圖像傳感器時鐘為25MHz,SRAM讀寫模塊時鐘為50MHz,VGA顯示需要25.175 MHz,系統(tǒng)提供該模塊25 MHz時鐘頻率.而外部晶振是20MHz,在Quartus ii中用MegaWizard工具生成倍頻模塊,調(diào)用FPGA內(nèi)部鎖相環(huán),進行倍頻可得到上述的時鐘頻率.
CMOS 采集模塊中,輸出數(shù)據(jù)格式為YUV(也稱YCrCb)4:2:2的格式,YUV的輸出時序為Y-U-YV.由于相對于色差信號,人眼對亮度信號Y更為敏感,因此,對輸入圖像數(shù)據(jù)去除色差信號U、V,只取亮度信號Y.
該模塊Modelsim仿真結(jié)果如圖4所示,首先CMOS傳感器輸出數(shù)據(jù)為8位數(shù)據(jù)DATA_IN,給DATA_IN的值為圖中序列01-80-2a-e8-5c-48-4d……利用兩個16位寄存器data_reg1和data_reg2可以實現(xiàn)分別存儲和輸出,相當(dāng)于隔一個PCLK時鐘取一個DATA_IN的值.最終,整個輸出只有亮度信號數(shù)據(jù)w_data,而沒有色差信號數(shù)據(jù).
圖4 CMOS采集模塊仿真波形圖Fig.4 Simulation waveform diagram of CMOS capture module
在SRAM控制模塊中,設(shè)置read_en為1,即讀使能,則CMOS采集的數(shù)據(jù)一直VGA輸出.兩塊SRAM通過寄存器wren來進行切換.SRAM控制模塊Modelsim仿真波形如圖5所示,當(dāng)wren=1時把SRAM_ED_2設(shè)為高阻態(tài),此時讀寄存器SRAM_ED_2數(shù)據(jù),并把讀地址r_address送入寄存器SRAM_EA_2,同時向寄存器SRAM_ED_1寫入數(shù)據(jù)w_data,并把寫地址w_address送入寄存器SRAM_EA_1;當(dāng)wren=0時兩塊SRAM讀寫狀態(tài)、地址和數(shù)據(jù)切換.整個數(shù)據(jù)的傳輸在wren由1變?yōu)?的時刻進行切換,寫入的數(shù)據(jù)w_data分別輸出至寄存器SRAM_ED_1和SRAM_ED_2,沒有出現(xiàn)丟數(shù)據(jù)的情況.
圖5 SRAM模塊仿真波形圖Fig.5 Simulation waveform diagram of SRAM module
VGA標準輸出分辨率為640×480,如圖6所示,r_address計數(shù)到307200(640×480)時,即為顯示一幀圖片的像素大小(約30萬像素).
圖6 顯示模塊仿真波形圖Fig.6 Simulation waveform diagram of displaying module
本系統(tǒng)采用FPGA作為邏輯控制芯片,利用CMOS圖像傳感器進行圖像采集,兩片SRAM作為幀存芯片.仿真結(jié)果及顯示表明,系統(tǒng)實現(xiàn)了SRAM的乒乓操作,設(shè)計的CMOS圖像傳感器,其驅(qū)動時序表明其能夠很好地滿足實時圖像輸出需求,為干電池缺陷在線檢測系統(tǒng)的研究提供了有力支持.
[1]王旭東,葉玉堂.CMOS與CCD圖像傳感器的比較研究和發(fā)展趨勢[J].電子設(shè)計工程,2010,18(11):178-181.Wang X D,Ye Y T.Comparative research and future tendency between CMOS and CCD image sensor[J].Electronic Design Engineering,2010,18(11):178-181.
[2]程開富.CMOS圖像傳感器的最新進展及其應(yīng)用[J].光電機信息,2003(1):16-26.Cheng K F.CMOS image sensor and its application of the latest[J].OME Information,2003(1):16-26.
[3]Sunetra K M,Sabrina E K,Russell C G,et al.CMOS active pixel image sensors for highly integrated image systems[J].IEEE Journal of Solid State Circuit,1997,32(2):187-197.
[4]Blank N Z.CCD versus CMOS-has CCD imaging come to an end[J].Photogrammetric Week,2001(1),131-137.
[5]Kleinfelder S,Lim S,Liu X Q,et al.A 10000 frames/s CMOS digital pixel sensor[J].IEEE Journal of Solid State Circuits,2001,36(12):2049-2059.
[6]曾桂英,潘金艷.基于FPGA的CMOS圖像傳感器采集系統(tǒng)設(shè)計[J].科學(xué)技術(shù)與工程,2010,10(3):692-695 Zeng G Y,Pan J Y.Design of the CMOS Sensor image acquisition system based on FPGA[J].Science Technology and Engineering,2010,10(3):692-695.
[7]謝磊.基于FPGA的VGA圖像控制器的設(shè)計與實現(xiàn)[J].新鄉(xiāng)學(xué)院學(xué)報,2009,26(6):51-53.Xie L.Research and design of VGA display system based on FPGA[J].Journal of Xinxiang University,2009,26(6):51-53.
[8]侯舒志,姚素英,周津,等.CMOS圖像傳感器時序控制方法研究與實現(xiàn)[J].固體電子學(xué)研究與進展,2007,27(1):119-122.Hou S Z,Yao S Y,Zhou J,et al.Research andimplementation of timing control for CMOS image sensor[J].Research&Progress of SSE,2007,27(1):119-122.
[9]Corporation A.Cyclone FPGA family datasheet[EB/OL].[2011-04-01].http:∥www.altera.com.cn.
[10]丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2012,35(14):178-181.Ding H J,Liu J B,Sheng Q H.Design of video acquisition system based on CMOS image sensor[J].Modern Electronic Technique,2012,35(14):178-181.
[11]劉澤偉,解梅.基于FPGA的視頻圖像采集系統(tǒng)的設(shè)計與實現(xiàn)[J].儀器與儀表學(xué)報,2008,29(4),382-385.Liu Z W,Xie M.A system design and realization for video image acquirement based on FPGA[J].Chinese Journal of Scientific Instrument,2008,29(4),382-385.
[12]OmniVision TechnologyInc.OV7670/OV7171CMOS VGA(640x480)CAMERACHIP with OmniPixel Technology[EB/OL].[2006-04-05].http:∥www.ovt.com.
[13]王晗,李翔,李忠敏,等.基于OV7670的圖像采集與顯示設(shè)計[J].中國科技信息,2013(11):90-91.Wang H,Li X,Li Z M,et al.Image acquisition and display design based on OV7670[J].China Science and Technology Information,2013(11):90-91.
[14]Philips Semiconductors.The I2C-bus specification[EB/OL].[2000-01].http:∥www.philips.com.cn.
[15]Video Electronics Standards Association.VESA and industry standards and guidelines for computer display monitor timing[EB/OL].[2004-10-29].http:∥bbs.elecfans.com.