当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]本文详细描述了在TI (Texas Instruments) C55x系列DSP平台上集成实时实现0.3kbps至16kbps多种速率语音编解码算法的方法,及在现有C语言源代码基础上优化汇编指令的技巧。介绍了在编写C55x系列DSP汇编程序中的关键技术,诸如函数调用中的参数传递,指令优化,标志位设置,宏使用等。文章同时给出了一种采用TI C55x系列DSP设计实现的能运行多种语音编解码算法硬件系统平台。最后介绍了该硬件平台的动态调整功耗设计,使系统的功耗在休眠状态下最低仅为155.1mW。

近二十年来,全球半导体产业的飞速发展带动相关的软件、硬件设计水平迅速提高,这些发展使得一大批性能优良的复杂的数字信号处理算法可以实时实现并在日常通信系统中得到广泛应用,极大地提高了现有通信系统的可靠性和效率。因此,研究语音处理技术并将其用基于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->AR0,p5->AR1, p6->AR2, p7->AR3, p8->AR4, i9->T0,i10->T1

2.2 标志位的设置

标志位是DSP芯片在计算时设置一些位置。它们存放在ST0_55~ST3_55中,在运算中主要用到的几个有:

FRCT,当其值等于1时,乘法运算的结果将左移一位。等于零时,运算结果不变。

SATD,当其值等于1时,运算发生溢出时作饱和处理

SXMD,当其值等于1时,输入操作数有符号扩展

SMUL,当其值等于1时,饱和模式开

他们分别存储在ST1_55和ST3_55寄存器的位置如图1所示:

图1 C55x DSP关键标志位在寄存器中的位置

这几个操作位的设置不对的话,会出现运算结果的错误。所以要根据程序的需要正确设置操作位,同时要在程序的前后保护和还原其初值。

psh *(ST1_55)

psh *(ST3_55)

……

pop *(ST3_55)

pop *(ST1_55)

3 语音编解码硬件平台简述

本文设计的多模式语音编解码系统基于C55x系列DSP和MCU的双处理器设计,主芯片采用了TI公司的TMS320VC5510A数字信号处理器。其时钟周期最高为200MHz。拥有160KWord片上RAM(其中包括8块4KWord的DARAM和32块4KWord的SARAM)、16KWord片上ROM、8MWord的最大扩展寻址能力。微控制器(MCU)选用TI公司的MSP430F149,主要完成系统启动,电源管理,状态监控,DSP程序加载,声码器二进制码流位置重排等功能,并和DSP配合实现系统级加密机制。另外,硬件平台的音频编解码芯片选用TLV320AIC10,而程序存储部分采用的是SST39VF160 Flash,容量为1MWord,用来储存程序和数据。本硬件平台的框架结构图如图2所示。

图2 多速率语音编解码系统硬件平台框架结构图

4 低功耗设计

在数字集成电路设计中,CMOS电路的静态功耗很低,与其动态功耗相比基本可以忽略不计,故暂不考虑。其动态功耗计算公式为:

(1)

式中Pd为CMOS芯片的动态功耗;CT为CMOS芯片的负载电容;V为CMOS芯片的工作电压;f为CMOS芯片的工作频率。本硬件平台的低功耗设计从选用有可变电压和多电压的器件、动态功耗管理、动态频率控制三个方面入手。

4.1 选用有可变电压和多电压的器件

首先在文中的系统中,选用的单片机芯片TI公司的MSP430系列MCU是一款功耗相当低的器件,供电电压1.8V~3.6V,运行模式下功耗280μA/MHz,待机模式下功耗1.6μA/MHz,禁用模式下功耗0.1μA/MHz。其次选用的DSP芯片TI的C5510 DSP采用两种驱动电压,内核电压1.6V,I/O电压3.3V,根据(1)式,IC器件的功耗和供电电压的平方成正比,1.6V供电的器件比3.3V供电器件能降低一半以上的功耗。IC设计中通常都将降低电压作为控制功耗的最直接的手段,通过采用低电压供电的DSP,既能有效地降低内核动态功耗,还能兼顾I/O的电平兼容性。

