Você está na página 1de 29

Trabajo de Graduacin

Francisco J. Garca Castillo 101

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 102

C
CAAPPIIT
TUUL
LOO IIIIII

FFIIL
LTTR
RAAD
DOOD
DEE SSE
EA
ALLE
ESS

NT
33..11 IIN RO
TR DU
OD CC
UC ON
CIIO N

El termino filtro es utilizado para describir un dispositivo que discrimina, parcial o


totalmente, a aquello que lo atraviesa, segn algn atributo de los objetos que se aplican a
su entrada. As tenemos como ejemplo que hablamos de filtros de agua, que eliminan
partculas del agua destinada a algn uso; filtros de aceite, que recogen la suciedad del
aceite; por mencionar algunos.

En cuanto al tratamiento de seales, un filtro es un sistema diseado para obtener


una caracterstica de transferencia deseada; de manera que opera sobre seales de entrada de
una manera determinada.

En un principio los filtros fueron construidos con elementos pasivos (capacitores,


inductores, resistencias), por los que se les conoce con el nombre de filtros pasivos; sin
embargo la obtencin de las funciones de transferencia requeridas era muy laborioso y
muchas veces no brindan el resultado esperado. Luego con la aparicin de los elementos
semiconductores se crean los filtros activos anlogos, stos popularizados sobre todo por el
uso muy efectivo de los OPAs para la confeccin de los mismos. Debido a esto se

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 103

desarrollaron nuevos tipos de filtros y se estudiaron ms a fondo sus propiedades. Sin


embargo estos tipos de filtros solo eran eficaces hasta cierto limites de frecuencia, aunado al
clculo para ciertas funciones de transferencia y la calibracin tediosa, lo cual exigi el
desarrollo de otra herramienta aun ms eficaz. As nacen los filtros digitales que mediante
hardware y software han dado la solucin apropiada para muchas implementaciones de
sistema en la actualidad.

Como ya conocemos los sistemas lineales e invariantes en el tiempo realizan un tipo


