引言
图像采集是实时图像处理系统的重要组成部分,更是实时监控系统必不可少的一部分。传统的视频采集系统由A/D转换电路、控制逻辑电路、数据缓存电路、地址发生器、地址译码电路等构成,此类设计一般电路复杂、芯片繁多、开发周期长、成本高、不利于二次开发和重新设计,而且很难满足实时性的需要。本文采用视频解码芯片与现场可编程门阵列FPGA设计了一套实时图像采集系统,克服了以上缺点。其中视频解码芯片可以从视频信号中自动获取行、场同步信号,并可完成A/D转换。而FPGA/CPLD具有功能强大,开发过程投资小、周期短,可反复编程修改,保密性好,开发工具智能化等特点。随着电子工艺的不断改进,低成本的FPGA/CPLD器件已成为当今硬件设计的首选方式之一。因此,本设计具有体积小、成本低、可靠性高、易于再开发、开发周期短等优点。
1整体结构方案
目前,基于DSP的人脸识别平台的运算性能已经成为一个技术瓶颈,而基于DSP+FPGA的高性能人脸识别模块,不但继承了原有平台的优越性(比如:接口方便),同时可依托FPGA来大力加强平台的运算功能,有望满足类似于布控系统的要求。本设计采用FPGA实现高速图像运算和处理,以降低DSP的负荷;同时采用模块化方法在FPGA中实现图像采集、格式转换、存储和显示控制,以方便大规模布控系统的部署。此外,用FPGA实现DSP上的图像处理运算,也可达到更快的运算速度,进一步降低布控系统中心端的运算压力。其系统整体结构框图如图1所示。2图像传感器的信号处理目前,图像传感器件主要有CCD(Charge Coupled Device)和CMOS(Complementary Metal Oxide Scmiconductor)。其中CCD技术现在已经非常成熟,因而CCD摄像头仍然是高端应用的首选器件。它输出的模拟视频信号包括图像信号、行与场消隐信号、行与场同步信号等七种信号。
2.1视频解码芯片ADV7181B的性能特点
ADV7181B是美国ADI公司生产的一款低功耗多功能数字视频解码芯片,它可以自动检测NTSC、PAL和SECAM等标准的电视信号并将其转换为16位或8位的ITU656 YcbCr 4:2:2格式的视频数据进行输出。ADV7181B提供有一个I2C接口,可用于和主控芯片相连,以对其内部的寄存器进行读写操作,从而控制ADV7181B的工作状态。但经ADV7181B解码后的视频信号,必须保持正确的时序对应关系,才能完整无误地恢复原来的视频图像。ADV7181B输出的时序包括行场同步、行场消隐、行频场频、以及场识别等信号。
ADV7181B内部共有240个控制寄存器,可用来对该芯片的功能和状态进行设置和查询,ADV7181B的寄存器取值分为默认值和设置值, 它对应着芯片的初始化功能及状态;默认值是芯片复位后的寄存器缺省取值,设置值则是通过I2C总线配置方式对这些寄存器的默认值进行修改,以达到重新设定ADV7181B的各种功能之目的。ADV7181B的控制寄存器主要通过I2C总线方式进行配置,本设计通过FPGA设计了一个I2C_AV_Config模块,以用于模拟I2C的时序,从而对ADV7181B进行配置。2.2ADV7181B的I2C配置接口ADV7181B的I2C总线配置接口应按照I2C总线规范和标准时序来进行,其时序关系如图2所示。采用Verilog硬件表述语言设计时,该接口的功能可由两个模块来完成。其中I2C_Controller模块用来产生I2C总线规范的时序,I2C_AV_Config模块用来产生需要配置的寄存器地址和配置参数。该模块主要可通过查找表算法来设计。
2.3 I2C_AV_Config模块
ADV7181B内部共有240个控制寄存器,可通过配置这些控制寄存器来设定和实现ADV7181B的各种功能。本设计中ADV7181B的功能是采集PAL制式的模拟视频信号,并以27MHz的时钟频率进行A/D转换,以输出8位宽的、格式为YCbCr4:2:2的数字信号。在此要求下,只要对ADV7181B的40个寄存器进行配置即可,其余的寄存器均为系统复位以后的缺省值。这40个寄存器的地址和配置数据如表1所列。
I2C_AV_Config模块的功能是将表1中需要配置的每一个寄存器的数据以查找表算法给出,并构造成符合I2C总线规范的数据结构,再顺序送给I2C_Controller模块。
3实时图像采集系统组成及工作原理
本设计中的实时图像采集系统实际上就是一个基于FPGA的活动目标监控系统中的图像采集部分。本系统由FPGA对图像进行采集,并对数字图像信号进行相关的预处理,然后控制相关设备进行显示、记录、报警等操作,从而达到监控的目的。系统设计中采用视频解码芯片ADV7181B将CCD摄像头获得的模拟视频信号转换为数字信号。但在此实时图像处理系统中,恒速的视频解码芯片ADV7181B与变速的FPGA图像处理之间需要加入缓冲电路。缓冲电路一般有3种结构:双口RAM结构、FIF0结构、乒乓缓存结构。前两种缓冲结构的存储容量相对较小,不是特别适合高速图像处理系统。而乒乓缓存结构的特点则决定了可以用相对较便宜的高速大容量SRAM和外围逻辑器件构成比双口RAM以及高速FIFO更适合视频处理系统需要的缓冲存储器。即采用FPGA控制两块SRAM并以乒乓方式工作,从而实现数据流在系统中的高速传输。
3.1数字图像采样
本设计中,视频信号源采用输出PAL制式的视频信号摄像头,A/D视频信号转换模块采用AD公司的芯片ADV7181B,FPGA则采用Altera的EP2C35F484C8作为主要处理芯片。
ADV7181B是AD公司的一款比较成熟的视频解码芯片,能够接收复合视频信号,然后经过A/D变换将YcbCr的三个分量分离,并对亮度、对比度和饱和度进行控制,从而产生标准的BT656YCbCr4:2:2格式的8比特视频数据。
EP2C35F484C8是Altera公司CycloneII系列的器件,它采用130nm工艺,具有最优化的体系结构。同时内含嵌入式存储器、NiosII嵌入式处理器、外部存储器接口、差分I/O以及时钟管理电路等。
当来自摄像头的视频信号进入ADV7181B,并经过A/D转换把标准的ITU656YcbCr 4:2:2格式的数据输出到FPGA后,即可由FPGA对其进行采集。图3给出了具体的图像采样接口电路示意图,其中iDATA为数据信号,TD_HS为行同步信号,TD_VS为场同步信号,iCLK为采样时钟。PAL制为隔行扫描方式,一帧包括两场。其图像采样过程中的场同步信号(TD_VS)和行同步信号(TD_HS)之间的时序关系图如图4所示。
在读取图像数据时,需要用TD_VS锁存输出数据。图5给出了采样时钟(TD_VS)和输出数据(iDATA)之间的时序关系。
3.2 数字图像处理程序
ADV7181B输出的标准ITU656YcbCr 4:2:2格式视频图像数据流,可通过8位总线VPO传输给FPGA。FPGA可将来自ADV7181B的输出数据流,以按行排列的8位数据格式还原成一幅完整的图像,并将完整的图像数据保存到SRAM中。由于PAL制电视信号是隔行扫描,可分为奇数场和偶数场分别传播,且数字化以后格式仍然不变,因此,FPGA在将数据保存到SRAM以前,还需要将奇数场和偶数场的数据再还原成一幅完整的图像。具体实现过程如下:
首先要捕捉到FF0000,捕获之后再判断它的下一个数据的第五位,如果为1,则在下一个像素时钟的上升沿开始计数,并依次将接下来的4个数据循环进行存储,同时捕获图像的行场同步信号。接着根据视频信号标准确定该视频信号的BLANK,同时得到响应时序;最后将上面的两组数据叠加,从而完成一帧图像的采集过程。
3.3乒乓缓存控制原理
"乒乓操作"是一个常用的数据流控制处理技巧。典型的乒乓操作结构如图6所示。
乒乓操作的处理主要是把输入数据流通过"输入数据选择单元"等时地分配到数据缓冲区SRAM A和SRAM B中。即在第一场时间将输入的数据流缓存到SRAM A;在第二场时间内通过"输入数据选择单元"进行切换,并将输入的数据流缓存到SRAM B,与此同时,还要将SRAM A的数据(第一场图像数据)通过"输出数据选择单元"的选择,送到"图像预处理模块"进行运算处理。之后,再在第三个缓冲周期通过"输入数据选择单元"的再次切换,将输入的数据流缓存到SRAM A,与此同时,再一次将SRAM B的数据(第二场图像数据)通过"输出数据选择单元"的切换,送到"数据预处理模块"进行运算处理。如此循环,周而复始。乒乓操作的最大特点是通过"输入数据选择单元"和"输出数据选择单元",按节拍、相互配合地切换,来将经过缓冲的数据流不停地送到"图像数据处理模块"进行运算及处理。如把乒乓操作模块当作一个整体,此模块两端的输入数据流与输出数据流均是连续不断的,没有任何停顿,因此,非常适合进行流水线式处理,以完成数据的无缝缓冲处理。
3.4乒乓缓存控制的FPGA设计
将数据保存到SRAM时,一般需要在采样的同时产生地址。FPGA读写控制模块需要给出两组地址线,两组输入、输出数据总线以及读、写、片选等控制SRAM的控制信号线,其中一组控制SRAM A,另一组控制SRAM B。以便将解码出来的Y信号通过iDATA信号总线交替的送给SRAM_DQ与SR2_D。为了解决共用总线时的资源冲突问题,还需适当的控制iDATA和SRAM_DQ、SR2_D的通断。可以用odd来控制SRAMA和SRAMB的选择控制。而对SRAM的读写控制的交替操作则依靠读写控制信号SRAM_WE_N来控制。实际上,SRAM的数据线也有两组,其工作方式和地址线一样。为了给"图像预处理模块"以充裕的时间读取RAM中的数据,还要对每场图像存入不同的RAM进行控制,从而使两片SRAM以乒乓方式工作。
FPGA的主要外围接口包括输入和输出两部分。输入部分包括图像数据iTD_DATA[7:0]、时钟iCLK、场同步TD_VS、行同步TD_HS、复位RESET。输出部分则包括图像数据iDATA1[7:0]、iDATA2[7:0],片选信号iCE_N1、iCE_N2、、读写使能iWE_N、地址SRAM_ADDR[18:0]和SR2_A[18:0]等。
本设计采用Verilog对FPGA进行逻辑实现。程序中的"乒乓"控制部分代码如下:
4结束语
本文设计了一套基于视频解码芯片ADV7181B与FPGA的实时图像采集系统。这种基于FPGA的图像采集系统作为机器视觉专用芯片项目的FPGA验证平台,现已经被成功用于算法验证,并取得了良好的效果,在技术上具有普遍的参考意义。本设计硬件结构简单,系统稳定,完全可满足基于视频监控系统的需要,同时具有很强的实用性。而且稍加改动就可以适用于人脸识别系统(如门禁系统等) |