资料介绍
近二十年来,全球半导体产业的飞速发展带动相关的软件、硬件设计水平迅速提高,这些发展使得一大批性能优良的复杂的数字信号处理算法可以实时实现并在日常通信系统中得到广泛应用,极大地提高了现有通信系统的可靠性和效率。因此,研究语音处理技术并将其用基于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。通过这样的设置,更加有效地控制了整个系统的运算功耗。
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。通过这样的设置,更加有效地控制了整个系统的运算功耗。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- NANDFLASH快速BCH编解码算法及便件实现
- PCM语音编解码及原理图下载 16次下载
- DSP芯片实现语音编解码技术的设计方案 18次下载
- PCM语音编解码的PCB原理图免费下载 20次下载
- AP280语音编解码芯片的数据手册 3次下载
- 如何使用L9320实现ADPCM语音编解码 24次下载
- 如何使用DSP和CPLD进行语音处理系统的设计资料说明 6次下载
- G.7xx语音编解码模块及在AD218X上的实现 0次下载
- 多制式数字视频编码器 55次下载
- 在DSP上G.729A算法的优化
- G.726语音编解码器在SoPC中的实现
- 三代移动通信变速率语音编解码AMR-WB+算法优化
- G.726语音编解码器在SoPC中的实现
- 基于TMS320C6713的G.723.1语音编解码的实时实
- 语音编解码芯片MT8965在ALU中的应用
- 遥控编解码芯片有哪些 1126次阅读
- DSP 数字信号处理实验箱操作丨有限冲激响应滤波器(FIR)算法(LCD显示) 600次阅读
- MAXQ3120在编解码应用中的应用 841次阅读
- 基于三态编解码芯片实现无线数据通信装置的设计 9297次阅读
- 新唐科技音频编解码器简介 1699次阅读
- 新唐科技语音频段编解码器简介 2306次阅读
- 浅析基于嵌入式DSP的流媒体解决方案 1248次阅读
- 基于TI Soc OMAP4430异构多核处理器的H264编解码 1738次阅读
- 关于音频编解码器EVS及用好要做的准备工作详解 6074次阅读
- FFMPEG视频编解码流程 H.264硬件编解码实现 1.9w次阅读
- 分析了各主流编解码器的优势与不足,并对编解码器的选择给出建议 1.4w次阅读
- 宋利:解读了编解码器的现状与未来趋势 9206次阅读
- 数字视频编解码技术回顾及展望 1096次阅读
- 音频编解码器技术 5015次阅读
- 基于DSP的双通道数字语音监录器设计 1307次阅读
下载排行
本周
- 1DC电源插座图纸
- 0.67 MB | 2次下载 | 免费
- 2AN158 GD32VW553 Wi-Fi开发指南
- 1.51MB | 2次下载 | 免费
- 3AN148 GD32VW553射频硬件开发指南
- 2.07MB | 1次下载 | 免费
- 4AN111-LTC3219用户指南
- 84.32KB | 次下载 | 免费
- 5AN153-用于电源系统管理的Linduino
- 1.38MB | 次下载 | 免费
- 6AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下载 | 免费
- 7SM2018E 支持可控硅调光线性恒流控制芯片
- 402.24 KB | 次下载 | 免费
- 8AN-1308: 电流检测放大器共模阶跃响应
- 545.42KB | 次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 450次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 138次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 130次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 53314A函数发生器维修手册
- 16.30 MB | 31次下载 | 免费
- 6美的电磁炉维修手册大全
- 1.56 MB | 24次下载 | 5 积分
- 7如何正确测试电源的纹波
- 0.36 MB | 17次下载 | 免费
- 8感应笔电路图
- 0.06 MB | 10次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935121次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233088次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73810次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65988次下载 | 10 积分
评论