基于DSP的IIR数字滤波器的设计

更新时间:2024-06-05 23:48:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

高通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数字滤波的仿真。

2 IIR数字滤波器的设计

2.1 IIR数字滤波器的基本概念

无限脉冲响应滤波器是数字滤波器的一种,简称IIR数位滤波器(infinite impulse response filter)。由于无限脉冲响应滤波器中存在反馈回路,因此对于脉冲输入信号的响应是无限延续的。iir滤波器有以下几个特点 1 IIR数字滤波器的系统函数可以写成封闭函数的形式。

2 IIR数字滤波器采用递归型结构,即结构上带有反馈环路。iir滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。

3 IIR数字滤波器在计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个iir数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

4 IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。

5 IIR单位响应为无限脉冲序列fir单位响应为有限的

6 IIR幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上;

FIR幅频特性精度较之于iir低,但是线性相位,就是不同频率分量的信号经过FIR滤波器后他们的时间差不变。这是很好的性质。

无限脉冲响应滤波器的缺点:

(1)脉冲响应为无限长:造成当输入数位讯号为有限长的时候,输出数位讯号会变成无限长。

(2)比有限脉冲响应滤波器较不易最佳化。

(3)不一定是稳定的:因为Z转换后所有的极点不一定都在单位圆内

2.2 IIR滤波器的结构

IIR数字滤波器的单位脉冲响应h(n)是无限长的,结构上有输出到输入的反馈(频率采样结构除外),是递归型。滤波器的系统函数为:

b0?b1z?1???bmz?MB?z? (2.1) ??z????1?2?NA?z?1?a1z?a2z???aNz由传递函数可知,用两个向量{bm}{an}就可以对一个IIR滤波器进行表征。实现IIR滤波器可以采用直接形式、级联形式和并联形式3种结构。 2.2.1直接型

直接Ⅰ型:IIR滤波器的系统函数

H?z???bzrr?0Nk?1M?r (2.3)

1??akz?k对应的差分方程为

y?n???bix?n?i???aiy?n?i?

i?0i?1MN从上式可以看出,y?n?是有两部分相加构成的:第一部分?bix?n?i?是一个对输

i?0M入信号x?n?的节延时结构,每节延时抽头后加权相加,这是一个实现零点的横向结构网络;第二部分?aiy?n?i?是一个对y?n?的延时结构,每级延时抽头后加

i?1N权相加,因此是一个反馈网络。

直接Ⅱ型:IIR滤波器的系统函数又可写为

Y?z?Y?z?W?z??M H?z??????brzX?z?W?z?X?z??r?0

?r???1?1?ak?1N

kz?kH?z?可视为分子多项式?brzr?0M?r与分母多项式1??akz?k的倒数所构成的

k?1N两个子系统函数的乘积,这相应与子系统级联。第一个子系统实现零点,第二个子系统实现极点,而且已知一个线性时不变系统,如果交换其子系统的次序,系统函数不发生改变。这种结构形式称为直接Ⅱ型。 2.2.2级联型

将IIR滤波器的系统函数的分子分母表达为因子的形式,即

H?z??A??1?giz?i?1??1?pz???ii?1N1M1?1?????1?hiz?i?1?N2M2?1???1?hi????

?1?1??1???1?qiz1?qiz?i?1???由于系统函数的系数都是实系数,故零、极点只有两种情况:或者是实根,或者是共轭复根。式中A为归一化常数, M?M1?M2, N?N1?N2,gi表示实零点,pi表示实极点,hi和h?表示复共轭零点,每一qi和qi?表示复共轭极点。对共轭因子合并起来,就可以构成一个实系数的二阶因子。因此,任意系统均可由一阶和二阶子系统级联构成。

级联结构的一个重要的优点是存储单元比较少,用硬件实现时,可以用一个二阶进行分时复用。级联结构的另一个特点是,其每一个基本节都关系到滤波器的一对极点和一对零点。 2.2.3 并联型

将IIR滤波器的系统函数H?z?展成部分分式之和,即

N2M?NAkBk1?ekz?1H?z???????Gkz?k ?1?1??11?dkzk?11?gkzk?11?dkzk?0N1???????式中N?N1?2N2,dk由于系统函数的系数都是实系数,故是dk的共轭复数。M?N如果M

?Gk?0Kz?k项变为G0。一般IIR系统皆满足M?N的条件。当M=N时,上式变为

N1N2Akr0k?r1kz?1H?z??????G0 ?1?1?2?a2kzk?11?gkzk?11?a1kz

总系统函数为各部分悉数函数之和时,则表示其为各相应子系统的并联。所以上式可理解为一阶和二阶系统的并联组合。

显然,并联结构速度快,也可以单独调整极点位置,但不能像级联那样直接调整零极点,因为并联型各二阶网络的零点,并非整个系统函数的零点。因此,当要求准确传输零点时,以采用级联型为宜。另外,并联型各基本节的误差互不影响。

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,'1651 1 0 0 0\\n');%输出文件头 fprintf(fid,'%d\\n',xto_ccs);%输出 fclose(fid);

频谱图和时域图分别如下图:

4.IIR高通滤波器滤波程序设计

#include \

#include \#define LEN 200 //待滤波的数据长度 #define IIRORDER 2 float yn; float yb; float ya;

int input[LEN]; //输入缓冲,在仿真时将从内存载入 float output[LEN]; //输出缓冲,直接存放在内存中 float b[IIRORDER+1]={ 1.0000,-2.0000,1.0000}; float a[IIRORDER+1]={ 1.0000, 1.0622,0.3786};

void main() {

int j,i;

本文来源:https://www.bwwdw.com/article/j8h6.html

Top