高強,王煒,劉建,郭毓敏
(天津工業大學 電氣工程與自動化學院,天津 300387)
?
SCCB總線配置的FPGA視頻采集與顯示系統設計
高強,王煒,劉建,郭毓敏
(天津工業大學 電氣工程與自動化學院,天津 300387)
提出了一種采用Altera公司的EP2C5Q208CN作為主控芯片,OV7670模塊作為視頻源輸入并以SDRAM作為數據緩存的方案。通過對SCCB總線配置、圖像數據采集、圖像數據預處理、VGA顯示等模塊設計,完成了視頻數據的采集與圖像的輸出顯示。經過相關測試,本設計具有成本低、實時性強、可靠高好等優點。
FPGA;OV7670;視頻采集;VGA
視頻數據采集為圖像采集與顯示系統提供原始的數字圖像數據,是信息處理、視頻監控等系統的前端基礎,也直接影響后端圖像處理系統的性能[1]。隨著近些年計算機及通信技術的發展,人們對視頻采集系統的性能要求也越來越高。視頻數據流數據量大和實時性要求高的特點直接影響到圖像的采集與數據的處理速度。FPGA作為當今主流的大規模可編程集成電路,采用硬件邏輯實現數據處理和運算,具有集成度高、速度快、性能穩定、開發周期短、便于改進升級等一系列優點,還能實現視頻采集、圖像顯示的外圍邏輯控制,在視頻采集和圖像處理方面具有獨特優勢。
視頻數據信息來源于圖像傳感器,目前被廣泛采用的是CMOS傳感器與CCD傳感器。與CCD傳感器相比,CMOS圖像傳感器可以把驅動與控制系統、ADC轉換電路和信號處理等電路集成在一塊芯片上,因此內部集成度高,外圍電路簡單,且在制造成本與功耗上具有優勢。所以CMOS圖像傳感器在消費電子、汽車電子、工業控制、圖像處理等領域得到越來越廣泛的應用[2]。因此,本設計選用Altera公司的Cyclone II系列的EP2C5Q作為主控芯片,針對CMOS圖像傳感器,對輸出的視頻圖像進行采集、處理及VGA顯示。
本設計采用美國Omni Vision(簡稱OV)公司的OV7670圖像傳感器作為視頻源,通過Altera公司Cyclone II系列的FPGA對其進行功能配置,并將傳感器輸出的格式為YCbCr(4:2:2)的圖像數據進行采集,并完成YCbCr格式到RGB格式的轉換,期間使用SDRAM作為數據緩存器,最終將FPGA輸出的圖像數據經過高速數模轉換器ADV7123轉換為模擬RGB信號輸入到VGA顯示器進行顯示。其系統總體結構框圖如圖1所示。

圖1 系統結構框圖
系統上電之后,FPGA通過SCCB總線,對OV7670的201個可控寄存器進行配置,使OV7670輸出格式為YCbCr(4:2:2)且有效像素為640(水平方向)×480(垂直方向)的圖像數據,經過CMOS_CAPTURE模塊對圖像數據進行采集后寫入SDRAM進行緩存,之后進行YCbCr(4:2:2)—YCbCr(4∶4∶4)—RGB(8∶8∶8)—RGB(5∶6∶5)圖像數據格式的變換,完成圖像數據的采集與處理。
2.1 OV7670初始化控制
美國OV生產的OV7670圖像傳感器,工作電壓低、體積小,可提供單片VGA攝像頭和影像處理器的所有功能,適用于玩具、多媒體電腦、數字照相機等領域。其具有標準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)等數據格式,并支持VGA、CIF和從CIF縮放到40×30的各種尺寸的8位影像數據。輸出VGA圖像可高達30 s,為逐行掃描方式,感光陣列共有656×488個像素,其中有效像素為640×480個。其具有曝光控制、伽馬曲線、白平衡、增益控制、飽和度、色度調整等圖像處理功能,可通過SCCB接口進行編程,按用戶指定的參數進行配置。部分寄存器配置表如表1所列。

表 1 部分寄存器配置表
對OV7670的初始化過程,其實就是對OV7670中的201個可控寄存器進行數據寫入的過程,即通過寄存器配置,設置OV7670輸出圖像的分辨率、幀頻以及數據格式等,使OV7670輸出自己想要的圖像數據。整個過程需要通過SCCB總線協議完成。SCCB(Serial Camera Control Bus)是OV公司開發的一種雙向三線的同步串行總線,其中當SCCB_E信號無效時,即只使用SIO_C、SIO_D時,變為兩線制串行總線,兼容I2C總線時序,因此可用FPGA作為Master Device來模擬I2C總線時序,來完成對OV7670(Slave Device)的數據寫入。其過程如下:先寫入設備地址(ID-Address),參考Datasheet得知,OV7670地址為0x42,然后再寫入要配置的寄存器地址(Sub-address),最后寫入配置數據(Write Data),一次寫入過程共傳輸24位數據,分為3個階段完成,每一階段傳送完8位數據后,緊跟著由Slave Device產生Don’t-Care位,此時可由FPGA通過讀取SIO_D得知其邏輯狀態,該狀態僅用于表明數據傳輸完成,并不能判斷數據傳輸過程的錯誤。如此循環,按用戶需求配置完所有的寄存器,即完成了OV7670的初始化[3]。本設計選擇輸出YUV(4∶2∶2)格式,且輸出順序為UYVY,分辨率為640×480,30 fps,一些較為重要的寄存器配置如表1所列。
2.2 圖像數據采集
要正確采集到OV7670輸出的圖像數據,需要考慮行同步信號(HREF)、場同步信號(VSYNC)以及像素同步時鐘信號(PCLK)。VGA幀時序圖如圖2所示。場同步信號低電平期間圖像數據有效,行同步信號高電平期間有效,且維持640個像素時鐘,每一個像素時鐘數據總線輸出8位數據,在場同步信號有效期間,行同步信號出現480次高電平,表明輸出一幀分辨率為640×480的圖像。

