Está en la página 1de 10

Sistemas Electronicos Digitales

2o Ing. Telecomunicacion

Practica 2
Implementacion de un filtro FIR basado en
estructura MAC
Javier Toledo Moreo
Dpto. Electronica, Tecnologa de Computadoras y Proyectos
Universidad Politecnica de Cartagena
9 de mayo de 2007
Revision 1a

Descripcion de la practica
El objetivo de la practica es la implementacion de un filtro FIR basado
en una estructura de multiplicacion y acumulacion (MAC) sobre una FPGA
XC4010EPC84 de Xilinx utilizando las herramientas del software Foundation.
Esta practica pretende introducir al alumno en las posibilidades de los dis-
positivos FPGA para el desarrollo de aplicaciones de procesamiento digital de
senales.
Para facilitar el desarrollo de la practica, el diseno del filtro esta basado en
el multiplicador realizado en la practica 1. Ademas, la senal de entrada al filtro
es conocida a priori, y va a estar almacenada en una memoria que se incluye en
el mismo diseno. Por tanto, la unica entrada a la FPGA es una senal de reloj.
La salida es la senal filtrada.
Los pasos a seguir en el desarrollo de la practica son:
Elaboracion del esquematico del diseno
Simulacion funcional
Realizacion de los procesos Map, Place y Route para la implementacion
sobre la FPGA elegida
Analisis de la informacion contenida en los informes de implementacion
Simulacion temporal

Configuracion de la FPGA en la placa XS40 y depuracion del diseno.

1
Filtro FIR basado en estructura MAC

Filtrado digital
Hoy en da el procesamiento digital de senales (DSP) esta presente en un
amplsimo abanico de aplicaciones. Se emplean algoritmos DSP para proce-
samiento del habla en telefona movil, sistemas de comunicaciones personales,
sistemas de seguridad, para procesamiento de audio en equipos de mezcla y edi-
cion, en equalizadores, en sistemas de sonido hi-fi, para la sntesis de sonido, para
procesamiento de imagen en sistema de edicion de vdeo, para la compresion y la
descompresion de imagenes, en sistemas de reconocimiento de imagenes, en sis-
temas de informacion para la encriptacion de datos, en comunicaciones digitales
en redes, en radio y television digital, en modems, etc.
Una de los pilares basicos del procesamiento digital de senales es el filtrado
digital. Los filtros digitales son sistemas LTI disenados para modificar de una
manera determinada las caractersticas en frecuencia de una senal de entrada.
Tradicionalmente, los filtros digitales son clasificados en dos grandes categoras:
filtros con respuesta impulso finita (Finite Impulse Response, FIR) y filtros con
respuesta impulso infinita (Infinite Impulse Response, IIR). La eleccion entre
uno tipo de filtro u otro depende de las caractersticas de la aplicacion.
Centrandonos en los filtros FIR, cuya implementacion es el objetivo de esta
practica, la respuesta impulso es finita, tal y como indica su nombre, y viene
dada por la expresion:
y =hx
L1

yn = hk xnk
k=0
donde x es la senal de entrada, h es la respuesta impulso del filtro, hk son los
coeficientes del filtro y L es el numero de coeficientes, es decir, la longitud de la
respuesta impulso.
A modo de ejemplo, y con el fin de explicar el funcionamiento de la estructura
a realizar, se desarrollan los primeros terminos de la expresion general anterior
para un filtro de 4 coeficientes.
y0 = h0 x0 + h1 0 + h2 0 + h3 0
y1 = h0 x1 + h1 x0 + h2 0 + h3 0
y2 = h0 x2 + h1 x1 + h2 x0 + h3 0
y3 = h0 x3 + h1 x2 + h2 x1 + h3 x0
y4 = h0 x4 + h1 x3 + h2 x2 + h3 x1
y5 = h0 x5 + h1 x4 + h2 x3 + h3 x2
y6 = h0 x6 + h1 x5 + h2 x4 + h3 x3
..
.
yn = h0 xn + h1 xn1 + h2 xn2 + h3 xn3
La salida correspondiente a cada entrada depende, por tanto, no solo de esta,
sino tambien de un determinado numero de datos de entrada anteriores.

