利用DSP实现IIR滤波器的精度扩展
LD A,-16,A ;A=A>>16
本文链接地址:http://www.oyaya.net/fanwen/view/157118.html
MAC *AR2,*AR3,A ;A=(L1*L2+H1*H2)>>16+H1*H2
STL A,@R2 ;保存R2
STH A,@R3 ;保存R3
2 IIR滤波器的基本原理及编程实现
>
N级IIR滤波器的脉冲传递数表达式为
它的差分方程表达式为
由上式可见,y(n)由2部分构成;第1部分是一个对x(n)的M节延时结构。每节延时后加权相加,也就是一个横向结构网络。第2部分也是一个N节延时的横向网络结构,不过它是对y(n)延时,因此也是个反馈网络。
数字滤波器运算结构的不同,将会影响系统运算的精度、误差、速度和经济性等性能指标。在一般情况下,都要求使用尽可能少的常数乘法器和延迟器来实现系统,并要求运算误差尽可能小。然而,这些要求有时是互相矛盾的,例如,为了获得个有较小运算误差的结构,使用的乘法器和延迟器的数目往往并不是最少的。IIR滤波器有以下几种基本网络结构:直接I型、直接II型、级联型和并联型。各种结构都有其优缺点。鉴于级联型常用于均衡器中,而且优点比较突出,所以,以级联型为便详细介绍其算法实现。
IIR滤波器在采用级联实现的,将传递函数分解为二阶传递函数的乘积,即
H(z)=H1(Z)H2(Z)…HM(Z)
每一级的子滤波器Hk(z)常取以下的形式:
一般级联实现都采用直接II型结构作为子滤波器的网络结构。使用直接II型的子滤波器的网络结构如图2所示。
二级级联IIR滤波器的主要实现程序如下:
;***已初始化了PMST=FFA0H,ST1=2300H,
;SWWSR=0,OVM=1,FRCT=1,SXM=1
STM #X,AR1
STM #Y,AR2
STM #d,AR3 ;AR3:d(n),d(n-1),d(n-2)
RPT A,#5 ;初始化d(n),d(
《利用DSP实现IIR滤波器的精度扩展(第2页)》