[Home]IIR Poles And Zeros

HomePage | RecentChanges | Preferences

For the Webpage that analyses recorded modem it would be nice to remove 970Hz V.21(low) tone.

A study of the Bi-quard IIR filter has the filter.

 Bateman says K1 and K2 adjust levels, so that they do not overlaod the integer arithmatic.
 he uses a nd b 

 op/ip = (k1*( ao + a1 *z + a2 * z*z )

               + - - -+ - - - +--- k2 ---op
               a0     a1      a2       
 ip -- k1 --S--+-[z]--+--[z]--+
            |         b1      b2
            + - - - - + - - - +

above z is nomally z^-1 , or a samples delay

S is a summer

 z = exp( j 2PI f / Fsample)

 exp( jx ) = cos( x ) + jsin( x )	
 exp(-jx ) = cos( x ) - jsin( x )	

  2cos(x) = exp(jx)+exp(-jx)
 j2sin(x) = exp(jx)-exp(-jx)

 op/ip = H[Z] = (Z*Z*a0 + Z*a1 + a2)*k2 / ( Z*Z - Z*b1 - b2)

 Z = exp( j2PI f/FS ) = cos( 2PI f/FS ) + jsin( 2PI f/FS )

This can be thought of as the top line is an FIR filter with zeros at a very limited number of solutions. You need many more [Z]

  op/ip = [ FIR ]*[ IIR ]

  op/ip = [ FIR ]/ ( [ FIR] )

  The IIR has two Poles at exp( j2PI f/FS ) and exp( -j2PI f/FS) so you only have real terms. 

The Goertzel algorithm allows poles just inside the UNIT circle. See:- https://en.wikipedia.org/wiki/Goertzel_algorithm

40 Years ago, I read this:- https://www.ti.com/lit/an/spra168/spra168.pdf

The Goertzel algorithm is very simple and is tuned

 b1 = 2cos( 2PI f/Fs ) 

 b2 = -1

It can be used to resonate at the desired frequency. So I have one for the tone used for MARK and one for the SPACE tone.

For V.21 there are four frequencies, 970Hz, 1170Hz, 1650Hz and 1850Hz.

I want to filter out the 970Hz when analysing V.21(high) 1650Hz and 1850Hz. I could use bandpass filters or band stop filters or a notch filter. Its not easy.

The Bi Quad cannot tune the zeros using this. You cannot use this for the a terms.

  op/ip = [ FIR ]*[ IIR ]

  op/ip = [ FIR ]/ ( [ FIR] )

  The IIR filter can be turned to resonate at f/FS, but the FIR zero cannot be tuned.

So can we do this:

The [ FIR ] only provides limited Zeros at f*n/FS where n is the number of [z], The [ IIR ] provides the Poles due to sequence of [z] provided by the feedback.

Can we use a "Gyrator" idea to convert the IIR's poles into zeros?

  op/ip = [ FIR ]*[ IIR ]

  op/ip = [ FIR ]/ ( [ IIR ] )   -- use an IIR filter to generate the feedback. 

  op/ip = [ FIR ]/ ( [ FIR ] / [ IIR ] )

        = zeros / ( zeros / poles )

        = zeros * poles *  zeros 

        = zeros * "zeros" * "poles" 

  so the tuneables poles of the Goetzel algorithm become Zeros!      

Can we change the poles of the IIR filter in the feed back to zeros?

               + - - -+ - - - + -- k2 -+- - - - - - - - -op
               a0     a1      a2       |       
 ip -- k1 --S--+-[z]--+--[z]--+        S---[z]--+--[z]--+ - - +
            |                          |        b1      b2    |
            |                          +- - - - + - - - +     |
            |                                                 |  
            + - - - - - - - - - - - - - - - - - - - - - - - - +

Could I use a resonator to generate an anti-phase signal to cancel out the 970Hz carrier?

Is there a virtual earth type arrangement where a signal is cancelled by an antiphase signal

 ip - - [ A ] - - S - - [ B ]      an unwanted  signal at S is cancelled by a suitable generator B which is controlled by a Goertzel resonator?

It is similar to and Echo Cancellor that generates an anti-signal using adaptive filters.

So now we seems to have a Latice filter. aprox like this.

  ip - - - S - - -[Z] - [Z] - +

               \           /
                     X  
               /            
           S - - -[Z] - [Z] - +

This is similar to my favourite sine wave generator as it is so simple.

  x=x+y*n
  y=y-x*n

More Analysis is needed, and a better diagram.

It is worth trying it out.

This is similar idea to a Gyrator that models an inductor using op-amps and capacitors.

 I = C dV/dt

 V = L dI/dt

 To model an inductor use a circuit that swaps I and V

See:- https://en.wikipedia.org/wiki/Gyrator


HomePage | RecentChanges | Preferences
This page is read-only | View other revisions
Last edited July 10, 2023 10:29 pm by dougrice.plus.com
Search:
home page