de discriminacin o filtrado de diferentes componentes de frecuencia de entrada.
Bsicamente esta accin se debe a las caractersticas de respuesta en frecuencia del sistema,
que a su vez depende en gran medida de los parmetros del sistema.

)) modifica el
De manera general un sistema lineal e invariante en el tiempo ( H(
)) segn la respuesta en frecuencia del sistema, lo que
espectro de la seal de entrada ( X(
da lugar a una seal de salida con el espectro determinado por el sistema que atraviesa
) = H(
(Y( )X(
)). Por tal motivo cualquier sistema lineal e invariante en el tiempo puede
ser visto como un filtro de conformacin espectral. Bajo este contexto el diseo de filtros
digitales que respondieran a los parmetros deseados de un sistema determinado por los
coeficientes de los mismos, result muy viable tanto para hardware como para software.

El objetivo de este captulo es dar un vistazo general a los filtros digitales ms


comunes, sus propiedades y diseo general de los mismos; haciendo nfasis en las
herramientas software que hicieron posible su implementacin.

33..22 PPA
ARRA
AMME
ETTR
ROOSS D
DEEL
LOOSS FFIIL
LTTR
ROOSS

Para la descripcin de los parmetros de respuesta de un filtro utilizaremos un filtro


pasa bajo (llamado as por solo permitir el paso de seales con frecuencias por debajo de una
frecuencia limite) que se muestra en la fig. 30. Estos parmetros son utilizados como

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 104

herramienta de comparacin para la eleccin del tipo de filtro a utilizar. Estos parmetros
son:

)|
|H()

1
1+
1 - Rizado en la banda de paso
1
1- 2 - Rizado en la banda de rechazo
c - Frecuencia de corte
Rizado en la banda de paso
r - Frecuencia de rechazo

Banda de
rechazo
Banda de
2
Transicin

0 c r

Fig. 30 Parmetros de la respuesta en frecuencia de los filtros

Frecuencia de corte: es la frecuencia para la cual el sistema comienza a atenuar la


seal de entrada, en la figura se denota por c.
Frecuencia de rechazo: es la frecuencia donde se considera que el sistema atenuara
la seal de entrada al mximo(r), lo cual dar un efecto de ausencia de seal de
entrada.
Banda de paso: es aquel rango de frecuencias en que el sistema permite el paso de
la seal de entrada sin atenuarla.
Banda de rechazo: es el rango de frecuencias en el que la seal de entrada ser
atenuada al mximo por el sistema.
Banda de transicin: es el rango de frecuencias que existe entre la atenuacin
minina (banda de paso) y la mxima atenuacin(banda de rechazo) de la seal de
salida provocado por el sistema.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 105

Rizado en la banda de paso: es el rizado que suele ocurrir con relacin a la amplitud
mxima en la banda de paso, se denota por 1.
Rizado en la banda de rechazo: es el rizado que ocurre en la banda de rechazo, se
denota por 2.

Es prctica comn que los grficos de respuesta en frecuencia de cualquier filtro


estn en decibelios (dB), que equivale a 20log10 de la magnitud estudiada. A su vez para
los filtros digitales generalmente se presenta la escala de frecuencia normalizada en base a la
frecuencia de muestreo.

Estos son los parmetros comunes dados para el diseo de filtros y en base a ellos se
han desarrollado mtodos que permitan la obtencin de los coeficientes que cumplan lo
mejor posible estas condiciones. De igual manera nos sirven de herramienta para saber que
mtodo de anlisis se debe emplear y finalmente qu tipo de filtro disear.

Estos filtros son considerados ideales cuando sus parmetros de frecuencia y


magnitud responden de la siguiente manera:
La magnitud de la ganancia es constante, generalmente tomada como ganancia
unitaria, en la banda de paso y cero en la banda de rechazo. Se consideran que
no tienen banda de transicin.
La respuesta en fase es lineal.
Nos referimos a una respuesta en fase lineal si por ejemplo una secuencia x(n), cuyas
frecuencias se encuentran confinadas en el rango 1< <2, pasa a travs de un filtro con
respuesta en frecuencia

Ce jn0 1< < 2


H ( ) = ,
ec. 3.1
0 , en caso contrario

donde C y n0 son constantes. Por ende la seal de salida tienen el siguiente espectro:

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 106

Y ( ) = X ( ) H ( ) = CX ( )e jn0 1< <


, 2 ec. 3.2

La cual pasada al dominio del tiempo nos da por resultado:


y( n ) = x ( n n 0 ) ec. 3.3

Como observamos la salida del filtro es simplemente una versin retardada y la


escala en amplitud de la seal de entrada. Se considera que no hay distorsin de la seal si
el retardo es puro al igual que el escalamiento en amplitud. Por tal motivo la respuesta de
este sistema en fase responde a:
( ) = n0 ec. 3.4

por su propiedad lineal se le conoce como fase lineal y los filtros ideales guardan esta
caracterstica. La derivada de la fase con respecto a la frecuencia tiene unidades de retardo,
por lo que se define el retardo de la seal en funcin de la frecuencia como:
d ( )
g ( ) = ec. 3.5
d

a g() se le denomina retardo de envolvente o retardo de grupo del filtro; entendindose


g() como el retardo temporal que experimenta una componente de frecuencia cuando
atraviesa el sistema. Si la fase del sistema es lineal g() es constante; por tanto todas las
componentes de frecuencia experimentan el mismo atraso temporal.

Estos filtros ideales no son causales por tanto irrealizables; sin embargo, esta
idealizacin matemtica nos permite tener un punto de referencia acerca del
comportamiento requerido en le diseo de los filtros prcticos.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 107

33..33 FFIIL
LTTR
ROOSS C
CLL
SSIIC
COOSS

En la presente seccin daremos una breve descripcin de los filtros ms comunes


para el tratamiento de la informacin. Esta clasificacin se basa muchas veces en las
caractersticas discutidas anteriormente y exploradas en el mundo de diseo de filtros
activos anlogos, ya que algunos mtodos de diseo de filtros digitales parten de su
equivalente anlogo.

Como primer paso a continuacin describiremos los cuatro filtros generales:


Filtro pasa bajo
Es aquel filtro que deja pasar seales o componentes de las mismas cuya frecuencia
este por debajo de la frecuencia de paso, sin provocarles atenuacin (fig. 31a).

Filtro pasa altas


Este sistema permite, sin atenuacin, el paso de seales cuya frecuencia sea
superior a la frecuencia de paso (fig. 31b).

Filtro pasa banda


Para este tipo de sistema existen dos frecuencias de paso (fl y fh) quedando la
banda de paso definida entre ambas (como se muestra en la fig. 31c). De esta forma el
sistema slo permite el paso sin atenuacin de seales cuyas frecuencias se encuentren
entre los limites definidos por stas frecuencias.

Filtro rechaza banda


Tambin posee 2 frecuencias de paso ( fl y fh), pero la banda de paso va a estar
comprendida entre todas las frecuencias inferiores a fl y las frecuencias superiores a fh.
Por tanto las seales de entrada cuyas frecuencias queden dentro del rango delimitado por
estas frecuencias sern atenuadas parcial o totalmente (fig. 31d).

Como dijimos anteriormente existen otros tipos de filtros que su clasificacin


responde grandemente a los parmetros tratados en la seccin anterior. La realizacin de

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 108

los mismos va ligado al entendimiento de la funcin de transferencia general de un filtro. A


continuacin mostramos su forma estandar:

2 1
H ( j ) = ec. 3.6
1 + e S n2 ( )
2

En esta ecuacin, Sn() es un polinomio de orden n y e est relacionado con el rizo


en la banda de paso.

Fig. 31 Respuesta en frecuencia de los filtros ms utilizados

Filtros Butterworth
Tambin son conocidos como filtros de magnitud mximamente plana (MMP),
debido a que su funcin de transferencia se elige de tal forma que la curva de la respuesta
en magnitud sea lo ms plana posible dentro de la banda de paso del filtro. Esto es

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 109

posible haciendo iguales a cero en el centro tantas derivadas de la funcin de


transferencia como sea posible.

La manera de obtener este tipo de filtro es haciendo Sn = n y e = 1. La magnitud


elevada al cuadrado de la funcin de transferencia de orden n est dada como:
1
H ( j ) =
2
ec. 3.7
1 + 2n

A medida que aumenta el orden del filtro (aumenta n) el rizado en la banda de paso
es menor, pero la cada en la banda de transicin se hace ms pronunciada.

Filtros Chebyshev
El filtro Chebyshev presentan un rizo en la banda de paso, y tienen una cada ms
pronunciada que los filtros Butterworth; es decir su banda de transicin es ms angosta.
Para un orden dado, las caractersticas de ambos filtros tienen la misma pendiente asinttica.

La magnitud de la funcin de transferencia para este tipo de filtro es:

1
H ( j ) =
2
ec. 3.8
1 + C n2 ( )
2

donde Cn es el polinomio de orden n y determina la magnitud del rizo. La constante es


menor que 1.

Cabe destacar que si el filtro es impar, la curva de respuesta comienza en


H(j) = 1 (0dB); si el orden del filtro es par la curva inicia en la magnitud del rizo.
Excluyendo el punto donde la curva cruza p = 1, el orden del filtro es igual a la suma de los
mximos y mnimos de la respuesta en la banda de paso.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 110

Generalmente cuando el filtro es de orden elevado se recomienda dividirlos en


etapas de segundo y tercer orden, para luego colocarlos en cascada y obtener la respuesta
deseada.

33..44 C
COON
NCCE
EPPT
TOOSS B
BSSIIC
COOSS D
DEE FFIIL
LTTR
ROOSS D
DIIG
GIIT
TAAL
LEESS

Como hemos discutido anteriormente el proceso de filtrado tambin puede realizarse


mediante sistemas digitales, pero en vez de trabajar con seales continuas, funcionan con
seales digitales. Por tanto el proceso de conversin anloga digital ( y digital anloga,
si se requiere) estar presente en el procesamiento de la seal. Esto acarrea nuevas
posibilidades al momento de disear distintos filtros, pero involucra tambin nuevos
parmetros al momento del diseo de sistemas.

A continuacin damos una descripcin general de los tipos de filtros ms usados,


algunos parmetros de diseo y sus caractersticas ms comunes. Aprovechamos a la vez
para introducir algunos programas en C que nos ayudan a calcular los coeficientes del
sistema a utilizar; y tambin la estructura bsica del programa en lenguaje ensamblador de la
tarjeta ADSP21061, que es utilizado para la implementacin de filtros digitales.

3.4.1 Consideraciones Generales En El Diseo De Filtros

En esta seccin nos dedicaremos a enunciar sobre cmo la posicin de los polos y
ceros de la funcin de transferencia de un sistema discreto afectan a la respuesta en
frecuencia de un sistema. Con este conocimiento podremos elaborar tcnicas para el
diseo de filtros tomando en cuenta la estructura general del sistema y cuidando a la vez su
estabilidad. Aprovechndonos de esto definiremos un mtodo sencillo de diseo de filtros
digitales bsicos con ciertas caractersticas de frecuencias deseadas.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 111

Como base de nuestros enunciados debemos partir de la funcin de transferencia


general de un filtro:
M M

bk z k (1 z k z 1 )
H ( z) = k =0
= k =1
N N ec. 3.9
1 + a k z k (1 p k z 1 )
k =1 k =1

donde b0 es una constante de ganancia elegida para normalizar la respuesta en frecuencia a


una frecuencia determinada, de manera que:
H ( 0 ) = 1 ec. 3.10

para la cual 0 es la frecuencia de paso del sistema; y generalmente N se elige de mayor o


igual magnitud que M, evitando as que existan ms polos triviales que ceros.

El mtodo de implementacin consiste en colocar los polos cerca de los puntos de la


circunferencia unidad correspondiente a las frecuencias que desean ser acentuadas, y situar
los ceros cerca de aquellos puntos que se corresponden con frecuencias que desean ser
amortiguadas. Adicionalmente debemos guardar las siguientes consideraciones:
Todos los polos deben de estar en el interior de la circunferencia unidad para que
el filtro sea estable; pero los ceros pueden estar en cualquier punto del plano z.
Todos los polos y ceros complejos deben tener su conjugado correspondiente de
manera que los coeficientes del filtro sean reales.

Haciendo uso de estas propiedades podemos realizar el diseo de algunos filtros


sencillos que respondan bsicamente a la frecuencias de corte deseadas, sin darle relevancia
a los otros factores considerados en filtros de mayor complejidad. A la vez podemos
establecer para cada caso los elementos bsicos del comportamiento de los polos y ceros de
estos sistemas.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 112

Fig. 32 Ejemplo de ubicacin de los polos y ceros en filtros simples

3.4.2 Caractersticas bsicas de los polos y los ceros en los filtros digitales

Filtros pasa bajos


En el diseo de filtros digitales pasa bajo los polos deben situarse cerca de los puntos
de la circunferencia unidad correspondientes a las bajas frecuencias (cercanos a = 0 ),
mientras que los ceros han de situarse cerca de los puntos de la circunferencia unidad
correspondientes a las altas frecuencias (cercanos a = ). La fig. 32 en su parte superior
muestra la colocacin de los polos y ceros para tres filtros pasa bajos bsicos que pueden ser
utilizados como modelos de diseo de filtros sencillos.

La siguiente funcin de transferencia muestra la respuesta en magnitud y fase para


un sistema de un slo polo:
1a
H1 (z) = ec. 3.11
1 az 1

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 113

generalmente se elige la ganancia G igual a 1 - a para obtener ganancia unitaria a una


frecuencia = 0; obtenemos de este filtro ganancias relativamente pequeas para
frecuencias altas.

Otro modelo que puede utilizarse es el que contiene un cero en z=-1, el cual atena
an ms la magnitud de la seales para las altas frecuencias. La funcin de transferencia de
este tipo de filtro es:
1 a 1 + z 1
H 2 (z) = ec. 3.12
2 1 az 1

A partir de estas dos funciones de transferencia y parmetros de magnitud para


ciertas frecuencias especificas podemos encontrar los coeficientes requeridos para la
construccin de un filtro.

Filtro pasa alta


Un filtro pasa alto requiere las condiciones contrarias a las de un filtro pasa bajo, a
cuanto a polos y ceros se refiere. Por lo tanto los ceros deben situarse cerca de los puntos
de la circunferencia unidad correspondientes a las bajas frecuencias (cercanos a = 0 ),
mientras que los polos han de situarse cerca de los puntos de la circunferencia unidad
correspondientes a las altas frecuencias (cercanos a = ).

De esta manera podemos crear un modelo bsico si reflejamos los polos y ceros de la
ec. 3.12 con respecto al eje imaginario del plano z; de forma tal que obtenemos la siguiente
funcin de transferencia:
1 a 1 z 1
H 3 ( z) = ec.3.13
2 1 + az 1

Al igual que en el caso anterior bajo ciertos parmetros de frecuencias de corte


deseada y valores de magnitud para cierta frecuencia en particular es posible obtener los
coeficientes del sistema que llevan a cabo esta labor.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 114

Es comn observar varios mtodos de diseo partir de un filtro pasa bajo modelo y
luego pasarlos a pasa alto utilizando la propiedad de traslacin en frecuencia de la
transformada de Fourier, en la cual se traslada en radianes, es decir de a -.

Filtro pasa banda


Para un filtro pasa banda los requerimientos bsicos son que debe contener uno o
ms pares de polos complejos conjugados cerca de la circunferencia unidad, en la vecindad
de la banda de frecuencias que constituye la banda de paso del filtro.

En esta ocasin nuestro modelo bsico esta dado por la siguiente funcin de
transferencia:
( z 1)( z + 1)
H 4 ( z) = G ec. 3.14
( z jr )( z + jr )

En base a esta ecuacin y ciertos requisitos de frecuencia y de magnitud podemos


calcular los coeficientes requeridos para el diseo del filtro deseado.

Tambin es practica comn construir un filtro pasa alto para la frecuencia de corte
inferior y un filtro pasa bajo para la frecuencia superior, colocndose ambos filtros en
cascada para obtener el efecto de un filtro pasa banda.

Cabe destacar que el objetivo de esta seccin no es el de tener un mtodo de diseo


de filtros digitales, mas bien es el de poseer los conocimientos bsicos del comportamiento
de los polos y ceros en la funcin de transferencia que permite el comportamiento de estos
sistemas en el dominio de la frecuencia a partir de la colocacin de sus polos y ceros.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 115

33..55 FFIIL
LTTR
ROOSS D
DEER
REESSPPU
UEESST
TAA FFIIN
NIIT
TAA ((FFIIR
R))

Los filtros FIR, tambin conocidos como Filtros Transversales (Transversal Filters)
o como Sistemas de Average Mvil (Moving Average Systems {MA}), son los filtros ms
sencillos de disear e implementar.

El proceso de filtrado se realiza por medio de la convolucin de la seal de entrada,


con la respuesta al impulso del filtro, la respuesta que se produce al impulso es un nmero
finito de coeficientes, por lo cual es llamado "Filtro de Respuesta Finita".

La funcin de transferencia de los filtros FIR esta dada por ec. 3.15, como se puede
observar este filtro slo cuenta con ceros y ningn polo, lo que nos garantiza la estabilidad
del mismo.
N -1
H(z) = b
n= 0
n z
-n
ec. 3.15

3.5.1 Diseo de filtros FIR utilizando el mtodo de ventanas

El procedimiento de diseo de los filtros FIR utilizado comnmente es el mtodo de


ventanas. Este proceso se cimienta en el concepto de la convolucin de la seal de entrada
con la respuesta al impulso del filtro.

Como primer paso debemos obtener los coeficientes del filtro ideal (hd(n)), y
multiplicarlos o ponderarlos por el valor de una funcin que se le conoce como ventana
(w(n)); como se muestra en la siguiente ecuacin

h(n) = hd (n)w(n) para - N/2 n N/2 ec.3.16

. Al resultado de esta operacin se le conocen como coeficientes del filtro (h(n)), los
cuales realizan el proceso de convolucin con la seal de entrada para el proceso de filtrado.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 116

pasabajo pasaalto

Pasa banda Rechaza banda

Diferenciador

Transformada
Hilbert

Fig. 33 Respuesta en frecuencia al impulso unitario de los filtros ideales mas utilizados

3.5.1.1 Coeficientes de los filtros ideales para una entrada impulso unitario
Como primer paso se deben conocer las respuesta al impulso unitario del filtro ideal
en el dominio de la frecuencia para todo el intervalo de Nyquist (- ); por ejemplo
en un filtro paso bajo ideal para toda frecuencia entre c < < -c su respuesta es 1 y para
- < -c o c < es igual a 0, como se muestra en la fig. 3.4. Luego utilizando la
expresin siguiente:



d
D( w ) = d ( k ) e j k d ( k ) =
k =
D( w )e
j k

2
ec. 3.17

dada por la DFT como resultado de un sistema lineal invariable en el tiempo a un impulso
unitario para el dominio de la frecuencia.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 117

Como es conocido ya la respuesta en frecuencia del sistema, D(), es posible


obtener los resultados de los coeficientes d(k) al resolver la integral. Por tanto los valores
de d(k) son los coeficientes hd(n) de la ec. 3.16 (recordemos la propiedad de linealidad que
poseen estos sistemas).

En la tabla 8 hemos colocado los coeficientes de la respuesta al impulso unitario de


los filtros ideales de mayor uso (mostrados en la fig. 33).

En esta tabla hemos aadido algunos filtros que no hemos discutido con
anterioridad; sin embargo, de un uso frecuente en el procesamiento de seales. Por ejemplo,
el transformador de Hilbert, llamado as por cumplir con la propiedad de darnos una
respuesta en fase lineal (por tanto un atraso de grupo constante), tiene una respuesta de
frecuencia H(w) = -j sign(w). Mientras que el diferenciador tiene una respuesta de
frecuencia H(w) = jw, definida en todo el intervalo de Nyquist.

3.5.1.2 Qu Son Las Ventanas y para que se utilizan?

Podemos ver una ventana como aquel elemento encargado de truncar la seal que se
desea procesar. Existen diversas ventanas y dependiendo de la escogida muchos de los
parmetros de los filtros, ancho de banda de transicin, nmeros de coeficientes, rizado en la
banda de rechazo, etc., pueden variar de gran manera.

Desde un punto de vista electrnico, las ventanas nos sirven para suavizar el paso
entre los primeros coeficientes del filtro (ambos extremos) y cero, como sabemos cualquier
paso abrupto crea distorsiones armnicas. Matemticamente hablando las ventanas nos
sirven para convolucionar el espectro del filtro con el espectro de una seal mejor que la del
sin(x)/(x) (espectro de ventana rectangular).

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 118

Nombre Del Filtro Coeficientes Del Filtro


sin (n c )
hd (n) = para n 0
n
FILTRO PASA BAJOS

c
hd (0) = para n = 0

sin (n c )
hd (n) = - para n 0
n
FITRO PASA ALTOS

c
hd (0) = 1 - para n = 0

sin (n c2 ) - sin (n c1 )
hd (n) = para n 0
n

FILTRO PASA BANDA

c2 - c1
hd (0) = para n = 0

sin (n c2 ) - sin (n c1 )
hd (n) = - para n 0
n

FILTRO RECHAZA BANDA

c2 - c1
hd (0) = 1 - para n = 0

cos(n ) sin (n )
hd (n) = - para n 0
n k2
DIFERENCIADOR

hd (0) = 0 para n = 0
1 - cos(n )
h d (n) = para n 0
n
TRANSFORMADA
HILBERT

hd (0) = 0 para n = 0

Tabla 8. Coeficientes de la respuesta al impulso unitario de filtros ideales

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 119

Las ventanas restringen a un nmero finito las respuestas en el tiempo del filtro, de
forma que:

d
D( w )e
j k
d (k ) = , para - M k M ec. 3.18

2

el nmero total de coeficientes por lo tanto es un nmero impar igual a N = 2M + 1,


pudiendo ser los coeficientes positivos o negativos.

Recordemos que la convolucin de Hd() con W() es equivalente a la


multiplicacin de hd(n) con w(n) por tanto, el conocer el valor de los coeficientes de la
ventana es de vital importancia para obtener nuestro filtro FIR. En la tabla 9 observamos
los valores de los coeficientes de ventanas comunes usadas para el diseo de sistemas FIR.

Generalmente la ventana rectangular es utilizada como elemento didctico para


iniciar al nefito en el estudio de diseo de filtros FIR por medio de ventanas; sin embargo,
aunque esta presente una estrecha banda de transicin; diversos efectos como el fenmeno
Gibbs (comportamiento oscilatorio en el limite de la banda de paso) y su baja atenuacin, la
hacen poco prctica para distintas aplicaciones. Por tal motivo se hacen uso de otros tipos
de ventanas. La fig. 34 nos muestra las formas de las funciones de ventana mencionadas
en la tabla 9.

Nombre de la Ventana Funcin Muestreada


Rectangular w(n) = 1

2n
w(n) = 0.5 + 0.5 cos( )
Hanning N

Hamming 2n
w(n) = 0.54 + 0.46 cos( )
N
Blackman 2n 4n
w(n) = 0.42 + 0.5 cos( )+ 0.08 cos( )
N N

Tabla 9

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 120

En la tabla 10 se muestra un cuadro comparativo de las diversas caractersticas del


filtro utilizando los tipos de ventanas listados en la tabla 9, de esta manera podemos escoger
la ventana que mejor se aplique a las condiciones requeridas por el sistema.

Tipo de Transicin Rizo Relacin Atenuacin


Ventana (Hz) (db) (db) (db)

Rectangular 0.9/N 0.7416 13 21

Hanning 3.1/N 0.0546 31 44

Hamming 3.3/N 0.0194 41 53

Blackman 5.5/N 0.0017 57 74

Tabla 10

0.9

0.8
Hanning Rectangular

0.7

0.6
Magnitud
Magnitud

0.5

0.4
Blackman

0.3

0.2
Hamming

0.1

0
0 10 20 30 40 50 60

Eje de tiempo N-1

Fig. 34 Formas de varias funciones utilizadas como ventanas (N=65)

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 121

Por tanto el problema de diseo de los filtros FIR queda reducido a escoger el tipo de
ventana a utilizar en el proceso de truncamiento y la cantidad de coeficientes que el filtro va
a tener. Es de tomar en cuenta que diversas ventanas vistas proporcionan un mayor
suavizado en la convolucin que la ventana rectangular, sin embargo agrandan la banda de
transicin para una misma cantidad de coeficientes.

3.5.1.3 Programa De Diseo


Para la construccin de algn filtro FIR utilizando algn medio software se nos
facilita el trabajo si utilizamos un programa que nos calcule los coeficientes del filtro, segn
la cantidad de coeficientes deseados y la ventana a emplear. El programa de diseo de
filtros FIRFP.EXE nos brinda estas facilidades, este fue escrito por el Ing. Ricardo
Lambrao y compilado con el Compilador de C de Microsoft Versin 6.00.

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

Cuadro de dialogo con el usuario del programa firfp.exe

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 122

El programa pregunta que tipo de filtro o funcin desea calcular, el nmero de


puntos, tipo de ventana, frecuencia de muestreo y frecuencias de corte en caso de ser un
filtro lo seleccionado. El dialogo interactivo con el usuario lo hace de fcil manejo. En el
diagrama anterior podemos observar el cuadro de dialogo que se produce con el usuario, en
el mismo se ha escogido realizar el clculo para un filtro pasa bajos, con una fs = 48 KHz,
una fc = 1.2 KHz, con 125 coeficientes y un tipo de ventana HAMMING.

La salida del programa es un archivo llamado COEF.DAT, este archivo tiene los
coeficientes en formato de punto flotante y como comentarios, separados por "//", las
especificaciones del filtro as como los valores de los coeficientes. La salida de los
coeficientes del filtro bajo este formato tiene como propsito el utilizar posteriormente como
base de datos para la construccin del filtro va software. El cdigo fuente del programa lo
puede encontrar en el apndice C.

3.5.1.4 Programa De Implementacin


Por medio de la tarjeta ADSP-21061 se ha implementado este tipo de filtro con
mucho xito. Aqu solo nos remitiremos a explicar brevemente las partes esenciales del
listado que hace posible este filtrado; sin embargo si desea ver el programa completo este se
encuentra en el apndice D. Este lenguaje 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 mismo puede remitirse al apndice B.

/************************************************************************
*
* Segmento de Data en memoria de Data (Para Variables!)
*
************************************************************************/
#define TAPS 511
.segment /dm seg_dmda;

.var ON_OFF = 0; // Bandera del ByPass


.var Z1; // Elemento de Retardo para Canal Derecho

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 123

.var DATA[TAPS]; // Linea de Retardo


.endseg;
...........

En esta primera seccin hemos declarado las variables TAPS, que corresponden al
tamao de los coeficientes de los filtros. Tambin hemos inicializado las variables de
ON_OFF, utilizada como bandera de activacin del filtro; la variable Z1, para el retardo del
canal derecho; y la variable DATA que tiene como longitud el valor de TAPS, la cual ser
utilizada para almacenar las muestras de la seal a filtrar. Todo esto ha sido almacenado en
la memoria de la data. Para inicializar el espacio del programa que describir los elementos
que van en la memoria de data se coloca la instruccin .segment /dm seg_dmda ; y para
cerrar este ciclo se coloca la instruccin .endseg .

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

.segment /pm seg_pmda;


.var COEFS[TAPS] = "COEF.DAT"; // Coeficientes del Filtro
.endseg;
.............

Aqu hemos inicializado el buffer que almacenara los coeficientes del filtro digital.
En esta ocasin el mismo se encuentra en el espacio en memoria de programa. La bondad
que tiene poder colocar distintos variables en diferentes espacios de memoria es que el
procesador tiene la versatilidad de leer ambos conjuntos espacios de memoria al mismo
tiempo. Esto permite realizar hasta cierto limite dos instrucciones en un slo ciclo de reloj.

Los comandos de inicio y cierre de descripcin del ciclo de espacio para memoria de
programa son similares a los usados para la memoria de data.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 124

/***********************************************************************
* Segmento de Cdigo en memoria de Programa
************************************************************************/

.segment /pm seg_pmco;


...
...
....
b0=DATA; m0=1; l0=@DATA;
b8=COEFS; m8=1; l8=@COEFS;
........
........

En la seccin de cdigo en la memoria de programa se han definido los registros b0


se colocan al inicio del buffer que almacena a las variables data; similarmente el registro b8
se coloco al inicio (base) del buffer que almacena las variables COEFS. Tanto el registro
m0 y m8 tienen como valor 1 y representan el ndice con que avanzara el buffer circular;
mientras que los registros l0 e l8 tienen una longitud igual al tamao de DATA y COEFS,
respectivamente.

Podemos entender un buffer circular como un espacio en memoria en el que su base


(localidad de memoria donde se comienza a almacenar la informacin) no es constante, mas
bien es indicado por un ndice el cul generalmente regresa a su punto de partida. Podemos
visualizar un buffer circular como una ruleta de nmeros, la cul tiene capacidad para
almacenar variables, pero su posicin en cuanto a un punto de referencia va variando;
aunque para el caso del buffer circular este movimiento con relacin a direccionamiento es
generalmente constante. Este tipo de buffer es utilizado por su prctico desempeo en el
procesado de seales y su fcil programacin.

/************************************************************************
* Rutina de Interrupcin del CODEC. Aqu se procesan las muestras
* recibidas por el ADC y se escriben los resultados al DAC.
*
************************************************************************/

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 125

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; // Conversin a punto flotante


f2 = float r2; // Conversin a punto flotante

r0 = pass r0; // Encender banderas segn 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
esta 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.

f12 = f12 - f12, dm(i0,m0)=f1; // F12 = 0, Almacenar x(n)


f8 = f8 - f8, f0 = dm(i0,m0), f4=pm(i8,m8); // F8 = 0, Leer (N-M)
// y H(M)

lcntr=TAPS-1, do fir until lce; // Repetir TAPS-1 Veces


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

f12 = f0*f4, f8=f8+f12; // Realizar ultima multiplicacin


f1=f8+f12; // Realizar ultima suma

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 126

Durante esta seccin se realiza el filtrado de la seal. Como primera instruccin


almacenamos x(n) en el buffer circular que se encuentra en la localidad de memoria de data
que esta dedicado a almacenar la data de entrada; al mismo tiempo limpiamos el valor
anterior de f12. Antes de comenzar el proceso de truncado y la suma recursiva
caracterstica del sistema FIR, limpiamos el registro f8, y cargamos a f4 y a f0 con los
primeros coeficientes y datos de entrada, respectivamente.

A continuacin utilizando el comando lcntr comenzamos un ciclo repetitivo (especie


de un ciclo for en C ); el cual realizara las siguientes operaciones TAPS-1 veces:
Realizar la suma recursiva de valores que producirn la respuesta final del FIR.
Ponderar la seal de entrada utilizando los coeficientes.
Leer los valores de los coeficientes almacenados en el buffer localizado en la memoria
de programas y los valores anteriores de x(n) (x(n-m)), para tenerlos preparados para
poder ejecutar los pasos anteriores.
Todo esto se realizara con la lneas de instrucciones denotada por la etiqueta fir.

Por medio de f12 = f0*f4, f8=f8+f12 realizamos la penltima suma del proceso
recursivo y ponderamos la ultima seal del proceso; que se ve culminado con la ltima suma
efectuada con la instruccin f1=f8+f12, y almacenada en el registro f1.

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; // Conversin a punto fijo
r2 = trunc f2; // Conversin a punto fijo
r0 = dm(Z1); // Retardo en Canal Derecho
dm(Z1) = r2; // aun sin resolver la razn!
// Escritura de CODEC (DACs)
dm(tx_buf + 1) = r1; // DAC Canal Izquierdo
dm(tx_buf + 2) = r0; // DAC Canal Derecho

rti; // Retornar de Interrupcin

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 127

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. Como conocemos una seal ser muestreada cuantas veces indique la
frecuencia de muestreo(fs); por tanto habr una interrupcin cada 1/fs seg. Como durante
este tiempo es el que se realiza el procesado de la seal, la cantidad de instrucciones por
ciclo de repeticin estarn limitadas a la velocidad del reloj y la frecuencia de muestreo de la
seal. Es as que si la velocidad de muestreo es 48 KHz y la velocidad del reloj es de
40 MHZ habr un mximo de 833 (40 MHz / 48 KHz) instrucciones por ciclo de muestreo
que podrn ejecutarse.

Como hemos visto el procesado de la seal queda determinado fuertemente por la


cantidad de instrucciones que se pueden ejecutar por ciclo de muestreo, lo cual restringe
muchas veces el uso eficaz de los filtros FIR. Sin embargo, stos siguen siendo tiles en
muchos procesos en los cuales el tamao del filtro no es lo primordial, sino la seguridad de
la estabilidad, como en el caso del filtrado adaptativo.

3.5.2 Otros tipos de diseo de filtros FIR


El motivo principal de esta seccin es enunciar los principios generales de otros
mtodos para el diseo de filtros FIR. Aunque no nos adentramos al procedimiento en si
del mismo, debido a que los programas desarrollados y utilizados para este trabajo se

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 128

basaron en el diseo por el mtodo de ventanas. Sin embargo, nos sirven de orientacin
para el desarrollo de nuevas herramientas bajo otros conceptos.

Entre los mtodos de diseo de sistemas FIR tenemos:


Diseo de FIR utilizando el mtodo de muestreo en frecuencia:
En este mtodo de diseo especificamos la respuesta en frecuencia deseada Hd() en
un conjunto de frecuencias equiespaciadas; para luego calcular la respuesta impusional h(n)
del filtro a partir de estas especificaciones en frecuencias equiespaciadas. El espaciamiento
entre frecuencias responde a la relacin:

M 1 M impar
2 k = 0,1,.........,
k = (k + ) 2 ec. 3.19
M M
k = 0,1,........., 1 M par
2 =0

Con este procedimiento podemos reducir las oscilaciones laterales optimizando la


especificacin en frecuencia de la banda de transicin. Generalmente esta optimizacin es
realizada por medio de tcnicas de programacin lineal utilizndose un procesador digital.
La principal ventaja que reside en la utilizacin de este mtodo es el uso eficiente del
muestreo en frecuencia que se puede obtener cuando la mayora de las muestras en
frecuencia son cero.

Diseo de filtros inversos FIR de mnimos cuadrados(Wiener):


Un mtodo optativo para disear un filtro FIR inverso es el de mnimos cuadrados.
Bsicamente el inverso de un sistema lineal e invariante en el tiempo con respuesta
impusional h(n) y funcin de transferencia H(z) se define como el sistema cuya respuesta
impusional h1(n) y funcin de transferencia H1(z) , satisfacen las siguientes ecuaciones:
h( n) * h1 ( n) = ( n) ec. 3.20
H ( z) H 1 ( z ) = 1 ec. 3. 21

generalmente este tipo de sistema son IIR. Sin embargo, si H(z) es un sistema constituido
por slo polos H1(z) es FIR.

Captulo III
Trabajo de Graduacin
Francisco J. Garca Castillo 129

Resulta prctico para muchas aplicaciones que el filtro a utilizar sea FIR; y
generalmente para lograr este propsito se trunca h1(n). Al realizar el proceso de truncado
introducimos un error cuadrtico total igual a:


t = h
n= M +1
2
1 ( n) ec. 3.22

donde M+1 es la longitud del filtro truncado y t representa la energa de la cola de la


respuesta impusional h1(n). Luego podemos utilizar el criterio de error de mnimos
cuadrados para optimizar los M+1 coeficientes del filtro FIR.

Empleando este proceso de optimizacin se obtiene un sistema de ecuaciones entre


los parmetros de entrada al filtro y sus autocorrelaciones. Este sistema de ecuaciones nos
brinda la herramienta para hallar los coeficientes del filtro que las satisfaga. A los filtros
que cumplan estas condiciones se les conoce como filtro de Wiener, debido al matemtico
Robert Wiener que introdujo a la ingeniera los mtodos de filtrado ptimo mediante
mnimos cuadrados.

Captulo III