Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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
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:
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 132
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.
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 133
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
i = (N - 1+ 2i) para i = 1,2,...N ec. 3.31
2N
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 134
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).
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 135
por lo tanto:
pass = 10 1
A pass / 10
ec. 3.36
stop = 10 1
Astop / 10
ec. 3.37
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
2 1
H( ) = ec. 3.42
1 + ( 0 )
2N
[
A( ) = 10 log 10 1 + ( 0 )
2N
] ec. 3.43
[
A( pass ) = 10 log 10 1 + ( pass 0 )
2N
] ec. 3.44
A( stop ) = 10 log 10 [1 + ( stops 0 ) ]
2N
ec. 3.45
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
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
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:
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
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.
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 139
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.
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.
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
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:
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.
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
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 )
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 )
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
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 144
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
2f 0
0 =
fs ec. 3.97
2f
= ec. 3.98
fs
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
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
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
.endseg;
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 150
/**********************************************************************
*
* Segmento de Data en memoria de Programa (Para Constantes!)
*
************************************************************************/
.endseg;
/************************************************************************
*
* Segmento de Codigo en memoria de Programa
*
************************************************************************/
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
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.
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
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.
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.
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.
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 154
Capitulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 155
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.
( 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
)
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.
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
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.
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