新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ITU-TG.729算法及其实时实现

ITU-TG.729算法及其实时实现

作者:时间:2010-12-22来源:网络收藏

· 接口功能模块

该模块ADSP-2181与主CPU的数据实际交换工作。该模块包括DSP的主控程序和数据传输两部分。DSP的主控程序主要负责不断将采集到的语音数据分帧,送入编码器,并将接收到的码流分类后送入解码器模块。数据传输部分负责采集数据和与主CPU的数据交换。

2.2 硬件设计

本系统考虑了各CPU之间的数据交换与协调等问题。ADSP2181具有一个16位的IDMA

口,在处理器全速运行的情况下,ADSP-2181可以自动完成IDMA口的接收和发送数据,这为系统的设计带来了很大的便利。利用ADSP-2181的这个性质,我们通过IDMA口来ADSP-2181与主CPU的数据交互。

我们设计了ADSP-2181与PC机ISA总线接口的主从系统。在这个主从系统中,PC机为主CPU,ADSP-2181为从CPU。在启动时,由PC机通过IDMA口将程序装载入ADSP-2181内部存储器中。在ADSP-2181全速运行时,主机可以查询从机的运行状态、读取压缩后的G.729码流,也可以送入待解码的G.729码流等。

在该主从系统中,PC机通过ADSP-2181的IDMA口来读写它的内部存储器。PC总线通过GAL译码,形成,,,,IACK信号,与ADSP-2181的IDMA口连接,这样就了在ADSP-2181全速运行的情况下,PC机仍能访问到ADSP-2181内部存储器。

图3是主从系统中的ADSP-2181功能与接口的框图。语音信号由ADSP1847采集,通过ADSP-2181的串口0送入到ADSP-2181进行编码。编码数据通过IDMA口送到主机进行存储。需要解码的数据从主机由IDMA口送到ADSP-2181进行解码,解码后获得的语音信号通过串口0送至ADSP1847。

2.3 难点的解决

数据在DSP中的安排。维护好一张变量表,每次进入一个模块时,首先使用已经分配但暂时不用的变量。只在不够的情形下,再去分配额外的变量,同时将这些新分配的变量计入到变量表中,供其它模块使用。另外维护好一个局部变量堆栈,使得各个模块的内部局部变量分配在堆栈中,当从该模块退出时,就从堆栈中弹出这些局部变量,释放空间。

数据精度的处理。对精度要求比较高的地方,将计算的中间变量采用32位来表示,运算结束后,再转换成16位表示,这样指令条数增加不多,但精度却大大提高了。在某些精度要求比较高的模块,采用尾数和指数来表示浮点数,自己编写一套指数和尾数的运算库,由于尾数和指数表示法有足够大的精度范围,完全满足要求。但只能在少许地方采用这种方法,否则运算量就会上去,给实现带来困难。

有限计算资源的利用。利用ADSP强大的多功能指令可以非常好地利用有限计算资源。

DSJP高速运行时,DSP与主机的数据交互。由于ADSP-2181具有一个16位的IDMA口,在处理器全速运行的情况下,ADSP-2181可以自动完成IDMA口的接收和发送数据,这为系统的设计带来了很大的便利。利用ADSP-2181的这个性质,我们通过IDMA口来实现ADSP-2181与主CPU的数据交互。

语音信号和编解码缓冲区的维护。本系统的数据交互都是采用双缓冲的工作方式。双缓冲的好处在于数据的交互不会影响到其他工作的正常进行。

本系统的数据采集与播放采用双缓冲的工作方式。采集时采用cod-ad和cod-work两个缓冲区,播放时采用decod-work和decod-work两个缓冲区。cod-ad用于ADSP-2181的串口数据采集,cod-work用于ADSP-2181的编码。当cod-ad采完一帧数据后与cod-work互换。decod-work用于ADSP-2181的串口数据播放,decod-work用于ADSP-2181的解码。当播放完一帧数据后,decod-ad与decod-work互换。采集与播放程序放在ADSP-2181的中断服务程序中。本系统只开放ADSP-2181的接收中断,ADSP-2181每接收一个数据,同时就播放一个数据。

另外G.729的编码器的编码数据和解码器的解码数据都有两个缓冲区,缓冲区的工作原理与数据采集和播放的双缓冲区的工作原理相同。

综上所述,ITU-T的G.729协议是一个ITU-T的8Kbps语音编解码协议,它具有高音质和低延时的特点。软件设计主要包括三个部分:命令解释器、G.729数据引擎、接口功能模块。我们用ADSP-2181实现了G.729协议,在ADSP-2181的数据采集/播放和ADSP-2181与主CPU接口的数据交互方面都采用了双缓冲方式。硬件设计主要是通过ADSP-2181的IDMA口,来实现主CPU与ADSP-2181的数据交互。

针对实现G.729的一些难点,我们提出了一系列解决的方法,通过这些解决方法,我们已经在Analog Device的定点数字处理芯片ADSP-2181上实时实现了符合ITU-T G.729的全部功能,并且已经通过了ITU-T G.729的全部测试矢量。该编解码器已经在数字语音记录仪和H.323网上多媒体通信系统中推广应用。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