Filtro Digital Mirar

12

Click here to load reader

Transcript of Filtro Digital Mirar

Page 1: Filtro Digital Mirar

TECNIA,Vol 8 N°03, págs.11-17, 1999

Universidad Nacional de Ingeniería

Lima - Perú

DISEÑO E IMPLEMENTACION DE FILTROS DIGITALESRECURSIVOS Y NO RECURSIVOS USANDO UN DSP

Carlos Valeriano Cuba, Arturo Rojas-Moreno, José Paz-Campaña

Sección de Postgrado, Facultad de Ingeniería Eléctrica y Electrónica,

Universidad Nacional de Ingeniería, Lima, Perú

RESUMEN

Este artículo presenta los procedimientos de diseño (vía software) e implementación de

filtros digitales recursivos y no recursivos en tiempo real, utilizando el Procesador Digital

de Señales DSP56002. Además, se presentan varias implementaciones para comprobar la

validez del método.

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. INTRODUCCIÓN

El filtrado digital es una parte muy importante en el procesamiento digital de señales [1] debido a las numerosas

aplicaciones en las que los filtros digitales son empleados. Estas aplicaciones que pueden ser biomédicas,acústicas, sísmicas, de instrumentación y comunicaciones de audio y data, [2] se resumen en dos usos generales:

la separación de señales que han sido mezcladas y la restauración de señales que han sido distorsionadas.

Los filtros digitales implementados sobre Procesadores Digitales de Señales (DSP) tienen una muy alta

performance, se pueden obtener variaciones del orden de 100dB en una transición 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 Señales DSP56002 [3,4] (se usó ensamblador para

optimizar el tiempo de procesamiento en relación a programas de generación de código como C o Ptolemy).

Estos algoritmos implementados serán 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

Page 2: Filtro Digital Mirar

básicas: pasabajos, pasaaltos, pasabandas, y supresores de banda.

Los filtros digitales pueden ser diseñados fácilmente usando una gran variedad de software como el QEDesign

2000 o el FDAS (Filter Design and Analisis System), ambos programas costosos. En el presente artículo, los

filtros se diseñan basándose en la versión para estudiantes de MATLABâ 4.0. Sobre este software, el diseño

de filtros se resume en el manejo de un número de comandos que son mencionados con cierto detalle en la

sección VI. Una vez diseñados los filtros pueden llevarse al ensamblador del DSP como se verá en la sección

VII.

II. GENERALIDADES ACERCA DE LOS FILTROS

FILTRO NO RECURSIVO O DE RESPUESTA FINITA AL IMPULSO (FIR):

La estructura básica de este filtro es una línea de retardos como muestra la FIGURA 1.

En esta estructura la salida es la suma ponderada de la entrada actual y un cierto número de entradas pasadasx(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 número de coeficientes. Dichoscoeficientes representan las características del filtro (valores característicos). La transformada Z de la ecuación 1

es:

FILTRO RECURSIVO O DE RESPUESTA INFINITA AL IMPULSO (IIR):

La secuencia de salida y(n) de un filtro IIR, es función de las salidas pasadas y de las entradas actuales ypasadas.

Page 3: Filtro Digital Mirar

La relación entrada-salida de un filtro recursivo puede expresarse como:

Al menos uno de los valores a(j) es diferente a cero (si no se trataría de un filtro no recursivo).

La función de transferencia Z de la ecuación 3 es:

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

donde M es igual a 0.5N y K es una ganancia positiva.

La sección bicuadrada i-ésima puede representarse de la siguiente forma:

Dando a esta función 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 están en función 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 sección bicuadrada). Y a los valores a1i, a2i, b1i y b2i se les denomina valores característicos de la

sección bicuadrada i-ésima.

Page 4: Filtro Digital Mirar

La realización 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 i-

ésima sección bicuadrada yi+1(n) es la entrada de la (i+1)-ésima sección bicuadrada.

III. DESCRIPCION DEL SISTEMA SOBRE EL QUE SE IMPLEMENTARANLOS FILTROS [5]

Este sistema de procesamiento en tiempo real consiste de un conversor Análogo-Digital (A/D), de unDSP56002 y de un conversor Digital-Análogo (D/A). Las etapas las podemos observar en la FIGURA 4.

Page 5: Filtro Digital Mirar

El DSP56002EVM utilizado posee un CODEC (Codificador-Decodificador) con el que se implementan losconversores. El DSP56002 (donde se implementan los filtros) se comunica con el CODEC usando el puerto C

