TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
130
33..66 FFIILLTTRROOSS DDEE RREESSPPUUEESSTTAA IINNFFIINNIITTAA ((IIIIRR))
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.
za+1
zb=H(z)
k-k
1-M
=0k
k-k
1-N
=0k
∑
∑
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:
∑∑
∑∑
==
======N
k
kk
M
k
kk
a
s
s
sAsB
sH
0
0
)()(
)(α
β
ec. 3.23
ec. 3.24
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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:
∫∫∞∞
∞∞−−
−−== dtethsH sta )()(
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:
∑∑∑∑====
==M
kk
k
k
N
kk
k
k dt
txd
dt
tyd
00
)()( βα
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.
ec. 3.25
ec. 3.26
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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:
)()( 1−−−−±±== zHzzH N 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:
z+1z-1
=s1-
-1
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,
ec. 3.28
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
133
/2)(= ωtanΩ
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.
zA+zA+1zB+zB+B=H(z)
2-2
1-1
-22
-110
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.
1,2,...N=i para 2i)+1-(N2N
=iπ
Φ
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. Aunque generalmente estos
ec. 3.29
ec. 3.31
ec. 3.30
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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).
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.
Fig. 35 Filtro Pasabajo digital y su equivalente análogo
Filtro pasabajoanálogo equivalente
Filtro pasabajodigital deseado
Bandade paso
Bandade
rechazo
Bandade
rechazo
Bandade paso
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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
A(f) ≥≥ Astop , para fstop ≤≤ f ≤≤ fs/2
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:
)1(log10A
)1(log10A2stop10stop
2pass10pass
ξ
ξ
++==
++==
por lo tanto:
110
110
10/Astop
10/Apass
stop
pass
−−==
−−==
ξ
ξ
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:
)2
(tan
)2
(tan
stopstop
passpass
ωΩ
ωΩ
==
==
donde
ec. 3.32
ec. 3.33
ec. 3.34
ec. 3.35
ec. 3.36
ec. 3.37
ec. 3.38
ec. 3.39
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
136
s
stopstop
s
passpass
f
f2
f
f2
πω
πω
==
==
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:
(( )) N20
2
1
1)(H
ΩΩΩ
++==
La cual, bajo el concepto de atenuación, queda determinada por:
(( ))[[ ]]N2010 1log10)(A ΩΩΩ ++==
por tal motivo para A(Ωpass) y para A(Ωstop) tenemos:
(( ))[[ ]](( ))[[ ]]N2
0stops10stop
N20pass10pass
1log10)(A
1log10)(A
ΩΩΩ
ΩΩΩ
++==
++==
Utilizando estas dos ecuaciones anteriores y despejando e igualando para N y Ω0 ,
obtenemos el orden del sistema:
)ln()ln(
N exacto ψε
==
donde:
ec. 3.40
ec. 3.41
ec. 3.42
ec. 3.43
ec. 3.44
ec. 3.45
ec. 3.46
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
137
pass
stop
pass
stop
Ω
Ω=
=
ψ
ξξ
ε
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:
Npass
pass
/10 )(ξΩ
=Ω
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:
NN
N
sj
ssHsH
2
0
2
0
*
)1(1
1
1
1)()(
Ω−+=
Ω+=−× ec. 3.50
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) ec. 3.51
Donde
ec. 3.47
ec. 3.48
ec. 3.49
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
138
++==
,s11
,1
)s(H
0
0
Ω
20
2
i0
i scos
s21
1)s(H
Ωθ
Ω++−−
== , para i= 1,2, ...,K
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:
)2
(= 00
ωtanΩ
za+za+1)z+(1G=(z)H 2-i2
1-i1
2-1i
i
ΩΦΩΩ
20i0
20
i+2-1
=Gcos
ΩΦΩΩ
20i0
20
i1+2-1
1)-2(=a
cos
ΩΦΩΩΦΩ
20i0
20i0
i2+2-1+2+1
=acos
cos
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:
ec. 3.54
ec. 3.56
ec. 3.55
ec. 3.57
ec.3.58
Si N = 2K
Si N = 2K + 1ec. 3.52
ec. 3.53
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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:
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
140
s
1
1
ff2
)2cot(z1
z1s
πω
ωΩ
==
−−==−−++
==−−
−−
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:
( )( )2cot
2cot
stopstop
passpass
ω
ω
=Ω
=Ω
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.
ec. 3.60
ec. 3.61
ec. 3.62
ec. 3.63
ec. 3.64
Fig. 36 Filtro digital pasaalta y su filtro pasabajo análogo equivalente
Filtro pasabajoanálogo equivalente
Filtro pasaaltodigital deseado
Bandade paso
Bandade rechazo
Bandade rechazo
Bandade paso
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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:
)2
(-= 00
ωcotΩ
za+za+1)z-(1G=(z)H 2-i2
1-i1
2-1i
i
ΩΦΩΩ
20i0
20
i+2-1
=Gcos
ΩΦΩΩ
20i0
20
i1+2-1
1)-2(=a
cos
ΩΦΩΩΦΩ
20i0
20i0
i2+2-1+2+1
=acos
cos
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:
ec. 3.65
ec. 3.67
ec. 3.66
ec. 3.68
ec. 3.69
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
142
s
2
21
ff2
)sin/()cosc(z1
zcz21s
πω
ωωΩ
==
−−==−−
++−−==
−−
−−−−
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
pbpa
pbpa
ωωωω
sinsin
sin
de esta forma tenemos que:
)(sin
)cos(c
pb
pbpass ω
ωΩ
−−==
Para encontrar el valor de Ωstop se deben calcular los valores de Ωsb y Ωsa, los cuales
están dados por las siguientes relaciones:
ec. 3.73
ec. 3.70
ec. 3.71
ec. 3.72
ec. 3.74
Fig. 37 Filtro digital pasabanda y su filtro análogo pasabajo equivalente
Filtro pasabajoanálogo equivalente
Filtro pasabajodigital deseado
Bandade paso
Bandade
rechazo
Bandade
rechazo
Bandade
rechazo
Bandade paso
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
143
)(sin
)cos(c
)(sin
)cos(c
sb
sbsb
sa
sasa
ωω
Ω
ωω
Ω
−−==
−−==
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:
))(
)(-cabs(=
pb
pb0
ωω
sin
cosΩ
za+za+za+za+1)z-(1G=(z)H 4-
i43-
i32-
i21-
i1
2-2i
i
ΩΦΩΩ
20i0
20
i+2-1
=Gcos
ΩΦΩΦΩ
20i0
i0i1
+2-11)-4c(
=acos
cos
ΩΦΩΩ
20i0
20
2
i2+2-1
)-1+c2(2=a
cos
ΩΦΩΦΩ
20i0
i0i3
+2-11)+4c(
-=acos
cos
ΩΦΩΩΦΩ
20i0
20i0
i4+2-1+2+1
=acos
cos
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.
ec. 3.77
ec. 3.78
ec. 3.79
ec. 3.82
ec. 3.80
ec. 3.82
ec. 3.81
ec. 3.75
ec. 3.76
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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:
s
21
2
ff2
)c/(cos)sin(zcz21
z1s
πω
ωωΩ
==
−−==++−−
−−==
−−−−
−−
ec. 3.83
ec. 3.84
ec. 3.85
Fig. 38. Filtro rechaza banda digital y su filtro pasa bajo análogo equivalente
Filtro pasabajo
análogo equivalente
Filtro Rechaza Banda
digital deseado
Bandade paso
Bandade rechazo
Bandade rechazo
Bandade paso
Bandade paso
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
145
El diseño del filtro utiliza la misma estructura que en los casos anteriores y se rige
por las siguientes ecuaciones:
)(+)(
)+(=c
pbpa
pbpa
ωωωω
sinsin
sin
ccos
sin
pb
pbpass −−
==ω
ωΩ
c)cos(
)(sin
c)cos(
)(sin
sb
sbsb
sa
sasa
−−==
−−==
ωω
Ω
ωω
Ω
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:
)c-
abs(=pb
pb0
ωω
cos
sinΩ
za+za+za+za+1)z+cz2-(1G=(z)H 4-
i43-
i32-
i21-
i1
2-2-1i
i
ΩΦΩΩ
20i0
20
i+2-1
=Gcos
ec. 3.86
ec. 3.87
ec. 3.88
ec. 3.89
ec. 3.91
ec. 3.92
ec. 3.90
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
146
ΩΦΩΩΦΩ
20i0
0i0i1
+2-1)-(4c
=acos
cos
ΩΦΩΩΩ
20i0
20
20
2
i2+2-1
1)-+c2(2=a
cos
ΩΦΩΩΦΩ
20i0
0i0i3
+2-1)+(4c
-=acos
cos
ΩΦΩΩΦΩ
20i0
20i0
i4+2-1+2+1
=acos
cos
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:
fsf2
f
f2
s
00
∆πω∆
πω
==
==
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:
)2
(+1
1=b ω∆
tan
z1)-(2b+z2b-1z+z2-1
=H(z)2-1-
0
-2-10
ωω
cos
cos
ec. 3.96
ec. 3.93
ec. 3.95
ec. 3.94
ec. 3.100
ec. 3.99
ec. 3.97
ec. 3.98
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
147
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.
Fig. 39 Filtro Notch digital y su equivalente análogo
Filtro Notchanálogo equivalente
Filtro Notchdigital deseado
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
148
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:
)2n(yA)1n(yA)2n(xB)1n(xB)n(xB)n(y 21210 −−−−−−−−−−++−−++== ec. 3.101
Fig. 40 Cuadro de dialogo con el usuario del programa iirfp.exe
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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 BIQUADS 8 // Numero de Secciones Bi-cuadraticas
.segment /dm 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;
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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 seg_pmda;
.var 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; m0=1; l0=0;
b8=COEFS; m8=1; l8=@COEFS;
m1=-3;
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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.
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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); // F1 <= X(N-1), F4 = B1
f12=f1*f4, f4=pm(i8,m8); // , 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; // X(N-2) <= F1
IIR: f2 = f8 + f12 , dm(i0,m0)=f2; // 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
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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:
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
155
H(n) ≡≡ h(nT) 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
∏∏
∏∏
==
==
−−
−−==
N
1kk
M
1kk
)ps(
)cs()s(H
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:
ec. 3.103
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
156
∏∏
∏∏
==
−−
==
−−
−−
−−==
N
1k
1Tp
M
1k
1Tc
)ze1(
)ze1()z(H
k
k
donde T es el periodo de muestreo. De esta forma cada factor (s – a) en H(s) corresponden
a un factor )ze1( 1Tpk −−−− ; 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,
ec. 3.104
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappiittuulloo IIIIII
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.
Top Related