图像采集是实时图像处理的重要步骤。目前,图像传感器件主要有CCD(Charge Coupled Device)和CMOS(Complementary Metal Oxide Semiconductor)。CCD技术现在已经非常成熟, CCD摄像头仍然是高端应用的首选器件。它输出的模拟视频信号包括图像信号、行与场消隐信号、行与场同步信号等七种信号。传统的视频采集系统由A/D 转换电路、控制逻辑电路、数据缓存电路、地址发生器、地址译码电路等构成,此类设计有电路复杂、芯片繁多、开发周期长、成本高等缺点。
本文采用视频解码芯片与复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)设计了一套实时图像采集系统,克服了以上缺点。其中视频解码芯片可以从视频信号中自动获取行、场同步信号,并完成A/D转换,而具有在系统编程(ISP)功能的CPLD可以通过软件实现逻辑重构,将逻辑控制、地址发生器等电路全部集成在一块芯片中。系统具有体积小、成本低、可靠性高、升级容易、开发周期短等优点。
1 视频解码芯片SAA7114H的性能特点[1]
SAA7114H是一个高集成度的电路,在视频采集领域有着广泛的应用。视频解码基于行锁定时钟解码原则,能够将PAL、SECAM和NTSC制式信号转变为与ITU601标准兼容的标准视频信号。SAA7114H能够接收TV的CVBS信号或VCR的S-VIDEO信号,同时通过它的扩展接口(X端口)还能够接收MEPG码流或VIDEO PHONE码流的数字视频信号。经过SAA7114H解码后的视频信号,还能够根据实际的应用,选择8位或16位宽度的数据输出格式。
SAA7114H的主要任务就是捕捉和缩放视频图像,向显示控制器提供标准的YUV数字视频流输出格式。SAA7114H的主要特点如下:
(1)对每路CVBS或Y/C输入信号可以选用可编程的静态增益或自动增益控制。
(2)含有两个9位视频A/D变换器,在扩展接口中可以接收数字CVBS信号或Y/C信号的输入。
(3)数字锁相环适用于各种标准和非标准视频信号源的同步处理和时钟的产生。
(4)水平和垂直同步信号的检测。
(5)在片产生符合ITU601标准的行锁定时钟。
SAA7114H还提供一个I2C接口,用于和主控芯片相连接,从而可以对其内部的寄存器进行读写操作,控制SAA7114H的工作状态。
经过SAA7114H解码后的视频信号,必须保持正确的时序对应关系,才能完整无误地恢复原来的视频图像。SAA7114H输出的时序包括行场同步信号、行场消隐信号、行频场频、场识别信号等。以PAL制信号为例,其行、场时序关系如图1所示。
其中,HREF信号为行消隐信号,VGATE代表场消隐信号(可以通过对寄存器VSTO[8:0]和VSTA[8:0]的编程进行确定),HREF与V123信号结合能判断当前为奇场或是偶场,FID为场识别信号。以上各信号都能通过SAA7114H的相关管脚进行输出(如RTSO、RTSI、XRH和XRV管脚等)。
2 复杂可编程逻辑器件XC95216的性能特点[2]
XC95216是Xilinx公司的一种复杂可编程逻辑器件,具有丰富的可编程I/O引脚、在系统可编程、使用方便灵活的特点。不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。其主要功能特点如下:多达166个用户I/O引脚,所有引脚的脚对脚逻辑延迟为10ns,fCNT可达111MHz,216 个宏单元,具有4800个可用门。
3 实时图像采集系统组成及其工作原理
本文设计的实时图像采集系统是一个基于DSP的活动目标跟踪系统的图像采集部分。DSP对图像采集部分提供的数字图像信号进行相关的计算处理,识别目标,然后控制相关设备,达到跟踪目标的目的。系统要求实时性强、体积小。
设计中采用视频解码芯片SAA7114H将CCD摄像头获得的模拟视频信号转换为数字信号。在此实时图像处理系统中,恒速的视频解码芯片SAA7114H与变速的DSP图像处理之间需要加入缓冲电路。缓冲电路一般有3种结构:双口RAM结构、FIFO结构、乒乓缓存结构。前两种缓冲结构的存储容量相对较小,不是特别适合高速图像处理系统。乒乓缓存结构的特点决定了可以用相对较便宜的高速大容量SRAM、外围逻辑器件构成比双口RAM以及高速FIFO更适合视频处理系统所需要的缓冲存储器。采用CPLD控制两块SRAM以乒乓方式工作,实现数据流在系统中的高速传输。
3.1 视频采集的工作流程
视频采集的硬件框图如图2所示。系统复位后,单片机(MCU)通过I2C 总线对SAA7114H初始化。单片机采用Philips公司的P89C61X2BN,具有在系统编程功能,允许更改SAA7114H初始化程序,并可烧写到单片机FLASH中,相当方便。初始化成功后,SAA7114H 开始工作,将输入的模拟视频信号转换成720×576 的YUV422数字信号,然后输入CPLD。CPLD 一方面进行格式转换,输出YUV4:1:1、CIF格式的数字信号,另一方面还作为地址发生器,与CIF格式数据一起输入到SRAM。CPLD 还产生SRAM 的读写控制信号,使用两片SRAM,以乒乓方式工作,每片保存一场图像。图2中指向DA[7:0]的实线箭头与指向DB[7:0]的虚线箭头表示CPLD的D[7:0]端口的数据轮流输送给DA与DB端口。在保存好一场图像后,CPLD以中断方式通知DSP作相应处理。
3.2 乒乓缓存控制原理
“乒乓操作”是一个常常应用于数据流控制的处理技巧。典型的乒乓操作方法如图3所示。乒乓操作的处理流程如下:输入数据流通过“输入数据选择单元”(在本采集系统中,CPLD内部逻辑结构完成此数据选择功能),等时地将数据流分配到数据缓冲区SRAM A和SRAM B中。在第一场的时间,将输入的数据流缓存到SRAM A。在第二场的时间,通过“输入数据选择单元”的切换,将输入的数据流缓存到SRAM B,与此同时,将SRAM A的数据(第一场图像数据),通过“输出数据选择单元”的选择,送到“数据流运算处理模块”(DSP)运算处理。在第三个缓冲周期,通过“输入数据选择单元”的再次切换,将输入的数据流缓存到SRAM A,与此同时,将SRAM B的数据(第二场图像数据)通过“输出数据选择单元”的切换,送到“数据流运算处理模块”运算处理。如此循环,周而复始。
乒乓操作的最大特点是通过“输入数据选择单元”和“输出数据选择单元”,按节拍、相互配合地切换,将经过缓冲的数据流不停顿地送到“数据流运算处理模块”,进行运算及处理。把乒乓操作模块当作一个整体,此模块两端的输入数据流与输出数据流均是连续不断的,没有任何停顿,因此非常适合进行流水线式处理,完成数据的无缝缓冲与处理。
3.3 CPLD的设计
3.3.1 数据缓存
将数据保存到SRAM,需在采样的同时产生地址。每块SRAM 的地址线都有两组,一组由CPLD 给出,一组由DSP 给出。为了解决共用存储器时的资源冲突问题,需控制DSP和SRAM、CPLD和SRAM之间的通断[3]。CPLD通过提供总线隔离器的控制信号,在CPLD对SRAM A操作时就将CPLD到SRAM B的地址线、数据线、片选信号都置高阻,设置隔离器使DSP与SRAM B导通,而与SRAM A断开,此时DSP可以读取SRAM B,反之亦然。实际上,SRAM的数据线也有两组,其工作方式和地址线一样。为了给DSP 以充裕的时间读取RAM 中的数据,还要控制将每场图像存入不同的RAM,使两片SRAM以乒乓方式工作。设计中选用了ISSI公司的IS61LV5128,容量为512KB。
3.3.2 接口
CPLD 的主要外围接口如下:(1)输入部分。图像数据IPD[7:0]、时钟LCLK、场同步VREF、行同步HREF、复位RES。(2)输出部分。图像数据IPO1[7:0]和IPO2[7:0],片选信号ce1、ce2,写使能we1、we2,地址add1[18:0]、add2[18:0],总线隔离器的开关信号f1、f2,DSP 中断信号dspint(这里没有设置SRAM 的OE 信号,因为CPLD只需要将数据写入SRAM,不需要从SRAM中读数据)。
3.3.3 VHDL实现
设计中采用VHDL对CPLD进行逻辑实现。程序中“乒乓”控制部分代码如下:
PROCESS (res,clk,idq)
BEGIN
IF (res=′0′) THEN
tadd1<=″0000000000000000000″;
tadd2<=″0000000000000000000″;
add1<=tadd1;
add2<=tadd2;
count<=″00″;
ELSIF (clk′EVENT AND clk=′1′) THEN
IF (idq=′1′) THEN
IF (oddoreven=′1′) THEN
tadd1<=tadd1+′1′;
add1<=tadd1;
ELSIF (oddoreven=′0′) THEN
tadd2<=tadd2+′1′;
add2<=tadd2;
END IF;
END IF;
END IF;
END PROCESS;
本文设计了一套基于视频解码芯片SAA7114H与CPLD的实时图像采集系统,其硬件结构简单,系统稳定,完全满足基于DSP的活动目标跟踪系统的需要,具有很强的实用性,稍加改动即可用于其他场合,如监控系统等。
参考文献
[1] SAA7114H DATA SHEET,2000.
[2] XC95216 In-System Programmable CPLD DATA SHEET,2001.
[3] 章 勇.CPLD 在视频采集中的应用和实现.电子技术,2004,(12).