Está en la página 1de 28

Trabajo de Graduacin

Francisco J. Garca Castillo 130

3.6 FILTROS DE RESPUESTA INFINITA (IIR)

Los filtros IIR, tambin conocidos como Sistemas Auto-regresivos (Auto-Regresive


{AR}), son llamados de respuesta infinita, porque el proceso de filtrado se realiza por medio
de la evaluacin de la ecuacin de diferencias que regulan el sistema. Como la ecuacin 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 razn
son llamados de Respuesta al Impulso Infinita.

N -1

b k z
-k

H(z) = k =0
M -1
ec. 3.23
1+ a k z -k

k =0

La funcin 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 mtodos para
disear filtros digitales IIR. Sin embargo, todas las tcnicas ms popularizadas parten de un
filtro anlogo que cumplan las condiciones requeridas y luego ste es convertido a filtro
digital. Debido a esto discutiremos brevemente algunos aspectos de trascendencia en el
diseo de filtros anlogos y como stos afectan al filtro cuando este es pasado al dominio
digital.

Un filtro anlogo puede ser representado a partir de su funcin de transferencia de la


siguiente manera:
M

B( s ) k sk
H a ( s) = = k =0
N
ec. 3.24

A( s ) k
k s
k =0

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 131

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

h( t )e ec. 3.25
st
H a ( s) = dt

Otra forma alternativa de describir el filtro anlogo es por medio de la ecuacin


diferencial que describa al sistema, as tenemos pues que:

N
d k y( t ) M d k x (t )
k
k =0 dt k
=
k =0
k
dt k
ec. 3.26

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

Si el proceso de conversin del filtro fue exitoso, para que sea fsicamente 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 relacin 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 anlogo estable se
convertir en un filtro digital estable.

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 132

Basado en estas condiciones los filtros IIR estables y fsicamente realizables no


pueden tener fase lineal; ya que para que esto suceda stos deben tener una funcin de
transferencia que cumplan con la condicin:

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
tendra que tener un polo imagen especular fuera de la circunferencia unidad para cada polo
dentro de la circunferencia unidad; por lo tanto el filtro sera inestable.

En el diseo de IIR especificamos las caractersticas deseadas del filtro para la


respuesta en magnitud, ya que las caractersticas de fase estn 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 metodologa de diseo.

3.6.1 Diseo de filtros IIR utilizando la transformacin bilineal


La transformacin bilineal es un proceso matemtico que transforma el eje j en la
circunferencia unidad del plano z slo una vez, evitando de esta manera el solapamiento de
componentes de frecuencia. Adems 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 transformacin de variables esta descrita por:


1 - z -1
s= ec. 3.28
1 + z -1

Adems de la transformacin de la variable (s z), es importante tambin ajustar


las frecuencias del plano de Laplace al plano z, este ajuste (no lineal), es conocido en Ingls
como Frequency Prewarping,

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 133

= tan( /2) ec. 3.29

En este mtodo se obtienen los coeficientes del filtro analgico y se aplica la


transformacin 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 implementacin de los
mismos es mejor realizada como la cascada de varias secciones bicuadrticas, ec. 3.30.

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

El ngulo de los polos de la funcin de transferencia de los filtros Butterworth viene


dado por la ec. 3.31, donde N es el orden del filtro.


i = (N - 1+ 2i) para i = 1,2,...N ec. 3.31
2N

Con esta informacin y nuestros conocimientos previos de diseo de filtros


analgicos, podemos modificar las formulas de diseo de Filtros Butterworth para disear
directamente filtros digitales. Es posible tambin hacerlo con otro tipo de filtros anlogos
(por ejemplo con el Chebyshev); sin embargo, por las buenas propiedades del Butterworth y
a que las herramientas de aplicacin utilizadas en este trabajo implementan este tipo de
filtro, nos dedicaremos slo 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 caractersticas en cuanto
a atenuacin de las seales no deseadas en el filtro se refiere. Aunque generalmente estos

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 134

se construyen de secciones bicuadrticas como hemos dicho anteriormente su anlisis sigue


siendo del mismo.

