文摘:本文详细描述了在TI(TexasInstruments)C55x系列DSP平台上集成实时实现0.3kbps至16kbps多种速率语音编解码算法的方法,及在现有C语言源代码基础上优化汇编指令的技巧。介绍了在编写C55x系列DSP汇编程序中的关键技术,诸如函数调用中的参数传递,指令优化,标志位设置,宏使用等。文章同时给出了一种采用TIC55x系列DSP设计实现的能运行多种语音编解码算法硬件系统平台。最后介绍了该硬一体电感件平台的动态调整功耗设计,使系统的功耗在休眠状态下最低仅为155.1mW。
Abstract:This paper detailed describes how to implement the real time multi-rate speech encoding and decoding algorithms between 0.3kbps to 16kbps on TI (Texas Instruments) C55x series DSP platform, and introduces methods of optimizing assembly language instructions based on the original C language source code. We introduce the key techniques during writing assembly programs like parameter transferring during function calling; instruction optimizing; status bits setting an一体电感器d macro application. The paper also design a hardware platform for general speech encoding and decoding based on C55x series DSP of TI Company. At last, the adaptive power design of the platform is presented, which reduce power of the system down to 155.1mW when in sleep running mode.
Keyword: Speech Coding; C5插件电感器5x; Assembly language
近二十年来,全球半导体产业的飞速发展带动相关的软件、硬件设计水平迅速提高,这些发展使得一大批性能优良的复杂的数字信号处理算法可以实时实现并在日常通信系统中得到广泛应用,极大地提高了现有通信系统的可靠性和效率。因此,研究语音处理技术并将其用基于DSP芯片硬件系统实现有着非常重要的现实意义和广阔的市场前景。本文介绍了语音编解码硬件平台的设计思路和编解码算法在硬件平台上的实现和优化过程,同时给出了硬件平台结构和低功耗设计思路。
1 平台中语音编解码算法简述
本文在TI C55x系列DSP上实现了0.3kbps至16kbps的多种不同速率的语音编解码算法。其中16kps速率采用连续可变增量调制(CVSD)的波形编码算法,8kps速率采用了ITU-T公布的G.729a标准算法。而低速率编解码采用了正弦激励线性预测(SELP)算法。SELP算法是建立在传统的线性预测模型的基础上,其中清音成分用白噪声拟合,浊音成分在每个谐波处用一个频率变化的正弦信号合成,整个激励的浊音部分由一组不同幅度的正弦叠加而成,这也是SELP模型不同于传统的线性预测的一个非常的重要方面,即激励信号采用分带混合正弦激励。
2 语音编解码算法在DSP数字处理芯片上的实现和优化
由于在DSP上运行的声码器必须要达到实时化的要求,而直接编译的C程序远无法达到。因此需要编写和优化C55x的汇编代码来提高声码器的运行效率。下面介绍几点在算法硬件实现过程中的关键技术:
2.1 C程序和汇编程序的混编,函数的调用和参数传递
把一个模块改写为汇编函数,然后在C程序或者汇编程序中调用它。在C55x的开发中,函数的调用机制是这样的:首先记录下函数传递来的参数,和返回地址SP向低位移。然后再在堆栈中开出本地变量常量所需要的空间,SP再次向低位移。
(1)汇编函数的声明:在汇编函数中定义的函数如果要想在C代码中被调用,必须用.global语句加以声明,这样,对象或函数被定义为外部的(external)。比如:
.global _Rem_Dc电感器材料
_Rem_Dc:
……
(2)参数传递:在函数调用的过程中,C代码传来的参数按照以下规则存放在特定的寄存器中:即16或23位的数据指针,先后存放在(X)AR0-(X)AR4中。16位的数据,先后存放在T0,T1,AR0-AR4中,32位的数据,先后存放在AC0,AC1和AC2中。如果参数个数超过寄存器个数,则存放在堆栈中。同时,函数的返回值如果是短整型(short)则存放在T0中,如果是长整型(long)则存放在AC0中,如果是指针则存放在(X)AR0中。
例如:
①int fn(int i1, long l2, int *p3);
则fn->T0; il->T0, l2->AC0, p3->AR0
②long fn(int *p1, int i2, int i3, int i4);
则fn->AC0, p1->AR0, i2->T0, i3->T1, i4->AR1
③void fn(long l1, long l2, long l3, long l4, int i5);
则l1->AC0, l2->AC1, l3->AC2, l4->堆栈, i5->T0
④void fn(long l1, long l2, long l3, int *p4, int *p5, int *p6, int *p7, int *p8, int i9, int i10);
则l1->AC0,l2->AC1,l3->AC2,p4->AR
压电陶瓷变压器在开关电源的应用分析摘要:介绍了压电陶瓷变压器的原理,等效电路及特点。在此基础上,重点对应用压电陶瓷变压器的开关电源主电路,控制电路特点进行了分析,并简单介绍了压电陶瓷变压器目前在不同产品的开关电源中的实际应用。关键词:
PIC16C78系列混合信号嵌入式芯片的原理和应用在对嵌入式系统的体积、耗电、集成度等指标要求越来越高的今天,仅仅有带AD变换电路的MCU已经越来越难以处理外围的其他模拟电路。据此,相继有一些MCU制造商推出了混合了模拟电路的MCU,为设计者提供了新
通信开关电源的EMC全面剖析 现代通信,电子、电气设备的正常工作都离不开电源。通信电源在通信设备中具有不可比拟的重要地位。随着通信事业的飞速发展,手机、电话、电脑等 通信工具走人人们的生活,已经