Vous êtes sur la page 1sur 12

TECNIA,Vol 8 N03, pgs.

11-17, 1999 Universidad Nacional de Ingeniera Lima - Per

DISEO E IMPLEMENTACION DE FILTROS DIGITALES RECURSIVOS Y NO RECURSIVOS USANDO UN DSP


Carlos Valeriano Cuba, Arturo Rojas-Moreno, Jos Paz-Campaa Seccin de Postgrado, Facultad de Ingeniera Elctrica y Electrnica, Universidad Nacional de Ingeniera, Lima, Per

RESUMEN
Este artculo presenta los procedimientos de diseo (va software) e implementacin de filtros digitales recursivos y no recursivos en tiempo real, utilizando el Procesador Digital de Seales DSP56002. Adems, se presentan varias implementaciones para comprobar la validez del mtodo.

ABSTRACT
This article presents design (via software) and implementation procedures of recursive and non-recursive real-time digital filters using a DSP56002. Several implementations are depicted to demonstrate the validity of the method

I. INTRODUCCIN
El filtrado digital es una parte muy importante en el procesamiento digital de seales [1] debido a las numerosas aplicaciones en las que los filtros digitales son empleados. Estas aplicaciones que pueden ser biomdicas, acsticas, ssmicas, de instrumentacin y comunicaciones de audio y data, [2] se resumen en dos usos generales: la separacin de seales que han sido mezcladas y la restauracin de seales que han sido distorsionadas. Los filtros digitales implementados sobre Procesadores Digitales de Seales (DSP) tienen una muy alta performance, se pueden obtener variaciones del orden de 100dB en una transicin de un solo hertz. Esta es una de las razones por las que los DSP se han vuelto tan populares. Las implementaciones aqu tratadas consisten principalmente en un algoritmo basado en sumas y multiplicaciones aplicadas al lenguaje ensamblador del Procesador Digital de Seales DSP56002 [3,4] (se us ensamblador para optimizar el tiempo de procesamiento en relacin a programas de generacin de cdigo como C o Ptolemy). Estos algoritmos implementados sern usados como plantillas de filtros digitales recursivos (de respuesta infinita al impulso o IIR) y de filtros digitales no recursivos (de respuesta finita al impulso o FIR), ambos en sus formas

bsicas: pasabajos, pasaaltos, pasabandas, y supresores de banda. Los filtros digitales pueden ser diseados fcilmente usando una gran variedad de software como el QEDesign 2000 o el FDAS (Filter Design and Analisis System), ambos programas costosos. En el presente artculo, los filtros se disean basndose en la versin para estudiantes de MATLAB 4.0. Sobre este software, el diseo de filtros se resume en el manejo de un nmero de comandos que son mencionados con cierto detalle en la seccin VI. Una vez diseados los filtros pueden llevarse al ensamblador del DSP como se ver en la seccin VII.

II. GENERALIDADES ACERCA DE LOS FILTROS


FILTRO NO RECURSIVO O DE RESPUESTA FINITA AL IMPULSO (FIR): La estructura bsica de este filtro es una lnea de retardos como muestra la FIGURA 1.

En esta estructura la salida es la suma ponderada de la entrada actual y un cierto nmero de entradas pasadas x(n), que se puede expresar en la siguiente forma:

donde b(i) son los coeficientes de la respuesta al impulso del filtro y N es el nmero de coeficientes. Dichos coeficientes representan las caractersticas del filtro (valores caractersticos). La transformada Z de la ecuacin 1 es:

FILTRO RECURSIVO O DE RESPUESTA INFINITA AL IMPULSO (IIR): La secuencia de salida y(n) de un filtro IIR, es funcin de las salidas pasadas y de las entradas actuales y pasadas.

La relacin entrada-salida de un filtro recursivo puede expresarse como:

Al menos uno de los valores a(j) es diferente a cero (si no se tratara de un filtro no recursivo). La funcin de transferencia Z de la ecuacin 3 es:

Para lograr reducir H(z) a un producto de secciones denominadas bicuadradas (de segundo orden), se consider a N como un entero par, en consecuencia:

donde M es igual a 0.5N y K es una ganancia positiva. La seccin bicuadrada i-sima puede representarse de la siguiente forma:

Dando a esta funcin de transferencia una forma apropiada para poder representarla en variables de estado:

tal que:

Tomando la transformada Z inversa a las dos ltimas ecuaciones obtenemos:

En estas dos ltimas ecuaciones, se puede apreciar que tanto la entrada como la salida estn en funcin de una tercera variable Xi(z) o xi(n). A los valores Xi.z-1 o xi(n-1) y Xi.z-2 o xi(n-2) los llamamos estados (dos estado por cada seccin bicuadrada). Y a los valores a1i, a2i, b1i y b2i se les denomina valores caractersticos de la seccin bicuadrada i-sima.

