摘 要:提出一种以2块title="TMS320VC54x">TMS320VC54xDSP为核心处理器的IP分组语音通信解决方案,并着重说明了语音处理模块与以太网接口模块的设计思路及2模块的集成方法。
关键词:分组语音通信 DSP CODEC 以太网接口 HPI
分组语音通信是当前网络技术发展的一个热点。虽然PC机早已可以通过软件实现IP网络通话,但是用户却需要像电话一样小巧而方便的终端。嵌入式技术的不断进步让用户的这个需求变成了现实。通常的IP分组语音通信解决方案是采用1块MCU芯片作为系统主控CPU,用1块DSP芯片进行语音信号处理、压缩编解码,再用CODEC、以太网接口和存储器等构成外围电路。此外也有将MCU和DSP集成在一起的芯片,如TI生产的OMAP平台DSP就采用了ARM+DSP构架。集成化不仅可以降低成本,还可以降低功耗并提高可靠性。笔者在设计中使用了2块DSP,分别作为主控和语音处理,同样实现了IP的分组语音通信。
1 IP分组语音通信
分组语音技术是指将语音信号转化为一定长度的数字化语音包,采用存储-转发的方式,以IP包的形式进行交换和传输的技术。传统的电话网以电路交换的方式传输语音,它需要的基本带宽为64Kbps,而在面向无连接的分组网络上传输的分组语音需要的带宽仅为10Kbps左右。由于互联网并不能对传输带宽提供保证,因此语音包在传输过程中就会产生延迟、抖动、包丢失等影响语音质量的因素。近年来由于低速率编解码算法的出现和软硬件性能的提高,人们开始注意到分组语音技术的商业价值。
分组语音信道模型如图1所示。发送端语音在经过模拟信号、数字信号、语音包的处理过程后,再经过网络传输,在接收端对语音包进行相反的处理,还原出语音。
2 语音处理模块设计
该模块实现了语音信号的驱动放大,A/D、D/A变换,压缩编解码等信号处理功能。
2.1 模块硬件设计
语音处理模块硬件框图如图2所示。该模块的核心是TMS320VC5402(以下简称C5402)数字信号处理器。TLC320AD50是模/数接口芯片,采用Σ-Δ调制方式,为DSP提供语音CODEC接口。TLC2272和LM386分别作为TLC320AD50的输入前置放大和输出驱动。在发送端,TLC2272运算放大器对输入语音信号进行放大,TLC320AD50模拟接口芯片对模拟信号进行A/D变换,使之成为数字信号,C5402对数字信号进行压缩编码,得到低速率的语音数据,并送给作为主控制器的另一块DSP。在接收端,语音处理模块从主控DSP处得到压缩的低速率语音数据,由DSP进行解码,TLC320AD50进行 D/A变换,LM386进行信号放大后驱动扬声器,还原出模拟语音信号。
C5402利用多通道缓冲串行口(Multichannel Buffered Serial Port,McBSP)和TLC320AD50连接。TLC320AD50工作在主机模式下,它提供与C5402进行串行通信的8kHz的帧同步信号FS#和8.192MHz的移位时钟信号SCLK。C5402的BFS和BCLK设为输入状态。TLC320AD50每125ns输出1帧16位的数据,并以DMA方式与C5402交换数据,以减少CPU资源的占有。
2.2 压缩编解码算法
压缩编码方式的标准由ITU-T统一制定,分为波形编码和参数编码二类。常用的波形编码标准有G.711和G.726,其中G.711是PSTN电话网广为使用的64Kbps的PCM编码,G.726采用32Kbps的ADPCM方式。常用的参数编码标准有G.728、G.729、G.729A和G.723.1。本文采用的是G.723.1标准,它是H.323协议标准缺省的语音编码方式。
G.723.1是目前分组语音通信中常用的压缩比最高的编码方式。它使用双速率LPAS声码器,其低速率采用代数码本激励线性预测(ACELP),编码速率为5.3Kbps,高速率(6.3Kbps)采用多脉冲最大似然量化(MP-MLQ)激励。G.723.1标准基于码激励线性预测(Code Excited Linear Prediction,CELP)编码模型对语音进行编码。线性预测采用前馈型前向自适应,并使用预视。其输入数据是经 8kHz采样的16位线性 PCM语音信号,帧长为30ms(240个样点),分为4个子帧,即每个子帧含有60个抽样信号,预视7.5ms。编码端对原始语音进行分析,提取出CELP参数(LSP参数、码本索引和增益等),并将这些参数编码传输。在解码端,再用这些参数构造激励信号和合成滤波器,将激励信号通过合成滤波器重建语音信号。G.723.1需要40MIPS以上的DSP才能保证语音编解码的质量。C5402运算能力可以达到100MIPS,完全可满足系统要求。
3 以太网接口模块设计
该模块由主控DSP直接控制以太网接口芯片,进行IP语音数据包的收发。以太网驱动芯片采用的是RTL8019AS,它是台湾Realtek公司生产的一款兼容NE2000的8/16位网卡适配器,支持ISA总线结构。由于其性能优良,价格低廉,因此在10Mbps网卡市场中占有相当大的份额。RTL8019AS有16KB的RAM用于数据收发缓存,分成64页,每页256B,每页存储1帧以太网数据包。它内部有4页寄存器,对应着偏移量为0x00~0x0F的16个输入/输出地址,控制器通过读写这些寄存器,控制数据的收发。此外,0x10~0x17是远程DMA读写端口地址,0x18~0x1F是复位端口地址。RTL8019AS中主要的寄存器如下。
CR:控制以太网驱动器操作,同时用于选择寄存器页。
PSTART:接收缓冲区的起始页地址。
PSTOP:接收缓冲区的结束页地址。
TPSR:发送缓冲区的起始页地址。
BNRY:指向最后一个已读取页地址。
CURR:指向当前的接收页地址。
ISR:中断状态寄存器。
RCR:接收参数配置。
TCR:发送参数配置。
DCR:数据参数配置。
IMR:中断屏蔽寄存器。
RSAR0、RSAR1:远程DMA起始地址。
RBCR0、RBCR1:远程DMA字节计数器。
PAR0~PAR5:设置本地MAC地址。
MAR0~MAR7:用于设置多点播送的参数。
3.1 模块硬件设计
主控C5402的I/O资源丰富,可以很容易地将RTL8019AS映射为它的I/O空间。DSP与RTL8019AS的硬件连接如图3所示。RTL8019AS的I/O电压为5V,而DSP的I/O电压是3.3V,二者连接时需要转换电平。本设计选用SN74LVTH16244作为地址总线缓冲器,选用SN74LVTH16245双向总线收发器作为数据总线缓冲器。
DSP采用查询方式和RTL8019AS通信。DSP的XF为RTL8019AS提供硬件复位脉冲,通过A4~A0共5根地址线来访问RTL8019AS的0x00~0x1F寄存器和端口空间,以太网驱动器的基地址由A19~A5确定,其值是0x300。RTL8019AS的读写控制信号由DSP的IOSTRB#、R/W#及A15通过图中所示的逻辑提供。很显然,RTL8019AS被映射到了DSP低32K字的I/O空间。
3.2 模块软件设计
模块采用以太网的封装格式协议(兼容IEEE802.3)、IP协议和UDP协议作为系统的通信协议。该部分软件包括2部分:以太网驱动器的初始化和收发数据处理。
RTL8019AS硬件或软件复位后即进行初始化工作,包括设置接收缓冲区和发送缓冲区,设置本地MAC地址,配置接收参数、发送参数和数据参数,给写入页指针和读取页指针赋初值,清除中断状态位等。
数据发送前,要将语音数据封装成以太网帧,就是在语音数据前依次加上UDP包头、IP包头和以太网包头;对接收到的数据包,要用相反的过程解包,依次去掉各种包头后,取出语音数据。
以太网接口模块数据收发软件流程如图4所示。发送时,DSP首先将语音数据封装打包,然后用远程DMA方式写入RTL8019AS的发送缓冲区,并将数据包传到网上。接收时,通过查询ISR确定是否收到数据,如果收到,则以远程DMA方式逐页读出接收缓冲区中的数据帧,并去掉包头,恢复出语音数据。每读1帧,将BNRY指向下一页缓冲区,如此反复,直到读出RTL8019AS接收缓冲区中的所有数据帧。
4 系统集成和测试
对上述2个模块测试成功后,要将这2个模块集成为1个端机系统,实现局域网环境下点到点的实时双向分组语音通信。
主从DSP的硬件连接如图5所示。主控DSP与语音处理模块DSP通过8位增强型HPI接口(Host-Port Interface)进行通信。C5402的HPI由1个8位数据总线和一组控制信号组成,通过HPI地址寄存器(HPIA)、HPI数据寄存器(HPID)、HPI控制寄存器(HPIC)和主机建立通信连接。
主控DSP的A1、A2与HPI寄存器选择信号HCNTL0,1相连。当A2A1=00b时,选择HPIC寄存器;当A2A1=01b时,选择HPIA寄存器;当A2A1=10b时,选择HPID寄存器,且每次读写时HPIA加1;当A2A1=11b时,选择HPID寄存器,读写不影响HPIA。主控DSP的A0用于选择通信的高或低字节;IOSTRB#、A15、IS#按照图示的逻辑关系组成数据传输的片选,此时从DSP位于主DSP高32K字的I/O空间,避开了RTL8019AS的空间;HR/W#和主DSP的R/W#直接连接;HINT#和HRDY用于向主DSP的发送中断请求和准备好状态信号。
语音处理模块的DSP按照G.723.1进行压缩编码,每30ms生成1帧语音数据,放入编码缓存区,产生1次HPI中断。主DSP得到该中断请求后,先将接收到的语音数据帧通过HPI口写入从DSP的解码缓存区供其解码,然后主DSP将从DSP编码缓存区中待发送的数据读出,封装后发送到网上。从DSP在30ms的时间间隔内,一方面要压缩编码TLC320AD50传输过来的语音数据,另一方面要将主机送来的数据进行扩展解码,然后送给TLC320AD50,恢复出模拟的语音信号。
经过实验测试,语音处理模块和以太网接口模块协调工作,在局域网上2台终端通信的话音质量良好,达到了预期的效果。
5 结束语
本文采用2块C5402 DSP作为系统核心,加上CODEC和NIC等外围电路,实现了局域网上的IP分组语音通信,是一个全新的VOIP解决方案。笔者认为,采用更高运算能力的DSP,有望实现单DSP方案的分组语音通信。
参考文献
1 Texas Instruments.TMS320VC54x DSP Reference Set.1999
2 Realtek.RTL8019AS Datasheet.2000
3 张雄伟,曹铁勇.DSP 芯片的原理与开发应用(第2版).北京:电子工业出版社,2000
4 糜正琨.IP网络电话技术.北京:人民邮电出版社,2000