11
DISEÑO DE MULTIPLICADORES PARALELOS DE 16 BITS EN FPGAS Gustavo E. Ordóñez-Fernández, Lewin A. López-López, Jaime Velasco-Medina Grupo de Bioelectrónica y Nanoelectrónica, EIEE, Universidad del Valle A.A. 25360, Cali, Colombia E-mail: [email protected], [email protected], [email protected] 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 técnicas para desarrollar nuevos e innovadores productos electrónicos. 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 artículo presenta diseños eficientes para la multiplicación usando FPGAs. En este caso, para el análisis de desempeño se tienen en cuenta los parámetros de diseño tales como velocidad, área y potencia disipada. Los diseños realizados son siete multiplicadores paralelos y dos secuenciales de 16 bits: ripple carry, carry save, Wallace, multiplicador parametrizado: megafunción, 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 diseños 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 versión 3.0.

Fpgas Multiplicacion Con

Embed Size (px)

Citation preview

Page 1: Fpgas Multiplicacion Con

DISEÑO DE MULTIPLICADORES PARALELOS DE 16 BITS EN FPGAS

Gustavo E. Ordóñez-Fernández, Lewin A. López-López, Jaime Velasco-Medina

Grupo de Bioelectrónica y Nanoelectrónica, EIEE, Universidad del Valle A.A. 25360, Cali, Colombia

E-mail: [email protected], [email protected], [email protected]

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 técnicas para desarrollar nuevos e innovadores productos electrónicos. 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 artículo presenta diseños eficientes para la multiplicación usando FPGAs. En este caso, para el análisis de desempeño se tienen en cuenta los parámetros de diseño tales como velocidad, área y potencia disipada. Los diseños realizados son siete multiplicadores paralelos y dos secuenciales de 16 bits: ripple carry, carry save, Wallace, multiplicador parametrizado: megafunción, 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 diseños 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 versión 3.0.

Page 2: Fpgas Multiplicacion Con

DISEÑO DE MULTIPLICADORES PARALELOS DE 16 BITS EN FPGAS

Gustavo E. Ordóñez-Fernández, Lewin A. López-López, Jaime Velasco-Medina,

Grupo de Bioelectrónica y Nanoelectrónica, Escuela EIEE Universidad del Valle, A.A. 25360, Cali, Colombia

E-mail: [email protected], [email protected], [email protected]

RESUMEN Los sistemas en un solo chip “system-on-a-chip” ofrecen las mejores ventajas técnicas para desarrollar nuevos e innovadores productos electrónicos. 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 artículo presenta diseños eficientes para la multiplicación usando FPGAs. En este caso, para el análisis de desempeño se tienen en cuenta los parámetros de diseño tales como velocidad, área y potencia disipada. Los diseños realizados son siete multiplicadores paralelos y dos secuenciales de 16 bits: ripple carry, carry save, Wallace, multiplicador parametrizado: megafunción, 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 diseños 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 versión 3.0.

1. INTRODUCCIÓN Las operaciones de multiplicación y división son más complejas que las operaciones de adición o sustracción. Inicialmente en algunos procesadores, la multiplicación y la división eran llevadas a cabo como rutinas de software, las cuales básicamente, realizan la multiplicación como una secuencia de sumas y desplazamientos, y la división como una secuencia de sustracciones y desplazamientos. Sin embargo, los microprocesadores de alto desempeño, disponen de multiplicadores y divisores implementados en hardware para incrementar la velocidad de las operaciones aritméticas.

De otro lado, hace algunos años era muy difícil realizar diseños complejos, para volúmenes pequeños o medianos de producción. Sin embargo, el vertiginoso avance de la tecnologia permite realizar fácilmente diseños complejos y de bajo costo, es decir, es posible diseñar sistemas embebidos totalmente a medida para una aplicación dada, y aún para volúmenes muy pequeños, usando dispositivos FPGAs.

En este contexto, los procesadores embebidos son cada día más utilizados para diferentes aplicaciones. Por lo tanto, los principales bloques funcionales del procesador deben ser

