06.05.2013 Views

Multiplicación Secuencial en Dispositivos Lógicos Programables

Multiplicación Secuencial en Dispositivos Lógicos Programables

Multiplicación Secuencial en Dispositivos Lógicos Programables

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MULTIPLICACIÓN SECUENCIAL EN<br />

DISPOSITIVOS L ÓGICOS<br />

PROGRAMABLES<br />

Ing. Marcos Funes<br />

Este Trabajo de Tesis fue pres<strong>en</strong>tado al Departam<strong>en</strong>to de Electrónica<br />

de la Facultad de Ing<strong>en</strong>iería de la Universidad Nacional de Mar del Plata<br />

el 8 de Octubre de 2007, como requisito parcial para la obt<strong>en</strong>ción del título de<br />

Doctor <strong>en</strong> Ing<strong>en</strong>iería. M<strong>en</strong>ción Electrónica<br />

Director: Dr. Daniel Carrica<br />

Co-Director: Ing. Mario B<strong>en</strong>edetti


A mis Padres.<br />

A Andrea.<br />

A Nicolás, Alejandro y Fernando


Índice g<strong>en</strong>eral<br />

Agradecimi<strong>en</strong>tos XVII<br />

Resum<strong>en</strong> XVIII<br />

Nom<strong>en</strong>clatura XX<br />

1. Introducción 1<br />

1.1. Estructuras de Multiplicadores . . . . . . . . . . . . . . . . . . . . 2<br />

1.2. Objetivos de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

1.3. Organización de la tesis . . . . . . . . . . . . . . . . . . . . . . . 4<br />

2. Arquitecturas de Multiplicadores 6<br />

2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2. Algoritmo de la <strong>Multiplicación</strong> . . . . . . . . . . . . . . . . . . . . 7<br />

2.2.1. Operandos <strong>en</strong> punto fijo . . . . . . . . . . . . . . . . . . . 7<br />

2.2.2. Operandos <strong>en</strong> punto flotante . . . . . . . . . . . . . . . . . 9<br />

2.3. Adición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.3.1. Semisumador . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.3.2. Sumador Total . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.3.3. Suma por Propagación de Acarreo . . . . . . . . . . . . . . 15<br />

2.3.4. Suma Carry-Save . . . . . . . . . . . . . . . . . . . . . . . 16<br />

iii


2.3.5. Suma Multi-operandos . . . . . . . . . . . . . . . . . . . . 17<br />

2.4. Multiplicadores Paralelos . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.4.1. Multiplicador por Tabla de Look-up . . . . . . . . . . . . . 19<br />

2.4.2. Multiplicador Ripple Carry . . . . . . . . . . . . . . . . . 20<br />

2.4.3. Multiplicador Carry Save . . . . . . . . . . . . . . . . . . . 22<br />

2.4.4. Multiplicador Guild . . . . . . . . . . . . . . . . . . . . . . 23<br />

2.4.5. Multipicador McCanny-McWhinter . . . . . . . . . . . . . 25<br />

2.5. Consumo de recursos lógicos . . . . . . . . . . . . . . . . . . . . . 25<br />

2.5.1. Operandos <strong>en</strong> Punto Fijo . . . . . . . . . . . . . . . . . . . 25<br />

2.5.2. Operandos <strong>en</strong> punto flotante . . . . . . . . . . . . . . . . . 31<br />

2.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3. Nuevas Arquitecturas de Multiplicadores 33<br />

3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

3.2. <strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong> . . . . . . . . . . . . . . . . . . . . . . . 34<br />

3.2.1. Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

3.2.2. Implem<strong>en</strong>tación . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

3.2.3. Multiplicador <strong>Secu<strong>en</strong>cial</strong> de Base 4 . . . . . . . . . . . . . 45<br />

3.3. Arquitecturas Propuestas <strong>en</strong> Punto Fijo . . . . . . . . . . . . . . 56<br />

3.3.1. Multiplicador <strong>Secu<strong>en</strong>cial</strong> Sin Entradas Registradas . . . . . 56<br />

3.3.2. Multiplicador <strong>Secu<strong>en</strong>cial</strong> Fraccionado . . . . . . . . . . . . 61<br />

3.3.3. Multiplicador de Sumas Consecutivas . . . . . . . . . . . . 67<br />

3.4. Comparación de los multiplicadores . . . . . . . . . . . . . . . . . 75<br />

3.4.1. Multiplicadores optimizados <strong>en</strong> consumo de recursos . . . . 75<br />

3.4.2. Multiplicadores optimizados <strong>en</strong> velocidad . . . . . . . . . . 76<br />

3.4.3. Performance de los multiplicadores . . . . . . . . . . . . . 78<br />

3.5. Arquitecturas Propuestas <strong>en</strong> Punto Flotante . . . . . . . . . . . . 80<br />

iv


3.5.1. Variante Multiplicador <strong>Secu<strong>en</strong>cial</strong> Sin Entradas Registradas 80<br />

3.5.2. Variante Multiplicador <strong>Secu<strong>en</strong>cial</strong> de Sumas Consecutivas . 86<br />

3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90<br />

4. Resultados Experim<strong>en</strong>tales 92<br />

4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

4.2. Parámetros de interés . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

4.3. <strong>Multiplicación</strong> <strong>en</strong> Punto Fijo . . . . . . . . . . . . . . . . . . . . . 93<br />

4.3.1. Consumo de recursos lógicos . . . . . . . . . . . . . . . . . 93<br />

4.3.2. Comportami<strong>en</strong>to temporal . . . . . . . . . . . . . . . . . . 98<br />

4.3.3. Comparación de los multiplicadores . . . . . . . . . . . . . 101<br />

4.4. <strong>Multiplicación</strong> <strong>en</strong> Punto Flotante . . . . . . . . . . . . . . . . . . 114<br />

4.4.1. Consumo de recursos lógicos . . . . . . . . . . . . . . . . . 114<br />

4.4.2. Comportami<strong>en</strong>to temporal . . . . . . . . . . . . . . . . . . 115<br />

4.4.3. Performance . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

4.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

5. Conclusiones 121<br />

5.0.1. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Bibliografía 129<br />

A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 137<br />

A.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137<br />

A.2. PLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138<br />

A.3. CPLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

A.4. FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

A.4.1. Celdas Lógicas . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

A.4.2. Recursos dedicados . . . . . . . . . . . . . . . . . . . . . . 145<br />

v


A.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

B. Sistemas numéricos 150<br />

B.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

B.2. Repres<strong>en</strong>tación numérica . . . . . . . . . . . . . . . . . . . . . . . 150<br />

B.2.1. Punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

B.2.2. Punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

B.2.3. No-conv<strong>en</strong>cionales . . . . . . . . . . . . . . . . . . . . . . . 157<br />

C. <strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong> aplicada al Control de Movimi<strong>en</strong>to 159<br />

C.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

C.2. Accionami<strong>en</strong>tos paso a paso . . . . . . . . . . . . . . . . . . . . . 161<br />

C.2.1. G<strong>en</strong>eración de perfiles de velocidad Off-line . . . . . . . . . 162<br />

C.2.2. G<strong>en</strong>eración de perfiles de velocidad On-line . . . . . . . . . 162<br />

C.3. G<strong>en</strong>eración de perfiles de velocidad mediante FPGA . . . . . . . . 167<br />

C.3.1. Implem<strong>en</strong>tación del producto Vr · nk . . . . . . . . . . . . 169<br />

C.4. Resultados experim<strong>en</strong>tales . . . . . . . . . . . . . . . . . . . . . . 172<br />

C.4.1. Modo de funcionami<strong>en</strong>to <strong>en</strong> pasos . . . . . . . . . . . . . . 172<br />

C.4.2. Modo de funcionami<strong>en</strong>to <strong>en</strong> micropasos . . . . . . . . . . . 174<br />

C.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

D. Publicaciones 179<br />

D.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

D.2. Multiplicadores secu<strong>en</strong>ciales <strong>en</strong> FPGA: Evaluación y Comparación<br />

de Parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

D.3. Estudio comparativo de multiplicadores secu<strong>en</strong>ciales implem<strong>en</strong>ta-<br />

dos <strong>en</strong> FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

D.4. Floating Point Multipliers with Reduced FPGA Area . . . . . . . 199<br />

vi


D.5. Performance Evaluation of FPGA Floating Point Multipliers . . . 207<br />

D.6. Novel FPGA based Floating Point Multiplier: Consecutive-Sums<br />

Sequ<strong>en</strong>tial Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />

D.7. Novel Stepper Motor Controller Based on FPGA Hardware Imple-<br />

m<strong>en</strong>tation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220<br />

D.8. FPGA based stepper motor controller . . . . . . . . . . . . . . . . 225<br />

vii


Índice de Tablas<br />

2.1. Producto de dos operandos de 4 bits . . . . . . . . . . . . . . . . 7<br />

2.2. Implem<strong>en</strong>tación de multiplicadores <strong>en</strong> FPGA. . . . . . . . . . . . 29<br />

3.1. Producto de dos operandos de 4 bits, acumulación de productos<br />

parciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

3.2. <strong>Multiplicación</strong> secu<strong>en</strong>cial con desplazami<strong>en</strong>to a la izquierda para<br />

operandos de 4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

3.3. <strong>Multiplicación</strong> con desplazami<strong>en</strong>to a la derecha para operandos de<br />

4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

3.4. Estimación de consumo de recursos lógicos de un SM. . . . . . . . 40<br />

3.5. Retardos de una FPGA Xilinx Spartan-4. . . . . . . . . . . . . . . 43<br />

3.6. Producto de dos operandos <strong>en</strong> base 4 . . . . . . . . . . . . . . . . 46<br />

3.7. <strong>Multiplicación</strong> base 4 de dos operados de 4 bits. . . . . . . . . . . 46<br />

3.8. Codificación de los dígitos, alternativa (-X). . . . . . . . . . . . . 47<br />

3.9. <strong>Multiplicación</strong> base 4, alternativa (-X). . . . . . . . . . . . . . . . 48<br />

3.10. Estimación de consumo de recursos de un SMB4(3X). . . . . . . . 49<br />

3.11. Estimación de consumo de recursos lógicos SMB4(-X). . . . . . . 50<br />

3.12. Estimación de consumo de recursos lógicos de un SMSR. . . . . . 57<br />

3.13. Estimación de consumo de recursos lógicos SMF(SM). . . . . . . . 63<br />

3.14. Estimación de consumo de recursos lógicos de un SMF(SMSR). . 64<br />

viii


3.15. Ejemplo de una multiplicación mediante sumas consecutivas . . . 68<br />

3.16. Estimación de consumo de recursos lógicos de un SMSC(SM). . . 69<br />

3.17. Estimación de consumo de recursos lógicos de un SMSC(SMSR). . 70<br />

3.18. Estimación de consumo de recursos lógicos de la variante SMSR<br />

con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

3.19. Estimación de consumo de recursos lógicos de la variante SMSR<br />

con redondeo a +∞. . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

3.20. Estimación de consumo de recursos lógicos de la variante SMSC<br />

con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

3.21. Estimación de consumo de recursos lógicos de la variante SMSC<br />

con redondeo a +∞. . . . . . . . . . . . . . . . . . . . . . . . . . 90<br />

4.1. Consumo de recursos de los multiplicadores <strong>en</strong> Spartan[CLB]. . . 94<br />

4.2. Consumo Estimado de recursos de los multiplicadores [CLB]. . . . 94<br />

4.3. Difer<strong>en</strong>cia porc<strong>en</strong>tual, Consumo Experim<strong>en</strong>tal vs Estimado [ %]. . 95<br />

4.4. Consumo de recursos de los multiplicadores <strong>en</strong> Virtex [slices]. . . . 98<br />

4.5. Consumo de recursos de los multiplicadores <strong>en</strong> Virtex II [slices]. . 98<br />

4.6. Retardo de propagación de los multiplicadores <strong>en</strong> Spartan [ns]. . . 99<br />

4.7. Retardo estimado de propagación de los multiplicadores Trd = 0 [ns]. 99<br />

4.8. Difer<strong>en</strong>cia porc<strong>en</strong>tual, Retardo de propagación Experim<strong>en</strong>tal vs<br />

Estimado [ %]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

4.9. Velocidad de Procesami<strong>en</strong>to de los multiplicadores <strong>en</strong> Spartan [Mops/s].100<br />

4.10. Velocidad de Procesami<strong>en</strong>to de los multiplicadores <strong>en</strong> Virtex [Mops/s].101<br />

4.11. Velocidad de Procesami<strong>en</strong>to de los multiplicadores <strong>en</strong> Virtex II<br />

[Mops/s]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

4.12. Consumo de recursos lógicos de los multiplicadores <strong>en</strong> punto flo-<br />

tante <strong>en</strong> Spartan [CLBs]. . . . . . . . . . . . . . . . . . . . . . . . 114<br />

ix


4.13. Consumo de recursos lógicos de las variantes <strong>en</strong> Virtex [slices]. . . 115<br />

4.14. Consumo de recursos lógicos de las variantes <strong>en</strong> Virtex II [slices]. . 115<br />

4.15. Comportami<strong>en</strong>to temporal de las variantes <strong>en</strong> Spartan [Mflop/s]. . 115<br />

4.16. Comportami<strong>en</strong>to temporal de las variantes <strong>en</strong> Virtex [Mflop/s]. . 116<br />

4.17. Comportami<strong>en</strong>to temporal de las variantes <strong>en</strong> Virtex II [Mflop/s]. 116<br />

5.1. Implem<strong>en</strong>tación de Multiplicadores Paralelos <strong>en</strong> FPGA. . . . . . . 122<br />

5.2. Resultados experim<strong>en</strong>tales de Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es . . . . 123<br />

5.3. Resultados experim<strong>en</strong>tales de los Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es pro-<br />

puestos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

5.4. Resultados experim<strong>en</strong>tales de Multiplicadores <strong>en</strong> Punto Flotante . 125<br />

B.1. Punto flotante estándar. . . . . . . . . . . . . . . . . . . . . . . . 156<br />

B.2. Punto flotante a medida. . . . . . . . . . . . . . . . . . . . . . . . 157<br />

x


Índice de figuras<br />

2.1. Diagrama <strong>en</strong> bloques de un multiplicador <strong>en</strong> punto flotante . . . . 9<br />

2.2. Semisumador a) Símbolo lógico, b) y c) arquitectura. . . . . . . . 13<br />

2.3. Sumador total,a) símbolo lógico b) y c) arquitecturas. . . . . . . . 15<br />

2.4. Símbolo lógico de un CPA e implem<strong>en</strong>tación de un RCA. . . . . 16<br />

2.5. CSA a) Símbolo lógico y b) implem<strong>en</strong>tación con FAs. . . . . . . . 17<br />

2.6. Sumadores concat<strong>en</strong>ados a) con CPA, b) con CSA. . . . . . . . . 18<br />

2.7.<br />

Árbol de sumadores para m=9. . . . . . . . . . . . . . . . . . . . 19<br />

2.8. Multiplicador por Tabla de Look-up. . . . . . . . . . . . . . . . . 20<br />

2.9. Multiplicador Ripple Carry de 4 bits. . . . . . . . . . . . . . . . . 20<br />

2.10. PE de un multiplicador Ripple Carry. . . . . . . . . . . . . . . . . 21<br />

2.11. Esquema de un multiplicador Ripple Carry mediante PEs. . . . . 21<br />

2.12. Multiplicador Carry Save de 4 bits. . . . . . . . . . . . . . . . . . 22<br />

2.13. PE de un multiplicador Carry Save. . . . . . . . . . . . . . . . . . 22<br />

2.14. Esquema de un multiplicador Carry Save mediante PEs. . . . . . 23<br />

2.15. PE de un multiplicador paralelo Guild. . . . . . . . . . . . . . . . 23<br />

2.16. Multiplicador paralelo Guild. . . . . . . . . . . . . . . . . . . . . . 24<br />

2.17. PE de un multiplicador Mccanny - Mcwhinter. . . . . . . . . . . . 25<br />

2.18. Multiplicador paralelo Mccanny - Mcwhinter. . . . . . . . . . . . 26<br />

2.19. Consumo de recursos lógicos de MP. . . . . . . . . . . . . . . . . 28<br />

2.20. Multiplicadores proporcionados por Xilinx. . . . . . . . . . . . . . 29<br />

xi


2.21. Implem<strong>en</strong>tación de Multiplicadores n = 8 . . . . . . . . . . . . . . 30<br />

2.22. Implem<strong>en</strong>tación de Multiplicadores n = 16 . . . . . . . . . . . . . 30<br />

2.23. Implem<strong>en</strong>tación de un multiplicador optimizado <strong>en</strong> área de Xilinx<br />

n = 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

3.1. Multiplicador SM con desplazami<strong>en</strong>to a la derecha. . . . . . . . . 37<br />

3.2. Multiplicador SM con desplazami<strong>en</strong>to a la derecha con registro<br />

compartido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

3.3. Multiplicador SM con desplazami<strong>en</strong>to a la izquierda. . . . . . . . 39<br />

3.4. Consumo de recursos del SM. . . . . . . . . . . . . . . . . . . . . 41<br />

3.5. Esquema de retardos <strong>en</strong> un sumador. . . . . . . . . . . . . . . . . 42<br />

3.6. Retardo de propagación estimado del SM. . . . . . . . . . . . . . 44<br />

3.7. Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SM. . . . . . . . 44<br />

3.8. Velocidad máxima de procesami<strong>en</strong>to del SM. . . . . . . . . . . . . 45<br />

3.9. Diagrama de un SMB4(3X). . . . . . . . . . . . . . . . . . . . . . 47<br />

3.10. Diagrama de un SMB4(-X). . . . . . . . . . . . . . . . . . . . . . 49<br />

3.11. Diagrama de la variante del SMB4(-X). . . . . . . . . . . . . . . . 50<br />

3.12. Consumo de recursos de multiplicadores SM. . . . . . . . . . . . . 52<br />

3.13. Retardo de propagación estimado del SMB4(3X). . . . . . . . . . 53<br />

3.14. Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMB4(3X). . . . 53<br />

3.15. Velocidad máxima de procesami<strong>en</strong>to del SMB4(3X). . . . . . . . . 54<br />

3.16. Retardo de propagación estimado del SMB4(-X). . . . . . . . . . 55<br />

3.17. Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMB4(-X). . . . 55<br />

3.18. Velocidad máxima de procesami<strong>en</strong>to del SMB4(-X). . . . . . . . . 56<br />

3.19. Multiplicador SMSR. . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

3.20. Consumo de recursos del SMSR. . . . . . . . . . . . . . . . . . . . 58<br />

3.21. Retardo de propagación estimado del SMSR. . . . . . . . . . . . . 59<br />

xii


3.22. Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMSR. . . . . . 60<br />

3.23. Velocidad máxima de procesami<strong>en</strong>to del SMSR. . . . . . . . . . . 60<br />

3.24. Diagrama de operación de un SMF. . . . . . . . . . . . . . . . . . 62<br />

3.25. Consumo de recursos de multiplicadores SMF. . . . . . . . . . . . 65<br />

3.26. Retardo de propagación estimado del SMF. . . . . . . . . . . . . . 66<br />

3.27. Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMF. . . . . . . 66<br />

3.28. Velocidad máxima de procesami<strong>en</strong>to de los SMF. . . . . . . . . . 67<br />

3.29. Ejemplo de un SMSC(SM). . . . . . . . . . . . . . . . . . . . . . 68<br />

3.30. Ejemplo de un SMSC(SMSR). . . . . . . . . . . . . . . . . . . . . 69<br />

3.31. Consumo de recursos estimado de un SMSC. . . . . . . . . . . . . 71<br />

3.32. Ruta crítica de dos sumas consecutivas. . . . . . . . . . . . . . . . 72<br />

3.33. Retardo de propagación estimado del SMSC. . . . . . . . . . . . . 73<br />

3.34. Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMSC. . . . . . 74<br />

3.35. Velocidad máxima de procesami<strong>en</strong>to del SMSC. . . . . . . . . . . 74<br />

3.36. Consumo de recursos lógicos de un SM vs SMSR. . . . . . . . . . 75<br />

3.37. Velocidad de procesami<strong>en</strong>to de un SM vs SMSR. . . . . . . . . . . 76<br />

3.38. Consumo de recursos lógicos de los multiplicadores optimizados <strong>en</strong><br />

velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

3.39. Velocidad de procesami<strong>en</strong>to de los multiplicadores optimizados <strong>en</strong><br />

velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

3.40. Índice de performance de los multiplicadores. . . . . . . . . . . . . 79<br />

3.41. Índice de performance de los multiplicadores 20 < n < 32. . . . . 80<br />

3.42. Modificación del SMSR para el producto de las mantisas . . . . . 81<br />

3.43. Ejemplo del esquema de redondeo implem<strong>en</strong>tado . . . . . . . . . . 83<br />

3.44. <strong>Multiplicación</strong> de las mantisas. . . . . . . . . . . . . . . . . . . . . 83<br />

3.45. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . . 85<br />

3.46. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . . 86<br />

xiii


3.47. SMSC modificado para el producto de las mantisas . . . . . . . . 87<br />

3.48. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . . 89<br />

3.49. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . . 91<br />

4.1. Síntesis de un CLB del multiplicador SM. . . . . . . . . . . . . . . 95<br />

4.2. Consumo de recursos lógicos del SM <strong>en</strong> Spartan. . . . . . . . . . . 96<br />

4.3. Consumo de recursos lógicos del SM <strong>en</strong> Spartan. . . . . . . . . . . 97<br />

4.4. Consumo de recursos lógicos: SM vs SMSR <strong>en</strong> Spartan. . . . . . . 102<br />

4.5. Consumo de recursos lógicos: SM vs SMSR <strong>en</strong> Virtex. . . . . . . . 103<br />

4.6. Consumo de recursos lógicos: SM vs SMSR <strong>en</strong> Virtex II. . . . . . 103<br />

4.7. Velocidad de procesami<strong>en</strong>to: SM vs SMSR <strong>en</strong> Spartan. . . . . . . 104<br />

4.8. Velocidad de procesami<strong>en</strong>to: SM vs SMSR <strong>en</strong> Virtex. . . . . . . . 104<br />

4.9. Velocidad de procesami<strong>en</strong>to: SM vs SMSR <strong>en</strong> Virtex II. . . . . . . 105<br />

4.10. Consumo de recursos lógicos de multiplicadores optimizados <strong>en</strong><br />

velocidad <strong>en</strong> Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

4.11. Consumo de recursos lógicos de multiplicadores optimizados <strong>en</strong><br />

velocidad <strong>en</strong> Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

4.12. Consumo de recursos lógicos de multiplicadores optimizados <strong>en</strong><br />

velocidad <strong>en</strong> Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

4.13. Velocidad de procesami<strong>en</strong>to de los multiplicadores optimizados <strong>en</strong><br />

velocidad <strong>en</strong> Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

4.14. Velocidad de procesami<strong>en</strong>to de multiplicadores optimizados <strong>en</strong> ve-<br />

locidad <strong>en</strong> Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

4.15. Velocidad de procesami<strong>en</strong>to de multiplicadores optimizados <strong>en</strong> ve-<br />

locidad <strong>en</strong> Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

4.16. Índice de performance de los multiplicadores <strong>en</strong> Spartan, 8 ≤ n ≤ 20.110<br />

xiv


4.17. Índice de performance de los multiplicadores <strong>en</strong> Spartan, 20 ≤ n ≤<br />

32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110<br />

4.18. Índice de performance de los multiplicadores <strong>en</strong> Virtex, 8 ≤ n ≤ 20. 111<br />

4.19. Índice de performance de los multiplicadores <strong>en</strong> Virtex, 20 ≤ n ≤ 32.112<br />

4.20. Índice de performance de los multiplicadores <strong>en</strong> Virtex II, 8 ≤ n ≤ 20.113<br />

4.21. Índice de performance de los multiplicadores <strong>en</strong> Virtex II, 20 ≤<br />

n ≤ 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

4.22. Índice de performance de los multiplicadores con redondeo a cero<br />

<strong>en</strong> Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

4.23. Índice de performance de los multiplicadores con redondeo a +∞<br />

<strong>en</strong> Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

4.24. Índice de performance de los multiplicadores con redondeo a +∞<br />

<strong>en</strong> Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

4.25. Índice de performance de los multiplicadores con redondeo a +∞<br />

<strong>en</strong> Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

A.1. Diagrama <strong>en</strong> bloques de un CPLD . . . . . . . . . . . . . . . . . . 140<br />

A.2. Distribución de bloques de una FPGA de Xilinx . . . . . . . . . . 141<br />

A.3. Matriz de interconexión de una FPGA de Xilinx . . . . . . . . . . 143<br />

A.4. Descripción de un LE de una FPGA FLEX10K de Altera . . . . . 144<br />

A.5. Descripción de un CLB de una FPGA XC4000 de Xilinx . . . . . 145<br />

A.6. Recursos lógicos de algunas FPGAs de Xilinx . . . . . . . . . . . 146<br />

A.7. Lógica de acarreo dedicada de una FPGA XC4000 de Xilinx . . . 148<br />

B.1. Esquema de formatos numéricos . . . . . . . . . . . . . . . . . . . 151<br />

C.1. Esquema de motores de una sección del CLIC. . . . . . . . . . . . 161<br />

xv


C.2. Sistema de control de movimi<strong>en</strong>to de motores de accionami<strong>en</strong>to<br />

increm<strong>en</strong>tal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

C.3. Diagrama de flujo de un algoritmo on-line. . . . . . . . . . . . . . 163<br />

C.4. Perfil de velocidad trapezoidal. . . . . . . . . . . . . . . . . . . . . 164<br />

C.5. Perfil de velocidad, deseado, cuantizado y la temporización resul-<br />

tante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

C.6. (Izquierda) Posición y velocidad con el algoritmo iterativo. (Dere-<br />

cha) Detalle del perfil de posición y velocidad del perfil iterativo . 167<br />

C.7. Arquitectura hardware del algoritmo de g<strong>en</strong>eración de perfil de<br />

velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

C.8. Implem<strong>en</strong>tación del multiplicador Ripple Carry <strong>en</strong> una FPGA XC4006E.170<br />

C.9. Implem<strong>en</strong>tación de un multiplicador optimizado <strong>en</strong> área de Xilinx<br />

<strong>en</strong> una FPGA XC4006E. . . . . . . . . . . . . . . . . . . . . . . . 171<br />

C.10.Perfil de velocidad y posición del accionami<strong>en</strong>to controlado por un<br />

sistema basado <strong>en</strong> FPGA. 15 rev<br />

s<br />

≡ 6000 pasos<br />

s . . . . . . . . . . . . 173<br />

C.11.Perfil de velocidad del accionami<strong>en</strong>to controlado por un sistema<br />

basado <strong>en</strong> FPGA. 62,5 rev<br />

s<br />

≡ 25000 pasos<br />

s . . . . . . . . . . . . . . . 174<br />

C.12.Perfil de velocidad del accionami<strong>en</strong>to utilizando el modo de micro-<br />

pasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176<br />

C.13.Perfiles de posición y velocidad para un sistema de accionami<strong>en</strong>to<br />

<strong>en</strong> modomicropaso. . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

xvi


Agradecimi<strong>en</strong>tos<br />

A Mario<br />

A Daniel<br />

A mis colegas <strong>en</strong> el Laboratorio de Instrum<strong>en</strong>tación y Control<br />

xvii


Resum<strong>en</strong><br />

El objetivo principal de esta tesis fue desarrollar arquitecturas de multiplicado-<br />

res binarios de m<strong>en</strong>or consumo de recursos lógicos que las exist<strong>en</strong>tes, mant<strong>en</strong>i<strong>en</strong>do<br />

las prestaciones de velocidad de cálculo. El propósito particular fue implem<strong>en</strong>tar<br />

las mismas <strong>en</strong> los dispositivos digitales d<strong>en</strong>ominados FPGA (Field Programmable<br />

Gate Array).<br />

Para ello se investigaron las estructuras de multiplicación del tipo secu<strong>en</strong>cial<br />

que se caracterizan por poseer un consumo de recursos reducido y una velocidad<br />

de procesami<strong>en</strong>to baja.<br />

Se modelizaron los multiplicadores a partir del desarrollo de ecuaciones que<br />

permit<strong>en</strong> estimar el consumo de recursos lógicos y el desempeño temporal de los<br />

mismos. Se desarrollaron nuevas arquitecturas que se compararon con las exis-<br />

t<strong>en</strong>tes. Se introdujo un nuevo indicador d<strong>en</strong>ominado índice de performance, que<br />

permite cuantificar el costo de un multiplicador para una dada FPGA. Los resul-<br />

tados teóricos se corroboraron con un exhaustivo trabajo experim<strong>en</strong>tal mediante<br />

el cual se han validado las ecuaciones obt<strong>en</strong>idas.<br />

A partir de la validación de los modelos de los multiplicadores, se determina-<br />

ron los esquemas de mayor desempeño que cumpl<strong>en</strong> con los objetivos deseados.<br />

Así se arribó a multiplicadores <strong>en</strong> punto fijo con los que se obtuvo un consu-<br />

mo de recursos hasta 8 veces m<strong>en</strong>or y una velocidad comparable a la de una<br />

arquitectura exist<strong>en</strong>te. Los avances se ext<strong>en</strong>dieron a la multiplicación <strong>en</strong> punto<br />

xviii


flotante, obt<strong>en</strong>i<strong>en</strong>dose esquemas de bajo consumo de recursos y bu<strong>en</strong>a velocidad<br />

de procesami<strong>en</strong>to.<br />

xix


Nom<strong>en</strong>clatura<br />

1C Complem<strong>en</strong>to a 1<br />

2C Complem<strong>en</strong>to a 2<br />

ALP Arreglo Lógico Programable<br />

ASIC Application Specific Integrated Circuit<br />

CLB Configurable Logic Block<br />

CPA Carry Propagate Adder<br />

CPLD Complex Programmable Logic Device<br />

CSA Carry Save Adder<br />

DSP Digital Signal Processor<br />

FA Full Adder<br />

FF Flip Flop<br />

FG Function G<strong>en</strong>erator<br />

FPGA Field Programmable Gate Array<br />

GAL G<strong>en</strong>eric Array Logic<br />

HA Half Adder<br />

LSB Least Significant Bit<br />

LUT Look-up Table<br />

xx


MAC Multiplicador/Acumulador<br />

MP Multiplicador Paralelo<br />

PAL Programmable Array Logic<br />

PE Procesador Elem<strong>en</strong>tal<br />

PLD Programmable Logic Device<br />

PROM Programmable Read Only Memory<br />

PS Processing Speed<br />

RCA Ripple Carry Adder<br />

SM Multiplicador <strong>Secu<strong>en</strong>cial</strong><br />

SMB4 Multiplicador <strong>Secu<strong>en</strong>cial</strong> de base 4<br />

SMF Multiplicador <strong>Secu<strong>en</strong>cial</strong> Fraccionado<br />

SMSC Multiplicador <strong>Secu<strong>en</strong>cial</strong> de Sumas Consecutivas<br />

SMSR Multiplicador <strong>Secu<strong>en</strong>cial</strong> Sin <strong>en</strong>tradas Registradas<br />

SR Shift Register<br />

VHDL Very high speed integrated circuit Hardware Description Lan-<br />

fc<br />

pi<br />

guage<br />

Máxima frecu<strong>en</strong>cia de reloj<br />

Bit i del operando P<br />

P Operando Producto<br />

TBY P<br />

Tc<br />

TCK<br />

TCKO<br />

CIN to COUT bypass delay<br />

Tiempo de cálculo<br />

Período de reloj<br />

Clock-to-output delay<br />

xxi


TILO<br />

TOCP Y<br />

tpd<br />

Trd<br />

TSUM<br />

F/G inputs to X/Y outputs delay<br />

Operand inputs (F1, F2, G1, G4) to COUT delay<br />

Propagation delay<br />

Route delay<br />

CIN through function g<strong>en</strong>erator to X/Y output delay<br />

X, Y Operando Multiplicando y multiplicador respectivam<strong>en</strong>te<br />

xi, yi<br />

Vmin<br />

Vmax<br />

Bit i del operando Multiplicando y Multiplicador respectivam<strong>en</strong>-<br />

te<br />

Velocidad mínima<br />

Velocidad máxima<br />

Vr(k) Velocidad de refer<strong>en</strong>cia para el paso k-esimo<br />

∆t(k) Período de tiempo <strong>en</strong>tre el paso actual y el próximo<br />

xxii


Capítulo 1<br />

Introducción<br />

En el Procesami<strong>en</strong>to Digital de Señales (PDS) se recurre, como operación<br />

elem<strong>en</strong>tal, al producto de dos operandos y la posterior adición de un tercero,<br />

estructura conocida como MAC (Multiplicador/Acumulador).<br />

Los dispositivos de cálculo más empleados <strong>en</strong> el PDS son los DSPs (Digital<br />

Signal Processors). Si bi<strong>en</strong> los DSPs son baratos y flexibles, pose<strong>en</strong> sólo una uni-<br />

dad MAC por lo que un proceso aritmético demanda la ejecución secu<strong>en</strong>cial de las<br />

operaciones. Como consecu<strong>en</strong>cia, una operación algorítmica consume un deter-<br />

minado tiempo de ejecución y, si fuera necesario utilizar un tiempo de ejecución<br />

m<strong>en</strong>or, conv<strong>en</strong>dría adoptar hardware a medida, alternativa proporcionada por los<br />

ASICs (Application-Specific Integrated Circuit) y las FPGAs (Field Programma-<br />

ble Gate Array). Tanto los ASICs como las FPGAs posibilitan la utilización de<br />

varias MACs <strong>en</strong> paralelo, logrando de este modo una notable reducción del tiempo<br />

de procesami<strong>en</strong>to. Los ASICs admit<strong>en</strong> implem<strong>en</strong>tar sistemas complejos y resguar-<br />

dan la propiedad intelectual de los procesos debido a que no son copiables. Sin<br />

embargo implican un gran costo de fabricación por lo que no aceptan errores<br />

<strong>en</strong> su desarrollo y, consecu<strong>en</strong>tem<strong>en</strong>te, su utilización repres<strong>en</strong>ta un gran riesgo de<br />

producción.<br />

1


Capítulo 1. Introducción 2<br />

En cuanto a las FPGAs, éstas combinan la flexibilidad de un DSP con la<br />

velocidad y la d<strong>en</strong>sidad de compon<strong>en</strong>tes de un ASIC. Las FPGAs pose<strong>en</strong> una<br />

gran cantidad de recursos lógicos, un bajo costo de desarrollo ya que son fáciles de<br />

depurar y, fundam<strong>en</strong>talm<strong>en</strong>te, permit<strong>en</strong> al diseñador corregir errores y actualizar<br />

el diseño. Estas v<strong>en</strong>tajas conviert<strong>en</strong> a las FPGAs <strong>en</strong> dispositivos apropiados como<br />

procesadores de señales o aceleradores de cálculo.<br />

1.1. Estructuras de Multiplicadores<br />

Los multiplicadores se pued<strong>en</strong> clasificar según el modo <strong>en</strong> que ingresan los<br />

operandos [1] [2]. Si ambos operandos ingresan <strong>en</strong> forma serie se d<strong>en</strong>ominan<br />

serie/serie. La mayor v<strong>en</strong>taja de estos multiplicadores reside <strong>en</strong> el bajo núme-<br />

ro de <strong>en</strong>tradas/salidas utilizadas y <strong>en</strong> la bajo consumo de recursos lógicos, sin<br />

embargo estos multiplicadores se <strong>en</strong>cu<strong>en</strong>tran limitados a aplicaciones de baja<br />

velocidad [3] [4] [5]. Si sólo uno de los operandos ingresa <strong>en</strong> forma serie, el mul-<br />

tiplicador se d<strong>en</strong>omina serie/paralelo [6]. Este tipo de multiplicadores pres<strong>en</strong>tan<br />

un consumo de recursos lógicos moderado y son ideales para aplicaciones de velo-<br />

cidad media donde los multiplicadores serie/serie son demasiado l<strong>en</strong>tos. Si ambos<br />

operandos son ingresados <strong>en</strong> paralelo el tipo de multiplicador es d<strong>en</strong>ominado pa-<br />

ralelo/paralelo. Estos últimos son los que se tratarán <strong>en</strong> esta tesis debido a su<br />

capacidad de procesar los datos a alta velocidad.<br />

Los multiplicadores también se pued<strong>en</strong> clasificar <strong>en</strong> función del algoritmo de<br />

cálculo <strong>en</strong>: suma y desplazami<strong>en</strong>to, por árbol o contadores. Los multiplicadores<br />

por suma y desplazami<strong>en</strong>to utilizan el método conocido comúnm<strong>en</strong>te como lápiz<br />

y papel para calcular el producto. En algunos casos esta tarea se realiza constru-<br />

y<strong>en</strong>do una celda de procesami<strong>en</strong>to básica que se repite <strong>en</strong> un arreglo determinado.


Capítulo 1. Introducción 3<br />

La difer<strong>en</strong>cia de procesami<strong>en</strong>to de estos multiplicadores radica <strong>en</strong> el tipo de co-<br />

municación <strong>en</strong>tre estas celdas, que puede ser local (solo existe comunicación <strong>en</strong>tre<br />

celdas vecinas) o global (existe comunicación mas allá de la celda vecina). Con el<br />

objetivo de acelerar los productos parciales 1 C. Wallace [7] propuso originalm<strong>en</strong>te<br />

una estructura de sumadores, conocida como Árbol de Wallace, donde el retardo<br />

de la suma es proporcional el logaritmo del número de sumandos. Otro modo de<br />

acelerar los productos parciales consiste <strong>en</strong> la utilización de contadores parale-<br />

los [8] para obt<strong>en</strong>er la suma de los bits que forman las columnas de la matriz de<br />

productos parciales.<br />

Los multiplicadores que realizan el algoritmo de suma y desplazami<strong>en</strong>to <strong>en</strong><br />

forma simultánea son d<strong>en</strong>ominados habitualm<strong>en</strong>te multiplicadores paralelos. Es-<br />

tos multiplicadores realizan el producto rápidam<strong>en</strong>te, pero son difíciles de realizar<br />

cuando un dispositivo posee una cantidad de recursos limitada. Este problema se<br />

ac<strong>en</strong>túa, cuando el formato de los operandos esta expresado <strong>en</strong> punto flotante.<br />

Los multiplicadores <strong>en</strong> punto flotante utilizan típicam<strong>en</strong>te multiplicadores para-<br />

lelos para el producto de las mantisas [9] [10]. A medida que se increm<strong>en</strong>ta la<br />

complejidad de la operación, el consumo de recursos lógicos utilizados aum<strong>en</strong>ta<br />

notablem<strong>en</strong>te y consecu<strong>en</strong>tem<strong>en</strong>te los costos de implem<strong>en</strong>tación.<br />

Un esquema de multiplicación de operandos <strong>en</strong> paralelo que utiliza una m<strong>en</strong>or<br />

cantidad de recursos lógicos es el d<strong>en</strong>ominado Shift and Add [11] [12] o secu<strong>en</strong>cial<br />

(SM). Esta reducción del consumo de recursos se realiza a costa de ejecutar tantas<br />

iteraciones como longitud de palabra posean los operandos [13] [14]. Esto repre-<br />

s<strong>en</strong>ta una seria desv<strong>en</strong>taja debido al excesivo tiempo de cálculo y por esta razón<br />

han sido excluidos de las aplicaciones típicas. Por otro lado, si se puede mejorar<br />

el desempeño <strong>en</strong> velocidad sin incurrir <strong>en</strong> la cantidad de recursos que requiere un<br />

1 En la multiplicación de dos números <strong>en</strong>teros de n bits se d<strong>en</strong>omina producto parcial al<br />

producto un bit del multiplicador por el multiplicando.


Capítulo 1. Introducción 4<br />

multiplicador paralelo, estos multiplicadores pued<strong>en</strong> resultar más v<strong>en</strong>tajosos.<br />

1.2. Objetivos de la tesis<br />

El objetivo principal de esta tesis consiste <strong>en</strong> el desarrollo de multiplicado-<br />

res con un reducido consumo de recursos lógicos, que mant<strong>en</strong>gan un desempeño<br />

aceptable de la velocidad de procesami<strong>en</strong>to.<br />

En función de este objetivo, se caracterizarán las arquitecturas de los multi-<br />

plicadores exist<strong>en</strong>tes. Se propondrán variantes que incluyan la multiplicación de<br />

operandos <strong>en</strong> punto fijo y punto flotante.<br />

1.3. Organización de la tesis<br />

Esta tesis está dividida <strong>en</strong> cinco capítulos. El Capítulo 1 pres<strong>en</strong>ta el estado<br />

del arte e introduce aspectos de la temática de esta tesis. El Capítulo 2 pres<strong>en</strong>ta<br />

conceptos básicos sobre la multiplicación. Se pres<strong>en</strong>tan los esquemas de Multi-<br />

plicadores Paralelos, los cuales se caracterizan y se <strong>en</strong>sayan con el objetivo de<br />

cuantificar la problemática de consumo de recursos.<br />

El Capítulo 3 está dedicado al desarrollo de la propuesta que consiste <strong>en</strong> la<br />

aplicación de Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es al producto binario <strong>en</strong> punto fijo y <strong>en</strong><br />

punto flotante. En este capítulo se desarrollan difer<strong>en</strong>tes esquemas de Multipli-<br />

cación <strong>Secu<strong>en</strong>cial</strong> para los cuales se estima su desempeño <strong>en</strong> cuanto a la cantidad<br />

de recursos lógicos y velocidad de procesami<strong>en</strong>to.<br />

El Capítulo 4 está dedicado a la verificación experim<strong>en</strong>tal. Para ello se ex-<br />

plicita la implem<strong>en</strong>tación práctica de los difer<strong>en</strong>tes esquemas desarrollados sobre<br />

algunas familias de FPGAs. El objetivo de este capítulo es la contrastación de las<br />

estimaciones obt<strong>en</strong>idas <strong>en</strong> el capítulo anterior con los resultados experim<strong>en</strong>tales.


Capítulo 1. Introducción 5<br />

En el mismo se establec<strong>en</strong> criterios de comparación, <strong>en</strong> términos de performance,<br />

<strong>en</strong>tre los multiplicadores propuestos y otros exist<strong>en</strong>tes.<br />

Adicionalm<strong>en</strong>te, se pres<strong>en</strong>tan cuatro apéndices, a saber:<br />

El Apéndice A realiza una breve descripción de los <strong>Dispositivos</strong> <strong>Lógicos</strong> Pro-<br />

gramables y sus características.<br />

El Apéndice B introduce los formatos numéricos utilizados <strong>en</strong> PDS.<br />

El Apéndice C describe la aplicación específica de los multiplicadores secu<strong>en</strong>-<br />

ciales <strong>en</strong> el Procesami<strong>en</strong>to Digital utilizado <strong>en</strong> el área de Control de Movimi<strong>en</strong>to.<br />

En el mismo se aprovechan las prestaciones que brindan los multiplicadores <strong>en</strong> la<br />

implem<strong>en</strong>tación hardware de un algoritmo de control de posición.<br />

Finalm<strong>en</strong>te, el Apéndice D pres<strong>en</strong>ta los trabajos publicados como resultado<br />

del trabajo de tesis.


Capítulo 2<br />

Arquitecturas de Multiplicadores<br />

2.1. Introducción<br />

La utilización de FPGA <strong>en</strong> el Procesami<strong>en</strong>to Digital de Señales (PDS) es su-<br />

mam<strong>en</strong>te v<strong>en</strong>tajosa. Una de las v<strong>en</strong>tajas consiste <strong>en</strong> la posibilidad de lograr un<br />

hardware a medida que incluya desde la selección de la longitud de palabra de<br />

los operandos hasta la ejecución de los cálculos. Un hardware a medida puede<br />

realizar cálculos más rápidam<strong>en</strong>te que uno programable porque pued<strong>en</strong> disponer-<br />

se varias unidades de cálculo <strong>en</strong> una sola FPGA. Estos multiplicadores pued<strong>en</strong><br />

operar indep<strong>en</strong>di<strong>en</strong>tes de modo de explotar toda la pot<strong>en</strong>cial concurr<strong>en</strong>cia de un<br />

algoritmo. Adicionalm<strong>en</strong>te, <strong>en</strong> la FPGA se pued<strong>en</strong> ejecutar otros procesos, como<br />

at<strong>en</strong>ción de periféricos, comunicación, etc. sin interferir con el procesami<strong>en</strong>to.<br />

En PDS [15] [16] [17] los procesos recurr<strong>en</strong>, como operación elem<strong>en</strong>tal, al<br />

producto de dos operandos y la posterior adición de un tercero, d<strong>en</strong>ominada<br />

MAC (Multiplicador/Acumulador). En una MAC, la multiplicación demanda una<br />

mayor cantidad de recursos lógicos que la adición.<br />

En este capítulo se realiza un repaso de conceptos de la multiplicación de ope-<br />

randos <strong>en</strong> punto fijo y punto flotante. Luego, para compr<strong>en</strong>der las arquitecturas<br />

6


Capítulo 2. Arquitecturas de Multiplicadores 7<br />

de los multiplicadores se introduc<strong>en</strong> aspectos relativos a la adición. Finalm<strong>en</strong>te,<br />

se pres<strong>en</strong>tan las estructuras de multiplicadores paralelos y su implem<strong>en</strong>tación <strong>en</strong><br />

FPGA.<br />

2.2. Algoritmo de la <strong>Multiplicación</strong><br />

2.2.1. Operandos <strong>en</strong> punto fijo<br />

<strong>Multiplicación</strong> de <strong>en</strong>teros sin signo<br />

n−1 <br />

j=0<br />

El producto de dos operandos binarios de n bits, un multiplicando, X =<br />

xj2j y un multiplicador, Y = n−1 <br />

yj2j está repres<strong>en</strong>tado por la Ec. (2.1).<br />

j=0<br />

P = Y · X (2.1)<br />

n−1<br />

= yj2 j · X (2.2)<br />

j=0<br />

n−1<br />

= 2 j · yjX (2.3)<br />

j=0<br />

Este producto, para dos operadores binarios de 4 bits sin signo X e Y , se<br />

puede observar <strong>en</strong> la Tabla 2.1.<br />

Tabla 2.1: Producto de dos operandos de 4 bits<br />

x3 x2 x1 x0<br />

y3 y2 y1 y0<br />

s03 s02 s01 s00 ≡ y0X2 0<br />

s13 s12 s11 s10 ≡ y1X2 1<br />

+ s23 s22 s21 s20 ≡ y2X2 2<br />

s33 s32 s31 s30 ≡ y3X2 3<br />

p7 p6 p5 p4 p3 p2 p1 p0 ≡ P<br />

producto parcial S = sj,n−1, ..., sj,2, sj,1, sj,0 con j = 0, 1, 2 · n − 1<br />

Producto P = p2n−1, ..., p2, p1, p0


Capítulo 2. Arquitecturas de Multiplicadores 8<br />

El producto P se obti<strong>en</strong>e como la suma de todos los productos parciales cada<br />

uno desplazado 2 j veces a la izquierda con j = 0, ..., n − 1. Este producto es<br />

conocido también como método del lápiz y papel.<br />

<strong>Multiplicación</strong> de <strong>en</strong>teros con signo<br />

En sistemas de magnitud con signo, la magnitud y el signo son repres<strong>en</strong>tados<br />

<strong>en</strong> forma separada. Exist<strong>en</strong> multiples formatos para expresar los números con<br />

signo, como por ejemplo Magnitud y Signo, Complem<strong>en</strong>to a 1 (1C) y Comple-<br />

m<strong>en</strong>to a 2 (2C) (ver Sección B.2.1).<br />

La multiplicación de dos operandos expresados <strong>en</strong> Magnitud y Signo se efectúa<br />

como un producto de <strong>en</strong>teros sin signo, y se ejecuta con una función XOR para<br />

procesar el signo.<br />

El producto de dos operandos expresados <strong>en</strong> 1C o 2C se puede efectuar reali-<br />

zando el complem<strong>en</strong>to del operando negativo, multiplicando luego como <strong>en</strong>teros<br />

sin signo y, finalm<strong>en</strong>te, complem<strong>en</strong>tando el resultado si sólo uno de ellos hubiese<br />

estado complem<strong>en</strong>tado. Este tipo de multiplicación puede resultar s<strong>en</strong>cillo para<br />

el caso de 1C, pero repres<strong>en</strong>ta bastante complejidad para el caso de 2C. En este<br />

caso, se puede aplicar el método de lápiz y papel siempre que los operandos sean<br />

positivos o que el multiplicando sea negativo y el multiplicador positivo. En am-<br />

bos casos la suma acumulativa de los productos parciales arrojará un resultado<br />

correcto mi<strong>en</strong>tras que la acumulación contemple la ext<strong>en</strong>sión de signo. Esto es,<br />

si el bit más significativo es 0, se desplaza el operando introduci<strong>en</strong>do un 0. En el<br />

caso <strong>en</strong> que este bit sea 1, el desplazami<strong>en</strong>to se realiza introduci<strong>en</strong>do un 1.<br />

Cuando el multiplicador sea negativo se debe realizar una corrección al pro-<br />

cedimi<strong>en</strong>to m<strong>en</strong>cionado que consiste <strong>en</strong> restar el multiplicando <strong>en</strong> el último paso,<br />

<strong>en</strong> vez de adicionarlo.


Capítulo 2. Arquitecturas de Multiplicadores 9<br />

2.2.2. Operandos <strong>en</strong> punto flotante<br />

Los sistemas numéricos de punto flotante fueron desarrollados para operar<br />

con precisión sobre un gran rango dinámico. Sin embargo, este formato numérico<br />

requiere algoritmos aritméticos más complejos.<br />

La multiplicación de dos operandos <strong>en</strong> punto flotante incluye varias operacio-<br />

nes: obt<strong>en</strong>ción del signo, adición de los expon<strong>en</strong>tes, multiplicación de las mantisas<br />

y normalización del resultado (Ecs. (2.4 - 2.7)).<br />

C = A × B = SC · 2 eC−bias · 1.fC<br />

SC = SA ⊕ SB<br />

(2.4)<br />

(2.5)<br />

eC = eA + eB − bias (2.6)<br />

1.fC = 1.fA × 1.fB<br />

(2.7)<br />

El algoritmo para la multiplicación <strong>en</strong> punto flotante se repres<strong>en</strong>ta de manera<br />

sintética <strong>en</strong> la Fig. 2.1.<br />

Etapa 1<br />

Etapa 2<br />

Etapa 3<br />

Bits de signo Expon<strong>en</strong>tes Mantisas<br />

OR-exclusiva<br />

Adición de<br />

expon<strong>en</strong>tes<br />

Ajuste de<br />

bias<br />

Ajuste de<br />

expon<strong>en</strong>te<br />

Producto de<br />

mantisas<br />

Redondeo<br />

Normalización<br />

Bit de signo Ofl. Expon<strong>en</strong>te Mantisa<br />

Figura 2.1: Diagrama <strong>en</strong> bloques de un multiplicador <strong>en</strong> punto flotante


Capítulo 2. Arquitecturas de Multiplicadores 10<br />

ción:<br />

Las Ecs. (2.4 - 2.7) se realizan <strong>en</strong> varias etapas, que se describ<strong>en</strong> a continua-<br />

Etapa 1:<br />

Se adicionan los expon<strong>en</strong>tes eA y eB; si el resultado es m<strong>en</strong>or que la repre-<br />

s<strong>en</strong>tación, se produce un desbordami<strong>en</strong>to de capacidad inferior (underflow).<br />

En este caso el resultado de toda la operación se fija al valor ”cero”. En el<br />

caso de un overflow, el resultado se fija <strong>en</strong> el máximo número que el formato<br />

puede repres<strong>en</strong>tar.<br />

Si el operando C es distinto de cero, se concat<strong>en</strong>a el 1 implícito a la izquier-<br />

da del fraccional (fA y fB) repres<strong>en</strong>tado de cada operando y se realiza el<br />

producto <strong>en</strong>tero de los números binarios resultantes (Ec. (2.7)).<br />

Si el operando C es distinto de cero, se realiza la operación XOR de los<br />

signos de los operandos A y B.<br />

Etapa 2:<br />

Se ajusta el bias del expon<strong>en</strong>te. Este ajuste se debe a que cada uno de los<br />

expon<strong>en</strong>tes de los operandos posee un bias (ver Sección B.2.2) y la adición<br />

de dos operandos produce un desplazami<strong>en</strong>to superior al repres<strong>en</strong>tado por<br />

el formato.<br />

Sólo se almac<strong>en</strong>an los n bits más significativos del producto <strong>en</strong>tero de la<br />

etapa anterior de longitud 2n bits. Se realiza una operación de redondeo<br />

sobre la mantisa resultante.<br />

Etapa 3:<br />

Se normaliza el resultado de la mantisa dep<strong>en</strong>di<strong>en</strong>do del bit más significativo<br />

del producto de la Ec. (2.7).


Capítulo 2. Arquitecturas de Multiplicadores 11<br />

Se ajusta el expon<strong>en</strong>te dep<strong>en</strong>di<strong>en</strong>do de la normalización del producto de las<br />

mantisas.<br />

Redondeo<br />

Se conforma el signo, el expon<strong>en</strong>te y la mantisa <strong>en</strong> el formato repres<strong>en</strong>tado.<br />

La norma IEEE 754 [18], que trata el formato <strong>en</strong> punto flotante, especifican<br />

cuatro tipos de redondeo: redondeo al más cercano, redondeo a +∞, redondeo a<br />

−∞ y redondeo a cero.<br />

Redondeo al más cercano (al par <strong>en</strong> caso de empate): El estándar IEEE<br />

recomi<strong>en</strong>da este redondeo por defecto. En este caso se obti<strong>en</strong>e el valor re-<br />

pres<strong>en</strong>table más cercano al resultado infinitesimalm<strong>en</strong>te preciso.<br />

Redondeo a +∞: El estándar indica que el valor obt<strong>en</strong>ido debe ser el más<br />

cercano y no m<strong>en</strong>or que el resultado infinitesimalm<strong>en</strong>te preciso. Básicam<strong>en</strong>te<br />

esto significa que, para un resultado positivo, si los bits a la derecha del LSB<br />

son todos 0, <strong>en</strong>tonces el resultado es correcto. Si por el contrario, cualquiera<br />

de estos bits es 1, <strong>en</strong>tonces se debe adicionar un 1 al LSB.<br />

Redondeo a −∞: Este estándar indica que el valor obt<strong>en</strong>ido debe ser el más<br />

cercano y no mayor que el resultado infinitesimalm<strong>en</strong>te preciso. Básicam<strong>en</strong>te<br />

esto significa que, para un resultado negativo, si los bits a la derecha del LSB<br />

son todos 0, <strong>en</strong>tonces el resultado es correcto. Si por el contrario, cualquiera<br />

de estos bits es 1, <strong>en</strong>tonces se debe adicionar un 1 al LSB.<br />

Redondeo a cero: En el redondeo a cero el resultado es más cercano y<br />

no mayor <strong>en</strong> magnitud que el resultado infinitesimalm<strong>en</strong>te preciso. Este<br />

redondeo se aplica truncando el resultado a la derecha del LSB.


Capítulo 2. Arquitecturas de Multiplicadores 12<br />

Normalización<br />

Si el producto de mantisas de la Ec. (2.7) resulta <strong>en</strong> el rango 2 ≤ p ≤ 4,<br />

se debe realizar un desplazami<strong>en</strong>to de normalización a la derecha para restaurar<br />

el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del expon<strong>en</strong>te <strong>en</strong> una<br />

unidad.<br />

2.3. Adición<br />

2.3.1. Semisumador<br />

El Sumador Parcial (SP) también llamado Semisumador de un bit (Half Adder<br />

- HA) adiciona dos operandos de un bit y g<strong>en</strong>era como resultado un operando<br />

de dos bits. El bit m<strong>en</strong>os significativo es el bit suma, que surge de realizar la<br />

operacion de OR-EXC s = a ⊕ b. El bit más significativo resulta de realizar la<br />

operación AND, cout = ab. Este bit es llamado bit de acarreo de salida debido al<br />

desborde de la adición.<br />

La expresión aritmética de un sumador parcial se puede observar <strong>en</strong> las Ecs.<br />

(2.8,2.9 y 2.9), a partir de las que se despr<strong>en</strong>de el cálculo del bit s y el bit de<br />

acarreo.<br />

2 · cout + s = a + b (2.8)<br />

s = (a + b) mod 2<br />

cout = (a + b)div2 = 1<br />

(a + b − s) (2.9)<br />

2<br />

En la Fig. 2.2 se puede observar el símbolo lógico y dos posibles implem<strong>en</strong>ta-<br />

ciones del HA.


Capítulo 2. Arquitecturas de Multiplicadores 13<br />

c out<br />

ab<br />

HA<br />

s<br />

(a)<br />

c out<br />

Figura 2.2: Semisumador a) Símbolo lógico, b) y c) arquitectura.<br />

2.3.2. Sumador Total<br />

A difer<strong>en</strong>cia del HA, el sumador total (Full Adder - FA) posee una tercer<br />

<strong>en</strong>trada d<strong>en</strong>ominada bit de acarreo de <strong>en</strong>trada (cin). Esta <strong>en</strong>trada es utilizada<br />

para recibir una señal de acarreo de un bit m<strong>en</strong>os significativo.<br />

Las Ecs. (2.10 y 2.11) repres<strong>en</strong>tan las ecuaciones lógicas que gobiernan el<br />

funcionami<strong>en</strong>to del sumador.<br />

ab<br />

s<br />

(b)<br />

s = a ⊕ b ⊕ cin<br />

cout = ab + acin + bcin<br />

c out<br />

s<br />

(c)<br />

ab<br />

(2.10)<br />

(2.11)<br />

Las Ecs. (2.12 - 2.15) repres<strong>en</strong>tan las ecuaciones aritméticas correspondi<strong>en</strong>tes.<br />

2 · cout + s = a + b + cin<br />

(2.12)<br />

s = (a + b + cin) mod 2 (2.13)<br />

cout = (a + b + cin)div2 (2.14)<br />

= 1<br />

2 (a + b + cin − s) (2.15)<br />

Otra forma de describir el funcionami<strong>en</strong>to del FA consiste <strong>en</strong> declarar dos<br />

señales, una señal de g<strong>en</strong>eración (g) y una señal de propagación (p). La señal g


Capítulo 2. Arquitecturas de Multiplicadores 14<br />

indica cuando una señal de acarreo 0 o 1 es g<strong>en</strong>erada d<strong>en</strong>tro del sumador. La<br />

señal p indica cuando una señal de acarreo de <strong>en</strong>trada es propagada por el FA sin<br />

cambio hacia el acarreo de salida. Adicionalm<strong>en</strong>te se defin<strong>en</strong> para este sistema<br />

dos señales intermedias de acarreo, c 0 y c 1 , que pued<strong>en</strong> ser calculadas para el caso<br />

de cin = 0 y cin = 1. De esta manera, la salida de acarreo puede ser expresada<br />

mediante (g, p) o (c 0 , c 1 ) y la señal de acarreo de <strong>en</strong>trada puede ser realizada<br />

utilizando compuertas AND-OR o mediante una estructura de multiplexación.<br />

g = ab (2.16)<br />

p = a ⊕ b (2.17)<br />

c 0 = ab (2.18)<br />

c 1 = a + b (2.19)<br />

s = a ⊕ b ⊕ cin = p ⊕ cin<br />

cout = ab + acin + bcin<br />

= ab + (a + b)cin = ab + (a ⊕ b)cin<br />

= g + cin<br />

= ¯pg + pcin = ¯pa + pcin<br />

= ¯cinc 0 + cinc 1<br />

(2.20)<br />

(2.21)<br />

Se debe t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta que para el cálculo de cout utilizando una estructura<br />

AND-OR, la señal de propagación puede ser formulada como p = a + b pero para<br />

el cálculo del bit de la adición debe ser implem<strong>en</strong>tada como p = a ⊕ b.<br />

Un FA puede ser implem<strong>en</strong>tado a partir de dos sumadores parciales, compuer-<br />

tas de dos <strong>en</strong>tradas, multiplexores, o arreglos más complejos. En la Fig. 2.3 se<br />

pued<strong>en</strong> observar a), el símbolo del sumador, y dos alternativas de implem<strong>en</strong>tación:<br />

mediante dos semisumadores y mediante compuertas lógicas.


Capítulo 2. Arquitecturas de Multiplicadores 15<br />

Figura 2.3: Sumador total,a) símbolo lógico b) y c) arquitecturas.<br />

2.3.3. Suma por Propagación de Acarreo<br />

Una suma de propagación de acarreo (Carry Propagate Adder - CPA) adiciona<br />

dos operandos de n bits A = (an−1, an−2..., a0), B = (bn−1, bn−2..., b0) y una señal<br />

de acarreo de <strong>en</strong>trada opcional. El resultado está repres<strong>en</strong>tado por un operando<br />

de (n + 1) bits que consiste <strong>en</strong> un operando S = (sn−1, sn−2..., s0) de n bits y una<br />

señal de acarreo de salida.<br />

Las Ecs. (2.22 y 2.23) repres<strong>en</strong>tan las ecuaciones lógicas de cada sumador.<br />

Se puede notar que el acarreo de salida de un bit m<strong>en</strong>os significativo se propaga<br />

hacia un acarreo de <strong>en</strong>trada de un bit más significativo.<br />

sj = aj ⊕ bj ⊕ cj<br />

cj+1 = ajbj + (a ⊕ bj)cj<br />

Las Ecs. (2.24 - 2.27) repres<strong>en</strong>tan las ecuaciones aritméticas correspondi<strong>en</strong>tes.<br />

2 n · cout + S = A + B + cin<br />

(2.22)<br />

(2.23)<br />

(2.24)


Capítulo 2. Arquitecturas de Multiplicadores 16<br />

2 n n−1<br />

· cout +<br />

j=0<br />

<br />

2 j n−1<br />

sj = 2 j n−1<br />

aj + 2 j bj + cin<br />

j=0<br />

<br />

j=0<br />

n−1<br />

= 2 j (aj + bj) + cin<br />

j=0<br />

donde j = 0, 1, .., n − 1 y c0 = cin y cn = cout.<br />

(2.25)<br />

(2.26)<br />

2cj+1 + sj = (aj + bj + cj) (2.27)<br />

En la Fig. 2.4 se muestra el símbolo de este sumador, que puede ser im-<br />

plem<strong>en</strong>tado mediante varios FAs, y es comúnm<strong>en</strong>te d<strong>en</strong>ominado Ripple Carry<br />

Adder (RCA). Se observa que se g<strong>en</strong>era una propagación de la señal de acarreo<br />

c out<br />

A B<br />

CPA<br />

S<br />

(a)<br />

a n-1 b n-1<br />

cin cout FA<br />

s n-1<br />

...<br />

c n-1<br />

Figura 2.4: Símbolo lógico de un CPA e implem<strong>en</strong>tación de un RCA.<br />

que dep<strong>en</strong>de de la longitud de palabra de los operandos. La propagación de esta<br />

señal influye directam<strong>en</strong>te <strong>en</strong> la velocidad de procesami<strong>en</strong>to del sumador debido<br />

al retardo g<strong>en</strong>erado.<br />

2.3.4. Suma Carry-Save<br />

Una suma Carry-Save evita la propagación del acarreo ubicando a los acarreos<br />

intermedios como salidas <strong>en</strong> vez de colocarlos <strong>en</strong> la cad<strong>en</strong>a de propagación. La<br />

suma de dos operandos de n bits pres<strong>en</strong>ta dos dos palabras resultantes, S (suma),<br />

y C (acarreo). Este sumador acepta tres operandos binarios de <strong>en</strong>trada uno de<br />

los cuales podría operar como acarreo de <strong>en</strong>trada.<br />

c 2<br />

(b)<br />

a 1 b 1<br />

FA<br />

s 1<br />

c 1<br />

a 0 b 0<br />

FA<br />

s 0<br />

c in


Capítulo 2. Arquitecturas de Multiplicadores 17<br />

Las Ecs. (2.28, 2.29 y 2.30) repres<strong>en</strong>tan las ecuaciones aritméticas correspon-<br />

di<strong>en</strong>tes.<br />

dónde i = 0, 1, .., n − 1.<br />

n<br />

i=0<br />

2 i ci +<br />

2 · C + S = A0 + A1 + A2<br />

n−1<br />

2 n−1<br />

i=0<br />

2 i si =<br />

2ci+1 + si =<br />

j=0<br />

2<br />

j=0<br />

i=0<br />

aj,i<br />

2 i aj,i<br />

(2.28)<br />

(2.29)<br />

(2.30)<br />

El CSA se construye a partir de un arreglo lineal de FAs y posee un retardo<br />

constante indep<strong>en</strong>di<strong>en</strong>te de la longitud de palabra de los operandos, Fig. 2.5. Este<br />

a 2 a 1<br />

CSA<br />

c<br />

(a)<br />

s<br />

a 0<br />

c n<br />

a2,n-1a1,n-1 a0,n-1 FA<br />

s n-1<br />

...<br />

c 2<br />

a 2,1 a 1,1 a 0,1<br />

(b)<br />

FA<br />

s 1<br />

c 1<br />

a 2,0 a 1,0 a 0,0<br />

Figura 2.5: CSA a) Símbolo lógico y b) implem<strong>en</strong>tación con FAs.<br />

tipo de suma es utilizada <strong>en</strong> la g<strong>en</strong>eración de arreglos de sumadores e implica la<br />

necesidad de una suma final que aplique los acarreos correspondi<strong>en</strong>tes a la suma<br />

resultante.<br />

2.3.5. Suma Multi-operandos<br />

Una suma multi-operando es utilizada <strong>en</strong> la adición de m operandos de n<br />

bits, A0, ...., Am−1(m > 2) arrojando un resultado S con una repres<strong>en</strong>tación de<br />

(n + [log m]) bits.<br />

S =<br />

m−1 <br />

j=0<br />

Aj<br />

FA<br />

s 0<br />

(2.31)


Capítulo 2. Arquitecturas de Multiplicadores 18<br />

Un sumador multi-operando puede ser realizado mediante la concat<strong>en</strong>ación<br />

serie de m − 1 sumadores de Propagación de Acarreo (ó RCAs) ó de m − 2<br />

sumadores Carry-Save seguidos de un sumador de Propagación de Acarreo.<br />

Ambos tipos de sumadores concat<strong>en</strong>ados son similares <strong>en</strong> cuanto a su es-<br />

tructura lógica, y requerimi<strong>en</strong>tos de hardware, así como la longitud de camino<br />

crítico. La mayor difer<strong>en</strong>cia <strong>en</strong>tre ambas opciones es el arribo de los bits al último<br />

sumador de propagación.<br />

En el sumador implem<strong>en</strong>tado sólo con RCAs los bits más significativos arriban<br />

más tarde que los m<strong>en</strong>os significativos, debido a la propagación de la señal de<br />

acarreo. Por otro lado, <strong>en</strong> el sumador implem<strong>en</strong>tado con CSAs, el arribo de los<br />

bits es balanceado, dep<strong>en</strong>di<strong>en</strong>do la propagación del acarreo fundam<strong>en</strong>talm<strong>en</strong>te<br />

del CPA de la última etapa, que típicam<strong>en</strong>te es un RCA, Fig. 2.6.<br />

FA<br />

s n<br />

A 0<br />

CPA<br />

A 1<br />

CPA<br />

A 2<br />

CPA<br />

s n-1...0<br />

A 3<br />

A 0 A 1A 2<br />

CSA<br />

CSA<br />

CPA<br />

(a) (b)<br />

Figura 2.6: Sumadores concat<strong>en</strong>ados a) con CPA, b) con CSA.<br />

Otra suma multi-operando es la propuesta por Wallace [7] también d<strong>en</strong>omi-<br />

nada árbol de sumadores (o Wallace tree). Está compuesto de sumadores CSA <strong>en</strong><br />

un arreglo de árbol con un CPA final. Esta estructura esta diseñada para obt<strong>en</strong>er<br />

un retardo de propagación mínimo. La estructura de árbol posee tantas secciones<br />

como sean necesarias para reducir el número de sumandos a sólo dos. En la última<br />

S<br />

A 2<br />

A 3


Capítulo 2. Arquitecturas de Multiplicadores 19<br />

etapa, se utiliza un CPA rápido que ejecuta la adición del sumando y el acarreo<br />

final. En la Fig. 2.7 se muestra un árbol de sumadores para m = 9.<br />

A 0 A 1A 2<br />

CSA<br />

CSA<br />

A 3 A 4A 5<br />

CSA<br />

CSA<br />

CSA<br />

CSA<br />

CPA<br />

S<br />

A 6 A 7A 8<br />

CSA<br />

Figura 2.7: Árbol de sumadores para m=9.<br />

2.4. Multiplicadores Paralelos<br />

El multiplicador paralelo (MP) ejecuta el producto de dos operandos si-<br />

multáneam<strong>en</strong>te o <strong>en</strong> ”paralelo”. Exist<strong>en</strong> númerosos esquemas de MPs y las va-<br />

riantes radican <strong>en</strong> la forma <strong>en</strong> que se aborda la ejecución de los subproductos a<br />

fin de obt<strong>en</strong>er una mayor velocidad de procesami<strong>en</strong>to.<br />

2.4.1. Multiplicador por Tabla de Look-up<br />

El multiplicador por Tabla de Look-up no realiza cálculo, sino que opera como<br />

una memoria. Se concat<strong>en</strong>an los operandos X e Y constituy<strong>en</strong>do una dirección<br />

de memoria, Fig. 2.8, cuyo cont<strong>en</strong>ido es el valor del producto X · Y previam<strong>en</strong>te<br />

almac<strong>en</strong>ado. Si bi<strong>en</strong> este tipo de multiplicador dep<strong>en</strong>de de la velocidad de acceso<br />

a la memoria, es el más veloz que existe. Su desv<strong>en</strong>taja radica <strong>en</strong> la cantidad de


Capítulo 2. Arquitecturas de Multiplicadores 20<br />

recursos lógicos que demanda. A modo de ejemplo, un multiplicador de 16 bits<br />

requiere una memoria de 4,294,967,296x32 bits.<br />

XY<br />

DIR<br />

VALOR<br />

Figura 2.8: Multiplicador por Tabla de Look-up.<br />

2.4.2. Multiplicador Ripple Carry<br />

El multiplicador paralelo más difundido se basa <strong>en</strong> un esquema de propagación<br />

del acarreo tal como con la suma multi-operandos mediante CPA. Este multipli-<br />

cador es conocido como Multiplicador Ripple Carry. En la Fig. 2.9 se muestra un<br />

ejemplo de este producto para dos operandos de 4 bits.<br />

y 0<br />

y 1<br />

y 2<br />

y 3<br />

p 7<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

x 3 x 3 x 1 x 0<br />

x 3 x 3 x 1 x 0<br />

x 3 x 3 x 1 x 0<br />

x 3 x 3 x 1 x 0<br />

FA<br />

p 6<br />

FA<br />

p 5<br />

FA<br />

p 4<br />

0<br />

Figura 2.9: Multiplicador Ripple Carry de 4 bits.<br />

FA<br />

p 3<br />

0<br />

FA<br />

FA<br />

p 2<br />

0<br />

P<br />

FA<br />

p 1<br />

0<br />

p 0


Capítulo 2. Arquitecturas de Multiplicadores 21<br />

Una forma de analizar un esquema de MP es a través de la síntesis de una uni-<br />

dad d<strong>en</strong>ominada PE (Procesador Elem<strong>en</strong>tal) que conti<strong>en</strong>e una compuerta AND y<br />

un FA, Fig. 2.10. Cada PE toma un bit de cada operando vía las <strong>en</strong>tradas ai y bi,<br />

calcula su producto a través de la compuerta AND, suma el resultado prov<strong>en</strong>i<strong>en</strong>te<br />

de un PE previo a través de si y el acarreo g<strong>en</strong>erado de un PE previo a través<br />

de ci. El resultado de la suma a la salida es so con el correspondi<strong>en</strong>te acarreo co.<br />

Los operandos son pasados a la salida a través de ao y bo.<br />

a o<br />

c o<br />

b o<br />

s i<br />

s o<br />

FA<br />

Figura 2.10: PE de un multiplicador Ripple Carry.<br />

El esquema del Multiplicador Ripple Carry repres<strong>en</strong>tado a partir de los PEs<br />

se puede observar <strong>en</strong> la Fig. 2.11.<br />

FA<br />

FA<br />

FA FA<br />

FA<br />

FA<br />

FA<br />

b i<br />

a i<br />

c i<br />

FA FA<br />

FA<br />

FA<br />

FA FA<br />

x 3 x 2 x 1 x 0<br />

FA FA<br />

p7 p6 p5 p4 p3 p2 p1 p0 Figura 2.11: Esquema de un multiplicador Ripple Carry mediante PEs.<br />

FA<br />

y 0<br />

y 1<br />

y 2<br />

y 3


Capítulo 2. Arquitecturas de Multiplicadores 22<br />

2.4.3. Multiplicador Carry Save<br />

Otro tipo de MP es el g<strong>en</strong>erado a partir de un esquema de propagación del<br />

acarreo como la suma Carry Save, Fig. 2.12. Este esquema busca romper la pro-<br />

pagación de la cad<strong>en</strong>a de acarreo para disminuir el retardo de cada suma, lo cual<br />

permite acelerar la multiplicación.<br />

p 7<br />

y 0<br />

y 1<br />

y 2<br />

y 3<br />

FA<br />

p 6<br />

FA<br />

FA<br />

HA<br />

FA<br />

x 3 x 3 x 1 x 0<br />

x 3 x3 x 1 x 0<br />

x 3 x 3 x 1 x 0<br />

x 3 x 3 x 1 x 0<br />

FA<br />

p 5<br />

0<br />

FA<br />

FA<br />

p 4<br />

Figura 2.12: Multiplicador Carry Save de 4 bits.<br />

FA<br />

Las Figs. 2.13 y 2.14 muestran el PE del multiplicador con propagación tipo<br />

Carry Save y el multiplicador mediante esta repres<strong>en</strong>tación.<br />

a o<br />

b o<br />

c o<br />

s i<br />

FA<br />

s o<br />

Figura 2.13: PE de un multiplicador Carry Save.<br />

p 3<br />

b i<br />

c i<br />

a i<br />

HA<br />

FA<br />

p 2<br />

HA<br />

p 1<br />

p 0


Capítulo 2. Arquitecturas de Multiplicadores 23<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

x 3 x 2 x 1 x 0<br />

p7 p6 p5 p4 p3 p2 p1 p0 Figura 2.14: Esquema de un multiplicador Carry Save mediante PEs.<br />

2.4.4. Multiplicador Guild<br />

El MP propuesto por H. Guild [19] se muestra <strong>en</strong> la Fig. 2.16, cuyo PE es el<br />

de la Fig. 2.15.<br />

s i<br />

a o<br />

c o<br />

b i<br />

FA<br />

b o<br />

Figura 2.15: PE de un multiplicador paralelo Guild.<br />

Este multiplicador está estructurado <strong>en</strong> cad<strong>en</strong>as de sumadores para cada bit<br />

del producto, las cuales se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> dirección diagonal desde la esquina<br />

izquierda superior a la derecha inferior. Cada sumador de la cad<strong>en</strong>a recibe un<br />

acarreo de <strong>en</strong>trada correspondi<strong>en</strong>te a una suma de la cad<strong>en</strong>a previa y <strong>en</strong>vía su<br />

c i<br />

a i<br />

s o<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

FA<br />

y 0<br />

y 1<br />

y 2<br />

y 3


Capítulo 2. Arquitecturas de Multiplicadores 24<br />

salida de acarreo a un sumador de una cad<strong>en</strong>a posterior. El multiplicador Guild<br />

se caracteriza por una alta tasa de procesami<strong>en</strong>to, debido a la utilización de<br />

paralelismo y la posibilidad de implem<strong>en</strong>tación pipelines 1 .<br />

y 3 x 3 y 2 x 2 y 1 x 1 y 0 x 0<br />

FA<br />

FA<br />

FA<br />

FA FA<br />

FA<br />

FA FA<br />

FA FA<br />

FA<br />

FA<br />

FA<br />

p7 p6 p5 p4 p3 p2 p1 p0 Figura 2.16: Multiplicador paralelo Guild.<br />

1 Es una técnica de aceleración de procesos que se basa <strong>en</strong> la introducción latches o registros <strong>en</strong><br />

una apropiada posición del arreglo para separar la operación <strong>en</strong> etapas. Una vez implem<strong>en</strong>tada,<br />

el sistema increm<strong>en</strong>ta su velocidad de procesami<strong>en</strong>to como etapas posea.<br />

FA<br />

FA<br />

FA


Capítulo 2. Arquitecturas de Multiplicadores 25<br />

2.4.5. Multipicador McCanny-McWhinter<br />

Otro esquema de multiplicación paralelo es el propuesto por J. McCanny<br />

y J. McWhinter [20], Figs. 2.17 y 2.18. En la Fig. 2.18 se puede observar que<br />

el multiplicador esta estructurado <strong>en</strong> cad<strong>en</strong>as de sumadores para cada bit del<br />

producto, las cuales se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> dirección vertical. Cada sumador de la<br />

cad<strong>en</strong>a recibe <strong>en</strong> forma diagonal un acarreo de <strong>en</strong>trada correspondi<strong>en</strong>te a una<br />

suma de la cad<strong>en</strong>a previa y <strong>en</strong>vía su salida de acarreo a un sumador de una<br />

cad<strong>en</strong>a posterior. Este multiplicador se caracteriza por pres<strong>en</strong>tar comunicación<br />

local <strong>en</strong>tre las celdas básicas.<br />

b o<br />

a i<br />

c o<br />

FA<br />

s i<br />

s o<br />

Figura 2.17: PE de un multiplicador Mccanny - Mcwhinter.<br />

2.5. Consumo de recursos lógicos<br />

2.5.1. Operandos <strong>en</strong> Punto Fijo<br />

El consumo de recursos lógicos (CR) de los Multiplicadores Paralelos m<strong>en</strong>cio-<br />

nados varía con el esquema utilizado.<br />

Una estimación de este consumo expresado <strong>en</strong> términos de celdas básicas<br />

se realizó para una FPGA de Xilinx. Si se considera que cada CLB (ver Sección<br />

A.4.1) posee dos funciones de 4 <strong>en</strong>tradas, cada término de salida g<strong>en</strong>erado implica<br />

b i<br />

c i<br />

a o


Capítulo 2. Arquitecturas de Multiplicadores 26<br />

FA<br />

FA<br />

FA<br />

FA<br />

y 3<br />

FA<br />

FA<br />

FA<br />

FA<br />

y 2<br />

FA<br />

FA<br />

FA<br />

FA<br />

y 1<br />

FA<br />

FA<br />

FA<br />

FA<br />

y 0<br />

p7 p6 p5 p4 p3 p2 p1 p0 Figura 2.18: Multiplicador paralelo Mccanny - Mcwhinter.<br />

FA<br />

FA<br />

FA<br />

FA<br />

x 3<br />

FA<br />

FA<br />

FA<br />

x 2<br />

FA<br />

FA<br />

x 1<br />

FA<br />

x 0


Capítulo 2. Arquitecturas de Multiplicadores 27<br />

el consumo de n<br />

2<br />

CLBs. Las Ecs. (2.32 - 2.35) resum<strong>en</strong> la estimación de consumo<br />

para las distintas arquitecturas de MPs.<br />

Ripple Carry:<br />

Carry Save:<br />

Guild:<br />

McCanny - McWhinter:<br />

CLB(n) = (n − 1)n + n<br />

2 = n2 − n<br />

2<br />

CLB(n) = n(n − 1) + n<br />

2 = n2 − n<br />

2<br />

CLB(n) = n 2 +<br />

CLB(n) = n 2<br />

n(n − 1)<br />

2<br />

+ n<br />

2<br />

= 3n2<br />

2<br />

(2.32)<br />

(2.33)<br />

(2.34)<br />

(2.35)<br />

En la Fig. 2.19 se grafica el consumo de recursos lógicos de estos multipli-<br />

cadores. En la misma figura se pres<strong>en</strong>ta como refer<strong>en</strong>cia la cantidad de recursos<br />

lógicos de distintas FPGAs de la serie Spartan de Xilinx.<br />

Se puede concluir que los multiplicadores paralelos, <strong>en</strong> sus difer<strong>en</strong>tes variantes,<br />

pres<strong>en</strong>tan un consumo de recursos elevado que se increm<strong>en</strong>ta cuadráticam<strong>en</strong>te con<br />

la longitud de palabra. De las variantes ejemplificadas, la de McCanny-McWhinter<br />

es la más onerosa, mi<strong>en</strong>tras que las variantes que m<strong>en</strong>os recursos lógicos consum<strong>en</strong><br />

son la de Ripple Carry y la de Carry Save. En la misma figura se puede observar


Capítulo 2. Arquitecturas de Multiplicadores 28<br />

también que para las FPGAs de m<strong>en</strong>or capacidad sólo se pued<strong>en</strong> implem<strong>en</strong>tar<br />

multiplicadores de longitudes de palabra inferiores a 10 bits.<br />

CLB<br />

1500<br />

1000<br />

500<br />

XCS40<br />

XCS30<br />

XCS20<br />

XCS10<br />

XCS05<br />

Ripple Carry<br />

Carry Save<br />

Guild<br />

McCanny<br />

0<br />

0 5 10 15 20 25 30<br />

n<br />

Figura 2.19: Consumo de recursos lógicos de MP.<br />

Los fabricantes de FPGAs ofrec<strong>en</strong> MPs que pued<strong>en</strong> ser configurados por el<br />

diseñador. Por ejemplo Xilinx ofrece dos versiones, una para multiplicadores op-<br />

timizados <strong>en</strong> el consumo de recursos y otra para optimizados <strong>en</strong> velocidad [21].<br />

La Fig. 2.20 pres<strong>en</strong>ta la información de refer<strong>en</strong>cia proporcionada por el fabricante<br />

donde se puede observar que aún los multiplicadores optimizados <strong>en</strong> consumo de<br />

recursos demandan una importante cantidad de los mismos, limitando la aplica-<br />

ción de estos multiplicadores a FPGAs de elevado número de CLBs.<br />

Implem<strong>en</strong>tación <strong>en</strong> FPGA<br />

Se realizó la implem<strong>en</strong>tación de multiplicadores paralelos <strong>en</strong> FPGA. En la<br />

la Tabla 2.2 se muestra el consumo de recursos lógicos <strong>en</strong> términos de CLBs y<br />

la velocidad de procesami<strong>en</strong>to de datos <strong>en</strong> Millones de Operaciones por segundo<br />

(Mops). Se puede notar el notable increm<strong>en</strong>to de consumo de recursos lógicos que


Capítulo 2. Arquitecturas de Multiplicadores 29<br />

MHz<br />

100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

8x8<br />

8x8<br />

10x10<br />

12x12<br />

12x12<br />

Optimizado <strong>en</strong> Recursos<br />

Opt. <strong>en</strong> velocidad<br />

16x16<br />

0<br />

0 50 100<br />

150<br />

200<br />

250<br />

CLBs<br />

Figura 2.20: Multiplicadores proporcionados por Xilinx.<br />

demanda cada multiplicador cuando se duplica la longitud de palabra. Tal como<br />

se expresó anteriorm<strong>en</strong>te, este increm<strong>en</strong>to es típicam<strong>en</strong>te cuadrático.<br />

Tabla 2.2: Implem<strong>en</strong>tación de multiplicadores <strong>en</strong> FPGA.<br />

Spartan Virtex Virtex II<br />

Bits Tipo CLB Mops Slices Mops Slices Mops<br />

8 MP 61 20.8 64 41.9 64 45.5<br />

8 MX 52 17.5 36 76.3 36 62.6<br />

16 MP 247 10.8 257 22.0 258 24.7<br />

16 MX 213 11.2 140 59.0 141 47.2<br />

32 MX 816 3.1 544 40.5 548 38.5<br />

MP: Multiplicador Paralelo<br />

MX: Multiplicador propuesto por Xilinx<br />

Las Figs. 2.21(a) y 2.21(b) muestran el área de ocupación lógica para los<br />

multiplicadores de 8 bits <strong>en</strong> una FPGA de 256 CLBs. Las Figs 2.22(a) y 2.22(b)<br />

indican el área para una longitud de palabra de 16 bits.<br />

Nuevam<strong>en</strong>te se puede observar que el consumo de recursos lógicos de los Mul-<br />

tiplicadores Paralelos se increm<strong>en</strong>ta notablem<strong>en</strong>te con la longitud de palabra.<br />

Esta característica hace necesaria la utilización de FPGAs con gran cantidad de<br />

recursos para poder implem<strong>en</strong>tar los multiplicadores. En la Fig 2.23 se mues-<br />

tra el consumo de recursos para un multiplicador optimizado <strong>en</strong> área de 32 bits


Capítulo 2. Arquitecturas de Multiplicadores 30<br />

(a) Ripple Carry (b) Xilinx<br />

Figura 2.21: Implem<strong>en</strong>tación de Multiplicadores n = 8<br />

(a) Ripple Carry (b) Xilinx<br />

Figura 2.22: Implem<strong>en</strong>tación de Multiplicadores n = 16


Capítulo 2. Arquitecturas de Multiplicadores 31<br />

de Xilinx. Para esta implem<strong>en</strong>tación fue necesario recurrir a una FPGA de 400<br />

CLBs.<br />

Figura 2.23: Implem<strong>en</strong>tación de un multiplicador optimizado <strong>en</strong> área de Xilinx<br />

n = 32.<br />

2.5.2. Operandos <strong>en</strong> punto flotante<br />

La multiplicación de operandos <strong>en</strong> punto flotante requiere una mayor cantidad<br />

de recursos que su contraparte <strong>en</strong> punto fijo, debido a que se deb<strong>en</strong> realizar más<br />

operaciones. Sin embargo, de todas las operaciones involucradas, el producto de<br />

las mantisas es la que demanda la mayor cantidad de recursos lógicos.<br />

Como se m<strong>en</strong>cionó <strong>en</strong> la Sección 2.2.2, el producto de las mantisas se efectúa<br />

como un producto <strong>en</strong> punto fijo. Por lo tanto, el análisis de consumo de recursos<br />

de la sección anterior se puede ext<strong>en</strong>der a la pres<strong>en</strong>te, con la observación que se<br />

debe adicionar el consumo de recursos propio de la adición de los expon<strong>en</strong>tes,<br />

la determinación del signo y, el de las operaciones de redondeo y normalización.<br />

Razón por la cual, la problemática de recursos se ac<strong>en</strong>túa.<br />

Un análisis de las implicaciones prácticas de la implem<strong>en</strong>tación de multiplica-<br />

dores de punto flotante <strong>en</strong> FPGA se puede <strong>en</strong>contrar <strong>en</strong> los trabajos de Shirazi


Capítulo 2. Arquitecturas de Multiplicadores 32<br />

et al [9], de Ligon et al [10] y de Louca et al [22]. Otros aportes se pued<strong>en</strong> <strong>en</strong>-<br />

contrar <strong>en</strong> los trabajos de Allan y Luk [23], Jim<strong>en</strong>ez et al [24] donde se pres<strong>en</strong>tan<br />

realizaciones parametrizables de multiplicadores.<br />

Más reci<strong>en</strong>tem<strong>en</strong>te, <strong>en</strong> un trabajo pres<strong>en</strong>tado por Aty et al [25] se pres<strong>en</strong>ta<br />

un esquema de multiplicador que muestra una relación de compromiso <strong>en</strong>tre la<br />

velocidad de procesami<strong>en</strong>to y el consumo de recursos lógicos. Sin embargo, <strong>en</strong> este<br />

trabajo se puede apreciar que el consumo de recursos continúa si<strong>en</strong>do sustancial.<br />

2.6. Conclusiones<br />

En este capítulo se pres<strong>en</strong>taron algunos conceptos de la multiplicación con el<br />

objetivo de poder introducir la problemática del consumo de recursos lógicos <strong>en</strong><br />

la implem<strong>en</strong>tación de esta operación.<br />

Se concluye que, si bi<strong>en</strong> los multiplicadores paralelos permit<strong>en</strong> ejecutar pro-<br />

ductos rápidam<strong>en</strong>te, el consumo de recursos de estos multiplicadores es muy ele-<br />

vado aum<strong>en</strong>ta cuadráticam<strong>en</strong>te con la longitud de palabra. Esto pres<strong>en</strong>ta una<br />

desv<strong>en</strong>taja respecto a la utilización de estos dispositivos para el procesami<strong>en</strong>to<br />

de señales, pues restringe la implem<strong>en</strong>tación de los mismos a FPGAs de gran<br />

tamaño y costo.


Capítulo 3<br />

Nuevas Arquitecturas de<br />

Multiplicadores<br />

3.1. Introducción<br />

La utilización de un multiplicador con un gran consumo de recursos lógicos<br />

puede empeorar el desempeño g<strong>en</strong>eral del sistema o requerir de FPGAs de mayor<br />

tamaño.<br />

El Multiplicador <strong>Secu<strong>en</strong>cial</strong> d<strong>en</strong>ominado también Shift and Add [11] [12] uti-<br />

liza una cantidad reducida de recursos lógicos. El SM no es muy utilizado debido<br />

a la cantidad de iteraciones involucradas <strong>en</strong> un producto.<br />

En este capítulo se analiza la multiplicación secu<strong>en</strong>cial con el objetivo de<br />

ampliarla a FPGAs. Se caracterizan las variantes exist<strong>en</strong>tes y se propon<strong>en</strong> algu-<br />

nos esquemas que int<strong>en</strong>tan mejorar la velocidad de cálculo mant<strong>en</strong>i<strong>en</strong>do un bajo<br />

consumo de recursos lógicos.<br />

33


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 34<br />

3.2. <strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong><br />

El Multiplicador <strong>Secu<strong>en</strong>cial</strong> (SM) realiza el cálculo <strong>en</strong> forma iterativa mante-<br />

ni<strong>en</strong>do un producto parcial acumulativo y sucesivam<strong>en</strong>te sumando al mismo los<br />

términos yjX con el debido desplazami<strong>en</strong>to (Tabla 3.1). De esta forma, se logra<br />

reducir la cantidad de recursos a los necesarios para realizar la multiplicación<br />

yjX.<br />

Tabla 3.1: Producto de dos operandos de 4 bits, acumulación de productos parciales.<br />

x3 x2 x1 x0<br />

y3 y2 y1 y0<br />

s03 s02 s01 s00 ≡ 0<br />

s13 s12 s11 s10 ≡ y0X2 0<br />

s23 s22 s21 s20 ≡ y1X2 1 + y0X2 0<br />

s33 s32 s31 s30 ≡ y2X2 2 + y1X2 1 + y0X2 0<br />

p8 p7 p6 p5 p4 p3 p2 p1 ≡ y3X2 3 + y2X2 2 + y1X2 1 + y0X2 0<br />

3.2.1. Algoritmo<br />

En forma simplificada el algoritmo acumula cada producto parcial sobre el<br />

resultado parcial desplazado un bit respecto al anterior. Exist<strong>en</strong> dos versiones de<br />

este algoritmo dep<strong>en</strong>di<strong>en</strong>do del s<strong>en</strong>tido de los valores a acumular, con desplaza-<br />

mi<strong>en</strong>to a la izquierda o viceversa.<br />

En la multiplicación con desplazami<strong>en</strong>to a la izquierda, se debe contar con<br />

un acumulador de longitud 2n bits. En este caso los productos parciales yjX son<br />

adicionados al resultado acumulado con un desplazami<strong>en</strong>to hacia la izquierda de<br />

un bit (2 1 ) respecto al anterior. El algoritmo se puede analizar a partir de la Ec.<br />

(3.1).<br />

p(j + 1) = 2p(j) + yn−1−jX con p(0) = 0 (3.1)


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 35<br />

Un ejemplo de este algoritmo se muestra <strong>en</strong> la Tabla 3.2. En el mismo se<br />

realiza un producto de dos operandos de 4 bits.<br />

Tabla 3.2: <strong>Multiplicación</strong> secu<strong>en</strong>cial con desplazami<strong>en</strong>to a la izquierda para operandos<br />

de 4 bits.<br />

X 1 0 0 1<br />

Y 1 1 0 1<br />

p(0) 0 0 0 0<br />

2p(0) 0 0 0 0 0<br />

+y 3X 1 0 0 1<br />

p(1) 1 0 0 1<br />

2p(1) 1 0 0 1 0<br />

+y 2X 1 0 0 1<br />

p(2) 1 1 0 1 1<br />

2p(2) 1 1 0 1 1 0<br />

+y 1X 0 0 0 0<br />

p(3) 1 1 0 1 1 0<br />

2p(3) 1 1 0 1 1 0 0<br />

+y 0X 1 0 0 1<br />

p(4) 0 1 1 1 0 1 0 1<br />

En la multiplicación con desplazami<strong>en</strong>to a la derecha el algoritmo se puede<br />

analizar con la Ec. (3.2).<br />

p(j + 1) = (p(j) + yjX2 n )2 −1<br />

o visto de otra manera con la Ec. (3.3),<br />

P = 2 n−1<br />

n−1<br />

<br />

yjX · 2 j−(n−1)<br />

<br />

j=0<br />

con p(0) = 0 (3.2)<br />

(3.3)<br />

En este caso los productos parciales yjX son adicionados al resultado acumu-<br />

lado con un desplazami<strong>en</strong>to hacia la derecha de un bit (2 −1 ) respecto al anterior.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 36<br />

Debido a que el desplazami<strong>en</strong>to a la derecha g<strong>en</strong>era un primer producto par-<br />

cial multiplicado por 2 −k se debe pre-multiplicar y0X por 2 k para comp<strong>en</strong>sar el<br />

efecto del desplazami<strong>en</strong>to. Esta pre-multiplicación se puede efectuar fácilm<strong>en</strong>te,<br />

almac<strong>en</strong>ando p(j) <strong>en</strong> el segm<strong>en</strong>to más significativo de un registro de 2n bit.<br />

Un ejemplo de este algoritmo se muestra <strong>en</strong> la Tabla 3.3.<br />

Tabla 3.3: <strong>Multiplicación</strong> con desplazami<strong>en</strong>to a la derecha para operandos de 4<br />

bits.<br />

X 1 0 0 1<br />

Y 1 1 0 1<br />

p(0) 0 0 0 0<br />

+y 0X 1 0 0 1<br />

2p(1) 1 0 0 1<br />

p(1) 0 1 0 0 1<br />

+y 1X 0 0 0 0<br />

2p(2) 0 1 0 0 1<br />

p(2) 0 0 1 0 0 1<br />

+y 2X 1 0 0 1<br />

2p(3) 1 0 1 1 0 1<br />

p(3) 0 1 0 1 1 0 1<br />

+y 3X 1 0 0 1<br />

2p(4) 1 1 1 0 1 0 1<br />

p(4) 0 1 1 1 0 1 0 1<br />

De los ejemplos pres<strong>en</strong>tados <strong>en</strong> las Tablas 3.2 y 3.3 se puede observar que<br />

ambos algoritmos son similares. Cada algoritmo realiza n sumas y n desplaza-<br />

mi<strong>en</strong>tos, sin embargo, las sumas realizadas con el algoritmo de desplazami<strong>en</strong>to<br />

a la izquierda son de 2n bits de longitud de palabra respecto del algoritmo de<br />

desplazami<strong>en</strong>to a la derecha que son de n bits. Esto se debe a que el acarreo de la<br />

suma se exti<strong>en</strong>de hacia los bit más significativos. Por lo tanto, el algoritmo más<br />

utilizado es el de desplazami<strong>en</strong>to a la derecha que involucra m<strong>en</strong>os recursos.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 37<br />

3.2.2. Implem<strong>en</strong>tación<br />

La implem<strong>en</strong>tación hardware de la multiplicación con desplazami<strong>en</strong>to a la<br />

derecha se muestra <strong>en</strong> la Figura 3.1. El multiplicador Y y la acumulación de<br />

los productos parciales p(j) son almac<strong>en</strong>ados <strong>en</strong> registros de desplazami<strong>en</strong>to. El<br />

bit yj del multiplicador es el bit m<strong>en</strong>os significativo disponible a la derecha del<br />

registro Y , el mismo es utilizado <strong>en</strong> el producto yjX seleccionando 0 o X <strong>en</strong> la<br />

suma.<br />

La suma y el desplazami<strong>en</strong>to pued<strong>en</strong> ser realizados <strong>en</strong> ciclos difer<strong>en</strong>tes o <strong>en</strong> dos<br />

sub-ciclos d<strong>en</strong>tro del mismo ciclo de reloj. En ambos casos se necesita almac<strong>en</strong>ar<br />

la señal de acarreo del sumador. Por otro lado, el desplazami<strong>en</strong>to se puede realizar<br />

conectando el bit m<strong>en</strong>os significativo de la suma al bit n − 1 del registro P y el<br />

bit de acarreo al bit 2n − 1 del mismo registro de longitud 2n y realizando de este<br />

modo suma y desplazami<strong>en</strong>to <strong>en</strong> un sólo ciclo de reloj.<br />

acarreo<br />

ADD<br />

n<br />

Producto<br />

2n-1 n<br />

n<br />

n<br />

n-1<br />

desplazami<strong>en</strong>to<br />

n-1<br />

desplazami<strong>en</strong>to<br />

Y<br />

Parcial<br />

Figura 3.1: Multiplicador SM con desplazami<strong>en</strong>to a la derecha.<br />

Se debe considerar que el multiplicador y la mitad m<strong>en</strong>os significativa del<br />

registro P pued<strong>en</strong> compartir un mismo registro, de manera que a medida que<br />

los bits del multiplicador se van extray<strong>en</strong>do del registro a partir del bit m<strong>en</strong>os<br />

significativo, el bit m<strong>en</strong>os significativo de p(j) es ingresado por el extremo más<br />

n<br />

n-1<br />

X<br />

0<br />

0<br />

0


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 38<br />

significativo del mismo registro. El control del multiplicador, que no se muestra<br />

<strong>en</strong> la Figura 3.1, consiste <strong>en</strong> un contador que manti<strong>en</strong>e el número de iteración<br />

ejecutada y un circuito para la inicialización y carga del mismo.<br />

En la Figura 3.2 se puede observar un esquema de la realización del multipli-<br />

cador de desplazami<strong>en</strong>to a la derecha con registro compartido.<br />

acarreo<br />

ADD<br />

n<br />

Producto Parcial<br />

2n-1 n<br />

n<br />

n<br />

desplazami<strong>en</strong>to<br />

Figura 3.2: Multiplicador SM con desplazami<strong>en</strong>to a la derecha con registro compartido.<br />

La implem<strong>en</strong>tación hardware del algoritmo con desplazami<strong>en</strong>to a la izquierda<br />

se puede observar <strong>en</strong> la Figura 3.3. En este esquema, también el multiplicador Y<br />

y la acumulación de los productos parciales p(j) son almac<strong>en</strong>ados <strong>en</strong> registros de<br />

desplazami<strong>en</strong>to, con la difer<strong>en</strong>cia de que los registros se desplazan a la izquierda<br />

<strong>en</strong> vez de a la derecha. El bit yj del multiplicador es el bit más significativo<br />

disponible a la izquierda del registro Y , el mismo es utilizado <strong>en</strong> el producto<br />

yn−j−1X seleccionando 0 o X <strong>en</strong> la suma.<br />

En este multiplicador no se puede compartir el registro Y con la sección más<br />

significativa del registro P debido a que se utiliza un sumador de 2n bits. Esto<br />

es, que cada vez que se registra un producto parcial, se utiliza la totalidad del<br />

registro. El control del multiplicador, que no se muestra <strong>en</strong> la Figura 3.3, es similar<br />

al del multiplicador con desplazami<strong>en</strong>to a la derecha.<br />

n<br />

n-1<br />

n-1<br />

Y<br />

X<br />

0<br />

0


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 39<br />

ADD<br />

2n<br />

Producto<br />

2n-1 n<br />

2n<br />

n<br />

n-1<br />

n-1<br />

desplazami<strong>en</strong>to<br />

Parcial 0<br />

desplazami<strong>en</strong>to<br />

Figura 3.3: Multiplicador SM con desplazami<strong>en</strong>to a la izquierda.<br />

n<br />

El hardware de este multiplicador es más complejo que el de la Figura 3.2,<br />

por lo que el método más utilizado es la multiplicación con desplazami<strong>en</strong>to a la<br />

derecha.<br />

Consumo de recursos<br />

El consumo de recursos lógicos del SM debe ser estimado <strong>en</strong> función de la<br />

longitud de palabra de los operandos. Si se analiza la estructura de los bloques que<br />

compon<strong>en</strong> el multiplicador: sumadores, multiplexores, contadores y compon<strong>en</strong>tes<br />

básicos, se puede cuantificar el consumo de recursos de los mismos <strong>en</strong> función de<br />

la longitud de palabra.<br />

Un contador de módulo-n es un contador binario de log 2 n bits. Consecu<strong>en</strong>te-<br />

m<strong>en</strong>te utiliza n FFs (FlipFlops) y al m<strong>en</strong>os la misma cantidad de FGs (Función<br />

G<strong>en</strong>erators - ver Sección A.4.1). Por lo cual, este contador consume como mínimo<br />

log 2 (n)<br />

2<br />

FGs.<br />

Un multiplexor esta conformado sólo por lógica combinacional que requiere al<br />

m<strong>en</strong>os n − 1 FGs de tres <strong>en</strong>tradas. Esto g<strong>en</strong>era un consumo de recursos de n−1<br />

2<br />

CLBs para una longitud de n bits <strong>en</strong>tradas.<br />

n-1<br />

Y<br />

X<br />

0<br />

0


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 40<br />

El consumo de recursos lógicos de un sumador dep<strong>en</strong>de del tipo de sumador<br />

seleccionado. Tal como se indicó <strong>en</strong> capítulos previos, el sumador indicado para la<br />

implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> las FPGAs seleccionadas, es el sumador<br />

de ripple-carry. En este caso, un sumador utiliza (n+2) FGs ( n +1 celdas básicas)<br />

2<br />

considerando las salidas de acarreo y desborde. En el caso <strong>en</strong> que la salida de un<br />

sumador deba ser registrada, el consumo de recursos lógicos <strong>en</strong> términos de CLBs<br />

es el mismo dado que los FFs son nativos de cada celda básica.<br />

La Tabla 3.4 realiza una estimación del consumo de recursos para el SM. En<br />

esta estimación se considera que los n bits más significativos del registro P se<br />

pued<strong>en</strong> ubicar <strong>en</strong> conjunto con los FGs del sumador, y los m<strong>en</strong>os significativos<br />

compartidos con el registro de desplazami<strong>en</strong>to Y (con carga de datos <strong>en</strong> paralelo).<br />

Las Ecs. (3.4 - 3.6) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos de FGs, FFs<br />

y CLBs.<br />

Función FG FF CLB<br />

Registro X 0 n n<br />

2<br />

Registro Y (SR) n + 1 n n+1<br />

2<br />

Control log2(n) + 2 log2(n) + 1 + 1<br />

log 2 (n)<br />

2<br />

Producto yiX n 0 n<br />

2<br />

Sumador + Reg. P n + 2 n + 2 n<br />

2<br />

+ 1<br />

Tabla 3.4: Estimación de consumo de recursos lógicos de un SM.<br />

F G(n) = 3n + log 2 n + 5 (3.4)<br />

F F (n) = 3n + log 2 n + 3 (3.5)<br />

CLB(n) = 2n + log 2 n<br />

2<br />

+ 5<br />

2<br />

(3.6)<br />

En la Fig. 3.4 se puede observar el consumo de estimado de recursos del SM.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 41<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Comportami<strong>en</strong>to temporal<br />

Figura 3.4: Consumo de recursos del SM.<br />

El comportami<strong>en</strong>to temporal del SM dep<strong>en</strong>de de dos factores, el retardo in-<br />

her<strong>en</strong>te de las compuertas lógicas y registros, y el retardo por la interconexión de<br />

las mismas. En la mayoría de los circuitos realizados <strong>en</strong> FPGA el desempeño solo<br />

puede ser estimado después de ser implem<strong>en</strong>tado, ya que los retardos de interco-<br />

nexión se conoc<strong>en</strong> una vez implem<strong>en</strong>tado el circuito. Sin embargo, <strong>en</strong> el caso de<br />

sumadores y contadores que utilizan recursos dedicados de lógica de acarreo, es<br />

posible estimar un desempeño temporal [26].<br />

El período mínimo de reloj que se puede utilizar con el SM dep<strong>en</strong>de del retardo<br />

de propagación de la ruta más crítica. En este caso, la ruta más crítica es aquella<br />

<strong>en</strong> la cual los operandos del sumador son realim<strong>en</strong>tados a través de una cad<strong>en</strong>a de<br />

Flip Flops, Fig. 3.1. El retardo de propagación para un sumador se puede estimar<br />

a partir de la Fig. 3.5 <strong>en</strong> la cual se asume que n es par y que el sumador (sin<br />

contar las cad<strong>en</strong>as de acarreo) es implem<strong>en</strong>tado <strong>en</strong> n<br />

2<br />

CLBs. En esta figura los dos<br />

bits m<strong>en</strong>os significativos de los operandos compart<strong>en</strong> un CLB y el retardo de las


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 42<br />

A ,B<br />

N-1 N-1<br />

A ,B<br />

N-2 N-2<br />

A ,B<br />

N-3 N-3<br />

A ,B<br />

N-4 N-4<br />

A ,B<br />

3 3<br />

A ,B<br />

2 2<br />

A ,B<br />

1 1<br />

A ,B<br />

0 0<br />

T SUM<br />

T BYP<br />

T BYP<br />

T BYP<br />

T OPCY<br />

SALIDA DE ACARREO<br />

S N-1<br />

S N-2<br />

T SUM<br />

S N-3<br />

S N-4<br />

S 3<br />

S 2<br />

S 1<br />

S 0<br />

N-4<br />

2 CLBs<br />

Figura 3.5: Esquema de retardos <strong>en</strong> un sumador.<br />

<strong>en</strong>tradas de estos bits a la cad<strong>en</strong>a de acarreo se define como el tiempo TOP CY . Los<br />

dos bits más significativos también compart<strong>en</strong> un CLB y el retardo de la cad<strong>en</strong>a<br />

de acarreo a la salida más significativa es el tiempo TSUM. Los n−4 bits restantes<br />

contribuy<strong>en</strong> con un retardo TBY P por cada dos bits.<br />

La Ec. (3.7) resume el retardo de propagación <strong>en</strong> un sumador como el que se<br />

describe <strong>en</strong> la Fig. 3.5.<br />

tpd = TOP CY +<br />

n − 4<br />

2 × TBY P + TSUM (3.7)<br />

Si se considera que cada bit que ingresa al sumador provi<strong>en</strong>e de un registro<br />

se debe adicionar el retardo exist<strong>en</strong>te desde que se efectúa un flanco de reloj y se<br />

establece la salida de un Flip Flop, TCKO. La salida de este registro se realim<strong>en</strong>ta<br />

a la <strong>en</strong>trada del sumador g<strong>en</strong>erando un retardo de interconexión Trd.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 43<br />

Otra ruta de interconexión crítica provi<strong>en</strong>e de la selección del paso de itera-<br />

ción que incorpora un retardo <strong>en</strong>tre una <strong>en</strong>trada F/G y la salida X/Y debido al<br />

producto yiXi, este retardo es d<strong>en</strong>ominado TILO.<br />

La Ec. (3.8) resume el retardo de propagación de la ruta de interconexión más<br />

crítica.<br />

tpd = TOP CY +<br />

n − 4<br />

2 × TBY P + TSUM + TILO + TCKO + Trd (3.8)<br />

Con el objetivo de poder cuantificar el retardo de propagación estimado se<br />

propone la utilización de los retardos de una FPGA de Xilinx de la familia Spartan<br />

[27]. Para esta estimación no se considera el retardo Trd dado que a priori se<br />

desconoce su valor.<br />

Retardo Valor [ns]<br />

TOP CY 2.7<br />

TBY P 0.5<br />

TSUM 2.0<br />

TILO 1.2<br />

2.1<br />

TCKO<br />

Tabla 3.5: Retardos de una FPGA Xilinx Spartan-4.<br />

En la Fig. 3.21 se graficó el retardo de propagación estimado para el SM, <strong>en</strong><br />

función de la longitud de palabra n. Este retardo define la frecu<strong>en</strong>cia máxima<br />

de reloj estimada (fc) que se puede utilizar con este multiplicador. La misma se<br />

muestra <strong>en</strong> la Fig. 3.7.<br />

La velocidad de procesami<strong>en</strong>to (Processing Speed - PS) estimada del SM se<br />

puede observar <strong>en</strong> la Fig. 3.8. La misma se calcula como P S = fc<br />

, expresado <strong>en</strong><br />

n+1<br />

millones de operaciones por segundo. Se considera que este multiplicador requiere<br />

un ciclo de reloj para la carga de datos, <strong>en</strong> los registros X e Y, adicional a los n<br />

necesarios para calcular el producto.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 44<br />

Tpd [ns]<br />

Max. Frec. de reloj [Mhz]<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.6: Retardo de propagación estimado del SM.<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.7: Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SM.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 45<br />

Velocidad de Procesami<strong>en</strong>to [Mop]<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.8: Velocidad máxima de procesami<strong>en</strong>to del SM.<br />

3.2.3. Multiplicador <strong>Secu<strong>en</strong>cial</strong> de Base 4<br />

Esta variante de multiplicación secu<strong>en</strong>cial reduce la cantidad de iteraciones<br />

aprovechando la repres<strong>en</strong>tación numérica.<br />

Un número binario de n bits puede ser repres<strong>en</strong>tado como un número de n<br />

2<br />

dígitos de base 4 ó un número de n<br />

3<br />

dígitos de base 8. De modo que para un<br />

dado rango de números que se pued<strong>en</strong> repres<strong>en</strong>tar, existe una repres<strong>en</strong>tación de<br />

mayor base que reduce la cantidad de dígitos. De este modo, es posible realizar<br />

un producto <strong>en</strong> m<strong>en</strong>or tiempo de cálculo si se ejecuta una multiplicación de un<br />

dígito por vez <strong>en</strong> lugar de hacerlo bit a bit.<br />

La expresión g<strong>en</strong>eral para este tipo de multiplicación es la de la Ec. (3.9):<br />

p(j + 1) = (p(j) + yjXr n )r −1<br />

con p(0) = 0 y p(n) = p (3.9)<br />

En el caso de la multiplicación <strong>en</strong> base 4 (SMB4), se debe conformar el pro-<br />

ducto parcial [yj+1 yj]2X y adicionarlo al resultado de la iteración anterior. El


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 46<br />

producto de dos operadores binarios de 4 bits sin signo X e Y se puede observar<br />

<strong>en</strong> la Tabla 3.6.<br />

Tabla 3.6: Producto de dos operandos <strong>en</strong> base 4<br />

x3 x2 x1 x0<br />

y3 y2 y1 y0<br />

s05 s04 s03 s02 s01 s00 ≡ y1y0X4 0<br />

s15 s14 s13 s12 s11 s10 ≡ y3y2X4 1<br />

P8 P7 P6 P5 P4 P3 P2 P1 ≡ P<br />

Mi<strong>en</strong>tras que <strong>en</strong> la multiplicación de base 2 cada producto parcial está repre-<br />

s<strong>en</strong>tado por el valor 0 o una versión desplazada de X, <strong>en</strong> la multiplicación de<br />

base 4 el producto parcial toma la forma del valor 0, X, 2X y 3X. El método<br />

más directo para la ejecución de esta multiplicación se puede realizar mediante<br />

una asignación pre-calculada de los productos parciales.<br />

Un ejemplo de este tipo de multiplicación se puede observar <strong>en</strong> la Tabla 3.7.<br />

Tabla 3.7: <strong>Multiplicación</strong> base 4 de dos operados de 4 bits.<br />

X 1 0 0 1<br />

Y 1 1 0 1<br />

p(0) 0 0 0 0<br />

+(01)2X = X 1 0 0 1<br />

4p(1) 1 0 0 1<br />

p(1) 0 0 1 0 0 1<br />

+(11)2X = 3X 1 1 0 1 1<br />

4p(2) 1 1 1 0 1 0 1<br />

p(2) 0 1 1 1 0 1 0 1<br />

Un diagrama de este multiplicador (<strong>en</strong> adelante SMB4(3X)) se muestra <strong>en</strong> la<br />

Fig. 3.9. En el mismo se debe considerar que, mi<strong>en</strong>tras los tres primeros valores de<br />

los productos parciales se pued<strong>en</strong> utilizar <strong>en</strong> forma directa, el valor 3X requiere


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 47<br />

un período de tiempo para ejecutar la suma X + 2X. Además, como el valor pre-<br />

calculado 3X puede exceder el rango de X, <strong>en</strong>tonces el multiplexor y el sumador<br />

utilizados <strong>en</strong> el multiplicador deb<strong>en</strong> ser de (n + 2) bits.<br />

acarreo<br />

ADD<br />

n+2<br />

Producto Parcial<br />

2n-1 n<br />

n<br />

n+2<br />

MUX<br />

desplazami<strong>en</strong>to 2 bits<br />

n-1<br />

n+2<br />

n+2<br />

n+2<br />

n+2<br />

0<br />

X<br />

Y<br />

2X<br />

3X<br />

Figura 3.9: Diagrama de un SMB4(3X).<br />

Una alternativa consiste <strong>en</strong> reemplazar 3X por −X g<strong>en</strong>erando un acarreo que<br />

modifica al sigui<strong>en</strong>te dígito. Este set de dígitos es afectado por el acarreo según<br />

la Tabla 3.8, <strong>en</strong> la cual, cy(j − 1) es el acarreo correspondi<strong>en</strong>te a una iteración<br />

anterior, cy(j) es el acarreo actual, y2j−1 e y2j son los bits seleccionados con<br />

cada iteración que g<strong>en</strong>eran una salida con los valores [0, −X, X, 2X]. Con esta<br />

alternativa, al final de la iteración n<br />

2<br />

último dígito de base 4 g<strong>en</strong>eró un bit de acarreo.<br />

se debe realizar una nueva iteración, si el<br />

Tabla 3.8: Codificación de los dígitos, alternativa (-X).<br />

cy(j − 1) y2j−1 y2j salida(j) cy(j)<br />

0 0 0 0 0<br />

0 0 1 X 0<br />

0 1 0 2X 0<br />

0 1 1 −X 1<br />

1 0 0 X 0<br />

1 0 1 2X 0<br />

1 1 0 −X 1<br />

1 1 1 0 1<br />

2<br />

1<br />

0


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 48<br />

Un ejemplo de esta alternativa se observa <strong>en</strong> la Tabla 3.8, <strong>en</strong> la cual se ejecuta<br />

un producto de dos operandos de 8 bits, donde al final de la última iteración el<br />

acarreo debido al último dígito g<strong>en</strong>era una iteración adicional.<br />

Tabla 3.9: <strong>Multiplicación</strong> base 4, alternativa (-X).<br />

X 0 1 1 1 1 0 1 1<br />

Y 1 1 1 1 0 1 1 0<br />

p(0) 0 0 0 0 0 0 0 0<br />

+(10)X = +2X 1 1 1 1 0 1 1 0<br />

4p(1) 1 1 1 1 0 1 1 0<br />

p(1) 0 0 1 1 1 1 0 1 1 0<br />

+(01)X = +X 0 1 1 1 1 0 1 1<br />

4p(2) 1 0 1 1 1 0 0 0 1 0<br />

p(2) 0 0 1 0 1 1 1 0 0 0 1 0<br />

+(11)X = −X 1 0 0 0 0 1 0 1<br />

4p(3) 1 0 1 1 0 0 1 1 0 0 1 0<br />

p(3) 1 1 1 0 1 1 0 0 1 1 0 0 1 0<br />

+(11 + cy)X = 0 0 0 0 0 0 0 0 0<br />

4p(4) 1 1 1 0 1 1 0 0 1 1 0 0 1 0<br />

p(4) 1 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0<br />

+(00 + cy)X = X 0 1 1 1 1 0 1 1<br />

p(5) 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0<br />

El diagrama de este multiplicador (<strong>en</strong> adelante SMB4(-X)) se muestra <strong>en</strong> la<br />

Fig. 3.10.<br />

Los esquemas de multiplicación de las Figs. 3.9 y 3.10 se pued<strong>en</strong> ext<strong>en</strong>der a<br />

multiplicadores de bases superiores, pero la estructura del multiplicador se vuelve<br />

más compleja debido a que se debe pre-computar una mayor cantidad de valores<br />

y consecu<strong>en</strong>tem<strong>en</strong>te el número de iteraciones deja de ser m<strong>en</strong>or que n<br />

2<br />

+ 1. Por<br />

ejemplo, para un producto de base 8, se deb<strong>en</strong> pre-computar los valores de 3X, 5X<br />

y 7X, o sólo pre-computar 3X y utilizar un esquema de acarreo similar al de la<br />

Fig. 3.10 para convertir a 5X, 6X y 7X <strong>en</strong> −3X, −2X y −X.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 49<br />

acarreo<br />

ADD<br />

Consumo de recursos<br />

n+1<br />

n<br />

Producto Parcial<br />

2n-1 n<br />

n+1<br />

MUX<br />

desplazami<strong>en</strong>to 2 bits<br />

n-1<br />

n+1<br />

n+1<br />

n+1<br />

n+1<br />

y y +cy<br />

2j-1 2j<br />

FF<br />

acarreo<br />

0<br />

X<br />

Y<br />

2X<br />

-X<br />

Figura 3.10: Diagrama de un SMB4(-X).<br />

SMB4(3X): La estimación del consumo de recursos lógicos del SMB4(3X) debe<br />

considerar los recursos para el pre-cálculo de 3X y que este cálculo puede resultar<br />

<strong>en</strong> n + 2 bits. La estimación para este multiplicador se consigna <strong>en</strong> la Tabla 3.10<br />

Función FG FF CLB<br />

n<br />

Registro X 0 n 2<br />

n<br />

Sumador X + 2X n + 2 0 2<br />

+ 1<br />

n 1<br />

Registro Y (SR) n + 1 n +<br />

Control log2( n<br />

2 ) + 2 log2( n)<br />

+ 1 2<br />

2<br />

1<br />

2<br />

0<br />

log 2 ( n<br />

2 )<br />

2<br />

Multiplexor 4 : 1 × (n + 2) 3(n + 2) 0 3n<br />

2<br />

Sumador (n + 2) + Reg. PH n + 4 n + 4 n<br />

2<br />

2<br />

+ 1<br />

+ 3<br />

+ 2<br />

Tabla 3.10: Estimación de consumo de recursos de un SMB4(3X).<br />

Las Ecs. (3.10 - 3.12) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos de FGs,<br />

FFs y CLBs.<br />

F G(n) = 6n + log2( n<br />

) + 15 (3.10)<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 50<br />

F F (n) = 3n + log2( n<br />

) + 5 (3.11)<br />

2<br />

CLB(n) = 7<br />

2 n + log2( n<br />

2 )<br />

2<br />

+ 15<br />

2<br />

(3.12)<br />

SMB4(-X): En esta versión se reemplaza −X por ¯ X y se ingresa un acarreo<br />

de <strong>en</strong>trada al sumador. De este modo no es necesario el pre-cálculo de −X y se<br />

ahorran recursos.<br />

acarreo<br />

ADD<br />

n+1<br />

n<br />

Producto Parcial<br />

2n-1 n<br />

n+1<br />

acarreo de <strong>en</strong>trada<br />

MUX<br />

desplazami<strong>en</strong>to 2 bits<br />

n-1<br />

n+1<br />

n+1<br />

n+1<br />

n+1<br />

y y +cy<br />

2j-1 2j<br />

FF<br />

acarreo<br />

0<br />

X<br />

Y<br />

2X<br />

X<br />

Figura 3.11: Diagrama de la variante del SMB4(-X).<br />

La estimación de recursos para este multiplicador se muestra <strong>en</strong> la Tabla 3.11.<br />

Función FG FF CLB<br />

Registro X 0 n n<br />

2<br />

n 1<br />

Registro Y (SR) n + 1 n +<br />

Control log2( n<br />

2 ) + 6 log2( n)<br />

+ 3 2<br />

2<br />

1<br />

2<br />

0<br />

log 2 ( n<br />

2 )<br />

2<br />

Multiplexor 4 : 1 × (n + 1) 3(n + 1) 0 3n<br />

2<br />

Sumador (n + 1) + Reg. PH n + 3 n + 3 n<br />

2<br />

2<br />

+ 4<br />

+ 3<br />

2<br />

+ 3<br />

2<br />

Tabla 3.11: Estimación de consumo de recursos lógicos SMB4(-X).


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 51<br />

Las Ecs. (3.13 - 3.15) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos de FGs,<br />

FFs y CLBs.<br />

F G(n) = 5n + log2( n<br />

) + 13 (3.13)<br />

2<br />

F F (n) = 3n + log2( n<br />

) + 6 (3.14)<br />

2<br />

CLB(n) = 3n + log2( n<br />

2 )<br />

+<br />

2<br />

15<br />

2<br />

(3.15)<br />

En la Fig. 3.12 se muestra el consumo de recursos lógicos de las dos variantes<br />

del multiplicador secu<strong>en</strong>cial de base 4 <strong>en</strong> contraste con el multiplicador secu<strong>en</strong>cial<br />

tradicional. Se observa <strong>en</strong> la misma figura que, si bi<strong>en</strong> la velocidad de procesa-<br />

mi<strong>en</strong>to de los SM base 4 se increm<strong>en</strong>ta casi al doble por realizar m<strong>en</strong>os iteraciones,<br />

el costo <strong>en</strong> consumo de recursos lógicos asci<strong>en</strong>de a más del doble respecto a un<br />

SM tradicional.<br />

Comportami<strong>en</strong>to temporal<br />

SMB4(3X): El comportami<strong>en</strong>to temporal del SMB4(3X) involucra dos cade-<br />

nas de adiciones, la primera resulta de la obt<strong>en</strong>ción del valor 3X y la segunda de<br />

la operación de acumulación de los productos parciales, Fig. 3.9.<br />

La Ec. (3.16) resume el retardo de propagación de la ruta de interconexión<br />

más crítica este multiplicador.<br />

tpd = 2TOP CY +<br />

(n + 2) − 4<br />

2<br />

× TBY P + 2TSUM + TIHO + Trd<br />

(3.16)


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 52<br />

CLB<br />

200<br />

180<br />

160<br />

140<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS10<br />

XCS05<br />

SMB4(3X)<br />

SMB4(−X)<br />

SM<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.12: Consumo de recursos de multiplicadores SM.<br />

En la Fig. 3.13 se muestra el retardo de propagación estimado para el SMB4(3X).<br />

Este retardo define la frecu<strong>en</strong>cia máxima de reloj que se puede utilizar con este<br />

multiplicador, que se observa <strong>en</strong> la Fig. 3.14.<br />

La velocidad de procesami<strong>en</strong>to estimada del SMB4(3X) se grafica <strong>en</strong> la Fig.<br />

3.15. La misma es obt<strong>en</strong>ida como la frecu<strong>en</strong>cia máxima de reloj aplicable al<br />

multiplicador dividido el número de ciclos necesarios para ejecutar un producto,<br />

P S = fc<br />

n<br />

+1, expresado <strong>en</strong> millones de operaciones por segundo. En esta estimación<br />

2<br />

se considera que la carga de datos y el cálculo de 3X no excede un período de<br />

reloj.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 53<br />

Tpd [ns]<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.13: Retardo de propagación estimado del SMB4(3X).<br />

Max. Frec. de reloj [Mhz]<br />

100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.14: Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMB4(3X).


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 54<br />

Velocidad de Procesami<strong>en</strong>to [Mop]<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.15: Velocidad máxima de procesami<strong>en</strong>to del SMB4(3X).<br />

SMB4(-X): El comportami<strong>en</strong>to temporal del SMB4(-X), si bi<strong>en</strong> evita el cálculo<br />

de 3X, involucra un retardo asociado a la operación de la Tabla 3.8. La Ec. (3.17)<br />

resume el retardo de propagación de la ruta de interconexión más crítica de este<br />

multiplicador.<br />

tpd = TOP CY +<br />

(n + 2) − 4<br />

2<br />

× TBY P + TSUM + TIHO + TILO + TICK + Trd (3.17)<br />

En la Fig. 3.16 se puede observar el retardo de propagación estimado para el<br />

SMB4(-X). Este retardo define la frecu<strong>en</strong>cia máxima de reloj que se puede utilizar<br />

con este multiplicador, que se observa <strong>en</strong> la Fig. 3.17.<br />

La velocidad de procesami<strong>en</strong>to estimada del SMB4(-X) se muestra <strong>en</strong> la Fig.<br />

3.18. La misma es calculada como la frecu<strong>en</strong>cia máxima de reloj aplicable al<br />

multiplicador dividido el número de ciclos necesarios para ejecutar un producto,<br />

P S = fc<br />

n<br />

+2, expresado <strong>en</strong> millones de operaciones por segundo.<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 55<br />

Tpd [ns]<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.16: Retardo de propagación estimado del SMB4(-X).<br />

Max. Frec. de reloj [Mhz]<br />

100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.17: Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMB4(-X).


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 56<br />

Velocidad de Procesami<strong>en</strong>to [Mop]<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.18: Velocidad máxima de procesami<strong>en</strong>to del SMB4(-X).<br />

3.3. Arquitecturas Propuestas <strong>en</strong> Punto Fijo<br />

3.3.1. Multiplicador <strong>Secu<strong>en</strong>cial</strong> Sin Entradas Registradas<br />

El multiplicador secu<strong>en</strong>cial sin <strong>en</strong>tradas registradas (SMSR) es una variante<br />

del multiplicador SM de desplazami<strong>en</strong>to a la derecha. El SMSR pres<strong>en</strong>ta un es-<br />

quema de multiplicación simplificado ya que no realiza la carga paralelo de los<br />

registros del multiplicador y del multiplicando. De esta manera no existe la de-<br />

mora propia del ciclo de carga, lo cual constituye una v<strong>en</strong>taja. Por lo tanto, este<br />

multiplicador puede realizar un producto <strong>en</strong> un período T = nTCK, donde n es<br />

la longitud de palabra de los operandos y TCK el período de reloj aplicado sobre<br />

el multiplicador.<br />

En la Figura 3.19 se muestra un esquema del SMSR, que utiliza un sumador<br />

de n bits y un multiplexor para la selección de los bits yj.<br />

El control del multiplicador consiste <strong>en</strong> un contador que ejecuta la selección de<br />

los yj y que a su vez manti<strong>en</strong>e el número de iteración realizada. La inicialización


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 57<br />

acarreo<br />

ADD<br />

n<br />

n<br />

Producto<br />

2n-1 n<br />

n<br />

desplazami<strong>en</strong>to<br />

n<br />

n-1<br />

X<br />

Parcial<br />

MUX<br />

Control<br />

Figura 3.19: Multiplicador SMSR.<br />

del multiplicador se realiza reseteando el registro que guarda el producto parcial<br />

acumulado (P ) y el contador. Este multiplicador requiere que los datos est<strong>en</strong><br />

pres<strong>en</strong>tes durante todo el ciclo de la multiplicación.<br />

Consumo de recursos<br />

La Tabla 3.12 muestra el consumo de recursos lógicos del SMSR. En esta<br />

estimación se acepta que los n bits más significativos del registro P se ubican <strong>en</strong><br />

conjunto con los FGs del sumador, y los m<strong>en</strong>os significativos constituy<strong>en</strong> tan sólo<br />

un registro de desplazami<strong>en</strong>to serie.<br />

Función FG FF CLB<br />

Multiplexor yi<br />

Producto yiX<br />

Control<br />

n − 1<br />

n<br />

log2(n) + 2<br />

0<br />

0<br />

log2(n) + 1<br />

n−1<br />

2<br />

n<br />

2<br />

log2 (n)<br />

+ 1 2<br />

+ 1<br />

n<br />

Sumador + Reg. PH n + 2 n + 2 2<br />

n<br />

Registro PL 0 n 2<br />

Tabla 3.12: Estimación de consumo de recursos lógicos de un SMSR.<br />

Las Ecs. (3.18, 3.19 y 3.20) resum<strong>en</strong> la estimación <strong>en</strong> términos de FGs, FFs<br />

y CLBs.<br />

F G(n) = 3n + log 2 n + 3 (3.18)<br />

n<br />

0<br />

Y


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 58<br />

F F (n) = 2n + log 2 n + 3 (3.19)<br />

CLB(n) = 2n + log 2 n<br />

2<br />

+ 3<br />

2<br />

En la Fig. 3.20 se muestra el consumo estimado de recursos del SMSR.<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS05<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Comportami<strong>en</strong>to temporal<br />

Figura 3.20: Consumo de recursos del SMSR.<br />

(3.20)<br />

El período mínimo de reloj que puede utilizar el SMSR si bi<strong>en</strong> conti<strong>en</strong>e los<br />

mismos retardos que el SM, el retardo TILO provi<strong>en</strong>e del multiplexado para la<br />

selección de yi.<br />

La Ec. (3.21) resume el retardo de propagación de la ruta de interconexión<br />

más crítica.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 59<br />

tpd = TOP CY +<br />

n − 4<br />

2 × TBY P + TSUM + TILO + TCKO + Trd (3.21)<br />

En la Fig. 3.21 se grafica el retardo de propagación estimado para el multi-<br />

plicador propuesto. La máxima frecu<strong>en</strong>cia de reloj que se puede utilizar con este<br />

multiplicador se muestra <strong>en</strong> la Fig. 3.22.<br />

Tpd [ns]<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.21: Retardo de propagación estimado del SMSR.<br />

La velocidad de procesami<strong>en</strong>to estimada del SMSR se pres<strong>en</strong>ta <strong>en</strong> la Fig. 3.23.<br />

La misma se calcula como la frecu<strong>en</strong>cia máxima de reloj aplicable al multiplicador<br />

dividido el número de ciclos necesarios para ejecutar un producto, P S = fc<br />

n ,<br />

expresado <strong>en</strong> millones de operaciones por segundo.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 60<br />

Max. Frec. de reloj [Mhz]<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.22: Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMSR.<br />

Velocidad de Procesami<strong>en</strong>to [Mop]<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.23: Velocidad máxima de procesami<strong>en</strong>to del SMSR.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 61<br />

3.3.2. Multiplicador <strong>Secu<strong>en</strong>cial</strong> Fraccionado<br />

El Multiplicador <strong>Secu<strong>en</strong>cial</strong> Fraccionado (SMF) permite obt<strong>en</strong>er una bu<strong>en</strong>a<br />

velocidad procesami<strong>en</strong>to reduci<strong>en</strong>do el número de ciclos necesarios para ejecutar<br />

el producto. Esta reducción se obti<strong>en</strong>e fraccionando la sumatoria de la Ec. (3.22)<br />

<strong>en</strong> dos semisumatorias, (3.23).<br />

P =<br />

n−1<br />

P =<br />

j=0<br />

X2 j · yj<br />

k<br />

X2 j n−1<br />

yj +<br />

j=0<br />

j=k<br />

X2 j yj<br />

(3.22)<br />

(3.23)<br />

Aplicando el SM con desplazami<strong>en</strong>to a la derecha, el producto resultante se<br />

muestra <strong>en</strong> la Ec. (3.24).<br />

P = 2 n−1<br />

<br />

k<br />

X · 2 j−(n−1) n−1<br />

yj + X · 2 j−(n−1) <br />

yj<br />

j=0<br />

j=k<br />

(3.24)<br />

La primer semi-sumatoria realiza su proceso <strong>en</strong> k · TCK (donde TCK es el<br />

período de reloj) y la segunda <strong>en</strong> (n − 1 − k) · TCK. Si las dos semi-sumatorias co-<br />

mi<strong>en</strong>zan al mismo tiempo y se suman sus resultados con el debido desplazami<strong>en</strong>to,<br />

el período de proceso estará dado por:<br />

k · TCK si k > (n − 1) − k<br />

((n − 1) − k) · TCK si k < (n − 1) − k<br />

o<br />

Para el caso particular <strong>en</strong> que k = n,<br />

el período de procesami<strong>en</strong>to de cada<br />

2<br />

producto será n · TCK.<br />

2<br />

La suma de las dos semi-sumatorias de la Ec. (3.24) se realiza mediante un


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 62<br />

único sumador de 2n − k bits, ya que la primer semi-sumatoria se <strong>en</strong>contrará des-<br />

plazada k veces de la segunda. Por otro lado dicha suma agrega un retardo tR<br />

prov<strong>en</strong>i<strong>en</strong>te de la lógica involucrada. Este retardo se puede considerar m<strong>en</strong>or que<br />

TCK, tomando como pauta que el retardo de involucrado <strong>en</strong> la adición de los<br />

productos parciales es inferior o igual al retardo definido para un multiplicador<br />

SM.<br />

El período de procesami<strong>en</strong>to para este multiplicador estará dado por T =<br />

( n + 1) · TCK.<br />

2<br />

SM<br />

Acumulación<br />

X[n:0] X[n:0]<br />

Y[m/2:0] Y[m:m/2+1]<br />

m/2 x n<br />

m/2 x n<br />

Y[m:0] x X[n:0]<br />

Figura 3.24: Diagrama de operación de un SMF.<br />

En la Fig. 3.24 se muestra el esquema del SMF, donde dos multiplicadores<br />

secu<strong>en</strong>ciales realizan sus productos simultáneam<strong>en</strong>te y, un período después, sus<br />

resultados son adicionados.<br />

La aplicación práctica del SMF se puede realizar <strong>en</strong> base a un SM tradicional<br />

o un SMSR. La utilización del SM implica que se deb<strong>en</strong> cargar los datos <strong>en</strong> los<br />

registros, por lo que se requier<strong>en</strong> n<br />

2<br />

+ 2 iteraciones para realizar un producto.<br />

Por lo tanto, se justifica la utilización de este esquema para multiplicadores con<br />

una longitud de palabra que haga despreciables las dos iteraciones adicionales<br />

<strong>en</strong> comparación con n.<br />

En el caso del SMF basado <strong>en</strong> un SMSR, el producto se<br />

2<br />

realiza <strong>en</strong> n + 1 iteraciones.<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 63<br />

Consumo de recursos<br />

Recursos de un SMF(SM): La Tabla 3.13 muestra el consumo de recursos del<br />

SMF basado <strong>en</strong> el SM. En esta estimación se considera que ambos multiplicadores<br />

parciales son controlados por un único contador.<br />

Función FG FF CLB<br />

Registro X<br />

2× Registro SR Y [<br />

0 n n<br />

2<br />

n : 0] 2<br />

2× Producto yiX<br />

n 2( + 1) 2<br />

2n<br />

n 2 2<br />

0<br />

n + 1 2<br />

n<br />

Control mod n<br />

2<br />

log2( n<br />

2 ) + 2 log2( n<br />

2 ) + 1 1<br />

2 log2( n<br />

2× Sumador + Reg. PHi 2n + 4 2n + 4<br />

) + 1 2<br />

n + 2<br />

Sumador + Reg. Ptotal n + 2 3n<br />

+ 2<br />

3n<br />

+ 1<br />

3<br />

2<br />

Tabla 3.13: Estimación de consumo de recursos lógicos SMF(SM).<br />

Las Ecs. (3.25 - 3.27) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos de FGs,<br />

FFs y CLBs.<br />

2<br />

F G(n) = 13<br />

2 n + log n<br />

2 + 10 (3.25)<br />

2<br />

F F (n) = 11<br />

2 n + log n<br />

2 + 7 (3.26)<br />

2<br />

CLB(n) = 15<br />

4 n + log2 n<br />

2<br />

2<br />

4<br />

+ 5 (3.27)<br />

Recursos de un SMF(SMSR): La Tabla 3.14 realiza una estimación del<br />

consumo de recursos del SMF basado <strong>en</strong> el SMSR. Las consideraciones de esta<br />

estimación son similares al SMF basado <strong>en</strong> un SM.<br />

Las Ecs. (3.28 - 3.30) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos de FGs,<br />

FFs y CLBs.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 64<br />

Función FG FF CLB<br />

2× Multiplexor yi 2( n<br />

2 − 1) 0 2× Producto yiX 2n 0<br />

n − 1 2<br />

n<br />

Control mod n<br />

2<br />

log2( n<br />

2 ) + 2 log2( n<br />

2 ) + 1 1<br />

2 log2( n<br />

2× Sumador + Reg. PHi 2n + 4 2n + 4<br />

) + 1 2<br />

n + 2<br />

2× Registro PL n<br />

0 2 2 n<br />

2<br />

3<br />

3<br />

Sumador + Reg. Ptotal n + 2 2 2<br />

n + 2<br />

3<br />

4<br />

n<br />

2<br />

n + 1<br />

Tabla 3.14: Estimación de consumo de recursos lógicos de un SMF(SMSR).<br />

F G(n) = 13<br />

2 n + log n<br />

2 + 6 (3.28)<br />

2<br />

F F (n) = 7<br />

2 n + log n<br />

2 + 7 (3.29)<br />

2<br />

CLB(n) = 15<br />

4 n + log2 n<br />

2<br />

2<br />

+ 3 (3.30)<br />

En la Fig. 3.25 se puede observar el consumo de recursos lógicos estimado del<br />

SMF basado <strong>en</strong> un SM tradicional y <strong>en</strong> un SMSR.<br />

Comportami<strong>en</strong>to temporal<br />

El comportami<strong>en</strong>to temporal resulta similar al de un multiplicador SM o<br />

SMSR debido a que la ruta de interconexión más crítica se <strong>en</strong>cu<strong>en</strong>tra <strong>en</strong> la cons-<br />

titución de los multiplicadores fraccionados, Fig. 3.24.<br />

La Ec. (3.31) resume el retardo de propagación de la ruta de interconexión<br />

más crítica para el multiplicador propuesto.<br />

tpd = TOP CY +<br />

n − 4<br />

2 × TBY P + TSUM + TILO + Trd (3.31)<br />

En la Fig. 3.26 se grafica el retardo de propagación estimado para el SMF.<br />

Este retardo define la frecu<strong>en</strong>cia máxima de reloj que se puede utilizar con este


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 65<br />

CLB<br />

200<br />

180<br />

160<br />

140<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS10<br />

XCS05<br />

SMF (SM)<br />

SMF (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.25: Consumo de recursos de multiplicadores SMF.<br />

multiplicador, que se observa <strong>en</strong> la Fig. 3.27.<br />

La velocidad de procesami<strong>en</strong>to estimada de los SMF se muestra <strong>en</strong> la Fig. 3.28.<br />

La misma es calculada como la frecu<strong>en</strong>cia máxima de reloj dividido el número<br />

de ciclos necesarios para ejecutar un producto, P SSM = fc<br />

n<br />

expresado <strong>en</strong> millones de operaciones por segundo.<br />

2 +1 y P SSMSR = fc<br />

n ,<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 66<br />

Tdp [ns]<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.26: Retardo de propagación estimado del SMF.<br />

Max. Frec. de reloj [Mhz]<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.27: Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMF.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 67<br />

Velocidad de Procesami<strong>en</strong>to [Mops]<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SMF (SM)<br />

SMF (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.28: Velocidad máxima de procesami<strong>en</strong>to de los SMF.<br />

3.3.3. Multiplicador de Sumas Consecutivas<br />

Esta variante es similar al SMB4 ya que básicam<strong>en</strong>te opera con dígitos de<br />

2 bits. La estrategia consiste <strong>en</strong> realizar dos subproductos <strong>en</strong> forma consecuti-<br />

va para reducir el número de iteraciones sin t<strong>en</strong>er que pre-computar múltiplos<br />

de los operandos. El Multiplicador de Sumas Consecutivas (SMSC) realiza dos<br />

subproductos consecutivos <strong>en</strong> cada iteración como se puede observar <strong>en</strong> la Ec.<br />

(3.32).<br />

3.15.<br />

P = 2 n−1<br />

⎡<br />

<br />

⎣<br />

n<br />

2 −1<br />

(yjX · 2 2j−(n−1) + yj+1X · 2 2j+1−(n−1) )<br />

j=0<br />

⎤<br />

⎦ (3.32)<br />

Un ejemplo de la operatoria de este multiplicador es pres<strong>en</strong>tado <strong>en</strong> la Tabla<br />

La suma de los dos subproductos de la Ec. (3.32) g<strong>en</strong>era un TCK superior al de<br />

un multiplicador secu<strong>en</strong>cial debido al acarreo de los dos sumadores, sin embargo,<br />

para ciertas longitudes de palabras, el increm<strong>en</strong>to <strong>en</strong> el retardo se ve minimizado


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 68<br />

Tabla 3.15: Ejemplo de una multiplicación mediante sumas consecutivas<br />

X 1 0 0 1<br />

Y 1 1 0 1<br />

p(0) 0 0 0 0<br />

+y 0X 1 0 0 1<br />

+2y 1X 0 0 0 0<br />

4p(1) 0 1 0 0 1<br />

p(1) 0 0 1 0 0 1<br />

+y 3X 1 0 0 1<br />

+2 −1 y4X 1 0 0 1 0<br />

4p(2) 1 1 1 0 1 0 1<br />

p(2) 0 1 1 1 0 1 0 1<br />

fr<strong>en</strong>te a la v<strong>en</strong>taja de reducir a la mitad la cantidad de ciclos <strong>en</strong> el período de<br />

procesami<strong>en</strong>to.<br />

Un esquema del SMSC basado <strong>en</strong> un SM se muestra <strong>en</strong> la Fig. 3.29, donde<br />

se aprecia que, <strong>en</strong> cada iteración, se realiza la suma <strong>en</strong> forma consecutiva de dos<br />

subproductos, yjX + yj+1X · 2 j+1 de la Ec. (3.32).<br />

acarreo<br />

acarreo<br />

ADD<br />

n-1<br />

n<br />

ADD<br />

LSB<br />

desplazami<strong>en</strong>to 2 bits<br />

Producto Parcial<br />

Y 2n-1 n n-1<br />

1 0<br />

n<br />

Figura 3.29: Ejemplo de un SMSC(SM).<br />

El esquema basado <strong>en</strong> el SMSR se muestra <strong>en</strong> la Fig. 3.30.<br />

n-1<br />

X<br />

n<br />

0


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 69<br />

acarreo<br />

acarreo<br />

ADD<br />

n-1<br />

Consumo de recursos<br />

n<br />

ADD<br />

LSB<br />

Producto<br />

2n-1 n<br />

n<br />

n<br />

n<br />

X<br />

desplazami<strong>en</strong>to 2 bits<br />

MUX<br />

MUX<br />

Control<br />

n-1<br />

n/2<br />

n/2<br />

Parcial<br />

Figura 3.30: Ejemplo de un SMSC(SMSR).<br />

Y[bits pares]<br />

0<br />

Y[bits impares]<br />

Recursos de un SMSC(SM): La Tabla 3.16 muestra el consumo de recursos<br />

para un SMSC basado <strong>en</strong> un SM.<br />

Función FG FF CLB<br />

Registro X 0 n n<br />

2<br />

Registro Y (SR) n + 1 n n+1<br />

2<br />

log 2 ( n<br />

2 )<br />

2<br />

Control log2( n<br />

2 ) + 2 log2( n<br />

2× Producto yiX 2n<br />

) + 1 2<br />

0<br />

+ 1<br />

n<br />

Sumador n + 2 0 n + 1 2<br />

+ 1<br />

Sumador + Reg. P n + 2 n + 2 n<br />

2<br />

Tabla 3.16: Estimación de consumo de recursos lógicos de un SMSC(SM).<br />

Las Ecs. (3.33 - 3.35) resum<strong>en</strong> el cálculo del consumo <strong>en</strong> términos de FGs,<br />

FFs y CLBs.<br />

F G(n) = 5n + log 2<br />

F F (n) = 3n + log 2<br />

CLB(n) = 3n + log 2 n<br />

2<br />

2<br />

n<br />

+ 7 (3.33)<br />

2<br />

n<br />

+ 3 (3.34)<br />

2<br />

+ 7<br />

2<br />

(3.35)


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 70<br />

Recursos de un SMSC(SMSR): La Tabla 3.17 expresa el consumo de re-<br />

cursos para un SMSC basado <strong>en</strong> el SMSR.<br />

Función FG FF CLB<br />

2× Multiplexor yi 2( n<br />

2 − 1) 0 Control log2( n − 1 2 n<br />

2 ) + 2 log2( n)<br />

+ 1 2<br />

log2 ( n<br />

2 )<br />

2× Producto yiX 2n 0<br />

+ 1 2<br />

n<br />

Sumador n + 2 0 n + 1 2<br />

+ 1<br />

n<br />

Sumador + Reg. P n + 2 n + 2 2<br />

n<br />

Registro PL 0 n 2<br />

Tabla 3.17: Estimación de consumo de recursos lógicos de un SMSC(SMSR).<br />

Las Ecs. (3.36 - 3.38) resum<strong>en</strong> el consumo <strong>en</strong> términos de FGs, FFs y CLBs.<br />

F G(n) = 5n + log 2<br />

F F (n) = n + log 2<br />

n<br />

+ 4 (3.36)<br />

2<br />

n<br />

+ 3 (3.37)<br />

2<br />

CLB(n) = 3n + 1<br />

2 log n<br />

2 + 2 (3.38)<br />

2<br />

En la Fig. 3.31 se muestra el consumo de recursos del multiplicador SMSC <strong>en</strong><br />

sus dos variantes.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 71<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS05<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.31: Consumo de recursos estimado de un SMSC.<br />

Comportami<strong>en</strong>to temporal<br />

El comportami<strong>en</strong>to temporal del SMSC dep<strong>en</strong>de de la ruta más crítica que,<br />

<strong>en</strong> este caso debe t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta el acarreo los operandos a través de los dos<br />

sumadores consecutivos realim<strong>en</strong>tados a través de una cad<strong>en</strong>a de Flip Flops, Fig.<br />

3.29 o 3.30.<br />

La ruta de retardos <strong>en</strong>tre los dos sumadores consecutivos es mostrada <strong>en</strong> la<br />

Fig. 3.32, donde se puede observar que exist<strong>en</strong> dos rutas de acarreo críticas. La<br />

primera fue pres<strong>en</strong>tada <strong>en</strong> la Sección 3.3.1 y se observa sobre el sumador de la<br />

izquierda. La segunda, incorpora un retardo adicional TOP CY para la g<strong>en</strong>eración<br />

del acarreo del segundo sumador, prov<strong>en</strong>i<strong>en</strong>te del bit S1 del primer sumador, y<br />

un segundo retardo que se considera aditivo, prov<strong>en</strong>i<strong>en</strong>te del acarreo de salida del<br />

primer sumador.<br />

La Ec. (3.39) resume el retardo de propagación de la ruta de interconexión<br />

más crítica para el multiplicador propuesto.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 72<br />

A,B<br />

7 7<br />

A,B<br />

6 6<br />

A,B<br />

5 5<br />

A,B<br />

4 4<br />

A,B<br />

3 3<br />

A,B<br />

2 2<br />

A,B<br />

1 1<br />

A,B<br />

0 0<br />

T SUM<br />

T BYP<br />

T BYP<br />

T BYP<br />

T OPCY<br />

C O<br />

S 7<br />

S 6<br />

S 5<br />

S 4<br />

S 3<br />

S 2<br />

S 1<br />

S 0<br />

C,B<br />

O 7<br />

S,B<br />

7 6<br />

S,B<br />

6 5<br />

S,B<br />

5 4<br />

S,B<br />

4 3<br />

S,B<br />

3 2<br />

S,B<br />

2 1<br />

S,B<br />

1 0<br />

T SUM<br />

T BYP<br />

T BYP<br />

T BYP<br />

T OPCY<br />

Figura 3.32: Ruta crítica de dos sumas consecutivas.<br />

C O<br />

S 7<br />

S 6<br />

S 5<br />

S 4<br />

S 3<br />

S 2<br />

S 1<br />

S 0


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 73<br />

tpd = 2 × TOP CY +<br />

n − 4<br />

2 × TBY P + 2 × TSUM + TILO + Trd (3.39)<br />

La Fig. 3.33 muestra el retardo de propagación estimado para el SMSC. Es-<br />

te retardo define la frecu<strong>en</strong>cia máxima de reloj que se puede utilizar con este<br />

multiplicador, que se observa <strong>en</strong> la Fig. 3.34.<br />

Tdp [ns]<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.33: Retardo de propagación estimado del SMSC.<br />

La velocidad de procesami<strong>en</strong>to estimada del SMSC se grafica <strong>en</strong> la Fig. 3.35.<br />

La misma es calculada como la frecu<strong>en</strong>cia máxima de reloj aplicable al multipli-<br />

cador, dividida por el número de ciclos necesarios para ejecutar un producto y<br />

dep<strong>en</strong>de del esquema <strong>en</strong> que se basa el mismo. Si se basa <strong>en</strong> un SM, la velocidad<br />

de procesami<strong>en</strong>to es P S = fc<br />

fc<br />

n<br />

+1. En el caso de un SMSR, resulta de P S = n .<br />

2<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 74<br />

Max. Frec. de reloj [Mhz]<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.34: Máxima frecu<strong>en</strong>cia de reloj estimada aplicable al SMSC.<br />

Velocidad de Procesami<strong>en</strong>to [Mop]<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.35: Velocidad máxima de procesami<strong>en</strong>to del SMSC.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 75<br />

3.4. Comparación de los multiplicadores<br />

Los multiplicadores propuestos fueron comparados <strong>en</strong>tre sí y con respecto a<br />

los multiplicadores exist<strong>en</strong>tes <strong>en</strong> la literatura. Se realizaron dos comparaciones,<br />

la primera destinada a los multiplicadores secu<strong>en</strong>ciales SM y SMSR, que son<br />

los optimizados <strong>en</strong> consumo de recursos lógicos, y la segunda destinada a los<br />

multiplicadores secu<strong>en</strong>ciales optimizados <strong>en</strong> velocidad de procesami<strong>en</strong>to.<br />

3.4.1. Multiplicadores optimizados <strong>en</strong> consumo de recur-<br />

sos<br />

En la Fig. 3.36 se grafica el consumo de recursos lógicos de los multiplicadores<br />

secu<strong>en</strong>ciales SM y SMSR.<br />

CLB<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

SM<br />

SMSR<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.36: Consumo de recursos lógicos de un SM vs SMSR.<br />

Se puede observar que el SMSR posee un consumo de recursos levem<strong>en</strong>te<br />

inferior al del SM.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 76<br />

El retardo de la ruta crítica para ambos multiplicadores es prácticam<strong>en</strong>te<br />

el mismo, sin embargo la velocidad de procesami<strong>en</strong>to (que dep<strong>en</strong>de del número<br />

de iteraciones) pres<strong>en</strong>ta una difer<strong>en</strong>cia a favor del multiplicador SMSR. Esto se<br />

puede observar <strong>en</strong> la Fig. 3.37.<br />

PS [Mops]<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

SM<br />

SMSR<br />

2<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 3.37: Velocidad de procesami<strong>en</strong>to de un SM vs SMSR.<br />

3.4.2. Multiplicadores optimizados <strong>en</strong> velocidad<br />

En la Fig. 3.38 se muestra el consumo de recursos lógicos de las variantes<br />

optimizadas <strong>en</strong> velocidad.<br />

Se puede observar que los multiplicadores del tipo SMSC son los que consum<strong>en</strong><br />

la m<strong>en</strong>or cantidad de recursos, mi<strong>en</strong>tras que los del tipo SMF pose<strong>en</strong> un consumo<br />

relativo <strong>en</strong>tre un 30 y un 40 % mayor. Por otro lado, los multiplicadores de base<br />

4 pose<strong>en</strong> un consumo relativo a los SMSC <strong>en</strong>tre un 15 y un 20 % mayor.<br />

En la Fig. 3.39 se grafican las velocidades de procesami<strong>en</strong>to, donde se puede<br />

observar que el SMF(SMSR) es el que provee la mayor velocidad de procesami<strong>en</strong>to<br />

para todos los valores de n. Adicionalm<strong>en</strong>te, se puede observar que la variante


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 77<br />

CLB<br />

150<br />

100<br />

50<br />

XCS05<br />

SMB4(3X)<br />

SMB4(−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.38: Consumo de recursos lógicos de los multiplicadores optimizados <strong>en</strong><br />

velocidad.<br />

SMF(SM), salvo para n = 8, pres<strong>en</strong>ta una bu<strong>en</strong>a velocidad de procesami<strong>en</strong>to<br />

aunque inferior al SMF(SMSR) debido a que requiere una iteración adicional.<br />

El multiplicador SMSC(SMSR) pres<strong>en</strong>ta una bu<strong>en</strong>a velocidad de procesami<strong>en</strong>-<br />

to para n < 14 bits, pero para valores mayores decrece. Se observa también que<br />

las otras variantes logran velocidades inferiores a las del SMF(SMSR), pero su-<br />

periores a la velocidad del SMB4(3X).


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 78<br />

PS [Mops]<br />

22<br />

20<br />

18<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

SMB4(3X)<br />

SMB4(−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

2<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 3.39: Velocidad de procesami<strong>en</strong>to de los multiplicadores optimizados <strong>en</strong><br />

velocidad.<br />

3.4.3. Performance de los multiplicadores<br />

A fin de estimar los b<strong>en</strong>eficios de cada variante utilizando un único indicador,<br />

se propone el índice de performance p, definido <strong>en</strong> la Ec. (3.40).<br />

pi(n) =<br />

Velocidad de Procesami<strong>en</strong>to [Mops]<br />

Area<br />

(3.40)<br />

<strong>en</strong> la cual, la Velocidad de Procesami<strong>en</strong>to está expresada <strong>en</strong> Millones de Opera-<br />

ciones por Segundo y el Area como la fracción de recursos respecto de todos los<br />

exist<strong>en</strong>tes <strong>en</strong> una FPGA, (Total de la FPGA = 1).<br />

En la Fig. 3.40 se muestra el índice de performance para una FPGA de 400<br />

CLB’s. Se puede observar que, para n < 14 bits, el SMSR pres<strong>en</strong>ta el mayor<br />

índice de performance. Esto se debe a que este multiplicador posee un consumo de<br />

recursos lógicos bastante reducido, y la relación <strong>en</strong>tre este consumo y su velocidad<br />

de procesami<strong>en</strong>to es la óptima.<br />

Una forma de interpretar este resultado es analizando una posible aplicación


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 79<br />

Performance<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

SM<br />

SMSR<br />

SMB4(3X)<br />

SMB4(−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 3.40: Índice de performance de los multiplicadores.<br />

de este multiplicador. El índice de performance refleja que, si existiera la necesidad<br />

de realizar un cierto número de productos simultáneam<strong>en</strong>te, resulta más efici<strong>en</strong>te<br />

utilizar arreglos paralelos de multiplicadores SMSR <strong>en</strong> lugar de un multiplicador<br />

optimizado <strong>en</strong> velocidad.<br />

El índice indica que el SMSC es casi tan efici<strong>en</strong>te como el SMF(SMSR). Por<br />

otro lado, los multiplicadores SMF(SM) y SMSC(SM) pose<strong>en</strong> una efici<strong>en</strong>cia me-<br />

nor, debido al número de iteraciones adicionales que deb<strong>en</strong> realizar para ejecutar<br />

un producto. Comparativam<strong>en</strong>te se puede observar que la efici<strong>en</strong>cia de los multi-<br />

plicadores de base 4 es bastante inferior.<br />

En la Fig. 3.41 se grafica <strong>en</strong> forma ampliada el índice para 20 < n < 32. En es-<br />

ta figura se puede observar que al aum<strong>en</strong>tar la longitud de palabra el SMF(SMSR)<br />

y el SMSC(SMSR) resultan tanto o más efici<strong>en</strong>tes que el SMSR.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 80<br />

Performance<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SM<br />

SMSR<br />

SMB4(3X)<br />

SMB4(−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

20 22 24 26<br />

n<br />

28 30 32<br />

Figura 3.41: Índice de performance de los multiplicadores 20 < n < 32.<br />

3.5. Arquitecturas Propuestas <strong>en</strong> Punto Flotan-<br />

te<br />

3.5.1. Variante Multiplicador <strong>Secu<strong>en</strong>cial</strong> Sin Entradas Re-<br />

gistradas<br />

Producto de mantisas<br />

El producto de las mantisas es un producto de dos <strong>en</strong>teros binarios sin signo.<br />

El resultado de dos operandos <strong>en</strong>teros de n bits g<strong>en</strong>era como resultado un número<br />

de 2n bits, sin embargo, <strong>en</strong> la multiplicación <strong>en</strong> punto flotante solo se repres<strong>en</strong>tan<br />

los n bits más significativos. Esto permite que exista una reducción de la lógica<br />

del multiplicador debido a que la sección m<strong>en</strong>os significativa del registro que<br />

almac<strong>en</strong>a el P roductoparcial es reemplazada por un único Flip-Flop. Fig. 3.42.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 81<br />

ADD<br />

n<br />

desplazami<strong>en</strong>to<br />

acarreo<br />

n+1 n<br />

Producto Parcial<br />

0<br />

bits descartados<br />

n<br />

n<br />

n<br />

X<br />

MUX<br />

Control<br />

Figura 3.42: Modificación del SMSR para el producto de las mantisas<br />

Redondeo y normalización<br />

El multiplicador propuesto se desarrolló para efectuar dos tipos de redondeo,<br />

el redondeo a cero y el redondeo a +∞. El multiplicador con redondeo a cero es<br />

el más s<strong>en</strong>cillo y más económico <strong>en</strong> términos de consumo de recursos lógicos. El<br />

multiplicador con redondeo a +∞ es más elaborado pero más económico que el<br />

que utiliza el redondeo al más cercano.<br />

Redondeo a cero: El redondeo a cero consiste <strong>en</strong> truncar el producto de las<br />

mantisas a la derecha del bit m<strong>en</strong>os significativo. Esta operación se efectúa por<br />

defecto al eliminar los registros de la sección m<strong>en</strong>os significativa del producto<br />

de las mantisas. La particularidad de esta operación radica <strong>en</strong> que el producto<br />

resultante no se ve afectado por los registros eliminados debido a que son tan<br />

sólo una cad<strong>en</strong>a de registros de desplazami<strong>en</strong>to que va ubicando el bit m<strong>en</strong>os<br />

significativo de la acumulación de los productos parciales (ver Sec. 3.3.1).<br />

Cuando el producto de las mantisas resulte <strong>en</strong> el rango 2 ≤ p ≤ 4, se debe<br />

realizar un desplazami<strong>en</strong>to de normalización a la derecha para restaurar el pro-<br />

ducto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del expon<strong>en</strong>te <strong>en</strong> una unidad.<br />

Este desplazami<strong>en</strong>to se realiza mediante una iteración adicional (ciclo n + 1) <strong>en</strong><br />

la que la <strong>en</strong>trada X = 0 (equival<strong>en</strong>te al desplazami<strong>en</strong>to a la derecha).<br />

n<br />

Y


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 82<br />

Redondeo a +∞: Este esquema pres<strong>en</strong>ta tres posibilidades: la primer posibi-<br />

lidad es el truncami<strong>en</strong>to si el producto es negativo o si todos los bits a la derecha<br />

del LSB son 0. Esta operación se realiza mediante la registración de los bits<br />

descartados <strong>en</strong> cada iteración.<br />

Las otras dos posibilidades de redondeo dep<strong>en</strong>d<strong>en</strong> de los bits más significativos<br />

del producto de las mantisas y se difer<strong>en</strong>cian <strong>en</strong>tre sí por el rango del resultado.<br />

La estrategia de redondeo utilizada con el multiplicador adiciona la constante<br />

2 −n por defecto y posteriorm<strong>en</strong>te evalúa el rango del producto. Si el rango del<br />

producto resulta compr<strong>en</strong>dido <strong>en</strong> el rango 1 ≤ p ≤ 2, el redondeo se efectuó co-<br />

rrectam<strong>en</strong>te y no es requerida ninguna operación adicional.<br />

Cuando el producto resulta compr<strong>en</strong>dido <strong>en</strong> el rango 2 ≤ p ≤ 4, se debe<br />

ajustar el redondeo efectuado debido a la posterior normalización. Se pres<strong>en</strong>tan<br />

dos casos <strong>en</strong> base a los bits m<strong>en</strong>os significativos:<br />

a) Si el bit m<strong>en</strong>os significativo del producto truncado es un ”1”, para el cual la<br />

adición de la constante 2 −n se propaga a los bits más significativos. En este<br />

caso no se realiza corrección.<br />

b) Si el bit m<strong>en</strong>os significativo del producto truncado es un ”0”. En este caso<br />

la adición de la constante 2 −n no se propaga a los bits más significativos y<br />

consecu<strong>en</strong>tem<strong>en</strong>te luego de normalizar debe volver a redondear.<br />

La Fig. 3.43 muestra el esquema de redondeo del multiplicador.<br />

El multiplicador resultante se pres<strong>en</strong>ta <strong>en</strong> la Fig. 3.5.1.<br />

Adición de los expon<strong>en</strong>tes<br />

El expon<strong>en</strong>te del producto resultante se puede expresar mediante la Ec. (3.41).<br />

ep = ex + ey − bias + normal (3.41)


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 83<br />

Producto<br />

Truncami<strong>en</strong>to<br />

Redondeo<br />

Redondeo<br />

Normalización<br />

+<br />

* * ** **<br />

Overflow con error<br />

Sin Overflow<br />

1 * ** **<br />

0 0 00 0...0 0 1<br />

1 * ** **<br />

Producto 2n bits<br />

** ** ** ** **<br />

0 0 00 0...0 0 1<br />

0 1 ** **<br />

Producto n bit<br />

n bits descartados<br />

Sin Redondeo<br />

Overflow sin error<br />

1 * ** **<br />

Figura 3.43: Ejemplo del esquema de redondeo implem<strong>en</strong>tado<br />

acarreo<br />

ADD<br />

n<br />

n<br />

Producto Parcial<br />

n+1 n 0<br />

n<br />

redondeo<br />

n<br />

X<br />

normalización<br />

desplazami<strong>en</strong>to<br />

MUX<br />

Control<br />

Figura 3.44: <strong>Multiplicación</strong> de las mantisas.<br />

n<br />

Y


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 84<br />

La Ec. (3.41) se ha ejecutado <strong>en</strong> dos etapas, la primera donde se adicionan<br />

los expon<strong>en</strong>tes ex + ey y la segunda resta el bias al resultado. En esta etapa se<br />

adiciona, si es necesario, un bit correspondi<strong>en</strong>te a la normalización del resultado.<br />

Consumo de recursos lógicos<br />

SMSR con redondeo a cero: La Tabla 3.18 expresa la estimación del consu-<br />

mo de recursos lógicos del multiplicador <strong>en</strong> punto flotante basado <strong>en</strong> un SMSR<br />

con redondeo a cero.<br />

Función FG FF CLB<br />

Multiplexor 1.fyi n + 1 n 0 n<br />

2<br />

Control log2(n + 1) + 2 log2(n + 1) + 3<br />

log 2 (n+1)<br />

2<br />

Producto yiX n + 1 0 n+1<br />

2<br />

Sumador + Reg. PH n + 3 n + 1 n+3<br />

2<br />

Registro P0 0 1 1<br />

2<br />

Adición expon<strong>en</strong>tes r + 2 0 r<br />

2<br />

Corrección Bias + normalización r + 4 0 r<br />

2<br />

Signo 1 0 1<br />

2<br />

+ 1<br />

+ 2<br />

Tabla 3.18: Estimación de consumo de recursos lógicos de la variante SMSR con<br />

redondeo a cero.<br />

Las Ecs. (3.42, 3.43 y 3.44) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos<br />

de FGs, FFs y CLBs.<br />

F G(n, r) = 3n + log 2(n + 1) + 13 + 2r (3.42)<br />

F F (n, r) = n + log 2(n + 1) + 5 (3.43)<br />

CLB(n, r) = 3n<br />

2 + log2(n + 1)<br />

+<br />

2<br />

15<br />

+ r (3.44)<br />

2<br />

En la Fig. 3.45 se muestra el consumo estimado de recursos del SMSR.<br />

+ 3<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 85<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS05<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.45: Consumo de recursos del PFPM(SMSR), r = 8.<br />

SMSR con redondeo a +∞: La Tabla 3.19 pres<strong>en</strong>ta la estimación del con-<br />

sumo de recursos lógicos del multiplicador <strong>en</strong> punto flotante basado <strong>en</strong> un SMSR<br />

con redondeo a +∞.<br />

Función FG FF CLB<br />

Multiplexor 1.fyi n + 1 n 0 n<br />

2<br />

Control log2(n + 1) + 2 log2(n + 1) + 3<br />

log 2 (n+1)<br />

2<br />

Producto yiX n + 1 0 n+1<br />

2<br />

Sumador + Reg. PH n + 3 n + 1 n+3<br />

2<br />

Registro P0 0 1 1<br />

2<br />

Redondeo + normalización 5 3 5<br />

2<br />

Adición expon<strong>en</strong>tes r + 2 0 r<br />

2<br />

Corrección Bias + normalización r + 4 r + 1 r<br />

2<br />

Signo 1 0 1<br />

2<br />

+ 1<br />

+ 2<br />

Tabla 3.19: Estimación de consumo de recursos lógicos de la variante SMSR con<br />

redondeo a +∞.<br />

Las Ecs. (3.45, 3.46 y 3.47) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos<br />

de FGs, FFs y CLBs.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 86<br />

F G(n, r) = 3n + log 2(n + 1) + 10 + 2r (3.45)<br />

F F (n, r) = n + log 2(n + 1) + 9 (3.46)<br />

CLB(n, r) = 3n<br />

2 + log2(n + 1)<br />

+ 10 + r (3.47)<br />

2<br />

En la Fig. 3.46 se muestra el consumo de estimado de recursos del SMSR.<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS05<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.46: Consumo de recursos del PFPM(SMSR), r = 8.<br />

3.5.2. Variante Multiplicador <strong>Secu<strong>en</strong>cial</strong> de Sumas Con-<br />

secutivas<br />

Producto de mantisas<br />

El producto de las mantisas mediante el SMSC se efectúa como un producto<br />

de dos <strong>en</strong>teros binarios sin signo, con la reducción de la lógica del multiplicador


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 87<br />

debido a que la sección m<strong>en</strong>os significativa del registro P es reemplazada por un<br />

único Flip-Flop. Fig. 3.47.<br />

acarreo<br />

ADD<br />

acarreo<br />

n<br />

ADD<br />

n<br />

LSB<br />

Producto Parcial<br />

n+1n<br />

1<br />

n<br />

n<br />

n<br />

X<br />

desplazami<strong>en</strong>to 2 bits<br />

MUX<br />

MUX<br />

Control<br />

0<br />

n/2<br />

n/2<br />

Bits descartados<br />

Y[bits pares]<br />

Y[bits impares]<br />

Figura 3.47: SMSC modificado para el producto de las mantisas<br />

Redondeo y normalización<br />

Redondeo a cero: El redondeo a cero consiste <strong>en</strong> truncar el resultado del<br />

producto de las mantisas a la derecha del bit m<strong>en</strong>os significativo. Esta operación<br />

se efectúa por defecto al eliminar los registros de la sección m<strong>en</strong>os significativa<br />

del producto de las mantisas tal como se realiza con el multiplicador basado <strong>en</strong><br />

un SMSR.<br />

En el caso <strong>en</strong> que el producto de las mantisas resulte <strong>en</strong> el rango 2 ≤ p ≤ 4,<br />

se debe realizar un desplazami<strong>en</strong>to de normalización a la derecha para restaurar<br />

el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del expon<strong>en</strong>te <strong>en</strong> una<br />

unidad. Mi<strong>en</strong>tras que el multiplicador de punto flotante basado <strong>en</strong> el SMSR, la<br />

operación de normalización se efectúa mediante una iteración adicional (ciclo<br />

n + 1) <strong>en</strong> la que la <strong>en</strong>trada X = 0, con el SMSC esta operación no es posible<br />

debido a que una iteración del SMSC efectúa dos desplazami<strong>en</strong>tos. Debido a esto,<br />

el multiplicador basado <strong>en</strong> el SMSC requiere de lógica adicional para la realización<br />

de las tareas de normalización y de corrección del redondeo.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 88<br />

Redondeo a +∞: El esquema de redondeo a +∞ implem<strong>en</strong>tado <strong>en</strong> este mul-<br />

tiplicador es el mismo que aquel descripto <strong>en</strong> la sección 3.5.1. La difer<strong>en</strong>cia radica<br />

<strong>en</strong> la aplicación del mismo, ya que tal como se explica <strong>en</strong> la sección previa, se<br />

requiere de lógica adicional para efectuar la normalización.<br />

Adición de los expon<strong>en</strong>tes<br />

La adición de los expon<strong>en</strong>tes se realiza de la misma manera que <strong>en</strong> la sección<br />

3.5.1. El expon<strong>en</strong>te del producto resultante se puede expresar mediante la Ec.<br />

(3.48).<br />

Consumo de recursos lógicos<br />

ep = ex + ey − bias + normal (3.48)<br />

SMSC con redondeo a cero: La Tabla 3.20 muestra la estimación del con-<br />

sumo de recursos lógicos del multiplicador <strong>en</strong> punto flotante basado <strong>en</strong> un SMSC<br />

con redondeo a cero. Las Ecs. (3.49, 3.50 y 3.51) resum<strong>en</strong> el cálculo de la esti-<br />

Función FG FF CLB<br />

2× Multiplexor yi<br />

2( n+1<br />

2 − 1) 0 Control log2( n 1 − 2 2<br />

n+1<br />

2 ) + 2 log2( n+1)<br />

+ 3 2<br />

log2 ( n+1<br />

2 )<br />

2× Producto yiX 2n + 2 0<br />

2<br />

n + 1<br />

Sumador n + 3 0 n<br />

2<br />

Sumador + Reg. P n + 3 n + 3 n<br />

2<br />

Registro P0 0 1 1<br />

2<br />

Adición expon<strong>en</strong>tes r + 2 0 r<br />

2<br />

Corrección Bias + normalización r + 4 1 r<br />

2<br />

Signo 1 0 1<br />

2<br />

Tabla 3.20: Estimación de consumo de recursos lógicos de la variante SMSC con<br />

redondeo a cero.<br />

mación <strong>en</strong> términos de FGs, FFs y CLBs. En la Fig. 3.48 se grafica el consumo<br />

+ 3<br />

2<br />

+ 3<br />

2<br />

+ 1<br />

+ 5<br />

2<br />

+ 3<br />

2


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 89<br />

estimado de recursos del SMSC.<br />

CLB<br />

140<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS05<br />

F G(n, r) = 5n + log 2(<br />

F F (n, r) = n + log 2(<br />

CLB(n, r) = 5n<br />

2 + log2( n+1<br />

2 )<br />

2<br />

n + 1<br />

) + 16 + 2r (3.49)<br />

2<br />

n + 1<br />

) + 8 (3.50)<br />

2<br />

+ 19<br />

2<br />

+ r (3.51)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.48: Consumo de recursos del PFPM(SMSC), r = 8.<br />

SMSC con redondeo a +∞: La Tabla 3.21 pres<strong>en</strong>ta la estimación del consu-<br />

mo de recursos lógicos del multiplicador <strong>en</strong> punto flotante basado <strong>en</strong> un SMSC.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 90<br />

Función FG FF CLB<br />

2× Multiplexor yi<br />

− 1) 0 n − 1<br />

2( n+1<br />

2<br />

log 2 ( n+1<br />

2 )<br />

2<br />

Control log2( n+1<br />

2 ) + 2 log2( n+1)<br />

+ 3 2<br />

2× Producto yiX 2n + 2 0 n + 1<br />

Sumador n + 3 0 n<br />

2<br />

Sumador + Reg. P n + 3 n + 3 n<br />

2<br />

Registro P0 0 1 1<br />

2<br />

Redondeo + norm. 2n + 4 3 n + 2<br />

+ 1<br />

Adición expon<strong>en</strong>tes r + 2 0 r<br />

2<br />

Corrección Bias + normalización r + 4 1 r<br />

2<br />

Signo 1 0 1<br />

2<br />

Tabla 3.21: Estimación de consumo de recursos lógicos de la variante SMSC con<br />

redondeo a +∞.<br />

Las Ecs. (3.52, 3.53 y 3.54) resum<strong>en</strong> el cálculo de la estimación <strong>en</strong> términos<br />

de FGs, FFs y CLBs.<br />

F G(n, r) = 7n + log 2(<br />

F F (n, r) = n + log 2(<br />

+ 3<br />

2<br />

+ 3<br />

2<br />

+ 5<br />

2<br />

+ 3<br />

2<br />

n + 1<br />

) + 20 + 2r (3.52)<br />

2<br />

n + 1<br />

) + 10 (3.53)<br />

2<br />

CLB(n, r) = 7n<br />

2 + log2(n + 1)<br />

+<br />

2<br />

23<br />

+ r (3.54)<br />

2<br />

En la Fig. 3.49 se muestra el consumo estimado de recursos del SMSC.<br />

3.6. Conclusiones<br />

En este capítulo se caracterizaron los multiplicadores secu<strong>en</strong>ciales y se pro-<br />

pusieron nuevas arquitecturas con el objetivo de realizar un estudio comparativo<br />

destinado a su implem<strong>en</strong>tación <strong>en</strong> FPGA. Se pres<strong>en</strong>taron las estimaciones de<br />

consumo de recursos lógicos y de comportami<strong>en</strong>to temporal que permitieron con-<br />

trastar las características de los multiplicadores pres<strong>en</strong>tados.


Capítulo 3. Nuevas Arquitecturas de Multiplicadores 91<br />

CLB<br />

140<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

XCS05<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 3.49: Consumo de recursos del PFPM(SMSC), r = 8.<br />

A partir de estas comparaciones se concluyó que el SMSR, el SMSC(SMSR) y<br />

el SMF(SMSR) son los multiplicadores que mejor índice de performance pres<strong>en</strong>-<br />

tan. Resultando el SMSR el óptimo para aplicaciones donde se busca una reducida<br />

cantidad de recursos lógicos, y el SMSC(SMSR) o SMF(SMSR) <strong>en</strong> aplicaciones<br />

donde además de las restricciones de recursos se requiere una alta velocidad de<br />

procesami<strong>en</strong>to.<br />

Como resultado de las comparaciones, se ext<strong>en</strong>dieron las variantes SMSR y<br />

SMSC(SMSR) a la multiplicación de operandos <strong>en</strong> punto flotante. Las arquitec-<br />

turas propuestas contemplan los esquemas con redondeo a cero y a +∞. Para<br />

cada variante se obtuvo una estimación del consumo de recursos lógicos.


Capítulo 4<br />

Resultados Experim<strong>en</strong>tales<br />

4.1. Introducción<br />

Los multiplicadores propuestos fueron <strong>en</strong>sayados experim<strong>en</strong>talm<strong>en</strong>te con el<br />

objetivo de contrastar los resultados teóricos y de las estimaciones. Para ello, los<br />

multiplicadores se implem<strong>en</strong>taron <strong>en</strong> tres series de FPGA de Xilinx: Spartan, Vir-<br />

tex y Virtex II. Cada una de las variantes de los multiplicadores se implem<strong>en</strong>tó <strong>en</strong><br />

primera instancia mediante captura esquemática y posteriorm<strong>en</strong>te <strong>en</strong> L<strong>en</strong>guaje<br />

de Descripción de Hardware (VHDL) [28] [29].<br />

4.2. Parámetros de interés<br />

Las variables de interés para la validación experim<strong>en</strong>tal fueron: consumo de<br />

recursos lógicos, el retardo de propagación, la frecu<strong>en</strong>cia maxima del reloj de la<br />

FPGA (inversa del retardo de propagación), la frecu<strong>en</strong>cia de actualización de<br />

datos por segundo (inversa del tiempo que demanda realizar las iteraciones) y<br />

finalm<strong>en</strong>te, el índice de performance, que integra los conceptos de tiempo y de<br />

cantidad de recursos lógicos.<br />

92


Capítulo 4. Resultados Experim<strong>en</strong>tales 93<br />

El retardo de propagación tpd se obtuvo a partir del Analizador de Tiempos<br />

que posee la herrami<strong>en</strong>ta de programación de FPGA de Xilinx (Foundation 3.1i,<br />

Timimg Analyzer). Esta herrami<strong>en</strong>ta realiza un análisis estático de todos los<br />

retardos incluy<strong>en</strong>do el retardo <strong>en</strong>tre un flanco de reloj y la correspondi<strong>en</strong>te salida<br />

Q de un FlipFlop, considerando adicionalm<strong>en</strong>te el tiempo de establecimi<strong>en</strong>to de<br />

una señal. A partir de estos datos calcula el peor caso de temporización del diseño.<br />

La frecu<strong>en</strong>cia máxima de funcionami<strong>en</strong>to de reloj (fc [Mhz]) es la inversa del<br />

tiempo tpd e indica la frecu<strong>en</strong>cia máxima de reloj posible con ese diseño. A partir<br />

de esta última se obti<strong>en</strong>e la frecu<strong>en</strong>cia de actualización de datos o velocidad<br />

de procesami<strong>en</strong>to (P S [Mops]). Esta frecu<strong>en</strong>cia surge de dividir la frecu<strong>en</strong>cia<br />

máxima de trabajo por el número de ciclos N que requiere ejecutar una operación,<br />

P S = fc<br />

N .<br />

El índice de performance definido <strong>en</strong> la Sección 3.4.3 se utilizó con el objetivo<br />

de comparar el desempeño de cada sistema implem<strong>en</strong>tado <strong>en</strong> la FPGA.<br />

4.3. <strong>Multiplicación</strong> <strong>en</strong> Punto Fijo<br />

4.3.1. Consumo de recursos lógicos<br />

El consumo de recursos lógicos se puede cuantificar <strong>en</strong> CLBs. Cada CLB<br />

está compuesto por dos g<strong>en</strong>eradores de funciones (FG) y dos FlipFlops (FF). En<br />

las series Virtex y Virtex II, cada CLB posee dos celdas d<strong>en</strong>ominadas slice, pero<br />

a fines prácticos la unidad utilizada es la de un CLB = un slice.<br />

A continuación se pres<strong>en</strong>tan los resultados experim<strong>en</strong>tales de los multiplica-<br />

dores implem<strong>en</strong>tados <strong>en</strong> una FPGA XCS20-pq208, pert<strong>en</strong>eci<strong>en</strong>te a la Familia<br />

Spartan, con una capacidad de 400 CLBs. Finalm<strong>en</strong>te, se pres<strong>en</strong>ta de forma re-<br />

sumida el consumo de recursos lógicos de los multiplicadores implem<strong>en</strong>tados <strong>en</strong>


Capítulo 4. Resultados Experim<strong>en</strong>tales 94<br />

las FPGAs XCV300e-8 y XC2V250-5 de las series Virtex y Virtex II.<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Spartan<br />

En la Tabla 4.1 se muestran los resultados experim<strong>en</strong>tales de los multiplica-<br />

dores implem<strong>en</strong>tados <strong>en</strong> Spartan.<br />

Tabla 4.1: Consumo de recursos de los multiplicadores <strong>en</strong> Spartan[CLB].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 17 20 23 26 29 32 35 39 41 44 47 50 54<br />

SMSR 19 24 28 31 35 40 43 47 50 54 58 61 65<br />

SMB4(3X) 30 36 42 48 55 62 67 74 79 86 91 98 104<br />

SMB4(-x) 28 32 38 44 51 56 61 66 70 76 81 87 92<br />

SMSC(SM) 24 30 35 40 45 50 55 61 65 70 75 81 86<br />

SMSC(SMSR) 28 34 39 45 51 60 65 71 75 82 87 93 98<br />

SMF(SM) 32 38 45 51 59 65 72 78 85 91 97 104 111<br />

SMF(SMSR) 35 42 50 56 64 73 81 86 94 101 109 114 122<br />

Las Tablas 4.2 y 4.3 muestran, respectivam<strong>en</strong>te, el consumo estimado (Capítu-<br />

lo 3) y la difer<strong>en</strong>cia porc<strong>en</strong>tual <strong>en</strong>tre el consumo experim<strong>en</strong>tal y el estimado.<br />

Tabla 4.2: Consumo Estimado de recursos de los multiplicadores [CLB].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 20 24 28 32 37 41 45 49 53 57 61 65 69<br />

SMSR 19 23 27 31 36 40 44 48 52 56 60 64 68<br />

SMB4(3X) 37 44 51 58 66 73 80 87 94 101 108 115 122<br />

SMB4(-x) 33 39 45 51 58 64 70 76 82 88 94 100 106<br />

SMSC(SM) 29 35 41 47 53 59 65 71 77 83 89 95 102<br />

SMSC(SMSR) 27 33 39 45 52 58 64 70 76 82 88 94 100<br />

SMF(SM) 35 43 50 58 66 73 81 88 96 103 111 118 126<br />

SMF(SMSR) 32 39 46 53 61 68 75 82 89 96 103 110 117<br />

Se puede observar <strong>en</strong> la Tabla 4.3 que, los multiplicadores que pose<strong>en</strong> una<br />

estructura basada <strong>en</strong> el SM (el SM inclusive), pres<strong>en</strong>tan un consumo real inferior<br />

al estimado. Esta difer<strong>en</strong>cia se debe a que el algoritmo de síntesis e implem<strong>en</strong>ta-<br />

ción de Xilinx agrupa dos secciones de los multiplicadores <strong>en</strong> un sólo CLB. En el


Capítulo 4. Resultados Experim<strong>en</strong>tales 95<br />

Tabla 4.3: Difer<strong>en</strong>cia porc<strong>en</strong>tual, Consumo Experim<strong>en</strong>tal vs Estimado [ %].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM -15 -17 -19 -20 -21 -21 -22 -20 -22 -23 -23 -23 -22<br />

SMSR 0 4 3 -1 -1 1 -2 -2 -3 -3 -3 -5 -4<br />

SMB4(3X) -19 -18 -18 -18 -16 -15 -16 -15 -16 -15 -16 -15 -15<br />

SMB4(-x) -15 -18 -16 -14 -11 -12 -12 -13 -14 -13 -14 -13 -13<br />

SMSC(SM) -16 -13 -14 -15 -15 -15 -16 -14 -16 -16 -16 -15 -15<br />

SMSC(SMSR) 4 3 -1 -1 -1 4 2 2 -1 0 -1 -1 -2<br />

SMF(SM) -9 -11 -11 -12 -10 -11 -11 -12 -11 -12 -13 -12 -12<br />

SMF(SMSR) 9 7 8 5 6 8 8 5 6 5 6 4 4<br />

caso de este esquema de multiplicación exist<strong>en</strong> dos secciones, una combinacional<br />

sin registros y otra que utiliza sólo registros, permiti<strong>en</strong>do, que el programa logre<br />

reducir el consumo de CLBs complem<strong>en</strong>tando dos secciones del multiplicador.<br />

A continuación se explica esta situación por medio de la implem<strong>en</strong>tación del<br />

SM que se muestra <strong>en</strong> la Fig. 4.1. En la estructura del SM, Fig. 3.2, el registro<br />

Figura 4.1: Síntesis de un CLB del multiplicador SM.<br />

que almac<strong>en</strong>a el operando X sólo utiliza los FFs de un CLB permiti<strong>en</strong>do que los<br />

FGs se puedan utilizar para otras funciones. Si se introduce esta consideración de


Capítulo 4. Resultados Experim<strong>en</strong>tales 96<br />

síntesis <strong>en</strong> la estimación de consumo de recursos del multiplicador, la Ec. (3.6) es<br />

modificada, obt<strong>en</strong>i<strong>en</strong>do la Ec. (4.1).<br />

CLB(n) = 3<br />

2 n + log2 n 5<br />

+<br />

2 2<br />

(4.1)<br />

La Fig. 4.2 muestra gráficam<strong>en</strong>te la difer<strong>en</strong>cia exist<strong>en</strong>te <strong>en</strong>tre el consumo de<br />

recursos estimado y el experim<strong>en</strong>tal para el SM.<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

Estimado<br />

Experim<strong>en</strong>tal<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 4.2: Consumo de recursos lógicos del SM <strong>en</strong> Spartan.<br />

La Fig. 4.3 pres<strong>en</strong>ta la contrastación <strong>en</strong>tre la estimación de la Ec. 4.1 y los<br />

resultados experim<strong>en</strong>tales, donde se advierte la consist<strong>en</strong>cia <strong>en</strong>tre los resultados<br />

experim<strong>en</strong>tales y los estimados.


Capítulo 4. Resultados Experim<strong>en</strong>tales 97<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

Estimado<br />

Experim<strong>en</strong>tal<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 4.3: Consumo de recursos lógicos del SM <strong>en</strong> Spartan.<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex<br />

En la Tabla 4.4 se pres<strong>en</strong>ta el consumo de recursos lógicos de los multipli-<br />

cadores, <strong>en</strong> términos de slices 1 , para una FPGA XCV300e-8 de la serie Virtex<br />

de Xilinx. Se puede observar que <strong>en</strong> el caso de los multiplicadores <strong>en</strong> Virtex, el<br />

software de implem<strong>en</strong>tación no optimiza el uso de las celdas como lo hizo <strong>en</strong> la<br />

serie Spartan, por lo que el consumo coincide conlo estimado <strong>en</strong> Capítulo 3.<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex II<br />

La Tabla 4.5 pres<strong>en</strong>ta el consumo de recursos lógicos de los multiplicadores,<br />

<strong>en</strong> términos de slices, para una FPGA XC2V250-5 de la serie Virtex II de Xilinx.<br />

Se puede observar que <strong>en</strong> el caso de los multiplicadores <strong>en</strong> Virtex II el consumo<br />

de recursos es similar al de la serie Virtex.<br />

1 El cont<strong>en</strong>ido de un slice es similar al de un CLB de una Serie Spartan de Xilinx.


Capítulo 4. Resultados Experim<strong>en</strong>tales 98<br />

Tabla 4.4: Consumo de recursos de los multiplicadores <strong>en</strong> Virtex [slices].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 21 25 29 33 38 42 46 50 54 58 62 66 71<br />

SMSR 19 24 28 31 34 41 44 48 53 57 60 64 64<br />

SMB4(3X) 33 39 45 51 58 65 70 76 82 89 94 100 107<br />

SMB4(-x) 31 36 40 46 52 57 62 67 73 77 82 87 94<br />

SMSC(SM) 30 36 42 49 55 62 67 73 79 86 91 97 104<br />

SMSC(SMSR) 28 33 39 46 50 58 64 71 76 82 88 94 96<br />

SMF(SM) 37 44 51 59 67 74 81 90 96 104 111 119 128<br />

SMF(SMSR) 35 42 50 56 64 73 81 86 94 101 109 114 122<br />

Tabla 4.5: Consumo de recursos de los multiplicadores <strong>en</strong> Virtex II [slices].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 21 25 29 33 38 42 46 50 54 58 62 66 71<br />

SMSR 19 24 28 31 34 41 45 48 52 56 60 64 63<br />

SMB4(3X) 31 38 44 50 57 64 69 75 81 88 93 99 106<br />

SMB4(-x) 32 38 42 48 54 58 64 69 73 79 83 89 93<br />

SMSC(SM) 30 36 42 49 55 62 67 73 79 86 91 97 104<br />

SMSC(SMSR) 28 33 39 46 51 58 63 70 76 82 88 94 96<br />

SMF(SM) 36 44 51 59 67 74 81 90 96 104 111 119 128<br />

SMF(SMSR) 35 41 48 55 62 72 80 87 94 101 109 114 122<br />

4.3.2. Comportami<strong>en</strong>to temporal<br />

El comportami<strong>en</strong>to temporal de los multiplicadores dep<strong>en</strong>de del retardo inhe-<br />

r<strong>en</strong>te de las compuertas lógicas y registros, y el retardo debido a la interconexión<br />

<strong>en</strong>tre las mismas. En el capítulo anterior se estimó el comportami<strong>en</strong>to temporal<br />

sin considerar los retardos de interconexión debido a que los mismos recién se<br />

conoc<strong>en</strong> una vez implem<strong>en</strong>tado el circuito.<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Spartan<br />

En esta sección se pres<strong>en</strong>tan los resultados experim<strong>en</strong>tales de los multiplica-<br />

dores implem<strong>en</strong>tados <strong>en</strong> una FPGA XCS20-pq208. A partir de estos resultados,<br />

se obti<strong>en</strong>e una expresión de los retardos de interconexión, los que se incorporan


Capítulo 4. Resultados Experim<strong>en</strong>tales 99<br />

a la estimación del comportami<strong>en</strong>to temporal de cada multiplicador permiti<strong>en</strong>do<br />

caracterizarlo de manera más precisa.<br />

En la Tabla 4.6 se muestran los resultados experim<strong>en</strong>tales de los multiplica-<br />

dores implem<strong>en</strong>tados <strong>en</strong> Spartan.<br />

Tabla 4.6: Retardo de propagación de los multiplicadores <strong>en</strong> Spartan [ns].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 11.1 11.8 12.5 13.0 13.5 14.3 14.8 15.2 15.9 16.6 17.0 17.3 18.1<br />

SMSR 10.9 11.7 12.0 12.8 13.4 14.0 14.4 15.0 15.8 16.3 16.8 17.3 17.9<br />

SMB4(3X) 16.8 17.2 17.8 18.8 19.1 19.3 20.4 20.6 21.3 22.3 22.5 23.5 23.7<br />

SMB4(-x) 15.9 16.6 17.2 18.5 19.1 19.6 19.8 20.5 21.5 21.8 22.9 23.5 24.0<br />

SMSC(SM) 15.7 16.4 17.0 17.9 18.3 18.6 19.5 20.1 20.9 21.4 22.0 22.4 22.9<br />

SMSC(SMSR) 15.5 16.5 17.0 17.5 18.0 18.6 19.7 20.2 20.6 21.1 21.4 22.2 23.1<br />

SMF(SM) 11.4 12.0 12.6 13.3 14.1 14.6 15.4 16.2 17.0 17.9 18.3 19.0 20.2<br />

SMF(SMSR) 11.1 11.9 12.2 13.1 13.6 14.1 14.9 15.7 16.7 17.7 18.0 18.6 19.6<br />

La Tabla 4.7 muestra el retardo de propagación estimado <strong>en</strong> el Capítulo 3. Se<br />

recuerda que el retardo de propagación <strong>en</strong> las variantes SM y SMSR es el mismo,<br />

existi<strong>en</strong>do la difer<strong>en</strong>cia <strong>en</strong> el número de iteraciones de cada modelo.<br />

Tabla 4.7: Retardo estimado de propagación de los multiplicadores Trd = 0 [ns].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 9.1 9.6 10.1 10.6 11.1 11.6 12.1 12.6 13.1 13.6 14.1 14.6 15.1<br />

SMB4(3X) 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0 20.5 21.0<br />

SMB4(-x) 13.3 13.8 14.3 14.8 15.3 15.8 16.3 16.8 17.3 17.8 18.3 18.8 19.3<br />

SMSC 13.9 14.5 15.0 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9<br />

SMF 9.3 9.7 10.3 10.8 11.3 11.8 12.3 12.8 13.3 13.7 14.3 14.8 15.2<br />

La Tabla 4.8 muestra la difer<strong>en</strong>cia porc<strong>en</strong>tual <strong>en</strong>tre el retardo experim<strong>en</strong>tal y<br />

el estimado. Se puede concluir que el retardo de interconexión g<strong>en</strong>era <strong>en</strong>tre un 10<br />

y un 30 % de retardo adicional al retardo estimado.<br />

La Tabla 4.9 muestra la velocidad de procesami<strong>en</strong>to resultante de los multi-<br />

plicadores implem<strong>en</strong>tados <strong>en</strong> Spartan.


Capítulo 4. Resultados Experim<strong>en</strong>tales 100<br />

Tabla 4.8: Difer<strong>en</strong>cia porc<strong>en</strong>tual, Retardo de propagación Experim<strong>en</strong>tal vs Estimado<br />

[ %].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 22.5 23.1 23.6 23.0 21.5 23.2 22.1 20.5 21.6 21.8 20.8 18.5 19.8<br />

SMSR 20.0 22.1 19.0 20.9 20.5 20.3 19.3 19.4 20.3 19.9 19.1 18.2 18.5<br />

SMB4(3X) 12.0 11.2 11.1 13.7 12.6 10.4 13.1 11.4 12.3 14.5 12.7 14.7 12.7<br />

SMB4(-x) 19.5 20.2 20.0 24.8 25.0 24.0 21.3 22.3 24.2 22.7 25.2 25.1 24.4<br />

SMSC(SM) 12.6 13.7 13.9 15.6 14.9 13.0 14.8 15.1 16.3 15.8 16.3 15.2 14.6<br />

SMSC(SMSR) 11.2 14.3 13.4 13.3 12.6 13.2 16.0 15.7 14.7 14.2 13.0 14.3 15.6<br />

SMF(SM) 23.7 22.9 23.0 23.3 25.2 24.3 26.0 26.8 28.2 29.9 28.4 29.1 32.5<br />

SMF(SMSR) 19.6 22.0 19.1 21.9 20.6 20.1 21.8 22.9 26.4 28.6 26.1 26.0 28.8<br />

Tabla 4.9: Velocidad de Procesami<strong>en</strong>to de los multiplicadores <strong>en</strong> Spartan<br />

[Mops/s].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 10.0 7.7 6.2 5.1 4.4 3.7 3.2 2.9 2.5 2.2 2.0 1.9 1.6<br />

SMSR 11.4 8.5 6.9 5.6 4.7 4.0 3.5 3.0 2.6 2.4 2.1 1.9 1.7<br />

SMB4(3X) 11.9 9.7 8.0 6.7 5.8 5.2 4.5 4.0 3.6 3.2 3.0 2.7 2.5<br />

SMB4(-x) 10.5 8.6 7.3 6.0 5.2 4.6 4.2 3.7 3.3 3.1 2.7 2.5 2.3<br />

SMSC(SM) 12.7 10.1 8.4 7.0 6.1 5.4 4.7 4.2 3.7 3.3 3.0 2.8 2.6<br />

SMSC(SMSR) 16.1 12.1 9.8 8.2 7.0 6.0 5.1 4.5 4.0 3.6 3.3 3.0 2.7<br />

SMF(SM) 14.6 11.9 9.9 8.4 7.1 6.2 5.4 4.8 4.2 3.7 3.4 3.1 2.7<br />

SMF(SMSR) 18.1 14.0 11.7 9.5 8.2 7.1 6.1 5.3 4.6 4.0 3.7 3.4 3.0<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex<br />

La Tabla 4.10 pres<strong>en</strong>ta máxima velocidad de procesami<strong>en</strong>to que se puede obte-<br />

ner con los multiplicadores, <strong>en</strong> términos de Millones de operaciones por segundo,<br />

para la FPGA XCV300e-8.<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex II<br />

La Tabla 4.11 pres<strong>en</strong>ta máxima velocidad de procesami<strong>en</strong>to que se puede obte-<br />

ner con los multiplicadores, <strong>en</strong> términos de Millones de operaciones por segundo,<br />

para la FPGA XC2V250e-8.


Capítulo 4. Resultados Experim<strong>en</strong>tales 101<br />

Tabla 4.10: Velocidad de Procesami<strong>en</strong>to de los multiplicadores <strong>en</strong> Virtex [Mops/s].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 23.9 19.3 16.5 14.1 12.2 10.7 9.6 8.6 7.6 6.8 6.3 5.6 5.2<br />

SMSR 27.5 21.4 17.4 14.4 12.5 11.1 9.5 8.4 7.6 7.0 6.4 5.3 5.4<br />

SMB4(3X) 28.0 23.5 19.8 17.2 15.1 13.5 11.8 10.7 9.4 8.4 7.6 7.3 6.7<br />

SMB4(-x) 22.9 18.9 16.7 14.7 12.5 11.2 9.8 9.1 8.2 7.3 6.5 6.1 5.9<br />

SMSC(SM) 31.0 25.3 21.8 18.3 15.9 14.2 12.8 11.7 10.5 9.7 8.8 8.2 7.6<br />

SMSC(SMSR) 38.2 29.8 24.8 21.2 17.9 15.5 13.8 12.4 11.3 10.4 9.5 8.7 8.1<br />

SMF(SM) 35.5 29.5 25.3 21.5 19.9 17.9 16.3 14.4 13.1 12.1 11.1 10.2 9.4<br />

SMF(SMSR) 42.1 35.3 29.5 24.1 21.3 18.6 16.3 14.7 13.2 12.1 11.5 10.6 9.6<br />

Tabla 4.11: Velocidad de Procesami<strong>en</strong>to de los multiplicadores <strong>en</strong> Virtex II<br />

[Mops/s].<br />

n 8 10 12 14 16 18 20 22 24 26 28 30 32<br />

SM 30.9 25.2 20.4 17.1 14.7 12.5 11.2 9.9 8.9 8.2 7.3 6.8 6.1<br />

SMSR 36.1 27.5 22.0 18.5 15.7 13.7 11.7 10.6 9.4 8.4 7.4 7.0 6.5<br />

SMB4(3X) 34.8 28.5 23.6 20.9 18.4 16.3 14.5 13.1 11.7 10.7 9.6 8.9 8.6<br />

SMB4(-x) 32.1 27.5 23.2 20.4 17.9 16.1 14.2 12.9 11.7 10.7 10.1 9.4 8.5<br />

SMSC(SM) 35.7 28.9 24.5 20.6 18.0 16.0 14.2 13.0 11.9 10.8 9.9 9.1 8.5<br />

SMSC(SMSR) 45.5 34.9 28.5 24.0 20.4 17.9 16.2 14.2 12.7 11.5 10.4 10.0 9.1<br />

SMF(SM) 44.3 36.9 31.7 27.3 23.8 21.0 18.6 16.8 15.6 13.9 13.0 12.0 10.9<br />

SMF(SMSR) 53.8 44.9 37.2 30.9 27.8 24.3 21.6 19.2 16.6 15.2 13.9 12.8 11.6<br />

4.3.3. Comparación de los multiplicadores<br />

En esta sección se realiza la comparación de los multiplicadores <strong>en</strong>sayados a<br />

partir de los resultados obt<strong>en</strong>idos de las implem<strong>en</strong>taciones.<br />

Multiplicadores optimizados <strong>en</strong> consumo de recursos<br />

La Fig. 4.4 muestra el consumo de recursos lógicos de los multiplicadores<br />

secu<strong>en</strong>ciales SM y SMSR implem<strong>en</strong>tados <strong>en</strong> la serie Spartan. Se puede observar<br />

que el SM posee un consumo de recursos aproximadam<strong>en</strong>te 20 % inferior al del<br />

SMSR. Esto se debe fundam<strong>en</strong>talm<strong>en</strong>te al algoritmo de síntesis e implem<strong>en</strong>tación<br />

de Xilinx que agrupa dos secciones del SM <strong>en</strong> un solo CLB.


Capítulo 4. Resultados Experim<strong>en</strong>tales 102<br />

CLB<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

SM<br />

SMSR<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.4: Consumo de recursos lógicos: SM vs SMSR <strong>en</strong> Spartan.<br />

En la Fig. 4.5 se muestra la misma comparación <strong>en</strong> la serie Virtex. En la<br />

misma se puede observar que la relación de consumo <strong>en</strong>tre los multiplicadores<br />

posee las mismas características que las estimadas <strong>en</strong> la Sección 3.4. La Fig 4.6<br />

muestra la comparación de los multiplicadores implem<strong>en</strong>tados <strong>en</strong> Virtex II.<br />

En cuanto a la velocidad de procesami<strong>en</strong>to de ambos multiplicadores <strong>en</strong> Spar-<br />

tan, la difer<strong>en</strong>cia <strong>en</strong>tre estas, se puede observar <strong>en</strong> la Fig. 4.7. Esta difer<strong>en</strong>cia<br />

dep<strong>en</strong>de del número de iteraciones de cada multiplicador, debido a que el retardo<br />

de la ruta crítica para ambos multiplicadores es prácticam<strong>en</strong>te el mismo.<br />

Las Figs. 4.8 y 4.9 muestran la misma comparación realizada para las se-<br />

ries Virtex y Virtex II. Se puede observar que la relación exist<strong>en</strong>te <strong>en</strong>tre ambos<br />

multiplicadores se manti<strong>en</strong>e para todas las implem<strong>en</strong>taciones.


Capítulo 4. Resultados Experim<strong>en</strong>tales 103<br />

CLB<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

SM<br />

SMSR<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.5: Consumo de recursos lógicos: SM vs SMSR <strong>en</strong> Virtex.<br />

CLB<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

SM<br />

SMSR<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.6: Consumo de recursos lógicos: SM vs SMSR <strong>en</strong> Virtex II.


Capítulo 4. Resultados Experim<strong>en</strong>tales 104<br />

PS [Mops]<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

SM<br />

SMSR<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.7: Velocidad de procesami<strong>en</strong>to: SM vs SMSR <strong>en</strong> Spartan.<br />

PS [Mops]<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SM<br />

SMSR<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.8: Velocidad de procesami<strong>en</strong>to: SM vs SMSR <strong>en</strong> Virtex.


Capítulo 4. Resultados Experim<strong>en</strong>tales 105<br />

PS [Mops]<br />

40<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SM<br />

SMSR<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.9: Velocidad de procesami<strong>en</strong>to: SM vs SMSR <strong>en</strong> Virtex II.<br />

Multiplicadores optimizados <strong>en</strong> velocidad<br />

En la Fig. 4.10 se grafica el consumo de recursos lógicos de las variantes<br />

propuestas, optimizadas <strong>en</strong> velocidad, <strong>en</strong> contraste con los multiplicadores de<br />

base 4.<br />

Al respecto se puede observar que el multiplicador del tipo SMSC(SM) es<br />

el que consume la m<strong>en</strong>or cantidad de recursos, seguido del SMbase4(-X). El<br />

SMSC(SMSR) pres<strong>en</strong>ta un consumo de recursos lógicos alrededor de un 20 %<br />

superior a la variante SM. Una relación similar manti<strong>en</strong><strong>en</strong> ambas variantes del<br />

multiplicador SMF. Al respecto se puede observar que la variante SMSR posee<br />

un consumo de recursos de casi un 142 % del SMSC(SM), y la variante SM un<br />

129 %.<br />

Las Figs. 4.11 y 4.12 muestran la comparación realizada para las series Virtex<br />

y Virtex II de Xilinx respectivam<strong>en</strong>te. Se puede observar que las variantes de<br />

los multiplicadores basadas <strong>en</strong> los SM pose<strong>en</strong> un consumo de recursos similar al<br />

pres<strong>en</strong>tado <strong>en</strong> la Sección 3.4.


Capítulo 4. Resultados Experim<strong>en</strong>tales 106<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 4.10: Consumo de recursos lógicos de multiplicadores optimizados <strong>en</strong> velocidad<br />

<strong>en</strong> Spartan.<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.11: Consumo de recursos lógicos de multiplicadores optimizados <strong>en</strong> velocidad<br />

<strong>en</strong> Virtex.


Capítulo 4. Resultados Experim<strong>en</strong>tales 107<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.12: Consumo de recursos lógicos de multiplicadores optimizados <strong>en</strong> velocidad<br />

<strong>en</strong> Virtex II.<br />

En la Fig. 4.13 se grafica una comparación de las velocidades de procesami<strong>en</strong>-<br />

to de los multiplicadores. Se puede observar que el multiplicador SMF(SMSR)<br />

es el que obti<strong>en</strong>e la mayor velocidad de procesami<strong>en</strong>to para todos los valores<br />

de n. Adicionalm<strong>en</strong>te, se puede observar que la variante SMF(SM), salvo para<br />

el caso de n = 8, obti<strong>en</strong>e una bu<strong>en</strong>a velocidad de procesami<strong>en</strong>to pero inferior<br />

al SMF(SMSR) debido a que requiere una iteración adicional. El multiplicador<br />

SMSC(SMSR) obti<strong>en</strong>e una bu<strong>en</strong>a velocidad de procesami<strong>en</strong>to que es comparativa<br />

a la velocidad obt<strong>en</strong>ida por el multiplicador SMF(SM). Se observa también que<br />

la velocidad de la variante SMSC(SM) es superior a la velocidad obt<strong>en</strong>ida por el<br />

SMbase4(3X).


Capítulo 4. Resultados Experim<strong>en</strong>tales 108<br />

PS [Mops]<br />

22<br />

20<br />

18<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.13: Velocidad de procesami<strong>en</strong>to de los multiplicadores optimizados <strong>en</strong><br />

velocidad <strong>en</strong> Spartan.<br />

PS [Mops]<br />

45<br />

40<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.14: Velocidad de procesami<strong>en</strong>to de multiplicadores optimizados <strong>en</strong> velocidad<br />

<strong>en</strong> Virtex.


Capítulo 4. Resultados Experim<strong>en</strong>tales 109<br />

PS [Mops]<br />

55<br />

50<br />

45<br />

40<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 4.15: Velocidad de procesami<strong>en</strong>to de multiplicadores optimizados <strong>en</strong> velocidad<br />

<strong>en</strong> Virtex II.<br />

Performance de los multiplicadores<br />

A fin de estimar los b<strong>en</strong>eficios que se obti<strong>en</strong><strong>en</strong> con cada variante se utiliza el<br />

índice de performance propuesto <strong>en</strong> la Ec. (3.40).<br />

Implem<strong>en</strong>tación <strong>en</strong> Spartan: En la Fig. 4.16 se grafica el índice de perfor-<br />

mance para las distintas variantes, luego de su implem<strong>en</strong>tación <strong>en</strong> una FPGA de<br />

400 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que los mejores<br />

resultados correspond<strong>en</strong> a los multiplicadores SM y SMSC(SMSR).<br />

En la Fig. 4.17 se grafica el índice de performance para un rango de 20 ≤ n ≤<br />

32 bits. En esta figura se observa que el SM posee el mejor índice. Adicionalm<strong>en</strong>te<br />

índice del SMSC(SM) resulta mejor que el del SMSC(SMSR) debido a que con-<br />

sume m<strong>en</strong>or cantidad de recursos y a medida que aum<strong>en</strong>ta la longitud de palabra<br />

de los operandos, la velocidad de procesami<strong>en</strong>to de ambos multiplicadores se hace<br />

más parecida.


Capítulo 4. Resultados Experim<strong>en</strong>tales 110<br />

Performance<br />

250<br />

200<br />

150<br />

100<br />

50<br />

SM<br />

SMSR<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

5 10 15 20<br />

n<br />

Figura 4.16: Índice de performance de los multiplicadores <strong>en</strong> Spartan, 8 ≤ n ≤ 20.<br />

Performance<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SM<br />

SMSR<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

20 22 24 26<br />

n<br />

28 30 32<br />

Figura 4.17: Índice de performance de los multiplicadores <strong>en</strong> Spartan, 20 ≤ n ≤<br />

32.


Capítulo 4. Resultados Experim<strong>en</strong>tales 111<br />

Implem<strong>en</strong>tación <strong>en</strong> Virtex: En la Fig. 4.16 se grafica el índice de perfor-<br />

mance para las distintas variantes, luego de su implem<strong>en</strong>tación <strong>en</strong> una FPGA<br />

Virtex de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que el<br />

mejor resultado corresponde al SMSC(SMSR) y, <strong>en</strong> m<strong>en</strong>or medida el SMSR Y el<br />

SMF(SMSR).<br />

Performance<br />

2000<br />

1500<br />

1000<br />

500<br />

SM<br />

SMSR<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

Figura 4.18: Índice de performance de los multiplicadores <strong>en</strong> Virtex, 8 ≤ n ≤ 20.<br />

En la Fig. 4.17 se grafica el índice de performance para un rango de 20 ≤<br />

n ≤ 32 bits, donde se observa que el índice de los multiplicadores resulta más<br />

comparable para las variantes SMSC(SMSR), SMF(SMSR), SMSR y SM. Esto<br />

es debido a que a medida que aum<strong>en</strong>ta la longitud de palabra de los operandos,<br />

el retardo de interconexión de los multiplicadores más complejos aum<strong>en</strong>ta más<br />

notoriam<strong>en</strong>te <strong>en</strong> relación con el SM y el SMSR.


Capítulo 4. Resultados Experim<strong>en</strong>tales 112<br />

Performance<br />

400<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

SM<br />

SMSR<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

20 22 24 26<br />

n<br />

28 30 32<br />

Figura 4.19: Índice de performance de los multiplicadores <strong>en</strong> Virtex, 20 ≤ n ≤ 32.<br />

Implem<strong>en</strong>tación <strong>en</strong> Virtex II: En la Fig. 4.16 se grafica el índice de per-<br />

formance para las distintas variantes, luego de su implem<strong>en</strong>tación <strong>en</strong> una FPGA<br />

Virtex II de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que<br />

el mejor resultado corresponde al SMF(SMSR) y, <strong>en</strong> m<strong>en</strong>or medida el SMSR Y<br />

EL SMF(SMSR)(salvo para el caso de n = 8, <strong>en</strong> el cual ambos pose<strong>en</strong> un mayor<br />

índice).<br />

En la Fig. 4.17 se grafica el índice de performance para un rango de 20 ≤<br />

n ≤ 32 bits, donde se observa que el índice de los multiplicadores resulta más<br />

comparable pero mant<strong>en</strong>i<strong>en</strong>do la misma relación que para valores de n < 20.


Capítulo 4. Resultados Experim<strong>en</strong>tales 113<br />

Performance<br />

2500<br />

2000<br />

1500<br />

1000<br />

500<br />

SM<br />

SMSR<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

Figura 4.20: Índice de performance de los multiplicadores <strong>en</strong> Virtex II, 8 ≤ n ≤<br />

20.<br />

Performance<br />

500<br />

450<br />

400<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

SM<br />

SMSR<br />

SMB4 (3X)<br />

SMB4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

20 22 24 26<br />

n<br />

28 30 32<br />

Figura 4.21: Índice de performance de los multiplicadores <strong>en</strong> Virtex II, 20 ≤ n ≤<br />

32.


Capítulo 4. Resultados Experim<strong>en</strong>tales 114<br />

4.4. <strong>Multiplicación</strong> <strong>en</strong> Punto Flotante<br />

Los multiplicadores <strong>en</strong> punto flotante propuestos fueron <strong>en</strong>sayados experim<strong>en</strong>-<br />

talm<strong>en</strong>te a fin de verificar los resultados obt<strong>en</strong>idos teóricam<strong>en</strong>te y de las estima-<br />

ciones. Con este objeto, los multiplicadores se implem<strong>en</strong>taron para tres series de<br />

FPGA de Xilinx, Spartan, Virtex y Virtex II. Ambas variantes del multiplicador<br />

se implem<strong>en</strong>taron <strong>en</strong> L<strong>en</strong>guaje de Descripción de Hardware (VHDL) [28] [29] para<br />

una longitud de expon<strong>en</strong>te r = 8 y variando la longitud de palabra de la mantisa.<br />

4.4.1. Consumo de recursos lógicos<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Spartan<br />

El consumo de recursos lógicos de los multiplicadores <strong>en</strong> punto flotante <strong>en</strong><br />

Spartan se muestran <strong>en</strong> la Tabla 4.12.<br />

Tabla 4.12: Consumo de recursos lógicos de los multiplicadores <strong>en</strong> punto flotante<br />

<strong>en</strong> Spartan [CLBs].<br />

n 9 11 13 15 17 19 21 23 25 27<br />

SMSR 32 35 37 40 44 46 49 51 54 57<br />

SMSR +∞ 35 37 40 42 46 49 51 53 57 60<br />

SMSC 45 50 56 61 70 75 80 85 92 97<br />

SMSC +∞ 51 56 64 71 80 86 93 100 108 113<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex<br />

En la Tabla 4.13 se pres<strong>en</strong>ta el consumo de recursos lógicos de los multiplica-<br />

dores, <strong>en</strong> términos de slices 2 , para una FPGA XCV300e-8 de la serie Virtex de<br />

Xilinx.<br />

2 El cont<strong>en</strong>ido de un slice es similar al de un CLB de una Serie Spartan de Xilinx.


Capítulo 4. Resultados Experim<strong>en</strong>tales 115<br />

Tabla 4.13: Consumo de recursos lógicos de las variantes <strong>en</strong> Virtex [slices].<br />

n 9 11 13 15 17 19 21 23 25 27<br />

SMSR 30 33 35 39 43 46 48 52 55 57<br />

SMSR +∞ 32 35 38 42 46 48 51 54 57 58<br />

SMSC 46 51 57 63 71 77 83 89 93 97<br />

SMSC +∞ 51 56 64 71 80 86 93 100 108 113<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex II<br />

En la Tabla 4.14 se pres<strong>en</strong>ta el consumo de recursos lógicos de los multiplica-<br />

dores para una FPGA XC2V250-5 de la serie Virtex de Xilinx.<br />

Tabla 4.14: Consumo de recursos lógicos de las variantes <strong>en</strong> Virtex II [slices].<br />

n 9 11 13 15 17 19 21 23 25 27<br />

SMSR 32 35 37 41 45 47 50 53 55 58<br />

SMSR +∞ 35 38 40 44 48 50 53 57 59 61<br />

SMSC 46 51 57 63 71 77 83 89 93 97<br />

SMSC +∞ 53 60 68 73 82 90 96 102 110 116<br />

4.4.2. Comportami<strong>en</strong>to temporal<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Spartan<br />

En la Tabla 4.15 se pres<strong>en</strong>ta máxima velocidad de procesami<strong>en</strong>to que se pue-<br />

de obt<strong>en</strong>er con los multiplicadores, <strong>en</strong> términos de Millones de operaciones por<br />

segundo, para una FPGA de la serie Spartan de Xilinx.<br />

Tabla 4.15: Comportami<strong>en</strong>to temporal de las variantes <strong>en</strong> Spartan [Mflop/s].<br />

n 9 11 13 15 17 19 21 23 25 27<br />

SMSR 7.6 6.1 5.1 4.3 3.7 3.2 2.8 2.5 2.2 2.0<br />

SMSR +∞ 6.2 5.0 4.2 3.5 3.1 2.5 2.2 2.0 1.8 1.6<br />

SMSC 10.3 8.3 7.1 6.0 5.3 4.7 4.2 3.8 3.4 3.1<br />

SMSC +∞ 10.2 8.4 7.1 6.1 5.3 4.8 4.2 3.7 3.4 3.1


Capítulo 4. Resultados Experim<strong>en</strong>tales 116<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex<br />

En la Tabla 4.16 se pres<strong>en</strong>ta máxima velocidad de procesami<strong>en</strong>to que se pue-<br />

de obt<strong>en</strong>er con los multiplicadores, <strong>en</strong> términos de Millones de operaciones por<br />

segundo, para una FPGA XCV300e-8 de la serie Virtex de Xilinx.<br />

Tabla 4.16: Comportami<strong>en</strong>to temporal de las variantes <strong>en</strong> Virtex [Mflop/s].<br />

n 9 11 13 15 17 19 21 23 25 27<br />

SMSR 20.3 15.8 13.4 11.8 10.2 9.0 7.8 7.2 6.2 5.7<br />

SMSR +∞ 16.2 13.6 11.5 9.7 8.4 7.4 6.6 6.0 5.2 4.8<br />

SMSC 27.0 22.6 19.0 16.2 14.4 12.9 11.7 10.5 9.5 8.8<br />

SMSC +∞ 26.9 21.5 17.7 15.9 13.8 12.3 11.3 10.3 9.2 8.4<br />

Implem<strong>en</strong>tación de los multiplicadores <strong>en</strong> Virtex II<br />

En la Tabla 4.17 se pres<strong>en</strong>ta máxima velocidad de procesami<strong>en</strong>to que se pue-<br />

de obt<strong>en</strong>er con los multiplicadores, <strong>en</strong> términos de Millones de operaciones por<br />

segundo, para una FPGA XC2V250e-8 de la serie Virtex II de Xilinx.<br />

Tabla 4.17: Comportami<strong>en</strong>to temporal de las variantes <strong>en</strong> Virtex II [Mflop/s].<br />

n 9 11 13 15 17 19 21 23 25 27<br />

SMSR 25.6 20.3 17.2 15.2 13.3 11.4 10.0 9.1 8.3 7.2<br />

SMSR +∞ 20.9 17.1 14.0 11.7 11.1 9.4 8.5 7.5 6.9 6.2<br />

SMSC 29.3 24.8 21.0 18.4 16.2 14.4 13.3 12.1 10.9 10.0<br />

SMSC +∞ 29.4 24.5 21.0 18.3 16.1 14.5 13.3 11.9 10.7 10.0<br />

4.4.3. Performance<br />

A fin de poder estimar los b<strong>en</strong>eficios que se obti<strong>en</strong><strong>en</strong> con cada variante a través<br />

de un único indicador, se utiliza del índice de performance de la Ec. (3.40).<br />

En la Fig. 4.22 se muestra el índice de performance para las variantes SMSR<br />

y SMSC con redondeo a cero. Se puede observar que la variante SMSR pres<strong>en</strong>ta


Capítulo 4. Resultados Experim<strong>en</strong>tales 117<br />

un índice de hasta un 15 % superior a la variante SMSC. Esto se debe fundam<strong>en</strong>-<br />

talm<strong>en</strong>te a que el retardo de propagación de la variante SMSR con redondeo a<br />

cero es inferior al de la variante SMSC.<br />

p<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SMSC<br />

SMSR<br />

0<br />

15 20 25 30 35 40<br />

n<br />

Figura 4.22: Índice de performance de los multiplicadores con redondeo a cero <strong>en</strong><br />

Spartan.<br />

En la Fig. 4.23 se muestra el índice de performance para las variantes SMSR<br />

y SMSC con redondeo a +∞. Se puede observar que el índice prácticam<strong>en</strong>te es<br />

el mismo. Esto quiere decir que la variante SMSR es la óptima para diseños con<br />

fuertes restricciones <strong>en</strong> cuanto a consumo de recursos lógicos y la variante SMSC<br />

para restricciones <strong>en</strong> velocidad de procesami<strong>en</strong>to.<br />

Las Figs. 4.24 y 4.25 se muestra el índice de los multiplicadores para Virtex y<br />

Virtex II respectivam<strong>en</strong>te. Se puede observar que, si bi<strong>en</strong> el índice de la variante<br />

SMSR para Virtex es prácticam<strong>en</strong>te igual al de la variante SMSC, <strong>en</strong> Virtex II<br />

el SMSR logra un porc<strong>en</strong>taje mayor de desempeño. Esto es, debido a que <strong>en</strong> ésta<br />

última serie de FPGA se obtuvo una mejor velocidad de procesami<strong>en</strong>to por parte<br />

de la variante SMSR.


Capítulo 4. Resultados Experim<strong>en</strong>tales 118<br />

p<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SMSC<br />

SMSR<br />

0<br />

15 20 25 30 35 40<br />

n<br />

Figura 4.23: Índice de performance de los multiplicadores con redondeo a +∞ <strong>en</strong><br />

Spartan.<br />

Performance index<br />

1000<br />

900<br />

800<br />

700<br />

600<br />

500<br />

400<br />

300<br />

200<br />

100<br />

Experim<strong>en</strong>tal results SMSC<br />

Experim<strong>en</strong>tal results SM<br />

0<br />

5 10 15 20 25 30<br />

n<br />

Figura 4.24: Índice de performance de los multiplicadores con redondeo a +∞ <strong>en</strong><br />

Virtex.


Capítulo 4. Resultados Experim<strong>en</strong>tales 119<br />

Performance index<br />

1200<br />

1000<br />

800<br />

600<br />

400<br />

200<br />

Experim<strong>en</strong>tal results SMSC<br />

Experim<strong>en</strong>tal results SM<br />

0<br />

5 10 15 20 25 30<br />

n<br />

Figura 4.25: Índice de performance de los multiplicadores con redondeo a +∞ <strong>en</strong><br />

Virtex II.<br />

4.5. Conclusiones<br />

Se pres<strong>en</strong>taron los resultados de implem<strong>en</strong>tación de los multiplicadores secu<strong>en</strong>-<br />

ciales. Estos resultados permit<strong>en</strong> validar las ecuaciones y conceptos pres<strong>en</strong>tados<br />

<strong>en</strong> capítulos previos, habilitando estas ecuaciones como una herrami<strong>en</strong>ta útil para<br />

la evaluación de multiplicadores <strong>en</strong> FPGA.<br />

A partir de los resultados de las comparaciones <strong>en</strong>tre los multiplicadores <strong>en</strong>-<br />

sayados, se concluye que el SM sólo posee el mayor índice de performance cuando<br />

se lo implem<strong>en</strong>ta <strong>en</strong> la serie Spartan debido a que consume una cantidad inferior<br />

de recursos relativo a la implem<strong>en</strong>tación de los otras series. En estas últimas,<br />

la performance del SMSR resulta superior a la del SM según lo estimado <strong>en</strong> el<br />

capítulo anterior. Estos resultados se exti<strong>en</strong>d<strong>en</strong> a las variantes de los multiplica-<br />

dores basadas <strong>en</strong> uno u otro esquema.<br />

La variante SMSC repres<strong>en</strong>ta <strong>en</strong> g<strong>en</strong>eral un bu<strong>en</strong>a elección cuando se requiere,<br />

además de bajo consumo de recursos, una mejor velocidad de procesami<strong>en</strong>to. A


Capítulo 4. Resultados Experim<strong>en</strong>tales 120<br />

pesar de que esta velocidad resulta inferior que la de la variante SMF, pres<strong>en</strong>ta<br />

una notable reducción <strong>en</strong> consumo de recursos a su favor. Además se observa que<br />

los resultados obt<strong>en</strong>idos con ambos multiplicadores respecto a los de base 4, la<br />

mejora es sustancial.<br />

Finalm<strong>en</strong>te, la ext<strong>en</strong>sión de los multiplicadores a punto flotante demostró que<br />

se pudo obt<strong>en</strong>er un multiplicador de bajo consumo de recursos lógicos y bu<strong>en</strong><br />

desempeño <strong>en</strong> velocidad.


Capítulo 5<br />

Conclusiones<br />

Las conclusiones de esta Tesis son las sigui<strong>en</strong>tes:<br />

1. Se relevaron las arquitecturas de multiplicadores exist<strong>en</strong>tes <strong>en</strong> la literatura,<br />

corroborándose el excesivo consumo de recursos lógicos de los mismos.<br />

2. Se propuso la utilización de la <strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong> para reducir el<br />

consumo de recursos. Se modelaron los multiplicadores secu<strong>en</strong>ciales y se<br />

concluyó que se debía mejorar su desempeño <strong>en</strong> velocidad.<br />

3. Se propusieron nuevas arquitecturas de multiplicadores secu<strong>en</strong>ciales con el<br />

objetivo de mejorar su desempeño <strong>en</strong> velocidad. Se modelaron las variantes<br />

y se las comparó con los multiplicadores exist<strong>en</strong>tes.<br />

4. Se validaron experim<strong>en</strong>talm<strong>en</strong>te los modelos de los multiplicadores a través<br />

de la implem<strong>en</strong>tación de los mismos <strong>en</strong> varias familias de FPGAs. Se obtu-<br />

vieron mejoras importantes del desempeño de los mismos.<br />

5. Se aplicaron las nuevas arquitecturas de Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es a la<br />

multiplicación <strong>en</strong> punto flotante. Se obtuvieron multiplicadores de punto<br />

flotante de reducido consumo lógico y bu<strong>en</strong>as prestaciones de velocidad.<br />

121


Capítulo 5. Conclusiones 122<br />

6. Se aplicó la multiplicación secu<strong>en</strong>cial a un problema concreto de control de<br />

movimi<strong>en</strong>to. El sistema desarrollado mostró notables mejoras con respecto<br />

al diseño conv<strong>en</strong>cional basado <strong>en</strong> DSPs.<br />

Estas conclusiones se desarrollan con más detalle a continuación.<br />

Arquitecturas exist<strong>en</strong>tes<br />

Se analizaron y modelaron los multiplicadores paralelos Ripple Carry, Carry<br />

Save y las variantes propuestas por Guild y McCanny-McWhinter. Adicionalm<strong>en</strong>-<br />

te, se realizaron implem<strong>en</strong>taciones <strong>en</strong> FPGA del multiplicador Ripple Carry y de<br />

otro propuesto por Xilinx optimizado <strong>en</strong> consumo de recursos. Los resultados de<br />

esta implem<strong>en</strong>tación obt<strong>en</strong>idos se resum<strong>en</strong> <strong>en</strong> la Tabla 5.1.<br />

Tabla 5.1: Implem<strong>en</strong>tación de Multiplicadores Paralelos <strong>en</strong> FPGA.<br />

Spartan Virtex Virtex II<br />

Bits Tipo CLB Mops Slices Mops Slices Mops<br />

8 MP 61 20.8 64 41.9 64 45.5<br />

8 MX 52 17.5 36 76.3 36 62.6<br />

16 MP 247 10.8 257 22.0 258 24.7<br />

16 MX 213 11.2 140 59.0 141 47.2<br />

32 MX 816 3.1 544 40.5 548 38.5<br />

MP: Multiplicador Paralelo<br />

MX: Multiplicador propuesto por Xilinx<br />

Se concluyó que, si bi<strong>en</strong> los multiplicadores paralelos pued<strong>en</strong> ejecutar produc-<br />

tos rápidam<strong>en</strong>te, pres<strong>en</strong>tan un elevado consumo de recursos que además aum<strong>en</strong>ta<br />

cuadráticam<strong>en</strong>te con la longitud de palabra de los operandos. Por ejemplo se pu-<br />

do comprobar que, para 32 bits, no exist<strong>en</strong> modelos de la serie Spartan, capaces<br />

de soportar la cantidad de recursos necesarios. Por lo tanto, la aplicación de estas<br />

arquitecturas se limita a FPGAs de gran tamaño.


Capítulo 5. Conclusiones 123<br />

<strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong><br />

Se investigó el esquema de la <strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong>, que consume una<br />

cantidad inferior de recursos. En particular se modelaron y implem<strong>en</strong>taron expe-<br />

rim<strong>en</strong>talm<strong>en</strong>te tres tipos: SM, SMB4(3X) y SMB4(-X). La Tabla 5.2 resume el<br />

consumo de recursos y la velocidad de procesami<strong>en</strong>to de estas arquitecturas.<br />

Tabla 5.2: Resultados experim<strong>en</strong>tales de Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es<br />

Spartan Virtex Virtex II<br />

Bits Tipo CLB Mops CLB Mops CLB Mops<br />

8 SM 19 10.0 19 23.9 19 30.9<br />

8 SMB4(3X) 24 11.9 24 28.0 24 34.8<br />

8 SMB4(-X) 28 10.5 28 22.9 28 32.1<br />

16 SM 35 4.4 35 12.2 35 14.7<br />

16 SMB4(3X) 45 5.8 45 15.1 45 18.4<br />

16 SMB4(-X) 51 5.2 51 12.5 51 17.9<br />

32 SM 65 1.6 65 5.2 65 6.1<br />

32 SMB4(3X) 86 2.5 86 6.7 86 8.6<br />

32 SMB4(-X) 98 2.3 98 5.9 98 8.5<br />

Se concluyó que, si bi<strong>en</strong> el consumo de recursos lógicos es sustancialm<strong>en</strong>te me-<br />

nor, la velocidad de procesami<strong>en</strong>to de estas arquitecturas se <strong>en</strong>cu<strong>en</strong>tra por debajo<br />

del 50 % de la velocidad de los MPs <strong>en</strong>sayados. Por lo tanto, se concluyó que es<br />

necesario mejorar el desempeño <strong>en</strong> velocidad de los multiplicadores secu<strong>en</strong>ciales.<br />

Arquitecturas propuestas de Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es<br />

Se realizaron propuestas para la optimización <strong>en</strong> velocidad de la Multiplica-<br />

ción <strong>Secu<strong>en</strong>cial</strong>. Para cada uno de los multiplicadores se describió su estrategia<br />

y se lo modeló para poder comparar su desempeño. A partir del modelo de ca-<br />

da multiplicador, se expresó cada uno <strong>en</strong> L<strong>en</strong>guaje de Descripción de Hardware<br />

(HDL) [28] [29] y se realizó la correspondi<strong>en</strong>te implem<strong>en</strong>tación experim<strong>en</strong>tal. La<br />

Tabla 5.3 resume el consumo de recursos y la velocidad de procesami<strong>en</strong>to obt<strong>en</strong>ida<br />

para estos multiplicadores.


Capítulo 5. Conclusiones 124<br />

Tabla 5.3: Resultados experim<strong>en</strong>tales de los Multiplicadores <strong>Secu<strong>en</strong>cial</strong>es propuestos.<br />

Spartan Virtex Virtex II<br />

Bits Tipo CLB Mops CLB Mops CLB Mops<br />

8 SMSR 19 11.4 19 27.5 21 36.1<br />

8 SMSC(SM) 24 12.7 30 31.0 30 35.7<br />

8 SMSC(SMSR) 28 16.1 28 38.2 28 45.5<br />

8 SMF(SM) 32 14.6 37 35.5 36 44.3<br />

8 SMF(SMSR) 35 18.1 35 42.1 35 53.8<br />

16 SMSR 35 4.7 34 12.5 38 15.7<br />

16 SMSC(SM) 45 6.1 55 15.9 55 18.0<br />

16 SMSC(SMSR) 51 7.0 50 17.9 51 20.4<br />

16 SMF(SM) 59 7.1 67 19.9 67 23.8<br />

16 SMF(SMSR) 64 8.2 64 21.3 62 27.8<br />

32 SMSR 65 1.7 64 5.4 71 6.5<br />

32 SMSC(SM) 86 2.6 104 7.6 104 8.5<br />

32 SMSC(SMSR) 98 2.7 96 8.1 96 9.1<br />

32 SMF(SM) 111 2.7 127 9.4 128 10.9<br />

32 SMF(SMSR) 122 3.0 122 9.6 122 11.6<br />

Se concluye que, con las variantes propuestas, se pudo increm<strong>en</strong>tar el desem-<br />

peño <strong>en</strong> velocidad sin un sacrificio sustancial de recursos lógicos. En particular,<br />

con la variante SMF(SMSR) se logró un increm<strong>en</strong>to de velocidad estimado <strong>en</strong>tre<br />

un 60 % (8 bits) y un 100 % (32 bits) con respecto al SM. Con esta variante se<br />

estaría alcanzando la velocidad de procesami<strong>en</strong>to del MP para la serie Spartan<br />

con un consumo hasta 8 veces m<strong>en</strong>or.<br />

Nuevas Arquitecturas de <strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong> <strong>en</strong> Punto Flotante<br />

Los resultados obt<strong>en</strong>idos con las multiplicadores propuestos se aplicaron a<br />

la multiplicación <strong>en</strong> punto flotante. Se seleccionaron dos de los multiplicadores<br />

desarrollados y se realizó el respectivo modelo <strong>en</strong> punto flotante. Las ecuaciones<br />

se validaron a través de la implem<strong>en</strong>tación de los mismos <strong>en</strong> las familias de FPGA<br />

antes m<strong>en</strong>cionadas.


Capítulo 5. Conclusiones 125<br />

La Tabla 5.4 muestra el consumo de recursos lógicos de los multiplicadores<br />

SMSR y SMSC aplicados a punto flotante. A su vez, se muestran los <strong>en</strong>sayos<br />

realizados con redondeo a cero y redondeo a +∞ (ver Sección 2.2.2).<br />

Tabla 5.4: Resultados experim<strong>en</strong>tales de Multiplicadores <strong>en</strong> Punto Flotante<br />

Spartan Virtex Virtex II<br />

Bits Tipo CLB Mflops CLB Mflops CLB Mflops<br />

18 SMSR trunc 32 7.6 30 20.3 32 25.6<br />

18 SMSR +∞ 35 6.2 32 16.2 35 20.9<br />

18 SMSC trunc 45 10.3 46 27.0 46 29.3<br />

18 SMSC +∞ 51 10.2 51 26.9 53 29.4<br />

32 SMSR trunc 51 2.5 52 7.2 53 9.1<br />

32 SMSR +∞ 53 2.0 54 6.0 57 7.5<br />

32 SMSC trunc 85 3.8 89 10.5 89 12.1<br />

32 SMSC +∞ 100 3.7 100 10.3 102 11.9<br />

Se concluye que, para multiplicadores de 18 bits, se ha obt<strong>en</strong>ido un desempeño<br />

hasta 8 veces superior a la de la arquitectura propuesta por Shirazi et al [9].<br />

Comparando los resultados con los reportados por Aty et al [25], el desempeño<br />

obt<strong>en</strong>ido es hasta 6 veces mejor para la serie Spartan, y hasta 5 veces para la serie<br />

Virtex II <strong>en</strong> 18 bits. Para el caso de 32 bits, se concluye que los multiplicadores<br />

propuestos obti<strong>en</strong><strong>en</strong> un desempeño al m<strong>en</strong>os 3 veces superior a los reportados por<br />

estos autores 1 .<br />

Por otra parte, por ejemplo el SMSC propuesto <strong>en</strong> esta tesis consume 8 ve-<br />

ces m<strong>en</strong>os que el propuesto por Ja<strong>en</strong>icke and Luk [23], con una velocidad tan<br />

sólo 2,5 veces m<strong>en</strong>or. Es decir, que el desempeño logrado con los multiplicadores<br />

propuestos es al m<strong>en</strong>os 3 veces mayor.<br />

1 Estos autores hac<strong>en</strong> uso del multiplicador embebido de 18 bits de la serie Virtex II


Capítulo 5. Conclusiones 126<br />

<strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong> aplicada al Control de Movimi<strong>en</strong>to<br />

El controlador desarrollado permitió el control de posición de máquinas incre-<br />

m<strong>en</strong>tales a alta velocidad <strong>en</strong> paso completo o <strong>en</strong> modo micropaso 2 . Se utilizó el<br />

multiplicador SMSR para el modo paso y el SMSC para el modo micropaso. Con<br />

el sistema desarrollado, se alcanzaron velocidades hasta 5 veces mayores que las<br />

obt<strong>en</strong>idas mediante DSPs <strong>en</strong> modo paso y hasta 12 veces <strong>en</strong> modo micropaso.<br />

Publicaciones<br />

”Multiplicadores secu<strong>en</strong>ciales <strong>en</strong> FPGA: evaluación y comparación de paráme-<br />

tros”, 8th Arg<strong>en</strong>tine Symposium on Computing Technology (36 JAIIO)<br />

ISBN 1850-2776. Mar del Plata 2007.<br />

”Estudio comparativo de multiplicadores secu<strong>en</strong>ciales implem<strong>en</strong>tados <strong>en</strong><br />

FPGA”, XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y<br />

Control. Mar del Plata 2007.<br />

”Floating Point Multipliers with Reduced FPGA Area”, II Southern Con-<br />

fer<strong>en</strong>ce on Programmable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.<br />

”Performance evaluation of Floating Point Multipliers”, XX Congreso Ar-<br />

g<strong>en</strong>tino de Control Automático. ISBN 978-950-99994-4-2. Mar del Plata<br />

2006.<br />

”Novel FPGA based Floating Point Multiplier: Consecutive-Sums Sequ<strong>en</strong>-<br />

tial Multiplier”, 8th Arg<strong>en</strong>tine Symposium on Computing Technology (36<br />

JAIIO) ISBN 1850-2776. Mar del Plata 2007.<br />

2 El modo micropaso consiste <strong>en</strong> el accionami<strong>en</strong>to del movimi<strong>en</strong>to del motor increm<strong>en</strong>tal <strong>en</strong><br />

fracciones de un paso.


Capítulo 5. Conclusiones 127<br />

”Novel stepper motor controler based on FPGA hardware implem<strong>en</strong>tation<br />

”, IEEE/ASME Transactions on Mechatronics, Nro. 1 Vol 8 ISSN 1083-4435<br />

March 2003, pg 120-124.<br />

”FPGA based stepper motor controller”, II Southern Confer<strong>en</strong>ce on Pro-<br />

grammable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.<br />

5.0.1. Trabajos futuros<br />

La implem<strong>en</strong>tación hardware de algoritmos de control puede resultar de suma<br />

utilidad <strong>en</strong> el campo de la Electrónica de Pot<strong>en</strong>cia. Los convertidores de pot<strong>en</strong>cia<br />

pres<strong>en</strong>tan perman<strong>en</strong>tem<strong>en</strong>te un compromiso <strong>en</strong>tre la velocidad del sistema global<br />

y la complejidad del control. La evolución de los dispositivos digitales de las<br />

últimas décadas permitió el avance <strong>en</strong> el control de estos sistemas, sin embargo<br />

los requerimi<strong>en</strong>tos actuales también son mayores.<br />

En el campo de lógica programable, la capacidad de paralelización de tareas<br />

permitiría aum<strong>en</strong>tar la efici<strong>en</strong>cia del control de los convertidores, ya sea aum<strong>en</strong>-<br />

tando la velocidad de procesami<strong>en</strong>to del sistema utilizando algoritmos de control<br />

y/o modulación más sofisticados que mejoraría la performance del convertidor.<br />

Adicionalm<strong>en</strong>te, el sistema implem<strong>en</strong>tado <strong>en</strong> FPGA permitiría la g<strong>en</strong>eración de<br />

seguridad y protección <strong>en</strong> la conmutación de las llaves de los convertidores <strong>en</strong><br />

forma indep<strong>en</strong>di<strong>en</strong>te de la ejecución del algoritmo.<br />

En el marco de la investigación realizada hasta el mom<strong>en</strong>to, se propone ex-<br />

pandir los conocimi<strong>en</strong>tos adquiridos para el desarrollo e implem<strong>en</strong>tación de los<br />

algoritmos de control destinados a Convertidores de Pot<strong>en</strong>cia. Entre las herra-<br />

mi<strong>en</strong>tas necesarias, se <strong>en</strong>cu<strong>en</strong>tra la necesidad de desarrollar sumadores <strong>en</strong> punto<br />

flotante que posean las mismas características que los multiplicadores propuestos


Capítulo 5. Conclusiones 128<br />

<strong>en</strong> el Capítulo 3. Los sumadores <strong>en</strong> punto flotante consum<strong>en</strong> considerables canti-<br />

dades de recursos lógicos, comparables a la de los multiplicadores. Por otro lado,<br />

los algoritmos de control de los convertidores de pot<strong>en</strong>cia requier<strong>en</strong> usualm<strong>en</strong>te<br />

el cálculo de funciones trigonométricas. Se pret<strong>en</strong>de desarrollar avances <strong>en</strong> este<br />

campo mediante la aplicación de los conocimi<strong>en</strong>tos <strong>en</strong> la ejecución de algoritmos,<br />

<strong>en</strong>tre los que se <strong>en</strong>cu<strong>en</strong>tra el de CORDIC [30] [31].


Bibliografía<br />

[1] E. Boemo, E. Juárez, and J. M<strong>en</strong>eses, “Taxonomía de multiplicadores,” Proc.<br />

VIII DCIS Confer<strong>en</strong>ce. Univ. of Malaga., pp. 185–190, 1993.<br />

[2] D. Teixeira, A. Susim, and L. Carro, “Comparación de multiplicadores <strong>en</strong><br />

fpga,” V Workshop Iberchip, vol. 1, pp. 182–187, Enero 1999.<br />

[3] . Ñibouche, A. Bouridarie, and M.Ñibouche, “New architectures for serialserial<br />

multiplication,” IEEE, pp. 705–708, 2001.<br />

[4] A. Aggoun, A. Ashur, and M. K. Ibrahimi, “Area-time eftici<strong>en</strong>t serial-serial<br />

multipliers,” in IEEE International Symposium on Circuits and Systems,<br />

2000.<br />

[5] A. Aggoun, A. Farwan, M. Ibrahim, and A. Ashur, “Radix-2n serialserial<br />

multipliers,” IEE Proc.-Circuits Devices Syst., vol. 151 No. 6, pp. 503–509,<br />

2004.<br />

[6] A. Bouridane, M. Ñibouche, D. Crookes, and B. Albesher, “A low lat<strong>en</strong>cy bidirectional<br />

serial-parallel multiplier architecture,” IEEE ISCAS 2000, vol. 5,<br />

pp. 593–596, May 2000.<br />

[7] C. Wallace, “A suggestion for a fast multiplier,” IEEE Trans. on Electronic<br />

Comuters, pp. 14–17, 1964.<br />

[8] L. Dadda, “Some schemes for parallel multipliers,” Alta Frequ<strong>en</strong>za, vol. XX-<br />

XIV, N 5, 1965.<br />

[9] N. Shirazi, A. Walters, and P. Athanas, “Quantitative analisis of floating<br />

point arithmetic on FPGA based custom computing machines,” Proceedings.<br />

IEEE Symposium on FPGAs for Custom Computing Machines, pp. 155–162,<br />

1995.<br />

[10] I. W. B. Ligon, S. McMillan, G. Monn, K. Schoonover, F. Stivers, and K. D.<br />

Underwood, “A re-evaluation of the practicality of floating-point operations<br />

on FPGAs,” Proceedings of IEEE Symposium on FPGAs for Custom Computing<br />

Machines, pp. 206–215, 1998.<br />

129


Bibliografía 130<br />

[11] J. L. H<strong>en</strong>nessy and D. Patterson, Computer Architecture: A Quantitative Approach.<br />

San Francisco, California ISBN: 1-55860-329-8: Morgan Kaufmann<br />

Publishers, Inc., 1996.<br />

[12] J. P. Hayes, Introducción al Diseño Lógico Digital. Wilmington, Delaware,<br />

E.U.A: Addison-Wesley Iberoamericana, 1996.<br />

[13] G. E. Ordoez-Fernandez, L. Lpez-Lpez, and J. Velazco-Medina, “Diseo de<br />

multiplicadores paralelos de 16 bits <strong>en</strong> fpgas,” in Proceedings X Taller Iberchip,<br />

2004.<br />

[14] B. Parhami, Computer Arithmetic: Algorithms and Hardware Design. New<br />

York, Oxford: Oxford University Press, 2000.<br />

[15] E. Jamro and K. Wiatr, “Constant coeffici<strong>en</strong>t convolution implem<strong>en</strong>ted in<br />

fpgas,” in Digital System Design, 2002. Proceedings. Euromicro Symposium<br />

on, 4-6 Sept. 2002, pp. 291–298.<br />

[16] J. B. Evans, C.-J. Chou, and S. Mohanakrishnan, “FPGA implem<strong>en</strong>tation<br />

of digital filters,” Proc. ICSPAT’93, pp. 1–9, 1993.<br />

[17] R. J. Landry, V. Calmettes, and E. Robin, “High speed IIR filter for xilinx<br />

FPGA,” Proceedings of the 1998 Midwest Symposium on Systems and<br />

Circuits, 1998.<br />

[18] I. S. 754, IEEE standard for binary floating-point arithmetic. New York:<br />

The Institute of Electrical and Electronics Engineers Inc., 1985.<br />

[19] H. Guild, “Fully iterative fast array for binary multiplication and addition,”<br />

Electronic Letters, vol. 5, p. 263, 1969.<br />

[20] J. McCanny and J. McWhirter, “Completely iterative, pipelined multiplier<br />

array suitable for VLSI,” IEE Proceedings, Part G - Electronic Circuits and<br />

Systems, vol. 129, pt. G, no. 2, Apr. 1982, p. 40-46., vol. 129, pp. 40–46,<br />

Apr. 1982.<br />

[21] “Core g<strong>en</strong>erator,” http://www.xilinx.com/products/logicore/coreg<strong>en</strong>/index.htm,<br />

2000.<br />

[22] L. Louca, T. A. Cook, and W. H. Johnson, “Implem<strong>en</strong>tation of IEEE single<br />

precision floating point addition and multiplication on FPGAs,” Proceedings<br />

IEEE Symposium on FPGAs for Custom Computing Machines, pp. 107–116,<br />

1996.<br />

[23] A. Ja<strong>en</strong>icke and W. Luk, “Parameterised floating-point arithmetic on fpgas,”<br />

in Acoustics, Speech, and Signal Processing, 2001. Proceedings. (ICASSP<br />

’01). 2001 IEEE International Confer<strong>en</strong>ce on, vol. 2, 7-11 May 2001, pp.<br />

897–900vol.2.


Bibliografía 131<br />

[24] M. A. Jimnez, N. G. Santiago, and D. T. Rover, “Developm<strong>en</strong>t of a scalable<br />

FPGA-based floating point multiplier,” Proceedings of the Fifth Canadian<br />

Workshop on Field-Programmable Devices, pp. pp. 145 – 150, 1998.<br />

[25] G. Aty, A. Hussein, I. Ashour, and M. Mones, “High-speed, area-effici<strong>en</strong>t<br />

fpga-based floating-point multiplier,” in Microelectronics, 2003. ICM 2003.<br />

Proceedings of the 15th International Confer<strong>en</strong>ce on, 9-11 Dec. 2003, pp.<br />

274–277.<br />

[26] B. Ñew, “Estimating the performance of XC4000E adders and counters,”<br />

Xilinx, Tech. Rep. Xapp 018, 1996.<br />

[27] The Programable Logic Data Book 1999. Xilinx, 1999.<br />

[28] S. Ghosh, Hardware Description Languages Concepts and Principles. 445<br />

Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331: IEEE Press, 1999.<br />

[29] E. Villar, L. Terés, S. Olcoz, and Y. Torroja, VHDL L<strong>en</strong>guaje Estandar de<br />

Diseño Electrónico. Madrid: McGraw Hill, 1997.<br />

[30] J. E. Volder, “The CORDIC Trigonometric Computing Technique,” IRE<br />

Transactions on Electronic Computers, vol. EC-8, pp. 330–334, 1959.<br />

[31] M. Kharrat, M. Loulou, and N. M. andL. Kamoun, “A new method to implem<strong>en</strong>t<br />

cordic algorithm,” in The 8th IEEE International Confer<strong>en</strong>ce on<br />

Electronics, Circuits and Systems, vol. 2, 2001, pp. 715–718.<br />

[32] [Online]. Available: www.cypress.com<br />

[33] [Online]. Available: www.actel.com<br />

[34] [Online]. Available: www.quicklogic.com<br />

[35] [Online]. Available: www.xilinx.com<br />

[36] [Online]. Available: www.altera.com<br />

[37] [Online]. Available: http://www.alcatel-luc<strong>en</strong>t.com/wps/portal<br />

[38] [Online]. Available: www.atmel.com<br />

[39] R. Bossart, H. Braun, F. Chautard, M. Comunian, J. Delahaye,<br />

J.C.Godot, I. Kamber, J. Mads<strong>en</strong>, L. Rinolfi, S. Schreiber, G. Suberlucq,<br />

I. Wilson, and W. Wu<strong>en</strong>sch, “Performances obtained with the cern linear<br />

collider test facility,” in Proc. European Particle Accelerator Confer<strong>en</strong>ce-<br />

EPAC’94, London, UK, July 1994, pp. 680–682. [Online]. Available:<br />

http://accelconf.web.cern.ch/AccelConf/


Bibliografía 132<br />

[40] W. Coosemans and H. Mainaud, “Pre-alignm<strong>en</strong>t of clic using the double-wire<br />

method,” European Organization of Nuclear Research (CERN), Tech. Rep.<br />

343, July 1997, CLIC-NOTE 343.<br />

[41] P. Poirier, “Lálignem<strong>en</strong>t dynamique submicrometrique de sections acceleratrices,”<br />

Memoire de sout<strong>en</strong>ance du Diplome de Recherche Specialisee <strong>en</strong><br />

Sci<strong>en</strong>ces, Universite Louis Pasteur de Strasbourg, September 1991.<br />

[42] D. Carrica, R. Pittin, and M. B<strong>en</strong>edetti, “Control subsystem hardware of the<br />

high performance electronics for alignm<strong>en</strong>t regulation on the CLIC 30GHz<br />

modules,” CERN Publication (European Laboratory for Particle Physics),<br />

Ginebra, Suiza., vol. CTF 99-09, March 1999.<br />

[43] J. Crook, “Low cost microprocessor based speed control,” in Proceedings<br />

of the Thirteeth Annual Symposium, Increm<strong>en</strong>tal Motion Control System<br />

and Devices, B. C. Kuo, Ed., Increm<strong>en</strong>tal Motion Control System Society.<br />

Champaign, Illinois: Board of Trustees of the University of Illinois, May 1984,<br />

pp. 25–30.<br />

[44] Z. Kang and S. Qu, “A new methodology for using single microprocessor to<br />

control DC stepper motors,” in Proceedings of the IEEE International Confer<strong>en</strong>ce<br />

on Industrial Technology, I. of Electrical & Electronics Engineers Staff,<br />

Ed. Piscataway, NJ, USA: IEEE Press, Dec. 1994, pp. 543–545.<br />

[45] D. O. Carrica and S. A. González, “Algoritmo efici<strong>en</strong>te para la g<strong>en</strong>eración<br />

de perfiles de velocidad <strong>en</strong> el accionami<strong>en</strong>to simultáneo de múltiples motores<br />

paso a paso,” in ANALES VIII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la<br />

Información y Control, RPIC’99, vol. 1. Mar del Plata, Arg<strong>en</strong>tina: Facultad<br />

de Ing<strong>en</strong>ieria, U.N.M.d.P., Sept. 23–25, 1999, pp. 118–122.<br />

[46] P. Acarnley, Stepping Motors: A Guide to Modern Theory and Practice,<br />

4th ed., ser. IEE Control Engineering Series, no. 63. London, U.K.: Peter<br />

Peregrinus Ltd, Dec. 2002.<br />

[47] T. K<strong>en</strong>jo and A. Sugawara, Stepping Motors and their Microprocessor Controls,<br />

2nd ed., ser. Monographs in Electrical and Electronic Engineering.<br />

Oxford, U.K.: Oxford University Press, 1995.<br />

[48] B. Robert, F. Alin, and C. Goeldel, “Aperiodic and chaotic dynamics in hybrid<br />

step motor-new experim<strong>en</strong>tal results,” in Proceedings of the IEEE International<br />

Symposium on Industrial Electronics-ISIE’2001, 2001, pp. 2136–<br />

2141.<br />

[49] M.-C. Pera, B. Robert, and C. Goeldel, “Nonlinear dynamics in electromechanical<br />

systems-application to a hybrid stepping motor,” Electromotion,<br />

vol. 7, no. 1, pp. 31–42, Jan./Mar. 2000.


Bibliografía 133<br />

[50] N. Acosta, C. Collado, and K. Lars<strong>en</strong>, “Métricas para la g<strong>en</strong>eración de multiplicadores<br />

paralelos <strong>en</strong> FPGA.” Proc. of VII Workshop Iberchip., 2001.<br />

[51] N. Acosta, E. Todorovich, C. Collado, and K. Lars<strong>en</strong>, “Multiplicadores paralelos:<br />

Estado del arte y análisis de su materialización <strong>en</strong> FPGA.” Proc. of<br />

VI Workshop Iberchip., pp. 158–168, 2000.<br />

[52] A. Booth, “A signed binary multiplication technique,” Quartelly J. of Mech.<br />

Appl. Math., vol. 4 Part 2, 1951.<br />

[53] S. Brown, “FPGA architectural research: A survey,” Design & Test of Computers,<br />

IEEE, vol. 13, pp. 9–15, 1996.<br />

[54] S. Brown and J. Rose, “FPGA and CPLD architectures: A tutorial,” Design<br />

& Test of Computers, IEEE, vol. 13, pp. 42–57, 1996.<br />

[55] D. Carrica, R. Pittin, W. Coosemans, and M. B<strong>en</strong>edetti, “Active alignm<strong>en</strong>t<br />

electronic system for CLIC 30 GHz modules in CTF2,” CERN Publication,<br />

CLIC Nro. 361, November 1998.<br />

[56] T.-S. Chang and C.-W. J<strong>en</strong>, “Hardware-effici<strong>en</strong>t implem<strong>en</strong>tations for discrete<br />

function transforms using LUT-based FPGAs,” Computers and Digital<br />

Designs - IEE Proceedings, vol. 146, Issue 6, p. 309, 1999.<br />

[57] C. Dick and F. Harris, “FPGA signal processing using sigma-delta modulation,”<br />

F. IEEE Signal Processing Magazine, vol. Volume: 17 Issue: 1, pp. 20<br />

–35, Jan. 2000.<br />

[58] F. Elguibaly, “A fast parallel multiplier-accumulator using the modified<br />

booth algorithm,” IEEE Transactions on Circuits and Systems - II: Analog<br />

and Digital Signal Processing, vol. 47, no. 9, pp. 902–908, September 2000.<br />

[59] M. Funes, D. Carrica, and M. B<strong>en</strong>edetti, “Floating point multipliers with<br />

reduced fpga area,” vol. 1, 2006, pp. 59–66.<br />

[60] ——, “Multiplicadores de punto flotante para estructuras FPGA,” vol. 1,<br />

2002, p. 40.<br />

[61] ——, “Multiplicadores secu<strong>en</strong>ciales para estructuras FPGA,” vol. Vol. II,<br />

2001, pp. 646–651.<br />

[62] A. A. Gray and S. D. Hoy, “Parallel adaptive equalizer employing subconvolution:<br />

VLSI architecture realized in a field programmable gate array,”<br />

2003 MAPLD International Confer<strong>en</strong>ce, 2003.<br />

[63] R. W. Hix and R. L. Haggard, “Comparative design methodologies for FPGA<br />

based computer arithmetic,” Proceedings of the Tw<strong>en</strong>ty-Ninth Southeastern<br />

Symposium on System Theory, pp. 374–378, 1997.


Bibliografía 134<br />

[64] B. Lee and N. Burgess, “Parameterisable floating-point operations on FP-<br />

GA,” Confer<strong>en</strong>ce Record of the Thirty-Sixth Asilomar Confer<strong>en</strong>ce on Signals,<br />

Systems and Computers, pp. 1064–1068, 2002.<br />

[65] L. Mintzer, “Large FFT’s in a single FPGA,” ICSPAT, 1996.<br />

[66] K. Rajagopalan and P. Sutton, “A flexible multiplication unit for an FP-<br />

GA logic block,” The 2001 IEEE International Symposium on Circuits and<br />

Systems, 2001. ISCAS 2001, vol. vol. 4, pp. 546–549, 2001.<br />

[67] C. Souani, M. Abid, and R. Tourki, “An FPGA implem<strong>en</strong>tation of the floating<br />

point addition,” Industrial Electronics Society IECON ’98. Proceedings<br />

of the 24th Annual Confer<strong>en</strong>ce of the IEEE, vol. 3, pp. 1644–1648, 1998.<br />

[68] P. F. Stelling, C. U. Martel, V. G. Oklobdzija, and R. Ravi, “Optimal circuits<br />

for parallel multipliers,” IEEE Transactions on Computers, vol. 47, no. 3,<br />

pp. 273–285, March 1998.<br />

[69] P. F. Stelling and V. G. Oklobdzija, “Optimal designs for multipliers and<br />

multiply-accumulators,” Proceedings of the 15th IMACS World Congress on<br />

Sci<strong>en</strong>tific Computation, Modeling, and Applied Mathematics, vol. 4, pp. 739–<br />

744, August 1997.<br />

[70] M. Thornton, J. Gaiche, and J. Lemieux, “Tradeoff analysis of integer multiplier<br />

circuits implem<strong>en</strong>ted in FPGAs,” Communications, Computers and<br />

Signal Processing IEEE Pacific RIM Confer<strong>en</strong>ce, pp. 301–304, 1999.<br />

[71] E. Todorovich, G. Sutter, N. Acosta, E. Boemo, and S. López-Buedo, “Relación<br />

<strong>en</strong>tre velocidad y consumo <strong>en</strong> FPGAs,” VII Workshop Iberchip, pp.<br />

1–6 CD Browser, 2001.<br />

[72] B. Von Herz<strong>en</strong>, “Signal processing at 250mhz using highperformanceFPGA’s,”<br />

IEEE Transactions on Very Large Scale Integration<br />

(VLSI) Systems,, vol. 6, Issue 2, pp. 238–246, 1998.<br />

[73] The Programable Logic Data Book. Xilinx, 2000.<br />

[74] R. Zimmermann, Binary Adder Architectures for Cell-Based VLSI and their<br />

Synthesis. Swiss Federal Institute of Technology, 1997.<br />

[75] M. Lu, Arithmetic and Logic in Computer Systems. Wiley-Intersci<strong>en</strong>ce,<br />

2004.<br />

[76] U. Meyer-Baese, Digital Signal Processing with Field Programmable Gate<br />

Arrays. Springer-Verlag, 2001.<br />

[77] A. Gaffar, W. Luk, P. Cheung, and N. Shirazi, “Customising floating-point<br />

designs,” in Symposium on Field-Programmable Custom Computing Machines.<br />

IEEE, 2002, pp. 315 – 317.


Bibliografía 135<br />

[78] J. Knopman, E. Fernandes, and A. Mesquita, “Implem<strong>en</strong>tation of hardware<br />

structures through configurable logic,” in EUROMICRO 94. System Architecture<br />

and Integration. Proceedings of the 20th EUROMICRO Confer<strong>en</strong>ce.,<br />

5-8 Sept. 1994, pp. 125–130.<br />

[79] M. Louie and M. Ercegovac, “Multiplication and inner product with field<br />

programmable gate arrays,” in VLSI Signal Processing, VII, 1994., [Workshop<br />

on], 26-28 Oct. 1994, pp. 246–255.<br />

[80] R. Lysecky and F. Vahid, “A configurable logic architecture for dynamic<br />

hardware/software partitioning,” in Design, Automation and Test in Europe<br />

Confer<strong>en</strong>ce and Exhibition, 2004. Proceedings, vol. 1, 16-20 Feb. 2004, pp.<br />

480–485Vol.1.<br />

[81] T. Miyamori and U. Olukotun, “A quantitative analysis of reconfigurable<br />

coprocessors for multimedia applications,” in FPGAs for Custom Computing<br />

Machines, 1998. Proceedings. IEEE Symposium on, 15-17 April 1998, pp. 2–<br />

11.<br />

[82] T. Ñoll, “Carry-save arithmetic for high-speed digital signal processing,” in<br />

Circuits and Systems, 1990., IEEE International Symposium on, 1-3 May<br />

1990, pp. 982–986vol.2.<br />

[83] S. Shah, A. Al-Khalili, and D. Al-Khalili, “Comparison of 32-bit multipliers<br />

for various performance measures,” in Microelectronics, 2000. ICM 2000.<br />

Proceedings of the 12th International Confer<strong>en</strong>ce on, 31 Oct.-2 Nov. 2000,<br />

pp. 75–80.<br />

[84] N. Vassiliadis, S. Ñikolaidis, S. Siskos, and D. Soudris, “The effect of the<br />

interconnection architecture on the fpga performance and <strong>en</strong>ergy consumption,”<br />

in Electrotechnical Confer<strong>en</strong>ce, 2004. MELECON 2004. Proceedings<br />

of the 12th IEEE Mediterranean, vol. 1, 12-15 May 2004, pp. 213–216Vol.1.<br />

[85] J. S. Walther, “A Unified Algorithm for Elem<strong>en</strong>tary Functions,” in Proceedings<br />

of the Spring Joint Computer Confer<strong>en</strong>ce, 1971.<br />

[86] X. Wang and S. Ziavras, “A configurable multiprocessor and dynamic load<br />

balancing for parallel lu factorization,” in Parallel and Distributed Processing<br />

Symposium, 2004. Proceedings. 18th International, 26-30 April 2004, p. 234.<br />

[87] L. Wayne and J. Allan, “Parameterised floating-point arithmetics on FP-<br />

GAs,” in International Confer<strong>en</strong>ce on Speech, and Signal Processing, Vol.<br />

IEEE, 2001, pp. 897–900.<br />

[88] W. W. Yu and S. Xing, “Fixed-point multiplier evaluation and design with<br />

fpga,” in Proc. SPIE Vol. 3844, p. 153-161, Reconfigurable Technology: FP-<br />

GAs for Computing and Applications, Aug. 1999, pp. 153–161.


Apéndices<br />

136


Apéndice A<br />

<strong>Dispositivos</strong> <strong>Lógicos</strong><br />

<strong>Programables</strong><br />

A.1. Introducción<br />

Desde finales de la década de los ’60, los equipos electrónicos digitales se<br />

han construido utilizando circuitos integrados (CI) que realizan funciones lógicas<br />

básicas, realizados <strong>en</strong> pequeña o mediana escala de integración. A medida que los<br />

sistemas se volvieron más complejos, exigi<strong>en</strong>do un número más elevado de fun-<br />

ciones lógicas, se g<strong>en</strong>eró la necesidad de utilizar circuitos diseñados a medida que<br />

sólo sirv<strong>en</strong> para una aplicación. Estos circuitos específicos, o ASIC (Application<br />

Specific Integrated Circuit), se produc<strong>en</strong> con las especificaciones proporcionadas<br />

por el usuario.<br />

Los equipos realizados con ASICs ocupan m<strong>en</strong>os espacio, son más fiables,<br />

consum<strong>en</strong> m<strong>en</strong>os <strong>en</strong>ergía y resultan más baratos que los equipos equival<strong>en</strong>tes<br />

realizados con CI de función lógica básica cuando se fabrican <strong>en</strong> grandes series.<br />

Otra de las v<strong>en</strong>tajas que ti<strong>en</strong><strong>en</strong> las ASICs radica <strong>en</strong> que el diseño es muy difícil<br />

de copiar protegi<strong>en</strong>do la propiedad intelectual. Sin embargo pose<strong>en</strong> un alto costo<br />

137


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 138<br />

de desarrollo y su empleo sólo se justifica para volúm<strong>en</strong>es de producción muy<br />

elevados. El tiempo necesario para el desarrollo y la construcción de una ASIC es<br />

considerable ya que puede oscilar de unos meses a unos años.<br />

A.2. PLD<br />

Un dispositivo que permitió reducir algunos costos de diseño surgió con la<br />

g<strong>en</strong>eración del PLD (Programmable Logic Device). Un PLD es un dispositivo<br />

cuyas características pued<strong>en</strong> ser modificadas y almac<strong>en</strong>adas mediante programa-<br />

ción. La síntesis de estos dispositivos esta fundam<strong>en</strong>tada <strong>en</strong> el hecho que una<br />

función booleana cualquiera puede ser expresada como una suma de productos.<br />

El dispositivo programable más simple es una PAL (Programmable Array<br />

Logic). El circuito interno de una PAL consiste <strong>en</strong> un arreglo, o matriz, de com-<br />

puertas AND y un arreglo de compuertas OR. El arreglo AND es programable<br />

mi<strong>en</strong>tras que el OR g<strong>en</strong>eralm<strong>en</strong>te es fijo. Mediante una matriz de conexiones se<br />

seleccionan las <strong>en</strong>tradas que serán conectadas al arreglo AND, cuyas salidas son<br />

conectadas al arreglo OR y de esta manera se obti<strong>en</strong>e una función lógica <strong>en</strong> forma<br />

de suma de productos.<br />

La matriz de conexiones de un PLD es una red de conductores distribuidos <strong>en</strong><br />

filas y columnas con un fusible <strong>en</strong> cada punto de intersección. Con estos recursos<br />

se implem<strong>en</strong>tan las funciones lógicas deseadas mediante un software especial y<br />

un programador. La síntesis de las ecuaciones lógicas se realiza mediante el que-<br />

mado del fusible <strong>en</strong> cada punto de intersección de los pines de <strong>en</strong>trada con las<br />

compuertas.<br />

Posteriorm<strong>en</strong>te, el fusible se reemplazó por una celda CMOS eléctricam<strong>en</strong>-<br />

te borrable (EECMOS) creandose así una Matriz G<strong>en</strong>érica Programable (GAL,<br />

G<strong>en</strong>eric Array Logic). Un GAL <strong>en</strong> su forma básica es un PLD con una matriz


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 139<br />

AND reprogramable, una matriz OR fija y una lógica de salida programable me-<br />

diante una macrocelda. Esta estructura permite implem<strong>en</strong>tar cualquier función<br />

lógica como suma de productos con un número de términos definido. Mediante<br />

la programación se activa o desactiva cada celda EECMOS y se puede aplicar<br />

cualquier combinación de variables de <strong>en</strong>trada, o sus complem<strong>en</strong>tos, a una com-<br />

puerta AND para g<strong>en</strong>erar cualquier operación producto que se desee. La celda<br />

activada conecta su correspondi<strong>en</strong>te intersección de fila y columna, y una celda<br />

desactivada desconecta la intersección. Las celdas se pued<strong>en</strong> borrar y reprogramar<br />

eléctricam<strong>en</strong>te.<br />

A.3. CPLD<br />

Un CPLD (Complex Programmable Logic Device) exti<strong>en</strong>de el concepto de<br />

un PLD a un mayor nivel de integración ya que permite implem<strong>en</strong>tar sistemas<br />

con un mejor desempeño porque utilizan m<strong>en</strong>or espacio y reduc<strong>en</strong> costos. Un<br />

CPLD esta formado con múltiples bloques lógicos, cada uno similar a un PLD.<br />

Estos bloques lógicos se comunican <strong>en</strong>tre sí utilizando una matriz programable<br />

de interconexiones (PIM). Esta matriz permite unir los pines de <strong>en</strong>trada/salida<br />

a las <strong>en</strong>tradas del bloque lógico, o las salidas del bloque lógico a las <strong>en</strong>tradas de<br />

otro bloque lógico o inclusive a las <strong>en</strong>tradas del mismo (Fig. A.1).<br />

La mayoría de los CPLDs usan una de dos configuraciones para esta matriz:<br />

interconexión mediante arreglo de celdas EECMOS o interconexión mediante mul-<br />

tiplexores. La primera se basa <strong>en</strong> una matriz de filas y columnas con una celda<br />

programable de conexión <strong>en</strong> cada intersección. Al igual que <strong>en</strong> el GAL esta celda<br />

puede ser activada para conectar/desconectar la correspondi<strong>en</strong>te fila y columna.<br />

Esta configuración permite una total interconexión <strong>en</strong>tre las <strong>en</strong>tradas y salidas<br />

del dispositivo o bloques lógicos.


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 140<br />

I/O<br />

I/O<br />

I/O<br />

I/O<br />

I/O<br />

I/O<br />

I/O<br />

I/O<br />

I/O/GCK<br />

I/O/GSR<br />

I/O/GTS<br />

3<br />

1<br />

2or4<br />

Bloques<br />

I/O<br />

Figura A.1: Diagrama <strong>en</strong> bloques de un CPLD<br />

Matriz Programable de Interconexiones<br />

18<br />

18<br />

18<br />

18<br />

36<br />

36<br />

36<br />

36<br />

Bloque de<br />

Funciones 1<br />

Macroceldas<br />

1to18<br />

Bloque de<br />

Funciones 2<br />

Macroceldas<br />

1to18<br />

Bloque de<br />

Funciones 3<br />

Macroceldas<br />

1to18<br />

Bloque de<br />

Funciones N<br />

Macroceldas<br />

1to18<br />

En la interconexión mediante multiplexores, existe un multiplexor por cada<br />

<strong>en</strong>trada al bloque lógico. Las vías de interconexión programables son conectadas<br />

a las <strong>en</strong>tradas de un número de multiplexores por cada bloque lógico. Las líneas<br />

de selección de estos multiplexores son programadas para permitir que sea selec-<br />

cionada únicam<strong>en</strong>te una vía de la matriz de interconexión por cada multiplexor la<br />

cual se propagara a hacia el bloque lógico. Cabe m<strong>en</strong>cionar que no todas las vías<br />

son conectadas a las <strong>en</strong>tradas de cada multiplexor. La capacidad de interconexión<br />

se increm<strong>en</strong>ta usando multiplexores de mayor tamaño, permiti<strong>en</strong>do que cualquier<br />

combinación de señales de la matriz de interconexión pueda ser interconectada<br />

con cualquier bloque lógico.<br />

En ambos casos, la capacidad de interconexión provoca que disminuya el<br />

desempeño del dispositivo debido al aum<strong>en</strong>to de consumo de <strong>en</strong>ergía y el tamaño<br />

del compon<strong>en</strong>te.


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 141<br />

A.4. FPGA<br />

Los Arreglos <strong>Lógicos</strong> <strong>Programables</strong> (ALPs) o Field Programmable Gate Arrays<br />

(FPGAs) surgieron <strong>en</strong> los ’80, como solución a las excesivas demoras del desarro-<br />

llo conv<strong>en</strong>cional de circuitos integrados digitales. Además, esta tecnología consti-<br />

tuyó una alternativa a la costosa implem<strong>en</strong>tación de circuitos integrados específi-<br />

cos (ASICs). A pesar de estas importantes v<strong>en</strong>tajas la utilización ext<strong>en</strong>siva de los<br />

FPGAs com<strong>en</strong>zó recién <strong>en</strong> la década de los ’90.<br />

La arquitectura de una FPGA consiste <strong>en</strong> arreglos de varias celdas lógicas<br />

las cuales se comunican unas con otras mediante canales de conexión verticales y<br />

horizontales como se muestra <strong>en</strong> la Fig. A.2.<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

CL B CL B CL B CL B<br />

CL B CL B CL B CL B<br />

CL B CL B CL B CL B<br />

CL B CL B CL B CL B<br />

IOB<br />

IOB<br />

IOB<br />

Figura A.2: Distribución de bloques de una FPGA de Xilinx<br />

IOB<br />

La estructura de las celdas lógicas y las formas <strong>en</strong> que estas pued<strong>en</strong> ser interco-<br />

nectadas, tanto salidas como <strong>en</strong>tradas de la celda, varían de acuerdo al fabricante.<br />

En g<strong>en</strong>eral una celda lógica ti<strong>en</strong>e m<strong>en</strong>os funcionalidad que la combinación de su-<br />

mas de productos y macroceldas de un CPLD.<br />

La estructura de las celdas se ve fuertem<strong>en</strong>te influida por la tecnología utili-<br />

zada para fabricar la FPGA. Una FPGA que ti<strong>en</strong>e una gran cantidad de canales<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB<br />

IOB


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 142<br />

de interconexión ti<strong>en</strong>de a t<strong>en</strong>er pequeñas celdas lógicas con muchas <strong>en</strong>tradas y<br />

salidas <strong>en</strong> comparación con el número de compuertas que ti<strong>en</strong>e la celda. Sin em-<br />

bargo, una FPGA que ti<strong>en</strong>e una estructura pequeña <strong>en</strong> canales de interconexión<br />

ti<strong>en</strong>de a t<strong>en</strong>er celdas lógicas con pocas <strong>en</strong>tradas y salidas <strong>en</strong> comparación con el<br />

número de compuertas que hay <strong>en</strong> la celda.<br />

La tecnología de interconexión se puede clasificar <strong>en</strong> dos tipos, antifusibles<br />

o RAM estática (SRAM). Las FPGAs con gran cantidad de canales de interco-<br />

nexión utilizan una tecnología de antifusibles que g<strong>en</strong>eran una conexión cuando<br />

son programados, no permiti<strong>en</strong>do la reutilización de la FPGA. La tecnología de<br />

antifusibles es utilizada por empresas tales como Cypress [32], Actel [33] y Qui-<br />

cklogic [34].<br />

Por otro lado, para FPGAs con pocos canales se realiza la interconexión con<br />

tecnología SRAM. La primera FPGA fue introducida por Xilinx [35] <strong>en</strong> el año<br />

1985 y era basada <strong>en</strong> RAM estática. Esta FPGA cada vez que se aplica la t<strong>en</strong>-<br />

sión de alim<strong>en</strong>tación se re-programa con la información que lee desde una PROM<br />

(Programmable Read Only Memory) de configuración externa. Una FPGA basa-<br />

da <strong>en</strong> SRAM admite un número ilimitado de re-programaciones sin necesidad de<br />

borrados previos. En la Fig. A.3 se puede observar la matriz de interconexión de<br />

una FPGA de Xilinx. En detalle se puede observar el conjunto de los 6 transis-<br />

tores de paso que permit<strong>en</strong> la interconexión de las celdas. Una vez programada<br />

la FPGA, una memoria SRAM manti<strong>en</strong>e el estado de conexión o desconexión de<br />

cada uno de estos transistores.<br />

A medida que se realiza la interconexión de las líneas, comúnm<strong>en</strong>te d<strong>en</strong>omi-<br />

nadas rutas, se van adicionando retardos <strong>en</strong> la trayectoria recorrida. Este efecto<br />

debe ser tomado <strong>en</strong> cu<strong>en</strong>ta <strong>en</strong> las herrami<strong>en</strong>tas de programación para diseño y<br />

ajuste de las FPGA, de manera que el software sea capaz de establecer las co-<br />

nexiones más cortas posibles y luego realizar el trazado de esas conexiones, para


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 143<br />

PSM<br />

PSM PSM<br />

CLB CLB<br />

PSM PSM PSM<br />

2 Dobles 3 Largas 8 Simples<br />

3 Largas<br />

2 Dobles<br />

8 Simples<br />

2 Dobles<br />

3 Longs<br />

3 Largas<br />

2 Dobles<br />

Transistores de paso<br />

Figura A.3: Matriz de interconexión de una FPGA de Xilinx<br />

así optimizar el r<strong>en</strong>dimi<strong>en</strong>to del dispositivo.<br />

Este mismo tipo de tecnología es además utilizado por Altera [36], Luc<strong>en</strong>t<br />

Technologies [37] y Atmel [38] <strong>en</strong>tre otros.<br />

A.4.1. Celdas Lógicas<br />

Otra consecu<strong>en</strong>cia de los recursos de interconexión se pres<strong>en</strong>ta con el tamaño<br />

de las celdas. Si las celdas lógicas son demasiado pequeñas sucede que se debe<br />

utilizar un gran número de estas <strong>en</strong> cascada para poder implem<strong>en</strong>tar funciones<br />

lógicas grandes. Estas celdas <strong>en</strong> g<strong>en</strong>eral resuelv<strong>en</strong> funciones elem<strong>en</strong>tales de dos o<br />

tres variables (d<strong>en</strong>ominadas de grano fino) y pres<strong>en</strong>tan como desv<strong>en</strong>taja que cada<br />

celda lógica <strong>en</strong> cascada agrega un tiempo de retardo <strong>en</strong> la función implem<strong>en</strong>tada.<br />

A medida que el tamaño de la celda lógica aum<strong>en</strong>ta, sucede lo contrario.<br />

En este tipo de celdas lógicas, que resuelv<strong>en</strong> funciones elem<strong>en</strong>tales de cuatro o<br />

más variables de <strong>en</strong>trada (d<strong>en</strong>ominadas de grano grueso), es posible implem<strong>en</strong>tar<br />

funciones lógicas de varios términos con pocas celdas lógicas. Entre las FPGA con<br />

celdas de grano grueso se <strong>en</strong>cu<strong>en</strong>tran las de Xilinx y algunas familias de Altera,<br />

la que también ofrece algunas familias con celdas de grano medio. Fabricantes<br />

como Actel ofrec<strong>en</strong> FPGAs de grano fino.


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 144<br />

La celda básica de una FPGA de la serie FLEX10K de Altera, d<strong>en</strong>ominada<br />

LE (Logic Elem<strong>en</strong>t), es una celda de grano medio que posee una LUT (Look-up<br />

Table) de 4 <strong>en</strong>tradas y un Fliplop. La LUT puede ser configurada también como<br />

una LUT de 3 <strong>en</strong>tradas y una lógica de acarreo rápido. El conjunto de ocho LEs<br />

se <strong>en</strong>cu<strong>en</strong>tran dispuestas <strong>en</strong> un arreglo d<strong>en</strong>ominado LAB (Logic Array Block).<br />

Adicionalm<strong>en</strong>te cada fila posee un EAB (Embeded Array Block) que puede ser<br />

configurado como un elem<strong>en</strong>to de 2048x1 hasta 256x8 de memoria. Estos LAB y<br />

EAB se <strong>en</strong>cu<strong>en</strong>tran interconectados a través de buses de alta velocidad de 100 a<br />

300 líneas por columna.<br />

data1<br />

data2<br />

data3<br />

data4<br />

labctrl1<br />

labctrl2<br />

Chip-Wide<br />

Reset<br />

labctrl3<br />

labctrl4<br />

Look-Up<br />

Table<br />

(LUT)<br />

Clear/<br />

Preset<br />

Logic<br />

Clock<br />

Select<br />

Carry-In<br />

Carry<br />

Chain<br />

Carry-Out<br />

Cascade-In<br />

Cascade<br />

Chain<br />

Cascade-Out<br />

Register Bypass<br />

PRN<br />

DQ<br />

ENA<br />

CLRN<br />

Programmable<br />

Register<br />

To FastTrack<br />

Interconnect<br />

To LAB Local<br />

Interconnect<br />

Figura A.4: Descripción de un LE de una FPGA FLEX10K de Altera<br />

Un ejemplo de una celda básica de Xilinx d<strong>en</strong>ominado CLB (Configurable<br />

Logic Block) se puede observar <strong>en</strong> la Fig. A.5. Estos CLBs estan compuestos por<br />

dos LUTs (F y G) con las cuales se pued<strong>en</strong> g<strong>en</strong>erar funciones lógicas de cuatro<br />

variables indep<strong>en</strong>di<strong>en</strong>tes, o bi<strong>en</strong> una función lógica combinada (H) de 5 variables.<br />

Cada LUT cu<strong>en</strong>ta con lógica aritmética dedicada para la propagación rápida de<br />

acarreo a celdas vecinas. Cada CLB cu<strong>en</strong>ta además con dos Flipflops con los<br />

cuales se pued<strong>en</strong> registrar las salidas combinacionales. Xilinx posee cinco niveles<br />

de interconexión, que va desde la conexión <strong>en</strong>tre dos CLBs, a conexiones largas


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 145<br />

que atraviesan toda la FPGA. Cada CLB puede ser utilizado como un elem<strong>en</strong>to<br />

de 16x2 a 31x1 de memoria.<br />

G4<br />

G3<br />

G2<br />

G1<br />

SR<br />

H1<br />

IN<br />

F4<br />

F3<br />

F2<br />

F1<br />

K<br />

EC<br />

G4<br />

Logic<br />

G3F<br />

unction<br />

of G<br />

G2 G1-G4<br />

G1<br />

F4<br />

G-L U T<br />

Logic<br />

F3 F unction<br />

of G<br />

F2 F1-F4<br />

F1<br />

F-LUT<br />

A<br />

H-LUT<br />

B<br />

G<br />

Logic<br />

F unction<br />

H1 of H<br />

F<br />

F-G-H1<br />

Multiplexer Controlled<br />

by Configuration P rogram<br />

SR<br />

D Q Y<br />

CK<br />

EC<br />

Y<br />

SR<br />

D Q X<br />

Figura A.5: Descripción de un CLB de una FPGA XC4000 de Xilinx<br />

En la Fig. A.6 se muestra un ejemplo de los recursos lógicos de algunas FPGAs<br />

de Xilinx. En la misma el fabricante pres<strong>en</strong>ta la cantidad de celdas básicas, el<br />

máximo cont<strong>en</strong>ido de memoria que se puede g<strong>en</strong>erar y la cantidad de Flip-flops<br />

que conti<strong>en</strong>e cada modelo.<br />

A.4.2. Recursos dedicados<br />

Los fabricantes de FPGAs g<strong>en</strong>eran <strong>en</strong> los dispositivos algunos recursos dedi-<br />

cados a mejorar el desempeño de los mismos. Ejemplo de ello se puede observar<br />

sobre la serie XC4000 de Xilinx, la cual cu<strong>en</strong>ta con líneas de comunicación glo-<br />

bal, selección de velocidad de acceso de buffers de salidas y lógica de acarreo para<br />

acelerar y cond<strong>en</strong>sar funciones ariméticas.<br />

Las líneas de comunicación globales están diseñadas para distribuir señales<br />

de reloj o que pose<strong>en</strong> un gran fan out. Estas líneas pose<strong>en</strong> un retardo mínimo y<br />

pued<strong>en</strong> ser accedidas mediante la utilización de buffers especiales.<br />

CK<br />

EC<br />

X


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 146<br />

FPGA<br />

Serie XC4000:<br />

Serie Spartan:<br />

Serie Virtex:<br />

Celdas Lógicas<br />

Comp. Lógicas<br />

Rango Típico<br />

de Compuertas<br />

Modelo<br />

XC4013XLA 1368 13K 10K-30K 18K 24x24 576 1536<br />

XC4020XLA 1862 20K 13K-40K 25K 28x28 784 2016<br />

XC4028XLA 2432 28K 18K-50K 33K 32x32 1024 2560<br />

XC4036XLA 3078 36K 22K-65K 42K 36x36 1296 3168<br />

XC4044XLA 3800 44K 27K-80K 51K 40x40 1600 3840<br />

XC4052XLA 4598 52K 33K-100K 62K 44x44 1936 4576<br />

XC4062XLA 5472 62K 40K-130K 74K 48x48 2304 5376<br />

XC4085XLA 7448 85K 55K-180K 100K 56x56 3136 7168<br />

XCS05 238 3K 2K-5K 3K 10x10 100 360<br />

XCS10 466 5K 3K-10K 6K 14x14 196 616<br />

XCS20 950 10K 7K-20K 13K 20x20 400 1120<br />

XCS30 1368 13K 10K-30K 18K 24x24 576 1536<br />

XCS40 1862 20K 13K-40K 25K 28x28 784 2016<br />

XCS05XL 238 3K 2K-5K 3K 10x10 100 360<br />

XCS10XL 466 5K 3K-10K 6K 14x14 196 616<br />

XCS20XL 950 10K 7K-20K 13K 20x20 400 1120<br />

XCS30XL 1368 13K 10K-30K 18K 24x24 576 1536<br />

XCS40XL 1862 20K 13K-40K 25K 28x28 784 2016<br />

XC2S15 432 8K 6K-15K 22K 8x12 96 384<br />

XC2S30 972 17K 13K-30K 36K 12x18 216 863<br />

XC2S50 1728 30K 23K-50K 56K 16x24 384 1536<br />

XC2S100 2700 53K 37K-100K 78K 20x30 600 2400<br />

XC2S150 3888 77K 52K-150K 102K 24x36 864 3456<br />

XCV50 1728 21K 34K-58K 56K 16x24 384 1536<br />

XCV100 2700 32K 72K-109K 78K 20x30 600 2400<br />

XCV150 3888 47K 93K-165K 102K 24x36 864 3456<br />

XCV200 5292 64K 146K-237K 130K 28x42 1176 4704<br />

XCV300 6912 83K 176K-323K 160K 32x48 1536 6144<br />

XCV400 10800 130K 282K-468K 230K 40x60 2400 9600<br />

XCV600 15552 187K 365K-661K 312K 48x72 3456 13824<br />

XCV800 21168 254K 511K-888K 406K 56x84 4704 18816<br />

XCV1000 27648 332K 622K-1,124K 512K 64x96 6144 24576<br />

Figura A.6: Recursos lógicos de algunas FPGAs de Xilinx<br />

Max. RAM Bits<br />

Matriz de CLB<br />

CLBs<br />

Flip-Flops


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 147<br />

Las series a partir de la Familia Virtex cu<strong>en</strong>tan adicionalm<strong>en</strong>te con bloques<br />

d<strong>en</strong>ominados DLL (Delay-Locked Loop). Estos DLLs se <strong>en</strong>cargan de monitorear<br />

el reloj de <strong>en</strong>trada y el distribuido <strong>en</strong> los bloques utilizados y g<strong>en</strong>eran un retardo<br />

sobre las líneas de manera que el flanco de reloj se g<strong>en</strong>ere sincronicam<strong>en</strong>te <strong>en</strong>tre<br />

todos los FlipFlops y el reloj de <strong>en</strong>trada.<br />

La velocidad de acceso de los buffers de salida por defecto se <strong>en</strong>cu<strong>en</strong>tra limi-<br />

tada para minimizar transitorios <strong>en</strong> las líneas de alim<strong>en</strong>tación cuando conmutan<br />

<strong>en</strong>tradas no prioritarias. Para el caso de líneas <strong>en</strong> las cuales se requiere mayor<br />

velocidad, se puede cambiar el atributo de velocidad para que la salida pueda<br />

operar más rápidam<strong>en</strong>te.<br />

A partir de la serie XC4000E, Xilinx incorporó lógica de acarreo dedicada a<br />

las FPGAs. En la Fig. A.7 se puede observar que la lógica de acarreo comparte<br />

las <strong>en</strong>tradas de datos y de control con los g<strong>en</strong>eradores de funciones. Las salidas<br />

de acarreo se <strong>en</strong>cu<strong>en</strong>tran conectadas a los g<strong>en</strong>eradores de funciones de manera<br />

de realizar las combinaciones adecuadas para la realización de una suma. Las<br />

salidas de tipo propagación de acarreo se comunican <strong>en</strong>tre CLBs a través de<br />

rutas dedicadas de alta velocidad. Como se observa <strong>en</strong> la misma figura, el acarreo<br />

se puede propagar hacia el CLB superior o inferior. En el caso <strong>en</strong> que no exist<strong>en</strong><br />

CLBs <strong>en</strong> la parte superior o inferior debido a que el CLB se <strong>en</strong>cu<strong>en</strong>tra <strong>en</strong> los<br />

límites físicos de la FPGA, el acarreo se propaga hacia la derecha.<br />

La lógica de acarreo puede ser configurada para implem<strong>en</strong>tar funciones de<br />

adición, substracción o ambas. Además se pued<strong>en</strong> realizar operaciones de incre-<br />

m<strong>en</strong>to, decrem<strong>en</strong>to y/o funciones <strong>en</strong> complem<strong>en</strong>to.


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 148<br />

G4<br />

G3<br />

G2<br />

G1<br />

H1<br />

F4<br />

F3<br />

F2<br />

F1<br />

LOGICA<br />

ACARREO<br />

G<br />

ACARREO<br />

F<br />

ACARREO<br />

C IN UP<br />

COUT CIN DOWN<br />

C OUT0<br />

C OUT<br />

G<br />

F<br />

Figura A.7: Lógica de acarreo dedicada de una FPGA XC4000 de Xilinx<br />

H<br />

DIN<br />

G<br />

H<br />

DIN<br />

H<br />

G<br />

F<br />

DIN<br />

H<br />

G<br />

F<br />

H<br />

F<br />

DQ<br />

DQ<br />

S/R<br />

EC<br />

S/R<br />

EC<br />

Y<br />

YQ<br />

XQ<br />

X


Apéndice A. <strong>Dispositivos</strong> <strong>Lógicos</strong> <strong>Programables</strong> 149<br />

A.5. Conclusiones<br />

Desde hace ya un par de décadas el procesami<strong>en</strong>to de señales se lleva a cabo <strong>en</strong><br />

lo que se d<strong>en</strong>ominó DSPs (Digital Signal Processors). Estos DSPs están basados<br />

<strong>en</strong> la arquitectura de un procesador capaz de ejecutar cálculos mediante una uni-<br />

dad MAC (Multiply/Accumulator) y multiples bancos de memoria destinados a<br />

increm<strong>en</strong>tar la transfer<strong>en</strong>cia de datos. La v<strong>en</strong>taja de estos DSPs siempre radicó <strong>en</strong><br />

que el procesami<strong>en</strong>to de señales utiliza int<strong>en</strong>sivam<strong>en</strong>te estas operaciones.<br />

Sin embargo, a pesar de que estos DSPs son flexibles <strong>en</strong> cuanto a su progra-<br />

mación, la arquitectura es fija y sólo dispon<strong>en</strong> de una o dos unidades MAC. Como<br />

consecu<strong>en</strong>cia, el grado de ejecuciones concurr<strong>en</strong>tes está limitado por este número,<br />

de manera que no permite explotar toda la pot<strong>en</strong>cial concurr<strong>en</strong>cia del algoritmo.<br />

En contraste, <strong>en</strong> una FPGA es posible g<strong>en</strong>erar la lógica necesaria para explo-<br />

tar esta concurr<strong>en</strong>cia. Por ejemplo, si un algoritmo requiere la ejecución de 16<br />

multiplicaciones y la suma de estos productos, la FPGA puede ser configurada<br />

para la realización de estos 16 productos <strong>en</strong> forma simultánea. Adicionalm<strong>en</strong>te, <strong>en</strong><br />

la misma FPGA se pued<strong>en</strong> realizar otras tareas que no dep<strong>en</strong>d<strong>en</strong> de la realización<br />

del cálculo, tal como comunicación con periféricos, otros cálculos indep<strong>en</strong>di<strong>en</strong>tes,<br />

etc.<br />

Este tipo de v<strong>en</strong>taja motivó el interés respecto de las FPGAs para la aplicación<br />

de soluciones a medida sin perder la flexibilidad de la programación que ofrece<br />

un PSDP o el costo y el tiempo de fabricación de una ASIC.


Apéndice B<br />

Sistemas numéricos<br />

B.1. Introducción<br />

La resolución de todo algoritmo comi<strong>en</strong>za por definir el tipo de las variables<br />

con las que se debe trabajar. A partir de la selección de estas variables, queda<br />

determinada el tipo de aritmética que se va a utilizar. Los Arreglos <strong>Lógicos</strong> Pro-<br />

gramables (ALPs o FPGAs) permit<strong>en</strong> que la resolución de un problema admita<br />

distintas variantes <strong>en</strong> cuanto al tipo de aritmética que se puede seleccionar. El<br />

tipo de aritmética seleccionado determina <strong>en</strong>tonces la forma <strong>en</strong> que opera el al-<br />

gorítmo.En el pres<strong>en</strong>te capítulo se mostrarán las características de cada uno de<br />

los sistemas y la forma <strong>en</strong> que operan cada una de ellos.<br />

B.2. Repres<strong>en</strong>tación numérica<br />

La elección del sistema numérico de las variables a utilizar debe realizarse<br />

cuidadosam<strong>en</strong>te. Los sistemas numéricos de divid<strong>en</strong> <strong>en</strong> dos campos, punto fijo y<br />

punto flotante. En g<strong>en</strong>eral puede ser asumido que la operatoria <strong>en</strong> punto fijo es<br />

mas rápida y requiere m<strong>en</strong>os recursos lógicos, mi<strong>en</strong>tras que la operatoria <strong>en</strong> punto<br />

150


Apéndice B. Sistemas numéricos 151<br />

FORMATO NUMÉRICO<br />

PUNTO FIJO PUNTO FLOTANTE<br />

conv<strong>en</strong>cional no conv<strong>en</strong>cional conv<strong>en</strong>cional no conv<strong>en</strong>cional<br />

Complem<strong>en</strong>to a 2<br />

Complem<strong>en</strong>to a 1<br />

Disminuido a 1<br />

Con digito de signo<br />

Logarítmico<br />

RNS<br />

32-Bit IEEE<br />

64-Bit IEEE<br />

Figura B.1: Esquema de formatos numéricos<br />

16, 18, 20, 24 Bit<br />

Format<br />

flotante posee mayor rango dinámico y no requiere reescalar los resultados. Esto<br />

último puede resultar interesante para la resolución de algorítmos complicados.<br />

La Figura B.1 pres<strong>en</strong>ta el esquema de algunos sistemas numéricos para punto fijo<br />

y punto flotante. Los mismos pued<strong>en</strong> ser utilizados fuera del sistema estándar<br />

dep<strong>en</strong>di<strong>en</strong>do de los requerimi<strong>en</strong>tos del problema a resolver.<br />

B.2.1. Punto fijo<br />

En esta sección se pres<strong>en</strong>tará una breve descripción de los sistemas numéricos<br />

de punto fijo.<br />

Enteros sin signo<br />

Sea X un número binario sin signo de n bits, el rango numérico es [0, 2 n − 1]<br />

y su repres<strong>en</strong>tación esta dada por:<br />

n−1<br />

X = xj2 j<br />

j=0<br />

(B.1)<br />

donde xj es el j digito binario de X (por ej. xj ∈ [0, 1]). El digito x0 es<br />

llamado el bit m<strong>en</strong>os significativo (LSB - Least Significative Bit) y ti<strong>en</strong>e como


Apéndice B. Sistemas numéricos 152<br />

peso relativo la unidad. El digito xn−1 es el bit mas significativo (MSB - More<br />

Significative Bit) y posee un peso relativo de 2 n−1 .<br />

Magnitud con signo<br />

En sistemas de magnitud con signo la magnitud y el signo son repres<strong>en</strong>tados<br />

<strong>en</strong> forma separada. El primer bit repres<strong>en</strong>ta el signo y los restantes n − 1 bits<br />

repres<strong>en</strong>tan la magnitud, su repres<strong>en</strong>tación esta dada por:<br />

⎧<br />

⎪⎨<br />

X =<br />

⎪⎩<br />

n−1 <br />

j=0<br />

− n−1 <br />

j=0<br />

xj2 j X ≥ 0<br />

xj2 j X < 0<br />

(B.2)<br />

El rango de esta repres<strong>en</strong>tación es [−2 n−1 , 2 n−1 ]. La v<strong>en</strong>taja de la repres<strong>en</strong>-<br />

tación de magnitud con signo es una simplicidad <strong>en</strong> la prev<strong>en</strong>ción de desbordes<br />

de cálculo, pero su desv<strong>en</strong>taja es que cuando se adicionan estos números se debe<br />

observar cual de los operandos es mayor.<br />

Complem<strong>en</strong>to a 1 (1C)<br />

Un sistema de n bits <strong>en</strong> 1C puede repres<strong>en</strong>tar <strong>en</strong>teros binarios con signo <strong>en</strong> el<br />

rango [−2 n−1 , 2 n−1 −1]. En este tipo de sistema los números positivos y negativos<br />

se repres<strong>en</strong>tan de la misma manera excepto por el bit de signo. La repres<strong>en</strong>tación<br />

del número cero es de hecho redundante. La repres<strong>en</strong>tación de los números <strong>en</strong> 1C<br />

esta dado por:<br />

⎧<br />

⎪⎨<br />

n−1 <br />

xj2<br />

j=0<br />

X =<br />

⎪⎩<br />

j X ≥ 0<br />

2n − 1 − n−1 <br />

xj2j X < 0<br />

j=0<br />

(B.3)<br />

Este sistema numérico es utilizado para implem<strong>en</strong>tar aritmética de módulo<br />

2 n − 1 sin cambios <strong>en</strong> la aritmética.


Apéndice B. Sistemas numéricos 153<br />

Complem<strong>en</strong>to a 2 (2C)<br />

Un sistema de n bits <strong>en</strong> 2C puede repres<strong>en</strong>tar <strong>en</strong>teros binarios con signo <strong>en</strong> el<br />

rango [−2 n−1 − 1, 2 n−1 − 1]. Su repres<strong>en</strong>tación esta dada por:<br />

⎧<br />

⎪⎨<br />

n−1 <br />

xj2<br />

j=0<br />

X =<br />

⎪⎩<br />

j X ≥ 0<br />

2n − n−1 <br />

xj2j X < 0<br />

j=0<br />

(B.4)<br />

La repres<strong>en</strong>tación de los números <strong>en</strong> 2C es una de las mas populares, esto es<br />

debido a que con la misma es posible sumar varios números con signo, y al final<br />

el resultado pert<strong>en</strong>ece al rango de n bits. De este modo se puede ignorar cualquier<br />

desborde numérico <strong>en</strong> la aritmética. Por ejemplo, si se adicionan dos números de<br />

3 bits de la sigui<strong>en</strong>te manera:<br />

310<br />

−210<br />

1112C<br />

1102C<br />

110 1 0012C<br />

el desborde puede ser ignorado. La v<strong>en</strong>taja de esta repres<strong>en</strong>tación radica <strong>en</strong><br />

que todos los cálculos son 2C. Aun <strong>en</strong> el caso <strong>en</strong> que haya cálculos intermedios,<br />

los mismos pued<strong>en</strong> no estar correctam<strong>en</strong>te repres<strong>en</strong>tados pero el resultado final es<br />

correcto. Esto se puede apreciar si se realiza el cálculo 2+2−3, el resultado parcial<br />

de 010 + 010 = 100 (−410), pero el resultado de 100 − 011 = 100 + 101 = 0012C<br />

es correcto. Este sistema numérico es utilizado para implem<strong>en</strong>tar aritmética de<br />

módulo 2 n sin cambios <strong>en</strong> la aritmética.<br />

Disminuido a 1 (D1)<br />

El sistema disminuido a 1 (D1) es un sistema polarizado. Los números positi-<br />

vos son, comparados con 2C, disminuidos <strong>en</strong> 1. El rango para un sistema D1 de


Apéndice B. Sistemas numéricos 154<br />

N − bits es [−2 n−1 , 2 n−1 ], excluy<strong>en</strong>do el cero. La repres<strong>en</strong>tación de este sistema<br />

es:<br />

⎧<br />

⎪⎩<br />

n−1 <br />

Para adicionar dos números D1<br />

xj2<br />

⎪⎨ j=0<br />

X =<br />

j − 1 X ≥ 0<br />

2n − n−1 <br />

xj2j X < 0<br />

j=0<br />

310<br />

−210<br />

2 n X = 0<br />

010D1<br />

110D1<br />

110 1 000D1<br />

Carry × −1 0D1<br />

110<br />

000D1<br />

(B.5)<br />

se puede observar que se debe complem<strong>en</strong>tar y adicionar el bit de carry para<br />

lograr un resultado correcto. Este sistema numérico es utilizado para implem<strong>en</strong>tar<br />

aritmética de módulo 2 n + 1 sin cambios <strong>en</strong> la aritmética.<br />

B.2.2. Punto flotante<br />

Los sistemas de punto flotante fueron desarrollados para proveer alta resolu-<br />

ción sobre un gran rango dinámico. A m<strong>en</strong>udo estos sistemas pued<strong>en</strong> resultar una<br />

solución cuando los sistemas de punto fijo fallan debido a su limitada precisión y<br />

rango dinámico. Este formato numérico se <strong>en</strong>cu<strong>en</strong>tra estándarizado por la norma<br />

IEEE 754 [18]. Esta norma establece criterios sobre diversos aspectos del diseño:<br />

codificación interna de los números a nivel de bits (formato numérico), técnicas<br />

de redondeo, tratami<strong>en</strong>to de excepciones, etc.


Apéndice B. Sistemas numéricos 155<br />

Los sistemas de punto flotante respecto al tratami<strong>en</strong>to de su contraparte <strong>en</strong><br />

punto fijo pose<strong>en</strong> un costo importante <strong>en</strong> cuanto a la velocidad y complejidad<br />

de cálculo; cuestión que ha llevado a diversos autores a la utilización de esta<br />

repres<strong>en</strong>tación ”a medida”. Una palabra <strong>en</strong> punto flotante se repres<strong>en</strong>ta de la<br />

sigui<strong>en</strong>te manera:<br />

Signo Expon<strong>en</strong>te <strong>en</strong>tero Mantisa<br />

Sx e m<br />

Algebraicam<strong>en</strong>te, un número <strong>en</strong> punto flotante se repres<strong>en</strong>ta:<br />

donde<br />

S, bit de signo.<br />

X = (−1) S × 2 e−bias × 1.m (B.6)<br />

e, expon<strong>en</strong>te: Este campo se repres<strong>en</strong>ta utilizando un desplazami<strong>en</strong>to (bias)<br />

bias = 2 e−1 − 1.<br />

m, mantisa: Es la parte fraccional de 1.m.<br />

Norma IEEE 754<br />

Los parámetros para precisión simple y doble que determina la norma IEEE<br />

754 se pued<strong>en</strong> observar <strong>en</strong> la Tabla B.1.


Apéndice B. Sistemas numéricos 156<br />

Tabla B.1: Punto flotante estándar.<br />

Simple Doble<br />

Longitud de palabra 32 64<br />

Expon<strong>en</strong>te 8 11<br />

Mantisa 23 52<br />

Bias 127 1023<br />

Rango Máximo ±3,4028 × 10 38 ±1,7977 × 10 308<br />

Rango Mínimo ±1,1755 × 10 −38 ±2,2251 × 10 −308<br />

Codificaciones con significado especial<br />

Infinito (e=255, m=0): repres<strong>en</strong>tan cualquier valor de la región de overflow<br />

NaN (Not-a-Number) (e=255, m>0): se obti<strong>en</strong><strong>en</strong> como resultado de opera-<br />

ciones inválidas<br />

Número d<strong>en</strong>ormalizado (e=0, m>0): es un número sin normalizar cuyo bit<br />

implícito se supone que es 0. Al ser el expon<strong>en</strong>te 0, permit<strong>en</strong> repres<strong>en</strong>tar<br />

números <strong>en</strong> las regiones de underflow. El valor del expon<strong>en</strong>te es el del ex-<br />

pon<strong>en</strong>te más pequeño de los números no desnormalizados: -126 <strong>en</strong> precisión<br />

simple y –1022 <strong>en</strong> doble.<br />

Cero (e=0, m=0): número no normalizado que repres<strong>en</strong>ta al cero (<strong>en</strong> lugar<br />

de repres<strong>en</strong>tar al 1)<br />

Excepciones:<br />

Operación inválida: ∞ ± ∞, 0 × ∞, 0 ÷ 0, ∞ ÷ ∞, x mod 0, √ x cuando<br />

x < 0, x = ∞<br />

Inexacto: el resultado redondeado no coincide con el real<br />

Overflow y underflow<br />

División por cero


Apéndice B. Sistemas numéricos 157<br />

Formato a medida<br />

El sistema <strong>en</strong> punto flotante, como se m<strong>en</strong>cionó posee un costo <strong>en</strong> cuanto a<br />

velocidad y complejidad de cálculo. Es por esto que muchos autores han g<strong>en</strong>erado<br />

con el tiempo el sistema de punto flotante a medida. El formato de palabra que<br />

se utiliza dep<strong>en</strong>de del rango dinámico y la resolución que se desea. En la Tabla<br />

B.2 se pued<strong>en</strong> observar algunos ejemplos de estos formatos.<br />

Tabla B.2: Punto flotante a medida.<br />

Longitud de palabra 16 18 20 24<br />

Expon<strong>en</strong>te 7 7 8 9<br />

Mantisa 8 10 11 14<br />

Bias 63 63 127 255<br />

RangoMáximo ±1.8411×10 19 ±1.8438×10 19 ±3.4020×10 38 ±1.1579×10 77<br />

RangoMínimo ±2.1769×10 −19 ±2.1705×10 −19 ±1.1761×10 −38 ±3.4547×10 −77<br />

B.2.3. No-conv<strong>en</strong>cionales<br />

Listema numérico logarítmico (LNS)<br />

El sistema numérico logarítmico (LNS) es análogo al sistema de punto flotante,<br />

con una mantisa de punto fijo y un expon<strong>en</strong>te fraccional. Un número <strong>en</strong> LNS es<br />

repres<strong>en</strong>tado por:<br />

X = ±r ±ex (B.7)<br />

donde r es la raíz del sistema, y ex es el expon<strong>en</strong>te LNS. El formato LNS<br />

consiste <strong>en</strong> un bit de signo para el número y otro para el expon<strong>en</strong>te, un expon<strong>en</strong>te<br />

<strong>en</strong>tero de I − bits y F fraccionales bits de precisión. El formato <strong>en</strong> forma gráfica<br />

es:


Apéndice B. Sistemas numéricos 158<br />

Signo Signo de expon<strong>en</strong>te Expon<strong>en</strong>te <strong>en</strong>tero Expon<strong>en</strong>te fraccional<br />

Sx Se I F<br />

El LNS como el sistema de punto flotante posee una precisión no uniforme.<br />

Pequeños valores de X son resueltos con gran precisión, miemtras que los grandes<br />

valores pose<strong>en</strong> una precisión pobre.<br />

La atracción histórica del LNS se <strong>en</strong>cu<strong>en</strong>tra <strong>en</strong> la habilidad para implem<strong>en</strong>tar<br />

efici<strong>en</strong>tem<strong>en</strong>te la multiplicación, la división y la pot<strong>en</strong>ciación. Por ejemplo, el<br />

producto C = A × B, donde A, B y C son palabras LNS, esta dada por:<br />

C = r eA × r eB = r eA+eB = r eC (B.8)<br />

Esto es, el expon<strong>en</strong>te de un producto LNS es simplem<strong>en</strong>te la suma de dos<br />

expon<strong>en</strong>tes. La división y otras operaciones se resuelv<strong>en</strong> de manera similar. La<br />

dev<strong>en</strong>taja de este sistema es la complejidad con que se deb<strong>en</strong> resolver la adición<br />

y la substracción. Las mismas se basan <strong>en</strong> la sigui<strong>en</strong>te operatoria, sonde se asume<br />

que A > B.<br />

C = A + B = 2 eA + 2 eB = 2 eA<br />

eB−eA eC<br />

1 + 2 = 2


Apéndice C<br />

<strong>Multiplicación</strong> <strong>Secu<strong>en</strong>cial</strong><br />

aplicada al Control de<br />

Movimi<strong>en</strong>to<br />

C.1. Introducción<br />

En sistemas de control de posición exist<strong>en</strong> aplicaciones <strong>en</strong> las cuales se requiere<br />

la ejecución de una acción de control sobre una máquina <strong>en</strong> un período de tiempo<br />

que dep<strong>en</strong>de inversam<strong>en</strong>te de la máxima velocidad que se desea imponer sobre<br />

la misma. Esta situación lleva a la necesidad de disponer de algoritmos muy<br />

rápidos y efici<strong>en</strong>tes que puedan realizar el procesami<strong>en</strong>to <strong>en</strong> tiempos muy breves.<br />

Estos algoritmos donde se requiere alta velocidad de procesami<strong>en</strong>to constituye<br />

una aplicación ideal para la implem<strong>en</strong>tación hardware de los mismos <strong>en</strong> FPGA.<br />

Tal es el caso de la aplicación realizada sobre el control de posición de un<br />

Acelerador Lineal de Partículas, cuyas características de gran precisión <strong>en</strong> la<br />

posición, y de gran cantidad de motores asociados, obliga a la utilización de<br />

procesami<strong>en</strong>to de altísima velocidad, con la mayor economía de recursos lógicos<br />

159


MS aplicada al Control de Movimi<strong>en</strong>to 160<br />

<strong>en</strong> las FPGAs.<br />

Control de posición del CLIC<br />

El control de posición del Compact Linear Collider (CLIC), acelerador lineal<br />

de partículas del C<strong>en</strong>tro Europeo de Investigación Nuclear (C<strong>en</strong>tre Europe<strong>en</strong>-<br />

ne pour la Recherche Nucleaire), requiere <strong>en</strong> forma int<strong>en</strong>siva el posicionami<strong>en</strong>to<br />

preciso y rápido de motores paso a paso, por lo que es necesario utilizariles de<br />

velocidad que se ajust<strong>en</strong> a la dinámica de la carga a fin de garantizar movi-<br />

mi<strong>en</strong>tos sin pérdidas de pasos. La principal v<strong>en</strong>taja tecnológica del CLIC es la<br />

conc<strong>en</strong>tración del haz de partículas <strong>en</strong> una sección mucho más reducida que <strong>en</strong><br />

los aceleradores circulares [39]. Esto permite obt<strong>en</strong>er partículas de mayor <strong>en</strong>ergía<br />

pero, como contrapartida exist<strong>en</strong> serias exig<strong>en</strong>cias <strong>en</strong> cuanto a la alineación del<br />

acelerador respecto de su haz de partículas. Este sistema posee una especificación<br />

de la desviación máxima de 10 micrones, a lo largo de los 24000 m de longitud del<br />

acelerador [40]. Para lograr tal especificación es necesario un control de posición<br />

capaz de comp<strong>en</strong>sar perturbaciones y desviaciones con una altísima presición [41].<br />

El sistema mecánico del CLIC esta compuesto por módulos de 1.4 mts. de lon-<br />

gitud. Cada módulo posee dos aceleradores con un ”girder” y un ”quadrupole”<br />

por acelerador. Los girders son elem<strong>en</strong>tos que soportan mecánicam<strong>en</strong>te las cavi-<br />

dades del acelerador mi<strong>en</strong>tras que los quadrupoles son electroimanes que ti<strong>en</strong><strong>en</strong><br />

por objeto la conc<strong>en</strong>tración de los haces de partículas. La Fig. C.1 muestra un<br />

esquema de la distribución de los motores que requier<strong>en</strong> los girders y quadrupoles.<br />

El sistema de alineación del CLIC consiste <strong>en</strong> un conjunto de s<strong>en</strong>sores que<br />

detectan la posición de las cavidades del haz. Luego de un adecuado procesa-<br />

mi<strong>en</strong>to de la información, se obti<strong>en</strong>e el movimi<strong>en</strong>to que se debe operar sobre los<br />

elem<strong>en</strong>tos del acelerador a través de un conjunto de motores paso a paso.


MS aplicada al Control de Movimi<strong>en</strong>to 161<br />

Figura C.1: Esquema de motores de una sección del CLIC.<br />

El control de alineación del CLIC se <strong>en</strong>carga de procesar señales y accionar<br />

múltiples motores paso a paso simultáneam<strong>en</strong>te utilizando perfiles de velocidad<br />

con una alta dinámica y gran precisión [42].<br />

C.2. Accionami<strong>en</strong>tos paso a paso<br />

Un accionami<strong>en</strong>to paso a paso está compuesto por un controlador digital de<br />

movimi<strong>en</strong>tos, un driver de pot<strong>en</strong>cia y el motor paso a paso, Fig. C.2. El controla-<br />

dor digital de movimi<strong>en</strong>tos g<strong>en</strong>era un perfil de movimi<strong>en</strong>to, típicam<strong>en</strong>te un perfil<br />

de velocidad, <strong>en</strong> función de parámetros tales como velocidad mínima, máxima,<br />

aceleración, cantidad de pasos, etc. Una vez establecido el perfil de velocidad, el<br />

controlador de movimi<strong>en</strong>to <strong>en</strong>vía los pulsos de accionami<strong>en</strong>to al driver del mo-<br />

tor. El espaciami<strong>en</strong>to <strong>en</strong>tre los pulsos de accionami<strong>en</strong>to determina la velocidad<br />

instantánea del eje y se lo conoce como temporización.<br />

La g<strong>en</strong>eración de un perfil de velocidad consiste <strong>en</strong> el cálculo de la temporiza-<br />

ción requerida acorde con los parámetros suministrados. La g<strong>en</strong>eración de estos<br />

perfiles puede ser del tipo on-line u off-line.


MS aplicada al Control de Movimi<strong>en</strong>to 162<br />

G<strong>en</strong>erador de<br />

perfil de<br />

movimi<strong>en</strong>to<br />

Indexador<br />

Controlador Motor paso a paso<br />

Figura C.2: Sistema de control de movimi<strong>en</strong>to de motores de accionami<strong>en</strong>to increm<strong>en</strong>tal.<br />

C.2.1. G<strong>en</strong>eración de perfiles de velocidad Off-line<br />

En el accionami<strong>en</strong>to off-line el perfil de velocidad es calculado previam<strong>en</strong>te<br />

al desarrollo del movimi<strong>en</strong>to [43] [44]. El perfil de velocidad y la temporización<br />

son calculados y guardados <strong>en</strong> un sistema de almac<strong>en</strong>ami<strong>en</strong>to el cual es accedido<br />

cada vez que se ejecuta un paso.<br />

Estos sistemas pose<strong>en</strong> desv<strong>en</strong>tajas importantes: requier<strong>en</strong> una cantidad de ti-<br />

mers y de memoria proporcional a la ext<strong>en</strong>sión y precisión de los desplazami<strong>en</strong>tos;<br />

además son poco flexibles.<br />

C.2.2. G<strong>en</strong>eración de perfiles de velocidad On-line<br />

Algoritmos conv<strong>en</strong>cionales<br />

En cuanto a los perfiles on-line, los mismos son g<strong>en</strong>erados por un sistema<br />

intelig<strong>en</strong>te que realiza la operación de cálculo mediante la utilización de un al-<br />

goritmo. La Fig. C.3 muestra un diagrama de flujo de un algoritmo básico. En<br />

este diagrama se distingu<strong>en</strong> dos bloques principales, la construcción de Vr(k) <strong>en</strong><br />

el cual se g<strong>en</strong>era el perfil de velocidad y el cálculo de ∆t(k), <strong>en</strong> el cual se calcula<br />

el período de tiempo <strong>en</strong>tre el paso actual y el próximo. La construcción de Vr(k)<br />

se efectúa a partir de parámetros que caracterizan al perfil, tal como velocidad<br />

inicial (Vmin = Vr(0)), velocidad máxima (Vmax), aceleración (a1) y desaceleración


MS aplicada al Control de Movimi<strong>en</strong>to 163<br />

t k-1<br />

G<strong>en</strong>eración<br />

de pulsos<br />

k=1<br />

Construcción<br />

de V (k)<br />

r<br />

Cálculo<br />

de t<br />

k<br />

Accionami<strong>en</strong>to<br />

de un paso<br />

k=N<br />

?<br />

Fin<br />

si<br />

no<br />

t k<br />

k=k+1<br />

Figura C.3: Diagrama de flujo de un algoritmo on-line.


MS aplicada al Control de Movimi<strong>en</strong>to 164<br />

(a2) del motor, y cantidad de pasos N que debe ejecutar el mismo. El controlador<br />

calcula para el k-esimo paso el valor de la velocidad que debe ejecutar <strong>en</strong> ese<br />

instante.<br />

paso.<br />

En la Fig. C.4 se muestra un perfil de velocidad trapezoidal.<br />

V max<br />

V min<br />

aceleración desaceleración<br />

Figura C.4: Perfil de velocidad trapezoidal.<br />

La Ec. (C.2) muestra el cálculo de ∆t(k) de un algoritmo típico para el k-esimo<br />

∆t(k) = 1<br />

Vr(k)<br />

2<br />

∆t(k) = <br />

V 2<br />

max − 2 (N − k − 1) a + V 2 max − 2 (N − 1) a<br />

t<br />

(C.1)<br />

(C.2)<br />

Este algoritmo involucra divisiones y raíces lo que conlleva un elevado tiempo de<br />

cálculo para obt<strong>en</strong>er ∆t(k). El tiempo de cálculo, Tc, impone una limitación a la<br />

velocidad debido a que el período <strong>en</strong>tre pasos no puede ser inferior a Tc. De este<br />

modo, la velocidad máxima, expresada <strong>en</strong> pasos por seg., está limitada por la Ec.<br />

(C.3).<br />

Vmax = 1<br />

Tc<br />

(C.3)


MS aplicada al Control de Movimi<strong>en</strong>to 165<br />

Algoritmos iterativos<br />

Los algoritmos conv<strong>en</strong>cionales pose<strong>en</strong> un Tc elevado y por lo tanto estos al-<br />

goritmos no pued<strong>en</strong> utilizarse para altas velocidades. Carrica et al propusieron<br />

un nuevo algoritmo on-line que reduce s<strong>en</strong>siblem<strong>en</strong>te el Tc [45]. Este algoritmo es<br />

de tipo iterativo y asume que ∆t(k) = nk · Tc. El algoritmo increm<strong>en</strong>ta iterativa-<br />

m<strong>en</strong>te nk, a partir de nk = 1 hasta que ∆t(k) alcance el valor deseado de Vr(k),<br />

si<strong>en</strong>do Vr(k) la velocidad de refer<strong>en</strong>cia <strong>en</strong> el k-esimo paso.<br />

Vr(k) = 1<br />

∆t(k)<br />

(C.4)<br />

Si la Ec. (C.4) se verifica, <strong>en</strong>tonces se ejecuta un nuevo paso. En caso contrario<br />

nk se increm<strong>en</strong>ta y se repite el proceso.<br />

La resolución de ∆t(k) <strong>en</strong> la Ec. (C.4) es Tc. En consecu<strong>en</strong>cia estos algoritmos<br />

trabajan con intervalos discretos y la Ec. (C.4) se reescribió como la Ec. (C.5).<br />

Vr(k) ≥ 1<br />

∆t(k)<br />

(C.5)<br />

Adicionalm<strong>en</strong>te, con el objetivo de reducir el Tc, se evitó el coci<strong>en</strong>te, utilizando<br />

la Ec. (C.6).<br />

Vr(k) · ∆t(k) ≥ 1 (C.6)<br />

Si bi<strong>en</strong> este algoritmo pres<strong>en</strong>ta la limitación expresada por la Ec. (C.3), el Tc<br />

mucho m<strong>en</strong>or debido a la m<strong>en</strong>or complejidad del cálculo.<br />

Una desv<strong>en</strong>taja del algoritmo iterativo es la exist<strong>en</strong>cia de valores discretos de<br />

Vr(k) que crea un efecto de cuantización <strong>en</strong> la velocidad. Observando la Ec. (C.4)<br />

y considerando que nk es un número <strong>en</strong>tero positivo, Vr(k) toma valores:


MS aplicada al Control de Movimi<strong>en</strong>to 166<br />

Vr(k) = 1<br />

∆tk<br />

= 1<br />

nk · Tc<br />

⎧<br />

⎪⎨<br />

=<br />

.<br />

⎪⎩<br />

Vmax ; nk = 1<br />

Vmax<br />

2<br />

Vmax<br />

K<br />

; nk = 2<br />

.<br />

; nk = K<br />

(C.7)<br />

Como consecu<strong>en</strong>cia, la velocidad máxima del motor, Vmax, no sólo queda<br />

limitada por 1<br />

Tc<br />

V max<br />

2<br />

V max − , 3<br />

V max<br />

3<br />

sino que además el perfil excursiona a saltos V max − V max<br />

2 ,<br />

V max − , etc.<br />

4<br />

El perfil de velocidad es alterado por esta ”cuantización” ya que se produc<strong>en</strong><br />

discontinuidades <strong>en</strong> la velocidad con la consigui<strong>en</strong>te dificultad del motor fr<strong>en</strong>te a<br />

esta exig<strong>en</strong>cia de aceleraciones infinitas, como puede verse <strong>en</strong> la Fig. C.5 donde<br />

se ilustra el perfil ideal versus el perfil de velocidad cuantizado.<br />

Vmáx<br />

v(t)<br />

Vmáx/2<br />

Vmáx/3<br />

n máx=4<br />

n máx= 3<br />

n máx =2<br />

Vmáx/4<br />

Vmáx/5<br />

Vmáx/6<br />

nmáx=5 nmáx=6 nmáx=7 i(k)<br />

t0 t1 t2 t3 t4 t5 n máx= 1<br />

Figura C.5: Perfil de velocidad, deseado, cuantizado y la temporización resultante.<br />

La Fig. C.6 muestra los perfiles de velocidad reales obt<strong>en</strong>idos mediante el al-<br />

goritmo iterativo ejecutado <strong>en</strong> un DSP, donde se desarrolló el desplazami<strong>en</strong>to con<br />

T c<br />

t<br />

k


MS aplicada al Control de Movimi<strong>en</strong>to 167<br />

una velocidad máxima de 5700 pasos<br />

s . Se observan saltos de velocidad importantes<br />

debido al efecto de cuantización.<br />

Figura C.6: (Izquierda) Posición y velocidad con el algoritmo iterativo. (Derecha)<br />

Detalle del perfil de posición y velocidad del perfil iterativo<br />

Se puede concluir que, para reducir el problema de la cuantización, es muy im-<br />

portante reducir apreciablem<strong>en</strong>te los tiempos de procesami<strong>en</strong>to. De esta manera<br />

se podrían obt<strong>en</strong>er velocidades mucho mayores<br />

C.3. G<strong>en</strong>eración de perfiles de velocidad me-<br />

diante FPGA<br />

A fin de reducir los tiempos de procesami<strong>en</strong>to se implem<strong>en</strong>tó <strong>en</strong> hardware (<strong>en</strong><br />

FPGA) el algoritmo iterativo. Comparativam<strong>en</strong>te, el tiempo de procesami<strong>en</strong>to


MS aplicada al Control de Movimi<strong>en</strong>to 168<br />

de un sistema implem<strong>en</strong>tado <strong>en</strong> hardware es sustancialm<strong>en</strong>te inferior al de un<br />

procesador y, adicionalm<strong>en</strong>te, se dispone de la capacidad de realizar ev<strong>en</strong>tos <strong>en</strong><br />

paralelo.<br />

En la Fig. C.7 se muestra la arquitectura hardware del algoritmo iterativo.<br />

La g<strong>en</strong>eración del perfil trapezoidal se constituye a partir de los datos de la<br />

aceleración, velocidad mínima, máxima, y número de pasos. La lógica interna de<br />

selección toma la decisión <strong>en</strong> base a estos parámetros y de este modo ejecuta el<br />

perfil de refer<strong>en</strong>cia que el motor int<strong>en</strong>tará seguir.<br />

Controlador Digital<br />

G<strong>en</strong>erador del Perfil de<br />

velocidad de refer<strong>en</strong>cia<br />

RELOJ<br />

T ck<br />

CONTADOR<br />

V R<br />

n k<br />

MULTIPLICADOR<br />

CONSTANTE=1/T c<br />

V x n<br />

R k<br />

COMPARADOR<br />

V x n<br />

R k 1/T c<br />

Interfaz de<br />

Accionami<strong>en</strong>to<br />

DRIVERS DE<br />

POTENCIA<br />

MOTOR PASO<br />

A PASO<br />

Figura C.7: Arquitectura hardware del algoritmo de g<strong>en</strong>eración de perfil de velocidad.<br />

La implem<strong>en</strong>tación hardware del algoritmo permite reducir sustancialm<strong>en</strong>te<br />

el Tc aprovechando la capacidad de las FPGAs de realizar todos procesos <strong>en</strong><br />

simultáneam<strong>en</strong>te, a difer<strong>en</strong>cia de la ejecución secu<strong>en</strong>cial propia de un DSP. Es<br />

decir, el algoritmo implem<strong>en</strong>tado <strong>en</strong> hardware efectúa <strong>en</strong> forma indep<strong>en</strong>di<strong>en</strong>te, la<br />

g<strong>en</strong>eración del perfil de velocidad de refer<strong>en</strong>cia y el cálculo de la Ec. (C.6). De<br />

este modo, se puede inferir que el Tc dep<strong>en</strong>de fundam<strong>en</strong>talm<strong>en</strong>te de la tarea que<br />

mayor demanda de tiempo requiere.<br />

La construcción del perfil de velocidad es una tarea que se resume a una cu<strong>en</strong>ta<br />

increm<strong>en</strong>tal que inicia <strong>en</strong> Vmin, alcanza el valor Vmax <strong>en</strong> un período de tiempo t1,<br />

una vez que se alcanzó este valor permanece un período de tiempo t2 <strong>en</strong> el mismo


MS aplicada al Control de Movimi<strong>en</strong>to 169<br />

y posteriorm<strong>en</strong>te decrem<strong>en</strong>ta la cu<strong>en</strong>ta hasta alcanzar nuevam<strong>en</strong>te el valor Vmin<br />

<strong>en</strong> un tiempo t3 que usualm<strong>en</strong>te es igual a t1.<br />

El contador nk cu<strong>en</strong>ta pulsos de reloj increm<strong>en</strong>tando su valor periodicam<strong>en</strong>te<br />

mi<strong>en</strong>tras que el producto de la Ec. (C.8) resulte inferior a 1 . Cuando el producto<br />

Tc<br />

se hace mayor o igual que 1 , se g<strong>en</strong>era un pulso que g<strong>en</strong>era un nuevo paso del<br />

Tc<br />

motor y adicionalm<strong>en</strong>te reinicia la cu<strong>en</strong>ta del contador.<br />

Por otro lado, la implem<strong>en</strong>tación hardware de la Ec. (C.6) involucra el pro-<br />

ducto Vr(k) · ∆t(k), producto que se debe comparar con la unidad. Analizando<br />

este producto se puede observar que, si bi<strong>en</strong> los valores del perfil de refer<strong>en</strong>cia<br />

pued<strong>en</strong> ser <strong>en</strong>teros binarios, ∆t es de formato decimal. Aunque se ha visto <strong>en</strong><br />

capítulos anteriores que es posible el manejo de magnitudes decimales o incluso<br />

de punto flotante <strong>en</strong> FPGA, es más efici<strong>en</strong>te el uso magnitudes <strong>en</strong>teras.<br />

A fin de operar con <strong>en</strong>teros y reducir la cantidad de multiplicaciones, se pro-<br />

pone una variante que consiste <strong>en</strong> reescribir la Ec. (C.6) como<br />

<strong>en</strong> la cual 1<br />

Tc<br />

Vr(k) · nk ≥ 1<br />

Tc<br />

(C.8)<br />

es un valor conocido y constante. Esta simplificación reduce las<br />

operaciones a sólo una multiplicación, va a imponer el período Tc.<br />

C.3.1. Implem<strong>en</strong>tación del producto Vr · nk<br />

En cuanto al producto Vr · nk, la solución inmediata consiste <strong>en</strong> un Multi-<br />

plicador Paralelo. Esta alternativa pres<strong>en</strong>ta como v<strong>en</strong>taja el mínimo retardo que<br />

impon<strong>en</strong> las compuertas lógicas.<br />

Considerando que las FPGAs pose<strong>en</strong> recursos dedicados para la ejecución de<br />

adiciones por propagación de acarreo, la opción inmediata es un multiplicador<br />

tipo Ripple Carry. Este es un multiplicador combinacional (Sec. 2.4)que ejecuta


MS aplicada al Control de Movimi<strong>en</strong>to 170<br />

el producto velozm<strong>en</strong>te, dep<strong>en</strong>di<strong>en</strong>do su velocidad del retardo de la longitud de<br />

palabra de sus operandos.<br />

Con el objetivo de cuantificar el Tc requerido por este multiplicador, se imple-<br />

m<strong>en</strong>tó el mismo <strong>en</strong> una FPGA XC4006E-4 de Xilinx, que es la misma tecnología<br />

que utiliza el CLIC <strong>en</strong> el control de alineación del acelerador.<br />

El multiplicador Ripple Carry para una longitud de palabra de 16 bits, que<br />

corresponde a una velocidad máxima seleccionable de 65535 pasos<br />

s . En estas condi-<br />

ciones se pudo ejecutar u producto <strong>en</strong> un Tc = 92, 5ns. De esta forma, la velocidad<br />

máxima teórica que se puede desarrollar es:<br />

Vmax ≤ 1<br />

Tc<br />

6 pasos<br />

= 10, 81x10<br />

s<br />

(C.9)<br />

obt<strong>en</strong>i<strong>en</strong>dose una cuantización del perfil de velocidad de solo el 0.6 % de la máxima<br />

velocidad seleccionable.<br />

Si bi<strong>en</strong> el Tc obt<strong>en</strong>ido es ideal para la aplicación, este multiplicador utilizó el<br />

96,5 % de los recursos lógicos de la FPGA, haci<strong>en</strong>do imposible la utilización de<br />

otros bloques para la ejecución del algoritmo. La Fig. C.8 muestra el consumo de<br />

recursos lógicos del multiplicador implem<strong>en</strong>tado.<br />

Figura C.8: Implem<strong>en</strong>tación del multiplicador Ripple Carry <strong>en</strong> una FPGA<br />

XC4006E.


MS aplicada al Control de Movimi<strong>en</strong>to 171<br />

Otra opción, tal como el multiplicador optimizado <strong>en</strong> área propuesto por Xi-<br />

linx [21], permite ejecutar una multiplicación de 16 <strong>en</strong> un Tc = 89ns, inferior<br />

incluso que con el multiplicador Ripple Carry, pero con un consumo de recur-<br />

sos lógicos de aproximadam<strong>en</strong>te un 83,2 %. La Fig. C.9 muestra el consumo de<br />

recursos lógicos de este multiplicador implem<strong>en</strong>tado.<br />

Figura C.9: Implem<strong>en</strong>tación de un multiplicador optimizado <strong>en</strong> área de Xilinx <strong>en</strong><br />

una FPGA XC4006E.<br />

Para solucionar este problema se propone la utilización de Multiplicadores Se-<br />

cu<strong>en</strong>ciales, que permit<strong>en</strong> realizar un producto con un mínimo consumo de recursos<br />

lógicos.<br />

En particular se considera la utilización de un SMSR (ver. Sección 3.3.1), <strong>en</strong><br />

el cual la ejecución del producto se pudo realizar <strong>en</strong> Tc = 229ns para un m = 16.<br />

En consecu<strong>en</strong>cia, la velocidad máxima teórica que obt<strong>en</strong>ida es:<br />

Vmax ≤ 1<br />

Tc<br />

6 pasos<br />

= 4,36x10<br />

s<br />

(C.10)<br />

Además, este esquema permitió la ejecución del algoritmo iterativo con saltos<br />

de velocidad de sólo 1,46 % de la máxima velocidad. Si bi<strong>en</strong> este Tc es mayor<br />

que el obt<strong>en</strong>ido con un Multiplicador Paralelo, el consumo de recursos lógicos del


MS aplicada al Control de Movimi<strong>en</strong>to 172<br />

SMSR para una longitud de palabra de 16 bits es del 11.32 %, es decir 8 a 9 veces<br />

inferior comparativam<strong>en</strong>te. Adicionalm<strong>en</strong>te, este reducido consumo de recursos<br />

lógicos permite controlar multiples motores.<br />

C.4. Resultados experim<strong>en</strong>tales<br />

C.4.1. Modo de funcionami<strong>en</strong>to <strong>en</strong> pasos<br />

Con el objetivo de evaluar el sistema propuesto, se implem<strong>en</strong>tó el controlador<br />

digital <strong>en</strong> una FPGA XC4006-3 de Xilinx, tecnología utilizada <strong>en</strong> los <strong>en</strong>sayos del<br />

CLIC. Este dispositivo posee una capacidad de 6000 puertas de lógicas y puede<br />

funcionar con un reloj de hasta 80 MHz.<br />

En los experim<strong>en</strong>tos se utilizó un motor híbrido cuyas características son: re-<br />

solución angular 400 paso<br />

rev , mom<strong>en</strong>to de inercia 13·10−7 kg m 2 y torque de ret<strong>en</strong>ción<br />

Tret = 33 · 10 −7 N m.<br />

La medición de la posición fue realizada mediante un <strong>en</strong>coder óptico incre-<br />

m<strong>en</strong>tal ELAP-E521, cuya resolución es 1024 pulsos por revolución y su mom<strong>en</strong>-<br />

to de inercia de 2,5 · 10 −6 kg m 2 . El acople fue realizado con un acople elástico<br />

HELICAL-WA25 con un mom<strong>en</strong>to de inercia de 2,3 · 10 −6 kg m 2 .<br />

La curva de la posición fue obt<strong>en</strong>ida mediante la lectura de la señal del <strong>en</strong>coder<br />

a través de un contador de tiempo de alta resolución. El perfil de la velocidad fue<br />

calculado off-line, realizando la derivación numérica de los datos de posición.<br />

El multiplicador SMSR utilizó un reloj sincrónico de 40 MHz, resultando un<br />

Tc de 400 ns, para 16 bits . Se adoptó un Tclk = 800 ns, que es despreciable <strong>en</strong><br />

relación a la velocidad del motor.<br />

Se aplicó al motor paso a paso un desplazami<strong>en</strong>to de 12000 pasos mediante<br />

un perfil trapezoidal con las sigui<strong>en</strong>tes características: Vmín = 500 pasos<br />

s , Vmáx =


MS aplicada al Control de Movimi<strong>en</strong>to 173<br />

6000 pasos<br />

s<br />

y aceleración máxima amáx = 4200 pasos<br />

s 2 .<br />

Los perfiles resultantes de velocidad y posición se muestran <strong>en</strong> la Fig. C.10.<br />

El bajo tiempo de procesami<strong>en</strong>to, Tc, permitió un perfil casi continuo, con veloci-<br />

dades mucho mayores que las g<strong>en</strong>eradas por algoritmos estándar implem<strong>en</strong>tados<br />

<strong>en</strong> software. Debido a las características del motor increm<strong>en</strong>tal el perfil atraviesa<br />

zonas de resonancia, tal como se predice <strong>en</strong> [46], [47], [48] y [49]. Este efecto, que<br />

se observó <strong>en</strong> la región de bajas velocidades, no logró sacar de sincronismo a las<br />

máquinas ya que las mismas se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> la zona de trabajo por debajo de<br />

la curva de pull-out 1 .<br />

Figura C.10: Perfil de velocidad y posición del accionami<strong>en</strong>to controlado por un<br />

sistema basado <strong>en</strong> FPGA. 15 rev<br />

s<br />

≡ 6000 pasos<br />

s<br />

1 Previo a la obt<strong>en</strong>ción de resultados experim<strong>en</strong>tales, los perfiles son simulados para verificar<br />

que puedan <strong>en</strong>fr<strong>en</strong>tar la inercia impuesta.


MS aplicada al Control de Movimi<strong>en</strong>to 174<br />

Adicionalm<strong>en</strong>te, se aplicó un perfil de velocidad con características más exig<strong>en</strong>-<br />

tes, velocidad máxima de 24000 pasos<br />

s<br />

y una aceleración aproximada de 20000 pasos<br />

s 2 .<br />

En la Fig. C.11 se muestra el perfil obt<strong>en</strong>ido a las altas velocidades con paso com-<br />

pleto, donde se aprecia la continuidad <strong>en</strong> toda la gama efectiva de la velocidad.<br />

Figura C.11: Perfil de velocidad del accionami<strong>en</strong>to controlado por un sistema<br />

basado <strong>en</strong> FPGA. 62,5 rev<br />

s<br />

≡ 25000 pasos<br />

s<br />

C.4.2. Modo de funcionami<strong>en</strong>to <strong>en</strong> micropasos<br />

El modo micropaso consiste <strong>en</strong> el accionami<strong>en</strong>to del movimi<strong>en</strong>to del motor in-<br />

crem<strong>en</strong>tal <strong>en</strong> fracciones de un paso. De esta manera se logra una m<strong>en</strong>or vibración<br />

y ruido audible, y sobre todo una mejor resolución de posición (<strong>en</strong> fracciones 1/n<br />

del paso original). En cuanto a la g<strong>en</strong>eración del perfil de velocidad, la dificultad


MS aplicada al Control de Movimi<strong>en</strong>to 175<br />

estriba <strong>en</strong> que se debe ejecutar el algoritmo <strong>en</strong> tiempos muy cortos, correspon-<br />

di<strong>en</strong>tes al tiempo que transcurre <strong>en</strong>tre micropaso y micropaso.<br />

Se realizaron <strong>en</strong>sayos <strong>en</strong> modo micropaso, el los que se utilizó un motor SLO–<br />

SYN KML093F14C5 cuyas características son: resolución angular 200 paso<br />

, torque<br />

rev<br />

de ret<strong>en</strong>ción Thold = 816 N cm y mom<strong>en</strong>to de inercia de 3,32 kg cm 2 . Los valores<br />

de la posición fueron obt<strong>en</strong>idos a través de un <strong>en</strong>coder óptico increm<strong>en</strong>tal con<br />

una resolución de 500 pulsos por revolución. El driver, con capacidad de manejo<br />

de micropasos, es un SLO-SYN MD808, configurado para producir 2000 pulsos<br />

por revolución. Se aplicó un perfil de alta velocidad con Vmín = 500 pasos<br />

s , Vmáx =<br />

50000 pasos<br />

s<br />

y una aceleración máxima amáx = 5000 pasos<br />

s 2 . El Tc adoptado para esta<br />

aplicación fue de 400 ns de manera de producir saltos de velocidad máximos de<br />

1000 pasos<br />

s<br />

<strong>en</strong> Vmax, de manera que el salto sea m<strong>en</strong>or que el 5 % Vmáx. Este efecto<br />

puede observarse <strong>en</strong> el plateau del perfil <strong>en</strong> la Fig. C.12.<br />

Los resultados relevados demuestran que el sistema alcanzó muy altas velo-<br />

cidades, inalcanzables con algoritmos estándares ejecutados por un procesador.<br />

Sin embargo, la necesidad de realizar perfiles de velocidad <strong>en</strong> modo micropaso re-<br />

quiere una mayor velocidad de cálculo, aunque sin el sacrificio de recursos lógicos<br />

que implica la utilización de un multiplicador paralelo.<br />

Para lograr la mayor velocidad de cálculo se propone utilizar un nuevo tipo de<br />

multiplicador. El multiplicador secu<strong>en</strong>cial de sumas consecutivas (SMSC) es una<br />

variante de la multiplicación secu<strong>en</strong>cial optimizada para realizar un producto <strong>en</strong><br />

la mitad de tiempo que el SMSR (ver Sección 3.3.3).<br />

Se realizó un nuevo <strong>en</strong>sayo con el SMSC. El sistema de driver-motor <strong>en</strong>sayado<br />

es el mismo que se utilizó <strong>en</strong> las experi<strong>en</strong>cias <strong>en</strong> modo micropaso. El perfil de velo-<br />

cidad aplicado pres<strong>en</strong>ta las sigui<strong>en</strong>tes características: velocidad Vmáx = 72000 pasos<br />

s ,<br />

Tc de 200 ns de manera de reducir los saltos de velocidad por debajo de 5 % de


MS aplicada al Control de Movimi<strong>en</strong>to 176<br />

Figura C.12: Perfil de velocidad del accionami<strong>en</strong>to utilizando el modo de micropasos.<br />

Vmax. La Fig. C.13 muestra el perfil de velocidad resultante. Como <strong>en</strong> las me-<br />

diciones anteriores puede observarse el efecto de cuantización, aunque reducido,<br />

tanto <strong>en</strong> las rampas como <strong>en</strong> el plateau del perfil.


MS aplicada al Control de Movimi<strong>en</strong>to 177<br />

Figura C.13: Perfiles de posición y velocidad para un sistema de accionami<strong>en</strong>to<br />

<strong>en</strong> modomicropaso.


MS aplicada al Control de Movimi<strong>en</strong>to 178<br />

C.5. Conclusiones<br />

Se pres<strong>en</strong>tó una implem<strong>en</strong>tación hardware, utilizando FPGA, de los algorit-<br />

mos iterativos de g<strong>en</strong>eración de perfiles de velocidad. El uso de esta tecnología<br />

permitió reducir sustancialm<strong>en</strong>te el tiempo de procesami<strong>en</strong>to equival<strong>en</strong>te fr<strong>en</strong>te<br />

al desarrollado por cualquier procesador rápido. Como consecu<strong>en</strong>cia se redujeron<br />

apreciablem<strong>en</strong>te los saltos de velocidad que se observaban <strong>en</strong> los perfiles de velo-<br />

cidad on-line g<strong>en</strong>erados por software. Esto a su vez, posibilitó llegar a velocidades<br />

del motor mucho mayores dado que se eliminaron las exig<strong>en</strong>cias de aceleración<br />

propias de los saltos de velocidad.<br />

Gracias a las arquitecturas SMSR y SMSC se consiguió un reducido consumo<br />

de recursos lógicos para cada controlador digital, por lo que se pued<strong>en</strong> accionar<br />

multiples motores simultáneam<strong>en</strong>te. Esta v<strong>en</strong>taja hace al sistema muy conve-<br />

ni<strong>en</strong>te ya que permite increm<strong>en</strong>tar aún más el número de motores recurri<strong>en</strong>do<br />

a FPGAs de mayor capacidad. Esto fue clave para su aplicación ext<strong>en</strong>siva <strong>en</strong> el<br />

control de posición del CLIC.<br />

La idea propuesta, evaluada experim<strong>en</strong>talm<strong>en</strong>te, posibilita la operación de<br />

motores paso a paso a muy altas velocidades, lo que antes estaba vedado debido<br />

a las dificultades tecnológicas de los procesadores para at<strong>en</strong>der con rapidez el<br />

<strong>en</strong>vío de la consigna de nuevos pasos a la máquina.


Apéndice D<br />

Publicaciones<br />

D.1. Introducción<br />

Los trabajos que se pres<strong>en</strong>tan a continuación resum<strong>en</strong> la investigación realizada durante los<br />

últimos años.<br />

Multiplicadores secu<strong>en</strong>ciales <strong>en</strong> FPGA: Evaluación y Comparación de<br />

Parámetros<br />

En este trabajo se pres<strong>en</strong>ta el estado del arte de multiplicadores secu<strong>en</strong>ciales ori<strong>en</strong>tado a<br />

su implem<strong>en</strong>tación <strong>en</strong> FPGA. Se pres<strong>en</strong>tan estimaciones de consumo de recursos lógicos y de<br />

comportami<strong>en</strong>to temporal de las variantes exist<strong>en</strong>tes y propuestas con el objetivo de contrastar<br />

las características de los multiplicadores pres<strong>en</strong>tados.<br />

Estudio comparativo de multiplicadores secu<strong>en</strong>ciales implem<strong>en</strong>tados <strong>en</strong><br />

FPGA<br />

En este trabajo se realizaron <strong>en</strong>sayos donde se comparan las estructuras exist<strong>en</strong>tes y pro-<br />

puestas, <strong>en</strong> las cuales se puede verificar la importante reducción de los recursos mant<strong>en</strong>i<strong>en</strong>do<br />

un aceptable desempeño <strong>en</strong> cuanto a velocidad.<br />

179


Apéndice D. Publicaciones 180<br />

Floating Point Multipliers with Reduced FPGA Area<br />

En este trabajo se realizó un estudio comparativo del multiplicador secu<strong>en</strong>cial para dife-<br />

r<strong>en</strong>tes tecnologías de FGPA.<br />

Performance evaluation of Floating Point Multipliers<br />

En este trabajo se plasmaron algunos de los resultados de la aplicación del SM a punto<br />

flotante con el objetivo de compararlos con el de algunos multiplicadores propuestos <strong>en</strong> la<br />

literatura por otros autores.<br />

Novel FPGA based Floating Point Multiplier: Consecutive-Sums Se-<br />

qu<strong>en</strong>tial Multiplier<br />

En este trabajo se pres<strong>en</strong>ta una estructura de multiplicadores de punto flotante parametri-<br />

zable basada <strong>en</strong> una variante del multiplicador secu<strong>en</strong>cial de sumas consecutivas que con una<br />

sustancial reducción de los recursos lógicos utilizados mejora el desempeño del multiplicador <strong>en</strong><br />

velocidad. Se realizaron <strong>en</strong>sayos donde se evalúa la arquitectura propuesta y se la compara con<br />

los resultados previos obt<strong>en</strong>idos.<br />

Novel Stepper Motor Controller Based on FPGA Hardware Implem<strong>en</strong>-<br />

tation<br />

En esta publicación se pres<strong>en</strong>tó un nuevo sistema de g<strong>en</strong>eración de perfiles de velocidad<br />

basado <strong>en</strong> FPGA, el cual permite que las máquinas increm<strong>en</strong>tales puedan utilizarse <strong>en</strong> todo el<br />

rango de velocidades, aún a altas velocidades. Se pres<strong>en</strong>tan los <strong>en</strong>sayos <strong>en</strong> los cuales se demuestra<br />

que el controlador basado <strong>en</strong> FPGA posee un des<strong>en</strong>volvimi<strong>en</strong>to notorio, lo que permitió llegar<br />

a velocidades mayores a las obt<strong>en</strong>idas anteriorm<strong>en</strong>te con sistemas conv<strong>en</strong>cionales.<br />

FPGA based stepper motor controller<br />

En este trabajo se pres<strong>en</strong>taron algunos de los resultados obt<strong>en</strong>idos a partir de la implem<strong>en</strong>-<br />

tación de multiplicadores más veloces a fin de reducir el tiempo de procesami<strong>en</strong>to del algoritmo<br />

y con un consecu<strong>en</strong>tem<strong>en</strong>te aum<strong>en</strong>to de las velocidades alcanzadas por el motor increm<strong>en</strong>tal.


Multiplicadores secu<strong>en</strong>ciales <strong>en</strong> FPGA: evaluación y<br />

comparación de parámetros<br />

M. Funes, D. Carrica, M. B<strong>en</strong>edetti, P. Donato<br />

Laboratorio de Instrum<strong>en</strong>tación y Control<br />

Universidad Nacional de Mar del Plata, Arg<strong>en</strong>tina<br />

mfunes@fi.mdp.edu.ar **<br />

Resum<strong>en</strong> En este trabajo se pres<strong>en</strong>ta el estado del arte de multiplicadores secu<strong>en</strong>ciales<br />

ori<strong>en</strong>tado a su implem<strong>en</strong>tación <strong>en</strong> FPGA. Se pres<strong>en</strong>tan estimaciones<br />

de consumo de recursos lógicos y de comportami<strong>en</strong>to temporal que permit<strong>en</strong><br />

contrastar las características de los multiplicadores pres<strong>en</strong>tados.<br />

1. Introducción<br />

La multiplicación es una de las operaciones esc<strong>en</strong>ciales <strong>en</strong> el procesami<strong>en</strong>to aritmético.<br />

Adicionalm<strong>en</strong>te, es una de las tareas que más recursos lógicos consume. Décadas<br />

atrás cuando la arquitectura del multiplicador era estudiada para su implem<strong>en</strong>tación<br />

<strong>en</strong> circuitos de procesadores o unidades aritméticas de cálculo, el consumo de recursos<br />

circuitales era aceptado por la necesidad de realizar los cálculos más rápidam<strong>en</strong>te.<br />

Actualm<strong>en</strong>te, la utilización de las FPGAs permite el diseño personalizado de sistemas<br />

de procesami<strong>en</strong>to, lo cual ha masificado la aplicación de los mismos. La implem<strong>en</strong>tación<br />

<strong>en</strong> una FPGA de una unidad de cálculo con un gran consumo de recursos<br />

lógicos obliga a utilizar una FPGA de gran tamaño, lo que implica un mayor costo de<br />

producción. Con el objeto de reducir el consumo de recursos lógicos Funes et. al [1]<br />

propusieron la utilización del esquema de multiplicación Shift and Add [2], [3] , d<strong>en</strong>ominado<br />

también Multiplicador <strong>Secu<strong>en</strong>cial</strong> (SM), para sistemas basados <strong>en</strong> FPGA.<br />

Este multiplicador ejecuta un producto <strong>en</strong> forma secu<strong>en</strong>cial y se caracteriza por utilizar<br />

una cantidad reducida de recursos lógicos. Como contra-partida por su <strong>en</strong>tidad<br />

secu<strong>en</strong>cial, este multiplicador demanda un período mayor para ejecutar un producto.<br />

Exist<strong>en</strong> variantes del multiplicador SM que reduc<strong>en</strong> este período a costa de un mayor<br />

consumo de recursos lógicos [6].<br />

En este trabajo se explicitan las ecuaciones que determinan los parámetros característicos<br />

que describ<strong>en</strong> el comportami<strong>en</strong>to de multiplicadores secu<strong>en</strong>ciales implem<strong>en</strong>tables<br />

<strong>en</strong> FPGA. Adicionalm<strong>en</strong>te se pres<strong>en</strong>ta un estudio comparativo de los multiplicadores<br />

secu<strong>en</strong>ciales, sust<strong>en</strong>tado <strong>en</strong> las ecuaciones m<strong>en</strong>cionadas.<br />

** Este trabajo fue subsidiado por la Universidad Nacional de Mar del Plata (ING-15/G130),<br />

CONICET, y por la Ag<strong>en</strong>cia Nacional de Promoción Ci<strong>en</strong>tifica y Tecnológica (BID<br />

1201/OC-AR 2002), Arg<strong>en</strong>tina


2. Multiplicadores secu<strong>en</strong>ciales<br />

n−1 <br />

j=0<br />

Dados dos operandos, un multiplicando X = n−1 <br />

j=0<br />

xj2 j , y un multiplicador Y =<br />

yj2 j , el Cuadro 1 muestra el proceso de multiplicación para n = 4. El SM realiza el<br />

producto de este cuadro <strong>en</strong> forma secu<strong>en</strong>cial, acumulando un producto parcial yiX (i =<br />

0, 1, 2, 3) al resultado acumulado de la iteración anterior con el debido desplazami<strong>en</strong>to<br />

de un bit <strong>en</strong>tre ambos.<br />

Cuadro 1.<br />

x3 x2 x1 x0<br />

y3 y2 y1 y0<br />

s03 s02 s01 s00 ≡ y0X2 0<br />

s13 s12 s11 s10 ≡ y1X2 1<br />

+ s23 s22 s21 s20 ≡ y2X2 2<br />

s33 s32 s31 s30<br />

≡ y3X2 3<br />

p7 p6 p5 p4 p3 p2 p1 p0 ≡ P<br />

Exist<strong>en</strong> dos versiones dep<strong>en</strong>di<strong>en</strong>do del s<strong>en</strong>tido de los valores a acumular, con desplazami<strong>en</strong>to<br />

a la izquierda ó con desplazami<strong>en</strong>to a la derecha. En la multiplicación con<br />

desplazami<strong>en</strong>to a la izquierda se debe contar con un acumulador de longitud 2n bits.<br />

En este caso los productos parciales yjX son adicionados al resultado acumulado con<br />

un desplazami<strong>en</strong>to de un bit (2 1 ) hacia la izquierda, respecto al anterior. El algoritmo<br />

se puede analizar a partir de la Ec. (1), donde p(j) es el producto parcial de la iteración<br />

j.<br />

p(j + 1) = 2p(j) + y (n−1)−jX con p(0) = 0 (1)<br />

En la multiplicación con desplazami<strong>en</strong>to a la derecha los productos parciales yjX son<br />

adicionados al resultado acumulado con un desplazami<strong>en</strong>to de un bit (2 −1 ) hacia la<br />

derecha respecto al anterior.<br />

El algoritmo se observa <strong>en</strong> la Ec. (2).<br />

p(j + 1) = (p(j) + yjX2 n )2 −1<br />

con p(0) = 0 (2)<br />

Debido a que el desplazami<strong>en</strong>to a la derecha g<strong>en</strong>era un primer producto parcial multiplicado<br />

por 2 −n se debe pre-multiplicar y0X por 2 n para comp<strong>en</strong>sar el efecto del<br />

desplazami<strong>en</strong>to. Esta pre-multiplicación se puede efectuar fácilm<strong>en</strong>te, almac<strong>en</strong>ando<br />

p(j) <strong>en</strong> el segm<strong>en</strong>to más significativo de un registro de 2n bit.<br />

La implem<strong>en</strong>tación hardware del algoritmo de la multiplicación con desplazami<strong>en</strong>to<br />

a la derecha se puede observar <strong>en</strong> la Fig. 1. El multiplicador Y y la acumulación de<br />

los productos parciales p(j) son almac<strong>en</strong>ados <strong>en</strong> registros de desplazami<strong>en</strong>to. El bit yj<br />

del multiplicador es el bit m<strong>en</strong>os significativo exist<strong>en</strong>te <strong>en</strong> el registro Y <strong>en</strong> la iteración<br />

j. El mismo es utilizado <strong>en</strong> el producto yjX seleccionando 0 o X <strong>en</strong> la suma.<br />

El multiplicador SM requiere n iteraciones para la ejecución del producto y una<br />

iteración previa para la carga de los operandos. Por lo tanto este multiplicador puede<br />

realizar un producto <strong>en</strong> un período T = (n + 1)TCK, donde n es la longitud de los<br />

operandos y TCK el período de reloj aplicado sobre el multiplicador.


desplazami<strong>en</strong>to<br />

acarreo<br />

2N-1<br />

Producto<br />

N N-1 Parcial<br />

ADD<br />

N<br />

N<br />

N<br />

N<br />

N-1<br />

N-1<br />

desplazami<strong>en</strong>to<br />

Figura 1. SM con desplazami<strong>en</strong>to a la derecha.<br />

2.1. Multiplicador secu<strong>en</strong>cial sin <strong>en</strong>tradas registradas<br />

El multiplicador secu<strong>en</strong>cial sin <strong>en</strong>tradas registradas (SMSR) es una variante del<br />

multiplicador SM de desplazami<strong>en</strong>to a la derecha. El objetivo del SMSR es la simplificación<br />

del esquema de multiplicación evitando la carga paralelo de los registros<br />

del multiplicador y del multiplicando. El SMSR no carga los operandos, por lo que no<br />

existe la demora propia del ciclo de carga, lo cual constituye una v<strong>en</strong>taja. Por lo tanto,<br />

este multiplicador realiza el producto <strong>en</strong> un T = nTCK. En la Fig. 2 se puede observar<br />

un esquema del SMSR, el cual utiliza un sumador de n bits y realiza la selección de<br />

los bits yj mediante un multiplexor de n <strong>en</strong>tradas.<br />

ADD<br />

N<br />

desplazami<strong>en</strong>to<br />

acarreo<br />

2N-1<br />

Producto<br />

N N-1 Parcial<br />

N<br />

N<br />

X<br />

Figura 2. SMSR.<br />

N<br />

Y<br />

X<br />

MUX<br />

Control<br />

El control del multiplicador, que no se muestra <strong>en</strong> esta figura, consiste <strong>en</strong> un<br />

contador que ejecuta la selección de los yj y que a su vez manti<strong>en</strong>e el número de<br />

iteración realizada. La inicialización del multiplicador se realiza limpiando el registro<br />

Producto Parcial y el contador, y es requisito para este multiplicador que los datos<br />

se <strong>en</strong>cu<strong>en</strong>tr<strong>en</strong> pres<strong>en</strong>tes durante todo el ciclo de la multiplicación, tal como <strong>en</strong> un<br />

multiplicador paralelo tradicional.<br />

2.2. Multiplicador SM de base 4 o superior<br />

Esta variante de multiplicación secu<strong>en</strong>cial, reduce la cantidad de iteraciones <strong>en</strong><br />

base a la repres<strong>en</strong>tación numérica.<br />

N<br />

0<br />

0<br />

0<br />

0<br />

Y


Un número binario de n-bits puede ser repres<strong>en</strong>tado como un número de n<br />

2 -dígitos<br />

de base 4 ó n<br />

3 -dígitos de base 8. De este modo, es posible realizar un producto <strong>en</strong><br />

m<strong>en</strong>or tiempo de cálculo si se ejecuta una multiplicación de un dígito por vez <strong>en</strong> lugar<br />

de hacerlo bit a bit.<br />

La expresión g<strong>en</strong>eral para este tipo de multiplicación es la de la Ec. (3):<br />

p(j + 1) = (p(j) + yjXr n )r −1<br />

con p(0) = 0 (3)<br />

En el caso de la multiplicación <strong>en</strong> base 4, se debe conformar el producto parcial [yj+1<br />

yj]2X y adicionarlo al resultado de la iteración anterior. Mi<strong>en</strong>tras que <strong>en</strong> la multiplicación<br />

de base 2 cada producto parcial está repres<strong>en</strong>tado por el valor 0 o por una<br />

versión desplazada de X, <strong>en</strong> la multiplicación de base 4 el producto parcial toma los<br />

valores 0, X, 2X ó 3X. El método más directo para la ejecución de esta multiplicación<br />

se realiza mediante una asignación pre-calculada de los productos parciales.<br />

Un diagrama de este tipo de multiplicador se muestra <strong>en</strong> la Fig. 3. En el mismo<br />

se debe considerar que mi<strong>en</strong>tras los tres primeros valores de los productos parciales<br />

se pued<strong>en</strong> utilizar <strong>en</strong> forma directa, el valor 3X requiere un tiempo adicional para la<br />

ejecución del cálculo de X +2X. Además, se debe considerar que el valor pre-calculado<br />

de 3X puede exceder el rango de X, por lo que el multiplexor y el sumador utilizado<br />

deb<strong>en</strong> ser de n+1 bits. Una alternativa consiste <strong>en</strong> reemplazar 3X por −X y g<strong>en</strong>erar un<br />

desplazami<strong>en</strong>to 2 bits<br />

acarreo<br />

2N-1<br />

Producto Parcial<br />

N N-1 Y<br />

ADD<br />

N+1<br />

N<br />

N+1<br />

MUX<br />

N<br />

N<br />

N<br />

N+1<br />

0<br />

X<br />

2X<br />

3X<br />

Figura 3. Multiplicador SM base 4.<br />

acarreo que modifique al sigui<strong>en</strong>te dígito. Este set de dígitos es afectado por el acarreo<br />

según el Cuadro 2, <strong>en</strong> el cual, cy(j − 1) es el acarreo correspondi<strong>en</strong>te a la iteración<br />

anterior, cy(j) es el acarreo que se g<strong>en</strong>era por el ev<strong>en</strong>to actual, y2j−1 e y2j son los bits<br />

seleccionados <strong>en</strong> cada iteración que g<strong>en</strong>eran una salida de los valores [0, −X, X, 2X].<br />

Esta alternativa demanda al final de la iteración n<br />

2<br />

2<br />

1 0<br />

una nueva iteración, si el último<br />

dígito de base 4 g<strong>en</strong>eró un bit de acarreo. En la Fig. 4 se muestra el esquema de este<br />

multiplicador. En la misma se observa que requiere una mayor cantidad de recursos<br />

lógicos que un SM. Entre estos se puede citar que requiere de un sumador de n + 1<br />

o n + 2 bits, pre-calcular 3X o -X, y un multiplexor que conmuta los valores 0, X,<br />

2X y 3X etc. Los esquemas de multiplicación de base 4 ejecutan un producto <strong>en</strong> n<br />

2<br />

iteraciones, sin embargo se requiere un ciclo adicional para cargar los registros con los<br />

operandos. El período de procesami<strong>en</strong>to para estos multiplicadores es de T = ( n<br />

2 +1)Tck


Cuadro 2.<br />

cy(j − 1) y2j−1 y2j salida(j) cy(j)<br />

0 0 0 0 0<br />

0 0 1 X 0<br />

0 1 0 2X 0<br />

0 1 1 −X 1<br />

1 0 0 X 0<br />

1 0 1 2X 0<br />

1 1 0 −X 1<br />

1 1 1 0 1<br />

desplazami<strong>en</strong>to 2 bits<br />

acarreo<br />

2N-1<br />

Producto Parcial<br />

N N-1 Y<br />

ADD<br />

N<br />

N<br />

N<br />

MUX<br />

N<br />

N<br />

N<br />

N<br />

acarreo<br />

y 2j-1y +cy<br />

2j<br />

FF<br />

0<br />

X<br />

2X<br />

Figura 4. Variante del SM base 4.<br />

debi<strong>en</strong>do adicionar otro ciclo si se considera la variante -X, con lo cual el período es<br />

+ 2)Tck.<br />

de T = ( n<br />

2<br />

2.3. Multiplicador secu<strong>en</strong>cial fraccionado<br />

El multiplicador secu<strong>en</strong>cial fraccionado (SMF) es una variante cuyo objetivo es<br />

mejorar la velocidad de ejecución. Dado que el período TCK no se puede reducir más<br />

allá del límite impuesto por la lógica, una mayor velocidad de ejecución se puede<br />

obt<strong>en</strong>er reduci<strong>en</strong>do el número de iteraciones. Dicha reducción se puede obt<strong>en</strong>er fraccionando<br />

la sumatoria de la Ec. (4).<br />

n−1 <br />

P =<br />

(4)<br />

obt<strong>en</strong>i<strong>en</strong>do la Ec. 5:<br />

k−1 <br />

P =<br />

j=0<br />

j=0<br />

X2 j · yj<br />

<br />

-X<br />

X2 j n−1<br />

yj + X2 j yj<br />

La primer semi-sumatoria realiza su proceso <strong>en</strong> k · TCK y la segunda <strong>en</strong> (n − k) · TCK<br />

y para el caso particular <strong>en</strong> que k = n,<br />

el período de procesami<strong>en</strong>to para la ejecución<br />

2<br />

de cada producto será T = n<br />

2 · TCK.<br />

j=k<br />

2<br />

1 0<br />

(5)


Se debe considerar que la suma de las dos semi-sumatorias de la Ec. (5) requiere un<br />

único sumador de 2n − k debido a que la primer semi-sumatoria se <strong>en</strong>contrará desplazada<br />

k veces de la segunda. Por otro lado, dicha suma agrega un retardo tR debido a la<br />

lógica involucrada. Este retardo se puede considerar m<strong>en</strong>or o igual que TCK, tomando<br />

como pauta que el retardo de involucrado <strong>en</strong> la adición de los productos parciales<br />

es inferior al retardo definido para un multiplicador SM. Por lo tanto, el período de<br />

+ 1) · TCK.<br />

procesami<strong>en</strong>to para este multiplicador estará dado por T = ( n<br />

2<br />

Multiplicador<br />

Shift and Add<br />

Acumulación<br />

X[n:0] X[n:0]<br />

Y[m/2:0] Y[m:m/2+1]<br />

m/2 x n<br />

m/2 x n<br />

Y[m:0] x X[n:0]<br />

Figura 5. Diagrama de operación de un SMF.<br />

En la Fig. 5, se observa el esquema del SMF, donde dos multiplicadores secu<strong>en</strong>ciales<br />

realizan sus productos simultáneam<strong>en</strong>te y, un período de tiempo después, sus<br />

resultados son adicionados.<br />

La aplicación práctica del SMF se puede realizar <strong>en</strong> base a un SM tradicional o a<br />

un SMSR. La utilización del SM implica que se deb<strong>en</strong> cargar los datos <strong>en</strong> los registros,<br />

por lo que se requier<strong>en</strong> n<br />

2 + 2 iteraciones. Por lo que se justifica solo la utilización de<br />

este esquema para multiplicadores cuya longitud de palabra haga despreciables las dos<br />

iteraciones a n<br />

2 . En el caso del SMF basado <strong>en</strong> un SMSR, el producto se realiza <strong>en</strong><br />

T = ( n<br />

2 + 1) · TCK iteraciones.<br />

En cuanto al consumo de recursos lógicos, este multiplicador requiere dos multiplicadores<br />

de n × m<br />

3m<br />

2 bits, que compart<strong>en</strong> el bloque de control, y un sumador de n + 4<br />

bits. El control requiere m<strong>en</strong>os recursos debido a que debe realizar m<strong>en</strong>os iteraciones.<br />

2.4. <strong>Multiplicación</strong> por sumas consecutivas<br />

Otra opción para reducir el número de iteraciones sin t<strong>en</strong>er que pre-computar<br />

múltiplos de los operandos, consiste <strong>en</strong> realizar dos subproductos <strong>en</strong> forma consecutiva.<br />

Esta variante es similar al SMbase4 ya que básicam<strong>en</strong>te opera con dígitos de 2<br />

bits. El multiplicador por sumas consecutivas (SMSC) realiza <strong>en</strong> cada iteración dos<br />

subproductos consecutivos como se puede observar <strong>en</strong> la Ec. (6).<br />

P = 2 n−1<br />

⎡<br />

<br />

⎣<br />

n<br />

2 −1<br />

(yjX2 2j−(n−1) + yj+1X2 2j+1−(n−1) )<br />

j=0<br />

⎤<br />

⎦ (6)


La suma de los dos subproductos de la Ec. (6) g<strong>en</strong>era un TCK superior al de un<br />

multiplicador secu<strong>en</strong>cial debido al acarreo de los dos sumadores. Sin embargo, para<br />

ciertas longitudes de palabras el increm<strong>en</strong>to <strong>en</strong> el retardo se ve minimizado contra la<br />

v<strong>en</strong>taja de reducir a la mitad la cantidad de ciclos <strong>en</strong> el período de procesami<strong>en</strong>to.<br />

El período de procesami<strong>en</strong>to para la ejecución de un producto dep<strong>en</strong>de del esquema<br />

<strong>en</strong> que se basa el SMSC. En el caso de un SMSC basado <strong>en</strong> un SM el período de<br />

procesami<strong>en</strong>to se reduce a T = ( n<br />

2 + 1) · TCK. En el caso de uno basado <strong>en</strong> un SMSR,<br />

el período de procesami<strong>en</strong>to resulta de T = n<br />

2<br />

· TCK.<br />

Un esquema del SMSC basado <strong>en</strong> SM se muestra <strong>en</strong> la Fig. 6, donde se observa<br />

que con cada iteración se realiza la suma <strong>en</strong> forma consecutiva de dos subproductos,<br />

yjX · 2 j + yj+1X · 2 j+1 de la Ec. (6). El esquema del SMSC basado <strong>en</strong> el SMSR se<br />

acarreo<br />

ADD<br />

acarreo<br />

N-1<br />

N<br />

ADD<br />

LSB<br />

desplazami<strong>en</strong>to 2 bits<br />

Producto Parcial<br />

Y 2N-1 N N-1<br />

1 0<br />

N<br />

Figura 6. Ejemplo de un SMSC(SM).<br />

muestra <strong>en</strong> la Fig. 7. En cuanto al consumo de recursos lógicos, estos multiplicadores<br />

acarreo<br />

ADD<br />

acarreo<br />

N-1<br />

N<br />

ADD<br />

LSB<br />

N-1<br />

X<br />

N<br />

desplazami<strong>en</strong>to 2 bits<br />

Producto<br />

2N-1 N N-1<br />

N<br />

N<br />

N<br />

X<br />

MUX<br />

MUX<br />

Control<br />

N/2<br />

N/2<br />

Parcial<br />

Figura 7. Ejemplo de un SMSC(SMSR).<br />

0<br />

Y[bits pares]<br />

0<br />

Y[bits impares]<br />

duplican el consumo de recursos <strong>en</strong> cuanto a sumadores y a la lógica combinacional<br />

que g<strong>en</strong>era el producto yjX. El control requiere m<strong>en</strong>os recursos debido a que debe<br />

realizar m<strong>en</strong>os iteraciones.


3. Evaluación de los parámetros<br />

3.1. Consumo de recursos lógicos<br />

El consumo de recursos se puede expresar <strong>en</strong> términos de CLBs, compuestos por<br />

dos g<strong>en</strong>eradores de funciones (FG) y dos FlipFlops (FF). Cada multiplicador esta<br />

compuesto por bloques tal como, sumadores, multiplexores, contadores y compon<strong>en</strong>tes<br />

básicos. Estos bloques pose<strong>en</strong> un consumo de recursos acotado, que <strong>en</strong> algunos<br />

casos son función de la longitud de palabra de los operandos, n. Ejemplo de ello se<br />

pres<strong>en</strong>ta <strong>en</strong> un contador de módulo-n. El mismo es un contador binario de log2 n bits<br />

que utiliza n FFs (FlipFlops) y al m<strong>en</strong>os la misma cantidad de FGs (Function G<strong>en</strong>erators),<br />

consumi<strong>en</strong>do como mínimo log2 (n)<br />

2 CLB’s. En caso de un multiplexor, este<br />

está conformado sólo por lógica combinacional que requiere de al m<strong>en</strong>os n − 1 FGs de<br />

tres <strong>en</strong>tradas. Esto g<strong>en</strong>era un consumo de recursos de n−1<br />

2<br />

CLBs para una longitud<br />

de n-bit <strong>en</strong>tradas. El consumo de recursos lógicos de un sumador dep<strong>en</strong>de del tipo de<br />

sumador seleccionado. El sumador indicado para la implem<strong>en</strong>tación de los multiplicadores<br />

<strong>en</strong> las FPGAs seleccionadas, es el sumador de ripple-carry. En este caso, un<br />

sumador utiliza n + 2 FGs ( n<br />

2 + 1 celdas básicas) considerando las salidas de acarreo y<br />

desborde. En el caso <strong>en</strong> que la salida de un sumador deba ser registrada, el consumo<br />

de recursos lógicos <strong>en</strong> términos de CLBs es el mismo dado que los FFs son nativos de<br />

cada celda básica.<br />

A partir de estos conceptos básicos, se desarrollan las ecuaciones que defin<strong>en</strong> el<br />

consumo de recursos lógicos <strong>en</strong> terminos de CLBs para los multiplicadores pres<strong>en</strong>tados,<br />

Ecs. (7 - 14).<br />

CRSM (n) = 2n + log2 n<br />

2<br />

CRSMSR(n) = 2n + log2 n<br />

2<br />

+ 5<br />

2<br />

+ 3<br />

2<br />

CRSMbase4a(n) = 7<br />

2 n + log2 n<br />

+ 4 (9)<br />

2<br />

CRSMbase4b(n) = 7<br />

2 n + log2 n 7<br />

+<br />

2 2<br />

15<br />

CRSMFSMSR (n) =<br />

3.2. Comportami<strong>en</strong>to temporal<br />

15<br />

CRSMFSM (n) =<br />

4 n + log2 n<br />

2<br />

2<br />

4 n + log2 n<br />

2<br />

2<br />

CRSMSCSM (n) = 3n + log2 n<br />

2<br />

2<br />

1<br />

CRSMSCSMSR (n) = 3n +<br />

2 log2 (7)<br />

(8)<br />

(10)<br />

+ 5 (11)<br />

+ 3 (12)<br />

7<br />

+<br />

2<br />

(13)<br />

n<br />

+ 2<br />

2<br />

(14)<br />

El comportami<strong>en</strong>to temporal de los multiplicadores pres<strong>en</strong>tados dep<strong>en</strong>de de dos<br />

factores: el retardo inher<strong>en</strong>te de las compuertas lógicas y/o registros, y el impuesto


por la interconexión <strong>en</strong>tre las mismas. En la mayoría de los circuitos realizados <strong>en</strong><br />

FPGA el desempeño de los mismos no puede ser estimado hasta después de ser implem<strong>en</strong>tado<br />

debido a que los retardos de interconexión recién se conoc<strong>en</strong> una vez realizada<br />

esta tarea. Sin embargo, <strong>en</strong> el caso de sumadores y contadores que utilizan recursos dedicados<br />

de lógica de acarreo es posible estimar un desempeño temporal aproximado [7].<br />

El período mínimo de reloj que se puede utilizar con los multiplicadores pres<strong>en</strong>tados<br />

dep<strong>en</strong>de del retardo de propagación de la ruta más crítica.<br />

Las Ecs. (15-19) resum<strong>en</strong> el retardo de propagación de esta ruta expresados <strong>en</strong><br />

ns para los multiplicadores pres<strong>en</strong>tados tomando como refer<strong>en</strong>cia los retardos de una<br />

FPGA de Xilinx de la familia Spartan [8]. Cabe destacar que el retardo de propagación<br />

define el máximo reloj utilizable para un dado multiplicador. En el caso de los<br />

multiplicadores implem<strong>en</strong>tados a partir de un SM o un SMSR, el retardo es el mismo,<br />

si<strong>en</strong>do la difer<strong>en</strong>cia <strong>en</strong>tre ambos el número de iteraciones necesarias para ejecutar un<br />

producto.<br />

4. Comparación de los multiplicadores<br />

tSM (n) = n<br />

+ 8,3 (15)<br />

4<br />

tSMbase4a(n) = n<br />

+ 14,2 (16)<br />

4<br />

tSMbase4b(n) = n<br />

+ 12,5 (17)<br />

4<br />

tSMF (n) = n<br />

+ 8,45 (18)<br />

4<br />

tSMSC(n) = n<br />

+ 13,15 (19)<br />

4<br />

A partir de las Ecs. (7 - 19) se realizó una comparación de los multiplicadores<br />

pres<strong>en</strong>tados. En la Fig. 8 se muestra el consumo estimado de recursos lógicos de los<br />

multiplicadores. Se puede observar que los multiplicadores optimizados <strong>en</strong> velocidad<br />

sacrifican el consumo de recursos lógicos a costa de obt<strong>en</strong>er una mayor velocidad de<br />

procesami<strong>en</strong>to. Los multiplicadores del tipo SMSC son los que consum<strong>en</strong> la m<strong>en</strong>or<br />

cantidad de recursos, mi<strong>en</strong>tras que los del tipo SMF pose<strong>en</strong> un consumo <strong>en</strong>tre un 30 y<br />

un 40 % mayor. Por otro lado, los multiplicadores de base 4 pose<strong>en</strong> un consumo <strong>en</strong>tre<br />

un 15 y un 20 % mayor.<br />

La velocidad de procesami<strong>en</strong>to (P S [Mflop])se obti<strong>en</strong>e como resultado de dividir<br />

la frecu<strong>en</strong>cia máxima de trabajo por el número de ciclos que requiere realizar una<br />

operación N, P S = fck<br />

N . La misma se expresa <strong>en</strong> millones de operaciones por segundo.<br />

En la Fig. 9 se muestra una comparación de las velocidades de procesami<strong>en</strong>to de los<br />

multiplicadores. En la misma se puede observar que el SMF(SMSR) pres<strong>en</strong>ta la mayor<br />

velocidad de procesami<strong>en</strong>to para todo n. Adicionalm<strong>en</strong>te, la variante SMF(SM) salvo<br />

para el caso de n = 8, posee una bu<strong>en</strong>a velocidad de procesami<strong>en</strong>to aunque inferior a<br />

la del SMF(SMSR) debido a que requiere de una iteración adicional. El SMSC(SMSR)<br />

posee una bu<strong>en</strong>a velocidad de procesami<strong>en</strong>to para n < 14 bits, pero para n mayores<br />

es similar a la del SMbase4(-X). Se observa también que las otras variantes pres<strong>en</strong>tan<br />

velocidades inferiores a las del SMF(SMSR), pero superiores a la del SMbase4(3X).


CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 8. Consumo de recursos lógicos de los multiplicadores.<br />

PS [Mops]<br />

20<br />

18<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 9. Velocidad de procesami<strong>en</strong>to de los multiplicadores.


4.1. Performance de los multiplicadores<br />

A fin de estimar los b<strong>en</strong>eficios de cada variante, se propone un único indicador, el<br />

índice de performance p, definido por la Ec. (20) donde la Velocidad de Procesami<strong>en</strong>to<br />

está definida <strong>en</strong> Millones de Operaciones por Segundo y el Area como la fracción de<br />

recursos utilizados para una determinada FPGA, (Total de la FPGA = 1).<br />

p =<br />

Velocidad de Procesami<strong>en</strong>to [Mops]<br />

Area<br />

En la Fig. 10 se muestra el índice <strong>en</strong> el intervalo 8 ≤ n ≤ 20 para una FGPA de<br />

400 CLB’s, <strong>en</strong> la cual se puede observar que los multiplicadores SM y SMSC(SMSR)<br />

obti<strong>en</strong><strong>en</strong> el mejor desempeño. En la Fig. 11 se muestra el índice para el intervalo<br />

20 ≤ n ≤ 32 donde observa que el mayor valor lo compart<strong>en</strong> los multiplicadores SM<br />

y SMSC(SM). Esto se debe a que el SCSC(SM) consume m<strong>en</strong>or cantidad de recursos<br />

que el SMSC(SMSR) y, a medida que aum<strong>en</strong>ta n, la velocidad de procesami<strong>en</strong>to de<br />

ambos multiplicadores se hace más parecida.<br />

Performance<br />

250<br />

200<br />

150<br />

100<br />

50<br />

5. Conclusiones<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

8 10 12 14 16 18 20<br />

n<br />

Figura 10. Índice de performance [8,20].<br />

En este trabajo se pres<strong>en</strong>tó un estudio comparativo de multiplicadores secu<strong>en</strong>ciales<br />

destinados a su implem<strong>en</strong>tación <strong>en</strong> FPGA. Se pres<strong>en</strong>taron las estimaciones de consumo<br />

de recursos lógicos y de comportami<strong>en</strong>to temporal que permit<strong>en</strong> contrastar las<br />

características de los multiplicadores pres<strong>en</strong>tados.<br />

A partir de estas comparaciones se puede observar que el SM, el SMSR y los SMSC<br />

son los multiplicadores que mejor balancean la relación <strong>en</strong>tre consumo de recursos lógicos<br />

y velocidad de procesami<strong>en</strong>to. Resultando el SMSR el óptimo para aplicaciones<br />

(20)


Performance<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

20 22 24 26<br />

n<br />

28 30 32<br />

Figura 11. Índice de performance [20,32].<br />

donde se busca una reducida cantidad de recursos lógicos, y el SMSC <strong>en</strong> aplicaciones<br />

donde además de las restricciones de recursos se requiere una alta velocidad de<br />

procesami<strong>en</strong>to.<br />

Refer<strong>en</strong>cias<br />

1. Funes, M., Carrica, D., B<strong>en</strong>edetti, M.: Multiplicadores secu<strong>en</strong>ciales para estructuras FP-<br />

GA. IX Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control. Vol. II (2001)<br />

646–651<br />

2. H<strong>en</strong>nessy, J.L., Patterson, D.: Computer Architecture: A Quantitative Approach. Morgan<br />

Kaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8 (1996)<br />

3. Hayes, J.P.: Introducción al Diseño Lógico Digital. Addison-Wesley Iberoamericana,<br />

Wilmington, Delaware, E.U.A (1996)<br />

4. Thornton, M., Gaiche, J.D.and Lemieux, J.: Tradeoff analysis of integer multiplier circuits<br />

implem<strong>en</strong>ted in FPGAs. Communications, Computers and Signal Processing IEEE Pacific<br />

RIM Confer<strong>en</strong>ce (1999) 301–304<br />

5. Teixeira, D., Susim, A., Carro, L.: Comparación de multiplicadores <strong>en</strong> fpga. V Workshop<br />

Iberchip 1 (Enero 1999) 182–187<br />

6. Parhami, B.: Computer Arithmetic: Algorithms and Hardware Design. Oxford University<br />

Press, New York, Oxford (2000)<br />

7. New, B.: Estimating the performance of XC4000E adders and counters. Technical Report<br />

Xapp 018, Xilinx (1996)<br />

8. : The Programable Logic Data Book. Xilinx (2000)


XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control, 16 al 18 de octubre de 2007<br />

Estudio comparativo de multiplicadores secu<strong>en</strong>ciales<br />

implem<strong>en</strong>tados <strong>en</strong> FPGA<br />

Resum<strong>en</strong>— En este trabajo se pres<strong>en</strong>ta un estudio<br />

comparativo de multiplicadores secu<strong>en</strong>ciales<br />

ori<strong>en</strong>tado a su implem<strong>en</strong>tación <strong>en</strong> FPGA. Se expon<strong>en</strong><br />

los resultados de las implem<strong>en</strong>taciones, las que permit<strong>en</strong><br />

contrastar las características de los multiplicadores<br />

pres<strong>en</strong>tados.<br />

P alabras Clave— Multiplicadores, <strong>Secu<strong>en</strong>cial</strong>es,<br />

FPGA, Recursos lógicos, Velocidad de procesami<strong>en</strong>to.<br />

M. Funes † , D. Carrica ‡ , M. B<strong>en</strong>edetti ‡ , P. Donato ‡<br />

I. INTRODUCCIÓN<br />

La multiplicación es una de las operaciones esc<strong>en</strong>ciales<br />

<strong>en</strong> el procesami<strong>en</strong>to aritmético. Adicionalm<strong>en</strong>te,<br />

es una de las tareas que más recursos lógicos consume.<br />

Décadas atrás cuando la arquitectura del multiplicador<br />

era estudiada para su implem<strong>en</strong>tación <strong>en</strong> circuitos de procesadores<br />

o unidades aritméticas de cálculo, el consumo<br />

de recursos circuitales era aceptado por la necesidad de<br />

realizar los cálculos más rápidam<strong>en</strong>te.<br />

Actualm<strong>en</strong>te, la utilización de las FPGAs permite el diseño<br />

personalizado de sistemas de procesami<strong>en</strong>to, lo cual<br />

ha masificado la aplicación de los mismos. La implem<strong>en</strong>tación<br />

<strong>en</strong> una FPGA de una unidad de cálculo con un gran<br />

consumo de recursos lógicos obliga a utilizar una FPGA<br />

de gran tamaño, lo que implica un mayor costo de producción.<br />

Con el objeto de reducir el consumo de recursos<br />

lógicos Funes et al. (2001) propusieron la utilización del<br />

esquema de multiplicación Shift and Add (H<strong>en</strong>nessy and<br />

Patterson, 1996), (Hayes, 1996) , d<strong>en</strong>ominado también<br />

Multiplicador <strong>Secu<strong>en</strong>cial</strong> (SM), para sistemas basados <strong>en</strong><br />

FPGA. Este multiplicador ejecuta un producto <strong>en</strong> forma<br />

secu<strong>en</strong>cial y se caracteriza por utilizar una cantidad reducida<br />

de recursos lógicos. Como contrapartida por su <strong>en</strong>tidad<br />

secu<strong>en</strong>cial, este multiplicador demanda un período<br />

mayor para ejecutar un producto. Exist<strong>en</strong> variantes del<br />

multiplicador SM que reduc<strong>en</strong> este período a costa de un<br />

mayor consumo de recursos lógicos (Parhami, 2000).<br />

En este trabajo se pres<strong>en</strong>ta un estudio comparativo de<br />

los multiplicadores secu<strong>en</strong>ciales y algunas variantes de<br />

los mismos optimizadas <strong>en</strong> velocidad, con el objetivo de<br />

obt<strong>en</strong>er bu<strong>en</strong>as alternativas para la utilización de multiplicadores<br />

<strong>en</strong> FPGA sin comprometer los recursos del<br />

†UNMDP, Facultad de Ing. - LIC<br />

mfunes@fi.mdp.edu.ar<br />

‡CONICET<br />

liclab@fi.mdp.edu.ar<br />

sistema desarrollado. Resultados experim<strong>en</strong>tales permit<strong>en</strong><br />

distinguir las características de cada uno de los multiplicadores<br />

pres<strong>en</strong>tados.<br />

II. Multiplicador secu<strong>en</strong>cial<br />

Dados dos operandos, un multiplicando X =<br />

<br />

xj2j , y un multiplicador Y = n−1 <br />

yj2j , el Cuadro<br />

n−1<br />

j=0<br />

j=0<br />

1 muestra el proceso de multiplicación para n = 4. El<br />

SM realiza el producto de este cuadro <strong>en</strong> forma secu<strong>en</strong>cial,<br />

acumulando un producto parcial yiX (i = 0, 1, 2, 3)<br />

al resultado acumulado de la iteración anterior con el debido<br />

desplazami<strong>en</strong>to de un bit <strong>en</strong>tre ambos.<br />

Cuadro 1:<br />

x3 x2 x1 x0<br />

y3 y2 y1 y0<br />

s03 s02 s01 s00 ≡ y0X2 0<br />

s13 s12 s11 s10 ≡ y1X2 1<br />

+ s23 s22 s21 s20 ≡ y2X2 2<br />

s33 s32 s31 s30 ≡ y3X2 3<br />

p7 p6 p5 p4 p3 p2 p1 p0 ≡ P<br />

Exist<strong>en</strong> dos versiones dep<strong>en</strong>di<strong>en</strong>do del s<strong>en</strong>tido de los<br />

valores a acumular, con desplazami<strong>en</strong>to a la izquierda o<br />

con desplazami<strong>en</strong>to a la derecha.<br />

En la multiplicación con desplazami<strong>en</strong>to a la izquierda<br />

se debe contar con un acumulador de longitud 2n bits.<br />

En este caso los productos parciales yjX son adicionados<br />

al resultado acumulado con un desplazami<strong>en</strong>to de un bit<br />

(2 1 ) hacia la izquierda, respecto al anterior. El algoritmo<br />

se puede analizar a partir de la Ec. (1), donde p(j) es el<br />

producto parcial de la iteración j.<br />

p(j + 1) = 2p(j) + y (n−1)−jX con p(0) = 0 (1)<br />

En la multiplicación con desplazami<strong>en</strong>to a la derecha<br />

los productos parciales yjX son adicionados al resultado<br />

acumulado con un desplazami<strong>en</strong>to de un bit (2 −1 ) hacia<br />

la derecha respecto al anterior.<br />

El algoritmo se observa <strong>en</strong> la Ec. (2).


XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control, 16 al 18 de octubre de 2007<br />

p(j + 1) = (p(j) + yjX2 n )2 −1<br />

con p(0) = 0 (2)<br />

Debido a que el desplazami<strong>en</strong>to a la derecha g<strong>en</strong>era<br />

un primer producto parcial multiplicado por 2 −n se debe<br />

pre-multiplicar y0X por 2 n para comp<strong>en</strong>sar el efecto del<br />

desplazami<strong>en</strong>to. Esta pre-multiplicación se puede efectuar<br />

fácilm<strong>en</strong>te, almac<strong>en</strong>ando p(j) <strong>en</strong> el segm<strong>en</strong>to más<br />

significativo de un registro de 2n bit.<br />

La implem<strong>en</strong>tación hardware del algoritmo de la multiplicación<br />

con desplazami<strong>en</strong>to a la derecha se puede observar<br />

<strong>en</strong> la Fig. 1. El multiplicador Y y la acumulación<br />

de los productos parciales p(j) son almac<strong>en</strong>ados <strong>en</strong> registros<br />

de desplazami<strong>en</strong>to. El bit yj del multiplicador es<br />

el bit m<strong>en</strong>os significativo exist<strong>en</strong>te <strong>en</strong> el registro Y <strong>en</strong><br />

la iteración j. El mismo es utilizado <strong>en</strong> el producto yjX<br />

seleccionando 0 o X <strong>en</strong> la suma.<br />

ADD<br />

n<br />

desplazami<strong>en</strong>to<br />

acarreo<br />

2n-1<br />

Producto Parcial<br />

n n-1 Y<br />

n<br />

n<br />

Figura 1: SM con desplazami<strong>en</strong>to a la derecha.<br />

Si bi<strong>en</strong> ambos algoritmos pres<strong>en</strong>tados realizan n sumas<br />

y n desplazami<strong>en</strong>tos, las sumas realizadas con el algoritmo<br />

de desplazami<strong>en</strong>to a la izquierda requier<strong>en</strong> un<br />

sumador del doble de tamaño respecto del algoritmo de<br />

desplazami<strong>en</strong>to a la derecha. Esto se debe a que el acarreo<br />

de la suma se debe ext<strong>en</strong>der hacia los bits más significativos.<br />

Por lo tanto, el algoritmo más utilizado es el de<br />

desplazami<strong>en</strong>to a la derecha.<br />

El multiplicador SM requiere n iteraciones para la ejecución<br />

del producto y una iteración previa para la carga<br />

de los operandos. Por lo tanto este multiplicador puede<br />

realizar un producto <strong>en</strong> un período T = (n + 1)TCK,<br />

donde n es la longitud de los operandos y TCK el período<br />

de reloj aplicado sobre el multiplicador.<br />

A. Multiplicador secu<strong>en</strong>cial sin <strong>en</strong>tradas<br />

registradas<br />

El multiplicador secu<strong>en</strong>cial sin <strong>en</strong>tradas registradas<br />

(SMSR) es una variante del multiplicador SM de desplazami<strong>en</strong>to<br />

a la derecha. El objetivo del SMSR es la simplificación<br />

del esquema de multiplicación evitando la carga<br />

paralelo de los registros del multiplicador y del multiplicando,<br />

para lo cual, los datos deb<strong>en</strong> permanecer estables<br />

durante toda la operación. Existi<strong>en</strong>do esta condición, el<br />

SMSR no carga los operandos, por lo que no existe la<br />

demora propia del ciclo de carga, lo cual constituye una<br />

v<strong>en</strong>taja. Por lo tanto, este multiplicador realiza el producto<br />

<strong>en</strong> un T = nTCK.<br />

n<br />

n-1<br />

X<br />

0<br />

0<br />

En la Figura 2 se puede observar un esquema del<br />

SMSR, el cual utiliza un sumador de n bits y realiza la<br />

selección de los bits yj mediante un multiplexor de n <strong>en</strong>tradas.<br />

ADD<br />

n<br />

desplazami<strong>en</strong>to<br />

acarreo<br />

2n-1<br />

Producto<br />

n n-1 Parcial<br />

n<br />

n<br />

Figura 2: SMSR.<br />

n<br />

X<br />

MUX<br />

Control<br />

El control del multiplicador, que no se muestra <strong>en</strong> la<br />

Figura 2, consiste <strong>en</strong> un contador que ejecuta la selección<br />

de los yj y que a su vez manti<strong>en</strong>e el número de iteración<br />

realizada. La inicialización del multiplicador se realiza<br />

limpiando el registro Producto Parcial y el contador, y es<br />

requisito para este multiplicador que los datos se <strong>en</strong>cu<strong>en</strong>tr<strong>en</strong><br />

pres<strong>en</strong>tes durante todo el ciclo de la multiplicación,<br />

tal como <strong>en</strong> un multiplicador paralelo tradicional.<br />

B. Multiplicador SM de base 4 o superior<br />

Esta variante de multiplicación secu<strong>en</strong>cial, reduce<br />

la cantidad de iteraciones <strong>en</strong> base a la repres<strong>en</strong>tación<br />

numérica.<br />

Un número binario de n-bits puede ser repres<strong>en</strong>tado<br />

como un número de n<br />

n<br />

2 -dígitos de base 4 ó 3 -dígitos de<br />

base 8. De este modo, es posible realizar un producto <strong>en</strong><br />

m<strong>en</strong>or tiempo de cálculo si se ejecuta una multiplicación<br />

de un dígito por vez <strong>en</strong> lugar de hacerlo bit a bit.<br />

La expresión g<strong>en</strong>eral para este tipo de multiplicación<br />

es la de la Ec. (3):<br />

p(j + 1) = (p(j) + yjXr n )r −1<br />

n<br />

0<br />

(3)<br />

con p(0) = 0.<br />

En el caso de la multiplicación <strong>en</strong> base 4, se debe conformar<br />

el producto parcial [yj+1 yj]2X y adicionarlo al<br />

resultado de la iteración anterior. Mi<strong>en</strong>tras que <strong>en</strong> la multiplicación<br />

de base 2 cada producto parcial está repres<strong>en</strong>tado<br />

por el valor 0 o por una versión desplazada de X, <strong>en</strong><br />

la multiplicación de base 4 el producto parcial toma los<br />

valores 0, X, 2X ó 3X. El método más directo para la<br />

ejecución de esta multiplicación se realiza mediante una<br />

asignación pre-calculada de los productos parciales.<br />

Un diagrama de este tipo de multiplicador se muestra<br />

<strong>en</strong> la Fig. 3. En el mismo se debe considerar que mi<strong>en</strong>tras<br />

los tres primeros valores de los productos parciales<br />

se pued<strong>en</strong> utilizar <strong>en</strong> forma directa, el valor 3X requiere<br />

un tiempo adicional para la ejecución del cálculo de<br />

X + 2X. Además, se debe considerar que el valor precalculado<br />

de 3X puede exceder el rango de X, por lo que<br />

el multiplexor y el sumador utilizado deb<strong>en</strong> ser de n + 1<br />

bits.<br />

Y


XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control, 16 al 18 de octubre de 2007<br />

ADD<br />

n+2<br />

desplazami<strong>en</strong>to 2 bits<br />

acarreo<br />

2n-1<br />

Producto Parcial<br />

n n-1 Y<br />

n<br />

n+2<br />

MUX<br />

n+2<br />

n+2<br />

n+2<br />

n+2<br />

0<br />

X<br />

2X<br />

3X<br />

Figura 3: Multiplicador SM base 4.<br />

2<br />

1 0<br />

Una alternativa consiste <strong>en</strong> reemplazar 3X por −X y<br />

g<strong>en</strong>erar un acarreo que modifique al sigui<strong>en</strong>te dígito. Este<br />

set de dígitos es afectado por el acarreo según el Cuadro<br />

2, <strong>en</strong> el cual, cy(j − 1) es el acarreo correspondi<strong>en</strong>te a la<br />

iteración anterior, cy(j) es el acarreo que se g<strong>en</strong>era por<br />

el ev<strong>en</strong>to actual, y2j−1 e y2j son los bits seleccionados<br />

<strong>en</strong> cada iteración que g<strong>en</strong>eran una salida de los valores<br />

[0, −X, X, 2X]. Esta alternativa demanda al final de la<br />

iteración n<br />

2 una nueva iteración, si el último dígito de base<br />

4 g<strong>en</strong>eró un bit de acarreo.<br />

Cuadro 2: Codificación de los bits del multiplicador<br />

cy(j − 1) y2j−1 y2j salida(j) cy(j)<br />

0 0 0 0 0<br />

0 0 1 X 0<br />

0 1 0 2X 0<br />

0 1 1 −X 1<br />

1 0 0 X 0<br />

1 0 1 2X 0<br />

1 1 0 −X 1<br />

1 1 1 0 1<br />

El diagrama de este multiplicador se puede observar <strong>en</strong><br />

la Fig. 4.<br />

ADD<br />

n+1<br />

desplazami<strong>en</strong>to 2 bits<br />

acarreo<br />

2n-1<br />

Producto Parcial<br />

n n-1 Y<br />

n<br />

n+1<br />

MUX<br />

n+1<br />

n+1<br />

n+1<br />

n+1<br />

acarreo<br />

y y +cy<br />

2j-1 2j<br />

FF<br />

0<br />

X<br />

2X<br />

-X<br />

Figura 4: Variante del SM base 4.<br />

2<br />

1 0<br />

En la Fig. 4 se puede observar que este esquema requiere<br />

una mayor cantidad de recursos lógicos que un<br />

SM. Entre estos se puede citar que requiere de un sumador<br />

de n + 1 o n + 2 bits, pre-calcular 3X o -X, y un<br />

multiplexor que conmuta los valores 0, X, 2X y 3X etc.<br />

Los esquemas de multiplicación de base 4 ejecutan un<br />

producto <strong>en</strong> n<br />

2 iteraciones, sin embargo se requiere un ciclo<br />

adicional para cargar los registros con los operandos.<br />

El período de procesami<strong>en</strong>to para estos multiplicadores<br />

es de T = ( n<br />

2 + 1)Tck debi<strong>en</strong>do adicionar otro ciclo si<br />

se considera la variante -X, con lo cual el período es de<br />

T = ( n<br />

2 + 2)Tck.<br />

Estas variantes se pued<strong>en</strong> ext<strong>en</strong>der a multiplicadores<br />

de bases superiores, pero la estructura del multiplicador<br />

se vuelve compleja debido a que se debe precomputar<br />

una mayor cantidad de valores y consecu<strong>en</strong>tem<strong>en</strong>te<br />

el número de iteraciones deja de ser m<strong>en</strong>or que<br />

n<br />

2 + 1. Por ejemplo, para un producto de base 8, se deb<strong>en</strong><br />

pre-computar los valores de 3X, 5X y 7X, o sólo precomputar<br />

3X y utilizar un esquema de acarreo similar al<br />

de la Fig. 4 para convertir a 5X, 6X y 7X <strong>en</strong> −3X, −2X<br />

y −X.<br />

C. Multiplicador secu<strong>en</strong>cial fraccionado<br />

El multiplicador secu<strong>en</strong>cial fraccionado (SMF) es una<br />

variante cuyo objetivo es mejorar la velocidad de ejecución.<br />

Dado que el período TCK no se puede reducir más<br />

allá del límite impuesto por la lógica, una mayor velocidad<br />

de ejecución se puede obt<strong>en</strong>er reduci<strong>en</strong>do el número<br />

de iteraciones. Dicha reducción se puede obt<strong>en</strong>er fraccionando<br />

la sumatoria de la Ec. (4).<br />

n−1 <br />

P = X2 j · yj<br />

j=0<br />

(4)<br />

Si se fracciona la sumatoria, <strong>en</strong>tonces el producto se<br />

puede realizar como la suma de dos semi-sumatorias:<br />

k−1 <br />

P =<br />

j=0<br />

<br />

X2 j n−1<br />

yj + X2 j yj<br />

j=k<br />

(5)<br />

El producto resultante utilizando como base la de un<br />

SM con desplazami<strong>en</strong>to a la derecha esquema se puede<br />

observar <strong>en</strong> la Ec. (6).<br />

P = 2 n−1<br />

⎡<br />

k<br />

⎣<br />

j=0<br />

X · 2 j−(n−1) n−1<br />

yj +<br />

<br />

X · 2 j−(n−1) ⎤<br />

yj⎦<br />

j=k<br />

(6)<br />

La primer semi-sumatoria realiza su proceso <strong>en</strong> k·TCK<br />

y la segunda <strong>en</strong> (n − 1 − k) · TCK . Si las dos semisumatorias<br />

se llevan a cabo al mismo tiempo y se suman<br />

sus resultados con el debido desplazami<strong>en</strong>to, el período<br />

de proceso estará dado por:<br />

k · TCK si k > (n − 1) − k<br />

o<br />

((n − 1) − k) · TCK si k < (n − 1) − k<br />

y para el caso particular <strong>en</strong> que k = n<br />

2 , el período de procesami<strong>en</strong>to<br />

para la ejecución de cada producto será T =<br />

· TCK.<br />

n<br />

2


XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control, 16 al 18 de octubre de 2007<br />

Se debe considerar que la suma de las dos semisumatorias<br />

de la Ec. (6) requiere un único sumador de<br />

2n − k debido a que la primer semi-sumatoria se <strong>en</strong>contrará<br />

desplazada k veces de la segunda. Por otro lado, dicha<br />

suma agrega un retardo tR debido a la lógica involucrada.<br />

Este retardo se puede considerar m<strong>en</strong>or o igual<br />

que TCK, tomando como pauta que el retardo de involucrado<br />

<strong>en</strong> la adición de los productos parciales es inferior<br />

al retardo definido para un multiplicador SM. Por lo tan-<br />

to, el período de procesami<strong>en</strong>to para este multiplicador<br />

+ 1) · TCK.<br />

estará dado por T = ( n<br />

2<br />

SM<br />

Acumulación<br />

X[n:0] X[n:0]<br />

Y[m/2:0] Y[m:m/2+1]<br />

m/2 x n<br />

m/2 x n<br />

Y[m:0] x X[n:0]<br />

Figura 5: Diagrama de operación de un SMF.<br />

En la Fig. 5, se observa el esquema del SMF, donde<br />

dos multiplicadores secu<strong>en</strong>ciales realizan sus productos<br />

simultáneam<strong>en</strong>te y, un período de tiempo después, sus resultados<br />

son adicionados.<br />

La aplicación práctica del SMF se puede realizar <strong>en</strong><br />

base a un SM tradicional o a un SMSR. La utilización del<br />

SM implica que se deb<strong>en</strong> cargar los datos <strong>en</strong> los registros,<br />

por lo que se requier<strong>en</strong> n<br />

2 + 2 iteraciones. Por lo que<br />

se justifica solo la utilización de este esquema para multiplicadores<br />

cuya longitud de palabra haga despreciables<br />

las dos iteraciones a n<br />

2 . En el caso del SMF basado <strong>en</strong><br />

un SMSR, el producto se realiza <strong>en</strong> T = ( n<br />

2 + 1) · TCK<br />

iteraciones.<br />

En cuanto al consumo de recursos lógicos, este multi-<br />

plicador requiere dos multiplicadores de n × m bits, que<br />

2<br />

compart<strong>en</strong> el bloque de control, y un sumador de n + 3m<br />

4<br />

bits. El control requiere m<strong>en</strong>os recursos debido a que debe<br />

realizar m<strong>en</strong>os iteraciones.<br />

D. <strong>Multiplicación</strong> por sumas consecutivas<br />

Otra opción para reducir el número de iteraciones sin<br />

t<strong>en</strong>er que pre-computar múltiplos de los operandos, consiste<br />

<strong>en</strong> realizar dos subproductos <strong>en</strong> forma consecutiva.<br />

Esta variante es similar al SMbase4 ya que básicam<strong>en</strong>te<br />

opera con dígitos de 2 bits. El multiplicador por sumas<br />

consecutivas (SMSC) realiza <strong>en</strong> cada iteración dos subproductos<br />

consecutivos como se puede observar <strong>en</strong> la Ec.<br />

(7).<br />

P = 2 n−1<br />

⎡<br />

<br />

⎣<br />

n<br />

2 −1<br />

(yjX2 2j−(n−1) + yj+1X2 2j+1−(n−1) )<br />

j=0<br />

⎤<br />

⎦<br />

(7)<br />

La suma de los dos subproductos de la Ec. (7) g<strong>en</strong>era<br />

un TCK superior al de un multiplicador secu<strong>en</strong>cial debido<br />

al acarreo de los dos sumadores. Sin embargo, para<br />

ciertas longitudes de palabras el increm<strong>en</strong>to <strong>en</strong> el retardo<br />

se ve minimizado contra la v<strong>en</strong>taja de reducir a la mitad<br />

la cantidad de ciclos <strong>en</strong> el período de procesami<strong>en</strong>to.<br />

El período de procesami<strong>en</strong>to para la ejecución de un<br />

producto dep<strong>en</strong>de del esquema <strong>en</strong> que se basa el SMSC.<br />

En el caso de un SMSC basado <strong>en</strong> un SM el período de<br />

procesami<strong>en</strong>to se reduce a T = ( n<br />

2 +1)·TCK. En el caso<br />

de uno basado <strong>en</strong> un SMSR, el período de procesami<strong>en</strong>to<br />

resulta de T = n · TCK.<br />

2<br />

Un esquema del SMSC basado <strong>en</strong> SM se muestra <strong>en</strong> la<br />

Fig. 6, donde se observa que con cada iteración se realiza<br />

la suma <strong>en</strong> forma consecutiva de dos subproductos, yjX ·<br />

2j + yj+1X · 2j+1 de la Ec. (7).<br />

acarreo<br />

ADD<br />

acarreo<br />

n-1<br />

n<br />

ADD<br />

LSB<br />

desplazami<strong>en</strong>to 2 bits<br />

Producto Parcial<br />

Y 2n-1 n n-1<br />

1 0<br />

n<br />

Figura 6: Ejemplo de un SMSC(SM).<br />

El esquema del SMSC basado <strong>en</strong> el SMSR se muestra<br />

<strong>en</strong> la Fig. 7.<br />

acarreo<br />

ADD<br />

acarreo<br />

n-1<br />

n<br />

ADD<br />

n-1<br />

X<br />

desplazami<strong>en</strong>to 2 bits<br />

Producto<br />

2n-1 n n-1<br />

n<br />

LSB<br />

n<br />

n<br />

X<br />

MUX<br />

MUX<br />

Control<br />

n/2<br />

n/2<br />

n<br />

Parcial<br />

Figura 7: Ejemplo de un SMSC(SMSR).<br />

0<br />

Y[bits pares]<br />

0<br />

Y[bits impares]<br />

En cuanto al consumo de recursos lógicos, estos multiplicadores<br />

duplican el consumo de recursos <strong>en</strong> cuanto a<br />

sumadores y a la lógica combinacional que g<strong>en</strong>era el producto<br />

yjX. El control requiere m<strong>en</strong>os recursos debido a<br />

que debe realizar m<strong>en</strong>os iteraciones.<br />

III. Comparaciones<br />

Los multiplicadores pres<strong>en</strong>tados <strong>en</strong> secciones anteriores<br />

se implem<strong>en</strong>taron <strong>en</strong> una FPGA Spartan XCS30 de<br />

Xilinx (The Programable Logic Data Book, 2000). Cada<br />

una de las variantes de los multiplicadores se implem<strong>en</strong>tó<br />

<strong>en</strong> primera instancia mediante captura esquemática<br />

y posteriorm<strong>en</strong>te <strong>en</strong> L<strong>en</strong>guaje de Descripción de Hardware<br />

(VHDL) (Ghosh, 1999)- (Villar et al., 1997).


XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control, 16 al 18 de octubre de 2007<br />

Todos los circuitos han sido evaluados según los recursos<br />

lógicos consumidos, la velocidad de procesami<strong>en</strong>to y<br />

un índice de performance.<br />

A. Recursos lógicos<br />

La cantidad de recursos lógicos o área de utilización<br />

de la FPGA se puede cuantificar <strong>en</strong> CLBs, compuestos<br />

cada uno por dos g<strong>en</strong>eradores de funciones (FG) y dos<br />

FlipFlops (FF).<br />

En la Fig. 8 se muestran los resultados de los multiplicadores<br />

<strong>en</strong> cuanto al consumo de CLBs. En la misma<br />

se puede observar que el número de CLBs aum<strong>en</strong>ta <strong>en</strong><br />

forma lineal con n para todos los multiplicadores.<br />

En la misma se puede observar la difer<strong>en</strong>cia notable<br />

de consumo de recursos <strong>en</strong>tre los multiplicadores SM,<br />

SMSR y los multiplicadores optimizados <strong>en</strong> velocidad.<br />

En el caso particular del SMbase4(-X), este posee un consumo<br />

que duplica al del SM. Esto se debe fundam<strong>en</strong>talm<strong>en</strong>te<br />

a que se sacrifican recursos para obt<strong>en</strong>er mayor<br />

velocidad.<br />

CLB<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

0 5 10 15 20 25 30 35<br />

n<br />

Figura 8: Consumo de recursos lógicos.<br />

Si se comparan <strong>en</strong>tre sí los multiplicadores optimizados<br />

<strong>en</strong> velocidad, se puede observar que el SMSC(SM) es<br />

el multiplicador que posee el m<strong>en</strong>or consumo de recursos<br />

lógicos. Por otro lado, el multiplicador SMF(SMSR) requiere<br />

una mayor cantidad de recursos que los restantes<br />

multiplicadores.<br />

B. Velocidad de procesami<strong>en</strong>to<br />

La velocidad de procesami<strong>en</strong>to fd, se expresa <strong>en</strong> millones<br />

de operaciones por segundo Mops, y se obti<strong>en</strong>e<br />

calculando la inversa del producto del retardo de propagación<br />

del camino crítico por el número de ciclos que<br />

requiere realizar una operación, fd = 1<br />

tpdN . El retardo<br />

de propagación tpd se obti<strong>en</strong>e a partir de la herrami<strong>en</strong>ta<br />

de programación de FPGA de Xilinx, Foundation 3.1i,<br />

Timimg Analyzer. A partir de los datos sumnistrados se<br />

calcula el peor caso de temporización del diseño.<br />

En la Fig. 9 se pres<strong>en</strong>tan los resultados experim<strong>en</strong>tales<br />

de la velocidad de procesami<strong>en</strong>to de los multiplicadores.<br />

En esta figura se pued<strong>en</strong> observar los resultados obt<strong>en</strong>idos<br />

por cada multiplicador. En la misma, la variante del<br />

multiplicador SMF(SMSR) es la que obti<strong>en</strong>e la mayor velocidad.<br />

Por otro lado, se puede observar que el multiplicador<br />

SMSC(SMSR) posee una relación más balanceada<br />

<strong>en</strong>tre consumo de recursos lógicos y velocidad de procesami<strong>en</strong>to.<br />

PS [Mops]<br />

18<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

0<br />

5 10 15 20<br />

n<br />

25 30 35<br />

Figura 9: Velocidad de procesami<strong>en</strong>to.<br />

Los multiplicadores SM y SMSR como se esperaba,<br />

pose<strong>en</strong> una velocidad de procesami<strong>en</strong>to inferior debido a<br />

la cantidad de ciclos de reloj necesarios para ejecutar un<br />

producto.<br />

C. Performance<br />

Se establece un índice de performance de manera de<br />

poder evaluar el desempeño global del sistema implem<strong>en</strong>tado<br />

<strong>en</strong> la FPGA, incluy<strong>en</strong>do tanto el concepto de<br />

consumo de recursos como de velocidad de procesami<strong>en</strong>to.<br />

En la Ec. (8) se define el índice de performance p.<br />

Velocidad de Procesami<strong>en</strong>to [Mops]<br />

p = (8)<br />

Area<br />

En esta ecuación, la Velocidad de Procesami<strong>en</strong>to esta<br />

definida <strong>en</strong> Millones de Operaciones por Segundo y<br />

el Area como la fracción de recursos utilizados para una<br />

determinada FPGA, (Total de la FPGA = 1). Este índice<br />

pret<strong>en</strong>de poder comparar la performance de distintos tipos<br />

de multiplicadores para su utilización <strong>en</strong> una FPGA<br />

designada.<br />

En la Fig. 10 se grafica el índice de performance para<br />

un rango de 8 < n < 20 bits. En la misma se puede<br />

observar que el mayor índice lo compart<strong>en</strong> los multiplicadores<br />

SM y SMSC(SMSR). Una forma de interpretar<br />

este resultado es analizando una posible aplicación de<br />

estos multiplicadores. Dado el caso <strong>en</strong> que una aplicación<br />

requiere realizar un cierto número de productos <strong>en</strong><br />

un mismo instante, este indica que resulta tan efici<strong>en</strong>te<br />

utilizar arreglos paralelos de multiplicadores SMSR como<br />

realizar todos los productos más rápidam<strong>en</strong>te <strong>en</strong> un<br />

solo SMSC(SMSR).


Performance<br />

250<br />

200<br />

150<br />

100<br />

50<br />

XII Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control, 16 al 18 de octubre de 2007<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

5 10 15 20<br />

n<br />

Figura 10: Índice de performance, n ≤ 20.<br />

En la Fig. 11 se grafica el índice de performance para<br />

un rango de 20 < n < 32 bits. En esta figura se puede<br />

observar que el mayor índice lo compart<strong>en</strong> los multiplicadores<br />

SM y SMSC(SM). Esto se debe a que el multiplicador<br />

SMSC(SM) consume m<strong>en</strong>or cantidad de recursos que<br />

el SMSC(SMSR) y a medida que aum<strong>en</strong>ta la longitud de<br />

palabra de los operandos, la velocidad de procesami<strong>en</strong>to<br />

de ambos multiplicadores se hace más parecida.<br />

IV. CONCLUSIONES<br />

En este trabajo se pres<strong>en</strong>tó un estudio comparativo de<br />

multiplicadores secu<strong>en</strong>ciales los cuales constituy<strong>en</strong> una<br />

bu<strong>en</strong>a alternativa para la utilización <strong>en</strong> FPGA. Se pres<strong>en</strong>taron<br />

resultados experim<strong>en</strong>tales que permit<strong>en</strong> distinguir<br />

las características de cada uno de los multiplicadores pres<strong>en</strong>tados.<br />

A partir de estas características se puede observar que<br />

el SM y los SMSC son los multiplicadores que mejor<br />

balancean la relación <strong>en</strong>tre consumo de recursos lógicos<br />

y velocidad de procesami<strong>en</strong>to. Resultando el óptimo<br />

el primero para aplicaciones de muy reducida cantidad<br />

de recursos lógicos, y el segundo <strong>en</strong> aplicaciones donde<br />

además de las restricciones de recursos se requiere increm<strong>en</strong>tar<br />

la velocidad de procesami<strong>en</strong>to.<br />

REFERENCIAS<br />

Funes, M., D. Carrica and M. B<strong>en</strong>edetti (2001). Multiplicadores<br />

secu<strong>en</strong>ciales para estructuras FPGA. IX<br />

Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información<br />

y Control. Vol. II, 646–651.<br />

Ghosh, Sumit (1999). Hardware Description Languages<br />

Concepts and Principles. IEEE Press. 445 Hoes Lane,<br />

P.O. Box 1331 Piscataway, NJ 08855-1331.<br />

Hayes, John P. (1996). Introducción al Diseño Lógico Digital.<br />

Addison-Wesley Iberoamericana. Wilmington,<br />

Delaware, E.U.A.<br />

Performance<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

SM<br />

SMSR<br />

SMbase4 (3X)<br />

SMbase4 (−X)<br />

SMF (SM)<br />

SMF (SMSR)<br />

SMSC (SM)<br />

SMSC (SMSR)<br />

20 22 24 26<br />

n<br />

28 30 32<br />

Figura 11: Índice de performance 20 ≤ n ≤ 32.<br />

H<strong>en</strong>nessy, John L. and David Patterson (1996). Computer<br />

Architecture: A Quantitative Approach. Morgan<br />

Kaufmann Publishers, Inc.. San Francisco, California<br />

ISBN: 1-55860-329-8.<br />

Parhami, Behrooz (2000). Computer Arithmetic: Algorithms<br />

and Hardware Design. Oxford University<br />

Press. New York, Oxford.<br />

Teixeira, D<strong>en</strong>is, Altamiro Susim and Luigi Carro (1999).<br />

Comparación de multiplicadores <strong>en</strong> fpga. V Workshop<br />

Iberchip 1, 182–187.<br />

The Programable Logic Data Book<br />

The Programable Logic Data Book (2000). Xilinx.<br />

Thornton, M.A. and J.V Gaiche, J.D.and Lemieux (1999).<br />

Tradeoff analysis of integer multiplier circuits implem<strong>en</strong>ted<br />

in FPGAs. Communications, Computers<br />

and Signal Processing IEEE Pacific RIM Confer<strong>en</strong>ce<br />

pp. 301–304.<br />

Villar, E., L. Terés, S. Olcoz and Y. Torroja (1997). VHDL<br />

L<strong>en</strong>guaje Estandar de Diseño Electrónico. McGraw<br />

Hill. Madrid.


Floating Point Multipliers<br />

with Reduced FPGA Area<br />

M. Funes, D.Carrica, and M. B<strong>en</strong>edetti<br />

Laboratorio de Instrum<strong>en</strong>tación y Control<br />

Universidad Nacional de Mar del Plata, Arg<strong>en</strong>tina<br />

mfunes@fi.mdp.edu.ar ⋆⋆<br />

Abstract. FPGA based Floating Point Multipliers demand abundant logical<br />

resources. This paper pres<strong>en</strong>ts a sequ<strong>en</strong>tial structure of floating-point multiplier<br />

requiring a reduced number of resources. The proposed architecture was<br />

evaluated theorically and experim<strong>en</strong>tally achieving a substantially good performance.<br />

1 INTRODUCTION<br />

Many computationally-int<strong>en</strong>sive applications found in Digital Signal Processing (DSP)<br />

employ the parallel processing capability of Field Programmable Gate Arrays (FPGAs)<br />

to obtain a high processing speed [4] [5]. FPGAs combine the flexibility of a g<strong>en</strong>eralpurpose,<br />

programmable digital signal processor with the speed and d<strong>en</strong>sity of a custom<br />

hardware implem<strong>en</strong>tation. A digital processing implem<strong>en</strong>tation into a target FPGA<br />

should be optimized in terms of logic resources consumption.to achieve a good performance<br />

and cost-effectiv<strong>en</strong>ess.<br />

Digital Signal Processing mainly involves multiply operations which can be either<br />

fix or floating point, dep<strong>en</strong>ding on the operand-range. The latter is used to reduce<br />

overflow problems oft<strong>en</strong> observed in fixed point formats. A number expressed in floating<br />

point format consist of a sign bit S, a biased expon<strong>en</strong>t e of r bits and the fractional f<br />

of n bits. These elem<strong>en</strong>ts express a number giv<strong>en</strong> by the following equation:<br />

op =(−1) S × 2 e−bias × 1.f (1)<br />

Floating point multiplications involve sign setting, e expon<strong>en</strong>t addition (with bias<br />

correction) and mantissa product (including the leading bit). The latter is performed as<br />

an integer multiplication and is the most logic resources consummer. Furthermore, the<br />

multiplication is oft<strong>en</strong> executed in parallel way, that is, by developing simultaneously<br />

the product shown in Eq.(2):<br />

p =1.fx × 1.fy =<br />

n<br />

[yi × (1xn−1..x3x2x0)] · 2 i<br />

i=0<br />

⋆⋆ This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and<br />

the Ag<strong>en</strong>cia Nacional de Promoción Ci<strong>en</strong>tífica y Tecnológica (BID 1201/OC-AR 2002).The<br />

authors are with the Departm<strong>en</strong>t of Electronics, Universidad Nacional de Mar del Plata<br />

and CONICET, Arg<strong>en</strong>tina.<br />

(2)


where 1.fx = {xn..x2x0} and 1.fy = {yn ···y2y0} are mantissas of n + 1 bits, and xn<br />

and yn both ’1’.<br />

There are two key factors of the FPGA multiplier design, the processing speed<br />

and used area. There exists a tradeoff betwe<strong>en</strong> logic resources and processing speed.<br />

Some multiplier schemes increase the processing speed but also increases the logic<br />

consumption [9]. Increm<strong>en</strong>ts in the FPGA used area reduce the maximum operating<br />

frequ<strong>en</strong>cy. Consequ<strong>en</strong>tly there exist a technological boundary where increasing of the<br />

implem<strong>en</strong>tation complexity does not lead to an increm<strong>en</strong>t in the processing speed.<br />

Several authors studied and proposed differ<strong>en</strong>t parallel schemes of FPGA Floating-<br />

Point Multipliers in order to reduce logic consumption [10] [8] [3].<br />

This article proposes a novel floating-point multiplier leading to a meaningful area<br />

reduction without relegating much processing speed. An estimation of the logic resources<br />

consumption of the proposed scheme is g<strong>en</strong>erated in order to evaluate its<br />

consumption against the oft<strong>en</strong> used by parallel multipliers. Latter, the multiplier was<br />

implem<strong>en</strong>ted on several platforms and evaluated in terms of logical resources and<br />

speed. Finally, the proposed multiplier is compared with multipliers refer<strong>en</strong>ced in the<br />

literature.<br />

2 Proposed Multiplier<br />

This paper suggests the utilization of a Sequ<strong>en</strong>tial Multiplication (SM) to reduce the<br />

logic resources consumption. This multiplication algorithm executes a product using<br />

a single adder, Eq. (3):<br />

p =2 n−1<br />

<br />

n−1 <br />

yiX · 2 i−n+1<br />

<br />

(3)<br />

i=0<br />

This adder performs successive accumulations of subproducts shifted by the corresponding<br />

value.<br />

Some schemes can be found in literature like the multiplier of H<strong>en</strong>nesy shown in<br />

Figure 1 [7]. In each multiply step, the multiplier performs two tasks. First if the<br />

least-significant bit of Y is 1, register X is added to P , otherwise ”00...00” is added<br />

to P . Finally, the result will be stored back into P . The registers P and Y are shifted<br />

right, the carry bit of the sum is moved into the high-order bit of P and the low-order<br />

of P is moved into register Y . After N steps, the result is in the 2n-bit register PY.<br />

The integer multiplication result has a 2n-bits wordl<strong>en</strong>gth, but floating-point multiplication<br />

only needs the n-most significant bits of the result wich are stored in register<br />

P . Consequ<strong>en</strong>tly, there is no need in shifting bits into register Y of an integer multiplierdesigned<br />

for floating point multiplication. This lead to simplified integer multiplier<br />

shown in Fig. 2. This scheme is based on a stage counter and the multiplexer to execute<br />

the partial products. In this scheme, the partial product is added to the last shifted<br />

result and is stored in the corresponding output registers.<br />

The product normalization dep<strong>en</strong>ds on the integer multiplication result. This result<br />

is a n-bit word plus a carry bit. If this carry bit is ‘1’, the result must be rightshifted<br />

to be normalized. This operation can be achieved with the existing resources, adding<br />

an extra clock pulse and setting the non-feedback add input to zero.


X[n:0]<br />

Y[n:0]<br />

ADD<br />

1<br />

P<br />

n<br />

SHIFT<br />

Fig. 1. Shift and Add multiplier.<br />

MUX<br />

COUNTER<br />

ADD<br />

carry<br />

P[n:1]<br />

FF´s<br />

Y<br />

n<br />

X<br />

n<br />

Fig. 2. Integer sequ<strong>en</strong>tial multiplier.<br />

Biased expon<strong>en</strong>t of the product result is giv<strong>en</strong> by<br />

P[n-1:0]<br />

ep = ex + ey − bias + carry (4)<br />

This operation is performed by adding the biased expon<strong>en</strong>ts (ex,ey) and the number<br />

−bias + carry expressed in two´s complem<strong>en</strong>t. In order to reduce logic the numbers<br />

(−bias + 0) and (−bias + 1) are precalculated and added to ex + ey according to the<br />

carry value.<br />

After the design structure is defined, the logic resources consumption of the proposed<br />

floating point multiplier can be estimated. The logic resources consumption in<br />

a FPGA can be expressed in terms of it basic logic cells. Each basic cell contains two<br />

Flip Flop (FF) that can be used to store a function g<strong>en</strong>erator output (FG). However,<br />

the storage elem<strong>en</strong>ts and function g<strong>en</strong>erators can also be used indep<strong>en</strong>d<strong>en</strong>tly.<br />

Each compon<strong>en</strong>t of the multiplier can be analized in terms of its function, input<br />

and output nets, and if its outputs must be registered. Furthermore, in the design there<br />

are many macro compon<strong>en</strong>ts like adders, multiplexers, counters, and primitive compon<strong>en</strong>ts.<br />

A n-module counter is a binary of at least log2 n bits counter. Consequ<strong>en</strong>tly it<br />

uses n FFs and almost the same quantity of FGs. Th<strong>en</strong>, the n-module counter consums<br />

log2 (n)<br />

2 basic cells. A n-bit multiplexer is combinational logic which it needs at least<br />

log2(n) stages of three input FGs. The multiplexer used in the design has a registered<br />

output in the last stage resulting in a compon<strong>en</strong>t that consums<br />

È<br />

log2 n<br />

(n·2<br />

i=1<br />

−i )<br />

2<br />

for n-bit


inputs. The logic consumption of the n-bit adder dep<strong>en</strong>ds of the adder seleted. Usually,<br />

the oft<strong>en</strong> used adder is the ripple carry adder wich optimize the fast carry logic<br />

provided by the manufacturers in each basic cell. In this case, a n-bit adder use n +2<br />

FGs ( n<br />

2 + 1 basic cell) considering the carry and the overflow output. If the output<br />

of the used adder must be registered, the logic consumption estimation is the same<br />

because the FFs are native of each basic cell.<br />

Equation 5 summaries the estimated logic resources consumption of the PFPM<br />

expressed in terms of basic cells of a n-bit wordl<strong>en</strong>gth mantissa including the leading<br />

bit implied on the repres<strong>en</strong>tation 1.f. This equation take in consideration the FGs and<br />

FFs that can be merged together into a same cell.<br />

PFPM(n, r) =<br />

<br />

log 2 n+1<br />

i=1<br />

(n · 2 −i )<br />

3 Comparison of the FPGA area<br />

2<br />

+ log 2(n +1)<br />

2<br />

+ n + 13<br />

2<br />

+ r (5)<br />

The logic resources used by the PFPM is compared with floating point multiplier wich<br />

are based on fixed point multipliers reported in the literature. For this purposes, the<br />

floating point multiplier structure was designed considering the integer multiplier as an<br />

interchangeable unit. Several parallel multipliers with a reported logic consumption<br />

were selected [2]. The integer multiplier and their respective logic consumption for<br />

floating point multiplication implem<strong>en</strong>tation are: Guild scheme with a high throughput<br />

due to the use of parallelism and pipelining, Eq. (6). Second, a McCanny - McWhirter<br />

multiplication scheme with local communication betwe<strong>en</strong> its basic cells, Eq. (7). Third,<br />

a Carry Save unit with constant delay in the carry chains Eq. (8) and fourth a Ripple<br />

Carry multiplication unit which take advantage of the fast carry logic nets provided<br />

by the manufacturer. Eq. (9). For this estimation it was considered the effect of the<br />

logic not used by the n less significant bits of the integer multiplication, but the logic<br />

consumption reduction in this multipliers was neglected due to its little differ<strong>en</strong>ce (less<br />

than 5 %).<br />

Guild(n, r) = 6<br />

25 n2 + 23<br />

n +8+r (6)<br />

20<br />

McCanny(n, r) = 87<br />

n − 39 + r (7)<br />

10<br />

CarrySave(n, r) =7n− 27 + r (8)<br />

RippleCarry(n, r) = 73<br />

n − 32 + r (9)<br />

Figure 3 shows a comparison of the logic resources consumption for the selected<br />

multipliers with a typical 8 bit expon<strong>en</strong>t (r = 8). The horizontal lines in the same<br />

figure indicates the amount of avaiable basic cells in several Spartan FPGAs of Xilinx<br />

Inc. [1]. It can be observed the small of logic resources needed for the PFPM in contrast<br />

to the parallel multipliers applied to the floating point multiplication. The PFPM can<br />

be implem<strong>en</strong>ted in all platforms for any mantissa wordl<strong>en</strong>gth, while for other schemes<br />

the implem<strong>en</strong>tation is restricted to larger FPGAs. Besides, the proposed scheme make<br />

possible the implem<strong>en</strong>tation of several multipliers in the same FPGA.<br />

10


CLB<br />

600<br />

500<br />

400<br />

300<br />

200<br />

100<br />

XCS30<br />

Guid<br />

MacCanny<br />

Carry Save<br />

Ripple Carry<br />

Proposed<br />

XCS20<br />

XCS10<br />

XCS05<br />

0<br />

0 5 10 15 20 25<br />

Wordl<strong>en</strong>gth<br />

30 35 40 45<br />

4 Experim<strong>en</strong>tal results<br />

Fig. 3. Logic consumption comparation.<br />

The proposed multiplier was implem<strong>en</strong>ted on the three most ext<strong>en</strong>ded Xilinx platforms:<br />

Spartan, Virtex and Virtex II. The evaluation of the proposal in the several<br />

FPGAs allow the verification of the Eq.(5) and the exploration of the b<strong>en</strong>efits of the<br />

differ<strong>en</strong>t FPGA series to improve a better performance. The design was evaluated in<br />

terms of logical resources , minimum clock period and Processing Speed (PS).<br />

Figure 4 shows the experim<strong>en</strong>tal results for the Spartan series. It can be observed<br />

that the differ<strong>en</strong>ce betwe<strong>en</strong> the implem<strong>en</strong>tation and the estimation, Eq. (5) is less than<br />

5 %. The delay constrain in the implem<strong>en</strong>tation dep<strong>en</strong>ds on the feedback betwe<strong>en</strong> the<br />

adder inputs and the registered outputs shown in the bottom of the Figure 2. This<br />

timing determines the maximum clock speed TCK, which, along the n + 1 pulses,<br />

determines the multiplier processing speed PS =<br />

1<br />

(n+1)·TCK .<br />

Figures 5 and 6 show the experim<strong>en</strong>tal results for Virtex and Virtex II series,<br />

respectivelly. In these figures it can be observed the logic resources consumption for<br />

both implem<strong>en</strong>tations.<br />

A comparative analyisis is shown in Figure 7 where the logic resources and the<br />

processing speed are despicted for all the implem<strong>en</strong>tations. It can be observed in this<br />

figure that the logic resource estimation is comfirmed with the experim<strong>en</strong>tal results<br />

for each index n. Also it can be observed the improvem<strong>en</strong>t of the utilization of a<br />

technology among the others.


PS [Mflop]<br />

CLB<br />

PS [Mflop]<br />

CLB<br />

8<br />

6<br />

4<br />

2<br />

0<br />

5 10 15 20 25 30<br />

n<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

Estimation results<br />

Experim<strong>en</strong>tal results<br />

20<br />

5 10 15 20 25 30<br />

n<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

Fig. 4. Spartan series PFPM implem<strong>en</strong>tation<br />

0<br />

5 10 15 20 25 30<br />

n<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

Estimation results<br />

Experim<strong>en</strong>tal results<br />

20<br />

5 10 15 20 25 30<br />

n<br />

Fig. 5. Virtex series PFPM implem<strong>en</strong>tation


PS [Mflop]<br />

CLB<br />

PS [Mflop]<br />

CLB<br />

40<br />

30<br />

20<br />

10<br />

0<br />

5 10 15 20 25 30<br />

n<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

Estimation results<br />

Experim<strong>en</strong>tal results<br />

20<br />

5 10 15 20 25 30<br />

n<br />

35<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

Fig. 6. Virtex II series PFPM implem<strong>en</strong>tation<br />

0<br />

5 10 15 20 25 30<br />

n<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

Estimation results<br />

Experim<strong>en</strong>tal results Spartan<br />

Experim<strong>en</strong>tal results Virtex<br />

Experim<strong>en</strong>tal results Virtex II<br />

20<br />

5 10 15 20 25 30<br />

n<br />

Fig. 7. Performance evaluation


5 Conclusion<br />

This work addresses a novel floating-point multiplier wich can be easily implem<strong>en</strong>ted<br />

on several FPGA series. The proposed design, based on a sequ<strong>en</strong>tial multiplication,<br />

provides a meaningful area reduction. This feature is useful not only to increase the<br />

system speed with parallel processing but also to simply add more taps to an algorithm.<br />

A function of the logic used by the proposed scheme was calculated allowing the<br />

estimation of the logic resources consumption for a giv<strong>en</strong> design.<br />

The theoretical behavior was contrastated with the implem<strong>en</strong>tation for several<br />

FPGA series with less than a 5% of differ<strong>en</strong>ce in the logic consumption. The experim<strong>en</strong>tal<br />

results shown also the differ<strong>en</strong>ce in processing speed betwe<strong>en</strong> a FPGA series<br />

among the other. This results allow the exploration of the b<strong>en</strong>efics of select a differ<strong>en</strong>t<br />

FPGA series to improve a better performance in a giv<strong>en</strong> design.<br />

Refer<strong>en</strong>ces<br />

1. The Programable Logic Data Book. Xilinx, 2000.<br />

2. N. Acosta, E. Todorovich, C. Collado, and K. Lars<strong>en</strong>. Multiplicadores paralelos: Estado<br />

delarteyanálisis de su materialización <strong>en</strong> FPGA. Proc. of VI Workshop Iberchip., pages<br />

158–168, 2000.<br />

3. GH. A. Aty, Aziza I. Hussein, I.S. Ashour, and M. Mones. High-speed, area-effici<strong>en</strong>t<br />

FPGA-based floating-point multiplier. pages 274–277, 2003.<br />

4. T.-S. Chang and C.-W. J<strong>en</strong>. Hardware-effici<strong>en</strong>t implem<strong>en</strong>tations for discrete function<br />

transforms using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings,<br />

146, Issue 6:309, 1999.<br />

5. Chris Dick and Fred Harris. FPGA signal processing using sigma-delta modulation. IEEE<br />

SIGNAL PROCESSING MAGAZINE, pages 20–35, 2000.<br />

6. John P. Hayes. Introducción al Diseño Lógico Digital. Addison-Wesley Iberoamericana,<br />

Wilmington, Delaware, E.U.A, 1996.<br />

7. John L. H<strong>en</strong>nessy and David Patterson. Computer Architecture: A Quantitative Approach.<br />

Morgan Kaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8, 1996.<br />

8. Manuel A. Jiménez, Nayda G. Santiago, and Diane T. Rover. Developm<strong>en</strong>t of a scalable<br />

FPGA-based floating point multiplier. Proceedings of the Fifth Canadian Workshop on<br />

Field-Programmable Devices, pages pp. 145 – 150, 1998.<br />

9. III Walter B. Ligon, Scott McMillan, Greg Monn, Kevin Schoonover, Fred Stivers, and<br />

Keith D. Underwood. A re-evaluation of the practicality of floating-point operations on<br />

FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines,<br />

pages 206–215, 1998.<br />

10. Nabeel Shirazi, Al Walters, and Peter Athanas. Quantitative analisis of floating point<br />

arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium<br />

on FPGAs for Custom Computing Machines, pages 155–162, 1995.


PERFORMANCE EVALUATION OF FPGA<br />

FLOATING POINT MULTIPLIERS<br />

Funes, Marcos ∗,∗∗ Carrica, Daniel O. ∗<br />

B<strong>en</strong>edetti, Mario ∗<br />

∗ L.I.C., Universidad Nacional de Mar del Plata,<br />

CONICET<br />

∗∗ mfunes@fi.mdp.edu.ar<br />

Abstract: The implem<strong>en</strong>tation of FPGA-based floating Point multipliers require<br />

the availability of huge logical resources, constraining their use in some applications.<br />

The use of sequ<strong>en</strong>tial multipliers instead of standard parallel multipliers<br />

reduce the area allocated on the FPGA. A comparison of sequ<strong>en</strong>tial multiplier<br />

against parallel ones is developed. A performance index is introduced to compare<br />

the obtained results.<br />

Keywords: multiplication, floating point arithmetic, field programmable gate<br />

arrays, signal processing<br />

1. INTRODUCTION<br />

Many computationally-int<strong>en</strong>sive applications found<br />

in Digital Signal Processing (DSP) employ the<br />

parallel processing capability of Field Programmable<br />

Gate Arrays (FPGAs) to obtain a high<br />

processing speed (Chang and J<strong>en</strong>, 1999)(Dick and<br />

Harris, 2000). FPGAs combine the flexibility of<br />

a g<strong>en</strong>eral-purpose, programmable digital signal<br />

processor with the speed and d<strong>en</strong>sity of a custom<br />

hardware implem<strong>en</strong>tation. A digital processing<br />

implem<strong>en</strong>tation into a target FPGA should be optimized<br />

in terms of logic resources consumption to<br />

achieve a good performance and cost-effectiv<strong>en</strong>ess.<br />

Digital Signal Processing mainly involves multiply<br />

operations which can be either fix or floating<br />

point, dep<strong>en</strong>ding on the operand-range. An<br />

operand expressed in floating point format consist<br />

0 This work was supported by the Universidad Nacional de<br />

Mar del Plata (ING-15/G130) and the Ag<strong>en</strong>cia Nacional<br />

de Promoción Ci<strong>en</strong>tífica y Tecnológica (BID 1201/OC-AR<br />

2002).The authors are with the Departm<strong>en</strong>t of Electronics,<br />

Universidad Nacional de Mar del Plata and CONICET,<br />

Arg<strong>en</strong>tina.<br />

AADECA 2006 – XXº Congreso Arg<strong>en</strong>tino de Control Automático<br />

28 al 30 de Agosto de 2006 - Bu<strong>en</strong>os Aires, Arg<strong>en</strong>tina.<br />

of a sign bit S, a biased expon<strong>en</strong>t e of r bits and<br />

the fractional f of n bits. These elem<strong>en</strong>ts express<br />

a number giv<strong>en</strong> by the following equation:<br />

OP = (−1) S × 2 e−bias × 1.f (1)<br />

Floating point multiplications involve sign setting,<br />

e expon<strong>en</strong>t addition (with bias correction), mantissas<br />

product (including the leading bit) with<br />

rounding and normalization (IEEE754, 1985).<br />

The mantissas product is performed as an integer<br />

multiplication. This multiplication is oft<strong>en</strong> performed<br />

in a parallel way and is the most logic<br />

resources consumer operation.<br />

The great consumption of resources leads to the<br />

following problems:<br />

• Greater FPGA are necessary.<br />

• More exp<strong>en</strong>sive FPGA are required.<br />

• Difficulty to implem<strong>en</strong>t several multipliers in<br />

one FPGA.<br />

Ligon et al assesed the practical implem<strong>en</strong>tation<br />

of several floating point multipliers in a Xilinx<br />

XC4000 series, requiring bigger FPGAs to use<br />

more than one multiplier in the same chip (Ligon


et al., 1998). Other authors studied and proposed<br />

differ<strong>en</strong>t parallel schemes of FPGA Floating-Point<br />

Multipliers in order to reduce logic consumption<br />

(Shirazi et al., 1995) (Jiménez et al., 1998.).<br />

These authors proposed custom formats and several<br />

methods prioritizing a reduced logic resources<br />

consumption. Some other results were pres<strong>en</strong>ted<br />

by Aty et al over more rec<strong>en</strong>tly FPGAs (Aty et<br />

al., 2003). Floating point multipliers based on Virtex<br />

II embedded parallel multipliers with several<br />

level of pipelining were pres<strong>en</strong>ted by authors like<br />

Lee and Burgess (Lee and Burgess, 2002).<br />

Other contributions proposed the use of sequ<strong>en</strong>tial<br />

multipliers instead of standard parallel multipliers<br />

in order to reduce the area allocated on the<br />

FPGA, balancing the economy on resources with<br />

the processing speed (Funes et al., 2002)(Funes et<br />

al., 2006). The performance achieved a substantial<br />

reduction in terms of logical blocks with an<br />

acceptable calculation rate.<br />

In this paper, a comparative analysis of a sequ<strong>en</strong>tial<br />

scheme against other parallel ones is carried<br />

out. Section 3 deals with an evaluation concerned<br />

the logical resources consumption. Section<br />

4 pres<strong>en</strong>ts a global index which includes both the<br />

logical resources and the processing speed. The<br />

comparison of schemes from differ<strong>en</strong>t authors is<br />

performed using this index.<br />

2. SEQUENTIAL FLOATING POINT<br />

MULTIPLIER<br />

The sequ<strong>en</strong>tial scheme (SM) like the Shift and<br />

Add algorithm reduce the logic resources consumption,<br />

Fig.1 (H<strong>en</strong>nessy and Patterson, 1996).<br />

This scheme is based on a control stage and the<br />

multiplexer to execute the partial products. In<br />

this scheme, the partial product is added to the<br />

last shifted result and is stored in the corresponding<br />

output registers.<br />

carry<br />

ADD<br />

n<br />

shift<br />

Partial Product<br />

n-1 0<br />

n<br />

n<br />

rounding<br />

n<br />

normalization<br />

Fig. 1. Integer sequ<strong>en</strong>tial multiplier.<br />

X<br />

MUX<br />

Control<br />

The rounding mode implem<strong>en</strong>ted in this multiplier<br />

is round to nearest ev<strong>en</strong>. This means always<br />

round to nearest, and in the case of a tie round<br />

to ev<strong>en</strong>. Th<strong>en</strong>, wh<strong>en</strong> rounding, this system adds<br />

to the least significant bit of the desired result<br />

1<br />

2<br />

AADECA 2006 – XXº Congreso Arg<strong>en</strong>tino de Control Automático<br />

28 al 30 de Agosto de 2006 - Bu<strong>en</strong>os Aires, Arg<strong>en</strong>tina.<br />

n<br />

Y<br />

Product<br />

Truncation<br />

Round<br />

Normalize<br />

Overflow<br />

1 * * * * *<br />

0 0 0 0 0...0 1 0<br />

2n bit product<br />

* * * * * * * * * *<br />

* * * * * *<br />

Overflow<br />

1 * * * * *<br />

No Round<br />

0 1 * * * *<br />

n bit result<br />

Fig. 2. Rounding and normalization.<br />

N discarded bits<br />

No Overflow<br />

0 1 * * * *<br />

0 0 0 0 0...0 0 1<br />

No Overflow<br />

and th<strong>en</strong> truncates by removing the bits to the<br />

right of the LSB. The rounding scheme is shown<br />

in Fig.2. Wh<strong>en</strong>ever the product result in the range<br />

4 ≥ product ≥ 2 a normalization is executed, with<br />

an appropiate adjustm<strong>en</strong>t of the expon<strong>en</strong>t.<br />

3. LOGICAL RESOURCES COMPARISON<br />

The logic resources used by the SM are compared<br />

with those from parallel multipliers. The parallel<br />

multipliers included in the comparison are: (a)<br />

Guild scheme with a high throughput due to the<br />

use of parallelism and pipelining, (b) McCanny -<br />

McWhirter multiplication scheme with local communication<br />

betwe<strong>en</strong> its basic cells, (c) Carry Save<br />

unit with constant delay in the carry chains and<br />

(d) a Ripple Carry multiplication unit which take<br />

advantage of the fast carry logic nets provided by<br />

the manufacturer (Acosta et al., 2000). Equations<br />

(2), (3), (4) and (5) show the logic resources consumption<br />

of the Guild, McCanny - McWhirter,<br />

Carry Save and Ripple Carry, respectively.<br />

Guild(n, r) = 6<br />

25 n2 + 23<br />

n + 8 + r<br />

20<br />

(2)<br />

McCanny(n, r) = 87<br />

n − 39 + r<br />

10<br />

(3)<br />

CarrySave(n, r) = 7n − 27 + r (4)<br />

RippleCarry(n, r) = 73<br />

n − 32 + r<br />

10<br />

(5)<br />

The logic resources consumption of the sequ<strong>en</strong>tial<br />

scheme is expressed by Eq. (6):<br />

SM(n, r) =<br />

<br />

log 2 n+1<br />

i=1<br />

2<br />

(n2 −i )<br />

Eq. (6) can be reduced to eq.(7).<br />

+ log2(n + 1)<br />

+n+<br />

2<br />

17<br />

2 +r<br />

(6)<br />

SM(n, r) = 49<br />

n + 9 + r (7)<br />

32


Figure 3 shows a comparison of the logic resources<br />

consumption for the selected multipliers with a<br />

typical 8 bit expon<strong>en</strong>t (r = 8). The horizontal<br />

lines in the same figure indicates the amount<br />

of available basic cells in several Spartan FP-<br />

GAs of Xilinx Inc. (The Programable Logic Data<br />

Book, 2000). It can be observed the small of logic<br />

resources needed for the SM in contrast to the<br />

parallel multipliers applied to the floating point<br />

multiplication. The SM can be implem<strong>en</strong>ted in<br />

all platforms for any mantissa word l<strong>en</strong>gth, while<br />

for other schemes the implem<strong>en</strong>tation is restricted<br />

to larger FPGAs. Besides, the proposed scheme<br />

make possible the implem<strong>en</strong>tation of several multipliers<br />

in the same FPGA.<br />

SM<br />

Fig. 3. Logic consumption comparison.<br />

4. PERFORMANCE EVALUATION<br />

In order to evaluate the overall performance a<br />

performance index p is defined as follows:<br />

Processing Speed [Mflops]<br />

p = (8)<br />

Area<br />

where the Processing Speed is defined in Million<br />

of Floating-Point Operations per second and the<br />

Area as the used fraction with respect to the total<br />

resources available (Full FPGA = 1). This index<br />

is useful in the selection of a multiplier for a giv<strong>en</strong><br />

design because allows to compare several kinds of<br />

multipliers and wordl<strong>en</strong>gths.<br />

Figure 4 illustrates the p bar diagram corresponding<br />

to the Sequ<strong>en</strong>tial Floating Point Multiplier<br />

(SM) and reported multipliers implem<strong>en</strong>ted in the<br />

XCS20 FPGA for several wordl<strong>en</strong>gths.<br />

For 18-bit format, the SM reduces at least four<br />

times the logic area if compared to the reports<br />

by other authors (Shirazi et al., 1995; Jiménez et<br />

al., 1998.; Aty et al., 2003; Ligon et al., 1998).<br />

Fig.4 shows that the best index score is reached<br />

with SM. Also, this figure depicts the performance<br />

AADECA 2006 – XXº Congreso Arg<strong>en</strong>tino de Control Automático<br />

28 al 30 de Agosto de 2006 - Bu<strong>en</strong>os Aires, Arg<strong>en</strong>tina.<br />

Performance<br />

Jim<strong>en</strong>ez<br />

Shirazi<br />

Aty<br />

SM<br />

Jim<strong>en</strong>ez<br />

Wordl<strong>en</strong>gth Format<br />

SM<br />

Ligon<br />

Fig. 4. Spartan multipliers performance<br />

of 24-bit multipliers. Although the speed of the<br />

multiplier proposed by (Jiménez et al., 1998.)<br />

is similar to that of SM, logical resources get<br />

notoriously reduced in the latter, thus r<strong>en</strong>dering<br />

a significantly higher performance.<br />

For 32-bit format, the SM utilizes 13% of the<br />

FPGA. The better performance index obtained<br />

with SM results from the differ<strong>en</strong>ces of the designs:<br />

the 3-stage Booth-based multiplier proposed<br />

by (Ligon et al., 1998) is characterized by<br />

its fast speed, but it consumes 82% of the FPGA.<br />

If compared, despite being half slower, the SM<br />

consumes 5 times less. The proper multiplier selection<br />

dep<strong>en</strong>ds, in this case, on the type of project<br />

or FPGA size.<br />

Figure 5 shows the performance index for the<br />

multipliers implem<strong>en</strong>ted in Virtex II FPGA. For<br />

18-bits format, the SM achieves superior performance<br />

to that proposed in the literature (Shirazi<br />

et al., 1995; Jiménez et al., 1998.; Aty et al., 2003).<br />

In addition to the decreasing level of logical resources<br />

employed, the proposed design is faster.<br />

For 32-bits, the differ<strong>en</strong>ce is small and the performance<br />

index for the SM results from its low<br />

logical resource consumption. On the other hand<br />

the high performance of the 32-bit multiplier (Lee<br />

and Burgess, 2002) result from its high processing<br />

speed. For these multipliers the applicability dep<strong>en</strong>ds<br />

on the design constraints, i.e., less area or<br />

high speed.<br />

5. CONCLUSION<br />

This work compares the sequ<strong>en</strong>tial multiplier<br />

against several parallel ones. The sequ<strong>en</strong>tial multiplier<br />

provides a meaningful area reduction with<br />

an acceptable calculation rate.<br />

A performance index r<strong>en</strong>dering an effective evaluation<br />

of multipliers is also introduced in this<br />

paper. The sequ<strong>en</strong>tial multiplier is compared with<br />

those reported by some authors and assessed in<br />

SM


Performance<br />

Aty<br />

SM<br />

Wordl<strong>en</strong>gth Format<br />

Lee<br />

Fig. 5. Virtex II multipliers performance<br />

terms of its performance index. The multiplier<br />

has demonstrated to be superior to some reported<br />

multipliers in term of this performance index.<br />

REFERENCES<br />

IEEE754, IEEE Std (1985). IEEE standard for binary<br />

floating-point arithmetic. The Institute<br />

of Electrical and Electronics Engineers Inc..<br />

New York.<br />

Acosta, N., E. Todorovich, C. Collado and<br />

K. Lars<strong>en</strong> (2000). Multiplicadores paralelos:<br />

Estado del arte y análisis de su materialización<br />

<strong>en</strong> FPGA.. Proc. of VI Workshop<br />

Iberchip. pp. 158–168.<br />

Aty, GH. A., Aziza I. Hussein, I.S. Ashour<br />

and M. Mones (2003). High-speed, areaeffici<strong>en</strong>t<br />

FPGA-based floating-point multiplier.<br />

pp. 274–277.<br />

Chang, T.-S. and C.-W. J<strong>en</strong> (1999). Hardwareeffici<strong>en</strong>t<br />

implem<strong>en</strong>tations for discrete function<br />

transforms using LUT-based FPGAs. Computers<br />

and Digital Designs - IEE Proceedings<br />

146, Issue 6, 309.<br />

Dick, Chris and Fred Harris (2000). FPGA signal<br />

processing using sigma-delta modulation.<br />

IEEE SIGNAL PROCESSING MAGAZINE<br />

pp. 20–35.<br />

Funes, M., D. Carrica and M. B<strong>en</strong>edetti (2002).<br />

Multiplicadores de punto flotante para estructuras<br />

FPGA. Proceedings XVIII Congreso<br />

Arg<strong>en</strong>tino de Control Automático 1, 40.<br />

Funes, M., D. Carrica and M. B<strong>en</strong>edetti (2006).<br />

Floating point multipliers with reduced fpga<br />

area. Proceedings II Southern Programmable<br />

Logic Confer<strong>en</strong>ce ISBN 84-609-8998-4 1, 59–<br />

66.<br />

Hayes, John P. (1996). Introducción al Diseño<br />

Lógico Digital. Addison-Wesley Iberoamericana.<br />

Wilmington, Delaware, E.U.A.<br />

H<strong>en</strong>nessy, John L. and David Patterson (1996).<br />

Computer Architecture: A Quantitative Approach.<br />

Morgan Kaufmann Publishers, Inc..<br />

AADECA 2006 – XXº Congreso Arg<strong>en</strong>tino de Control Automático<br />

28 al 30 de Agosto de 2006 - Bu<strong>en</strong>os Aires, Arg<strong>en</strong>tina.<br />

SM<br />

San Francisco, California ISBN: 1-55860-329-<br />

8.<br />

Jiménez, Manuel A., Nayda G. Santiago and Diane<br />

T. Rover (1998.). Developm<strong>en</strong>t of a scalable<br />

FPGA-based floating point multiplier.<br />

Proceedings of the Fifth Canadian Workshop<br />

on Field-Programmable Devices pp. pp. 145 –<br />

150.<br />

Lee, B. and N. Burgess (2002). Parameterisable<br />

floating-point operations on FPGA. Confer<strong>en</strong>ce<br />

Record of the Thirty-Sixth Asilomar<br />

Confer<strong>en</strong>ce on Signals, Systems and Computers<br />

pp. 1064–1068.<br />

Ligon, III Walter B., Scott McMillan, Greg Monn,<br />

Kevin Schoonover, Fred Stivers and Keith D.<br />

Underwood (1998). A re-evaluation of the<br />

practicality of floating-point operations on<br />

FPGAs. Proceedings of IEEE Symposium on<br />

FPGAs for Custom Computing Machines<br />

pp. 206–215.<br />

Shirazi, Nabeel, Al Walters and Peter Athanas<br />

(1995). Quantitative analisis of floating point<br />

arithmetic on FPGA based custom computing<br />

machines. Proceedings. IEEE Symposium<br />

on FPGAs for Custom Computing Machines<br />

pp. 155–162.<br />

The Programable Logic Data Book (2000). Xilinx.


Novel FPGA based Floating Point Multiplier:<br />

Consecutive-Sums Sequ<strong>en</strong>tial Multiplier<br />

M. Funes, D. Carrica, M. B<strong>en</strong>edetti, P. Donato<br />

Laboratorio de Instrum<strong>en</strong>tación y Control<br />

Universidad Nacional de Mar del Plata, Arg<strong>en</strong>tina<br />

mfunes@fi.mdp.edu.ar ⋆⋆<br />

Abstract. FPGA based Floating Point Multipliers of Parallel type demand<br />

abundant logical resources. On the other hand, Sequ<strong>en</strong>tial type, required reduced<br />

logic resources but al the exp<strong>en</strong>se of a worse processing speed. This paper<br />

pres<strong>en</strong>ts a new sequ<strong>en</strong>tial structure of floating-point multiplier with a better<br />

processing speed keeping on a reduced number of resources.<br />

1 INTRODUCTION<br />

Many applications in Digital Signal Processing (DSP) employ the parallel processing<br />

capability of Field Programmable Gate Arrays (FPGAs) to obtain a high processing<br />

speed [1] [2]. FPGAs combine the flexibility of a g<strong>en</strong>eral-purpose, programmable digital<br />

signal processor with the speed and d<strong>en</strong>sity of a custom hardware implem<strong>en</strong>tation.<br />

However, a FPGA digital processing implem<strong>en</strong>tation pres<strong>en</strong>ts a great logic resources<br />

consumption which should be optimized because the great consumption leads to the<br />

following problems:<br />

– Greater FPGA and more exp<strong>en</strong>sive are necessary.<br />

– Difficulty to implem<strong>en</strong>t several multipliers in one FPGA.<br />

Several authors studied and proposed differ<strong>en</strong>t parallel schemes of FPGA Floating-<br />

Point Multipliers in order to reduce logic consumption [3] [4] [5]. On the other hand,<br />

a previous work proposed the use of sequ<strong>en</strong>tial multipliers instead of standard parallel<br />

multipliers in order to reduce logic consumption [6]. This article proposes the<br />

consecutive-sums sequ<strong>en</strong>tial multiplier which achieves more speed than the obtained<br />

in [6] maintaining the same speed vs logic resources figure. The multiplier was implem<strong>en</strong>ted<br />

on several platforms and evaluated in terms of logical resources and speed.<br />

Finally, the proposed multiplier was compared with the previous sequ<strong>en</strong>tial scheme.<br />

⋆⋆ This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and<br />

the Ag<strong>en</strong>cia Nacional de Promoción Ci<strong>en</strong>tífica y Tecnológica (BID 1201/OC-AR 2002).The<br />

authors are with the Departm<strong>en</strong>t of Electronics, Universidad Nacional de Mar del Plata<br />

and CONICET, Arg<strong>en</strong>tina.


2 Floating Point Multiplication<br />

A floating point format consists of a sign bit s, a biased expon<strong>en</strong>t e of r bits and the<br />

fractional f of n bits whose value is expresed by (1):<br />

OP = (−1) S × 2 e−bias × 1.f (1)<br />

Floating point multiplications involve sign setting, e expon<strong>en</strong>t addition (with bias<br />

correction) and mantissa product (including the leading bit) [7]. The latter is performed<br />

as an integer multiplication and is the most logic resources consumer.<br />

Sign<br />

Exclusive - OR<br />

Sign<br />

Ofl.<br />

Expon<strong>en</strong>t Mantissa<br />

Expon<strong>en</strong>t<br />

Addition<br />

Bias<br />

Adjustm<strong>en</strong>t<br />

Expon<strong>en</strong>t<br />

Adjustm<strong>en</strong>t<br />

Mantissas<br />

Product<br />

Rounding<br />

Normalization<br />

Expon<strong>en</strong>t Mantissa<br />

Fig. 1. Floating Point Multiplication.<br />

Furthermore, the multiplication is oft<strong>en</strong> executed in parallel way, Eq.(2):<br />

n<br />

p = 1.fx × 1.fy = [yi × (1xn−1..x2x1x0)] · 2 i<br />

i=0<br />

where 1.fx = {xn..x1x0} and 1.fy = {yn · · · y1y0} are mantissas of n + 1 bits, and xn<br />

and yn are both ’1’.<br />

2.1 Consecutive Sum Sequ<strong>en</strong>tial Multiplier<br />

The utilization of a Sequ<strong>en</strong>tial Multiplication (SM) to reduce the logic resources consumption<br />

of the mantissas product was proposed by Funes et al. [6]. This multiplication<br />

executes the product using only one adder, Eq. (3):<br />

p = 2 n−1<br />

<br />

n−1 <br />

yiX · 2 i−n+1<br />

<br />

(3)<br />

i=0<br />

(2)


The processing speed of the SM dep<strong>en</strong>ds on the clock frequ<strong>en</strong>cy and the number of<br />

iterations. The consecutive-sums sequ<strong>en</strong>tial multiplier (SMSC) can reduce the number<br />

of iterations by performing the addition of two subproducts at the same time, as shown<br />

in the Eq. (4).<br />

p = 2 n−1<br />

⎡<br />

<br />

⎣<br />

n<br />

2 −1<br />

(yjX2 2j−(n−1) + yj+1X2 2j+1−(n−1) )<br />

j=0<br />

⎤<br />

⎦ (4)<br />

Thus, the processing period is T = n<br />

2 · TCK, being TCK the clock period and n<br />

the mantissa wordl<strong>en</strong>gth. The multiplier scheme of a fixed point SMSC multiplier is<br />

shown in Fig. 2.<br />

carry<br />

ADD<br />

carry<br />

n-1<br />

n<br />

ADD<br />

LSB<br />

Partial<br />

2n-1 n<br />

n<br />

n<br />

n<br />

X<br />

MUX<br />

MUX<br />

Control<br />

2 bits shift<br />

n-1<br />

n/2<br />

n/2<br />

Product<br />

Y[ev<strong>en</strong> bits]<br />

Y[odd bits]<br />

Fig. 2. Consecutive sum sequ<strong>en</strong>tial multiplier (SMSC).<br />

2.2 Rounding and Normalization<br />

The multiplier rounds the mantissas to +∞. This means always round to the the<br />

closest to and no less than the infinitely precise result. Th<strong>en</strong>, wh<strong>en</strong> rounding, this<br />

system adds 1<br />

2 to the least significant bit of the desired result and th<strong>en</strong> truncates by<br />

removing the bits to the right of the LSB. There are three possible rounding operations<br />

which th<strong>en</strong> occur. The first one is no rounding if the value of all the bits to the right<br />

of the round bit is 0 or The second one is or the result is negative. To consider the<br />

first case, this operation can be computed storing in a register if any of the discarded<br />

bits was a ’1’. If the register value is 0 the the result of the mantissas product is just<br />

the truncation of the least significant bits. The second case is after the computation<br />

of the result sign. The other two rounding operations dep<strong>en</strong>ds on the most significant<br />

bit of this product as se<strong>en</strong> in Fig. 3.<br />

0


Product<br />

Truncation<br />

Rounding<br />

Rounding<br />

Normalization<br />

+<br />

Overflow<br />

1 * * * * *<br />

0 0 0 0 0...0 0 1<br />

2n bits product<br />

* * * * * * * * * *<br />

* * * * * *<br />

0 0 0 0 0...0 0 1<br />

No Overflow<br />

1 * * * * *<br />

No rounding<br />

0 1 * * * *<br />

n bit product<br />

n bits discarted<br />

Fig. 3. Rounding and normalization.<br />

No Overflow<br />

1 * * * * *<br />

Wh<strong>en</strong> rounding, the system rounds by default in the last iteration and check the<br />

result. If the result is in the range 1 ≤ p ≤ 2, the result is correctly rounded. But if the<br />

result is in the range 4 ≥ rounded product ≥ 2, a normalization shift of 1 to the right is<br />

th<strong>en</strong> necessary to restore the rounded product to the range 2 ≥ rounded product ≥ 1,<br />

with a proper adjustm<strong>en</strong>t of the expon<strong>en</strong>t. After the normalization, there are two cases<br />

in which the rounded results is correct and two other that need a correction.<br />

The first case occurs wh<strong>en</strong> the LSB of the truncated product of n-th iteration was a<br />

”1”, because the 2 −n addition propagates to the nearest significant bits. Consequ<strong>en</strong>tly<br />

this is equival<strong>en</strong>t to add 2 −n to a non-rounded result after normalization. The other<br />

case occurs wh<strong>en</strong> the LSB of the truncated result was a ”0”, because the 2 −n addition<br />

doesn’t propagates to the nearest significant bits. The result after normalization is<br />

equival<strong>en</strong>t to a truncation. Th<strong>en</strong>, a new rounding operation is required. The Table 1<br />

shows an example of the second case.<br />

Truncated result (TR) TR + 2 −n TR normalized TR expected Action<br />

10.*****00 10.*****01 1.*****0 1.*****1 round<br />

10.*****01 10.*****10 1.*****1 1.*****1 none<br />

10.*****10 10.*****11 1.*****1 1.*****0 round<br />

10.*****11 10.*****00 1.*****0 1.*****0 none<br />

Table 1. Rounding error of the normalized product.<br />

Fig. 4 shows the mantissas product with the rounding and normalization scheme.<br />

In this figure it can be observed the control unit that performs the multiplication<br />

iterations besides the rounding and normalization tasks.


carry<br />

ADD<br />

carry<br />

n-1<br />

ADD<br />

n<br />

n+1 n<br />

LSB<br />

n<br />

Default rounding<br />

Expon<strong>en</strong>t correction<br />

Sign<br />

3 Experim<strong>en</strong>tal results<br />

Partial Product<br />

n<br />

n<br />

X<br />

2 bits shift<br />

MUX<br />

MUX<br />

Control<br />

0<br />

n/2<br />

n/2<br />

discarded bit<br />

Y[ev<strong>en</strong> bits]<br />

Y[odd bits]<br />

n+1 n<br />

Normalization<br />

Post-normalization rounding<br />

Fig. 4. Mantissa product scheme.<br />

Result<br />

1 bit shift<br />

The proposed multiplier was implem<strong>en</strong>ted in VHDL [8] [9]. The mantissa wordl<strong>en</strong>gth<br />

was parameterized while the expon<strong>en</strong>t was fixed (e = 8). The design evaluated in<br />

terms of logical resources and Processing Speed (PS) was implem<strong>en</strong>ted on two Xilinx<br />

platforms: Spartan and Virtex. The evaluation of the proposal in the several FPGAs<br />

allows the exploration of the b<strong>en</strong>efits of the differ<strong>en</strong>t FPGA series to improve a better<br />

performance.<br />

In the Spartan series, the basic cell of logic is d<strong>en</strong>ominated Configurable Logic Block<br />

(CLB), each of one contains two 4-input Function g<strong>en</strong>erators and two Flip Flops. The<br />

Virtex series r<strong>en</strong>ame the CLB as a slice and each CLB contains two slices. In this work,<br />

the logic resources consumption is unified into an unique unit d<strong>en</strong>ominated Basic Cell,<br />

witch contains the same logic as a Spartan CLB.<br />

The processing speed is a function of the number of iterations of the multiplier<br />

and the maximum clock frequ<strong>en</strong>cy. The maximum clock frequ<strong>en</strong>cy is limited by the<br />

propagation delay of the critical path.<br />

In order to evaluate the performance of the proposed scheme, the SMSC floating<br />

point multiplier was compared with a SM scheme with the same rounding and<br />

normalization scheme. Figs. 5 and 6 pres<strong>en</strong>t the logic resources and processing speed<br />

comparison for a Spartan and Virtex series respectively. In this figures, it can be observed<br />

the relation betwe<strong>en</strong> the processing speed obtained in contrast with the logic<br />

resources consumed.<br />

0


PS [Mflop]<br />

CLB<br />

PS [Mflop]<br />

Basic cells<br />

15<br />

10<br />

5<br />

0<br />

5 10 15 20 25 30<br />

n<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

Experim<strong>en</strong>tal results SMSC<br />

Experim<strong>en</strong>tal results SM<br />

0<br />

5 10 15 20 25 30<br />

n<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

Fig. 5. Spartan series implem<strong>en</strong>tation, comparison<br />

0<br />

5 10 15 20 25 30<br />

n<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

Experim<strong>en</strong>tal results SMSC<br />

Experim<strong>en</strong>tal results SM<br />

0<br />

5 10 15 20 25 30<br />

n<br />

Fig. 6. Virtex series implem<strong>en</strong>tation, comparison


To evaluate the processing speed-logic consumption relation, Figs. 7 and 8 show<br />

the performance of the proposal vs. SM based scheme for the Spartan (XCS20) and<br />

Virtex (XV300) implem<strong>en</strong>tation. The performance index p is defined as follows:<br />

p =<br />

Processing Speed [Mflops]<br />

Area<br />

where the Processing Speed is expressed in Million of Floating-Point Operations per<br />

second and the Area is the fraction used resources vs. total resources of a FPGA.<br />

p<br />

100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

Experim<strong>en</strong>tal results SMSC<br />

Experim<strong>en</strong>tal results SM<br />

0<br />

15 20 25 30 35 40<br />

n<br />

Fig. 7. Spartan series implem<strong>en</strong>tation, performance index<br />

These figures show that the performance is as good as the SM based scheme, with<br />

the b<strong>en</strong>efits of a better processing speed.<br />

4 Conclusion<br />

This work addresses a novel floating-point multiplier witch can be easily implem<strong>en</strong>ted<br />

on several FPGA series. The proposed design, based on a consecutive sums sequ<strong>en</strong>tial<br />

multiplication, provides an optimization in the processing speed with the goal of a<br />

reduced logic resources consumption. The performance obtained was experim<strong>en</strong>tally<br />

assessed, achieving a substantial increm<strong>en</strong>t in the calculation rate.<br />

(5)


Performance index<br />

2000<br />

1800<br />

1600<br />

1400<br />

1200<br />

1000<br />

800<br />

600<br />

400<br />

200<br />

Refer<strong>en</strong>ces<br />

Experim<strong>en</strong>tal results SMSC<br />

Experim<strong>en</strong>tal results SM<br />

0<br />

5 10 15 20 25 30<br />

n<br />

Fig. 8. Virtex series implem<strong>en</strong>tation, performance index<br />

1. Chang, T.S., J<strong>en</strong>, C.W.: Hardware-effici<strong>en</strong>t implem<strong>en</strong>tations for discrete function transforms<br />

using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings 146,<br />

Issue 6 (1999) 309<br />

2. Dick, C., Harris, F.: FPGA signal processing using sigma-delta modulation. IEEE SIG-<br />

NAL PROCESSING MAGAZINE (2000) 20–35<br />

3. Shirazi, N., Walters, A., Athanas, P.: Quantitative analisis of floating point arithmetic<br />

on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs<br />

for Custom Computing Machines (1995) 155–162<br />

4. Jiménez, M.A., Santiago, N.G., Rover, D.T.: Developm<strong>en</strong>t of a scalable FPGA-based<br />

floating point multiplier. Proceedings of the Fifth Canadian Workshop on Field-<br />

Programmable Devices (1998.) pp. 145 – 150<br />

5. Aty, G.A., Hussein, A.I., Ashour, I., Mones, M.: High-speed, area-effici<strong>en</strong>t FPGA-based<br />

floating-point multiplier. (2003) 274–277<br />

6. Funes, M., Carrica, D., B<strong>en</strong>edetti, M.: Floating point multipliers with reduced fpga area.<br />

Proceedings II Southern Programmable Logic Confer<strong>en</strong>ce ISBN 84-609-8998-4 1 (2006)<br />

59–66<br />

7. 754, I.S.: IEEE standard for binary floating-point arithmetic. The Institute of Electrical<br />

and Electronics Engineers Inc., New York (1985)<br />

8. Villar, E., Terés, L., Olcoz, S., Torroja, Y.: VHDL L<strong>en</strong>guaje Estandar de Diseño<br />

Electrónico. McGraw Hill, Madrid (1997)<br />

9. Ghosh, S.: Hardware Description Languages Concepts and Principles. IEEE Press, 445<br />

Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331 (1999)


10. Ligon, I.W.B., McMillan, S., Monn, G., Schoonover, K., Stivers, F., Underwood, K.D.:<br />

A re-evaluation of the practicality of floating-point operations on FPGAs. Proceedings<br />

of IEEE Symposium on FPGAs for Custom Computing Machines (1998) 206–215<br />

11. Lee, B., Burgess, N.: Parameterisable floating-point operations on FPGA. Confer<strong>en</strong>ce<br />

Record of the Thirty-Sixth Asilomar Confer<strong>en</strong>ce on Signals, Systems and Computers<br />

(2002) 1064–1068


120 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003<br />

Novel Stepper Motor Controller Based on FPGA<br />

Hardware Implem<strong>en</strong>tation<br />

Daniel Carrica, S<strong>en</strong>ior Member, IEEE, Marcos A. Funes, and Sergio A. González, Member, IEEE<br />

Abstract—This paper proposes a novel stepper motor controller<br />

based on field programable gate arrays, showing a remarkable performance.<br />

The system provides a combination betwe<strong>en</strong> a novel algorithm<br />

and programmable logic to achieve both high speed and<br />

high precision on a compact hardware.<br />

Index Terms—Field programable gate arrays (FPGA), motion<br />

control, stepper motor.<br />

I. INTRODUCTION<br />

IN HIGH precision stepper motor applications, it is necessary<br />

to use motors with small steps whose size is imposed<br />

by the required resolution. Another alternative is the technique<br />

of microstepping, where the motor step size is further reduced<br />

by means of control. As microsteps are related to very little displacem<strong>en</strong>ts,<br />

a great quantity of microsteps are required to get<br />

the total displacem<strong>en</strong>t. Total displacem<strong>en</strong>t should be executed<br />

in an acceptable time. As a consequ<strong>en</strong>ce, the time betwe<strong>en</strong> microsteps<br />

should be reduced. A high-speed data transmission betwe<strong>en</strong><br />

controller and driver is mandatory wh<strong>en</strong> indexing in microstepping<br />

mode of operation.<br />

Furthermore, op<strong>en</strong> loop applications are much less exp<strong>en</strong>sive<br />

than close loop ones due to <strong>en</strong>coders. If op<strong>en</strong> loop is chos<strong>en</strong>,<br />

velocity profiles have to be used in order to avoid the step lose<br />

effect.<br />

A g<strong>en</strong>eral system for the commanding of a stepper motor is<br />

shown in Fig. 1. There are three functions: 1) the velocity profile<br />

g<strong>en</strong>eration block; 2) the indexer; and 3) the power drivers.<br />

Blocks (1) and (2) are embedded in what we named controller.<br />

After velocity profiles are g<strong>en</strong>erated, they have to be translated<br />

into pulse intervals by the indexer. Each index pulse<br />

means that the motor must increm<strong>en</strong>t its rotor position in one<br />

step/microstep, h<strong>en</strong>ce the name indexer. This block functions<br />

as a velocity-to-time translator. This block is unique to the<br />

commanding of increm<strong>en</strong>tal motion devices since other types<br />

Manuscript received November 26, 2001; revised October 16, 2002. Recomm<strong>en</strong>ded<br />

by Technical Editor K. Ohnishi. This work was supported in part by the<br />

Universidad Nacional de Mar del Plata under Grant ING-15/G064 and in part<br />

by the Ag<strong>en</strong>cia Nacional de Promoción Ci<strong>en</strong>tífica y Tecnológica under Grant<br />

BID 1201/OC-AR 2000.<br />

D. Carrica is with the Departm<strong>en</strong>t of Electronics, National University of Mar<br />

del Plata, Mar del Plata, Arg<strong>en</strong>tina. He is also with He is also with the C<strong>en</strong>tro<br />

Austral de Investigaciones Ci<strong>en</strong>tíficas (CADIC), Tierra del Fuego, Arg<strong>en</strong>tina.<br />

M. A. Funes is with the Departm<strong>en</strong>t of Electronics, National University of<br />

Mar del Plata, Mar del Plata, Arg<strong>en</strong>tina.<br />

S.A. González is with the Laboratorio de Instrum<strong>en</strong>tación y Control, Departm<strong>en</strong>t<br />

of Electronics, National University of Mar del Plata, Mar del Plata<br />

Arg<strong>en</strong>tina. He is also with the Comision de Investigaciones Ci<strong>en</strong>tificas (CIC),<br />

Bu<strong>en</strong>os Aires, Arg<strong>en</strong>tina (e-mail: sagonzal@ieee.org).<br />

Digital Object Id<strong>en</strong>tifier 10.1109/TMECH.2003.809160<br />

Fig. 1. Complete control system.<br />

of motors can be commanded just by applying the velocity<br />

profile in form of curr<strong>en</strong>t or voltage [1], [2].<br />

The implem<strong>en</strong>tation of the controller of Fig. 1 can be performed<br />

by two alternatives: off-line or on-line schemes.<br />

A. Off-Line<br />

In the off-line schemes the timing of the steps/microsteps is<br />

calculated prior the movem<strong>en</strong>t [3], [4]. The velocity profile and<br />

the time space betwe<strong>en</strong> pulses are calculated and th<strong>en</strong> stored<br />

in some kind of memory media bundled into the hardware, i.e.,<br />

ROM or ev<strong>en</strong> hard drives.<br />

A disadvantage of these schemes is that they require an important<br />

hardware volume, composed of memories and timers.<br />

This volume is proportional to the quantity of motors and the<br />

ext<strong>en</strong>sion and precision of displacem<strong>en</strong>ts.<br />

B. On-Line<br />

An intellig<strong>en</strong>t system carries out the operation of calculating<br />

the index pulses through a time lagging sequ<strong>en</strong>ce g<strong>en</strong>eration algorithm.<br />

In Fig. 2 a flowchart of one basic scheme can be se<strong>en</strong>.<br />

This flowchart contains two main blocks: construction,<br />

where the velocity profile is actually developed, and calculation,<br />

where the time betwe<strong>en</strong> the curr<strong>en</strong>t step and the next is<br />

calculated. That is, is the velocity profile g<strong>en</strong>eration and<br />

is the indexer of Fig. 1. Oft<strong>en</strong> a common block is shared<br />

because a single equation computes both the velocity profile and<br />

the . For example, (1) and (2) express a typical algorithm<br />

for a trapezoidal profile [5].<br />

step<br />

1083-4435/03$17.00 © 2003 IEEE<br />

where is the resulting speed, is the maximum speed<br />

of the motor, is the total number of steps or microsteps, is<br />

the acceleration of the trapezoidal profile and is the time<br />

of the -th step.<br />

(1)<br />

(2)


CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 121<br />

Fig. 2. On-line algorithms.<br />

These schemes as well as the off-line ones make use of timers<br />

for obtaining the indexed pulses. Since it is necessary one timer<br />

per motor, this approach is oft<strong>en</strong> discouraged wh<strong>en</strong> multiple motors<br />

have to be commanded by a single processor.<br />

Another important disadvantage is the computing time , required<br />

to compute (1). imposes a practical limit to the speed.<br />

Moreover, not only but the timer resolution, , affect the<br />

maximum speed as in (3)<br />

Curr<strong>en</strong>t timer resolutions are small <strong>en</strong>ough to discard the<br />

at the equation. Therefore, (3) turns into (4).<br />

Standard algorithms fail to reach high speeds, mainly because<br />

the computing time, . In order to resolve the goal is to<br />

provide a new algorithm with a more effective step g<strong>en</strong>eration<br />

procedure without timers.<br />

II. PROPOSED ALGORITHM<br />

The proposed algorithm can be explained as follows. In order<br />

to estimate the time , it is assumed that is times<br />

, since it is an accurate way of measuring time without using<br />

timers. Therefore, the proposed algorithm has to do the following<br />

functions during each iteration:<br />

1) Let<br />

(3)<br />

(4)<br />

Fig. 3. Flow chart of the algorithm.<br />

2) Assume<br />

where is a positive integer number.<br />

3) Verify if assumed allows the wished . Thus, it<br />

means<br />

where is the refer<strong>en</strong>ce velocity at the th step.<br />

4) If the verification is true, th<strong>en</strong> execute the new step/microstep.<br />

If not, th<strong>en</strong> increm<strong>en</strong>t and repeat the process. (points<br />

2, 3, and 4)<br />

From (5) it can be se<strong>en</strong> that the resolution of is . The<br />

equality in (6) is not possible because of this resolution. Equation<br />

(6) becomes the comparison stated in (8)<br />

Eliminating the division in (8) is mandatory for reducing the<br />

iteration time. Therefore a simple contraction as in (9) is preferred<br />

The new algorithm is based on (5), (7), and (9). in (5) has<br />

the same meaning as in (4), but with a considerable smaller magnitude,<br />

since the computations here are very straightforward. It<br />

(5)<br />

(6)<br />

(7)<br />

(8)<br />

(9)


122 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003<br />

Fig. 4. Int<strong>en</strong>ded velocity profile.<br />

is experim<strong>en</strong>taly demonstrated that a t<strong>en</strong> times less than in<br />

conv<strong>en</strong>tional algorithms is achieved.<br />

To conclude, the algorithm consists basically on a periodic<br />

accumulative sum until the int<strong>en</strong>ded velocity is reached. Fig. 3<br />

shows the flowchart of a system that implem<strong>en</strong>ts (5), (7) and<br />

(9). The velocity profiles block was previously executed.<br />

From (5), resolution of the new algorithm is since<br />

is an integer. resolution in the new algorithm arises to a<br />

velocity quantization problem because velocity is the inverse of<br />

, (6). Since the term is a multiple of and ,<br />

it turns out that the speed commanded has the following characteristics:<br />

.<br />

.<br />

(10)<br />

As an example, Fig. 4 shows a trapezoidal profile which starts<br />

at and has a maximum . In order to keep track of the<br />

int<strong>en</strong>ded speed (in discontinuous line), the system commands an<br />

initial value of . This results in an initial speed of<br />

which is the closest possible speed to the int<strong>en</strong>ded initial speed,<br />

.At , changes to 6. As a consequ<strong>en</strong>ce a higher speed<br />

of occurs. At , produces a commanded speed<br />

of . It th<strong>en</strong> follows that at time the commanding speed<br />

is which equals the int<strong>en</strong>ded velocity profile.<br />

The quantification effect is more remarkable at higher speeds<br />

wh<strong>en</strong> times are smaller as . The effect can also be explained<br />

since intermediate speeds cannot take place betwe<strong>en</strong><br />

and , or betwe<strong>en</strong> and , nor among<br />

and , etc.<br />

Fig. 5. FPGA based control system.<br />

Therefore, an algorithm has be<strong>en</strong> developed which requires<br />

neither timers nor lookup tables and can work for much higher<br />

speeds. It’s disadvantage is the quantification effect which dep<strong>en</strong>ds<br />

on the magnitude of . With curr<strong>en</strong>t DSP technology, a<br />

minimun s is obtainable. This magnitude produces<br />

a quantification level of 2000 steps at speeds arround 15 000<br />

steps/s, which shows the importance of the problem.<br />

III. HARDWARE IMPLEMENTATION<br />

In order to reduce the computing time, a hardware implem<strong>en</strong>tation<br />

is proposed. The algorithm pres<strong>en</strong>ted in Section II is<br />

simple <strong>en</strong>ough to be executed by a custom hardware. Hardware<br />

implem<strong>en</strong>tation permits multiple parallel tasks, thus, providing<br />

an effective way of implem<strong>en</strong>ting true parallelism which allows<br />

a great reduction of computing time because operations such as<br />

the refer<strong>en</strong>ce profile g<strong>en</strong>eration, multipication and indexation<br />

can be executed in separate blocks and can run indep<strong>en</strong>d<strong>en</strong>tly<br />

ones of the others.<br />

Equations (5) and (9) are replaced by (11) . Although, this<br />

means no changes in the algorithm, it reduces the pair of<br />

multiplications to only one. This fact allows an effici<strong>en</strong>t hardware<br />

implem<strong>en</strong>tation without performance demerit. Hardware<br />

implem<strong>en</strong>tation of (5) and (9) is pres<strong>en</strong>ted in Fig. 5, where<br />

the block diagram of the controller is shown. The COUNTER,<br />

wich counts clock periods, repres<strong>en</strong>ts the execution of (5).<br />

The hardware implem<strong>en</strong>tation of (11) is carried out by the<br />

MULTIPLIER and the COMPARATOR<br />

(11)<br />

Wh<strong>en</strong> the inequation is satisfied, a new step is commanded.<br />

The signal is th<strong>en</strong> fed to the DRIVER INTERFACE, which commands<br />

the pulses to the driver of each motor phase. Fig. 5 shows<br />

a four phase motor.<br />

The clock period of hardware implem<strong>en</strong>tation is equival<strong>en</strong>t<br />

to the computing time in the software execution of the algorithm<br />

of Section II. The clock period defines the time resolution<br />

of the controller. As can be well reduced in hardware ap-


CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 123<br />

Fig. 6. Position and velocity profile with the FPGA based system.<br />

proach, the quantizacion effect on the mechanical velocity will<br />

be negligible.<br />

Standard implem<strong>en</strong>tation of a multiplier is accomplish by a<br />

combinatorial structure. This approach is very good regarding<br />

the time because it pres<strong>en</strong>ts a minimum delay imposed by<br />

the logic gates, but it involves a great number of logic resources,<br />

which increase proportionally with the multiplier word l<strong>en</strong>gth.<br />

As an example, a 16 16 bits product requires the 90% of a<br />

10 000 logic gates FPGA [6], [7]. In order to overcome the<br />

FPGA area problem, a sequ<strong>en</strong>tial arquitecture for the multiplier<br />

is proposed [8], [9]. This approach allows an effective area reduction<br />

of 10 times, but with a greater , i.e., 16 clock pulses<br />

for a 16-bit word multiplier. However, with a 40 MHz clock,<br />

time is only 400 ns which remains neglicted for system performance.<br />

As a consequ<strong>en</strong>ce, a sequ<strong>en</strong>tial multiplier was adopted,<br />

which permited the implem<strong>en</strong>tation of the algorithm in a FPGA<br />

of 6000 logic gates.<br />

A trapezoidal profile is g<strong>en</strong>erated, with several parameters,<br />

such as acceleration, minimum and maximum speed, and step<br />

quantity. The controller decides how the profile must be based<br />

on these parameters, and g<strong>en</strong>erates a refer<strong>en</strong>ce profile to drive<br />

the stepper motor.<br />

As a conclusion, a new controller based on a novel algorithm<br />

implem<strong>en</strong>ted by hardware was proposed. The new system provides<br />

a good combination to achieve both high speed and high<br />

precision motion on a compact hardware. Furthermore, this controller<br />

can easily drive full, half and micro-step mode applications<br />

due to the flexibility and the reduced computing time with<br />

the FPGA implem<strong>en</strong>tation.<br />

IV. EXPERIMENTAL RESULTS<br />

To evaluate the performance of the system, the developed algorithm<br />

was implem<strong>en</strong>ted in a Xilinx FPGA XC4006–3. This<br />

device can run at synchronous system clock rates up to 80 MHz<br />

and has a capacity 6000 logic gates. A hybrid stepping motor<br />

was used in the experim<strong>en</strong>ts. Motor characteristics: 400 step/rev,<br />

inertial mom<strong>en</strong>t 13 10 kg m , 10 N m. No<br />

aditional load was connected.<br />

Fig. 7. Velocity profile with the FPGA based system.<br />

The position measures were obtained through an increm<strong>en</strong>tal<br />

optical <strong>en</strong>coder ELAP-E521 with a resolution of 1024<br />

pulses/rev whose inertial mom<strong>en</strong>t is 10 kg m .Itwas<br />

coupled through an HELICAL-WA25 with an inertial mom<strong>en</strong>t<br />

of 10 kg m .<br />

The position curve was obtained by reading the <strong>en</strong>coder<br />

signal with a high resolution timer. The position was off line<br />

derived to obtain the speed profile.<br />

The muliplier works with a 40-MHz clock rate, which yield<br />

a multiplication time of 400 ns. ns was adopted, wich<br />

remains negligible in relation to the motor speed.<br />

The stepper motor must develop a 12 000 step displacem<strong>en</strong>t<br />

following a refer<strong>en</strong>ce trapezoidal profile with charasteristics:<br />

steps s, steps s and a max acceleration<br />

steps s .<br />

The resultant speed and position profiles can be se<strong>en</strong> in Fig. 6.<br />

The low time allows an almost continuous profile and very<br />

high speeds, higher than those g<strong>en</strong>erated by standard software<br />

algorithms. Due to the characteristic of the profile, the stepper<br />

motor passes through resonance area [5]. This effect can be observed<br />

at low speeds in the profiles.<br />

Fig. 7 shows a complete profile obtained at high speeds with<br />

full step. Note the continuity at all the effective speed range.<br />

Fig. 8 shows a complete profile obtained for a microsteping<br />

application. The stepper motor used in this experim<strong>en</strong>t was<br />

a SLO-SYN KML093F14C5 whose characteristics are: 200<br />

step/rev, holding torque 816 N cm and a rotor inertia<br />

3.32 kg cm . The position values were obtained through<br />

an optical increm<strong>en</strong>tal <strong>en</strong>coder with a resolution of 500<br />

pulses/rev. The microstep drive module used was an SLO-SYN<br />

MD808, configured to produce 2000 pulses/rev. As a consequ<strong>en</strong>ce,<br />

the system must g<strong>en</strong>erate a high velocity profile<br />

with steps s, steps s and a max<br />

acceleration steps s . The time adopted for<br />

the application was 400 ns in order to reduce the speed jumps<br />

at to 1000 steps/s, so the speed jump remains under 5%<br />

of . This effect can be observed as a ripple compon<strong>en</strong>t at<br />

the top of the profile.


124 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003<br />

Fig. 8. Velocity profile for microsteping application.<br />

The system achieved very high speed that was unreachable<br />

with standard algorithms executed by a processor. Furthermore<br />

the new controller does not require the timers, wich are necesary<br />

in conv<strong>en</strong>tional systems, and the processor was replaced by a<br />

FPGA of similar size and equival<strong>en</strong>t cost.<br />

V. CONCLUSION<br />

A novel algorithm with reduced quantity of operations was<br />

introduced. This algorithm implem<strong>en</strong>ted on FPGA allows a substantial<br />

decrease of the equival<strong>en</strong>t processing time developed by<br />

classic velocity controllers. As a consecu<strong>en</strong>ce, the stepper motor<br />

can reach very high speeds never obtained with standard algorithm<br />

based systems.<br />

Due to the system architecture, one FPGA can drive several<br />

stepper motors simultaneously without increasing the procesing<br />

time. It can drive three stepper motors with curr<strong>en</strong>t 6000 gates<br />

FPGAs. This advantage make the system very conv<strong>en</strong>i<strong>en</strong>t since<br />

it allows the increase of the number of motors, simply using a<br />

larger FPGA.<br />

REFERENCES<br />

[1] B. K. Bose, Ed., Modern Power Electronics. New York: IEEE Press,<br />

1992.<br />

[2] J. V. Wyk, H. Skudelny, and A. Müller-Hellmann, “Power electronics,<br />

control of the electromechanical <strong>en</strong>ergy conversion process and some<br />

applications,” Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369–399, Nov.<br />

1986.<br />

[3] J. Crook, “Low cost microprocessor based speed control ,” in Proc. 13th<br />

Annu. Symp. Increm<strong>en</strong>tal Motion Control System and Devices, P. B. Kuo,<br />

Ed., Champaign, IL, May 1984, pp. 25–30.<br />

[4] Z. Kang and S. Qu, “A new methodology for using single microprocessor<br />

to control DC stepper motors,” in Proc. IEEE Int. Conf. Industrial<br />

Technology, Dec. 1994, pp. 543–545.<br />

[5] T. K<strong>en</strong>jo and A. Sugawara, “Stepping motors and their microprocessor<br />

controls,” in Ser. Monographs in Electrical and Electronic<br />

Engineering. Oxford, U.K.: Oxford Univ. Press, 1994.<br />

[6] The Programmable Logic Data Book, Xilinx, San Jose, CA, 1999.<br />

[7] (2000) Xilinx Core G<strong>en</strong>erator Tools . Xilinx. [Online]. Available:<br />

http://www.xilinx.com/products/logicore/coreg<strong>en</strong>/index.htm<br />

[8] E. Boemo, E. Juárez, and J. M<strong>en</strong>eses, “Taxonomía de multiplicadores,”<br />

in Proc. 8th DCIS Conf., 1993, pp. 185–190.<br />

[9] J. L. H<strong>en</strong>nessy and D. Patterson, Computer Architecture: A Quantitative<br />

Approach. San Francisco, CA: Morgan Kaufmann, 1996.<br />

Daniel Carrica (M’84–SM’00) was born in Dolores,<br />

Arg<strong>en</strong>tina, in 1958. He received the <strong>en</strong>gineer<br />

degree from the National University of Mar del Plata<br />

(UNMdP), Mar del Plata, Arg<strong>en</strong>tina, in 1984 and<br />

the M.Sc. degree in electronics from the Universidad<br />

Politécnica de Madrid, Madrid, Spain, in 1992.<br />

In 1984, he joined the Departm<strong>en</strong>t of Electronics,<br />

National University of Mar del Plata (UNMdP), as<br />

a Research Assistant. From 1990 to 1991, he was an<br />

Associate Sci<strong>en</strong>tist at the European Organization for<br />

Nuclear Research (CERN), G<strong>en</strong>eva, Switzerland.<br />

From 1994 to 1996, he was Head of the Departm<strong>en</strong>t of Electronics, UNMdP<br />

where he is curr<strong>en</strong>tly an Associate Professor. He is also with the C<strong>en</strong>tro Austral<br />

de Investigaciones Ci<strong>en</strong>tíficas (CADIC), Tierra del Fuego, Arg<strong>en</strong>tina. His<br />

curr<strong>en</strong>t research interests include motion control and power electronics.<br />

Professor Carrica is a Vice Presid<strong>en</strong>t of the Joint Chapter of Arg<strong>en</strong>tina IEEE<br />

Section.<br />

Marcos A. Funes was born in Mar del Plata,<br />

Arg<strong>en</strong>tina in 1974. In 1999, he received his degree<br />

in electronic <strong>en</strong>gineering from the Universidad<br />

Nacional de Mar del Plata (UNMdP), Arg<strong>en</strong>tina and<br />

joined the Laboratorio de Instrum<strong>en</strong>tación y Control,<br />

(UNMdP) as research assistant.<br />

Since 2000, he is Assistant Professor and is curr<strong>en</strong>tly<br />

working toward his Ph.D degree at UNMdP.<br />

His curr<strong>en</strong>t research interests include high d<strong>en</strong>sity<br />

programmable logic devices and digital signal<br />

processing.<br />

Sergio A. González (M’01) was born in Mar del<br />

Plata, Arg<strong>en</strong>tina, in 1972. He obtained the electronic<br />

<strong>en</strong>gineering degree from the National University of<br />

Mar del Plata (UNMdP), Mar del Plata, Arg<strong>en</strong>tina,<br />

in 1999, where he is curr<strong>en</strong>tly working toward the<br />

Ph.D. degree.<br />

Since 1999, he has be<strong>en</strong> an Assistant Professor<br />

of control systems at the School of Engineering,<br />

UNMdP. Curr<strong>en</strong>tly, he is a Research Assistant at the<br />

Laboratorio de Instrum<strong>en</strong>tación y Control, UNMdP.<br />

His research interests include hardware design,<br />

digital signal processing, motion control and electromechanical systems<br />

dynamics.<br />

Mr. González is a Member of the International Federation of Automatic Control.


FPGA based stepper motor controller<br />

Sergio A. González 1 , Marcos A. Funes 1,2 , and Daniel Carrica 1,2<br />

1 Laboratorio de Instrum<strong>en</strong>tación y Control<br />

Universidad Nacional de Mar del Plata, Arg<strong>en</strong>tina<br />

mfunes@fi.mdp.edu.ar<br />

2 CONICET ⋆⋆<br />

Abstract. This paper proposes a novel stepper motor controller based<br />

on Field Programable Gate Arrays, showing a remarkable performance.<br />

The system provides a combination betwe<strong>en</strong> a novel algorithm developed<br />

by the authors in a previous work and programmable logic to achieve<br />

both high speed and high precision on a compact hardware.<br />

1 Introduction<br />

Several motion control applications in which a load must be moved precisely<br />

involve high speed positioning of stepper motors. Wh<strong>en</strong> multiple stepper motors<br />

must be controlled, conv<strong>en</strong>tional control algorithms fail to produce a high speed<br />

step rate. This problem arose in the simultaneous control and velocity profile<br />

g<strong>en</strong>eration of up to 6 stepper motors in the alignm<strong>en</strong>t system of the CERN<br />

Compact Linear Collider (CLIC) application [1–3]. The precise positioning of the<br />

motors require the use of velocity profiles, which must be adjusted to a certain<br />

performance in speed and acceleration as well as the dynamics of the system in<br />

order to guarantee motion without step-loss. An intellig<strong>en</strong>t system carries out<br />

the operation of calculating the index pulses through a time lagging sequ<strong>en</strong>ce<br />

g<strong>en</strong>eration algorithm. For example, (1) and (2) express a typical algorithm for a<br />

trapezoidal profile [4].<br />

∆t (k) =<br />

V (k) =<br />

2<br />

V 2 max − 2 (N − k − 1) a + V 2 max − 2 (N − 1) a<br />

1 step<br />

∆t (k)<br />

where V (k) is the resulting speed, Vmax is the maximum speed of the motor, N is<br />

the total number of steps or microsteps, a is the acceleration of the trapezoidal<br />

profile and ∆t (k) is the time of the k-th step.<br />

⋆⋆ This work was supported by the Universidad Nacional de Mar del Plata (ING-<br />

15/G130) and the Ag<strong>en</strong>cia Nacional de Promoción Ci<strong>en</strong>tífica y Tecnológica (BID<br />

1201/OC-AR 2002).The authors are with the Departm<strong>en</strong>t of Electronics, Universidad<br />

Nacional de Mar del Plata and CONICET, Arg<strong>en</strong>tina.<br />

(1)<br />

(2)


2 Sergio A. González, Marcos A. Funes, and Daniel Carrica<br />

These schemes as well as the off-line ones make use of timers for obtaining the<br />

indexed pulses. Since it is necessary one timer per motor, this approach is oft<strong>en</strong><br />

discouraged wh<strong>en</strong> multiple motors have to be commanded by a single processor.<br />

Another important disadvantage is the computing time Tc, required to compute<br />

(1). Tc imposes a practical limit to the speed. Moreover, not only Tc but<br />

the timer resolution, Tr, affect the maximum speed as in (3):<br />

Vmax =<br />

1<br />

Tr + Tc<br />

Curr<strong>en</strong>t timer resolutions are small <strong>en</strong>ough to discard the Tr at the equation.<br />

Therefore, (3) turns into (4).<br />

Vmax ˜= 1<br />

Standard algorithms fail to reach high speeds, mainly because the computing<br />

time, Tc. In order to resolve Vmax the goal is to provide a new algorithm with a<br />

more effective step g<strong>en</strong>eration procedure without timers.<br />

2 Proposed algorithm<br />

The proposed algorithm was introduced in a previous work [5]. The algorithm<br />

consists basically on a periodic accumulative sum until the int<strong>en</strong>ded velocity<br />

is reached. Fig. 1 shows the basic flowchart of a system that implem<strong>en</strong>ts this<br />

algorithm.<br />

From Fig. 1, ∆t (k) resolution of the new algorithm is Tc since nk is an integer.<br />

∆t (k) resolution in the new algorithm arises to a velocity quantization<br />

problem because velocity is the inverse of ∆t (k). Since the term ∆t (k) is a multiple<br />

of Tc and nk 1, it turns out that the speed commanded has the following<br />

characteristics:<br />

Vk(n) = 1<br />

=<br />

∆tk<br />

1<br />

⎧<br />

Vmax; nk = 1<br />

⎪⎨ Vmax<br />

2<br />

=<br />

nk · Tc<br />

⎪⎩<br />

; nk = 2<br />

.<br />

.<br />

.<br />

.<br />

Vmax<br />

K ; nk<br />

(5)<br />

= K<br />

As an example, Fig. 2 shows a trapezoidal profile which starts at Vmin and has<br />

a maximum Vmax. In order to keep track of the int<strong>en</strong>ded speed (in discontinuous<br />

line), the system commands an initial value of nk = 7. This results in an initial<br />

speed of Vmax/7 which is the closest possible speed to the int<strong>en</strong>ded initial speed,<br />

Vmin. At t1, nk changes to 6. As a consequ<strong>en</strong>ce a higher speed of Vmax/6 occurs.<br />

At t2, nk = 5 produces a commanded speed of Vmax/5. It th<strong>en</strong> follows that<br />

at time t6 the commanding speed is Vmax which equals the int<strong>en</strong>ded velocity<br />

profile.<br />

The quantification effect is more remarkable at higher speeds wh<strong>en</strong> ∆t (k)<br />

times are smaller as Tc. The effect can also be explained since intermediate<br />

Tc<br />

(3)<br />

(4)


th<br />

t( k)=nk Tc<br />

<br />

t( k)<br />

FPGA based stepper motor controller 3<br />

Fig. 1. Flow chart of the algorithm<br />

speeds cannot take place betwe<strong>en</strong> Vmax and Vmax/2. Neither betwe<strong>en</strong> Vmax/2<br />

and Vmax/3, nor among Vmax/3 and Vmax/4, etc.<br />

Therefore, the algorithm developed does not require neither timers nor lookup<br />

tables and can work at higher speeds. It’s disadvantage is the quantification<br />

effect which dep<strong>en</strong>ds on the magnitude of Tc. With curr<strong>en</strong>t DSP technology, a<br />

minimum Tc = 6 µs is obtainable. This Tc magnitude produces a quantification<br />

level of 2000 steps at speeds around 15000 steps<br />

s , which shows the importance of<br />

the problem.<br />

3 Hardware implem<strong>en</strong>tation<br />

In order to reduce the computing time, a hardware implem<strong>en</strong>tation is proposed.<br />

The algorithm pres<strong>en</strong>ted in Section 2 is simple <strong>en</strong>ough to be executed by a custom<br />

hardware. Hardware implem<strong>en</strong>tation permits multiple parallel tasks, thus,<br />

providing an effective way of implem<strong>en</strong>ting true parallelism which allows a great<br />

reduction of computing time because operations such as the refer<strong>en</strong>ce profile


4 Sergio A. González, Marcos A. Funes, and Daniel Carrica<br />

Fig. 2. Int<strong>en</strong>ded velocity profile<br />

g<strong>en</strong>eration, multiplication and indexation can be executed in separate blocks<br />

and can run indep<strong>en</strong>d<strong>en</strong>tly ones of the others.<br />

The equations of Fig. 1 are replaced by (6). Although, this means no changes<br />

in the algorithm, it reduces the pair of multiplications to only one. This fact allows<br />

an effici<strong>en</strong>t hardware implem<strong>en</strong>tation without performance demerit. Hardware<br />

implem<strong>en</strong>tation of Fig. 1 is pres<strong>en</strong>ted in Fig. 3, where the block diagram<br />

of the controller is shown.<br />

The hardware implem<strong>en</strong>tation of (6) is carried out by the MULTIPLIER and<br />

the COMPARATOR.<br />

VR · nk 1<br />

Wh<strong>en</strong> the inequality is satisfied, a new step is commanded. The signal is th<strong>en</strong><br />

fed to the DRIVER INTERFACE, which commands the pulses to the driver of<br />

each motor phase. Fig. 3 shows a 4 phases motor.<br />

The clock period Tc of hardware implem<strong>en</strong>tation is equival<strong>en</strong>t to the computing<br />

time in the software execution of the algorithm of Section 2. The clock<br />

Tc<br />

(6)


FPGA based stepper motor controller 5<br />

period Tc defines the time resolution of the controller. As Tc can be well reduced<br />

in hardware approach, the quantization effect on the mechanical velocity will be<br />

negligible.<br />

Standard implem<strong>en</strong>tation of a multiplier is accomplish by a combinatorial<br />

structure. This approach is very good regarding the Tc time because it pres<strong>en</strong>ts<br />

a minimum delay imposed by the logic gates, but it involves a great number of<br />

logic resources, which increase proportionally with the multiplier word l<strong>en</strong>gth. As<br />

an example, a 16×16 bits product requires the 45% of a 20000 logic gates FPGA<br />

[6] [7]. In order to overcome the FPGA area problem, a sequ<strong>en</strong>tial architecture for<br />

the multiplier is proposed [8] [9]. A sequ<strong>en</strong>tial multiplier allows an effective area<br />

reduction of 10 times, but with a greater Tc, i.e. 16 clock pulses for a 16-bit word<br />

multiplier. However, a second approach using a fast scheme of the sequ<strong>en</strong>tial<br />

multiplication (8 pulses per multiplication) achieve a Tc time of only 200 ns<br />

with a 40 MHz clock. As a consequ<strong>en</strong>ce, the quantization problem is minimized<br />

and with the curr<strong>en</strong>t scheme high speed profiles can be achieved to perform<br />

microstepping applications. Also, the proposed scheme require the 12% of the<br />

logic area allowing the implem<strong>en</strong>tation of several multipliers in the same FPGA.<br />

A trapezoidal profile is g<strong>en</strong>erated, with several parameters, such as acceleration,<br />

minimum and maximum speed, and step quantity. The controller decides<br />

how the profile must be based on these parameters, and g<strong>en</strong>erates a refer<strong>en</strong>ce<br />

profile to drive the stepper motor.<br />

16<br />

1/T C<br />

COUNTER<br />

16<br />

Clock<br />

T c<br />

16<br />

n k<br />

COMPARATOR<br />

V 1/T<br />

R x nk <br />

MULTIPLIER<br />

C<br />

16<br />

V R x n k<br />

Refer<strong>en</strong>ce velocity<br />

profile g<strong>en</strong>erator<br />

V R<br />

DRIVER<br />

INTERFACE<br />

Power<br />

Drivers<br />

Fig. 3. FPGA based control system<br />

Stepper<br />

motor


6 Sergio A. González, Marcos A. Funes, and Daniel Carrica<br />

As a conclusion, a new controller based on a novel algorithm implem<strong>en</strong>ted by<br />

hardware was proposed. The new system provides a good combination to achieve<br />

both high speed and high precision motion on a compact hardware. Furthermore,<br />

this controller can easily drive full, half and micro-step mode applications due to<br />

the flexibility and the reduced computing time with the FPGA implem<strong>en</strong>tation.<br />

4 Experim<strong>en</strong>tal results<br />

The alignm<strong>en</strong>t control system of the CERN Compact Linear Collider (CLIC),<br />

must regulate the position of the girders and quadruples with a 10 µm precision,<br />

so that the trajectory of the beam evolves aligned with the axial axis of cavities<br />

and quadruples, despite the multiple perturbations that affect the position. The<br />

displacem<strong>en</strong>t of girders and quadruples is performed through increm<strong>en</strong>tal motion<br />

motors. The girders that support the cavities are moved by three motors, while<br />

the quadruples are moved by five motors, all coupled by ball and socket joints,<br />

as schematically shown in Fig. 4. In the 4 sections, there is a grand total of<br />

70 motors along a distance of 5.6 m. Stepper motors are suitable for precise<br />

positioning in CLIC since motors with small step size are commonly available.<br />

The developed algorithm was tested on a prototype hardware where 6 motors<br />

must be controlled simultaneously, it has communication capacity with other<br />

hierarchic systems in order to produce the complete motion profile through all<br />

the sections.<br />

vertical<br />

motor<br />

: pivot<br />

z<br />

girder<br />

x<br />

vertical<br />

motor<br />

horizontal<br />

motor<br />

horizontal<br />

motor<br />

y1<br />

quadrupole<br />

vertical<br />

motor<br />

vertical<br />

motor<br />

Fig. 4. Motor layout in the girders and in the quadruples<br />

y2<br />

horizontal<br />

motor<br />

vertical<br />

motor<br />

To evaluate the performance of the system, the developed algorithm was<br />

implem<strong>en</strong>ted in a Xilinx FPGA XCS20-4. This device can run at synchronous<br />

system clock rates up to 80 MHz and has a capacity 10000 logic gates. A hybrid<br />

stepping motor was used in the experim<strong>en</strong>ts. Motor characteristics: 400 step<br />

rev ,<br />

inertial mom<strong>en</strong>t 13 · 10 −7 kg m 2 , Tret = 33 · 10 −7 N m. No additional load was<br />

connected.


Position, [REV]<br />

Speed, [REV/s]<br />

150<br />

100<br />

50<br />

0<br />

80<br />

60<br />

40<br />

20<br />

0<br />

FPGA based stepper motor controller 7<br />

Position profile<br />

1 2 3<br />

Time, [s]<br />

4 5 6<br />

Velocity profile<br />

1 2 3 4 5 6<br />

Time, [s]<br />

Fig. 5. Position and velocity profile with the FPGA based system<br />

The position measures were obtained through an increm<strong>en</strong>tal optical <strong>en</strong>coder<br />

ELAP-E521 with a resolution of 1024 pulses per revolution whose inertial mom<strong>en</strong>t<br />

is 2.5 · 10 −6 kg m 2 . It was coupled through an HELICAL-WA25 with an<br />

inertial mom<strong>en</strong>t of 2.3 · 10 −6 kg m 2 .<br />

The position curve was obtained by reading the <strong>en</strong>coder signal with a high<br />

resolution timer. The position was off line derived to obtain the speed profile.<br />

The multiplier works with a 40 MHz clock rate, which yield a multiplication<br />

time of 200 ns. was adopted, which remains negligible in relation to the motor<br />

speed.<br />

The stepper motor must develop a 60000 step displacem<strong>en</strong>t following a refer-<br />

<strong>en</strong>ce trapezoidal profile with characteristics: Vmin = 500 steps<br />

s , Vmax = 36000 steps<br />

s<br />

and a max acceleration amax = 16000 steps<br />

s 2 .<br />

The resultant speed and position profiles can be se<strong>en</strong> in Fig. 5. The low<br />

Tc time allows an almost continuous profile and very high speeds, higher than<br />

those g<strong>en</strong>erated by standard software algorithms. Due to the characteristic of<br />

the profile, the stepper motor passes through resonance area [4]. This effect can<br />

be observed at low speeds in the profiles.


8 Sergio A. González, Marcos A. Funes, and Daniel Carrica<br />

Position, [REV]<br />

Speed, [REV/s]<br />

150<br />

100<br />

50<br />

0<br />

40<br />

30<br />

20<br />

10<br />

Position profile<br />

10 20 30<br />

Time, [s]<br />

40 50 60<br />

Velocity profile<br />

0<br />

0 10 20 30<br />

Time, [s]<br />

40 50 60<br />

Fig. 6. Position and velocity profile for microstepping application.<br />

Fig. 6 shows a complete profile obtained for a microstepping application. The<br />

stepper motor used in this experim<strong>en</strong>t was a SLO-SYN KML093F14C5 whose<br />

characteristics are: 200 step<br />

rev , holding torque Thold = 816 N cm and a rotor inertia<br />

3.32 kg cm 2 . The position values were obtained through an optical increm<strong>en</strong>tal<br />

<strong>en</strong>coder with a resolution of 500 pulses per revolution. The microstep drive<br />

module used was an SLO-SYN MD808, configured to produce 2000 pulses per<br />

revolution. As a consequ<strong>en</strong>ce, the system must g<strong>en</strong>erate a high velocity profile<br />

with Vmax = 72000 steps<br />

s . The Tc time adopted for the application was 200 ns in<br />

order to reduce the speed jumps under 5 % of Vmax. This effect can be observed<br />

as a ripple compon<strong>en</strong>t at the top of the profile.<br />

The system achieved very high speed that was unreachable with standard<br />

algorithms executed by a processor. Furthermore the new controller does not require<br />

the timers, which are necessary in conv<strong>en</strong>tional systems, and the processor<br />

was replaced by a FPGA of similar size and equival<strong>en</strong>t cost.


5 Conclusions<br />

FPGA based stepper motor controller 9<br />

A novel algorithm with reduced quantity of operations was introduced. This algorithm<br />

implem<strong>en</strong>ted on FPGA allows a substantial decrease of the equival<strong>en</strong>t<br />

processing time developed by classic velocity controllers. As a consequ<strong>en</strong>ce, the<br />

stepper motor can reach very high speeds never obtained with standard algorithm<br />

based systems.<br />

Due to the system architecture, one FPGA can drive several stepper motors<br />

simultaneously without increasing the processing time. It can drive three stepper<br />

motors with curr<strong>en</strong>t 10000 gates FPGAs. This advantage make the system very<br />

conv<strong>en</strong>i<strong>en</strong>t since it allows the increase of the number of motors, simply using a<br />

larger FPGA.<br />

Refer<strong>en</strong>ces<br />

1. W. Coosemans and H. Mainaud, “Pre-alignm<strong>en</strong>t of clic using the double-wire<br />

method,” European Organization of Nuclear Research (CERN), Tech. Rep. 343,<br />

July 1997, CLIC-NOTE 343.<br />

2. H. Braun, “Experim<strong>en</strong>tal results and technical research and developm<strong>en</strong>t at CTFII,”<br />

in Proc. European Particle Accelerator Confer<strong>en</strong>ce-EPAC2000, Vi<strong>en</strong>na, Austria,<br />

June 20–30, 2000, pp. 48–52. [Online]. Available: http://accelconf.web.cern.ch/<br />

accelconf/e00/<br />

3. P. Poirier, “Lalignem<strong>en</strong>t dynamique submicrometrique de sections acceleratrices,”<br />

Memoire de sout<strong>en</strong>ance du Diplome de Recherche Specialisee <strong>en</strong> Sci<strong>en</strong>ces, Universite<br />

Louis Pasteur de Strasbourg, September 1991.<br />

4. T. K<strong>en</strong>jo and A. Sugawara, Stepping Motors and their Microprocessor Controls,<br />

2nd ed., ser. Monographs in Electrical and Electronic Engineering. Oxford, U.K.:<br />

Oxford University Press, 1995.<br />

5. D. O. Carrica and S. A. González, “Algoritmo efici<strong>en</strong>te para la g<strong>en</strong>eración de perfiles<br />

de velocidad <strong>en</strong> el accionami<strong>en</strong>to simultáneo de múltiples motores paso a paso,” VIII<br />

Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y Control., Vol. I , 1999,<br />

pp. 118–122.<br />

6. The Programable Logic Data Book. Xilinx, 2000.<br />

7. “Core g<strong>en</strong>erator,” http://www.xilinx.com/products/logicore/coreg<strong>en</strong>/index.htm,<br />

2000.<br />

8. M. Funes, D. Carrica, and M. B<strong>en</strong>edetti, “Multiplicadores secu<strong>en</strong>ciales para estructuras<br />

FPGA,” IX Reunión de Trabajo <strong>en</strong> Procesami<strong>en</strong>to de la Información y<br />

Control., vol. Vol. II, pp. 646–651, 2001.<br />

9. J. L. H<strong>en</strong>nessy and D. Patterson, Computer Architecture: A Quantitative Approach.<br />

San Francisco, California ISBN: 1-55860-329-8: Morgan Kaufmann Publishers, Inc.,<br />

1996.

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

Saved successfully!

Ooh no, something went wrong!