Trabajo de Graduación Francisco J. García Castillo 130

Trabajo de Graduación Francisco J. García Castillo Capitulo III 131 donde {a k} y {b k} son los coeficientes del filtro. El filtro también puede ser d...

6 downloads 151 Views 396KB Size
Trabajo de Graduación Francisco J. García Castillo

130

3.6 FILTROS DE RESPUESTA INFINITA (IIR) Los filtros IIR, también conocidos como Sistemas Auto-regresivos (Auto-Regresive {AR}), son llamados de respuesta infinita, porque el proceso de filtrado se realiza por medio de la evaluación de la ecuación de diferencias que regulan el sistema. Como la ecuación de diferencias depende de las salidas anteriores del filtro, existe una dependencia de los infinitos estados anteriores de la variable de salida a la variable de salida actual, por tal razón son llamados de Respuesta al Impulso Infinita.

N -1

H(z) =

∑b

k

z

-k

ec. 3.23

k =0 M -1

1+ ∑ a k z

-k

k =0

La función de transferencia de los filtros IIR esta dada por ec. 3.23 como se puede observar este filtro cuenta con ceros y polos, por lo que la estabilidad del mismo no esta garantizada.

De manera similar que en el caso de los filtros FIR, existen diversos métodos para diseñar filtros digitales IIR. Sin embargo, todas las técnicas más popularizadas parten de un filtro análogo que cumplan las condiciones requeridas y luego éste es convertido a filtro digital.

Debido a esto discutiremos brevemente algunos aspectos de trascendencia en el

diseño de filtros análogos y como éstos afectan al filtro cuando este es pasado al dominio digital.

Un filtro análogo puede ser representado a partir de su función de transferencia de la siguiente manera: M

B( s ) H a ( s) = = A( s )

∑β k =0 N

∑α k =0

k

sk ec. 3.24

k

s

k

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

131

donde {αk } y {βk} son los coeficientes del filtro. El filtro también puede ser descrito por su respuesta al impulso unitario relacionada con Ha(s) mediante la transformada de Laplace por:

H a ( s) =



∫ h( t )e

− st

dt

ec. 3.25

−∞

Otra forma alternativa de describir el filtro análogo es por medio de la ecuación diferencial que describa al sistema, así tenemos pues que:

N

∑α k k =0

d k y( t ) M d k x (t ) = β ∑ k dt k dt k k =0

ec. 3.26

donde x(t) y y(t), denotan la señal de entrada y la señal de salida del filtro, respectivamente.

Si el proceso de conversión del filtro fue exitoso, para que sea físicamente realizable debe cumplir con las siguientes condiciones: •

El eje jΩ en el plano s debe corresponder a la circunferencia unidad en el plano z. De esta forma existe una relación directa entre las dos variables de frecuencia en ambos dominios.



El semiplano izquierdo del plano s debe corresponder al interior de la circunferencia unidad en el plano z; de esta manera un filtro análogo estable se convertirá en un filtro digital estable.

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

132

Basado en estas condiciones los filtros IIR estables y físicamente realizables no pueden tener fase lineal; ya que para que esto suceda éstos deben tener una función de transferencia que cumplan con la condición: H ( z ) = ± z − N H ( z −1 )

ec. 3.27

donde z-N representa un retardo de N unidades en el tiempo; pero como observamos el filtro tendría que tener un polo imagen especular fuera de la circunferencia unidad para cada polo dentro de la circunferencia unidad; por lo tanto el filtro sería inestable.

En el diseño de IIR especificamos las características deseadas del filtro para la respuesta en magnitud, ya que las características de fase están relacionadas a ella.

Por tal

motivo especificamos la respuesta en magnitud del filtro y aceptamos la respuesta en fase que se obtiene a partir de la metodología de diseño.

3.6.1 Diseño de filtros IIR utilizando la transformación bilineal La transformación bilineal es un proceso matemático que transforma el eje jΩ en la circunferencia unidad del plano z sólo una vez, evitando de esta manera el solapamiento de componentes de frecuencia.

Además todos los puntos del semiplano izquierdo de s

corresponden con el interior de la circunferencia unidad, y todos los puntos del semiplano derecho de s corresponden con puntos fuera de la circunferencia unidad del plano z.

Esta transformación de variables esta descrita por: s=

1 - z -1 1 + z -1

ec. 3.28

Además de la transformación de la variable (s ⇒ z), es importante también ajustar las frecuencias del plano de Laplace al plano z, este ajuste (no lineal), es conocido en Inglés como Frequency Prewarping, Capitulo III

Trabajo de Graduación Francisco J. García Castillo

133

Ω = tan( ω/2)

ec. 3.29

En este método se obtienen los coeficientes del filtro analógico y se aplica la transformación de variables para obtener los coeficientes del filtro digital.

Debemos aclarar antes de continuar, que para mejorar la sensibilidad de los filtros IIR a los efectos de la palabra finita dentro del microprocesador, la implementación de los mismos es mejor realizada como la cascada de varias secciones bicuadráticas, ec. 3.30.

-1 -2 + + H(z) = B0 B1 z-1 B 2 z-2 1+ A1 z + A2 z

ec. 3.30

El ángulo de los polos de la función de transferencia de los filtros Butterworth viene dado por la ec. 3.31, donde N es el orden del filtro.

Φi =

