Trabajo de Graduación Francisco J. García Castillo 101 · frecuencias se encuentran confinadas en...

29
Trabajo de Graduación Francisco J. García Castillo Capítulo III 101

Transcript of Trabajo de Graduación Francisco J. García Castillo 101 · frecuencias se encuentran confinadas en...

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.