圖2 VGA幀時序圖
其中考慮到為了方便數據在SDRAM中的傳輸及緩存,本設計將先后輸出的兩個8位數據合并成一個16位數據進行采集。采用嵌入式邏輯分析儀Signal Tap II采集到的OV7670輸出信號如圖3所示。

圖3 SingalTap II 采集信號
從圖3中可知,在像素同步時鐘上升沿到達之前,圖像數據已達到穩定,因此選用像素同步時鐘對其采集。另外從HREF上升沿開始,數據0x11、0xEE間隔出現是因為本設計在調試過程中,為了驗證輸出數據UV的順序,配置寄存器時固定了UV數據的輸出值,分別向地址67h(固定U)、68h(固定V)寫入11h、EEh,數據按UYVY順序正確輸出。
2.3 圖像數據緩存[4]
目前市面上常用的兩種存儲器分別為SRAM和SDRAM。相比于SRAM,SDRAM具有容量大、面積小、功耗小、成本低等優點。因此本設計選擇SDRAM為數據提供緩存空間。由于前端輸出的是30 fps、分辨率為640×480的圖像,且并未對像素同步時鐘PCLK分頻,因為使用的典型時鐘為25 MHz,為使緩存速度更快,圖像能夠實時傳輸,SDRAM選用讀寫時鐘為125 MHz,VGA的像素也為25MHz,因此需要在圖像采集模塊與SDRAM、SDRAM與VGA顯示模塊之間用FIFO來完成異步時鐘域的數據傳輸。
通過FPGA自帶的IP核,產生兩個存儲寬度為16位、深度為512的FIFO,分別命名WRFIFO與RDFIFO。用圖像采集過程中生成的數據輸出標志位作為WRFIFO的寫入使能,用rdusedw來控制SDRAM的寫入請求信號,當WRFIFO中可讀取數據達到256個,就申請將數據寫入SDRAM。同樣,在RDFIFO中,用wrusedw來控制SDRAM的讀請求信號,當RDFIFO中寫入個數少于256個時,就申請讀SDRAM,之后將數據從SDRAM中寫入RDFIFO中。在讀取端,由VGA的像素時鐘控制作為讀取時鐘,時鐘掃描坐標xpos作為讀取使能信號,控制數據在VGA行場可視區內輸出,并最終在VGA上顯示。
2.4 圖像數據預處理[5]
YUV由Y(亮度)、U(色彩)、V(飽和度)復合而成,有諸如4∶4∶4、4∶2∶2、4∶2∶0等格式。本設計中攝像頭中輸出的為YUV(4∶2∶2)格式,即水平方向上UV的采樣速度為Y的一半,相當于每兩個點采集一個U、V,每一個點采樣一個Y,通過犧牲色度的采樣率達到圖像數據壓縮的目的。YCbCr是在YUV基礎上經過發展產生的應用于數字視頻的一種格式,基本可以等同YUV。
首先要將YCbCr(4∶2∶2)格式的數據轉換為YCbCr(4∶4∶4),即在每一個時鐘采樣到的像素點數據同時包含Y、Cb、Cr三個分量信號,此處通過寄存器幾級打拍之后,同步輸出即可完成。之后為了使圖像數據能夠正常在VGA顯示,需要將YCbCr(4∶4∶4)格式轉換為RGB(8∶8∶8)。常用的轉換公式如下:
R=1.164Y+1.596Cr-222.912
G=1.164Y-0.391Cb-0.813Cr+135.488
B=1.164Y+2.018Cb-276.928
考慮到FPGA進行浮點數運算較為繁瑣,因此將以上公式進行移位放大處理,之后便可通過公式計算出RGB的對應值。但為了使圖像最大限度地實時顯示,本設計針對以上公式采用移位變換后,對數據處理采用三級流水線設計,最后截斷正負溢出的部分,使數據保持在0~255內。最后通過簡單的對應信號高位截取,完成RGB(8∶8∶8)到RGB(5∶6∶5)的變換。圖4為Modelsim仿真圖。

圖4 YCbCr(4∶2∶2) to RGB(8∶8∶8)仿真圖
根據VGA的工業時序標準設計VGA顯示模塊,產生VGA顯示所用控制信號:行同步、場同步、行坐標、列坐標等[6]。在VGA顯示數據有效期內,通過圖像坐標控制圖像數據從RDFIFO中讀出,然后將數據及部分控制信號輸入ADV7123對應的端口,即可實現圖像的VGA顯示。整個采集系統的采集實景圖如圖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