Implementacion hardware
Existen numerosas alternativas a la hora de implementar en hardware un
filtro FIR, cada una de ellas con sus ventajas y sus inconvenientes. La mas

2
Filtro FIR basado en estructura MAC

directa utiliza L multiplicadores y L1 sumadores, dando lugar a una estructura


totalmente paralela que procesa la senal de entrada con gran rapidez, pudiendo
filtrar senales de elevado ancho de banda a costa de consumir gran cantidad de
recursos.
Es posible reducir los recursos hardware necesarios utilizando unicamente
un multiplicador y un sumador, junto con un registro que permita acumular
resultados parciales, en una estructura denominada MAC (Multiply and Accu-
mulate). A diferencia de la implementacion paralela, todas las multiplicaciones
y sumas son calculadas utilizando esta unica unidad MAC, por lo que son nece-
sarios mas ciclos para computar un dato, lo que reduce el ancho de banda de
las senales de entrada.
En esta practica vamos a implementar un filtro FIR basado en esta segunda
opcion. La figura 1 muestra el esquema basico, particularizado nuevamente para
4 coeficientes. El multiplicador, el sumador y el registro acumulador constituyen
la unidad MAC. Los coeficientes del filtro, puesto que son constantes, son ledos
de una memoria ROM. Los datos de entrada se almacenan temporalmente en
una cadena de registros de datos, siendo presentados al multiplicador a traves
de un multiplexor. El registro de salida almacena las sucesivas muestras de la
senal filtrada.

Memoria ROM
Dato

h0
h1
Acumulador
h2
h3 + D Q
Dir.

x reloj
EN

CLK
RST
Multiplicador

Dato Salida
D Q

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 1: Estructura del filtro FIR basado en MAC.

Como se observa en el desarrollo de la formula de la convolucion, para cal-


cular la salida filtrada se realizan operaciones sobre las 4 ultimas muestras
recibidas. Para almacenarlas durante los ciclos que son necesarias se recurre
a los registros de la figura 1. La conexion en cascada de estos registros va a
facilitar el acceso a los datos para calcular cada termino de una convolucion.

3
Filtro FIR basado en estructura MAC

Los registros deben actualizarse una vez para calcular cada dato de salida, to-
dos en el mismo instante. Su tamano debe ser el de los datos de entrada. En
esta practica dicho tamano esta limitado por el multiplicador, que solo permite
multiplicar numeros de 8 bits. Para obtener los valores correctos de las primeras
muestras de la secuencia de salida el valor inicial de los registros debe ser 0. En
el caso general de un filtro de L coeficientes, son necesarios L 1 registros, con
comportamiento y conexion analogos.
Con el fin de explicar el procedimiento de calculo de la convolucion con
la estructura propuesta y como debe realizarse el control de los componentes
de la figura 1, en las figuras 2, 3, 4 y 5 se representa la secuencia de calculo
correspondiente a la muestra de entrada x5 . Se parte de una situacion inicial en
la que la direccion de la memoria ROM es tal que el valor en su bus de datos es
el coeficiente h0 , la entrada es el valor x5 y los registros contienen los valores x4 ,
x3 y x2 , el multiplexor selecciona x5 como entrada al multiplicador, el registro
acumulador almacena el valor 0 y el registro de salida el valor de salida anterior,
y4 . En esta situacion, la salida del multiplicador es el producto h0 x5 , igual que
la salida del sumador, puesto que el acumulador vale 0.

Memoria ROM
Dato h0
h0
h1
Acumulador
h2
h0 x5
h3 + D Q 0
Dir.

x h0 x5 reloj
EN

CLK
RST
Multiplicador

x5

Dato Salida
D Q
y4

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x5 x4 x3 x2

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 2: Ejemplo de calculo de x5 (1).

La figura 3 muestra el estado consecuencia de un flanco activo de la senal


de reloj. En primer lugar, se ha actualizado el registro acumulador con el valor
presente a su entrada (la salida del sumador), que ahora contiene el primer
termino de la convolucion de y5 . Puesto que el registro de salida solo va a
almacenar datos de salida, y todava la salida del sumador no presenta ese valor,
este registro no se actualiza. Al mismo tiempo, debe actualizarse la direccion
de la ROM de manera que ahora se lea el coeficiente h1 , y debe presentarse al

