近几年来,尤其是911以后,各种场合的视频监控的需求日益旺盛,并且同一场合可能需要同时监控多个目标,这给我们提出了尽可能地降低单路视频处理成本的要求。用单个DSP处理器完成尽可能多路的数字视频压缩处理,将无疑是降低单路视频监控成本的有效方法。幸运的是,随着DSP处理性能的不断提高,及嵌入式数字视频编解码算法的进一步优化和日趋完善、成熟,使得单个DSP完成多达8路CIF格式的数字视频压缩处理成为可能。本文采用TI公司最新推出的Davinci系列DSP中的一款TMS320DM6437和Xilinx公司的高性能、低成本Spartan-3系列FPGA来构建一个高性能、低成本的嵌入式多路视频监控系统硬件平台。
嵌入式多路视频监控系统硬件平台系统
为了尽可能降低嵌入式视频监控系统的单路成本,合理地选择一款DSP处理器,使其完成尽可能多路的数字视频压缩处理,将无疑是一种直接、而有效的方法。TI公司最新推出的Davinci系列DSP是专门为数字媒体应用优化设计的,是其在大家熟知的、已得到广泛应用的TMS320DM642数字媒体处理器基础上的升级产品,处理性能更进一步提高,片上外设更适合于视频处理系统的要求,其中的TMS320DM6437更是高性能、低成本的代表。本文选用其作为嵌入式多路视频监控系统的主处理器,在数字视频编码器算法优化合理的情况下,其可以实现8路CIF格式的H.264编码处理。
但TMS320DM6437只有1个数字视频输入接口,为了接口8路视频解码器,需要在视频解码器与TMS320DM6437的视频输入接口之间增加耦合逻辑,高性能、低成本、可编程的FPGA可以方便实现二者之间的耦合逻辑。另外,FPGA上含有丰富的资源,可用来实现某些图像已处理功能,比如,图像大小的缩放,防眩光等。
以此所构建的DSP + FPGA嵌入式多路视频监控系统硬件平台系统框图如图1所示。
图1 DSP+FPGA的多路视频监控系统硬件平台
TMS320DM6437概述
TMS320DM6437是TI公司2006年推出的、专门为高性能、低成本视频应用开发的、主频600MHz的、32位定点DSP。TMS320DM6437具有下列特点:
采用TI第3代超长指令集结构(VelociTI.3)的TMS320C64x+ DSP内核,主频可达600MHz,支持8个8位或4个16位并行MAC运算,峰值处理能力高达4800MIPS,可实时处理8路CIF或3路D1格式的H.264编码算法。
采用2级Cache存储器体系结构,片上有32K字节RAM/Cache可配置的1级程序存储器L1P,48K字节RAM + 32K字节RAM/Cache可配置的1级数据存储器L1D,和128K字节RAM/Cache可配置的2级程序/数据存储器L2,存储器体系结构更灵活、合理,有利于提高图像处理代码/数据的吞吐率。
片上具有64通道增强型DMA控制器EDMA3,其支持复杂的数据类型的传输,有利于图像数据的高效传输和格式变换。
丰富的外部存储器接口:一个专用的32位、200MHz、256M字节寻址空间的DDR2存储器接口用于接口高速、大容量的DDR2存储器,以存储代码和数据;一个8位、64M字节寻址空间的异步存储器接口用于接口8位Nor Flash或Nand Flash,以存储固化代码。
丰富的片上外设:一个专用的单通道视频输入接口,既可以方便地与各种数字视频输入标准接口,还具有常用的视频预处理功能;一个专用的单通道视频输出接口,既可以提供多种模拟视频输出标准,还可以提供各种数字视频输出标准接口,并且在视频输出之前,还支持多个视频窗口管理及在视频画面上叠加文本数据;一个多通道音频串口,可无缝接口音频Codec器件,实现模拟视频信号的输入/输出;一个I2C总线,可无缝接口视频解码器/编码器和音频Codec 的控制口,方便实现音/视频编解码器的控制;32位PCI总线,方便与PC机接口,实现多板并行工作。10/100M以太网MAC,方便实现嵌入式视频网络化要求;16位HPI接口,方便实现主/从结构的双处理器视频处理系统。
由上可知,DM6437是非常适合于作为单通道视频处理系统的主处理器。为了使DM6437适用于多通道视频监控系统,需要将多个视频通道的数据复合后,再通过DM6437片上视频输入接口输入。所以,下面将着重对DM6437的片上视频输入/输出接口逐一介绍。
DM6437视频子系统VPSS
DM6437片上视频输入/输出接口统称为视频子系统VPSS,DM6437的视频子系统由二部分组成,一是视频处理前端,用于输入数字视频数据,为多种标准的数字视频输入提供接口,并为输入的数字视频数据作必要的预处理。二是视频处理后端,用于输出数字视频数据,以驱动显示器显示视频图像。
DM6437视频处理前端VPFE为视频处理系统提供二大功能,一是为多种标准数字视频输入提供无缝接口,二是为各种视频处理应用提供必要的预处理。
DM6437数字视频输入接口被称为CCD控制器,为输入数字视频流提供数据通路和必需的同步信号,其功能如下:
·16位视频数据总线
·像素时钟频率最高可达75MHz
·可直接接口CCD或CMOS图像传感器
·可接口8/10位BT.656标准数字视频流
·可接口8/16位带行、场同步信号的YCbCr 4:2:2格式数字视频流
对于视频监控应用来说,视频信号一般为来自于摄像头的模拟视频信号,其经视频解码器转换为8/10位BT.656或8/16位带行、场同步信号的YCbCr 4:2:2数字视频流,再输入到DSP中进行处理。
为适应各种视频处理应用,DM6437的视频前端还提供下列3个预处理功能:
预览器Previewer:将来自CCD控制器或来自外部存储器的RGB图像格式转换为YCbCr 4:2:2图像格式。
缩放器Resizer:接受来自预览器或文本存储器的视频数据,由硬件实现图像大小的缩放,水平和垂直方向缩放比例相互独立,缩放范围为1/4x~4x。
H3A:由硬件实现自动对焦、自动白平衡、自动曝光。首先接受RGB图像格式,并将图像细分成二维像素块,像素块的大小、位置可编程。然后对像素块进行累加和峰值统计。最后实现3A控制输出。
DM6437视频处理后端VPBE用于实现视频图像的输出显示。显示屏上的一幅图像可以分成若干个区域,每个区域可以代表不同的视频源,即来自不同的视频输出缓冲器,在输出显示之前,需要将来自不同视频输出缓冲器的视频数据复合成一个完整的数字视频流,这个过程称为视频窗口管理;另外,还经常需要将某些图形、字符等信息叠加到视频图像上一起输出显示,这些叠加到视频图像上的图形、字符存储于独立的缓冲器中,因而在输出显示之前,还需要将来自图形、字符缓冲器的数据复合进输出数字视频流中,这个过程称为图形、字符OSD窗口管理与叠加。最后,将复合后的完整的数字视频流以一定的时序格式进行输出,这个过程称为视频输出编码。DM6437视频处理后端可以同时支持2个视频窗口和2个图形、字符OSD窗口管理,并可支持8种视频窗口与OSD窗口数据叠加方法。DM6437的视频输出编码既可以实现用于直接驱动模拟监视器的标准模拟视频输出,也可实现用于直接驱动带数字接口的显示器的多种标准数字视频输出。
对于视频监控应用来说,视频输出一般用于预览某一通道的视频输入,由模拟监视器来显示,所以直接用DM6437的模拟视频输出即可实现。
4通道视频解码器TVP5154概述
本文介绍的DSP + FPGA嵌入式多通道视频监控系统硬件平台有8个模拟视频输入通道,选用TI的单片4通道视频解码器TVP5154,其原理框图如图2。
图2 4通道视频解码器TVP5154原理框图
TVP5454的特点是内含4个独立的TVP5150单通道视频解码器、4个独立的缩放器和1个IIC总线,将4通道标准模拟视频输入转换成4 通道8位数字视频输出。每个通道可接受1路超级视频输入或2路复合视频输入;每个通道的缩放器水平、垂直方向均可独立缩放1/4x~4x;每个通道的数字视频输出接口既可是8位YCbCr 4:2:2的BT.656(内嵌行、场同步码),也可是8位YCbCr 4:2:2的带行、场同步信号的数字视频流;可通过IIC总线分别或广播配置和获取4个视频解码器或4个缩放器的控制和状态信息。
Xilinx Spartan-3系列FPGA概述
8通道模拟视频输入需要2片TVP5154视频解码器,总有8个8位BT.656数字视频接口,而DM6437视频前端VPFE只有1个视频输入口,为了实现8通道视频输入,二者之间需要耦合逻辑,此耦合逻辑的基本功能需要实现:
·接收/缓冲8个8位BT.656数字视频输入数据(像素时钟为27MHz)
·每个通道水平/垂直均缩小1/2,由D1格式缩小为CIF格式
·将8个CIF格式的数字视频拼接成1个8-位、54MHz、YCbCr 4:2:2带行、场同步的数字视频流,以接口DM6437的视频前端VPFE
除了这些基本功能外,还可以利用FPGA丰富的资源和强大的性能,实现很多视频预处理的功能,如滤波、防眩光等,甚至实现目标侦测、跟踪等目标视频热门功能。
Xilinx Spartan-3系列FPGA的结构框图如图3所示。
图3 Spartan-3系列FPGA结构
其中的功能单元如下:
红 {MOD}方块代表可配置逻辑块CLBs,其由查找表LUT和触发器造成,是实现组合和时序电路的主要逻辑资源,查找表LUT用于实现组合逻辑或16×1存储器或16位移位寄存器,触发器用于实现时序逻辑。
蓝 {MOD}方块代表数字时钟管理器DCM,实现时钟信号的倍频/分频、相移、时滞等控制。
绿 {MOD}方块代表块存储器BRAM,每个块存储器为18K-位双口RAM块,用于作数据缓存。
黄 {MOD}方块代表乘法器或乘累加器DSP48A,用于实现数字信号运算。
褐 {MOD}方块代表输入/输出块IOBs,精选多种常用的I/O标准,方便与各种外部信号直接接口。
DPS + FPGA嵌入式多路视频监控系统设计要点
DSP + FPGA嵌入式多路视频监控系统硬件平台的设计要点在于视频接口的实现。
视频接口涉及标准模拟视频的输入/输出,输入的模拟视频需要数字化(解码器),输出的数字视频信号需要转换为模拟视频信号(编码器)以驱动显示器,以及视频编码器/解码器如何与TMS320DM6437进行接口。
在设计视频接口之前,首先,来看一下视频接口的总体设计要求:
·模拟视频输入: 8路标准的PAL/NTSC模拟视频输入,复合视频CVBS、超级视频Y/C
·模拟视频输出: 1路标准PAL/NTSC模拟视频输出,复合视频CVBS、超级视频Y/C、或分量视频YPbPr或RGB,以方便本地预览或测试
其次,选择视频解码器和编码器,以及它们的接口特点:
·视频解码器: 2片TVP5154,接受8路标准模拟视频输入,8路8位BT.656数字视频数据流输出
·输入口:标准模拟视频输入,复合视频CVBS、或超级视频Y/C
·数据口:8位数据线,时钟SCLK,行/场同步控制信号HSYNC、VSYNC、FID等
·控制口:IIC总线,用于设置视频解码器工作参数和反馈状态信息
·视频编码器: 直接由TMS320DM6437片上视频处理后端实现1路标准模拟视频输出CVBS、或S-Video、或分量视频
再次,需要具体来了解TMS320DM6437视频处理子系统的特点:
·视频处理前端VPFE
·16-位数据:CI[7:0]/CCD[15:8]、YI[7:0]/CCD[7:0]
·同步信号:像素时钟、行同步、帧同步、场标志
·视频处理后端VPBE
·模拟视频接口:复合视频CVBS、或超级视频Y/C、或分量视频YPbPr/RGB
·数字视频接口:24-位数据、行/场同步信号等
最后,为了实现2个视频解码器,总8通道数字视频数据流与TMS320DM6437视频前端接口,在视频解码器与TMS320DM6437之间需要用FPGA来实现耦合逻辑,FPGA需实现的功能如下:
·接收/缓冲来自视频解码器的8路8位BT.656数字视频数据流(像素时钟为27MHz)
·每个通道水平/垂直均缩小1/2,将D1格式图像缩小为CIF格式图像
·将8路CIF格式的数字视频数据拼接成1路8位、54MHz、D1格式的数字视频数据流,以接口DM6437视频处理前端VPFE
·可通过软件设置, 在8路视频输入中任选1路D1格式的视频数据,接口DM6437 的8位EMIFA总线,用于实现预览
TMS320DM6437视频处理子系统的具体配置如下:
·DM6437视频前端VPFE配置为8位、54MHz数字视频口,实现8路CIF格式视频输入
·DM6437视频后端VPBE配置为模拟视频输出,直接驱动监视器
DSP + FPGA嵌入式多路视频处理系统硬件平台的视频口如图4所示。
图4 系统硬件平台的视频口