π (N - 1+ 2i) 2N

ec. 3.31

para i = 1,2,...N

Con esta información y nuestros conocimientos previos de diseño de filtros analógicos, podemos modificar las formulas de diseño de Filtros Butterworth para diseñar directamente filtros digitales. Es posible también hacerlo con otro tipo de filtros análogos (por ejemplo con el Chebyshev); sin embargo, por las buenas propiedades del Butterworth y a que las herramientas de aplicación utilizadas en este trabajo implementan este tipo de filtro, nos dedicaremos sólo al desarrollo de las relaciones concernientes a él.

3.6.1.1 Especificaciones de los filtros de orden superior Los filtros de orden superior son utilizados para mejorar las características en cuanto a atenuación de las señales no deseadas en el filtro se refiere.

Capitulo III

Aunque generalmente estos

Trabajo de Graduación Francisco J. García Castillo

134

se construyen de secciones bicuadráticas como hemos dicho anteriormente su análisis sigue siendo del mismo.

Los parámetros que se especifican para el filtro son: la frecuencia de paso fpass, la atenuación en la banda de paso Apass, la frecuencia de rechazo fstop y la atenuación de la banda de rechazo Astop. Estos parámetros están relacionados con los descritos anteriormente para el dominio análogo (sección 3.2), por ejemplo las frecuencias de paso y rechazo mantienen el mismo concepto descrito anteriormente; mientras que la atenuación en la banda de paso se utiliza para medir el rizado existente en esta banda y la atenuación en la banda de rechazo mida el rizado para esta banda.

En la fig. 35 podemos observar estos

parámetros para un filtro pasa bajo tanto desde la perspectiva análoga (a la derecha) como desde la perspectiva digital (izquierda).

Filtro pasabajo digital deseado

Banda de paso

Filtro pasabajo análogo equivalente

Banda de rechazo

Banda de paso

Banda de rechazo

Fig. 35 Filtro Pasabajo digital y su equivalente análogo

Para un sistema pasa bajo es nuestra prioridad reducir la Apass ya que así garantizamos un rizado en la banda de paso cercano a cero. Mientras que se desea que la Astop sea grande para lograr la mayor atenuación de la señal a rechazar.

Nos hemos

dedicado a hablar de antemano del filtro pasa bajo, ya que éste será usado como herramienta de diseño para el resto de los filtros que estudiaremos. Capitulo III

Trabajo de Graduación Francisco J. García Castillo

135

La atenuación esta dada en función del valor promedio cuadrático normalizado de la magnitud de la función de transferencia del filtro, y corresponde a A(f) = -10log10 H(f)2 donde A esta dado en dB; específicamente para: 0 ≤ A(f) ≤ Apass , para 0 ≤ f ≤ fpass

ec. 3.32

A(f) ≥ Astop , para fstop ≤ f ≤ fs/2

ec. 3.33

Basándonos en la fig. 35 y la definición de atenuación, podemos expresar la atenuación en función de los factores de rizo (ξ) de la siguiente manera: 2 A pass = 10 log 10 ( 1 + ξ pass ) 2 Astop = 10 log 10 ( 1 + ξ stop )

ec. 3.34 ec. 3.35

por lo tanto:

ξ pass = 10

A pass / 10

ξ stop = 10

Astop / 10

−1

ec. 3.36

−1

ec. 3.37

El otro parámetro especificado dentro de la figura 3.35 es la frecuencia normalizada Ω, que para el caso de los pasa bajos queda especificado por:

Ω pass = tan( Ω stop = tan(

donde

Capitulo III

ω pass 2 ω stop 2

) )

ec. 3.38

ec. 3.39

Trabajo de Graduación Francisco J. García Castillo

136

ω pass = ω stop =

2πf pass fs

ec. 3.40

2πf stop

ec. 3.41

fs

Filtro pasa bajo análogo Bajo el dominio de la frecuencia Ω la expresión de este filtro a través de la función de transferencia esta dada por:

1

2

H( Ω ) =

1 + (Ω Ω 0 )

2N

ec. 3.42

La cual, bajo el concepto de atenuación, queda determinada por:

[

A( Ω ) = 10 log 10 1 + (Ω Ω 0 )

2N

]

ec. 3.43

por tal motivo para A(Ωpass) y para A(Ωstop) tenemos:

[ [1 + (Ω

] ) ]

A( Ω pass ) = 10 log 10 1 + (Ω pass Ω 0 )

ec. 3.44

A( Ω stop ) = 10 log 10

ec. 3.45

2N

stops

Ω0

2N

Utilizando estas dos ecuaciones anteriores y despejando e igualando para N y Ω0 , obtenemos el orden del sistema:

N exacto =

ln( ε ) ln(ψ )

donde:

Capitulo III

ec. 3.46

Trabajo de Graduación Francisco J. García Castillo

137

ε= ψ=

ξ stop ξ pass

ec. 3.47

Ω stop

ec. 3.48

Ω pass

Si N es un número con decimales siempre se recomienda que redondee al entero superior ya que este satisface las condiciones de atenuación requeridas.

Más aún se

recomienda en la medida de lo posible redondear al entero par superior más cercano, debido a que nuestra estructura va a estar formada por bicuadráticas colocadas en cascada y de no ser así uno de los elementos sería de primer orden. Recordemos también pues que para Ω0 tendremos que H(Ω0)2 =1/2 o lo que es igual A(Ω0) = 3 dB, por lo tanto tenemos que: Ω0 =

