1、f x,在所有n次多项式的集合n中,寻找一个多项式p(x),使它在a,b上对f X的偏差和其它一切属于 n的多项式p(x)对f(x)的偏差相比是最小的,即max ? x f x min max p x f x切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。切比雪夫逼近理论解决了 p(x)的存在性、唯一性和如何构造等问题。J.H.McClellan、T.W.Parks、L.R.Rabiner 等人应用切比雪夫逼近理论提出了一 种设计FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对 Hd ejw作 最佳逼近,因而获
2、得了较好的通带和阻带性能, 并能准确地指定通带和阻带的边 缘。但它的效率依赖于初始极值频率点的估计, 且通带和阻带内波纹数较多, 这 是Chebyshev方法的两个主要缺点。三、 FIR 滤波器的 MATLAB 实现MATLAB辅助DSP实现FIR,其总体过程为在 DSP中编写处理程序,在 MATLAB 中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速 设计一个 FIR ,再把滤波器系数以头文件形式导入 CCS 中,头文件中 MATLAB 辅 助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行 DSP 程序并显示、分析处理后的数据。使用该方
3、法 ,便于采用汇编语言来实现程序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也 改变,方便程序调试、仿真。(1)输入信号的产生首先利用Matlab产生导入CCS的dat文件,具体实现如下代码所示sl=500; %有效信号ns1=3000; %高频噪声ns2=8000;fs=20000; %采样频率N=1000;T=1/fs;n=0:N;signal=sin(2*pi*sl*n*T);noise1=0.7*sin(2*pi*ns1*n*T);noise2=0.4*sin(2*pi*ns2*n*T);x=(sig nal+no ise1+ no ise2)% 待滤波信号
4、figure(1)plot(x)figure(2)y=abs(fft(x); %待滤波频谱df=n*(fs/N);plot(df,y)figure(3)plot(signal)figure(4)ysig nal=abs(fft(sig nal);% 滤波后频谱plot(df,ysignal)%滤波数据导出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,
5、 %dn,xoutcss); %输出 fclose(fid);产生的时域波形如图所示:2图输入信号波形 频谱如图所示:图输入频谱经过滤波器后的预期时域波形如图:图输出时域波形频谱如图所示图输出频谱(2)滤波器的设计MATLAB集成了一套功能强大的滤波器设计工具 FDATool (Filter Design &Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。a打开 Filter Design & Analysis Tool单击MATLAB主窗口下方的“Start”按钮,选择菜单“ToolBox” “FilterDesign” “ Filter Design & Analy
6、sis Tool ( FDATool)” 命令,打开 FDATool, 如图所示MATLABif jrou do net vant to ace this ncssatT?LcrcroolooKesAero-space4SimdinkDioinfoirmAb卜-BlocksetsCom muni cad on siLink.) and Ta-gctCcritrol SytePiiShortcutsCurve FittingData ArquitionDe&ldDp leclsIWebCitaF#dGet IP reductrijlsEpanometricstCheck far UpdetF)F
7、ilter DesignlFilter Builder ffilterbuiildler)%Prcf*roncEFilter De-sigiri HDL CoderFi t&r Dr*siqn & Ana ys s Tool (fdatool)AFind File.-M or CM*Hie IpHelp JL |Oe-moE.*DtrmosJPrcducr 岭孑圭(Aeb)d SUrt图fadatool的启动b.产生滤波器 阶数为81阶,这里应填80,比阶数少1。窗函数选择切比雪夫型(chebyshe,采样频率为20000Hz通带截止频率为750Hz Filtrr Design & Ajnal
8、yis Tdq- - Lumitld&U File Edit 曲谊声洛 Taigti View-曹 ndw Helpi Zifreri FHb- hfzrmKm廿 E E)E S f D 1 U 0 E3 町UairiludE: Rcon oe i ft)StrictCIKI-FQIIit HPCudcr 00決sM宕 VssSOWS DW 賞 MSlgflgl FlWrrlfrr bm&b2 * 5 ft ? 8 IgsllBMB园事 Lm p3-5-THqn陛占呂脱Ki”琳BaiKistc?!时新“tia(商VFiL-r Gidei 倉 SlKdiV ordtr- BUWt FiUii u
9、r4riOpdcnx 4 Scab- Psss-zandwrao/zC ie-CIMVlww|i Fr equ cnty Sped hk pta i eUrnrL?. H z厂 tscriijjds ifeciicBfccirs The dteni-iHl-Lri 宦 culohr CCiCiW *S n-亡H Art B 阳mair tr 趣in旳 “m 曲 mQ nEsiacrtie ype Dn光 gr U沏|R图滤波器的幅频特性聽吐rgllHJ-lltell鬲瓦L FJgpogp 沖m 7 Lghwrbw HQhpatsi E nr Jpoju 9肝翻:3p 口 ifTersrliet
10、tr 一 De期n MefliKJci G Eiutia wartri甘 FRFKit Ci-dsi Q 三胆口灯 ord*r: BCUr rwi BrfrflFl 口is 址 J g“tr Pbi-sbjihCMl 如 OhBy.sdehbe ADshi |iOfritow |,FTftLiicriZY 唇paufaEDHAJnit-F HzFv ZKOLI 与対 Ud 心=prjricdi1liz nr2 Th itliKntih Hl *QF1hr.ijmtisK fs:锻壬ed Mi日F声*HT ecttxrt *wslh:-141 dV -fi i_: iwari f 吧rkJMir
11、-Hij- g 叫昨 些 g* 04F Aft1 Mifal&drPT*P 亍*LQn4Ufelul.WanitwlniDrff*idiC ww1-1-vh 弓Awf占 r ni-rr-iv hfli-ium CM-! & OA iCMrwrceCL1 - ta-f lir-Hflidii * .rnliFile t drt AnalEhE Tar gats. Vi otx Wi ndiow Hilp口味 y 0LJ旦1皿把需旳厂匿紀国因C-urrert Fitdiiimmjll&n L R ewi! Rrwiwr m 空口昨FIR0 i1. 4LLL 4 !v B F i i 1- - 1
12、i B a tl1 1 ii I | |i h i|,” Jx r - - = IW FBI J = , IB - =4 = = nJfa = _ ” . - ” = Ul ,=”,= a 1 *ta i i I F - i -IOrder 80E 0 V ! i i i “ j iMaa 卍 :S ic k-A : -r 片 汁-, 卄 匕 Sctj-e 血如眄”1F f订冲汕HZwjwmwM或州 - T !i-1.i?Stef-e * ilef Her 事 rQ 1 #3亠 & t aFrequency (kHz)图滤波器的相位特性C.产生滤波器系数和头文件图滤波器系数EH dlvr D
13、hiy-i Al AiIk v TejhI - Luhlrlhnd 1nJa *|金 网庐炉卜:口 育|区|国田弗毎IUr 珂口 o s SL Cm-申咋 F“ V71Q”种-= rt1*r CW1H事 rt图头文件的产生最后将产生的头文件中的滤波器系数数组放入编写好的滤波器函数中, 并在进行CCS中进行调试与测试。四、FIR滤波器的Simulink仿真通过Matlab的FDATOOL设计滤波器后,为了确认该滤波器是否有效,现 通过simulink进行建模仿真观察该滤波器是否有效。把三个信号通过加法器相加后,再通过 FDATOOL设计的滤波器即可。注意 此处设计的是数字滤波器,需要把三个输入信
14、号数字化。具体仿真模型建立如下:分别观察滤波前后的时域波形图图滤波前时域波形图滤波后时域波形五、FIR滤波器的DSP实现(1)DSP中滤波器的z算法实现FIR滤波器的输出表达式为N 1 N/2 1y( n) h(i)x(n i) h(i)s( n i)n 0 n 0式中,为滤波器系数;x(n)表示滤波器在n时刻的输入;y(n)为n时刻的输出。它的基本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后, 再进行乘法-累加,最后输出滤波结果y(n)。1)线性缓冲区法:线性缓冲区法又称延迟线法,其特点:(a) 对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑 窗),用来存
15、放最新的N个输入样本;(b)从最老样本开始取数,每取一个样本后,将此样本向下移位;(c)读完最后一个样本后,输入最新样本存入缓冲区的顶部。2)循环缓冲区法:循环缓冲区法的特点如下:(a) 对于N级FIR滤波器,在数据存储器中开辟一个 N单元的缓冲区(滑 窗),用来存放最新的N个输入样本;(b)从最新样本开始取数;(c)读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;(d)用片内BK (循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环 缓冲区地址首尾相邻。本次设计的 FIR滤波器所采用的就是循环缓冲区法。(2)C语言实现FIR采用C语言算法在DSP平台上实现了
16、FIR低通数字滤波器,C语言算法相 比于汇编算法可移植性很强。这里是在 TMS320VC5510DSP 为平台编写的 C 语 言算法,此算法可以稍加改动用在其他 DSP芯片上,而汇编算法则不然。这种方 法具有以下优点:(a)程序的入口和出口由 C 语言自动管理,不必手工编写汇编程序实现(b)程序结构清晰,可读性强。(c)程序调试方便。 由于 C 程序中的变量全部由 C 语言来定义, 因此采用 C 源码调试器可以方便地观察 C 语言变量。(d)可移植性较强,通用性较好。 具体代码如下:#includestdio.hfdacoefs.h /头文件包含滤波器的系数#define Length 200
17、 long yn;int inputLength; int outputLength;#define N 81 /定义滤波器的阶数为 81 阶/定义缓冲区数组大小为 200/存放输入数据/存放输出数据void main()int m,n;int *x;for(n=0;nLength-1;n+) / 循环导入数据x=&inputn; / 指针指向每次导入的数据yn=0; / 每做完一次乘累加后,把值赋给 output 数组后,从新归 0for(m=0;m BircLnB: crwtibb .jmtdrr iwrtLcu with -dvf=,Qi: blsb 5: 500 WTrd1! Use-swst-Bcii apt ipn t?g ci4ngp -iefavjt =iiv.和lid毗磚利廉百h 1a 彊.X JB f*H ErrwTu 3 Mtmiog-Sj D RrasrE 11 h.aJi; 观察输入输出时域和频域的波形,可以发现滤波器达到滤波效果,而且和软 件仿真效果差异不大,从而也可以发现采用 C编写的程序通用性较好。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1