新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 语音信号的A律编解码的DSP实现

语音信号的A律编解码的DSP实现

作者: 时间:2010-09-07 来源:网络 收藏

3 A律算法的软件设计
在TI提供的开发工具CCS中进行源程序的编辑和调试,源程序采用'C54x系列的汇编语言编写。首先完成对芯片必要的初始化、McBSP的初始化及开放McBSP中断,然后执行A律压缩解压算法。

1d.jpg

1e.jpg


一般地,用程序进行A律编码解码有两种方法:一种是查表法,这种方法程序代码小,执行速度快,但需要占用较多的内存以存储查找表(表的大小为212=4096个字),另一种方法是直接计算法,这种程序代码较多,执行速度慢一些,但可以节省内存空间。对照表l,可以画出A律压缩编码直接计算方法的流程如图2所示。待压缩的数据来自voidin变量空间(见附录1),该变量空间保存着McBSP中的数据,保存符号位就是将待压缩数据的位11放入压缩数据的位7,并通过测试位11决定是否对该数求补即对负数求绝对值(A/D转换后的数据用二进制补码表示),求绝对值的目的是为了减小直接对负值压缩时带来的量化误差。另外,还将两个8位的压缩数据组成一个16位的字保存至compress变量空间。
解压一般是压缩的逆过程,但有时为了使得量化误差不超过△i/2,可在解压后的数据位增加一个最低有效位,该最低有效位为1时经过D/A转换后对应△min/2电压,即将8位的压缩数据解压成13位的数据。本文中解压仍然按照解压成12位的数据,其解压流程如图3所示。图3中压缩数据暂存单元com的位6~4的段码值若大于l时,需将这4位段内码的前后相邻位都置1,然后将这6位送至解压数据暂存单元dcom的位(段码值+3)~位(段码值-2)即可,代码(见附录2)中采用的方法是对这6位逻辑左移(段码值-2)位。

4 实验分析及结论
由于信号可以分解成许多正弦频率的和,实验中采用200Hz的正弦信号代替实际的信号。将汇编语言编写的源程序和命令连接文件都添加到新建立的工程文件夹中,并编译、链接及装载程序运行,然后执行集成开发环境ccs的菜单命令View|Graph|Time Frenquency,打开Graph Property Dialog对话框,在此分两次输入标题名sine和decompress sine、起始地址0x0082和0x065E(命令连接文件.cmd中将.bss段定位到DARAM的org=0080h上),并选择数据的长度为200及数据类型为16-bit signed integer,然后点击ok按钮即可生成图4和图5的曲线。



关键词: DSP 语音

评论


相关推荐

技术专区

关闭