14.11.2013 Views

Implementación de Filtros Digitales Tipo FIR en FPGA

Implementación de Filtros Digitales Tipo FIR en FPGA

Implementación de Filtros Digitales Tipo FIR en FPGA

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Implem<strong>en</strong>tación</strong> <strong>de</strong> <strong>Filtros</strong> <strong>Digitales</strong> <strong>Tipo</strong> <strong>FIR</strong><br />

<strong>en</strong> <strong>FPGA</strong><br />

Jesús Antonio Álvarez Cedillo, Klauss Michael Lindig Bos, Gustavo Martínez Romero<br />

Resum<strong>en</strong>—En este artículo se hace la <strong>de</strong>scripción <strong>de</strong>l diseño <strong>de</strong><br />

un filtro digital tipo <strong>FIR</strong> con ocho bits <strong>de</strong> ancho <strong>de</strong> datos. Este<br />

sistema ha sido implem<strong>en</strong>tado <strong>en</strong> un <strong>FPGA</strong> (SPARTAN 3E <strong>de</strong><br />

XILINX) y posee un software que realiza el cálculo <strong>de</strong> los<br />

coefici<strong>en</strong>tes <strong>de</strong>l filtro y la reconfiguración <strong>de</strong>l hardware. Las<br />

pruebas se realizaron usando el programa MATHLAB para<br />

verificar su funcionami<strong>en</strong>to.<br />

Palabras clave—<strong>Filtros</strong> digitales, tratami<strong>en</strong>to digital <strong>de</strong> señales,<br />

<strong>FPGA</strong>, VHDL, <strong>FIR</strong>.<br />

IMPLEMENTATION OF DIGITAL FILTERS<br />

OF <strong>FIR</strong> TYPE IN <strong>FPGA</strong><br />

Abstract—This paper pres<strong>en</strong>ts the <strong>de</strong>scription of <strong>de</strong>velopm<strong>en</strong>t<br />

of digital filter of <strong>FIR</strong> type with eight bits data transmission. This<br />

system was implem<strong>en</strong>ted in <strong>FPGA</strong> (SPARTAN 3E by XILINX)<br />

and inclu<strong>de</strong>s the software for calculation of filter coeffici<strong>en</strong>ts and<br />

hardware reconfiguration. The experim<strong>en</strong>ts were conducted<br />

using simulation in MATHLAB.<br />

interno que por su <strong>de</strong>p<strong>en</strong><strong>de</strong>ncia <strong>de</strong>l tipo <strong>de</strong> señal a filtrar, así<br />

podríamos llamar filtro digital tanto a un filtro que realiza el<br />

procesado <strong>de</strong> señales digitales como a otro que lo haga <strong>de</strong><br />

señales analógicas.<br />

El filtrado digital consiste <strong>en</strong> la realización interna <strong>de</strong> un<br />

procesado <strong>de</strong> datos <strong>de</strong> <strong>en</strong>trada. El valor <strong>de</strong> la muestra <strong>de</strong> la<br />

<strong>en</strong>trada actual y algunas muestras anteriores (que previam<strong>en</strong>te<br />

habían sido almac<strong>en</strong>adas) son multiplicadas por unos<br />

coefici<strong>en</strong>tes <strong>de</strong>finidos. También podría tomar valores <strong>de</strong> la<br />

salida <strong>en</strong> instantes pasados y multiplicarlos por otros<br />

coefici<strong>en</strong>tes. Finalm<strong>en</strong>te todos los resultados <strong>de</strong> todas estas<br />

multiplicaciones son sumados, dando una salida para el instante<br />

actual. Esto implica que internam<strong>en</strong>te tanto la salida como la<br />

<strong>en</strong>trada <strong>de</strong>l filtro serán digitales, por lo que pue<strong>de</strong> ser necesario<br />

una conversión analógico-digital o digital-analógico para uso<br />

<strong>de</strong> filtros digitales <strong>en</strong> señales analógicas. Un elem<strong>en</strong>to <strong>de</strong><br />

prueba <strong>de</strong> estos circuitos típicam<strong>en</strong>te es el ruido blanco<br />

(Figura 1).<br />

In<strong>de</strong>x Terms—Digital filter, digital signal processing, <strong>FPGA</strong>,<br />

VHDL, <strong>FIR</strong>.<br />

U<br />

I. INTRODUCCIÓN<br />

n filtro es un sistema que, <strong>de</strong>p<strong>en</strong>di<strong>en</strong>do <strong>de</strong> algunos<br />

parámetros, realiza un proceso <strong>de</strong> discriminación <strong>de</strong> una<br />

