DSP技术课程设计语音信号扩展U律新.docx
- 文档编号:3639296
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:29
- 大小:757.38KB
DSP技术课程设计语音信号扩展U律新.docx
《DSP技术课程设计语音信号扩展U律新.docx》由会员分享,可在线阅读,更多相关《DSP技术课程设计语音信号扩展U律新.docx(29页珍藏版)》请在冰豆网上搜索。
DSP技术课程设计语音信号扩展U律新
摘要
本文简要阐述了语音信号扩展U律的基本原理,可以将高位的数据扩展成低位的数据,它适用于声音信号的播放和传输系统,在设计中借助MATLAB信号处理工具箱FDAtool工具设计了语音信号扩展系数,然后在CCS中以TMS320C55x芯片的汇编语言编程实现了该语音信号扩展。
利用MATLAB设计语音信号扩展,可以随时对比设计要求和语音信号扩展特性调整参数,直观简便,极大的减轻了工作量,有利于语音信号扩展设计的最优化。
另外文中还介绍CCS开发环境。
文中所给程序已经经过软件仿真验证,所设计的语音信号扩展符合设计要求。
关键词:
DSP,语音信号扩展,MATLAB,CodeComposerStudio(CCS),TMS320C55x
目录
1语音信号扩展U律设计任务及目的...............1
1.1语音信号扩展U律设计任务…………………………………………1
1.2语音信号扩展U律设计目的………………………………………...1
1.3语音信号扩展U律设计基本原理………………………………………1
1.3.1语音信号扩展编码技术的发展……………………………………..1
1.3.2DSP硬件实现数据扩展解压的简单流程………………………….1
1.3.3U律语音信号扩展……………………………………………………2
2TMS320C5X结构…………………………………..4
2.1C55X的CPU体系结构…………………………………………………..4
2.2指令缓冲单元(I)…………………………………………………….4
2.3程序流程单元(P)…………………………………………………….4
2.4地址程序单元(A)……………………………………………………..5
2.5数据计算单元(D)……………………………………………………..5
3语音信号扩展U律设计过程.........................................6
4语音信号U律设计软件程序........................................7
5语音信号扩展U律设计的CCS实现..................15
5.1简述CCS环境………………………………………………15
5.1.1CCS主要特点…………………………………………………………15
5.1.2DSP/BIOS和API函数以及RTDX插件………………………………..15
5.2CCS配置………………………………………………………………...16
5.3CCS环境中工程文件的使用…………………………………………..16
5.3.1建立工程文件……………………………………………………….16
5.3.2创建新文件………………………………………………………….17
5.3.3向工程项目中添加文件……………………………………………...17
5.4编译链接和运行目标文件…………………………………………….18
5.4.1对程序进行编译链接并装载.out文件……………………………18
6仿真结果及讨论............................................................19
结论...................................................................................22
参考文献...............................................................................23
1语音信号扩展U律设计任务及目的
1.1语音信号扩展U律设计任务
(1)完成语音信号采集;
(2)对语音信号进行U律扩展;
(3)传输扩展后的信号
1.2语音信号扩展U律设计目的
本设计的目的在于通过使用DSP的程序设计完成对语音信号的扩展,既可以通过软件实现,也可以通过硬件实现。
进行程序的设计,并在CCS软件环境下进行调试,同时也加深学生对数字信号处理器的常用指标和设计过程的理解。
1.3语音信号扩展U律设计基本原理
1.3.1语音信号扩展编码技术的发展
随随着通信、计算机网络等技术的飞速发展,语音扩展编码技术得到了快速发展和广泛应用,尤其是最近20年,语音扩展编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。
语音扩展编码技术的类别
语音编码就是将模拟语音信号数字化,数字化之后可以作为数字信号传输、存储或处理,可以充分利用数字信号处理的各种技术。
为了减小存储空间或降低传输比特率节省带宽,还需要对数字化之后的语音信号进行扩展编码,这就是语音扩展编码技术。
语音的扩展编码方法归纳起来可以分为三大类:
波形编码、参数编码和混合编码。
1.3.2DSP硬件实现数据扩展解压的简单流程
DSP将传输来的扩展后的数据进行解压成16位或32位,而后对解压后的数据进行分析,处理,最后将处理后的数据按照要求扩展成8位的数据格式输出到相应设备以供读取:
DR→RSR→RBR→解压→RJUST→DDR→DXR→扩展→XSR→DX
在进行扩展时,采样后的12位数据,默认其最高位为符号位,扩展时要保持最高位即符号位不变;原数据的后11位要扩展成7位。
这7位码由3位段落码和4位段内码组成,具体扩展变换后的根据后11位数据大小决定。
扩展后数据的最高位(第7位)表示符号,量阶分别为1,1,2,4,8,16,32,64,由扩展后数据的第6位到第4位决定,第3位到第0位是段内码,扩展后数据有一定的失真,有些数据不能表示出,只能取最接近该数据的扩展值。
例如数据125,扩展后的值为00111111,意义如下:
从左往右,第一个0为符号位,表示为一个正数;后面的011为段落码,表示量阶为4,起始数据为64,后面的4个1111为段内码,表示值为15
最终结果为:
64+4*15=124.
1.3.3U律语音信号扩展
μ律算法:
采用μ律算法对采集的语音数据进行处理,μ律编码是一种针对语音信号进行对数压缩非均匀量化的方案。
采用μ律对信号进行对数形式的压缩,以便在不提高数据量的前提下提高信噪比,尽管量化的位数保持不变,但动态范围增加了。
μ律压缩的语音信号一般用8比特抽样数据表示,携带小信号信息量比大信号信息量多。
从统计意义上讲,有用信号更可能在小信号区间而非大信号区间。
因此,在小信号区间需要更多的量化点数。
μ律算法公式:
其中Xmax是信号x(n)的最大幅度,u是控制压缩程序的参数,u越大压缩就越厉害
μ律查找表内共有256个数,分别用来获得0—7段量化电压,其由16×16组数组成。
由下表看大信号多数由第7段表示,三个指数位用来表示第0-7段,4个尾数位用于表示后4个有效位,还有一位符号位没有给出。
16比特输入数据是由线性数据变换成8比
特μ律数据(模拟传输),然后再从μ律转成16比特的线性数据(模拟接收),再输出到编解码器
上图给出了按μ律压扩算法的输入输出特性曲线,μ为确定压缩量的参数,它反映最大量化间隔和最小量化间隔之比。
由图可见,μ值越大,压缩量越大。
由于μ律压扩的输入和输出关系是对数函数关系,所以这种编码又称为对数PCM。
A律压扩与μ律压扩相比,则压缩的动态范围略小些,小信号振幅时质量要比μ律稍差。
无论是A律还是μ律算法,它们的特性在输入信号振幅小时都呈线性,在输入信号振幅大时呈对数压缩特性。
对于采样频率为8kHz,样本精度为16位的输入信号,使用A律压扩或μ律压扩编码,经过PCM编码器之后每个样本的精度为8位,输出的数据率为64kb/s。
这个数据就是CCITT,(国际电话与电报顾问委员会)推荐的G.711标准:
话音频率脉冲编码调制。
U律的扩展可定义为:
U律扩展的线性表如下:
扩展过的码字
偏值得输入
段值,量化值
比特:
654321x
比特:
1110987654321x
000abcd
000000xabcd1
001abcd
0000001abcd1
010abcd
000001abcd1x
011abcd
00001abcd1xx
100abcd
0001abcd1xxx
101abcd
001abcd1xxxx
110abcd
01abcd1xxxxx
111abcd
1abcd1xxxxxx
2TMS320C5X的硬件结构
2.1C55X的CPU体系结构
C55X有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位地址总线,这些总线分别与CPU相连。
总线通过存储单元接口(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。
这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次16位数据写。
C55X根据功能的不同将CPU分为4个单元,指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)、和数据计算单元(D)。
读程序地址总线(PDA)上传送24位的程序代码地址,由读程序总线(PB)将32位的程序代码送入指令缓冲单元进行译码[1]。
2.2指令缓冲单元(I)
C55X的指令缓冲单元有指令缓冲队列IBQ和指令译码器组成。
在每个CPU周期内,I单元将从程序数据接收的4B程序代码放入指令缓冲队列,指令译码器从队列中取6B程序代码,根据指令的长度可对8位、16位、24位、32位和48位的变长指令进行译码,然后把译码数据送入P单元、A单元和D单元去执行。
2.3程序流程单元(P)
程序流程单元有程序地址产生电路和寄存器组凑成。
程序流程单元产生所有程序空间的地址,并控制指令的读取顺序。
程序地址产生逻辑电路的任务是产生读取空间的24位地址。
一般情况下,它产生的是连续地址,如果指令要求读取非连续地址的程序代码时,程序地址产生逻辑电路能够接收来自I单元的立即数和来自D单元的寄存器值,并将产生的地址传送到PAB。
在P单元中使用的寄存器分为5种类型。
●程序流寄存器:
包括程序计数器、返回地址寄存器和控制流程关系寄存器。
●块重复寄存器:
包括块重复寄存器0和1(BRC0、BRC1)BRC1的保存寄存器(BRS1)、块重复起始地址寄存器0和1以及块重复结束地址寄存器0和1。
●单重复寄存器:
包括单重复寄存器和计算单重复寄存器。
●中断寄存器:
包括中断标志寄存器0和1、中断使能寄存器0和1以及调试中断使能寄存器0和1。
●状态奇存期:
包括状态寄存器0,1,2和3。
2.4地址程序单元(A)
地址程序单元包括数据地址产生电路、算术逻辑电路和寄存器组构成。
数据地址产生电路能够接收来自I单元的立即数和来自A单元的寄存器产生读取数据空间的地址。
对于使用间接寻址模式的指令,有P单元向DAGEN说明采用的寻址模式。
A单元包括一个16位的算术逻辑单元,它既可以接收来自I单元的立即数也可以与存储器、I/O空间、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信。
A单元包括的寄存器有以下几种类型。
●数据页寄存器:
包括数据页寄存器和接口数据页寄存器;
●指针:
包括系数数据指针寄存器、堆栈针寄存器和8个辅助寄存器;
●循环缓冲寄存器:
包括循环缓冲大小寄存器、循环缓冲起始地址寄存器;
●临时寄存器:
包括临时寄存器。
2.5数据计算单元(D)
数据计算单元由移位器、算数逻辑电路、乘法累加器和寄存器组构成。
D单元包含了CPU的主要运算部件。
D单元移位器能够接收来自I单元的立即数,能够与存储器、I/O单元、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信,此外,还可以向D单元的ALU和A单元的ALU提供移位后的数据。
移位可以完成以下操作:
●对40位的累加器可以完成向左最多32位的移位操作,移位数乐意从零食寄存器读取或由指令中的常数提供;
●对于16位寄存器、存储器或I/O空间数据可完成左移31位或32位的移位操作;
●对于16位立即数可完成向左移最多15位的移位操作。
3语音信号扩展U律设计过程
设计步骤
(1)连接好DSP开发系统,运行CCS软件;
(2)设计程序或键入下面的参考程序并保存(文件名设为jia)
(3)新建两个工程,分别添加jia以及链接命令文件(.cmd文件);
(4)向工程添加
(5)编译、链接工程,生成.Out文件;
(6)装载.out文件,运行;
(7)找错至无错误
(8)在view下运行两程序,出现结果框图。
(9)改变参数,重新设置其工作的参数,重复以上步骤并比较;
4语音信号U律设计软件程序
存储器的分配(5402.cmd)
MEMORY
{
PAGE0:
VECS:
origin=0080h,length=0080h/*InternalProgramRAM*/
PRAM:
origin=7600h,length=8000h/*InternalProgramRAM*/
PAGE1:
SCRATCH:
origin=0060h,length=0020h/*ScratchPadDataRAM*/
DMARAM:
origin=0C00h,length=0300h/*DMAbuffer*/
DATA:
origin=1100h,length=0080h/*InternalDataRAM*/
STACK:
origin=1180h,length=0560h/*StackMemorySpace*/
INRAM:
origin=1900h,length=0100h/*InternalDataRAM*/
HPRAM0:
origin=1A00h,length=0002h/*HPImemoryaccessiblebyHostandDSP*/
HPRAM1:
origin=1A02h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/
HPRAM2:
origin=1C82h,length=0280h/*HPImemoryaccessiblebyHostandDSP*/
EXRAM:
origin=1F10h,length=9000h/*ExternalDataRAM*/
}
SECTIONS
{
.cinit>PRAMPAGE0
.text>PRAMPAGE0
.vectors>VECSPAGE0
init_var>PRAMPAGE0
detect>PRAMPAGE0
vrcprg>PRAMPAGE0
matprg>PRAMPAGE0
.stack>STACKPAGE1
.trap>SCRATCHPAGE1
.const>EXRAMPAGE1
.data>EXRAMPAGE1
.bss>EXRAMPAGE1
.cio>EXRAMPAGE1
.switch>EXRAMPAGE1
tables>EXRAMPAGE1
var>EXRAMPAGE1
svctab>EXRAMPAGE1/*SS_VLSPtable*/
vctab>EXRAMPAGE1/*VLSPtable*/
uvctab>EXRAMPAGE1/*UVLSPtable*/
cuvtab>EXRAMPAGE1/*Stochasticcodebook*/
cdbktab>EXRAMPAGE1/*variouscodebooktables*/
logtab>EXRAMPAGE1/*tableforlog2*/
powtab>EXRAMPAGE1/*tableforpow2*/
hamtab>EXRAMPAGE1/*tableforhamming*/
lgwtab>EXRAMPAGE1/*tableforlagwindow*/
acostab>EXRAMPAGE1/*tableforarccos*/
sqrtab>EXRAMPAGE1/*tableforsquareroot*/
acbtab>EXRAMPAGE1/*tableforthresholdsinacb*/
pm03tab>EXRAMPAGE1/*tableforx^(-0.3)computation*/
costab>EXRAMPAGE1/*tableforcosine*/
V23>INRAMPAGE1
FSK>INRAMPAGE1
hpibuff0>HPRAM0PAGE1
hpibuff1>HPRAM1PAGE1
hpibuff2>HPRAM2PAGE1
dma_buff>DMARAMPAGE1
}
/*主程序设计*/
/*语音采集及回放程序*/
/*用U律进行扩展及解压*/
/*采用AD50进行A/D,D/A转换*/
/*灯循环闪烁程序开始*/
/*L0:
录音*/
/*L1:
放音*/
#include
#include
#include
#include
/*宏定义*/
#defineSIGN_BIT(0x80)/*SignbitforaA-lawbyte.*/
#defineQUANT_MASK(0xf)/*Quantizationfieldmask.*/
#defineNSEGS(8)/*NumberofA-lawsegments.*/
#defineSEG_SHIFT(4)/*Leftshiftforsegmentnumber.*/
#defineSEG_MASK(0x70)/*Segmentfieldmask.*/
/*函数声明*/
voiddelay(s16period);
voidled(s16cnt);
voidinitcodec(void);
voidflashenable(void);
unsignedchardata2alaw(s16pcm_val);
intalaw2data(unsignedchara_val);
staticintsearch(intval,short*table,intsize);
/*全局变量*/
HANDLEhHandset;
s16data;
s16data1;
u16i=0;
u16temp1;
u16j=0;
u16k,l=0;
u8temp2;
u16buffer[20000];
staticshortseg_end[8]={0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF};
/*主函数*/
voidmain()
{
if(brd_init(100))
return;
led
(2);//闪灯两次
initcodec();//初始化codec
flashenable();//选择片外FLASH为片外存储器
/*
delay(100);
brd_led_toggle(BRD_LED0);
for(i=0x9000;i<0xefff;i++)
{
REG_WRITE(i,*(volatileu16*)DRR1_ADDR(HANDSET_CODEC));
delay(20);
}
brd_led_toggle(BRD_LED1);
delay(200);
for(i=0x9000;i<0xefff;i++)
{
*(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i);
delay(20);
}
brd_led_toggle(BRD_LED2);
*/
while
(1)
{
while(!
MCBSP_RRDY(HANDSET_CODEC)){};//等待接收handset处的采样
brd_led_toggle(BRD_LED0);
data=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC);//从handset处读取
采样
temp1=data2alaw(data);//对采样进行U律扩展
/*把低地址数据放在高八位高地址数据放在低八位*/
i=i+1;
if(i%2==1)
{
buffer[j]=(temp1<<=8);
/*奇数数据左移8位temp1=abcdefgh00000000
buffer[j]=temp1*/
}
else
{
buffer[j]=(buffer[j]|temp1);
/*偶数数据与temp1取或组成新的数据
buffer[j]=abcdefghiabcdefghi*/
j++;//j加1
}
if(i>=40000)
{
i=0;
}
if(j>=20000)
{
j=0;
brd_led_disable(BRD_LED0);
brd_led_toggle(BRD_LED1);
//点亮二极管1表示放音开始
/*放音部分*/
for(k=0;k<40000;k++)
{
if(k%2==0)
{
temp2=(buffer[l]>>8)&0x0ff;
}
else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 技术 课程设计 语音 信号 扩展