APP下载

IIR数字滤波器综合实验设计

2022-05-26姜恩华李素文周建芳陈东华

关键词:级联网络结构滤波器

姜恩华,李素文,周建芳,邹 锋,陈东华

(淮北师范大学 物理与电子信息学院,安徽 淮北 235000)

0 引言

IIR(Infinite Impulse Response)数字滤波器及其网络结构是数字信号处理的重要内容,也是数字信号处理综合实验的重要组成部分[1-2].如何根据数字信号处理的理论内容,有效开展IIR数字滤波器的综合实验,是一个值得研究且有意义的课题[3].

本文结合Matlab软件和TI公司的CCS(Code Composer Studio) 5.5软件,探索如何开展IIR数字滤波器综合实验.借助Matlab软件生成IIR数字滤波器的系统函数H(z),可以通过Matlab软件进行IIR数字滤波器及其网络结构设计[4].借助TI公司的CCS 5.5软件集成开发环境,采用Texas Instruments Simulator/C55xx Rev3.0 CPU软件模拟器,通过C语言编写IIR数字滤波程序,完成IIR数字滤波实验设计[5],借助CCS 5.5软件的Tools/Graph菜单,观察滤波前和滤波后的信号波形,直观地展现了IIR数字滤波的效果.

1 基于Matlab软件的IIR数字滤波网络设计

1.1 IIR数字滤波器设计

IIR数字滤波器设计通常借助模拟滤波器完成其设计,由于模拟滤波器设计涉及的公式繁多,计算复杂,很难采用C语言编程实现.

Matlab软件提供了巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器等模拟滤波器的设计函数,借助Matlab软件,很容易实现模拟滤波器设计[6-7].从而设计出符合实验要求的IIR数字滤波器.

首先,把IIR数字滤波器的边界截止频率,通过脉冲响应不变法或双线性变换法的频率变换公式,把数字域频率转换为模拟滤波器的模拟角频率,调用模拟滤波器设计函数,设计出相应的模拟滤波器,得到其系统函数Ha(s);其次,调用脉冲响应不变法或双线性变换法的设计函数,把模拟滤波器的系统函数Ha(s)转换为IIR数字滤波器的系统函数H(z)[8].

根据系统函数H(z)的分子多项式和分母多项式的系数,通过函数freqz求得幅频特性,从而观察IIR数字滤波器的幅频特性曲线和相频特性曲线.

1.2 IIR数字滤波网络结构设计

通过系统函数H(z)的分子多项式系数bi和分母多项式系数ai,可以得到IIR数字滤波器的直接型网络结构.

对系统函数H(z)的分子多项式求取零点和分母多项式求取极点,一阶零点和一阶极点结合形成一阶因式,二阶共轭成对的零点和二阶共轭成对的极点结合形成二阶因式,系统函数H(z)分解为若干个一阶因式和二阶因式相乘的形式,一阶因式对应一阶网络结构,二阶因式对应二阶网络结构,把若干个一阶网络结构和二阶网络结构级联在一起,形成IIR数字滤波网络的级联型网络结构.

借助Matlab软件中的tf2sos函数,可以把直接型网络结构转换为级联型网络结构,生成级联型网络结构的系数矩阵SOS和增益G,其中增益G为常数,级联型网络结构的系数矩阵SOS的每行元素构成一个基本的二阶网络结构.

借助Matlab软件中的filter函数实现直接型网络结构滤波,借助filtfilt函数实现级联型网络结构滤波[8].

以IIR低通滤波器设计为例,由于巴特沃斯模拟低通滤波器的幅频特性在通带和阻带内单调和无波纹,所以模拟滤波器采用巴特沃斯模拟低通滤波器.借助Matlab软件,设计IIR低通滤波器及其滤波的流程如图1所示.

图1 IIR低通滤波器设计及滤波流程图

2 线性常系数差分方程的求解算法

2.1 线性常系数差分方程

通过Matlab软件提供的脉冲响应不变法和双线性变换法设计函数,设计IIR数字滤波器,求出系统函数H(z),如式(1)所示.把式(1)写成Y(z)和X(z)的等式形式,然后进行z变换的逆变换,得到表示IIR数字滤波的线性常系数差分方程,如式(2)所示.其中,n为移位位数,i为求和变量,x(n-i)为输入移位序列,y(n-i)为输出移位序列.