señal <strong>de</strong> <strong>en</strong>trada obt<strong>en</strong>i<strong>en</strong>do variaciones <strong>en</strong> su salida. Los<br />

filtros digitales ti<strong>en</strong><strong>en</strong> como <strong>en</strong>trada una señal analógica o<br />

digital y a su salida ti<strong>en</strong><strong>en</strong> otra señal analógica o digital,<br />

pudi<strong>en</strong>do haber cambiado <strong>en</strong> amplitud, frecu<strong>en</strong>cia o fase<br />

<strong>de</strong>p<strong>en</strong>di<strong>en</strong>do <strong>de</strong> las características <strong>de</strong>l filtro.<br />

El filtrado digital es parte <strong>de</strong>l procesado <strong>de</strong> señal digital. Se le<br />

da la <strong>de</strong>nominación <strong>de</strong> digital más por su funcionami<strong>en</strong>to<br />

Manuscrito recibido el 13 <strong>de</strong> marzo <strong>de</strong>l 2008. Manuscrito aceptado para su<br />

publicación el 16 <strong>de</strong> junio <strong>de</strong>l 2008.<br />

J. A. Alvarez Cedillo, C<strong>en</strong>tro <strong>de</strong> Innovación y Desarrollo Tecnológico <strong>en</strong><br />

Cómputo <strong>de</strong>l Instituto Politécnico Nacional, México, D. F. (teléfono: 57296000<br />

Ext. 52535; e-mail: jaalvarez@ipn.mx ).<br />

K. M. Lindig Bos, Dirección <strong>de</strong> Cómputo y Telecomunicaciones <strong>de</strong>l<br />

Instituto Politécnico Nacional, México, D. F. (teléfono: 57296000 Ext. 52536;<br />

e-mail: mlindig@ipn.mx).<br />

G. Martínez Romero, C<strong>en</strong>tro <strong>de</strong> Investigación e Innovación Tecnológica<br />

Unidad Azcapotzalco <strong>de</strong>l Instituto Politécnico Nacional, México, D. F.<br />

(teléfono: 57296000 Ext. 52535; e-mail: gumartinezr@ipn.mx).<br />

Fig. 1. Gráfica <strong>de</strong> ruido blanco<br />

II. FILTROS <strong>FIR</strong><br />

Los filtros digitales se usan frecu<strong>en</strong>tem<strong>en</strong>te para tratami<strong>en</strong>to<br />

digital <strong>de</strong> la imag<strong>en</strong> o para tratami<strong>en</strong>to <strong>de</strong>l sonido digital.<br />

<strong>FIR</strong> es un acrónimo <strong>en</strong> inglés para Finite Impulse Response o<br />

Respuesta finita al impulso. Se trata <strong>de</strong> un tipo <strong>de</strong> filtros<br />

digitales <strong>en</strong> el que, como su nombre indica, si la <strong>en</strong>trada es una<br />

señal impulso, la salida t<strong>en</strong>drá un número finito <strong>de</strong> términos no<br />

nulos.<br />

Para obt<strong>en</strong>er la salida sólo se basan <strong>en</strong> <strong>en</strong>tradas actuales y<br />

anteriores. Su expresión <strong>en</strong> el dominio n es:


Jesús Antonio Álvarez Cedillo, Klauss Michael Lindig Bos, Gustavo Martínez Romero<br />

En la expresión anterior N es el or<strong>de</strong>n <strong>de</strong>l filtro, que también<br />

coinci<strong>de</strong> con el número <strong>de</strong> términos no nulos y con el número<br />

<strong>de</strong> coefici<strong>en</strong>tes <strong>de</strong>l filtro. Los coefici<strong>en</strong>tes son bk.<br />

La salida también pue<strong>de</strong> expresarse como la convolución <strong>de</strong><br />

la señal <strong>de</strong> <strong>en</strong>trada x(n) con la respuesta impulsional h(n):<br />

Aplicando la transformada Z a la expresión anterior:<br />

La estructura básica <strong>de</strong> un <strong>FIR</strong> se pres<strong>en</strong>ta <strong>en</strong> la Fig. 2.<br />

Fig. 2. Estructura básica <strong>de</strong> un <strong>FIR</strong><br />

En la figura 2 los términos β son los coefici<strong>en</strong>tes y los T son<br />

retardos.<br />

Pue<strong>de</strong>n hacerse multitud <strong>de</strong> variaciones <strong>de</strong> esta estructura.<br />

Hacerlo como varios filtros <strong>en</strong> serie, <strong>en</strong> cascada, etc.<br />

Hay tres métodos básicos para diseñar este tipo <strong>de</strong> filtros:<br />

