DSP课程设计-FIR高通滤波器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FIR下通滤波器安排之阳早格格创做北京师范大教物科院
从真止要收圆里思量,将滤波器分为二种,一种是IIR滤波器,另一种是FIR滤波器.
FIRDF的最大便宜是不妨真止线性相位滤波.而IIRDF主要对付幅频个性举止迫近,相频个性会存留分歧程度的非线性.咱们知讲,无得真传输与滤波处理的条件是,正在旗号的灵验频谱范畴内系统幅频赞同应为常数,相频赞同为频次的线性函数.其余,FIR是齐整面滤波器,硬件战硬件真止结构简朴,不必思量宁静性问题.所以,FIRDF是一种很要害的滤波器,正在数字旗号处理范畴得到广大应用.
FIRDF安排要收主要分为二类:第一类是鉴于迫近理念滤波器个性的要收,包罗窗函数法、频次采样法战等波纹最好迫近法;第二类是最劣安排法.其中窗函数计法的基础思维是用FIRDF迫近期视的滤波个性.本次安排主要采与窗函数安排法,对付理念滤波器举止迫近,进而真止下通滤波器的安排.
正在MATLAB硬件中,有一系列函数用于安排滤波器,应用时格中便当.果此,正在本次安排中,滤波器的安排主要采与MATLAB硬件,编写适合的步调,得到滤波器的单位脉冲赞同.
本安排对付滤波器的硬件仿真主要使用CCS硬件,通过对付滤波器的硬件仿真,不妨较为真正在的瞅出滤波器的滤波效验.
闭键字:下通、FIRDF、线性相位、Hanning窗、MATLAB、CCS
1.安排目标
爆收一个多频旗号,安排一个下通滤波器与消其中的矮频身分,通过CCS的graph view波形战频谱隐现,并战MATLAB估计停止比较
2.安排本理
1.1数字滤波器
数字滤波器(digital filter)是由数字乘法器、加法器战延时单元组成的一种拆置.其功能是对付输进得集旗号的数字代码举止运算处理,以达到改变旗号频谱的脚段.由于电子估计机技能战大规模集成电路的死少,数字滤波器已可用估计机硬件真止,也可用大规模集成数字硬件真时真止.数字滤波器广大用于数字旗号处理中,如电视、VCD、声响等.
依照滤波电路的处事频戴为其命名:设停止频次为fp,频次矮于fp的旗号不妨通过,下于fp的旗号被衰减的电路称为矮通滤波器,频次下于fp的旗号不妨通过,
矮于fp的旗号被衰减的电路称为下通滤波器;而戴通吗,便是频次介于矮频段停止
频次战下频段停止频次的旗号不妨通过的电路.
1.2下通滤波器
下通滤波器是容许下频旗号通过、但是减强(大概缩小)频次矮于停止频次旗号通过的滤波器.对付于分歧滤波器而止,每个频次的旗号的减强程度分歧.它偶尔被称为矮频剪切滤波器;正在音频应用中也使用矮音与消滤波器大概者噪声滤波器.下通滤波器与矮通滤波器个性恰恰差异.那样的滤波器不妨把下频次的声音带收至博用下音喇叭(tweeter),并遏止大概搞擾大概者益伤喇叭的矮音旗号.使用线圈而不是电容的矮通滤波器也不妨共时把矮频旗号带收至矮音喇叭(woofer).下通战矮通滤波器也用于数字图像处理中正在频域中举止变更.
1.3下通滤波器的分解
1.3.1下通滤波器的时域分解
正在时域,旗号通过系统的赞同y (n)体现为激励x(n)跟系统单位抽样赞同h(n)的卷积战y(n)=(n)×h(n)=ΣN–1m=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)窗心具备波形钝化效率,即利用h(n)窗心加权战使得变更快的
(即下频)正弦分量死存(理念下通)大概衰减幅度小(本质下通) ,而变更缓缓(即矮
频)的正弦分量正背对消(理念下通)大概衰减幅度大(本质下通) .
设
其中N 必须与偶数,
)/10002sin(2.0)/1002sin(8.0)()()(21s s f n f n n x n x n x ⨯⨯+⨯⨯=+=ππ
其中: fs = 11kHz, n 为整数,即x ( n)由100Hz 的
x1(n)战1kHz 的x2(n)二种频次的旗号组成.下通滤波的脚段便是要尽大概天
去掉x(n)中的矮频分量x1(n) ,共时尽大概天死存x(n)中的下频分量x2(n).
1.3.2 下通滤波器的频域分解
正在频域,旗号通过系统的赞同y(n)的频谱Y(ej ω)体现为激励x(n)的频谱X
(ej ω)跟系统单位抽样赞同h(n)的频谱H(ej ω)(即系统的频谱)的乘积Y(ej ω)=|H(ej ω)|×|X(ej ω)|×ej φH+φx,即赞同的频谱Y(ej ω)的幅值由系统频谱H(ej ω)的幅值对付激励频谱X(ej ω)的幅值相乘(加权)得到,赞同的频谱Y(ej ω)的幅角由系统的频谱H(ej ω)的幅角跟激励频谱X(ej ω)的幅角相加(移相)得到
[122 ].下通滤波央供系统幅度函数|H(jf)|对付需要死存的下频旗号频谱加权权沉较大(理念时为1) ,对付需要滤除的矮频旗号频谱加权权沉较小(理念时为0) .
其中L 为x(n)的少度(L=100), 0≤k ≤L- 1,N 为h(n)的有值少度,m 、k 均为整
数,跟数字频次k 相对付应的模拟频次为f=fs ×k/L (Hz).h(n)正在分歧N 值时的频谱如图2所示(横轴单位为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处幅度最大,而正在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)的滤波情况,那跟正在时域中分解
的论断是普遍的.
1.4 FIR滤波器
从真止要收圆里思量,将滤波器分为二种,一种是IIR滤波器,另一种是FIR滤波器.
IIR滤波器死存了模拟滤波器较好的幅度个性,安排简朴灵验.但是那些个性是以死相位个性为代价而赢得的,然而当前许普遍据传输,图像处理系统皆越去越多的央供系统具备线性相位个性.
FIRDF的最大便宜是不妨真止线性相位滤波.而IIRDF主要对付幅频个性举止迫近,相频个性会存留分歧程度的非线性.咱们知讲,无得真传输与滤波处理的条件是,正在旗号的灵验频谱范畴内系统幅频赞同应为常数,相频赞同为频次的线性函数.其余,FIR是齐整面滤波器,硬件战硬件真止结构简朴,不必思量宁静性问题.所以,FIRDF是一种很要害的滤波器,正在数字旗号处理范畴得到广大应用.
FIRDF安排要收主要分为二类:第一类是鉴于迫近理念滤波器个性的要收,包罗窗函数法、频次采样法战等波纹最好迫近法;第二类是最劣安排法.其中窗函数计法的基础思维是用FIRDF迫近期视的滤波个性.
本次安排主要采与窗函数安排法,对付理念滤波器举止迫近,进而真止下通滤波器的安排.
1.5百般窗函数参数
窗函数典型旁瓣峰值nα(dB)
过度戴宽度B
∆
阻戴最小衰减sα(dB) 近似值透彻值
矩形窗-13 4π/N π/N -21 三角窗-25 8π/N π/N -25 汉宁窗-31 8π/N π/N -44 哈明窗-41 8π/N π/N -74 布莱克曼窗-57 12π/N 11π/N -80
⎥⎦⎤⎢⎣
⎡--=⎥⎦⎤⎢⎣⎡--=)12cos()()(5.0)()12cos(15.0)(N n n R n R n R N n n N N N hn ππω 0510152025303500.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
图2 汉宁窗
3. 安排过程
1.1 应用MATLAB 安排滤波器:
为了谦脚下通滤波的效验,树立线性相位下通FIR 的参数为:通戴停止频次rad p 2/πω=,阻戴停止频次rad s 4/πω=,通戴最大衰减dB p 1=α,阻戴最小衰减dB s 40=α.
由以上参数,通过查表可得,hanning 窗战haming 窗皆谦脚条件,咱们采用hanning 窗.过度戴宽4/πωω=-=∆p s B ,hanning 窗的透彻过度戴宽为B ∆π/N ,所以央供/4/N 6.2ππ≤=∆B ,解之得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,
]
其波形如图3所示,频谱如图4,其幅频个性战相频个性如图5.
图3 图4
图5
1.2用CCS对付下通滤波器举止仿真
树立输进旗号fIn=sin(2πn/30)/2+cos(2πn*1.6),使用MATLAB运算得到的下通FIR滤波器举止滤波,滤去矮频分量.
采用“Debug”菜单的“RUN”项,大概按F12 键运止步调.
瞅察“fin”、“fout”窗心中时域图形;瞅察滤波效验.
鼠标左键单打“Input”战“Output”窗心,采用“Properties…”项,树立“Display Type”为“FFT Magitude”,再单打“OK”按钮中断树立.
瞅察“Input”、“Output”窗心中频域图形;明黑滤波效验.
4. 仿真波形
1.1 MATLAB 对付下通FIRDF 的安排 0510152025-0.3-0.2
-0.1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0510152025
-1-0.8-0.6-0.4-0.200.20.40.60.81
1.2 CCS 对付下通FIRDF 的应用仿真
5.安排停止
由MATLAB战CCS的仿真停止不妨瞅出,此下通FIRDF不妨真止下通滤波的功能,正在输进为fIn=sin(2πn/30)/2+cos(2πn*1.6)时,输出波形中已不含w=1/30的矮频分量,滤波效验劣良,输出频谱中矮频部分基础不旗号.
6.心得
通过那次课程安排,使尔掌握了课程安排的基础思路战要收,掌握了课程安排证明书籍的基础撰写要收,相识了基础的安排思维战安排要收.共时此次课程安排使尔课程的前提知识战基础表里有了更深的明黑战掌握,锻炼了咱们概括使用所教知识的本收,并正在表里分解安排、估计造图使用尺度战典型查阅安排脚册与资料以及估计机应用能了等圆里得到了收端的锻炼战普及,培植了咱们宽紧供真的科教做风.
那次课程安排使尔进一步认识了估计工具硬件---MATLAB.并进一步掌握了MATLAB的使用要收.对付MATLAB谈话的死少战个性有了更深的相识,认识其处事环境,正在其应用圆里也有了更深的相识,相识了MATLAB步调书籍写的普遍思路及普遍步调,教会了用MATLAB办理搀纯旗号处理等问题的要收.
正在课程安排的那段时间里,尔认为支获仍旧很多的,不但进一步掌握了数字旗号处理的前提知识及一门博业仿真硬件的基础支配,还普及了自己的安排本收及动脚本收,共时对付于模拟滤波器去了个系统的归纳.更多的是让尔瞅浑了自己,明黑了凡是事需要耐性,试验是考验教习的唯一尺度.表里知识的缺累正在那次课设中表示的很明隐.那将有帮于尔以后的教习,规则自己的教习做风,进而越收齐力的教习.
参照文件
1刘泉阙大逆主编. 数字旗号处理本理与真止. 北京:电子工业出版社,2005
2程佩青. 数字旗号处理教程(第二版). 北京:浑华大教出版社,2001
3 下西齐数字旗号处理-本理、真止及应用. 北京:电子工业出版社,2010
附录
MATLAB步调------死成下通FIRDF
wp=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,'high',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('\omega^pi')
ylabel('|H(e^j\omega|dB)')
subplot(2,1,2)
xlabel('\omega^pi')
CCS步调
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
#include "f2812a.h"
#include"math.h"
#define FIRNUMBER 25
#define SIGNAL1F 1000
#define SIGNAL2F 4500
#define SAMPLEF 10000
float InputWave();
float FIR();
float fHn[FIRNUMBER]={ -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, };
float fXn[FIRNUMBER]={ 0.0 };
float fInput,fOutput;
float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2;
float f2PI;
int i;
float fIn[256],fOut[256];
int nIn,nOut;
main(void)
{
nIn=0; nOut=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/30;
fStepSignal2=2*PI*1.6;
while ( 1 )
{
fInput=InputWave();
fIn[nIn]=fInput;
nIn++; nIn%=256;
fOutput=FIR();
fOut[nOut]=fOutput;
nOut++;
if ( nOut>=256 )
{
nOut=0;/* 请正在此句上树立硬件断面 */ }
}
}
float InputWave()
{
for ( i=FIRNUMBER-1;i>0;i-- )
fXn[i]=fXn[i-1];
fXn[0]=sin(fSignal1)/2.0+cos(fSignal2); fSignal1+=fStepSignal1;
if ( fSignal1>=f2PI )fSignal1-=f2PI; fSignal2+=fStepSignal2;
if ( fSignal2>=f2PI )fSignal2-=f2PI; return(fXn[0]);
}
float FIR()
{
float fSum;
fSum=0;
for ( i=0;i<FIRNUMBER;i++ )
{
fSum+=(fXn[i]*fHn[i]); }
return(fSum);
}。