您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于DM643网络的嵌入式IP可视电话设计方案 正文
基于DM643网络的嵌入式IP可视电话设计方案

基于DM643网络的嵌入式IP可视电话设计方案

点击数:7404 次   录入时间:03-04 11:48:48   整理:http://www.55dianzi.com   嵌入式系统-技术

    前 言

    由于成本和视频通信质量的因素,可视电话从推出到现在,一直受到用户的冷落。现在因为技术的进步和宽带因特网的普及,可视电话呈现出新的生机。业内专家预测,未来几年内,可视电话不仅可与电信固话、小灵通、移动/联通手机互联,还可与3G 手机互通。可视电话将成为独立的产业,发展前景良好。

    笔者基于TI公司的单颗600 MHz TMS320DM643(简称为DM643)数字媒体处理器,开发了一套性能优异、价格低廉的嵌入式IP可视电话,实现点对点网络音视频实时通信。

    1 基于TMS320DM643的硬件设计

    DM643数字媒体处理器[1]集成了一系列外设,以适应视频和影像技术的发展。其中包括3个可配置视频端口,1个10/100 Mbps的以太网MAC(EMAC),1个面向音频应用的串行口(McASP),1个串行口(McBSP)以及一些其他外设。C64x核内有8个并行的处理单元,采用VLIW(甚长指令集)结构,处理能力高达4800MIPS,并在C6OOO公共指令集的基础上扩展了88条指令。这些指令使C64x能够更方便地执行图象处理中的算法。

    基于单颗DM643的嵌入式IP可视电话的组成如图1所示。从摄像机输入的视频信号和从麦克风输入的音频信号经A/D转换后送入DSP,DSP对音/视频信号进行压缩、编码、合流;然后通过局域网或因特网将数据传输出去,同时将从网络上接收的数据分流,并分别进行视频信号的解码显示和音频信号的解码播放。系统中,还通过DM643的McBSP/UART 口外接了一个键盘,以实现电话的拨号功能。

1.jpg

图1 嵌入式IP可视电话的组成

    1.1 视频采集电路

    本系统采用的视频解码芯片是Philips公司的SAA7l15.从摄像机输入的全电视信号在SAA7l15内部经过钳位、抗混叠滤波、A/D转换、YuV分离电路之后,在YuV到YCrCb的转换电路中转换成BT.656视频数据流,通过DM643的视频口VPo输入到压缩核心单元DM643中。视频数据的行/场同步信号包含在BT.656数字视频数据流的EAV(End of Active Video)和SAV(Startof Active Video)时基信号中,视频口只需视频采样时钟和采样使能信号。SAA7l15内部寄存器参数的配置和状态的读出通过1 C总线进行。视频采集接口的原理如图2所示。

2.jpg

图2 视频采集接口原理

    DM643将解码后的视频数据通过视频口VP1通道送给SAA7121显示输出。SAA7121是Philips公司的一款视频编码芯片,可实现数字视频的D/A 变换。SAA7121的工作模式由其内部的控制寄存器决定,控制寄存器的初始化通过1 C总线完成。DM643利用自身具有的1 C总线模块,作为主控制器,对SAA7121进行参数编程控制。

    1.2音频输入/输出电路

    本系统采用TI的高性能立体声编/解码器TI V320AIC23(简称AIC23),实现音频信号的采集和播放。AIC23与DM643的I/0电压兼容,可实现与DM643的McASP接口无缝连接。

    在本系统中,AIC23工作于主模式,左右声道的采样字宽均为16位。数据接口为DSP mode模式。通过12 C总线设置内部寄存器的工作参数和反馈状态信息。

    由于网络传输的固有特点,音频数据和视频数据传输到接收方时不可能是均匀的。如果发送方不作任何纠正处理,则很难保证音/视频的同步输出。为了实现音频和视频的采样同步,利用锁相环PI I 1708.从SAA7115的U C引脚输出27 MHz时钟,经PLI 1708的SCKO 3引脚输出默认时钟频率18.433 MHz,作为AIC23的输入主时钟MCI K.AIC23内部采用的时钟可通过设置寄存器由主时钟MCLK分频得到。由于音视频采样信号采用同一个时钟源,因此不会出现音/视频不同步的问题。

    1.3 以太网接口电路

    本系统用LXT971作为快速以太网物理层自适应收发器。LXT971支持IEEE 802.3标准,提供MII(MediaIndependent Interface)接口,可以支持MAC;而DM643内部正好集成有MAC控制器,所以LXT971可与DM643实现无缝连接。连接电路如图3所示,其中BH1102为1:1的隔离变压器。

