You are on page 1of 6

Laboratorio 6

12
Diseño de Filtros Digitales RIF en
Matlab

El juego de herramientas para procesamiento de señales (Signal Proces-


sing Toolbox) de Matlab contiene funciones propias para el diseño de filtros
digitales con respuesta al impulso finita (RIF) y algunas de estas funciones
serán empleadas durante esta práctica. Posteriormente, se implantarán es-
tos filtros en el DSP56002/DSP56303 para mostrar su funcionamiento en
tiempo real. En la implantación de los filtros RIF, se hace uso de los macros
y rutinas de inicialización con el permiso de Freescale Semicondutors, Inc.
Además, en esta práctica se hará uso de un conjunto de archivos M que
fueron diseñados con el propósito de hacer la tarea de diseño e implantación
de estos filtros en forma más amigable. Este juego de archivos forma parte del
paquete denominado FDI, se ejecutan bajo el ambiente Matlab y tienen la
capacidad de generar en forma automática el código en lenguaje ensamblador
para su ensamblado y generación del archivo .cld, el cual puede ser cargado
y ejecutado en el procesador DSP56002/DSP56303.

12.1. Diseño de filtros RIF usando funciones ven-


tana
La función fir1 diseña filtros RIF por el método de ventanas. La función
es llamada introduciendo, en el ambiente de trabajo de Matlab, la siguiente
instrucción:

221
22212.1. DISEÑO DE FILTROS RIF USANDO FUNCIONES VENTANA

B = fir1(N,Wn),

donde el vector B, de longitud N+1, contendrá los coeficientes de un filtro


digital RIF pasa-bajas de orden N.
La frecuencia de corte Wn debe estar entre 0 < Wn < 1.0, donde 1.0
corresponde a la mitad de la frecuencia de muestreo. El filtro resultante
es real y tiene fase lineal, es decir, tiene simetrı́a par en sus coeficientes
obedeciendo la relación:

B(k) = B(N + 2 − k), en donde k = 1, 2, ..., N + 1.

Para tener un filtro pasa-banda, Wn debe ser un vector de dos elementos,


es decir, Wn = [W1 W2].
Para diseñar un filtro pasa-altas se usa
B = fir1(N,Wn,’high’).

Si empleamos

B = fir1(N,Wn,’stop’),

cuando Wn = [W1 W2], entonces B corresponde a un filtro de rechazo de


banda (bandstop filter).
Para filtros que tengan una banda de paso cercana a F s/2, es decir,
filtros pasa-altas y rechazo de banda, N debe ser par.
Las ventanas pueden ser:

Rectangular (Boxcar),

Hamming,

Hanning,

Bartlett,

Blackman,

Kaiser,

Chebwin.

Por omisión, Matlab ajusta la escala del filtro de modo que el centro
de la primera banda de paso tenga magnitud exactamente uno después de
aplicar la ventana.

Ejercicio 12.1 Diseñe un filtro RIF con las siguientes especificaciones: or-
den N = 40, frecuencia de corte de 2000 Hz, y frecuencia de muestreo de 48
kHz, con:

B = fir1(40,2000/24000);

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


12.1. DISEÑO DE FILTROS RIF USANDO FUNCIONES VENTANA223

luego introduzca y ejecute las siguientes instrucciones:

[h,f] = freqz(B,1,200,Fs);
semilogx(f,20*log10(abs(h)));
title(’Respuesta en Frecuencia’);
ylabel(’Magnitud [dB]’);
xlabel(’Frecuencia [Hz]’);
grid;

Observe la diferencia en dB entre la atenuación del primer lóbulo lateral


y la atenuación en la banda de paso. ¿Qué función ventana se aplica por
omisión?

Ejercicio 12.2 Ahora, repita el cálculo de B para N = 60. Después de eso


introduzca lo siguiente:

hold on

Encuentre y trace la respuesta en frecuencia con:

[h,f] = freqz(B,1,200,Fs);
semilogx(f,20*log10(abs(h)),’r’);

Observe cualquier diferencia entre ambas respuestas en frecuencia. ¿Es la


atenuación del primer lóbulo lateral significativamente mayor que cuando N
era 40?

Ejercicio 12.3 Para aplicar una ventana rectangular introduzca lo siguien-


te:

N = 40;
fc = 2000;
Fs = 48000;
FN = Fs/2;
B = fir1(N,fc/FN,Boxcar(N+1));

Ahora introduzca:

[h,f] = freqz(B,1,200,Fs);
semilogx(f,20*log10(abs(h)), ’g’);

Compare las tres curvas. Como puede observarse, la ventana rectangular


da una respuesta en frecuencia diferente. ¿Cuánta atenuación tenemos en el
primer lóbulo lateral cuando se emplea la ventana rectangular?, ¿es la banda
de transición igual a las anteriores?

Ejercicio 12.4 Finalmente, diseñe un filtro RIF con las mismas especifica-
ciones de frecuencia pero empleando una ventana Blackman con:

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


12.2. OTROS MÉTODOS DE DISEÑO: MÍNIMOS CUADRADOS Y
224 EQUIRIZO
B = fir1(N,fc/FN,Blackman(N+1));

seguido de

[h,f] = freqz(B,1,200,Fs);
semilogx(f,20*log10(abs(h)), ’b’);

a) ¿Qué efecto se produce al incrementar N?


b) ¿Cuál es el efecto al usar una función ventana diferente?
c) Si tuviera que seleccionar la función ventana en el diseño del filtro,
¿qué consideraciones tomarı́a en cuenta para hacer esa selección?

12.2. Otros métodos de diseño: Mı́nimos cuadra-


