基于MATLAB的IIR与FIR滤波器的课程设计Word格式文档下载.docx
《基于MATLAB的IIR与FIR滤波器的课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的IIR与FIR滤波器的课程设计Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
其中滤波是应用非常广泛的一个环节,数字滤波器的理论和相关设计也一直都是人们研究的重点之一。
FIR滤波器的是非递归的,稳定性好,精度高;
更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特征。
因此,它在高保真的信号处理,如数字音频、图像处理、数据传输和生物医学等领域得到广泛应用。
数字滤波是语音信号处理、图像处理、模式识别、频谱分析等应用的基本处理算法。
用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。
2软件简介
2.1Matlab软件简介
MATLAB的名称源自MatrixLaboratory,它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
图2-1Matlab主界面
2.2CCS软件简介
CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。
CCS有两种工作模式,即
软件仿真器模式:
可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。
硬件在线编程模式:
可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
CCS的开发系统主要由以下组件构成:
①TMS320C54x集成代码产生工具;
②CCS集成开发环境;
③DSP/BIOS实时核插件及其应用程序接口API;
④实时数据交换的RTDX插件以及相应的程序接口API;
⑤由TI公司以外的第三方提供的各种应用模块插件。
CCS的功能十分强大,它集成了代码的编辑、编译、和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:
①具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;
②含有集成代码生成工具,包括汇编器、优化C编译器、器等,将代码的编辑、编译、和调试等诸多功能集成到一个软件环境中;
③高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;
④工程项目管理工具可对用户程序实行项目管理。
在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;
⑤基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;
⑥断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;
⑦探测点工具,可用于算法的仿真,数据的实时监视等;
⑧分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;
⑨数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;
⑩提供GEL工具。
利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;
图2-2CCS主界面
3FIR滤波器设计
3.1设计背景
在许多数字信号处理系统中,FIR滤波器是最常用的组件之一,它完成信号预调、频带选择和滤波等功能。
FIR滤波器在截止频率的边沿陡峭性能虽然不及11R滤波器,但是,考虑到FIR滤波器严格的线性相位特性和不像IIR滤波器存在稳定性的问题,FIR滤波器能够在数字信号处理领域得到广泛的应用。
数字滤波器(DigitalFilter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。
所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的器件。
数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。
对于一般的数字滤波器,按照单位冲激响应可分为无限长冲激响应IIR系统和有限长冲激响应FIR系统。
在FIR系统中,则用一个有理多项式表示的系统函数去逼近所需要的频率响应,即其单位冲激响应h(n)在有限个n值处不为零。
FIR滤波器则可在幅度特性随意设计的同时,保证精确、严格的线性相位特性。
这在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,是具有很大吸引力的。
而且,其单位冲激响应是有限长的,不存在不稳定的因素,并且可用因果系统来实现。
相较于IIR滤波器,FIR滤波器有以下的优点:
可以很容易地设计线性相位的滤波器。
线性相位滤波器延时输入信号,却并不扭曲其相位。
实现简单。
在大多数DSP处理器,只需要对一个指令积习循环就可以完成FIR计算。
在实际中,所有的DSP滤波器必须用有限精度实现,而在IIR滤波器中使用有限精度会产生很大的问题,由于采用的是反馈电路,因此IIR通常用非常少的bit实现,设计者就能解决更少的与非理想算术有关的问题。
可以用小数实现。
不像IIR滤波器,FIR滤波器通常可能用小于1的系数来实现。
当使用定点DSP的时候,这也是一个考虑因素,它能使得实现更加地简单。
3.2FIR滤波器的设计原理
有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件。
可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
FIR滤波器无反馈回路,是一种条件稳定系统,可以设计成具有线性相位特性。
设FIR滤波器的系数为h(0)、h
(1)、h
(2)、h(3)·
·
h(N-2)、h(N-1);
X(n)表示滤波器在n时刻的输入,则n时刻的输出为:
FIR数字滤波器的结构如图3-1所示:
图3-1数字滤波器的结构框图
3.3FIR设计方法
本次利用CCS软件完成一个15阶FIR的低通滤波器的设计,并根据傅里叶级数知,周期信号可以由若干离散频率的正弦波的叠加形成,通过对方波和不同谐波正弦波的叠加的滤波,完成对高频的滤除,剩下一次基波正弦波。
其中在CCS软件中实现的两个不同长度的序列的时域卷积,即实现的是频域中的低通滤波。
FIR低通滤波器的时域参数,不同正弦波的叠加所产生的序列,以及方波的序列参数均由MATLAB软件平台实现。
通过加载到CCS编程过程中开辟的数据空间,由卷积程序实现滤波过程。
实现滤波之后需要对所滤出的波形及数据进行检验,可通过CCS软件所提供的频谱进行分析;
滤波之后的数据可通过与MATLAB卷积后的设计数据进行对比检验设计是否正确和符合设计要求。
本设计采用循环缓冲区法:
循环缓冲区法特点如下:
1对于N级FIR滤波器,在存储区中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;
2从最新样本开始取数;
3读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据不变;
4用片BK(循环缓冲区长度)寄存器对缓存区进行间接寻址,使循环缓冲区首尾相邻。
3.4FIR低通滤波器的Matlab设计
3.4.1FIR性能指标的确定
MATLAB确定滤波器程序如下
b=fir1(15,0.4);
freqz(b,1);
figure
(1);
figure
(2);
title('
频率特性'
)
plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-100,20]);
grid;
xlabel('
归一化频率/p'
ylabel('
幅度/dB'
%产生测试用正弦信号和噪声信号
滤波器的幅频特性和相频特性与归一化波形如图3-2,图3-3所示
图3-2FIR低通滤波器的幅频特性和相频特性
图3-3归一化波形
3.4.2Matlab正弦波与方波的确定
Matlab程序如下:
figure(3)
x=0:
2*pi/1024:
2*pi;
y1=sin(1*x*2*pi+pi/6);
y2=sin(50*x*2*pi);
y3=y1+y2;
y4=conv(y3,b);
subplot(4,1,1);
plot(y1);
subplot(4,1,2);
plot(y2);
subplot(4,1,3);
plot(y3);
subplot(4,1,4);
plot(y4);
figure(4)
x1=4*square(1*pi*10*x);
x2=conv(x1,b);
subplot(2,1,1);
plot(x1);
subplot(2,1,2);
plot(x2);
由Matlab产生的波形如图3-3,图3-4所示
图3-3正弦波波形
图3-4方波波形
在Matlab软件中仿真出来的正弦波与方波的波形,通过低通滤波之后均能显示出来比较正确正弦波与方波。
3.5FIR低通滤波器的CCS软件设计
3.5.1CCS汇编程序
1.Fir.asm文件