Ω pass

ec. 3.49

(ξ pass )1/ N

Podemos entonces construir estructuras del filtro Butterworth en forma análoga (dominio de s) con los valores encontrados de N y Ω0 utilizando la factorización espectral. Este método se basa en remplazar s = -jΩ, tomando en cuenta que (H(Ω))* = H*(-Ω) por lo que podemos expresar la ecuación de un filtro pasa bajo en el dominio de s como:

H ( s) × H * (− s) =

1 1 +  s j   Ω0 

2N

=

1 1 + (−1)  s   Ω0 

2N

ec. 3.50

N

Una vez tratada esta estructura se comprueba que puede ser construida por otras a partir de arreglos en cascada dadas por:

H(s) = H0(s)H1(s)......Hk(s) Donde Capitulo III

ec. 3.51

Trabajo de Graduación Francisco J. García Castillo

138

1 , Si N = 2K  H0 ( s ) =  1  1 + s Ω , Si N = 2K + 1 0 

Hi ( s ) =

1 s s2 1− 2 cos θ i + 2 Ω0 Ω0

,

para i= 1,2, ...,K

ec. 3.52

ec. 3.53

A partir de este filtro análogo pasa bajo, la transformación bilineal y a la propiedad de transformaciones de filtros podemos obtener las relaciones que utilizaremos para el desarrollo de filtros Butterworth digitales.

3.6.1.2 Filtro pasa bajo digital Utilizando la transformación bilineal descrita por la ec. 3.28 a nuestro filtro pasa bajo análogo obtenemos las siguientes formulas de diseño para el filtro digital pasa bajo:

Ω0 = tan(

ω0 ) 2

ec. 3.54 2

G i (1 + z -1 ) 1 + ai1 z -1 + ai2 z -2

ec. 3.55

Ω0 Gi = 1 - 2 Ω0 cos Φi + Ω02

ec. 3.56

ai1 =

2( Ω02 - 1) 1 - 2 Ω0 cos Φ i + Ω02

ec. 3.57

ai2 =

1 + 2 Ω0 cos Φi + Ω02 1 - 2 Ω0 cos Φi + Ω02

ec.3.58

H i (z) =

2

para i = 1, 2, ...., k.

Con esta estructura y utilizando esta transformación bilineal se podrá construir el filtro pasa bajo a partir de estructuras bicuadraticas, que cumplan con la siguiente formula: Capitulo III

Trabajo de Graduación Francisco J. García Castillo

139

H(s) = H0(s)H1(s)......Hk(s)

ec. 3.59

Si N es impar uno de los términos de H(z) será de primer orden y su respuesta final será distinta de 1 para la banda de paso.

Si N es par la estructura de sólo bicuadraticas para

armar nuestro sistema se mantiene y su magnitud final será 1.

Como la transformación entre s y z es lineal podemos conocer el orden del filtro a partir de los parámetros de atenuación y frecuencias de paso y rechazo.

Por lo tanto los

pasos de diseño para este filtro serán: •

Calcular las frecuencias digitales (ω) y su correspondiente frecuencia normalizada (Ω)



Calcular el orden de N y la frecuencia Ω0 para el filtro Butterworth equivalente basada en las transformaciones especificadas para el filtro pasa bajos.



Obtener los coeficientes de las bicuadráticas que constituyen el filtro utilizando las formulas obtenidas en esta sección para filtros pasa bajos.

Aunque las formulas para los diversos filtros varíen el procedimiento descrito por estos tres pasos básicamente se mantiene igual, sólo habría que ajustar las formulas al caso especifico ya sea para el cálculo de frecuencias y orden del filtro. Sin embargo, para todos los procesos se busca el equivalente análogo pasa bajo del filtro; ya que de éste parte realmente el diseño de todos los filtros digitales, como veremos más adelante.

3.6.1.3 Filtro pasa alto digital Para diseñar el filtro pasa alto digital se parte del filtro análogo pasa bajo, pero la transformación bilineal utilizada para la transformación del filtro al espacio digital se adapta para que cumpla las condiciones impuestas por el filtro pasa altas (inversas a las del filtro pasa bajos).

De esta manera la transformación bilineal utilizada responde a las

siguientes ecuaciones:

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

140

1 + z −1 s= 1 − z −1 Ω = − cot( ω 2 ) ω = 2πf fs

ec. 3.60 ec. 3.61 ec. 3.62

Filtro pasaalto digital deseado

Banda de paso

Filtro pasabajo análogo equivalente

Banda de rechazo

Banda de paso

Banda de rechazo

Fig. 36 Filtro digital pasaalta y su filtro pasabajo análogo equivalente

Podemos observar en la fig. 36 el filtro pasa alta digital deseado y el filtro análogo equivalente utilizado para su construcción.

Como la transformación bilineal hace que

los valores de Ω varíen de su forma original, sus correspondientes valores de Ω también variarán, quedando determinados a partir de las ecuaciones: Ω pass = cot(ω pass 2) Ω stop = cot(ω stop 2)

ec. 3.63 ec. 3.64

Con estos valores de Ω y A, utilizando las ecuaciones 3.46 y 3.49 podemos calcular el orden del filtro y el valor de Ω0 necesarios para cumplir las condiciones demandadas.

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