− Método <strong>de</strong> las v<strong>en</strong>tanas. Las más habituales son:<br />

o V<strong>en</strong>tana rectangular<br />

o V<strong>en</strong>tana <strong>de</strong> Barlett<br />

o V<strong>en</strong>tana <strong>de</strong> Hanning<br />

o V<strong>en</strong>tana <strong>de</strong> Hamming<br />

o V<strong>en</strong>tana <strong>de</strong> Blackman<br />

o V<strong>en</strong>tana <strong>de</strong> Kaiser<br />

− Muestreo <strong>en</strong> frecu<strong>en</strong>cia.<br />

− Rizado constante,<br />

III. ANTECEDENTES<br />

Como ya se m<strong>en</strong>cionó <strong>en</strong> líneas anteriores, es gracias al<br />

avance <strong>de</strong> las computadoras mo<strong>de</strong>rnas que el tratami<strong>en</strong>to<br />

digital <strong>de</strong> señales se ha expandido y se ha hecho cada vez más<br />

fuerte. Han contribuido con su velocidad al montaje <strong>de</strong><br />

algoritmos <strong>de</strong> procesami<strong>en</strong>to para lograr <strong>en</strong>tregar respuestas<br />

casi instantáneas, siempre <strong>de</strong>ntro <strong>de</strong> los límites exigidos por el<br />

<strong>de</strong>sarrollo <strong>en</strong> las difer<strong>en</strong>tes aplicaciones <strong>en</strong> que han sido<br />

utilizadas.<br />

Las computadoras no sólo han influido <strong>en</strong> el montaje <strong>de</strong><br />

algoritmos, a<strong>de</strong>más se han convertido <strong>en</strong> una herrami<strong>en</strong>ta<br />

fundam<strong>en</strong>tal para los diseñadores, ya que gracias a éstos se ha<br />

conseguido elaborar mejores y variados algoritmos para el<br />

diseño <strong>de</strong> filtros y herrami<strong>en</strong>tas <strong>de</strong> proceso. Una herrami<strong>en</strong>ta<br />

muy pot<strong>en</strong>te para el análisis <strong>de</strong> imág<strong>en</strong>es es el MATHLAB.<br />

El diseño <strong>de</strong> filtros se ha apoyado <strong>en</strong> los dispositivos lógicos<br />

programables, los cuales han jugado un papel muy importante<br />

<strong>en</strong> el montaje <strong>de</strong> los filtros digitales, puesto que gracias a ellos<br />

se ha logrado un a<strong>de</strong>cuado funcionami<strong>en</strong>to <strong>en</strong> tiempo real. El<br />

<strong>FPGA</strong> es uno <strong>de</strong> estos dispositivos, que posee la cualidad <strong>de</strong> la<br />

re-configuración, lo que permite realizar cambios <strong>en</strong> la<br />

arquitectura sin necesidad <strong>de</strong> producir variaciones <strong>en</strong> el<br />

montaje o <strong>en</strong> el software que se está operando.<br />

IV. FACTORES DE IMPLEMENTACIÓN<br />

La implem<strong>en</strong>tación <strong>de</strong> estos filtros está <strong>de</strong>terminada por<br />

algunos factores que ayudan a la calificación <strong>de</strong> dichos<br />

sistemas, tales como:<br />

1. Complejidad computacional, requisitos <strong>de</strong> memoria y<br />

longitud <strong>de</strong> palabra.<br />

2. La Complejidad computacional: está <strong>de</strong>terminada por<br />

el número <strong>de</strong> operaciones aritméticas necesarias para<br />

el cálculo <strong>de</strong> la salida, como sumas, multiplicaciones y<br />

divisiones.<br />

3. Requisitos <strong>de</strong> memoria: hac<strong>en</strong> refer<strong>en</strong>cia a la cantidad<br />

<strong>de</strong> posiciones <strong>de</strong> memoria que son necesarias para<br />

almac<strong>en</strong>ar elem<strong>en</strong>tos, tales como los coefici<strong>en</strong>tes <strong>de</strong>l<br />

sistema, <strong>en</strong>tradas retrasadas, salidas retrasadas y<br />

algunos valores internos necesarios para el cálculo <strong>de</strong><br />

la salida.<br />

4. Longitud <strong>de</strong> palabra: se refiere a un efecto <strong>de</strong><br />

precisión que se <strong>en</strong>cu<strong>en</strong>tra dado por la cuantificación,<br />

tanto <strong>de</strong> los coefici<strong>en</strong>tes <strong>de</strong>l filtro como <strong>de</strong> la señal <strong>de</strong><br />

