Sei sulla pagina 1di 4

COMPARACIN ENTRE ESTRUCTURA CANNICA Y TRANSPUESTA DE FILTROS IIR

IMPLEMENTADOS EN UN DSPIC

Autores: Matas L. Martini, Gastn Oviedo
Tutor: Ing. Franco Salvtico (fmsalvatico@hotmail.com)
Departamento de Ingeniera Electrnica
Facultad Regional Villa Mara Universidad Tecnolgica Nacional
Avda. Universidad 450, (5900) Villa Mara, Crdoba
Resumen
En el presente trabajo se dise un filtro digital pasa banda tipo IIR (Infinite Impulse Response
Respuesta Infinita al Impulso) por sntesis de Butterworth que opera en la banda de frecuencias de
audio. Los diseos fueron realizados con herramientas de MATLAB y mediante programacin en
lenguaje C++ han sido implementados en un controlador digital de seales, dsPIC, de 16 bits de
ancho de palabra de datos. Se contrast entre la implementacin por estructura de procesamiento
cannica y transpuesta para filtros IIR, propuestas por el fabricante del microcontrolador.
Luego se medi en el laboratorio la respuesta en frecuencia y se realiz una comparacin entre
las dos estructuras, observando las exigencias que pueden hacerse sobre cada una y el efecto de
la longitud finita de la palabra de datos. Como conclusin se determin qu tipo de estructura se
puede aplicar para realizar el filtro especificado.

1. Introduccin
La adquisicin de un nuevo kit de desarrollo por parte de la facultad, motiv a realizar este trabajo
para evaluar las caractersticas de desempeo del controlador digital de seales y aprender sobre
las dos estructuras de procesamiento para filtros IIR propuestas por el fabricante. Para esto se
implement un filtro IIR pasa banda como el de la Fig. 1, con las especificaciones indicadas en la
tabla 1.


Fig. 1. Respuesta de un filtro pasa banda

Tabla 1. Especificaciones del filtro
Caracterstica Nomenclatura Valor Unidad
Frecuencia de parada 1
1
500 Hz
Frecuencia de paso 1
1
1000 Hz
Frecuencia de paso 2
2
1500 Hz
Frecuencia de parada 2
2
2000 Hz
Frecuencia de muestreo

8000 Hz
Atenuacin en la banda rechazo 1
1
80 dB
Rizado en la banda de paso

1 dB
Atenuacin en la banda rechazo 2
2
80 dB

Se realiz el diseo con la herramienta FDATool de MATLAB donde se obtuvo su respuesta en
frecuencia, longitud del filtro y otros parmetros descriptivos [1]. La estructura resultante est
formada por "" bloques y una ganancia de salida (

), donde cada bloque (ec. 1) est compuesto


por una seccin bicuadrtica y una ganancia (

), como se muestra en la Fig. 2.




Fig. 2. Estructura del filtro entregada por MATLAB

2
.
2
+
1
.
1
+
0

2
.
2
+
1
.
1
+
0
; 1 (1)

Una vez obtenido esto, se adapt la estructura matemtica, segn se haya implementado en una
estructura cannica o transpuesta. Los coeficientes del filtro fueron convertidos a un formato
especial (fraccional Q15) y escritos en una estructura de lenguaje C++ en el compilador MPLAB
XC16, para poder ser implementados en el kit de desarrollo STARTER KIT FOR DSPIC [2] [3].
Finalmente se excit al filtro real con una seal senoidal de frecuencia variable, utilizando un
generador de seales BK PRECISION modelo 4045, y midiendo con un osciloscopio, del
fabricante TEKTRONIX modelo TDS 1001B, se obtuvieron su respuesta en frecuencia y sus
parmetros caractersticos.

2. Implementacin en el microcontrolador
El kit de desarrollo incluye como componentes principales un microcontrolador
dsPIC33FJ256GP506 de Microchip [4], el cual se encarga de realizar el proceso de la seal, y
un cdec de audio WM8510 de Wolfson [5], que se encarga de las conversiones
analgica/digital y digital/analgica. Adems posee pulsadores, filtros y amplificadores entre otros
componentes.
Inicialmente se configura el microcontrolador y luego este mediante un bus de comunicacin I
2
C
configura el cdec para operar a la frecuencia de muestreo deseada.
El microcontrolador adquiere a travs de un bus DCI un bloque de datos digitalizados
provenientes del cdec y se almacena en un vector en la memoria RAM. Dependiendo del estado
de un pulsador este vector es filtrado o no y el resultado se enva al cdec para su reproduccin.
La estructura de lenguaje C++ tambin se encuentra almacenada en la RAM. Esta contiene los
coeficientes del filtro y adems contiene las muestras demoradas en el tiempo necesarias para el
proceso de filtrado (delays).
Tanto los datos de la seal muestreada como los coeficientes y delays tienen un formato de 16
bits representados en formato fraccional [3].
Para realizar el proceso de filtrado se emplea una funcin de C++ proporcionada por el fabricante
del microcontrolador [3]. Dicha funcin recibe como parmetros de entrada el vector con las
muestras de la seal de audio, la estructura que contiene los coeficientes del filtro y los delays.
sta entrega como resultado otro vector con los datos filtrados que se enva al cdec por el bus
DCI para su reproduccin.

