摘 要: 提出了基于FPGA的視頻監控系統整體實現方案。首先介紹了在FPGA中設計I2C總線配置模塊對視頻處理芯片進行合理的配置,然后簡單介紹了視頻信號的處理過程。經過處理后的視頻信號通過乒乓機制存儲到SDRAM緩存,最后按照VGA的時序送到顯示器正常顯示。本設計采用VerilogHDL語言編寫程序,并用Modelsim軟件進行仿真,采用ISE下載到Virtex-II XC2VP30 FFG896開發板實現了視頻監控功能。
關鍵詞: FPGA; 乒乓機制; Verilog HDL語言; Virtex-II開發板
一個典型的視頻監視系統一般由光源、攝像頭、視頻轉換單元、數字圖像傳輸處理及控制系統、輸入/輸出單元和監視器等部分組成。現存的視頻監控系統主要由工控機和視頻圖像采集卡構成,存在系統穩定性差、價格高昂等缺點。不斷發展的FPGA具有設計周期短、靈活、可提高系統的可靠性和集成度的優點;Verilog HDL語言類似于C語言,靈活且容易上手,本文結合這兩者的優點,提出了基于FPGA的視頻監控系統。
1 系統模塊劃分
本設計的視頻監控系統的大部分設計工作都集中在對FPGA的編程開發上,通過分析可將系統分為以下5個功能模塊,如圖1所示。
(1)視頻接口模塊:視頻采集芯片具有多種采集方式,本設計中FPGA通過I2C總線對其內部寄存器進行配置,使其按照一定的格式進行采樣。
(2)視頻變換模塊:對得到的視頻流進行解碼,識別出行、場同步信號,并且根據需要選擇采集圖像的大小,進而變換成RGB格式的圖像數據,以便于后續顯示。
(3)異步FIFO模塊:由于視頻處理器和SDRAM工作在不同的時鐘頻率下,會出現讀寫速度不匹配的情況,解決的方法是在兩者之間添加一塊異步FIFO。
(4)圖像存儲模塊:將解碼后的數據經由一個乒乓機制依次存放在兩片SDRAM中,每個SDRAM存放一幅圖像,通過乒乓機制使得兩塊存儲區域交替進行存儲輸入和顯示輸出,避免等待,提高速度。
(5)VGA控制模塊:根據VGA的工業參數,產生相應的行同步信號和場所同步信號,并在適當時刻送入VGA進行顯示。
2 系統模塊的具體設計
2.1 視頻采集模塊
視頻采集芯片SAA7113通過I2C總線對其內部寄存器的不同配置可以對4路輸入進行轉換,輸入可以為4路CVBS或2路S視頻(Y/C)信號,輸出8 bit“VPO”總線,為標準的ITU 656、YUV 4:2:2格式。I2C總線系統由兩根總線SCL(串行時鐘)和SDA(串行數據)線構成,I2C總線傳輸過程包括起始信號、傳輸包頭、傳輸數據、結束信號4個部分。整個模塊可以分為4種狀態:普通狀態、等待ACK狀態、寫數據狀態和結束狀態。I2C總線數據傳送時序如圖2所示。
2.2 視頻變換模塊
視頻變換模塊是對得到的數字視頻流進行解碼,識別出行、場同步信號,并且將YUV數據格式變換成RGB格式的圖像數據,以便后續顯示。
2.2.1 ITUR 656解碼
PAL制式的圖像一幀有625行,其中有效圖像數據572行,其他為場消隱信號;每行圖像數據包含720個像素。因此,PAL制電視信號的分辨率為720×572。PAL制電視信號每秒掃描25幀圖像,每幀包括奇、偶兩場圖像。1幀圖像分為奇數場和偶數場,每場各有286行有效圖像。
SAA7113 輸出的數據格式為標準ITU.656、YUV4∶2∶2的視頻數據。每個像素點亮度信號占8 bit,兩個色度信號共占16 bit。每個像素都有自己的亮度數據Y,但是輸出的數據中每兩個相鄰的像素共用一組色差數據Cb、Cr。
ITU656每行的數據結構如圖3所示, 每行數據包含水平控制信號和YCbCr視頻數據信號。視頻數據字是以27 MB/s的速率傳送的, 其順序是:Cb,Y,Cr,Y,Cb,Y,Cr,…。每行開始的288 B為行控制信號, EAV信號意思是有效視頻結束,SAV信號意思是有效視頻起始。
2.2.2 YUV4:2:2變換為YUV4:4:4
YUV4:2:2變換為YUV4:4:4主要是將串行數據轉化為并行數據,并對YCbCr(4:2:2)視頻數據進行插值,得到YCbCr(4:4:4)視頻數據,分頻得到13.5 MHz的像素時鐘。
2.2.3 色度空間轉換
色彩空間變換公式為:
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是一種先進先出存儲器,主要用來緩沖數據和隔離時鐘或相位差異。其使用一個雙端口存儲器存放數據,數據發送方在一端寫入數據,接收方在另一端讀出數據。首先要利用FPGA的RAM資源例化一塊雙口RAM,需要同時對其進行讀寫操作,使其輸入和輸出以及深度按照設計要求大小進行設定,而FIFO控制器有復位、輸入輸出數據、讀寫時鐘、讀寫使能和空滿標志端口。其設計原理框圖如圖4所示。
2.4 SDRAM控制模塊
2.4.1 SDRAM工作的原理簡介
一個SDRAM中包含幾個BANK,每個BANK的存儲單元是按行和列尋址的。由于這種特殊的存儲結構, SDRAM的工作原理有以下特點:(1)SDRAM在上電100 μs~200 μs 后,必須由一個初始化過程來配置SDRAM的模式寄存器,模式寄存器決定SDRAM的工作模式;(2)SDRAM的存儲單元可以理解為一個電容,總是傾向于放電,因此必須有定時的刷新周期以避免數據丟失,刷新周期可由最小刷新周期+時鐘周期計算獲得;(3)SDRAM的具體控制命令由一些專用控制引腳和地址輔助完成。
2.4.2 SDRAM控制器總體設計
SDRAM控制器與外部的接口示意圖如圖5所示。控制器左端接口信號為與FPGA相連的系統控制接口信號,右端接口信號均為直接與DSRAM對應管腳相連的信號。根據SDRAM的各個接口信號、時序要求和工作模式,將該SDRAM控制器的內部進一步細化為多個功能模塊,包括系統控制接口模塊、CMD命令解析模塊、命令響應模塊和數據通路模塊。系統控制接口模塊用于接收系統的控制信號,進而產生不同的CMD命令組合;CMD命令解析模塊用于接收CMD命令并解碼成操作指令;命令響應模塊用于接收操作指令并產生SDRAM的操作運作;數據通路模塊用于控制數據的有效輸入輸出。
2.5 VGA控制模塊
2.5.1 視頻數模轉換器FMS3818
FMS3818是一種低成本的視頻數模轉換器(DAC),能夠適應具有180 MHz最大像素時鐘的圖形和視頻應用。VGA_OUT_BLANK_Z信號輸入覆蓋RGB輸入和空白顯示輸出。當FPGA沒有對XSGA輸出編程時,這個信號通過下拉電阻保持顯示空白,而不需要由用戶控制。
2.5.2 VGA標準簡介
VGA是一種標準的顯示接口,采用逐行掃描的方式使圖像投射到屏幕上,標準VGA顯示的場頻為60 Hz,行頻為31.5 kHz。水平時序中包括水平脈沖寬度、水平同步脈沖結束到水平門的開始之間的寬度和一個完整的視頻行的寬度幾個時序參數。垂直時序與水平時序類似,包含垂直同步脈沖寬度、垂直同步結束到垂直門的開始之間的寬度、一個視頻幀可視區域的寬度和一個完整的視頻幀的寬度。
3 系統采用的硬件連接
攝像頭采集光源信號,FPGA通過I2C向SAA7113發送控制信息,使其按一定的格式進行采樣,轉換成RGB格式后,通過FIFO緩沖存儲到SDRAM,最后經視頻數模轉換器FMS3818送到VGA顯示器進行顯示。系統硬件連接示意圖如圖6所示。
本設計采用從頂向下的分析方法,根據系統的功能需求分析系統的各個功能模塊,然后對各個模塊進行具體設計。將數字視頻技術與FPGA設計理論結合起來,采用Verilog HDL語言,系統具有設計靈活、易于修改等優點,同時可與其他CPU協作完成進一步的設計,例如添加一定的算法可以實現相應的模式識別等任務。
參考文獻
[1] 劉延飛,郭鎖利,王曉戎,等.基于Altera FPGA/CPLD的電子系統設計及工程實踐[M].北京:人民郵電出版社,2009.
[2] 何賓.EDA原理及Verilog實現[M].北京:清華大學出版社,2010.
[3] 楊春玲,朱敏.EDA技術與實驗[M].哈爾濱:哈爾濱工業大學出版社,2009.
[4] 陸其明. DiretShow實務精選[M].北京:科學出版社,2004.
[5] SULLIVAN G, ESTROP S. Video rendering with 8-Bit YUV formats[Z]. Microsoft Inc.. 2003.
[6] 劉欲曉.EDA技術與VHDL電路開發應用實踐[M].北京:電子工業出版社,2009.