optimizados para los diferentes parámetros de diseño. En este caso, el bloque funcional que realiza la multiplicación es siempre un bloque esencial en cualquier sistema de procesamiento digital de señales. Sin embargo, para el diseño digital basado en FPGAs, es importante mencionar que diseñar el bloque funcional para la multiplicación usando la megafunción no siempre es la mejor alternativa de diseño. Por ejemplo, en aplicaciones tales smart-cards y telefonía celular, los principales criterios de diseño son relacionados con el área y la potencia disipada.

Teniendo en cuenta las consideraciones anteriores, el artículo presenta diseños eficientes para la multiplicación considerando los parámetros de diseño tales como área, velocidad y potencia disipada.

El artículo esta organizado de la siguiente manera, en la sección 2 se presenta una descripción detallada del diseño de los multiplicadores paralelos y secuenciales. En la sección 3 se presentan las tablas de comparación y resultados de simulación de los multiplicadores diseñados y en la sección 4 se presentan las conclusiones y el trabajo futuro.

2. DISEÑOS DE MULTIPLICADORES En esta sección se presenta una breve descripción de cada una de las arquitecturas para los multiplicadores paralelos y secuenciales diseñados en este trabajo. 2.1 Multiplicador Ripple Carry El multiplicador basado en un arreglo de sumadores de acarreo propagado es una primera aproximación para implementar el algoritmo de sumas sucesivas y desplazamientos, este tipo de multiplicador tiene la característica de transferir la propagación 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 multiplicación [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.

Page 3: Fpgas Multiplicacion Con

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 aproximación 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 multiplicación. El multiplicador tiene la característica 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 también 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 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 términos 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.

Figura 3. Multiplicador de Wallace de 4 bits 2.4 Multiplicador Parametrizado: Megafunción Altera provee una librería de Megafunciones, incluyendo una Librería de Módulos Parametrizados (LPM). Para la multiplicación, se dispone de la Megafunción lpm_mult, la cual es un bloque parametrizado y es descrito en un lenguaje de alto nivel. El diagrama de la Megafunción se puede observar en la Figura 4.

Figura 4. Megafunción para la multiplicación 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 números binarios positivos como negativos de n bits, transformándolos en versiones adecuadas de multiplicandos de n bits que se suman para generar productos de 2n bits de signo correcto, en el sistema de representación numérica de complemento a dos. Segundo, logra cierta eficiencia respecto al número de productos parciales generados, cuando el multiplicador tiene algunos bloques grandes de unos [4].

El Algoritmo de Booth está basado en la observación que existen múltiples 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 podría obtener el mismo resultado utilizando diferentes modos [5]. En las Figuras 5 y 6 se presentan la celda básica y el arreglo para el multiplicador

Page 4: Fpgas Multiplicacion Con

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

Figura 5. Celda de control para: adición / sustracción / desplazamiento (CASS)

En este caso, las ecuaciones para las salidas Pout y

Cout, son:

( ) ( )( ) ( ) INININOUT

ININOUT

cacaDPcHcHaPP

⋅++⋅⊕=⋅⊕⋅⊕=

Figura 6. Multiplicador paralelo basado en el Algoritmo de Booth

2.6 Multiplicador de Baugh-Wooley El multiplicador de Baugh-Wooley permite realizar la multiplicación de números con signo usando la representación en complemento a dos. Este multiplicador es una adecuación del algoritmo de sumas sucesivas y desplazamientos que permite realizar la multiplicación de números con signo [7]. Este tipo de multiplicador esta basado en arreglos de sumadores de acarreo salvado. El diagrama de un multiplicador de Baugh–Wooley de 4 bits se muestra en la Figura 7.

Figura 7. Multiplicador de Baugh–Wooley 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 técnica pipeline, es decir se introducen latches o registros en una apropiada posición 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 8. Sumador completo con latch y compuerta AND

Page 5: Fpgas Multiplicacion Con

Figura 9. Semisumador con latch

Figura 10. Multiplicador pipeline de 5 bits para números

con signo 2.8 Multiplicador Secuencial basado en el algoritmo de

sumas y desplazamientos El multiplicador secuencial de números 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 multiplicación, como por ejemplo el Algoritmo de Booth. El diagrama bloques del multiplicador secuencial se muestra en la Figura 11.

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 diseño se realizó usando un circuito secuencial.

Figura 12. Diagrama ASM del Algoritmo de Booth

Page 6: Fpgas Multiplicacion Con

3. RESULTADOS DE SIMULACIÓN En esta sección, se presentan los resultados de simulación para los diferentes multiplicadores, en este caso los parámetros de diseño presentados son: velocidad o frecuencia máxima, área o número de elementos lógicos y potencia disipada. El dispositivo utilizado es la FPGA FLEX10K70RC240-4 de la tarjeta

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

ALTERA MAX+PLUS II v.10.1 Optimización en Velocidad

Tipo de Multiplicador de 16 bits Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Mega Función 6,71 854 143,02 Ripple Carry 3,70 606 78,25 Wallace 5,12 585 92,25

Sin

si

gno

Carry Save: Braun 5,41 590 95,9 Mega Función 7,06 937 159,45

Algoritmo de Booth (paralelo) 4,78 926 118,81

Con

si

gno

Baugh-Wooley 5,48 564 94,02

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

ALTERA MAX+PLUS II v.10.1 Optimización en Área

Tipo de Multiplicador de 16 bits Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Frecuencia Máxima

(MHz)

Mega Función 5,63 767 116,81 Ripple Carry 3,46 534 70,93 Wallace 5,14 532 87,41

Sin

si

gno

Carry Save: Braun 5,18 534 88 Mega Función 5,43 871 124,44

Algoritmo de Booth paralelo 4,42 841 105,65

Con

si

gno

Baugh-Wooley 5,10 539 87,68

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

Los resultados de simulación usando QUARTUS II versión 3.0, para optimización en velocidad y área, son presentados en las Tablas 3 y 4, respectivamente.

Page 7: Fpgas Multiplicacion Con

QUARTUS II versión 3.0 Optimización en Velocidad

Tipo de Multiplicador de 16 bits Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Mega Función 11,56 583 161,75 Ripple Carry 3,68 639 80,32 Wallace 8,82 399 101,97 Carry Save: Braun 9,32 403 106,37

Sin

sign

o

Multiplicador pipeline 13,21 620 189,03 Mega Función 12,17 640 181,23

Algoritmo de Booth paralelo 8,24 632 133,32

Con

si

gno

Baugh-Wooley 9,44 385 104,11

Tabla 3. Multiplicadores paralelos optimizados en velocidad usando QUARTUS II versión 3.0.

QUARTUS III web edition Optimización en Área

Tipo de Multiplicador de 16 bits Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Mega Función 9,49 505 125,61 Ripple Carry 5,83 352 74,74 Wallace 8,66 350 92,91 Carry Save: Braun 8,73 352 93,69

Sin

sign

o

Multiplicador pipeline 10,12 512 132,83 Mega Función 9,15 573 133,97

Algoritmo de Booth paralelo 7,45 554 113,26

Con

si

gno

Baugh-Wooley 8,59 355 93,26

Tabla 4. Multiplicadores paralelos optimizados en àrea usando QUARTUS II versión 3.0.

Los resultados de simulación para los multiplicadores paralelos son mostrados en las Figuras 13a, 13b, 13c, 13d, 13e.

Figura 13a. Simulación detallada del Multiplicador Ripple Carry.

Page 8: Fpgas Multiplicacion Con

Figura 13b. Simulación detallada del Multiplicador Carry Save.

Figura 13c. Simulación detallada del Multiplicador de Wallace.

Figura 13d. Simulación detallada de la Megafunción.

Figura 13e. Simulación detallada del Multiplicador paralelo basado en el Algoritmo de Booth 3.2 Multiplicadores Secuenciales Los resultados de simulación usando MAX+Plus II, para optimización de velocidad y área, son presentados en las Tablas 5 y 6, respectivamente.

Page 9: Fpgas Multiplicacion Con

ALTERA MAX+PLUS II v.10.1 Optimización en Velocidad

Tipo de Multiplicador de 16 bits sin signo Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Basado en Sumas y Desplazamientos 15,82 150 80,70

Algoritmo de Booth 6,68 175 58,35

Tabla 5. Multiplicadores secuenciales optimizados en velocidad usando MAX+plus II.

ALTERA MAX+PLUS II v.10.1 Optimización en Área

Tipo de Multiplicador de 16 bits sin signo Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Basado en Sumas y Desplazamientos 13,48 134 70,17

Algoritmo de Booth 6.29 155 54,77

Tabla 6. Multiplicadores secuenciales optimizados en área usando MAX+plus II.

Los resultados de simulación usando QUARTUS II versión 3.0, para optimización en velocidad y área, son presentados en las Tablas 7 y 8, respectivamente.

QUARTUS II versión 3.0 Optimización en Velocidad

Tipo de Multiplicador de 16 bits sin signo Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Basado en Sumas y Desplazamientos 24,25 94 78,96

Algoritmo de Booth 10,24 110 57,56

Tabla 7. Multiplicadores secuenciales optimizados en velocidad usando QUARTUS II versión 3.0.

QUARTUS II versión 3.0 Optimización en Área

Tipo de Multiplicador de 16 bits sin signo Frecuencia Máxima

(MHz) Elementos

Lógicos (LE) Potencia Estimada

(mW)

Basado en Sumas y Desplazamientos 23,26 93 76,80

Algoritmo de Booth 10,85 108 58,40

Tabla 8. Multiplicadores secuenciales optimizados en área usando QUARTUS II versión 3.0.

Page 10: Fpgas Multiplicacion Con

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

Figura 14a. Simulación detallada del Multiplicador secuencial basado en sumas y desplazamientos

Figura 14b. Simulación detallada del Multiplicador secuencial basado en el Algoritmo de Booth Modificado Para los multiplicadores secuenciales se presenta un nuevo análisis, el cual es el número máximo de señales de reloj que se utiliza para una operación de multiplicación (en su peor caso). 4. CONCLUSIONES Y TRABAJO FUTURO Este trabajo presenta una descripción detallada del diseño de diferentes arquitecturas para los multiplicadores, los cuales fueron diseñados usando dispositivos lógicos programables de Altera. Los diseños fueron compilados sobre el dispositivo EPF10K70RC240-4.

Los resultados de simulación obtenidos permiten presentar las siguientes conclusiones: • En muchos casos, el uso de la Megafunción

lpm_mult para implementar la multiplicación no es la mas adecuada, especialmente en donde el compromiso de área y consumo de potencia son criterios de diseño primordiales.

• Desde las simulaciones para cada multiplicador se puede observar los efectos de retardo en el resultado, al cambiar algún operando. En este

contexto, la frecuencia en la que los datos son confiables, se toma a partir de la peor respuesta del sistema, después de haber simulado y verificado los tiempos con los resultados de la Matriz de Retardos que entrega Max+Plus II y los análisis de tiempos en Quartus II versión 3.0.

• El multiplicador Ripple Carry es bastante fácil de comprender, pero no es práctico, ya que presenta el menor rendimiento en comparación con los demás multiplicadores paralelos, diseñados en este artículo. Sin embargo, este presenta el menor consumo de potencia promedio, y en algunas aplicaciones este parámetro puede ser primordial para sistemas embebidos en donde la frecuencia máxima no es determinante.

Page 11: Fpgas Multiplicacion Con

• El software Quartus II versión 3.0, la herramienta de Altera, posee mejor capacidad de síntesis en cuanto a los factores de frecuencia máxima y número de elementos lógicos 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 multiplicación de números positivos y negativos, y además 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 lógicos, y por lo tanto su potencia promedio disipada también es pequeña. Sin embargo, el resultado de la multiplicación es obtenido después de un número entero de ciclos de reloj.

• El multiplicador pipeline presenta el mejor desempeño 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 opción 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.

5. AGRADECIMIENTOS

Este trabajo ha sido patrocinado por Altera Corporation a través del Programa Universitario. Los autores dan especial agradecimientos a Mrs. Ralene Marcoccia de Altera Corporation.

6. BIBLIOGRAFÍA

[1] D. Gajski, “Principios de Diseño 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.

[6] A. Tanenbaum, “Organización de Computadores un Enfoque Estructurado”,

Prentice Hall, 1992. [7] W. Stallings, “Organización y Arquitectura

de Computadores”, Prentice Hall, 1999. [8] V.C. Hamacher, Z.G. Vranesic y S.G.

Zaky, “Organización 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