(1)

(2)

2.2 线性常系数差分方程求解算法

(1)数组bi[M+1]初始化为bi,数组ai[N]初始化为ai,数组xn[M+1]和数组yn[N]初始化为0,n=0.

(2)数组xn[M+1]中元素右移1位,数组元素xn[0]=x(n).

(4)数组yn[N]中的元素右移1位,数组元素yn[0]=y[n].

(5)n加1,若n小于序列x(n)的长度L,则跳到(2)重复执行,否则,算法结束.

3 IIR数字滤波仿真实验设计

3.1 求解IIR数字滤波器的系统函数

已经IIR数字滤波器的边界截止频率、通带衰减和阻带衰减,借助模拟滤波器设计,假设选用巴特沃斯滤波器作为原型模拟滤波器,选择脉冲响应不变法或双线性变换法设计.按照图1中的设计步骤,首先,进行频率变换,得到模拟滤波器的技术指标.其次,借助Matlab软件,按照选定的模拟滤波器设计函数,进行模拟滤波器设计,求得其系统函数Ha(s),调用脉冲响应不变法或双线性变换法设计函数,求得IIR数字滤波器的系统函数H(z).

3.2 输入信号设计

由于正弦序列的频谱为单位冲激信号,在IIR数字滤波实验中,为了使实验现象容易观察,一般选择正弦序列作为输入信号,在对滤波前和滤波后的信号频谱分析时,实验现象明显.

根据IIR滤波器的通带和阻带的截止频率,确定正弦序列的频率[10].对于IIR低通和高通滤波器,输入序列x1(n)设计为两个正弦序列相加的形式,如式(3)所示,其中Fs为采样频率.若f1=25 Hz,f2=100 Hz,Fs=256 Hz,则输入序列x2(n)如式(4)所示,其时域波形如图4所示,频谱如图5所示.

x1(n)=sin(2×3.14×f1×n/Fs)+sin(2×3.14×f2×n/Fs),

(3)

x2(n)=10×sin(2×3.14×n×(25/256)) +5×sin(2×3.14×n×(100/256)).

(4)

图4 输入x2(n)的时域波形

图5 输入x2(n)的频谱

3.3 IIR数字低通滤波仿真实验设计

IIR数字低通滤波器的技术指标包括通带截止频率ωp、阻带截止频率ωs、通带允许的最大衰减αp和阻带允许的最小衰减αs.采用脉冲响应不变法设计,借助Matlab软件,按照图1中的设计步骤,求得IIR数字滤波器的系统函数H(z)[11],如式(5)所示.

(5)

根据系统函数H(z),画出直接Ⅰ型网络结构如图6所示.按照直接Ⅰ型网络结构完成滤波,求得输出序列y(n).首先把系数b0,b1,…,bM存放到数组bi[M+1]中,把系数a1,a2,…,aN存放到数组ai[N]中,输入序列x(n)存放到数组x[n]中,其长度为L,输出序列y(n)存放到数组y[n]中,输入移位序列x(n-i)存放到数组xn[M+1]中,输出移位序列y(n-i)存放到数组yn[N]中.采用C语言编写程序,实现图6的直接Ⅰ型网络结构的C语言算法如图7所示.

图6 IIR直接Ⅰ型网络结构Fig.6 The direct Ⅰ form of the IIR network

for(i=0;i0;i--){xn[i]=xn[i-1];}xn[0]=x[n];for(i=0;i0;k--){yn[k]=yn[k-1];}yn[0]=y[n];}

若IIR数字低通滤波器的技术指标为ωp=0.3*pi、ωs=0.5*pi、αp=1和αs=20,按照图1中的设计步骤,采用脉冲响应不变法设计IIR数字低通滤波器,求得其系统函数H(z).采用直接I型网络结构实现滤波.采用式(4)表示的混叠信号作为输入序列x(n).借助TI公司的CCS 5.5集成开发环境,采用Texas Instruments Simulator/C55xx Rev3.0 CPU软件模拟器.采用图7所示程序,求解线性常系数差分方程,实现IIR低通滤波,求得输出序列y(n).通过CCS5.5软件的Tools/Graph菜单观察y(n)的波形,其时域波形如图8所示,频谱如图9所示.比较图5和图9,可以看出,高频信号被滤除,低频信号通过IIR数字低通滤波器.

