You are on page 1of 11

DISEO DE MULTIPLICADORES PARALELOS DE 16 BITS EN FPGAS Gustavo E. Ordez-Fernndez, Lewin A.

Lpez-Lpez, Jaime Velasco-Medina Grupo de Bioelectrnica y Nanoelectrnica, EIEE, Universidad del Valle A.A. 25360, Cali, Colombia E-mail: gustavoeiee@hotmail.com, lewinlopez@hotmail.com, jvelasco@univalle.edu.co

ABSTRACT The system-on-a-chip offers the best technical advantages to develop new and innovative electronic products. In this context, the use of embedded processors is greater every time and one of the main functional blocks of the processor is the multiplier. This article presents efficient designs for the multiplication using FPGAs. In this case, for the performance analysis the design parameters such as speed, area and dissipated power are considered. The designs proposed are seven parallel multipliers and two sequential ones of 16 bits: ripple carry, carry save, Wallace, parameterized multiplier: megafunction, Baugh-Wooley, parallel multiplier based on the algorithm of Booth, pipeline multiplier, sequential multiplier based on sum and displacements, and sequential multiplier based on modified Booth algorithm. The designs are implemented in the FPGA EPF10K70RC240-4 of board UP2 of Altera and are simulated in the tools, Max+Plus II and Quartus II version 3.0.

RESUMEN Los sistemas en un solo chip system-on-a-chip ofrecen las mejores ventajas tcnicas para desarrollar nuevos e innovadores productos electrnicos. En este contexto, el uso de procesadores embebidos es cada vez mayor y uno de los principales bloques funcionales del procesador es el multiplicador. Este artculo presenta diseos eficientes para la multiplicacin usando FPGAs. En este caso, para el anlisis de desempeo se tienen en cuenta los parmetros de diseo tales como velocidad, rea y potencia disipada. Los diseos realizados son siete multiplicadores paralelos y dos secuenciales de 16 bits: ripple carry, carry save, Wallace, multiplicador parametrizado: megafuncin, Baugh-Wooley, multiplicador paralelo basado en el algoritmo de Booth, multiplicador pipeline, multiplicador secuencial basado en sumas y desplazamientos, y multiplicador secuencial basado en algoritmo de Booth modificado. Los diseos son implementados en la FPGA EPF10K70RC240-4 de la tarjeta UP2 de Altera y son simulados en las herramientas Max + Plus II y Quartus II versin 3.0.

DISEO DE MULTIPLICADORES PARALELOS DE 16 BITS EN FPGAS Gustavo E. Ordez-Fernndez, Lewin A. Lpez-Lpez, Jaime Velasco-Medina, Grupo de Bioelectrnica y Nanoelectrnica, Escuela EIEE Universidad del Valle, A.A. 25360, Cali, Colombia E-mail: gustavoeiee@hotmail.com, lewinlopez@hotmail.com, jvelasco@univalle.edu.co

RESUMEN Los sistemas en un solo chip system-on-a-chip ofrecen las mejores ventajas tcnicas para desarrollar nuevos e innovadores productos electrnicos. En este contexto, el uso de procesadores embebidos es cada vez mayor y uno de los principales bloques funcionales del procesador es el multiplicador. Este artculo presenta diseos eficientes para la multiplicacin usando FPGAs. En este caso, para el anlisis de desempeo se tienen en cuenta los parmetros de diseo tales como velocidad, rea y potencia disipada. Los diseos realizados son siete multiplicadores paralelos y dos secuenciales de 16 bits: ripple carry, carry save, Wallace, multiplicador parametrizado: megafuncin, Baugh-Wooley, multiplicador paralelo basado en el algoritmo de Booth, multiplicador pipeline, multiplicador secuencial basado en sumas y desplazamientos, y multiplicador secuencial basado en algoritmo de Booth modificado. Los diseos son implementados en la FPGA EPF10K70RC240-4 de la tarjeta UP2 de Altera y son simulados en las herramientas Max + Plus II y Quartus II versin 3.0.

optimizados para los diferentes parmetros de diseo. En este caso, el bloque funcional que realiza la multiplicacin es siempre un bloque esencial en cualquier sistema de procesamiento digital de seales. Sin embargo, para el diseo digital basado en FPGAs, es importante mencionar que disear el bloque funcional para la multiplicacin usando la megafuncin no siempre es la mejor alternativa de diseo. Por ejemplo, en aplicaciones tales smart-cards y telefona celular, los principales criterios de diseo son relacionados con el rea y la potencia disipada. Teniendo en cuenta las consideraciones anteriores, el artculo presenta diseos eficientes para la multiplicacin considerando los parmetros de diseo tales como rea, velocidad y potencia disipada. El artculo esta organizado de la siguiente manera, en la seccin 2 se presenta una descripcin detallada del diseo de los multiplicadores paralelos y secuenciales. En la seccin 3 se presentan las tablas de comparacin y resultados de simulacin de los multiplicadores diseados y en la seccin 4 se presentan las conclusiones y el trabajo futuro. 2. DISEOS DE MULTIPLICADORES

