DSP的FIR设计(低通滤波)C语言编写解读_第1页
DSP的FIR设计(低通滤波)C语言编写解读_第2页
DSP的FIR设计(低通滤波)C语言编写解读_第3页
DSP的FIR设计(低通滤波)C语言编写解读_第4页
DSP的FIR设计(低通滤波)C语言编写解读_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、、设计目的低通滤波器设计。 本设计中使用的信号信息信号:sig nal=si n(2*pi*sl* n*T)高频噪声1:n oise1=0.7*si n(2*pi* ns1* n*T)高频噪声2:n oise2=0.4*si n(2*pi* ns2* n*T)混合信号:x=(sig nal+no ise1+ no ise2)其中sl=500Hz, ns仁3000Hz, ns2=8000Hz, T=1/20000。混合信号波形为滤波器 输入信号波形,信息信号波形为输出信号波形,滤波器的效果为滤除两个高频噪二、FIR滤波器基本理论(1)FIR滤波器的特点数字滤波器的功能,就是把输入序列通过一定的运

2、算变换成输出序列。 它的 实现方法有很多,其中比较常用到的是无限长脉冲响应滤波器 IIR和有限长脉冲 响应滤波器FIR两种。在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频 率选择性也好。但是,它有着致命的缺点,其相位特性不好控制。它的相位特性 f()=argH(e)是使频率产生严重的非线性的原因。但是在图像处理、数据传 输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面FIR滤波器具有它独特的优点,设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)为N JH (z)=為 h(n)zn曲H(z)是z的(N-1)次多项式,它在z平面上有(N-1)

3、个零点,原点z=0是(N-1)阶重 极点。因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证精确、严 格的线性相位。(2)FIR滤波器的基本结构数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的 输出序列,FIR滤波器的差分方程为:N 4y(n)二為 akx(n - k)k=0对上式进行Z变换得到FIR滤波器的传递函数为:N 4八bkZ*i =0由上式可以看出,H(z)是zJ的N-1次多项式,它在z平面内有N-1个零点,同 时在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构ip'N-2) rm&