图8 IIR低通滤波器输出的时域波形

图9 IIR低通滤波器输出的频谱

3.4 IIR数字高通滤波仿真实验设计

IIR数字高通滤波器的技术指标包括通带截止频率ωp、阻带截止频率ωs、通带允许的最大衰减αp和阻带允许的最小衰减αs.采用双线性变换法设计,采用级联型网络结构实现滤波[12],借助Matlab软件,按照图1中的设计步骤,求得级联型网络结构的系数矩阵SOS和增益G,其中G为常数.

IIR数字滤波器的级联型网络结构的系数矩阵SOS如式(6)所示,系数矩阵SOS由k行组成,每行元素代表一个二阶因式的系数,前3个元素为分子多项式的系数,后3个元素为分母多项式的系数,通过系数矩阵SOS的第i行元素得到的二阶因式如式(7)所示,若系数b2i和a2i为0,则为一阶因式.

(6)

(7)

通过一阶因式画出一阶网络结构,二阶因式画出二阶网络结构,把一阶网络结构和二阶网络结构级联在一起,得到IIR数字滤波器的级联型网络结构,如图10所示.

图10 IIR级联型网络结构

通常把SOS矩阵的每行元素表示为二阶因式的形式,IIR数字滤波器的级联型网络结构可以看作由K个基本二阶网络结构级联而成.若图6程序中的N=M=2,图7中的C语言程序转变为实现基本二阶网络结构滤波的C语言子程序.

按照图10所示的级联型网络结构,编写实现IIR数字高通滤波器滤波的C语言程序,在C语言程序主函数main()中,需要调用K次基本二阶网络结构滤波的C语言子程序,完成级联型网络结构滤波,求得输出序列y(n).

若IIR数字高通滤波器的技术指标为ωp=0.5*pi、ωs=0.3*pi、αp=1和αs=20,采用双线性变换法设计IIR数字高通滤波器,按照图1中的设计步骤,求得系数矩阵SOS和增益G.采用式(4)表示的混叠信号作为输入序列x(n).借助TI公司的CCS 5.5软件,采用Texas Instruments Simulator/C55xx Rev3.0 CPU软件模拟器.编写C语言程序,实现IIR数字高通滤波器的级联型网络结构滤波,求得输出序列y(n).通过CCS 5.5软件的Tools/Graph菜单观察y(n)的波形,其时域波形如图11所示,频谱如图12所示.比较图5和图12,可以看出,低频信号被滤除,高频信号通过IIR数字高通滤波器.

图11 IIR高通滤波器输出序列的时域波形

图12 IIR高通滤波器输出序列的频谱

4 结论

本文借助Matlab软件实现IIR数字滤波器的设计.借助CCS 5.5软件,采用Texas Instruments Simulator/C55xx Rev3.0 CPU软件模拟器,编写C语言程序完成IIR数字滤波实验设计.首先,借助Matlab软件,完成IIR数字滤波器设计,得到IIR直接型网络结构的系数bi和ai、级联型网络结构的系数矩阵SOS和增益G.其次,根据IIR滤波器的边界截止频率,设计输入序列x(n).再次,借助CCS 5.5软件,根据IIR直接型网络结构的系数bi和ai,编写实现IIR直接型网络结构滤波C语言程序;根据IIR级联型网络结构的系数矩阵SOS和增益G,编写实现IIR级联型网络结构滤波C语言程序.完成对输入序列x(n)的滤波,较好地完成了IIR数字滤波综合实验设计,实验过程中计算简单、步骤清晰且现象明显,取得了良好的实验效果.

猜你喜欢

级联网络结构滤波器
铀浓缩厂级联系统核安全分析
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
基于Canny振荡抑制准则的改进匹配滤波器
基于级联MUSIC的面阵中的二维DOA估计算法
H桥级联型STATCOM启动策略研究
基于DSP/FPGA的级联型固态变压器控制研究
基于互信息的贝叶斯网络结构学习
基于TMS320C6678的SAR方位向预滤波器的并行实现
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用