基于DSP的IIR滤波器系统设计.docx
- 文档编号:3664840
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:21
- 大小:188.21KB
基于DSP的IIR滤波器系统设计.docx
《基于DSP的IIR滤波器系统设计.docx》由会员分享,可在线阅读,更多相关《基于DSP的IIR滤波器系统设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于DSP的IIR滤波器系统设计
基于DSP的IIR滤波器系统设计
摘要
随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理的一项关键技术,广泛应用在语音识别、智能检测、工业控制等各个领域。
数字滤波器是对数字信号实现滤波的线性时不变系统。
数字滤波实质上是一种运算过程,实现对信号的运算处理。
DSP数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
传感器数字信号处理是利用传感器对模拟信号或数字信号进行采集并把其转换成计算机可识别的电信号,并利用计算机对信号进行处理以达到计算机辅助控制或是计算机自动控制的目的。
DSP芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。
用DSP芯片实现IIR数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。
本课题主要应用MATLAB软件设计IIR数字滤波器,并对所设计的滤波器进行仿真;应用DSP集成开发环境——CCS调试汇编程序,文章结合TM320C5509的结构特点,介绍了一种IIR滤波器在TM320C5509中的实现方法。
文中程序已经过硬件验证,仿真结果表明该设计符合要求。
关键词 数字滤波;IIR;DSP;TM320C5509;MATLAB
目录
摘要……
第1章绪论1
1.1数字滤波器的优越性2
1.2数字滤波器实现的方法2
1.3主要研究内容3
第2章滤波器基础4
2.1数字滤波器介绍4
2.2IIR滤波器的设计方法及原理5
2.3IIR滤波器的设计过程及MATLAB实现10
2.3.1设计过程10
2.3.2设计流程框图12
2.3.3MATLAB程序12
2.3.4运行结果及分析14
2.4本章小结14
第3章数字滤波器的DSP实现15
3.1TMS320C5509特点15
3.2DSP系统的设计与开发17
3.2.1DSP系统的特点17
3.2.2DSP系统的设计流程18
3.2.3DSP系统的开发工具CCS18
3.2.4IIR滤波器的设计框图19
3.2.5程序源代码20
第4章本文总结23
4.1总结23
参考文献23
第一章绪论
1.1数字滤波器的优越性
DSP芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。
数字信号处理由于具有精度高、灵活性强等优点,已广泛应用于图像处理、数字通信、雷达等领域。
数字滤波技术在数字信号处理中占有极其重要的地位,数字滤波器根据其单位脉冲响应可分为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.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.3主要研究内容
本文主要研究了数字滤波器的基本理论和实现方法。
接着研究分析了如何利用MATLAB仿真软件来设计出符合各种要求的数字滤波器,并对所设计的滤波器进行仿真得到系数,本文还应用DSP集成开发环境——CCS调试汇编程序,为后面在DSP上实现提供必要的数据。
本课题选择在TM320C5509DSP综合实验开发系统平台上进行开发。
最后采用窗函数法在CCS环境下,利用MATLAB仿真得到的滤波器系数,编程实现IIR数字滤波器,得出滤波结果波形,并对结果进行分析与总结。
第2章滤波器基础
2.1数字滤波器的介绍
数字滤波器是对数字信号实现滤波的线性时不变系统。
数字滤波实质上是一种运算过程,实现对信号的运算处理。
输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。
描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。
时域离散系统的频域特性:
其中
、
分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),
是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。
输入序列的频谱
经过滤波后
因此,只要按照输入信号频谱的特点和处理信号的目的,适当选择
,使得滤波后的
满足设计的要求,这就是数字滤波器的滤波原理。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。
IIR数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型
来实现,其差分方程为:
系统函数为:
设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。
2.2IIR滤波器的设计方法及原理
IIR数字滤波器是一种离散时间系统,其系统函数为
假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。
IIR数字滤波器的设计实际上是求解滤波器的系数
和
,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。
如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。
1.用脉冲相应不变法设计IIR数字滤波器
利用模拟滤波器来设计数字滤波器,也就是使数字滤波器能模仿模拟滤波器的特性,这种模仿可以从不同的角度出发。
脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应ha(t),即将ha(t)进行等间隔采样,使h(n)正好等于ha(t)的采样值,满足
h(n)=ha(nT)
式中,T是采样周期。
如果令Ha(s)是ha(t)的拉普拉斯变换,H(z)为h(n)的Z变换,利用采样序列的Z变换与模拟信号的拉普拉斯变换的关系得
(1-1)
则可看出,脉冲响应不变法将模拟滤波器的S平面变换成数字滤波器的Z平面,这个从s到z的变换z=esT是从S平面变换到Z平面的标准变换关系式。
图1-1脉冲响应不变法的映射关系
由(1-1)式,数字滤波器的频率响应和模拟滤波器的频率响应间的关系为
(1-2)
这就是说,数字滤波器的频率响应是模拟滤波器频率响应的周期延拓。
正如采样定理所讨论的,只有当模拟滤波器的频率响应是限带的,且带限于折叠频率以内时,即
(1-3)
才能使数字滤波器的频率响应在折叠频率以内重现模拟滤波器的频率响应,而不产生混叠失真,即
|ω|<π(1-4)
但是,任何一个实际的模拟滤波器频率响应都不是严格限带的,变换后就会产生周期延拓分量的频谱交叠,即产生频率响应的混叠失真,如图7-4所示。
这时数字滤波器的频响就不同于原模拟滤波器的频响,而带有一定的失真。
当模拟滤波器的频率响应在折叠频率以上处衰减越大、越快时,变换后频率响应混叠失真就越小。
这时,采用脉冲响应不变法设计的数字滤波器才能得到良好的效果。
图1-2脉冲响应不变法中的频响混叠现象
对某一模拟滤波器的单位冲激响应ha(t)进行采样,采样频率为fs,若使fs增加,即令采样时间间隔(T=1/fs)减小,则系统频率响应各周期延拓分量之间相距更远,因而可减小频率响应的混叠效应。
脉冲响应不变法优缺点:
从以上讨论可以看出,脉冲响应不变法使得数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,也就是时域逼近良好,而且模拟频率Ω和数字频率ω之间呈线性关系ω=ΩT。
因而,一个线性相位的模拟滤波器(例如贝塞尔滤波器)通过脉冲响应不变法得到的仍然是一个线性相位的数字滤波器。
脉冲响应不变法的最大缺点是有频率响应的混叠效应。
所以,脉冲响应不变法只适用于限带的模拟滤波器(例如,衰减特性很好的低通或带通滤波器),而且高频衰减越快,混叠效应越小。
至于高通和带阻滤波器,由于它们在高频部分不衰减,因此将完全混淆在低频响应中。
如果要对高通和带阻滤波器采用脉冲响应不变法,就必须先对高通和带阻滤波器加一保护滤波器,滤掉高于折叠频率以上的频率,然后再使用脉冲响应不变法转换为数字滤波器。
当然这样会进一步增加设计复杂性和滤波器的阶数。
2.用双线性变换法设计IIR数字滤波器
脉冲响应不变法的主要缺点是产生频率响应的混叠失真。
这是因为从S平面到Z平面是多值的映射关系所造成的。
为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。
也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。
这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1-3所示。
图1-3双线性变换的映射关系
为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现
(1-5)
式中,T仍是采样间隔。
当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。
将式(1-5)写成
将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得
再将S1平面通过以下标准变换关系映射到Z平面
z=es1T
从而得到S平面和Z平面的单值映射关系为:
(1-6)
(1-7)
式(1-6)与式(1-7)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换
式(1-5)与式(1-6)的双线性变换符合映射变换应满足的两点要求。
首先,把z=ejω,可得
(1-8)
即S平面的虚轴映射到Z平面的单位圆。
其次,将s=σ+jΩ代入式(1-8),得
因此
由此看出,当σ<0时,|z|<1;当σ>0时,|z|>1。
也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。
因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。
双线性变换法优缺点
双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。
这是因为S平面与Z平面是单值的一一对应关系。
S平面整个jΩ轴单
值地对应于Z平面单位圆一周,即频率轴是单值变换关系。
这个关系如式(1-8)所示,重写如下:
上式表明,S平面上Ω与Z平面的ω成非线性的正切关系,如图7-7所示。
由图7-7看出,在零频率附近,模拟角频率Ω与数字频率ω之间的变换关系接近于线性关系;但当Ω进一步增加时,ω增长得越来越慢,最后当Ω→∞时,ω终止在折叠频率ω=π处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。
图1-4双线性变换法的频率变换关系
但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(1-8)及图1-4所示。
由于这种频率之间的非线性变换关系,就产生了新的问题。
首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生的数字滤波器幅频响应相对于原模拟滤波器的幅频响应会有畸变,如图1-5所示。
图1-5双线性变换法幅度和相位特性的非线性映射
对于分段常数的滤波器,双线性变换后,仍得到幅频特性为分段常数的滤波器,但是各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸来加以校正。
也就是将临界模拟频率事先加以畸变,然后经变换后正好映射到所需要的数字频率上。
2.3IIR滤波器的设计过程及MATLAB实现
2.3.1IIR滤波器的设计过程
根据以上IIR数字滤波器设计方法,下面运用双线性变换法基于MATLAB设计一个IIR带通滤波器,其中带通的中心频率为ωp0=0.5π,;通带截止频率ωp1=0.4π,ωp2=0.6π;通带最大衰减αp=3dB;阻带最小衰减αs=15dB;阻带截止频率ωs2=0.7π
1.设计步骤:
(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).
2.3.2IIR滤波器的流程框图
开始
↓
读入数字滤波器技术指标
↓
将指标转换成归一化模拟低通滤波器的指标
↓
设计归一化的模拟低通滤波器阶数N和3db截止频率
↓
模拟域频率变换,将G(P)变换成模拟带通滤波器H(s)
↓
用双线性变换法将H(s)转换成数字带通滤波器H(z)
↓
输入信号后显示相关结果
↓
结束
2.3.3MATLAB程序
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')
2.3.4运行结果及分析
运行结果及分析:
图2.3
程序运行结果:
normwr=2.2361
由设计流程计算得normwr=2.236与运行结果相同。
低通原型的每一个边界频率都映射为带通滤波器两个相应的边界频率。
根据通带截至频率和阻带截至频率与频谱函数曲线比较,满足设计要求。
2.4本章小结
本章主要介绍了IIR滤波器设计的理论基础,分别介绍了IIR滤波器的几种设计方法和实现方法,为后面IIR滤波器的设计奠定理论基础。
介绍了用MATLAB实现步骤及运行结果。
第三章数字滤波器的DSP实现
数字信号处理器(DigitalSignalProcessor)是一种适合对数字信号进行高速实时处理的专用处理器,其主要用来实时快速地实现各种数字信号处理算法。
在当今的数字化时代,DSP己成为通信设备、计算机和其它电子产品的基础器件。
数字信号处理器与数字信号处理有着密不可分的关系,我们通常说的“DSP”可以指数字信号处理(DigitalSignalProcessing),也可以代表数字信号处理器(DigitalSignalProcessor)在本文里均指数字信号处理器。
数字信号处理是一门包括了许多学科并应用于很多领域的学科,是指利用计算机或是专用处理设备,以数字形式对信号进行分析、采集、合成、变换、滤波、估值、压缩、识别等处理,得到符合要求的信号形式。
数字信号处理器是用于处理数字信号的器件,因此它是伴随着数字信号处理才产生的。
DSP发展历程大致分为三个阶段:
20世纪70年代理论先行,80年代产品普及和90年代的突飞猛进。
在DSP出现之前数字信号处理只能依靠微处理器(MPU)来完成。
但MPU较低的处理速度无法满足高速实时的要求。
因此,直到20世纪70年代,有人才提出了DSP的理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DSP IIR 滤波器 系统 设计