数字滤波器的DSP实现概述.docx
- 文档编号:30484959
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:23
- 大小:134.99KB
数字滤波器的DSP实现概述.docx
《数字滤波器的DSP实现概述.docx》由会员分享,可在线阅读,更多相关《数字滤波器的DSP实现概述.docx(23页珍藏版)》请在冰豆网上搜索。
数字滤波器的DSP实现概述
西南石油大学
专业综合实践
题目:
数字滤波器在DSP上的实现
专业:
通信工程2011级
姓名:
梅亚军
学号:
1107050132
2015-3-17
目录
一设计目标1
二数字滤波器的概述1
2.1数字滤波器的基本结构1
2.1.1FIR数字滤波器的基本结构1
2.1.2IIR滤波器的基本结构2
2.2数字滤波器的设计原理3
2.3数字滤波器的性能指标3
2.4数字滤波器的设计方法4
2.5IIR滤波器与FIR滤波器的分析比较6
三系统设计7
3.1系统设计方案7
3.2简单设计步骤9
3.3软件设计9
3.4数字滤波器的实现方法11
五系统仿真11
5.1仿真设置11
5.2仿真图12
六总结13
附录14
一设计目标
数字滤波器是按照程序计算信号,达到滤波的目的。
通过对数字滤波器的存储器编写程序,就可以实现各种滤波功能,比如对噪声的滤波。
对数字滤波器来说,增加功能就是增加程序,不用增加元件,不受元件误差的影响,对低频信号的处理也不用增加芯片的体积。
用数字滤波方法可以摆脱模拟滤波器被元件限制的困扰。
二数字滤波器的概述
数字滤波器可以用查分方程、单位取样响应以及系统函数等表示。
对于研究系统的实现方法,即它的运算结构来说,用框图表示最为直接。
一个给定的输入输出关系,可以用多种不同的数字网络来实现。
在不考虑量化影响时,这些不同的实现方法是等效的;但在考虑量化影响时,这些不同的实现方法性能上就有差异。
因此,运算结构是很重要的,同一系统函数H(z),运算结构的不同,将会影响系统的精度、误差、稳定性、经济性以及运算速度等许多重要性能。
IIR(无限冲激响应)滤波器与FIR(有限冲激响应)滤波器在结构上有自己不同的特点,在设计时需综合考虑。
2.1数字滤波器的基本结构
作为线形时不变系统的数字滤波器可以用系统函数来表示,而实现一个系统函数表达式所表示的系统可以用两种方法:
一种方法是采用计算机软件实现;另一种方法是用加法器、乘法器、和延迟器等元件设计出专用的数字硬件系统,即硬件实现。
不论软件实现还是硬件实现,在滤波器设计过程中,由同一系统函数可以构成很多不同的运算结构。
对于无限精度的系数和变量,不同结构可能是等效的,与其输入和输出特性无关;但是在系数和变量精度是有限的情况下,不同运算结构的性能就有很大的差异。
因此,有必要对离散时间系统的结构有一基本认识。
2.1.1FIR数字滤波器的基本结构
数字滤波器是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。
一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满足差分方程为:
对其进行z变换,可得到FIR滤波器的传递函数为:
=
在DSP芯片中,实现z-1算法很方便,可采用循环缓冲区法,其特点如下:
对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(窗),用来放最新的N个输入样本;
从最新样本开始取数;
读完最后一个样本后,输入最新样本来代替最老样本,而其他数据位置不变;
用片内循环缓冲区长度寄存器对缓冲区进行间接寻址,是循环缓冲区地址首位相邻。
则,FIR滤波器的结构如下图:
图1-1FIR滤波器的结构如下图
FIR滤波算法实际上是一种乘法累加运算。
它不断输入样本,经延时,作乘法累加,再输出滤波结果y(n)。
在这里使用FIR滤波器,它有以下几个特点:
(1)系统的单位冲激响应h(n)在有限个n值处不为零;
(2)系统函数H(z)在|z|>0处收敛,在|z|>0处只有零点,有限z平面只有零点,而全部极点都在z=0处;
(3)结构主要是非递归结构,没有输出到输入的反馈。
2.1.2IIR滤波器的基本结构
一个数字滤波器可以用系统函数表示为:
由这样的系统函数可以得到表示系统输入与输出关系的常系数线形差分程为:
可见数字滤波器的功能就是把输入序列x(n)通过一定的运算变换成输出序列y(n)。
不同的运算处理方法决定了滤波器实现结构的不同。
无限冲激响应滤波器的单位抽样响应h(n)是无限长的,其差分方程如(2-2)式所示,是递归式的,即结构上存在着输出信号到输入信号的反馈,其系统函数具有(2-1)式的形式,因此在z平面的有限区间(0<︱z︱<∞)有极点存在。
前面已经说明,对于一个给定的线形时不变系统的系统函数,有着各种不同的等效差分方程或网络结构。
由于乘法是一种耗时运算,而每个延迟单元都要有一个存储寄存器,因此采用最少常熟乘法器和最少延迟支路的网络结构是通常的选择,以便提高运算速度和减少存储器。
然而,当需要考虑有限寄存器长度的影响时,往往也采用并非最少乘法器和延迟单元的结构。
2.2数字滤波器的设计原理
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR滤波器的特征是,具有无限持续时间冲激响应。
这种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。
FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。
数字滤波器的设计方法有多种,如双线性变换法、窗函数设计法、插值逼近法和Chebyshev逼近法等等。
随着MATLAB软件尤其是MATLAB的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。
数字滤波器设计的基本步骤如下:
(1)确定指标
在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。
在很多实际应用中,数字滤波器常常被用来实现选频操作。
因此,指标的形式一般在频域中给出幅度和相位响应。
幅度指标主要以两种方式给出。
第一种是绝对指标。
它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。
第二种指标是相对指标。
它以分贝值的形式给出要求。
在工程实际中,这种指标最受欢迎。
对于相位响应指标形式,通常希望系统在通频带中具有线性相位。
运用线性相位响应指标进行滤波器设计具有如下优点:
①只包含实数算法,不涉及复数运算;②不存在延迟失真,只有固定数量的延迟;③长度为N的滤波器(阶数为N-1),计算量为N/2数量级。
因此,本文中滤波器的设计就以线性相位FIR滤波器的设计为例。
(2)逼近
确定了技术指标后,就可以建立一个目标的数字滤波器模型。
通常采用理想的数字滤波器模型。
之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真
上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。
根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
2.3数字滤波器的性能指标
我们在进行滤波器设计时,需要确定其性能指标。
一般来说,滤波器的性能要求往往以频率响应的幅度特性的允许误差来表征。
以低通滤波器特性为例,频率响应有通带、过渡带及阻带三个范围。
在通带内:
1-AP≤|H(ejω)|≤1|ω|≤ωc
在阻带中:
|H(ejω)|≤Astωst≤|ω|≤ωc
其中ωc为通带截止频率,ωst为阻带截止频率,Ap为通带误差,Ast为阻带误差。
与模拟滤波器类似,数字滤波器按频率特性划分为低通、高通、带通、带阻、全通等类型,由于数字滤波器的频率响应是周期性的,周期为2π。
图2-1低通滤波器频率响应幅度特性的容限图
2.4数字滤波器的设计方法
IIR滤波器[7]的优点是可利用模拟滤波器设计的结果,缺点是相位是非线性的,若需要线性相位,则要用全通网络进行校正。
FIR滤波器的优点是可方便地实现线性相位。
FIR滤波器单位冲激响应h(n)的特点:
其单位冲激响应h(n)是有限长(
),系统函数为:
在有限Z平面有(N-1)个零点,而它的(N-1)个极点均位于原点z=0处。
Fir滤波器线性相位的特点:
如果FIR滤波器的单位抽样响应h(n)为实数,而且满足以下任一条件:
偶对称h(n)=h(N-1-n)
奇对称h(n)=-h(N-1-n)
其对称中心在n=(N-1)/2处,则滤波器具有准确的线性相位。
窗函数设计法:
一般是先给定所要求的理想滤波器频率响应
,由
导出
,我们知道理想滤波器的冲击响应
是无限长的非因果序列,而我们要设计的是
是有限长的FIR滤波器,所以要用有限长序列
来逼近无限长序列
,设:
常用的方法是用有限长度的窗函数w(n)来截取
即:
(2-14)
这里窗函数就是矩形序列RN(n),加窗以后对理想低通滤波器的频率响应将产生什么样的影响呢?
根据在时域是相乘关系,在频域则是卷积关系:
其中,
为矩形窗谱,
是FIR滤波器频率响应.
通过频域卷积过程看
的幅度函数H(ω)的起伏现象,可知,加窗处理后,对理想矩形的频率响应产生以下几点影响:
(1)使理想频率特性不连续点处边沿加宽,形成一个过渡带,其宽度等于窗的频率响应的主瓣宽度。
(2)在截止频率的两边的地方即过渡带的两边,出现最大的肩峰值,肩峰的两侧形成起伏振荡,其振荡幅度取决于旁瓣的相对幅度,而振荡的多少,则取决于旁瓣的多少。
(3)改变N,只能改变窗谱的主瓣宽度,改变ω的坐标比例以及改变的绝对值大小,但不能改变主瓣与旁瓣的相对比例(此比例由窗函数的形状决定)。
(4)对窗函数的要求
a、窗谱主瓣尽可能窄,以获取较陡的过渡带;
b、尽量减小窗谱的最大旁瓣的相对幅度;即能量集中于主瓣,使肩峰和波纹减小,增大阻带的衰减。
频率采样法:
窗函数设计法是从时域出发,把理想的hd(n)用一定形状的窗函数截取成有限长的h(n),来近似理想的hd(n),这样得到的频率响应
逼近于所要求的理想的频率响应
。
频率抽样法则是从频域出发,把给定的理想频率响应
加以等间隔抽样得到
,然后以此
作为实际FIR滤波器的频率特性的抽样值H(k),即
(2-16)
知道H(k)后,由DFT定义可唯一确定有限长序列h(n),利用这N个频域抽样值H(k)同样利用频率内插公式可得FIR滤波器的系统函数H(z),及频率响应
,即:
频率抽样法内插公式:
(2-17)
频率抽样法小结
优点:
可以在频域直接设计,并且适合于最优化设计。
缺点:
抽样频率只能等于2π/N的整数倍,或等于2π/N的整数倍加上π/N。
因而不能确保截止频率
的自由取值,要想实现自由地选择截止频率,必须增加抽样点数N,但这又使计算量增大。
为了提高逼近质量,减少通带边缘由于抽样点的陡然变化而引起的起伏振荡。
有目的地在理想频率响应的不连续点的边缘,加上一些过渡的抽样点,增加过渡带,减少起伏振荡。
循环缓冲算法:
对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。
利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。
下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。
2.5IIR滤波器与FIR滤波器的分析比较
前面已经介绍了IIR和FIR数字滤波器的设计方法,选择哪一种滤波器取决于每种类型滤波器的优点在设计中的重要性。
为了能在实际工作中恰当地选用合适的滤波器,现将两种滤波器特点比较分析[]如下:
(1)选择数字滤波器是必须考虑经济问题,通常将硬件的复杂性、芯片的面积或计算速度等作为衡量经济问题的因素。
在相同的技术指标要求下,由于IIR数字滤波器存在输出对输入的反馈,因此可以用较少的阶数来满足要求,所用的存储单元少,运算次数少,较为经济。
例如,用频率抽样法设计一个阻带衰减为20dB的FIR数字滤波器,要33阶才能达到要求,而用双线性变换法只需4~5阶的切比雪夫IIR滤波器就可达到同样的技术指标。
这就是说FIR滤波器的阶数要高5~10倍左右。
(2)在很多情况下,FIR数字滤波器的线性相位与它的高阶数带来的额外成本相比是非常值得的。
对于IIR滤波器,选择性越好,其相位的非线性越严重。
如果要使IIR滤波器获得线性相位,又满足幅度滤波器的技术要求,必须加全通网络进行相位校正,这同样将大大增加滤波器的阶数。
就这一点来看,FIR滤波器优于IIR滤波器。
(3)FIR滤波器主要采用非递归结构,因而无论是理论上还是实际的有限精度运算中他都是稳定的,有限精度运算误差也较小。
IIR滤波器必须采用递归结构,极点必须在z平面单位圆内才能稳定。
对于这种结构,运算中的舍入处理有时会引起寄生振荡。
(4)对于FIR滤波器,由于冲激响应是有限长的,因此可以用快速傅里叶变换算法,这样运算速度可以快得多。
IIR滤波器不能进行这样的运算。
(5)从设计上看,IIR滤波器可以利用模拟滤波器设计的现成的闭合公式、数据和表格,可以用完整的设计公式来设计各种选频滤波器。
一旦选定了已知的一种逼近方法(如巴特奥兹,切比雪夫等),就可以直接把技术指标带入一组设计方程计算出滤波器的阶次和系统函数的系数(或极点和零点)。
FIR滤波器则一般没有现成的设计公式。
窗函数法只给出了窗函数的计算公式,但计算通带和阻带衰减仍无显式表达式。
一般FIR滤波器设计仅有计算机程序可资利用,因而要借助于计算机。
(6)IIR滤波器主要是设计规格化、频率特性为分段常数的标准低通、高通、带通和带阻滤波器。
FIR滤波器则灵活很多,例如频率抽样法可适应各种幅度特性和相位特性的要求。
因此FIR滤波器可设计出理想正交变换器、理想微分器、线性调频器等各种网络,适应性很广。
而且,目前已经有很多FIR滤波器的计算机程序可供使用。
表2-1两种滤波器特点比较分析
FIR滤波器
IIR滤波器
设计方法
一般无解析的设计公式,要借助计算机程序完成
利用AF的成果,可简单、有效地完成设计
设计结果
可得到幅频特性(可以多带)和线性相位(最大优点)
只能得到幅频特性,相频特性未知,如需要线性相位,须用全通网络校准,但增加滤波器阶数和复杂性
稳定性
极点全部在原点(永远稳定)无稳定性问题
有稳定性问题
阶数
高
低
结构
非递归系统
递归系统
运算误差
一般无反馈,运算误差小
有反馈,由于运算中的四舍五入会产生极限环
IIR滤波器和FIR滤波器的性能指标、设计方法和各自的特点及优势。
分析本次要讨论的问题,根据需要,从技术指标上来看两种均可实现;从实现设计方法来看,FIR较为合适;从完成设计所用的硬件成本来看,FIR更为适宜。
因此,决定采用FIR算法来进行设计。
三系统设计
3.1系统设计方案
FIR滤波器的设计方法主要有窗函数设计法和频率抽样设计法等,其中窗函
数设计法是最基本的设计方法。
在设计FIR滤波器中,一个最重要的计算就是加
窗,采用矩形窗是最直接和简便的方法,但采用矩形窗存在较大的Gibbis效应,
且矩形窗的第一旁瓣与主瓣相比仅衰减13dB,因此实际设计中一般采用其他窗
函数。
主要介绍几种常用的窗函数和频率抽样设计法等。
利用窗函数设计FIR
(一)窗函数法的基本思想
窗函数设计的基本思想是要选取某一种合适的理想频率选择性滤波器,然后将它的脉冲响应截断以得到一个线性相位和因果的FIR滤波器。
因此这种方法的重点在于选择某种合适的窗函数和一种理想滤波器。
对于给定的滤波器技术指标,选择滤波器长度和具有最窄主瓣宽度和尽可能小的旁瓣衰减的某个窗函数。
任何数字滤波器的频率响应都是周期函数,它的傅立叶级数展开式为:
(二)几种常用的窗函数
工程中比较常用的窗函数有:
矩形窗函数、三角窗函数、汉宁窗函数、海明窗函数、布莱克曼窗函数和凯塞窗函数。
表3-1几种常用的窗函数对比
窗函数旁瓣峰值衰减过渡带阻带最小衰减
矩形窗-13
-21
三角形-27
-25
汉宁窗-31
-44
海明窗-41
-53
布莱克曼窗-57
-74
凯瑟窗-57
-80
窗函数的选择原则是:
(1)具有较低的旁瓣幅度,尤其是第一旁瓣幅度:
(2)旁瓣幅度下降速度要大,以利增加阻带衰减;
(3)主瓣的宽度要窄,以获得较陡的过渡带。
通常上述三点很难同时满足。
当选用主瓣宽度较窄时,虽然得到较陡的过渡
带,但通带和阻带的波动明显增加;当选用最小的旁瓣幅度时,虽能得到匀滑的
幅度响应和较小的阻带波动,但过渡带加宽。
因此,实际选用的窗函数往往是它
们的折衷。
在保证主瓣宽度达到一定要求的条件下,适当牺牲主瓣宽度来换取旁
瓣波动的减少。
比较可得:
凯塞窗可提供变化的过渡带宽,通过改变B的值可达到最陡的过渡带:
凯塞窗具有与海明窗相匹敌的特性,通过调整p的值,可将凯塞窗完全等价海明窗;
凯塞窗最大旁瓣值比主瓣约低80dB,在所有的窗函数中旁瓣抑制度最高[2]。
FIR滤波器设计系统总框图如下:
图3-1FIR滤波器设计系统总框图
3.2简单设计步骤
1、利用MATLAB来确定FIR滤波器的参数;
具体方法为:
利用fir2函数产生滤波系数:
b=fir2(n-1,f,m),参数n为滤波器的阶数;f为频率参数,m表示低通
2、启动CCS,在CCS中建立一个C源文件和一个命令文件,并将这两个文件添加到工程,再编译并装载程序;
3、设置波形时域观察窗口,得到滤波前后的波形变化图;
4、设置频域观察窗口,得到滤波前后的频谱变化图。
3.3软件设计
FIR滤波器的实现结构有以下几种形式
(1)直接型结构
该种结构实现时需N个乘法器、N-1个延迟器和N-1个加法器。
结构图如下:
图3-2直接型结构图
(2)级联型结构
FIR系统函数H(z)是z-1的N-1次多项式,其分解为实系数二阶因子的乘积形式为:
H(z)=
(β0k+β1kz-1+β2kz-2)
根据上式就可画出级联结构如下图。
其中Nc为N/2的最大整数。
该结构即是把H(z)的共轭零点或两个单个零点组成基本二阶节,H(z)为基本二阶因子的子系统函数积。
图3-3级联型结构图
从图4-2中可看出,每个二阶因子用直接型实现,每一节控制一对零点,便于传输零点的控制。
但系数β1k的个数比h(n)的个数多,其乘法次数比直接型多。
(3)线性相位型结构
线性相位特性是指滤波器对不同频率的正弦波所产生的相移和正弦波的频率成直线关系。
在滤波器通带内的信号通过滤波器后,除了由相频特性的斜率决定的延迟外,可以不失真地保留通带以内的全部信号。
线性相位的因果的FIR系统的单位取样响应具有如下特性
h(n)=±h(N-1-n)
当N为偶数时,式变为
H(z)=
h(n)[z-n+z-(N-1-n)]
当N为奇数时,此式为
H(z)=
h(n)[z-n+z-(N-1-n)]+h(
)z-(
)
由上面两个式子可知:
实现直接形式的结构网络只需要N/2(N为偶数)或(N十1)/2次乘法(N为奇数),利用h(n)的对称比直接卷积形式少用一半的乘法器。
图3-4N为偶数,线性相位结构
图3-5N为奇数,线性相位结构
3.4数字滤波器的实现方法
采用DSP(DigitalSignalProcessing)处理器来实现
DSP处理器是专为数字信号处理而设计的,它的主要数字运算单元是一个乘累加器,能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。
这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快,成本低。
用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响外,还具有灵活性好的特点。
五系统仿真
5.1仿真设置
1.fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR)和adconvover=0处设置断点
2.在GraphPropertyDialog中设置StartAddress和DisplayType,如下图:
图5-1仿真设置图
3.设置实验板输入信号的参数,再运行程序得到仿真图。
5.2仿真图
(1)标准矩形波,频率为300Hz,振幅为800mV。
图5-2滤波前
图5-3滤波后
(2)噪声三角波,频率为400Hz,振幅为800mV。
图5-4滤波前
图5-5滤波后
六总结
这次专业综合实践设计实现了数字通信系统的设计其中DSP的部分,我做的是数字滤波器在DSP上的实现,经过自己上网查找资料以及翻阅书籍,完成了设计的任务并达到了理想的目的。
通过本次设计,让我了解了数字滤波是信号处理技术中的重要部分,研究了数字滤波器的基本理论知识以及它实现方法。
学习了数字滤波器的结构、设计理论,掌握了各种数字滤波器的原理和特性。
并且复习了MATLAB以及数字信号处理的相关知识,并且利用MATLAB与CCS设计了低通滤波器以及高通滤波器,还研究了如何在定点DSP中实现数字滤波器的算法,掌握了CCS环境下的程序开发方法、调试工具的使用及优化级别的选择等。
研究了MATLAB环境下FIR数字滤波器的设计方法,利用MATLAB软件编程实现FIR滤波器设计。
附录
部分代码如下:
FILTER.c代码:
#include"DSP28_Device.h"
#include"filter.h"
#include"ext_inf.h"
unsignedintDataLong=1024;
unsignedinti,j;
unsignedintk=0;
unsignedshortAd_data[2048];
shortAd_data_signed[2048];
shortfilter_result[1024];
unsignedintconvcount=0;
volatileunsignedintadconvover=0;
interruptvoidISRTimer2(void);
interruptvoidad(void);
voidmain(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER=0x0000;
IFR=0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
//初始化cputimer
InitCpuTimers();
/*设置中断服务程序入口地址*/
EALLOW;
PieVectTable.TINT2=&ISRTimer2;
PieVectTable.ADCINT=&ad;
EDIS;
/*开中断*/
IER|=M_INT1;//ADC中断
EINT;
ERTM;
/*设置CPU*/
DINT;
ConfigCpuTimer(&CpuTimer2,150,22);
StartCpuTimer2();
/*开中断*/
IER|=M_IN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字滤波器 DSP 实现 概述