<strong>en</strong>trada. Este elem<strong>en</strong>to se hace pres<strong>en</strong>te <strong>en</strong> filtros<br />

implem<strong>en</strong>tados <strong>en</strong> hardware y <strong>en</strong> software.<br />

Las operaciones realizadas <strong>de</strong>b<strong>en</strong> ser redon<strong>de</strong>adas o<br />

truncadas para po<strong>de</strong>r ajustarse a las restricciones <strong>de</strong> operación<br />

<strong>de</strong>l or<strong>de</strong>nador, <strong>en</strong> el caso <strong>de</strong>l software, o a las características<br />

<strong>de</strong>finidas por el diseñador <strong>de</strong>l hardware digital.<br />

V. TIPOS DE FILTROS<br />

Exist<strong>en</strong> dos tipos básicos <strong>de</strong> filtros digitales:<br />

• no recursivos<br />

• recursivos.<br />

Para los filtros no recursivos la función <strong>de</strong> transfer<strong>en</strong>cia<br />

conti<strong>en</strong>e un número finito <strong>de</strong> elem<strong>en</strong>tos, cuya ecuación <strong>en</strong><br />

difer<strong>en</strong>cias es:<br />

Y su equival<strong>en</strong>te <strong>en</strong> función <strong>de</strong> transfer<strong>en</strong>cia es:<br />

Esta clase <strong>de</strong> sistemas se caracteriza por no poseer<br />

realim<strong>en</strong>taciones, <strong>de</strong> lo cual se observa que la salida se<br />

<strong>en</strong>cu<strong>en</strong>tra dada <strong>en</strong> función <strong>de</strong> la <strong>en</strong>trada y <strong>de</strong> sus respectivos<br />

retrasos.


<strong>Implem<strong>en</strong>tación</strong> <strong>de</strong> <strong>Filtros</strong> <strong>Digitales</strong> <strong>Tipo</strong> <strong>FIR</strong> <strong>en</strong> <strong>FPGA</strong><br />

Para los filtros recursivos la ecuación <strong>en</strong> difer<strong>en</strong>cias se<br />

<strong>en</strong>cu<strong>en</strong>tra expresada <strong>en</strong> función <strong>de</strong> dos formas polinomiales:<br />

Esta ecuación nos lleva a <strong>en</strong>contrar una función <strong>de</strong><br />

transfer<strong>en</strong>cia <strong>de</strong> la forma:<br />

Fig. 4. Entidad <strong>de</strong> un filtro Fir <strong>en</strong> <strong>FPGA</strong> XILINX<br />

La arquitectura se <strong>de</strong>fine <strong>de</strong> la sigui<strong>en</strong>te manera:<br />

A los primeros pert<strong>en</strong>ec<strong>en</strong> los filtros tipo <strong>FIR</strong>, caracterizados<br />

por no poseer realim<strong>en</strong>tación, y a los segundos los filtros tipo<br />

IIR, <strong>en</strong> don<strong>de</strong> la salida se <strong>en</strong>cu<strong>en</strong>tra dada <strong>en</strong> función <strong>de</strong> la<br />

<strong>en</strong>trada y <strong>de</strong> las salidas <strong>en</strong> instantes previos.<br />

VI. IMPLEMENTACIÓN EN EL <strong>FPGA</strong><br />

Se creó una herrami<strong>en</strong>ta <strong>en</strong> hardware como filtro tipo <strong>FIR</strong>,<br />

esta fue probada <strong>en</strong> una tarjeta XILINX SPARTAN 3E. El kit<br />

<strong>de</strong> <strong>de</strong>sarrollo se muestra <strong>en</strong> la figura 3.<br />

ARCHITECTURE RTL OF <strong>FIR</strong> IS<br />

TYPE t_operacion IS ARRAY (7 DOWNTO 1) OF std_logic_vector(N-1<br />

DOWNTO 0);<br />

SIGNAL operacion : t_operacion;<br />

SIGNAL add_01 : std_logic_vector(N DOWNTO 0);<br />

SIGNAL add_23 : std_logic_vector(N DOWNTO 0);<br />

SIGNAL add_45 : std_logic_vector(N DOWNTO 0);<br />

SIGNAL add_67 : std_logic_vector(N DOWNTO 0);<br />

SIGNAL add_0123 : std_logic_vector(N+1 DOWNTO 0);<br />

SIGNAL add_4567 : std_logic_vector(N+1 DOWNTO 0);<br />

SIGNAL add_all : std_logic_vector(N+2 DOWNTO 0);<br />

SIGNAL vystup : std_logic_vector(N+2 DOWNTO 0);<br />

