home *** CD-ROM | disk | FTP | other *** search
- ;**************************************************************
- ;
- ; iir_n.asm
- ;
- ; staff
- ;
- ; 06-04-91
- ;
- ; (C) Texas Instruments Inc., 1992
- ;
- ; Refer to the file 'license.txt' included with this
- ; this package for usage and license information.
- ;
- ;**************************************************************
-
- .title "Nth Order IIR Type II Filter"
- .mmregs
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; This routine implements an N-th order type II IIR filter.
- ; d(n) = x(n) + d(n-1)a1 + d(n-2)a2 +...+ d(n-N+1)aN-1
- ; y(n) = d(n)b0 + (dn-1)b1 +...+ d(n-N+1)bN-1
- ; Memory Requirement:
- ; State variables (low to high data memery):
- ; d(n) d(n-1) ... d(n-N+1)
- ; Coefficient (low to high program memory):
- ; a(N-1) a(N-2) ... a(1) b(N-1) b(N-2) ... b(1) b(0)
- ; Entry Conditions:
- ; AR0 -> Input
- ; AR1 -> d(n-N+1)
- ; AR2 -> Output
- ; BMAR -> a(N-1)
- ; ARP = AR0
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- IIR_N: ZPR
- LACC *,15,AR1 ;Get Q15 input
- RPT #(N-2) ;for i=1,i<=N-1,++i
- MADS *- ;Acc+=a(N-i))*d(n-N+i)
- APAC ;Final accumulation
- SACH *,1 ;Save d(n)
- ADRK N-1 ;AR1 -> d(n-N+1)
- LAMM BMAR ;Acc -> a(N-1)
- ADD #N-1 ;Acc -> b(N-1)
- SAMM BMAR ;BMAR -> b(N-1)
- RPTZ #(N-1) ;for i=1,i<=N,++i
- MADD *- ;Acc+=b(N-i)*d(n-N+i)
- LTA *,AR2 ;Final accumulation
- SACH *,1 ;Save Yn