基于DSP的IIR数字滤波器的设计.docx
《基于DSP的IIR数字滤波器的设计.docx》由会员分享,可在线阅读,更多相关《基于DSP的IIR数字滤波器的设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于DSP的IIR数字滤波器的设计
高通IIR滤波器的设计及DSP实现
1绪论
1.1基于DSP的IIR滤波器设计课题背景
随着集成电路技术的发展,各种新型的大规模和超大规模集成电路不断涌现,集成电路技术与计算机技术结合在一起,使得数字信号处理系统的功能越来越强。
数字信号处理技术逐渐发展成为一门主流技术,数字信号处理技术就是基于VLSI技术和计算机技术发展起来的一门重要技术。
DSP技术已在通信、控制、信号处理、仪器仪表、医疗、家电等很多领域得到了越来越广泛的应用。
数字滤波器在各种数字信号处理中发挥着十分重要的作用,用数字滤波器设计一直是信号处理领域的重要研究课题。
常用的数字滤波器有IIR滤波器和FIR滤波器,其中IIR滤波器因具有结构简单、占用存储空间少、运算速度快、较高的计算精度和能够用较低的阶数实现、较好的选频特性等优点,得到了广泛应用。
1.2本设计主要研究内容与方法
主要是在学习信号分析与处理的基础知识后,应用MATLAB软件、CCS软件结合来设计基于DSP的IIR滤波器设计。
应用MATLAB软件设计IIR数字滤波器:
应用MATLAB中的工具FDATOOL工具设计滤波器的系数;在MATLAB中编译M文件,产生输入数据。
应用DSP芯片的汇编语言与C语言进行编写程序,应用DSP集成软件开发环境CCS调试汇编程序与C程序,并用TMS320C54结合软件开发环境CCS来实现了IIR数字滤波的仿真。
2IIR数字滤波器的设计
2.1IIR数字滤波器的基本概念
无限脉冲响应滤波器是数字滤波器的一种,简称IIR数位滤波器(infiniteimpulseresponsefilter)。
由于无限脉冲响应滤波器中存在反馈回路,因此对于脉冲输入信号的响应是无限延续的。
iir滤波器有以下几个特点
1IIR数字滤波器的系统函数可以写成封闭函数的形式。
2IIR数字滤波器采用递归型结构,即结构上带有反馈环路。
iir滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
3IIR数字滤波器在计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
在设计一个iir数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
4IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。
5IIR单位响应为无限脉冲序列fir单位响应为有限的
6IIR幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上;
FIR幅频特性精度较之于iir低,但是线性相位,就是不同频率分量的信号经过FIR滤波器后他们的时间差不变。
这是很好的性质。
无限脉冲响应滤波器的缺点:
(1)脉冲响应为无限长:
造成当输入数位讯号为有限长的时候,输出数位讯号会变成无限长。
(2)比有限脉冲响应滤波器较不易最佳化。
(3)不一定是稳定的:
因为Z转换后所有的极点不一定都在单位圆内
2.2IIR滤波器的结构
IIR数字滤波器的单位脉冲响应h(n)是无限长的,结构上有输出到输入的反馈(频率采样结构除外),是递归型。
滤波器的系统函数为:
(2.1)
由传递函数可知,用两个向量
就可以对一个IIR滤波器进行表征。
实现IIR滤波器可以采用直接形式、级联形式和并联形式3种结构。
2.2.1直接型
直接Ⅰ型:
IIR滤波器的系统函数
(2.3)
对应的差分方程为
从上式可以看出,
是有两部分相加构成的:
第一部分
是一个对输入信号
的节延时结构,每节延时抽头后加权相加,这是一个实现零点的横向结构网络;第二部分
是一个对
的延时结构,每级延时抽头后加权相加,因此是一个反馈网络。
直接Ⅱ型:
IIR滤波器的系统函数又可写为
可视为分子多项式
与分母多项式
的倒数所构成的两个子系统函数的乘积,这相应与子系统级联。
第一个子系统实现零点,第二个子系统实现极点,而且已知一个线性时不变系统,如果交换其子系统的次序,系统函数不发生改变。
这种结构形式称为直接Ⅱ型。
2.2.2级联型
将IIR滤波器的系统函数的分子分母表达为因子的形式,即
由于系统函数的系数都是实系数,故零、极点只有两种情况:
或者是实根,或者是共轭复根。
式中A为归一化常数,
表示实零点,
表示实极点,
每一对共轭因子合并起来,就可以构成一个实系数的二阶因子。
因此,任意系统均可由一阶和二阶子系统级联构成。
级联结构的一个重要的优点是存储单元比较少,用硬件实现时,可以用一个二阶进行分时复用。
级联结构的另一个特点是,其每一个基本节都关系到滤波器的一对极点和一对零点。
2.2.3并联型
将IIR滤波器的系统函数
展成部分分式之和,即
式中
由于系统函数的系数都是实系数,故
如果M项;如果M=N,则
项变为
。
一般IIR系统皆满足M
N的条件。
当M=N时,上式变为
总系统函数为各部分悉数函数之和时,则表示其为各相应子系统的并联。
所以上式可理解为一阶和二阶系统的并联组合。
显然,并联结构速度快,也可以单独调整极点位置,但不能像级联那样直接调整零极点,因为并联型各二阶网络的零点,并非整个系统函数的零点。
因此,当要求准确传输零点时,以采用级联型为宜。
另外,并联型各基本节的误差互不影响。
3信号产生程序设计
应用说明:
例:
设计内容及要求:
要求设计一个基于DSP的IIR高通滤波器,把f11滤掉,保留f12。
IIR高通滤波器的系数由Matlab中的fdatool产生,信号也由Matlab产生
已知x1(n)=sin(2*pi*f11*n*T);
X2(n)=0.5*sin(2*pi*f12*n*T);
x(n)=x1(n)+x2(n)
其中:
f11=500Hz;f12=4000Hz;fs=10000Hz。
程序:
f11=500;%/Hz
f12=4000;%/Hz
fs=10000;%/采样Hz
N=1000%数据个数
T=1/fs;%采样周期
n=0:
N;
x11=sin(2*pi*f11*n*T);
x12=0.5*sin(2*pi*f12*n*T);
x_base=(x11+x12);
%待滤波信号波形
figure
(1)
plot(x_base)
%待滤波信号频谱
figure
(2)
yff=abs(fft(x_base))
df=n*(fs/N)
plot(df,yff)
xout=x_base/max(x_base);%归一化
xto_ccs=round(32767*xout)
fid=fopen('input.dat','w');%打开文件
fprintf(fid,'16511000\n');%输出文件头
fprintf(fid,'%d\n',xto_ccs);%输出
fclose(fid);
频谱图和时域图分别如下图:
4.IIR高通滤波器滤波程序设计
#include"stdio.h"
#include"C:
\MATLAB6p5\extern\include\tmwtypes.h"
#defineLEN200//待滤波的数据长度
#defineIIRORDER2
floatyn;
floatyb;
floatya;
intinput[LEN];//输入缓冲,在仿真时将从内存载入
floatoutput[LEN];//输出缓冲,直接存放在内存中
floatb[IIRORDER+1]={1.0000,-2.0000,1.0000};
floata[IIRORDER+1]={1.0000,1.0622,0.3786};
voidmain()
{
intj,i;
for(i=0;i{
output[i]=input[i];
}
for(j=IIRORDER;j{
yb=0;
ya=0;
for(i=0;i<=IIRORDER;i++)
{
yb+=b[i]*(float)input[j-i];
}
for(i=0;i<=(IIRORDER-1);i++)
{
ya+=a[i+1]*(float)output[j-i-1];
}
yn=yb-ya;
output[j]=yn;
}
while
(1);
}
5DSP、CCS和MATLAB的有关介绍
5.1DSP特点
数字信号处理器与数字信号处理有着密不可分的关系,我们通常说的“DSP”可以指信号处理(digitalsignalprocessing),也可以代表数字信号处理器(digitalsignalprocessor),本文中均指数字信号处理器。
DSP是一种独特的微处理器是以数字信号来处理大量信息的器件。
其工作原理是接收模拟信号,转换为0或1的数字信号。
再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
DSP已经成为信号处理技术的主流。
因为与早期的模拟信号相比,数字信号处理有着巨大的优势。
早期的模拟信号处理主要通过运算放大电路进行不同的电阻组配实现算术运算,通过电阻、电容的组配实现滤波处理等,其中有一个很明显的问题是不灵活、不稳定,参数修改困难,需要采用多种阻值、容值的电阻、电容,并通过电子开关选通才能修改处理参数;而且对周围环境变化的敏感性强,温度、电路噪声等都会造成处理结果的改变而数字信号处理可以通过软件修改处理参数,因此具有很大的灵活性。
由于数字电路采用厂二值逻辑,只要环境温度、电路噪声的变化不造成电路逻辑的翻转,数字电路都可以不受影响地完成工作,因此具有很好的稳定性。
5.2DSP在本设计中的运用
本设计是基于DSP的FIR滤波器的设计,是在DSP芯片上实现的,在模拟DSP芯片上进行仿真,需要用到DSP芯片的汇编语言,及地址分配,和处理数据精度等方面的知识,总之,DSP是本设计的基础。
5.3CCS特点
CCS,即codecomposerstudio,是TI公司在1999年推出的一个开放、具有强大集成开发环境,它最初是由GODSP公司为TI的C6000系列DSP开发的。
在TI收购了GODSP后,将CCS扩展到了其他系列。
现在所有TI犯人DSP都可以使用CCS进行开发,但是其中的DSP/BIOS功能只有C5000和C6000的CCS中才提供。
以前的DSP软件开发都是在一个分散的开发环境新进行,程序的编写、代码的生成以及调试等都是通过命令来完成,类似于以前的Dos,十分烦杂。
而CCS的出现是DSP开发软件的一个革命性的变化,CCS主要有代码生成工具,CCS集成开发环境、DSP/BIOS和API函数以及RTDX组成。
5.5MATLAB的有关介绍与应用
20世纪70年代,美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。
1984年由Little、Moler、SteveBangert合作成立了的MathWorks公司正式把MATLAB推向市场。
到20世纪90年代,MATLAB已成为国际控制界的标准计算软件MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,运用于算法开发、数据分析、数据可视化以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
5.5.1MATLAB在本文中应用
在本文中运用到MATLAB的地方主要有三处:
(1)在MATLAB中编译M文件,并保存,产生输入数据(在节中有详解)
(2)运用MATLAB中的fdatool工具,根据滤波器指标要求,设计滤波器,并保存,以头文件的形式导入ccs编译过程(在节中有详细介绍)
(3)在CCS编译成功,生成.out文件后,导入MATLAB中的产生的数据。
6仿真结果
6.1在MATLAB中启动FDATOOL及设置FDATOOL
点击桌面上的
,启动MATLAB,在MATLAB的左下角点击“Start”,选择“Toolsboxes→Filterdesign→FilterDesign&AnalyisTool(FDATOOL)”,启动FDATOOL,如图5-2所示。
图5-2FDATOOL界面
6.2使用MATLAB生成输入数据
点击桌面上的
,启动MATLAB,生成输入数据的方法有两种。
(一)直接在MATLAB界面中直接输入程序,在输完程序后点击回车,将会产生设计所需的输入文件,并保存在程序中所设定的文件中,本设计设定的是“input文件”。
(二)编译M文件,在M文件中直接运行和修改,按程序产生所需输入文件,保存在程序中所指定的文件中。
第一种方法简单直观,运行方便但修改麻烦,第二种方法容易修改,运行方便。
本设计中采用编译M文件,M文件在附录中。
6.3通过CCS查看滤波结果
查看滤波结果步骤如下:
步骤一:
打开“View→Graph→Time/Frequency”,弹出图形属性对话框(GraphPropertyDialog)。
其中包括DisplayType(显示类型)、GraphTitle(图形名称)、StartAddress(开始地址)、Page、AcquisitionBufferSize(采样缓冲器大小)、DisplayDataSize(显示数据多少)、DSPDataSize(DSP数据类型)等。
步骤二:
查看滤波前的输入数据的时域波形。
打开图形对话框后,各属性设置如图所示,点击“OK”后出现如图所示的输入数据的时域波形
图6-13图形属性对话框
图6-14时域波形图
步骤三:
查看输入数据的频域波形图,打开图形对话框后,各属性设置如图6-15所示;点击“OK”后出现出现如图所示的输入数据的频域波形图所示。
图6-15图形属性对话框
图6-16频域波形图
步骤四:
重复步骤一到步骤三,在步骤二和步骤三中把“StartAddress”由“input”改为“output”,把“GraphTitle”由“input”改为“output”,显示的滤波后的时域和频域波形如图6-17和图6-18所示。
图6-17和6-18及为经过滤波后的波形。
图6-17时域波形图
图6-18频域波形图
7结论
本设计是基于DSP的FIR滤波器设计,当下滤波器设计技术已相当成熟,在前人的基础上,本设计采用的分块处理的方法。
一共将设计的整天分为了三大部分部分:
MATLAB产生输入数据、由FDATOOL产生滤波器系数、由CCS进行仿真滤波。
基于DSP的FIR滤波器的设计只是一个计算过程,可靠性高,并且不存在阻抗匹配、特性波动、非一致性等问题。
由FDATOOL产生滤波器系数且可修改,所以只要适当改变滤波器设计有关参数,就能方便的改变滤波特性,因此数字滤波使用时方便灵活。
DSP运算速度快,具有可编程特性和接口灵活的特点,所以只要改变数字滤波程序有关参数,便可快速实现滤波效果。
通过本次设计,使我了解到了数字滤波器在信号处理技术中的重要地位,学习了数字滤波器的基本理论知识,以及实现方法,学习了FIR滤波器的结构、设计理论,掌握了FIR滤波器的原理和特性;复习了MATLAB的相关知识;对DSP有进一步的学习和认识;学习了CCS的有关编程和仿真的知识。
掌握了参考文献的查阅方法和科技论文的写作方法,进一步巩固了MicrosoftOfficeWord的操作方法,提高了独立分析、动手和理论联系实际的能力,为今后的学习和工作打下了良好的基础。
数字信号处理作为一门新兴的学科,越来越引起人们的关注,现已广泛运用到各个领域,随着计算机和信息技术的飞速发展,数字信号处理技术应用而生,并得到迅速的发展,数字信号处理的实现是理论与应用之间的桥梁,数字信号处理DSP是以众多学科理论的基础,它涉及的面及其广泛,所以,不仅要完善以上的MATLAB的运用,更要学会利用多种途径设计各种DSP系统,熟悉C语言编程。
由于时间仓促和本人水平有限,虽已基本上达到了毕业设计的要求,但文中错误和不足之处在所难免,本设计还需要不断地加以完善、改进。
同时,敬请老师批评指正。
8参考文献
1.陈德树.计算机继电保护原理与技术【M】北京:
水利电力出版社,1992.
2.蒋志凯.数字滤波与卡尔曼滤波【M】北京:
中国科学技术出版社,1993
3.蒙以正.MATLAB5.X应用与技巧【M】北京:
科学出版社,1999.
4胡广书.数字信号处理:
理论、算法与实现【M】.北京:
清华大学出版社,1997.
5.楼顺天、李博菡.基于MATLAB的系统分析与设计-信号处理【M】西安电子科技大学出版社,1998.