数字滤波器的设计课程设计.docx
《数字滤波器的设计课程设计.docx》由会员分享,可在线阅读,更多相关《数字滤波器的设计课程设计.docx(24页珍藏版)》请在冰点文库上搜索。
数字滤波器的设计课程设计
数字信号及MATLAB实现课程设计报告
数字滤波器的设计
学院:
电气学院
班级:
姓名:
学号:
指导老师:
2014年1月
目录
目录1
第一章绪论2
1.1.1数字滤波器的优越性2
1.1.2数字滤波器的实现方法3
1.1.3主要研究内容4
第二章摘要5
第三章报告正文6
第一节IIR滤波器的设计6
3.1.1流程框图6
3.1.2设计步骤6
3.1.3IIR数字滤波器的设计方法7
3.1.4MATLAB程序9
3.1.5运行结果及分析:
10
第二节matlabFDATool界面数字滤波器设计11
3.2.1Faldstool11
3.2.2用Fdatool进行带通滤波器设计13
第三节系统对象滤波器设计15
3.3.1设定系统的仿真对象15
3.3.2系统对象滤波器设计方法15
3.3.3MATLAB程序仿真设计15
第四章总结21
参考文献22
第一章绪论
1.1.1数字滤波器的优越性
数字信号处理由于具有精度高、灵活性强等优点,已广泛应用于图像处理、数字通信、雷达等领域。
数字滤波技术在数字信号处理中占有极其重要的地位,数字滤波器根据其单位脉冲响应可分为IIR(无限长冲激响应滤波器)和FIR(有限长冲激响应滤波器)两类。
IIR滤波器可以用较少的阶数获得很高的选择特性,但在有限精度的运算中,可能出现不稳定现象,而且相位特性不好控制。
数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。
数字滤波器又分为无限冲激响应滤波器(IIR)和有限冲激响应滤波器(FIR)。
FIR滤波器具有不含反馈环路、结构简单以及可以实现的严格线性相位等优点,因而在对相位要求比较严格的条件下,采用FIR数字滤波器。
同时,由于在许多场合下,需要对信号进行实时处理,因而对于单片机的性能要求也越来越高。
由于DSP控制器具有许多独特的结构,例如采用多组总线结构实现并行处理,独立的累加器和乘法器以及丰富的寻址方式,采用DSP控制器就可以提高数字信号处理运算的能力,可以对数字信号做到实时处理。
DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C5509作为DSP处理芯片,通过对其编程来实现IIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。
由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。
但是IIR系统与传统的通过硬件电路实现的模拟滤波器相比有以下优点:
1、单位冲击响应有无限多项;
2、高效率(因为结构简单、系数小、乘法操作较少)
3、与模拟滤波器有对应关系
4、可以解析控制,强制系统在指定位置为零点
5、有极点,在设计时要考虑稳定性
6、具有反馈,可能产生噪声、误差累积
1.1.2数字滤波器的实现方法
目前数字滤波器的主要实现方法有:
1.在通用的微型计算机上用软件实现。
软件可以是自己编写的,也可以使用现成的软件包,这种方法的缺点是速度太慢,不能用于实时系统,只能用于教学和算法的仿真研究。
比如用MATLAB就几乎可以实现所有数字滤波器的仿真。
而且在MATLAB下的部分仿真程序还可以通过转化为C语言,再通过DSP的C编译器直接在DSP硬件上运行。
2.用DSP(DigitalSignalProcessing)处理器实现
DSP处理器是专为数字信号处理而设计的,如TI公司的TMS320C54x系列,AD公司的ADSP2IX,ADSP210X系列等。
它的主要数字运算单元是一个乘累加器(Multiply-accumulator,MAC),能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。
这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快、稳定性好、编程方便。
3.用固定功能的专用信号处理器实现
专用信号处理器采用专用集成电路ASIC(ApplicationSpecificIntegratedCircuits)实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。
它们体积小、保密性好,具有极高的性能,但灵活性差。
4.用FPGA等可编程器件来开发数字滤波算法。
由于FPGA产品的迅速发展,人们可以利用Atera、Xilinx等产品,使用其相关开发工具和VHDL等硬件开发语言,通过软件编程用硬件实现特定的数字滤波算法。
这一方法由于具有通用性的特点并可以实现算法的并行运算,无论是作为独立的数字信号处理器,还是作为DSP芯片的协处理器,目前都是比较活跃的研究领域。
比较以上方法可见:
可以采用MATLAB等软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对数字滤波器进行前期的设计和仿真。
而后,用DSP处理器或FPGA进行数字滤波的硬件实现。
本课题设计的FIR数字滤波器就是用MATLAB进行设计和仿真,用DSP处理器来实现。
1.1.3主要研究内容
本文主要研究了数字滤波器的基本理论和实现方法。
接着研究分析了如何利用MATLAB仿真软件来设计出符合各种要求的数字滤波器,并对所设计的滤波器进行仿真得到系数,本文还应用DSP集成开发环境——CCS调试汇编程序,为后面在DSP上实现提供必要的数据。
本课题选择在TM320C5509DSP综合实验开发系统平台上进行开发。
最后采用窗函数法在CCS环境下,利用MATLAB仿真得到的滤波器系数,编程实现IIR数字滤波器,得出滤波结果波形,并对结果进行分析与总结。
第2章摘要
数字信号处理”是电子信息类专业一门重要的主干课,它利用傅里叶变换和Z变换等数学方法,阐述了离散信号和系统的特性,通过对IIR和FIR滤波器的设计分析了数字信号处理的实现方法。
本课题主要应用MATLAB软件设计IIR数字滤波器,并对所设计的滤波器进行仿真,仿真结果表明该设计符合要求。
IIR滤波器有以下几个特点:
系统函数可以写成封闭函数;采用递归型结构;设计上可以借助成熟的模拟滤波器的成果;需加相位校准网络。
基于以上几点,使我们对IIR滤波器的研究显得不可忽视。
在数字滤波器中,IIR滤波器由于结构简单、运算量下的特点,IIR数字滤波器幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上,因而得到了较广泛的应用。
第三章报告正文
第一节IIR滤波器的设计
3.1.1流程框图
开始
↓
读入数字滤波器技术指标
↓
将指标转换成归一化模拟低通滤波器的指标
↓
设计归一化的模拟低通滤波器阶数N和3db截止频率
↓
模拟域频率变换,将G(P)变换成模拟带通滤波器H(s)
↓
用双线性变换法将H(s)转换成数字带通滤波H(z)
↓
输入信号后显示相关结果
↓
结束
3.1.2设计步骤
(1)根据任务,确定性能指标:
在设计带通滤波器之前,首先根据工程实际的需要确定滤波器的技术指标:
带通滤波器的阻带边界频率关于中心频率ωp0几何对称,因此ws1=wp0-(ws2-wp0)=0.3π
通带截止频率wc1=0.4π,wc2=0.6π;阻带截止频率wr1=0.3π,wr2=0.7π;阻带最小衰减αs=3dB和通带最大衰减αp=15dB;
(2)用Ω=2/T*tan(w/2)对带通数字滤波器H(z)的数字边界频率预畸变,得到带通模拟滤波器H(s)的边界频率主要是通带截止频率ωp1,ωp2;阻带截止频率ωs1,ωs2的转换。
为了计算简便,对双线性变换法一般T=2s
通带截止频率wc1=(2/T)*tan(wp1/2)=tan(0.4π/2)=0.7265
wc2=(2/T)*tan(wp2/2)=tan(0.6π/2)=1.3764
阻带截止频率wr1=(2/T)*tan(ws1/2)=tan(0.3π/2)=0.5095
wr2=(2/T)*tan(ws2/2)=tan(0.7π/2)=1.9626
阻带最小衰减αs=3dB和通带最大衰减αp=15dB;
(3)运用低通到带通频率变换公式λ=(((Ω^2)-(Ω0^2))/(B*Ω))将模拟带通滤波器指标转换为模拟低通滤波器指标。
B=wc2-wc1=0.6499
normwr1=(((wr1^2)-(w0^2))/(B*wr1))=2.236
normwr2=(((wr2^2)-(w0^2))/(B*wr2))=2.236
normwc1=(((wc1^2)-(w0^2))/(B*wc1))=1
normwc2=(((wc2^2)-(w0^2))/(B*wc2))=1
得出,normwc=1,normwr=2.236
模拟低通滤波器指标:
normwc=1,normwr=2.236,αp=3dB,αs=15Db
(4)设计模拟低通原型滤波器。
用模拟低通滤波器设计方法得到模拟低通滤波器的传输函数Ha(s);借助巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等。
(5)调用lp2bp函数将模拟低通滤波器转化为模拟带通滤波器。
(6)利用双线性变换法将模拟带通滤波器Ha(s)转换成数字带通滤波器H(z).
3.1.3IIR数字滤波器的设计方法
目前,IIR数字滤波器设计最通用的方法是借助于模拟滤波器的设计方法。
模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此,充分利用这些已有的资源将会给数字滤波器的设计带来很大方便,IIR数字滤波器的设计步骤是:
(1)按一定规则将给出的数字滤波器的技术指标转换为模拟滤波器的技术指标;
(2)根据转换后的技术指标设计模拟低通滤波器H(s);
(3)在按一定规则将H(s)转换为H(z)。
若所设计的数字滤波器是低通的,那么上述设计工作可以结束,若所设计的是高通、带通或者带阻滤波器,那么还有步骤:
(4)将高通、带通或者带阻数字滤波器的技术指标先转化为低通滤波器的技术指标,然后按上述步骤
(2)设计出模拟低通滤波器H(s),再由冲击响应不变法或双线性变换将H(s)转换为所需的H(z)。
s-z映射的方法有:
冲激响应不变法、阶跃响应不变法、双线性变换法等。
下面讨论双线性变换法。
双线性变换法是指首先把s平面压缩变换到某一中介平面s1的一条横带(宽度为2πT,即从-πT到πT),然后再利用
的关系把s1平面上的这条横带变换到整个z平面。
这样s平面与z平面是一一对应关系,消除了多值变换性,也就消除了频谱混叠现象。
s平面到z平面的变换可采用
(2-5)
(2-6)
令
,
有:
(2-7)
从s1平面到z平面的变换,即
(2-8)
代入上式,得到:
(2-9)
一般来说,为使模拟滤波器的某一频率与数字滤波器的任一频率有对应关系,可引入代定常数c,
(2-10)
则
(2-11)
这种s平面与z平面间的单值映射关系就是双线性变换。
有了双线性变换,模拟滤波器的数字化只须用进行置换。
3.1.4MATLAB程序
MATLAB程序如下:
clear
wp0=0.5*pi;wp1=0.4*pi;wp2=0.6*pi;
Ap=3;ws2=0.7*pi;As=15;T=2;%数字带通滤波器技术指标
ws1=wp0-(ws2-wp0);%计算带通滤波器的阻带下截止频率
wc1=(2/T)*tan(wp1/2);wc2=(2/T)*tan(wp2/2);
wr1=(2/T)*tan(ws1/2);wr2=(2/T)*tan(ws2/2);
w0=(2/T)*tan(wp0/2);%频率预畸变
B=wc2-wc1;%带通滤波器的通带宽度
normwr1=(((wr1^2)-(w0^2))/(B*wr1));
normwr2=(((wr2^2)-(w0^2))/(B*wr2));
normwc1=(((wc1^2)-(w0^2))/(B*wc1));
normwc2=(((wc2^2)-(w0^2))/(B*wc2));%带通到低通的频率变换
ifabs(normwr1)>abs(normwr2)
normwr=abs(normwr2)
elsenormwr=abs(normwr1)
end
normwc=1;%将指标转换成归一化模拟低通滤波器的指标
N=buttord(normwc,normwr,Ap,As,'s');%设计归一化的模拟低通滤波器阶数N和3db截止频率
[bLP,aLP]=butter(N,normwc,'s');%计算相应的模拟滤波器系统函数G(p)
[bBP,aBP]=lp2bp(bLP,aLP,w0,B);%模拟域频率变换,将G(P)变换成模拟带通滤波器H(s)
[b,a]=bilinear(bBP,aBP,0.5);%用双线性变换法将H(s)转换成数字带通滤波器H(z)
w=linspace(0,2*pi,500);
h=freqz(b,a,w);
subplot(2,1,2);
plot(w,abs(h));
gridon
xlabel('w(rad)')
ylabel('|H(jw)|')
title('频谱函数')
subplot(2,2,1);
plot(w,20*log10(abs(h)));
axis([0,2*pi,-120,20]);
gridon
xlabel('w(rad)')
ylabel('20*lg|H(jw)|(db)')
title('20*lg|H(jw)|--w')
3.1.5运行结果及分析:
程序运行结果:
normwr=2.2361
由设计流程计算得normwr=2.236与运行结果相同。
低通原型的每一个边界频率都映射为带通滤波器两个相应的边界频率。
根据通带截至频率和阻带截至频率与频谱函数曲线比较,满足设计要求。
第二节matlabFDATool界面数字滤波器设计
3.2.1Faldstool
传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。
利用MATLAB信号处理工具箱(SignalProcessingToolbox)[12-14]可以快速有效的设计由软件组成的常规数字滤波器的设计方法。
给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的FDATool工具进行界面设计的详细步骤。
利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。
FDATool(FilterDesign&AnalysisTool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(FilterDesignToolbox)。
FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。
它操作简单,方便灵活。
FDATool界面总共分两大部分,一部分是DesignFilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
DesignFilter部分主要分为:
FilterType(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。
DesignMethod(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、ChebyshevTypeI(切比雪夫I型)法、ChebyshevTypeII(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。
FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括SpecifyOrder(指定阶数)和MinimumOrder(最小阶数)。
在SpecifyOrder中填入所要设计的滤波器的阶数(N阶滤波器,SpecifyOrder=N-1),如果选择MinimumOrder则MATLAB根据所选择的滤波器类型自动使用最小阶数。
FrenquencySpecifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。
它的具体选项由FilterType选项和DesignMethod选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
MagnitudeSpecifications选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。
当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
WindowSpecifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数,在通带内的衰减为6dB。
FDATool的操作页面
通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。
设计完成后将结果保存为*.fda文件。
在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果。
其它类型的FIR滤波器和IIR滤波器也都可以使用FDATool来设计。
3.2.2用Fdatool进行带通滤波器设计
给定的数字带通滤波器的参数是:
通带为45Hz~55Hz,低截止频率为40Hz,高截止频率为60Hz,通带内衰减不大于3db,阻带衰减大于80db。
借助Matlab仿真,可以得到设计成不同类型的滤波器所需的阶数:
采用不同类型滤波器实现所需的阶数
滤波器类型
最低阶数
稳定性
FIR滤波器
Kaiser窗函数
201
稳定
Blackman窗函数
180
稳定
Equirpple
86
稳定
IIR滤波器
Butterworth滤波器
26
稳定
ChebishevⅡ滤波器
16
稳定
椭圆滤波器
12
稳定
可见,FIR滤波器阶数过高,导致的直接结果是消耗的资源较多,成本增加。
因此采用IIR滤波器实现比较合适。
而在IIR滤波器中,椭圆滤波器的阶次最低,切比雪夫次之,巴特沃兹最高,参数的灵敏度则恰恰相反。
根据传递函数的形式,巴特沃思和切比雪夫滤波器的传递函数都是一个常数除以一个多项式,为全极点网络,仅在无限大阻带处衰减为无限大,而椭圆函数滤波器在有限频率上既有零点又有极点,极零点在通带内产生等波纹,阻带内的有限传输零点减小了过渡区,可获得极为陡峭的衰减特性曲线。
综上考虑,采用椭圆函数滤波器最为适宜。
用以下matlab程序可得到满足给定条件的12阶椭圆滤波器的直接型表示:
fs=200;
wp=[4555]*2/fs;
ws=[4060]*2/fs;
rp=3;
rs=80;
Nn=512;
[n,wn]=ellipord(wp,ws,rp,rs);
[b,a]=ellip(n,rp,rs,wn);
freqz(b,a,Nn,fs);
[z,p,k]=ellip(n,rp,rs,wn);
zplane(z,p);
12阶椭圆滤波器的幅频相应和相频响应
说明12阶椭圆滤波器很好的满足了给定的阻带和通带的衰减。
12阶椭圆滤波器的零极图
说明极点全在单位园内部,因而该椭圆滤波器是稳定的。
第三节系统对象滤波器设计
3.3.1设定系统的仿真对象
对象1:
一个含有10Hz、30Hz和60Hz的混合正弦波信号X=sin(2*pi*t*10)+sin(2*pi*t*30)+sin(2*pi*t*60),通过一个设计的IIR带通椭圆滤波器(elliptic)后,使输入的混合信号中频率为30Hz的正弦波信号通过,而将频率为10Hz和60Hz的正弦波信号大大衰减。
对象2:
一个原始信号为s=sin(2*pi*70*t)+2*sin(2*pi*120*t),抽样频率为Fs=1000Hz。
由于某种原因,信号被白噪声污染,实际获得的信号为sn=s+randn(size(t)),现通过一个设计的FIR滤波器恢复出原始信号。
3.3.2系统对象滤波器设计方法
对象1滤波器设计方法:
MATLAB信号处理工具箱提供了各种滤波器设计函数及滤波器实现函数,根据本系统对象,采用ellipap函数设计创建一低通模拟椭圆滤波器,然后再采用lp2bp函数将模拟低通;滤波器转换成模拟带通滤波器,最后采用bilinear函数现双线性变换法把模拟滤波器转换成数字滤波器。
ellipap函数调用格式为[z,p,k]=ellipap(n,rp,rs),[10]其中n为滤波器阶数,rp为该滤波器在通带内的最大衰减,rs为在阻带内的最小衰减;lb2bp函数的调用格式为[At,Bt,Ct,Dt]=lp2bp(A,B,C,D,Wo,Bw),其中Wo为中心频率,Bw为带宽;[At1,Bt1,Ct1,Dt1]=bilinear(At,Bt,Ct,Dt,Fs),其中Fs为抽样频率。
滤波器技术指标:
通带下截止频率Wp1=20Hz,通带下截至止频率Wp2=40Hz,在通带内的最大衰减rp为0.2,在通带内的最小衰减rs为40,抽样频率Fs为200Hz。
对象2滤波器设计方法:
由于白噪声分布在整个频带,所以需要在不衰减原信号的前提下,对整个频带进行滤波,设计一个带过渡带的多带FIR滤波器。
采用firls函数,其调用格式为b=firls(n,f,m),其中n为滤波器阶数,f为转换频率向量,在0到1之间;m为滤波器幅频响应中的频带增益向量。
滤波器技术指标:
在[65/50075/500](即[0.130.15]段和[115/500125/500](即[0.230.25])段频带内的幅度是1,在[060/500](即[00.12])段、[80/500110/500](即[0.160.22])段、[130/5001](即[0.261])段频带内的幅度是0。
3.3.3MATLAB程序仿真设计
双击打开MATLAB,接在窗口中输入程序得出结果,产生一个含有10Hz、30Hz和60Hz的混合正弦波信号X
(1)MATLAB程序实现如下:
Fs=200;
t=(1:
200)/Fs;
x1=sin(2*pi*t*10);
x2=sin(2*pi*t*30);
x3=sin(2*pi*t*60);
X=x1+x2+x3;
plot(t,X);