引 言
视频监控系统的设计方案有很多种,但是市场产品的主流一般选择两种方案:一是基于CPU和专用的视频编解码ASIC芯片。该方案选择以ARM为核心的CPU和专用媒体处理芯片搭建。优点是开发时间相对较短,但由于采用ASIC,灵活性较差,产品一旦定型,很难更改。二是采用面向媒体处理的专用DSP。其开发时间不长,优点是由于算法是软件代码,所以可以不断对产品性能进行升级,重复开发成本较低。由全球最大的DSP制造商德州仪器(TI)推出的TMS320DM642(以下简称DM642)作为一款高性价比、专用于多媒体应用的DSP,已被国内外视频应用从业者广泛接受和采用。本文较详细地介绍DM642的主要特性和系统应用开发技术,并给出基于DM642的视频监控应用实例。
DM642多媒体处理器
DM642是TI 公司专门为多媒体应用而开发的DSP,采用TI 的第二代高级超长指令字结构(VelociTI),使得在一个指令周期能够并行处理多条指令。它可在600MHz时钟频率下工作,每个指令周期可并行8条32bit指令,因此,可达到4800MIPS的峰值计算速度。DM642采用两级缓存结构:第一级包括相互独立的LIP(16kB)和LID (16kB),只能作为高速缓存使用;第二级L2(256kB)是一个统一的程序/数据空间,可整体作为SRAM映射到存储空间,也可整体作为第二级Cache,或是二者按比例的一种组合来使用。DM642具有64个独立通道的EDMA(扩展的直接存储器访问)控制器,负责片内L2与其他外设之间的数据传输。容量较大的两级缓存和EDMA 通道是DM642高性能的体现之一,若能合理使用和管理,将能大幅度提高程序的运行性能。其结构如图1所示。
此外DM642具有丰富的外围设备接口,包括3个可配置的双通道视频端口video port,其中每个videoport又分成A和B两个通道,A/B通道可分别处理一路视频采集,因此DM642最多可以处理6路视频采集数据(不带音频)。如果将video port配置成用于视频输出,则只能在A通道输出,B通道不可以,因此DM642最多可支持3路视频输出(不带音频)。如果同时处理音频,每一个video port可以处理两路立体声。另外还包括64bit的外部存储器接口(EMIF)、10/100Mbit/s以太网MAC和多通道音频串行端口(McASP)以及66MHz32bit的PCI接口。
DM642的基本系统由DM642和外扩的存储器以及外设组成,而外扩的存储器和外设均通过DM642的外部存储器接口(EMIF)进行扩展。DM642基本系统所必须的外扩资源包括:
(1)SDRAM(4M64bit),用于存放程序和缓存数字视频/ 音频数据;
(2)FLASH(4M8bit),用于存放固化程序,以便进行ROM引导;
(3)UART(288bit),扩展2个异步串口(RS232/RS422/RS485);
(4)板上寄存器(n×8bit),由若干个8位状态/控制寄存器组成;
(5)硬盘接口(2816bit),用于本地大容量存储接口。
由此可见,DM642是一个功能强大的多媒体处理器,可用来实现高速完成大数据量的数字视频/音频编解码处理,特别适合于开发多媒体通信设备。是目前构造数字多媒体应用的理想平台。
DM642的应用开发技术
软件开发工具
由TI 公司发布的DSP集成开发环境CCS(CodeComposer Studio),是一个基于Windows的DSP开发平台,是目前最优秀、最流行的DSP开发软件之一。CCS集成可视化的编辑界面可直接编写C、汇编语言,除了扩展了基本的代码产生工具,CCS还集成了C编译器,C优化器、汇编器、汇编优化器和连接器等。并支持RTDX(Real Time Data Exchange)技术,可在不中断目标系统运行的情况下,实现DSP与其他应用程序(OLE)的数据交换。此外,CCS的断点工具、探针工具和分析工具使得开发者的一切开发过程都是在CCS这个集成环境下进行,包括项目的建立、源程序的编辑以及程序的编译和调试。
CCS内部还包含了实时操作系统(RTOS)DSP/BIOS,主要是为多任务实时调度和同步以及主机/目标系统通信和实时监测的应用而设计的。DSP/BIOS具有实时操作系统的很多功能,如任务的调度管理、任务间的同步和通信、内存管理、实时时钟管理、中断服务管理、外设驱动管理等。使用DSP/BIOS工具可以帮助开发人员更加容易地控制DSP的硬件资源,更加灵活地协调各个软件模块的执行,加快软件开发和调试速度。
DM642的片内内存
DM642有256kbit/s的片内内存,对于直接处理图像数据还是很有限的。如MPEG-4算法一般至少要存储当前待编码帧数据和上一帧的重建帧数据,一帧YUV4∶2∶0格式CIF图像的数据约有150kB,256kB,内存对于CIF 图像就不够了。对于DM642,数据如果放在板卡上的片外内存中, 数据的处理速度会大大降低,这是因为DSP对于片外数据的运算要慢得多。我们一般采取的方案是对图像以宏块为单位处理,只将运算时该宏块需要的数据导入片内, 其他数据留在片外,这样的数据量就足够放在片内了。
充分利用DM642的DMA通道
DSP直接访问内存会造成等待, 浪费大量不必要的时钟周期。幸好DM642有强大的DMA能力,因此我们可以在处理当前宏块数据时, 将下一个宏块的数据通过DMA倒入片内,当处理完当前宏块的时候,下一个宏块的数据就已经准备好了,这样可以极大提高DSP的利用率。但具体实现的时候需要对DMA启动的时机进行仔细的考虑,在数据访问不冲突的情况下尽量提前。
DM642的两级Cache
L1和L2组成了DM642的两级缓存。L1距离DSP核最近,数据访问速度最快,只能作为不能寻址的Cache使用,由相互独立的LIP和LID组成;LIPCache大小为16kB,直接映射,每行大小为32B;LID Cache大小16kB,2路映射,每行大小为64B。L2是L1和外存储器的中间层,容量较大,有256kbit/s,是统一的存储空间,即可同时存储程序和数据。L2可作为SRAM映射到存储空间使用,也可整体作为第二级Cache,或是作为二者按比例的一种组合混合使用。L2作为SRAM使用时,即是DM642的片内内存,从整个系统地址空间的起始地址0x00000000开始编址,当作为Cache使用时,4路映射,每行大小为128B,容量在32-56kB 之间。在实际开发过程中要充分利用Cache,总的原则是将尽量多的关键数据分配在片内,Cache越大越好,对于不同的应用需要用不同的配置。最优配置需要在开发中根据经验和实际的测试结果进行选择。
视频监控实例
下面介绍一个基于DM642的网络视频监控系统,如图2所示。需要以下硬件:DM642、射像头、Philips公司的视频解码芯片SA A 7115、Intel公司的LXT971ALC芯片(PHY)以及外围的RJ45接口、SDRAM和Flash存储器。由摄像头采集的模拟视频信号经SAA7115模数转换后,形成YUV4∶2∶0格式的数字视频信号,从DM642视频端口输入;由基于DM642的软件编码器编码压缩处理(软件编码器可采用H.263,H.264,MPEG-2,MPEG-4和M-JPEG等各种现有的或将来的视频编码标准),编码压缩生成的视频码流数据,打包后通过RJ45口经以太网传送到远端目的地,完成网络视频通信和监控。经DM642的MAC接口,在网络传输的同时,视频信号可由视频端口2经视频编码芯片数模转换后输出模拟视频信号到监视器进行本地回显。
通过DM642的EMIF接口,可连接SDRAM和Flash存储器(SDRAM扩展了系统的可用存储空间,系统的初始化代码和配置信息则存储到Flash中)。此外DM642的视频端口通过视频解码芯片SAA7115能很方便地实现和摄像头的无缝连接,视频端口0和1可分别获取两路视频输入,根据应用需要,可灵活地设置单路或多路视频输入。
结束语
由上述介绍可以看到,DM642是一个强大的多媒体处理器,是构成多媒体通信系统的良好的平台。它的丰富的外围接口使得它近乎是一个多媒体嵌入式系统的单芯片硬件平台;它的完全可编程性, 又可以使得它能够兼容正在发展的各种多媒体信号处理标准, 构成通用的软件平台。这些特性必将使得它得到广泛的应用。