Los parmetros que se especifican para el filtro son: la frecuencia de paso fpass, la
atenuacin en la banda de paso Apass, la frecuencia de rechazo fstop y la atenuacin de la
banda de rechazo Astop. Estos parmetros estn relacionados con los descritos anteriormente
para el dominio anlogo (seccin 3.2), por ejemplo las frecuencias de paso y rechazo
mantienen el mismo concepto descrito anteriormente; mientras que la atenuacin en la
banda de paso se utiliza para medir el rizado existente en esta banda y la atenuacin en la
banda de rechazo mida el rizado para esta banda. En la fig. 35 podemos observar estos
parmetros para un filtro pasa bajo tanto desde la perspectiva anloga (a la derecha) como
desde la perspectiva digital (izquierda).

Filtro pasabajo Filtro pasabajo


digital deseado anlogo equivalente

Banda Banda Banda Banda


de paso de de paso de
rechazo rechazo

Fig. 35 Filtro Pasabajo digital y su equivalente anlogo

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 atenuacin de la seal a rechazar. Nos hemos
dedicado a hablar de antemano del filtro pasa bajo, ya que ste ser usado como herramienta
de diseo para el resto de los filtros que estudiaremos.

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 135

La atenuacin esta dada en funcin del valor promedio cuadrtico normalizado de la


magnitud de la funcin de transferencia del filtro, y corresponde a A(f) = -10log10 H(f)2
donde A esta dado en dB; especficamente para:

0 A(f) Apass , para 0 f fpass ec. 3.32


A(f) Astop , para fstop f fs/2 ec. 3.33

Basndonos en la fig. 35 y la definicin de atenuacin, podemos expresar la


atenuacin en funcin de los factores de rizo () de la siguiente manera:

A pass = 10 log 10 ( 1 + pass


2
)
ec. 3.34
Astop = 10 log 10 ( 1 + stop
2
)
ec. 3.35

por lo tanto:

pass = 10 1
A pass / 10
ec. 3.36
stop = 10 1
Astop / 10
ec. 3.37

El otro parmetro especificado dentro de la figura 3.35 es la frecuencia normalizada


, que para el caso de los pasa bajos queda especificado por:

pass
pass = tan( ) ec. 3.38
2
stop
stop = tan( )
2 ec. 3.39

donde

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 136

2f pass
pass = ec. 3.40
fs
2f stop ec. 3.41
stop =
fs

Filtro pasa bajo anlogo


Bajo el dominio de la frecuencia la expresin de este filtro a travs de la funcin
de transferencia esta dada por:

2 1
H( ) = ec. 3.42
1 + ( 0 )
2N

La cual, bajo el concepto de atenuacin, queda determinada por:

[
A( ) = 10 log 10 1 + ( 0 )
2N
] ec. 3.43

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

[
A( pass ) = 10 log 10 1 + ( pass 0 )
2N
] ec. 3.44
A( stop ) = 10 log 10 [1 + ( stops 0 ) ]
2N
ec. 3.45

Utilizando estas dos ecuaciones anteriores y despejando e igualando para N y 0 ,


obtenemos el orden del sistema:

ln( )
N exacto = ec. 3.46
ln( )
donde:

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 137

stop
=
pass ec. 3.47
stop
= ec. 3.48
pass

Si N es un nmero con decimales siempre se recomienda que redondee al entero


superior ya que este satisface las condiciones de atenuacin requeridas. Ms an se
recomienda en la medida de lo posible redondear al entero par superior ms cercano, debido
a que nuestra estructura va a estar formada por bicuadrticas colocadas en cascada y de no
ser as uno de los elementos sera de primer orden.

Recordemos tambin 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:
pass
0 = ec. 3.49
( pass )1/ N

Podemos entonces construir estructuras del filtro Butterworth en forma anloga


(dominio de s) con los valores encontrados de N y 0 utilizando la factorizacin espectral.
Este mtodo se basa en remplazar s = -j, tomando en cuenta que (H())* = H*(-) por lo
que podemos expresar la ecuacin de un filtro pasa bajo en el dominio de s como:

1 1
H ( s) H * ( s) = 2N
= 2N
ec. 3.50
1 + s j 1 + (1) s
N

0 0

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

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 138

1 , Si N = 2K

H0 ( s ) = 1 ec. 3.52
1 + s , Si N = 2K + 1
0

1
Hi ( s ) = , para i= 1,2, ...,K ec. 3.53
s s2
1 2 cos i + 2
0 0

A partir de este filtro anlogo pasa bajo, la transformacin 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 transformacin bilineal descrita por la ec. 3.28 a nuestro filtro pasa bajo
anlogo obtenemos las siguientes formulas de diseo para el filtro digital pasa bajo:

