G729A语音编码TMS320VC5416DSP实时实现_第1页
G729A语音编码TMS320VC5416DSP实时实现_第2页
G729A语音编码TMS320VC5416DSP实时实现_第3页
G729A语音编码TMS320VC5416DSP实时实现_第4页
G729A语音编码TMS320VC5416DSP实时实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、G.729A 语音编码 TMS320VC5416 DSP 实时实现G.729A语音编码TMS320VC5416 DSP实时实现类别:单片机/DSP  来源:世界电子元器件 作者:崔慧娟  概述  近二十年来,全球半导体产业的飞速发展带动相关的软件、硬件设计达到新的水平,使得很多比较复杂 的数字信号处理算法可以实时实现并且得到广泛应用。突出的代表就是数字信 号处理器(DSP)与语音信号压缩编码算法相结合,并且在日常通信系统中得到 广泛应用,例如数字移动电话、IP电话等。随着网络通信的发展、微处理器和 信号处理专用芯片的发展,也为语音处理技术的应用提供了更加广阔的平台。 所

2、有这些因素都促进了对更加有效、可靠、高质量的语音编码系统的需要,从 而促进了语音编码技术的持续发展。在最近一些年内,语音压缩编码技术有了 很大的发展。最早的标准化语音编码标准是70年代CCITT公布的G.711 64kb/s脉冲编码调制PCM。此后ITU又先后公布了 G.721 32kb/s自适应差分编 码(ADPCM)、G.728 16kb/s短延时码本激励线性预测编码(LD-CELP)。此外 还有一些政府和组织制定的语音标准,例如用于西欧数字移动通信的 13kb/s 具 有长时预测规则码激励(RPE-LPT)的线性预测方案,北美数字移动通信标准 8kb/s矢量和激励线性预测(VSELP)方

3、案等。1999年欧洲通信标准协会(ETSI)推出了基于码激励线性预测编码(CELP)的第三代移动通信语音编码 标准自适应多速率语音编码器(AMR),其中最低速率为4.75kb/s,达到通信 质量。1995年ITU公布G.723.1,编码算法有两种,5.3kb/s的ACELP和 6.3kb/s的MPMLQ算法,主要用于IP电话。1996年ITU公布了 G.728 8kb/s 的CSACELP算法,可以用于IP电话、卫星通信、语音存储等多个领域。目 前,ITU正在致力于制定4kb/s的语音编码国际标准,该算法将达到长途质 量。针对一些特殊应用,如保密通信、军用通信、应急通信等,许多国际组 织、国家

4、也研制了各种不同速率的语音压缩编码速率,例如美国政府为保密通 信用开发的2.4和1.2kb/s MELP算法。我国近几年也研制了 0.6、1.2、 2.4kb/s 及其它速率语音压缩编码算法,达到并且超过了国外同速率编码的质 量。 DSP 在近 20 年内一直在高速发展,运算能力不断提高,片上资源和接口更加丰富,而单位运算所需功耗不断降低。下面给出几个 主要厂家的 DSP 产品。 TI 的 DSP 主要有四大系列: C5000 系列(定点,低功耗):适合  个人与便携上网及无线通信应用。 80400MIPS。 C2000 系列(定点,控制器):针对 &n

5、bsp控制进行优化的DSP。 C6000系列(高性能):适合宽带   网络和数字影像应用。  OMAP 系列(双核芯片):适合低   功耗 移动设备和多媒体 PDA。 ADI 的 DSP 主要有四大系列: 21xx 系列:16 定点 DSP,内部 REM 大,外围接口多,适合作为控制类芯片使用。 SHARC 系列: 32 位浮点 DSP, 21160 21161 提供与大内存容量结合的简单浮点算法,具 有高水平的浮点性能。 TigerSHARC 系列:比 SHARC具  有更高的浮点运算功能 TS101,TS201

6、 Blackfin 系列:高性能 16 位 DSP   信号处理与通用微控制器易使用的性能结合。 Motolora 的DSP: DSP56800,16BIT 定点 DSP,通用型DSP。 DSP563XX,24bit 定点 DSP, 通用型DSP。  本文将介绍使用 TI 公司 C5000 系列实现 ITU-TG.729A 8kb/s CS-ACELP 语音压缩编码算法,并对 TI 公司的 TMS320C54x 系列 DSPITU-T G.729A 语音编码算法做简单介绍,以及软件编程、调试和实现结果。  图 1 C54xDSP 结构框图

