dsp数字信号处理课程设计报告Word文档下载推荐.docx
- 文档编号:16881716
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:19
- 大小:348.61KB
dsp数字信号处理课程设计报告Word文档下载推荐.docx
《dsp数字信号处理课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《dsp数字信号处理课程设计报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
4.4延时子函数12
4.55402.cmd文件12
4程序运行与调试15
4.1实验结果15
总结17
参考文献18
1课题综述
1.1课题来源
语音信号是信息的重要形式,语音信号处理有着广泛的应用领域,而语音压缩在语音信号的传输、存储等方面有非常广泛的作用,而且在通信领域中已经有较成熟的发展和广泛应用。
本设计要求采用DSP及其A/D、D/A转换器进行语音信号的压缩、存储和回放。
在通信应用领域中,压缩语音信号的传输带宽或降低电话信道的传输码率,一直是设计人员追求的目标。
语音编码在实现这一目标的过程中担当着重要的角色,语音编码是压缩语音信号的数字表示,而且是这些信号所需比特数最小的算法。
可以说,语音压缩技术的发展和人类信息技术的发展息息相关。
因此,对语音压缩技术的研究具有重要的现实意义。
1.2预期目标
(1)使用DSP实现语音的压缩和解压缩,算法自行定义。
(2)将从MIC输入口实时采集的语音信号,通过A/D转换器进行压缩后存储到DSP的片内和片外RAM存储器中,存储时间不小于10秒。
(3)存储器存满之后,使用DSP进行实时解压缩,并从SPEAKER输出口进行回放输出。
(4)使用指示灯对语音存储和回放过程进行指示。
(5)利用多种算法进行语音压缩存储等,比较各算法的特点。
1.3前置知识
基于TMS320VC54X为核心的语音压缩与回放需要掌握和了解如下几个知识:
语音的采集与编码、量化、DPCM&
ADPCM、采集与输出模块、a律压缩、A/D、D/A,以及DSP芯片选择等。
2系统设计及分析
2.1基础知识
2.1.1语音编码
语音编码一般分为两类:
一类是波形编码,一类是被称为“声码器技术”的编码。
波形编码的最简单形式就是脉冲编码调制(Pulsecodemodulation),这种方式将语音变换成与其幅度成正比的二进制序列,而二进制数值往往采用脉冲表示,并用脉冲对采样幅度进行编码,所以叫做脉冲编码调制。
脉冲编码调制没有考虑语音的性质,所以信号没有得到压缩。
2.1.2量化
脉冲编码调制用同等的量化级数进行量化,即采用均匀量化,而均匀量化是基本的量化方式。
但是均匀量化有缺点,在信号动态范围较大而方差较小的时候,其信噪比会下降。
国际上有两种非均匀量化的方法:
A律和u律,u律是最常用的一种。
在美国,7位u律是长途电话质量的标准。
而我国采用的是A律压缩,而且有标准的A律PCM编码芯片。
2.1.3DPCM&
ADPCM
降低传输比特率的方法之一是减少编码的信息量,这要消除语音信号中的冗余度。
相邻的语音样本之间存在明显的相关性,因此对相邻样本间的差信号进行编码,便可使信息量得到压缩。
因为差分信号比原语音信号的动态范围和平均能量都小。
这种编码叫DifferentialPCM,简称DPCM,即差分脉冲编码调制。
ADPCM即自适应差分脉冲编码调制,是包括短时预测的编码系统。
CCITT(国际电报电话咨询委员会)在1984年提出的32kbit/s的编码器建议就是采用ADPCM作为长途传输中的国际通用语音编码方案。
这种ADPCM编码方案达到64kbit/sPCM的语音传输质量,并具有很好的抗误码性能。
2.1.4a律压缩
A律编码(A-law)是ITU-T(国际电联电信标准局)CCITTG.712定义的关于脉冲编码的一种压缩/解压缩算法。
世界上大部分国家采用A律压缩算法。
美国采用mu律算法进行脉冲编码。
令量化器过载电压为1,相当于把输入信号进行归一化,那么A律对数压缩定义为:
当0<
=x<
=1/A时,f(x)=(Ax)/(1+lnA)
当1/A<
=1时,f(x)=(1+lnAx)/(1+lnA)
在现行的国际标准中A=87.6,此时信号很小时(即小信号时),从上式可以看到信号被放大了16倍,这相当于与无压缩特性比较,对于小信号的情况,量化间隔比均匀量化时减小了16倍,因此,量化误差大大降低;
而对于大信号的情况例如x=1,量化间隔比均匀量化时增大了5.47倍,量化误差增大了。
这样实际上就实现了“压大补小”的效果。
按上式得到的A律压扩特性是连续曲线,A的取值不同其压扩特性亦不相同,而在电路上实现这样的函数规律是相当复杂的。
为此,人们提出了数字压扩技术,其基本思想是这样的:
利用大量数字电路形成若干根折线,并用这些折线来近似对数的压扩特性,从而达到压扩的目的。
下图2-1为a律压缩的示意图
图2-1a律压缩示意图
2.2实验方案
用板内的AD/DA转换器AD50将由MIC输入的模拟信号转换为16位数字信号送入DSP板中进行压缩处理,压缩处理后的数据经过解压后再送至DA转换器转换为模拟信号,由SPEAKER口输出,压缩和解压缩用A律格式,从而实现语音信号的采集压缩与回放。
图2-2总体框架图
2.3程序流程图
基于TMS320VC54X的语音压缩与回放程序流程图如下图所示。
图2-4程序流程图
3原理图
图3-1实验原理图
4程序代码
4.1主函数
/*******************************main************************************/
voidmain()
{
if(brd_init(100))//初始化DSK板,失败退出
return;
/*blinktheledsacoupletimes*/
for(m=6;
m>
0;
m--)
{
brd_led_toggle(BRD_LED0);
/*brd_delay_msec(1000);
*/
delay(1000);
brd_led_toggle(BRD_LED1);
brd_led_toggle(BRD_LED2);
}
/*OpenHandsetCodec*/
hHandset=codec_open(HANDSET_CODEC);
/*Acquirehandletocodec*/
/*Setcodecparameters*/
codec_dac_mode(hHandset,CODEC_DAC_15BIT);
/*DACin15-bitmode*/
codec_adc_mode(hHandset,CODEC_ADC_15BIT);
/*ADCin15-bitmode*/
codec_ain_gain(hHandset,CODEC_AIN_6dB);
/*6dBgainonanaloginputtoADC*/
codec_aout_gain(hHandset,CODEC_AOUT_MINUS_12dB);
/*-12dBgainonanalogoutputfromDAC*/
codec_sample_rate(hHandset,SR_16000);
/*16KHzsamplingrate*/
/*Pollinganddigitalloopback*/
while
(1)
brd_led_disable(BRD_LED1);
//关闭led1
brd_led_disable(BRD_LED2);
//关闭led2
brd_led_toggle(BRD_LED0);
//开启led0
/*Waitforsamplefromhandset*/
while(!
MCBSP_RRDY(HANDSET_CODEC))
{data=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC);
};
//采集语音信号
temp1=data2alaw(data);
//temp1=data2ulaw(data);
//保存压缩后的数据把低地址数据放在高八位高地址数据放在第八位
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>
=72000)
i=0;
if(j>
=36000)
j=0;
brd_led_disable(BRD_LED0);
//放音
brd_led_disable(BRD_LED2);
for(k=0;
k<
72000;
k++)
{
if(k%2==0)
temp2=(buffer[l]>
>
8)&
0x0ff;
else
{
temp2=buffer[l]&
l++;
}
if(l>
l=0;
data1=alaw2data(temp2);
while(!
MCBSP_XRDY(HANDSET_CODEC)){};
*(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=data1*4;
}
brd_led_disable(BRD_LED0);
brd_led_disable(BRD_LED1);
brd_led_toggle(BRD_LED2);
//放音结束
for(m=0;
m<
3;
m++)delay(1000);
36000;
m++)buffer[m]=0;
}
}
}
1)初始化DSK:
if(brd_init(100))
2)初始化A/D50C程序:
/*获取设置DAC的句柄*/
//Acquirehandletocodec/*设置DAC的工作参数*/
//DACin15-bitmode
//ADCin15-bitmode
codec_ain_gain(hHandset,CODEC_AIN_12dB);
//6dBgainonanaloginputtoADC
codec_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB);
//-6dBgainonanalogoutputfromDAC
//16KHzsamplingrate
}
3)闪灯程序:
for(m=6;
4)语音信号采集与回放程序
//判断MCBSP是否做好接收准备
MCBSP_RRDY(HANDSET_CODEC)){};
//从A/D读取转换数据
data=*(volatileu16*)DRR1_ADDR(HANDSET_CODEC);
temp1=data2alaw(data);
//将数据写入D/A转换器
data1=alaw2data(temp2);
*(volatileu16*)DXR1_ADDR(HANDSET_CODEC)=data1*4;
5)数据存储与处理
i=i+1;
{
}
Iif(k%2==0)
temp2=(buffer[l]>
4.2a律压缩子函数
/*****************************a律压缩***********************************/
unsignedchardata2alaw(intdata)
unsignedchari,sign,achord,astep;
unsignedintoutput,absol,temp;
temp=absol=abs(data);
sign=(data>
=0)?
1:
//判定符号:
正数=1,负数=0
for(i=0;
i<
16;
i++)//确定temp中出现1的最高位
{
output=temp&
0x8000;
if(output)break;
//temp左移i位后最高位为1
temp<
=1;
achord=11-i;
//段值
if(achord<
=0)
achord=0;
astep=(absol>
1)&
0x0F;
//段值为0,将absol左移1位得到量化值
else
achord)&
//段值不为0,将absol左移
achord<
=4;
//achord位得量化值
output=achord+astep;
//输出值的绝对值
if(absol>
4095)
//超过最大值4095,输出最大值0x7f
output=0x7F;
if(sign)
returnoutput^=0xFF;
//返回含有符号信息的输出值
else
returnoutput^=0x7F;
4.3a律解压缩子函数
/*******************************a律解压缩*********************************/
intalaw2data(unsignedcharinput)
{
unsignedcharsign,achord,astep;
unsignedinttemp;
intdata;
temp=input^0xFF;
//得到含有符号信息的压缩值
sign=(temp&
0x80)>
7;
//符号位
achord=(temp&
0x70)>
4;
//段值
astep=temp&
//量化值
astep<
=1;
if(!
achord)//段值为0,输出值为量化值左移1位后加1
data=astep+1;
data=astep+33;
//扩展后数值中的6位非零值
data<
=achord-1;
if(sign)
return-data;
//有符号的扩展值
returndata;
4.4延时子函数
//延时
voiddelay(intperiod)
inti,j;
for(i=0;
i<
period;
i++)
for(j=0;
j<
period>
1;
j++);
4.55402.cmd文件
实验中还需要添加5402.cmd文件,5402.cmd文件及其解释:
MEMORY
PAGE0:
VECS:
origin=0080h,length=0080h/*内部程序RAM*/
PRAM:
origin=0100h,length=0FFFh/*内部程序RAM*/
PAGE1:
SCRATCH:
origin=1000h,length=0020h/*ScratchPadDataRAM*/
DMARAM:
origin=1020h,length=0300h/*DMA缓存*/
DATA:
origin=1320h,length=0080h/*内部数据RAM*/
STACK:
origin=1400h,length=0500h/*堆栈内存空间*/
INRAM:
origin=1900h,length=0100h/*内部数据RAM*/
HPRAM0:
origin=1A00h,length=0002h/*HPI*/
HPRAM1:
origin=1A02h,length=0280h/*HPI*/
HPRAM2:
origin=1C82h,length=0280h/*HPI*/
EXRAM:
origin=1F10h,length=0EA00h/*外部内存*/
SECTIONS
.cinit>
PRAMPAGE0
.text>
.vectors>
VECSPAGE0
init_var>
detect>
vrcprg>
matprg>
.stack>
STACKPAGE1
.trap>
SCRATCHPAGE1
.const>
EXRAMPAGE1
.data>
.bss>
.cio>
.switch>
tables>
var>
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>
hpibuff0>
HPRAM0PAGE1
hpibuff1>
HPRAM1PAGE1
hpibuff2>
HPRAM2PAGE1
dma_buff>
DMARAM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dsp 数字信号 处理 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)