首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
采用DSP芯片的MELP声码器的算法设计方案
来源:本站整理  作者:佚名  2010-03-15 22:32:09



4  软件设计及其关键问题

    软件设计包括编码流程和解码流程,编码流程图如图3所示。由于解码过程相对简单,故此处只给出编码流程图。

    此软件流程设计完全按照MELP原理,在实际编程过程中需要注意以下几个关键问题。

图3  MELP编码流程图

⑴存储器分配问题

    由于TMS320VC5416采用双总线结构,提供了许多多功能指令,在实际实现时要充分考虑到这些特点,尽量用多功能指令,并且合理分配使用各个寄存器和指针。例如:MAC指令可以在一个指令周期内完成乘加操作,还可以结合寄存器的合理安排实现连续乘加,而不需要缓存中间数据,从而大大提高了运算效率。另外,要充分利用TMS320VC5416提供的专用的硬件结构、寻址方式及特殊指令。如:环形存储器寻址方式、双操作数寻址方式、EXP指令和NORM指令、舍入操作等,恰当使用这些方式和指令可以大大提高软件效率。

⑵ 数的定标

    TMS320VC5416采用定点数进行数值运算,其操作数一般采用整型数表示。但它的指令支持小数模式和整数模式两种运算模式。对DSP而言,参与数值运算的数就是16位的整型数。在多数情况下,数学运算过程中的数不一定都是整数,这就需要程序员来确定小数点的位置,即数的定标。TMS320VC5416中数的定标有两种表示法:Q表示法和S表示法。在此软件中用Q表示法表示。

    在程序中需要经常判断运算结果是否溢出。TMS320VC5416芯片本身设有溢出保护功能,溢出的处理是通过设置芯片中PMST寄存器的OVM位自动执行的。可以在程序的开始就设置溢出功能有效,一旦出现溢出异常,则累加器ACC的结果置为最大的饱和值(上溢位7FFFH,下溢位8001H),从而达到防止溢出引起精度严重恶化的目的。            

⑶防止流水线冲突

    流水线是TMS320VC5416最具特色的部分,它大大的提高了TMS320VC5416的性能,但当DSP资源同时被不在同一流水线阶段的指令使用,或在存取某些寄存器时容易引起流水线冲突。编译时会编译器将自动插入一个或几个空操作,从而增加了所需的计算量,降低了软件效率,因此软件设计开发中需要避免流水线冲突。

5  测试结果

    目前该编解码器已通过MELP的全部测试矢量验证。系统实时实现编解码时,经过非正式的主观测试结果表明,MELP算法的MOS分在3.3左右,其清晰度、自然度和抗噪声性能明显优于传统LPC算法。表1和2分别给出了在定点DSP芯片TMS320VC5416上实时实现MELP算法的编解码器所需的存储量和计算量。

    从表1可见,程序和数据存储区总存储量共25.2K字,由于TMS320VC5416内部RAM的大小为128K字,因此,程序boot时,可以一次将所有程序和数据直接搬移到芯片内部RAM里运行。表2显示了对该声码器所用资源的统计结果。在全双工时,最大运算量为39.9MIPS,完成满足实时实现的要求。

    以上分析结果显示,单片TMS320VC5416芯片最多可实现4路语音编解码,片上剩余的资源还可以实现其它附加功能。

表1  编解码器占用存储器资源

表2  编解码器运算量分析

7  总结

    创新点:本文介绍了混合激励线性预测(MELP)声码器算法,简要分析了该算法的编解码原理。同时,本文选用TI公司的TMS320VC5416 DSP芯片进行了实时实现,指出了在软件实现中需要注意的关键问题。经非正式主观测试结果表明,该算法自然度、清晰度和抗噪声性能明显优于传统LPC算法,适用于短波窄带数字保密通信、无线通信等需要低速率的语音编码场合,具有广阔的应用前景。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:155,843.80000 毫秒