葉倩
摘 要:隨著經(jīng)濟和社會的發(fā)展,無論是在公共還是在個人空間,人們的安全意識越來越高,傳統(tǒng)的鎖已不能滿足其需求,現(xiàn)在市面上的各種監(jiān)控系統(tǒng)種類繁多,大多采用單片機之類的微處理器實現(xiàn),監(jiān)控往往不僅需要報警而且要求對視頻進行采集和存儲,對于監(jiān)控視頻的大數(shù)據(jù)量處理,對于單片機來講處理能力往往不足,采用并行的FPGA技術作為處理器將會提升性能,解決數(shù)據(jù)處理的瓶頸問題,本文設計并實現(xiàn)一種采用FPGA技術實現(xiàn)的視頻監(jiān)控系統(tǒng),經(jīng)過測試驗證本系統(tǒng)具有較高的穩(wěn)定性,表現(xiàn)出了較好的性能。
關鍵詞:FPGA 視頻監(jiān)控;并行處理;VGA顯示
中圖分類號: TN4 文獻標識碼: A 文章編號: 1673-1069(2016)17-156-2
1 視頻監(jiān)控系統(tǒng)設計
本視頻監(jiān)控系統(tǒng)主要由圖像采集終端,視頻轉換接口,VGA顯示終端組成,傳感器OV5620采集到現(xiàn)實景物后,將生成的RAW數(shù)據(jù)流由ITU 數(shù)據(jù)輸出端口發(fā)送給視頻轉換接口。視頻轉換接口將ITU 數(shù)據(jù)輸入端口送來的RAW數(shù)據(jù)流轉換成 RGB 數(shù)據(jù)流發(fā)送,通過VGA端口發(fā)送給顯示終端顯示。OV5620輸出圖像的最大分辨率為2592 ×1944。
2 系統(tǒng)硬件設計
硬件電路主要包括CMOS攝像頭傳感器,數(shù)據(jù)采集模塊,SDRAM存儲模塊,VGA視頻輸出接口模塊。
在現(xiàn)實景物的采集與顯示過程中,視頻轉換接口功能的實現(xiàn)通過以下步驟來完成:
①對采集到的RAW數(shù)據(jù)流進行轉換。視頻轉換接口收到的是像素的RAW值,因此需要將每個像素的色彩值由RAW空間轉換到 RGB空間,然后再對RGB進行數(shù)據(jù)平均,輸出RGB數(shù)據(jù),實現(xiàn)色彩空間的轉換。②將轉換后的每個像素的RGB值寫入存儲器中。由于視頻的轉換接口和VGA接口的視頻數(shù)據(jù)流工作的時鐘域是不同的,需要SDRAM來作為緩存,存儲一幀圖像的數(shù)據(jù),以供VGA顯示器顯示。③從存儲器中讀出像素的RGB值,并將其轉換成VGA模擬信號值。由于FPGA 內部沒有D/A轉換單元,因此不能通過 FPGA 來直接產生模擬信號,還需要另外添加專門的圖像 D/A芯片(ADV7123)來完成模擬信號的產生。系統(tǒng)工作時,F(xiàn)PGA 將從SDRAM 存儲器中讀出的 RGB值送至圖像DA芯片進行數(shù)模轉換變成模擬信號值VGA接口直接輸出,系統(tǒng)就能將圖像在VGA顯示器上直接顯示。
3 系統(tǒng)軟件設計
3.1 攝像頭采集圖像模塊程序設計
攝像頭的采集過程和VGA的顯示恰好是個相反的過程,VGA的顯示是由FPGA產生行列時序,供給D/A轉換器,產生驅動VGA顯示器的模擬信號。而攝像頭的采集圖像是攝像頭自動產生行列信號,用FPGA進行采集就行。在對攝像頭進行采集之前,需要用SCCB協(xié)議給攝像頭進行配置,SCCB協(xié)議兼容I2C協(xié)議,前者寫數(shù)據(jù)和I2C是一樣的,就是讀數(shù)據(jù)的時序不一樣。本設計中因為只對攝像頭進行配置,只用到了SCCB的寫協(xié)議。
3.2 圖像轉換模塊程序設計
攝像頭數(shù)據(jù)采集模塊采集到RAW數(shù)據(jù),需要轉化為RGB格式的數(shù)據(jù),才能夠驅動攝像頭。10位的RAW數(shù)據(jù)經(jīng)過空間轉換把10位的采集數(shù)據(jù)轉換為10位的RGB數(shù)據(jù),然后數(shù)據(jù)進入第二個模塊,對空間轉換的10位RGB數(shù)據(jù)進行數(shù)據(jù)平均得到R[9..0],G[9..0],B[9..0],然后RGB數(shù)據(jù)經(jīng)過SDRAM進行緩存。采用行緩沖+流水線的處理方式,將前一級抓取到的行數(shù)據(jù)(bayer color pattern),實時轉換成標準的30位RGB數(shù)據(jù)并進行適當?shù)南虏蓸?,以便于后繼的圖像處理及顯示。
3.3 SDRAM程序設計
SDRAM在此系統(tǒng)里,充當?shù)氖菆D像緩存的作用,攝像頭將數(shù)據(jù)采集進來,將圖像存儲到SDRAM中,然后VGA控制模塊從SDRAM讀出并顯示在VGA顯示器上。核心的代碼如下:
Sdram_Control_4Port u8 ( // HOST Side
.REF_CLK (CLOCK_50),
.RESET_N (1'b1),
.CLK_100OUT (CLOCK_100),
// FIFO Write Side 1
.WR1_DATA ({tCMOS_R,tCMOS_G,tCMOS_B}),
.WR1 (tCMOS_DVAL),
.WR1_ADDR (0),
.WR1_MAX_ADDR (1280*960),
.WR1_LENGTH (9'h100),
.WR1_LOAD (wSYNC),
.WR1_CLK (CMOS_PIXCLK),
// FIFO Read Side 1
.RD1_DATA ({Image_Read_R,Image_Read_G,Image_Read_B}),
.RD1 (VGA_Read_Req),
.RD1_ADDR (0),
.RD1_MAX_ADDR (1280*960),
.RD1_LENGTH (9'h100),
.RD1_LOAD (!DLY_RST_0),
.RD1_CLK (VGA_CTRL_CLK),
// SDRAM Side
.SA (SDR0_ADDR),
.BA (SDR0_BA),
.CS_N (SDR0_CS_N),
.RAS_N (SDR0_RAS_N),
.CAS_N (SDR0_CAS_N),
.WE_N (SDR0_WE_N),
.DQ (SDR0_DQ),
.DQM (SDR0_DQM)
,.SDR_CLK (SDR_CLK)
);
assign SDR0_CLK = SDR_CLK;
wire VGA_Read_Req,VGA_VS;
wire [9:0] Image_Read_R;
wire [9:0] Image_Read_G;
wire [9:0] Image_Read_B;
assign GPIO0[27] = VGA_CTRL_CLK;
assign GPIO0[28] = VGA_VS;
4 系統(tǒng)測試及結果
VGA控制模塊負責從SDRAM讀取圖像數(shù)據(jù)(RGB),然后驅動D\A轉換器ADV7123在VGA顯示器上顯示對VGA模塊進行仿真。
5 總結
本文從系統(tǒng)設計,到各個模塊的軟硬件進行了詳細的設計,經(jīng)反復調試仿真,最終在FPGA平臺上進行實現(xiàn),充分發(fā)揮了FPGA技術的并行處理技術,經(jīng)測試達到了實時有效監(jiān)控的要求。
參 考 文 獻
[1] 潘松,黃繼業(yè),陳龍編著.ENA技術與VerilogHDL[M].清華大學出版社,2009.
[2] 潘松,黃繼業(yè).EDA技術實用教程[M].第三版.科學出版社,2008.
[3] 夏宇聞編著.Verilog數(shù)字系統(tǒng)設計教程(第2版)[M].北京航空航天大學出版社,2010.
[4] 劉韜,樓興華編著.FPGA數(shù)字電子系統(tǒng)設計與開發(fā)實例導航[M].人民郵電出版社,2005.
[5] 聞見明編著.FPGA芯片在視頻通信實時處理中的應用[J].警察技術,1994(3)10-11.
[6] 胡瑤榮.基于FPGA的實時視頻采集系統(tǒng)[J].電視技術,2005,29(2)81-83.