1. INTRODUCCIN Las operaciones de multiplicacin y divisin son ms complejas que las operaciones de adicin o sustraccin. Inicialmente en algunos procesadores, la multiplicacin y la divisin eran llevadas a cabo como rutinas de software, las cuales bsicamente, realizan la multiplicacin como una secuencia de sumas y desplazamientos, y la divisin como una secuencia de sustracciones y desplazamientos. Sin embargo, los microprocesadores de alto desempeo, disponen de multiplicadores y divisores implementados en hardware para incrementar la velocidad de las operaciones aritmticas. De otro lado, hace algunos aos era muy difcil realizar diseos complejos, para volmenes pequeos o medianos de produccin. Sin embargo, el vertiginoso avance de la tecnologia permite realizar fcilmente diseos complejos y de bajo costo, es decir, es posible disear sistemas embebidos totalmente a medida para una aplicacin dada, y an para volmenes muy pequeos, usando dispositivos FPGAs. En este contexto, los procesadores embebidos son cada da ms utilizados para diferentes aplicaciones. Por lo tanto, los principales bloques funcionales del procesador deben ser En esta seccin se presenta una breve descripcin de cada una de las arquitecturas para los multiplicadores paralelos y secuenciales diseados en este trabajo. 2.1 Multiplicador Ripple Carry El multiplicador basado en un arreglo de sumadores de acarreo propagado es una primera aproximacin para implementar el algoritmo de sumas sucesivas y desplazamientos, este tipo de multiplicador tiene la caracterstica de transferir la propagacin del acarreo a la siguiente suma parcial hasta que terminen los productos parciales correspondientes a esta fila, en este instante el acarreo generado se propaga al ltimo producto de la siguiente fila de productos parciales y as sucesivamente hasta culminar la multiplicacin [1]. El bloque principal es un sumador completo de 1 bit, y el diagrama de bloques de un multiplicador ripple carry de 4 bits se muestra en la Figura 1.

Figura 1. Multiplicador Ripple Carry de 4 bits 2.2 Multiplicador Carry Save El multiplicador basado en el arreglo de sumadores con acarreo salvado es una segunda aproximacin para implementar el algoritmo de sumas sucesivas y desplazamientos. La idea es romper la cadena de acarreo propagado del sumador ripple para disminuir el retardo de cada suma, lo cual permite acelerar la multiplicacin. El multiplicador tiene la caracterstica de permitir salvar el acarreo generado en las sumas parciales y transferirlo como acarreo de entrada a la siguiente suma parcial de la fila de productos parciales siguiente. Este multiplicador es tambin conocido con el nombre de Multiplicador de Braun [2]. El diagrama de un multiplicador carry save de 4 bits, se muestra en la Figura 2.

Figura 3. Multiplicador de Wallace de 4 bits 2.4 Multiplicador Parametrizado: Megafuncin Altera provee una librera de Megafunciones, incluyendo una Librera de Mdulos Parametrizados (LPM). Para la multiplicacin, se dispone de la Megafuncin lpm_mult, la cual es un bloque parametrizado y es descrito en un lenguaje de alto nivel. El diagrama de la Megafuncin se puede observar en la Figura 4.

Figura 4. Megafuncin para la multiplicacin lpm_mult 2.5 Multiplicador Paralelo basado en el Algoritmo de Booth El Algoritmo de Booth presenta dos ventajas importantes: Primero unifica los multiplicadores tanto para nmeros binarios positivos como negativos de n bits, transformndolos en versiones adecuadas de multiplicandos de n bits que se suman para generar productos de 2n bits de signo correcto, en el sistema de representacin numrica de complemento a dos. Segundo, logra cierta eficiencia respecto al nmero de productos parciales generados, cuando el multiplicador tiene algunos bloques grandes de unos [4]. El Algoritmo de Booth est basado en la observacin que existen mltiples formas de calcular un producto usando la suma y la resta, por lo tanto si se tiene una ALU que pudiera sumar o restar se podra obtener el mismo resultado utilizando diferentes modos [5]. En las Figuras 5 y 6 se presentan la celda bsica y el arreglo para el multiplicador