3.jpg

图3 网络接口原理

    1.4存储器扩展电路

    DM643通过EMIF接口扩展了2片32 MB的SDRAM来存放原始图像数据,1片4 MB的Flash来存放应用程序。二者都映射到DM643的外部数据空间。

    2 软件实现和优化

    在本系统中,视频编/解码算法采用H.264标准[2],音频编解码算法采用G.723.1a,回音消除采用G.167,媒体协议采用RTP/RTCP,网络协议采用TCP/UDP/IP,通信协议采用H.323v.4;另外还软件实现了静音、电话功能,并运用抖动缓冲媒体同步技术实现了各种网络状况下的音唇一致。操作系统采用基于DSP/B10S的TI参考架构5(RF5)。基于RF5操作系统的应用程序模块主要包括:音/视频采集模块、音/视频编解码模块、UART控制模块和网络传输模块。

    本系统采用的H.264编/解码可大大提高图像质量或降低像通信带宽。同等图像质量,H.264算法比H.263算法码流降低了5O ;但同时H.264算法比H.263算法复杂得多,需要更强的处理能力,以及做更多的软件优化工作。H.264算法在DM643上的实现和优化是整个系统软件设计的难点和重点。下面以它为例说明软件的开发、优化工作。

    DM643上的软件开发过程可分为3个阶段:

    第1阶段是开发C代码,然后使用profiling工具确定代码可能存在的低效率段。为进一步改进代码性能,需进入第2阶段。

    第2阶段是优化C代码。利用内联函数、编译器的外壳选项等方法进一步优化C代码。再次使用profiling工具检查其性能,如果代码仍达不到所期望的效果,须进入第3阶段。



www.55dianzi.com

    第3阶段是编写线性汇编代码 从C代码中抽出对性能影响很大的代码段,用线性汇编重新编写这段代码,然后使用汇编优化器优化该代码。

    2.1 C代码的开发和优化

    开发过程中要充分利用Tl公司为用户提供的功能强大的函数库,比如IMAGE.LIB库中就包含许多常用函数,可以实现DCT/IDCT变换、DCT量化、自适应滤波等功能。这些函数都是优化过的,完全能够实现软件流水,效率很高。另外,开发C语言代码还需要考虑的要点包括:① 使用适当的数据结构- - 对定点乘法,应尽可能使用short型数据;对循环计数器应使用int或者无符号int 类型。②使用查找表或常数值代替通过直接计算得到结果的语句或函数。

    代码分析结果显示DCT、IDCT 、运动估计占程序总运算量的比重很大,因此这部分是程序优化的重点。优化C 代码包括使用编译器选项、使用内联函数、使用软件流水等。

    (1)向编译器指明不相关的指令。

    为使指令并行操作,编译器必须确定指令间的相关性,只有不相关的指令才可并行执行。若编译器不能确定两条指令是不相关的,则只能安排它们串行执行。用户可通过如下方法指明相关的指令:

    ①关键字cons t 表示一个变量或一个变量的存储单元保持不变,使用const 可提高代码的性能和适应性。

    ②使用-mt 选项向编译器说明在代码中不存在存储器相关性,即允许编译器在无存储器相关性的假设下进行优化。

    (2)使用内联函数(intrinsICs)。

    可用内联函数快速优化C 代码。如在算术操作中,常对计算的结果做饱和(saturation)处理,使用intrinsics只须调用SADD, 一个指令周期便可得到最终结果。比花费两个嵌套的条件判断语句来判断结果是否溢出,最后得到结果效率要高得多。

    (3)使用软件流水。

    在编译时,使用-o2 选项和-o3 选项,编译器可对循环代码实现软件流水。为填满软件流水线,软件流水结构需要执行的最小循环迭代次数称为最小循环次数。循环总数小于最小循环次数时,执行不流水形式循环; 循环总数大于最小循环次数时,执行软件流水形式循环。可以使用-ms 选项,使编译器根据循环次数仅产生一种循环形式; 可使用-o3 和-pm 选项,使优化器访问整个程序,了解循环次数信息; 使用-nassert 内联函数,防止冗余循环产生;使用-mh 选项,消除软件流水循环的排空,从而减小代码尺寸。

    由于在嵌套循环中编译器仅对最里面的循环执行软件流水,因此对于执行周期很少的内循环进行循环展开,对外循环进行软件流水。

[1] [2]  下一页


本文关键字:嵌入式  网络  可视电话  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术