基于DSP的数字滤波器的设计与仿真_第1页
基于DSP的数字滤波器的设计与仿真_第2页
基于DSP的数字滤波器的设计与仿真_第3页
基于DSP的数字滤波器的设计与仿真_第4页
基于DSP的数字滤波器的设计与仿真_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录2123摘要 2TOC\o"1-3"\h\u22202第1章绪论 345671.1基于DSP的IIR滤波器设计课题背景 3541.2本设计主要研究内容与方法 323840第2章IIR数字滤波器的设计 3309072.1IIR数字滤波器的基本概念 3203702.2IIR滤波器的结构 4194632.2.1直接型 466292.2.2级联型 5215112.2.3并联型 5128352.3IIR滤波器的设计方法 6192582.4模拟滤波器的离散化 668812.4.1脉冲响应不变法设计IIR数字滤波器 731638第3章详细设计 818733第4章实验过程 9136154.1汇编语言实验步骤与内容 9181794.2实验过程中出现的错误及解决的办法 12213534.3CCS程序运行后的各种输出结果 13241304.4出现的错误及如何改正 143208汇编程序清单 1514457irr.prj文件内容: 1526316yuyinjiazao.m的程序如下: 18526参考文献 20摘要随着信息技术的发展,数字化时代已经到来,数字信号的处理逐步发展成为一门主流技术。滤波技术的发展,对信息处理技术的发展具有及其重要的作用,相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛,同时dsp(数字信号处理器)的出现也促进了数字滤波器的发展。本文讨论IIR数字滤波器在DSP上的实现思路,并对其实现方法进行了分析。该论文论述了IIR数字滤波器的设计原理及其在DSP上的实现思路,并对用DSP实现IIR滤波器的方法进行了分析。用MATLAB计算出IIR数字滤波器的系数,产生输入数据,应用CCS软件调试C和汇编程序,并用TMS320C54对IIR进行了仿真。关键词DSPMATLABIIRAbstrctAlongwiththedevelopmentofinformationtechnology,thedigitalagehasarrived,digitalsignalprocessinggraduallydevelopedintoadoormainstreamtechnology.Filteringtechnologydevelopment,thedevelopmentofinformationtechnologyanditsimportantrole,withrelativetotheanalogfilter,digitalfiltersnodrift,abletohandlethelow-frequencysignals,frequencyresponsebutmakeitveryclosetoidealcharacteristics,andtheprecisioncanreachhigh,easyintegrationetc,theseadvantagesdecidedthedigitalfiltersusedmorewidely,andDSP(digitalsignalprocessor)presencealsopromotedthedevelopmentofdigitalfilter.ThispaperdiscussesontheDSPIIRdigitalfilter,andtheimplementationideastoitsrealizationmethodsareanalyzed.ThispaperdiscussesthedesignprincipleofIIRdigitalfilterandtheimplementationapproachandDSPandIIRfilterwithDSPrealizethemethodsareanalyzed.MATLABcalculateIIRdigitalfiltercoefficients,producetheinputdata,appliedCCSsoftwaredebuggingCandassemblerofTMS320C54IIR,andsimulated.第1章绪论1.1基于DSP的IIR滤波器设计课题背景随着集成电路技术的发展,各种新型的大规模和超大规模集成电路不断涌现,集成电路技术与计算机技术结合在一起,使得数字信号处理系统的功能越来越强。数字信号处理技术逐渐发展成为一门主流技术,数字信号处理技术就是基于VLSI技术和计算机技术发展起来的一门重要技术。DSP技术已在通信、控制、信号处理、仪器仪表、医疗、家电等很多领域得到了越来越广泛的应用。数字滤波器在各种数字信号处理中发挥着十分重要的作用,用数字滤波器设计一直是信号处理领域的重要研究课题。常用的数字滤波器有IIR滤波器和FIR滤波器,其中IIR滤波器因具有结构简单、占用存储空间少、运算速度快、较高的计算精度和能够用较低的阶数实现、较好的选频特性等优点,得到了广泛应用。1.2本设计主要研究内容与方法主要是在学习信号分析与处理的基础知识后,应用MATLAB软件、CCS软件结合来设计基于DSP的IIR滤波器设计。应用MATLAB软件设计IIR数字滤波器:应用MATLAB中的工具FDATOOL工具设计滤波器的系数;在MATLAB中编译M文件,产生输入数据。应用DSP芯片的汇编语言与C语言进行编写程序,应用DSP集成软件开发环境CCS调试汇编程序与C程序,并用TMS320C54结合软件开发环境CCS来实现了IIR数字滤波的仿真。第2章IIR数字滤波器的设计数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,按频率特性可划分为:低通数字滤波器、高通数字滤波器、带通数字滤波器、带阻数字滤波器;根据数字滤波器冲激响应的时域特征,可分为无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。2.1IIR数字滤波器的基本概念无限脉冲响应滤波器是数字滤波器的一种,简称IIR数位滤波器(infiniteimpulseresponsefilter)。由于无限脉冲响应滤波器中存在反馈回路,因此对于脉冲输入信号的响应是无限延续的。iir滤波器有以下几个特点

