2 IIR1 Name: IIR1.ASM Type: Assembler Macro Version: 1.0 Date Entered: 15-Jul-87 Last Change: 15-Jul-87 Description: Direct Form Second Order All Pole Filter This macro implements a second order all pole IIR filter. The difference equation for the filter is: y(n)= x(n) + a(1)y(n-1) + a(2)y(n-2) with z transform: Y(z) 1 ----- = ------------------------- X(z) -1 -2 1 - a(1) z - a(2) z where: x(n) = input sample at time nT y(n) = output of the filter at time nT a(n) = filter coefficient n T = sample period An example network to realize this filter is shown below. Input >----------(+)------------------------> Output x(n) ^ | y(n) | a(1) 1/z (+)<-- 0.8 -----| ^ | | a(2) 1/z (+)<-- -0.3 ----| Second Order Direct Form All Pole IIR Filter The coefficients in the example are arbitrary. The memory map for the filter is shown below: r0 | v ------------------- X: | | | | y(n-1) | y(n-2) | Filter States ------------------- y(n-1) y(n-2) -------------------- Y: | a(1) | a(2) | | .8 | -.3 | Filter Coefficients -------------------- ^ | r4 Memory Map for the Second Order All Pole Filter The modulo registers m0 and m4 are set to -1 for linear arithmetic. The coefficients in this filter are restricted to a magnitude less than one. For an example of how to use this macro, see the test program IIR1T.ASM.