基于FPGA的视频监控系统设计与实现

2016-06-20 14:41叶倩

叶倩

摘 要:随着经济和社会的发展,无论是在公共还是在个人空间,人们的安全意识越来越高,传统的锁已不能满足其需求,现在市面上的各种监控系统种类繁多,大多采用单片机之类的微处理器实现,监控往往不仅需要报警而且要求对视频进行采集和存储,对于监控视频的大数据量处理,对于单片机来讲处理能力往往不足,采用并行的FPGA技术作为处理器将会提升性能,解决数据处理的瓶颈问题,本文设计并实现一种采用FPGA技术实现的视频监控系统,经过测试验证本系统具有较高的稳定性,表现出了较好的性能。

关键词:FPGA 视频监控;并行处理;VGA显示

中图分类号: TN4 文献标识码: A 文章编号: 1673-1069(2016)17-156-2

1 视频监控系统设计

本视频监控系统主要由图像采集终端,视频转换接口,VGA显示终端组成,传感器OV5620采集到现实景物后,将生成的RAW数据流由ITU 数据输出端口发送给视频转换接口。视频转换接口将ITU 数据输入端口送来的RAW数据流转换成 RGB 数据流发送,通过VGA端口发送给显示终端显示。OV5620输出图像的最大分辨率为2592 ×1944。

2 系统硬件设计

硬件电路主要包括CMOS摄像头传感器,数据采集模块,SDRAM存储模块,VGA视频输出接口模块。

在现实景物的采集与显示过程中,视频转换接口功能的实现通过以下步骤来完成:

①对采集到的RAW数据流进行转换。视频转换接口收到的是像素的RAW值,因此需要将每个像素的色彩值由RAW空间转换到 RGB空间,然后再对RGB进行数据平均,输出RGB数据,实现色彩空间的转换。②将转换后的每个像素的RGB值写入存储器中。由于视频的转换接口和VGA接口的视频数据流工作的时钟域是不同的,需要SDRAM来作为缓存,存储一帧图像的数据,以供VGA显示器显示。③从存储器中读出像素的RGB值,并将其转换成VGA模拟信号值。由于FPGA 内部没有D/A转换单元,因此不能通过 FPGA 来直接产生模拟信号,还需要另外添加专门的图像 D/A芯片(ADV7123)来完成模拟信号的产生。系统工作时,FPGA 将从SDRAM 存储器中读出的 RGB值送至图像DA芯片进行数模转换变成模拟信号值VGA接口直接输出,系统就能将图像在VGA显示器上直接显示。

3 系统软件设计

3.1 摄像头采集图像模块程序设计

摄像头的采集过程和VGA的显示恰好是个相反的过程,VGA的显示是由FPGA产生行列时序,供给D/A转换器,产生驱动VGA显示器的模拟信号。而摄像头的采集图像是摄像头自动产生行列信号,用FPGA进行采集就行。在对摄像头进行采集之前,需要用SCCB协议给摄像头进行配置,SCCB协议兼容I2C协议,前者写数据和I2C是一样的,就是读数据的时序不一样。本设计中因为只对摄像头进行配置,只用到了SCCB的写协议。

3.2 图像转换模块程序设计

摄像头数据采集模块采集到RAW数据,需要转化为RGB格式的数据,才能够驱动摄像头。10位的RAW数据经过空间转换把10位的采集数据转换为10位的RGB数据,然后数据进入第二个模块,对空间转换的10位RGB数据进行数据平均得到R[9..0],G[9..0],B[9..0],然后RGB数据经过SDRAM进行缓存。采用行缓冲+流水线的处理方式,将前一级抓取到的行数据(bayer color pattern),实时转换成标准的30位RGB数据并进行适当的下采样,以便于后继的图像处理及显示。

3.3 SDRAM程序设计

SDRAM在此系统里,充当的是图像缓存的作用,摄像头将数据采集进来,将图像存储到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 系统测试及结果

VGA控制模块负责从SDRAM读取图像数据(RGB),然后驱动D\A转换器ADV7123在VGA显示器上显示对VGA模块进行仿真。

5 总结

本文从系统设计,到各个模块的软硬件进行了详细的设计,经反复调试仿真,最终在FPGA平台上进行实现,充分发挥了FPGA技术的并行处理技术,经测试达到了实时有效监控的要求。

参 考 文 献

[1] 潘松,黄继业,陈龙编著.ENA技术与VerilogHDL[M].清华大学出版社,2009.

[2] 潘松,黄继业.EDA技术实用教程[M].第三版.科学出版社,2008.

[3] 夏宇闻编著.Verilog数字系统设计教程(第2版)[M].北京航空航天大学出版社,2010.

[4] 刘韬,楼兴华编著.FPGA数字电子系统设计与开发实例导航[M].人民邮电出版社,2005.

[5] 闻见明编著.FPGA芯片在视频通信实时处理中的应用[J].警察技术,1994(3)10-11.

[6] 胡瑶荣.基于FPGA的实时视频采集系统[J].电视技术,2005,29(2)81-83.