0 )
0 = tan( ec. 3.54
2
2
G i (1 + z -1 )
H i (z) = ec. 3.55
1 + ai1 z -1 + ai2 z -2

0
2
Gi = ec. 3.56
1 - 2 0 cos i + 02
2( 02 - 1)
ai1 = ec. 3.57
1 - 2 0 cos i + 02

1 + 2 0 cos i + 02
ai2 = ec.3.58
1 - 2 0 cos i + 02
para i = 1, 2, ...., k.

Con esta estructura y utilizando esta transformacin bilineal se podr construir el


filtro pasa bajo a partir de estructuras bicuadraticas, que cumplan con la siguiente formula:

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 139

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

Si N es impar uno de los trminos 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 slo bicuadraticas para
armar nuestro sistema se mantiene y su magnitud final ser 1.

Como la transformacin entre s y z es lineal podemos conocer el orden del filtro a


partir de los parmetros de atenuacin y frecuencias de paso y rechazo. Por lo tanto los
pasos de diseo para este filtro sern:
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 bicuadrticas que constituyen el filtro utilizando
las formulas obtenidas en esta seccin para filtros pasa bajos.

Aunque las formulas para los diversos filtros varen el procedimiento descrito por
estos tres pasos bsicamente se mantiene igual, slo habra que ajustar las formulas al caso
especifico ya sea para el clculo de frecuencias y orden del filtro. Sin embargo, para todos
los procesos se busca el equivalente anlogo pasa bajo del filtro; ya que de ste parte
realmente el diseo de todos los filtros digitales, como veremos ms adelante.

3.6.1.3 Filtro pasa alto digital


Para disear el filtro pasa alto digital se parte del filtro anlogo pasa bajo, pero la
transformacin bilineal utilizada para la transformacin 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 transformacin bilineal utilizada responde a las
siguientes ecuaciones:

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 140

1 + z 1
s= ec. 3.60
1 z 1
= cot( 2 )
ec. 3.61
= 2f
fs ec. 3.62

Filtro pasaalto Filtro pasabajo


digital deseado anlogo equivalente

Banda Banda Banda Banda


de paso de rechazo de paso de rechazo

Fig. 36 Filtro digital pasaalta y su filtro pasabajo anlogo equivalente

Podemos observar en la fig. 36 el filtro pasa alta digital deseado y el filtro anlogo
equivalente utilizado para su construccin. Como la transformacin bilineal hace que
los valores de varen de su forma original, sus correspondientes valores de tambin
variarn, quedando determinados a partir de las ecuaciones:

pass = cot( pass 2) ec. 3.63


stop = cot( stop 2)
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 Graduacin
Francisco J. Garca Castillo 141

Haciendo uso de la transformacin bilineal adaptada para filtros pasa alto y las
ecuaciones de filtros pasa bajos anlogos, podemos obtener los coeficientes de las
bicuadrticas que constituyen el sistema. Este proceso nos dio por resultado las
siguientes ecuaciones:
0 )
0 = - cot(
2 ec. 3.65
-1 2
G i (1 - z )
H i (z) =
1 + ai1 z -1 + ai2 z -2 ec. 3.66

0
2

Gi =
1 - 2 0 cos i + 02 ec. 3.67

2( 02 - 1)
ai1 =
1 - 2 0 cos i + 02 ec. 3.68

1 + 2 0 cos i + 02
ai2 = ec. 3.69
1 - 2 0 cos i + 02
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 slo bicuadrticas y con una magnitud de 1 en la banda de paso.

3.6.1.4 Filtro pasa banda digital


Para este caso tambin partimos de un filtro pasa bajo anlogo equivalente,
adaptndose la transformacin 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 ocasin la transformacin bilineal utilizada para cumplir las condiciones de


filtrado en pasa banda corresponden a la siguiente forma:

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 142

1 2 cz 1 + z 2
s= ec. 3.70
1 z 2
= ( c cos ) /( sin ) ec. 3.71

= 2f ec. 3.72
fs

Filtro pasabajo Filtro pasabajo


digital deseado anlogo equivalente

Banda Banda Banda Banda Banda


de de paso de de paso de
rechazo rechazo rechazo

Fig. 37 Filtro digital pasabanda y su filtro anlogo pasabajo equivalente

El nuevo parmetro 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:
sin ( pa + pb )
c= ec. 3.73
sin ( pa ) + sin ( pb )

de esta forma tenemos que:


c cos( pb )
pass = ec. 3.74
sin( pb )

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

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 143

c cos( sa )
sa =
sin( sa ) ec. 3.75
c cos( sb )
sb = ec. 3.76
sin( sb )

Como stop se toma el ms pequeo de los 2 resultados; aunque idealmente ambos


valores deberan ser iguales.

Utilizando la transformacin bilineal para este tipo de filtro y el filtro pasa bajo
anlogo equivalente se obtienen los coeficientes para cada seccin del sistema; este proceso
nos arroja los siguientes resultados:

c - cos( pb )
0 = abs( ) ec. 3.77
sin ( pb )
2
G i (1 - z -2 )
H i (z) = ec. 3.78
1 + ai1 z -1 + ai2 z -2 + ai3 z -3 + ai4 z -4

0
2
Gi = ec. 3.79
1 - 2 0 cos i + 02
4c( 0 cos i - 1)
ai1 =
1 - 2 0 cos i + 02 ec. 3.80

2(2 c2 + 1 - 02 )
ai2 =
1 - 2 0 cos i + 02 ec. 3.81

4c( 0 cos i + 1)
ai3 = - ec. 3.82
1 - 2 0 cos i + 02
1+ 2 0 cos i + 02
ai4 = ec. 3.82
1 - 2 0 cos i + 02

Como hemos observado debido a que esta transformacin de s es cuadrtica en


relacin con z produce elementos de cuarto orden por seccin que forman el filtro de orden
superior.

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 144

Para el clculo de N en funcin 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
transformacin 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
caractersticas pueden observarse en la misma figura, y a la vez el filtro digital anlogo
utilizado para su construccin.

En este caso la transformacin bilineal utilizada esta dada por:


1 z 2
s= ec. 3.83
1 2 cz 1 + z 2
= ( sin ) /(cos c ) ec. 3.84
= 2f ec. 3.85
fs

Filtro Rechaza Banda Filtro pasabajo


digital deseado anlogo equivalente

Banda Banda Banda Banda Banda


de paso de rechazo de paso de paso de rechazo

Fig. 38. Filtro rechaza banda digital y su filtro pasa bajo anlogo equivalente

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 145

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

sin ( pa + pb )
c= ec. 3.86
sin ( pa ) + sin ( pb )

sin pb
pass = ec. 3.87
cos pb c

sin( sa )
sa =
cos( sa ) c ec. 3.88
sin( sb )
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
transformacin 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 seccin 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 transformacin bilineal adaptada
al sistema utilizamos las siguientes ecuaciones:
sin pb
0 = abs( ) ec. 3.90
cos pb - c
-1 2
Gi (1 - 2 cz + z -2 ) ec. 3.91
H i (z) =
1 + ai1 z -1 + ai2 z -2 + ai3 z -3 + ai4 z -4

0
2
Gi = ec. 3.92
1 - 2 0 cos i + 02

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 146

4c 0 ( cos i - 0 ) ec. 3.93


ai1 =
1 - 2 0 cos i + 02

2(2 c 2 02 + 02 - 1) ec. 3.94


ai2 =
1 - 2 0 cos i + 02
4c 0 ( cos i + 0 ) ec. 3.95
ai3 = -
1 - 2 0 cos i + 02
1+ 2 0 cos i + 02 ec. 3.96
ai4 =
1 - 2 0 cos i + 02

3.6.1.6 Filtro Notch


Para disear un filtro Notch slo basta con aplicarle la transformacin bilineal
simple a la funcin 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:

2f 0
0 =
fs ec. 3.97
2f
= ec. 3.98
fs

Las relaciones de estos parmetros lo podemos observar en la fig. 39 en relacin a


su equivalente anlogo.

La transformacin bilineal del sistema arroja los siguientes resultados para el


calculo de los coeficientes digitales del sistema:

1
b=
ec. 3.99
1 + tan( )
2
1 - 2 cos 0 z -1 + z -2 ec. 3.100
H(z) =
1 - 2b cos 0 z -1 + (2b - 1) z -2

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 147

Filtro Notch Filtro Notch


digital deseado anlogo equivalente

Fig. 39 Filtro Notch digital y su equivalente anlogo

3.6.2 Programa De Diseo


Para el clculo de los coeficientes de las secciones que conforman al filtro hemos
utilizado el programa de diseo de filtros IIRFP. Este fue escrito en Lenguaje C por el Ing.
Ricardo Lambrao, compilado con el Compilador de C de Microsoft Versin 6.00.

Para ejecutar el mismo, el usuario debe escribir el nombre del programa IIRFP.EXE
desde la lnea de comando de MS-DOS y presionar [Enter]. El programa pregunta que
tipo de filtro desea calcular, el nmero de secciones bi-cuadrticas, 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 bicuadrticas); 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 sern utilizados para
la implementacin del filtro. El cdigo completo del programa lo podemos ver en el
apndice C.

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 148

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

