trabajo de graduación francisco j. garcía castillo 101 · frecuencias se encuentran confinadas en...
TRANSCRIPT
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
101
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
102
CCCAAAPPPIIITTTUUULLLOOO IIIIIIIII
FFFIIILLLTTTRRRAAADDDOOO DDDEEE SSSEEEÑÑÑAAALLLEEESSS
333...111 IIINNNTTTRRROOODDDUUUCCCCCCIIIOOONNN
El termino filtro es utilizado para describir un dispositivo que discrimina, parcial o
totalmente, a aquello que lo atraviesa, según algún atributo de los objetos que se aplican a
su entrada. Así tenemos como ejemplo que hablamos de filtros de agua, que eliminan
partículas del agua destinada a algún uso; filtros de aceite, que recogen la suciedad del
aceite; por mencionar algunos.
En cuanto al tratamiento de señales, un filtro es un sistema diseñado para obtener
una característica de transferencia deseada; de manera que opera sobre señales 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 obtención de las funciones de transferencia requeridas era muy laborioso y
muchas veces no brindan el resultado esperado. Luego con la aparición de los elementos
semiconductores se crean los filtros activos análogos, éstos popularizados sobre todo por el
uso muy efectivo de los OPA’s para la confección de los mismos. Debido a esto se
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
103
desarrollaron nuevos tipos de filtros y se estudiaron más a fondo sus propiedades. Sin
embargo estos tipos de filtros solo eran eficaces hasta cierto limites de frecuencia, aunado al
cálculo para ciertas funciones de transferencia y la calibración tediosa, lo cual exigió el
desarrollo de otra herramienta aun más eficaz. Así nacen los filtros digitales que mediante
hardware y software han dado la solución apropiada para muchas implementaciones de
sistema en la actualidad.
Como ya conocemos los sistemas lineales e invariantes en el tiempo realizan un tipo
de discriminación o filtrado de diferentes componentes de frecuencia de entrada.
Básicamente esta acción se debe a las características de respuesta en frecuencia del sistema,
que a su vez depende en gran medida de los parámetros del sistema.
De manera general un sistema lineal e invariante en el tiempo ( H(ωω)) modifica el
espectro de la señal de entrada ( X(ωω)) según la respuesta en frecuencia del sistema, lo que
da lugar a una señal de salida con el espectro determinado por el sistema que atraviesa
(Y(ωω) = H(ωω)X(ωω)). Por tal motivo cualquier sistema lineal e invariante en el tiempo puede
ser visto como un filtro de conformación espectral. Bajo este contexto el diseño de filtros
digitales que respondieran a los parámetros deseados de un sistema determinado por los
coeficientes de los mismos, resultó muy viable tanto para hardware como para software.
El objetivo de este capítulo es dar un vistazo general a los filtros digitales más
comunes, sus propiedades y diseño general de los mismos; haciendo énfasis en las
herramientas software que hicieron posible su implementación.
333...222 PPPAAARRRAAAMMMEEETTTRRROOOSSS DDDEEE LLLOOOSSS FFFIIILLLTTTRRROOOSSS
Para la descripción de los parámetros de respuesta de un filtro utilizaremos un filtro
pasa bajo (llamado así por solo permitir el paso de señales con frecuencias por debajo de una
frecuencia limite) que se muestra en la fig. 30. Estos parámetros son utilizados como
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
104
herramienta de comparación para la elección del tipo de filtro a utilizar. Estos parámetros
son:
• Frecuencia de corte: es la frecuencia para la cual el sistema comienza a atenuar la
señal de entrada, en la figura se denota por ωc.
• Frecuencia de rechazo: es la frecuencia donde se considera que el sistema atenuara
la señal de entrada al máximo(ωr), lo cual dará un efecto de ausencia de señal de
entrada.
• Banda de paso: es aquel rango de frecuencias en que el sistema permite el paso de
la señal de entrada sin atenuarla.
• Banda de rechazo: es el rango de frecuencias en el que la señal de entrada será
atenuada al máximo por el sistema.
• Banda de transición: es el rango de frecuencias que existe entre la atenuación
minina (banda de paso) y la máxima atenuación(banda de rechazo) de la señal de
salida provocado por el sistema.
Fig. 30 Parámetros de la respuesta en frecuencia de los filtros
1+δδ1
1-δδ1
Rizado en la banda de paso
Banda de
Transición
Banda de
rechazo
ππωω
ωωc ωωr00
δδ2
|H(ω)ω)|
δδ1 - Rizado en la banda de paso
δδ2 - Rizado en la banda de rechazo
ωωc - Frecuencia de corte
ωωr - Frecuencia de rechazo
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
105
• Rizado en la banda de paso: es el rizado que suele ocurrir con relación a la amplitud
máxima 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 práctica común que los gráficos de respuesta en frecuencia de cualquier filtro
estén 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 parámetros comunes dados para el diseño de filtros y en base a ellos se
han desarrollado métodos que permitan la obtención de los coeficientes que cumplan lo
mejor posible estas condiciones. De igual manera nos sirven de herramienta para saber que
método de análisis se debe emplear y finalmente qué tipo de filtro diseñar.
Estos filtros son considerados ideales cuando sus parámetros 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 transición.
• 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 través de un filtro con
respuesta en frecuencia
==−−
0)(
0njCeH
ω
ω
donde C y n0 son constantes. Por ende la señal de salida tienen el siguiente espectro:
,ωω1< ωω <ωω2
, en caso contrarioec. 3.1
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
106
0)()()()( njeCXHXY ωωωωω −−====
La cual pasada al dominio del tiempo nos da por resultado:
)()( 0nnxny −−==
Como observamos la salida del filtro es simplemente una versión retardada y la
escala en amplitud de la señal de entrada. Se considera que no hay distorsión de la señal si
el retardo es puro al igual que el escalamiento en amplitud. Por tal motivo la respuesta de
este sistema en fase responde a:
0)( nωωθ −−==
por su propiedad lineal se le conoce como fase lineal y los filtros ideales guardan esta
característica. La derivada de la fase con respecto a la frecuencia tiene unidades de retardo,
por lo que se define el retardo de la señal en función de la frecuencia como:
ωωθωτ
dd
g
)()( −−==
a τg(ω) se le denomina retardo de envolvente o retardo de grupo del filtro; entendiéndose
τ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
idealización matemática nos permite tener un punto de referencia acerca del
comportamiento requerido en le diseño de los filtros prácticos.
,ωω1< ωω <ωω2 ec. 3.2
ec. 3.3
ec. 3.4
ec. 3.5
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
107
333...333 FFFIIILLLTTTRRROOOSSS CCCLLLÁÁÁSSSIIICCCOOOSSS
En la presente sección daremos una breve descripción de los filtros más comunes
para el tratamiento de la información. Esta clasificación se basa muchas veces en las
características discutidas anteriormente y exploradas en el mundo de diseño de filtros
activos análogos, ya que algunos métodos de diseño de filtros digitales parten de su
equivalente análogo.
Como primer paso a continuación describiremos los cuatro filtros generales:
• Filtro pasa bajo
Es aquel filtro que deja pasar señales o componentes de las mismas cuya frecuencia
este por debajo de la frecuencia de paso, sin provocarles atenuación (fig. 31a).
• Filtro pasa altas
Este sistema permite, sin atenuación, el paso de señales 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 sólo permite el paso sin atenuación de señales cuyas frecuencias se encuentren
entre los limites definidos por éstas frecuencias.
• Filtro rechaza banda
También 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 señales de entrada cuyas frecuencias queden dentro del rango delimitado por
estas frecuencias serán atenuadas parcial o totalmente (fig. 31d).
Como dijimos anteriormente existen otros tipos de filtros que su clasificación
responde grandemente a los parámetros tratados en la sección anterior. La realización de
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
108
los mismos va ligado al entendimiento de la función de transferencia general de un filtro. A
continuación mostramos su forma estandar:
)(1
1)(
22
2
ωω
nSejH
++== ec. 3.6
En esta ecuación, Sn(ω) es un polinomio de orden n y e está relacionado con el rizo
en la banda de paso.
• Filtros Butterworth
También son conocidos como filtros de magnitud máximamente plana (MMP),
debido a que su función de transferencia se elige de tal forma que la curva de la respuesta
en magnitud sea lo más plana posible dentro de la banda de paso del filtro. Esto es
Fig. 31 Respuesta en frecuencia de los filtros más utilizados
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
109
posible haciendo iguales a cero en el centro tantas derivadas de la función 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 función de transferencia de orden n está dada como:
njH
2
2
1
1)(
ωω
+= ec. 3.7
A medida que aumenta el orden del filtro (aumenta n) el rizado en la banda de paso
es menor, pero la caída en la banda de transición se hace más pronunciada.
• Filtros Chebyshev
El filtro Chebyshev presentan un rizo en la banda de paso, y tienen una caída más
pronunciada que los filtros Butterworth; es decir su banda de transición es más angosta.
Para un orden dado, las características de ambos filtros tienen la misma pendiente asintótica.
La magnitud de la función de transferencia para este tipo de filtro es:
)(1
1)(
22
2
ωξω
nCjH
+= ec. 3.8
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
máximos y mínimos de la respuesta en la banda de paso.
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
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.
333...444 CCCOOONNNCCCEEEPPPTTTOOOSSS BBBÁÁÁSSSIIICCCOOOSSS DDDEEE FFFIIILLLTTTRRROOOSSS DDDIIIGGGIIITTTAAALLLEEESSS
Como hemos discutido anteriormente el proceso de filtrado también puede realizarse
mediante sistemas digitales, pero en vez de trabajar con señales continuas, funcionan con
señales digitales. Por tanto el proceso de conversión análoga – digital ( y digital – análoga,
si se requiere) estará presente en el procesamiento de la señal. Esto acarrea nuevas
posibilidades al momento de diseñar distintos filtros, pero involucra también nuevos
parámetros al momento del diseño de sistemas.
A continuación damos una descripción general de los tipos de filtros más usados,
algunos parámetros de diseño y sus características más comunes. Aprovechamos a la vez
para introducir algunos programas en C que nos ayudan a calcular los coeficientes del
sistema a utilizar; y también la estructura básica del programa en lenguaje ensamblador de la
tarjeta ADSP21061, que es utilizado para la implementación de filtros digitales.
3.4.1 Consideraciones Generales En El Diseño De Filtros
En esta sección nos dedicaremos a enunciar sobre cómo la posición de los polos y
ceros de la función de transferencia de un sistema discreto afectan a la respuesta en
frecuencia de un sistema. Con este conocimiento podremos elaborar técnicas para el
diseño de filtros tomando en cuenta la estructura general del sistema y cuidando a la vez su
estabilidad. Aprovechándonos de esto definiremos un método sencillo de diseño de filtros
digitales básicos con ciertas características de frecuencias deseadas.
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
111
Como base de nuestros enunciados debemos partir de la función de transferencia
general de un filtro:
∏∏
∏∏
∑∑
∑∑
==
−−
==
−−
==
−−
==
−−
−−
−−==
++==
N
kk
M
kk
N
k
kk
M
k
kk
zp
zz
za
zbzH
1
1
1
1
1
0
)1(
)1(
1)(
donde b0 es una constante de ganancia elegida para normalizar la respuesta en frecuencia a
una frecuencia determinada, de manera que:
1)( 0 ==ωH
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 más polos triviales que ceros.
El método de implementación 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 diseño de algunos filtros
sencillos que respondan básicamente 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 básicos del comportamiento de los polos y ceros de
estos sistemas.
ec. 3.9
ec. 3.10
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
112
3.4.2 Características básicas de los polos y los ceros en los filtros digitales
Filtros pasa bajos
En el diseño 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 colocación de los polos y ceros para tres filtros pasa bajos básicos que pueden ser
utilizados como modelos de diseño de filtros sencillos.
La siguiente función de transferencia muestra la respuesta en magnitud y fase para
un sistema de un sólo polo:
11 11
)(−−−−
−−==
aza
zH ec. 3.11
Fig. 32 Ejemplo de ubicación de los polos y ceros en filtros simples
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
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 pequeñas para
frecuencias altas.
Otro modelo que puede utilizarse es el que contiene un cero en z=-1, el cual atenúa
aún más la magnitud de la señales para las altas frecuencias. La función de transferencia de
este tipo de filtro es:
1
1
2 1
12
1)(
−−
−−
−−++−−
==az
zazH ec. 3.12
A partir de estas dos funciones de transferencia y parámetros de magnitud para
ciertas frecuencias especificas podemos encontrar los coeficientes requeridos para la
construcción 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 básico 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
función de transferencia:
1
1
31
1
2
1)( −
−
+−−
=az
zazH ec.3.13
Al igual que en el caso anterior bajo ciertos parámetros 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.
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
114
Es común observar varios métodos de diseño partir de un filtro pasa bajo modelo y
luego pasarlos a pasa alto utilizando la propiedad de traslación 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 básicos son que debe contener uno o
más 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 ocasión nuestro modelo básico esta dado por la siguiente función de
transferencia:
))((
)1)(1()(4 jrzjrz
zzGzH
+−+−
= ec. 3.14
En base a esta ecuación y ciertos requisitos de frecuencia y de magnitud podemos
calcular los coeficientes requeridos para el diseño del filtro deseado.
También es practica común construir un filtro pasa alto para la frecuencia de corte
inferior y un filtro pasa bajo para la frecuencia superior, colocándose ambos filtros en
cascada para obtener el efecto de un filtro pasa banda.
Cabe destacar que el objetivo de esta sección no es el de tener un método de diseño
de filtros digitales, mas bien es el de poseer los conocimientos básicos del comportamiento
de los polos y ceros en la función de transferencia que permite el comportamiento de estos
sistemas en el dominio de la frecuencia a partir de la colocación de sus polos y ceros.
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
115
333...555 FFFIIILLLTTTRRROOOSSS DDDEEE RRREEESSSPPPUUUEEESSSTTTAAA FFFIIINNNIIITTTAAA (((FFFIIIRRR)))
Los filtros FIR, también conocidos como Filtros Transversales (Transversal Filters)
o como Sistemas de Average Móvil (Moving Average Systems {MA}), son los filtros más
sencillos de diseñar e implementar.
El proceso de filtrado se realiza por medio de la convolución de la señal de entrada,
con la respuesta al impulso del filtro, la respuesta que se produce al impulso es un número
finito de coeficientes, por lo cual es llamado "Filtro de Respuesta Finita".
La función de transferencia de los filtros FIR esta dada por ec. 3.15, como se puede
observar este filtro sólo cuenta con ceros y ningún polo, lo que nos garantiza la estabilidad
del mismo.
zb=H(z) n-n
1-N
0=n∑
3.5.1 Diseño de filtros FIR utilizando el método de ventanas
El procedimiento de diseño de los filtros FIR utilizado comúnmente es el método de
ventanas. Este proceso se cimienta en el concepto de la convolución de la señal 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 función que se le conoce como ventana
(w(n)); como se muestra en la siguiente ecuación
N/2nN/2- para (n)w(n)h=h(n) d ≤≤ ec.3.16
. Al resultado de esta operación se le conocen como coeficientes del filtro (h(n)), los
cuales realizan el proceso de convolución con la señal de entrada para el proceso de filtrado.
ec. 3.15
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
116
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
expresión siguiente:
∑∑∞∞
−∞−∞==
−−==k
kjekdwD ω)()( ⇔⇔ ∫∫−−
−−==π
π
ω
πω
2)()(
dewDkd kj 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.
Fig. 33 Respuesta en frecuencia al impulso unitario de los filtros ideales mas utilizados
pasabajo pasaalto
Pasa banda Rechaza banda
Diferenciador
TransformadaHilbert
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
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 añadido algunos filtros que no hemos discutido con
anterioridad; sin embargo, de un uso frecuente en el procesamiento de señales. 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 señal que se
desea procesar. Existen diversas ventanas y dependiendo de la escogida muchos de los
parámetros de los filtros, ancho de banda de transición, números de coeficientes, rizado en la
banda de rechazo, etc., pueden variar de gran manera.
Desde un punto de vista electrónico, 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 armónicas. Matemáticamente hablando las ventanas nos
sirven para convolucionar el espectro del filtro con el espectro de una señal mejor que la del
sin(x)/(x) (espectro de ventana rectangular).
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
118
Nombre Del Filtro Coeficientes Del Filtro
FILTRO PASA BAJOS
0=n para =(0)h
0n para n
)(n=(n)h
cd
cd
πω
πω ≠
sin
FITRO PASA ALTOS
0=n para -1=(0)h
0n para n
)(n-=(n)h
cd
cd
πω
πω ≠
sin
FILTRO PASA BANDA
0=n para -
=(0)h
0n para n
)(n-)(n=(n)h
c1c2d
c1c2d
πωω
πωω ≠
sinsin
FILTRO RECHAZA BANDA
0=n para -
-1=(0)h
0n para n
)(n-)(n-=(n)h
c1c2d
c1c2d
πωω
πωω ≠
sinsin
DIFERENCIADOR
0=n para 0=(0)h
0n para k
)(n-
n)(n
=(n)h
d
2d ≠π
ππ sincos
TRANSFORMADAHILBERT
0=n para 0=(0)h
0n para n
)(n-1=(n)h
d
d ≠π
πcos
Tabla 8. Coeficientes de la respuesta al impulso unitario de filtros ideales
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
119
Las ventanas restringen a un número finito las respuestas en el tiempo del filtro, de
forma que:
∫∫−−
−−==π
π
ω
πω
2)()(
dewDkd kj , para - M ≤ k ≤ M ec. 3.18
el número total de coeficientes por lo tanto es un número impar igual a N = 2M + 1,
pudiendo ser los coeficientes positivos o negativos.
Recordemos que la convolución de Hd(ω) con W(ω) es equivalente a la
multiplicación 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 diseño de sistemas FIR.
Generalmente la ventana rectangular es utilizada como elemento didáctico para
iniciar al neófito en el estudio de diseño de filtros FIR por medio de ventanas; sin embargo,
aunque esta presente una estrecha banda de transición; diversos efectos como el fenómeno
Gibbs (comportamiento oscilatorio en el limite de la banda de paso) y su baja atenuación, la
hacen poco práctica 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 Función Muestreada
Rectangular 1=w(n)
Hanning)
Nn2
(0.5+0.5=w(n)π
cos
Hamming)
Nn2
(0.46+0.54=w(n)π
cos
Blackman)
Nn4
(0.08+)N
n2(0.5+0.42=w(n)
ππcoscos
Tabla 9
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
120
En la tabla 10 se muestra un cuadro comparativo de las diversas características 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
Ventana
Transición
(Hz)
Rizo
(db)
Relación
(db)
Atenuación
(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 10 20 30 40 50 600
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Mag
nitu
d
Rectangular
Blackman
Hamming
Hanning
Mag
nitu
d
Eje de tiempo N-1
Fig. 34 Formas de varias funciones utilizadas como ventanas (N=65)
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
121
Por tanto el problema de diseño 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 convolución que la ventana rectangular, sin embargo agrandan la banda de
transición para una misma cantidad de coeficientes.
3.5.1.3 Programa De Diseño
Para la construcción de algún filtro FIR utilizando algún medio software se nos
facilita el trabajo si utilizamos un programa que nos calcule los coeficientes del filtro, según
la cantidad de coeficientes deseados y la ventana a emplear. El programa de diseño de
filtros FIRFP.EXE nos brinda estas facilidades, este fue escrito por el Ing. Ricardo
Lambraño y compilado con el Compilador de C de Microsoft Versión 6.00.
Para ejecutar el mismo, el usuario debe escribir el nombre del programa FIRFP.EXE
desde la línea de comando de MS-DOS y presionar [Enter].
Cuadro de dialogo con el usuario del programa firfp.exe
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
122
El programa pregunta que tipo de filtro o función desea calcular, el número 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 fácil 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 cálculo 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 propósito el utilizar posteriormente como
base de datos para la construcción del filtro vía software. El código fuente del programa lo
puede encontrar en el apéndice C.
3.5.1.4 Programa De Implementación
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 apéndice D. Este lenguaje ensamblador es de fácil comprensión ya que
muchos de sus elementos son tomados de los compiladores en C; pero si desea conocer algo
adicional del mismo puede remitirse al apéndice 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
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
123
.var DATA[TAPS]; // Linea de Retardo
.endseg;
...........
En esta primera sección hemos declarado las variables TAPS, que corresponden al
tamaño de los coeficientes de los filtros. También hemos inicializado las variables de
ON_OFF, utilizada como bandera de activación 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 señal 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 instrucción .segment /dm seg_dmda ; y para
cerrar este ciclo se coloca la instrucción .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 ocasión 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 sólo ciclo de reloj.
Los comandos de inicio y cierre de descripción del ciclo de espacio para memoria de
programa son similares a los usados para la memoria de data.
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
124
/***********************************************************************
* Segmento de Código en memoria de Programa
************************************************************************/
.segment /pm seg_pmco;
...
...
....
b0=DATA; m0=1; l0=@DATA;
b8=COEFS; m8=1; l8=@COEFS;
........
........
En la sección de código 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 tamaño 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 información) no es constante, mas
bien es indicado por un índice el cuál generalmente regresa a su punto de partida. Podemos
visualizar un buffer circular como una ruleta de números, la cuál tiene capacidad para
almacenar variables, pero su posición en cuanto a un punto de referencia va variando;
aunque para el caso del buffer circular este movimiento con relación a direccionamiento es
generalmente constante. Este tipo de buffer es utilizado por su práctico desempeño en el
procesado de señales y su fácil programación.
/************************************************************************
* Rutina de Interrupción del CODEC. Aquí se procesan las muestras
* recibidas por el ADC y se escriben los resultados al DAC.
*
************************************************************************/
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
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; // Conversión a punto flotante
f2 = float r2; // Conversión a punto flotante
r0 = pass r0; // Encender banderas según R0
if eq jump OFF; // Ir a OFF si R0 = Cero
En esta sección del código se introducen las muestras de las señales de entrada al
CODEC y se almacenan en los registros r1 y r2 en formato de punto fijo; mientras que la
entrada ON_OFF indica si el filtro esta encendido o apagado y se almacena en el registro r0
bajo formato de punto flotante. Luego por simplicidad de programación los datos de r1 y r2
son pasados a formato de punto flotante, almacenándose en f1 y f2 respectivamente.
Por medio de la instrucción pass se verifica si el filtro esta encendido, de ser así el
comando if eq jump OFF permite la continuación de la ejecución del filtro de lo contrario
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 multiplicación
f1=f8+f12; // Realizar ultima suma
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
126
Durante esta sección se realiza el filtrado de la señal. Como primera instrucción
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
característica del sistema FIR, limpiamos el registro f8, y cargamos a f4 y a f0 con los
primeros coeficientes y datos de entrada, respectivamente.
A continuación 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 producirán la respuesta final del FIR.
• Ponderará la señal 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 líneas de instrucciones denotada por la etiqueta fir.
Por medio de f12 = f0*f4, f8=f8+f12 realizamos la penúltima suma del proceso
recursivo y ponderamos la ultima señal del proceso; que se ve culminado con la última suma
efectuada con la instrucción 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; // Conversión a punto fijo
r2 = trunc f2; // Conversión a punto fijo
r0 = dm(Z1); // Retardo en Canal Derecho
dm(Z1) = r2; // aun sin resolver la razón!
// Escritura de CODEC (DACs)
dm(tx_buf + 1) = r1; // DAC Canal Izquierdo
dm(tx_buf + 2) = r0; // DAC Canal Derecho
rti; // Retornar de Interrupción
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
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 señales a punto fijo
utilizando truncamiento por medio del comando trunc. Para finalmente enviar las señales
filtradas al CODEC específicamente a los DAC’s, esto se realiza cuando enviamos r1 y r0 a
las variables en localidad de memoria de data tx_buff+1 y tx_buff+2, respectivamente.
Cabe destacar que la señal del canal derecho sufre un pequeño atraso pero r0 = dm(Z1) y
dm(Z1) = r2; solucionan este inconveniente. Es de relevancia también el observar que este
proceso se efectúa de igual manera si el filtro esta apagado ( colocación de la etiqueta OFF),
pero para este caso devuelve la señal sin pasarla por el proceso de filtrado.
La instrucción rti ordena al sistema retornar de la interrupción dada al momento de
muestrear la señal. Como conocemos una señal será muestreada cuantas veces indique la
frecuencia de muestreo(fs); por tanto habrá una interrupción cada 1/fs seg. Como durante
este tiempo es el que se realiza el procesado de la señal, la cantidad de instrucciones por
ciclo de repetición estarán limitadas a la velocidad del reloj y la frecuencia de muestreo de la
señal. Es así que si la velocidad de muestreo es 48 KHz y la velocidad del reloj es de
40 MHZ habrá un máximo de 833 (40 MHz / 48 KHz) instrucciones por ciclo de muestreo
que podrán ejecutarse.
Como hemos visto el procesado de la señal 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 tamaño 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 diseño de filtros FIR
El motivo principal de esta sección es enunciar los principios generales de otros
métodos para el diseño 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
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
128
basaron en el diseño por el método de ventanas. Sin embargo, nos sirven de orientación
para el desarrollo de nuevas herramientas bajo otros conceptos.
Entre los métodos de diseño de sistemas FIR tenemos:
• Diseño de FIR utilizando el método de muestreo en frecuencia:
En este método de diseño 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 relación:
Con este procedimiento podemos reducir las oscilaciones laterales optimizando la
especificación en frecuencia de la banda de transición. Generalmente esta optimización es
realizada por medio de técnicas de programación lineal utilizándose un procesador digital.
La principal ventaja que reside en la utilización de este método es el uso eficiente del
muestreo en frecuencia que se puede obtener cuando la mayoría de las muestras en
frecuencia son cero.
• Diseño de filtros inversos FIR de mínimos cuadrados(Wiener):
Un método optativo para diseñar un filtro FIR inverso es el de mínimos cuadrados.
Básicamente el inverso de un sistema lineal e invariante en el tiempo con respuesta
impusional h(n) y función de transferencia H(z) se define como el sistema cuya respuesta
impusional h1(n) y función de transferencia H1(z) , satisfacen las siguientes ecuaciones:
1)()(
)()(*)(
1
1
==
∂∂==
zHzH
nnhnh
generalmente este tipo de sistema son IIR. Sin embargo, si H(z) es un sistema constituido
por sólo polos H1(z) es FIR.
M impar
M parα = 0 ó ½
)(2 απω ++== kMk
12
,,.........1,0
2
1,,.........1,0
−=
−=
Mk
Mk
ec. 3.19
ec. 3.20ec. 3. 21
TTrraabbaajjoo ddee GGrraadduuaacciióónnFFrraanncciissccoo JJ.. GGaarrccííaa CCaassttiilllloo
CCaappííttuulloo IIIIII
129
Resulta práctico para muchas aplicaciones que el filtro a utilizar sea FIR; y
generalmente para lograr este propósito se trunca h1(n). Al realizar el proceso de truncado
introducimos un error cuadrático total igual a:
∑∑∞∞
++==
==1
21 )(
Mnt nhε ec. 3.22
donde M+1 es la longitud del filtro truncado y εt representa la energía de la cola de la
respuesta impusional h1(n). Luego podemos utilizar el criterio de error de mínimos
cuadrados para optimizar los M+1 coeficientes del filtro FIR.
Empleando este proceso de optimización se obtiene un sistema de ecuaciones entre
los parámetros 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 matemático
Robert Wiener que introdujo a la ingeniería los métodos de filtrado óptimo mediante
mínimos cuadrados.