高強(qiáng),王煒,劉建,郭毓敏
(天津工業(yè)大學(xué) 電氣工程與自動(dòng)化學(xué)院,天津 300387)
?
SCCB總線配置的FPGA視頻采集與顯示系統(tǒng)設(shè)計(jì)
高強(qiáng),王煒,劉建,郭毓敏
(天津工業(yè)大學(xué) 電氣工程與自動(dòng)化學(xué)院,天津 300387)
提出了一種采用Altera公司的EP2C5Q208CN作為主控芯片,OV7670模塊作為視頻源輸入并以SDRAM作為數(shù)據(jù)緩存的方案。通過對(duì)SCCB總線配置、圖像數(shù)據(jù)采集、圖像數(shù)據(jù)預(yù)處理、VGA顯示等模塊設(shè)計(jì),完成了視頻數(shù)據(jù)的采集與圖像的輸出顯示。經(jīng)過相關(guān)測試,本設(shè)計(jì)具有成本低、實(shí)時(shí)性強(qiáng)、可靠高好等優(yōu)點(diǎn)。
FPGA;OV7670;視頻采集;VGA
視頻數(shù)據(jù)采集為圖像采集與顯示系統(tǒng)提供原始的數(shù)字圖像數(shù)據(jù),是信息處理、視頻監(jiān)控等系統(tǒng)的前端基礎(chǔ),也直接影響后端圖像處理系統(tǒng)的性能[1]。隨著近些年計(jì)算機(jī)及通信技術(shù)的發(fā)展,人們對(duì)視頻采集系統(tǒng)的性能要求也越來越高。視頻數(shù)據(jù)流數(shù)據(jù)量大和實(shí)時(shí)性要求高的特點(diǎn)直接影響到圖像的采集與數(shù)據(jù)的處理速度。FPGA作為當(dāng)今主流的大規(guī)??删幊碳呻娐?,采用硬件邏輯實(shí)現(xiàn)數(shù)據(jù)處理和運(yùn)算,具有集成度高、速度快、性能穩(wěn)定、開發(fā)周期短、便于改進(jìn)升級(jí)等一系列優(yōu)點(diǎn),還能實(shí)現(xiàn)視頻采集、圖像顯示的外圍邏輯控制,在視頻采集和圖像處理方面具有獨(dú)特優(yōu)勢。
視頻數(shù)據(jù)信息來源于圖像傳感器,目前被廣泛采用的是CMOS傳感器與CCD傳感器。與CCD傳感器相比,CMOS圖像傳感器可以把驅(qū)動(dòng)與控制系統(tǒng)、ADC轉(zhuǎn)換電路和信號(hào)處理等電路集成在一塊芯片上,因此內(nèi)部集成度高,外圍電路簡單,且在制造成本與功耗上具有優(yōu)勢。所以CMOS圖像傳感器在消費(fèi)電子、汽車電子、工業(yè)控制、圖像處理等領(lǐng)域得到越來越廣泛的應(yīng)用[2]。因此,本設(shè)計(jì)選用Altera公司的Cyclone II系列的EP2C5Q作為主控芯片,針對(duì)CMOS圖像傳感器,對(duì)輸出的視頻圖像進(jìn)行采集、處理及VGA顯示。
本設(shè)計(jì)采用美國Omni Vision(簡稱OV)公司的OV7670圖像傳感器作為視頻源,通過Altera公司Cyclone II系列的FPGA對(duì)其進(jìn)行功能配置,并將傳感器輸出的格式為YCbCr(4:2:2)的圖像數(shù)據(jù)進(jìn)行采集,并完成YCbCr格式到RGB格式的轉(zhuǎn)換,期間使用SDRAM作為數(shù)據(jù)緩存器,最終將FPGA輸出的圖像數(shù)據(jù)經(jīng)過高速數(shù)模轉(zhuǎn)換器ADV7123轉(zhuǎn)換為模擬RGB信號(hào)輸入到VGA顯示器進(jìn)行顯示。其系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)上電之后,F(xiàn)PGA通過SCCB總線,對(duì)OV7670的201個(gè)可控寄存器進(jìn)行配置,使OV7670輸出格式為YCbCr(4:2:2)且有效像素為640(水平方向)×480(垂直方向)的圖像數(shù)據(jù),經(jīng)過CMOS_CAPTURE模塊對(duì)圖像數(shù)據(jù)進(jìn)行采集后寫入SDRAM進(jìn)行緩存,之后進(jìn)行YCbCr(4:2:2)—YCbCr(4∶4∶4)—RGB(8∶8∶8)—RGB(5∶6∶5)圖像數(shù)據(jù)格式的變換,完成圖像數(shù)據(jù)的采集與處理。
2.1 OV7670初始化控制
美國OV生產(chǎn)的OV7670圖像傳感器,工作電壓低、體積小,可提供單片VGA攝像頭和影像處理器的所有功能,適用于玩具、多媒體電腦、數(shù)字照相機(jī)等領(lǐng)域。其具有標(biāo)準(zhǔn)SCCB(Serial Camera Control Bus)接口,兼容I2C總線接口,可以輸出Raw RGB、RGB (GRB 4∶2∶2、RGB 5∶6∶5/5∶5∶5/4∶4∶4)、YUV(4∶2∶2)、YCbCr(4∶2∶2)等數(shù)據(jù)格式,并支持VGA、CIF和從CIF縮放到40×30的各種尺寸的8位影像數(shù)據(jù)。輸出VGA圖像可高達(dá)30 s,為逐行掃描方式,感光陣列共有656×488個(gè)像素,其中有效像素為640×480個(gè)。其具有曝光控制、伽馬曲線、白平衡、增益控制、飽和度、色度調(diào)整等圖像處理功能,可通過SCCB接口進(jìn)行編程,按用戶指定的參數(shù)進(jìn)行配置。部分寄存器配置表如表1所列。
表 1 部分寄存器配置表
對(duì)OV7670的初始化過程,其實(shí)就是對(duì)OV7670中的201個(gè)可控寄存器進(jìn)行數(shù)據(jù)寫入的過程,即通過寄存器配置,設(shè)置OV7670輸出圖像的分辨率、幀頻以及數(shù)據(jù)格式等,使OV7670輸出自己想要的圖像數(shù)據(jù)。整個(gè)過程需要通過SCCB總線協(xié)議完成。SCCB(Serial Camera Control Bus)是OV公司開發(fā)的一種雙向三線的同步串行總線,其中當(dāng)SCCB_E信號(hào)無效時(shí),即只使用SIO_C、SIO_D時(shí),變?yōu)閮删€制串行總線,兼容I2C總線時(shí)序,因此可用FPGA作為Master Device來模擬I2C總線時(shí)序,來完成對(duì)OV7670(Slave Device)的數(shù)據(jù)寫入。其過程如下:先寫入設(shè)備地址(ID-Address),參考Datasheet得知,OV7670地址為0x42,然后再寫入要配置的寄存器地址(Sub-address),最后寫入配置數(shù)據(jù)(Write Data),一次寫入過程共傳輸24位數(shù)據(jù),分為3個(gè)階段完成,每一階段傳送完8位數(shù)據(jù)后,緊跟著由Slave Device產(chǎn)生Don’t-Care位,此時(shí)可由FPGA通過讀取SIO_D得知其邏輯狀態(tài),該狀態(tài)僅用于表明數(shù)據(jù)傳輸完成,并不能判斷數(shù)據(jù)傳輸過程的錯(cuò)誤。如此循環(huán),按用戶需求配置完所有的寄存器,即完成了OV7670的初始化[3]。本設(shè)計(jì)選擇輸出YUV(4∶2∶2)格式,且輸出順序?yàn)閁YVY,分辨率為640×480,30 fps,一些較為重要的寄存器配置如表1所列。
2.2 圖像數(shù)據(jù)采集
要正確采集到OV7670輸出的圖像數(shù)據(jù),需要考慮行同步信號(hào)(HREF)、場同步信號(hào)(VSYNC)以及像素同步時(shí)鐘信號(hào)(PCLK)。VGA幀時(shí)序圖如圖2所示。場同步信號(hào)低電平期間圖像數(shù)據(jù)有效,行同步信號(hào)高電平期間有效,且維持640個(gè)像素時(shí)鐘,每一個(gè)像素時(shí)鐘數(shù)據(jù)總線輸出8位數(shù)據(jù),在場同步信號(hào)有效期間,行同步信號(hào)出現(xiàn)480次高電平,表明輸出一幀分辨率為640×480的圖像。
圖2 VGA幀時(shí)序圖
其中考慮到為了方便數(shù)據(jù)在SDRAM中的傳輸及緩存,本設(shè)計(jì)將先后輸出的兩個(gè)8位數(shù)據(jù)合并成一個(gè)16位數(shù)據(jù)進(jìn)行采集。采用嵌入式邏輯分析儀Signal Tap II采集到的OV7670輸出信號(hào)如圖3所示。
圖3 SingalTap II 采集信號(hào)
從圖3中可知,在像素同步時(shí)鐘上升沿到達(dá)之前,圖像數(shù)據(jù)已達(dá)到穩(wěn)定,因此選用像素同步時(shí)鐘對(duì)其采集。另外從HREF上升沿開始,數(shù)據(jù)0x11、0xEE間隔出現(xiàn)是因?yàn)楸驹O(shè)計(jì)在調(diào)試過程中,為了驗(yàn)證輸出數(shù)據(jù)UV的順序,配置寄存器時(shí)固定了UV數(shù)據(jù)的輸出值,分別向地址67h(固定U)、68h(固定V)寫入11h、EEh,數(shù)據(jù)按UYVY順序正確輸出。
2.3 圖像數(shù)據(jù)緩存[4]
目前市面上常用的兩種存儲(chǔ)器分別為SRAM和SDRAM。相比于SRAM,SDRAM具有容量大、面積小、功耗小、成本低等優(yōu)點(diǎn)。因此本設(shè)計(jì)選擇SDRAM為數(shù)據(jù)提供緩存空間。由于前端輸出的是30 fps、分辨率為640×480的圖像,且并未對(duì)像素同步時(shí)鐘PCLK分頻,因?yàn)槭褂玫牡湫蜁r(shí)鐘為25 MHz,為使緩存速度更快,圖像能夠?qū)崟r(shí)傳輸,SDRAM選用讀寫時(shí)鐘為125 MHz,VGA的像素也為25MHz,因此需要在圖像采集模塊與SDRAM、SDRAM與VGA顯示模塊之間用FIFO來完成異步時(shí)鐘域的數(shù)據(jù)傳輸。
通過FPGA自帶的IP核,產(chǎn)生兩個(gè)存儲(chǔ)寬度為16位、深度為512的FIFO,分別命名WRFIFO與RDFIFO。用圖像采集過程中生成的數(shù)據(jù)輸出標(biāo)志位作為WRFIFO的寫入使能,用rdusedw來控制SDRAM的寫入請(qǐng)求信號(hào),當(dāng)WRFIFO中可讀取數(shù)據(jù)達(dá)到256個(gè),就申請(qǐng)將數(shù)據(jù)寫入SDRAM。同樣,在RDFIFO中,用wrusedw來控制SDRAM的讀請(qǐng)求信號(hào),當(dāng)RDFIFO中寫入個(gè)數(shù)少于256個(gè)時(shí),就申請(qǐng)讀SDRAM,之后將數(shù)據(jù)從SDRAM中寫入RDFIFO中。在讀取端,由VGA的像素時(shí)鐘控制作為讀取時(shí)鐘,時(shí)鐘掃描坐標(biāo)xpos作為讀取使能信號(hào),控制數(shù)據(jù)在VGA行場可視區(qū)內(nèi)輸出,并最終在VGA上顯示。
2.4 圖像數(shù)據(jù)預(yù)處理[5]
YUV由Y(亮度)、U(色彩)、V(飽和度)復(fù)合而成,有諸如4∶4∶4、4∶2∶2、4∶2∶0等格式。本設(shè)計(jì)中攝像頭中輸出的為YUV(4∶2∶2)格式,即水平方向上UV的采樣速度為Y的一半,相當(dāng)于每兩個(gè)點(diǎn)采集一個(gè)U、V,每一個(gè)點(diǎn)采樣一個(gè)Y,通過犧牲色度的采樣率達(dá)到圖像數(shù)據(jù)壓縮的目的。YCbCr是在YUV基礎(chǔ)上經(jīng)過發(fā)展產(chǎn)生的應(yīng)用于數(shù)字視頻的一種格式,基本可以等同YUV。
首先要將YCbCr(4∶2∶2)格式的數(shù)據(jù)轉(zhuǎn)換為YCbCr(4∶4∶4),即在每一個(gè)時(shí)鐘采樣到的像素點(diǎn)數(shù)據(jù)同時(shí)包含Y、Cb、Cr三個(gè)分量信號(hào),此處通過寄存器幾級(jí)打拍之后,同步輸出即可完成。之后為了使圖像數(shù)據(jù)能夠正常在VGA顯示,需要將YCbCr(4∶4∶4)格式轉(zhuǎn)換為RGB(8∶8∶8)。常用的轉(zhuǎn)換公式如下:
R=1.164Y+1.596Cr-222.912
G=1.164Y-0.391Cb-0.813Cr+135.488
B=1.164Y+2.018Cb-276.928
考慮到FPGA進(jìn)行浮點(diǎn)數(shù)運(yùn)算較為繁瑣,因此將以上公式進(jìn)行移位放大處理,之后便可通過公式計(jì)算出RGB的對(duì)應(yīng)值。但為了使圖像最大限度地實(shí)時(shí)顯示,本設(shè)計(jì)針對(duì)以上公式采用移位變換后,對(duì)數(shù)據(jù)處理采用三級(jí)流水線設(shè)計(jì),最后截?cái)嗾?fù)溢出的部分,使數(shù)據(jù)保持在0~255內(nèi)。最后通過簡單的對(duì)應(yīng)信號(hào)高位截取,完成RGB(8∶8∶8)到RGB(5∶6∶5)的變換。圖4為Modelsim仿真圖。
圖4 YCbCr(4∶2∶2) to RGB(8∶8∶8)仿真圖
根據(jù)VGA的工業(yè)時(shí)序標(biāo)準(zhǔn)設(shè)計(jì)VGA顯示模塊,產(chǎn)生VGA顯示所用控制信號(hào):行同步、場同步、行坐標(biāo)、列坐標(biāo)等[6]。在VGA顯示數(shù)據(jù)有效期內(nèi),通過圖像坐標(biāo)控制圖像數(shù)據(jù)從RDFIFO中讀出,然后將數(shù)據(jù)及部分控制信號(hào)輸入ADV7123對(duì)應(yīng)的端口,即可實(shí)現(xiàn)圖像的VGA顯示。整個(gè)采集系統(tǒng)的采集實(shí)景圖如圖5所示。
圖5 顯示效果
FPGA Video Acquisition and Display System Based on SCCB Bus Configuration
Gao Qiang,Wang Wei,Liu Jian, Guo Yumin
(Institute of Electrical Engineering and Automation,Tianjin Polytechnic University, Tianjin 300387,China)
The paper proposes a solution which choose the Altera's EP2C5Q208C8 as the master chip,OV7670 module as a source of video input and the SDRAM as data buffer.Based on the design of the SCCB bus configuration,image data acquisition,image data pretreatment and VGA display module,it achieves video data acquisition and image output display.Through the relevant tests,the design has the advantages of low cost, good real-time performance and high reliability.
FPGA;OV7670;video acquisition;VGA
TP302.1
A