基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計
摘要:提出了一種采用Altera公司CycloneⅡ系列的FPGA作為主控芯片,采用OV7670這款CMOS圖像傳感器作為視頻信號源并采用SRAM(靜態(tài)隨機(jī)存儲器)作為數(shù)據(jù)緩存的實用方案,實現(xiàn)了對圖像傳感器寄存器配置、圖像傳感器輸出信號采集、圖像數(shù)據(jù)格式轉(zhuǎn)換、圖像數(shù)據(jù)緩存及最終在VGA顯示器上進(jìn)行圖像顯示的一系列過程。該視頻采集系統(tǒng)設(shè)計能夠很好地滿足實時圖像的輸出需求。
關(guān)鍵詞:視頻采集;OV7670;FPGA;SRAM;VGA
CMOS與CCD傳感器是目前被普遍采用的2種圖像傳感器。CMOS圖像傳感器可通過CMOS(互補(bǔ)金屬氧化物半導(dǎo)體)技術(shù)將像素陣列與外圍支持電路(如圖像傳感器核心、單一時鐘、所有的時序邏輯、可編程功能和A/D轉(zhuǎn)換器)集成在同一塊芯片上。與CCD(電容耦合器件)圖像傳感器相比,CMOS圖像傳感器將整個圖像系統(tǒng)集成在一塊芯片上,具有體積小、重量輕、功耗低、編程方便、易于控制等優(yōu)點(diǎn),并且可通過I2C,SPI等接口配置其工作方式等功能,可控性強(qiáng)。所以CMOS圖像傳感器在消費(fèi)類電子、汽車電子、工業(yè)控制、圖像處理等領(lǐng)域的應(yīng)用越來越廣泛。
通常視頻數(shù)據(jù)流需要處理的數(shù)據(jù)量大,而且對于實時性的要求也很高,圖像的采集和數(shù)據(jù)處理速度直接影響后續(xù)的圖像顯示質(zhì)量。而可編程邏輯器件FPGA的快速發(fā)展使之在視頻圖像采集及圖像的無損傳輸領(lǐng)域具有得天獨(dú)厚的優(yōu)勢。因此,本系統(tǒng)針對OV7670這款CMOS圖像傳感器,采用Altera公司CycloneⅡ系列的FPGA作為主控芯片,來實現(xiàn)視頻數(shù)據(jù)的無損傳輸及顯示。
1 系統(tǒng)總體結(jié)構(gòu)和工作原理
本視頻采集系統(tǒng)采用OmniVision公司的OV7670數(shù)字圖像傳感器提供數(shù)字視頻信號,采用Altera公司CycloneⅡ系列的FPGA作為主控芯片,并采用單片SRAM(靜態(tài)隨機(jī)存儲器)作為數(shù)據(jù)緩存,將從FPGA輸出的數(shù)字信號經(jīng)過D/A轉(zhuǎn)換換后輸入到VGA顯示器上進(jìn)行顯示。其總體結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)的工作原理為:系統(tǒng)上電后,F(xiàn)PGA通過標(biāo)準(zhǔn)SCCB(Serial Camera Control Bus)接口對圖像傳感器芯片的控制寄存器進(jìn)行配置,設(shè)置它的工作方式(如輸出數(shù)據(jù)格式、輸出像素時鐘、曝光時間等),在本系統(tǒng)中將圖像傳感器輸出圖像格式設(shè)置為RGB565格式;對芯片初始化完畢后,F(xiàn)PGA為圖像傳感器提供25 MHz的主時鐘,實時讀出圖像傳感器的行、幀同步信號以及像素時鐘和8位圖像數(shù)據(jù)信號;FPGA中數(shù)據(jù)采集與格式轉(zhuǎn)換模塊將讀入的圖像數(shù)據(jù)實時兩兩拼接轉(zhuǎn)換成16位RGB數(shù)據(jù),由于圖像數(shù)據(jù)要進(jìn)行跨時鐘域傳輸,需要由緩存控制模塊中的FIFO進(jìn)行緩沖,然后送到SRAM存儲,同時VGA控制模塊產(chǎn)生VGA顯示時序,在需要將視頻圖像顯示時由VGA控制模塊產(chǎn)生讀信號,通過FIFO從SRAM中讀出圖像數(shù)據(jù),圖像數(shù)據(jù)最終經(jīng)D/A轉(zhuǎn)換送到VGA顯示器進(jìn)行顯示。
2 系統(tǒng)各模塊介紹
2.1 圖像傳感器OV7670
本視頻采集系統(tǒng)采用OmniVision公司的OV7670這款CMOS圖像傳感器來采集視頻,為系統(tǒng)提供數(shù)字視頻信號。
OV7670圖像傳感器體積小,工作電壓低,提供單片VGA攝像頭和影像處理器的所有功能。通過SCCB總線控制,可以輸入整幀、子采樣、取窗口等方式的各種分辨率8位影像數(shù)據(jù)。所有圖像處理功能過程包括伽瑪曲線、白平衡、飽和度、色度等都可以通過SCCB接口編程。而SCCB是和I2C相同的一個協(xié)議。在本系統(tǒng)中采用Verilog語言描述的I2C配置模塊對OV7670的控制寄存器進(jìn)行配置。
OV7670共有201個可供配置的控制寄存器,下面對幾個比較重要的控制寄存器進(jìn)行說明。
CLKRC(寄存器地址0x11):配置OV7670輸出像素時鐘相對于外部(本系統(tǒng)中為FPGA)提供給OV7670圖像傳感器主時鐘的分頻。OV7670輸出的像素時鐘需要輸入FPGA用作數(shù)據(jù)處理的時鐘。
COM7(寄存器地址0x12):設(shè)置圖像的輸出格式,240)RGB565格式等??梢詫D像分辨率配置成從40×30到VGA分辨率的各尺寸,并且可以將圖像數(shù)據(jù)格式配置成YUV,RGB565,Bayer RGB RAW,Processed Bayer RAW等。這個寄存器的最高位是用來軟件復(fù)位所有寄存器的值的。
SCALING_XSC(寄存器地址0x70)和SCAUNG_YSC(寄存器地址0x71):主要在調(diào)試的時候使用,分別將SCALING_XSC和SCALING_YSC的最高位配置為1和0,就可以讓圖像傳感器輸出8色彩帶。這2個寄存器的其他位分別用于設(shè)置圖像的水平縮放系數(shù)和垂直縮放系數(shù)。
評論