La realizacin de las ecuaciones 8 y 9 es mostrada en la FIGURA 2.

Una cadena de M de estas secciones con entrada y salida generales de la forma:

es la que representa al filtro del orden deseado, esto se muestra en la FIGURA 3. Note que la salida de la isima seccin bicuadrada yi+1 (n) es la entrada de la (i+1)-sima seccin bicuadrada.

III. DESCRIPCION DEL SISTEMA SOBRE EL QUE SE IMPLEMENTARAN LOS FILTROS [5]
Este sistema de procesamiento en tiempo real consiste de un conversor Anlogo-Digital (A/D), de un DSP56002 y de un conversor Digital-Anlogo (D/A). Las etapas las podemos observar en la FIGURA 4.

El DSP56002EVM utilizado posee un CODEC (Codificador-Decodificador) con el que se implementan los conversores. El DSP56002 (donde se implementan los filtros) se comunica con el CODEC usando el puerto C del procesador, puerto que es configurado como Interfase Sncrona Serial (SSI), una de tres posibles que soporta el puerto C. Esta configuracin requiere una etapa de inicializacin que comprende: Seleccin de los pines de entrada salida del puerto C para ser usados como SSI y controlar al CODEC. Inicializacin de los registros de control de dicho puerto, para que pueda recibir y transmitir data por los convertidores. Habilitacin de las interrupciones del puerto SSI para que pueda darse la comunicacin serial.

IV. DESCRIPCION DEL SISTEMA DE ALMACENAMIENTO


En ambas implementaciones para poder calcular la muestra de salida en tiempo real, se necesita que el sistema de procesamiento tenga acceso inmediato a los valores ms recientes de los estados. En el caso de los filtros no recursivos, estos estados son los N-1 valores de las entradas pasadas x(n) y en el caso de los filtros recursivos, son los valores xi(n-1) y xi(n-2) de cada una de las M secciones bicuadradas; estos valores cambian continuamente segn vara la seal procesada. La mejor manera de manejar este almacenamiento es utilizando buffers circulares y en el DSP56002 eso puede realizarse. Se usa para tal efecto un espacio de memoria RAM apuntado por uno de ocho registros de direccin R y se define un valor, indicando el tamao del buffer en un registro de mdulo M. Obsrvese en la FIGURA 5 estos buffers en el DSP56002.

Para poder optimizar al mximo el tiempo de procesamiento, tanto los estados como los valores caractersticos de los filtros son almacenados en buffers circulares.

V. IMPLEMENTACION DE LOS ALGORITMOS DE FILTRADO


Como observamos en la FIGURA 4, ambos algoritmos trabajan sobre el sistema de procesamiento en tiempo real. Es decir toman una muestra de entrada del CODEC, la procesan, y entregan como resultado una muestra de salida tambin al CODEC [6]. Los dos algoritmos usan igualmente un sistema de almacenamiento basado en buffers circulares, dividido en un sistema de almacenamiento de estados y en otro de almacenamiento de los valores caractersticos del filtro. Ambas implementaciones, tanto la de los filtros recursivos como la de los filtros no recursivos, estn basadas en sumas realizadas sobre un acumulador. Estas sumas corresponden a un cierto nmero de productos de los valores almacenados en el buffer de estados, multiplicados por los valores almacenados en el buffer de valores caractersticos. Estos valores irn multiplicndose segn sean apuntados por el registro de direccin caracterstico de cada uno de los buffers. En la FIGURA 6, podemos observar como se han implementado este tipo de algoritmos.

La idea de este conjunto de sumas y multiplicaciones es conseguir generar las ecuaciones caractersticas de los filtros. En el caso de los filtros no recursivos, se desea generar la ecuacin 1. En el caso de los filtros recursivos, se desea obtener primeramente la ecuacin de entrada (ecuacin 12) y despus generar las secciones bicuadradas; es decir, se debe realizar una cadena de las ecuaciones 10 y 11. Una gran cantidad de movimientos paralelos permitidos, y la multiplicacin - acumulacin - redondeo movimientos paralelos en un slo ciclo de instruccin (equivalente a 100ns) son caractersticas del ensamblador DSP56002 que han permitido realizar de una manera muy eficiente estos algoritmos.

VI. DISEO DE FILTROS DIGITALES USANDO MATLAB


