微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ITU-TG.729算法及其实时实现

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

时间:12-22 来源:互联网 点击:

信号处理芯片上实现一些浮点算法时,为了使运算速度加快,往往要针对定点芯片的特点,用定点数来表示浮点数。虽然速度提高了,但是很可能导致运算精度不够。

·有限计算资源的利用。ADSP2181只有33MIPS,而且不能使所有的MIPS都用来实现G.729的编解码功能。

·DSP高速运行时,DSP与主机的数据交互。

·语音信号和编解码缓冲区的维护。这些缓冲区至少都有两者要去存储,如语音信号缓冲区, 一方面语音编码模块要调用,另一方面采集中断程序也要调用它。而在语音编码模块调用的过程中,该缓冲区不应该被其它模块所改变,所以中断程序不应该此时去存储这个缓冲区,这就存在着矛盾。

2.1 软件设计

软件设计主要包括三个部分。

· 命令解释器

命令解释器主要是用于解释主CPU发来的各种命令,如发送或接收编解码数据、查询编解码状态以及启动、停止编解码操作等。该模块不直接与主CPU打交道,而是通过接口功能模块,间接实现与主CPU的数据信息交换。

· G.729数据引擎

我们在ADSP-2181上完成了G.729的实时编/解码工作。

ADSP-2181不仅包含了ADSP-2100系列的基本结构(三个运算单元、数据地址发生器和一个程序序列器),还含有两个串行口、一个16位的内部IDMA口,一个8位的BMDA口、一个可编程定时器、标志输入输出(Flag I/O、外部中断能力以及片内程序和数据存储器等周边设备。ADSP-2181片内集成了共80K字节的存储器,它们分别是16K字(24bit)程序存储器和16k字(16bit)的数据存储器,大量的片内存储器使得复杂的G.729编解码算法能够全部放入ADSP-2181片内,无须增加任何的片外RAM,简化了硬件设计和接口。

· 接口功能模块

该模块实现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的数据交互。

语音信号和编解码缓冲区的维护。本系统的数据交互都是采用双缓冲的工作方式。双缓冲的好处在于数

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top