基于FPGA和SAA7113芯片的視頻采集監(jiān)控方案
提出了基于FPGA的視頻監(jiān)控系統(tǒng)整體實(shí)現(xiàn)方案。首先介紹了在FPGA中設(shè)計(jì)I2C總線配置模塊對視頻處理芯片進(jìn)行合理的配置,然后簡單介紹了視頻信號的處理過程。經(jīng)過處理后的視頻信號通過乒乓機(jī)制存儲到SDRAM緩存,最后按照VGA的時(shí)序送到顯示器正常顯示。本設(shè)計(jì)采用VerilogHDL語言編寫程序,并用Modelsim軟件進(jìn)行仿真,采用ISE下載到Virtex-II XC2VP30 FFG896開發(fā)板實(shí)現(xiàn)了視頻監(jiān)控功能。
一個(gè)典型的視頻監(jiān)視系統(tǒng)一般由光源、攝像頭、視頻轉(zhuǎn)換單元、數(shù)字圖像傳輸處理及控制系統(tǒng)、輸入/輸出單元和監(jiān)視器等部分組成?,F(xiàn)存的視頻監(jiān)控系統(tǒng)主要由工控機(jī)和視頻圖像采集卡構(gòu)成,存在系統(tǒng)穩(wěn)定性差、價(jià)格高昂等缺點(diǎn)。不斷發(fā)展的FPGA具有設(shè)計(jì)周期短、靈活、可提高系統(tǒng)的可靠性和集成度的優(yōu)點(diǎn);Verilog HDL語言類似于C語言,靈活且容易上手,本文結(jié)合這兩者的優(yōu)點(diǎn),提出了基于FPGA的視頻監(jiān)控系統(tǒng)。1 系統(tǒng)模塊劃分 本設(shè)計(jì)的視頻監(jiān)控系統(tǒng)的大部分設(shè)計(jì)工作都集中在對FPGA的編程開發(fā)上,通過分析可將系統(tǒng)分為以下5個(gè)功能模塊,如圖1所示。
(1)視頻接口模塊:視頻采集芯片具有多種采集方式,本設(shè)計(jì)中FPGA通過I2C總線對其內(nèi)部寄存器進(jìn)行配置,使其按照一定的格式進(jìn)行采樣。 (2)視頻變換模塊:對得到的視頻流進(jìn)行解碼,識別出行、場同步信號,并且根據(jù)需要選擇采集圖像的大小,進(jìn)而變換成RGB格式的圖像數(shù)據(jù),以便于后續(xù)顯示。 (3)異步FIFO模塊:由于視頻處理器和SDRAM工作在不同的時(shí)鐘頻率下,會出現(xiàn)讀寫速度不匹配的情況,解決的方法是在兩者之間添加一塊異步FIFO。 (4)圖像存儲模塊:將解碼后的數(shù)據(jù)經(jīng)由一個(gè)乒乓機(jī)制依次存放在兩片SDRAM中,每個(gè)SDRAM存放一幅圖像,通過乒乓機(jī)制使得兩塊存儲區(qū)域交替進(jìn)行存儲輸入和顯示輸出,避免等待,提高速度。 (5)VGA控制模塊:根據(jù)VGA的工業(yè)參數(shù),產(chǎn)生相應(yīng)的行同步信號和場所同步信號,并在適當(dāng)時(shí)刻送入VGA進(jìn)行顯示。
2 系統(tǒng)模塊的具體設(shè)計(jì)2.1 視頻采集模塊
視頻采集芯片SAA7113通過I2C總線對其內(nèi)部寄存器的不同配置可以對4路輸入進(jìn)行轉(zhuǎn)換,輸入可以為4路CVBS或2路S視頻(Y/C)信號,輸出8 bit“VPO”總線,為標(biāo)準(zhǔn)的ITU 656、YUV 4:2:2格式。I2C總線系統(tǒng)由兩根總線SCL(串行時(shí)鐘)和SDA(串行數(shù)據(jù))線構(gòu)成,I2C總線傳輸過程包括起始信號、傳輸包頭、傳輸數(shù)據(jù)、結(jié)束信號4個(gè)部分。整個(gè)模塊可以分為4種狀態(tài):普通狀態(tài)、等待ACK狀態(tài)、寫數(shù)據(jù)狀態(tài)和結(jié)束狀態(tài)。I2C總線數(shù)據(jù)傳送時(shí)序如圖2所示。
2.2 視頻變換模塊 視頻變換模塊是對得到的數(shù)字視頻流進(jìn)行解碼,識別出行、場同步信號,并且將YUV數(shù)據(jù)格式變換成RGB格式的圖像數(shù)據(jù),以便后續(xù)顯示。2.2.1 ITUR 656解碼 PAL制式的圖像一幀有625行,其中有效圖像數(shù)據(jù)572行,其他為場消隱信號;每行圖像數(shù)據(jù)包含720個(gè)像素。因此,PAL制電視信號的分辨率為720&TImes;572。PAL制電視信號每秒掃描25幀圖像,每幀包括奇、偶兩場圖像。1幀圖像分為奇數(shù)場和偶數(shù)場,每場各有286行有效圖像。
SAA7113 輸出的數(shù)據(jù)格式為標(biāo)準(zhǔn)ITU.656、YUV4∶2∶2的視頻數(shù)據(jù)。每個(gè)像素點(diǎn)亮度信號占8 bit,兩個(gè)色度信號共占16 bit。每個(gè)像素都有自己的亮度數(shù)據(jù)Y,但是輸出的數(shù)據(jù)中每兩個(gè)相鄰的像素共用一組色差數(shù)據(jù)Cb、Cr。 ITU656每行的數(shù)據(jù)結(jié)構(gòu)如圖3所示, 每行數(shù)據(jù)包含水平控制信號和YCbCr視頻數(shù)據(jù)信號。視頻數(shù)據(jù)字是以27 MB/s的速率傳送的, 其順序是:Cb,Y,Cr,Y,Cb,Y,Cr,…。每行開始的288 B為行控制信號, EAV信號意思是有效視頻結(jié)束,SAV信號意思是有效視頻起始。
2.2.2 YUV4:2:2變換為YUV4:4:4 YUV4:2:2變換為YUV4:4:4主要是將串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),并對YCbCr(4:2:2)視頻數(shù)據(jù)進(jìn)行插值,得到Y(jié)CbCr(4:4:4)視頻數(shù)據(jù),分頻得到13.5 MHz的像素時(shí)鐘。
2.2.3 色度空間轉(zhuǎn)換
色彩空間變換公式為: R=1.164(Y-16)+1.596(Cr-128) G=1.164(Y-16)-0.813(Cr-128)-0.392(Cb-128) B=1.164(Y-16)+2.017(Cb-128)
2.3 異步FIFO模塊
FIFO是一種先進(jìn)先出存儲器,主要用來緩沖數(shù)據(jù)和隔離時(shí)鐘或相位差異。其使用一個(gè)雙端口存儲器存放數(shù)據(jù),數(shù)據(jù)發(fā)送方在一端寫入數(shù)據(jù),接收方在另一端讀出數(shù)據(jù)。首先要利用FPGA的RAM資源例化一塊雙口RAM,需要同時(shí)對其進(jìn)行讀寫操作,使其輸入和輸出以及深度按照設(shè)計(jì)要求大小進(jìn)行設(shè)定,而FIFO控制器有復(fù)位、輸入輸出數(shù)據(jù)、讀寫時(shí)鐘、讀寫使能和空滿標(biāo)志端口。其設(shè)計(jì)原理框圖如圖4所示。
2.4 SDRAM控制模塊2.4.1 SDRAM工作的原理簡介
一個(gè)SDRAM中包含幾個(gè)BANK,每個(gè)BANK的存儲單元是按行和列尋址的。由于這種特殊的存儲結(jié)構(gòu), SDRAM的工作原理有以下特點(diǎn):(1)SDRAM在上電100 μs~200 μs 后,必須由一個(gè)初始化過程來配置SDRAM的模式寄存器,模式寄存器決定SDRAM的工作模式;(2)SDRAM的存儲單元可以理解為一個(gè)電容,總是傾向于放電,因此必須有定時(shí)的刷新周期以避免數(shù)據(jù)丟失,刷新周期可由最小刷新周期+時(shí)鐘周期計(jì)算獲得;(3)SDRAM的具體控制命令由一些專用控制引腳和地址輔助完成。
2.4.2 SDRAM控制器總體設(shè)計(jì)
SDRAM控制器與外部的接口示意圖如圖5所示??刂破髯蠖私涌谛盘枮榕cFPGA相連的系統(tǒng)控制接口信號,右端接口信號均為直接與DSRAM對應(yīng)管腳相連的信號。根據(jù)SDRAM的各個(gè)接口信號、時(shí)序要求和工作模式,將該SDRAM控制器的內(nèi)部進(jìn)一步細(xì)化為多個(gè)功能模塊,包括系統(tǒng)控制接口模塊、CMD命令解析模塊、命令響應(yīng)模塊和數(shù)據(jù)通路模塊。系統(tǒng)控制接口模塊用于接收系統(tǒng)的控制信號,進(jìn)而產(chǎn)生不同的CMD命令組合;CMD命令解析模塊用于接收CMD命令并解碼成操作指令;命令響應(yīng)模塊用于接收操作指令并產(chǎn)生SDRAM的操作運(yùn)作;數(shù)據(jù)通路模塊用于控制數(shù)據(jù)的有效輸入輸出。
2.5 VGA控制模塊2.5.1 視頻數(shù)模轉(zhuǎn)換器FMS3818
FMS3818是一種低成本的視頻數(shù)模轉(zhuǎn)換器(DAC),能夠適應(yīng)具有180 MHz最大像素時(shí)鐘的圖形和視頻應(yīng)用。VGA_OUT_BLANK_Z信號輸入覆蓋RGB輸入和空白顯示輸出。當(dāng)FPGA沒有對XSGA輸出編程時(shí),這個(gè)信號通過下拉電阻保持顯示空白,而不需要由用戶控制。
2.5.2 VGA標(biāo)準(zhǔn)簡介
VGA是一種標(biāo)準(zhǔn)的顯示接口,采用逐行掃描的方式使圖像投射到屏幕上,標(biāo)準(zhǔn)VGA顯示的場頻為60 Hz,行頻為31.5 kHz。水平時(shí)序中包括水平脈沖寬度、水平同步脈沖結(jié)束到水平門的開始之間的寬度和一個(gè)完整的視頻行的寬度幾個(gè)時(shí)序參數(shù)。垂直時(shí)序與水平時(shí)序類似,包含垂直同步脈沖寬度、垂直同步結(jié)束到垂直門的開始之間的寬度、一個(gè)視頻幀可視區(qū)域的寬度和一個(gè)完整的視頻幀的寬度。
3 系統(tǒng)采用的硬件連接
攝像頭采集光源信號,F(xiàn)PGA通過I2C向SAA7113發(fā)送控制信息,使其按一定的格式進(jìn)行采樣,轉(zhuǎn)換成RGB格式后,通過FIFO緩沖存儲到SDRAM,最后經(jīng)視頻數(shù)模轉(zhuǎn)換器FMS3818送到VGA顯示器進(jìn)行顯示。系統(tǒng)硬件連接示意圖如圖6所示。
本設(shè)計(jì)采用從頂向下的分析方法,根據(jù)系統(tǒng)的功能需求分析系統(tǒng)的各個(gè)功能模塊,然后對各個(gè)模塊進(jìn)行具體設(shè)計(jì)。將數(shù)字視頻技術(shù)與FPGA設(shè)計(jì)理論結(jié)合起來,采用Verilog HDL語言,系統(tǒng)具有設(shè)計(jì)靈活、易于修改等優(yōu)點(diǎn),同時(shí)可與其他CPU協(xié)作完成進(jìn)一步的設(shè)計(jì),例如添加一定的算法可以實(shí)現(xiàn)相應(yīng)的模式識別等任務(wù)。