4、quot; *.(a:1图FIR滤波器的一般结构因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。另外, 若对h(n)提出一些约束条件,那么可以很容易地使H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定一个转移函 数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率 阻带频率及两个带上的最大和最小衰减:p和s外,很重要的一条是保证H(z)具有线性相位。(3) Chebyshev逼近法窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所 给理想频率特性Hdejw的逼近。由数值逼近理论可知,对某个函数 f(x)的逼

5、近 一般有以下三种方法:插值法(Interpolating Way)a,b上的连续函数p(x),使它在a,b上的偏差相比是最小的,即最小平方逼近法(Least Square Approaching Way) 一致逼近法(Consistent Approaching Way) 切比雪夫最佳一致逼近的基本思想是,对于给定区间f x,在所有n次多项式的集合;:n中,寻找一个多项式 对f X的偏差和其它一切属于;的多项式p(x)对f(x)max ?x - f x =min "max p x - f x '切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近

6、多项式的方法,就是有名的“交错点组定理”。切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。J.H.McClellan、T.W.Parks、L.R.Rabiner 等人应用切比雪夫逼近理论提出了一种设计FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对 Hdejw作 最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这 是Chebyshev方法的两个主要缺点。三、FIR滤波器的MATLAB实现MATLAB辅助DSP实现FIR,其总体过程为在 DSP中编写处理程序,在 MATLAB中利用

7、滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速 设计一个FIR,再把滤波器系数以头文件形式导入 CCS中,头文件中MATLAB辅 助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行 DSP程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程 序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也 改变,方便程序调试、仿真。(1输入信号的产生首先利用Matlab产生导入CCS的dat文件,具体实现如下代码所示sl=500;%有效信号ns1=3000; %高频噪声ns2=8000; %高频噪声fs=20000;%采样

8、频率N=1000;T=1/fs;n=0:N;sig nal=si n(2*pi*sl* n*T);n oise1=0.7*si n(2*pi* ns1* n*T);n oise2=0.4*si n(2*pi* ns2* n*T);x=(sig nal+no ise1+ no ise2)% 待滤波信号figure(1)plot(x)figure(2)y=abs(fft(x); %待滤波频谱df=n *(fs/N);plot(df,y)figure(3)plot(sig nal)figure(4)ysig nal=abs(fft(sig nal);% 滤波后频谱df=n *(fs/N);plot(

9、df,ysig nal)%滤波数据导出xout=x/max(x);% 归一化xto_css=rou nd(32767*xout)% 数据取整 xoutcss=xto_css;fid=fope n('i nput.dat','w'); %打开文件 fprintf(fid, '1651 1 0 0 0n);%输出文件头 fprintf(fid, '%dn',xoutcss); %输出 fclose(fid);产生的时域波形如图所示:图输入信号波形 频谱如图所示:图输入频谱经过滤波器后的预期时域波形如图:0.81200图输出时域波形频谱如图所示

10、00.20.40.6 0.811.21.41.61.8x 104图输出频谱(2)滤波器的设计MATLAB集成了一套功能强大的滤波器设计工具FDATool (Filter Design &Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。a打开 Filter Design & Analysis Tool单击MATLAB主窗口下方的“Start”按钮,选择菜单“ToolBox” “FilterDesign”“ Filter Design & Analysis Tool ( FDATool)” 命令,打开 FDATool,如图所示。¥MATLA

11、B ToolboKesAerospace九亡工亡it you do not want to see tnis message agzSimulmkBioinforrnaticstoB阮尬eUCommunicationsLinks and TargetsControl SystemCurve FittingShortcuts卜Data Acquisition>Desktop ToolsDatabaseWebDmtafeed立Get Product TrialsEconometricsCheck for UpdatesFilter DesignFilter Builder (filterbu

12、ilder)%Preferences.Filter Design Ht>L Coder 卜Filter Design & Analysis Tool (fdatoobFind Files,Mo岔“H»lp雜HdpWDemos$OemoE4Product Page (Web)* Start图fadatool的启动b.产生滤波器 阶数为81阶,这里应填80,比阶数少1。窗函数选择切比雪夫型采样频率为20000Hz通带截止频率为750Hz BJI Filter Design & Analysis Tod - uAtitled.fda *(chebyshe",

13、口 回file £dit Rnlysis;Ta getsViewJfiJindow JJelp州J9QX:亡1亂 I01E!CLrreri Filer IhlorrtvarlionMagrfludc ponse (dB)SlrutluirftUi'ftCT-rrrti FFOrds-80Stable:Y&tSoiree:Oesgned毎 JL-pnE詈0123456Fnequflnoy (kHz)恥I亡 rilri-Fier 巳nQg拿r0Lowpseg-HighoasiResponse Type.BandpassBarnet叩DrFrrcriholpr_ DmI 护

14、 MelhagiIR- &uti?rwQdh厂 FiHmr Order:# Sped »rdcr WMnimiimi order厂 OpdicmLjJ Stale PasabtifidWlnctow:Chetivs. *Sidelobe Atlen- 100IFrequency 歸冲口 HEia 仃鲁Unis: HzFS:iwOT-F匚T50Wanrtude SpecrHcrt»nsThe rtenuatKin el cutofl frequencies is fixed d 6 dB (hfllf lhe paHbsrd gsin)Q Ffl 卅indDwVmmm

15、 I图 滤波器的幅频特性-SUEPBJjilul走<56730 F requency (kHz;Response TypeFUter Crctera Spcunyw如 ;W Mnnrnuni orderI Freqjency Sp 日 EcStonsUrit5:” F/tstintude Spewlcallofts The ?|ti?nLiatiQn nrt cutoff li存qu启冃日电盘if Tixd id 6 aB (twii the pMsbandgrtn)HZLdwpbssHghpa?HandEHiiii吕酊曲tapDriTtr-mtittCiFT'Design He

16、lhodO IRBuMrwdnhi| W"#V| S4FI4 P-asbAndVMndowSJcWo拆 AlienChebanIMa FIRWindawFS: 2000Filte- Edit Analysis Targets View Window Help渗日旨LA炉炉QX Ds(O更je -ii-i-sLJOKs k? Lurrent Fner informBdicnM Fitter Design & Analy'S-is Tool - untitled-fd* *)a j 回Slruclure:Dlredl-FoFm firOrcter:60Sibte.YssS

17、ource:DcsiqneidrSLdr ti F A&r nlFiler ManaDfii* Cam puting Response done图滤波器的相位特性C.产生滤波器系数和头文件Nl-13EieEatOE7 :0.0000000000000000000011014782S473380L.00000131£334215153870.0000043414S0453702812_12S119902S70474000002SB9B3B636323&9820.00004373681089383230.000 07S0712 842290 039.00011428E93

18、98441030 « 00016718024403213760 . OOO190SSI4 3OO2144 54L70,00022754240744243897.00022B2311S47S402221图滤波器系数图头文件的产生最后将产生的头文件中的滤波器系数数组放入编写好的滤波器函数中,并在进行CCS中进行调试与测试。四、FIR滤波器的Simulink仿真通过Matlab的FDATOOL设计滤波器后,为了确认该滤波器是否有效,现 通过simulink进行建模仿真观察该滤波器是否有效。把三个信号通过加法器相加后,再通过 FDATOOL设计的滤波器即可。注意 此处设计的是数字滤波器,需要

19、把三个输入信号数字化。具体仿真模型建立如下:SinefiQOOHz分别观察滤波前后的时域波形图n “呻 1;,* ;“誓囱Q回®曲囱宙ID 乍>图滤波前时域波形图滤波后时域波形五、FIR滤波器的DSP实现(1) DSP中滤波器的z算法实现FIR滤波器的输出表达式为N -1N /2y(n)h(i)x(n-i) h(i)s(n-i)n=0n=0式中,为滤波器系数;x(n)表示滤波器在n时刻的输入;y(n)为n时刻的输出。 它的基本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后, 再进行乘法-累加,最后输出滤波结果y(n)。1) 线性缓冲区法:线性缓冲区法又称延迟线法

20、,其特点:(a) 对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑 窗),用来存放最新的N个输入样本;(b) 从最老样本开始取数,每取一个样本后,将此样本向下移位;(c) 读完最后一个样本后,输入最新样本存入缓冲区的顶部。2) 循环缓冲区法:循环缓冲区法的特点如下:(a) 对于N级FIR滤波器,在数据存储器中开辟一个 N单元的缓冲区(滑 窗),用来存放最新的N个输入样本;(b) 从最新样本开始取数;(c) 读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;(d) 用片内BK (循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环 缓冲区地址首尾相邻。

21、本次设计的 FIR滤波器所采用的就是循环缓冲区法。(2) C语言实现FIR采用C语言算法在DSP平台上实现了 FIR低通数字滤波器,C语言算法相 比于汇编算法可移植性很强。这里是在 TMS320VC5510DSP为平台编写的C语 言算法,此算法可以稍加改动用在其他 DSP芯片上,而汇编算法则不然。这种方 法具有以下优点:(a) 程序的入口和出口由C语言自动管理,不必手工编写汇编程序实现。(b) 程序结构清晰,可读性强。(c) 程序调试方便。由于C程序中的变量全部由C语言来定义,因此采用C 源码调试器可以方便地观察 C语言变量。(d) 可移植性较强,通用性较好。具体代码如下:#i nclude&

22、quot;stdio.h"#includefdacoefs.h" /头文件包含滤波器的系数#defi ne N 81#defi ne Len gth 200 long yn;int in putLe ngth;int outputLe ngth;定义滤波器的阶数为81阶II定义缓冲区数组大小为200/存放输入数据II存放输出数据void mai n()int m,n;int *x;for(n=0; * Le ngth-1; n+) / 循环导入数据x=&in put n;II指针指向每次导入的数据yn=0;II每做完一次乘累加后,把值赋给 output数组后,从新归

23、0for(m=0;m<N-1;m+)yn+=Bm*(*(x+); II 做 N 次的乘累加 outputn=yn;把值赋给 output 数组while(1);II做完滤波后使程序保持在本循环中(3) CSS仿真调试CCS是TI推出的用于开发其DSP芯片的继承开发调试工具,集编辑、编 译、链接、软件仿真、硬件调试及实时跟踪等功能于一体,极大地方便了 DSP程 序的设计与开发,此外还提供图形显示功能,方便用户观察特定地址的波形。此 外,还需向工程中添加Link, cmd文件(源码见附录)。在CCSV3.3中建立工程,把c源代码和.cmd文件导入后,外加rts. lib文件, 它是TI提供的

24、运行时支持库,如果是C代码写的源程序,必须要包含该库,该库由TI公司做好放在CCS cgtools lib中,源代码TI网站可以下载。添加完成后, 编译通过后,下载.out文件,导入.dat文件后运行程序。采用CCS的图形显示功能,分别观察输入信号x ( n)、输出信号y ( n)的时域波形和频域波形,输入信号波形如图所示图滤波前时域波形5000m rite|01667| (1015.63, 606281) iiut6.1 e+5.6.0e+54.0e+5-2.0e+S'33339922Lin Auto Seal电 Rectangiilar图滤波前频谱图 经过滤波后,观察输出波形如下图

25、滤波后时域波形q output_FFT'"znrnirxQ015. &3, 450920) outputFFT M 幅LinAuto ScaleRectangular图滤波后频谱图为了更加直观的观察滤波器的性能和滤波效果,把滤波前后的时域波形和频 谱图进行对比和分析,具体如下:图滤波前后对比时域和频谱从上图中可以看出,输入信号明显有高频噪声,波形有很明显的失真。从输 入频谱分析,可以看出除了有 500Hz的信息信号还有3000Hz和8000Hz的高频 噪声。经过滤波器后,输出的时域波形有了明显改善,几乎接近信息信号。而频谱图中也可以看出3000Hz和8000Hz的高频噪声已经被滤除,而且对原来的信息信号几乎没有影响综上分析,滤波器实现滤除高频噪声,而且保证原信息信号基本不失真的功 能,滤波效果较好,性能优越。(4)硬件仿真通过CCS的软件仿真调试,发现滤波器性能符合要求,有较好的滤波效果。 但是软件仿真过于理想,不过精确,因此在硬件平台上进行仿真调试,观察滤波器性能指标。本仿真使用的C5509A硬件平台进行仿真,由于C语言的移植性较好,所以 本滤波程序

温馨提示

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

评论

0/150

提交评论