Figura 2. Multiplicador Carry Save de 4 bits 2.3 Multiplicador de Wallace El multiplicador de Wallace es una variante del algoritmo de sumas sucesivas y desplazamientos, donde se utilizan los bloques de sumadores completos con sus tres entradas recibiendo trminos productos y generando un termino suma que se adiciona con otro termino suma [3]. El diagrama de bloques de un multiplicador de Wallace de 4 bits se muestra en la Figura 3.

paralelo basado en el Algoritmo de Booth, respectivamente [6].

Figura 5. Celda de control para: adicin / sustraccin / desplazamiento (CASS) En este caso, las ecuaciones para las salidas Pout y Cout , son:

POUT = PIN (a H ) (cIN H ) cOUT = ( PIN D ) ( a + c IN ) + a cIN

Figura 7. Multiplicador de BaughWooley de 4 bits 2.7 Multiplicador Pipeline Los multiplicadores paralelos son arreglos iterativos, los cuales utilizan estructuras basadas en sumadores ripple carry o carry save, pero sin elementos de almacenamiento [8]. Estos multiplicadores pueden ser implementados usando la tcnica pipeline, es decir se introducen latches o registros en una apropiada posicin dentro del arreglo. En las Figuras 8 y 9 se muestran las celdas principales del multiplicador pipeline. Y en la Figura 10, el diagrama de bloques del multiplicador pipeline de 5 bits [9].

Figura 6. Multiplicador paralelo basado en el Algoritmo de Booth 2.6 Multiplicador de Baugh-Wooley El multiplicador de Baugh-Wooley permite realizar la multiplicacin de nmeros con signo usando la representacin en complemento a dos. Este multiplicador es una adecuacin del algoritmo de sumas sucesivas y desplazamientos que permite realizar la multiplicacin de nmeros con signo [7]. Este tipo de multiplicador esta basado en arreglos de sumadores de acarreo salvado. El diagrama de un multiplicador de BaughWooley de 4 bits se muestra en la Figura 7.

Figura 8. Sumador completo con latch y compuerta AND

Figura 9. Semisumador con latch Figura 11. Estructura del data path y control path para el multiplicador secuencial. 2.9 Multiplicador Secuencial basado en el Algoritmo de Booth En la Figura 12 se muestra el diagrama del Multiplicador basado en el Algoritmo de Booth. En este caso el diseo se realiz usando un circuito secuencial.

Figura 10. Multiplicador pipeline de 5 bits para nmeros con signo 2.8 Multiplicador Secuencial basado en el algoritmo de sumas y desplazamientos El multiplicador secuencial de nmeros binarios sin signo de N bits, basado en sumas y desplazamientos sucesivos, utiliza un sumador completo y registros de almacenamiento y/o desplazamiento, para acumular los productos parciales. Existen otros multiplicadores secuenciales que utilizan otros algoritmos para acelerar la multiplicacin, como por ejemplo el Algoritmo de Booth. El diagrama bloques del multiplicador secuencial se muestra en la Figura 11.

Figura 12. Diagrama ASM del Algoritmo de Booth

3. RESULTADOS DE SIMULACIN En esta seccin, se presentan los resultados de simulacin para los diferentes multiplicadores, en este caso los parmetros de diseo presentados son: velocidad o frecuencia mxima, rea o nmero de elementos lgicos y potencia disipada. El dispositivo utilizado es la FPGA FLEX10K70RC240-4 de la tarjeta

UP2 de Altera. 3.1 Multiplicadores Paralelos: Los resultados de simulacin usando MAX+Plus II, para optimizacin en velocidad y rea son presentados en las Tablas 1 y 2, respectivamente.

ALTERA MAX+PLUS II v.10.1

Optimizacin en Velocidad Frecuencia Mxima (MHz) 6,71 3,70 5,12 5,41 7,06 4,78 5,48 Elementos Lgicos (LE) 854 606 585 590 937 926 564 Potencia Estimada (mW) 143,02 78,25 92,25 95,9 159,45 118,81 94,02

Tipo de Multiplicador de 16 bits Mega Funcin Ripple Carry Wallace Carry Save: Braun Mega Funcin Algoritmo de Booth (paralelo) Baugh-Wooley

Con signo

Sin signo

Tabla 1. Multiplicadores paralelos optimizados en velocidad usando MAX+plus II.

ALTERA MAX+PLUS II v.10.1 Frecuencia Mxima (MHz) 5,63 3,46 5,14 5,18 5,43 4,42 5,10

Optimizacin en rea Elementos Lgicos (LE) 767 534 532 534 871 841 539 Frecuencia Mxima (MHz) 116,81 70,93 87,41 88 124,44 105,65 87,68

