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

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.设置频域观察窗口,得到其滤波前后频谱变化图.

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值