La edicin para estudiantes de MATLAB [7] contiene varias funciones dentro del Signal Processing Toolbox (caja de herramientas para procesamiento de seales) [8], estas funciones son juegos de herramientas opcionales que se pueden adquirir con la versin profesional de MATLAB . En esta seccin veremos funciones "MATLAB Signal processing toolbox" para disear filtros recursivos y no recursivos, que luego podremos implementar usando el mtodo antes descrito. DISEO DE FILTROS RECURSIVOS MATLAB contiene funciones para disear cuatro tipos de filtros digitales recursivos, basados todos en tcnicas de diseo de filtros analgicos: Butterworth, Chevychev I y II y elptico.Los filtros Butterworth son mximamente planos tanto en la banda de paso como en la banda prohibida, los filtros Chebychev Tipo I tienen rizo en la banda de paso, los filtros Chebychev Tipo II tienen rizo en la banda prohibida y los filtros elpticos tienen rizo tanto en la banda de paso como en la banda prohibida. Por otro lado, para un orden de filtros dado, los filtros elpticos tienen la transicin ms abrupta (banda de transicin ms angosta) de todos estos filtros. Los filtros Chebychev tienen una transicin ms abrupta que un filtro Butterworth con las mismas especificaciones de diseo.

Las funciones de diseo de filtros calculan los coeficientes de la ecuacin 4 de la siguiente manera: H(z)=B(z)/A(z). Aunque tambin se pueden obtener valores de los ceros, polos y ganancia (Z, P, K). En la tabla 1 se muestra el correcto uso de dichas funciones.

MATLAB contiene una funcin para realizar diseo directo de filtros digitales recursivos del tipo YuleWalker. Podemos usar esta tcnica para disear una respuesta en frecuencia de forma arbitraria. El comando usado para disear un filtro basado en esta funcin es [B,A]=[Z,P,K]=yulewalk(N,f,m), donde N es el orden del filtro, y los valores f y m representan el arreglo de valores de magnitud versus frecuencia deseados, es decir f=[f1,f2,...fx], y m=[m1,m2,..mx]. DISEO DE FILTROS NO RECURSIVOS Existen dos funciones MATLAB relacionadas con el diseo de filtros digitales FIR o no recursivos: la funcin fir1, que usa el mtodo de ventanas; y la funcin REMEZ, que disea directamente filtros digitales no recursivos del tipo Parks-McClellan. En la FIGURA 7 podemos apreciar algunas de las ventanas que puede utilizar la funcin FIR1 para disear filtros FIR. La estructura B = FIR1(N,Wn,Ventana(N+1)) nos permite disear un filtro no recursivo pasabajos de orden N, de frecuencia de corte normalizada Wn y que use una ventana que puede ser: Boxcar (rectangular), Hanning, Bartlett, Blackman (por defecto se usa la ventana Hamming).

Adicionalmente se pueden usar las ventanas Chebychev y Kaiser. Para esos casos, "Ventana" debe especificarse de la siguiente manera: chebwin(N+1,R), donde la ventana Chebychev trabaja con R dB de atenuacin. Si se usa la ventana Kaiser, "Ventana" debe especificarse de la siguiente manera: KAISER(N+1,g ), donde g es el orden de la funcin modificada de Bessel de orden cero que se usa en el clculo de la funcin Kaiser. Si deseamos obtener un filtro pasaalto, al igual que en el diseo de filtros recursivos, debemos agregar la sentencia 'high'. Si deseamos disear un filtro pasabanda, debemos especificar en vez de Wn un par de valores [Wn1 Wn2] y si se desea disear un filtro de rechazo de banda debe agregarse a esta ltima estructura la sentencia 'stop'. Al igual que en el diseo de filtros recursivos Yule-Walker, es posible disear filtros no recursivos Parks McLellan con la siguiente estructura: B=remez(N,f,m), donde N es el orden del filtro, y los valores f y m representan un arreglo de valores frecuencia-magnitud.

VII. IMPLEMENTACIN DE EJEMPLOS DE FILTROS RECURSIVOS Y NO RECURSIVOS


Se ha diseado a manera de ejemplo un filtro pasabanda no recursivo de orden 20, que opera entre 42% y 48% la frecuencia de Nyquist (es decir la mitad de la frecuencia de muestreo) y que trabaja con la ventana de Hamming. Para ello, en la ventana de comandos de MATLAB se escribi lo siguiente: a=fir1(20,[0.42 0.48]), esto har que a sea un arreglo que contenga los siguientes valores: a=[0.0000 0.0170 0.0089 -0.0423 -0.0420 0.0697 0.1022 -0.0688 -0.1635 0.0290 0.1896 0.0290 -0.1635 -0.0688 0.1022 0.0697 -0.0420 -0.0423 0.0089 0.0170 0.0000], con el comando freqz(a,1) se puede visualizar el comportamiento terico del

