I M P L E M E N T A C I Ó N D E
F I L T R O S D I G I T A L E S
E N F P G A ' S
V
IEC FRANCISCO JAVIER TORRES VALLE 84
5.1 INTRODUCCIÓN
Un FPGA es un dispositivo cuyas características pueden ser modificadas, manipuladas o almacenadas mediante programación. La arquitectura de un FPGA (Field Programmable Gate Array) consiste en arreglos de múltiples celdas lógicas las cuales se comunican unas con otras mediante canales de conexión verticales y horizontales. Cada celda lógica contiene arreglos de compuertas lógicas AND y OR, así como un número definido de registros y multiplexores. Mediante estos recursos es posible implementar funciones matemáticas y de almacenamiento de datos. Dada la gran densidad de compuertas con las que cuenta un FPGA, es posible implementar sistemas digitales muy complejos, entre los que destaca el filtrado digital. Además, en un FPGA es posible realizar modificaciones de último minuto sin que esto implique grandes alteraciones en el hardware o en el software.
5.2 ANTECEDENTES
En las últimas tres décadas la ingeniería se ha visto revolucionada en el campo del procesamiento digital de señales, donde los filtros digitales forman un apartado muy importante, ya que estos se encuentran en una extensa gama de aplicaciones. Desde procesamiento de audio y vídeo hasta control de motores; donde la utilización del filtrado digital incluye ventajas como:
1) El ancho de banda y la calidad del filtro no están necesariamente relacionadas.
2) Al utilizar dispositivos programables, la función de transferencia de el filtro puede ser transformada sin más modificaciones que el cambio de los coeficientes en memoria.
3) Variables como temperatura o alteraciones en el voltaje no afectan la funcionalidad del circuito.
4) El costo de la aplicación es relativamente bajo.
5.3 MARCO
TEÓRICO
El término filtro se utiliza comúnmente para describir un dispositivo que discrimina aquello que pasa a través de él. Así, por ejemplo, un filtro de aire permite que sólo pase aire a través de éste, evitando que las partículas de polvo presentes en el aire lo atraviesen. Un filtro digital es un sistema lineal e invariante en el tiempo (LTI) que modifica el espectro en frecuencia de la señal de entrada X(w), según la respuesta que tenga en frecuencia H(w) (conocida como función de transferencia), para dar lugar a una señal de salida con espectro: Y(w) = H(w) * X(w). En cierto sentido, H(w) actúa como una función de ponderación o función de conformación espectral para las diferentes componentes frecuenciales de la señal de entrada. Los sistemas LTI se clasifican como: FIR (finite impulse response) que se caracterizan pos ser sistemas no recursivos, e IIR (infinite impulse response) que se distinguen por tener retroalimentación en la señal salida.
5.3.1 FILTROS FIR
Un filtro FIR de orden M se describe mediante la ecuación en diferencias: y(n) = b0 x(n) + b1 x(n-1) + b2 x(n-2) + bM x(n-M), donde la secuencia bk son los coeficientes del filtro. En este tipo de filtrado no existe retroalimentación. Además, la respuesta al impulso H(w), es de duración finita ya que si la entrada se mantiene en cero durante M periodos consecutivos la salida también será cero. Algunas de las ventajas de este tipo de filtros son las siguientes:
1) Un filtro FIR puede ser diseñado para tener fase lineal.
2) Siempre son estables porque son hechos únicamente con ceros en el plano complejo.
3) Los errores por desbordamiento no son problemáticos porque la suma de productos en un filtro FIR es desempeñada por un conjunto finito de datos.
4) Un filtro FIR es fácil de comprender e implementar.
Figura 5.1 Estructura para la realización de filtros IIR
5.3.2 FILTROS IIR
Los filtros IIR corresponden directamente al equivalente analógico. Una forma de diseñar filtros IIR es creando la función de transferencia deseada en el dominio analógico para transformarla al dominio z y después calcular los coeficientes del filtro IIR mediante los cuales se obtiene la siguiente ecuación en diferencias: y(n) = b0 x(n) + b1 x(n – 1) + b2 x(n – 2) + ... bM x(n –M) - a1 y(n – 1) - a2 y(n – 2) - ....- aN y(n – N), donde las variables ak y bk son los coeficientes del filtro. Dentro de las ventajas que ofrecen los filtros IIR sobre los tipo FIR encontramos:
1) Los filtros IIR requieren menos memoria y menos instrucciones para implementar su función de transferencia.
2) Un filtro IIR se diseña mediante el calculo de polos y ceros en el plano complejo. El uso de polos confieren a un filtro IIR la capacidad de implementar funciones de transferencia que es imposible realizar mediante filtros FIR.
3) Es posible trasladar un filtro IIR a un modelo analítico.
Sin embargo, algunas consideraciones que se deben considerar en la implementación de filtros IIR son las siguientes:
1) Los filtros IIR no son necesariamente estables, es tarea del diseñador buscar la estabilidad del sistema.
2) Los filtros IIR producen en general distorsión de fase.
3) La posibilidad desbordamiento de resultados en la operaciones realizadas deben ser consideradas ya que un filtro IIR se implementa mediante sumas de productos que están basadas en una suma infinita.
La implementación de filtros IIR puede hacerse de varias formas. Asumiendo el comportamiento lineal e invariante en el tiempo del sistema, la ecuación en diferencias de un filtro puede ser manipulada matemáticamente para obtener una realización con N elementos de memoria, (N + M + 1) multiplicadores y N sumadores, conocida como Forma Directa II Transpuesta.
IEC FRANCISCO JAVIER TORRES VALLE 86
Figura 5.2 Implementación de filtros IIR mediante FDII-T
5.4
METODOLOGÍA DE DISEÑO
PARA FILTROS DIGITALES
El proceso de diseño de un filtro digital requiere de los siguientes pasos.1) Establecer las especificaciones del filtro, como lo son: ancho de banda, atenuaciones, ganancias, etc.
2) Determinar la función de transferencia que cumpla las especificaciones.
3) Elaborar un diagrama a bloques con las operaciones a realizar, el cual especifica en hardware los elementos del circuito y sus interconexiones.
5.5
IMPLEMENTACIÓN EN
FPGA'S
El almacenaje de un dato significa retrasar su uso una cantidad normalmente igual al periodo de muestreo. Este retraso se representa mediante z -1
(retraso de una unidad), z -2(dos unidades), etc. Por lo que los filtros digitales pueden realizarse usando los elementos correspondientes a las operaciones de multiplicación, adición y almacenaje de datos en el FPGA, utilizando alguna de las estructuras para la realización de sistemas LTI. Una correcta elección de la estructura a implementar puede optimizar significativamente la eficacia del sistema.
5.6
DISEÑO DE UN FILTRO
PASA-BAJAS
Un filtro pasa - bajas ideal es aquel que permite pasar todas aquellas frecuencias que se encuentran por debajo de una frecuencia de corte especificada (fc), atenuando las que se encuentran por encima de esta. La siguiente ecuación en diferencias corresponde a un filtro IIR pasa - bajas tipo butteworth de orden 5, frecuencia de muestreo de 48.8 kHz y con una frecuencia de corte a 5 kHz:
y(n) = 0.0014*x(n) + 0.0071*x(n-1) + 0.0142*x(n-2) + 0.0142*x(n-3) + 0.0071*x(n-4) + 0.0014*x(n-5) + 2.9272*y(n-1) - 3.7016*y(n-2) + 2.4521*y(n-3) - 0.8422*y(n-4) + 0.1191*y(n-5)
A continuación se muestra la respuesta en frecuencia del sistema en magnitud y fase.
1 01 1 02 1 03 1 04 1 05 0 0 .2 0 .4 0 .6 0 .8 1 1 .2 F |H (F )| F U N C I Ó N D E T R A N SF E R E N C I A 1 01 1 02 1 03 1 04 1 05 - 3 - 2 - 1 0 1 2 3 F <) H (F )
Figura 5.3 Respuesta del filtro en magnitud y fase
La gráfica anterior sería la función de transferencia ideal del filtro a implementar, pero en un sistema digital todo se trabaja en el sistema binario por lo que debemos convertir los coeficientes obtenidos a dicho sistema. Dicha conversión implica una cantidad considerable de bits si es que se desea obtener la misma calidad. Pero el utilizar más bits implica la utilización de mayor cantidad de recursos del FPGA, el cual en el presente trabajo es un XC4010XLPC84. De hecho un multiplicador de 20 bits requiere del 65% de los recursos de este dispositivo, por lo que se opto por implementar el filtro utilizando la función de transferencia H(ω) del filtro anterior con las primeras once muestras de la respuesta al impulso del sistema LTI y realizar el diseño del filtro utilizando la estructura FIR. Los coeficientes utilizados son los siguientes: b(n) = ( 1, 2, 3, 4, 4, 3, 2, 1, -1, -1, -1 ), los cuales cuando se digitalizan utilizando el formato complemento a dos quedan de la siguiente manera: bk = ( 0001,
0010, 0011, 0100, 0100, 0011, 0010, 0001, 1111, 1111, 1111 )
El diseño de la estructura FIR se realizo con VHDL para lo cual se describieron utilizando once registros en una configuración FIFO para realizar los retardos z-1 y cuyas salidas se multiplican por el coeficiente respectivo. EL dispositivo convertidor analógico - digital utilizado es el AK4520A el cual tiene una longitud de palabra de 20 bits con salida en complemento a dos. Por lo que el filtrado se realizo con once multiplicaciones de 20x4 y un acumulador de dichas operaciones. La cuantización de los coeficientes afecta la respuesta en frecuencia del sistema, a continuación se muestra la respuesta en frecuencia en magnitud del filtro con lo coeficientes cuantizados
IEC FRANCISCO JAVIER TORRES VALLE 88 1 01 1 02 1 03 1 04 0 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 0 F |H (F )| F U N C I Ó N D E T R A N S F E R E N C I A
Figura 5.4 Respuesta del filtro en magnitud utilizando los coeficientes cuantizados
A continuación se muestra la descripción en VHDL de la estructura FIR.
--- FIR
---
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package fir_coef is
subtype coef_word is signed
(3 downto 0);
subtype coef_range is integer range
0 to 10;
type coef_table is array
(0 to 10) of coef_word;
constant coef_rom: coef_table:= ( ("0001"), ("0010"), ("0011"), ("0100"), ("0100"), ("0011"), ("0010"), ("0001"), ("1111"), ("1111"), ("1111")); end fir_coef; library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.fir_coef.all;
entity fir is
port(clk,reset,load: in std_logic;
data_in: in signed
(19 downto 0);
data_out: out signed
(19 downto 0));
end fir;
architecture a_fir of fir is type fifo_array is array
(0 to 10) of signed
(19 downto 0);
signal fifo: fifo_array;
begin process (reset,clk,fifo,data_in) begin if reset = '0' then for i in 0 to 10 loop fifo(i) <= (others => '0'); end loop;
elsif clk'event and clk = '1'
then if load = '1' then for i in 1 to 10 loop fifo(i) <= fifo(i-1); end loop; fifo(0) <= data_in; end if; end if; end process; process (fifo)
variable prod,data_tmp: signed (23 downto 0);
begin
data_tmp := (others => '0');
for i in 0 to 10 loop
prod := fifo(i) * coef_rom(i); data_tmp := data_tmp + prod; end loop;
data_out <=
data_tmp(23)&data_tmp(18 downto 0);
end process;
end a_fir;
El diseño del circuito se basa en el siguiente diagrama.
IEC FRANCISCO JAVIER TORRES VALLE
90
la implementación del diseño, como señales de prueba se utilizaron senoidales de 1 Vpp aprox. a diferentes frecuencias. A la frecuencia de corte del
cual es necesario para poder decidir si el filtro está bien diseñado.
Figura 5.6 Salida del filtro a 1.027 kHz
IEC FRANCISCO JAVIER TORRES VALLE 92
Figura 5.6 Salida del filtro a 3.021 kHz
Figura 5.6 Salida del filtro a 6.061 kHz
Figura 5.6 Salida del filtro a 7.092 kHz
5.7 RESULTADOS
• Los filtros digitales cuentan con muchas ventajas que los hacen más atractivos que sus predecesores analógicos.
• Al utilizar dispositivos programables, como un FPGA, la función de transferencia del filtro puede ser transformada sin más
hardware de un filtro digital puede implementar una gran variedad de filtros, sin que esto implique modificaciones en el circuito.
• Las funciones de transferencia de los filtros digitales cuentan con rigurosas especificaciones, como que las frecuencias que se desea sean rechazadas pueden ser
IEC FRANCISCO JAVIER TORRES VALLE 94 V o ( d b ) - 4 5 - 4 0 - 3 5 - 3 0 - 2 5 - 2 0 - 1 5 - 1 0 - 5 0 5 1 .0 0 E + 0 0 1 . 0 0 E + 0 1 1 . 0 0 E + 0 2 1 . 0 0 E + 0 3 1 . 0 0 E + 0 4 F r e c u e n c i a ( H z ) db Frecuencia (Hertz) Vo (Volts) Vo (db) 1.00E-00 1 0 1.03E+03 1.044 0.374009 2.02E+03 0.981 -0.166619 3.02E+03 0.818 -1.744933 5.00E+03 0.475 -6.466127 6.06E+03 0.281 -11.02587 7.09E+03 0.168 -15.49381 1.00E+04 0.01 -40