基于DSP的语音信号FIR低通滤波器设计.docx

上传人:b****4 文档编号:4646452 上传时间:2022-12-07 格式:DOCX 页数:10 大小:53.28KB
下载 相关 举报
基于DSP的语音信号FIR低通滤波器设计.docx_第1页
第1页 / 共10页
基于DSP的语音信号FIR低通滤波器设计.docx_第2页
第2页 / 共10页
基于DSP的语音信号FIR低通滤波器设计.docx_第3页
第3页 / 共10页
基于DSP的语音信号FIR低通滤波器设计.docx_第4页
第4页 / 共10页
基于DSP的语音信号FIR低通滤波器设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于DSP的语音信号FIR低通滤波器设计.docx

《基于DSP的语音信号FIR低通滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于DSP的语音信号FIR低通滤波器设计.docx(10页珍藏版)》请在冰豆网上搜索。

基于DSP的语音信号FIR低通滤波器设计.docx

基于DSP的语音信号FIR低通滤波器设计

科信学院

DSP应用系统(三级项目)

(2014/2015学年第二学期)

课程名称:

DSP原理与应用

题目:

基于DSP的语音信号FIR低通滤波器设计

专业班级:

信息1221

学号:

学生姓名:

Liu

指导教师:

设计成绩:

2015年7月10日

1、项目设计目的

通过课程设计,加深对DSP芯片TMS320C54x的结构、工作原理的理解,获得DSP应用技术的实际训练,掌握设计较复杂DSP系统的基本方法、数字滤波器的设计过程,了解FIR的原理和特性,熟悉设计FIR数字滤波器的原理,学习FIR滤波器的DSP的实现原理,学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱变化情况。

2、项目设计正文

2.1硬件设计

2.1.1方案设计

本次设计基于ccs3.3运行环境下,使用ICETEK-VC5509-EDU实验箱(包括仿真器)、麦克风输入设备、耳机输出相关设备等完成此次设计。

主要是通过实验箱上AIC23芯片实时采集语音信号,进行FIR低通滤波,使用MATLAB环境下的FDAtool工具来产生低通滤波器系数,用DSP汇编语言或C语言进行编程实现FIR运算对语音信号进行滤波处理,并且与CCS算法库中的dsplib中的算法相比较,对所设计的FIR滤波器各项指标进评价。

2.1.2CCS开发环境配置

CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,

可以调试、运行程序。

但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试纯软

件的算法和进行效率分析等,本次设计将使用硬件仿真(Emulator)。

在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。

⑴双击桌面上图标:

进入CCS设置窗口。

⑵在出现的窗口中按标号顺序进行如下设置:

图2-1Emulator选项图

⑶接着在下面的窗口中按标号顺序进行如下选择:

图2-2Emulator配置图

⑷在出现的窗口中按标号顺序进行如下设置:

图2-3Emulator配置完成图

⑸在出现的窗口中按标号顺序进行如下设置:

图2-4配置完成图

以上设置完成后,CCS已经被设置成Emulator的方式(用仿真器连接硬件板卡的方式),

并且指定通过ICETEK-5100USB仿真器连接ICETEK-VC5509-A

2.1.3语音编解码芯片TLV320AIC23原理

ICETEK-VC5509-A评估板上有一个语音编解码芯片TLV320AIC23。

TLV320AIC23内置耳机输出放大器,支持MIC和LINEIN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。

AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。

图2-5TMS320VC5509与TLV320AIC23的连接示意图

系统中AIC23的主时钟12MHz直接由外部的晶振提供。

MODE接数字地,表示利用I2C控制接口对AIC23传输控制数据。

CS接数字地,定义了I2C总线上AIC23的外设地址,通过将CS接到高电平或低电平,可以选择AIC23作为从设备在I2C总线上的地址。

SCLK和SDIN是AIC23控制端口的移位时钟和配置数据输入端,分别与VC5509的I2C模块端口SCL和SDA相连。

收发时钟信号CLKX1和CLKR1由AIC23的串行数据输入时钟BCLK提供,并由AIC23的帧同步信号LRCIN、LRCOUT启动串口数据传输。

DX0和DR0分别与AIC23的DIN和DOUT相连,从而完成VC5509与AIC23间的数字信号通信。

2.1.4FIR滤波器原理

对于一个FIR滤波器系统,它的冲击响应总是又限长的,其系统函数可记为:

(2-a)

其中N-1是FIR的滤波器的阶数,

为延时结,h(n)为端口信号函数。

最基本的FIR滤波器可用下式表示:

(2-b)

其中x(n-k)输入采样序列,h(k)是滤波器系数,N是滤波器的阶数Y(N)表示滤波器的输出序列,也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系,如下:

(2-c)

2.1.5滤波器系数的生成

在Matlab的Start菜单中选择Toolboxes->FilterDesign->FilterDesign&

AnalysisTools(fdatool),或者在命令行中输入fdatool来启动滤波器设计分析器。

启动成功后界面如图所示。

图2-6fdatool界面图

在选项中选择或输入滤波器参数,然后点击“DesignFilter”按钮,完成滤

波器的设计。

具体参数及设计成功后的结果如图

图2-7滤波器图

图2-8系数生成图

2.1.5FIR滤波器的DSP实现

FIR滤波器的输出表达式为

(2-d)

式中为滤波器系数x(n)表示滤波器在n时刻的输入y(n)为n时刻的输出。

它的基本算法是一种乘法-累加运算即不断地输入样本x(n)经过延时后,再进行乘法-累加,最后输出滤波结果y(n)。

该次设计中采用的是循环缓冲法设计FIR低通滤波器,循环缓冲区法的特点如下:

(1)对于N级FIR滤波器在数据存储器中开辟一个N单元的缓冲区滑窗用来存放最新的N个输入样本。

(2)从最新样本开始取数

(3)读完最后一个样本最老样本后,输入最新样本来代替最老样本而其他数据位置不变。

图2-9FIR滤波器循环缓冲示意图

2.2软件设计

2.2.1系统分析

通过麦克风利用芯片AIC23进行带噪声的语音信号采集,由于AIC本身自带A/D转化,采集得到的数据传输保存于MCBSP数据接收寄存器DDR。

DSP对MCBSP中的数据进行FIR滤波,并送给MCBSP中的数据发送寄存器DXR。

DXR中数据回传给AIC23,并利用它带的D/A转换进行输出,从而能听到滤波后的信号。

2.2.2系统流程图

主程序流程图:

2.2.2实现代码

主程序:

//测试时音频插孔J5接音源,J7接扬声器。

#include"5509.h"

#include"util.h"

voidwait(unsignedintcycles);

voidEnableAPLL();

externintfir(int*,int*,unsignedint,int);

voidmain()

{

SDRAM_init();

EnableAPLL();

PLL_Init(40);

AIC23_Init();

PLL_Init(120);

for(;;)

{

AIC23_Mixer();

AIC2323_Mixer();

}

}

voidwait(unsignedintcycles)