Tipo de Multiplicador de 16 bits Mega Funcin Ripple Carry Wallace Carry Save: Braun Mega Funcin Algoritmo de Booth paralelo Baugh-Wooley

Con signo

Sin signo

Tabla 2. Multiplicadores paralelos optimizados en rea usando MAX+plus II.

Los resultados de simulacin usando QUARTUS II versin 3.0, para optimizacin en velocidad y rea, son presentados en las Tablas 3 y 4, respectivamente.

QUARTUS II versin 3.0

Optimizacin en Velocidad Frecuencia Mxima (MHz) 11,56 3,68 8,82 9,32 13,21 12,17 8,24 9,44 Elementos Lgicos (LE) 583 639 399 403 620 640 632 385 Potencia Estimada (mW) 161,75 80,32 101,97 106,37 189,03 181,23 133,32 104,11

Tipo de Multiplicador de 16 bits Mega Funcin Ripple Carry Wallace Carry Save: Braun Multiplicador pipeline Mega Funcin Algoritmo de Booth paralelo Baugh-Wooley Sin signo Con signo

Tabla 3. Multiplicadores paralelos optimizados en velocidad usando QUARTUS II versin 3.0.

QUARTUS III web edition Tipo de Multiplicador de 16 bits Mega Funcin Ripple Carry Wallace Carry Save: Braun Multiplicador pipeline Mega Funcin Algoritmo de Booth paralelo Baugh-Wooley Sin signo Frecuencia Mxima (MHz) 9,49 5,83 8,66 8,73 10,12 9,15 7,45 8,59

Optimizacin en rea Elementos Lgicos (LE) 505 352 350 352 512 573 554 355 Potencia Estimada (mW) 125,61 74,74 92,91 93,69 132,83 133,97 113,26 93,26

Con signo

Tabla 4. Multiplicadores paralelos optimizados en rea usando QUARTUS II versin 3.0. Los resultados de simulacin para los multiplicadores paralelos son mostrados en las Figuras 13a, 13b, 13c, 13d, 13e.

Figura 13a. Simulacin detallada del Multiplicador Ripple Carry.

Figura 13b. Simulacin detallada del Multiplicador Carry Save.

Figura 13c. Simulacin detallada del Multiplicador de Wallace.

Figura 13d. Simulacin detallada de la Megafuncin.

Figura 13e. Simulacin detallada del Multiplicador paralelo basado en el Algoritmo de Booth

3.2 Multiplicadores Secuenciales Los resultados de simulacin usando MAX+Plus II, para optimizacin de velocidad y rea, son presentados en las Tablas 5 y 6, respectivamente.

ALTERA MAX+PLUS II v.10.1

Optimizacin en Velocidad Frecuencia Mxima (MHz) 15,82 6,68 Elementos Lgicos (LE) 150 175 Potencia Estimada (mW) 80,70 58,35

Tipo de Multiplicador de 16 bits sin signo Basado en Sumas y Desplazamientos Algoritmo de Booth

Tabla 5. Multiplicadores secuenciales optimizados en velocidad usando MAX+plus II. ALTERA MAX+PLUS II v.10.1 Tipo de Multiplicador de 16 bits sin signo Basado en Sumas y Desplazamientos Algoritmo de Booth Frecuencia Mxima (MHz) 13,48 6.29 Optimizacin en rea Elementos Lgicos (LE) 134 155 Potencia Estimada (mW) 70,17 54,77

Tabla 6. Multiplicadores secuenciales optimizados en rea usando MAX+plus II. Los resultados de simulacin usando QUARTUS II versin 3.0, para optimizacin en velocidad y rea, son presentados en las Tablas 7 y 8, respectivamente. QUARTUS II versin 3.0 Tipo de Multiplicador de 16 bits sin signo Basado en Sumas y Desplazamientos Algoritmo de Booth Optimizacin en Velocidad Frecuencia Mxima (MHz) 24,25 10,24 Elementos Lgicos (LE) 94 110 Potencia Estimada (mW) 78,96 57,56

Tabla 7. Multiplicadores secuenciales optimizados en velocidad usando QUARTUS II versin 3.0. QUARTUS II versin 3.0 Tipo de Multiplicador de 16 bits sin signo Basado en Sumas y Desplazamientos Algoritmo de Booth Frecuencia Mxima (MHz) 23,26 10,85 Optimizacin en rea Elementos Lgicos (LE) 93 108 Potencia Estimada (mW) 76,80 58,40

Tabla 8. Multiplicadores secuenciales optimizados en rea usando QUARTUS II versin 3.0.

