基于TMS320C5416的G.729语音编解码算法的优化和实现

[10-10 20:36:41]   来源:http://www.88dzw.com  电子制作   阅读:8869

文章摘要: L_32=hi_word<<16+lo_word<<1 Hi_word=L_32>>16 Lo_word=L_32-hi_word>>1 当累加器中的数值超过一定范围时将会产生溢出。在G.729算法标准中, 累加器的值被限定在80000000~7FFFFFFF之内——即最小负数和最大正数。不过在TMS320C5416中,如果将PMST寄存器中的OVM置位,则溢出会得到自动处理。2.3 内联指令的应用和C程序中嵌入汇编语句 由于语音编码的特点,编解码函数都是由一些基本的加减乘除简单函数组织而成,这些函数定义在BASI

基于TMS320C5416的G.729语音编解码算法的优化和实现,标签:电子小制作,http://www.88dzw.com
    L_32=hi_word<<16+lo_word<<1
    Hi_word=L_32>>16
    Lo_word=L_32-hi_word>>1
    当累加器中的数值超过一定范围时将会产生溢出。在G.729算法标准中, 累加器的值被限定在80000000~7FFFFFFF之内——即最小负数和最大正数。不过在TMS320C5416中,如果将PMST寄存器中的OVM置位,则溢出会得到自动处理。
2.3 内联指令的应用和C程序中嵌入汇编语句
    由于语音编码的特点,编解码函数都是由一些基本的加减乘除简单函数组织而成,这些函数定义在BASIC OP.C和OPER_32B.C两个文件中,如果能够对这些简单函数进行内联指令(intrinsic)的优化,就能达到事半功倍的效果。内联指令是汇编指令的直接映射,具有很高的效率。例如:
    #define muh_ r(varl,var2)           _mpylir(varl,var2)
    #define L_ add(L_var1,L_var2)       _sadd(L_var1,L_var2)
    #define L_ muh(var1,var2)           _smpy(var1,var2)
    在C程序中嵌入汇编语句的方法比较简单,只需在汇编语句的左右加上一个引号,然后用小括弧将汇编语句括住,并在括弧前加上ASM标识符,例如ASM(“汇编语句”)。采用这种方法一方面可以在C程序中实现用C语言无法实现的一些硬件控制功能,如修改中断控制寄存器、中断使能或屏蔽、读取状态寄存器和中断标志寄存器等;另一方面,也可以用这种方法在C程序中的关键部分用汇编语句代替C语言以优化程序。而采用这种方法的缺点是比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的C程序时并不检查或分析所嵌入的汇编语句。采用这种方法需要注意以下几点:
    (1)不要破坏C环境,因为C编译器并不检查和分析嵌入的汇编语句。
    (2)汇编语句不要改变C程序中变量的值,不要在汇编语句中加入汇编器而改变汇编环境。
    在简化算法的基础上,使用CCS提供的C优化器进行C语言优化,同时还使用内联函数和汇编优化。
3 G.729在TMS320C5416上的实现
3.1 TMS320C5416的体系结构和应用
    TMS320C5416(以下简称C5416)是TI公司最近推出的一款高性价比的通用l6位定点DSP芯片,它的内核CPU基本组成与TMS320C54X系列一样。C5416的单指令周期为6.25 RS,每秒执行的指令数为160×106,指令系统丰富并具有很多多功能指令,使用了6级指令流水线结构,这些都很适合实现低时延的G.729声码器。采用一个40bit ALU、128K×16bit片内RAM(包括64KB的片内DARAM和64KB的片内SARAM)、3个独立的l6bit数据内存总线、1个程序内存总线、3个MCBSP、6信道DMA控制器、1个8/l6位并行增强主机端口接口及2个l6bit计时器。
    在TMS320C5416中通过PCM3002进行语音信号的A/D和D/A转换,PCM3002使用两个串行通道,一个用于控制内部寄存器,另外一个用于数据传输。在系统板TMS320C5416中默认的语音信号的抽样率是48kHz,通过修改PCM3002的内部控制寄存器,设定PCM3002信号的抽样率。为了满足G.729编码的要求,PCM3002信号的抽样率为8 000Hz。为了充分利用DSP进行信号处理,通过使用MCBSP和DMA把抽样的数据送入DMA的缓冲区中,当缓冲区满时产生一次中断,DSP把DMA的缓冲区中的数据读入DSP中进行处理,然后把处理过的数据送入DMA发送缓冲区。
3.2 G.729在TMS320C5416的实现
    G.729的处理过程中采用块处理技术如图3所示。按照G.729标准,每块(帧)由80个样本组成,最初80个样本被存起来,处理过程中有两个操作是同时进行的。在处理块L中数据的同时,存储L+1块的数据。

上一页  [1] [2] [3] 


Tag:电子制作电子小制作维修教程知识 - 电子制作