1IIR数字滤波器的系统函数可以写成封闭函数的形式。

2IIR数字滤波器采用递归型结构,即结构上带有反馈环路。iir滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。3iir数字滤波器在计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个iir数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

4iir数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。

5iir单位响应为无限脉冲序列fir单位响应为有限的

6iir幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上;

fir幅频特性精度较之于iir低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变。这是很好的性质。无限脉冲响应滤波器的缺点:(1)脉冲响应为无限长:造成当输入数位讯号为有限长的时候,输出数位讯号会变成无限长。(2)比有限脉冲响应滤波器较不易最佳化。(3)不一定是稳定的:因为Z转换后所有的极点不一定都在单位圆内2.2IIR滤波器的结构IIR数字滤波器的单位脉冲响应h(n)是无限长的,结构上有输出到输入的反馈(频率采样结构除外),是递归型。滤波器的系统函数为:(2.1)由传递函数可知,用两个向量就可以对一个IIR滤波器进行表征。实现IIR滤波器可以采用直接形式、级联形式和并联形式3种结构。2.2.1直接型直接Ⅰ型:IIR滤波器的系统函数(2.3)对应的差分方程为从上式可以看出,是有两部分相加构成的:第一部分是一个对输入信号的节延时结构,每节延时抽头后加权相加,这是一个实现零点的横向结构网络;第二部分是一个对的延时结构,每级延时抽头后加权相加,因此是一个反馈网络。直接Ⅱ型:IIR滤波器的系统函数又可写为可视为分子多项式与分母多项式的倒数所构成的两个子系统函数的乘积,这相应与子系统级联。第一个子系统实现零点,第二个子系统实现极点,而且已知一个线性时不变系统,如果交换其子系统的次序,系统函数不发生改变。这种结构形式称为直接Ⅱ型。2.2.2级联型将IIR滤波器的系统函数的分子分母表达为因子的形式,即由于系统函数的系数都是实系数,故零、极点只有两种情况:或者是实根,或者是共轭复根。式中A为归一化常数,,,表示实零点,表示实极点,每一对共轭因子合并起来,就可以构成一个实系数的二阶因子。因此,任意系统均可由一阶和二阶子系统级联构成。级联结构的一个重要的优点是存储单元比较少,用硬件实现时,可以用一个二阶进行分时复用。级联结构的另一个特点是,其每一个基本节都关系到滤波器的一对极点和一对零点。2.2.3并联型将IIR滤波器的系统函数展成部分分式之和,即式中,由于系统函数的系数都是实系数,故,如果M<N,则上式不包括项;如果M=N,则项变为。一般IIR系统皆满足MN的条件。当M=N时,上式变为总系统函数为各部分悉数函数之和时,则表示其为各相应子系统的并联。所以上式可理解为一阶和二阶系统的并联组合。显然,并联结构速度快,也可以单独调整极点位置,但不能像级联那样直接调整零极点,因为并联型各二阶网络的零点,并非整个系统函数的零点。因此,当要求准确传输零点时,以采用级联型为宜。另外,并联型各基本节的误差互不影响。2.3IIR滤波器的设计方法IIR与FIR滤波器不论是在性能,还是在设计方法上都有很大区别。FIR滤波器可以根据给定的频率特性直接设计,而IIR滤波器则需要使用模拟滤波器设计方法进行设计。IIR滤波器的设计需要借助于模拟原型滤波器,再将模拟滤波器转化为数字滤波器,实现这一过程已有成熟完整的程序。进行模拟滤波器设计时,已有完整的设计公式和较为完整的图表可供选用,因此,设计IIR滤波器可以充分利用这些已有的资源。IIR滤波器的设计流程如下:根据一定规则,将给定的数字滤波器指标转化为相应的模拟滤波器指标。根据转化后的技术指标,设计模拟低通滤波器。根据一定规则将转化为。常用转化方法有冲激响应不变法和双线性变化法。如果需要设计高通、带通或带阻滤波器,则应首先将其技术指标转为低通模拟滤波器的技术指标,然后按新指标设计,再将转化为。MATLAB7.0工具箱提供了几个模拟滤波器设计函数,如Bessel低通模拟滤波器、Butterworth模拟低通滤波器、Chebyshew滤波器、椭圆滤波器等;工具箱还提供了从模拟低通滤波器向低通、高通、带通和带阻滤波器转化的函数。2.4模拟滤波器的离散化从模拟滤波器设计IIR数字滤波器就是要由列出的系统函数进一步得到。归根结底是一个由S平面到Z平面的交换,即模拟滤波器的离散化。这个交换要遵循两个基本目标:(1)的频率响应必须要模仿的频率响应,也就是S平面的虚轴应该映射到Z平面的单位圆上;(2)的因果稳定性,通过映射后仍应在多得到的中保持。工程上常用的只有脉冲响应不变法和双线性变换法两种。下面就对这两种方法进行介绍。2.4.1脉冲响应不变法设计IIR数字滤波器脉冲响应不变变换法,又称为标准z变换法,它能保证从模拟滤波器变换所得的数字滤波器的单位取样响应,就是以T为采样周期对相应的模拟滤波器的单位脉冲响应的等间隔采样,也就是的拉氏变换为的Z变换即为数字滤波器的系统函数的Z变换和的拉氏变换之间的关系为即时域的采样,使连续信号的拉氏变化在s平面上沿虚轴周期延拓,然后再经过的映射关系,将映射到z平面上,即得。这样,就实现了从S平面到Z平面的变换,模拟滤波器实现了离散化。将模拟滤波器的系统函数表达为如下部分分式形式则相应的单位脉冲响应是式中为单位脉冲响应。根据脉冲响应不变变换法的意义,数字滤波器的单位脉冲响应为所以,可得到数字滤波器的系统函数为由此可见,从间的变换关系为脉冲响应不变变换法主要用于设计某些要求在时域上能模仿模拟滤波器功能的数字滤波器。这种变换法的主要特点是:频率坐标的变换时现行的,即;具有频谱的周期延拓效应,只能用于限带的频响特性。采用脉冲响应不变第3章详细设计在本实验中使用MATLAB模拟产生信号,观察滤波前的时域波形和频域波形。MATLAB仿真后,使用得到的滤波器参数,进行DSP编程,在DSP中实现带通滤波,并使用CCS的频谱分析功能,查看DSP的滤波效果。MATLAB程序流程图如图3.1所示图3.1MATLAB程序流程图CCS汇编程序流程图如图3.2所示图3.2CCS汇编程序流程图第4章实验过程4.1汇编语言实验步骤与内容H(z)=MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计,根据指定的滤波器性能快速设计一个IIR,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现IIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。(1)在MATLAB中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图4.1所示.图4.1待滤波信号的时域图频域图利用FDATOOL设计IIR滤波器的参数,操作步骤如图4.2所示。图4.2FRI滤波器的参数打开Export,把Numerator改为B,如图4.3所示。图4.3Export设置已滤波的信号的时域和频域波形,如图4.4所示。图4.4已滤波信号时域波形已滤波信号频域波形图MATLAB滤波器设计工具在完成IIR设计后,如图4.5所示,在Exportas中选择16bit符号整数输出,然后单击OK按钮。生成iir.hC语言头文件。将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。图4.5MATLAB输出数值转换图(2)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。在CCSIDE中建立iir.pjt工程,用汇编语言编写处理主程序iir.asm。另外根据板上的存储器配置方式,编写存储器配置文件iir.cmd文件,将MATLAB生成的LHM.h和input1.dat文件拷贝到iir.pjt工程文件夹下,进行编译、链接,生成可执行文件iir.out。(3)加载初始化data数据,图4.6所示。图4.6data初始化图运行程序,查看输入输出波形,修改相应参数进行调试。4.2实验过程中出现的错误及解决的办法(1)在MATLAB程序设计中,采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。(2)IIR.m中的采样频率要和开始设置时的采样频率一致,否则结果会出现偏差。(3)在CCS中未定义标号,程序运行错误。(4)在.h文件中未把coeff顶格写,编译时出现错误。(5)未将iir.h和input.dat文件考入工程文件中。(6)间接寻址过程中,程序中丢失。(7)在View的Graph中单击Time/frequency出现graphpropertydialog框,未修改抽样点数。显示的图形出现差异4.3CCS程序运行后的各种输出结果在View的Graph中单击Time/frequency出现graphpropertydialog框。将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。输出滤波前的信号时域波形。首先,设置如图4.7所示,输出滤波前的信号时域波形。图4.7Graphpropertydialog设置框图单击OK后生成如下图4.8波形。图4.8滤波前后信号波形图图4.8上为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。修改相应设置,输出如图4.9下所示滤波前信号频谱。图4.9滤波前信号频谱波形图经过滤波后,时域波形频谱波形如图4.10所示。图4.10滤波后信号频谱图由上述的所有截图可知,输入参数中,通带截止频率和阻带截止频率是比较重要的两个参数,不宜过小,过小滤掉的高频成分太多,很难还原出远波形的形状,也不宜过大,过大滤波效果欠佳。在本课程设计中,通带截止频率选用4000Hz,阻带截止频率选用4500Hz,因此,显示图形时的,时域显示的抽样点数为1024,频域显示的带宽为0.5Hz。对比滤波前后信号的时域图4.8频谱波形图4.9和4.10可以知道,滤波前的时域信号的波形图的波形很杂乱,很难看出信号的周期性,滤波后周期性也相对的明显起来了;滤波前信号分布在整个频带上,滤波后阻带范围内的基本被滤掉,这些都可以从上述截图看出。4.4出现的错误及如何改正(1)建立新工程时,忘加.cmd文件,是编译出错;改正:向工程中添加.cmd文件。(2)生成输入数据时,采样频率设置过小,使采样后的数据丢失信息;改正:增大采样频率。(3)在MATLAB中,利用FDATOOL生成滤波器系数时,由于大意,把设置的阶数勿以为是滤波器的阶数n,实际上是n+1阶,使设置的阶数和程序中的不一致;改正:调整相应的阶数,使其一致。(4)程序编译时,以头文件导入滤波器系数,工程中缺少tmwtypes.h文件,是程序出现错误,无法编译;改正:找到相应的tmwtypes.h文件,添加到工程中。(5)以头文件导入滤波器系数时,需要导入的文件和主程序中导入的文件名不一致,致使程序错误;改正:修改程序,是其保持一致。(6)程序中输出数据没有设置为long型,开始勿以为是强制转换,结果输出数据的出现了错误;改正:输出数据加上(long),强制转换。(7)装载过数据后,就直接查看结果;改正:在装载完数据后,先运行,再查看结果。汇编程序清单irr.prj文件内容:/*IIR直接II型低通数字滤波器madebyzhubaitong2017/6/12*/#include"math.h"#include"stdio.h"#defineIIRNUMBER7//滤波系数个数,阶数为6阶#defineSIGNAL1F2000//模拟频率#defineSIGNAL2F12000//模拟频率#defineSAMPLEF44200//采样频率#definePI3.1415926floatInputWave();floatIIR(float);floatfBn[IIRNUMBER]={0.0114322299248657, 0.0171793483064575, 0.0329713371065616, 0.0334189652543020, 0.0329713371065617, 0.0171793483064574, 0.0114322299248658 };//分子系数floatfAn[IIRNUMBER]={1, -3.10179843400455, 5.32463688839471, -5.65443746900525, 3.92680829562253, -1.67065468248483, 0.351136432174037 };//分母系数floatdd[IIRNUMBER]={0.0};//中间变量floatfInput,fOutput;floatfSignal1,fSignal2;floatfStepSignal1,fStepSignal2;floatf2PI;intj;floatfIn[256],fOut[256];intnIn,nOut;main(){ nIn=0;nOut=0; f2PI=2*PI; fSignal1=0.0;//初始相位 fSignal2=PI*0.1;//初始相位 fStepSignal1=2*PI*SIGNAL1F/SAMPLEF;//波形1数字频率 fStepSignal2=2*PI*SIGNAL2F/SAMPLEF;//波形2数字频率 while(1) { fInput=InputWave();//输入Xn fIn[nIn]=fInput; nIn++;nIn%=256;//防止溢出 fOutput=IIR(fInput);//输出Yn fOut[nOut]=fOutput; nOut++; //请在此句上设置软件断点 if(nOut>=256)//防止溢出 { nOut=0; } }}floatInputWave()//产生波形{ floatXn; Xn=sin(fSignal1)+0.5*sin(fSignal2); fSignal1+=fStepSignal1; if(fSignal1>=f2PI) fSignal1-=f2PI; fSignal2+=fStepSignal2; if(fSignal2>=f2PI) fSignal2-=f2PI; return(Xn);}xfloatIIR(floatXn)//直接II型IIR滤波{ floatYn=0.0; floatya=0.0;for(j=IIRNUMBER-1;j>0;j--)//中间变量dd[i]向后移一位 { dd[j]=dd[j-1]; } for(j=1;j<IIRNUMBER;j++) { ya+=fAn[j]*dd[j]; } ya=Xn-ya;//输入Xn dd[0]=ya;//更新中间变量dd for(j=0;j<IIRNUMBER;j++) { Yn+=fBn[j]*dd[j]; } returnYn;//输出Yn}yuyinjiazao.m的程序如下:[y,fs,bits]=wavread('dqt.wav');y=y(:,1);sigLength=length(y);Y=fft(y,sigLength);%%频谱halflength=floor(sigLength/2);f=fs*(0:halflength)/sigLength;%%周期的一半t=(0:sigLength-1)/fs;%%采样时间间隔figure(1)subplot(2,1,1)plot(t,y);xlabel('Time(s)');title('时域')subplot(2,1,2)plot(f,abs(Y(1:halflength+1)));xlabel('Frequency(Hz)');axis([0,8000,0,4000]);title('频域')%%加噪声n=0.2*cos(2*pi*7000*t);%%噪声频率为7000Hzwavwrite(n,fs,'noise.wav')y1(:,1)=y(:,1)+n';%%加噪语音信号figure(2)subplot(2,1,1)plot(t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论