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