1 达芬奇技术的主要特点
达芬奇平台是典型的基于共享存储的嵌入式多处理(ARM,DSP,VICP,视频前端和后端等)环境,支持的关键技术是片内实现了多通道的交换中心资源(Switch Central Resources,SCR)。基于片内SCR,达芬奇平台在片内多处理器之间形成了典型的C/S架构:计算能力强大的DSP可以作为服务器提供算法的实时计算服务;带有JAVA处理能力的ARM9实现网络,硬盘音视频I/O等用户界面。美国TI公司在达芬奇平台上专门为音视频编解码(Codec)多媒体应用精心设计了系统框架,提供了丰富的系统程序接口SPI,应用程序接口API以及视频,图像,话音和音频千余种流媒体算法组件。他们与操作系统,中间件构成了一个应用系统的大部分内容,应用系统开发团队只需要将他们封装成运行包,就能得到高可用性和高可靠性的产品。
达芬奇平台的最大特点就是基于DSP与ARM的SOC芯片,和与之相关的相关软件,如图1所示。
对达芬奇平台,硬件上给与双核架构强有力的支持,在DSP端用DPS/BIOS来支持音/视频算法的运行,在ARM端用MontaVistaLinux(MV)来支持其对外设的管理。对于ARM与DSP之间的数据交叉,则用Codec Engine和Codec Server来加以管理。达芬奇平台的先进性,对高端音/视频系统来说,无疑是开发平台的最好选择。
2 TMS320DM365介绍
TI公司的TMS320DM365是一款面向多媒体技术应用的高性能芯片。TM320DM365功能框图如图2所示。
内核方面TMS320DM365集成ARM926EJ-S.H.264协处理器(HDVICP),MPEG4/JPEG协处理器(MJCP),能以1080p格式与10帧/s的速度提供H.264编解码功能,和以1080p格式与24帧/s的速度提供MPEG4编解码功能,以及以720p格式与30帧/s的速度提供H.264或MPEG4编解码功能。存储方面扩展存储器接口EMIFs包括1个16位256 M地址空间的DDR2和mDDR,以及1个16/8位的AEMIF,可扩展的类型有8/16位NAND Flash,16Mb NOR Flash,SRAM,16位OneNAND等。其他外围扩展控制器还包括16位HPI(Host-Port Interface),2个MMC(Multimedia Card)/SD(Secure Digital)/SDIO接口,1个16位的WDT(Watch DogTimer),5个SPI(Serial Port Interface)接口其中每个具有两个片选,1个主/从I2C(Inter-Integrated Circuit)总线控制器,1个支持2.0USB OTG接口控制器等。
TMS320DM365集成的ARM926EJ-S处理器包括32 kBRAM、16 kB ROM(用于非AEMIF启动模式下的ARMbootloader)、16 kB指令缓存、8 kB数据缓存、CP15及MMU等。其中CP15用来对指令、数据缓存、MMU以及其他ARM子系统进行配置及控制。MMU使用统一的TLB来对页表中存储的信息进行缓存,并为类似Linux、WindowsCE、ultron以及ThreadX等操作系统提供虚拟内存。该处理器的写缓冲数据容量高达17 kB,使其可以大幅提高内核的性能。
TMS320DM365中的视频处理子系统(VPSS)由两个接口,分别用于视频捕获的视频前段(VPFE)输入接口和用于图像显示的视频后端(VPBE)输出接口。图3为视频处理子系统系统框图。
VPFE模块主要用于捕获视频信号,也可以直接从前端输入已有的视频信号。VPFE输入接口有1个CCD控制器(CCDC)、1个预处理器、柱状模块、自动曝光/白平衡/聚焦模块(H3A)和寄存器组成。CCDC可以与视频解码器、CMOS传感器或电荷耦合装置连接;预处理器是一个实时的图像处理器,它把来自CMOS或CCD的原始图像从RGB转变为YUV422的编码;柱状模块和H3A模块实现基于原始图像信息的硬件操作。
VPBE输出接口由1个OSD引擎和1个视频编码器组成。OSD引擎能够显示两组独立的视频窗口或两组独立的OSD窗口,还可以以2个视频窗口、1个OSD窗口和一个属性窗口的形式显示。OSD用于在视频图像上叠加音量,图标等位图或图像信息。视频编码模块提供数字输出和模拟输出。数字输出支持24bitRGB888格式、8/16bit BT.656以及具有独立的水平和垂直同步功能的CCIT.601输出;模拟输出支持4路10bit DAC,均工作于54 MHz,支持复合NTSC/PAL、S端子和分量视频。
3 系统硬件设计
系统硬件结构如图4所示,本系统选择以TMS320DM365为嵌入式处理器,外围电路包括有音频、视频信号采集电路,以太网络电路,电源接口,JTFAG,UART,NAND Flash,SD卡,DDR2,USB2.0 OTG以及I2C。
网络摄像机系统的信息处理流程主要分为图像的获取、图像的处理传输以及图像的显示3部分。本系统中,前端摄像头负责图像的捕捉,将获取的未经压缩处理的图像信号传输至电路板中通过TMS320DM365芯片进行压缩处理以及SD卡的相应存储,再由以太网接口或其他接口将处理过图像进行传输,在远端监视器上将图像进行显示。
本系统的视频采集模块采用TVP5146。传统NTSC/PAL摄像头的输出信号格式为模拟信号,由于TMS320DM365的视频输入信号是通过VPFE的CCDC以ITU-R BT.601/BT.656格式进行输入的,所以首先需要通过视频前段滤波放大器OPA361对采集到的模拟信号进行放大,经过视频解码芯片TVPS146将模拟信号进行图像的抗混叠滤波预处理、模拟数字化转换及亮度/色度、水平/垂直同步信号的分离,实现模拟视频信号转换为数字并行信号BT.656码流格式,随后通过2个12位2选1的FET多路复用器对4路视频信号选择1路作为输入从而完成VPFE的视频输入工作。 TVP5146是一种高性能单片数字视频解码器,它可将所有常见的基带模拟视频信号,例如NTSC,PAL,SECAM混合信号数字化并解码为数字视频信号。该解码器还包括了具有模拟预处理功能的4路10位30MSPS的模数转换器。高达10组的视频输入终端可以用来配置作为RGB,YPbPr,CVBS分量信号或者S端子视频输入。
网络控制模块主要包括EMAC模块和MDIO模块,原理图如图5所示。
本系统采用TI公司出品的TSB43EA42作为以太网收发器。TSB43EA42支持10 MB/100 MB基带传输,提供与MAC层相接的MII接口。它与DM3 65通信的主要引脚有:发送、接收数据线、时钟、使能信号、错误指示、管理数据接口、控制/指示引脚等。EMAC控制模块内部集成了8 kB的RAM,主要功能使存放缓冲描述符和以太网数据包。MDIO模块则主要通过两线接口完成对物理层芯片的配置,工作状态检测等工作。
串口模块采用TI公司的MAX322ICPW,主要用来负责开发板与计算机之间的通信。通过超级终端,完成Linux内核的下载以及相关参数的设置,完成系统的开发以及调试。存储模块包括了2个扩展存储接口EMIF和2个MMC/SD卡接口。前者包括DDR控制器和异步扩展存储接口AEMIF分别用于扩展连接对DDR存储器和Flash存储器;后者实现了2个SD卡存储器的扩展连接。
电源模块采用了TI公司的TPS65023作为电源管理芯片。该芯片包括3个DC/DC转换器以及2个200mA线性稳压器LDO。每路LDO由TMS320DM3 65通过I2C与之通信,实现各路输出电源电压的控制,为内核存储器和I/O接口提供1.3,1.8,3.3 V的工作电压;也可通过5 V稳压器直流供电,通过DC/DC转换器提供1.3,1.8,3.3 V供电。
4 系统软件设计
系统的视频采集模块负责从摄像头中读取视频流数据,读出的图像数据交由压缩模块处理。摄像头驱动程序加载完成后为了进行视频采集必须加入Video4Linux模块,从而可以通过Video4Linux模块提供的编程接口从摄像头设备中获取图像帧。基于V4L的视频采集流程图如图6所示。
本系统采用RTP实时传输协议以及RTCP实时传输控制协议作为视频传输的协议。RTP在多点传送或单点传送的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据,如:音频、视频或者仿真数据。RTP由于没有为实时服务提供资源预留功能,所以不能保证QoS(服务质量)。RTCP作为一种控制协议,通过扩展可以升级为大型的多点传送网络,并提供最小限度的控制和鉴别功能。在RTP会话期间,各参与者周期性的传送RTCP包,RTCP包中含有已发送的数据包的数据、丢失的数据包的数量等统计资料,因此服务器可以利用这些信息动态的改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,他们能以有效地反馈和量小的开销使传输效率最佳化,RTCP利用主要的两种控制包SR和RR反馈的信息如数据包丢失比,数据包丢失率,吞吐量和吞吐率,数据包到达时延抖动和往返传播时延等来调节实时传输,并调整系统的打包格式,发包速率来保证流畅地传输数据和清晰的播放视频,因此特别适合传送网上的实时数据。
JRTPLIB作为一个RTP协议的库,用来开发多媒体的应用十分方便。通过JRTPLIB库发送或接收RTP数据,而不用考虑SSRC的冲突、调度,连RTCP的数据也不需要用户来发送。用户只需要使用相应的类来发送和接收媒体数据。下面介绍RTP相关代码的具体实现。
在使用JRTPLIB传输多媒体数据之前,首先应该创建一个RTPSession类的一个对象来标识此次会话。然后通过RTPSession实例的create()方法来对其进行初始化操作。在create()时,需要两个参数sessparams和transparams,分别为RTPSessionParams和RTPUDPv4Trans mission Params的实例。在create()成功以后,需要设置目标地址、净荷类型、时间戳增量等信息。在RTP会话建立起来以后,我们就可以进行媒体数据的传输。传输净荷数据的方法很简单,只需要调用RTPSession实例的SendPacker()方法就可以了。同时为了适应在网上的传输,还需对净荷数据进行分割。为了方便的使用,我们需进一步的封装。对于RTP分组的接收部分,由于给出的是拆分了的数据帧,我们需要组合成完整的数据帧。这里需要注意的是由于本摄像机采用的H.264解码算法,所以分流式接收方式以及RTP分组接收方式两种模式,对于流式传输,有的组合成完整的数据帧的步骤放在了H.264的NAL层。但对有些音频和JPEG等应用,还是需要进行组装过程的。
5 结束语
实现了基于达芬奇技术TMS320DM365的高速网络摄像机系统。该系统采用了最新的技术,降低了产品的成本,具有很强的实用性,是一种比较理想的网络摄像机解决方案,可广泛应用于视频监控系统。
评论
查看更多