7、(略) TMS320 C54x 系列 DSP 芯片简介及硬件设计 TMS320 C54x 系列 DSP 芯片是使用静态 CMOS 技术制造的。其方框图见图 1,从图中可以看出 C54x 系列 DSP 芯片具有以下功能单 元:  总线 C54x 共有八条总线分别是: PB: 程序读取总线  CB: 数据读取总线1  DB: 数据读取总线 2  EB: 数据写入总线 PAB: 程序读取地址总线 CAB: 数据读取地址总线1  DAB: 数据读取地址总线 2 EAB: 数据写入地址总线 中央处理器

8、(CPU) CPU由以下几个部件组成:  先进的多总线结构: 包括三个独立的数据总线和一个程序总线 40 位的算术逻辑单元: 包括一个 40 位移位器和两个独立的 40 位累加器 17bit 17bit的并行乘法器同一个专用的加法器相配合: 用来执行不经流水线的单周期乘加(MAC)运算 指数译码器:可以在一个周期里计算出一个 40 位累加器的指数值  两个地址生成器: 包括 8 个辅助寄存器和两个辅助寄存器算术单元  程序控制器: 对指令进行解码、管理流水线和程序流程  片上存储器 C54x共有192K字的寻址能力(64K

9、字的程序区,64K字的数据区,和 64K 字的 I/O 区)。  表 1 给出了部分C54x 芯片的片上资源、运算能力、工作电压等。运算能力用 MIPS 来度量,即 每秒能执行一百万条指令的数量。 片上其它资源 C54x 系列中不同产品具有不同的片上外设配置。这些外设有:  软件可编程的等待状态发生器  可编程的库转换  片上锁相环时钟发生器(包括一个内部振荡器或一个外部时钟源)  一个 16 比特定时器  通用输入输出管脚  同步串行口  异步串行口 C54x 系列 DSP 芯片具有以下主要特点:&nbs

10、p 采用改进哈佛结构,对程序内存和数据内存使用分  先进的CPU设计和为应用设计的硬件逻辑提高了芯片   为快速的后续发展设计的模块化结 先进的IC处理技术提供了高性 能和低功 采用5V或3V静态CMOS技术 可以进一步 Power-down 模式可以进一步降   低 能源消耗控制:使用IDLE1, IDLE2,和IDLE3指令进入Power-down模式 使用CLKOUT-off控制来禁止CLKOUT信号  高度专门的指令结构提供了快速运算和优化的高阶语言操作  单指令循环和块指令循环功能

11、 块内存移动指令提供了更好的程序和数据管理 32 位操作数指令  拥有两个或三个操作数读取能力的指令  可以并行存储和并行读取的算术指令  条件存储指令  从中断快速返回的指令 拥有多种片上外设和内存配置方案 40 位算术运算器(ALU) l7bit 17bit单周期并行乘法器  六级流水线操作提高程序执行效率 支持比特倒置寻址方式和循环寻址方式。 对于语音压缩编码,通常所需要的DSP运算能力不会超过50个MIPS,程序和数据所占用的容量大约几十K字,AD/DA的精度保持 就可以满足使用要求,语音输入输出、

12、信码输入输出各需要一个双向串口。但 考虑在通信领域中应用,往往一片DSP不仅要实现语音压缩编解码,还需要实 现自适应回声抵消、加解密、信道编解码,甚至基带调制解调算法等。因此我们选用了 TMS320VL5416设计硬件平台。AD/DA芯片采用TI公司的TLV320AIC10,它是德州仪器公司(TI)推出的一款通用型低功耗16位A/D、 D/A音频接口芯片,适用于语音以及宽带音频处理。采用3.3V或5V供电,片 内集成了 FIR滤波器,可以达到最高88KHz的采样频率,集成了输入放大器和 输出放大器,支持多路芯片串连,提供低功耗、ADC与DAC单独三种工作模 式。TLV320AIC10的数字接口