dos y Equirizo
Resulta útil introducir otros dos métodos de diseño que no están restrin-
gidos o limitados al diseño clásico con especificaciones pasa-bajas, pasa-altas,
y de más. Estos métodos son mı́nimos cuadrados (least-squares) y equirizo
(equiripple).

12.2.1. Mı́nimos cuadrados


El primer método es llamado “Minimización del error cuadrático mı́ni-
mo” (Least-squares error minimization). La función es: firls.
La función

B=firls(N,F,A)

entrega un filtro real con fase lineal en un vector B de longitud N+1 (con
coeficientes reales simétricos).
El filtro dará la mejor aproximación a la respuesta en frecuencia deseada
descrita por F y A en un sentido de mı́nimos cuadrados. F es un vector de
pares de bandas de frecuencia, en orden ascendente, entre 0 y 1. En el vector
F, 1 corresponde a la frecuencia de Nyquist, o sea la mitad de la frecuencia
de muestreo, Fs/2. A es un vector real del mismo tamaño que F, el cual
especifica la amplitud de la respuesta en frecuencia deseada en B.

Ejercicio 12.5 Diseñe un filtro con las siguientes especificaciones, note los
espacios en la definición del vector de frecuencias FV y del vector de ampli-
tudes FA. Introduzca las siguientes lı́neas:

hold off
fp = 6000; % extremo de la banda de paso
fr = 7000; % extremo de la banda de rechazo
FN = 24000; % Frecuencia de Nyquist
FV = [0 fp/FN fr/FN 1]; % vector de Frequencias

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


12.3. FDI Y FILTROS RIF EN EL DSP56002/DSP56303 225

kp = 1; % ganancia en la banda de paso


kr = 0.001; % ganancia en la banda de rechazo
AV = [kp kp kr kr]; % vector de Amplitudes

Obtenga los coeficientes del filtro con:

B = firls(40,FV,AV);

Ahora encuentre y trace la respuesta en frecuencia con:

[h,f] = freqz(B,1,200,Fs);
semilogx(f,20*log10(abs(h)),’k’);
grid;

Observe la respuesta en frecuencia obtenida cuando se emplea el método de


mı́nimos cuadrados.

12.2.2. Parks-McClellan o equirizo


El segundo método es llamado el método de Parks-McClellan o de diseño
óptimo equirizo, también es conocido como el método de Remez porque
emplea el algoritmo de intercambio de Remez. Este método se incluye en el
paquete FDI.

12.3. FDI y filtros RIF en el DSP56002/DSP56303


Con el fin de mostrar las diferencias entre los filtros RIF obtenidos por
varios métodos, se hará uso del paquete FDI en los siguientes ejercicios (para
una descripción del paquete FDI véanse capı́tulos anteriores.

Ejercicio 12.6 Ejecute Matlab e introduzca la siguiente orden:


>>chdir c:\fdi2k2
para la versión DSP56002EVM o
>>chdir c:\fdi563x
para la versión DSP56303EVM. Enseguida introduzca mainfdi.
Seleccione el diseño de filtros RIF (FIR. Después Lowpass seguido de
Windows). Seleccione una ventana Rectangular. Enseguida, introduzca las
especificaciones del filtro:

fp = & 8000\\
fs = & 10000\\
kp = & 1\\
ks = & 30\\
Fs = & 48000

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


226 BIBLIOGRAFÍA

Ejercicio 12.7 Seleccione Plot Freq. Response. Observe la atenuación


obtenida en el primer lóbulo lateral (debe ser de alrededor de 21dB). Tome
nota de estos valores para su comparación con la respuesta medida en tiempo
real.
Ejercicio 12.8 Seleccione la opción para regresar al menú principal. Aho-
ra seleccione un diseño Lowpass con una ventana de Hanning. Emplee las
mismas especificaciones de frecuencia que en el diseño anterior. Trace la
respuesta en frecuencia y compárela con el diseño que empleó la ventana
rectangular. Mida la atenuación del primer lóbulo lateral y compárelo a la
atenuación del lóbulo principal.
Ejercicio 12.9 Repita el los pasos necesarios para aplicar una ventana
Blackman y mida la atenuación del primer lóbulo lateral.
Ejercicio 12.10 Utilice FDI para diseñar un filtro por el método de mı́ni-
mos cuadrados con las siguientes especificaciones:
fp = 8000
fs = 10000
kp = 0.5
ks = 40
Fs = 48000
Ejercicio 12.11 Finalmente, aplique el método de Parks-McClellan para
obtener un filtro RIF pasa bajas con las especificaciones dadas en el ejer-
cicio anterior. Compare la respuesta en frecuencia con las obtenidas en los
ejercicios anteriores.
Ejercicio 12.12 Usando los coeficientes encontrados en las secciones an-
teriores, un conjunto de archivos y macros en lenguaje ensamblador, y el
juego de archivos M del paquete FDI, se puede mostrar la operación de
filtros digitales en tiempo real.
Ejecute los pasos necesarios para generar el código del filtro. Una vez
que se cuente con los archivos necesarios, se empleará el programa ensam-
blador para obtener el archivo .cld, y finalmente bajo el ambiente de Domain
Technologies se ejecutará el filtro en el procesador DSP56002/DSP56303.
Si es necesario, pida al instructor que al final de la práctica muestre la
operación del filtro en tiempo real. Observe y mida la respuesta en frecuencia
del filtro. Compare la respuesta en frecuencia observada en tiempo real con
la que se obtuvo bajo el ambiente de Matlab.

Bibliografı́a
[1] The Student Edition of Matlab, Version 5 User’s Guide. The Math-
Works, Inc., Prentice Hall, Upper Sadle River, NJ 07458, (1997).

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio

You might also like