del procesador, puerto que es configurado como Interfase Síncrona Serial (SSI), una de tres posibles que

soporta el puerto C. Esta configuración requiere una etapa de inicialización que comprende:

Selección de los pines de entrada salida del puerto C para ser usados como SSI y controlar al CODEC.

Inicialización de los registros de control de dicho puerto, para que pueda recibir y transmitir data por los

convertidores.

Habilitación de las interrupciones del puerto SSI para que pueda darse la comunicación 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 más 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 según varía la señal 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 dirección R y se define un valor, indicando el tamaño del buffer en un

registro de módulo M. Obsérvese en la FIGURA 5 estos buffers en el DSP56002.

Page 6: Filtro Digital Mirar

Para poder optimizar al máximo el tiempo de procesamiento, tanto los estados como los valores característicos

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 también 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 losvalores característicos del filtro.

Ambas implementaciones, tanto la de los filtros recursivos como la de los filtros no recursivos, están basadas en

sumas realizadas sobre un acumulador. Estas sumas corresponden a un cierto número de productos de los

valores almacenados en el buffer de estados, multiplicados por los valores almacenados en el buffer de valores

característicos. Estos valores irán multiplicándose según sean apuntados por el registro de dirección

característico de cada uno de los buffers. En la FIGURA 6, podemos observar como se han implementado estetipo de algoritmos.

Page 7: Filtro Digital Mirar

La idea de este conjunto de sumas y multiplicaciones es conseguir generar las ecuaciones características de los

filtros. En el caso de los filtros no recursivos, se desea generar la ecuación 1. En el caso de los filtros recursivos,

se desea obtener primeramente la ecuación de entrada (ecuación 12) y después 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 multiplicación - acumulación - redondeo -

movimientos paralelos en un sólo ciclo de instrucción (equivalente a 100ns) son características del ensamblador

DSP56002 que han permitido realizar de una manera muy eficiente estos algoritmos.

VI. DISEÑO DE FILTROS DIGITALES USANDO MATLABâ

La edición para estudiantes de MATLABâ [7] contiene varias funciones dentro del Signal Processing Toolbox

(caja de herramientas para procesamiento de señales) [8], estas funciones son juegos de herramientas

opcionales que se pueden adquirir con la versión profesional de MATLABâ . En esta sección veremos

funciones "MATLABâ Signal processing toolbox" para diseñar filtros recursivos y no recursivos, que luegopodremos implementar usando el método antes descrito.

DISEÑO DE FILTROS RECURSIVOS

MATLABâ contiene funciones para diseñar cuatro tipos de filtros digitales recursivos, basados todos en

técnicas de diseño de filtros analógicos: Butterworth, Chevychev I y II y elíptico.Los filtros Butterworth son

máximamente 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 elípticos

tienen rizo tanto en la banda de paso como en la banda prohibida.

Por otro lado, para un orden de filtros dado, los filtros elípticos tienen la transición más abrupta (banda de

transición más angosta) de todos estos filtros. Los filtros Chebychev tienen una transición más abrupta que un

filtro Butterworth con las mismas especificaciones de diseño.

Page 8: Filtro Digital Mirar

Las funciones de diseño de filtros calculan los coeficientes de la ecuación 4 de la siguiente manera:H(z)=B(z)/A(z). Aunque también 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 función para realizar diseño directo de filtros digitales recursivos del tipo Yule-

Walker. Podemos usar esta técnica para diseñar una respuesta en frecuencia de forma arbitraria. El comando

usado para diseñar un filtro basado en esta función es [B,A]=[Z,P,K]=yulewalk(N,f,m), donde N es el ordendel 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].

DISEÑO DE FILTROS NO RECURSIVOS

Existen dos funciones MATLABâ relacionadas con el diseño de filtros digitales FIR o no recursivos: la función

fir1, que usa el método de ventanas; y la función REMEZ, que diseña directamente filtros digitales no

recursivos del tipo Parks-McClellan. En la FIGURA 7 podemos apreciar algunas de las ventanas que puede

utilizar la función FIR1 para diseñar filtros FIR.

La estructura B = FIR1(N,Wn,Ventana(N+1)) nos permite diseñar 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).

Page 9: Filtro Digital Mirar

Adicionalmente se pueden usar las ventanas Chebychev y Kaiser. Para esos casos, "Ventana" debeespecificarse de la siguiente manera: chebwin(N+1,R), donde la ventana Chebychev trabaja con R dB de

