基于FPGA的实时图像采集系统
2017-01-18耿益营
宋 宇, 刘 彬, 耿益营
(长春工业大学 计算机科学与工程学院, 吉林 长春 130012)
基于FPGA的实时图像采集系统
宋 宇, 刘 彬, 耿益营
(长春工业大学 计算机科学与工程学院, 吉林 长春 130012)
基于FPGA的实时图像采集系统包括视频图像采集、SDRAM图像数据存储、FPGA图像数据发送,以及VGA终端显示。系统选择FPGA芯片、128 MBit SDRAM芯片、ADV7123视频编码芯片等硬件以及Quartus Ⅱ13.0软件开发工具。 采用Modelsim10.0实现了系统仿真。
图像采集系统; FPGA; CMOS SENSOR; SDRAM; VGA
0 引 言
图像采集是图像处理的前提。传统的图像采集与处理技术一般由采集卡完成图像采集后再由计算机对其进行处理,这种设计与实现方法存在着系统后续改造与扩展困难、体积大、成本高、开发周期长等不足[1]。而近年来,可编程片上系统(System On a Programmable Chip, SOPC)发展迅速,它融合了处理器、存储器、I/O口等模块,并集成到现场可编程门阵列(FPGA)上。在当前技术下,为了有效地实现各类图像处理算法,许多用于视频图像采集和处理的芯片随之应运而生,芯片的处理功能也越来越强大,使用也越来越方便[2]。用FPGA来实现外围芯片的控制,将图像算法移植到SOPC平台上来实现,具有设计灵活、可移植性高、速度快等优势,并可以在此基础上进一步对图像进行处理,例如对图像进行直方图统计、均衡、滤波等[3]。文中设计了一种基于FPGA的视频采集系统,实现了图像信息的采集、转换、缓存、显示等功能。
1 系统硬件设计
1.1 硬件结构
系统采用Altera公司Cyclon Ⅳ 系列FPGA作为主控芯片,OV7725作为CMOS图像传感器采集数字图像信息, Hynix的HY57V283220作为SDRAM缓存图像数据,最后通过视频编码芯片ADV7123连接至VGA接口。系统硬件结构如图1所示。
图1 系统硬件结构
1.2 系统各硬件模块
1.2.1 FPGA
EP4CE15F17C8N包括1.5 W个逻辑单元,166个用户I/O,31.5 K*16 Bit的Flash,4个能级联具有动态配置功能的PLL。
1.2.2 SDRAM
Hynix的HY57V283220芯片有4个区块(BANK),每个BANK 有1 M*32 Bit存储单元,12 Bit行地址,8 Bit列地址,共4 M*32 Bit=128 MBit存储容量。
1.2.3 摄像头
OV7725是低功耗的CMOS传感器,内部集成A/D转换模块,可直接输出数字信号,最高支持640*480@60 Hz分辨的视频输出。
1.2.4 视频D/A转换芯片
ADV/GM7123具有转换速度快、同步性好、精度高的特点,可以达到30位RGB数模信号转换(本系统只使用24位)的需要。
1.2.5 VGA
24位VGA视频输出接口,可以显示真彩色图像,通过FPGA编程实现VGA来驱动,完成视频信号的输出。FPGA并行计算的优势,使它可以满足VGA显存数据更新与显示同步进行的要求。
1.3 系统工作原理
系统上电复位之后,各模块初始化,由主控芯片FPGA,驱动摄像头、SDRAM、D/A转换芯片,提供它们工作所需要的时钟,配置它们的内部寄存器。在初始化完成之后,CMOS摄像头将采集到视频数据(RGB格式)传输给FPGA,FPGA通过verilog程序把传输过来的数据转换成RGB565,并最终转换为RGB888格式缓存到SDRAM中,再通过一块D/A视频编码转换芯片把数字VGA信号转换成模拟VGA信号,连接至显示器显示。
2 系统软件设计
视频采集系统的软件设计以Altera公司的QuartuesⅡ13.0为开发工具,以VerilogHDL硬件描述语言来进行各个模块的编程,其中包括CMOS视频图像采集接口设计、OV7725寄存器初始化、SDRAM控制器、VGA驱动、全局时钟模块,系统软件结构如图2所示。
图2 系统软件结构
2.1 FPGA控制时钟模块
在系统刚刚上电的时候,无论是FPGA还是外设均处于不稳定的状态,如果时钟信号(clk)上升沿与复位信号(rst)的上升沿或者下降沿同时达到,将会产生竞争冒险。为了保证电路各模块正常工作,文中设计了一个带PLL的全局时钟管理模块,包括100 MHz的SDRAM控制时钟,延时1/4周期的SDRAM驱动时钟(100 MHz),25 MHz的VGA分辨率在640*480@60 Hz下的扫描时钟,24 MHz的CMOS时钟,以及全局复位信号。这个模块保证了复位信号与全局时钟信号的同步,并为整个系统的各个模块提供工作时钟。
2.2 OV7725寄存器的初始化模块
模块主要实现的两个功能:
1)FPGA与OV7725的I2C通信,也就是配置CMOS SENSOR的SCCB接口。I2C总线在写寄存器时先写设备地址,再写寄存器地址,最后写入寄存器的数据[3]。I2C总线写入时序如图3所示。
图3 I2C写入时序
I2C总线在读寄存器的时候,需要先写入设备地址、寄存器地址,然后在主控端(FPGA)重新发送起始信号后,再读取数据,时序图如图4所示。
图4 I2C读取时序
2)OV7725寄存器配置。OV7725默认输出的是YUV422格式,为了达到设计需要,必须将它的内部寄存器com10(地址为0x12)的值设置为0x06,即以VGA分辨率输出RGB565格式。
2.3 CMOS视频流数据采集模块
这个模块的作用就是在I2C配置OV7725和SDRAM初始化完成前提下提取图像信息:将摄像头采集到的10 Bit数据(仅高8位有效)经过延时、同步、拼接输出16 Bit RGB565数据,即OV7725图像的传输、转换。采用Modelsim仿真,得到的测试波形如图5所示。
图5 视频数据采集仿真波形
由图中可以看出,在行同步信号href为高电平期间,输出了16 Bit的RGB565信号(cmos_565_data)。这个信号是由高8位{R[4:0],G[5:3]}与低8位 {G[2:0],B[4:0]}拼接成的,这是RGB565的完整读取过程。
2.4 SDRAM控制器模块
这个模块实现的是SDRAM控制器与SDRAM的连接,产生驱动SDRAM所需的驱动时钟、片选等信号。在视频流数据采集模块得到了16 Bit RGB565信号,由于SDRAM与VGA都是24 Bit接口,所以采用高位补低位的方式,得到24 Bit RGB888数据作为写入SDRAM的数据。模块最终输出的是FIFO数据读取信号,连接至VGA驱动模块,作为VGA的输入信号。
关于SDRAM,有一种“乒乓操作”,在本系统中,因为只采用一片sdram,所以需要实现片内乒乓来防止当前读取的图像与上一次存入的图像出现交错。简单说,就是通过MUX选择器,2个BANK读2个BANK写交替进行。
片内乒乓原理如图6所示。
图6 片内乒乓原理图
2.5 VGA驱动模块
VGA模块主要实现的功能就是驱动ADV7123把SDRAM传送过来的数据(数字信号)转换成模拟信号,最终在显示器上显示出来。参照《VGA时序标准》,VGA的系统时钟计算方法为[4]:
(1)
文中所用的640*480@60 Hz ,它的f=800*565*60=25.175 MHz(约为25 MHz),与上述控制时钟模块吻合。
VGA的扫描流程如图7所示。
图7 VGA扫描流程图
图中hcnt是行像素点寄存器,计数满800使得行同步信号lcd_hs有效。vcnt是行数寄存器,计满525使得场同步信号lcd_vs有效。lcd_rgb就是最终提供给ADV7123转换的RGB信号。
3 基于FPGA的视频采集系统的验证
完成以上各个模块的设计和仿真之后分配管脚,将编译好的工程文件下载到FPGA中。
系统上电之后,整个系统运行如图8所示。
图8 基于FPGA的视频采集系统
可以看到系统画面清晰、可靠,系统的实时性、稳定性都达到了设计要求。
4 结 语
基于可编程逻辑器件所设计的视频采集系统方便移植、改进,是后续加入图像处理算法的基础部分。在后面的研究过程中,将实现实时显示系统的图片存储以及加入一些图像处理算法,并使用按键来切换不同算法的显示效果。
[1] 朱奕丹,方怡冰.基于FPGA的图像采集与VGA显示系统[J].计算机应用,2011,31(5):1258-1261.
[2] 陈友荣,杨海波.基于FPGA技术视频采集系统的设计与实现[J].中国有线电视,2008(4):382-387.
[3] 闰丰,吴川,王延杰.一种基于FPGA的实时图像处理系统[J].长春工业大学学报:自然科学版,2003,24(4):50-52.
[4] 廖裕评,陆瑞强.逻辑电路设计DE2-115实战宝典[M].武汉:有晶科技研发团队,2012.
[5] 原魅,何文浩,肖晗.基于FPGA的嵌入式图像处理系统设计[M].北京:电子工业出版社,2007.
[6] 应芳琴.基于I2C总线的视频信息采集系统的IP核设计[D].杭州:浙江工业大学,2005.
[7] 刘波.精通Verilog HDL语言编程[M].北京:电子工业出版社,2007.
[8] 叶少朋.基于FPGA的嵌入式视频采集系统设计[J].信息化研究,2011(2):39-43.
A real-time image collection system based on FPGA
SONG Yu, LIU Bin, GENG Yiying
(School of Computer Science & Engineering, Changchun University of Technology, Changchun 130012, China)
The FPGA based real-time image collection system is composed of video image sampling, SDRAM data storage, FPGA data transfer and VGA display. FPGA chip, SDRAM chip with 128 MBit and ADV7123 video coding chip are used as hardware, while Quartus II13.0 as software. Modelsim10.0 is applied for simulation.
image collection system; FPGA; CMOS SENSOR; SDRAM; VGA.
2016-04-10
教育部“春晖计划”基金资助项目(Z2011139)
宋 宇(1969-),男,汉族,吉林长春人,长春工业大学教授,硕士,主要从事嵌入式系统方向研究,E-mail:.songyu@ccut.edu.cn.
10.15923/j.cnki.cn22-1382/t.2016.6.10
TP 752
A
1674-1374(2016)06-0565-05