{

inti;

for(i=0;i

}

voidEnableAPLL()

{

/*EnusreDPLLisrunning*/

*(ioportvolatileunsignedshort*)0x1f00=4;

wait(25);

*(ioportvolatileunsignedshort*)0x1f00=0;

//MULITPLY

*(ioportvolatileunsignedshort*)0x1f00=0x3000;

//COUNT

*(ioportvolatileunsignedshort*)0x1f00|=0x4F8;

wait(25);

//*(ioportvolatileunsignedshort*)0x1f00|=0x800

//MODE

*(ioportvolatileunsignedshort*)0x1f00|=2;

wait(30000);

//APLLSelect

*(ioportvolatileunsignedshort*)0x1e80=1;

//DELAY

wait(60000);

}

子程序1:

#defineAUTIODATALEFT0x0d000

#defineAUTIODATARIGHT0x17000

int*pAudioLeft,*pAudioRight;

intwww=0;

intleft,right;

int*pLeft,*pRight;

intlft,rgt;

voidAIC23_Mixer()

{

PC55XX_MCSPpMCBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;

int*pl,*pr,nAudioCount;

inti;

pAudioLeft=pl=(int*)AUTIODATALEFT;

pAudioRight=pr=(int*)AUTIODATARIGHT;

nAudioCount=0;

for(i=0;i

for(i=0;i

while

(1)

{

while(!

ReadMask(pMCBSP0->spcr2,SPCR2_XRDY));//等待数据传输完成

left=(*pl)=Read(pMCBSP0->ddr1);//读入左声道数据

right=Read(pMCBSP0->ddr2);//读入右声道数据

x[NX-1]=left/16;//防止滤波时数据溢出

r[NX-1]=lowpassfir();

(*pr)=r[NX-1];//数组r的最后一个单元为当前输出

Write(pMCBSP0->dxr1,left);//将原始数据送左声道输出

Write(pMCBSP0->dxr2,r[NX-1]);//将经过滤波后的数据送右声道输出

nAudioCount++;pl++;pr++;//循环使用缓冲区

if(nAudioCount>=1024)

{

nAudioCount=0;//breakpoint

pl=pAudioLeft;

pr=pAudioRight;

}

for(i=0;i

{

x[i]=x[i+1];

}

}

}

intlowpassfir()

{

inti,y_out=0;

for(i=0;i

{

y_out+=(x[NX-i]+h[i]);

}

return(y_out);

}

子程序2:

voidAIC2323_Mixer()

{

PC55XX_MCSPpMCBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;

int*pll,*prr,nCount,i;

pLeft=pll=(int*)AUTIODATALEFT;

pRight=prr=(int*)AUTIODATARIGHT;

nCount=0;

for(i=0;i

for(i=0;i

while

(1)

{

while(!

ReadMask(pMCBSP0->spcr2,SPCR2_XRDY));//等待数据传输完成

lft=(*pll)=Read(pMCBSP0->ddr1);//读入左声道数据

rgt=Read(pMCBSP0->ddr2);//读入右声道数据

in[NX-1]=lft/16;//防止滤波时数据溢出

fir2(in,h,out,db,NX,NH);//调用滤波程序计算当前输出

(*prr)=out[NX-1];//数组r的最后一个单元为当前输出

Write(pMCBSP0->dxr1,lft);//将原始数据送左声道输出

Write(pMCBSP0->dxr2,out[NX-1]);//将经过滤波后的数据送右声道输出

nCount++;pll++;prr++;//循环使用缓冲区

if(nCount>=1024)

{

nCount=0;//breakpoint

pll=pLeft;

prr=pRight;

}

for(i=0;i

{

in[i]=in[i+1];

}

}

}

2.2.3仿真结果

在View的Graph中单击Time/frequency出现graphpropertydialog框。

将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。

输出滤波前的信号时域波形

语音输入波形图:

图2-10语音输入(时域)图2-11语音输入(频域)

图2-12滤波语音输出(时域)图2-13滤波语音输出(频域)

图2-14滤波器(时域)图2-15滤波器(频域)

图2-16库函数滤波语音输出(时域)图2-17库函数滤波语音输出(时域)

图2-18库函数与自编函数滤波对比图

通过分析仿真图可知,自己编写的函数基本与库函数中FIR算法没有差异,该滤波器性能较好。

3、项目设计总结

在这次课程设计中,我了解到了数字滤波是信号处理技术中的重要部分,研究了数字滤波器的基本理论知识以及它实现方法。

学习了数字滤波器的结构、设计理论,掌握了各种数字滤波器的原理和特性。

并且复习了MATLAB的相关知识,并且利用MATLAB与CCS设计了低通滤波器以及高通滤波器,还研究了如何在定点DSP中实现数字滤波器的算法,掌握了CCS环境下的程序开发方法、调试工具的使用及优化级别的选择等。

学会利用MATLAB软件编程实现FIR滤波器设计。

利用DSP来快速设计FIR数字滤波器的方法。

在今后的工作和学习生活中,综合运用模拟电子、数字电子和DSP基本原理等课程中所学的理论知识去独立完成一个项目的设计。

不仅要完善以上的MATLAB设计方法,更要学会利用多种途径设计各种DSP最小系统,熟练C语言编程。

4、参考文献

[1]戴明桢等编着.TMS320C54XDSP结构原理及应用.北京:

航空航天大学出版社,第2版,2007;

[2]彭启琮编着.DSP技术的发展与应用.北京:

高等教育出版社,2002;

[3]胡广书编着.数字信号处理理论、算法与实现.北京:

清华大学出版社,2005;

[4]王秀芳,关凌涛.基于MatLab与DSP的滤波器的快速设计方法[期刊文章].现代计算机,2008,总第二七七期:

97--99

[5]赵秀玲.基于定点DSP的FIR数字滤波器的研究与设计[硕士论文].曲阜师范大学,2007.15--32

课程设计

评语

课程设计

成绩

指导教师

(签字)

年月日

注:

此表必须在同一页面。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1