4.2动态功耗管理

PCM编解码芯片TLV320AIC11可以单独将A/D或D/A部分禁用。当话筒PTT没有按下时,表示没有话音输入,此时可以将A/D部分置为IDLE状态。同样的,当MODEM的CD信号为高时,表示没有有效的数字码流输入声码器,故在此时可以将D/A部分设为IDLE状态。通过将该芯片配置成低功耗模式,降低了系统的功耗。另外,C5510 DSP芯片内部划出了五个独立的IDLE域,分别负责CPU、DMA、CACHE、外设、时钟生成器、EMIF接口的配置。每个域可以独立地将该域管辖的多个部件设置成活动模式或IDLE模式以此降低DSP的功耗。针对本文设计,由于没有使用到DMA、CACHE、时钟生成器三个域中的外设,故将这三个域设置成了IDLE模式。EMIF域在DSP和MSP交换数据(为了调整发送和接收的比特流)时才被置为活动,其他时候被置为IDLE。通过这样的设置,更加有效地控制了整个系统的运算功耗。

4.3动态频率控制

根据(1)式,IC器件的功耗和频率成正比,因此,将IC器件的频率控制在刚刚好满足运算处理要求的情况,可以大大减小系统功耗。这种方法的关键是算法运算量的大小,动态的调整芯片的运行频率,从而达到节省功耗的目的。在本文设计的平台上运行的六种速率的低速率语音编解码算法中,600bps、1200bps、2400bps、8000bps、16kbps的峰值运算量分别为37.4MIPS、59.2MIPS、44.8MIPS、18.6MIPS、<1MIPS,因此将DSP的工作频率分别设置在40.096MHz、65.536MHz、49.152MHz、24.576MHz。这样处理能够很有效地降低DSP的内核功耗,最大限度地有效利用运算资源。

通过以上几个方面的优化设计,我们达到了应用场合对功耗的要求。表1是本系统在不同运行模式下的功耗统计。

表1 不同模式下DSP功耗

工作方式

功耗

全速运行(80MHz)

521.4mW

低速运行(2MHz)

264mW

低速运行/DSP外设休眠

214.5mW

低速运行/DSP外设休眠/外围芯片休眠

155.1mW

5 小结

本文中介绍了针对语音编解码算法在TI C55x系列DSP上的实现方法。结合作者在实际开发过程中的经验与体会总结了编写汇编程序中的主要技巧。目前C55x的高性能低功耗特点能大幅度提高便携式设备的处理能力和电池的使用寿命,将会广泛应用于语音处理的各个领域。本文介绍的方法和经验具有广阔的推广价值。

本文的创新点:1.指出了多种在TI C55x系列DSP平台上汇编语言的开发经验与技巧。2.实现了一个可同时加载多种速率制式语音编解码的嵌入式硬件平台。 3.采用多种方案实现了对该硬件平台的低功耗设计,很大程度上节约了系统的运行功耗。

参考文献(References)
[1]田秋玲,崔慧娟,唐昆.高质量0.6Kb/s声码器的TMS320VC55x实现[J].电声技术,2005,8:50-53
[2]詹杰,唐昆,崔慧娟.基于TMS320VC5510的低功耗加密型语音硬件平台的设计与实现[J],微计算机信息,2005/25:63-65
[3]TMS320C55xDSPProgrammer’sGuide(spru376a)[R].TexasInstruments,July2001
[4]TMS320C55xDSPMnemonicInstructionSetReferenceGuide(spru374g)[R].TexasInstruments,October2002
[5]赵永刚,高攀峰,崔慧娟,等.声码器通用硬件平台的实现[J].电声技术,2004,7:24-26.
[6]荆元利,樊晓桠,高德远,等.一种数字信号处理器的动态功耗管理方案[J].微电子学与计算机,2003,9:60-63.
[7]TI.MSP430X1XXFAMILYUSERGUIDE.[R].TexasInstruments,January2003

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