Multiplicación Secuencial en Dispositivos Lógicos Programables
Multiplicación Secuencial en Dispositivos Lógicos Programables
Multiplicación Secuencial en Dispositivos Lógicos Programables
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.