Los resultados de simulacin para los multiplicadores secuenciales son mostrados en las Figuras 14a, 14b.

Figura 14a. Simulacin detallada del Multiplicador secuencial basado en sumas y desplazamientos

Figura 14b. Simulacin detallada del Multiplicador secuencial basado en el Algoritmo de Booth Modificado Para los multiplicadores secuenciales se presenta un nuevo anlisis, el cual es el nmero mximo de seales de reloj que se utiliza para una operacin de multiplicacin (en su peor caso).

4. CONCLUSIONES Y TRABAJO FUTURO Este trabajo presenta una descripcin detallada del diseo de diferentes arquitecturas para los multiplicadores, los cuales fueron diseados usando dispositivos lgicos programables de Altera. Los diseos fueron compilados sobre el dispositivo EPF10K70RC240-4. Los resultados de simulacin obtenidos permiten presentar las siguientes conclusiones: En muchos casos, el uso de la Megafuncin lpm_mult para implementar la multiplicacin no es la mas adecuada, especialmente en donde el compromiso de rea y consumo de potencia son criterios de diseo primordiales. Desde las simulaciones para cada multiplicador se puede observar los efectos de retardo en el resultado, al cambiar algn operando. En este

contexto, la frecuencia en la que los datos son confiables, se toma a partir de la peor respuesta del sistema, despus de haber simulado y verificado los tiempos con los resultados de la Matriz de Retardos que entrega Max+Plus II y los anlisis de tiempos en Quartus II versin 3.0. El multiplicador Ripple Carry es bastante fcil de comprender, pero no es prctico, ya que presenta el menor rendimiento en comparacin con los dems multiplicadores paralelos, diseados en este artculo. Sin embargo, este presenta el menor consumo de potencia promedio, y en algunas aplicaciones este parmetro puede ser primordial para sistemas embebidos en donde la frecuencia mxima no es determinante.

El software Quartus II versin 3.0, la herramienta de Altera, posee mejor capacidad de sntesis en cuanto a los factores de frecuencia mxima y nmero de elementos lgicos utilizados (rea) que el software Max+Plus II, llagando a mejorar en casi dos veces el rendimiento de cada multiplicador. El multiplicador de Baugh-Wooley y el multiplicador basado en el algoritmo de Booth, permiten realizar la multiplicacin de nmeros positivos y negativos, y adems son una buena alternativa para sistemas de bajo consumo de potencia y alta velocidad. Los multiplicadores secuenciales, presentan una ventaja con respecto a los paralelos debido a que utilizan poca rea o elementos lgicos, y por lo tanto su potencia promedio disipada tambin es pequea. Sin embargo, el resultado de la multiplicacin es obtenido despus de un nmero entero de ciclos de reloj. El multiplicador pipeline presenta el mejor desempeo desde el punto de vista de velocidad. Sin embargo, presenta la desventaja que ocupa demasiada rea, pero es una muy buena alternativa. Se presentan algunas arquitecturas de multiplicadores cuyos resultados muestran que son una opcin viable para implementarlos en sistemas en un solo chip, con bajo consumo de potencia y que justifican la escasa perdida de velocidad con respecto a la megafuncion lpm_mult.

[6] A. Tanenbaum, Organizacin de Computadores un Enfoque Estructurado, Prentice Hall, 1992. [7] W. Stallings, Organizacin y Arquitectura de Computadores, Prentice Hall, 1999. [8] V.C. Hamacher, Z.G. Vranesic y S.G. Zaky, Organizacin de Computadoras, Mc Graw Hill, 1987. [9] D.A. Paterson y S.L. Hennessy, Computer Organization and Design: the Hardware / Software Interface, Morgan Kaufmann Publishers, 1998. [10] I. Koren, Computer Arithmetic Algorithms, A.K. Peters, 2002. [11] B. Parhami, Computer Arithmetic: Algorithms and Hardware Design, Oxford

5. AGRADECIMIENTOS Este trabajo ha sido patrocinado por Altera Corporation a travs del Programa Universitario. Los autores dan especial agradecimientos a Mrs. Ralene Marcoccia de Altera Corporation.

6.

BIBLIOGRAFA

[1] D. Gajski, Principios de Diseo Digital, Prentice Hall, 1997. [2] M. Davio, Digital Systems with Algorithm Implementation, John Wiley & Sons, 1983. [3] K.C. Chang, Digital Systems Design with VHDL and Synthesis: An Integrated [4] Approach, IEEE Computer Society, 1999. [5] D. Pucknell, K. Eshraghian, Basic VLSI Design, Prentice Hall, 1994.