3.6.3 Programa De Implementacin


Utilizando la tarjeta ADSP-21061 hemos logrado implementar el filtro IIR con buen
xito. En esta seccin nos dedicaremos ha comentar las partes ms relevantes del
programa que construye el filtro; si desea conocer el listado completo del programa remtase
al apndice D.

El lenguaje del ensamblador es de fcil comprensin ya que muchos de sus


elementos son tomados de los compiladores en C; pero si desea conocer algo adicional del
lenguaje puede remitirse al apndice B.

El programa de implementacin se basa en la construccin de filtros de orden


superior a partir de la colocacin en cascada de secciones bicuadrticas (ec.3.30); que
estarn 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 expresin 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 ) ec. 3.101

Capitulo III
Trabajo de Graduacin
Francisco J. Garca 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 implementacin el mismo queda bajo
ciertas restricciones:
Slo se puede construir filtros pasa bajos, pasa altos y notch directamente
utilizando esta estructura. Esto se debe a que la forma bicuadrtica utilizada
slo se ajusta a estas tres funciones de transferencia como podemos observar en
la seccin 3.6.1.
El valor de N(orden del sistema), debe ser un nmero par ya que las secciones
bicuadrticas producen slo estructuras de segundo orden. Aunque esta
restriccin vale desde el programa de implementacin 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 continuacin.