atenuación. Si se usa la ventana Kaiser, "Ventana" debe especificarse de la siguiente manera: KAISER(N+1,g

), donde g es el orden de la función modificada de Bessel de orden cero que se usa en el cálculo de la función

Kaiser. Si deseamos obtener un filtro pasaalto, al igual que en el diseño de filtros recursivos, debemos agregar lasentencia 'high'. Si deseamos diseñar un filtro pasabanda, debemos especificar en vez de Wn un par de valores

[Wn1 Wn2] y si se desea diseñar un filtro de rechazo de banda debe agregarse a esta última estructura la

sentencia 'stop'. Al igual que en el diseño de filtros recursivos Yule-Walker, es posible diseñar 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. IMPLEMENTACIÓN DE EJEMPLOS DE FILTROS RECURSIVOS Y NORECURSIVOS

Se ha diseñado 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 teórico del

Page 10: Filtro Digital Mirar

filtro.

También se ha diseñado un filtro recursivo pasabajos elíptico 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 teórico de este filtro.

Ahora se va a realizar un análisis comparativo entre las respuestas en frecuencia teórica y experimental de lamagnitud de ambos filtros. Pueden observarse las respuestas en frecuencia teóricas, 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, sólo se

pueden observar valores en determinados rangos (en las bandas de paso), por lo que se han trazado líneas en el

límite de observación.

VIII. OBSERVACIONES Y CONCLUSIONES

El presente trabajo brinda una herramienta para la implementación en el ensamblador del DSP56002 de

algoritmos de filtrado conocidos en el procesamiento digital de señales. Un método similar debe seguirse

si se desea hacer filtrado usando otro DSP. Además el código DSP56002 es fácilmente transportable a

otros procesadores de la familia DSP56000 de Motorola.

Page 11: Filtro Digital Mirar

Los códigos que implementan los algoritmos presentados en este artículo, están basados en dos

características del DSP56002: el uso de los registros circulares, que son necesarios en este tipo de

aplicaciones iterativas en tiempo real; y la Multiplicación-acumulación agregado al redondeo y

movimientos paralelos en una sola instrucción, que ayuda a ahorrar líneas de código, haciendo a losfiltros más rápidos.

Este trabajo está orientado a realizar aplicaciones generales de filtrado de señales, Un filtro digital

cualquiera es definido por los coeficientes de la respuesta al impulso del filtro (también llamado

el "kernel" del filtro). Estos coeficientes deben diseñarse partiendo de las características en

frecuencia del filtro deseado, ya sea usando teoría de Procesamiento Digital de Señales o algún

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 señal digitalizada de

entrada.

Uno de los objetivos de este trabajo es que el procedimiento de implementación de filtros digitales

presentado pueda ser usado como parte aplicativa de los cursos relacionados con el procesamiento digital

de señales.

Se puede apreciar que existe una gran similitud entre las respuestas en frecuencia teóricos y

experimentales, esto es en parte debido a la gran precisión que se puede alcanzar usando DSPs para el

filtrado de señales. En la FIGURA 9 se observa un filtro elíptico, puede notarse que el corte entre labanda de paso y la banda prohibida es bastante abrupto, algo que no se puede lograr con filtros

analógicos.

Page 12: Filtro Digital Mirar

IX. REFERENCIAS

[1] Aljama Tomás, Cadena Miguel, Charleston Sonia y Yañez Oscar: Procesamiento Digital de

Señales: Unidad Iztapalapa - Universidad Autónoma Metropolitana, 1992.

[2] Smith Steven: The Scientist and Engineer's Guide to Digital Signal Processing: California

Technical Publishing, 1997.

[3] Motorola´s DSP Division: DSP56000 24 bit Digital Signal Processor Family Manual, 1994.

[4] Motorola´s DSP Division: DSP56002 24 bit Digital Signal Processor User´s Manual, 1994.

[5] El-Sharkawy Mohamed: Digital Signal Processing Applications with Motorola´s DSP56002

Processor: Prentice Hall, 1996.

[6] Lane John and Hillman Garth - Motorola´s DSP Division: Implementing IIR/FIR filters with

Motorola´s DSP56000/DSP56001, 1993.

[7] Etter Delores: Solución de problemas de ingeniería con MATLABâ - Prentice Hall, 1997.

[8] Burrus Sidney, McClellan James, Oppenheim Alan, Parks Thomas, Schafer Ronald,

Schuessler Hans: Ejercicios de tratamiento de la señal utilizando MATLABâ V.4 - Prentice

Hall, 1998.

Para mayores referencias diríjase a la siguiente dirección

[email protected]