实时图像采集、显示系统设计

2018-12-08 09:29毛奎章
数字技术与应用 2018年8期

毛奎章

摘要:信息时代对视频图像的实时采集与处理,提出了更高的要求,FPGA以其自身特点,成为了视频图像采集传输平台的重要选择。本论文研究了在合理选择摄像头、FPGA芯片等器件的基础上,采用FPGA实现对摄像头的配置,图像采集,数据缓存,图像数据处理等各模块的设计、仿真,并实现了系统的下载调试,在Xilinx的Spantan6芯片实现了一种图像分辨率是640*480,帧频为30的实时图像采集系统。

关键词:实时图像采集;图像显示;FPGA

中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2018)08-0147-02

随着信息社会的不断发展,实时图像处理被广泛应用于各个领域中。实时图像数据量大,数据率高,对其处理器提出更高的要求。FPGA芯片以其丰富的可编程逻辑资源,高速的运行时钟,良好的性价比、大量的集成IP核成为视频图像处理平台的重要选择。

本次设计目标是建立通用图像处理平台,实现对实时图像的采集与显示。

1 系统总体设计

1.1 器件选择

本次设计使用的核心器件是:摄像头、FPGA芯片和片外SDRAM。

根据摄像头成像质量与后端数字信号处理的要求,本次设计选择CMOS数字图像传感器,选定是OV7670模组,其输出的图像分辨率可达640*480,帧频可达30帧/秒,满足大多数图像处理的需要。

由于图像数据的采集与后端图像处理的速度不一致,需要使用片外SDRAM对采集的图像数据进行缓存。缓存采用乒乓操作,即,FPGA将摄像頭传来的图像数据存入一片SDRAM中,同时读取另一片SDRAM中的数据送入算法模块;当一帧图像的数据存储在一片SDRAM后,切换到另一片SDRAM进行下一帧图像的存储,循环操作,使得图像数据无丢失,实现数据存储读取连贯。

FPGA芯片选择的是Xilinx公司的Spartan6系列XC6SLX16-2CSG324芯片,该款芯片的可编程逻辑资源较多,其中CLB采用双寄存器、6输入的LUT,芯片包含18Kb Block Ram,SDRAM存储器接口(DDR接口)、复合时钟层等资源,适合多媒体系统开发。

据此选择实验室自主开发的开发板。该开发板包括:FPGA芯片及其下载电路,两块SDRAM,摄像头接口,VGA接口,板上50MHz有源晶振等,符合系统要求。

1.2 系统总体设计

FPGA需要完成:摄像头工作状态设定,数据采集,数据存入SDRAM,从SDRAM读出数据,驱动VGA接口等工作。系统总体框图如图1所示。

系统首先按用户需求,通过I2C配置模块对摄像头进行工作状态设定,随后图像数据采集模块将摄像头输入的数据,送入图像数据缓存模块,该模块将数据缓存到异步FIFO后,送往片外SDRAM,同时从另外一片SDRAM 中读出以前存入的图像数据,送入另一个异步FIFO,图像数据显示模块读出该FIFO数据后,按照VGA接口要求,输出数字信号,通过D/A芯片ADV7123,送VGA接口,驱动显示屏重现图像。

2 FPGA模块设计

2.1 I2C配置模块设计

OV7670的寄存器组的数值定义了摄像头的工作状态。本次设计根据图像采集与处理的要求对选定的寄存器进行设置,其它寄存器保留默认值,配置寄存器如表1所示。

通过I2C总线,FPGA与OV7670模组建立通信,FPGA首先产生一个开始信号,发出器件地址和写控制:0×42,得到应答后,FPGA发出寄存器地址,然后等待寻址成功的应答,最后FPGA发出配置数据,寄存器配置成功后,返回应答信号。

2.2 图像数据采集模块设计

OV7670图像传感器配置完后,可以进行图像数据的采集。在采集图像数据的过程中,主要通过帧同步信号VSYNC、行同步信号HREF,确认像素在图像中的位置。帧同步信号VSYNC的上升沿表示新一帧图像的到来,VSYNC的下降沿指示着场消隐结束,是一帧图像数据采集的开始时刻;行同步信号HREF的上升沿表示一行的数据的开始,下降沿表示该行结束。

本设计配置的摄像头输出格式为RGB565,在有效采集区域,像素同步信号PCLK的上升沿采集数据,一个像素数值由两个字节组成,第一个字节, R4-R0,G5-G3,第二字节,G2-G0,B4-B0,通过2个周期的采集,完成一个像素数据的采集;在计数器的控制下完成一行像素,直至一帧图像的采集。设计使用在线测试仪对图像数据采集模块进行了验证。

2.3 数据缓存模块设计

2.3.1 异步FIFO及其控制逻辑设计

由于SDRAM时钟是100MHz,摄像头时钟是24MHz,考虑SDRAM需要同时进行读写,所以调用IP核生成两个异步FIFO。

控制逻辑是,当数据采集端FIFO中的数据个数达到预设数时,数据从FIFO写入SDRAM;当在SDRAM数据读取端的FIFO中的数据个数小于预定数,从SDRAM读出数据写入FIFO。

2.3.2 SDRAM 读写控制模块设计

这部分功能由以下3个模块完成,即:SDRAM状态控制模块(sdram_ctrl.v):主要完成SDRAM的上电初始化以及定时刷新、读写控制等状态,模块通过设计两个状态机完成相关功能;SDRAM命令模块(sdram_cmd.v):该模块根据sdram_ctrl的不同状态指示输出相应的SDRAM控制命令和地址;SDRAM数据读写模块(sdram_wr_data.v),该模块根据sdram_ctrl模块的状态指示完成SDRAM数据总线的控制,完成数据的输入,输出。模块连接示意图如图2所示。

SDRAM控制模块的测试过程:首先通过FPGA的片上ROM提供数据,写入SDRAM,随后从SDRAM中读出,通过串口发送模块将数据输出到PC,最后验证了SDRAM存储数据的正确。

2.4 图像数据显示模块设计

FPGA按照VGA显示标准输出垂直同步信号VSYNC、水平同步信号HSYNC和RGB(红、绿、蓝颜色)信号到视频图像转换芯片,驱动VGA接口。

3 系统总体测试

例化以上的FPGA子模块,整合为一个系统,进行下载,现已调试成功。目前,本系统已应用于焊接机器人系统的焊缝图像采集,显示,效果良好,如图3所示。

4 结语

FPGA芯片以其丰富的可编程逻辑资源,良好的性价比,可以建立灵活多样的实时图像采集、处理平台。

参考文献

[1]高宏亮,刘彪,李龙龙.基于FPGA的图像采集和预处理技术的研究[J].制造业自动化,2013,35(13):72-75.

[2]杨帆,张皓,马新文,姜勇.基于FPGA的图像处理系统[J].华中科技大学学报(自然科学版),2015,43(02):119-123.