/************************************************************************
*
* 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;

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 150

Declaramos en la seccin de memoria de data la constante BIQUADS, que define la


cantidad de bicuadrticas 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 seccin de memoria de programa hemos inicializado el buffer que contiene los


coeficientes de las bicuadrticas, estos provienen del archivo COEF.DAT. Como ya
sabemos COEF.DAT es producto del programa de diseo 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;

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 151

Hemos utilizado la seccin de memoria del programa para colocar a los registros
encargados de manipular los buffers 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 seccin del cdigo se introducen las muestras de las seales 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 programacin los datos de r1 y r2
son pasados a formato de punto flotante, almacenndose en f1 y f2 respectivamente.

Por medio de la instruccin pass se verifica si el filtro esta encendido, de ser as el


comando if eq jump OFF permite la continuacin de la ejecucin 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 Graduacin
Francisco J. Garca 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); // 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 bicuadrticas necesarias


para producir el filtro del orden que requerimos. Cada ciclo produce una bicuadrtica que
utiliza la salida de la bicuadrtica anterior como entrada para obtener el efecto deseado; en el
caso de la primera bicuadrtica sta toma el valor de la muestra como seal de entrada.

A lo interno de cada ciclo se encuentra el algoritmo descrito por la ec. 3.101 para la
construccin de una bicuadrtica. 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 slo ciclo de mquina.
El procesador lee primero los registros y luego los escribe. De esta manera en
un slo ciclo de mquina podemos trabajar con el registro con un valor anterior
para posteriormente actualizarlo.

Notemos que la prioridad en este tipo de programacin no es la estructura ordenada


del sistema, sino el ahorro de ciclos de mquina; ya que como recordamos es muestra a

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 153

muestra donde se realiza el procesamiento de la seal el cual esta limitado por la cantidad de
instrucciones que se pueden realizar en un ciclo de mquina antes de la prxima muestra.

Con la utilizacin de los registros f0, f1, f2, f4, f8 y f12, como se muestra en los
comentarios del programa, logramos:
Leer los coeficientes de las bicuadrticas, 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
bicuadrtica.
Guardar las entradas y salidas presentes en sus respectivos buffer para ser
utilizadas en la siguiente bicuadrtica a construir.

Si a simple vista no se comprende el funcionamiento de la estructura interna del


ciclo considrelo como un caja negra donde con la alimentacin de entrada adecuada usted
obtiene el filtrado deseado de la seal.

Una vez realizado el filtrado igualamos f1 a f2, considerando que las seales 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 Graduacin
Francisco J. Garca 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 seales a punto fijo
utilizando truncamiento por medio del comando trunc. Para finalmente enviar las seales
filtradas al CODEC especficamente a los DACs, 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 seal del canal derecho sufre un pequeo atraso pero r0 = dm(Z1) y
dm(Z1) = r2; solucionan este inconveniente. Es de relevancia tambin el observar que este
proceso se efecta de igual manera si el filtro esta apagado (colocacin de la etiqueta OFF),
pero para este caso devuelve la seal sin pasarla por el proceso de filtrado. La instruccin
rti ordena al sistema retornar de la interrupcin dada al momento de muestrear la seal.

Una vez contabilizado el proceso aunque el programa es algo ms complejo que el


utilizado para el filtro FIR los resultados son muy similares y con una menor cantidad de
ciclos de mquina, lo que lo hace mas eficiente.

3.6.4 Otros mtodos de diseo de filtros IIR


El motivo principal de esta seccin es enunciar los principios generales de otros
mtodos para el diseo 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 diseo por el mtodo de arreglo en cascada de bicuadrticas. Sin embargo nos sirven de
orientacin para el desarrollo de nuevas herramientas bajo otros conceptos.

Entre los mtodos de diseo de sistemas IIR tenemos:


Mtodo de invarianza impulsional.
Para este mtodo el principal objetivo consiste en disear un filtro IIR con una
respuesta al impulso h(n) que sea la versin muestreada de la respuesta al impulso del filtro
analgico; es decir:

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 155

H(n) h(nT) para n = 0, 1,2,........ ec. 3.102

donde T es el periodo de muestreo.

Este tipo de diseo introduce problemas de aliasing al sistema, al menos que el


periodo T sea lo bastante pequeo para evitarlo o minimizarlo a lo mnimo posible. Por tal
motivo este tipo de filtro slo es adecuado para construir filtros pasa bajos y pasa banda..

Mtodo de aproximacin de derivadas.


En este mtodo se utiliza la ecuacin diferencial del filtro analgico que se desea
convertir y se pasa a su equivalente ecuacin de diferencias. Esta aproximacin es
comnmente utilizada para resolver una ecuacin diferencial lineal de constantes de forme
numrica 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 crculo 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.

Mtodo de la transformada z adaptada.


Para este mtodo hacemos corresponder los polos y los ceros del filtro anlogo H(s),
que deseamos convertir, con los polos y ceros del plano z. Para este propsito escribimos
la funcin de transferencia de H(s) de forma factorizada

( s c k )
H( s ) = k =1
N
ec. 3.103
( s p
k =1
k )

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

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 156

(1 e c kT
z 1 )
H( z ) = k =1
N
ec. 3.104
( 1 e
k =1
pk T
z 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 transformacin de z
adaptada.

Este mtodo tiene como inconveniente que para preservar las caractersticas de
respuesta en frecuencia del filtro analgico 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
pequeo para evitar el aliasing.

Como hemos podido observar generalmente estos mtodos introducen ciertos


inconvenientes al momento del diseo de ciertos filtros por tal motivo se prefiere el diseo
por el mtodo de transformacin bilineal.

3.7 COMPARACION ENTRE LOS FILTROS FIR Y LOS FILTROS IIR

Para esta seccin nos enfocaremos ms 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 distorsin de fase. Sin embargo, por medio de
filtros elpticos igualadores de fase se pueden construir Filtros IIR de fase lineal,

Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 157

pero la cantidad de coeficientes para producirlos eficientemente es mayor que la


requerida para un filtro FIR con similares caractersticas. Por este motivo se prefiere
el uso de FIR en aplicaciones que requieren fase lineal.

Estabilidad del sistema:


Como los filtros FIR slo estn constituidos slo por ceros, su estabilidad esta
garantizada; sin embargo, si partimos de un filtro estable anlogo 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
garantizarn 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 estn 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 bicuadrticas pueden
mejorar su respuesta a la palabra finita.

Como elemento final podemos agregar que para cada caso existirn mltiples
soluciones como el escoger el tipo de filtro a construir, a que frecuencia muestrear, etc.; sin
embargo slo una nos brindar el resultado deseado. Queda de cada uno sopesar todos sus
elementos de juicios para obtener la ms eficiente de todas para construir el filtro indicado.

Capitulo III

También podría gustarte