SIGNAL pom : std_logic_vector(N+2 DOWNTO 0);<br />

SIGNAL pipe_0123 : std_logic_vector(N+1 DOWNTO 0);<br />

SIGNAL pipe_4567: std_logic_vector(N+1 DOWNTO 0);<br />

BEGIN<br />

Como es posible observar las señales <strong>de</strong> operación son<br />

diversas, la i<strong>de</strong>a principal es mostrar el manejo <strong>de</strong>l pipeline, el<br />

circuito pres<strong>en</strong>tará el esquema <strong>de</strong> la figura 5.<br />

Fig. 3. Kit <strong>de</strong> <strong>de</strong>sarrollo XILINX SPARTAN 3E<br />

La <strong>en</strong>tidad fue <strong>de</strong>finida <strong>de</strong> la sigui<strong>en</strong>te forma:<br />

ENTITY <strong>FIR</strong> IS GENERIC (N : natural := 16 );<br />

PORT ( SIGNAL CLK : IN std_logic;<br />

SIGNAL RES_n : IN std_logic;<br />

SIGNAL X : IN std_logic_vector( N-1 DOWNTO 0 );<br />

SIGNAL Y : OUT std_logic_vector( N-1 DOWNTO 0 ) );<br />

END ENTITY <strong>FIR</strong> ;<br />

Como es posible observar se manti<strong>en</strong>e la señal <strong>de</strong> reloj CLK<br />

como <strong>en</strong>trada, dos valores <strong>de</strong> ingreso don<strong>de</strong> X es dato <strong>de</strong> 2 bits<br />

y RES_n es un reset activado por pulso. La salida se <strong>en</strong>cu<strong>en</strong>tra<br />

<strong>de</strong>finida por un valor <strong>de</strong> dato <strong>de</strong> 2 bits. Tal como se muestra <strong>en</strong><br />

la figura 4.<br />

Fig. 5. Esquema RTL<br />

El pipeline característico se codifico <strong>de</strong> la sigui<strong>en</strong>te manera:<br />

Si es presionado el reset RES_n el pipeline inicia su<br />

operación, si existe el ev<strong>en</strong>to <strong>de</strong>l reloj y es un pulso positivo,<br />

<strong>en</strong>tonces realiza las operaciones retardas y secu<strong>en</strong>ciales.<br />

pipeline: PROCESS (CLK, RES_n)<br />

BEGIN<br />

IF RES_n='0' THEN<br />

pipe_0123 '0');


Jesús Antonio Álvarez Cedillo, Klauss Michael Lindig Bos, Gustavo Martínez Romero<br />

pipe_4567 '0');<br />

ELSIF CLK='1' AND CLK'EVENT THEN<br />

pipe_0123


<strong>Implem<strong>en</strong>tación</strong> <strong>de</strong> <strong>Filtros</strong> <strong>Digitales</strong> <strong>Tipo</strong> <strong>FIR</strong> <strong>en</strong> <strong>FPGA</strong><br />

−<br />

seleccionadas por el usuario <strong>de</strong>s<strong>de</strong> el exterior <strong>de</strong> la<br />

arquitectura.<br />

La arquitectura pres<strong>en</strong>ta una etapa que se <strong>en</strong>carga <strong>de</strong><br />

comunicarse con el software y, <strong>de</strong> esta forma, mediante<br />

una interfase <strong>de</strong> puerto paralelo a la PC.<br />

REFERENCIAS<br />

[1] Willis J. Tompkins. Biomedical digital signal procesing.Pr<strong>en</strong>tice Hall,<br />

may, 1993.<br />

[2] Xilinx The progamable logic databook. SPARTAN3 , marzo 2 <strong>de</strong> 2007.<br />

[3] J. G., Proakis, Dimitris G. Manolakis. Tratami<strong>en</strong>to digital <strong>de</strong> señales.<br />

Pr<strong>en</strong>tice Hall, 1997.<br />

[4] Samuel Stearms, Ruth A. David. Signal procesing algoritms”. Pr<strong>en</strong>tice<br />

Hall, 1997.<br />

[5] Binary numbering systems. Altera Corporation, 1997<br />

[6] R. W. Hamming. Digital filters. Pr<strong>en</strong>tice Hall, 1989.<br />

[7] Using select-RAM memory in XC4000 series <strong>FPGA</strong>’s”. Xilinx aplication<br />

note, july 7, 1996.<br />

[8] A CPLD VHDL introduction. Xilinx application note, january 12, 1998.<br />

[9] Digital signal processing toolbox. The MathWorks Inc., 1992-2001.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!