DSP中的FIR滤波器论文.docx
- 文档编号:24871190
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:15
- 大小:228.77KB
DSP中的FIR滤波器论文.docx
《DSP中的FIR滤波器论文.docx》由会员分享,可在线阅读,更多相关《DSP中的FIR滤波器论文.docx(15页珍藏版)》请在冰豆网上搜索。
DSP中的FIR滤波器论文
无人机在农业险情监控方面的应用
姓名:
何庆勇学号:
200830590308年级专业班级:
08通信3班
指导教师
李震
报告提交日期
2011年6月9日
摘要
随着信息与数字技术的发展,数字信号处理已经成为当今极其重要而学科与技术领域之一。
它在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。
其中滤波是应用非常广泛的一个环节,数字滤波器的理论和相关设计也一直都是人们研究的重点之一。
FIR滤波器的是非递归的,稳定性好,精度高;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特征。
因此,它在高保真的信号处理,如数字音频、图像处理、数据传输和生物医学等领域得到广泛应用。
在数字信号处理中,滤波占有极其重要的地位。
数字滤波是语音信号处理、图像处理、模式识别、频谱分析等应用的基本处理算法。
用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。
本文介绍了数字滤波器的设计基础及用窗函数法设计FIR滤波器的方法,运用MATHLAB语言实现了低通滤波器的设计并用CCS2.0进行观察效果。
关键词:
FIR滤波MATHLAB窗函数法CCS
目录
1.设计要求1
2.滤波器的设计原理说明1
2.1数字滤波器的设计原理1
2.2FIR滤波器的基本结构1
2.3FIR滤波器的主要特点2
3.FIR滤波器的设计方法2
3.1FIR滤波器设计2
3.2窗函数设计的基本方法2
3.3滤波器的
算法实现
2
4.FIR滤波器的MATLAB实现3
4.1用fir1函数设计FIR滤波器3
4.2用fir2函数设计FIR滤波器4
4.3用MATLAB工具箱(Toolbox)自带工具设计FIR滤波器4
5.FIR滤波器的DSP实现7
6.FIR滤波器的结果检验9
7.调试问题10
8.心得体会11
参考文献12
1.设计要求
1)设计一FIR低通滤波器,实现对语音信号的滤波。
2)用语音信号去检验该滤波器,查看滤波效果。
根据老师的要求,我们自己拟定了滤波器的指标:
Fs=8000hz,Wp=1500Hz,Ws=2000Hz,通带波纹为0.01,阻带波纹为0.1,N=37。
2.滤波器的设计原理说明
2.1数字滤波器的设计原理
数字滤波器的设计问题就是寻找一组系数ai和bi,使得其性能在某种意义上逼近所要求的特性。
如果在s平面上去逼近,就得到模拟滤波器,如果在z平面上去逼近,则得到数字滤波器。
数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。
一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,
应满足常系数线性差分方程:
(2.1.1)
x(n)为输入序列,y(n)为输出序列,ai、bi为滤波器系数,N为滤波器的阶数。
2.2FIR滤波器的基本结构
在式2.1.1中,若所有的ai均为0,则得FIR滤波器的差分方程:
(2.2.1)
对式(2.2.1)进行z变换,可得FIR滤波器的传递函数:
(2.2.2)
由此可得到FIR滤波器的结构如图1所示。
FIR滤波器的单位冲击响应h(n)是一个有限长序列。
若h(n)为实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则FIR滤波器具有线性相位特性。
2.3FIR滤波器的主要特点
1)单位冲击响应只有有限项;
2)FIR滤波器无反馈回路,是一种无条件稳定系统;
3)FIR滤波器可以设计成具有线性相位特性。
3.FIR滤波器的设计方法
3.1FIR滤波器设计
FIR滤波器的设计问题在于寻求一系统函数,使其响应逼近滤波器要求的理想频率响应。
3.2窗函数设计的基本方法
从时域出发,设计h(n)逼近理想hd(n),设理想滤波器的单位脉冲响应为hd(n),则有
所求得的一般是无限长的,且是非因果的。
要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断,或者说用一个窗口函数对进行加窗处理,即。
因此,应选择合适的窗函数。
3.3滤波器的
算法实现
FIR滤波器的输出表达式为
式中,为滤波器系数;x(n)表示滤波器在n时刻的输入;y(n)为n时刻的输出。
它的基本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后,再进行乘法-累加,最后输出滤波结果y(n)。
1)线性缓冲区法
线性缓冲区法又称延迟线法。
其特点:
·对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;
·从最老样本开始取数,每取一个样本后,将此样本向下移位;
·读完最后一个样本后,输入最新样本存入缓冲区的顶部。
2)循环缓冲区法
本次设计的FIR滤波器所采用的就是循环缓冲区法。
循环缓冲区法的特点如下:
·对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;
·从最新样本开始取数;
·读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;
·用片内BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。
4.FIR滤波器的MATLAB实现
MATLAB是一种功能强、效率高、便于进行科学和工程计算的交互式软件包,它集数值分析、矩阵运算、信号处理和图形显示于一体,为用户提供了方便、友好的界面环境。
MATLAB中的工具箱(Toolbox)包含了许多实用程序。
它提供了多种FIR滤波器设计方法。
4.1用fir1函数设计FIR滤波器
fir1函数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。
具体语法如下:
b=fir1(n,Wn)
b=fir1(n,Wn,‘ftype’)
b=fir1(n,Wn,Window)
b=fir1(n,Wn,‘ftype’,Window)
其中n为滤波器的阶数;Wn为滤波器的截止频率;ftype为用来决定滤波器的类型,当ftype=high时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。
Window为用来指定滤波器采用的窗函数类型,Window参数可采用的窗口函数有:
Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默认时为Hamming窗,从而得到滤波器的系数。
4.2用fir2函数设计FIR滤波器
fir2函数用来设计有任意频率响应的各种加窗FIR滤波器。
具体语法如下:
b=fir2(n,f,m)
b=fir2(n,f,m,Window)
b=fir2(n,f,m,npt)
b=fir2(n,f,m,npt,Window)
b=fir2(n,f,m,npt,lap)
b=fir2(n,f,m,nptt,lap,Window)
其中n为滤波器的阶数;f为频率点矢量;m为幅度点矢量;Window用来指定所使用的窗函数类型,默认值为汉明(Hamming)窗;npt用来指定fir2函数对频率响应进行内插的点数;lap用来指定fir2函数在重复频率点附近插入的区域大小,从而得到滤波器的系数。
4.3用MATLAB工具箱(Toolbox)自带工具设计FIR滤波器
该方法为本次设计所采用的方法,实现流程如下图2所示:
(1)打开FilterDesign&AnalysisTool
图2
如图3设置本设计参数:
图3
点击DesignFilter,再点击FilterCoefficients按钮得如图4所示
图4
由此可以得到滤波器参数:
-8*32768/10000,-32*32768/1000016*32768/10000,56*32768/10000
36*32768/10000,-89*32768/10000-77*32768/10000,92*32768/10000
188*32768/10000,-53*32768/10000-289*32768/10000,-76*32768/10000
423*32768/10000,322*32768/10000-531*32768/10000,-851*32768/10000
595*32768/10000,3113*32768/100004298*32768/100003113*32768/10000,595*32768/10000
-851*32768/10000,-531*32768/10000322*32768/10000,423*32768/10000
-76*32768/10000,-289*32768/10000-53*32768/10000,188*32768/10000
92*32768/10000,-77*32768/10000-89*32768/10000,36*32768/10000
56*32768/10000,16*32768/10000-32*32768/10000,-8*32768/10000
5.FIR滤波器的DSP实现
所选取的N=37,滤波器的算法为
y(n)=
x(n)+
x(n-1)+
x(n-2)+···+
x(n-36)
根据我们所选择使用的循环缓冲区法可以编写得到FIR滤波器的源程序如下:
.title"fir.asm"
.mmregs
.defstart
.bssyn,1
xn.usect"xn",37
hn.usect"hn",37
indata.usect"indata",300
outdata.usect"outdata",256
.data
fir_coff:
.word-8*32768/10000,-32*32768/10000
.word16*32768/10000,56*32768/10000
.word36*32768/10000,-89*32768/10000
.word-77*32768/10000,92*32768/10000
.word188*32768/10000,-53*32768/10000
.word-289*32768/10000,-76*32768/10000
.word423*32768/10000,322*32768/10000
.word-531*32768/10000,-851*32768/10000
.word595*32768/10000,3113*32768/10000
.word4298*32768/10000
.word3113*32768/10000,595*32768/10000
.word-851*32768/10000,-531*32768/10000
.word322*32768/10000,423*32768/10000
.word-76*32768/10000,-289*32768/10000
.word-53*32768/10000,188*32768/10000
.word92*32768/10000,-77*32768/10000
.word-89*32768/10000,36*32768/10000
.word56*32768/10000,16*32768/10000
.word-32*32768/10000,-8*32768/10000
.text
start:
ssbxfrct;使用小数运算
stm#hn,ar1;系数首地址
rpt#36;将系数移入循
mvpdfir_coff,*ar1+;环缓冲区
stm#-1,ar0
stm#outdata,ar5
stm#indata,ar4
stm#xn+36,ar2
rpt#36;将输入数据移入
mvdd*ar4+,*ar2+0%;循环缓冲区
stm#xn+36,ar2;指向第一个输入
stm#hn+36,ar3
stm#37,bk;缓冲区大小37
stm#255,brc;块重复256次
stm#-1,ar0
rptbloop-1;块程序重复大小
rptza,#36;计算一个输出
mac*ar2+0%,*ar3+0%,a
stha,*(yn);保存输出
mvkd*(yn),*ar5+
mvdd*ar4+,*ar2+0%;读进一个输入
loop:
nop
bloop
.end
6.FIR滤波器的结果检验
(1)点击View—>Graph—>Time/Frequency...
如图设置好参数,如图5所示。
点击OK,可得到输入信号的时域波形。
图5
(2)重复上述操作,改变DisplayType,得到输入信号频域波形,输出信号时域波形,输出信号频域波形。
如图6所示。
图6
可知能达到设计要求,将输入的较高频2500hz的信号滤除,让低频1000hz的信号通过。
7.调试问题
1)实验时,未做初始化设置直接进入,没有装入gel文件及相关参数,导致输入代码编译链接后不能载入程序。
解决方法:
初始化设置软件仿真cpu和硬件仿真cpu,并设置其中所用的gel文件,保存并退出启动dsp选择忽略进入编辑编译初始化界面,由软件仿真cpu进入编辑编译工具。
2)在解决问题1后,载入程序,载入数据,并设置载入数据的初始地址和长度,运行程序,发现程序一直卡死在某个地方,无法显示正确的时域图和频域图。
解决方法:
换了一台电脑运行,发现问题已被解决,可能原因是自己电脑安装时装少了一些文件。
8.心得体会
刚开始面对大作业的时候,我们都还是觉得很生疏,不知从哪里入手,尽管做过实验。
对于自己选的题目,具体需要做什么,能不能做出来,我们并不清楚。
但当时间一天天过去后,我们开始认真起来了。
从复习课本,再到复习实验,相互探讨编程思路,上网搜索资料,调试实验等,我们都在努力的自学着。
通过这次FIR滤波器的设计,我们都有不同程度的收获。
首先,是学习上的巩固。
一方面,通过复习课本和实验,对DSP的基础知识又有了很大的巩固。
其次,通过对用Mathlab实现FIR滤波器的设计,熟悉了matlab软件的一些相关的窗口函数以及相关功能的调用,如怎样实现窗函数的调用,怎样实现滤波,等等。
第二,增进了与同学的交流。
平常除了上课,大家也比较少接触。
而每次做课程设计的时候,大家总会互相探讨,发表自己的看法,帮忙解决遇到的问题,分享自己的心得,于是交流也就不由自主的变得相对频繁些了,感觉也就更亲切了。
第三,对FIR的滤波器性能和作用有了更深一层的了解。
FIR滤波器的应用十分广泛,当今许多信号处理系统和图像处理系统等都要求信号具有线性相位特性。
在这方面,FIR滤波器有十分独特的优点,运用mathlab语言,我们能够很容易的设计出具有严格线性相位的FIR滤波系统,以及比较容易的实现。
此外,我们还知道了FIR滤波器是永远稳定的,因为FIR滤波器的冲激响应是有限长序列,其系统函数为一个多项式,它所含的的极点多为原点。
参考文献
【1】.程佩青,数字信号处理,清华大学出版社
【2】.邹彦,唐东,DSP原理与应用,电子工艺出版社
【3】.王宏,MATLAB6.5在信号处理中的应用,清华大学出版社
【4】.谷萩隆嗣,数字滤波器与信号处理,科学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 中的 FIR 滤波器 论文