嵌入式视频采集系统的设计与实现
扫描二维码
随时随地手机看文章
0 引言
视频采集系统是数字图像获取的最基本手段,是进行数字图像处理、多媒体和网络传输的前提,它可为各种图像处理算法提供待处理的原始数字图像和算法验证平台,随着人们对视频图像需求的激增和各种图像和视频新的压缩标准相继提出,如H.263、H.264、MPEG2、MPEG4和JPEG2000等,对高性能视频采集系统的研究将成为一个热点。
按系统的处理器不同嵌入式视频采集系统大致可分为三类:(1)基于专用视频图像芯片的视频采集系统;(2)基于PC的视频采集系统;(3)基于DSP的视频采集系统。
基于专用视频图像芯片的视频采集系统其核心处理单元为专用图像芯片,该图像芯片决定系统的功能,其应用主要针对某一类产品(如数码摄像机),所以具有一定的局限性。而基于PC机的视频采集系统最为普遍的就是基于视频采集卡获取数字化视频信息,通过运行相应的PC程序实现视频的采集、显示与存储,但是目前基于PC的算法程序通常处理时间较长,很难实现实时的图像处理应用。
相比基于专用视频图像芯片和基于PC的视频采集系统而言,嵌入式视频采集系统可完成视频的实时采集、传输以及各种视频压缩算法和图像处理算法的实现,根据不同的应用,可以编制不同的图像处理程序,所以具有更大的灵活性,并且设计与实现简单,硬件设计一般采用基于DSP的视频采集系统,即“CCD+视频信号处理芯片+CPLD/FPGA/EPLD +DSP”的模式实现。其中,视频信号处理芯片进行信号的A/D转换,CPLD或EPLD或FPGA用于视频采样控制,DSP对采集的数据进行处理。嵌入式视频图像采集系统主要包括硬件设计、软件设计和操作系统3个部分。
1 嵌入式视频采集系统的硬件设计
1.1 视频采集系统的基本构成
基于DSP的视频采集系统要求对视频信号具备采集、实时显示,对图像的处理和分析功能。因此,一个视频采集系统通常可由如下五部分构成:视频图像的采集、视频图像的显示输出、各种同步逻辑控制、视频图像的分析和处理、视频数据的存储。因此,对于视频采集系统的基本构成可用图1所示框图描述。
500)this.style.width=500;" border="0" />
1.2基于DSP的视频采集系统
图2给出了基于TMS320DM642[1]与TVP5150[2]构成的视频采集系统[3],TMS320DM642可以直接和视频编解码器接口,该系统可同时完成四路视频图像的实时采集、传输以及各种视频压缩算法和图像处理算法的实现,根据不同的应用,可以编制不同的图像处理程序。TMS320DM642有自己的图像处理库函数,可以实现各类图像处理算法。因此,该系统具有更大的灵活性与通用性。
500)this.style.width=500;" border="0" />
1.2.1 TMS320DM642简介
TMS320DM642是TI推出的一款面向数字多媒体应用的DSP,它在TI的C64x DSP内核基础上进一步集成了完备的视频/音频输入/输出接口、以太网接口、PCI-66总线等片上外设,不仅能使用户很方便地对音频/视频等各种复杂的运算进行高速处理,还能为方便、无缝地接口视频/音频编解码器件和以太网/PCI总线等数据传输接口。因此,它非常适用于VoIP、数字视频服务器、多通道数字视频录像机(DVB)、多通道数字视频监控等应用。[!--empirenews.page--]
DM642的程序/数据空间以字节为单位进行统一编址,整个寻址空间为4GB。其片上存储器、片上外设、及外部存储器接口(EMIF)均映射到此4GB的空间中。DM642通过外部存贮器接口(EMIF)访问片外存储器(Flash、SDRAM、UART、ATA),如图2所示,DM642共有三个视频口,分别为VP0、VP1和VP2。VP0与VP1则与McBSP、McASP复用引脚的,其功能选择由DM642上的外设配置寄存器(PERCFG)进行配置的。DM642支持多种外部接口:PCI接口、HPI接口和以太网MAC接口,这些接口信号复用相同的引脚,它们的功能选择和配置是在上电复位时通过检测DM642上的特殊引脚(PCI_EN、MAC_EN、HD5、PCI_EEAI)的状态来实现的。
1.2.2 视频A/D采样电路-TVP5150
在图2系统中,TVP5150是由TI公司推出的一款高性能视频解码器,可将NTSC、PAL视频信号转换成数字色差信号(YUV4:2:2),支持两个复合视频或一个S端子输入。输出格式为ITU-R BT.656,并支持Macrovision™复制保护以及高级的VBI功能。不仅如此,TVP5150还具备了封装小(32脚的TQFP)、功耗小的特点(<150mW)。因此,它非常适用于便携、批量大、高质量和高性能的视频产品。TVP5150可接受2路复合视频信号(CVBS)输入和1路超级视频信号(S-Video即Super-Video,Y/C)输入。该芯片包含一个扩展端口(X-端口)用于数字视频(双向半双工),它可直接连接倒MPEG或视频电话进行编解码。TVP5150的图像端口(I-端口)支持8位或16位的输出数据并带辅助参考数据可直接与VGA控制器接口。TVP5150提供I2C总线接口,其最高传输速率为400kbits/s,通过它可以完成芯片的初始化以及设置修改等操作。TVP5150作为I2C总线的从设备,最多可配置为2个不同的从设备地址,一条I2C总线只能同时访问2个TVP5150配置口,所以DM642可以连接4个TVP5150,进行4路视频输入。
1.2.3 视频D/A电路-SAA7121
图2系统中视频D/A由视频编码器SAA7121[4]完成。SAA7121支持PAL与NTSC格式的视频编码,其输入支持BT.656格式的数字视频。SAA7121有1路复合视频(CVBS)输出和1路超级视频(S-Video,Y/C)输出,其系统像素时钟频率为13.5MHz,它可以直接接收MPEG解码数据和采用4:2:2格式每行720有效像素的CCIR兼容YUV数据,其内部包含同步/时钟产生器和数模转换器两部分电路。SAA7121同样需要通过I2C总线进行初始化和设置修改等操作。
从图2中可看出,VP0既要做视频输入口,也要支持视频输出口,即VP0可以工作在Capture与Display两种作模式。但这两种工作模式不能同时使用作模式不能同时使用。当VP0作为8-位的BT.656视频采集口时,仅需视频数据流串行时钟和采集使能控制信号,串行数据流串行时钟由TVP5150的SCLK,采集使能控制信号则由TVP5150的INTREQ/GPCL/VBLK引脚配置为通用输出引脚来控制,此时SAA7121H不起作用。当VP0作为8-位的BT.656显示口时,SAA7121需要HSYNC(行同步信号)、VSYNC(场同步信号)、LLC(27MHz的行锁存号)控制。
1.2.4 系统原理
图2系统其主要功能是完成视频图像的采集、处理、存储和传输。系统的视频输入可以是NTSC、PAL和SECAM制式的任何一种,或者采用S端子输入。TVP5150完成视频信号的A/D转换,为后续处理提供数字视频数据,同时它还分离出行、场同步信号并输出系统时钟供视频D/A芯片和FIFO使用。TVP5150的输出格式包括4:2:2、4:1:1、4:2:0和4:1:0等四种YUV格式输出,数据输出格式是通过I2C总线编程来选择的,TVP5150的内部寄存器初始化也通过I2C串行接口来完成。对于不同的输入制式、不同的采集要求和不同的处理要求,其帧缓存要求是不相同的,如对于PAL-D制ITU-R BT.601视频输入,采样后按4:2:2格式输出,一帧数据为720×576×2=0.83Mbyte,若缓存三帧图像,则需要3Mbyte空间的采集帧缓存,若按4:1:1格式输出,则只需2Mbyte的帧缓存。系统可选择8M×32-bit的SDRAM在系统中即作为采集帧缓存和处理后的数据帧缓存,也可作下载程序的存储器使用。系统提供串行接口,可与外部设备进行通信和传输图像数据。其中Xilinx Xc2s300 FPGA[5]实现以下四点功能:
(1) 完成系统中视频采集和输出部分的同步信号和消隐信号的控制,其中主要包括TVP5150和SAA7121的行同步信号、场同步信号、消隐信号;
(2) 将部分逻辑单元设计为FIFO作数据缓存,完成外接FIFO的同步读写控制,承担TVP5150与DSP的数据传送工作;
(3) 作PCI总线控制器,完成TMS320DM642与计算机的数据通信工作以及从计算机加载各种图像处理算法;
(4) 对TVP5150输出的数字图像进行预处理,其中主要包括图像数据的色度空间转换如YUV到RGB的转换,数据格式转换如将4:2:2转换为4:2:0;
(5) 作数据总线接口,实现数据的驱动传输等功能。
TMS320DM642在系统中是各类算法实现的核心器件,根据不同的应用场合,可以编制不同的算法处理程序,使得该系统具有了很强的灵活性与通用性。值得强调的一点是为了便于操作系统中的其它外设,在该系统中,TMS320DM642的外部存储器接口控制寄存器必须配置为优先使用外部存储器模式。[!--empirenews.page--]
2 嵌入式视频图像采集系统的软件设计
一个完整的嵌入式系统由图3所示的4部分来组成。
500)this.style.width=500;" border="0" />
图3中的底层是硬件系统,核心是嵌入式处理器(嵌入芯片),通常这样构成的系统又被称为是SOC(System on Chip)系统。在硬件系统的上面是BSP(板级支持包),包括各种必要的对底层硬件系统的屏蔽,引导上层操作系统在硬件系统上的正确运行。操作系统正确运行之后还需要开发各种设备驱动程序,目的是给用户的应用程序开发提供对底层设备的屏蔽,提供一个统一的用户开发接口(API)。
BSP是指系统内核在特定的硬件系统上面运行所需要的初始化代码和各种设备驱动程序。它主要包括:系统初始化,初始化CPU寄存器和测试CPU的型号版本等,它和Bootloader中的初始化部分共同完成所有的系统准备工作,使得系统处于预期的稳定工作状态;内存管理,在没有MMU(内存管理单元)的系统里面主要是数据cache和程序cache的管理,在具有MMU单元的系统中还要包括MMU的各种表的管理,它主要用来实现内存的映射;中断控制器管理,对于一个RTOS来说,中断是不可缺少的部分。
嵌入式操作系统相关技术已经成熟,由于Linux[6]具有源码开放、开发工具丰富、技术支持广泛等特点,视频图像采集系统选用嵌入式Linux操作系统(Embedded Linux Operation System)。Linux中的中断管理包括中断号的申请和释放、中断屏蔽和中断服务、中断向量分配等,时钟和设备驱动程序。
驱动程序是利用操作系统提供的接口,完成对底层硬件的操作。驱动程序的开发,是在操作系统提供的接口基础上编写对底层硬件的操作和控制程序,然后加入到操作系统的内核。用户对某一个设备的访问,首先是将用户的各种操作传递给操作系统,然后由操作系统调用设备的驱动程序,完成对硬件的各种数据传输,所以驱动程序必须要告诉操作系统该硬件的各种操作程序的入口地址。特别对于Linux下的驱动程序开发,经过调试通过的驱动程序可以编译为一个模块动态地装载入操作系统内核或者从操作系统内核中删除,因此驱动程序在Linux中是可以作为内核的一部分来编写。
对于用户程序开发,与通用PC上面开发应用程序类似。但是在嵌入式应用中,应用程序一般是作为文件系统的一部分加入到操作系统的内核,然后重新编译内核,最后生成一个可以执行的二进制压缩映像文件加载到系统的存储空间。加载的加入了用户应用程序的操作系统一般还必须固化,烧到系统的Flash中。在系统运行时,根据操作系统的INIT函数转到用户程序执行。
3 结 论
基于DSP的视频采集系统,由于可以灵活的修改其图像处理算法,它的应用主要面向用户的特定需求和对实时性有较高要求的场合。随着技术的发展和日益增强的需要,图像的实时传输和网络服务将是不可避免的,同时嵌入式系统是基于计算机技术且更加强调体积、功耗、成本、便携化应用等综合因素的精简计算机系统,将二者结合在一起而构成的完整传输系统将具有不可比拟的优越性。因此完全有理由相信在嵌入式系统的基础上构建视频图像采集、处理及传输系统具有广阔的市场前景。