3. Diseo e implementacin
3.1. Estructura Cannica
Para implementar un filtro en su forma cannica fue necesario representarlo como conexin en
cascada de las estructuras bicuadrticas, y una ganancia global que es la concatenacin de las
ganancias de cada bloque y la ganancia de salida (ec. 2) [3]. La misma, junto con los coeficientes
de cada seccin fue convertida para crear el cdigo.

=1
(2)

Tras la implementacin del filtro especificado, se comprob que el comportamiento del sistema era
inestable. Esto se debe a que en el momento en que se realiz la conversin del formato double
de 32 bits de punto flotante (en MATLAB) al formato fractional de 16 bits de punto fijo, se
cometi un error debido a que la ganancia global era ms pequea que el menor nmero que se
puede representar mediante el formato Q15. Por lo tanto el sistema tena una ganancia excesiva.
Al reducir la atenuacin en la banda de rechazo disminuyeron las bandas de transicin y el
sistema se volvi estable ya que la ganancia tom un valor que puede ser representado por el
formato fraccional.
Utilizando los parmetros
1
y
2
igual a 20 dB se obtuvieron las respuestas de la Fig. 3.


(a) (b)
Fig. 3. Respuestas en frecuencia para estructura cannica. (a) En MATLAB. (b) En el kit (*).

3.2. Estructura Transpuesta
Para implementar un filtro en su forma transpuesta fue necesario distribuir la ganancia de cada
bloque en el numerador de la seccin bicuadrtica (ec. 3) y la ganancia de salida en cualquiera de
los numeradores [3].


2
.
2
+


1
.
1
+

2
.
2
+
1
.
1
+
0
; 1 (3)

Los coeficientes resultantes fueron convertidos para formar la estructura. La implementacin del
filtro especificado arroj como resultado las respuestas de la Fig. 4:


(a) . (b)
Fig. 4. Respuestas en frecuencia para estructura transpuesta. (a) En MATLAB. (b) En el kit (*).

(*)Los niveles de atenuacin por debajo de 56dB no pudieron ser medidos con el osciloscopio
empleado ya que se alcanza el piso de ruido del mismo.

4. Comparaciones
Dadas las especificaciones del filtro propuesto, la implementacin a travs de una estructura de
procesamiento cannica no fue posible. En cambio empleando la estructura transpuesta, se logr
cumplir las caractersticas deseadas. Esto indica que con la estructura transpuesta se pueden
obtener filtros ms exigentes.
El algoritmo de procesamiento empleado por la estructura transpuesta requiere mayor cantidad de
operaciones que la estructura cannica para un filtro idntico [2]. Es decir que con la estructura
cannica se obtienen mayor velocidad de procesamiento.
Al ser la estructura de procesamiento transpuesta ms compleja ocupa mayor lugar en la memoria
de programa que la estructura cannica para un filtro de caractersticas idnticas [3].

5. Conclusin
El rango de valores representables por el tipo de variable de punto fijo es mucho menor al de
punto flotante. Siendo un agravante en este caso que el formato de punto flotante utilizado en
MATLAB es de 32 bits y el de punto fijo utilizado en C++ es de 16 bits. Por lo tanto, valores muy
pequeos de una variable en punto flotante no pueden ser representados en punto fijo. Tal
situacin se observ en el filtro cannico en el cual la ganancia global, que es la concatenacin de
varias ganancias cuyos valores son muy reducidos, es ms pequea que el mnimo valor que se
puede representar con punto fijo. Por este motivo, el filtro especificado no pudo ser implementado
en el kit y se tuvieron que restablecer algunas caractersticas del filtro para poder hacerlo.
Utilizando la estructura transpuesta no se tiene este inconveniente ya que las ganancias estn
distribuidas en cada seccin. Por lo tanto, se tienen muchos coeficientes pequeos pero
representables en formato de punto fijo y no un solo valor que no es representable como en el
caso de la estructura cannica.
Utilizando la estructura transpuesta no se tiene este inconveniente ya que las ganancias estn
distribuidas en cada seccin. Por lo tanto, se tienen muchos coeficientes pequeos pero
representables en formato de punto fijo y no un solo valor que no es representable como en el
caso de la estructura cannica.
En virtud de lo analizado, no se pudo implementar el filtro especificado con la estructura cannica
pero s con la transpuesta.
La estructura de procesamiento transpuesta permite obtener filtros con caractersticas ms
exigentes, a costa de una velocidad de procesamiento ms lenta. Por otro lado con la estructura
cannica se obtiene mayor velocidad de procesamiento, con la posibilidad de implementar filtros
menos exigentes.

6. Referencias
[1] MathWorks Inc., MATLAB User Guide, MathWorks. (2010)
[2] Airoldi Alejandro A., Saravia Andres R.; Diseando sistemas embebidos con libreras de
microchip 1ed.; Mcelectronics (2012).
[3] 16-bit language tools libraries, Microchip
[4] dsPIC 33FJ256GP506 Data Sheet, Microchip
[5] WM8510 Data Sheet, Wolfson microelectronics.

Potrebbero piacerti anche