4
Filtro FIR basado en estructura MAC

multiplicador el dato x4 , para lo cual se modifica la seleccion del multiplexor


sin actualizarse la cadena de registros. Con esto, a la salida del multiplicador se
obtiene el segundo termino de la convolucion h1 x4 y a la del sumador la suma
acumulada de los dos primeros terminos de y5 .

Memoria ROM
Dato h1
h0
h1
Acumulador
h2
h0 x5 + h1 x4
h3 + D Q h0 x5
Dir.

x h1 x4 reloj
EN

CLK
RST
Multiplicador

x4

Dato Salida
D Q
y4

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x5 x4 x3 x2

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 3: Ejemplo de calculo de x5 (2).

El comportamiento del circuito es identico al producirse un nuevo flanco


activo de la senal de reloj, es decir, se actualiza el registro acumulador, que
almacena la salida del sumador en el instante que se produce el flanco, el registro
de salida no se actualiza, de la memoria ROM se lee el siguiente coeficiente h2
y de la cadena de registros se obtiene el dato correspondiente x3 . Entonces, la
salida del multiplicador sera el tercer termino de la convolucion h2 x3 y la salida
del sumador la suma acumulada de los tres primeros terminos de y5 . El estado
se representa en la figura 4.
El proceso se repite en el siguiente flanco activo de reloj, con lo que el
acumulador almacena el valor h0 x5 +h1 x4 +h2 x3 , de la ROM se lee el coeficiente
h3 y la muestra de entrada al multiplicador procedente de la cadena de registros
es x2 . Esto conlleva que la salida del multiplicador es h3 x2 y por tanto la del
sumador es el resultado de h0 x5 + h1 x4 + h2 x3 + h3 x2 , es decir, y5 . Este estado
se representa en la figura 5.
Como la salida del sumador es ahora el valor de y5 , debe guardarse en el
registro de salida. Por lo tanto, este debe estar habilitado cuando se produzca el
siguiente flanco activo de reloj, para que se actualice con la salida del sumador.
Al mismo tiempo, la estructura MAC debe prepararse para el calculo de la
siguiente muestra de la salida, empezando por el primer termino, h0 x6 . Esto

5
Filtro FIR basado en estructura MAC

Memoria ROM
Dato h2
h0
h1
Acumulador
h2
h0 x5 + h1 x4 + h2 x3
h3 + D Q h0 x5 + h1 x4
Dir.

x h2 x3 reloj
EN

CLK
RST
Multiplicador

x3

Dato Salida
D Q
y4

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x5 x4 x3 x2

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 4: Ejemplo de calculo de x5 (3).

obliga a que el registro acumulador tome el valor 0, a que de la memoria ROM


se lea el coeficiente h0 , a obtener el dato x6 y a actualizar la cadena de registros,
de manera que cuando tenga lugar el flanco activo de reloj cada uno tomara el
valor del que esta a su izquierda. Estos cambios se recogen en la figura 6. Como
ocurre durante el proceso de calculo de y5 , el contenido de estos registros no
cambiara hasta que a la salida del sumador se obtenga el valor correspondiente
a y6 . Por medio de la seleccion del multiplexor, en cada paso se presentara el
multiplicador el dato apropiado.
Las figuras 6, 7, 8 y 9 muestran los sucesivos estados correspondientes al
calculo de y6 de acuerdo con el funcionamiento descrito del circuito.

Datos de entrada al filtro


Como se comento en la introduccion, para facilitar el desarrollo de la practi-
ca se va a considerar que los datos de entrada al filtro toman unos valores
determinados a priori, guardados en una memoria incluida en el diseno. Esta
memoria es una ROM de 256 posiciones y 8 bits de ancho. El bus de direc-
ciones de la memoria esta controlado por un contador del tamano apropiado,
que se incrementa cada vez que el filtro ha completado las operaciones corres-
pondientes a un dato. El contenido de esta memoria de datos esta disponible en
http://wsdetcp.upct.es/Personal/JToledo/html/docencia.htm.