13、采用同步串口方式,可以非常方便的与DSP同步 串口( McBSP)相连。FLASH采用SST39VF800A芯片,该芯片有512K 16容量, 可以将多种应用程序固化在该芯片中。开机后DSP的加载程序自动将FLASH中 的程序拷贝到DSP片上RAM中,以便能够全速运行程序,充分发挥DSP的处理 能力。 ITU-T G.729 8kb/s CSACELP 简介 国际电信联盟(ITU-T)于1995年11月正式通过了G.729。ITU-T建议G.729也被称作“共轭结构代数码本激励线性预测编码方 案”(CS-ACELP),它是当前较新的一种语音压缩标准。96年ITU-T又制定了 G

14、.729的简化方案G.729A,主要降低了计算的复杂度以便于实时实现,因此目 前使用的都是G.729A。 G.729是由美国、法国、日本和加拿大的几家著名国际电信实体联合开发的。它需要符合一些严格的要求,比 如在良好的信道条件下要达到长话质量,在有随机比特误码、发生帧丢失和多 次转接等情况下要有很好的稳健性等。这种语音压缩算法可以应用在很广泛的 领域中,包括IP电话、无线通信、数字卫星系统和数字专用线 路。 G.729 算法采用“共轭结构代数码本激励线性预测编码方案”(CS-ACELP)算法。这种算法综合了波形编码和参数编码的优点,以自适应预测编码技术为基础,采用了矢量量化、合

15、成分析和感觉加权等技 术。   图 1 G.729A 编码器原理 图  编码器(图 1 )对 10ms 长的语音帧进行处理,每帧分为两个子帧。输入语音首先要在预处理模块中经过高通滤波和幅度压缩变换, 以去除低频干扰及防止在后面运算中出现溢出。每帧进行一次线性预测(LP) 分析,并将LPC参数转换到线谱,对(LSP)形式进行预测式二阶段矢量量化(VQ)。然后使用分析合成法,按照合成信号和原始信号间感觉加权失真最小 的准则来提取激励参数。激励参数(包括固定码本和自适应码本参数)要每子 帧(5ms)计算一次。每帧要利用感觉加权语音进行一次开环整数基值基音延时 估计,然后进行闭环的分数

16、值基音分析,确定自适应码本的延时和增益,下面 再进行固定码本的搜索。固定码本是使用交织单脉冲排列设计的代数码本。在 搜索时使用迭代式深度优先树型搜索算法。这种算法的运算量比较小,并且具 有固定的运算复杂度,比较有利于使用硬件实现。自适应码本和固定码本的增 益使用预测式二阶段共轭结构码本进行矢量量化。  图 2 G.729A 解码器原理图  图2 给出了解码算法的框图。首先要从接收到的码流中提取 LSP 系数和两个分数基音延时、两个固定码本矢量以及两套自适应码本 和固定码本增益等参数。然后,对LSP参数进行插值,并转换到线性预测滤波 器系数的形式。接下来,将自适应码本和固定码本矢

17、量分别乘以各自的增益再 相加,得到激励信号。激励信号通过LPC综合滤波器后,就得到了合成语音信 号。最后还要对合成语音信号进行后处理,以提高合成语音的质量。  程序的编制及调试  程序编制 DSP开发工具一般都提供C编译器,可以直接将写好的C语言程序转换成DSP汇编语言程序,但效率非常低。G.729A算法C语言程 序用编译器转成汇编语言程序运行所需要的运算量超过2000个MIPS (每秒百 万条指令),根本无法实时运行,因此必须手工编写汇编程序。 由于编解码的程序规模很大,又是在DSP的汇编语言级别上实现,因此保持原定点C语言程序所具有的模块化、结构化的特点对

18、于汇编程序的编写、检查、调试和阅读都是非常有利的。所以在编程时尽量保持DSP程序与C语言程序在流程上的一致,具体是使DSP程序与C程序之间保 持函数一一对应关系,保持循环、分支等结构的一一对应。只有为了避免使 DSP 程序产生过大的不必要开销时,才对结构进行一定的修改,但仍然要保持 程序的模块化和结构化。由于C程序的结构清晰,所以要想作到这一点并不困 难,只要为C程序中的if、else、for、while等结构设计出相应的结构化的 DSP汇编程序结构,在编程时按照这种固定对应关系对C语言程序进行转换就 可以了。  程序的调试  程序的调试也是一项很费时的工作。ITU-T针对G.

