IIR滤波器的DSP实现
一、IIR滤波器的基本结构
IIR滤波器差分方程的一般表达式为:
yn=i=0Nbixn-i-i=1Maiy(n-i)
式中x(n)为输入序列;y(n)为输出序列; ai和bi为滤波器系数.若所有系数ai等于0,则为FIR滤波器.
IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,具有递归性,即IIR滤波器的输出不仅与输入有关,而且与过去的输出有关.
将上式展开得出y(n)表达式为:
yn=b0xn+b1xn-1+…+bNxn-N-a1yn-1-a2yn-2-…-aMyn-M
在零初始条件下,对上式进行z变换,得到:
Yz=b0Xz+b1z-1Xz+…+bNz-NXz-a1z-1Yz-a2z-2Yz-…-aMz-MYz
设N=M,则传递函数为:
Hz=Y(z)X(z)=b0+b1z-1+…+bNz-N1+a1z-1+…+aNz-N
上式可写成:
Hz=b0zN+b1zN-1+…+bNzN+a1z-1+…+aN=Ci=1Nz-ziz-pi
上式具有N个零点zi和N个极点pi.若有极点位于单位圆外将导致系统不稳定.由于FIR滤波器所有的系数ai均为0,不存在极点,不会造成系数的不稳定.对于IIR滤波器,系统稳定的条件如下:
若|pi|<1,当n→∞时,h(n)→0,系统稳定;
若|pi|>1,当n→∞时,h(n)→∞,系统不稳定.
IIR滤波器具有多种形式,主要有:直接型(也称直接I型)、标准型(也称直接II型)、变换型、级联型和并联型.
二阶IIR滤波器,又称为二阶基本节,分为直接型、标准型和变换型.
对于一个二阶IIR滤波器,其输出可以写成:
yn=b0xn+b1xn-1+b2xn-2-a1yn-1-a2yn-2
1.直接型(直接I型)
根据上式可以得到直接二型IIR滤波器的结构图.如图1所示.共使用了4个延迟单元(z-1).
图1 直接I型二阶IIR滤波器
直接型二阶IIR滤波器还可以用图2的结构实现.
图2 直接I型二阶IIR滤波器
此时,延时变量变成了w(n).可以证明上图的结构仍满足二阶IIR滤波器输出方程.
前向通道:
yn=i=02biw(n-i) 1.1
反馈通道:
wn=xn-j=12ajwn-j 1.2
将1.2式代入1.1式可得:
yn=i=02bi[x(n-i)-j=12ajw(n-i-j)]
=i=02bix(n-i)-i=02bij=12ajw(n-i-j)
=i=02bix(n-i)-i=02ajj=12biw(n-i-j)
=i=02bix(n-i)-j=12ajy(n-j)
2.标准型(直接II型)
从图2可以看出,左右两组延迟单元可以重叠,从而得到标准二阶IIR滤波器的结构图,如图3所示.由于这种结构所使用的延迟单元最少(只有2个),得到了广泛地应用,因此称之为标准型IIR滤波器.
图3 标准型二阶IIR滤波器
二、IIR滤波器的设计
IIR滤波器的设计可以利用模拟滤波器原型,借鉴成熟的模拟滤波器的设计结果进行双线性变换,将模拟滤波器变换成满足预定指标的数字滤波器,即根据模拟设计理论设计出满足要求的传递函数H(s),然后将H(s)变换成数字滤波器的传递函数H(z).
设计IIR滤波器的基础是设计模拟滤波器的原型,这些原型滤波器主要有:
①巴特沃兹(Butterworth)滤波器,其幅度响应在通带内具有最平特性;
②切比雪夫(Chebyshev)滤波器,在通带内具有等波纹特性,且阶数小于巴特沃兹滤波器.
③椭圆(Elliptic)滤波器,在通带内具有等波纹特性,且阶数最小.
将模拟滤波器转换为数字滤波器常用的方法是双线性变换,其作用是完成从s平面到z平面的一个映射.其关系为:
s=z-1z+1 (2.1)z=1+s1-s (2.2)
双线性变换的基本性质如下:
①s平面上的jω轴映射到z平面的单位圆上;
②s平面的左半平面映射到z平面的单位圆内;
③s平面的右半平面映射到z平面的单位圆外.
考虑到s平面上的虚轴映射为z平面的单位圆,令s=jωA,它代表一个可变的模拟频率.其z平面上相应的数字频率为ωD,即z=ejωDT,将以上两式代入2.1式得:
jωA=ejωDT-1ejωDT+1=ejωDT2(ejωDT/2-e-jωDT/2)ejωDT2(ejωDT2+e-jωDT/2)
对上式求解得:
ωA=arctanωDT2 (2.3)
模拟频率ωA和相应的数字频率ωD之间的映射关系如图4所示:
图4 ωA和ωD之间的映射关系
当ωA在0~1之间变化时, ωD在0~ωD4之间变化, ωs为采样频率:当ωA>1时,其对应的ωD在ωD4~ωD2之间.双线性变换会造成频率失真,通常采用预畸变来补偿频率失真.
双线性变换设计的步骤如下:
①选择一个合适的模拟传递函数H(s);
②对截止频率或预定的数字频率ωD进行畸变,并根据式2.3求得相应的模拟频率ωA;
③用ωA对H(s)中的频率进行换算,即: Hs|s=s/ωA
④用式2.1计算H(z): Hz=HsωAs=z-1z+1
三、二阶IIR滤波器的DSP实现
1.标准型二阶IIR滤波器的实现
在二阶IIR滤波器结构中,标准型结构是最常见的滤波器结构,其结构如图5所示:
图5 标准型二阶IIR滤波器
由结构图可以写出反馈通道和前向通道的差分方程:
反馈通道: wn=xn+a1wn-1+a2w(n-2)
前向通道: yn=b0wn+b1wn-1+b2w(n-2)
由以上两式对二阶IIR滤波器进行编程,其中乘法-累加运算可采用单操作数指令或双操作数指令,数据和系数可存放在DARAM中,如图6所示:
图6 双操作数数据存放和系数表
2.直接型二阶IIR滤波器的实现
二阶IIR滤波器可以用直接型结构来实现.在迭代运算中,先衰减后增益,系统的动态范围和鲁棒性要好些.直接型二阶IIR滤波器的结构如图7所示:
图7 直接型二阶IIR滤波器
直接型二阶IIR滤波器的脉冲传递函数为:
Hz=b0+b1z-1+b2z-21-a1z-1-a2z-2
差分方程为:
yn=b0xn+b1xn-1+b2xn-2+a1yn-1+a2yn-2
为了实现直接型滤波,可在DARAM中开辟4个循环缓冲区,用来存放变量和系数,并采用循环缓冲区方式寻址.这4个循环缓冲区的结构如图8所示:
图8 循环缓冲区结构
四、总体设计方案
1.利用MATLAB来确定IIR滤波器的参数;
2.启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序;
3.设置波形时域观察窗口,得到其滤波前后波形变化图;
4.设置频域观察窗口,得到其滤波前后频谱变化图.
IIR滤波器的DSP实现
一、IIR滤波器的基本结构
IIR滤波器差分方程的一般表达式为:
yn=i=0Nbixn-i-i=1Maiy(n-i)
式中x(n)为输入序列;y(n)为输出序列; ai和bi为滤波器系数.若所有系数ai等于0,则为FIR滤波器.
IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,具有递归性,即IIR滤波器的输出不仅与输入有关,而且与过去的输出有关.
将上式展开得出y(n)表达式为:
yn=b0xn+b1xn-1+…+bNxn-N-a1yn-1-a2yn-2-…-aMyn-M
在零初始条件下,对上式进行z变换,得到:
Yz=b0Xz+b1z-1Xz+…+bNz-NXz-a1z-1Yz-a2z-2Yz-…-aMz-MYz
设N=M,则传递函数为:
Hz=Y(z)X(z)=b0+b1z-1+…+bNz-N1+a1z-1+…+aNz-N
上式可写成:
Hz=b0zN+b1zN-1+…+bNzN+a1z-1+…+aN=Ci=1Nz-ziz-pi
上式具有N个零点zi和N个极点pi.若有极点位于单位圆外将导致系统不稳定.由于FIR滤波器所有的系数ai均为0,不存在极点,不会造成系数的不稳定.对于IIR滤波器,系统稳定的条件如下:
若|pi|<1,当n→∞时,h(n)→0,系统稳定;
若|pi|>1,当n→∞时,h(n)→∞,系统不稳定.
IIR滤波器具有多种形式,主要有:直接型(也称直接I型)、标准型(也称直接II型)、变换型、级联型和并联型.
二阶IIR滤波器,又称为二阶基本节,分为直接型、标准型和变换型.
对于一个二阶IIR滤波器,其输出可以写成:
yn=b0xn+b1xn-1+b2xn-2-a1yn-1-a2yn-2
1.直接型(直接I型)
根据上式可以得到直接二型IIR滤波器的结构图.如图1所示.共使用了4个延迟单元(z-1).
图1 直接I型二阶IIR滤波器
直接型二阶IIR滤波器还可以用图2的结构实现.
图2 直接I型二阶IIR滤波器
此时,延时变量变成了w(n).可以证明上图的结构仍满足二阶IIR滤波器输出方程.
前向通道:
yn=i=02biw(n-i) 1.1
反馈通道:
wn=xn-j=12ajwn-j 1.2
将1.2式代入1.1式可得:
yn=i=02bi[x(n-i)-j=12ajw(n-i-j)]
=i=02bix(n-i)-i=02bij=12ajw(n-i-j)
=i=02bix(n-i)-i=02ajj=12biw(n-i-j)
=i=02bix(n-i)-j=12ajy(n-j)
2.标准型(直接II型)
从图2可以看出,左右两组延迟单元可以重叠,从而得到标准二阶IIR滤波器的结构图,如图3所示.由于这种结构所使用的延迟单元最少(只有2个),得到了广泛地应用,因此称之为标准型IIR滤波器.
图3 标准型二阶IIR滤波器
二、IIR滤波器的设计
IIR滤波器的设计可以利用模拟滤波器原型,借鉴成熟的模拟滤波器的设计结果进行双线性变换,将模拟滤波器变换成满足预定指标的数字滤波器,即根据模拟设计理论设计出满足要求的传递函数H(s),然后将H(s)变换成数字滤波器的传递函数H(z).
设计IIR滤波器的基础是设计模拟滤波器的原型,这些原型滤波器主要有:
①巴特沃兹(Butterworth)滤波器,其幅度响应在通带内具有最平特性;
②切比雪夫(Chebyshev)滤波器,在通带内具有等波纹特性,且阶数小于巴特沃兹滤波器.
③椭圆(Elliptic)滤波器,在通带内具有等波纹特性,且阶数最小.
将模拟滤波器转换为数字滤波器常用的方法是双线性变换,其作用是完成从s平面到z平面的一个映射.其关系为:
s=z-1z+1 (2.1)z=1+s1-s (2.2)
双线性变换的基本性质如下:
①s平面上的jω轴映射到z平面的单位圆上;
②s平面的左半平面映射到z平面的单位圆内;
③s平面的右半平面映射到z平面的单位圆外.
考虑到s平面上的虚轴映射为z平面的单位圆,令s=jωA,它代表一个可变的模拟频率.其z平面上相应的数字频率为ωD,即z=ejωDT,将以上两式代入2.1式得:
jωA=ejωDT-1ejωDT+1=ejωDT2(ejωDT/2-e-jωDT/2)ejωDT2(ejωDT2+e-jωDT/2)
对上式求解得:
ωA=arctanωDT2 (2.3)
模拟频率ωA和相应的数字频率ωD之间的映射关系如图4所示:
图4 ωA和ωD之间的映射关系
当ωA在0~1之间变化时, ωD在0~ωD4之间变化, ωs为采样频率:当ωA>1时,其对应的ωD在ωD4~ωD2之间.双线性变换会造成频率失真,通常采用预畸变来补偿频率失真.
双线性变换设计的步骤如下:
①选择一个合适的模拟传递函数H(s);
②对截止频率或预定的数字频率ωD进行畸变,并根据式2.3求得相应的模拟频率ωA;
③用ωA对H(s)中的频率进行换算,即: Hs|s=s/ωA
④用式2.1计算H(z): Hz=HsωAs=z-1z+1
三、二阶IIR滤波器的DSP实现
1.标准型二阶IIR滤波器的实现
在二阶IIR滤波器结构中,标准型结构是最常见的滤波器结构,其结构如图5所示:
图5 标准型二阶IIR滤波器
由结构图可以写出反馈通道和前向通道的差分方程:
反馈通道: wn=xn+a1wn-1+a2w(n-2)
前向通道: yn=b0wn+b1wn-1+b2w(n-2)
由以上两式对二阶IIR滤波器进行编程,其中乘法-累加运算可采用单操作数指令或双操作数指令,数据和系数可存放在DARAM中,如图6所示:
图6 双操作数数据存放和系数表
2.直接型二阶IIR滤波器的实现
二阶IIR滤波器可以用直接型结构来实现.在迭代运算中,先衰减后增益,系统的动态范围和鲁棒性要好些.直接型二阶IIR滤波器的结构如图7所示:
图7 直接型二阶IIR滤波器
直接型二阶IIR滤波器的脉冲传递函数为:
Hz=b0+b1z-1+b2z-21-a1z-1-a2z-2
差分方程为:
yn=b0xn+b1xn-1+b2xn-2+a1yn-1+a2yn-2
为了实现直接型滤波,可在DARAM中开辟4个循环缓冲区,用来存放变量和系数,并采用循环缓冲区方式寻址.这4个循环缓冲区的结构如图8所示:
图8 循环缓冲区结构
四、总体设计方案
1.利用MATLAB来确定IIR滤波器的参数;
2.启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序;
3.设置波形时域观察窗口,得到其滤波前后波形变化图;
4.设置频域观察窗口,得到其滤波前后频谱变化图.
IIR滤波器的DSP实现
一、IIR滤波器的基本结构
IIR滤波器差分方程的一般表达式为:
yn=i=0Nbixn-i-i=1Maiy(n-i)
式中x(n)为输入序列;y(n)为输出序列; ai和bi为滤波器系数.若所有系数ai等于0,则为FIR滤波器.
IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,具有递归性,即IIR滤波器的输出不仅与输入有关,而且与过去的输出有关.
将上式展开得出y(n)表达式为:
yn=b0xn+b1xn-1+…+bNxn-N-a1yn-1-a2yn-2-…-aMyn-M
在零初始条件下,对上式进行z变换,得到:
Yz=b0Xz+b1z-1Xz+…+bNz-NXz-a1z-1Yz-a2z-2Yz-…-aMz-MYz
设N=M,则传递函数为:
Hz=Y(z)X(z)=b0+b1z-1+…+bNz-N1+a1z-1+…+aNz-N
上式可写成:
Hz=b0zN+b1zN-1+…+bNzN+a1z-1+…+aN=Ci=1Nz-ziz-pi
上式具有N个零点zi和N个极点pi.若有极点位于单位圆外将导致系统不稳定.由于FIR滤波器所有的系数ai均为0,不存在极点,不会造成系数的不稳定.对于IIR滤波器,系统稳定的条件如下:
若|pi|<1,当n→∞时,h(n)→0,系统稳定;
若|pi|>1,当n→∞时,h(n)→∞,系统不稳定.
IIR滤波器具有多种形式,主要有:直接型(也称直接I型)、标准型(也称直接II型)、变换型、级联型和并联型.
二阶IIR滤波器,又称为二阶基本节,分为直接型、标准型和变换型.
对于一个二阶IIR滤波器,其输出可以写成:
yn=b0xn+b1xn-1+b2xn-2-a1yn-1-a2yn-2
1.直接型(直接I型)
根据上式可以得到直接二型IIR滤波器的结构图.如图1所示.共使用了4个延迟单元(z-1).
图1 直接I型二阶IIR滤波器
直接型二阶IIR滤波器还可以用图2的结构实现.
图2 直接I型二阶IIR滤波器
此时,延时变量变成了w(n).可以证明上图的结构仍满足二阶IIR滤波器输出方程.
前向通道:
yn=i=02biw(n-i) 1.1
反馈通道:
wn=xn-j=12ajwn-j 1.2
将1.2式代入1.1式可得:
yn=i=02bi[x(n-i)-j=12ajw(n-i-j)]
=i=02bix(n-i)-i=02bij=12ajw(n-i-j)
=i=02bix(n-i)-i=02ajj=12biw(n-i-j)
=i=02bix(n-i)-j=12ajy(n-j)
2.标准型(直接II型)
从图2可以看出,左右两组延迟单元可以重叠,从而得到标准二阶IIR滤波器的结构图,如图3所示.由于这种结构所使用的延迟单元最少(只有2个),得到了广泛地应用,因此称之为标准型IIR滤波器.
图3 标准型二阶IIR滤波器
二、IIR滤波器的设计
IIR滤波器的设计可以利用模拟滤波器原型,借鉴成熟的模拟滤波器的设计结果进行双线性变换,将模拟滤波器变换成满足预定指标的数字滤波器,即根据模拟设计理论设计出满足要求的传递函数H(s),然后将H(s)变换成数字滤波器的传递函数H(z).
设计IIR滤波器的基础是设计模拟滤波器的原型,这些原型滤波器主要有:
①巴特沃兹(Butterworth)滤波器,其幅度响应在通带内具有最平特性;
②切比雪夫(Chebyshev)滤波器,在通带内具有等波纹特性,且阶数小于巴特沃兹滤波器.
③椭圆(Elliptic)滤波器,在通带内具有等波纹特性,且阶数最小.
将模拟滤波器转换为数字滤波器常用的方法是双线性变换,其作用是完成从s平面到z平面的一个映射.其关系为:
s=z-1z+1 (2.1)z=1+s1-s (2.2)
双线性变换的基本性质如下:
①s平面上的jω轴映射到z平面的单位圆上;
②s平面的左半平面映射到z平面的单位圆内;
③s平面的右半平面映射到z平面的单位圆外.
考虑到s平面上的虚轴映射为z平面的单位圆,令s=jωA,它代表一个可变的模拟频率.其z平面上相应的数字频率为ωD,即z=ejωDT,将以上两式代入2.1式得:
jωA=ejωDT-1ejωDT+1=ejωDT2(ejωDT/2-e-jωDT/2)ejωDT2(ejωDT2+e-jωDT/2)
对上式求解得:
ωA=arctanωDT2 (2.3)
模拟频率ωA和相应的数字频率ωD之间的映射关系如图4所示:
图4 ωA和ωD之间的映射关系
当ωA在0~1之间变化时, ωD在0~ωD4之间变化, ωs为采样频率:当ωA>1时,其对应的ωD在ωD4~ωD2之间.双线性变换会造成频率失真,通常采用预畸变来补偿频率失真.
双线性变换设计的步骤如下:
①选择一个合适的模拟传递函数H(s);
②对截止频率或预定的数字频率ωD进行畸变,并根据式2.3求得相应的模拟频率ωA;
③用ωA对H(s)中的频率进行换算,即: Hs|s=s/ωA
④用式2.1计算H(z): Hz=HsωAs=z-1z+1
三、二阶IIR滤波器的DSP实现
1.标准型二阶IIR滤波器的实现
在二阶IIR滤波器结构中,标准型结构是最常见的滤波器结构,其结构如图5所示:
图5 标准型二阶IIR滤波器
由结构图可以写出反馈通道和前向通道的差分方程:
反馈通道: wn=xn+a1wn-1+a2w(n-2)
前向通道: yn=b0wn+b1wn-1+b2w(n-2)
由以上两式对二阶IIR滤波器进行编程,其中乘法-累加运算可采用单操作数指令或双操作数指令,数据和系数可存放在DARAM中,如图6所示:
图6 双操作数数据存放和系数表
2.直接型二阶IIR滤波器的实现
二阶IIR滤波器可以用直接型结构来实现.在迭代运算中,先衰减后增益,系统的动态范围和鲁棒性要好些.直接型二阶IIR滤波器的结构如图7所示:
图7 直接型二阶IIR滤波器
直接型二阶IIR滤波器的脉冲传递函数为:
Hz=b0+b1z-1+b2z-21-a1z-1-a2z-2
差分方程为:
yn=b0xn+b1xn-1+b2xn-2+a1yn-1+a2yn-2
为了实现直接型滤波,可在DARAM中开辟4个循环缓冲区,用来存放变量和系数,并采用循环缓冲区方式寻址.这4个循环缓冲区的结构如图8所示:
图8 循环缓冲区结构
四、总体设计方案
1.利用MATLAB来确定IIR滤波器的参数;
2.启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序;
3.设置波形时域观察窗口,得到其滤波前后波形变化图;
4.设置频域观察窗口,得到其滤波前后频谱变化图.