6
Filtro FIR basado en estructura MAC

Memoria ROM
Dato h3
h0
h1
Acumulador
h2
h0 x5 + h1 x4 + h2 x3 + h3 x2
h3 + D Q h0 x5 + h1 x4+ h2 x3
Dir.

x h3 x2 reloj
EN

CLK
RST
Multiplicador

x2

Dato Salida
D Q
y4

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x5 x4 x3 x2

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 5: Ejemplo de calculo de x5 (4).

Consideraciones relativas al diseno


A la hora de realizar el diseno deben tenerse en cuenta las siguientes consi-
deraciones:
El numero de coeficientes del filtro es 6. Sus valores se indican en la tabla 1.

Coeficiente Valor
h0 1
h1 2
h2 3
h3 4
h4 5
h5 6

Tabla 1: Coeficientes del filtro.

Aunque no sea necesario para codificar estos valores, se va a considerar un


tamano de 8 bits para los coeficientes, de acuerdo con las caractersticas
del multiplicador. Por tanto, la anchura de palabra de la memoria ROM
donde se almacenan los coeficientes es de 8 bits.
La senal de reloj debe ser la misma para todo el circuito, y el flanco activo
de reloj es el de subida.

7
Filtro FIR basado en estructura MAC

El registro acumulador debe cargarse con el valor 0 en el instante adecuado


utilizando una senal de reset sncrono.
A la hora de disenar el registro acumulador y el sumador debe tenerse
presente que, al realizar las sucesivas operaciones, el valor del resultado
parcial puede ir incrementandose, y con ello el numero de bits necesarios
para codificarlo. Esto obliga a disenar tanto el registro como el sumador
con un tamano adecuado: si no es el suficiente el resultado podra ser
incorrecto, si es demasiado elevado la implementacion no sera eficiente.
Relacionado con lo anterior, debe tambien tenerse en cuenta que las en-
tradas al sumador tienen que ser datos del mismo numero de bits. Tal
y como se acaba de mencionar, la procedente del registro acumulador
tendra un tamano adecuado para codificar el resultado, mientras que la
procedente del multiplicador sera de 16 bits, puesto que opera con numeros
de 8 bits. Esto va a hacer necesario ampliar la salida del multiplicador con
el numero de bits a la izquierda apropiado.

Memoria ROM
Dato h0
h0
h1
Acumulador
h2
h0 x 6
h3 + D Q 0
Dir.

x h0 x6 reloj
EN

CLK
RST
Multiplicador

x6

Dato Salida
D Q
y5

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x6 x5 x4 x3

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 6: Ejemplo de calculo de x6 (1).

8
Filtro FIR basado en estructura MAC

Memoria ROM
Dato h1
h0
h1
Acumulador
h2
h0 x6 + h1 x5
h3 + D Q h0 x6
Dir.

x h1 x5 reloj
EN

CLK
RST
Multiplicador

x5

Dato Salida
D Q
y5

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x6 x5 x4 x3

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 7: Ejemplo de calculo de x6 (2).

Memoria ROM
Dato h2
h0
h1
Acumulador
h2
h0 x6 + h1 x5 + h2 x4
h3 + D Q h0 x6 + h1 x5
Dir.

x h2 x4 reloj
EN

CLK
RST
Multiplicador

x4

Dato Salida
D Q
y5

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x6 x5 x4 x3

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 8: Ejemplo de calculo de x6 (3).

9
Filtro FIR basado en estructura MAC

Memoria ROM
Dato h3
h0
h1
Acumulador
h2
h0 x6 + h1 x5 + h2 x4 + h3 x3
h3 + D Q h0 x6 + h1 x5+ h2 x4
Dir.

x h3 x 3 reloj
EN

CLK
RST
Multiplicador

x3

Dato Salida
D Q
y5

EN
reloj CLK
RST

Dato Entrada
D Q D Q D Q
x6 x5 x4 x3

EN EN EN
reloj reloj reloj
CLK CLK CLK
RST RST RST

Figura 9: Ejemplo de calculo de x6 (4).

10

También podría gustarte