19、729A提供了 8组测试码,只要通过了这 8组测试码,就可以认为程序基本正确了,这8组测试码分别针对程序中的不同位置而设定如下: algthm - 算法中的条件部 algthm.in 的第一帧边编程边调试,也就是每编好一个函数,就将 algthm.in 的第一帧通过该函数后的输出数据和 C 语言的相应输出数据相比较,并针对出 现的错误修改函数内容,由于对刚编完的函数进行调试,对函数结构和指令记 忆会比较清晰。这样,当编码器完成后,algthm.in的第一帧也就基本通过 了。然后再继续调试第二帧,当第二帧也通过后,程序中所剩的错误也就不多 了。等到通过了第 10 帧,就可以开始大规模地进

20、行仿真了。对于解码部分,由 于程序比较短,就采用了先把全部程序编完,再进行调试的方分索查索程 erasure - 帧删除恢复 分索查索程 erasure - 帧删除恢复  lsp -LSP 系数量化  parity -奇偶校验  speech -一般语音文件 fixed -固定码本搜  overflow -合成器中的溢出检  pitch -基音周期搜 tame -训练过 采用的调试步骤是首先针对测试码中最短的法。  程序的优化  编码模块与解码模块是按照G.729编解码器的C语言定点源程序改写的,虽

21、然定点的C语言程 序已经为DSP的实现作了一定的优化,但为在一个DSP芯片上实现尽量多路的 编解码,必须根据C54x芯片的功能和特点对程序进行一定的优化。在编写DSP 程序时,要想提高运行效率,就要充分利用C54x DSP芯片具有的各种硬件资 源,并适当地对程序结构进行一定调整,采用的主要方法有以下几种:  充分利用各种延时 C54x 芯片指令中的跳转、循环、调用子函数等指令都有延时的格式如 BD, BCD, RPTD,RPTBD,CALLD,CCD,RETD,RCD等,这些指令允许利用他 们执行过程中的等待周期预先执行一两条其他指令,适当调整程序结构就可以 充分利用这些等待周

22、期,从而提高程序执行速度。  充分利用块指令循环功能 C54x DSP 芯片还提供了块指令循环功能,此功能可以大大地提高执行循环的速度,但是此功能只能在一重循环中 使用,因为它只提供了一个循环记数寄存器BRC,所以在遇到多重循环时就要 尽量把这个功能用在最里层的循环中,最里层循环是执行次数最多的循 环。  利用 DSP 芯片提供的各种寄存器  适当地利用各种寄存器也能显著地提高程序的执行速度。特别是当一个函数在程序中被频繁地调用,它的赋值可以减少执行时钟周 期。  利用指令中的移位功能 C54xDSP 在做赋值和数值运算之前可以自动对操作数进行一

23、定位数的移位,这样就 可以将移位运算和其它运算结合到一条指令中。另外,利用这种移位功能可以 代替一些乘数为 2 的幂乘法,虽然有这样的限制,但是在许多滤波器和函数中 确实有这样的运算,带立即数的乘法需要两个指令周期,而移位只需一个指令 周期,并且如果条件允许还可以将其结合到其它指令中,从而大大节省运算 量。  利用 DELAY 指令进行赋值操作  另外,在程序中有大量的赋值操作,即将一个内存变量的值赋给另一个内存变量。特别是在搜索码本的时候有大量的赋值操作,并 且赋值的两个变量是固定的。一般的方法是将第一个变量读入到累加器或寄存 器 TREG 中,再将累加器的值赋到第二个变量中。此过程要用两条单周期指令。 C54x提供了一个移动缓冲区的指令DELAY,可以在一个指令周期内将内存单元 的值复制到它后面的相邻的内存单元内。虽然DELAY指令一般是用来移动缓冲 区的,但只要在给变量分配内存时将需要赋值的变量相邻分配,就可以在一个 指令周期内完成赋值操作。 利用寄存器代替某些临时变量  程序中往往有很多的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论