语音信号扩展A律教材.docx
- 文档编号:3540670
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:24
- 大小:490.35KB
语音信号扩展A律教材.docx
《语音信号扩展A律教材.docx》由会员分享,可在线阅读,更多相关《语音信号扩展A律教材.docx(24页珍藏版)》请在冰豆网上搜索。
语音信号扩展A律教材
1语音信号扩展设计要求及原理
1.1设计要求与目标
通过课程设计对CCS软件有更进一步的了解,充分掌握DSP的设计思想,加深对TMS320C55XDSP的理解与使用,熟悉DSP的编程语言。
技术要求:
语音信号扩展(A律)
1、接收A律压缩后的数据
2、对信号进行扩展
3、输出扩展后的语音信号
1.2实验设计目的
1、通过本实验掌握DSP片上外设多通道缓冲串行口mcbsp。
2、学习掌握tlc320ad50CODEC编译码器的内部结构、工作原理。
3、学习A律语音压缩以及C语言下的编程方法。
1.3实验设计原理
1.3.1语音采集与输出模块
语音采集与输出模块采用的是TI公司推出的一款高性能的立体声音频Codec芯片TLC320AD50C,内置耳机输出放大器,支持MIC和LINEIN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。
AD50的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。
与此同时,AD50还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于15uW。
由于具有上述优点,使得AD50是一款非常理想的音频模拟I/O器件,可以很好的应用在随声听(如CD,MP3……)、录音机等数字音频领域[2]。
由TLC320AD50C组成的语音输入与输出模块不仅采样率高最高可达96K,且外围电路简单,性价比高。
1.3.2语音编码
(1)概念:
语音编码一般分为两类:
一类是波形编码,一类是被称为“声码器技术”的编码。
PCM编码即脉冲编码调制。
波形编码的最简单形式就是脉冲编码调制(Pulsecodemodulation),这种方式将语音变换成与其幅度成正比的二进制序列,而二进制数值往往采用脉冲表示,并用脉冲对采样幅度进行编码,所以叫做脉冲编码调制。
(2)量化:
脉冲编码调制用同等的量化级数进行量化,即采用均匀量化,而均匀量化是基本的量化方式。
但是均匀量化有缺点,在信号动态范围较大而方差较小的时候,其信噪比会下降。
国际上有两种非均匀量化的方法:
A律和u律,u律是最常用的一种。
在美国,7位u律是长途电话质量的标准。
而我国采用的是A律压缩,而且有标准的A律PCM编码芯片。
(3)DPCM&ADPCM:
降低传输比特率的方法之一是减少编码的信息量,这要消除语音信号中的冗余度。
相邻的语音样本之间存在明显的相关性,因此对相邻样本间的差信号进行编码,便可使信息量得到压缩。
因为差分信号比原语音信号的动态范围和平均能量都小。
这种编码叫DifferentialPCM,简称DPCM,即差分脉冲编码调制。
ADPCM即自适应差分脉冲编码调制,是包括短时预测的编码系统。
CCITT(国际电报电话咨询委员会)在1984年提出的32kbit/s的编码器建议就是采用ADPCM作为长途传输中的国际通用语音编码方案。
这种ADPCM编码方案达到64kbit/sPCM的语音传输质量,并具有很好的抗误码性能。
(4)当前压缩算法及压缩技术介绍
压缩算法的介绍
用途
抽样频率(kHz)
压缩标准或系统
压缩技术
码率(kbit/s)
长途电话
8
G.711
G.726
G.728
PCM
ADPCM
LD-CELP
64
40/32/24/16
16
移动电话
8
GSM
IS54/IS95
G.729
RPE/LTP
VSELP/QSELP
CS-ACELP
13.2
16/8/4/2/1
8
ISDN,会议电视
1
G.722
SB-ADPCM
64/56/48
VCD
32/48
ISO/IEC10149
MPEG1
192/128/96
压缩技术的介绍压缩技术
a.波形编码:
直接对语音时域或频域波形样值进行编码。
PCM,ADPCM,SBC,ATC
b.参数编码:
对人类语音的生成模型的参数进行编码。
c.混合编码:
结合波形编码和参数编码。
MPLPC,RPE/LTP,CELP,VSELP
d.可变速率编码:
G.727嵌入式编码
e.无失真编码。
霍夫曼编码
f.ADPCM工作原理
h.自适应地改变量化幅值
i.确定好量化幅度的最大值和最小值
(5)A律压缩与扩展
图1.3.1A律压缩示意图
图1.3.2是DSP将数据解压的值,DSP将压缩的8位数据解压成16位的DSP通用数据格式,其中高13位为解压后的数据,低3位补0。
这是因为6.711的A律压缩只能对13位数据操作。
DSP将解压后的数据放在缓冲串口的发送寄存器中,只要运行发送指令,缓冲串口就会将数据发送出去。
缓冲串口对接收数据的解压过程和压缩过程完全相反。
图1.3.2A律数据解压
DSP内部的缓冲串口(McBSPs)带有硬件实现的μ律/A律压缩解压,用户只需要在相应寄存器中进行设置就可以了。
在进行A律压缩时,采样后的12位数据,默认其最高位为符号位,压缩时要保持最高位即符号位不变,原数据的后11位要压缩成7位。
这7位码由3位段落码和4位段内码组成。
具体的压缩变换后的数据根据后11位数据大小决定。
表1A律数据压缩表
除对串行口数据实现压扩处理外,这套硬件在McBSP不使用时还可以当作一个特殊的处理单元对内部数据实现压扩处理,他有两种实现方法。
法一:
当串行口的发送和接受部分都处于复位状态时,DRR1和DXR1内部通过压扩逻辑连接在一起,数据从DXR1写入并根据XCOMPAND处理,然后根据RCOMPAND再处理,在4个CPU时钟后从DRR1中读出数据。
该处理比软件实现快,不利之处在于处理完后没有同步信息通知CPU和DMA。
法二:
在数据环回模式下,McBSP也实现了一种内连。
数据处理与第一种方法相同,但它可以提供中断信号(或同步事件)给CPU(或DMA)。
这里数据处理的时间是根据串行口的比特律确定的。
另外,在通常情况下McBSP先传输信号的高位后传输低位,但是在字长为8比特的数据传输时,McBSP提供了比特倒序的功能,即可以先传输低位后传输高位。
2实验资源介绍
2.1多通道缓冲串行口MCBSP
(1)工作原理
C5402具有2个高速的全双工同步串行口,可用来与系统中的其它C54x器件、编码解码器、串行A/D、D/A转换器以及其它的串行器件直接接口。
这两个串行口均为多通道缓冲串行口McBSP(Multi-channelBufferedSerialPort)。
它支持全双工通信,双缓冲数据寄存器,允许连续的数据流,可以与工业标准的编/解码器、AICs接口。
支持多种方式的传输接口,如T1/E1帧协议、MVIP帧方式、H.100帧方式、SCSA帧方式、IIS兼容设备等。
可与多达128个通道进行收发。
支持传输的数据字长可
图2.1.1以是8bit、12bit、16bit、20bit、24bit或32bit。
内置μ-律和A-律压扩硬件。
其硬件结构图如图所示。
MCBSP接口提供了以下7个引脚信号用于与其他设备的通讯:
DR:
串行数据接收引脚,输入
DX:
串行数据发送引脚,输出
CLKX:
发送时钟,输入或输出,可编程
CLKR:
接收时钟,输入或输出,可编程
FSX:
发送帧同步信号,输入或输出,可编程
FSR:
接收帧同步信号,输入或输出,可编程
CLKS:
外部时钟,输入
(2)多通道缓冲串行口MCBSP在CCS集成开发环境下的相关头文件
在CCS集成开发环境中,与MCBSP相关的头文件有:
regs54xx.h、mcbsp54.h。
在这两个头文件中,定义了MCBSP串口的寄存器资源以及使用方法。
在reg54xx.h头文件中,定义了MCBSP中寄存器的地址和基本访问方式,以及寄存器的各个比特域和访问方法。
在mcbsp54.h头文件中,定义了与MCBSP相关的宏函数(MACROFUNCTIONS)和函数。
Regs54xx.h、mcbsp54.h这两个头文件是C语言下对MCBSP编程的基础,我们不仅可以用在5402DSK板的编程上,而且可以用在其它的C54X的DSP硬件编程上。
2.2TLC320AD50CODEC编码译码器
AD50是一款SIGMA-DELTA型单片音频接口芯片。
它内部集成了16位的D/A和A/D转换器,采样速率最高可达22.05kb/s,其采样速率可通过DSP编程来设置。
在DAC之前有一个插值滤波器以保证输出信号平滑和ADC之后有一个抽取滤波器以提高输入信号的信噪比。
(1)内部结构及工作原理
AD50内部有7个数据和控制寄存器,用于编程控制它们的工作状态。
寄存器0:
空操作寄存器。
寄存器1:
软件复位,软件掉电,选择16位或15位工作方式,硬件或软件二次通信请求方式的选择。
寄存器2:
使能ALTDATA输入端,为ADC选择16/15位方式。
寄存器3:
选择FS与FSD之间延迟SCLK的个数,告诉主机有几个从机被联上。
寄存器4:
为输入和输出放大器选择放大器增益,选择N来设置采样频率,
fs=MCLK/(128*N)或MCLK/(512*N),在MCLK输入端使能外部时钟输入并旁通内部的PLL。
寄存器5,6:
保留
(2)与AD50有关的相关头文件
在CCS集成开发环境中,与tlc320ad50CODEC编译码器相关的头文件是codec.h。
它位于C:
\ti\c5400\dsk5402\include目录下。
在这个头文件中,定义了与ad50CODEC相关的枚举变量和库函数。
除了可以调用codec.h中提供的库函数之外,我们还可以利用这些枚举变量重新编写自己的codec函数,使用枚举变量相或产生所需要的ad50寄存器的初始化值。
Codec.h中的库函数位于函数库dsk5402.lib和drv5402.lib中。
函数库dsk5402.lib和drv5402.lib是作为两个单独的文件,连同include文件和头文件一起提供给用户的,如果你的应用程序中用到了其中的库函数,就需要与这两个函数库进行链接(link)dsk5402.lib是一个主要的函数库,其内部使用了drv5402.lib的头文件。
2.3存储器
(1)外部数据存储器
模拟输入
模拟输出
图2.3.1
DSK提供了64K*16位的SRAM,SRAM工作在+3V的电源电压。
可以使用的外部数据存储器的大小取决于DROM的设置。
如果DROM=0,那么0x4000~0xFFF(48k字)的空间是外部存储器(FLASH或SRAM)。
如果DROM=1,外部存储器只能使用0x4000~0xEFFF.DMSEL控制寄存器位决定访问板上或扩展板的存储器。
如果DMSEL=0(缺省),使用板上的数据存储器;如果DMSEL=1,使用扩展板存储器,并且地址开始于0x8000(块的大小取决于DROM位)。
数据存储器空间资源也取决于MP/MC状态。
(2)I/O空间存储器
IO空间是由2部分组成,一个是系统基于CPLD控制空间,另一个是扩展板存储器空间。
DM_SEL位能够控制IO空间的访问。
如果DSP向此位写1,那么扩展板存储器的IO空间是不能被访问的。
如果向此位写0,那么扩展板存储器的IO空间是可以被访问的。
2.4压扩硬件
在通信中常常利用u律和a律对数据进行压扩处理,TMS320C54X在McBSP中提供了专门的硬件实验这一功能。
压扩处理时,CPU访问到的都是16位的,他分别是利用
线性的14位数据(u律)和13位(a律)数据左对齐获得的。
压扩处理有两种实现方法:
方法一:
当串行口的发送和接受部分都处于复位状态时,DRR1和DXR1内部通过压扩逻辑连接在一起,数据从DXR1写入并根据XCOMPAND处理,然后根据RCOMPAND再处理,在4个CPU时钟后从DRR1中读出数据。
该处理比软件实现快,不利之处在于处理完后没有同步信息通知CPU和DMA。
方法二:
在数据环回模式下,McBSP也实现了一种内连。
数据处理与第一种方法相同,但它可以提供中断信号(或同步事件)给CPU(或DMA)。
这里数据处理的时间是根据串行口的比特律确定的。
2.5麦克风和耳机接口
音频接口使用了2个工业标准的3.5mm的连接器:
一个连接麦克风的音频输入;
一个连接耳机的音频输出。
(1)音频输入是交流偶合的并且包括:
1个固定增益为10dB的放大器;实现单端到差分的转换(在此之前,连接到DSP的McBSP1上的TLC320AD50对其进行数字化);电压偏置(支持电池电源和驻极体麦克风);被动滤波(在DSK的音频插口和CODEC之间)用来增强性能,为驻极体麦克风设计的麦克风的输入它需要一个电压偏置。
如果使用电容来隔离偏置电压,就能够使用动态的麦克风。
麦克风的输入信号最大允许标准是500mV(350mVrms)。
在DSK上有10dB前置放大器增益。
(2)音频输出是可以编程控制的,在软件的控制下,可以在6dB增幅的范围内,增加增益+0~+2dB。
音频输入可以编程控制的,在6dB增幅范围内,提供+0~+12dB的增益。
3实验设计过程
3.1设计思想
采用DSP可以直接对PCM编码后的语音信号进行A律压缩。
图3.1.1是DSP硬件实现数据压缩解压的简单流程,DSP将传输来的压缩后的数据进行解压成16位或者32位,然后对解压后的数据进行分析、处理,最后将处理后的数据按照要求压缩成8位的数据格式输出到相应设备,供其他设备读取。
图3.1.1数据压缩解压流程
A律的压缩可以按照下列公式进行定义:
式中,A是压缩参数(在欧洲,A=87.6)x是需要压缩的归一化整数。
从线性到A律的压缩转换如下表所示:
压缩后的码字组成:
比特0-3表矢量化值,比特4-6表示段值,压缩后的码字符号放在比特7,为了简化未写出.
压缩前的码字
丢弃的比特数
压缩后的码字
输入值
段值,量化值
比特:
11109876543210
比特:
6543210
0000000abcdx
1
000abcd
0000001abcdx
1
001abcd
000001abcdxx
2
010abcd
00001abcdxxx
3
011abcd
0001abcdxxxx
5
100abcd
001abcdxxxxx
6
101abcd
01abcdxxxxxx
7
110abcd
1abcdxxxxxxx
8
111abcd
图3.1.2
A律的扩展可定义为:
从A律到线性扩展的转换如下表:
压缩过的码字
偏值的输入
段值,量化值
比特:
6543210
比特:
11109876543210
000abcd
0000000abcd1
001abcd
0000001abcd1
010abcd
000001abcd10
011abcd
00001abcd100
100abcd
0001abcd1000
101abcd
001abcd10000
110abcd
01abcd100000
111abcd
1abcd1000000
图3.1.3
3.2程序流程
3.3实验方案:
用板内的AD/DA转换器AD50将由MIC输入的模拟信号转换为16位数字信号送入DSP板中进行压缩处理,压缩处理后的数据经过解压后再送至DA转换器转换为模拟信号,由SPEAKER口输出,压缩和解压缩用A律格式,从而实现语音信号的采集压缩与回放。
统计表明对于每一个讲话者来说,语音中小幅度成分出现的概率要比大幅度多得多,为了在语音信号的整个动态范围内都可以接受低电平信号,量化电平必须照顾到语音的低电平信号,极低电平的量化间隔要小,高电平的量化间隔要大。
3.4实验实现过程
1、将5402DSK板与计算机相连,连接好耳机,音频线,电源线等。
2、连接DSK板的电源,并启动计算机。
3、双击桌面上的CCS2(C5000)图标运行CCS程序,在CCS并行调试管理器窗口中选择打开“C5402DSK/CPU-1”选项启动DSK板的驱动程序。
正常启动CCS之后,在CCS的左上角出现“C5402DSK/CPU-1”的提示。
4、将实验需要的工程拷至C:
\ti\myproject目录下。
5、将工程进行编译,并装载程序。
6、运行工程,在信号输入端输入语音信号,在speaker信号输出端用耳机接收。
待程序设计好之后,将其添加到一个新建的工程里调试,编译,在次过程中要向工程中添加文.cmd文件和库文件
(1)drv5402.lib软件仿真所用的仿真器所必需的库文件
(2)dsk5402.lib驱动DSK板所必需的库文件
(3)rts.lib库提供目标DSP运行时间支持
头文件:
#include
#include
#include
#include
通过编译,连接生成.out文件,然后装载.out文件。
在麦克风/扬声器接口分别接上音频信号和耳机,放音并录音一段时间后可以从耳机中听到播放的音乐。
4调试过程与运行结果
4.1调试过程
1.观察数据结果
View——watchwindow
我们输入buffer,显示此数组的值,如图D所示。
2.观察数据图形
View——Graph——TimeFrequency
可以加入断点,然后按Animate动态显示。
分别观察语音输入(存放在变量data中)波形,压缩后波形(temp1),解压后输出波形(data1),图形分别为A,B,C。
3.观察存储器中数据
View——Memory
4.2运行结果
经过多次调试,使录音时间在保持音质的前提下达到10—12秒。
图4.2.1输入波形(data)
图4.2.2压缩后波形(temp1)
图4.2.3解压缩后输出波形(data1)
图4.2.4watchwindow中的值
图4.2.5watchwindow中的值
5实验总结
通过这次的DSP实验,让我充分认识到了我的不足。
我虽然学习过C语言的编程,但一旦将它应用到实际的比较专业的问题上,我所学的知识就变得完全不够用了,为了这次实验我和我的搭档查询了大量的资料,无论是C语言方面的还是压缩算法方面的都让我们花费了很多时间,查询到了需要的资料我们又对它们进行了整理,提取出我们需要的a律压缩和μ律压缩的算法和原理,并且努力去理解其中的知识,使其能为我们所用,尽管如此我们仍然没能成功的编出属于我们自己的程序,因此我们找到了一份编好的程序,用我们已经理解的知识去分析它,理解这份程序的原理,并根据我们的实际对它进行一些修改,从而我们才得出我们现在的程序。
虽然程序编写成功了但我们在调试上又遇到了很多的问题,比如在CCS环境下我们要如何观察波形,波形有代表什么等等,为此我们又不断的翻阅课件和资料,才最终解决了所有的问题,我们的实验才算基本完成了。
整个实验过程中,我在不断的查阅资料和开动脑筋过程中,锻炼了我的资料采集能力,也锻炼了我的分析整理能力,为以后作毕业设计打下了基础;同样在实验过程中我遇到很多困难,而这些困难则锻炼了我的耐心和分析解决问题的能力;通过编程锻炼了我的编程能力,使我对C语言,汇编语言和MATLAB语言更加熟悉,让我能更好的运用它们;而且两人一组的实验,也锻炼了我们的团结协作能力,为将来走入社会能更好的工作打下了基础。
总之通过这次的实验,让我认识到了自己的不足,同时又通过这次的实验让我们学到了让我们受用一生的知识。
参考文献
[1]汪春梅,孙洪波.TMS320C55xDSP原理及应用.第二版.北京:
电子工业出版社2008
[2]姜阳,周锡青.DSP原理与应用实验.西安:
西安电子科技大学出版社,2008
[3]方华刚.DSP原理与应用.北京:
机械工业出版社,2006.1
[4]程佩青.数字信号处理教程第二版,清华大学出版社,2001.8
[5]TMS320C55XDSPProgrammer’sGuideSPRU376A[Z].TexasInstruments,2001
[6]TMS320C55XDSPMnemonicInstructionSetReferenceGuideSORU374G[Z].TexasInstruments,2002
[7]TMS320C55XDSPAssemblyLanguageToolsUser’sGuideSPRU280H[Z].TexasInstruments,2004.
致谢
通过两周以来同学和老师的共同努力,我们终于完成了设计要求。
但大家脸上的表情都是欣慰和欢喜的,到底工夫不负有心人。
回想过去两周,这里面的辛苦只有做是课程设计的人才明白,才能体会。
这次设计我们学到了很多东西,虽然作出来的东西很基础,但是我们加深了对知识的理解和掌握。
作为一名大四的学生,我觉得能做类似的课程设计是十分有意义的。
通过此次设计试验也着重能够学到许多东西。
机会谁都有,关键在于自己怎么利用一些外部条件去创造。
与其等待机会的来临,还不如自己去创造机会,变被动为主动,事情才能成功。
过去在自己的心里,老是有种恐惧的心理在作祟,怀疑自己的能力,认为自己不能胜任某件事情,甚至连尝试的胆量都没有。
自己本身还是存在着很大的欠缺,这样才能不断地提升自身的素质、素养,不断地改进自己的知识结构水平,让自己投入到理论学习中,好好积累基础理论知识,方能厚积薄发。
也将随着自身能力水平和环境的不断变化而更加完善。
最后感谢指导老师姜阳和周锡青给予我很多的关注和指导。
附录程序清单
程序代码
存储器的分配(5402.cmd)
MEMORY
{
PAGE0:
VECS:
origin=0080h,length=0080h/*InternalProgramRAM*/
PRAM:
origin=0100h,length=0FFFh/*InternalProgramRAM1*/
PAGE1:
SCRATCH:
origin=1000h,length=0020h/*ScratchPadDataRAM*/
DMARAM:
origin=1020
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 扩展 教材
![提示](https://static.bdocx.com/images/bang_tan.gif)