141

Haciendo uso de la transformación bilineal adaptada para filtros pasa alto y las ecuaciones de filtros pasa bajos análogos, podemos obtener los coeficientes de las bicuadráticas que constituyen el sistema.

Este proceso nos dio por resultado las

siguientes ecuaciones: ω0 ) 2

Ω0 = - cot(

ec. 3.65

-1 2

G i (1 - z ) 1 + ai1 z -1 + ai2 z -2

ec. 3.66

Gi =

Ω0 1 - 2 Ω0 cos Φi + Ω02

ec. 3.67

ai1 =

2( Ω02 - 1) 1 - 2 Ω0 cos Φ i + Ω02

ec. 3.68

ai2 =

1 + 2 Ω0 cos Φi + Ω02 1 - 2 Ω0 cos Φi + Ω02

ec. 3.69

H i (z) =

2

para i = 1, 2, ....., k.

Al igual que en el caso anterior un valor de N impar introduce al sistema un elemento de primer orden y una magnitud distinta de 1.

Mientras que un valor de N par

mantiene al sistema con sólo bicuadráticas y con una magnitud de 1 en la banda de paso.

3.6.1.4 Filtro pasa banda digital Para este caso también partimos de un filtro pasa bajo análogo equivalente, adaptándose la transformación bilineal de forma que responda adecuadamente a las propiedades particulares de este tipo de filtros.

En la fig. 37 podemos observar estas

condiciones.

En esta ocasión la transformación bilineal utilizada para cumplir las condiciones de filtrado en pasa banda corresponden a la siguiente forma:

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

142

1 − 2 cz −1 + z −2 s= 1 − z −2 Ω = ( c − cos ω ) /( sinω ) ω = 2πf fs

ec. 3.70 ec. 3.71 ec. 3.72

Filtro pasabajo digital deseado

Banda de rechazo

Filtro pasabajo análogo equivalente

Banda de paso

Banda de rechazo

Banda de paso

Banda de rechazo

Fig. 37 Filtro digital pasabanda y su filtro análogo pasabajo equivalente

El nuevo parámetro esta encargado de mantener al sistema estable por tal motivo debe tener un valor de c ≤ 1. Para que el filtro cumpla estas condiciones debe responder a: c=

sin ( ω pa + ω pb ) sin ( ω pa ) + sin ( ω pb )

ec. 3.73

de esta forma tenemos que: Ω pass =

c − cos( ω pb ) sin( ω pb )

ec. 3.74

Para encontrar el valor de Ωstop se deben calcular los valores de Ωsb y Ωsa, los cuales están dados por las siguientes relaciones:

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

143

Ω sa =

c − cos( ω sa ) sin( ω sa )

Ω sb =

c − cos( ω sb ) sin( ω sb )

ec. 3.75 ec. 3.76

Como Ωstop se toma el más pequeño de los 2 resultados; aunque idealmente ambos valores deberían ser iguales.

Utilizando la transformación bilineal para este tipo de filtro y el filtro pasa bajo análogo equivalente se obtienen los coeficientes para cada sección del sistema; este proceso nos arroja los siguientes resultados:

Ω0 = abs(

c - cos( ω pb ) ) sin ( ω pb )

ec. 3.77

2

H i (z) =

G i (1 - z -2 ) 1 + ai1 z -1 + ai2 z -2 + ai3 z -3 + ai4 z -4

ec. 3.78

Gi =

Ω0 1 - 2 Ω0 cos Φi + Ω02

ai1 =

4c( Ω0 cos Φ i - 1) 1 - 2 Ω0 cos Φ i + Ω02

ec. 3.80

ai2 =

2(2 c2 + 1 - Ω02 ) 1 - 2 Ω0 cos Φ i + Ω02

ec. 3.81

2

4c( Ω0 cos Φ i + 1) 1 - 2 Ω0 cos Φ i + Ω02

ec. 3.82

1+ 2 Ω0 cos Φi + Ω02 1 - 2 Ω0 cos Φi + Ω02

ec. 3.82

ai3 = ai4 =

ec. 3.79

Como hemos observado debido a que esta transformación de s es cuadrática en relación con z produce elementos de cuarto orden por sección que forman el filtro de orden superior.

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

144

Para el cálculo de N en función de Ω y A se calcula el orden del sistema utilizando las mismas ecuaciones 3.46 y 3.49. Cabe destacar que el orden del filtro es 2N debido a la transformación bilineal utilizada. Por lo tanto similar a los casos anteriores cuando N sea impar una de las secciones del sistema es de segundo orden y con la magnitud en la banda de paso distinta de 1; mientras que cuando N es par todas las secciones del filtro son de cuarto orden y la magnitud en la frecuencia de paso es 1.

3.6.1.5 Filtro Rechaza banda digital Este filtro tiene dos bandas de paso, como podemos observar en la fig. 38.

Sus

características pueden observarse en la misma figura, y a la vez el filtro digital análogo utilizado para su construcción.

En este caso la transformación bilineal utilizada esta dada por: 1 − z −2 1 − 2 cz − 1 + z − 2 Ω = ( sinω ) /(cos ω − c ) ω = 2πf fs s=

ec. 3.83 ec. 3.84 ec. 3.85

Filtro Rechaza Banda

Filtro pasabajo

digital deseado

análogo equivalente

Banda de paso

Banda de rechazo

Banda de paso

Banda de paso

Banda de rechazo

Fig. 38. Filtro rechaza banda digital y su filtro pasa bajo análogo equivalente

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

145

El diseño del filtro utiliza la misma estructura que en los casos anteriores y se rige por las siguientes ecuaciones:

c=

sin ( ω pa + ω pb ) sin ( ω pa ) + sin ( ω pb )

Ω pass =

ec. 3.86

sinω pb

ec. 3.87

cos ω pb − c

Ω sa =

sin( ω sa ) cos( ω sa ) − c

ec. 3.88

Ω sb =

sin( ω sb ) cos( ω sb ) − c

ec. 3.89

Se toma como Ωstop el menor valor de los propuestos por 3.88 y 3.89.

Para el

calculo de N utilizamos nuevamente la ec. 3.46 y 3.49, sin embargo por el tipo de transformación bilineal el orden del sistema esta dado por 2N.

El sistema estará formado

por secciones de cuarto orden si el valor de N es par y con una magnitud de 1 para la banda de paso; y tendrá una sección de segundo orden si N es impar, con una magnitud distinta de 1 en la banda de paso.

Para obtener los coeficientes del filtro basado en la transformación bilineal adaptada al sistema utilizamos las siguientes ecuaciones: Ω0 = abs(

H i (z) =

sin ω pb ) cos ω pb - c

2 -1 Gi (1 - 2 cz + z -2 ) 1 + ai1 z -1 + ai2 z -2 + ai3 z -3 + ai4 z -4

Ω0 Gi = 1 - 2 Ω0 cos Φi + Ω02

ec. 3.90

ec. 3.91

2

Capitulo III

ec. 3.92

Trabajo de Graduación Francisco J. García Castillo

146

4c Ω0 ( cos Φi - Ω0 ) 1 - 2 Ω0 cos Φi + Ω02

ec. 3.93

2(2 c 2 Ω02 + Ω02 - 1) ai2 = 1 - 2 Ω0 cos Φ i + Ω02

ec. 3.94

ai1 =

ai3 = ai4 =

4c Ω0 ( cos Φ i + Ω0 ) 1 - 2 Ω0 cos Φi + Ω02

1+ 2 Ω0 cos Φi + Ω02 1 - 2 Ω0 cos Φi + Ω02

ec. 3.95

ec. 3.96

3.6.1.6 Filtro Notch Para diseñar un filtro Notch sólo basta con aplicarle la transformación bilineal simple a la función de transferencia de este sistema en el domino de Laplace.

Es

necesario para esto conocer la frecuencia de muestreo fs, la frecuencia notch f0, el ancho de banda o su correspondiente forma digital, es decir:

ω0 =

2πf 0 fs

∆ω =

2π∆f fs

ec. 3.97 ec. 3.98

Las relaciones de estos parámetros lo podemos observar en la fig. 39 en relación a su equivalente análogo.

La transformación bilineal del sistema arroja los siguientes resultados para el calculo de los coeficientes digitales del sistema:

b=

1 1 + tan(

H(z) =

∆ω ) 2

1 - 2 cos ω 0 z -1 + z -2 1 - 2b cos ω 0 z -1 + (2b - 1) z -2 Capitulo III

ec. 3.99

ec. 3.100

Trabajo de Graduación Francisco J. García Castillo

147

Filtro Notch digital deseado

Filtro Notch análogo equivalente

Fig. 39 Filtro Notch digital y su equivalente análogo

3.6.2 Programa De Diseño Para el cálculo de los coeficientes de las secciones que conforman al filtro hemos utilizado el programa de diseño de filtros IIRFP. Este fue escrito en Lenguaje C por el Ing. Ricardo Lambraño, compilado con el Compilador de C de Microsoft Versión 6.00.

Para ejecutar el mismo, el usuario debe escribir el nombre del programa IIRFP.EXE desde la línea de comando de MS-DOS y presionar [Enter].

El programa pregunta que

tipo de filtro desea calcular, el número de secciones bi-cuadráticas, frecuencia de muestreo y frecuencias de corte. El cuadro de dialogo es similar al mostrado en la fig. 40.

Para este caso en particular pedimos calcular un filtro pasa altos (2); de sexto orden (3 bicuadráticas); con una frecuencia de muestreo de 48 KHz; y 1.5 KHz como frecuencia de corte.

La salida del programa es un archivo llamado COEF.DAT, este archivo tiene los coeficientes en formato de punto flotante y como comentarios, separado por "//".

Este

formato fue el requerido debido a que posteriormente estos coeficientes serán utilizados para la implementación del filtro.

El código completo del programa lo podemos ver en el

apéndice C.

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

148

Fig. 40 Cuadro de dialogo con el usuario del programa iirfp.exe

3.6.3 Programa De Implementación Utilizando la tarjeta ADSP-21061 hemos logrado implementar el filtro IIR con buen éxito.

En esta sección nos dedicaremos ha comentar las partes más relevantes del

programa que construye el filtro; si desea conocer el listado completo del programa remítase al apéndice D.

El lenguaje del ensamblador es de fácil comprensión ya que muchos de sus elementos son tomados de los compiladores en C; pero si desea conocer algo adicional del lenguaje puede remitirse al apéndice B.

El programa de implementación se basa en la construcción de filtros de orden superior a partir de la colocación en cascada de secciones bicuadráticas (ec.3.30); que estarán constituidas por los coeficientes descritos en la 3.6.1 para cada caso en particular. Por tal motivo como prioridad debemos expresar en el dominio del tiempo la salida del filtro; la siguiente expresión nos muestra este resultado: y( n ) = B0 x ( n ) + B 1 x( n − 1 ) + B 2 x ( n − 2 ) − A1 y( n − 1 ) − A2 y( n − 2 )

Capitulo III

ec. 3.101

Trabajo de Graduación Francisco J. García Castillo

149

donde y(n) es la salida y x(n) es la entrada del sistema.

Cabe destacar que con esta

estructura a utilizar para construir el programa de implementación el mismo queda bajo ciertas restricciones: •

Sólo se puede construir filtros pasa bajos, pasa altos y notch directamente utilizando esta estructura.

Esto se debe a que la forma bicuadrática utilizada

sólo se ajusta a estas tres funciones de transferencia como podemos observar en la sección 3.6.1. •

El valor de N(orden del sistema), debe ser un número par ya que las secciones bicuadráticas producen sólo estructuras de segundo orden.

Aunque esta

restricción vale desde el programa de implementación del sistema ya que el mismo esta programado para utilizar secciones del sistema; eliminando la posibilidad de que N sea impar.

A pesar que los filtros pasa banda y rechaza banda no se pueden construir directamente con esta estructura cabe la posibilidad de construir estos sistemas con arreglos en cascada de filtros pasa bajos y pasa altos.

Pues bien el primer paso de todo programa consiste en declarar las variables a utilizar, como observamos a continuación. /************************************************************************ * *

Segmento de Data en memoria de Data (Para Variables!)

* ************************************************************************/ #define

.segment /dm

BIQUADS

8

// Numero de Secciones Bi-cuadraticas

seg_dmda;

.var

ON_OFF = 0;

// Bandera del ByPass

.var

Z1;

// Elemento de Retardo para Canal Der.

.var

DATA[2*BIQUADS+2];

// Linea de Retardo

.endseg; Capitulo III

Trabajo de Graduación Francisco J. García Castillo

150

Declaramos en la sección de memoria de data la constante BIQUADS, que define la cantidad de bicuadráticas que van a constituir el sistema. A la vez declaramos las variables ON_OFF( para el encendido del filtro); Z1(elemento de retardo) y el buffer DATA dentro del cual se van a almacenar los valores de data a utilizar. /********************************************************************** * *

Segmento de Data en memoria de Programa (Para Constantes!)

* ************************************************************************/

.segment /pm

.var

seg_pmda;

COEFS[5*BIQUADS] = "COEF.DAT";

// Coeficientes del Filtro

.endseg;

En la sección de memoria de programa hemos inicializado el buffer que contiene los coeficientes de las bicuadráticas, estos provienen del archivo COEF.DAT.

Como ya

sabemos COEF.DAT es producto del programa de diseño IIRFP.EXE. /************************************************************************ * *

Segmento de Codigo en memoria de Programa

* ************************************************************************/

.segment /pm seg_pmco; ..... ...... b0=DATA; b8=COEFS;

m0=1;

l0=0; m8=1;

l8=@COEFS;

m1=-3;

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

151

Hemos utilizado la sección de memoria del programa para colocar a los registros encargados de manipular los buffer’s circulares a utilizar en el proceso.

Así b0, m0 y l0

controlan la base, el modificador y el largo del buffer de data. De forma similar b8, m8 y l8 controlan la base, el modificador y el largo del buffer de los coeficientes. /************************************************************************ * *

Rutina de Interrupcion del CODEC.

Aqui se procesan las muestras

*

recibidas por el ADC y se escriben los resultados al DAC.

* ************************************************************************/ INPUT_SAMPLES: // Lectura de CODEC (ADCs) r0 = dm(ON_OFF);

// Bandera de Encendido

r1 = dm(rx_buf + 1);

// ADC Canal Izquierdo

r2 = dm(rx_buf + 2);

// ADC Canal Derecho

f1 = float r1;

// Conversion a punto flotante

f2 = float r2;

// Conversion a punto flotante

r0 = pass r0;

// Encender banderas segun R0

if eq jump OFF;

// Ir a OFF si R0 = Cero

En esta sección del código se introducen las muestras de las señales de entrada al CODEC y se almacenan en los registros r1 y r2 en formato de punto fijo; mientras que la entrada ON_OFF indica si el filtro esta encendido o apagado y se almacena en el registro r0 bajo formato de punto flotante. Luego por simplicidad de programación los datos de r1 y r2 son pasados a formato de punto flotante, almacenándose en f1 y f2 respectivamente.

Por medio de la instrucción pass se verifica si el filtro esta encendido, de ser así el comando if eq jump OFF permite la continuación de la ejecución del filtro de lo contrario ésta hace que salte a la localidad indicada por la etiqueta OFF donde se encuentra una rutina que asegura la no puesta en marcha del filtro.

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

152

i0=DATA; lcntr=BIQUADS, do IIR until LCE;

// Repetir TAPS-1 Veces

f0=dm(i0,m0), f4=pm(i8,m8);

// F0 <= X(N-2), F4 = B2

f8 =f0*f4, f1=dm(i0,m0), f4=pm(i8,m8); f12=f1*f4, f4=pm(i8,m8);

// F1 <= X(N-1), F4 = B1 //

, F4 = B0

f12=f2*f4, f8=f8 + f12, f0=dm(i0,m0),f4=pm(i8,m8);// F0<=Y(N-2),F4 = A2 f12=f0*f4, f8=f8 + f12, f0=dm(i0,m1),f4=pm(i8,m8);// F0<=Y(N-1),F4 = A1 f12=f0*f4, f8=f8 + f12, dm(i0,m0)=f1; IIR:

f2 = f8 + f12 , dm(i0,m0)=f2;

// X(N-2) <= F1 // X(N-1) <= F2

dm(i0,m0)=f0;

// Y(N-2) <= F0

dm(i0,m0)=f2;

// Y(N-1) <= F2

f1=f2;

// Salida del filtro para ambos canales

El comando lcntr es utilizado para producir la cantidad de bicuadráticas necesarias para producir el filtro del orden que requerimos. Cada ciclo produce una bicuadrática que utiliza la salida de la bicuadrática anterior como entrada para obtener el efecto deseado; en el caso de la primera bicuadrática ésta toma el valor de la muestra como señal de entrada.

A lo interno de cada ciclo se encuentra el algoritmo descrito por la ec. 3.101 para la construcción de una bicuadrática.

El mismo se ve algo complejo y algo desordenado; sin

embargo, debemos recordar que éste se encuentra constituido de esta forma por los siguientes motivos: •

El procesador tiene la capacidad de leer dos espacios de memoria al mismo tiempo.

Por lo tanto el ubicar dos variables a utilizar en un mismo tiempo en

dos diferentes regiones de memoria nos da la posibilidad de ejecutar dos acciones en un sólo ciclo de máquina. •

El procesador lee primero los registros y luego los escribe. De esta manera en un sólo ciclo de máquina podemos trabajar con el registro con un valor anterior para posteriormente actualizarlo.

Notemos que la prioridad en este tipo de programación no es la estructura ordenada del sistema, sino el ahorro de ciclos de máquina; ya que como recordamos es muestra a Capitulo III

Trabajo de Graduación Francisco J. García Castillo

153

muestra donde se realiza el procesamiento de la señal el cual esta limitado por la cantidad de instrucciones que se pueden realizar en un ciclo de máquina antes de la próxima muestra.

Con la utilización de los registros f0, f1, f2, f4, f8 y f12, como se muestra en los comentarios del programa, logramos: •

Leer los coeficientes de las bicuadráticas, los estados presentes y anteriores de la entrada (x(n) y x(n-τ)), los estados anteriores de la salida (y(n-τ)).



Realizar las sumatorias y productos requeridos en la ec. 101 para construir la bicuadrática.



Guardar las entradas y salidas presentes en sus respectivos buffer para ser utilizadas en la siguiente bicuadrática a construir.

Si a simple vista no se comprende el funcionamiento de la estructura interna del ciclo considérelo como un caja negra donde con la alimentación de entrada adecuada usted obtiene el filtrado deseado de la señal.

Una vez realizado el filtrado igualamos f1 a f2, considerando que las señales de entrada son similares y el filtrado deseado es el mismo para ambos canales, para tener los registros preparados para cargar los canales de salida. OFF:

f15 = 32767.0;

// Valor Limite de DACs

f1 = clip f1 by f15;

// Recortar a Limite

f2 = clip f2 by f15;

// Recortar a Limite

r1 = trunc f1;

// Conversion a punto fijo

r2 = trunc f2;

// Conversion a punto fijo

r0 = dm(Z1);

// Retardo en Canal Derecho

dm(Z1) = r2;

// aun sin resolver la razon!

// Escritura de CODEC (DACs) dm(tx_buf + 1) = r1;

// DAC Canal Izquierdo

dm(tx_buf + 2) = r0;

// DAC Canal Derecho

rti;

// Retornar de Interrupcion

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

154

Finalizado el proceso de filtrado se verifica que no se sobrepasará el valor limite del DAC utilizando el comando clip xx by xx.

Luego se pasan las señales a punto fijo

utilizando truncamiento por medio del comando trunc. Para finalmente enviar las señales filtradas al CODEC específicamente a los DAC’s, esto se realiza cuando enviamos r1 y r0 a las variables en localidad de memoria de data tx_buff+1 y tx_buff+2, respectivamente. Cabe destacar que la señal del canal derecho sufre un pequeño atraso pero r0 = dm(Z1) y dm(Z1) = r2; solucionan este inconveniente.

Es de relevancia también el observar que este

proceso se efectúa de igual manera si el filtro esta apagado (colocación de la etiqueta OFF), pero para este caso devuelve la señal sin pasarla por el proceso de filtrado. La instrucción rti ordena al sistema retornar de la interrupción dada al momento de muestrear la señal.

Una vez contabilizado el proceso aunque el programa es algo más complejo que el utilizado para el filtro FIR los resultados son muy similares y con una menor cantidad de ciclos de máquina, lo que lo hace mas eficiente.

3.6.4

Otros métodos de diseño de filtros IIR El motivo principal de esta sección es enunciar los principios generales de otros

métodos para el diseño de filtros IIR.

Aunque no adentramos al procedimiento en sí del

mismo, debido a que los programas desarrollados y utilizados para este trabajo se basaron en el diseño por el método de arreglo en cascada de bicuadráticas. Sin embargo nos sirven de orientación para el desarrollo de nuevas herramientas bajo otros conceptos.

Entre los métodos de diseño de sistemas IIR tenemos: •

Método de invarianza impulsional. Para este método el principal objetivo consiste en diseñar un filtro IIR con una

respuesta al impulso h(n) que sea la versión muestreada de la respuesta al impulso del filtro analógico; es decir:

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

H(n) ≡ h(nT)

155

para n = 0, 1,2,........

ec. 3.102

donde T es el periodo de muestreo.

Este tipo de diseño introduce problemas de aliasing al sistema, al menos que el periodo T sea lo bastante pequeño para evitarlo o minimizarlo a lo mínimo posible. Por tal motivo este tipo de filtro sólo es adecuado para construir filtros pasa bajos y pasa banda.. •

Método de aproximación de derivadas. En este método se utiliza la ecuación diferencial del filtro analógico que se desea

convertir y se pasa a su equivalente ecuación de diferencias.

Esta aproximación es

comúnmente utilizada para resolver una ecuación diferencial lineal de constantes de forme numérica en un procesador digital.

Este tipo de filtrado se ve limitado a solo bajas frecuencias resonantes, debido a que la correspondencia del semiplano izquierdo s con el plano z corresponde a un círculo de radio de ½ con centro en ½.

Por tal motivo solo se pueden construir filtro pasa bajos y

pasa banda de bajos valores de frecuencias resonantes. •

Método de la transformada z adaptada. Para este método hacemos corresponder los polos y los ceros del filtro análogo H(s),

que deseamos convertir, con los polos y ceros del plano z. Para este propósito escribimos la función de transferencia de H(s) de forma factorizada

M

H( s ) =

∏( s − c

k

)

k =1 N

∏( s − p

ec. 3.103 k

)

k =1

donde ck y pk , representa los ceros y polos del sistema respectivamente. Pues entonces la función de transferencia del filtro equivalente digital esta dada por:

Capitulo III

Trabajo de Graduación Francisco J. García Castillo

156

M

H( z ) =

∏(1 − e

c kT

z −1 )

∏( 1 − e

pk T

−1

k =1 N

ec. 3.104 z

)

k =1

donde T es el periodo de muestreo. De esta forma cada factor (s – a) en H(s) corresponden a un factor ( 1 − e pkT z −1 ) ; a esta correspondencia se le conoce como la transformación de z adaptada.

Este método tiene como inconveniente que para preservar las características de respuesta en frecuencia del filtro analógico para el intervalo de muestreo de la transformada z adaptada, se deben seleccionar apropiadamente las posiciones de los polos y ceros equivalentes en el plano z.

Por este motivo T debe ser seleccionado lo suficientemente

pequeño para evitar el aliasing.

Como hemos podido observar generalmente estos métodos introducen ciertos inconvenientes al momento del diseño de ciertos filtros por tal motivo se prefiere el diseño por el método de transformación bilineal.

3.7 COMPARACION ENTRE LOS FILTROS FIR Y LOS FILTROS IIR

Para esta sección nos enfocaremos más que todo en las bondades y dificultades de cada tipo de filtro haciendo hincapié en las diferencias fundamentales entre ambos: •

Fase lineal:

Este particularidad de los filtros la podemos obtener de los filtros tipo FIR, ya que los filtros IIR introducen una ligera distorsión de fase. Sin embargo, por medio de filtros elípticos igualadores de fase se pueden construir Filtros IIR de fase lineal, Capitulo III

Trabajo de Graduación Francisco J. García Castillo

157

pero la cantidad de coeficientes para producirlos eficientemente es mayor que la requerida para un filtro FIR con similares características. Por este motivo se prefiere el uso de FIR en aplicaciones que requieren fase lineal. •

Estabilidad del sistema:

Como los filtros FIR sólo están constituidos sólo por ceros, su estabilidad esta garantizada; sin embargo, si partimos de un filtro estable análogo para construir su IIR equivalente debemos obtener estabilidad en éste.

Para aplicaciones en que

constantemente se tengan que calcular los coeficientes de los filtros, como para el filtrado adaptativo,

se preferirá entonces los filtros FIR que siempre nos

garantizarán la estabilidad del sistema. •

Eficiencia:

Generalmente los filtros FIR necesitan mayor cantidad de coeficientes que los filtros IIR para obtener resultados similares.

Por tanto para aquellos procesos donde la

cantidad de instrucciones por muestra estén limitadas es preferible optar por un filtro IIR. •

Respuesta a la palabra finita:

Los filtros FIR tienen inherentemente una buena respuesta a la palabra finita, sin embargo los filtros IIR si son construidos por secciones bicuadráticas pueden mejorar su respuesta a la palabra finita.

Como elemento final podemos agregar que para cada caso existirán múltiples soluciones como el escoger el tipo de filtro a construir, a que frecuencia muestrear, etc.; sin embargo sólo una nos brindará el resultado deseado.

Queda de cada uno sopesar todos sus

elementos de juicios para obtener la más eficiente de todas para construir el filtro indicado.

Capitulo III