filtro. Tambin se ha diseado un filtro recursivo pasabajos elptico de orden 8, con una frecuencia de corte en el 50% la frecuencia de Nyquist, con 0.5dB de rizo en la banda de paso y 30dB en la banda prohibida. Para ello, en la ventana de comandos de MATLAB se escribi lo siguiente: [B,A]=ellip(8,0.5,30,0.5), esto har que B y A contengan los siguientes valores respectivamente: B=[0.1252 0.2365 0.5830 0.7157 0.9157 0.7157 0.5830 0.2365 0.1252] y A=[1.0000 -0.7125 3.0696 -1.8381 3.3246 -1.5543 1.4410 -0.4286 0.1860], otra vez con el comando freqz(B,A) se puede visualizar el comportamiento terico de este filtro. Ahora se va a realizar un anlisis comparativo entre las respuestas en frecuencia terica y experimental de la magnitud de ambos filtros. Pueden observarse las respuestas en frecuencia tericas, en la parte superior de las FIGURAS 8 y 9 y las respuestas experimentales, en la parte inferior de las mismas. Dichas figuras corresponden al filtro no recursivo y al recursivo respectivamente. En las respuestas experimentales, slo se pueden observar valores en determinados rangos (en las bandas de paso), por lo que se han trazado lneas en el lmite de observacin.

VIII. OBSERVACIONES Y CONCLUSIONES


El presente trabajo brinda una herramienta para la implementacin en el ensamblador del DSP56002 de algoritmos de filtrado conocidos en el procesamiento digital de seales. Un mtodo similar debe seguirse si se desea hacer filtrado usando otro DSP. Adems el cdigo DSP56002 es fcilmente transportable a otros procesadores de la familia DSP56000 de Motorola.

Los cdigos que implementan los algoritmos presentados en este artculo, estn basados en dos caractersticas del DSP56002: el uso de los registros circulares, que son necesarios en este tipo de aplicaciones iterativas en tiempo real; y la Multiplicacin-acumulacin agregado al redondeo y movimientos paralelos en una sola instruccin, que ayuda a ahorrar lneas de cdigo, haciendo a los filtros ms rpidos. Este trabajo est orientado a realizar aplicaciones generales de filtrado de seales, Un filtro digital cualquiera es definido por los coeficientes de la respuesta al impulso del filtro (tambin llamado el "kernel" del filtro). Estos coeficientes deben disearse partiendo de las caractersticas en frecuencia del filtro deseado, ya sea usando teora de Procesamiento Digital de Seales o algn software (en nuestro caso estamos usando MATLAB ). Luego de introducidos los coeficientes de la respuesta al impulso del filtro a un registro circular, son convolucionados con la seal digitalizada de entrada. Uno de los objetivos de este trabajo es que el procedimiento de implementacin de filtros digitales presentado pueda ser usado como parte aplicativa de los cursos relacionados con el procesamiento digital de seales. Se puede apreciar que existe una gran similitud entre las respuestas en frecuencia tericos y experimentales, esto es en parte debido a la gran precisin que se puede alcanzar usando DSPs para el filtrado de seales. En la FIGURA 9 se observa un filtro elptico, puede notarse que el corte entre la banda de paso y la banda prohibida es bastante abrupto, algo que no se puede lograr con filtros analgicos.

IX. REFERENCIAS
[1] Aljama Toms, Cadena Miguel, Charleston Sonia y Yaez Oscar: Procesamiento Digital de Seales: Unidad Iztapalapa - Universidad Autnoma Metropolitana, 1992. [2] Smith Steven: The Scientist and Engineer's Guide to Digital Signal Processing: California Technical Publishing, 1997. [3] Motorolas DSP Division: DSP56000 24 bit Digital Signal Processor Family Manual, 1994. [4] Motorolas DSP Division: DSP56002 24 bit Digital Signal Processor Users Manual, 1994. [5] El-Sharkawy Mohamed: Digital Signal Processing Applications with Motorolas DSP56002 Processor: Prentice Hall, 1996. [6] Lane John and Hillman Garth - Motorolas DSP Division: Implementing IIR/FIR filters with Motorolas DSP56000/DSP56001, 1993. [7] Etter Delores: Solucin de problemas de ingeniera con MATLAB - Prentice Hall, 1997. [8] Burrus Sidney, McClellan James, Oppenheim Alan, Parks Thomas, Schafer Ronald, Schuessler Hans: Ejercicios de tratamiento de la seal utilizando MATLAB V.4 - Prentice Hall, 1998.
Para mayores referencias dirjase a la siguiente direccin igi@uni.edu.pe

Vous aimerez peut-être aussi