《DSP课程设计-FIR高通滤波器设计.doc》由会员分享,可在线阅读,更多相关《DSP课程设计-FIR高通滤波器设计.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、FIR高通滤波器设计南京师范大学物科院13)( ) ( + + )= % + ) .* 0 = 0. * 0 ; ( , , 0 = 000 .- 0 .000 ., . 0 .00,00- - , -,00 0 . .0 - .-0.,0, .0.- 0-= )( )( 00 0 00 . / / _ 程 ( ( ;, ), ( ) ) - )+ :) 0( ) * 高-序 附 社业子 应实理处号全西0 版学清北版(程号数0 版业电京现原处信 主文习学加而度习己习后今将这明中设在的理标的习检心要凡明己我的多总系器滤对,力力设自提还本软业门识的理数掌进,多获收,段这法方问理复 用学步及般的书
2、解,更也用在环其,的深点发言 .方 一并 -软算悉进计度学的严了养和的了面了能计料资设范和运算计析理力识学运我炼掌理深有本知基程设次同方计计本解了写基明计了法路思计了握计设心号信基部中出良效量频 中出时. = 输,的高现 高出果结 结仿应 对设的 高 波果效解图中” “ 置置按 单” ” 设, ,” ” 键果波滤形中窗 、 序序 或”“单 量频去,器滤通高运 ,. +0(= 入仿进波对 图图 如频性幅 如频图如 00,00,. 0.00, , 0 0 . 00 , - 0,.- , .,0, 0 0.0., 0 .,0- 0) 高足序 之求以/.为宽精窗 带过 选件足 窗 表过减减阻减最率止,
3、止通数的 相置设的高足器滤 流宁汉为函的汉( / 曼 / / 明 / 宁 / 角 / 形确似 (衰宽 (值类参基函参数计的滤现从逼进想理设数要性性的近 思基数窗法设类;逼纹和采率函包方特滤理逼类第为主计 用泛到领处数波要重一 ,题定考,构实和,波零 外另线率响,为应统内谱效在,条滤输失道我非度同存相近进特主 而波位现是点最性性线具要的都理处传数在,的代为相牺特。单设特的较滤留器器波 是,滤是,种波将考方波波的致结析时跟情的 同对(同)(图的种 有) 出可从)(谱频(为. 示 现域波) ) 图图图最 而度处/) (, 等0、 /=,= (图小处 即/) =而最处 .即/) =,为 =即处/ 在时
4、当) ,幅 、 . ). 在大处 ( -=在为等 )( ,=, 位横(如频 在( =率的相率字整为,值)(为-0,=(长 为 时小重权频的除, 为(较加号高要对)|数统求滤。 移相角) 谱跟的 统角) 谱频,权(幅(频对幅 (统由) 应响 ( | 的频系 谱的应样单跟 频) 体 (谱(响系号,分频波)(量频中(地可, 频的(去可要目滤。号率种(的 ) 0由) 即为, 数奇 )高度减通想抵正正频低缓, 实度减)理保分正即快变加窗 用用锐有) 波滤。的(中窗位()(即(响个步每)(, 响系成结,和加(的对 分) 中,一每)过式步列队则(,窗的 长成可 统 度于 ) 0 ) 和的)响位统跟励现 响系
5、信分域器分器换行域中处字用波通高 叭低至信时以波低电而线号音喇者擾止, 音用导的高能器的。恰特低器高波噪或滤低也用音器剪低时。度减的的每器同对。过通频于)减弱过信许器波波路的过信率止和率段介是吗而;高称减号 低通号 于,波为称减信 高以号 率 为截名为频的波等响 、电处字于器波。时硬集大用现软计器字展路成模术计子的的信到,处进代号离对能。一组时器、乘由是 (波滤原比果 示显形 过通低的消滤一,号多目正 、 位线 、:果效滤出看为,件硬滤通件 主件器滤应应位波滤序当,件 要的波中次此便十时波设数列,中 计的滤现而,行想,设数用设本波望逼 思的计中法设最第逼佳波法频数括法特滤理基一类分主设用应广理
6、处在,要种 以。定虑用构实件硬滤零 外另性的应频常响统系频有信,理滤与失道。非程不性相近性特要 而滤性线可点 器器 一器 ,两波将面法摘科物设波滤 波科摘两 一 可滤 近性道与信系响应外零件虑以 在理设分理法括波最法思逼本设设而的中,设此中要件滤应器 滤,出果、 目一的低 显 比波 是乘组能号进信的术展计现大。器电响波为率号信称于通 高吗段止过波许弱减过对器的低音低滤高恰器高音 擾音而波时叭高用中换分分 励位的)0)度统成的(列过每中) 和结 (步即(中的滤) 窗即保度 频正减)奇 ,) 率。要的 地(量波系响(频跟样 频 由 对(权 角的谱角 滤数对加为除权重为 0为(,字= 在 横, 等
7、大 ). 时/处 为). /处图, 等 /度 现示为谱) 有种图(同的析结方考是是波留的。相的数处要性最现波进相非失输在内为线 ,实考 重处到用第逼方函和;法思 性数进逼滤数基 (确/ 角/ /曼 汉汉 高置 数率阻过 足 带 精以之足 ,00 ,. .0 0 000,00频 性 进入0 运器去单” 窗滤果 ” ” ”置置 图解 的 应 果 的 中 效中信设了思计明本方同知深理运理算范设能了养学计悉 方 发,其更解 步学理方,多进数业还提,器系我凡习标设这后己加学信原京0号北版西全应业社序- * (:+)- ) , ( 程 / 0 ) 0-.,- 0 0, 000,. .0 ;0 . . +%
8、 ) 0/件 ; - / )= ( 0 ; ) 13摘要从实现方法方面考虑,将滤波器分为两种,一种是IIR滤波器,另一种是FIR滤波器。FIRDF的最大优点是可以实现线性相位滤波。而IIRDF主要对幅频特性进行逼近,相频特性会存在不同程度的非线性。我们知道,无失真传输与滤波处理的条件是,在信号的有效频谱范围内系统幅频响应应为常数,相频响应为频率的线性函数。另外,FIR是全零点滤波器,硬件和软件实现结构简单,不用考虑稳定性问题。所以,FIRDF是一种很重要的滤波器,在数字信号处理领域得到广泛应用。FIRDF设计方法主要分为两类:第一类是基于逼近理想滤波器特性的方法,包括窗函数法、频率采样法和等波
9、纹最佳逼近法;第二类是最优设计法。其中窗函数计法的基本思想是用FIRDF逼近希望的滤波特性。本次设计主要采用窗函数设计法,对理想滤波器进行逼近,从而实现高通滤波器的设计。在MATLAB软件中,有一系列函数用于设计滤波器,应用时十分方便。因此,在本次设计中,滤波器的设计主要采用MATLAB软件,编写适当的程序,得到滤波器的单位脉冲响应。本设计对滤波器的硬件仿真主要使用CCS软件,通过对滤波器的硬件仿真,可以较为真实的看出滤波器的滤波效果。关键字:高通、FIRDF、线性相位、Hanning窗、MATLAB、CCS正文1. 设计目标产生一个多频信号,设计一个高通滤波器消除其中的低频成分,通过CCS的
10、graph view波形和频谱显示,并和MATLAB计算结果比较2. 设计原理122.1 数字滤波器数字滤波器(digital filter)是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。由于电子计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现,也可用大规模集成数字硬件实时实现。数字滤波器广泛用于数字信号处理中,如电视、VCD、音响等。按照滤波电路的工作频带为其命名:设截止频率为fp,频率低于fp的信号可以通过,高于fp的信号被衰减的电路称为低通滤波器,频率高于fp的信号可以通过,低于fp的信号被衰减的电
11、路称为高通滤波器;而带通吗,就是频率介于低频段截止频率和高频段截止频率的信号可以通过的电路。2.2 高通滤波器高通滤波器是容许高频信号通过、但减弱(或减少)频率低于截止频率信号通过的滤波器。对于不同滤波器而言,每个频率的信号的减弱程度不同。它有时被称为低频剪切滤波器;在音频应用中也使用低音消除滤波器或者噪声滤波器。高通滤波器与低通滤波器特性恰恰相反。这样的滤波器能够把高频率的声音引导至专用高音喇叭(tweeter),并阻止可能干擾或者损害喇叭的低音信号。使用线圈而不是电容的低通滤波器也可以同时把低频信号引导至低音喇叭(woofer)。高通和低通滤波器也用于数字图像处理中在频域中进行变换。2.3
12、 高通滤波器的分析2.3.1 高通滤波器的时域分析在时域,信号经过系统的响应y (n)体现为激励x(n)跟系统单位抽样响应h(n)的卷积和y(n)=(n)h(n)=N1m=0h(m)x(n-m)223 。对于长度为N 的FIR系统, h(n)可以看成一个长度为N 点的固定窗口,而x(n)则看成一个队列以齐步走的方式穿过h(n)窗口,每走一步,位于窗口中的x(n)部分的点跟h(n)的对应点的值相乘(即加权)再求和,所得结果构成此时系统的响应值y(n), x(n)队列每走一步就得到一个响应值y(n),即y(n)是h(n)对位于其窗口中的x(n)的加权求和。高通滤波要求h(n)窗口具有波形锐化作用,
13、即利用h(n)窗口加权和使得变化快的(即高频)正弦分量保留(理想高通)或衰减幅度小(实际高通) ,而变化缓慢(即低频)的正弦分量正负抵消(理想高通)或衰减幅度大(实际高通) 。设其中N 必须取奇数,其中: fs = 11kHz, n为整数,即x ( n)由100Hz的x1(n)和1kHz的x2(n)两种频率的信号组成。高通滤波的目的就是要尽可能地去掉x(n)中的低频分量x1(n) ,同时尽可能地保留x(n)中的高频分量x2(n)。2.3.2 高通滤波器的频域分析在频域,信号经过系统的响应y(n)的频谱Y(ej)体现为激励x(n)的频谱X (ej)跟系统单位抽样响应h(n)的频谱H(ej)(即系
14、统的频谱)的乘积Y(ej)=|H(ej)|X(ej)|ejH+x,即响应的频谱Y(ej)的幅值由系统频谱H(ej)的幅值对激励频谱X(ej)的幅值相乘(加权)得到,响应的频谱Y(ej)的幅角由系统的频谱H(ej)的幅角跟激励频谱X(ej)的幅角相加(移相)得到122 。高通滤波要求系统幅度函数|H(jf)|对需要保留的高频信号频谱加权权重较大(理想时为1) ,对需要滤除的低频信号频谱加权权重较小(理想时为0) 。其中L为x(n)的长度(L=100), 0kL- 1,N为h(n)的有值长度,m、k均为整数,跟数字频率k相对应的模拟频率为f=fsk/L (Hz)。h(n)在不同N值时的频谱如图2所
15、示(横轴单位为kHz),当N=11时,在f=m(kHz)即f=1kHz、2kHz、3kHz等处为1,而在f=(2m-0.5)(kHz)即f=1.5kHz、3.5kHz等处幅度最大。而在f=(2m+0.5)(kHz)即f=2.5kHz、4.5kHz等处幅度最小,如图2(b);当N=5时, 在f=mfs/5处为1,即f=2.2kHz、3.3kHz等处为1,在f=(4m-1)fs/10即f=3.3kHz处幅度最大。而在f=(4m+1)fs/10即f=5.5kHz处幅度最小,如图2(c);当N=21时,在f=mfs/21即f=524Hz、1047Hz等处为1, 在f=(4m-1)fs/42处幅度最大,
16、而在f=(4m+1)fs/42处幅度最小,如图1图1用不同宽度的h(n)对x(n)的滤波在频域上表现如图2.2.1所示,图2.2.1(a)为x(n)的频谱|X(jf)| ,从图2中可以看出x(n)中含有100Hz和1kHz两种频率的信号,图1(b)(d)为不同长度的h(n)对同一x(n)的滤波情况,这跟在时域中分析的结论是一致的。2.4 FIR滤波器从实现方法方面考虑,将滤波器分为两种,一种是IIR滤波器,另一种是FIR滤波器。IIR滤波器保留了模拟滤波器较好的幅度特性,设计简单有效。但这些特性是以牺牲相位特性为代价而获得的,然而现在许多数据传输,图像处理系统都越来越多的要求系统具有线性相位特
17、性。FIRDF的最大优点是可以实现线性相位滤波。而IIRDF主要对幅频特性进行逼近,相频特性会存在不同程度的非线性。我们知道,无失真传输与滤波处理的条件是,在信号的有效频谱范围内系统幅频响应应为常数,相频响应为频率的线性函数。另外,FIR是全零点滤波器,硬件和软件实现结构简单,不用考虑稳定性问题。所以,FIRDF是一种很重要的滤波器,在数字信号处理领域得到广泛应用。FIRDF设计方法主要分为两类:第一类是基于逼近理想滤波器特性的方法,包括窗函数法、频率采样法和等波纹最佳逼近法;第二类是最优设计法。其中窗函数计法的基本思想是用FIRDF逼近希望的滤波特性。本次设计主要采用窗函数设计法,对理想滤波
18、器进行逼近,从而实现高通滤波器的设计。2.5 各种窗函数参数各种窗函数的基本参数窗函数类型旁瓣峰值(dB)过渡带宽度阻带最小衰减 (dB)近似值精确值矩形窗-134/N1.8/N-21三角窗-258/N6.1/N-25汉宁窗-318/N6.2/N-44哈明窗-418/N6.6/N-74布莱克曼窗-5712/N11/N-80Hanning(汉宁)窗的窗函数为:图2 汉宁窗3. 设计流程1231233.1 应用MATLAB设计滤波器:为了满足高通滤波的效果,设置线性相位高通FIR的参数为:通带截止频率,阻带截止频率,通带最大衰减,阻带最小衰减。由以上参数,通过查表可得,hanning窗和hamin
19、g窗都满足条件,我们选择hanning窗。过渡带宽,hanning窗的精确过渡带宽为=6.2/N,所以要求,解之得N=25。输入程序:从而得到满足条件的高通FIRDF:h(n)=-0.0004,-0.0006,0.0028,0.0071,-0.0000,-0.0185,-0.0210,0.0165,0.0624, 0.0355,-0.1061,-0.2898,0.6249,-0.2898,-0.1061,0.0355,0.0624,0.0165,-0.0210,0.0185,-0.0000,0.0071,0.0028,-0.0006,-0.0004其波形如图3所示,频谱如图4,其幅频特性和相频
20、特性如图5。图3 图4图53.2 用CCS对高通滤波器进行仿真设置输入信号fIn=sin(2n/30)/2+cos(2n*1.6),使用MATLAB运算得到的高通FIR滤波器进行滤波,滤去低频分量。选择“Debug”菜单的“RUN”项,或按F12 键运行程序。观察“fin”、“fout”窗口中时域图形;观察滤波效果。鼠标右键单击“Input”和“Output”窗口,选择“Properties”项,设置“Display Type”为“FFT Magitude”,再单击“OK”按钮结束设置。观察“Input”、“Output”窗口中频域图形;理解滤波效果。 4. 仿真波形12344.1 MATLA
21、B对高通FIRDF的设计4.2 CCS对高通FIRDF的应用仿真5. 设计结果由MATLAB和CCS的仿真结果可以看出,此高通FIRDF可以实现高通滤波的功能,在输入为fIn=sin(2n/30)/2+cos(2n*1.6)时,输出波形中已不含w= 1/30的低频分量,滤波效果良好,输出频谱中低频部分基本没有信号。6. 心得通过这次课程设计,使我掌握了课程设计的基本思路和方法,掌握了课程设计说明书的基本撰写方法,了解了基本的设计思想和设计方法。同时此次课程设计使我课程的基础知识和基本理论有了更深的理解和掌握,锻炼了我们综合运用所学知识的能力,并在理论分析设计、计算制图运用标准和规范查阅设计手册
22、与资料以及计算机应用能了等方面得到了初步的训练和提高,培养了我们严谨求实的科学态度。这次课程设计使我进一步熟悉了计算工具软件-MATLAB.并进一步掌握了MATLAB的使用方法.对MATLAB语言的发展和特点有了更深的了解,熟悉其工作环境,在其应用方面也有了更深的了解,了解了MATLAB程序书写的一般思路及一般步骤,学会了用MATLAB解决复杂信号处理等问题的方法。在课程设计的这段时间里,我认为收获还是很多的,不但进一步掌握了数字信号处理的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力及动手能力,同时对于模拟滤波器来了个系统的总结。更多的是让我看清了自己,明白了凡事需要耐心,实践
23、是检验学习的唯一标准。理论知识的不足在这次课设中表现的很明显。这将有助于我今后的学习,端正自己的学习态度,从而更加努力的学习。参考文献1刘泉 阙大顺主编. 数字信号处理原理与实现. 北京:电子工业出版社,20052程佩青. 数字信号处理教程(第二版). 北京:清华大学出版社,20013 高西全 数字信号处理-原理、实现及应用. 北京:电子工业出版社,2010附录MATLAB程序-生成高通FIRDFwp=pi/2;ws=pi/4;DB=wp-ws;N0=ceil(6.2*pi/DB);N=N0+mod(N0+1,2);m=1:N;wc=(wp+ws)/2/pi;hn=fir1(N-1,wc,hi
24、gh,hanning(N);fw=abs(fft(hn);figure(1)subplot(1,2,1)plot(m,hn);grid;subplot(1,2,2)plot(m,fw);grid;figure(2)freqz(hn) xlabel(omegapi)ylabel(|H(ejomega|dB)subplot(2,1,2)xlabel(omegapi)CCS程序#include DSP281x_Device.h / DSP281x Headerfile Include File#include DSP281x_Examples.h / DSP281x Examples Include
25、 File#include f2812a.h#includemath.h#define FIRNUMBER 25#define SIGNAL1F 1000#define SIGNAL2F 4500#define SAMPLEF 10000#define PI 3.1415926float InputWave();float FIR();float fHnFIRNUMBER= -0.0004,-0.0006,0.0028,0.0071,-0.0000,-0.0185,-0.0210,0.0165,0.0624, 0.0355,-0.1061,-0.2898,0.6249,-0.2898,-0.1
26、061,0.0355,0.0624,0.0165, -0.0210,0.0185,-0.0000,0.0071,0.0028,-0.0006,-0.0004 ;float fXnFIRNUMBER= 0.0 ;float fInput,fOutput;float fSignal1,fSignal2;float fStepSignal1,fStepSignal2;float f2PI;int i;float fIn256,fOut256;int nIn,nOut;main(void) nIn=0; nOut=0;f2PI=2*PI;fSignal1=0.0;fSignal2=PI*0.1;fSt
27、epSignal1=2*PI/30;fStepSignal2=2*PI*1.6;while ( 1 )fInput=InputWave();fInnIn=fInput;nIn+; nIn%=256;fOutput=FIR();fOutnOut=fOutput;nOut+;if ( nOut=256 )nOut=0;/* 请在此句上设置软件断点 */ float InputWave()for ( i=FIRNUMBER-1;i0;i- )fXni=fXni-1;fXn0=sin(fSignal1)/2.0+cos(fSignal2);fSignal1+=fStepSignal1; if ( fSignal1=f2PI )fSignal1-=f2PI;fSignal2+=fStepSignal2;if ( fSignal2=f2PI )fSignal2-=f2PI;return(fXn0);float FIR()float fSum;fSum=0;for ( i=0;iFIRNUMBER;i+ )fSum+=(fXni*fHni);return(fSum);
限制150内