Upload
teamgti
View
78
Download
4
Embed Size (px)
Citation preview
MULTIPLICACION SECUENCIAL EN
DISPOSITIVOS LOGICOS
PROGRAMABLES
Ing. Marcos Funes
Este Trabajo de Tesis fue presentado al Departamento de Electronica
de la Facultad de Ingenierıa de la Universidad Nacional de Mar del Plata
el 8 de Octubre de 2007, como requisito parcial para la obtencion del tıtulo de
Doctor en Ingenierıa. Mencion Electronica
Director: Dr. Daniel Carrica
Co-Director: Ing. Mario Benedetti
A mis Padres.
A Andrea.
A Nicolas, Alejandro y Fernando
Indice general
Agradecimientos XVII
Resumen XVIII
Nomenclatura XX
1. Introduccion 1
1.1. Estructuras de Multiplicadores . . . . . . . . . . . . . . . . . . . . 2
1.2. Objetivos de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Organizacion de la tesis . . . . . . . . . . . . . . . . . . . . . . . 4
2. Arquitecturas de Multiplicadores 6
2.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2. Algoritmo de la Multiplicacion . . . . . . . . . . . . . . . . . . . . 7
2.2.1. Operandos en punto fijo . . . . . . . . . . . . . . . . . . . 7
2.2.2. Operandos en punto flotante . . . . . . . . . . . . . . . . . 9
2.3. Adicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1. Semisumador . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2. Sumador Total . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.3. Suma por Propagacion de Acarreo . . . . . . . . . . . . . . 15
2.3.4. Suma Carry-Save . . . . . . . . . . . . . . . . . . . . . . . 16
iii
2.3.5. Suma Multi-operandos . . . . . . . . . . . . . . . . . . . . 17
2.4. Multiplicadores Paralelos . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1. Multiplicador por Tabla de Look-up . . . . . . . . . . . . . 19
2.4.2. Multiplicador Ripple Carry . . . . . . . . . . . . . . . . . 20
2.4.3. Multiplicador Carry Save . . . . . . . . . . . . . . . . . . . 22
2.4.4. Multiplicador Guild . . . . . . . . . . . . . . . . . . . . . . 23
2.4.5. Multipicador McCanny-McWhinter . . . . . . . . . . . . . 25
2.5. Consumo de recursos logicos . . . . . . . . . . . . . . . . . . . . . 25
2.5.1. Operandos en Punto Fijo . . . . . . . . . . . . . . . . . . . 25
2.5.2. Operandos en punto flotante . . . . . . . . . . . . . . . . . 31
2.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3. Nuevas Arquitecturas de Multiplicadores 33
3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2. Multiplicacion Secuencial . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1. Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2. Implementacion . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.3. Multiplicador Secuencial de Base 4 . . . . . . . . . . . . . 45
3.3. Arquitecturas Propuestas en Punto Fijo . . . . . . . . . . . . . . 56
3.3.1. Multiplicador Secuencial Sin Entradas Registradas . . . . . 56
3.3.2. Multiplicador Secuencial Fraccionado . . . . . . . . . . . . 61
3.3.3. Multiplicador de Sumas Consecutivas . . . . . . . . . . . . 67
3.4. Comparacion de los multiplicadores . . . . . . . . . . . . . . . . . 75
3.4.1. Multiplicadores optimizados en consumo de recursos . . . . 75
3.4.2. Multiplicadores optimizados en velocidad . . . . . . . . . . 76
3.4.3. Performance de los multiplicadores . . . . . . . . . . . . . 78
3.5. Arquitecturas Propuestas en Punto Flotante . . . . . . . . . . . . 80
iv
3.5.1. Variante Multiplicador Secuencial Sin Entradas Registradas 80
3.5.2. Variante Multiplicador Secuencial de Sumas Consecutivas . 86
3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4. Resultados Experimentales 92
4.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.2. Parametros de interes . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.3. Multiplicacion en Punto Fijo . . . . . . . . . . . . . . . . . . . . . 93
4.3.1. Consumo de recursos logicos . . . . . . . . . . . . . . . . . 93
4.3.2. Comportamiento temporal . . . . . . . . . . . . . . . . . . 98
4.3.3. Comparacion de los multiplicadores . . . . . . . . . . . . . 101
4.4. Multiplicacion en Punto Flotante . . . . . . . . . . . . . . . . . . 114
4.4.1. Consumo de recursos logicos . . . . . . . . . . . . . . . . . 114
4.4.2. Comportamiento temporal . . . . . . . . . . . . . . . . . . 115
4.4.3. Performance . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5. Conclusiones 121
5.0.1. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . 127
Bibliografıa 129
A. Dispositivos Logicos Programables 137
A.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
A.2. PLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
A.3. CPLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
A.4. FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
A.4.1. Celdas Logicas . . . . . . . . . . . . . . . . . . . . . . . . 143
A.4.2. Recursos dedicados . . . . . . . . . . . . . . . . . . . . . . 145
v
A.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
B. Sistemas numericos 150
B.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
B.2. Representacion numerica . . . . . . . . . . . . . . . . . . . . . . . 150
B.2.1. Punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
B.2.2. Punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . 154
B.2.3. No-convencionales . . . . . . . . . . . . . . . . . . . . . . . 157
C. Multiplicacion Secuencial aplicada al Control de Movimiento 159
C.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
C.2. Accionamientos paso a paso . . . . . . . . . . . . . . . . . . . . . 161
C.2.1. Generacion de perfiles de velocidad Off-line . . . . . . . . . 162
C.2.2. Generacion de perfiles de velocidad On-line . . . . . . . . . 162
C.3. Generacion de perfiles de velocidad mediante FPGA . . . . . . . . 167
C.3.1. Implementacion del producto Vr · nk . . . . . . . . . . . . 169
C.4. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . . 172
C.4.1. Modo de funcionamiento en pasos . . . . . . . . . . . . . . 172
C.4.2. Modo de funcionamiento en micropasos . . . . . . . . . . . 174
C.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
D. Publicaciones 179
D.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
D.2. Multiplicadores secuenciales en FPGA: Evaluacion y Comparacion
de Parametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
D.3. Estudio comparativo de multiplicadores secuenciales implementa-
dos en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
D.4. Floating Point Multipliers with Reduced FPGA Area . . . . . . . 199
vi
D.5. Performance Evaluation of FPGA Floating Point Multipliers . . . 207
D.6. Novel FPGA based Floating Point Multiplier: Consecutive-Sums
Sequential Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . 211
D.7. Novel Stepper Motor Controller Based on FPGA Hardware Imple-
mentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
D.8. FPGA based stepper motor controller . . . . . . . . . . . . . . . . 225
vii
Indice de Tablas
2.1. Producto de dos operandos de 4 bits . . . . . . . . . . . . . . . . 7
2.2. Implementacion de multiplicadores en FPGA. . . . . . . . . . . . 29
3.1. Producto de dos operandos de 4 bits, acumulacion de productos
parciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2. Multiplicacion secuencial con desplazamiento a la izquierda para
operandos de 4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3. Multiplicacion con desplazamiento a la derecha para operandos de
4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4. Estimacion de consumo de recursos logicos de un SM. . . . . . . . 40
3.5. Retardos de una FPGA Xilinx Spartan-4. . . . . . . . . . . . . . . 43
3.6. Producto de dos operandos en base 4 . . . . . . . . . . . . . . . . 46
3.7. Multiplicacion base 4 de dos operados de 4 bits. . . . . . . . . . . 46
3.8. Codificacion de los dıgitos, alternativa (-X). . . . . . . . . . . . . 47
3.9. Multiplicacion base 4, alternativa (-X). . . . . . . . . . . . . . . . 48
3.10. Estimacion de consumo de recursos de un SMB4(3X). . . . . . . . 49
3.11. Estimacion de consumo de recursos logicos SMB4(-X). . . . . . . 50
3.12. Estimacion de consumo de recursos logicos de un SMSR. . . . . . 57
3.13. Estimacion de consumo de recursos logicos SMF(SM). . . . . . . . 63
3.14. Estimacion de consumo de recursos logicos de un SMF(SMSR). . 64
viii
3.15. Ejemplo de una multiplicacion mediante sumas consecutivas . . . 68
3.16. Estimacion de consumo de recursos logicos de un SMSC(SM). . . 69
3.17. Estimacion de consumo de recursos logicos de un SMSC(SMSR). . 70
3.18. Estimacion de consumo de recursos logicos de la variante SMSR
con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.19. Estimacion de consumo de recursos logicos de la variante SMSR
con redondeo a +∞. . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.20. Estimacion de consumo de recursos logicos de la variante SMSC
con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.21. Estimacion de consumo de recursos logicos de la variante SMSC
con redondeo a +∞. . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.1. Consumo de recursos de los multiplicadores en Spartan[CLB]. . . 94
4.2. Consumo Estimado de recursos de los multiplicadores [CLB]. . . . 94
4.3. Diferencia porcentual, Consumo Experimental vs Estimado [ %]. . 95
4.4. Consumo de recursos de los multiplicadores en Virtex [slices]. . . . 98
4.5. Consumo de recursos de los multiplicadores en Virtex II [slices]. . 98
4.6. Retardo de propagacion de los multiplicadores en Spartan [ns]. . . 99
4.7. Retardo estimado de propagacion de los multiplicadores Trd = 0 [ns]. 99
4.8. Diferencia porcentual, Retardo de propagacion Experimental vs
Estimado [ %]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.9. Velocidad de Procesamiento de los multiplicadores en Spartan [Mops/s].100
4.10. Velocidad de Procesamiento de los multiplicadores en Virtex [Mops/s].101
4.11. Velocidad de Procesamiento de los multiplicadores en Virtex II
[Mops/s]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.12. Consumo de recursos logicos de los multiplicadores en punto flo-
tante en Spartan [CLBs]. . . . . . . . . . . . . . . . . . . . . . . . 114
ix
4.13. Consumo de recursos logicos de las variantes en Virtex [slices]. . . 115
4.14. Consumo de recursos logicos de las variantes en Virtex II [slices]. . 115
4.15. Comportamiento temporal de las variantes en Spartan [Mflop/s]. . 115
4.16. Comportamiento temporal de las variantes en Virtex [Mflop/s]. . 116
4.17. Comportamiento temporal de las variantes en Virtex II [Mflop/s]. 116
5.1. Implementacion de Multiplicadores Paralelos en FPGA. . . . . . . 122
5.2. Resultados experimentales de Multiplicadores Secuenciales . . . . 123
5.3. Resultados experimentales de los Multiplicadores Secuenciales pro-
puestos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.4. Resultados experimentales de Multiplicadores en Punto Flotante . 125
B.1. Punto flotante estandar. . . . . . . . . . . . . . . . . . . . . . . . 156
B.2. Punto flotante a medida. . . . . . . . . . . . . . . . . . . . . . . . 157
x
Indice de figuras
2.1. Diagrama en bloques de un multiplicador en punto flotante . . . . 9
2.2. Semisumador a) Sımbolo logico, b) y c) arquitectura. . . . . . . . 13
2.3. Sumador total,a) sımbolo logico b) y c) arquitecturas. . . . . . . . 15
2.4. Sımbolo logico de un CPA e implementacion de un RCA. . . . . 16
2.5. CSA a) Sımbolo logico y b) implementacion con FAs. . . . . . . . 17
2.6. Sumadores concatenados a) con CPA, b) con CSA. . . . . . . . . 18
2.7. Arbol de sumadores para m=9. . . . . . . . . . . . . . . . . . . . 19
2.8. Multiplicador por Tabla de Look-up. . . . . . . . . . . . . . . . . 20
2.9. Multiplicador Ripple Carry de 4 bits. . . . . . . . . . . . . . . . . 20
2.10. PE de un multiplicador Ripple Carry. . . . . . . . . . . . . . . . . 21
2.11. Esquema de un multiplicador Ripple Carry mediante PEs. . . . . 21
2.12. Multiplicador Carry Save de 4 bits. . . . . . . . . . . . . . . . . . 22
2.13. PE de un multiplicador Carry Save. . . . . . . . . . . . . . . . . . 22
2.14. Esquema de un multiplicador Carry Save mediante PEs. . . . . . 23
2.15. PE de un multiplicador paralelo Guild. . . . . . . . . . . . . . . . 23
2.16. Multiplicador paralelo Guild. . . . . . . . . . . . . . . . . . . . . . 24
2.17. PE de un multiplicador Mccanny - Mcwhinter. . . . . . . . . . . . 25
2.18. Multiplicador paralelo Mccanny - Mcwhinter. . . . . . . . . . . . 26
2.19. Consumo de recursos logicos de MP. . . . . . . . . . . . . . . . . 28
2.20. Multiplicadores proporcionados por Xilinx. . . . . . . . . . . . . . 29
xi
2.21. Implementacion de Multiplicadores n = 8 . . . . . . . . . . . . . . 30
2.22. Implementacion de Multiplicadores n = 16 . . . . . . . . . . . . . 30
2.23. Implementacion de un multiplicador optimizado en area de Xilinx
n = 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1. Multiplicador SM con desplazamiento a la derecha. . . . . . . . . 37
3.2. Multiplicador SM con desplazamiento a la derecha con registro
compartido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3. Multiplicador SM con desplazamiento a la izquierda. . . . . . . . 39
3.4. Consumo de recursos del SM. . . . . . . . . . . . . . . . . . . . . 41
3.5. Esquema de retardos en un sumador. . . . . . . . . . . . . . . . . 42
3.6. Retardo de propagacion estimado del SM. . . . . . . . . . . . . . 44
3.7. Maxima frecuencia de reloj estimada aplicable al SM. . . . . . . . 44
3.8. Velocidad maxima de procesamiento del SM. . . . . . . . . . . . . 45
3.9. Diagrama de un SMB4(3X). . . . . . . . . . . . . . . . . . . . . . 47
3.10. Diagrama de un SMB4(-X). . . . . . . . . . . . . . . . . . . . . . 49
3.11. Diagrama de la variante del SMB4(-X). . . . . . . . . . . . . . . . 50
3.12. Consumo de recursos de multiplicadores SM. . . . . . . . . . . . . 52
3.13. Retardo de propagacion estimado del SMB4(3X). . . . . . . . . . 53
3.14. Maxima frecuencia de reloj estimada aplicable al SMB4(3X). . . . 53
3.15. Velocidad maxima de procesamiento del SMB4(3X). . . . . . . . . 54
3.16. Retardo de propagacion estimado del SMB4(-X). . . . . . . . . . 55
3.17. Maxima frecuencia de reloj estimada aplicable al SMB4(-X). . . . 55
3.18. Velocidad maxima de procesamiento del SMB4(-X). . . . . . . . . 56
3.19. Multiplicador SMSR. . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.20. Consumo de recursos del SMSR. . . . . . . . . . . . . . . . . . . . 58
3.21. Retardo de propagacion estimado del SMSR. . . . . . . . . . . . . 59
xii
3.22. Maxima frecuencia de reloj estimada aplicable al SMSR. . . . . . 60
3.23. Velocidad maxima de procesamiento del SMSR. . . . . . . . . . . 60
3.24. Diagrama de operacion de un SMF. . . . . . . . . . . . . . . . . . 62
3.25. Consumo de recursos de multiplicadores SMF. . . . . . . . . . . . 65
3.26. Retardo de propagacion estimado del SMF. . . . . . . . . . . . . . 66
3.27. Maxima frecuencia de reloj estimada aplicable al SMF. . . . . . . 66
3.28. Velocidad maxima de procesamiento de los SMF. . . . . . . . . . 67
3.29. Ejemplo de un SMSC(SM). . . . . . . . . . . . . . . . . . . . . . 68
3.30. Ejemplo de un SMSC(SMSR). . . . . . . . . . . . . . . . . . . . . 69
3.31. Consumo de recursos estimado de un SMSC. . . . . . . . . . . . . 71
3.32. Ruta crıtica de dos sumas consecutivas. . . . . . . . . . . . . . . . 72
3.33. Retardo de propagacion estimado del SMSC. . . . . . . . . . . . . 73
3.34. Maxima frecuencia de reloj estimada aplicable al SMSC. . . . . . 74
3.35. Velocidad maxima de procesamiento del SMSC. . . . . . . . . . . 74
3.36. Consumo de recursos logicos de un SM vs SMSR. . . . . . . . . . 75
3.37. Velocidad de procesamiento de un SM vs SMSR. . . . . . . . . . . 76
3.38. Consumo de recursos logicos de los multiplicadores optimizados en
velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.39. Velocidad de procesamiento de los multiplicadores optimizados en
velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.40. Indice de performance de los multiplicadores. . . . . . . . . . . . . 79
3.41. Indice de performance de los multiplicadores 20 < n < 32. . . . . 80
3.42. Modificacion del SMSR para el producto de las mantisas . . . . . 81
3.43. Ejemplo del esquema de redondeo implementado . . . . . . . . . . 83
3.44. Multiplicacion de las mantisas. . . . . . . . . . . . . . . . . . . . . 83
3.45. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . . 85
3.46. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . . 86
xiii
3.47. SMSC modificado para el producto de las mantisas . . . . . . . . 87
3.48. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . . 89
3.49. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . . 91
4.1. Sıntesis de un CLB del multiplicador SM. . . . . . . . . . . . . . . 95
4.2. Consumo de recursos logicos del SM en Spartan. . . . . . . . . . . 96
4.3. Consumo de recursos logicos del SM en Spartan. . . . . . . . . . . 97
4.4. Consumo de recursos logicos: SM vs SMSR en Spartan. . . . . . . 102
4.5. Consumo de recursos logicos: SM vs SMSR en Virtex. . . . . . . . 103
4.6. Consumo de recursos logicos: SM vs SMSR en Virtex II. . . . . . 103
4.7. Velocidad de procesamiento: SM vs SMSR en Spartan. . . . . . . 104
4.8. Velocidad de procesamiento: SM vs SMSR en Virtex. . . . . . . . 104
4.9. Velocidad de procesamiento: SM vs SMSR en Virtex II. . . . . . . 105
4.10. Consumo de recursos logicos de multiplicadores optimizados en
velocidad en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.11. Consumo de recursos logicos de multiplicadores optimizados en
velocidad en Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.12. Consumo de recursos logicos de multiplicadores optimizados en
velocidad en Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . 107
4.13. Velocidad de procesamiento de los multiplicadores optimizados en
velocidad en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.14. Velocidad de procesamiento de multiplicadores optimizados en ve-
locidad en Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.15. Velocidad de procesamiento de multiplicadores optimizados en ve-
locidad en Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.16. Indice de performance de los multiplicadores en Spartan, 8 ≤ n ≤ 20.110
xiv
4.17. Indice de performance de los multiplicadores en Spartan, 20 ≤ n ≤32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.18. Indice de performance de los multiplicadores en Virtex, 8 ≤ n ≤ 20. 111
4.19. Indice de performance de los multiplicadores en Virtex, 20 ≤ n ≤ 32.112
4.20. Indice de performance de los multiplicadores en Virtex II, 8 ≤ n ≤ 20.113
4.21. Indice de performance de los multiplicadores en Virtex II, 20 ≤n ≤ 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.22. Indice de performance de los multiplicadores con redondeo a cero
en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.23. Indice de performance de los multiplicadores con redondeo a +∞en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.24. Indice de performance de los multiplicadores con redondeo a +∞en Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.25. Indice de performance de los multiplicadores con redondeo a +∞en Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
A.1. Diagrama en bloques de un CPLD . . . . . . . . . . . . . . . . . . 140
A.2. Distribucion de bloques de una FPGA de Xilinx . . . . . . . . . . 141
A.3. Matriz de interconexion de una FPGA de Xilinx . . . . . . . . . . 143
A.4. Descripcion de un LE de una FPGA FLEX10K de Altera . . . . . 144
A.5. Descripcion de un CLB de una FPGA XC4000 de Xilinx . . . . . 145
A.6. Recursos logicos de algunas FPGAs de Xilinx . . . . . . . . . . . 146
A.7. Logica de acarreo dedicada de una FPGA XC4000 de Xilinx . . . 148
B.1. Esquema de formatos numericos . . . . . . . . . . . . . . . . . . . 151
C.1. Esquema de motores de una seccion del CLIC. . . . . . . . . . . . 161
xv
C.2. Sistema de control de movimiento de motores de accionamiento
incremental. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
C.3. Diagrama de flujo de un algoritmo on-line. . . . . . . . . . . . . . 163
C.4. Perfil de velocidad trapezoidal. . . . . . . . . . . . . . . . . . . . . 164
C.5. Perfil de velocidad, deseado, cuantizado y la temporizacion resul-
tante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
C.6. (Izquierda) Posicion y velocidad con el algoritmo iterativo. (Dere-
cha) Detalle del perfil de posicion y velocidad del perfil iterativo . 167
C.7. Arquitectura hardware del algoritmo de generacion de perfil de
velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
C.8. Implementacion del multiplicador Ripple Carry en una FPGA XC4006E.170
C.9. Implementacion de un multiplicador optimizado en area de Xilinx
en una FPGA XC4006E. . . . . . . . . . . . . . . . . . . . . . . . 171
C.10.Perfil de velocidad y posicion del accionamiento controlado por un
sistema basado en FPGA. 15 revs≡ 6000pasos
s. . . . . . . . . . . . 173
C.11.Perfil de velocidad del accionamiento controlado por un sistema
basado en FPGA. 62,5 revs≡ 25000pasos
s. . . . . . . . . . . . . . . 174
C.12.Perfil de velocidad del accionamiento utilizando el modo de micro-
pasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
C.13.Perfiles de posicion y velocidad para un sistema de accionamiento
en modomicropaso. . . . . . . . . . . . . . . . . . . . . . . . . . . 177
xvi
Agradecimientos
A Mario
A Daniel
A mis colegas en el Laboratorio de Instrumentacion y Control
xvii
Resumen
El objetivo principal de esta tesis fue desarrollar arquitecturas de multiplicado-
res binarios de menor consumo de recursos logicos que las existentes, manteniendo
las prestaciones de velocidad de calculo. El proposito particular fue implementar
las mismas en los dispositivos digitales denominados FPGA (Field Programmable
Gate Array).
Para ello se investigaron las estructuras de multiplicacion del tipo secuencial
que se caracterizan por poseer un consumo de recursos reducido y una velocidad
de procesamiento baja.
Se modelizaron los multiplicadores a partir del desarrollo de ecuaciones que
permiten estimar el consumo de recursos logicos y el desempeno temporal de los
mismos. Se desarrollaron nuevas arquitecturas que se compararon con las exis-
tentes. Se introdujo un nuevo indicador denominado ındice de performance, que
permite cuantificar el costo de un multiplicador para una dada FPGA. Los resul-
tados teoricos se corroboraron con un exhaustivo trabajo experimental mediante
el cual se han validado las ecuaciones obtenidas.
A partir de la validacion de los modelos de los multiplicadores, se determina-
ron los esquemas de mayor desempeno que cumplen con los objetivos deseados.
Ası se arribo a multiplicadores en punto fijo con los que se obtuvo un consu-
mo de recursos hasta 8 veces menor y una velocidad comparable a la de una
arquitectura existente. Los avances se extendieron a la multiplicacion en punto
xviii
flotante, obteniendose esquemas de bajo consumo de recursos y buena velocidad
de procesamiento.
xix
Nomenclatura
1C Complemento a 1
2C Complemento a 2
ALP Arreglo Logico Programable
ASIC Application Specific Integrated Circuit
CLB Configurable Logic Block
CPA Carry Propagate Adder
CPLD Complex Programmable Logic Device
CSA Carry Save Adder
DSP Digital Signal Processor
FA Full Adder
FF Flip Flop
FG Function Generator
FPGA Field Programmable Gate Array
GAL Generic Array Logic
HA Half Adder
LSB Least Significant Bit
LUT Look-up Table
xx
MAC Multiplicador/Acumulador
MP Multiplicador Paralelo
PAL Programmable Array Logic
PE Procesador Elemental
PLD Programmable Logic Device
PROM Programmable Read Only Memory
PS Processing Speed
RCA Ripple Carry Adder
SM Multiplicador Secuencial
SMB4 Multiplicador Secuencial de base 4
SMF Multiplicador Secuencial Fraccionado
SMSC Multiplicador Secuencial de Sumas Consecutivas
SMSR Multiplicador Secuencial Sin entradas Registradas
SR Shift Register
VHDL Very high speed integrated circuit Hardware Description Lan-
guage
fc Maxima frecuencia de reloj
pi Bit i del operando P
P Operando Producto
TBY P CIN to COUT bypass delay
Tc Tiempo de calculo
TCK Perıodo de reloj
TCKO Clock-to-output delay
xxi
TILO F/G inputs to X/Y outputs delay
TOCPY Operand inputs (F1, F2, G1, G4) to COUT delay
tpd Propagation delay
Trd Route delay
TSUM CIN through function generator to X/Y output delay
X, Y Operando Multiplicando y multiplicador respectivamente
xi, yi Bit i del operando Multiplicando y Multiplicador respectivamen-
te
Vmin Velocidad mınima
Vmax Velocidad maxima
Vr(k) Velocidad de referencia para el paso k-esimo
∆t(k) Perıodo de tiempo entre el paso actual y el proximo
xxii
Capıtulo 1
Introduccion
En el Procesamiento Digital de Senales (PDS) se recurre, como operacion
elemental, al producto de dos operandos y la posterior adicion de un tercero,
estructura conocida como MAC (Multiplicador/Acumulador).
Los dispositivos de calculo mas empleados en el PDS son los DSPs (Digital
Signal Processors). Si bien los DSPs son baratos y flexibles, poseen solo una uni-
dad MAC por lo que un proceso aritmetico demanda la ejecucion secuencial de las
operaciones. Como consecuencia, una operacion algorıtmica consume un deter-
minado tiempo de ejecucion y, si fuera necesario utilizar un tiempo de ejecucion
menor, convendrıa adoptar hardware a medida, alternativa proporcionada por los
ASICs (Application-Specific Integrated Circuit) y las FPGAs (Field Programma-
ble Gate Array). Tanto los ASICs como las FPGAs posibilitan la utilizacion de
varias MACs en paralelo, logrando de este modo una notable reduccion del tiempo
de procesamiento. Los ASICs admiten implementar sistemas complejos y resguar-
dan la propiedad intelectual de los procesos debido a que no son copiables. Sin
embargo implican un gran costo de fabricacion por lo que no aceptan errores
en su desarrollo y, consecuentemente, su utilizacion representa un gran riesgo de
produccion.
1
Capıtulo 1. Introduccion 2
En cuanto a las FPGAs, estas combinan la flexibilidad de un DSP con la
velocidad y la densidad de componentes de un ASIC. Las FPGAs poseen una
gran cantidad de recursos logicos, un bajo costo de desarrollo ya que son faciles de
depurar y, fundamentalmente, permiten al disenador corregir errores y actualizar
el diseno. Estas ventajas convierten a las FPGAs en dispositivos apropiados como
procesadores de senales o aceleradores de calculo.
1.1. Estructuras de Multiplicadores
Los multiplicadores se pueden clasificar segun el modo en que ingresan los
operandos [1] [2]. Si ambos operandos ingresan en forma serie se denominan
serie/serie. La mayor ventaja de estos multiplicadores reside en el bajo nume-
ro de entradas/salidas utilizadas y en la bajo consumo de recursos logicos, sin
embargo estos multiplicadores se encuentran limitados a aplicaciones de baja
velocidad [3] [4] [5]. Si solo uno de los operandos ingresa en forma serie, el mul-
tiplicador se denomina serie/paralelo [6]. Este tipo de multiplicadores presentan
un consumo de recursos logicos moderado y son ideales para aplicaciones de velo-
cidad media donde los multiplicadores serie/serie son demasiado lentos. Si ambos
operandos son ingresados en paralelo el tipo de multiplicador es denominado pa-
ralelo/paralelo. Estos ultimos son los que se trataran en esta tesis debido a su
capacidad de procesar los datos a alta velocidad.
Los multiplicadores tambien se pueden clasificar en funcion del algoritmo de
calculo en: suma y desplazamiento, por arbol o contadores. Los multiplicadores
por suma y desplazamiento utilizan el metodo conocido comunmente como lapiz
y papel para calcular el producto. En algunos casos esta tarea se realiza constru-
yendo una celda de procesamiento basica que se repite en un arreglo determinado.
Capıtulo 1. Introduccion 3
La diferencia de procesamiento de estos multiplicadores radica en el tipo de co-
municacion entre estas celdas, que puede ser local (solo existe comunicacion entre
celdas vecinas) o global (existe comunicacion mas alla de la celda vecina). Con el
objetivo de acelerar los productos parciales1 C. Wallace [7] propuso originalmente
una estructura de sumadores, conocida como Arbol de Wallace, donde el retardo
de la suma es proporcional el logaritmo del numero de sumandos. Otro modo de
acelerar los productos parciales consiste en la utilizacion de contadores parale-
los [8] para obtener la suma de los bits que forman las columnas de la matriz de
productos parciales.
Los multiplicadores que realizan el algoritmo de suma y desplazamiento en
forma simultanea son denominados habitualmente multiplicadores paralelos. Es-
tos multiplicadores realizan el producto rapidamente, pero son difıciles de realizar
cuando un dispositivo posee una cantidad de recursos limitada. Este problema se
acentua, cuando el formato de los operandos esta expresado en punto flotante.
Los multiplicadores en punto flotante utilizan tıpicamente multiplicadores para-
lelos para el producto de las mantisas [9] [10]. A medida que se incrementa la
complejidad de la operacion, el consumo de recursos logicos utilizados aumenta
notablemente y consecuentemente los costos de implementacion.
Un esquema de multiplicacion de operandos en paralelo que utiliza una menor
cantidad de recursos logicos es el denominado Shift and Add [11] [12] o secuencial
(SM). Esta reduccion del consumo de recursos se realiza a costa de ejecutar tantas
iteraciones como longitud de palabra posean los operandos [13] [14]. Esto repre-
senta una seria desventaja debido al excesivo tiempo de calculo y por esta razon
han sido excluidos de las aplicaciones tıpicas. Por otro lado, si se puede mejorar
el desempeno en velocidad sin incurrir en la cantidad de recursos que requiere un
1En la multiplicacion de dos numeros enteros de n bits se denomina producto parcial alproducto un bit del multiplicador por el multiplicando.
Capıtulo 1. Introduccion 4
multiplicador paralelo, estos multiplicadores pueden resultar mas ventajosos.
1.2. Objetivos de la tesis
El objetivo principal de esta tesis consiste en el desarrollo de multiplicado-
res con un reducido consumo de recursos logicos, que mantengan un desempeno
aceptable de la velocidad de procesamiento.
En funcion de este objetivo, se caracterizaran las arquitecturas de los multi-
plicadores existentes. Se propondran variantes que incluyan la multiplicacion de
operandos en punto fijo y punto flotante.
1.3. Organizacion de la tesis
Esta tesis esta dividida en cinco capıtulos. El Capıtulo 1 presenta el estado
del arte e introduce aspectos de la tematica de esta tesis. El Capıtulo 2 presenta
conceptos basicos sobre la multiplicacion. Se presentan los esquemas de Multi-
plicadores Paralelos, los cuales se caracterizan y se ensayan con el objetivo de
cuantificar la problematica de consumo de recursos.
El Capıtulo 3 esta dedicado al desarrollo de la propuesta que consiste en la
aplicacion de Multiplicadores Secuenciales al producto binario en punto fijo y en
punto flotante. En este capıtulo se desarrollan diferentes esquemas de Multipli-
cacion Secuencial para los cuales se estima su desempeno en cuanto a la cantidad
de recursos logicos y velocidad de procesamiento.
El Capıtulo 4 esta dedicado a la verificacion experimental. Para ello se ex-
plicita la implementacion practica de los diferentes esquemas desarrollados sobre
algunas familias de FPGAs. El objetivo de este capıtulo es la contrastacion de las
estimaciones obtenidas en el capıtulo anterior con los resultados experimentales.
Capıtulo 1. Introduccion 5
En el mismo se establecen criterios de comparacion, en terminos de performance,
entre los multiplicadores propuestos y otros existentes.
Adicionalmente, se presentan cuatro apendices, a saber:
El Apendice A realiza una breve descripcion de los Dispositivos Logicos Pro-
gramables y sus caracterısticas.
El Apendice B introduce los formatos numericos utilizados en PDS.
El Apendice C describe la aplicacion especıfica de los multiplicadores secuen-
ciales en el Procesamiento Digital utilizado en el area de Control de Movimiento.
En el mismo se aprovechan las prestaciones que brindan los multiplicadores en la
implementacion hardware de un algoritmo de control de posicion.
Finalmente, el Apendice D presenta los trabajos publicados como resultado
del trabajo de tesis.
Capıtulo 2
Arquitecturas de Multiplicadores
2.1. Introduccion
La utilizacion de FPGA en el Procesamiento Digital de Senales (PDS) es su-
mamente ventajosa. Una de las ventajas consiste en la posibilidad de lograr un
hardware a medida que incluya desde la seleccion de la longitud de palabra de
los operandos hasta la ejecucion de los calculos. Un hardware a medida puede
realizar calculos mas rapidamente que uno programable porque pueden disponer-
se varias unidades de calculo en una sola FPGA. Estos multiplicadores pueden
operar independientes de modo de explotar toda la potencial concurrencia de un
algoritmo. Adicionalmente, en la FPGA se pueden ejecutar otros procesos, como
atencion de perifericos, comunicacion, etc. sin interferir con el procesamiento.
En PDS [15] [16] [17] los procesos recurren, como operacion elemental, al
producto de dos operandos y la posterior adicion de un tercero, denominada
MAC (Multiplicador/Acumulador). En una MAC, la multiplicacion demanda una
mayor cantidad de recursos logicos que la adicion.
En este capıtulo se realiza un repaso de conceptos de la multiplicacion de ope-
randos en punto fijo y punto flotante. Luego, para comprender las arquitecturas
6
Capıtulo 2. Arquitecturas de Multiplicadores 7
de los multiplicadores se introducen aspectos relativos a la adicion. Finalmente,
se presentan las estructuras de multiplicadores paralelos y su implementacion en
FPGA.
2.2. Algoritmo de la Multiplicacion
2.2.1. Operandos en punto fijo
Multiplicacion de enteros sin signo
El producto de dos operandos binarios de n bits, un multiplicando, X =n−1∑j=0
xj2j y un multiplicador, Y =
n−1∑j=0
yj2j esta representado por la Ec. (2.1).
P = Y ·X (2.1)
=n−1∑j=0
yj2j ·X (2.2)
=n−1∑j=0
2j · yjX (2.3)
Este producto, para dos operadores binarios de 4 bits sin signo X e Y , se
puede observar en la Tabla 2.1.
Tabla 2.1: Producto de dos operandos de 4 bitsx3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ y0X20
s13 s12 s11 s10 ≡ y1X21
+ s23 s22 s21 s20 ≡ y2X22
s33 s32 s31 s30 ≡ y3X23
p7 p6 p5 p4 p3 p2 p1 p0 ≡ P
producto parcial S = sj,n−1, ..., sj,2, sj,1, sj,0 con j = 0, 1, 2 · n− 1Producto P = p2n−1, ..., p2, p1, p0
Capıtulo 2. Arquitecturas de Multiplicadores 8
El producto P se obtiene como la suma de todos los productos parciales cada
uno desplazado 2j veces a la izquierda con j = 0, ..., n − 1. Este producto es
conocido tambien como metodo del lapiz y papel.
Multiplicacion de enteros con signo
En sistemas de magnitud con signo, la magnitud y el signo son representados
en forma separada. Existen multiples formatos para expresar los numeros con
signo, como por ejemplo Magnitud y Signo, Complemento a 1 (1C) y Comple-
mento a 2 (2C) (ver Seccion B.2.1).
La multiplicacion de dos operandos expresados en Magnitud y Signo se efectua
como un producto de enteros sin signo, y se ejecuta con una funcion XOR para
procesar el signo.
El producto de dos operandos expresados en 1C o 2C se puede efectuar reali-
zando el complemento del operando negativo, multiplicando luego como enteros
sin signo y, finalmente, complementando el resultado si solo uno de ellos hubiese
estado complementado. Este tipo de multiplicacion puede resultar sencillo para
el caso de 1C, pero representa bastante complejidad para el caso de 2C. En este
caso, se puede aplicar el metodo de lapiz y papel siempre que los operandos sean
positivos o que el multiplicando sea negativo y el multiplicador positivo. En am-
bos casos la suma acumulativa de los productos parciales arrojara un resultado
correcto mientras que la acumulacion contemple la extension de signo. Esto es,
si el bit mas significativo es 0, se desplaza el operando introduciendo un 0. En el
caso en que este bit sea 1, el desplazamiento se realiza introduciendo un 1.
Cuando el multiplicador sea negativo se debe realizar una correccion al pro-
cedimiento mencionado que consiste en restar el multiplicando en el ultimo paso,
en vez de adicionarlo.
Capıtulo 2. Arquitecturas de Multiplicadores 9
2.2.2. Operandos en punto flotante
Los sistemas numericos de punto flotante fueron desarrollados para operar
con precision sobre un gran rango dinamico. Sin embargo, este formato numerico
requiere algoritmos aritmeticos mas complejos.
La multiplicacion de dos operandos en punto flotante incluye varias operacio-
nes: obtencion del signo, adicion de los exponentes, multiplicacion de las mantisas
y normalizacion del resultado (Ecs. (2.4 - 2.7)).
C = A×B = SC · 2eC−bias · 1.fC (2.4)
SC = SA ⊕ SB (2.5)
eC = eA + eB − bias (2.6)
1.fC = 1.fA × 1.fB (2.7)
El algoritmo para la multiplicacion en punto flotante se representa de manera
sintetica en la Fig. 2.1.
OR-exclusivaAdición deexponentes
Producto demantisas
RedondeoAjuste de
bias
Bits de signo Exponentes Mantisas
Bit de signo Exponente MantisaOfl.
Normalización
Eta
pa
1E
tapa
2E
tapa
3
Ajuste deexponente
Figura 2.1: Diagrama en bloques de un multiplicador en punto flotante
Capıtulo 2. Arquitecturas de Multiplicadores 10
Las Ecs. (2.4 - 2.7) se realizan en varias etapas, que se describen a continua-
cion:
Etapa 1:
Se adicionan los exponentes eA y eB; si el resultado es menor que la repre-
sentacion, se produce un desbordamiento de capacidad inferior (underflow).
En este caso el resultado de toda la operacion se fija al valor ”cero”. En el
caso de un overflow, el resultado se fija en el maximo numero que el formato
puede representar.
Si el operando C es distinto de cero, se concatena el 1 implıcito a la izquier-
da del fraccional (fA y fB) representado de cada operando y se realiza el
producto entero de los numeros binarios resultantes (Ec. (2.7)).
Si el operando C es distinto de cero, se realiza la operacion XOR de los
signos de los operandos A y B.
Etapa 2:
Se ajusta el bias del exponente. Este ajuste se debe a que cada uno de los
exponentes de los operandos posee un bias (ver Seccion B.2.2) y la adicion
de dos operandos produce un desplazamiento superior al representado por
el formato.
Solo se almacenan los n bits mas significativos del producto entero de la
etapa anterior de longitud 2n bits. Se realiza una operacion de redondeo
sobre la mantisa resultante.
Etapa 3:
Se normaliza el resultado de la mantisa dependiendo del bit mas significativo
del producto de la Ec. (2.7).
Capıtulo 2. Arquitecturas de Multiplicadores 11
Se ajusta el exponente dependiendo de la normalizacion del producto de las
mantisas.
Se conforma el signo, el exponente y la mantisa en el formato representado.
Redondeo
La norma IEEE 754 [18], que trata el formato en punto flotante, especifican
cuatro tipos de redondeo: redondeo al mas cercano, redondeo a +∞, redondeo a
−∞ y redondeo a cero.
Redondeo al mas cercano (al par en caso de empate): El estandar IEEE
recomienda este redondeo por defecto. En este caso se obtiene el valor re-
presentable mas cercano al resultado infinitesimalmente preciso.
Redondeo a +∞: El estandar indica que el valor obtenido debe ser el mas
cercano y no menor que el resultado infinitesimalmente preciso. Basicamente
esto significa que, para un resultado positivo, si los bits a la derecha del LSB
son todos 0, entonces el resultado es correcto. Si por el contrario, cualquiera
de estos bits es 1, entonces se debe adicionar un 1 al LSB.
Redondeo a −∞: Este estandar indica que el valor obtenido debe ser el mas
cercano y no mayor que el resultado infinitesimalmente preciso. Basicamente
esto significa que, para un resultado negativo, si los bits a la derecha del LSB
son todos 0, entonces el resultado es correcto. Si por el contrario, cualquiera
de estos bits es 1, entonces se debe adicionar un 1 al LSB.
Redondeo a cero: En el redondeo a cero el resultado es mas cercano y
no mayor en magnitud que el resultado infinitesimalmente preciso. Este
redondeo se aplica truncando el resultado a la derecha del LSB.
Capıtulo 2. Arquitecturas de Multiplicadores 12
Normalizacion
Si el producto de mantisas de la Ec. (2.7) resulta en el rango 2 ≤ p ≤ 4,
se debe realizar un desplazamiento de normalizacion a la derecha para restaurar
el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del exponente en una
unidad.
2.3. Adicion
2.3.1. Semisumador
El Sumador Parcial (SP) tambien llamado Semisumador de un bit (Half Adder
- HA) adiciona dos operandos de un bit y genera como resultado un operando
de dos bits. El bit menos significativo es el bit suma, que surge de realizar la
operacion de OR-EXC s = a ⊕ b. El bit mas significativo resulta de realizar la
operacion AND, cout = ab. Este bit es llamado bit de acarreo de salida debido al
desborde de la adicion.
La expresion aritmetica de un sumador parcial se puede observar en las Ecs.
(2.8,2.9 y 2.9), a partir de las que se desprende el calculo del bit s y el bit de
acarreo.
2 · cout + s = a + b (2.8)
s = (a + b) mod 2
cout = (a + b)div2 =1
2(a + b− s) (2.9)
En la Fig. 2.2 se puede observar el sımbolo logico y dos posibles implementa-
ciones del HA.
Capıtulo 2. Arquitecturas de Multiplicadores 13
HA
s
cout
a b
(a)
a b
s
cout
(b)
a b
s
cout
(c)
Figura 2.2: Semisumador a) Sımbolo logico, b) y c) arquitectura.
2.3.2. Sumador Total
A diferencia del HA, el sumador total (Full Adder - FA) posee una tercer
entrada denominada bit de acarreo de entrada (cin). Esta entrada es utilizada
para recibir una senal de acarreo de un bit menos significativo.
Las Ecs. (2.10 y 2.11) representan las ecuaciones logicas que gobiernan el
funcionamiento del sumador.
s = a⊕ b⊕ cin (2.10)
cout = ab + acin + bcin (2.11)
Las Ecs. (2.12 - 2.15) representan las ecuaciones aritmeticas correspondientes.
2 · cout + s = a + b + cin (2.12)
s = (a + b + cin) mod 2 (2.13)
cout = (a + b + cin)div2 (2.14)
=1
2(a + b + cin − s) (2.15)
Otra forma de describir el funcionamiento del FA consiste en declarar dos
senales, una senal de generacion (g) y una senal de propagacion (p). La senal g
Capıtulo 2. Arquitecturas de Multiplicadores 14
indica cuando una senal de acarreo 0 o 1 es generada dentro del sumador. La
senal p indica cuando una senal de acarreo de entrada es propagada por el FA sin
cambio hacia el acarreo de salida. Adicionalmente se definen para este sistema
dos senales intermedias de acarreo, c0 y c1, que pueden ser calculadas para el caso
de cin = 0 y cin = 1. De esta manera, la salida de acarreo puede ser expresada
mediante (g, p) o (c0, c1) y la senal de acarreo de entrada puede ser realizada
utilizando compuertas AND-OR o mediante una estructura de multiplexacion.
g = ab (2.16)
p = a⊕ b (2.17)
c0 = ab (2.18)
c1 = a + b (2.19)
s = a⊕ b⊕ cin = p⊕ cin
cout = ab + acin + bcin (2.20)
= ab + (a + b)cin = ab + (a⊕ b)cin
= g + cin
= pg + pcin = pa + pcin
= cinc0 + cinc
1 (2.21)
Se debe tener en cuenta que para el calculo de cout utilizando una estructura
AND-OR, la senal de propagacion puede ser formulada como p = a + b pero para
el calculo del bit de la adicion debe ser implementada como p = a⊕ b.
Un FA puede ser implementado a partir de dos sumadores parciales, compuer-
tas de dos entradas, multiplexores, o arreglos mas complejos. En la Fig. 2.3 se
pueden observar a), el sımbolo del sumador, y dos alternativas de implementacion:
mediante dos semisumadores y mediante compuertas logicas.
Capıtulo 2. Arquitecturas de Multiplicadores 15
Figura 2.3: Sumador total,a) sımbolo logico b) y c) arquitecturas.
2.3.3. Suma por Propagacion de Acarreo
Una suma de propagacion de acarreo (Carry Propagate Adder - CPA) adiciona
dos operandos de n bits A = (an−1, an−2..., a0), B = (bn−1, bn−2..., b0) y una senal
de acarreo de entrada opcional. El resultado esta representado por un operando
de (n + 1) bits que consiste en un operando S = (sn−1, sn−2..., s0) de n bits y una
senal de acarreo de salida.
Las Ecs. (2.22 y 2.23) representan las ecuaciones logicas de cada sumador.
Se puede notar que el acarreo de salida de un bit menos significativo se propaga
hacia un acarreo de entrada de un bit mas significativo.
sj = aj ⊕ bj ⊕ cj (2.22)
cj+1 = ajbj + (a⊕ bj)cj (2.23)
Las Ecs. (2.24 - 2.27) representan las ecuaciones aritmeticas correspondientes.
2n · cout + S = A + B + cin (2.24)
Capıtulo 2. Arquitecturas de Multiplicadores 16
2n · cout +n−1∑j=0
2jsj =n−1∑j=0
2jaj +n−1∑j=0
2jbj + cin (2.25)
=n−1∑j=0
2j(aj + bj) + cin (2.26)
2cj+1 + sj = (aj + bj + cj) (2.27)
donde j = 0, 1, .., n− 1 y c0 = cin y cn = cout.
En la Fig. 2.4 se muestra el sımbolo de este sumador, que puede ser im-
plementado mediante varios FAs, y es comunmente denominado Ripple Carry
Adder (RCA). Se observa que se genera una propagacion de la senal de acarreo
CPA
S
cout
A B
(a)
cin FA
sn-1
cout
an-1 bn-1
(b)
FA
s1
a1 b1
FA
s0
a0 b0
cin...
cn-1c1c2
Figura 2.4: Sımbolo logico de un CPA e implementacion de un RCA.
que depende de la longitud de palabra de los operandos. La propagacion de esta
senal influye directamente en la velocidad de procesamiento del sumador debido
al retardo generado.
2.3.4. Suma Carry-Save
Una suma Carry-Save evita la propagacion del acarreo ubicando a los acarreos
intermedios como salidas en vez de colocarlos en la cadena de propagacion. La
suma de dos operandos de n bits presenta dos dos palabras resultantes, S (suma),
y C (acarreo). Este sumador acepta tres operandos binarios de entrada uno de
los cuales podrıa operar como acarreo de entrada.
Capıtulo 2. Arquitecturas de Multiplicadores 17
Las Ecs. (2.28, 2.29 y 2.30) representan las ecuaciones aritmeticas correspon-
dientes.
2 · C + S = A0 + A1 + A2 (2.28)
n∑i=0
2ici +n−1∑i=0
2isi =2∑
j=0
n−1∑i=0
2iaj,i (2.29)
2ci+1 + si =2∑
j=0
aj,i (2.30)
donde i = 0, 1, .., n− 1.
El CSA se construye a partir de un arreglo lineal de FAs y posee un retardo
constante independiente de la longitud de palabra de los operandos, Fig. 2.5. Este
CSA
s
a0
(a)
c
a2 a1
FA
sn-1cn
a2,n-1a1,n-1
(b)
...
a0,n-1
FA
s0c1
a2,0 a1,0 a0,0
FA
s1c2
a2,1 a1,1 a0,1
Figura 2.5: CSA a) Sımbolo logico y b) implementacion con FAs.
tipo de suma es utilizada en la generacion de arreglos de sumadores e implica la
necesidad de una suma final que aplique los acarreos correspondientes a la suma
resultante.
2.3.5. Suma Multi-operandos
Una suma multi-operando es utilizada en la adicion de m operandos de n
bits, A0, ...., Am−1(m > 2) arrojando un resultado S con una representacion de
(n + [log m]) bits.
S =m−1∑j=0
Aj (2.31)
Capıtulo 2. Arquitecturas de Multiplicadores 18
Un sumador multi-operando puede ser realizado mediante la concatenacion
serie de m − 1 sumadores de Propagacion de Acarreo (o RCAs) o de m − 2
sumadores Carry-Save seguidos de un sumador de Propagacion de Acarreo.
Ambos tipos de sumadores concatenados son similares en cuanto a su es-
tructura logica, y requerimientos de hardware, ası como la longitud de camino
crıtico. La mayor diferencia entre ambas opciones es el arribo de los bits al ultimo
sumador de propagacion.
En el sumador implementado solo con RCAs los bits mas significativos arriban
mas tarde que los menos significativos, debido a la propagacion de la senal de
acarreo. Por otro lado, en el sumador implementado con CSAs, el arribo de los
bits es balanceado, dependiendo la propagacion del acarreo fundamentalmente
del CPA de la ultima etapa, que tıpicamente es un RCA, Fig. 2.6.
CPA
A0 A1
CPA
A2
CPA
sn-1...0
A3
FA
sn
CSA
A2
CPA
S
A3
CSA
A0A1 A2
(a) (b)
Figura 2.6: Sumadores concatenados a) con CPA, b) con CSA.
Otra suma multi-operando es la propuesta por Wallace [7] tambien denomi-
nada arbol de sumadores (o Wallace tree). Esta compuesto de sumadores CSA en
un arreglo de arbol con un CPA final. Esta estructura esta disenada para obtener
un retardo de propagacion mınimo. La estructura de arbol posee tantas secciones
como sean necesarias para reducir el numero de sumandos a solo dos. En la ultima
Capıtulo 2. Arquitecturas de Multiplicadores 19
etapa, se utiliza un CPA rapido que ejecuta la adicion del sumando y el acarreo
final. En la Fig. 2.7 se muestra un arbol de sumadores para m = 9.
CSA
CPA
S
CSA
A0A
1A
2
CSA
A3A
4A
5
CSA
A6A
7A
8
CSA
CSA
CSA
Figura 2.7: Arbol de sumadores para m=9.
2.4. Multiplicadores Paralelos
El multiplicador paralelo (MP) ejecuta el producto de dos operandos si-
multaneamente o en ”paralelo”. Existen numerosos esquemas de MPs y las va-
riantes radican en la forma en que se aborda la ejecucion de los subproductos a
fin de obtener una mayor velocidad de procesamiento.
2.4.1. Multiplicador por Tabla de Look-up
El multiplicador por Tabla de Look-up no realiza calculo, sino que opera como
una memoria. Se concatenan los operandos X e Y constituyendo una direccion
de memoria, Fig. 2.8, cuyo contenido es el valor del producto X · Y previamente
almacenado. Si bien este tipo de multiplicador depende de la velocidad de acceso
a la memoria, es el mas veloz que existe. Su desventaja radica en la cantidad de
Capıtulo 2. Arquitecturas de Multiplicadores 20
recursos logicos que demanda. A modo de ejemplo, un multiplicador de 16 bits
requiere una memoria de 4,294,967,296x32 bits.
XY
DIR
P
VALOR
Figura 2.8: Multiplicador por Tabla de Look-up.
2.4.2. Multiplicador Ripple Carry
El multiplicador paralelo mas difundido se basa en un esquema de propagacion
del acarreo tal como con la suma multi-operandos mediante CPA. Este multipli-
cador es conocido como Multiplicador Ripple Carry. En la Fig. 2.9 se muestra un
ejemplo de este producto para dos operandos de 4 bits.
FA 0FAFAFA
FA 0FAFAFA
x3 x3 x1 x0
x3 x3 x1 x0
x3 x3 x1 x0
FA 0FAFAFA
x3 x3 x1 x0
0
y3
y2
y1
y0
p0p1p2p3p4p5p6p7
Figura 2.9: Multiplicador Ripple Carry de 4 bits.
Capıtulo 2. Arquitecturas de Multiplicadores 21
Una forma de analizar un esquema de MP es a traves de la sıntesis de una uni-
dad denominada PE (Procesador Elemental) que contiene una compuerta AND y
un FA, Fig. 2.10. Cada PE toma un bit de cada operando vıa las entradas ai y bi,
calcula su producto a traves de la compuerta AND, suma el resultado proveniente
de un PE previo a traves de si y el acarreo generado de un PE previo a traves
de ci. El resultado de la suma a la salida es so con el correspondiente acarreo co.
Los operandos son pasados a la salida a traves de ao y bo.
bi
ai
si
ci
bo
so
co
ao
FA
Figura 2.10: PE de un multiplicador Ripple Carry.
El esquema del Multiplicador Ripple Carry representado a partir de los PEs
se puede observar en la Fig. 2.11.
FA
FA FA
FA
FA FA
FAFA
FA
FA FA
FA
FA FA
FAFA
p7 p6 p5 p4 p3 p1 p0p2
x3 x2 x1 x0
y3
y2
y1
y0
Figura 2.11: Esquema de un multiplicador Ripple Carry mediante PEs.
Capıtulo 2. Arquitecturas de Multiplicadores 22
2.4.3. Multiplicador Carry Save
Otro tipo de MP es el generado a partir de un esquema de propagacion del
acarreo como la suma Carry Save, Fig. 2.12. Este esquema busca romper la pro-
pagacion de la cadena de acarreo para disminuir el retardo de cada suma, lo cual
permite acelerar la multiplicacion.
HAHAHA
FAFAFA
x3 x3 x1 x0
x3 x3 x1 x0
x3 x3 x1 x0
FAFAFA
x3 x3 x1 x0
y3
y2
y1
y0
p0p1p2p3p4p5p6p7
FAFAFA
0
Figura 2.12: Multiplicador Carry Save de 4 bits.
Las Figs. 2.13 y 2.14 muestran el PE del multiplicador con propagacion tipo
Carry Save y el multiplicador mediante esta representacion.
bi
ai
si
ci
bo
so
co
ao
FA
Figura 2.13: PE de un multiplicador Carry Save.
Capıtulo 2. Arquitecturas de Multiplicadores 23
x3 x2 x1 x0
y3
y2
y1
y0
FAFA
FAFAFA
FAFAFA
FAFAFA
FA
FA
FAFAFA
p7 p6 p5 p4 p3 p1 p0p2
FAFA
FA
FA
Figura 2.14: Esquema de un multiplicador Carry Save mediante PEs.
2.4.4. Multiplicador Guild
El MP propuesto por H. Guild [19] se muestra en la Fig. 2.16, cuyo PE es el
de la Fig. 2.15.
FA
bi
ai
si
ci
bo
so
co
ao
Figura 2.15: PE de un multiplicador paralelo Guild.
Este multiplicador esta estructurado en cadenas de sumadores para cada bit
del producto, las cuales se encuentran en direccion diagonal desde la esquina
izquierda superior a la derecha inferior. Cada sumador de la cadena recibe un
acarreo de entrada correspondiente a una suma de la cadena previa y envıa su
Capıtulo 2. Arquitecturas de Multiplicadores 24
salida de acarreo a un sumador de una cadena posterior. El multiplicador Guild
se caracteriza por una alta tasa de procesamiento, debido a la utilizacion de
paralelismo y la posibilidad de implementacion pipelines1.
FAFA
FA
FA
FA
FA
FA
FAFA FA
FA FA
FA FA
FA
FA
y3 x3 y2 x2 y1 x1 y0 x0
p7 p6 p5 p4 p3 p1 p0p2
Figura 2.16: Multiplicador paralelo Guild.
1Es una tecnica de aceleracion de procesos que se basa en la introduccion latches o registros enuna apropiada posicion del arreglo para separar la operacion en etapas. Una vez implementada,el sistema incrementa su velocidad de procesamiento como etapas posea.
Capıtulo 2. Arquitecturas de Multiplicadores 25
2.4.5. Multipicador McCanny-McWhinter
Otro esquema de multiplicacion paralelo es el propuesto por J. McCanny
y J. McWhinter [20], Figs. 2.17 y 2.18. En la Fig. 2.18 se puede observar que
el multiplicador esta estructurado en cadenas de sumadores para cada bit del
producto, las cuales se encuentran en direccion vertical. Cada sumador de la
cadena recibe en forma diagonal un acarreo de entrada correspondiente a una
suma de la cadena previa y envıa su salida de acarreo a un sumador de una
cadena posterior. Este multiplicador se caracteriza por presentar comunicacion
local entre las celdas basicas.
FA
bi
ao
si
ci
bo
so
co
ai
Figura 2.17: PE de un multiplicador Mccanny - Mcwhinter.
2.5. Consumo de recursos logicos
2.5.1. Operandos en Punto Fijo
El consumo de recursos logicos (CR) de los Multiplicadores Paralelos mencio-
nados varıa con el esquema utilizado.
Una estimacion de este consumo expresado en terminos de celdas basicas
se realizo para una FPGA de Xilinx. Si se considera que cada CLB (ver Seccion
A.4.1) posee dos funciones de 4 entradas, cada termino de salida generado implica
Capıtulo 2. Arquitecturas de Multiplicadores 26
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
y3
y2
y1
y0 x3
x2
x1
x0
p7 p6 p5 p4 p3 p1 p0p2
Figura 2.18: Multiplicador paralelo Mccanny - Mcwhinter.
Capıtulo 2. Arquitecturas de Multiplicadores 27
el consumo de n2
CLBs. Las Ecs. (2.32 - 2.35) resumen la estimacion de consumo
para las distintas arquitecturas de MPs.
Ripple Carry:
CLB(n) = (n− 1)n +n
2= n2 − n
2(2.32)
Carry Save:
CLB(n) = n(n− 1) +n
2= n2 − n
2(2.33)
Guild:
CLB(n) = n2 (2.34)
McCanny - McWhinter:
CLB(n) = n2 +n(n− 1)
2+
n
2=
3n2
2(2.35)
En la Fig. 2.19 se grafica el consumo de recursos logicos de estos multipli-
cadores. En la misma figura se presenta como referencia la cantidad de recursos
logicos de distintas FPGAs de la serie Spartan de Xilinx.
Se puede concluir que los multiplicadores paralelos, en sus diferentes variantes,
presentan un consumo de recursos elevado que se incrementa cuadraticamente con
la longitud de palabra. De las variantes ejemplificadas, la de McCanny-McWhinter
es la mas onerosa, mientras que las variantes que menos recursos logicos consumen
son la de Ripple Carry y la de Carry Save. En la misma figura se puede observar
Capıtulo 2. Arquitecturas de Multiplicadores 28
tambien que para las FPGAs de menor capacidad solo se pueden implementar
multiplicadores de longitudes de palabra inferiores a 10 bits.
0 5 10 15 20 25 300
500
1000
1500
n
CLB
XCS05
XCS10
XCS20
XCS30
XCS40
Ripple CarryCarry SaveGuildMcCanny
Figura 2.19: Consumo de recursos logicos de MP.
Los fabricantes de FPGAs ofrecen MPs que pueden ser configurados por el
disenador. Por ejemplo Xilinx ofrece dos versiones, una para multiplicadores op-
timizados en el consumo de recursos y otra para optimizados en velocidad [21].
La Fig. 2.20 presenta la informacion de referencia proporcionada por el fabricante
donde se puede observar que aun los multiplicadores optimizados en consumo de
recursos demandan una importante cantidad de los mismos, limitando la aplica-
cion de estos multiplicadores a FPGAs de elevado numero de CLBs.
Implementacion en FPGA
Se realizo la implementacion de multiplicadores paralelos en FPGA. En la
la Tabla 2.2 se muestra el consumo de recursos logicos en terminos de CLBs y
la velocidad de procesamiento de datos en Millones de Operaciones por segundo
(Mops). Se puede notar el notable incremento de consumo de recursos logicos que
Capıtulo 2. Arquitecturas de Multiplicadores 29
100
40
60
50
70
90
80
10
30
20
020050 1000 250
8x8
12x12
16x16MH
zOpt. en velocidad
Optimizado en Recursos
8x8
10x10
12x12
CLBs150
Figura 2.20: Multiplicadores proporcionados por Xilinx.
demanda cada multiplicador cuando se duplica la longitud de palabra. Tal como
se expreso anteriormente, este incremento es tıpicamente cuadratico.
Tabla 2.2: Implementacion de multiplicadores en FPGA.Spartan Virtex Virtex II
Bits Tipo CLB Mops Slices Mops Slices Mops8 MP 61 20.8 64 41.9 64 45.58 MX 52 17.5 36 76.3 36 62.6
16 MP 247 10.8 257 22.0 258 24.716 MX 213 11.2 140 59.0 141 47.232 MX 816 3.1 544 40.5 548 38.5
MP: Multiplicador ParaleloMX: Multiplicador propuesto por Xilinx
Las Figs. 2.21(a) y 2.21(b) muestran el area de ocupacion logica para los
multiplicadores de 8 bits en una FPGA de 256 CLBs. Las Figs 2.22(a) y 2.22(b)
indican el area para una longitud de palabra de 16 bits.
Nuevamente se puede observar que el consumo de recursos logicos de los Mul-
tiplicadores Paralelos se incrementa notablemente con la longitud de palabra.
Esta caracterıstica hace necesaria la utilizacion de FPGAs con gran cantidad de
recursos para poder implementar los multiplicadores. En la Fig 2.23 se mues-
tra el consumo de recursos para un multiplicador optimizado en area de 32 bits
Capıtulo 2. Arquitecturas de Multiplicadores 30
(a) Ripple Carry (b) Xilinx
Figura 2.21: Implementacion de Multiplicadores n = 8
(a) Ripple Carry (b) Xilinx
Figura 2.22: Implementacion de Multiplicadores n = 16
Capıtulo 2. Arquitecturas de Multiplicadores 31
de Xilinx. Para esta implementacion fue necesario recurrir a una FPGA de 400
CLBs.
Figura 2.23: Implementacion de un multiplicador optimizado en area de Xilinxn = 32.
2.5.2. Operandos en punto flotante
La multiplicacion de operandos en punto flotante requiere una mayor cantidad
de recursos que su contraparte en punto fijo, debido a que se deben realizar mas
operaciones. Sin embargo, de todas las operaciones involucradas, el producto de
las mantisas es la que demanda la mayor cantidad de recursos logicos.
Como se menciono en la Seccion 2.2.2, el producto de las mantisas se efectua
como un producto en punto fijo. Por lo tanto, el analisis de consumo de recursos
de la seccion anterior se puede extender a la presente, con la observacion que se
debe adicionar el consumo de recursos propio de la adicion de los exponentes,
la determinacion del signo y, el de las operaciones de redondeo y normalizacion.
Razon por la cual, la problematica de recursos se acentua.
Un analisis de las implicaciones practicas de la implementacion de multiplica-
dores de punto flotante en FPGA se puede encontrar en los trabajos de Shirazi
Capıtulo 2. Arquitecturas de Multiplicadores 32
et al [9], de Ligon et al [10] y de Louca et al [22]. Otros aportes se pueden en-
contrar en los trabajos de Allan y Luk [23], Jimenez et al [24] donde se presentan
realizaciones parametrizables de multiplicadores.
Mas recientemente, en un trabajo presentado por Aty et al [25] se presenta
un esquema de multiplicador que muestra una relacion de compromiso entre la
velocidad de procesamiento y el consumo de recursos logicos. Sin embargo, en este
trabajo se puede apreciar que el consumo de recursos continua siendo sustancial.
2.6. Conclusiones
En este capıtulo se presentaron algunos conceptos de la multiplicacion con el
objetivo de poder introducir la problematica del consumo de recursos logicos en
la implementacion de esta operacion.
Se concluye que, si bien los multiplicadores paralelos permiten ejecutar pro-
ductos rapidamente, el consumo de recursos de estos multiplicadores es muy ele-
vado aumenta cuadraticamente con la longitud de palabra. Esto presenta una
desventaja respecto a la utilizacion de estos dispositivos para el procesamiento
de senales, pues restringe la implementacion de los mismos a FPGAs de gran
tamano y costo.
Capıtulo 3
Nuevas Arquitecturas de
Multiplicadores
3.1. Introduccion
La utilizacion de un multiplicador con un gran consumo de recursos logicos
puede empeorar el desempeno general del sistema o requerir de FPGAs de mayor
tamano.
El Multiplicador Secuencial denominado tambien Shift and Add [11] [12] uti-
liza una cantidad reducida de recursos logicos. El SM no es muy utilizado debido
a la cantidad de iteraciones involucradas en un producto.
En este capıtulo se analiza la multiplicacion secuencial con el objetivo de
ampliarla a FPGAs. Se caracterizan las variantes existentes y se proponen algu-
nos esquemas que intentan mejorar la velocidad de calculo manteniendo un bajo
consumo de recursos logicos.
33
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 34
3.2. Multiplicacion Secuencial
El Multiplicador Secuencial (SM) realiza el calculo en forma iterativa mante-
niendo un producto parcial acumulativo y sucesivamente sumando al mismo los
terminos yjX con el debido desplazamiento (Tabla 3.1). De esta forma, se logra
reducir la cantidad de recursos a los necesarios para realizar la multiplicacion
yjX.
Tabla 3.1: Producto de dos operandos de 4 bits, acumulacion de productos par-ciales.
x3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ 0s13 s12 s11 s10 ≡ y0X20
s23 s22 s21 s20 ≡ y1X21 + y0X20
s33 s32 s31 s30 ≡ y2X22 + y1X21 + y0X20
p8 p7 p6 p5 p4 p3 p2 p1 ≡ y3X23 + y2X22 + y1X21 + y0X20
3.2.1. Algoritmo
En forma simplificada el algoritmo acumula cada producto parcial sobre el
resultado parcial desplazado un bit respecto al anterior. Existen dos versiones de
este algoritmo dependiendo del sentido de los valores a acumular, con desplaza-
miento a la izquierda o viceversa.
En la multiplicacion con desplazamiento a la izquierda, se debe contar con
un acumulador de longitud 2n bits. En este caso los productos parciales yjX son
adicionados al resultado acumulado con un desplazamiento hacia la izquierda de
un bit (21) respecto al anterior. El algoritmo se puede analizar a partir de la Ec.
(3.1).
p(j + 1) = 2p(j) + yn−1−jX con p(0) = 0 (3.1)
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 35
Un ejemplo de este algoritmo se muestra en la Tabla 3.2. En el mismo se
realiza un producto de dos operandos de 4 bits.
Tabla 3.2: Multiplicacion secuencial con desplazamiento a la izquierda para ope-randos de 4 bits.
X 1 0 0 1Y 1 1 0 1
p(0) 0 0 0 0
2p(0) 0 0 0 0 0+y3X 1 0 0 1p(1) 1 0 0 1
2p(1) 1 0 0 1 0+y2X 1 0 0 1p(2) 1 1 0 1 1
2p(2) 1 1 0 1 1 0+y1X 0 0 0 0p(3) 1 1 0 1 1 0
2p(3) 1 1 0 1 1 0 0+y0X 1 0 0 1p(4) 0 1 1 1 0 1 0 1
En la multiplicacion con desplazamiento a la derecha el algoritmo se puede
analizar con la Ec. (3.2).
p(j + 1) = (p(j) + yjX2n)2−1 con p(0) = 0 (3.2)
o visto de otra manera con la Ec. (3.3),
P = 2n−1
[n−1∑j=0
yjX · 2j−(n−1)
](3.3)
En este caso los productos parciales yjX son adicionados al resultado acumu-
lado con un desplazamiento hacia la derecha de un bit (2−1) respecto al anterior.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 36
Debido a que el desplazamiento a la derecha genera un primer producto par-
cial multiplicado por 2−k se debe pre-multiplicar y0X por 2k para compensar el
efecto del desplazamiento. Esta pre-multiplicacion se puede efectuar facilmente,
almacenando p(j) en el segmento mas significativo de un registro de 2n bit.
Un ejemplo de este algoritmo se muestra en la Tabla 3.3.
Tabla 3.3: Multiplicacion con desplazamiento a la derecha para operandos de 4bits.
X 1 0 0 1Y 1 1 0 1
p(0) 0 0 0 0+y0X 1 0 0 12p(1) 1 0 0 1
p(1) 0 1 0 0 1+y1X 0 0 0 02p(2) 0 1 0 0 1
p(2) 0 0 1 0 0 1+y2X 1 0 0 12p(3) 1 0 1 1 0 1
p(3) 0 1 0 1 1 0 1+y3X 1 0 0 12p(4) 1 1 1 0 1 0 1
p(4) 0 1 1 1 0 1 0 1
De los ejemplos presentados en las Tablas 3.2 y 3.3 se puede observar que
ambos algoritmos son similares. Cada algoritmo realiza n sumas y n desplaza-
mientos, sin embargo, las sumas realizadas con el algoritmo de desplazamiento
a la izquierda son de 2n bits de longitud de palabra respecto del algoritmo de
desplazamiento a la derecha que son de n bits. Esto se debe a que el acarreo de la
suma se extiende hacia los bit mas significativos. Por lo tanto, el algoritmo mas
utilizado es el de desplazamiento a la derecha que involucra menos recursos.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 37
3.2.2. Implementacion
La implementacion hardware de la multiplicacion con desplazamiento a la
derecha se muestra en la Figura 3.1. El multiplicador Y y la acumulacion de
los productos parciales p(j) son almacenados en registros de desplazamiento. El
bit yj del multiplicador es el bit menos significativo disponible a la derecha del
registro Y , el mismo es utilizado en el producto yjX seleccionando 0 o X en la
suma.
La suma y el desplazamiento pueden ser realizados en ciclos diferentes o en dos
sub-ciclos dentro del mismo ciclo de reloj. En ambos casos se necesita almacenar
la senal de acarreo del sumador. Por otro lado, el desplazamiento se puede realizar
conectando el bit menos significativo de la suma al bit n − 1 del registro P y el
bit de acarreo al bit 2n−1 del mismo registro de longitud 2n y realizando de este
modo suma y desplazamiento en un solo ciclo de reloj.
ADD
X
Producto
desplazamiento
n
n
Y
Parcialacarreo
0n-12n-1 n
0n-1
desplazamiento
0n-1
nn
Figura 3.1: Multiplicador SM con desplazamiento a la derecha.
Se debe considerar que el multiplicador y la mitad menos significativa del
registro P pueden compartir un mismo registro, de manera que a medida que
los bits del multiplicador se van extrayendo del registro a partir del bit menos
significativo, el bit menos significativo de p(j) es ingresado por el extremo mas
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 38
significativo del mismo registro. El control del multiplicador, que no se muestra
en la Figura 3.1, consiste en un contador que mantiene el numero de iteracion
ejecutada y un circuito para la inicializacion y carga del mismo.
En la Figura 3.2 se puede observar un esquema de la realizacion del multipli-
cador de desplazamiento a la derecha con registro compartido.
ADD
X
Producto Parcial
desplazamiento
n
n
Yacarreo
0n-12n-1 n
0n-1
nn
Figura 3.2: Multiplicador SM con desplazamiento a la derecha con registro com-partido.
La implementacion hardware del algoritmo con desplazamiento a la izquierda
se puede observar en la Figura 3.3. En este esquema, tambien el multiplicador Y
y la acumulacion de los productos parciales p(j) son almacenados en registros de
desplazamiento, con la diferencia de que los registros se desplazan a la izquierda
en vez de a la derecha. El bit yj del multiplicador es el bit mas significativo
disponible a la izquierda del registro Y , el mismo es utilizado en el producto
yn−j−1X seleccionando 0 o X en la suma.
En este multiplicador no se puede compartir el registro Y con la seccion mas
significativa del registro P debido a que se utiliza un sumador de 2n bits. Esto
es, que cada vez que se registra un producto parcial, se utiliza la totalidad del
registro. El control del multiplicador, que no se muestra en la Figura 3.3, es similar
al del multiplicador con desplazamiento a la derecha.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 39
ADD
X
Producto
desplazamiento
2n
2n
Y
Parcial0n-12n-1 n
0n-1
desplazamiento
0n-1
n
n
Figura 3.3: Multiplicador SM con desplazamiento a la izquierda.
El hardware de este multiplicador es mas complejo que el de la Figura 3.2,
por lo que el metodo mas utilizado es la multiplicacion con desplazamiento a la
derecha.
Consumo de recursos
El consumo de recursos logicos del SM debe ser estimado en funcion de la
longitud de palabra de los operandos. Si se analiza la estructura de los bloques que
componen el multiplicador: sumadores, multiplexores, contadores y componentes
basicos, se puede cuantificar el consumo de recursos de los mismos en funcion de
la longitud de palabra.
Un contador de modulo-n es un contador binario de log2 n bits. Consecuente-
mente utiliza n FFs (FlipFlops) y al menos la misma cantidad de FGs (Funcion
Generators - ver Seccion A.4.1). Por lo cual, este contador consume como mınimo
log2(n)2
FGs.
Un multiplexor esta conformado solo por logica combinacional que requiere al
menos n − 1 FGs de tres entradas. Esto genera un consumo de recursos de n−12
CLBs para una longitud de n bits entradas.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 40
El consumo de recursos logicos de un sumador depende del tipo de sumador
seleccionado. Tal como se indico en capıtulos previos, el sumador indicado para la
implementacion de los multiplicadores en las FPGAs seleccionadas, es el sumador
de ripple-carry. En este caso, un sumador utiliza (n+2) FGs (n2
+1 celdas basicas)
considerando las salidas de acarreo y desborde. En el caso en que la salida de un
sumador deba ser registrada, el consumo de recursos logicos en terminos de CLBs
es el mismo dado que los FFs son nativos de cada celda basica.
La Tabla 3.4 realiza una estimacion del consumo de recursos para el SM. En
esta estimacion se considera que los n bits mas significativos del registro P se
pueden ubicar en conjunto con los FGs del sumador, y los menos significativos
compartidos con el registro de desplazamiento Y (con carga de datos en paralelo).
Las Ecs. (3.4 - 3.6) resumen el calculo de la estimacion en terminos de FGs, FFs
y CLBs.
Funcion FG FF CLBRegistro X 0 n n
2
Registro Y (SR) n + 1 n n+12
Control log2(n) + 2 log2(n) + 1 log2(n)2
+ 1Producto yiX n 0 n
2
Sumador + Reg. P n + 2 n + 2 n2
+ 1
Tabla 3.4: Estimacion de consumo de recursos logicos de un SM.
FG(n) = 3n + log2 n + 5 (3.4)
FF (n) = 3n + log2 n + 3 (3.5)
CLB(n) = 2n +log2 n
2+
5
2(3.6)
En la Fig. 3.4 se puede observar el consumo de estimado de recursos del SM.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 41
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
Figura 3.4: Consumo de recursos del SM.
Comportamiento temporal
El comportamiento temporal del SM depende de dos factores, el retardo in-
herente de las compuertas logicas y registros, y el retardo por la interconexion de
las mismas. En la mayorıa de los circuitos realizados en FPGA el desempeno solo
puede ser estimado despues de ser implementado, ya que los retardos de interco-
nexion se conocen una vez implementado el circuito. Sin embargo, en el caso de
sumadores y contadores que utilizan recursos dedicados de logica de acarreo, es
posible estimar un desempeno temporal [26].
El perıodo mınimo de reloj que se puede utilizar con el SM depende del retardo
de propagacion de la ruta mas crıtica. En este caso, la ruta mas crıtica es aquella
en la cual los operandos del sumador son realimentados a traves de una cadena de
Flip Flops, Fig. 3.1. El retardo de propagacion para un sumador se puede estimar
a partir de la Fig. 3.5 en la cual se asume que n es par y que el sumador (sin
contar las cadenas de acarreo) es implementado en n2
CLBs. En esta figura los dos
bits menos significativos de los operandos comparten un CLB y el retardo de las
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 42
SN-1
SALIDA DE ACARREO
SN-2
TSUM
A ,BN-1 N-1
SN-3
SN-4
S3
S2
S1
S0
N-4
2CLBs
TOPCY
A ,BN-2 N-2
A ,BN-3 N-3
A ,BN-4 N-4
A ,B3 3
A ,B2 2
A ,B1 1
A ,B0 0
TBYP
TBYP
TBYP
TSUM
Figura 3.5: Esquema de retardos en un sumador.
entradas de estos bits a la cadena de acarreo se define como el tiempo TOPCY . Los
dos bits mas significativos tambien comparten un CLB y el retardo de la cadena
de acarreo a la salida mas significativa es el tiempo TSUM . Los n−4 bits restantes
contribuyen con un retardo TBY P por cada dos bits.
La Ec. (3.7) resume el retardo de propagacion en un sumador como el que se
describe en la Fig. 3.5.
tpd = TOPCY +n− 4
2× TBY P + TSUM (3.7)
Si se considera que cada bit que ingresa al sumador proviene de un registro
se debe adicionar el retardo existente desde que se efectua un flanco de reloj y se
establece la salida de un Flip Flop, TCKO. La salida de este registro se realimenta
a la entrada del sumador generando un retardo de interconexion Trd.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 43
Otra ruta de interconexion crıtica proviene de la seleccion del paso de itera-
cion que incorpora un retardo entre una entrada F/G y la salida X/Y debido al
producto yiXi, este retardo es denominado TILO.
La Ec. (3.8) resume el retardo de propagacion de la ruta de interconexion mas
crıtica.
tpd = TOPCY +n− 4
2× TBY P + TSUM + TILO + TCKO + Trd (3.8)
Con el objetivo de poder cuantificar el retardo de propagacion estimado se
propone la utilizacion de los retardos de una FPGA de Xilinx de la familia Spartan
[27]. Para esta estimacion no se considera el retardo Trd dado que a priori se
desconoce su valor.
Retardo Valor [ns]TOPCY 2.7TBY P 0.5TSUM 2.0TILO 1.2TCKO 2.1
Tabla 3.5: Retardos de una FPGA Xilinx Spartan-4.
En la Fig. 3.21 se grafico el retardo de propagacion estimado para el SM, en
funcion de la longitud de palabra n. Este retardo define la frecuencia maxima
de reloj estimada (fc) que se puede utilizar con este multiplicador. La misma se
muestra en la Fig. 3.7.
La velocidad de procesamiento (Processing Speed - PS) estimada del SM se
puede observar en la Fig. 3.8. La misma se calcula como PS = fc
n+1, expresado en
millones de operaciones por segundo. Se considera que este multiplicador requiere
un ciclo de reloj para la carga de datos, en los registros X e Y, adicional a los n
necesarios para calcular el producto.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 44
0 5 10 15 20 25 30 350
5
10
15
20
25
n
Tpd
[ns]
Figura 3.6: Retardo de propagacion estimado del SM.
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
Max
. Fre
c. d
e re
loj [
Mhz
]
Figura 3.7: Maxima frecuencia de reloj estimada aplicable al SM.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 45
0 5 10 15 20 25 30 350
2
4
6
8
10
12
14
n
Vel
ocid
ad d
e P
roce
sam
ient
o [M
op]
Figura 3.8: Velocidad maxima de procesamiento del SM.
3.2.3. Multiplicador Secuencial de Base 4
Esta variante de multiplicacion secuencial reduce la cantidad de iteraciones
aprovechando la representacion numerica.
Un numero binario de n bits puede ser representado como un numero de n2
dıgitos de base 4 o un numero de n3
dıgitos de base 8. De modo que para un
dado rango de numeros que se pueden representar, existe una representacion de
mayor base que reduce la cantidad de dıgitos. De este modo, es posible realizar
un producto en menor tiempo de calculo si se ejecuta una multiplicacion de un
dıgito por vez en lugar de hacerlo bit a bit.
La expresion general para este tipo de multiplicacion es la de la Ec. (3.9):
p(j + 1) = (p(j) + yjXrn)r−1 con p(0) = 0 y p(n) = p (3.9)
En el caso de la multiplicacion en base 4 (SMB4), se debe conformar el pro-
ducto parcial [yj+1 yj]2X y adicionarlo al resultado de la iteracion anterior. El
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 46
producto de dos operadores binarios de 4 bits sin signo X e Y se puede observar
en la Tabla 3.6.
Tabla 3.6: Producto de dos operandos en base 4x3 x2 x1 x0
y3 y2 y1 y0
s05 s04 s03 s02 s01 s00 ≡ y1y0X40
s15 s14 s13 s12 s11 s10 ≡ y3y2X41
P8 P7 P6 P5 P4 P3 P2 P1 ≡ P
Mientras que en la multiplicacion de base 2 cada producto parcial esta repre-
sentado por el valor 0 o una version desplazada de X, en la multiplicacion de
base 4 el producto parcial toma la forma del valor 0, X, 2X y 3X. El metodo
mas directo para la ejecucion de esta multiplicacion se puede realizar mediante
una asignacion pre-calculada de los productos parciales.
Un ejemplo de este tipo de multiplicacion se puede observar en la Tabla 3.7.
Tabla 3.7: Multiplicacion base 4 de dos operados de 4 bits.X 1 0 0 1Y 1 1 0 1
p(0) 0 0 0 0+(01)2X = X 1 0 0 14p(1) 1 0 0 1
p(1) 0 0 1 0 0 1+(11)2X = 3X 1 1 0 1 14p(2) 1 1 1 0 1 0 1
p(2) 0 1 1 1 0 1 0 1
Un diagrama de este multiplicador (en adelante SMB4(3X)) se muestra en la
Fig. 3.9. En el mismo se debe considerar que, mientras los tres primeros valores de
los productos parciales se pueden utilizar en forma directa, el valor 3X requiere
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 47
un perıodo de tiempo para ejecutar la suma X + 2X. Ademas, como el valor pre-
calculado 3X puede exceder el rango de X, entonces el multiplexor y el sumador
utilizados en el multiplicador deben ser de (n + 2) bits.
n+2
n+2
n+2
n+2
ADD
Producto Parcial
desplazamiento 2 bits
n+2
n
Yacarreo
0n-12n-1 n
X
0
2X
3X
1
MUX
2
n+2
Figura 3.9: Diagrama de un SMB4(3X).
Una alternativa consiste en reemplazar 3X por −X generando un acarreo que
modifica al siguiente dıgito. Este set de dıgitos es afectado por el acarreo segun
la Tabla 3.8, en la cual, cy(j − 1) es el acarreo correspondiente a una iteracion
anterior, cy(j) es el acarreo actual, y2j−1 e y2j son los bits seleccionados con
cada iteracion que generan una salida con los valores [0,−X, X, 2X]. Con esta
alternativa, al final de la iteracion n2
se debe realizar una nueva iteracion, si el
ultimo dıgito de base 4 genero un bit de acarreo.
Tabla 3.8: Codificacion de los dıgitos, alternativa (-X).cy(j − 1) y2j−1 y2j salida(j) cy(j)
0 0 0 0 00 0 1 X 00 1 0 2X 00 1 1 −X 11 0 0 X 01 0 1 2X 01 1 0 −X 11 1 1 0 1
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 48
Un ejemplo de esta alternativa se observa en la Tabla 3.8, en la cual se ejecuta
un producto de dos operandos de 8 bits, donde al final de la ultima iteracion el
acarreo debido al ultimo dıgito genera una iteracion adicional.
Tabla 3.9: Multiplicacion base 4, alternativa (-X).X 0 1 1 1 1 0 1 1Y 1 1 1 1 0 1 1 0
p(0) 0 0 0 0 0 0 0 0+(10)X = +2X 1 1 1 1 0 1 1 04p(1) 1 1 1 1 0 1 1 0
p(1) 0 0 1 1 1 1 0 1 1 0+(01)X = +X 0 1 1 1 1 0 1 14p(2) 1 0 1 1 1 0 0 0 1 0
p(2) 0 0 1 0 1 1 1 0 0 0 1 0+(11)X = −X 1 0 0 0 0 1 0 14p(3) 1 0 1 1 0 0 1 1 0 0 1 0
p(3) 1 1 1 0 1 1 0 0 1 1 0 0 1 0+(11 + cy)X = 0 0 0 0 0 0 0 0 04p(4) 1 1 1 0 1 1 0 0 1 1 0 0 1 0
p(4) 1 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0+(00 + cy)X = X 0 1 1 1 1 0 1 1p(5) 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0
El diagrama de este multiplicador (en adelante SMB4(-X)) se muestra en la
Fig. 3.10.
Los esquemas de multiplicacion de las Figs. 3.9 y 3.10 se pueden extender a
multiplicadores de bases superiores, pero la estructura del multiplicador se vuelve
mas compleja debido a que se debe pre-computar una mayor cantidad de valores
y consecuentemente el numero de iteraciones deja de ser menor que n2
+ 1. Por
ejemplo, para un producto de base 8, se deben pre-computar los valores de 3X, 5X
y 7X, o solo pre-computar 3X y utilizar un esquema de acarreo similar al de la
Fig. 3.10 para convertir a 5X, 6X y 7X en −3X, −2X y −X.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 49
n+1
n+1
n+1
n+1
ADD
Producto Parcial
desplazamiento 2 bits
n+1
n
Yacarreo
0n-12n-1 n
X
0
2X
-X
1
MUX
2
n+1
FF
acarreo
y y +cy2j-1 2j
Figura 3.10: Diagrama de un SMB4(-X).
Consumo de recursos
SMB4(3X): La estimacion del consumo de recursos logicos del SMB4(3X) debe
considerar los recursos para el pre-calculo de 3X y que este calculo puede resultar
en n + 2 bits. La estimacion para este multiplicador se consigna en la Tabla 3.10
Funcion FG FF CLBRegistro X 0 n n
2
Sumador X + 2X n + 2 0 n2
+ 1Registro Y (SR) n + 1 n n
2+ 1
2
Control log2(n2) + 2 log2(n
2) + 1
log2( n2
)
2+ 1
Multiplexor 4 : 1× (n + 2) 3(n + 2) 0 3n2
+ 3Sumador (n + 2) + Reg. PH n + 4 n + 4 n
2+ 2
Tabla 3.10: Estimacion de consumo de recursos de un SMB4(3X).
Las Ecs. (3.10 - 3.12) resumen el calculo de la estimacion en terminos de FGs,
FFs y CLBs.
FG(n) = 6n + log2(n
2) + 15 (3.10)
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 50
FF (n) = 3n + log2(n
2) + 5 (3.11)
CLB(n) =7
2n +
log2(n2)
2+
15
2(3.12)
SMB4(-X): En esta version se reemplaza −X por X y se ingresa un acarreo
de entrada al sumador. De este modo no es necesario el pre-calculo de −X y se
ahorran recursos.
n+1
n+1
n+1
n+1
ADD
Producto Parcial
desplazamiento 2 bits
n+1
n
Yacarreo
0n-12n-1 n
X
0
2X
X
1
MUX
2
n+1
FF
acarreo
y y +cy2j-1 2jacarreo de entrada
Figura 3.11: Diagrama de la variante del SMB4(-X).
La estimacion de recursos para este multiplicador se muestra en la Tabla 3.11.
Funcion FG FF CLB
Registro X 0 n n2
Registro Y (SR) n + 1 n n2
+ 12
Control log2(n2) + 6 log2(n
2) + 3
log2( n2
)
2+ 4
Multiplexor 4 : 1× (n + 1) 3(n + 1) 0 3n2
+ 32
Sumador (n + 1) + Reg. PH n + 3 n + 3 n2
+ 32
Tabla 3.11: Estimacion de consumo de recursos logicos SMB4(-X).
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 51
Las Ecs. (3.13 - 3.15) resumen el calculo de la estimacion en terminos de FGs,
FFs y CLBs.
FG(n) = 5n + log2(n
2) + 13 (3.13)
FF (n) = 3n + log2(n
2) + 6 (3.14)
CLB(n) = 3n +log2(n
2)
2+
15
2(3.15)
En la Fig. 3.12 se muestra el consumo de recursos logicos de las dos variantes
del multiplicador secuencial de base 4 en contraste con el multiplicador secuencial
tradicional. Se observa en la misma figura que, si bien la velocidad de procesa-
miento de los SM base 4 se incrementa casi al doble por realizar menos iteraciones,
el costo en consumo de recursos logicos asciende a mas del doble respecto a un
SM tradicional.
Comportamiento temporal
SMB4(3X): El comportamiento temporal del SMB4(3X) involucra dos cade-
nas de adiciones, la primera resulta de la obtencion del valor 3X y la segunda de
la operacion de acumulacion de los productos parciales, Fig. 3.9.
La Ec. (3.16) resume el retardo de propagacion de la ruta de interconexion
mas crıtica este multiplicador.
tpd = 2TOPCY +(n + 2)− 4
2× TBY P + 2TSUM + TIHO + Trd (3.16)
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 52
0 5 10 15 20 25 30 350
20
40
60
80
100
120
140
160
180
200
n
CLB
XCS05
XCS10
SMB4(3X)SMB4(−X)SM
Figura 3.12: Consumo de recursos de multiplicadores SM.
En la Fig. 3.13 se muestra el retardo de propagacion estimado para el SMB4(3X).
Este retardo define la frecuencia maxima de reloj que se puede utilizar con este
multiplicador, que se observa en la Fig. 3.14.
La velocidad de procesamiento estimada del SMB4(3X) se grafica en la Fig.
3.15. La misma es obtenida como la frecuencia maxima de reloj aplicable al
multiplicador dividido el numero de ciclos necesarios para ejecutar un producto,
PS = fcn2
+1, expresado en millones de operaciones por segundo. En esta estimacion
se considera que la carga de datos y el calculo de 3X no excede un perıodo de
reloj.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 53
0 5 10 15 20 25 30 350
5
10
15
20
25
30
n
Tpd
[ns]
Figura 3.13: Retardo de propagacion estimado del SMB4(3X).
0 5 10 15 20 25 30 350
10
20
30
40
50
60
70
80
90
100
n
Max
. Fre
c. d
e re
loj [
Mhz
]
Figura 3.14: Maxima frecuencia de reloj estimada aplicable al SMB4(3X).
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 54
0 5 10 15 20 25 30 350
2
4
6
8
10
12
14
n
Vel
ocid
ad d
e P
roce
sam
ient
o [M
op]
Figura 3.15: Velocidad maxima de procesamiento del SMB4(3X).
SMB4(-X): El comportamiento temporal del SMB4(-X), si bien evita el calculo
de 3X, involucra un retardo asociado a la operacion de la Tabla 3.8. La Ec. (3.17)
resume el retardo de propagacion de la ruta de interconexion mas crıtica de este
multiplicador.
tpd = TOPCY +(n + 2)− 4
2× TBY P + TSUM + TIHO + TILO + TICK + Trd (3.17)
En la Fig. 3.16 se puede observar el retardo de propagacion estimado para el
SMB4(-X). Este retardo define la frecuencia maxima de reloj que se puede utilizar
con este multiplicador, que se observa en la Fig. 3.17.
La velocidad de procesamiento estimada del SMB4(-X) se muestra en la Fig.
3.18. La misma es calculada como la frecuencia maxima de reloj aplicable al
multiplicador dividido el numero de ciclos necesarios para ejecutar un producto,
PS = fcn2
+2, expresado en millones de operaciones por segundo.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 55
0 5 10 15 20 25 30 350
5
10
15
20
25
30
n
Tpd
[ns]
Figura 3.16: Retardo de propagacion estimado del SMB4(-X).
0 5 10 15 20 25 30 350
10
20
30
40
50
60
70
80
90
100
n
Max
. Fre
c. d
e re
loj [
Mhz
]
Figura 3.17: Maxima frecuencia de reloj estimada aplicable al SMB4(-X).
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 56
0 5 10 15 20 25 30 350
2
4
6
8
10
12
14
n
Vel
ocid
ad d
e P
roce
sam
ient
o [M
op]
Figura 3.18: Velocidad maxima de procesamiento del SMB4(-X).
3.3. Arquitecturas Propuestas en Punto Fijo
3.3.1. Multiplicador Secuencial Sin Entradas Registradas
El multiplicador secuencial sin entradas registradas (SMSR) es una variante
del multiplicador SM de desplazamiento a la derecha. El SMSR presenta un es-
quema de multiplicacion simplificado ya que no realiza la carga paralelo de los
registros del multiplicador y del multiplicando. De esta manera no existe la de-
mora propia del ciclo de carga, lo cual constituye una ventaja. Por lo tanto, este
multiplicador puede realizar un producto en un perıodo T = nTCK , donde n es
la longitud de palabra de los operandos y TCK el perıodo de reloj aplicado sobre
el multiplicador.
En la Figura 3.19 se muestra un esquema del SMSR, que utiliza un sumador
de n bits y un multiplexor para la seleccion de los bits yj.
El control del multiplicador consiste en un contador que ejecuta la seleccion de
los yj y que a su vez mantiene el numero de iteracion realizada. La inicializacion
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 57
ADD
X
Producto
desplazamiento
n
n
Y
Parcialacarreo
0n-12n-1 n
nn
n
MUX
Control
Figura 3.19: Multiplicador SMSR.
del multiplicador se realiza reseteando el registro que guarda el producto parcial
acumulado (P ) y el contador. Este multiplicador requiere que los datos esten
presentes durante todo el ciclo de la multiplicacion.
Consumo de recursos
La Tabla 3.12 muestra el consumo de recursos logicos del SMSR. En esta
estimacion se acepta que los n bits mas significativos del registro P se ubican en
conjunto con los FGs del sumador, y los menos significativos constituyen tan solo
un registro de desplazamiento serie.
Funcion FG FF CLBMultiplexor yi n− 1 0 n−1
2
Producto yiX n 0 n2
Control log2(n) + 2 log2(n) + 1 log2(n)2
+ 1Sumador + Reg. PH n + 2 n + 2 n
2+ 1
Registro PL 0 n n2
Tabla 3.12: Estimacion de consumo de recursos logicos de un SMSR.
Las Ecs. (3.18, 3.19 y 3.20) resumen la estimacion en terminos de FGs, FFs
y CLBs.
FG(n) = 3n + log2 n + 3 (3.18)
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 58
FF (n) = 2n + log2 n + 3 (3.19)
CLB(n) = 2n +log2 n
2+
3
2(3.20)
En la Fig. 3.20 se muestra el consumo estimado de recursos del SMSR.
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
XCS05
Figura 3.20: Consumo de recursos del SMSR.
Comportamiento temporal
El perıodo mınimo de reloj que puede utilizar el SMSR si bien contiene los
mismos retardos que el SM, el retardo TILO proviene del multiplexado para la
seleccion de yi.
La Ec. (3.21) resume el retardo de propagacion de la ruta de interconexion
mas crıtica.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 59
tpd = TOPCY +n− 4
2× TBY P + TSUM + TILO + TCKO + Trd (3.21)
En la Fig. 3.21 se grafica el retardo de propagacion estimado para el multi-
plicador propuesto. La maxima frecuencia de reloj que se puede utilizar con este
multiplicador se muestra en la Fig. 3.22.
0 5 10 15 20 25 30 350
5
10
15
20
25
n
Tpd
[ns]
Figura 3.21: Retardo de propagacion estimado del SMSR.
La velocidad de procesamiento estimada del SMSR se presenta en la Fig. 3.23.
La misma se calcula como la frecuencia maxima de reloj aplicable al multiplicador
dividido el numero de ciclos necesarios para ejecutar un producto, PS = fc
n,
expresado en millones de operaciones por segundo.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 60
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
Max
. Fre
c. d
e re
loj [
Mhz
]
Figura 3.22: Maxima frecuencia de reloj estimada aplicable al SMSR.
0 5 10 15 20 25 30 350
2
4
6
8
10
12
14
n
Vel
ocid
ad d
e P
roce
sam
ient
o [M
op]
Figura 3.23: Velocidad maxima de procesamiento del SMSR.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 61
3.3.2. Multiplicador Secuencial Fraccionado
El Multiplicador Secuencial Fraccionado (SMF) permite obtener una buena
velocidad procesamiento reduciendo el numero de ciclos necesarios para ejecutar
el producto. Esta reduccion se obtiene fraccionando la sumatoria de la Ec. (3.22)
en dos semisumatorias, (3.23).
P =n−1∑j=0
X2j · yj (3.22)
P =k∑
j=0
X2jyj +n−1∑j=k
X2jyj (3.23)
Aplicando el SM con desplazamiento a la derecha, el producto resultante se
muestra en la Ec. (3.24).
P = 2n−1
[k∑
j=0
X · 2j−(n−1)yj +n−1∑j=k
X · 2j−(n−1)yj
](3.24)
La primer semi-sumatoria realiza su proceso en k · TCK (donde TCK es el
perıodo de reloj) y la segunda en (n− 1−k) ·TCK . Si las dos semi-sumatorias co-
mienzan al mismo tiempo y se suman sus resultados con el debido desplazamiento,
el perıodo de proceso estara dado por:
k · TCK si k > (n− 1)− k
o
((n− 1)− k) · TCK si k < (n− 1)− k
Para el caso particular en que k = n2, el perıodo de procesamiento de cada
producto sera n2· TCK .
La suma de las dos semi-sumatorias de la Ec. (3.24) se realiza mediante un
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 62
unico sumador de 2n−k bits, ya que la primer semi-sumatoria se encontrara des-
plazada k veces de la segunda. Por otro lado dicha suma agrega un retardo tR
proveniente de la logica involucrada. Este retardo se puede considerar menor que
TCK , tomando como pauta que el retardo de involucrado en la adicion de los
productos parciales es inferior o igual al retardo definido para un multiplicador
SM.
El perıodo de procesamiento para este multiplicador estara dado por T =
(n2
+ 1) · TCK .
X[n:0] X[n:0]
Y[m/2:0] Y[m:m/2+1]
Y[m:0] x X[n:0]
m/2 nx
SM
Acu
mu
laci
ón
m/2 nx
Figura 3.24: Diagrama de operacion de un SMF.
En la Fig. 3.24 se muestra el esquema del SMF, donde dos multiplicadores
secuenciales realizan sus productos simultaneamente y, un perıodo despues, sus
resultados son adicionados.
La aplicacion practica del SMF se puede realizar en base a un SM tradicional
o un SMSR. La utilizacion del SM implica que se deben cargar los datos en los
registros, por lo que se requieren n2
+ 2 iteraciones para realizar un producto.
Por lo tanto, se justifica la utilizacion de este esquema para multiplicadores con
una longitud de palabra que haga despreciables las dos iteraciones adicionales
en comparacion con n2. En el caso del SMF basado en un SMSR, el producto se
realiza en n2
+ 1 iteraciones.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 63
Consumo de recursos
Recursos de un SMF(SM): La Tabla 3.13 muestra el consumo de recursos del
SMF basado en el SM. En esta estimacion se considera que ambos multiplicadores
parciales son controlados por un unico contador.
Funcion FG FF CLBRegistro X 0 n n
2
2× Registro SR Y [n2
: 0] 2(n2
+ 1) 2n2
n2
+ 12× Producto yiX 2n 0 nControl mod n
2log2(n
2) + 2 log2(n
2) + 1 1
2log2(n
2) + 1
2× Sumador + Reg. PHi 2n + 4 2n + 4 n + 2Sumador + Reg. Ptotal
32n + 2 3
2n + 2 3
4n + 1
Tabla 3.13: Estimacion de consumo de recursos logicos SMF(SM).
Las Ecs. (3.25 - 3.27) resumen el calculo de la estimacion en terminos de FGs,
FFs y CLBs.
FG(n) =13
2n + log2
n
2+ 10 (3.25)
FF (n) =11
2n + log2
n
2+ 7 (3.26)
CLB(n) =15
4n +
log2n2
2+ 5 (3.27)
Recursos de un SMF(SMSR): La Tabla 3.14 realiza una estimacion del
consumo de recursos del SMF basado en el SMSR. Las consideraciones de esta
estimacion son similares al SMF basado en un SM.
Las Ecs. (3.28 - 3.30) resumen el calculo de la estimacion en terminos de FGs,
FFs y CLBs.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 64
Funcion FG FF CLB2× Multiplexor yi 2(n
2− 1) 0 n
2− 1
2× Producto yiX 2n 0 nControl mod n
2log2(n
2) + 2 log2(n
2) + 1 1
2log2(n
2) + 1
2× Sumador + Reg. PHi 2n + 4 2n + 4 n + 22× Registro PL
n2
0 2n2
n2
Sumador + Reg. Ptotal32n + 2 3
2n + 2 3
4n + 1
Tabla 3.14: Estimacion de consumo de recursos logicos de un SMF(SMSR).
FG(n) =13
2n + log2
n
2+ 6 (3.28)
FF (n) =7
2n + log2
n
2+ 7 (3.29)
CLB(n) =15
4n +
log2n2
2+ 3 (3.30)
En la Fig. 3.25 se puede observar el consumo de recursos logicos estimado del
SMF basado en un SM tradicional y en un SMSR.
Comportamiento temporal
El comportamiento temporal resulta similar al de un multiplicador SM o
SMSR debido a que la ruta de interconexion mas crıtica se encuentra en la cons-
titucion de los multiplicadores fraccionados, Fig. 3.24.
La Ec. (3.31) resume el retardo de propagacion de la ruta de interconexion
mas crıtica para el multiplicador propuesto.
tpd = TOPCY +n− 4
2× TBY P + TSUM + TILO + Trd (3.31)
En la Fig. 3.26 se grafica el retardo de propagacion estimado para el SMF.
Este retardo define la frecuencia maxima de reloj que se puede utilizar con este
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 65
0 5 10 15 20 25 30 350
20
40
60
80
100
120
140
160
180
200
n
CLB
XCS05
XCS10
SMF (SM)SMF (SMSR)
Figura 3.25: Consumo de recursos de multiplicadores SMF.
multiplicador, que se observa en la Fig. 3.27.
La velocidad de procesamiento estimada de los SMF se muestra en la Fig. 3.28.
La misma es calculada como la frecuencia maxima de reloj dividido el numero
de ciclos necesarios para ejecutar un producto, PSSM = fcn2
+1y PSSMSR = fc
n2
,
expresado en millones de operaciones por segundo.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 66
0 5 10 15 20 25 30 350
5
10
15
20
25
n
Tdp
[ns]
Figura 3.26: Retardo de propagacion estimado del SMF.
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
Max
. Fre
c. d
e re
loj [
Mhz
]
Figura 3.27: Maxima frecuencia de reloj estimada aplicable al SMF.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 67
0 5 10 15 20 25 30 350
5
10
15
20
25
n
Vel
ocid
ad d
e P
roce
sam
ient
o [M
ops]
SMF (SM)SMF (SMSR)
Figura 3.28: Velocidad maxima de procesamiento de los SMF.
3.3.3. Multiplicador de Sumas Consecutivas
Esta variante es similar al SMB4 ya que basicamente opera con dıgitos de
2 bits. La estrategia consiste en realizar dos subproductos en forma consecuti-
va para reducir el numero de iteraciones sin tener que pre-computar multiplos
de los operandos. El Multiplicador de Sumas Consecutivas (SMSC) realiza dos
subproductos consecutivos en cada iteracion como se puede observar en la Ec.
(3.32).
P = 2n−1
n2−1∑
j=0
(yjX · 22j−(n−1) + yj+1X · 22j+1−(n−1))
(3.32)
Un ejemplo de la operatoria de este multiplicador es presentado en la Tabla
3.15.
La suma de los dos subproductos de la Ec. (3.32) genera un TCK superior al de
un multiplicador secuencial debido al acarreo de los dos sumadores, sin embargo,
para ciertas longitudes de palabras, el incremento en el retardo se ve minimizado
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 68
Tabla 3.15: Ejemplo de una multiplicacion mediante sumas consecutivasX 1 0 0 1Y 1 1 0 1
p(0) 0 0 0 0+y0X 1 0 0 1+2y1X 0 0 0 04p(1) 0 1 0 0 1
p(1) 0 0 1 0 0 1+y3X 1 0 0 1+2−1y4X 1 0 0 1 04p(2) 1 1 1 0 1 0 1
p(2) 0 1 1 1 0 1 0 1
frente a la ventaja de reducir a la mitad la cantidad de ciclos en el perıodo de
procesamiento.
Un esquema del SMSC basado en un SM se muestra en la Fig. 3.29, donde
se aprecia que, en cada iteracion, se realiza la suma en forma consecutiva de dos
subproductos, yjX + yj+1X · 2j+1 de la Ec. (3.32).
n
ADD
Producto Parcial
desplazamiento 2 bits
Y0n-12n-1 n 1
n-1
ADD
LSB
acarreo
acarreo
X0n-1
n
n
Figura 3.29: Ejemplo de un SMSC(SM).
El esquema basado en el SMSR se muestra en la Fig. 3.30.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 69
n
ADD
Producto
desplazamiento 2 bits
0n-12n-1 n
n-1
ADD
LSB
acarreo
acarreo
n
X
Y[bits impares]n
n/2
MUX
Control
Y[bits pares]n
n/2
MUX
Parcial
Figura 3.30: Ejemplo de un SMSC(SMSR).
Consumo de recursos
Recursos de un SMSC(SM): La Tabla 3.16 muestra el consumo de recursos
para un SMSC basado en un SM.
Funcion FG FF CLBRegistro X 0 n n
2
Registro Y (SR) n + 1 n n+12
Control log2(n2) + 2 log2(n
2) + 1
log2( n2
)
2+ 1
2× Producto yiX 2n 0 nSumador n + 2 0 n
2+ 1
Sumador + Reg. P n + 2 n + 2 n2
+ 1
Tabla 3.16: Estimacion de consumo de recursos logicos de un SMSC(SM).
Las Ecs. (3.33 - 3.35) resumen el calculo del consumo en terminos de FGs,
FFs y CLBs.
FG(n) = 5n + log2
n
2+ 7 (3.33)
FF (n) = 3n + log2
n
2+ 3 (3.34)
CLB(n) = 3n +log2
n2
2+
7
2(3.35)
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 70
Recursos de un SMSC(SMSR): La Tabla 3.17 expresa el consumo de re-
cursos para un SMSC basado en el SMSR.
Funcion FG FF CLB2× Multiplexor yi 2(n
2− 1) 0 n
2− 1
Control log2(n2) + 2 log2(n
2) + 1
log2( n2
)
2+ 1
2× Producto yiX 2n 0 nSumador n + 2 0 n
2+ 1
Sumador + Reg. P n + 2 n + 2 n2
+ 1Registro PL 0 n n
2
Tabla 3.17: Estimacion de consumo de recursos logicos de un SMSC(SMSR).
Las Ecs. (3.36 - 3.38) resumen el consumo en terminos de FGs, FFs y CLBs.
FG(n) = 5n + log2
n
2+ 4 (3.36)
FF (n) = n + log2
n
2+ 3 (3.37)
CLB(n) = 3n +1
2log2
n
2+ 2 (3.38)
En la Fig. 3.31 se muestra el consumo de recursos del multiplicador SMSC en
sus dos variantes.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 71
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
XCS05
SMSC (SM)SMSC (SMSR)
Figura 3.31: Consumo de recursos estimado de un SMSC.
Comportamiento temporal
El comportamiento temporal del SMSC depende de la ruta mas crıtica que,
en este caso debe tener en cuenta el acarreo los operandos a traves de los dos
sumadores consecutivos realimentados a traves de una cadena de Flip Flops, Fig.
3.29 o 3.30.
La ruta de retardos entre los dos sumadores consecutivos es mostrada en la
Fig. 3.32, donde se puede observar que existen dos rutas de acarreo crıticas. La
primera fue presentada en la Seccion 3.3.1 y se observa sobre el sumador de la
izquierda. La segunda, incorpora un retardo adicional TOPCY para la generacion
del acarreo del segundo sumador, proveniente del bit S1 del primer sumador, y
un segundo retardo que se considera aditivo, proveniente del acarreo de salida del
primer sumador.
La Ec. (3.39) resume el retardo de propagacion de la ruta de interconexion
mas crıtica para el multiplicador propuesto.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 72
A ,B7 7
TOPCY
A ,B6 6
A ,B5 5
A ,B4 4
A ,B3 3
A ,B2 2
A ,B1 1
A ,B0 0
TBYP
TBYP
TBYP
TSUM
S7
S6
S5
S4
S3
S2
S1
S0
CO
C ,BO 7
TOPCY
S ,B7 6
S ,B6 5
S ,B5 4
S ,B4 3
S ,B3 2
S ,B2 1
S ,B1 0
TBYP
TBYP
TBYP
TSUM
S7
S6
S5
S4
S3
S2
S1
S0
CO
Figura 3.32: Ruta crıtica de dos sumas consecutivas.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 73
tpd = 2× TOPCY +n− 4
2× TBY P + 2× TSUM + TILO + Trd (3.39)
La Fig. 3.33 muestra el retardo de propagacion estimado para el SMSC. Es-
te retardo define la frecuencia maxima de reloj que se puede utilizar con este
multiplicador, que se observa en la Fig. 3.34.
0 5 10 15 20 25 30 350
5
10
15
20
25
n
Tdp
[ns]
Figura 3.33: Retardo de propagacion estimado del SMSC.
La velocidad de procesamiento estimada del SMSC se grafica en la Fig. 3.35.
La misma es calculada como la frecuencia maxima de reloj aplicable al multipli-
cador, dividida por el numero de ciclos necesarios para ejecutar un producto y
depende del esquema en que se basa el mismo. Si se basa en un SM, la velocidad
de procesamiento es PS = fcn2
+1. En el caso de un SMSR, resulta de PS = fc
n2
.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 74
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
Max
. Fre
c. d
e re
loj [
Mhz
]
Figura 3.34: Maxima frecuencia de reloj estimada aplicable al SMSC.
0 5 10 15 20 25 30 350
5
10
15
20
25
n
Vel
ocid
ad d
e P
roce
sam
ient
o [M
op]
SMSC (SM)SMSC (SMSR)
Figura 3.35: Velocidad maxima de procesamiento del SMSC.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 75
3.4. Comparacion de los multiplicadores
Los multiplicadores propuestos fueron comparados entre sı y con respecto a
los multiplicadores existentes en la literatura. Se realizaron dos comparaciones,
la primera destinada a los multiplicadores secuenciales SM y SMSR, que son
los optimizados en consumo de recursos logicos, y la segunda destinada a los
multiplicadores secuenciales optimizados en velocidad de procesamiento.
3.4.1. Multiplicadores optimizados en consumo de recur-
sos
En la Fig. 3.36 se grafica el consumo de recursos logicos de los multiplicadores
secuenciales SM y SMSR.
0 5 10 15 20 25 30 350
10
20
30
40
50
60
70
80
n
CLB
SMSMSR
Figura 3.36: Consumo de recursos logicos de un SM vs SMSR.
Se puede observar que el SMSR posee un consumo de recursos levemente
inferior al del SM.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 76
El retardo de la ruta crıtica para ambos multiplicadores es practicamente
el mismo, sin embargo la velocidad de procesamiento (que depende del numero
de iteraciones) presenta una diferencia a favor del multiplicador SMSR. Esto se
puede observar en la Fig. 3.37.
5 10 15 20 25 30 352
4
6
8
10
12
14
n
PS
[Mop
s]
SMSMSR
Figura 3.37: Velocidad de procesamiento de un SM vs SMSR.
3.4.2. Multiplicadores optimizados en velocidad
En la Fig. 3.38 se muestra el consumo de recursos logicos de las variantes
optimizadas en velocidad.
Se puede observar que los multiplicadores del tipo SMSC son los que consumen
la menor cantidad de recursos, mientras que los del tipo SMF poseen un consumo
relativo entre un 30 y un 40 % mayor. Por otro lado, los multiplicadores de base
4 poseen un consumo relativo a los SMSC entre un 15 y un 20 % mayor.
En la Fig. 3.39 se grafican las velocidades de procesamiento, donde se puede
observar que el SMF(SMSR) es el que provee la mayor velocidad de procesamiento
para todos los valores de n. Adicionalmente, se puede observar que la variante
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 77
0 5 10 15 20 25 30 350
50
100
150
n
CLB
XCS05
SMB4(3X)SMB4(−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 3.38: Consumo de recursos logicos de los multiplicadores optimizados envelocidad.
SMF(SM), salvo para n = 8, presenta una buena velocidad de procesamiento
aunque inferior al SMF(SMSR) debido a que requiere una iteracion adicional.
El multiplicador SMSC(SMSR) presenta una buena velocidad de procesamien-
to para n < 14 bits, pero para valores mayores decrece. Se observa tambien que
las otras variantes logran velocidades inferiores a las del SMF(SMSR), pero su-
periores a la velocidad del SMB4(3X).
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 78
5 10 15 20 25 30 352
4
6
8
10
12
14
16
18
20
22
n
PS
[Mop
s]
SMB4(3X)SMB4(−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 3.39: Velocidad de procesamiento de los multiplicadores optimizados envelocidad.
3.4.3. Performance de los multiplicadores
A fin de estimar los beneficios de cada variante utilizando un unico indicador,
se propone el ındice de performance p, definido en la Ec. (3.40).
pi(n) =Velocidad de Procesamiento [Mops]
Area(3.40)
en la cual, la Velocidad de Procesamiento esta expresada en Millones de Opera-
ciones por Segundo y el Area como la fraccion de recursos respecto de todos los
existentes en una FPGA, (Total de la FPGA = 1).
En la Fig. 3.40 se muestra el ındice de performance para una FPGA de 400
CLB’s. Se puede observar que, para n < 14 bits, el SMSR presenta el mayor
ındice de performance. Esto se debe a que este multiplicador posee un consumo de
recursos logicos bastante reducido, y la relacion entre este consumo y su velocidad
de procesamiento es la optima.
Una forma de interpretar este resultado es analizando una posible aplicacion
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 79
5 10 15 20 25 30 35
50
100
150
200
250
300
n
Per
form
ance
SMSMSRSMB4(3X)SMB4(−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 3.40: Indice de performance de los multiplicadores.
de este multiplicador. El ındice de performance refleja que, si existiera la necesidad
de realizar un cierto numero de productos simultaneamente, resulta mas eficiente
utilizar arreglos paralelos de multiplicadores SMSR en lugar de un multiplicador
optimizado en velocidad.
El ındice indica que el SMSC es casi tan eficiente como el SMF(SMSR). Por
otro lado, los multiplicadores SMF(SM) y SMSC(SM) poseen una eficiencia me-
nor, debido al numero de iteraciones adicionales que deben realizar para ejecutar
un producto. Comparativamente se puede observar que la eficiencia de los multi-
plicadores de base 4 es bastante inferior.
En la Fig. 3.41 se grafica en forma ampliada el ındice para 20 < n < 32. En es-
ta figura se puede observar que al aumentar la longitud de palabra el SMF(SMSR)
y el SMSC(SMSR) resultan tanto o mas eficientes que el SMSR.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 80
20 22 24 26 28 30 325
10
15
20
25
30
35
n
Per
form
ance
SMSMSRSMB4(3X)SMB4(−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 3.41: Indice de performance de los multiplicadores 20 < n < 32.
3.5. Arquitecturas Propuestas en Punto Flotan-
te
3.5.1. Variante Multiplicador Secuencial Sin Entradas Re-
gistradas
Producto de mantisas
El producto de las mantisas es un producto de dos enteros binarios sin signo.
El resultado de dos operandos enteros de n bits genera como resultado un numero
de 2n bits, sin embargo, en la multiplicacion en punto flotante solo se representan
los n bits mas significativos. Esto permite que exista una reduccion de la logica
del multiplicador debido a que la seccion menos significativa del registro que
almacena el Productoparcial es reemplazada por un unico Flip-Flop. Fig. 3.42.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 81
ADD
X
Producto Parcial
desplazamiento
n
n
Y
acarreon 0
nn
n
MUX
Control
n+1bits descartados
Figura 3.42: Modificacion del SMSR para el producto de las mantisas
Redondeo y normalizacion
El multiplicador propuesto se desarrollo para efectuar dos tipos de redondeo,
el redondeo a cero y el redondeo a +∞. El multiplicador con redondeo a cero es
el mas sencillo y mas economico en terminos de consumo de recursos logicos. El
multiplicador con redondeo a +∞ es mas elaborado pero mas economico que el
que utiliza el redondeo al mas cercano.
Redondeo a cero: El redondeo a cero consiste en truncar el producto de las
mantisas a la derecha del bit menos significativo. Esta operacion se efectua por
defecto al eliminar los registros de la seccion menos significativa del producto
de las mantisas. La particularidad de esta operacion radica en que el producto
resultante no se ve afectado por los registros eliminados debido a que son tan
solo una cadena de registros de desplazamiento que va ubicando el bit menos
significativo de la acumulacion de los productos parciales (ver Sec. 3.3.1).
Cuando el producto de las mantisas resulte en el rango 2 ≤ p ≤ 4, se debe
realizar un desplazamiento de normalizacion a la derecha para restaurar el pro-
ducto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del exponente en una unidad.
Este desplazamiento se realiza mediante una iteracion adicional (ciclo n + 1) en
la que la entrada X = 0 (equivalente al desplazamiento a la derecha).
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 82
Redondeo a +∞: Este esquema presenta tres posibilidades: la primer posibi-
lidad es el truncamiento si el producto es negativo o si todos los bits a la derecha
del LSB son 0. Esta operacion se realiza mediante la registracion de los bits
descartados en cada iteracion.
Las otras dos posibilidades de redondeo dependen de los bits mas significativos
del producto de las mantisas y se diferencian entre sı por el rango del resultado.
La estrategia de redondeo utilizada con el multiplicador adiciona la constante
2−n por defecto y posteriormente evalua el rango del producto. Si el rango del
producto resulta comprendido en el rango 1 ≤ p ≤ 2, el redondeo se efectuo co-
rrectamente y no es requerida ninguna operacion adicional.
Cuando el producto resulta comprendido en el rango 2 ≤ p ≤ 4, se debe
ajustar el redondeo efectuado debido a la posterior normalizacion. Se presentan
dos casos en base a los bits menos significativos:
a) Si el bit menos significativo del producto truncado es un ”1”, para el cual la
adicion de la constante 2−n se propaga a los bits mas significativos. En este
caso no se realiza correccion.
b) Si el bit menos significativo del producto truncado es un ”0”. En este caso
la adicion de la constante 2−n no se propaga a los bits mas significativos y
consecuentemente luego de normalizar debe volver a redondear.
La Fig. 3.43 muestra el esquema de redondeo del multiplicador.
El multiplicador resultante se presenta en la Fig. 3.5.1.
Adicion de los exponentes
El exponente del producto resultante se puede expresar mediante la Ec. (3.41).
ep = ex + ey − bias + normal (3.41)
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 83
Producto 2n bits
n bits descartados
1 * * * * *
0 0 0 0 100...0
Overflow con error
* * * * * *
Sin Overflow
0 1 * * * *
Redondeo
Producto
Truncamiento
1 * * * * *
* * * * * * * * * *
Sin Redondeo
Producto bitn
Normalización
0 0 0 0 0 10...0
+
1 * * * * *
Overflow sin error
Redondeo
Figura 3.43: Ejemplo del esquema de redondeo implementado
ADD
X
Producto Parcial
desplazamiento
n
n
Y
acarreon 0
nn
n
MUX
Controlnormalización
redondeo
n+1
Figura 3.44: Multiplicacion de las mantisas.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 84
La Ec. (3.41) se ha ejecutado en dos etapas, la primera donde se adicionan
los exponentes ex + ey y la segunda resta el bias al resultado. En esta etapa se
adiciona, si es necesario, un bit correspondiente a la normalizacion del resultado.
Consumo de recursos logicos
SMSR con redondeo a cero: La Tabla 3.18 expresa la estimacion del consu-
mo de recursos logicos del multiplicador en punto flotante basado en un SMSR
con redondeo a cero.
Funcion FG FF CLBMultiplexor 1.fyi n + 1 n 0 n
2
Control log2(n + 1) + 2 log2(n + 1) + 3 log2(n+1)2
+ 32
Producto yiX n + 1 0 n+12
Sumador + Reg. PH n + 3 n + 1 n+32
Registro P0 0 1 12
Adicion exponentes r + 2 0 r2
+ 1Correccion Bias + normalizacion r + 4 0 r
2+ 2
Signo 1 0 12
Tabla 3.18: Estimacion de consumo de recursos logicos de la variante SMSR conredondeo a cero.
Las Ecs. (3.42, 3.43 y 3.44) resumen el calculo de la estimacion en terminos
de FGs, FFs y CLBs.
FG(n, r) = 3n + log2(n + 1) + 13 + 2r (3.42)
FF (n, r) = n + log2(n + 1) + 5 (3.43)
CLB(n, r) =3n
2+
log2(n + 1)
2+
15
2+ r (3.44)
En la Fig. 3.45 se muestra el consumo estimado de recursos del SMSR.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 85
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
XCS05
Figura 3.45: Consumo de recursos del PFPM(SMSR), r = 8.
SMSR con redondeo a +∞: La Tabla 3.19 presenta la estimacion del con-
sumo de recursos logicos del multiplicador en punto flotante basado en un SMSR
con redondeo a +∞.
Funcion FG FF CLBMultiplexor 1.fyi n + 1 n 0 n
2
Control log2(n + 1) + 2 log2(n + 1) + 3 log2(n+1)2
Producto yiX n + 1 0 n+12
Sumador + Reg. PH n + 3 n + 1 n+32
Registro P0 0 1 12
Redondeo + normalizacion 5 3 52
Adicion exponentes r + 2 0 r2
+ 1Correccion Bias + normalizacion r + 4 r + 1 r
2+ 2
Signo 1 0 12
Tabla 3.19: Estimacion de consumo de recursos logicos de la variante SMSR conredondeo a +∞.
Las Ecs. (3.45, 3.46 y 3.47) resumen el calculo de la estimacion en terminos
de FGs, FFs y CLBs.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 86
FG(n, r) = 3n + log2(n + 1) + 10 + 2r (3.45)
FF (n, r) = n + log2(n + 1) + 9 (3.46)
CLB(n, r) =3n
2+
log2(n + 1)
2+ 10 + r (3.47)
En la Fig. 3.46 se muestra el consumo de estimado de recursos del SMSR.
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
XCS05
Figura 3.46: Consumo de recursos del PFPM(SMSR), r = 8.
3.5.2. Variante Multiplicador Secuencial de Sumas Con-
secutivas
Producto de mantisas
El producto de las mantisas mediante el SMSC se efectua como un producto
de dos enteros binarios sin signo, con la reduccion de la logica del multiplicador
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 87
debido a que la seccion menos significativa del registro P es reemplazada por un
unico Flip-Flop. Fig. 3.47.
n
ADD
Producto Parcial
desplazamiento 2 bits
0n 1
nADD
LSB
acarreo
n
X
Y[bits impares]n
n/2
MUX
Control
Y[bits pares]n
n/2
MUX
Bits descartadosn+1
acarreo
Figura 3.47: SMSC modificado para el producto de las mantisas
Redondeo y normalizacion
Redondeo a cero: El redondeo a cero consiste en truncar el resultado del
producto de las mantisas a la derecha del bit menos significativo. Esta operacion
se efectua por defecto al eliminar los registros de la seccion menos significativa
del producto de las mantisas tal como se realiza con el multiplicador basado en
un SMSR.
En el caso en que el producto de las mantisas resulte en el rango 2 ≤ p ≤ 4,
se debe realizar un desplazamiento de normalizacion a la derecha para restaurar
el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del exponente en una
unidad. Mientras que el multiplicador de punto flotante basado en el SMSR, la
operacion de normalizacion se efectua mediante una iteracion adicional (ciclo
n + 1) en la que la entrada X = 0, con el SMSC esta operacion no es posible
debido a que una iteracion del SMSC efectua dos desplazamientos. Debido a esto,
el multiplicador basado en el SMSC requiere de logica adicional para la realizacion
de las tareas de normalizacion y de correccion del redondeo.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 88
Redondeo a +∞: El esquema de redondeo a +∞ implementado en este mul-
tiplicador es el mismo que aquel descripto en la seccion 3.5.1. La diferencia radica
en la aplicacion del mismo, ya que tal como se explica en la seccion previa, se
requiere de logica adicional para efectuar la normalizacion.
Adicion de los exponentes
La adicion de los exponentes se realiza de la misma manera que en la seccion
3.5.1. El exponente del producto resultante se puede expresar mediante la Ec.
(3.48).
ep = ex + ey − bias + normal (3.48)
Consumo de recursos logicos
SMSC con redondeo a cero: La Tabla 3.20 muestra la estimacion del con-
sumo de recursos logicos del multiplicador en punto flotante basado en un SMSC
con redondeo a cero. Las Ecs. (3.49, 3.50 y 3.51) resumen el calculo de la esti-
Funcion FG FF CLB2× Multiplexor yi 2(n+1
2− 1) 0 n
2− 1
2
Control log2(n+12
) + 2 log2(n+12
) + 3log2( n+1
2)
2+ 3
2
2× Producto yiX 2n + 2 0 n + 1Sumador n + 3 0 n
2+ 3
2
Sumador + Reg. P n + 3 n + 3 n2
+ 32
Registro P0 0 1 12
Adicion exponentes r + 2 0 r2
+ 1Correccion Bias + normalizacion r + 4 1 r
2+ 5
2
Signo 1 0 12
Tabla 3.20: Estimacion de consumo de recursos logicos de la variante SMSC conredondeo a cero.
macion en terminos de FGs, FFs y CLBs. En la Fig. 3.48 se grafica el consumo
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 89
estimado de recursos del SMSC.
FG(n, r) = 5n + log2(n + 1
2) + 16 + 2r (3.49)
FF (n, r) = n + log2(n + 1
2) + 8 (3.50)
CLB(n, r) =5n
2+
log2(n+12
)
2+
19
2+ r (3.51)
0 5 10 15 20 25 30 350
20
40
60
80
100
120
140
n
CLB
XCS05
Figura 3.48: Consumo de recursos del PFPM(SMSC), r = 8.
SMSC con redondeo a +∞: La Tabla 3.21 presenta la estimacion del consu-
mo de recursos logicos del multiplicador en punto flotante basado en un SMSC.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 90
Funcion FG FF CLB2× Multiplexor yi 2(n+1
2− 1) 0 n− 1
Control log2(n+12
) + 2 log2(n+12
) + 3log2( n+1
2)
2+ 3
2
2× Producto yiX 2n + 2 0 n + 1Sumador n + 3 0 n
2+ 3
2
Sumador + Reg. P n + 3 n + 3 n2
+ 32
Registro P0 0 1 12
Redondeo + norm. 2n + 4 3 n + 2Adicion exponentes r + 2 0 r
2+ 1
Correccion Bias + normalizacion r + 4 1 r2
+ 52
Signo 1 0 12
Tabla 3.21: Estimacion de consumo de recursos logicos de la variante SMSC conredondeo a +∞.
Las Ecs. (3.52, 3.53 y 3.54) resumen el calculo de la estimacion en terminos
de FGs, FFs y CLBs.
FG(n, r) = 7n + log2(n + 1
2) + 20 + 2r (3.52)
FF (n, r) = n + log2(n + 1
2) + 10 (3.53)
CLB(n, r) =7n
2+
log2(n + 1)
2+
23
2+ r (3.54)
En la Fig. 3.49 se muestra el consumo estimado de recursos del SMSC.
3.6. Conclusiones
En este capıtulo se caracterizaron los multiplicadores secuenciales y se pro-
pusieron nuevas arquitecturas con el objetivo de realizar un estudio comparativo
destinado a su implementacion en FPGA. Se presentaron las estimaciones de
consumo de recursos logicos y de comportamiento temporal que permitieron con-
trastar las caracterısticas de los multiplicadores presentados.
Capıtulo 3. Nuevas Arquitecturas de Multiplicadores 91
0 5 10 15 20 25 30 350
20
40
60
80
100
120
140
n
CLB
XCS05
Figura 3.49: Consumo de recursos del PFPM(SMSC), r = 8.
A partir de estas comparaciones se concluyo que el SMSR, el SMSC(SMSR) y
el SMF(SMSR) son los multiplicadores que mejor ındice de performance presen-
tan. Resultando el SMSR el optimo para aplicaciones donde se busca una reducida
cantidad de recursos logicos, y el SMSC(SMSR) o SMF(SMSR) en aplicaciones
donde ademas de las restricciones de recursos se requiere una alta velocidad de
procesamiento.
Como resultado de las comparaciones, se extendieron las variantes SMSR y
SMSC(SMSR) a la multiplicacion de operandos en punto flotante. Las arquitec-
turas propuestas contemplan los esquemas con redondeo a cero y a +∞. Para
cada variante se obtuvo una estimacion del consumo de recursos logicos.
Capıtulo 4
Resultados Experimentales
4.1. Introduccion
Los multiplicadores propuestos fueron ensayados experimentalmente con el
objetivo de contrastar los resultados teoricos y de las estimaciones. Para ello, los
multiplicadores se implementaron en tres series de FPGA de Xilinx: Spartan, Vir-
tex y Virtex II. Cada una de las variantes de los multiplicadores se implemento en
primera instancia mediante captura esquematica y posteriormente en Lenguaje
de Descripcion de Hardware (VHDL) [28] [29].
4.2. Parametros de interes
Las variables de interes para la validacion experimental fueron: consumo de
recursos logicos, el retardo de propagacion, la frecuencia maxima del reloj de la
FPGA (inversa del retardo de propagacion), la frecuencia de actualizacion de
datos por segundo (inversa del tiempo que demanda realizar las iteraciones) y
finalmente, el ındice de performance, que integra los conceptos de tiempo y de
cantidad de recursos logicos.
92
Capıtulo 4. Resultados Experimentales 93
El retardo de propagacion tpd se obtuvo a partir del Analizador de Tiempos
que posee la herramienta de programacion de FPGA de Xilinx (Foundation 3.1i,
Timimg Analyzer). Esta herramienta realiza un analisis estatico de todos los
retardos incluyendo el retardo entre un flanco de reloj y la correspondiente salida
Q de un FlipFlop, considerando adicionalmente el tiempo de establecimiento de
una senal. A partir de estos datos calcula el peor caso de temporizacion del diseno.
La frecuencia maxima de funcionamiento de reloj (fc [Mhz]) es la inversa del
tiempo tpd e indica la frecuencia maxima de reloj posible con ese diseno. A partir
de esta ultima se obtiene la frecuencia de actualizacion de datos o velocidad
de procesamiento (PS [Mops]). Esta frecuencia surge de dividir la frecuencia
maxima de trabajo por el numero de ciclos N que requiere ejecutar una operacion,
PS = fc
N.
El ındice de performance definido en la Seccion 3.4.3 se utilizo con el objetivo
de comparar el desempeno de cada sistema implementado en la FPGA.
4.3. Multiplicacion en Punto Fijo
4.3.1. Consumo de recursos logicos
El consumo de recursos logicos se puede cuantificar en CLBs. Cada CLB
esta compuesto por dos generadores de funciones (FG) y dos FlipFlops (FF). En
las series Virtex y Virtex II, cada CLB posee dos celdas denominadas slice, pero
a fines practicos la unidad utilizada es la de un CLB = un slice.
A continuacion se presentan los resultados experimentales de los multiplica-
dores implementados en una FPGA XCS20-pq208, perteneciente a la Familia
Spartan, con una capacidad de 400 CLBs. Finalmente, se presenta de forma re-
sumida el consumo de recursos logicos de los multiplicadores implementados en
Capıtulo 4. Resultados Experimentales 94
las FPGAs XCV300e-8 y XC2V250-5 de las series Virtex y Virtex II.
Implementacion de los multiplicadores en Spartan
En la Tabla 4.1 se muestran los resultados experimentales de los multiplica-
dores implementados en Spartan.
Tabla 4.1: Consumo de recursos de los multiplicadores en Spartan[CLB].n 8 10 12 14 16 18 20 22 24 26 28 30 32
SM 17 20 23 26 29 32 35 39 41 44 47 50 54SMSR 19 24 28 31 35 40 43 47 50 54 58 61 65
SMB4(3X) 30 36 42 48 55 62 67 74 79 86 91 98 104SMB4(-x) 28 32 38 44 51 56 61 66 70 76 81 87 92
SMSC(SM) 24 30 35 40 45 50 55 61 65 70 75 81 86SMSC(SMSR) 28 34 39 45 51 60 65 71 75 82 87 93 98
SMF(SM) 32 38 45 51 59 65 72 78 85 91 97 104 111SMF(SMSR) 35 42 50 56 64 73 81 86 94 101 109 114 122
Las Tablas 4.2 y 4.3 muestran, respectivamente, el consumo estimado (Capıtu-
lo 3) y la diferencia porcentual entre el consumo experimental y el estimado.
Tabla 4.2: Consumo Estimado de recursos de los multiplicadores [CLB].n 8 10 12 14 16 18 20 22 24 26 28 30 32
SM 20 24 28 32 37 41 45 49 53 57 61 65 69SMSR 19 23 27 31 36 40 44 48 52 56 60 64 68
SMB4(3X) 37 44 51 58 66 73 80 87 94 101 108 115 122SMB4(-x) 33 39 45 51 58 64 70 76 82 88 94 100 106
SMSC(SM) 29 35 41 47 53 59 65 71 77 83 89 95 102SMSC(SMSR) 27 33 39 45 52 58 64 70 76 82 88 94 100
SMF(SM) 35 43 50 58 66 73 81 88 96 103 111 118 126SMF(SMSR) 32 39 46 53 61 68 75 82 89 96 103 110 117
Se puede observar en la Tabla 4.3 que, los multiplicadores que poseen una
estructura basada en el SM (el SM inclusive), presentan un consumo real inferior
al estimado. Esta diferencia se debe a que el algoritmo de sıntesis e implementa-
cion de Xilinx agrupa dos secciones de los multiplicadores en un solo CLB. En el
Capıtulo 4. Resultados Experimentales 95
Tabla 4.3: Diferencia porcentual, Consumo Experimental vs Estimado [ %].n 8 10 12 14 16 18 20 22 24 26 28 30 32
SM -15 -17 -19 -20 -21 -21 -22 -20 -22 -23 -23 -23 -22SMSR 0 4 3 -1 -1 1 -2 -2 -3 -3 -3 -5 -4
SMB4(3X) -19 -18 -18 -18 -16 -15 -16 -15 -16 -15 -16 -15 -15SMB4(-x) -15 -18 -16 -14 -11 -12 -12 -13 -14 -13 -14 -13 -13
SMSC(SM) -16 -13 -14 -15 -15 -15 -16 -14 -16 -16 -16 -15 -15SMSC(SMSR) 4 3 -1 -1 -1 4 2 2 -1 0 -1 -1 -2
SMF(SM) -9 -11 -11 -12 -10 -11 -11 -12 -11 -12 -13 -12 -12SMF(SMSR) 9 7 8 5 6 8 8 5 6 5 6 4 4
caso de este esquema de multiplicacion existen dos secciones, una combinacional
sin registros y otra que utiliza solo registros, permitiendo, que el programa logre
reducir el consumo de CLBs complementando dos secciones del multiplicador.
A continuacion se explica esta situacion por medio de la implementacion del
SM que se muestra en la Fig. 4.1. En la estructura del SM, Fig. 3.2, el registro
Figura 4.1: Sıntesis de un CLB del multiplicador SM.
que almacena el operando X solo utiliza los FFs de un CLB permitiendo que los
FGs se puedan utilizar para otras funciones. Si se introduce esta consideracion de
Capıtulo 4. Resultados Experimentales 96
sıntesis en la estimacion de consumo de recursos del multiplicador, la Ec. (3.6) es
modificada, obteniendo la Ec. (4.1).
CLB(n) =3
2n +
log2 n
2+
5
2(4.1)
La Fig. 4.2 muestra graficamente la diferencia existente entre el consumo de
recursos estimado y el experimental para el SM.
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
EstimadoExperimental
Figura 4.2: Consumo de recursos logicos del SM en Spartan.
La Fig. 4.3 presenta la contrastacion entre la estimacion de la Ec. 4.1 y los
resultados experimentales, donde se advierte la consistencia entre los resultados
experimentales y los estimados.
Capıtulo 4. Resultados Experimentales 97
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
EstimadoExperimental
Figura 4.3: Consumo de recursos logicos del SM en Spartan.
Implementacion de los multiplicadores en Virtex
En la Tabla 4.4 se presenta el consumo de recursos logicos de los multipli-
cadores, en terminos de slices1, para una FPGA XCV300e-8 de la serie Virtex
de Xilinx. Se puede observar que en el caso de los multiplicadores en Virtex, el
software de implementacion no optimiza el uso de las celdas como lo hizo en la
serie Spartan, por lo que el consumo coincide conlo estimado en Capıtulo 3.
Implementacion de los multiplicadores en Virtex II
La Tabla 4.5 presenta el consumo de recursos logicos de los multiplicadores,
en terminos de slices, para una FPGA XC2V250-5 de la serie Virtex II de Xilinx.
Se puede observar que en el caso de los multiplicadores en Virtex II el consumo
de recursos es similar al de la serie Virtex.
1El contenido de un slice es similar al de un CLB de una Serie Spartan de Xilinx.
Capıtulo 4. Resultados Experimentales 98
Tabla 4.4: Consumo de recursos de los multiplicadores en Virtex [slices].n 8 10 12 14 16 18 20 22 24 26 28 30 32
SM 21 25 29 33 38 42 46 50 54 58 62 66 71SMSR 19 24 28 31 34 41 44 48 53 57 60 64 64
SMB4(3X) 33 39 45 51 58 65 70 76 82 89 94 100 107SMB4(-x) 31 36 40 46 52 57 62 67 73 77 82 87 94
SMSC(SM) 30 36 42 49 55 62 67 73 79 86 91 97 104SMSC(SMSR) 28 33 39 46 50 58 64 71 76 82 88 94 96
SMF(SM) 37 44 51 59 67 74 81 90 96 104 111 119 128SMF(SMSR) 35 42 50 56 64 73 81 86 94 101 109 114 122
Tabla 4.5: Consumo de recursos de los multiplicadores en Virtex II [slices].n 8 10 12 14 16 18 20 22 24 26 28 30 32
SM 21 25 29 33 38 42 46 50 54 58 62 66 71SMSR 19 24 28 31 34 41 45 48 52 56 60 64 63
SMB4(3X) 31 38 44 50 57 64 69 75 81 88 93 99 106SMB4(-x) 32 38 42 48 54 58 64 69 73 79 83 89 93
SMSC(SM) 30 36 42 49 55 62 67 73 79 86 91 97 104SMSC(SMSR) 28 33 39 46 51 58 63 70 76 82 88 94 96
SMF(SM) 36 44 51 59 67 74 81 90 96 104 111 119 128SMF(SMSR) 35 41 48 55 62 72 80 87 94 101 109 114 122
4.3.2. Comportamiento temporal
El comportamiento temporal de los multiplicadores depende del retardo inhe-
rente de las compuertas logicas y registros, y el retardo debido a la interconexion
entre las mismas. En el capıtulo anterior se estimo el comportamiento temporal
sin considerar los retardos de interconexion debido a que los mismos recien se
conocen una vez implementado el circuito.
Implementacion de los multiplicadores en Spartan
En esta seccion se presentan los resultados experimentales de los multiplica-
dores implementados en una FPGA XCS20-pq208. A partir de estos resultados,
se obtiene una expresion de los retardos de interconexion, los que se incorporan
Capıtulo 4. Resultados Experimentales 99
a la estimacion del comportamiento temporal de cada multiplicador permitiendo
caracterizarlo de manera mas precisa.
En la Tabla 4.6 se muestran los resultados experimentales de los multiplica-
dores implementados en Spartan.
Tabla 4.6: Retardo de propagacion de los multiplicadores en Spartan [ns].n 8 10 12 14 16 18 20 22 24 26 28 30 32
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.1SMSR 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
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.7SMB4(-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
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.9SMSC(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
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.2SMF(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
La Tabla 4.7 muestra el retardo de propagacion estimado en el Capıtulo 3. Se
recuerda que el retardo de propagacion en las variantes SM y SMSR es el mismo,
existiendo la diferencia en el numero de iteraciones de cada modelo.
Tabla 4.7: Retardo estimado de propagacion de los multiplicadores Trd = 0 [ns].n 8 10 12 14 16 18 20 22 24 26 28 30 32
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.1SMB4(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.0SMB4(-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
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.9SMF 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
La Tabla 4.8 muestra la diferencia porcentual entre el retardo experimental y
el estimado. Se puede concluir que el retardo de interconexion genera entre un 10
y un 30 % de retardo adicional al retardo estimado.
La Tabla 4.9 muestra la velocidad de procesamiento resultante de los multi-
plicadores implementados en Spartan.
Capıtulo 4. Resultados Experimentales 100
Tabla 4.8: Diferencia porcentual, Retardo de propagacion Experimental vs Esti-mado [ %].
n 8 10 12 14 16 18 20 22 24 26 28 30 32
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.8SMSR 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
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.7SMB4(-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
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.6SMSC(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
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.5SMF(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
Tabla 4.9: Velocidad de Procesamiento de los multiplicadores en Spartan[Mops/s].
n 8 10 12 14 16 18 20 22 24 26 28 30 32
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.6SMSR 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
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.5SMB4(-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
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.6SMSC(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
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.7SMF(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
Implementacion de los multiplicadores en Virtex
La Tabla 4.10 presenta maxima velocidad de procesamiento que se puede obte-
ner con los multiplicadores, en terminos de Millones de operaciones por segundo,
para la FPGA XCV300e-8.
Implementacion de los multiplicadores en Virtex II
La Tabla 4.11 presenta maxima velocidad de procesamiento que se puede obte-
ner con los multiplicadores, en terminos de Millones de operaciones por segundo,
para la FPGA XC2V250e-8.
Capıtulo 4. Resultados Experimentales 101
Tabla 4.10: Velocidad de Procesamiento de los multiplicadores en Virtex [Mops/s].n 8 10 12 14 16 18 20 22 24 26 28 30 32
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.2SMSR 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
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.7SMB4(-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
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.6SMSC(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
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.4SMF(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
Tabla 4.11: Velocidad de Procesamiento de los multiplicadores en Virtex II[Mops/s].
n 8 10 12 14 16 18 20 22 24 26 28 30 32
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.1SMSR 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
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.6SMB4(-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
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.5SMSC(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
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.9SMF(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
4.3.3. Comparacion de los multiplicadores
En esta seccion se realiza la comparacion de los multiplicadores ensayados a
partir de los resultados obtenidos de las implementaciones.
Multiplicadores optimizados en consumo de recursos
La Fig. 4.4 muestra el consumo de recursos logicos de los multiplicadores
secuenciales SM y SMSR implementados en la serie Spartan. Se puede observar
que el SM posee un consumo de recursos aproximadamente 20 % inferior al del
SMSR. Esto se debe fundamentalmente al algoritmo de sıntesis e implementacion
de Xilinx que agrupa dos secciones del SM en un solo CLB.
Capıtulo 4. Resultados Experimentales 102
5 10 15 20 25 30 350
10
20
30
40
50
60
70
80
n
CLB
SMSMSR
Figura 4.4: Consumo de recursos logicos: SM vs SMSR en Spartan.
En la Fig. 4.5 se muestra la misma comparacion en la serie Virtex. En la
misma se puede observar que la relacion de consumo entre los multiplicadores
posee las mismas caracterısticas que las estimadas en la Seccion 3.4. La Fig 4.6
muestra la comparacion de los multiplicadores implementados en Virtex II.
En cuanto a la velocidad de procesamiento de ambos multiplicadores en Spar-
tan, la diferencia entre estas, se puede observar en la Fig. 4.7. Esta diferencia
depende del numero de iteraciones de cada multiplicador, debido a que el retardo
de la ruta crıtica para ambos multiplicadores es practicamente el mismo.
Las Figs. 4.8 y 4.9 muestran la misma comparacion realizada para las se-
ries Virtex y Virtex II. Se puede observar que la relacion existente entre ambos
multiplicadores se mantiene para todas las implementaciones.
Capıtulo 4. Resultados Experimentales 103
5 10 15 20 25 30 350
10
20
30
40
50
60
70
80
n
CLB
SMSMSR
Figura 4.5: Consumo de recursos logicos: SM vs SMSR en Virtex.
5 10 15 20 25 30 350
10
20
30
40
50
60
70
80
n
CLB
SMSMSR
Figura 4.6: Consumo de recursos logicos: SM vs SMSR en Virtex II.
Capıtulo 4. Resultados Experimentales 104
5 10 15 20 25 30 350
2
4
6
8
10
12
14
n
PS
[Mop
s]
SMSMSR
Figura 4.7: Velocidad de procesamiento: SM vs SMSR en Spartan.
5 10 15 20 25 30 350
5
10
15
20
25
30
n
PS
[Mop
s]
SMSMSR
Figura 4.8: Velocidad de procesamiento: SM vs SMSR en Virtex.
Capıtulo 4. Resultados Experimentales 105
5 10 15 20 25 30 350
5
10
15
20
25
30
35
40
n
PS
[Mop
s]
SMSMSR
Figura 4.9: Velocidad de procesamiento: SM vs SMSR en Virtex II.
Multiplicadores optimizados en velocidad
En la Fig. 4.10 se grafica el consumo de recursos logicos de las variantes
propuestas, optimizadas en velocidad, en contraste con los multiplicadores de
base 4.
Al respecto se puede observar que el multiplicador del tipo SMSC(SM) es
el que consume la menor cantidad de recursos, seguido del SMbase4(-X). El
SMSC(SMSR) presenta un consumo de recursos logicos alrededor de un 20 %
superior a la variante SM. Una relacion similar mantienen ambas variantes del
multiplicador SMF. Al respecto se puede observar que la variante SMSR posee
un consumo de recursos de casi un 142 % del SMSC(SM), y la variante SM un
129 %.
Las Figs. 4.11 y 4.12 muestran la comparacion realizada para las series Virtex
y Virtex II de Xilinx respectivamente. Se puede observar que las variantes de
los multiplicadores basadas en los SM poseen un consumo de recursos similar al
presentado en la Seccion 3.4.
Capıtulo 4. Resultados Experimentales 106
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
SMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.10: Consumo de recursos logicos de multiplicadores optimizados en ve-locidad en Spartan.
5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
SMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.11: Consumo de recursos logicos de multiplicadores optimizados en ve-locidad en Virtex.
Capıtulo 4. Resultados Experimentales 107
5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
SMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.12: Consumo de recursos logicos de multiplicadores optimizados en ve-locidad en Virtex II.
En la Fig. 4.13 se grafica una comparacion de las velocidades de procesamien-
to de los multiplicadores. Se puede observar que el multiplicador SMF(SMSR)
es el que obtiene la mayor velocidad de procesamiento para todos los valores
de n. Adicionalmente, se puede observar que la variante SMF(SM), salvo para
el caso de n = 8, obtiene una buena velocidad de procesamiento pero inferior
al SMF(SMSR) debido a que requiere una iteracion adicional. El multiplicador
SMSC(SMSR) obtiene una buena velocidad de procesamiento que es comparativa
a la velocidad obtenida por el multiplicador SMF(SM). Se observa tambien que
la velocidad de la variante SMSC(SM) es superior a la velocidad obtenida por el
SMbase4(3X).
Capıtulo 4. Resultados Experimentales 108
5 10 15 20 25 30 350
2
4
6
8
10
12
14
16
18
20
22
n
PS
[Mop
s]
SMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.13: Velocidad de procesamiento de los multiplicadores optimizados envelocidad en Spartan.
5 10 15 20 25 30 350
5
10
15
20
25
30
35
40
45
n
PS
[Mop
s]
SMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.14: Velocidad de procesamiento de multiplicadores optimizados en velo-cidad en Virtex.
Capıtulo 4. Resultados Experimentales 109
5 10 15 20 25 30 350
5
10
15
20
25
30
35
40
45
50
55
n
PS
[Mop
s]
SMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.15: Velocidad de procesamiento de multiplicadores optimizados en velo-cidad en Virtex II.
Performance de los multiplicadores
A fin de estimar los beneficios que se obtienen con cada variante se utiliza el
ındice de performance propuesto en la Ec. (3.40).
Implementacion en Spartan: En la Fig. 4.16 se grafica el ındice de perfor-
mance para las distintas variantes, luego de su implementacion en una FPGA de
400 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que los mejores
resultados corresponden a los multiplicadores SM y SMSC(SMSR).
En la Fig. 4.17 se grafica el ındice de performance para un rango de 20 ≤ n ≤32 bits. En esta figura se observa que el SM posee el mejor ındice. Adicionalmente
ındice del SMSC(SM) resulta mejor que el del SMSC(SMSR) debido a que con-
sume menor cantidad de recursos y a medida que aumenta la longitud de palabra
de los operandos, la velocidad de procesamiento de ambos multiplicadores se hace
mas parecida.
Capıtulo 4. Resultados Experimentales 110
5 10 15 20
50
100
150
200
250
n
Per
form
ance
SMSMSRSMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.16: Indice de performance de los multiplicadores en Spartan, 8 ≤ n ≤ 20.
20 22 24 26 28 30 325
10
15
20
25
30
35
n
Per
form
ance
SMSMSRSMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.17: Indice de performance de los multiplicadores en Spartan, 20 ≤ n ≤32.
Capıtulo 4. Resultados Experimentales 111
Implementacion en Virtex: En la Fig. 4.16 se grafica el ındice de perfor-
mance para las distintas variantes, luego de su implementacion en una FPGA
Virtex de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que el
mejor resultado corresponde al SMSC(SMSR) y, en menor medida el SMSR Y el
SMF(SMSR).
5 10 15 200
500
1000
1500
2000
n
Per
form
ance
SMSMSRSMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.18: Indice de performance de los multiplicadores en Virtex, 8 ≤ n ≤ 20.
En la Fig. 4.17 se grafica el ındice de performance para un rango de 20 ≤n ≤ 32 bits, donde se observa que el ındice de los multiplicadores resulta mas
comparable para las variantes SMSC(SMSR), SMF(SMSR), SMSR y SM. Esto
es debido a que a medida que aumenta la longitud de palabra de los operandos,
el retardo de interconexion de los multiplicadores mas complejos aumenta mas
notoriamente en relacion con el SM y el SMSR.
Capıtulo 4. Resultados Experimentales 112
20 22 24 26 28 30 320
50
100
150
200
250
300
350
400
n
Per
form
ance
SMSMSRSMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.19: Indice de performance de los multiplicadores en Virtex, 20 ≤ n ≤ 32.
Implementacion en Virtex II: En la Fig. 4.16 se grafica el ındice de per-
formance para las distintas variantes, luego de su implementacion en una FPGA
Virtex II de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que
el mejor resultado corresponde al SMF(SMSR) y, en menor medida el SMSR Y
EL SMF(SMSR)(salvo para el caso de n = 8, en el cual ambos poseen un mayor
ındice).
En la Fig. 4.17 se grafica el ındice de performance para un rango de 20 ≤n ≤ 32 bits, donde se observa que el ındice de los multiplicadores resulta mas
comparable pero manteniendo la misma relacion que para valores de n < 20.
Capıtulo 4. Resultados Experimentales 113
5 10 15 200
500
1000
1500
2000
2500
n
Per
form
ance
SMSMSRSMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.20: Indice de performance de los multiplicadores en Virtex II, 8 ≤ n ≤20.
20 22 24 26 28 30 320
50
100
150
200
250
300
350
400
450
500
n
Per
form
ance
SMSMSRSMB4 (3X)SMB4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 4.21: Indice de performance de los multiplicadores en Virtex II, 20 ≤ n ≤32.
Capıtulo 4. Resultados Experimentales 114
4.4. Multiplicacion en Punto Flotante
Los multiplicadores en punto flotante propuestos fueron ensayados experimen-
talmente a fin de verificar los resultados obtenidos teoricamente y de las estima-
ciones. Con este objeto, los multiplicadores se implementaron para tres series de
FPGA de Xilinx, Spartan, Virtex y Virtex II. Ambas variantes del multiplicador
se implementaron en Lenguaje de Descripcion de Hardware (VHDL) [28] [29] para
una longitud de exponente r = 8 y variando la longitud de palabra de la mantisa.
4.4.1. Consumo de recursos logicos
Implementacion de los multiplicadores en Spartan
El consumo de recursos logicos de los multiplicadores en punto flotante en
Spartan se muestran en la Tabla 4.12.
Tabla 4.12: Consumo de recursos logicos de los multiplicadores en punto flotanteen Spartan [CLBs].
n 9 11 13 15 17 19 21 23 25 27
SMSR 32 35 37 40 44 46 49 51 54 57SMSR +∞ 35 37 40 42 46 49 51 53 57 60
SMSC 45 50 56 61 70 75 80 85 92 97SMSC +∞ 51 56 64 71 80 86 93 100 108 113
Implementacion de los multiplicadores en Virtex
En la Tabla 4.13 se presenta el consumo de recursos logicos de los multiplica-
dores, en terminos de slices2, para una FPGA XCV300e-8 de la serie Virtex de
Xilinx.
2El contenido de un slice es similar al de un CLB de una Serie Spartan de Xilinx.
Capıtulo 4. Resultados Experimentales 115
Tabla 4.13: Consumo de recursos logicos de las variantes en Virtex [slices].n 9 11 13 15 17 19 21 23 25 27
SMSR 30 33 35 39 43 46 48 52 55 57SMSR +∞ 32 35 38 42 46 48 51 54 57 58
SMSC 46 51 57 63 71 77 83 89 93 97SMSC +∞ 51 56 64 71 80 86 93 100 108 113
Implementacion de los multiplicadores en Virtex II
En la Tabla 4.14 se presenta el consumo de recursos logicos de los multiplica-
dores para una FPGA XC2V250-5 de la serie Virtex de Xilinx.
Tabla 4.14: Consumo de recursos logicos de las variantes en Virtex II [slices].n 9 11 13 15 17 19 21 23 25 27
SMSR 32 35 37 41 45 47 50 53 55 58SMSR +∞ 35 38 40 44 48 50 53 57 59 61
SMSC 46 51 57 63 71 77 83 89 93 97SMSC +∞ 53 60 68 73 82 90 96 102 110 116
4.4.2. Comportamiento temporal
Implementacion de los multiplicadores en Spartan
En la Tabla 4.15 se presenta maxima velocidad de procesamiento que se pue-
de obtener con los multiplicadores, en terminos de Millones de operaciones por
segundo, para una FPGA de la serie Spartan de Xilinx.
Tabla 4.15: Comportamiento temporal de las variantes en Spartan [Mflop/s].n 9 11 13 15 17 19 21 23 25 27
SMSR 7.6 6.1 5.1 4.3 3.7 3.2 2.8 2.5 2.2 2.0SMSR +∞ 6.2 5.0 4.2 3.5 3.1 2.5 2.2 2.0 1.8 1.6
SMSC 10.3 8.3 7.1 6.0 5.3 4.7 4.2 3.8 3.4 3.1SMSC +∞ 10.2 8.4 7.1 6.1 5.3 4.8 4.2 3.7 3.4 3.1
Capıtulo 4. Resultados Experimentales 116
Implementacion de los multiplicadores en Virtex
En la Tabla 4.16 se presenta maxima velocidad de procesamiento que se pue-
de obtener con los multiplicadores, en terminos de Millones de operaciones por
segundo, para una FPGA XCV300e-8 de la serie Virtex de Xilinx.
Tabla 4.16: Comportamiento temporal de las variantes en Virtex [Mflop/s].n 9 11 13 15 17 19 21 23 25 27
SMSR 20.3 15.8 13.4 11.8 10.2 9.0 7.8 7.2 6.2 5.7SMSR +∞ 16.2 13.6 11.5 9.7 8.4 7.4 6.6 6.0 5.2 4.8
SMSC 27.0 22.6 19.0 16.2 14.4 12.9 11.7 10.5 9.5 8.8SMSC +∞ 26.9 21.5 17.7 15.9 13.8 12.3 11.3 10.3 9.2 8.4
Implementacion de los multiplicadores en Virtex II
En la Tabla 4.17 se presenta maxima velocidad de procesamiento que se pue-
de obtener con los multiplicadores, en terminos de Millones de operaciones por
segundo, para una FPGA XC2V250e-8 de la serie Virtex II de Xilinx.
Tabla 4.17: Comportamiento temporal de las variantes en Virtex II [Mflop/s].n 9 11 13 15 17 19 21 23 25 27
SMSR 25.6 20.3 17.2 15.2 13.3 11.4 10.0 9.1 8.3 7.2SMSR +∞ 20.9 17.1 14.0 11.7 11.1 9.4 8.5 7.5 6.9 6.2
SMSC 29.3 24.8 21.0 18.4 16.2 14.4 13.3 12.1 10.9 10.0SMSC +∞ 29.4 24.5 21.0 18.3 16.1 14.5 13.3 11.9 10.7 10.0
4.4.3. Performance
A fin de poder estimar los beneficios que se obtienen con cada variante a traves
de un unico indicador, se utiliza del ındice de performance de la Ec. (3.40).
En la Fig. 4.22 se muestra el ındice de performance para las variantes SMSR
y SMSC con redondeo a cero. Se puede observar que la variante SMSR presenta
Capıtulo 4. Resultados Experimentales 117
un ındice de hasta un 15 % superior a la variante SMSC. Esto se debe fundamen-
talmente a que el retardo de propagacion de la variante SMSR con redondeo a
cero es inferior al de la variante SMSC.
15 20 25 30 35 400
20
40
60
80
100
120
n
p
SMSCSMSR
Figura 4.22: Indice de performance de los multiplicadores con redondeo a cero enSpartan.
En la Fig. 4.23 se muestra el ındice de performance para las variantes SMSR
y SMSC con redondeo a +∞. Se puede observar que el ındice practicamente es
el mismo. Esto quiere decir que la variante SMSR es la optima para disenos con
fuertes restricciones en cuanto a consumo de recursos logicos y la variante SMSC
para restricciones en velocidad de procesamiento.
Las Figs. 4.24 y 4.25 se muestra el ındice de los multiplicadores para Virtex y
Virtex II respectivamente. Se puede observar que, si bien el ındice de la variante
SMSR para Virtex es practicamente igual al de la variante SMSC, en Virtex II
el SMSR logra un porcentaje mayor de desempeno. Esto es, debido a que en esta
ultima serie de FPGA se obtuvo una mejor velocidad de procesamiento por parte
de la variante SMSR.
Capıtulo 4. Resultados Experimentales 118
15 20 25 30 35 400
20
40
60
80
100
120
n
p
SMSCSMSR
Figura 4.23: Indice de performance de los multiplicadores con redondeo a +∞ enSpartan.
5 10 15 20 25 300
100
200
300
400
500
600
700
800
900
1000
n
Per
form
ance
inde
x
Experimental results SMSCExperimental results SM
Figura 4.24: Indice de performance de los multiplicadores con redondeo a +∞ enVirtex.
Capıtulo 4. Resultados Experimentales 119
5 10 15 20 25 300
200
400
600
800
1000
1200
n
Per
form
ance
inde
x
Experimental results SMSCExperimental results SM
Figura 4.25: Indice de performance de los multiplicadores con redondeo a +∞ enVirtex II.
4.5. Conclusiones
Se presentaron los resultados de implementacion de los multiplicadores secuen-
ciales. Estos resultados permiten validar las ecuaciones y conceptos presentados
en capıtulos previos, habilitando estas ecuaciones como una herramienta util para
la evaluacion de multiplicadores en FPGA.
A partir de los resultados de las comparaciones entre los multiplicadores en-
sayados, se concluye que el SM solo posee el mayor ındice de performance cuando
se lo implementa en la serie Spartan debido a que consume una cantidad inferior
de recursos relativo a la implementacion de los otras series. En estas ultimas,
la performance del SMSR resulta superior a la del SM segun lo estimado en el
capıtulo anterior. Estos resultados se extienden a las variantes de los multiplica-
dores basadas en uno u otro esquema.
La variante SMSC representa en general un buena eleccion cuando se requiere,
ademas de bajo consumo de recursos, una mejor velocidad de procesamiento. A
Capıtulo 4. Resultados Experimentales 120
pesar de que esta velocidad resulta inferior que la de la variante SMF, presenta
una notable reduccion en consumo de recursos a su favor. Ademas se observa que
los resultados obtenidos con ambos multiplicadores respecto a los de base 4, la
mejora es sustancial.
Finalmente, la extension de los multiplicadores a punto flotante demostro que
se pudo obtener un multiplicador de bajo consumo de recursos logicos y buen
desempeno en velocidad.
Capıtulo 5
Conclusiones
Las conclusiones de esta Tesis son las siguientes:
1. Se relevaron las arquitecturas de multiplicadores existentes en la literatura,
corroborandose el excesivo consumo de recursos logicos de los mismos.
2. Se propuso la utilizacion de la Multiplicacion Secuencial para reducir el
consumo de recursos. Se modelaron los multiplicadores secuenciales y se
concluyo que se debıa mejorar su desempeno en velocidad.
3. Se propusieron nuevas arquitecturas de multiplicadores secuenciales con el
objetivo de mejorar su desempeno en velocidad. Se modelaron las variantes
y se las comparo con los multiplicadores existentes.
4. Se validaron experimentalmente los modelos de los multiplicadores a traves
de la implementacion de los mismos en varias familias de FPGAs. Se obtu-
vieron mejoras importantes del desempeno de los mismos.
5. Se aplicaron las nuevas arquitecturas de Multiplicadores Secuenciales a la
multiplicacion en punto flotante. Se obtuvieron multiplicadores de punto
flotante de reducido consumo logico y buenas prestaciones de velocidad.
121
Capıtulo 5. Conclusiones 122
6. Se aplico la multiplicacion secuencial a un problema concreto de control de
movimiento. El sistema desarrollado mostro notables mejoras con respecto
al diseno convencional basado en DSPs.
Estas conclusiones se desarrollan con mas detalle a continuacion.
Arquitecturas existentes
Se analizaron y modelaron los multiplicadores paralelos Ripple Carry, Carry
Save y las variantes propuestas por Guild y McCanny-McWhinter. Adicionalmen-
te, se realizaron implementaciones en FPGA del multiplicador Ripple Carry y de
otro propuesto por Xilinx optimizado en consumo de recursos. Los resultados de
esta implementacion obtenidos se resumen en la Tabla 5.1.
Tabla 5.1: Implementacion de Multiplicadores Paralelos en FPGA.Spartan Virtex Virtex II
Bits Tipo CLB Mops Slices Mops Slices Mops8 MP 61 20.8 64 41.9 64 45.58 MX 52 17.5 36 76.3 36 62.6
16 MP 247 10.8 257 22.0 258 24.716 MX 213 11.2 140 59.0 141 47.232 MX 816 3.1 544 40.5 548 38.5
MP: Multiplicador ParaleloMX: Multiplicador propuesto por Xilinx
Se concluyo que, si bien los multiplicadores paralelos pueden ejecutar produc-
tos rapidamente, presentan un elevado consumo de recursos que ademas aumenta
cuadraticamente con la longitud de palabra de los operandos. Por ejemplo se pu-
do comprobar que, para 32 bits, no existen modelos de la serie Spartan, capaces
de soportar la cantidad de recursos necesarios. Por lo tanto, la aplicacion de estas
arquitecturas se limita a FPGAs de gran tamano.
Capıtulo 5. Conclusiones 123
Multiplicacion Secuencial
Se investigo el esquema de la Multiplicacion Secuencial, que consume una
cantidad inferior de recursos. En particular se modelaron y implementaron expe-
rimentalmente tres tipos: SM, SMB4(3X) y SMB4(-X). La Tabla 5.2 resume el
consumo de recursos y la velocidad de procesamiento de estas arquitecturas.
Tabla 5.2: Resultados experimentales de Multiplicadores SecuencialesSpartan Virtex Virtex II
Bits Tipo CLB Mops CLB Mops CLB Mops8 SM 19 10.0 19 23.9 19 30.98 SMB4(3X) 24 11.9 24 28.0 24 34.88 SMB4(-X) 28 10.5 28 22.9 28 32.1
16 SM 35 4.4 35 12.2 35 14.716 SMB4(3X) 45 5.8 45 15.1 45 18.416 SMB4(-X) 51 5.2 51 12.5 51 17.932 SM 65 1.6 65 5.2 65 6.132 SMB4(3X) 86 2.5 86 6.7 86 8.632 SMB4(-X) 98 2.3 98 5.9 98 8.5
Se concluyo que, si bien el consumo de recursos logicos es sustancialmente me-
nor, la velocidad de procesamiento de estas arquitecturas se encuentra por debajo
del 50 % de la velocidad de los MPs ensayados. Por lo tanto, se concluyo que es
necesario mejorar el desempeno en velocidad de los multiplicadores secuenciales.
Arquitecturas propuestas de Multiplicadores Secuenciales
Se realizaron propuestas para la optimizacion en velocidad de la Multiplica-
cion Secuencial. Para cada uno de los multiplicadores se describio su estrategia
y se lo modelo para poder comparar su desempeno. A partir del modelo de ca-
da multiplicador, se expreso cada uno en Lenguaje de Descripcion de Hardware
(HDL) [28] [29] y se realizo la correspondiente implementacion experimental. La
Tabla 5.3 resume el consumo de recursos y la velocidad de procesamiento obtenida
para estos multiplicadores.
Capıtulo 5. Conclusiones 124
Tabla 5.3: Resultados experimentales de los Multiplicadores Secuenciales pro-puestos.
Spartan Virtex Virtex IIBits Tipo CLB Mops CLB Mops CLB Mops
8 SMSR 19 11.4 19 27.5 21 36.18 SMSC(SM) 24 12.7 30 31.0 30 35.78 SMSC(SMSR) 28 16.1 28 38.2 28 45.58 SMF(SM) 32 14.6 37 35.5 36 44.38 SMF(SMSR) 35 18.1 35 42.1 35 53.8
16 SMSR 35 4.7 34 12.5 38 15.716 SMSC(SM) 45 6.1 55 15.9 55 18.016 SMSC(SMSR) 51 7.0 50 17.9 51 20.416 SMF(SM) 59 7.1 67 19.9 67 23.816 SMF(SMSR) 64 8.2 64 21.3 62 27.832 SMSR 65 1.7 64 5.4 71 6.532 SMSC(SM) 86 2.6 104 7.6 104 8.532 SMSC(SMSR) 98 2.7 96 8.1 96 9.132 SMF(SM) 111 2.7 127 9.4 128 10.932 SMF(SMSR) 122 3.0 122 9.6 122 11.6
Se concluye que, con las variantes propuestas, se pudo incrementar el desem-
peno en velocidad sin un sacrificio sustancial de recursos logicos. En particular,
con la variante SMF(SMSR) se logro un incremento de velocidad estimado entre
un 60 % (8 bits) y un 100 % (32 bits) con respecto al SM. Con esta variante se
estarıa alcanzando la velocidad de procesamiento del MP para la serie Spartan
con un consumo hasta 8 veces menor.
Nuevas Arquitecturas de Multiplicacion Secuencial en Punto Flotante
Los resultados obtenidos con las multiplicadores propuestos se aplicaron a
la multiplicacion en punto flotante. Se seleccionaron dos de los multiplicadores
desarrollados y se realizo el respectivo modelo en punto flotante. Las ecuaciones
se validaron a traves de la implementacion de los mismos en las familias de FPGA
antes mencionadas.
Capıtulo 5. Conclusiones 125
La Tabla 5.4 muestra el consumo de recursos logicos de los multiplicadores
SMSR y SMSC aplicados a punto flotante. A su vez, se muestran los ensayos
realizados con redondeo a cero y redondeo a +∞ (ver Seccion 2.2.2).
Tabla 5.4: Resultados experimentales de Multiplicadores en Punto FlotanteSpartan Virtex Virtex II
Bits Tipo CLB Mflops CLB Mflops CLB Mflops18 SMSR trunc 32 7.6 30 20.3 32 25.618 SMSR +∞ 35 6.2 32 16.2 35 20.918 SMSC trunc 45 10.3 46 27.0 46 29.318 SMSC +∞ 51 10.2 51 26.9 53 29.432 SMSR trunc 51 2.5 52 7.2 53 9.132 SMSR +∞ 53 2.0 54 6.0 57 7.532 SMSC trunc 85 3.8 89 10.5 89 12.132 SMSC +∞ 100 3.7 100 10.3 102 11.9
Se concluye que, para multiplicadores de 18 bits, se ha obtenido un desempeno
hasta 8 veces superior a la de la arquitectura propuesta por Shirazi et al [9].
Comparando los resultados con los reportados por Aty et al [25], el desempeno
obtenido es hasta 6 veces mejor para la serie Spartan, y hasta 5 veces para la serie
Virtex II en 18 bits. Para el caso de 32 bits, se concluye que los multiplicadores
propuestos obtienen un desempeno al menos 3 veces superior a los reportados por
estos autores1.
Por otra parte, por ejemplo el SMSC propuesto en esta tesis consume 8 ve-
ces menos que el propuesto por Jaenicke and Luk [23], con una velocidad tan
solo 2,5 veces menor. Es decir, que el desempeno logrado con los multiplicadores
propuestos es al menos 3 veces mayor.
1Estos autores hacen uso del multiplicador embebido de 18 bits de la serie Virtex II
Capıtulo 5. Conclusiones 126
Multiplicacion Secuencial aplicada al Control de Movimiento
El controlador desarrollado permitio el control de posicion de maquinas incre-
mentales a alta velocidad en paso completo o en modo micropaso2. Se utilizo el
multiplicador SMSR para el modo paso y el SMSC para el modo micropaso. Con
el sistema desarrollado, se alcanzaron velocidades hasta 5 veces mayores que las
obtenidas mediante DSPs en modo paso y hasta 12 veces en modo micropaso.
Publicaciones
”Multiplicadores secuenciales en FPGA: evaluacion y comparacion de parame-
tros”, 8th Argentine Symposium on Computing Technology (36 JAIIO)
ISBN 1850-2776. Mar del Plata 2007.
”Estudio comparativo de multiplicadores secuenciales implementados en
FPGA”, XII Reunion de Trabajo en Procesamiento de la Informacion y
Control. Mar del Plata 2007.
”Floating Point Multipliers with Reduced FPGA Area”, II Southern Con-
ference on Programmable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.
”Performance evaluation of Floating Point Multipliers”, XX Congreso Ar-
gentino de Control Automatico. ISBN 978-950-99994-4-2. Mar del Plata
2006.
”Novel FPGA based Floating Point Multiplier: Consecutive-Sums Sequen-
tial Multiplier”, 8th Argentine Symposium on Computing Technology (36
JAIIO) ISBN 1850-2776. Mar del Plata 2007.
2El modo micropaso consiste en el accionamiento del movimiento del motor incremental enfracciones de un paso.
Capıtulo 5. Conclusiones 127
”Novel stepper motor controler based on FPGA hardware implementation
”, IEEE/ASME Transactions on Mechatronics, Nro. 1 Vol 8 ISSN 1083-4435
March 2003, pg 120-124.
”FPGA based stepper motor controller”, II Southern Conference on Pro-
grammable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.
5.0.1. Trabajos futuros
La implementacion hardware de algoritmos de control puede resultar de suma
utilidad en el campo de la Electronica de Potencia. Los convertidores de potencia
presentan permanentemente un compromiso entre la velocidad del sistema global
y la complejidad del control. La evolucion de los dispositivos digitales de las
ultimas decadas permitio el avance en el control de estos sistemas, sin embargo
los requerimientos actuales tambien son mayores.
En el campo de logica programable, la capacidad de paralelizacion de tareas
permitirıa aumentar la eficiencia del control de los convertidores, ya sea aumen-
tando la velocidad de procesamiento del sistema utilizando algoritmos de control
y/o modulacion mas sofisticados que mejorarıa la performance del convertidor.
Adicionalmente, el sistema implementado en FPGA permitirıa la generacion de
seguridad y proteccion en la conmutacion de las llaves de los convertidores en
forma independiente de la ejecucion del algoritmo.
En el marco de la investigacion realizada hasta el momento, se propone ex-
pandir los conocimientos adquiridos para el desarrollo e implementacion de los
algoritmos de control destinados a Convertidores de Potencia. Entre las herra-
mientas necesarias, se encuentra la necesidad de desarrollar sumadores en punto
flotante que posean las mismas caracterısticas que los multiplicadores propuestos
Capıtulo 5. Conclusiones 128
en el Capıtulo 3. Los sumadores en punto flotante consumen considerables canti-
dades de recursos logicos, comparables a la de los multiplicadores. Por otro lado,
los algoritmos de control de los convertidores de potencia requieren usualmente
el calculo de funciones trigonometricas. Se pretende desarrollar avances en este
campo mediante la aplicacion de los conocimientos en la ejecucion de algoritmos,
entre los que se encuentra el de CORDIC [30] [31].
Bibliografıa
[1] E. Boemo, E. Juarez, and J. Meneses, “Taxonomıa de multiplicadores,” Proc.VIII DCIS Conference. Univ. of Malaga., pp. 185–190, 1993.
[2] D. Teixeira, A. Susim, and L. Carro, “Comparacion de multiplicadores enfpga,” V Workshop Iberchip, vol. 1, pp. 182–187, Enero 1999.
[3] .Nibouche, A. Bouridarie, and M.Nibouche, “New architectures for serial-serial multiplication,” IEEE, pp. 705–708, 2001.
[4] A. Aggoun, A. Ashur, and M. K. Ibrahimi, “Area-time efticient serial-serialmultipliers,” in IEEE International Symposium on Circuits and Systems,2000.
[5] A. Aggoun, A. Farwan, M. Ibrahim, and A. Ashur, “Radix-2n serialserialmultipliers,” IEE Proc.-Circuits Devices Syst., vol. 151 No. 6, pp. 503–509,2004.
[6] A. Bouridane, M.Nibouche, D. Crookes, and B. Albesher, “A low latency bi-directional serial-parallel multiplier architecture,” IEEE ISCAS 2000, vol. 5,pp. 593–596, May 2000.
[7] C. Wallace, “A suggestion for a fast multiplier,” IEEE Trans. on ElectronicComuters, pp. 14–17, 1964.
[8] L. Dadda, “Some schemes for parallel multipliers,” Alta Frequenza, vol. XX-XIV, N 5, 1965.
[9] N. Shirazi, A. Walters, and P. Athanas, “Quantitative analisis of floatingpoint arithmetic on FPGA based custom computing machines,” Proceedings.IEEE Symposium on FPGAs for Custom Computing Machines, pp. 155–162,1995.
[10] I. W. B. Ligon, S. McMillan, G. Monn, K. Schoonover, F. Stivers, and K. D.Underwood, “A re-evaluation of the practicality of floating-point operationson FPGAs,” Proceedings of IEEE Symposium on FPGAs for Custom Com-puting Machines, pp. 206–215, 1998.
129
Bibliografıa 130
[11] J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Ap-proach. San Francisco, California ISBN: 1-55860-329-8: Morgan KaufmannPublishers, Inc., 1996.
[12] J. P. Hayes, Introduccion al Diseno Logico Digital. Wilmington, Delaware,E.U.A: Addison-Wesley Iberoamericana, 1996.
[13] G. E. Ordoez-Fernandez, L. Lpez-Lpez, and J. Velazco-Medina, “Diseo demultiplicadores paralelos de 16 bits en fpgas,” in Proceedings X Taller Iber-chip, 2004.
[14] B. Parhami, Computer Arithmetic: Algorithms and Hardware Design. NewYork, Oxford: Oxford University Press, 2000.
[15] E. Jamro and K. Wiatr, “Constant coefficient convolution implemented infpgas,” in Digital System Design, 2002. Proceedings. Euromicro Symposiumon, 4-6 Sept. 2002, pp. 291–298.
[16] J. B. Evans, C.-J. Chou, and S. Mohanakrishnan, “FPGA implementationof digital filters,” Proc. ICSPAT’93, pp. 1–9, 1993.
[17] R. J. Landry, V. Calmettes, and E. Robin, “High speed IIR filter for xi-linx FPGA,” Proceedings of the 1998 Midwest Symposium on Systems andCircuits, 1998.
[18] I. S. 754, IEEE standard for binary floating-point arithmetic. New York:The Institute of Electrical and Electronics Engineers Inc., 1985.
[19] H. Guild, “Fully iterative fast array for binary multiplication and addition,”Electronic Letters, vol. 5, p. 263, 1969.
[20] J. McCanny and J. McWhirter, “Completely iterative, pipelined multiplierarray suitable for VLSI,” IEE Proceedings, Part G - Electronic Circuits andSystems, vol. 129, pt. G, no. 2, Apr. 1982, p. 40-46., vol. 129, pp. 40–46,Apr. 1982.
[21] “Core generator,” http://www.xilinx.com/products/logicore/coregen/index.htm,2000.
[22] L. Louca, T. A. Cook, and W. H. Johnson, “Implementation of IEEE singleprecision floating point addition and multiplication on FPGAs,” ProceedingsIEEE Symposium on FPGAs for Custom Computing Machines, pp. 107–116,1996.
[23] A. Jaenicke and W. Luk, “Parameterised floating-point arithmetic on fpgas,”in Acoustics, Speech, and Signal Processing, 2001. Proceedings. (ICASSP’01). 2001 IEEE International Conference on, vol. 2, 7-11 May 2001, pp.897–900vol.2.
Bibliografıa 131
[24] M. A. Jimnez, N. G. Santiago, and D. T. Rover, “Development of a scalableFPGA-based floating point multiplier,” Proceedings of the Fifth CanadianWorkshop on Field-Programmable Devices, pp. pp. 145 – 150, 1998.
[25] G. Aty, A. Hussein, I. Ashour, and M. Mones, “High-speed, area-efficientfpga-based floating-point multiplier,” in Microelectronics, 2003. ICM 2003.Proceedings of the 15th International Conference on, 9-11 Dec. 2003, pp.274–277.
[26] B.New, “Estimating the performance of XC4000E adders and counters,”Xilinx, Tech. Rep. Xapp 018, 1996.
[27] The Programable Logic Data Book 1999. Xilinx, 1999.
[28] S. Ghosh, Hardware Description Languages Concepts and Principles. 445Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331: IEEE Press, 1999.
[29] E. Villar, L. Teres, S. Olcoz, and Y. Torroja, VHDL Lenguaje Estandar deDiseno Electronico. Madrid: McGraw Hill, 1997.
[30] J. E. Volder, “The CORDIC Trigonometric Computing Technique,” IRETransactions on Electronic Computers, vol. EC-8, pp. 330–334, 1959.
[31] M. Kharrat, M. Loulou, and N. M. andL. Kamoun, “A new method to im-plement cordic algorithm,” in The 8th IEEE International Conference onElectronics, Circuits and Systems, vol. 2, 2001, pp. 715–718.
[32] [Online]. Available: www.cypress.com
[33] [Online]. Available: www.actel.com
[34] [Online]. Available: www.quicklogic.com
[35] [Online]. Available: www.xilinx.com
[36] [Online]. Available: www.altera.com
[37] [Online]. Available: http://www.alcatel-lucent.com/wps/portal
[38] [Online]. Available: www.atmel.com
[39] R. Bossart, H. Braun, F. Chautard, M. Comunian, J. Delahaye,J.C.Godot, I. Kamber, J. Madsen, L. Rinolfi, S. Schreiber, G. Suberlucq,I. Wilson, and W. Wuensch, “Performances obtained with the cern linearcollider test facility,” in Proc. European Particle Accelerator Conference-EPAC’94, London, UK, July 1994, pp. 680–682. [Online]. Available:http://accelconf.web.cern.ch/AccelConf/
Bibliografıa 132
[40] W. Coosemans and H. Mainaud, “Pre-alignment of clic using the double-wiremethod,” European Organization of Nuclear Research (CERN), Tech. Rep.343, July 1997, CLIC-NOTE 343.
[41] P. Poirier, “Lalignement dynamique submicrometrique de sections accele-ratrices,” Memoire de soutenance du Diplome de Recherche Specialisee enSciences, Universite Louis Pasteur de Strasbourg, September 1991.
[42] D. Carrica, R. Pittin, and M. Benedetti, “Control subsystem hardware of thehigh performance electronics for alignment regulation on the CLIC 30GHzmodules,” CERN Publication (European Laboratory for Particle Physics),Ginebra, Suiza., vol. CTF 99-09, March 1999.
[43] J. Crook, “Low cost microprocessor based speed control,” in Proceedingsof the Thirteeth Annual Symposium, Incremental Motion Control Systemand Devices, B. C. Kuo, Ed., Incremental Motion Control System Society.Champaign, Illinois: Board of Trustees of the University of Illinois, May 1984,pp. 25–30.
[44] Z. Kang and S. Qu, “A new methodology for using single microprocessor tocontrol DC stepper motors,” in Proceedings of the IEEE International Confe-rence on Industrial Technology, I. of Electrical & Electronics Engineers Staff,Ed. Piscataway, NJ, USA: IEEE Press, Dec. 1994, pp. 543–545.
[45] D. O. Carrica and S. A. Gonzalez, “Algoritmo eficiente para la generacionde perfiles de velocidad en el accionamiento simultaneo de multiples motorespaso a paso,” in ANALES VIII Reunion de Trabajo en Procesamiento de laInformacion y Control, RPIC’99, vol. 1. Mar del Plata, Argentina: Facultadde Ingenieria, U.N.M.d.P., Sept. 23–25, 1999, pp. 118–122.
[46] P. Acarnley, Stepping Motors: A Guide to Modern Theory and Practice,4th ed., ser. IEE Control Engineering Series, no. 63. London, U.K.: Pe-ter Peregrinus Ltd, Dec. 2002.
[47] T. Kenjo and A. Sugawara, Stepping Motors and their Microprocessor Con-trols, 2nd ed., ser. Monographs in Electrical and Electronic Engineering.Oxford, U.K.: Oxford University Press, 1995.
[48] B. Robert, F. Alin, and C. Goeldel, “Aperiodic and chaotic dynamics in hy-brid step motor-new experimental results,” in Proceedings of the IEEE In-ternational Symposium on Industrial Electronics-ISIE’2001, 2001, pp. 2136–2141.
[49] M.-C. Pera, B. Robert, and C. Goeldel, “Nonlinear dynamics in electrome-chanical systems-application to a hybrid stepping motor,” Electromotion,vol. 7, no. 1, pp. 31–42, Jan./Mar. 2000.
Bibliografıa 133
[50] N. Acosta, C. Collado, and K. Larsen, “Metricas para la generacion de mul-tiplicadores paralelos en FPGA.” Proc. of VII Workshop Iberchip., 2001.
[51] N. Acosta, E. Todorovich, C. Collado, and K. Larsen, “Multiplicadores pa-ralelos: Estado del arte y analisis de su materializacion en FPGA.” Proc. ofVI Workshop Iberchip., pp. 158–168, 2000.
[52] A. Booth, “A signed binary multiplication technique,” Quartelly J. of Mech.Appl. Math., vol. 4 Part 2, 1951.
[53] S. Brown, “FPGA architectural research: A survey,” Design & Test of Com-puters, IEEE, vol. 13, pp. 9–15, 1996.
[54] S. Brown and J. Rose, “FPGA and CPLD architectures: A tutorial,” Design& Test of Computers, IEEE, vol. 13, pp. 42–57, 1996.
[55] D. Carrica, R. Pittin, W. Coosemans, and M. Benedetti, “Active alignmentelectronic system for CLIC 30 GHz modules in CTF2,” CERN Publication,CLIC Nro. 361, November 1998.
[56] T.-S. Chang and C.-W. Jen, “Hardware-efficient implementations for discre-te function transforms using LUT-based FPGAs,” Computers and DigitalDesigns - IEE Proceedings, vol. 146, Issue 6, p. 309, 1999.
[57] C. Dick and F. Harris, “FPGA signal processing using sigma-delta modula-tion,” F. IEEE Signal Processing Magazine, vol. Volume: 17 Issue: 1, pp. 20–35, Jan. 2000.
[58] F. Elguibaly, “A fast parallel multiplier-accumulator using the modifiedbooth algorithm,” IEEE Transactions on Circuits and Systems - II: Analogand Digital Signal Processing, vol. 47, no. 9, pp. 902–908, September 2000.
[59] M. Funes, D. Carrica, and M. Benedetti, “Floating point multipliers withreduced fpga area,” vol. 1, 2006, pp. 59–66.
[60] ——, “Multiplicadores de punto flotante para estructuras FPGA,” vol. 1,2002, p. 40.
[61] ——, “Multiplicadores secuenciales para estructuras FPGA,” vol. Vol. II,2001, pp. 646–651.
[62] A. A. Gray and S. D. Hoy, “Parallel adaptive equalizer employing sub-convolution: VLSI architecture realized in a field programmable gate array,”2003 MAPLD International Conference, 2003.
[63] R. W. Hix and R. L. Haggard, “Comparative design methodologies for FPGAbased computer arithmetic,” Proceedings of the Twenty-Ninth SoutheasternSymposium on System Theory, pp. 374–378, 1997.
Bibliografıa 134
[64] B. Lee and N. Burgess, “Parameterisable floating-point operations on FP-GA,” Conference Record of the Thirty-Sixth Asilomar Conference on Signals,Systems and Computers, pp. 1064–1068, 2002.
[65] L. Mintzer, “Large FFT’s in a single FPGA,” ICSPAT, 1996.
[66] K. Rajagopalan and P. Sutton, “A flexible multiplication unit for an FP-GA logic block,” The 2001 IEEE International Symposium on Circuits andSystems, 2001. ISCAS 2001, vol. vol. 4, pp. 546–549, 2001.
[67] C. Souani, M. Abid, and R. Tourki, “An FPGA implementation of the floa-ting point addition,” Industrial Electronics Society IECON ’98. Proceedingsof the 24th Annual Conference of the IEEE, vol. 3, pp. 1644–1648, 1998.
[68] P. F. Stelling, C. U. Martel, V. G. Oklobdzija, and R. Ravi, “Optimal circuitsfor parallel multipliers,” IEEE Transactions on Computers, vol. 47, no. 3,pp. 273–285, March 1998.
[69] P. F. Stelling and V. G. Oklobdzija, “Optimal designs for multipliers andmultiply-accumulators,” Proceedings of the 15th IMACS World Congress onScientific Computation, Modeling, and Applied Mathematics, vol. 4, pp. 739–744, August 1997.
[70] M. Thornton, J. Gaiche, and J. Lemieux, “Tradeoff analysis of integer mul-tiplier circuits implemented in FPGAs,” Communications, Computers andSignal Processing IEEE Pacific RIM Conference, pp. 301–304, 1999.
[71] E. Todorovich, G. Sutter, N. Acosta, E. Boemo, and S. Lopez-Buedo, “Re-lacion entre velocidad y consumo en FPGAs,” VII Workshop Iberchip, pp.1–6 CD Browser, 2001.
[72] B. Von Herzen, “Signal processing at 250mhz using high-performanceFPGA’s,” IEEE Transactions on Very Large Scale Integration(VLSI) Systems,, vol. 6, Issue 2, pp. 238–246, 1998.
[73] The Programable Logic Data Book. Xilinx, 2000.
[74] R. Zimmermann, Binary Adder Architectures for Cell-Based VLSI and theirSynthesis. Swiss Federal Institute of Technology, 1997.
[75] M. Lu, Arithmetic and Logic in Computer Systems. Wiley-Interscience,2004.
[76] U. Meyer-Baese, Digital Signal Processing with Field Programmable GateArrays. Springer-Verlag, 2001.
[77] A. Gaffar, W. Luk, P. Cheung, and N. Shirazi, “Customising floating-pointdesigns,” in Symposium on Field-Programmable Custom Computing Machi-nes. IEEE, 2002, pp. 315 – 317.
Bibliografıa 135
[78] J. Knopman, E. Fernandes, and A. Mesquita, “Implementation of hardwarestructures through configurable logic,” in EUROMICRO 94. System Archi-tecture and Integration. Proceedings of the 20th EUROMICRO Conference.,5-8 Sept. 1994, pp. 125–130.
[79] M. Louie and M. Ercegovac, “Multiplication and inner product with fieldprogrammable gate arrays,” in VLSI Signal Processing, VII, 1994., [Works-hop on], 26-28 Oct. 1994, pp. 246–255.
[80] R. Lysecky and F. Vahid, “A configurable logic architecture for dynamichardware/software partitioning,” in Design, Automation and Test in EuropeConference and Exhibition, 2004. Proceedings, vol. 1, 16-20 Feb. 2004, pp.480–485Vol.1.
[81] T. Miyamori and U. Olukotun, “A quantitative analysis of reconfigurablecoprocessors for multimedia applications,” in FPGAs for Custom ComputingMachines, 1998. Proceedings. IEEE Symposium on, 15-17 April 1998, pp. 2–11.
[82] T.Noll, “Carry-save arithmetic for high-speed digital signal processing,” inCircuits and Systems, 1990., IEEE International Symposium on, 1-3 May1990, pp. 982–986vol.2.
[83] S. Shah, A. Al-Khalili, and D. Al-Khalili, “Comparison of 32-bit multipliersfor various performance measures,” in Microelectronics, 2000. ICM 2000.Proceedings of the 12th International Conference on, 31 Oct.-2 Nov. 2000,pp. 75–80.
[84] N. Vassiliadis, S.Nikolaidis, S. Siskos, and D. Soudris, “The effect of theinterconnection architecture on the fpga performance and energy consum-ption,” in Electrotechnical Conference, 2004. MELECON 2004. Proceedingsof the 12th IEEE Mediterranean, vol. 1, 12-15 May 2004, pp. 213–216Vol.1.
[85] J. S. Walther, “A Unified Algorithm for Elementary Functions,” in Procee-dings of the Spring Joint Computer Conference, 1971.
[86] X. Wang and S. Ziavras, “A configurable multiprocessor and dynamic loadbalancing for parallel lu factorization,” in Parallel and Distributed ProcessingSymposium, 2004. Proceedings. 18th International, 26-30 April 2004, p. 234.
[87] L. Wayne and J. Allan, “Parameterised floating-point arithmetics on FP-GAs,” in International Conference on Speech, and Signal Processing, Vol.IEEE, 2001, pp. 897–900.
[88] W. W. Yu and S. Xing, “Fixed-point multiplier evaluation and design withfpga,” in Proc. SPIE Vol. 3844, p. 153-161, Reconfigurable Technology: FP-GAs for Computing and Applications, Aug. 1999, pp. 153–161.
Apendices
136
Apendice A
Dispositivos Logicos
Programables
A.1. Introduccion
Desde finales de la decada de los ’60, los equipos electronicos digitales se
han construido utilizando circuitos integrados (CI) que realizan funciones logicas
basicas, realizados en pequena o mediana escala de integracion. A medida que los
sistemas se volvieron mas complejos, exigiendo un numero mas elevado de fun-
ciones logicas, se genero la necesidad de utilizar circuitos disenados a medida que
solo sirven para una aplicacion. Estos circuitos especıficos, o ASIC (Application
Specific Integrated Circuit), se producen con las especificaciones proporcionadas
por el usuario.
Los equipos realizados con ASICs ocupan menos espacio, son mas fiables,
consumen menos energıa y resultan mas baratos que los equipos equivalentes
realizados con CI de funcion logica basica cuando se fabrican en grandes series.
Otra de las ventajas que tienen las ASICs radica en que el diseno es muy difıcil
de copiar protegiendo la propiedad intelectual. Sin embargo poseen un alto costo
137
Apendice A. Dispositivos Logicos Programables 138
de desarrollo y su empleo solo se justifica para volumenes de produccion muy
elevados. El tiempo necesario para el desarrollo y la construccion de una ASIC es
considerable ya que puede oscilar de unos meses a unos anos.
A.2. PLD
Un dispositivo que permitio reducir algunos costos de diseno surgio con la
generacion del PLD (Programmable Logic Device). Un PLD es un dispositivo
cuyas caracterısticas pueden ser modificadas y almacenadas mediante programa-
cion. La sıntesis de estos dispositivos esta fundamentada en el hecho que una
funcion booleana cualquiera puede ser expresada como una suma de productos.
El dispositivo programable mas simple es una PAL (Programmable Array
Logic). El circuito interno de una PAL consiste en un arreglo, o matriz, de com-
puertas AND y un arreglo de compuertas OR. El arreglo AND es programable
mientras que el OR generalmente es fijo. Mediante una matriz de conexiones se
seleccionan las entradas que seran conectadas al arreglo AND, cuyas salidas son
conectadas al arreglo OR y de esta manera se obtiene una funcion logica en forma
de suma de productos.
La matriz de conexiones de un PLD es una red de conductores distribuidos en
filas y columnas con un fusible en cada punto de interseccion. Con estos recursos
se implementan las funciones logicas deseadas mediante un software especial y
un programador. La sıntesis de las ecuaciones logicas se realiza mediante el que-
mado del fusible en cada punto de interseccion de los pines de entrada con las
compuertas.
Posteriormente, el fusible se reemplazo por una celda CMOS electricamen-
te borrable (EECMOS) creandose ası una Matriz Generica Programable (GAL,
Generic Array Logic). Un GAL en su forma basica es un PLD con una matriz
Apendice A. Dispositivos Logicos Programables 139
AND reprogramable, una matriz OR fija y una logica de salida programable me-
diante una macrocelda. Esta estructura permite implementar cualquier funcion
logica como suma de productos con un numero de terminos definido. Mediante
la programacion se activa o desactiva cada celda EECMOS y se puede aplicar
cualquier combinacion de variables de entrada, o sus complementos, a una com-
puerta AND para generar cualquier operacion producto que se desee. La celda
activada conecta su correspondiente interseccion de fila y columna, y una celda
desactivada desconecta la interseccion. Las celdas se pueden borrar y reprogramar
electricamente.
A.3. CPLD
Un CPLD (Complex Programmable Logic Device) extiende el concepto de
un PLD a un mayor nivel de integracion ya que permite implementar sistemas
con un mejor desempeno porque utilizan menor espacio y reducen costos. Un
CPLD esta formado con multiples bloques logicos, cada uno similar a un PLD.
Estos bloques logicos se comunican entre sı utilizando una matriz programable
de interconexiones (PIM). Esta matriz permite unir los pines de entrada/salida
a las entradas del bloque logico, o las salidas del bloque logico a las entradas de
otro bloque logico o inclusive a las entradas del mismo (Fig. A.1).
La mayorıa de los CPLDs usan una de dos configuraciones para esta matriz:
interconexion mediante arreglo de celdas EECMOS o interconexion mediante mul-
tiplexores. La primera se basa en una matriz de filas y columnas con una celda
programable de conexion en cada interseccion. Al igual que en el GAL esta celda
puede ser activada para conectar/desconectar la correspondiente fila y columna.
Esta configuracion permite una total interconexion entre las entradas y salidas
del dispositivo o bloques logicos.
Apendice A. Dispositivos Logicos Programables 140
BloquesI/O
36
I/O/GTS
I/O/GSR
I/O/GCK
I/O
I/O
I/O
I/O
2 or 4
1
I/O
I/O
I/O
I/O
3
Bloque deFunciones 1
Macroceldas1 to 18
36
36
18
18
18
18
36
Matr
izP
rogra
mable
de
Inte
rconexio
nes
Bloque deFunciones 2
Macroceldas1 to 18
Bloque deFunciones 3
Macroceldas1 to 18
Bloque deFunciones N
Macroceldas1 to 18
Figura A.1: Diagrama en bloques de un CPLD
En la interconexion mediante multiplexores, existe un multiplexor por cada
entrada al bloque logico. Las vıas de interconexion programables son conectadas
a las entradas de un numero de multiplexores por cada bloque logico. Las lıneas
de seleccion de estos multiplexores son programadas para permitir que sea selec-
cionada unicamente una vıa de la matriz de interconexion por cada multiplexor la
cual se propagara a hacia el bloque logico. Cabe mencionar que no todas las vıas
son conectadas a las entradas de cada multiplexor. La capacidad de interconexion
se incrementa usando multiplexores de mayor tamano, permitiendo que cualquier
combinacion de senales de la matriz de interconexion pueda ser interconectada
con cualquier bloque logico.
En ambos casos, la capacidad de interconexion provoca que disminuya el
desempeno del dispositivo debido al aumento de consumo de energıa y el tamano
del componente.
Apendice A. Dispositivos Logicos Programables 141
A.4. FPGA
Los Arreglos Logicos Programables (ALPs) o Field Programmable Gate Arrays
(FPGAs) surgieron en los ’80, como solucion a las excesivas demoras del desarro-
llo convencional de circuitos integrados digitales. Ademas, esta tecnologıa consti-
tuyo una alternativa a la costosa implementacion de circuitos integrados especıfi-
cos (ASICs). A pesar de estas importantes ventajas la utilizacion extensiva de los
FPGAs comenzo recien en la decada de los ’90.
La arquitectura de una FPGA consiste en arreglos de varias celdas logicas
las cuales se comunican unas con otras mediante canales de conexion verticales y
horizontales como se muestra en la Fig. A.2.
CL B CL B CL B CL B
CL B CL B CL B CL B
CL B CL B CL B CL B
CL B CL B CL B CL B
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
Figura A.2: Distribucion de bloques de una FPGA de Xilinx
La estructura de las celdas logicas y las formas en que estas pueden ser interco-
nectadas, tanto salidas como entradas de la celda, varıan de acuerdo al fabricante.
En general una celda logica tiene menos funcionalidad que la combinacion de su-
mas de productos y macroceldas de un CPLD.
La estructura de las celdas se ve fuertemente influida por la tecnologıa utili-
zada para fabricar la FPGA. Una FPGA que tiene una gran cantidad de canales
Apendice A. Dispositivos Logicos Programables 142
de interconexion tiende a tener pequenas celdas logicas con muchas entradas y
salidas en comparacion con el numero de compuertas que tiene la celda. Sin em-
bargo, una FPGA que tiene una estructura pequena en canales de interconexion
tiende a tener celdas logicas con pocas entradas y salidas en comparacion con el
numero de compuertas que hay en la celda.
La tecnologıa de interconexion se puede clasificar en dos tipos, antifusibles
o RAM estatica (SRAM). Las FPGAs con gran cantidad de canales de interco-
nexion utilizan una tecnologıa de antifusibles que generan una conexion cuando
son programados, no permitiendo la reutilizacion de la FPGA. La tecnologıa de
antifusibles es utilizada por empresas tales como Cypress [32], Actel [33] y Qui-
cklogic [34].
Por otro lado, para FPGAs con pocos canales se realiza la interconexion con
tecnologıa SRAM. La primera FPGA fue introducida por Xilinx [35] en el ano
1985 y era basada en RAM estatica. Esta FPGA cada vez que se aplica la ten-
sion de alimentacion se re-programa con la informacion que lee desde una PROM
(Programmable Read Only Memory) de configuracion externa. Una FPGA basa-
da en SRAM admite un numero ilimitado de re-programaciones sin necesidad de
borrados previos. En la Fig. A.3 se puede observar la matriz de interconexion de
una FPGA de Xilinx. En detalle se puede observar el conjunto de los 6 transis-
tores de paso que permiten la interconexion de las celdas. Una vez programada
la FPGA, una memoria SRAM mantiene el estado de conexion o desconexion de
cada uno de estos transistores.
A medida que se realiza la interconexion de las lıneas, comunmente denomi-
nadas rutas, se van adicionando retardos en la trayectoria recorrida. Este efecto
debe ser tomado en cuenta en las herramientas de programacion para diseno y
ajuste de las FPGA, de manera que el software sea capaz de establecer las co-
nexiones mas cortas posibles y luego realizar el trazado de esas conexiones, para
Apendice A. Dispositivos Logicos Programables 143
PSM
CLB CLB
PSM PSM
PSM PSM PSM
8 Simples
2 Dobles
3 Longs
3 Largas
2 Dobles
2 Dobles3 Largas3 Largas2 Dobles 8 Simples
Transistores de paso
Figura A.3: Matriz de interconexion de una FPGA de Xilinx
ası optimizar el rendimiento del dispositivo.
Este mismo tipo de tecnologıa es ademas utilizado por Altera [36], Lucent
Technologies [37] y Atmel [38] entre otros.
A.4.1. Celdas Logicas
Otra consecuencia de los recursos de interconexion se presenta con el tamano
de las celdas. Si las celdas logicas son demasiado pequenas sucede que se debe
utilizar un gran numero de estas en cascada para poder implementar funciones
logicas grandes. Estas celdas en general resuelven funciones elementales de dos o
tres variables (denominadas de grano fino) y presentan como desventaja que cada
celda logica en cascada agrega un tiempo de retardo en la funcion implementada.
A medida que el tamano de la celda logica aumenta, sucede lo contrario.
En este tipo de celdas logicas, que resuelven funciones elementales de cuatro o
mas variables de entrada (denominadas de grano grueso), es posible implementar
funciones logicas de varios terminos con pocas celdas logicas. Entre las FPGA con
celdas de grano grueso se encuentran las de Xilinx y algunas familias de Altera,
la que tambien ofrece algunas familias con celdas de grano medio. Fabricantes
como Actel ofrecen FPGAs de grano fino.
Apendice A. Dispositivos Logicos Programables 144
La celda basica de una FPGA de la serie FLEX10K de Altera, denominada
LE (Logic Element), es una celda de grano medio que posee una LUT (Look-up
Table) de 4 entradas y un Fliplop. La LUT puede ser configurada tambien como
una LUT de 3 entradas y una logica de acarreo rapido. El conjunto de ocho LEs
se encuentran dispuestas en un arreglo denominado LAB (Logic Array Block).
Adicionalmente cada fila posee un EAB (Embeded Array Block) que puede ser
configurado como un elemento de 2048x1 hasta 256x8 de memoria. Estos LAB y
EAB se encuentran interconectados a traves de buses de alta velocidad de 100 a
300 lıneas por columna.
To LAB LocalInterconnect
Carry-In
ClockSelect
Carry-Out
Look-Up
Table
(LUT)
Clear/
Preset
Logic
Carry
Chain
Cascade
Chain
Cascade-In
Cascade-Out
To FastTrackInterconnect
Programmable
Register
PRN
CLRN
DQ
ENA
Register Bypass
Chip-WideReset
data1
data2
data3
data4
labctrl1labctrl2
labctrl3
labctrl4
Figura A.4: Descripcion de un LE de una FPGA FLEX10K de Altera
Un ejemplo de una celda basica de Xilinx denominado CLB (Configurable
Logic Block) se puede observar en la Fig. A.5. Estos CLBs estan compuestos por
dos LUTs (F y G) con las cuales se pueden generar funciones logicas de cuatro
variables independientes, o bien una funcion logica combinada (H) de 5 variables.
Cada LUT cuenta con logica aritmetica dedicada para la propagacion rapida de
acarreo a celdas vecinas. Cada CLB cuenta ademas con dos Flipflops con los
cuales se pueden registrar las salidas combinacionales. Xilinx posee cinco niveles
de interconexion, que va desde la conexion entre dos CLBs, a conexiones largas
Apendice A. Dispositivos Logicos Programables 145
que atraviesan toda la FPGA. Cada CLB puede ser utilizado como un elemento
de 16x2 a 31x1 de memoria.
G4
G
H1
F
G4
G3G3
G2G2
G1
D Y
Y
X
S R
CK
E C
Q
G1
S R
H1
IN
G
H
L ogic
Function
of
G1-G4
L ogic
Function
of
F -G-H1
Multiplexer Controlled
by Configuration P rogram
G-L U T
F4F4
F3F3
F2F2
F1F1
K
E C
G
L ogic
Function
of
F1-F4
F -L U T
H-L U T
A
B
D X
S R
CK
E C
Q
Figura A.5: Descripcion de un CLB de una FPGA XC4000 de Xilinx
En la Fig. A.6 se muestra un ejemplo de los recursos logicos de algunas FPGAs
de Xilinx. En la misma el fabricante presenta la cantidad de celdas basicas, el
maximo contenido de memoria que se puede generar y la cantidad de Flip-flops
que contiene cada modelo.
A.4.2. Recursos dedicados
Los fabricantes de FPGAs generan en los dispositivos algunos recursos dedi-
cados a mejorar el desempeno de los mismos. Ejemplo de ello se puede observar
sobre la serie XC4000 de Xilinx, la cual cuenta con lıneas de comunicacion glo-
bal, seleccion de velocidad de acceso de buffers de salidas y logica de acarreo para
acelerar y condensar funciones arimeticas.
Las lıneas de comunicacion globales estan disenadas para distribuir senales
de reloj o que poseen un gran fan out. Estas lıneas poseen un retardo mınimo y
pueden ser accedidas mediante la utilizacion de buffers especiales.
Apendice A. Dispositivos Logicos Programables 146
ModeloFPGA
XCS05 238 3K 2K-5K 3K 10x10 100 360
XCS10 466 5K 3K-10K 6K 14x14 196 616
XCS20 950 10K 7K-20K 13K 20x20 400 1120
XCS30 1368 13K 10K-30K 18K 24x24 576 1536
XCS40 1862 20K 13K-40K 25K 28x28 784 2016
XCS05XL 238 3K 2K-5K 3K 10x10 100 360
XCS10XL 466 5K 3K-10K 6K 14x14 196 616
XCS20XL 950 10K 7K-20K 13K 20x20 400 1120
XCS30XL 1368 13K 10K-30K 18K 24x24 576 1536
XCS40XL 1862 20K 13K-40K 25K 28x28 784 2016
XC2S15 432 8K 6K-15K 22K 8x12 96 384
XC2S30 972 17K 13K-30K 36K 12x18 216 863
XC2S50 1728 30K 23K-50K 56K 16x24 384 1536
XC2S100 2700 53K 37K-100K 78K 20x30 600 2400
XC2S150 3888 77K 52K-150K 102K 24x36 864 3456
XC4013XLA 1368 13K 10K-30K 18K 24x24 576 1536
XC4020XLA 1862 20K 13K-40K 25K 28x28 784 2016
XC4028XLA 2432 28K 18K-50K 33K 32x32 1024 2560
XC4036XLA 3078 36K 22K-65K 42K 36x36 1296 3168
XC4044XLA 3800 44K 27K-80K 51K 40x40 1600 3840
XC4052XLA 4598 52K 33K-100K 62K 44x44 1936 4576
XC4062XLA 5472 62K 40K-130K 74K 48x48 2304 5376
XC4085XLA 7448 85K 55K-180K 100K 56x56 3136 7168
XCV50 1728 21K 34K-58K 56K 16x24 384 1536
XCV100 2700 32K 72K-109K 78K 20x30 600 2400
XCV150 3888 47K 93K-165K 102K 24x36 864 3456
XCV200 5292 64K 146K-237K 130K 28x42 1176 4704
XCV300 6912 83K 176K-323K 160K 32x48 1536 6144
XCV400 10800 130K 282K-468K 230K 40x60 2400 9600
XCV600 15552 187K 365K-661K 312K 48x72 3456 13824
XCV800 21168 254K 511K-888K 406K 56x84 4704 18816
XCV1000 27648 332K 622K-1,124K 512K 64x96 6144 24576
Serie Spartan:
Serie XC4000:
Serie Virtex:
Ce
lda
sL
óg
ica
s
Co
mp
.L
óg
ica
s
Ra
ng
oT
ípic
od
eC
om
pu
ert
as
Ma
x. R
AM
Bit s
Ma
triz
de
CL
B
CL
Bs
Flip
-Flo
ps
Figura A.6: Recursos logicos de algunas FPGAs de Xilinx
Apendice A. Dispositivos Logicos Programables 147
Las series a partir de la Familia Virtex cuentan adicionalmente con bloques
denominados DLL (Delay-Locked Loop). Estos DLLs se encargan de monitorear
el reloj de entrada y el distribuido en los bloques utilizados y generan un retardo
sobre las lıneas de manera que el flanco de reloj se genere sincronicamente entre
todos los FlipFlops y el reloj de entrada.
La velocidad de acceso de los buffers de salida por defecto se encuentra limi-
tada para minimizar transitorios en las lıneas de alimentacion cuando conmutan
entradas no prioritarias. Para el caso de lıneas en las cuales se requiere mayor
velocidad, se puede cambiar el atributo de velocidad para que la salida pueda
operar mas rapidamente.
A partir de la serie XC4000E, Xilinx incorporo logica de acarreo dedicada a
las FPGAs. En la Fig. A.7 se puede observar que la logica de acarreo comparte
las entradas de datos y de control con los generadores de funciones. Las salidas
de acarreo se encuentran conectadas a los generadores de funciones de manera
de realizar las combinaciones adecuadas para la realizacion de una suma. Las
salidas de tipo propagacion de acarreo se comunican entre CLBs a traves de
rutas dedicadas de alta velocidad. Como se observa en la misma figura, el acarreo
se puede propagar hacia el CLB superior o inferior. En el caso en que no existen
CLBs en la parte superior o inferior debido a que el CLB se encuentra en los
lımites fısicos de la FPGA, el acarreo se propaga hacia la derecha.
La logica de acarreo puede ser configurada para implementar funciones de
adicion, substraccion o ambas. Ademas se pueden realizar operaciones de incre-
mento, decremento y/o funciones en complemento.
Apendice A. Dispositivos Logicos Programables 148
DQ
S/R
EC
YQ
Y
DIN
H
G
F
G
H
DQ
S/R
EC
XQ
DIN
H
G
F
H
X
H
F
G
G4
G3
G2
G1
F
F3
F2
F1
F4
F
GACARREO
CIN DOWNLOGICA
ACARREO
D
H1
INCOUT
COUT0
ACARREO
CIN UP
COUT
Figura A.7: Logica de acarreo dedicada de una FPGA XC4000 de Xilinx
Apendice A. Dispositivos Logicos Programables 149
A.5. Conclusiones
Desde hace ya un par de decadas el procesamiento de senales se lleva a cabo en
lo que se denomino DSPs (Digital Signal Processors). Estos DSPs estan basados
en la arquitectura de un procesador capaz de ejecutar calculos mediante una uni-
dad MAC (Multiply/Accumulator) y multiples bancos de memoria destinados a
incrementar la transferencia de datos. La ventaja de estos DSPs siempre radico en
que el procesamiento de senales utiliza intensivamente estas operaciones.
Sin embargo, a pesar de que estos DSPs son flexibles en cuanto a su progra-
macion, la arquitectura es fija y solo disponen de una o dos unidades MAC. Como
consecuencia, el grado de ejecuciones concurrentes esta limitado por este numero,
de manera que no permite explotar toda la potencial concurrencia del algoritmo.
En contraste, en una FPGA es posible generar la logica necesaria para explo-
tar esta concurrencia. Por ejemplo, si un algoritmo requiere la ejecucion de 16
multiplicaciones y la suma de estos productos, la FPGA puede ser configurada
para la realizacion de estos 16 productos en forma simultanea. Adicionalmente, en
la misma FPGA se pueden realizar otras tareas que no dependen de la realizacion
del calculo, tal como comunicacion con perifericos, otros calculos independientes,
etc.
Este tipo de ventaja motivo el interes respecto de las FPGAs para la aplicacion
de soluciones a medida sin perder la flexibilidad de la programacion que ofrece
un PSDP o el costo y el tiempo de fabricacion de una ASIC.
Apendice B
Sistemas numericos
B.1. Introduccion
La resolucion de todo algoritmo comienza por definir el tipo de las variables
con las que se debe trabajar. A partir de la seleccion de estas variables, queda
determinada el tipo de aritmetica que se va a utilizar. Los Arreglos Logicos Pro-
gramables (ALPs o FPGAs) permiten que la resolucion de un problema admita
distintas variantes en cuanto al tipo de aritmetica que se puede seleccionar. El
tipo de aritmetica seleccionado determina entonces la forma en que opera el al-
gorıtmo.En el presente capıtulo se mostraran las caracterısticas de cada uno de
los sistemas y la forma en que operan cada una de ellos.
B.2. Representacion numerica
La eleccion del sistema numerico de las variables a utilizar debe realizarse
cuidadosamente. Los sistemas numericos de dividen en dos campos, punto fijo y
punto flotante. En general puede ser asumido que la operatoria en punto fijo es
mas rapida y requiere menos recursos logicos, mientras que la operatoria en punto
150
Apendice B. Sistemas numericos 151
FORMATO NUMÉRICO
PUNTO FIJO PUNTO FLOTANTE
convencional no convencional convencional no convencional
Complemento a 2Complemento a 1Disminuido a 1
Con digito de signoLogarítmicoRNS
32-Bit IEEE64-Bit IEEE
16, 18, 20, 24 BitFormat
Figura B.1: Esquema de formatos numericos
flotante posee mayor rango dinamico y no requiere reescalar los resultados. Esto
ultimo puede resultar interesante para la resolucion de algorıtmos complicados.
La Figura B.1 presenta el esquema de algunos sistemas numericos para punto fijo
y punto flotante. Los mismos pueden ser utilizados fuera del sistema estandar
dependiendo de los requerimientos del problema a resolver.
B.2.1. Punto fijo
En esta seccion se presentara una breve descripcion de los sistemas numericos
de punto fijo.
Enteros sin signo
Sea X un numero binario sin signo de n bits, el rango numerico es [0, 2n − 1]
y su representacion esta dada por:
X =n−1∑j=0
xj2j (B.1)
donde xj es el j digito binario de X (por ej. xj ∈ [0, 1]). El digito x0 es
llamado el bit menos significativo (LSB - Least Significative Bit) y tiene como
Apendice B. Sistemas numericos 152
peso relativo la unidad. El digito xn−1 es el bit mas significativo (MSB - More
Significative Bit) y posee un peso relativo de 2n−1.
Magnitud con signo
En sistemas de magnitud con signo la magnitud y el signo son representados
en forma separada. El primer bit representa el signo y los restantes n − 1 bits
representan la magnitud, su representacion esta dada por:
X =
n−1∑j=0
xj2j X ≥ 0
−n−1∑j=0
xj2j X < 0
(B.2)
El rango de esta representacion es [−2n−1, 2n−1]. La ventaja de la represen-
tacion de magnitud con signo es una simplicidad en la prevencion de desbordes
de calculo, pero su desventaja es que cuando se adicionan estos numeros se debe
observar cual de los operandos es mayor.
Complemento a 1 (1C)
Un sistema de n bits en 1C puede representar enteros binarios con signo en el
rango [−2n−1, 2n−1−1]. En este tipo de sistema los numeros positivos y negativos
se representan de la misma manera excepto por el bit de signo. La representacion
del numero cero es de hecho redundante. La representacion de los numeros en 1C
esta dado por:
X =
n−1∑j=0
xj2j X ≥ 0
2n − 1−n−1∑j=0
xj2j X < 0
(B.3)
Este sistema numerico es utilizado para implementar aritmetica de modulo
2n − 1 sin cambios en la aritmetica.
Apendice B. Sistemas numericos 153
Complemento a 2 (2C)
Un sistema de n bits en 2C puede representar enteros binarios con signo en el
rango [−2n−1 − 1, 2n−1 − 1]. Su representacion esta dada por:
X =
n−1∑j=0
xj2j X ≥ 0
2n −n−1∑j=0
xj2j X < 0
(B.4)
La representacion de los numeros en 2C es una de las mas populares, esto es
debido a que con la misma es posible sumar varios numeros con signo, y al final
el resultado pertenece al rango de n bits. De este modo se puede ignorar cualquier
desborde numerico en la aritmetica. Por ejemplo, si se adicionan dos numeros de
3 bits de la siguiente manera:
310 1112C
−210 1102C
110 1 0012C
el desborde puede ser ignorado. La ventaja de esta representacion radica en
que todos los calculos son 2C. Aun en el caso en que haya calculos intermedios,
los mismos pueden no estar correctamente representados pero el resultado final es
correcto. Esto se puede apreciar si se realiza el calculo 2+2−3, el resultado parcial
de 010 + 010 = 100 (−410), pero el resultado de 100− 011 = 100 + 101 = 0012C
es correcto. Este sistema numerico es utilizado para implementar aritmetica de
modulo 2n sin cambios en la aritmetica.
Disminuido a 1 (D1)
El sistema disminuido a 1 (D1) es un sistema polarizado. Los numeros positi-
vos son, comparados con 2C, disminuidos en 1. El rango para un sistema D1 de
Apendice B. Sistemas numericos 154
N − bits es [−2n−1, 2n−1], excluyendo el cero. La representacion de este sistema
es:
X =
n−1∑j=0
xj2j − 1 X ≥ 0
2n −n−1∑j=0
xj2j X < 0
2n X = 0
(B.5)
Para adicionar dos numeros D1
310 010D1
−210 110D1
110 1 000D1
Carry ×−1 0D1
110 000D1
se puede observar que se debe complementar y adicionar el bit de carry para
lograr un resultado correcto. Este sistema numerico es utilizado para implementar
aritmetica de modulo 2n + 1 sin cambios en la aritmetica.
B.2.2. Punto flotante
Los sistemas de punto flotante fueron desarrollados para proveer alta resolu-
cion sobre un gran rango dinamico. A menudo estos sistemas pueden resultar una
solucion cuando los sistemas de punto fijo fallan debido a su limitada precision y
rango dinamico. Este formato numerico se encuentra estandarizado por la norma
IEEE 754 [18]. Esta norma establece criterios sobre diversos aspectos del diseno:
codificacion interna de los numeros a nivel de bits (formato numerico), tecnicas
de redondeo, tratamiento de excepciones, etc.
Apendice B. Sistemas numericos 155
Los sistemas de punto flotante respecto al tratamiento de su contraparte en
punto fijo poseen un costo importante en cuanto a la velocidad y complejidad
de calculo; cuestion que ha llevado a diversos autores a la utilizacion de esta
representacion ”a medida”. Una palabra en punto flotante se representa de la
siguiente manera:
Signo Exponente entero Mantisa
Sx e m
Algebraicamente, un numero en punto flotante se representa:
X = (−1)S × 2e−bias × 1.m (B.6)
donde
S, bit de signo.
e, exponente: Este campo se representa utilizando un desplazamiento (bias)
bias = 2e−1 − 1.
m, mantisa: Es la parte fraccional de 1.m.
Norma IEEE 754
Los parametros para precision simple y doble que determina la norma IEEE
754 se pueden observar en la Tabla B.1.
Apendice B. Sistemas numericos 156
Tabla B.1: Punto flotante estandar.Simple Doble
Longitud de palabra 32 64Exponente 8 11
Mantisa 23 52Bias 127 1023
Rango Maximo ±3,4028× 1038 ±1,7977× 10308
Rango Mınimo ±1,1755× 10−38 ±2,2251× 10−308
Codificaciones con significado especial
Infinito (e=255, m=0): representan cualquier valor de la region de overflow
NaN (Not-a-Number) (e=255, m>0): se obtienen como resultado de opera-
ciones invalidas
Numero denormalizado (e=0, m>0): es un numero sin normalizar cuyo bit
implıcito se supone que es 0. Al ser el exponente 0, permiten representar
numeros en las regiones de underflow. El valor del exponente es el del ex-
ponente mas pequeno de los numeros no desnormalizados: -126 en precision
simple y –1022 en doble.
Cero (e=0, m=0): numero no normalizado que representa al cero (en lugar
de representar al 1)
Excepciones:
Operacion invalida: ∞ ±∞, 0 × ∞, 0 ÷ 0, ∞ ÷∞, x mod 0,√
x cuando
x < 0, x =∞
Inexacto: el resultado redondeado no coincide con el real
Overflow y underflow
Division por cero
Apendice B. Sistemas numericos 157
Formato a medida
El sistema en punto flotante, como se menciono posee un costo en cuanto a
velocidad y complejidad de calculo. Es por esto que muchos autores han generado
con el tiempo el sistema de punto flotante a medida. El formato de palabra que
se utiliza depende del rango dinamico y la resolucion que se desea. En la Tabla
B.2 se pueden observar algunos ejemplos de estos formatos.
Tabla B.2: Punto flotante a medida.Longitud de palabra 16 18 20 24
Exponente 7 7 8 9Mantisa 8 10 11 14
Bias 63 63 127 255RangoMaximo ±1.8411×10
19 ±1.8438×1019 ±3.4020×10
38 ±1.1579×1077
RangoMınimo ±2.1769×10−19 ±2.1705×10
−19 ±1.1761×10−38 ±3.4547×10
−77
B.2.3. No-convencionales
Listema numerico logarıtmico (LNS)
El sistema numerico logarıtmico (LNS) es analogo al sistema de punto flotante,
con una mantisa de punto fijo y un exponente fraccional. Un numero en LNS es
representado por:
X = ±r±ex (B.7)
donde r es la raız del sistema, y ex es el exponente LNS. El formato LNS
consiste en un bit de signo para el numero y otro para el exponente, un exponente
entero de I − bits y F fraccionales bits de precision. El formato en forma grafica
es:
Apendice B. Sistemas numericos 158
Signo Signo de exponente Exponente entero Exponente fraccional
Sx Se I F
El LNS como el sistema de punto flotante posee una precision no uniforme.
Pequenos valores de X son resueltos con gran precision, miemtras que los grandes
valores poseen una precision pobre.
La atraccion historica del LNS se encuentra en la habilidad para implementar
eficientemente la multiplicacion, la division y la potenciacion. Por ejemplo, el
producto C = A×B, donde A, B y C son palabras LNS, esta dada por:
C = reA × reB = reA+eB = reC (B.8)
Esto es, el exponente de un producto LNS es simplemente la suma de dos
exponentes. La division y otras operaciones se resuelven de manera similar. La
deventaja de este sistema es la complejidad con que se deben resolver la adicion
y la substraccion. Las mismas se basan en la siguiente operatoria, sonde se asume
que A > B.
C = A + B = 2eA + 2eB = 2eA(1 + 2eB−eA
)= 2eC
Apendice C
Multiplicacion Secuencial
aplicada al Control de
Movimiento
C.1. Introduccion
En sistemas de control de posicion existen aplicaciones en las cuales se requiere
la ejecucion de una accion de control sobre una maquina en un perıodo de tiempo
que depende inversamente de la maxima velocidad que se desea imponer sobre
la misma. Esta situacion lleva a la necesidad de disponer de algoritmos muy
rapidos y eficientes que puedan realizar el procesamiento en tiempos muy breves.
Estos algoritmos donde se requiere alta velocidad de procesamiento constituye
una aplicacion ideal para la implementacion hardware de los mismos en FPGA.
Tal es el caso de la aplicacion realizada sobre el control de posicion de un
Acelerador Lineal de Partıculas, cuyas caracterısticas de gran precision en la
posicion, y de gran cantidad de motores asociados, obliga a la utilizacion de
procesamiento de altısima velocidad, con la mayor economıa de recursos logicos
159
MS aplicada al Control de Movimiento 160
en las FPGAs.
Control de posicion del CLIC
El control de posicion del Compact Linear Collider (CLIC), acelerador lineal
de partıculas del Centro Europeo de Investigacion Nuclear (Centre Europeen-
ne pour la Recherche Nucleaire), requiere en forma intensiva el posicionamiento
preciso y rapido de motores paso a paso, por lo que es necesario utilizariles de
velocidad que se ajusten a la dinamica de la carga a fin de garantizar movi-
mientos sin perdidas de pasos. La principal ventaja tecnologica del CLIC es la
concentracion del haz de partıculas en una seccion mucho mas reducida que en
los aceleradores circulares [39]. Esto permite obtener partıculas de mayor energıa
pero, como contrapartida existen serias exigencias en cuanto a la alineacion del
acelerador respecto de su haz de partıculas. Este sistema posee una especificacion
de la desviacion maxima de 10 micrones, a lo largo de los 24000 m de longitud del
acelerador [40]. Para lograr tal especificacion es necesario un control de posicion
capaz de compensar perturbaciones y desviaciones con una altısima presicion [41].
El sistema mecanico del CLIC esta compuesto por modulos de 1.4 mts. de lon-
gitud. Cada modulo posee dos aceleradores con un ”girder” y un ”quadrupole”
por acelerador. Los girders son elementos que soportan mecanicamente las cavi-
dades del acelerador mientras que los quadrupoles son electroimanes que tienen
por objeto la concentracion de los haces de partıculas. La Fig. C.1 muestra un
esquema de la distribucion de los motores que requieren los girders y quadrupoles.
El sistema de alineacion del CLIC consiste en un conjunto de sensores que
detectan la posicion de las cavidades del haz. Luego de un adecuado procesa-
miento de la informacion, se obtiene el movimiento que se debe operar sobre los
elementos del acelerador a traves de un conjunto de motores paso a paso.
MS aplicada al Control de Movimiento 161
Figura C.1: Esquema de motores de una seccion del CLIC.
El control de alineacion del CLIC se encarga de procesar senales y accionar
multiples motores paso a paso simultaneamente utilizando perfiles de velocidad
con una alta dinamica y gran precision [42].
C.2. Accionamientos paso a paso
Un accionamiento paso a paso esta compuesto por un controlador digital de
movimientos, un driver de potencia y el motor paso a paso, Fig. C.2. El controla-
dor digital de movimientos genera un perfil de movimiento, tıpicamente un perfil
de velocidad, en funcion de parametros tales como velocidad mınima, maxima,
aceleracion, cantidad de pasos, etc. Una vez establecido el perfil de velocidad, el
controlador de movimiento envıa los pulsos de accionamiento al driver del mo-
tor. El espaciamiento entre los pulsos de accionamiento determina la velocidad
instantanea del eje y se lo conoce como temporizacion.
La generacion de un perfil de velocidad consiste en el calculo de la temporiza-
cion requerida acorde con los parametros suministrados. La generacion de estos
perfiles puede ser del tipo on-line u off-line.
MS aplicada al Control de Movimiento 162
Indexador
Generador deperfil de
movimiento
Controlador Motor paso a paso
Figura C.2: Sistema de control de movimiento de motores de accionamiento in-cremental.
C.2.1. Generacion de perfiles de velocidad Off-line
En el accionamiento off-line el perfil de velocidad es calculado previamente
al desarrollo del movimiento [43] [44]. El perfil de velocidad y la temporizacion
son calculados y guardados en un sistema de almacenamiento el cual es accedido
cada vez que se ejecuta un paso.
Estos sistemas poseen desventajas importantes: requieren una cantidad de ti-
mers y de memoria proporcional a la extension y precision de los desplazamientos;
ademas son poco flexibles.
C.2.2. Generacion de perfiles de velocidad On-line
Algoritmos convencionales
En cuanto a los perfiles on-line, los mismos son generados por un sistema
inteligente que realiza la operacion de calculo mediante la utilizacion de un al-
goritmo. La Fig. C.3 muestra un diagrama de flujo de un algoritmo basico. En
este diagrama se distinguen dos bloques principales, la construccion de Vr(k) en
el cual se genera el perfil de velocidad y el calculo de ∆t(k), en el cual se calcula
el perıodo de tiempo entre el paso actual y el proximo. La construccion de Vr(k)
se efectua a partir de parametros que caracterizan al perfil, tal como velocidad
inicial (Vmin = Vr(0)), velocidad maxima (Vmax), aceleracion (a1) y desaceleracion
MS aplicada al Control de Movimiento 163
Generaciónde pulsos
k = 1
Construcciónde V (k)r
k = k + 1
�tk-1 �tk
Cálculo
de t� k
Accionamientode un paso
k = N?
si
no
Fin
Figura C.3: Diagrama de flujo de un algoritmo on-line.
MS aplicada al Control de Movimiento 164
(a2) del motor, y cantidad de pasos N que debe ejecutar el mismo. El controlador
calcula para el k-esimo paso el valor de la velocidad que debe ejecutar en ese
instante.
En la Fig. C.4 se muestra un perfil de velocidad trapezoidal.
aceleración desaceleración
Vmax
Vmin
t
Figura C.4: Perfil de velocidad trapezoidal.
La Ec. (C.2) muestra el calculo de ∆t(k) de un algoritmo tıpico para el k-esimo
paso.
∆t(k) =1
Vr(k)(C.1)
∆t(k) =2√
V 2max − 2 (N − k − 1) a +
√V 2
max − 2 (N − 1) a(C.2)
Este algoritmo involucra divisiones y raıces lo que conlleva un elevado tiempo de
calculo para obtener ∆t(k). El tiempo de calculo, Tc, impone una limitacion a la
velocidad debido a que el perıodo entre pasos no puede ser inferior a Tc. De este
modo, la velocidad maxima, expresada en pasos por seg., esta limitada por la Ec.
(C.3).
Vmax =1
Tc
(C.3)
MS aplicada al Control de Movimiento 165
Algoritmos iterativos
Los algoritmos convencionales poseen un Tc elevado y por lo tanto estos al-
goritmos no pueden utilizarse para altas velocidades. Carrica et al propusieron
un nuevo algoritmo on-line que reduce sensiblemente el Tc [45]. Este algoritmo es
de tipo iterativo y asume que ∆t(k) = nk · Tc. El algoritmo incrementa iterativa-
mente nk, a partir de nk = 1 hasta que ∆t(k) alcance el valor deseado de Vr(k),
siendo Vr(k) la velocidad de referencia en el k-esimo paso.
Vr(k) =1
∆t(k)(C.4)
Si la Ec. (C.4) se verifica, entonces se ejecuta un nuevo paso. En caso contrario
nk se incrementa y se repite el proceso.
La resolucion de ∆t(k) en la Ec. (C.4) es Tc. En consecuencia estos algoritmos
trabajan con intervalos discretos y la Ec. (C.4) se reescribio como la Ec. (C.5).
Vr(k) ≥ 1
∆t(k)(C.5)
Adicionalmente, con el objetivo de reducir el Tc, se evito el cociente, utilizando
la Ec. (C.6).
Vr(k) ·∆t(k) ≥ 1 (C.6)
Si bien este algoritmo presenta la limitacion expresada por la Ec. (C.3), el Tc
mucho menor debido a la menor complejidad del calculo.
Una desventaja del algoritmo iterativo es la existencia de valores discretos de
Vr(k) que crea un efecto de cuantizacion en la velocidad. Observando la Ec. (C.4)
y considerando que nk es un numero entero positivo, Vr(k) toma valores:
MS aplicada al Control de Movimiento 166
Vr(k) =1
∆tk=
1
nk · Tc
=
Vmax ; nk = 1
Vmax
2; nk = 2
......
Vmax
K; nk = K
(C.7)
Como consecuencia, la velocidad maxima del motor, Vmax, no solo queda
limitada por 1Tc
sino que ademas el perfil excursiona a saltos V max − V max2
,
V max2− V max
3, V max
3− V max
4, etc.
El perfil de velocidad es alterado por esta ”cuantizacion” ya que se producen
discontinuidades en la velocidad con la consiguiente dificultad del motor frente a
esta exigencia de aceleraciones infinitas, como puede verse en la Fig. C.5 donde
se ilustra el perfil ideal versus el perfil de velocidad cuantizado.
v(t)
i(k)
Vmáx
t
k
t0 t1 t2 t3 t4 t5
Tc
Vmáx/2nmáx = 2
nmáx = 1
nmáx = 3
nmáx=4
nmáx=5
nmáx=6
nmáx=7
Vmáx/3
Vmáx/4
Vmáx/5Vmáx/6
Figura C.5: Perfil de velocidad, deseado, cuantizado y la temporizacion resultante.
La Fig. C.6 muestra los perfiles de velocidad reales obtenidos mediante el al-
goritmo iterativo ejecutado en un DSP, donde se desarrollo el desplazamiento con
MS aplicada al Control de Movimiento 167
una velocidad maxima de 5700pasoss
. Se observan saltos de velocidad importantes
debido al efecto de cuantizacion.
Figura C.6: (Izquierda) Posicion y velocidad con el algoritmo iterativo. (Derecha)Detalle del perfil de posicion y velocidad del perfil iterativo
Se puede concluir que, para reducir el problema de la cuantizacion, es muy im-
portante reducir apreciablemente los tiempos de procesamiento. De esta manera
se podrıan obtener velocidades mucho mayores
C.3. Generacion de perfiles de velocidad me-
diante FPGA
A fin de reducir los tiempos de procesamiento se implemento en hardware (en
FPGA) el algoritmo iterativo. Comparativamente, el tiempo de procesamiento
MS aplicada al Control de Movimiento 168
de un sistema implementado en hardware es sustancialmente inferior al de un
procesador y, adicionalmente, se dispone de la capacidad de realizar eventos en
paralelo.
En la Fig. C.7 se muestra la arquitectura hardware del algoritmo iterativo.
La generacion del perfil trapezoidal se constituye a partir de los datos de la
aceleracion, velocidad mınima, maxima, y numero de pasos. La logica interna de
seleccion toma la decision en base a estos parametros y de este modo ejecuta el
perfil de referencia que el motor intentara seguir.
CONTADOR
MULTIPLICADOR
Interfaz de
AccionamientoVR
nk
COMPARADOR
V x nR k
� 1/Tc
RELOJ
Tck
DRIVERS DE
POTENCIA
MOTOR PASO
A PASO
Controlador Digital
CONSTANTE=1/Tc
Generador del Perfil de
velocidad de referencia
V x nR k
Figura C.7: Arquitectura hardware del algoritmo de generacion de perfil de velo-cidad.
La implementacion hardware del algoritmo permite reducir sustancialmente
el Tc aprovechando la capacidad de las FPGAs de realizar todos procesos en
simultaneamente, a diferencia de la ejecucion secuencial propia de un DSP. Es
decir, el algoritmo implementado en hardware efectua en forma independiente, la
generacion del perfil de velocidad de referencia y el calculo de la Ec. (C.6). De
este modo, se puede inferir que el Tc depende fundamentalmente de la tarea que
mayor demanda de tiempo requiere.
La construccion del perfil de velocidad es una tarea que se resume a una cuenta
incremental que inicia en Vmin, alcanza el valor Vmax en un perıodo de tiempo t1,
una vez que se alcanzo este valor permanece un perıodo de tiempo t2 en el mismo
MS aplicada al Control de Movimiento 169
y posteriormente decrementa la cuenta hasta alcanzar nuevamente el valor Vmin
en un tiempo t3 que usualmente es igual a t1.
El contador nk cuenta pulsos de reloj incrementando su valor periodicamente
mientras que el producto de la Ec. (C.8) resulte inferior a 1Tc
. Cuando el producto
se hace mayor o igual que 1Tc
, se genera un pulso que genera un nuevo paso del
motor y adicionalmente reinicia la cuenta del contador.
Por otro lado, la implementacion hardware de la Ec. (C.6) involucra el pro-
ducto Vr(k) · ∆t(k), producto que se debe comparar con la unidad. Analizando
este producto se puede observar que, si bien los valores del perfil de referencia
pueden ser enteros binarios, ∆t es de formato decimal. Aunque se ha visto en
capıtulos anteriores que es posible el manejo de magnitudes decimales o incluso
de punto flotante en FPGA, es mas eficiente el uso magnitudes enteras.
A fin de operar con enteros y reducir la cantidad de multiplicaciones, se pro-
pone una variante que consiste en reescribir la Ec. (C.6) como
Vr(k) · nk ≥ 1
Tc
(C.8)
en la cual 1Tc
es un valor conocido y constante. Esta simplificacion reduce las
operaciones a solo una multiplicacion, va a imponer el perıodo Tc.
C.3.1. Implementacion del producto Vr · nk
En cuanto al producto Vr · nk, la solucion inmediata consiste en un Multi-
plicador Paralelo. Esta alternativa presenta como ventaja el mınimo retardo que
imponen las compuertas logicas.
Considerando que las FPGAs poseen recursos dedicados para la ejecucion de
adiciones por propagacion de acarreo, la opcion inmediata es un multiplicador
tipo Ripple Carry. Este es un multiplicador combinacional (Sec. 2.4)que ejecuta
MS aplicada al Control de Movimiento 170
el producto velozmente, dependiendo su velocidad del retardo de la longitud de
palabra de sus operandos.
Con el objetivo de cuantificar el Tc requerido por este multiplicador, se imple-
mento el mismo en una FPGA XC4006E-4 de Xilinx, que es la misma tecnologıa
que utiliza el CLIC en el control de alineacion del acelerador.
El multiplicador Ripple Carry para una longitud de palabra de 16 bits, que
corresponde a una velocidad maxima seleccionable de 65535pasoss
. En estas condi-
ciones se pudo ejecutar u producto en un Tc = 92, 5ns. De esta forma, la velocidad
maxima teorica que se puede desarrollar es:
Vmax ≤ 1
Tc
= 10, 81x106 pasos
s(C.9)
obteniendose una cuantizacion del perfil de velocidad de solo el 0.6 % de la maxima
velocidad seleccionable.
Si bien el Tc obtenido es ideal para la aplicacion, este multiplicador utilizo el
96,5 % de los recursos logicos de la FPGA, haciendo imposible la utilizacion de
otros bloques para la ejecucion del algoritmo. La Fig. C.8 muestra el consumo de
recursos logicos del multiplicador implementado.
Figura C.8: Implementacion del multiplicador Ripple Carry en una FPGAXC4006E.
MS aplicada al Control de Movimiento 171
Otra opcion, tal como el multiplicador optimizado en area propuesto por Xi-
linx [21], permite ejecutar una multiplicacion de 16 en un Tc = 89ns, inferior
incluso que con el multiplicador Ripple Carry, pero con un consumo de recur-
sos logicos de aproximadamente un 83,2 %. La Fig. C.9 muestra el consumo de
recursos logicos de este multiplicador implementado.
Figura C.9: Implementacion de un multiplicador optimizado en area de Xilinx enuna FPGA XC4006E.
Para solucionar este problema se propone la utilizacion de Multiplicadores Se-
cuenciales, que permiten realizar un producto con un mınimo consumo de recursos
logicos.
En particular se considera la utilizacion de un SMSR (ver. Seccion 3.3.1), en
el cual la ejecucion del producto se pudo realizar en Tc = 229ns para un m = 16.
En consecuencia, la velocidad maxima teorica que obtenida es:
Vmax ≤ 1
Tc
= 4,36x106 pasos
s(C.10)
Ademas, este esquema permitio la ejecucion del algoritmo iterativo con saltos
de velocidad de solo 1,46 % de la maxima velocidad. Si bien este Tc es mayor
que el obtenido con un Multiplicador Paralelo, el consumo de recursos logicos del
MS aplicada al Control de Movimiento 172
SMSR para una longitud de palabra de 16 bits es del 11.32 %, es decir 8 a 9 veces
inferior comparativamente. Adicionalmente, este reducido consumo de recursos
logicos permite controlar multiples motores.
C.4. Resultados experimentales
C.4.1. Modo de funcionamiento en pasos
Con el objetivo de evaluar el sistema propuesto, se implemento el controlador
digital en una FPGA XC4006-3 de Xilinx, tecnologıa utilizada en los ensayos del
CLIC. Este dispositivo posee una capacidad de 6000 puertas de logicas y puede
funcionar con un reloj de hasta 80 MHz.
En los experimentos se utilizo un motor hıbrido cuyas caracterısticas son: re-
solucion angular 400pasorev
, momento de inercia 13·10−7 kg m2 y torque de retencion
Tret = 33 · 10−7 N m.
La medicion de la posicion fue realizada mediante un encoder optico incre-
mental ELAP-E521, cuya resolucion es 1024 pulsos por revolucion y su momen-
to de inercia de 2,5 · 10−6 kg m2. El acople fue realizado con un acople elastico
HELICAL-WA25 con un momento de inercia de 2,3 · 10−6 kg m2.
La curva de la posicion fue obtenida mediante la lectura de la senal del encoder
a traves de un contador de tiempo de alta resolucion. El perfil de la velocidad fue
calculado off-line, realizando la derivacion numerica de los datos de posicion.
El multiplicador SMSR utilizo un reloj sincronico de 40 MHz, resultando un
Tc de 400 ns, para 16 bits . Se adopto un Tclk = 800 ns, que es despreciable en
relacion a la velocidad del motor.
Se aplico al motor paso a paso un desplazamiento de 12000 pasos mediante
un perfil trapezoidal con las siguientes caracterısticas: Vmın = 500pasoss
, Vmax =
MS aplicada al Control de Movimiento 173
6000pasoss
y aceleracion maxima amax = 4200pasoss2
.
Los perfiles resultantes de velocidad y posicion se muestran en la Fig. C.10.
El bajo tiempo de procesamiento, Tc, permitio un perfil casi continuo, con veloci-
dades mucho mayores que las generadas por algoritmos estandar implementados
en software. Debido a las caracterısticas del motor incremental el perfil atraviesa
zonas de resonancia, tal como se predice en [46], [47], [48] y [49]. Este efecto, que
se observo en la region de bajas velocidades, no logro sacar de sincronismo a las
maquinas ya que las mismas se encuentran en la zona de trabajo por debajo de
la curva de pull-out1.
Figura C.10: Perfil de velocidad y posicion del accionamiento controlado por unsistema basado en FPGA. 15 rev
s≡ 6000pasos
s
1Previo a la obtencion de resultados experimentales, los perfiles son simulados para verificarque puedan enfrentar la inercia impuesta.
MS aplicada al Control de Movimiento 174
Adicionalmente, se aplico un perfil de velocidad con caracterısticas mas exigen-
tes, velocidad maxima de 24000pasoss
y una aceleracion aproximada de 20000pasoss2
.
En la Fig. C.11 se muestra el perfil obtenido a las altas velocidades con paso com-
pleto, donde se aprecia la continuidad en toda la gama efectiva de la velocidad.
Figura C.11: Perfil de velocidad del accionamiento controlado por un sistemabasado en FPGA. 62,5 rev
s≡ 25000pasos
s
C.4.2. Modo de funcionamiento en micropasos
El modo micropaso consiste en el accionamiento del movimiento del motor in-
cremental en fracciones de un paso. De esta manera se logra una menor vibracion
y ruido audible, y sobre todo una mejor resolucion de posicion (en fracciones 1/n
del paso original). En cuanto a la generacion del perfil de velocidad, la dificultad
MS aplicada al Control de Movimiento 175
estriba en que se debe ejecutar el algoritmo en tiempos muy cortos, correspon-
dientes al tiempo que transcurre entre micropaso y micropaso.
Se realizaron ensayos en modo micropaso, el los que se utilizo un motor SLO–
SYN KML093F14C5 cuyas caracterısticas son: resolucion angular 200pasorev
, torque
de retencion Thold = 816 N cm y momento de inercia de 3,32 kg cm2. Los valores
de la posicion fueron obtenidos a traves de un encoder optico incremental con
una resolucion de 500 pulsos por revolucion. El driver, con capacidad de manejo
de micropasos, es un SLO-SYN MD808, configurado para producir 2000 pulsos
por revolucion. Se aplico un perfil de alta velocidad con Vmın = 500pasoss
, Vmax =
50000pasoss
y una aceleracion maxima amax = 5000pasoss2
. El Tc adoptado para esta
aplicacion fue de 400 ns de manera de producir saltos de velocidad maximos de
1000pasoss
en Vmax, de manera que el salto sea menor que el 5 % Vmax. Este efecto
puede observarse en el plateau del perfil en la Fig. C.12.
Los resultados relevados demuestran que el sistema alcanzo muy altas velo-
cidades, inalcanzables con algoritmos estandares ejecutados por un procesador.
Sin embargo, la necesidad de realizar perfiles de velocidad en modo micropaso re-
quiere una mayor velocidad de calculo, aunque sin el sacrificio de recursos logicos
que implica la utilizacion de un multiplicador paralelo.
Para lograr la mayor velocidad de calculo se propone utilizar un nuevo tipo de
multiplicador. El multiplicador secuencial de sumas consecutivas (SMSC) es una
variante de la multiplicacion secuencial optimizada para realizar un producto en
la mitad de tiempo que el SMSR (ver Seccion 3.3.3).
Se realizo un nuevo ensayo con el SMSC. El sistema de driver-motor ensayado
es el mismo que se utilizo en las experiencias en modo micropaso. El perfil de velo-
cidad aplicado presenta las siguientes caracterısticas: velocidad Vmax = 72000pasoss
,
Tc de 200 ns de manera de reducir los saltos de velocidad por debajo de 5 % de
MS aplicada al Control de Movimiento 176
Figura C.12: Perfil de velocidad del accionamiento utilizando el modo de micro-pasos.
Vmax. La Fig. C.13 muestra el perfil de velocidad resultante. Como en las me-
diciones anteriores puede observarse el efecto de cuantizacion, aunque reducido,
tanto en las rampas como en el plateau del perfil.
MS aplicada al Control de Movimiento 177
Figura C.13: Perfiles de posicion y velocidad para un sistema de accionamientoen modomicropaso.
MS aplicada al Control de Movimiento 178
C.5. Conclusiones
Se presento una implementacion hardware, utilizando FPGA, de los algorit-
mos iterativos de generacion de perfiles de velocidad. El uso de esta tecnologıa
permitio reducir sustancialmente el tiempo de procesamiento equivalente frente
al desarrollado por cualquier procesador rapido. Como consecuencia se redujeron
apreciablemente los saltos de velocidad que se observaban en los perfiles de velo-
cidad on-line generados por software. Esto a su vez, posibilito llegar a velocidades
del motor mucho mayores dado que se eliminaron las exigencias de aceleracion
propias de los saltos de velocidad.
Gracias a las arquitecturas SMSR y SMSC se consiguio un reducido consumo
de recursos logicos para cada controlador digital, por lo que se pueden accionar
multiples motores simultaneamente. Esta ventaja hace al sistema muy conve-
niente ya que permite incrementar aun mas el numero de motores recurriendo
a FPGAs de mayor capacidad. Esto fue clave para su aplicacion extensiva en el
control de posicion del CLIC.
La idea propuesta, evaluada experimentalmente, posibilita la operacion de
motores paso a paso a muy altas velocidades, lo que antes estaba vedado debido
a las dificultades tecnologicas de los procesadores para atender con rapidez el
envıo de la consigna de nuevos pasos a la maquina.
Apendice D
Publicaciones
D.1. Introduccion
Los trabajos que se presentan a continuacion resumen la investigacion realizada durante los
ultimos anos.
Multiplicadores secuenciales en FPGA: Evaluacion y Comparacion de
Parametros
En este trabajo se presenta el estado del arte de multiplicadores secuenciales orientado a
su implementacion en FPGA. Se presentan estimaciones de consumo de recursos logicos y de
comportamiento temporal de las variantes existentes y propuestas con el objetivo de contrastar
las caracterısticas de los multiplicadores presentados.
Estudio comparativo de multiplicadores secuenciales implementados en
FPGA
En este trabajo se realizaron ensayos donde se comparan las estructuras existentes y pro-
puestas, en las cuales se puede verificar la importante reduccion de los recursos manteniendo
un aceptable desempeno en cuanto a velocidad.
179
Apendice D. Publicaciones 180
Floating Point Multipliers with Reduced FPGA Area
En este trabajo se realizo un estudio comparativo del multiplicador secuencial para dife-
rentes tecnologıas de FGPA.
Performance evaluation of Floating Point Multipliers
En este trabajo se plasmaron algunos de los resultados de la aplicacion del SM a punto
flotante con el objetivo de compararlos con el de algunos multiplicadores propuestos en la
literatura por otros autores.
Novel FPGA based Floating Point Multiplier: Consecutive-Sums Se-
quential Multiplier
En este trabajo se presenta una estructura de multiplicadores de punto flotante parametri-
zable basada en una variante del multiplicador secuencial de sumas consecutivas que con una
sustancial reduccion de los recursos logicos utilizados mejora el desempeno del multiplicador en
velocidad. Se realizaron ensayos donde se evalua la arquitectura propuesta y se la compara con
los resultados previos obtenidos.
Novel Stepper Motor Controller Based on FPGA Hardware Implemen-
tation
En esta publicacion se presento un nuevo sistema de generacion de perfiles de velocidad
basado en FPGA, el cual permite que las maquinas incrementales puedan utilizarse en todo el
rango de velocidades, aun a altas velocidades. Se presentan los ensayos en los cuales se demuestra
que el controlador basado en FPGA posee un desenvolvimiento notorio, lo que permitio llegar
a velocidades mayores a las obtenidas anteriormente con sistemas convencionales.
FPGA based stepper motor controller
En este trabajo se presentaron algunos de los resultados obtenidos a partir de la implemen-
tacion de multiplicadores mas veloces a fin de reducir el tiempo de procesamiento del algoritmo
y con un consecuentemente aumento de las velocidades alcanzadas por el motor incremental.
Multiplicadores secuenciales en FPGA: evaluacion ycomparacion de parametros
M. Funes, D. Carrica, M. Benedetti, P. Donato
Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
Resumen En este trabajo se presenta el estado del arte de multiplicadores se-cuenciales orientado a su implementacion en FPGA. Se presentan estimacionesde consumo de recursos logicos y de comportamiento temporal que permitencontrastar las caracterısticas de los multiplicadores presentados.
1. Introduccion
La multiplicacion es una de las operaciones escenciales en el procesamiento aritmeti-co. Adicionalmente, es una de las tareas que mas recursos logicos consume. Decadasatras cuando la arquitectura del multiplicador era estudiada para su implementacionen circuitos de procesadores o unidades aritmeticas de calculo, el consumo de recursoscircuitales era aceptado por la necesidad de realizar los calculos mas rapidamente.
Actualmente, la utilizacion de las FPGAs permite el diseno personalizado de sis-temas de procesamiento, lo cual ha masificado la aplicacion de los mismos. La imple-mentacion en una FPGA de una unidad de calculo con un gran consumo de recursoslogicos obliga a utilizar una FPGA de gran tamano, lo que implica un mayor costo deproduccion. Con el objeto de reducir el consumo de recursos logicos Funes et. al [1]propusieron la utilizacion del esquema de multiplicacion Shift and Add [2], [3] , de-nominado tambien Multiplicador Secuencial (SM), para sistemas basados en FPGA.Este multiplicador ejecuta un producto en forma secuencial y se caracteriza por uti-lizar una cantidad reducida de recursos logicos. Como contra-partida por su entidadsecuencial, este multiplicador demanda un perıodo mayor para ejecutar un producto.Existen variantes del multiplicador SM que reducen este perıodo a costa de un mayorconsumo de recursos logicos [6].
En este trabajo se explicitan las ecuaciones que determinan los parametros carac-terısticos que describen el comportamiento de multiplicadores secuenciales implemen-tables en FPGA. Adicionalmente se presenta un estudio comparativo de los multipli-cadores secuenciales, sustentado en las ecuaciones mencionadas.
** Este trabajo fue subsidiado por la Universidad Nacional de Mar del Plata (ING-15/G130),CONICET, y por la Agencia Nacional de Promocion Cientifica y Tecnologica (BID1201/OC-AR 2002), Argentina
2. Multiplicadores secuenciales
Dados dos operandos, un multiplicando X =n−1∑j=0
xj2j , y un multiplicador Y =
n−1∑j=0
yj2j , el Cuadro 1 muestra el proceso de multiplicacion para n = 4. El SM realiza el
producto de este cuadro en forma secuencial, acumulando un producto parcial yiX (i =0, 1, 2, 3) al resultado acumulado de la iteracion anterior con el debido desplazamientode un bit entre ambos.
Cuadro 1.
x3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ y0X20
s13 s12 s11 s10 ≡ y1X21
+ s23 s22 s21 s20 ≡ y2X22
s33 s32 s31 s30 ≡ y3X23
p7 p6 p5 p4 p3 p2 p1 p0 ≡ P
Existen dos versiones dependiendo del sentido de los valores a acumular, con des-plazamiento a la izquierda o con desplazamiento a la derecha. En la multiplicacion condesplazamiento a la izquierda se debe contar con un acumulador de longitud 2n bits.En este caso los productos parciales yjX son adicionados al resultado acumulado conun desplazamiento de un bit (21) hacia la izquierda, respecto al anterior. El algoritmose puede analizar a partir de la Ec. (1), donde p(j) es el producto parcial de la iteracionj.
p(j + 1) = 2p(j) + y(n−1)−jX con p(0) = 0 (1)
En la multiplicacion con desplazamiento a la derecha los productos parciales yjX sonadicionados al resultado acumulado con un desplazamiento de un bit (2−1) hacia laderecha respecto al anterior.
El algoritmo se observa en la Ec. (2).
p(j + 1) = (p(j) + yjX2n)2−1 con p(0) = 0 (2)
Debido a que el desplazamiento a la derecha genera un primer producto parcial mul-tiplicado por 2−n se debe pre-multiplicar y0X por 2n para compensar el efecto deldesplazamiento. Esta pre-multiplicacion se puede efectuar facilmente, almacenandop(j) en el segmento mas significativo de un registro de 2n bit.
La implementacion hardware del algoritmo de la multiplicacion con desplazamientoa la derecha se puede observar en la Fig. 1. El multiplicador Y y la acumulacion delos productos parciales p(j) son almacenados en registros de desplazamiento. El bit yj
del multiplicador es el bit menos significativo existente en el registro Y en la iteracionj. El mismo es utilizado en el producto yjX seleccionando 0 o X en la suma.
El multiplicador SM requiere n iteraciones para la ejecucion del producto y unaiteracion previa para la carga de los operandos. Por lo tanto este multiplicador puederealizar un producto en un perıodo T = (n + 1)TCK , donde n es la longitud de losoperandos y TCK el perıodo de reloj aplicado sobre el multiplicador.
ADD
X
Producto
desplazamiento
N
N
Y
Parcialacarreo
0N-12N-1 N
0N-1
desplazamiento
0N-1
NN
Figura 1. SM con desplazamiento a la derecha.
2.1. Multiplicador secuencial sin entradas registradas
El multiplicador secuencial sin entradas registradas (SMSR) es una variante delmultiplicador SM de desplazamiento a la derecha. El objetivo del SMSR es la sim-plificacion del esquema de multiplicacion evitando la carga paralelo de los registrosdel multiplicador y del multiplicando. El SMSR no carga los operandos, por lo que noexiste la demora propia del ciclo de carga, lo cual constituye una ventaja. Por lo tanto,este multiplicador realiza el producto en un T = nTCK . En la Fig. 2 se puede observarun esquema del SMSR, el cual utiliza un sumador de n bits y realiza la seleccion delos bits yj mediante un multiplexor de n entradas.
ADD
X
Producto
desplazamiento
N
N
Y
Parcialacarreo
0N-12N-1 N
NN
N
MUX
Control
Figura 2. SMSR.
El control del multiplicador, que no se muestra en esta figura, consiste en uncontador que ejecuta la seleccion de los yj y que a su vez mantiene el numero deiteracion realizada. La inicializacion del multiplicador se realiza limpiando el registroProducto Parcial y el contador, y es requisito para este multiplicador que los datosse encuentren presentes durante todo el ciclo de la multiplicacion, tal como en unmultiplicador paralelo tradicional.
2.2. Multiplicador SM de base 4 o superior
Esta variante de multiplicacion secuencial, reduce la cantidad de iteraciones enbase a la representacion numerica.
Un numero binario de n-bits puede ser representado como un numero de n2 -dıgitos
de base 4 o n3 -dıgitos de base 8. De este modo, es posible realizar un producto en
menor tiempo de calculo si se ejecuta una multiplicacion de un dıgito por vez en lugarde hacerlo bit a bit.
La expresion general para este tipo de multiplicacion es la de la Ec. (3):
p(j + 1) = (p(j) + yjXrn)r−1 con p(0) = 0 (3)
En el caso de la multiplicacion en base 4, se debe conformar el producto parcial [yj+1
yj ]2X y adicionarlo al resultado de la iteracion anterior. Mientras que en la multi-plicacion de base 2 cada producto parcial esta representado por el valor 0 o por unaversion desplazada de X, en la multiplicacion de base 4 el producto parcial toma losvalores 0, X, 2X o 3X. El metodo mas directo para la ejecucion de esta multiplicacionse realiza mediante una asignacion pre-calculada de los productos parciales.
Un diagrama de este tipo de multiplicador se muestra en la Fig. 3. En el mismose debe considerar que mientras los tres primeros valores de los productos parcialesse pueden utilizar en forma directa, el valor 3X requiere un tiempo adicional para laejecucion del calculo de X +2X. Ademas, se debe considerar que el valor pre-calculadode 3X puede exceder el rango de X, por lo que el multiplexor y el sumador utilizadodeben ser de n+1 bits. Una alternativa consiste en reemplazar 3X por−X y generar un
N
N
N
N+1
ADD
Producto Parcial
desplazamiento 2 bits
N+1
N
Yacarreo
0N-12N-1 N
X
0
2X
3X
1
MUX
2
N+1
Figura 3. Multiplicador SM base 4.
acarreo que modifique al siguiente dıgito. Este set de dıgitos es afectado por el acarreosegun el Cuadro 2, en el cual, cy(j − 1) es el acarreo correspondiente a la iteracionanterior, cy(j) es el acarreo que se genera por el evento actual, y2j−1 e y2j son los bitsseleccionados en cada iteracion que generan una salida de los valores [0,−X,X, 2X].Esta alternativa demanda al final de la iteracion n
2 una nueva iteracion, si el ultimodıgito de base 4 genero un bit de acarreo. En la Fig. 4 se muestra el esquema de estemultiplicador. En la misma se observa que requiere una mayor cantidad de recursoslogicos que un SM. Entre estos se puede citar que requiere de un sumador de n + 1o n + 2 bits, pre-calcular 3X o -X, y un multiplexor que conmuta los valores 0, X,2X y 3X etc. Los esquemas de multiplicacion de base 4 ejecutan un producto en n
2iteraciones, sin embargo se requiere un ciclo adicional para cargar los registros con losoperandos. El perıodo de procesamiento para estos multiplicadores es de T = (n
2 +1)Tck
Cuadro 2.
cy(j − 1) y2j−1 y2j salida(j) cy(j)
0 0 0 0 00 0 1 X 00 1 0 2X 00 1 1 −X 11 0 0 X 01 0 1 2X 01 1 0 −X 11 1 1 0 1
N
N
N
N
ADD
Producto Parcial
desplazamiento 2 bits
N
N
Yacarreo
0N-12N-1 N
X
0
2X
-X
1
MUX
2
N
FF
acarreo
y2j-1y +cy2j
Figura 4. Variante del SM base 4.
debiendo adicionar otro ciclo si se considera la variante -X, con lo cual el perıodo esde T = (n
2 + 2)Tck.
2.3. Multiplicador secuencial fraccionado
El multiplicador secuencial fraccionado (SMF) es una variante cuyo objetivo esmejorar la velocidad de ejecucion. Dado que el perıodo TCK no se puede reducir masalla del lımite impuesto por la logica, una mayor velocidad de ejecucion se puedeobtener reduciendo el numero de iteraciones. Dicha reduccion se puede obtener frac-cionando la sumatoria de la Ec. (4).
P =n−1∑j=0
X2j · yj (4)
obteniendo la Ec. 5:
P =k−1∑j=0
X2jyj +n−1∑j=k
X2jyj (5)
La primer semi-sumatoria realiza su proceso en k · TCK y la segunda en (n− k) · TCK
y para el caso particular en que k = n2 , el perıodo de procesamiento para la ejecucion
de cada producto sera T = n2 · TCK .
Se debe considerar que la suma de las dos semi-sumatorias de la Ec. (5) requiere ununico sumador de 2n− k debido a que la primer semi-sumatoria se encontrara despla-zada k veces de la segunda. Por otro lado, dicha suma agrega un retardo tR debido a lalogica involucrada. Este retardo se puede considerar menor o igual que TCK , tomandocomo pauta que el retardo de involucrado en la adicion de los productos parcialeses inferior al retardo definido para un multiplicador SM. Por lo tanto, el perıodo deprocesamiento para este multiplicador estara dado por T = (n
2 + 1) · TCK .
X[n:0] X[n:0]
Y[m/2:0] Y[m:m/2+1]
Y[m:0] x X[n:0]
m/2 nx
MultiplicadorShift and Add
Acumulación
m/2 nx
Figura 5. Diagrama de operacion de un SMF.
En la Fig. 5, se observa el esquema del SMF, donde dos multiplicadores secuen-ciales realizan sus productos simultaneamente y, un perıodo de tiempo despues, susresultados son adicionados.
La aplicacion practica del SMF se puede realizar en base a un SM tradicional o aun SMSR. La utilizacion del SM implica que se deben cargar los datos en los registros,por lo que se requieren n
2 + 2 iteraciones. Por lo que se justifica solo la utilizacion deeste esquema para multiplicadores cuya longitud de palabra haga despreciables las dositeraciones a n
2 . En el caso del SMF basado en un SMSR, el producto se realiza enT = (n
2 + 1) · TCK iteraciones.En cuanto al consumo de recursos logicos, este multiplicador requiere dos multipli-
cadores de n× m2 bits, que comparten el bloque de control, y un sumador de n + 3m
4bits. El control requiere menos recursos debido a que debe realizar menos iteraciones.
2.4. Multiplicacion por sumas consecutivas
Otra opcion para reducir el numero de iteraciones sin tener que pre-computarmultiplos de los operandos, consiste en realizar dos subproductos en forma consecu-tiva. Esta variante es similar al SMbase4 ya que basicamente opera con dıgitos de 2bits. El multiplicador por sumas consecutivas (SMSC) realiza en cada iteracion dossubproductos consecutivos como se puede observar en la Ec. (6).
P = 2n−1
n2−1∑j=0
(yjX22j−(n−1)+ yj+1X22j+1−(n−1))
(6)
La suma de los dos subproductos de la Ec. (6) genera un TCK superior al de unmultiplicador secuencial debido al acarreo de los dos sumadores. Sin embargo, paraciertas longitudes de palabras el incremento en el retardo se ve minimizado contra laventaja de reducir a la mitad la cantidad de ciclos en el perıodo de procesamiento.
El perıodo de procesamiento para la ejecucion de un producto depende del esquemaen que se basa el SMSC. En el caso de un SMSC basado en un SM el perıodo deprocesamiento se reduce a T = (n
2 + 1) · TCK . En el caso de uno basado en un SMSR,el perıodo de procesamiento resulta de T = n
2 · TCK .Un esquema del SMSC basado en SM se muestra en la Fig. 6, donde se observa
que con cada iteracion se realiza la suma en forma consecutiva de dos subproductos,yjX · 2j + yj+1X · 2j+1 de la Ec. (6). El esquema del SMSC basado en el SMSR se
N
ADD
Producto Parcial
desplazamiento 2 bits
Y0N-12N-1 N 1
N-1
ADD
LSB
acarreo
acarreo
X0N-1
N
N
Figura 6. Ejemplo de un SMSC(SM).
muestra en la Fig. 7. En cuanto al consumo de recursos logicos, estos multiplicadores
N
ADD
Producto
desplazamiento 2 bits
0N-12N-1 N
N-1
ADD
LSB
acarreo
acarreo
N
X
Y[bits impares]N
N/2
MUX
Control
Y[bits pares]N
N/2
MUX
Parcial
Figura 7. Ejemplo de un SMSC(SMSR).
duplican el consumo de recursos en cuanto a sumadores y a la logica combinacionalque genera el producto yjX. El control requiere menos recursos debido a que deberealizar menos iteraciones.
3. Evaluacion de los parametros
3.1. Consumo de recursos logicos
El consumo de recursos se puede expresar en terminos de CLBs, compuestos pordos generadores de funciones (FG) y dos FlipFlops (FF). Cada multiplicador estacompuesto por bloques tal como, sumadores, multiplexores, contadores y componen-tes basicos. Estos bloques poseen un consumo de recursos acotado, que en algunoscasos son funcion de la longitud de palabra de los operandos, n. Ejemplo de ello sepresenta en un contador de modulo-n. El mismo es un contador binario de log2 n bitsque utiliza n FFs (FlipFlops) y al menos la misma cantidad de FGs (Function Ge-nerators), consumiendo como mınimo log2(n)
2 CLB’s. En caso de un multiplexor, esteesta conformado solo por logica combinacional que requiere de al menos n− 1 FGs detres entradas. Esto genera un consumo de recursos de n−1
2 CLBs para una longitudde n-bit entradas. El consumo de recursos logicos de un sumador depende del tipo desumador seleccionado. El sumador indicado para la implementacion de los multipli-cadores en las FPGAs seleccionadas, es el sumador de ripple-carry. En este caso, unsumador utiliza n+2 FGs (n
2 +1 celdas basicas) considerando las salidas de acarreo ydesborde. En el caso en que la salida de un sumador deba ser registrada, el consumode recursos logicos en terminos de CLBs es el mismo dado que los FFs son nativos decada celda basica.
A partir de estos conceptos basicos, se desarrollan las ecuaciones que definen elconsumo de recursos logicos en terminos de CLBs para los multiplicadores presentados,Ecs. (7 - 14).
CRSM (n) = 2n +log2 n
2+
52
(7)
CRSMSR(n) = 2n +log2 n
2+
32
(8)
CRSMbase4a(n) =72n +
log2 n
2+ 4 (9)
CRSMbase4b(n) =72n +
log2 n
2+
72
(10)
CRSMFSM(n) =
154
n +log2
n2
2+ 5 (11)
CRSMFSMSR(n) =
154
n +log2
n2
2+ 3 (12)
CRSMSCSM (n) = 3n +log2
n2
2+
72
(13)
CRSMSCSMSR(n) = 3n +
12
log2
n
2+ 2 (14)
3.2. Comportamiento temporal
El comportamiento temporal de los multiplicadores presentados depende de dosfactores: el retardo inherente de las compuertas logicas y/o registros, y el impuesto
por la interconexion entre las mismas. En la mayorıa de los circuitos realizados enFPGA el desempeno de los mismos no puede ser estimado hasta despues de ser imple-mentado debido a que los retardos de interconexion recien se conocen una vez realizadaesta tarea. Sin embargo, en el caso de sumadores y contadores que utilizan recursos de-dicados de logica de acarreo es posible estimar un desempeno temporal aproximado [7].El perıodo mınimo de reloj que se puede utilizar con los multiplicadores presentadosdepende del retardo de propagacion de la ruta mas crıtica.
Las Ecs. (15-19) resumen el retardo de propagacion de esta ruta expresados enns para los multiplicadores presentados tomando como referencia los retardos de unaFPGA de Xilinx de la familia Spartan [8]. Cabe destacar que el retardo de propaga-cion define el maximo reloj utilizable para un dado multiplicador. En el caso de losmultiplicadores implementados a partir de un SM o un SMSR, el retardo es el mismo,siendo la diferencia entre ambos el numero de iteraciones necesarias para ejecutar unproducto.
tSM (n) =n
4+ 8,3 (15)
tSMbase4a(n) =n
4+ 14,2 (16)
tSMbase4b(n) =n
4+ 12,5 (17)
tSMF (n) =n
4+ 8,45 (18)
tSMSC(n) =n
4+ 13,15 (19)
4. Comparacion de los multiplicadores
A partir de las Ecs. (7 - 19) se realizo una comparacion de los multiplicadorespresentados. En la Fig. 8 se muestra el consumo estimado de recursos logicos de losmultiplicadores. Se puede observar que los multiplicadores optimizados en velocidadsacrifican el consumo de recursos logicos a costa de obtener una mayor velocidad deprocesamiento. Los multiplicadores del tipo SMSC son los que consumen la menorcantidad de recursos, mientras que los del tipo SMF poseen un consumo entre un 30 yun 40 % mayor. Por otro lado, los multiplicadores de base 4 poseen un consumo entreun 15 y un 20 % mayor.
La velocidad de procesamiento (PS [Mflop])se obtiene como resultado de dividirla frecuencia maxima de trabajo por el numero de ciclos que requiere realizar unaoperacion N , PS = fck
N . La misma se expresa en millones de operaciones por segundo.En la Fig. 9 se muestra una comparacion de las velocidades de procesamiento de losmultiplicadores. En la misma se puede observar que el SMF(SMSR) presenta la mayorvelocidad de procesamiento para todo n. Adicionalmente, la variante SMF(SM) salvopara el caso de n = 8, posee una buena velocidad de procesamiento aunque inferior ala del SMF(SMSR) debido a que requiere de una iteracion adicional. El SMSC(SMSR)posee una buena velocidad de procesamiento para n < 14 bits, pero para n mayoreses similar a la del SMbase4(-X). Se observa tambien que las otras variantes presentanvelocidades inferiores a las del SMF(SMSR), pero superiores a la del SMbase4(3X).
5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 8. Consumo de recursos logicos de los multiplicadores.
5 10 15 20 25 30 350
2
4
6
8
10
12
14
16
18
20
n
PS
[Mop
s]
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 9. Velocidad de procesamiento de los multiplicadores.
4.1. Performance de los multiplicadores
A fin de estimar los beneficios de cada variante, se propone un unico indicador, elındice de performance p, definido por la Ec. (20) donde la Velocidad de Procesamientoesta definida en Millones de Operaciones por Segundo y el Area como la fraccion derecursos utilizados para una determinada FPGA, (Total de la FPGA = 1).
p =Velocidad de Procesamiento [Mops]
Area(20)
En la Fig. 10 se muestra el ındice en el intervalo 8 ≤ n ≤ 20 para una FGPA de400 CLB’s, en la cual se puede observar que los multiplicadores SM y SMSC(SMSR)obtienen el mejor desempeno. En la Fig. 11 se muestra el ındice para el intervalo20 ≤ n ≤ 32 donde observa que el mayor valor lo comparten los multiplicadores SMy SMSC(SM). Esto se debe a que el SCSC(SM) consume menor cantidad de recursosque el SMSC(SMSR) y, a medida que aumenta n, la velocidad de procesamiento deambos multiplicadores se hace mas parecida.
8 10 12 14 16 18 20
50
100
150
200
250
n
Per
form
ance
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 10. Indice de performance [8,20].
5. Conclusiones
En este trabajo se presento un estudio comparativo de multiplicadores secuencialesdestinados a su implementacion en FPGA. Se presentaron las estimaciones de consu-mo de recursos logicos y de comportamiento temporal que permiten contrastar lascaracterısticas de los multiplicadores presentados.
A partir de estas comparaciones se puede observar que el SM, el SMSR y los SMSCson los multiplicadores que mejor balancean la relacion entre consumo de recursos logi-cos y velocidad de procesamiento. Resultando el SMSR el optimo para aplicaciones
20 22 24 26 28 30 325
10
15
20
25
30
35
n
Per
form
ance
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 11. Indice de performance [20,32].
donde se busca una reducida cantidad de recursos logicos, y el SMSC en aplicacio-nes donde ademas de las restricciones de recursos se requiere una alta velocidad deprocesamiento.
Referencias
1. Funes, M., Carrica, D., Benedetti, M.: Multiplicadores secuenciales para estructuras FP-GA. IX Reunion de Trabajo en Procesamiento de la Informacion y Control. Vol. II (2001)646–651
2. Hennessy, J.L., Patterson, D.: Computer Architecture: A Quantitative Approach. MorganKaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8 (1996)
3. Hayes, J.P.: Introduccion al Diseno Logico Digital. Addison-Wesley Iberoamericana,Wilmington, Delaware, E.U.A (1996)
4. Thornton, M., Gaiche, J.D.and Lemieux, J.: Tradeoff analysis of integer multiplier circuitsimplemented in FPGAs. Communications, Computers and Signal Processing IEEE PacificRIM Conference (1999) 301–304
5. Teixeira, D., Susim, A., Carro, L.: Comparacion de multiplicadores en fpga. V WorkshopIberchip 1 (Enero 1999) 182–187
6. Parhami, B.: Computer Arithmetic: Algorithms and Hardware Design. Oxford UniversityPress, New York, Oxford (2000)
7. New, B.: Estimating the performance of XC4000E adders and counters. Technical ReportXapp 018, Xilinx (1996)
8. : The Programable Logic Data Book. Xilinx (2000)
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
Estudio comparativo de multiplicadores secuencialesimplementados en FPGA
M. Funes†, D. Carrica‡, M. Benedetti‡, P. Donato‡
†UNMDP, Facultad de Ing. - [email protected]
Resumen— En este trabajo se presenta un es-tudio comparativo de multiplicadores secuencialesorientado a su implementacion en FPGA. Se exponenlos resultados de las implementaciones, las que permi-ten contrastar las caracterısticas de los multiplicado-res presentados.
Palabras Clave— Multiplicadores, Secuencia-les, FPGA, Recursos logicos, Velocidad de procesa-miento.
I. INTRODUCCION
La multiplicacion es una de las operaciones escen-ciales en el procesamiento aritmetico. Adicionalmente,es una de las tareas que mas recursos logicos consume.Decadas atras cuando la arquitectura del multiplicadorera estudiada para su implementacion en circuitos de pro-cesadores o unidades aritmeticas de calculo, el consumode recursos circuitales era aceptado por la necesidad derealizar los calculos mas rapidamente.
Actualmente, la utilizacion de las FPGAs permite el di-seno personalizado de sistemas de procesamiento, lo cualha masificado la aplicacion de los mismos. La implemen-tacion en una FPGA de una unidad de calculo con un granconsumo de recursos logicos obliga a utilizar una FPGAde gran tamano, lo que implica un mayor costo de pro-duccion. Con el objeto de reducir el consumo de recursoslogicos Funes et al. (2001) propusieron la utilizacion delesquema de multiplicacion Shift and Add (Hennessy andPatterson, 1996), (Hayes, 1996) , denominado tambienMultiplicador Secuencial (SM), para sistemas basados enFPGA. Este multiplicador ejecuta un producto en formasecuencial y se caracteriza por utilizar una cantidad redu-cida de recursos logicos. Como contrapartida por su en-tidad secuencial, este multiplicador demanda un perıodomayor para ejecutar un producto. Existen variantes delmultiplicador SM que reducen este perıodo a costa de unmayor consumo de recursos logicos (Parhami, 2000).
En este trabajo se presenta un estudio comparativo delos multiplicadores secuenciales y algunas variantes delos mismos optimizadas en velocidad, con el objetivo deobtener buenas alternativas para la utilizacion de multi-plicadores en FPGA sin comprometer los recursos del
sistema desarrollado. Resultados experimentales permi-ten distinguir las caracterısticas de cada uno de los multi-plicadores presentados.
II. Multiplicador secuencial
Dados dos operandos, un multiplicando X =n−1∑j=0
xj2j , y un multiplicador Y =n−1∑j=0
yj2j , el Cuadro
1 muestra el proceso de multiplicacion para n = 4. ElSM realiza el producto de este cuadro en forma secuen-cial, acumulando un producto parcial yiX (i = 0, 1, 2, 3)al resultado acumulado de la iteracion anterior con el de-bido desplazamiento de un bit entre ambos.
Cuadro 1:x3 x2 x1 x0
y3 y2 y1 y0
s03 s02 s01 s00 ≡ y0X20
s13 s12 s11 s10 ≡ y1X21
+ s23 s22 s21 s20 ≡ y2X22
s33 s32 s31 s30 ≡ y3X23
p7 p6 p5 p4 p3 p2 p1 p0 ≡ P
Existen dos versiones dependiendo del sentido de losvalores a acumular, con desplazamiento a la izquierda ocon desplazamiento a la derecha.
En la multiplicacion con desplazamiento a la izquierdase debe contar con un acumulador de longitud 2n bits.En este caso los productos parciales yjX son adicionadosal resultado acumulado con un desplazamiento de un bit(21) hacia la izquierda, respecto al anterior. El algoritmose puede analizar a partir de la Ec. (1), donde p(j) es elproducto parcial de la iteracion j.
p(j + 1) = 2p(j) + y(n−1)−jX con p(0) = 0 (1)
En la multiplicacion con desplazamiento a la derechalos productos parciales yjX son adicionados al resultadoacumulado con un desplazamiento de un bit (2−1) haciala derecha respecto al anterior.
El algoritmo se observa en la Ec. (2).
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
p(j + 1) = (p(j) + yjX2n)2−1 con p(0) = 0 (2)
Debido a que el desplazamiento a la derecha generaun primer producto parcial multiplicado por 2−n se debepre-multiplicar y0X por 2n para compensar el efecto deldesplazamiento. Esta pre-multiplicacion se puede efec-tuar facilmente, almacenando p(j) en el segmento massignificativo de un registro de 2n bit.
La implementacion hardware del algoritmo de la mul-tiplicacion con desplazamiento a la derecha se puede ob-servar en la Fig. 1. El multiplicador Y y la acumulacionde los productos parciales p(j) son almacenados en re-gistros de desplazamiento. El bit yj del multiplicador esel bit menos significativo existente en el registro Y enla iteracion j. El mismo es utilizado en el producto yjXseleccionando 0 o X en la suma.
ADD
X
Producto Parcial
desplazamiento
n
n
Yacarreo
0n-12n-1 n
0n-1
nn
Figura 1: SM con desplazamiento a la derecha.
Si bien ambos algoritmos presentados realizan n su-mas y n desplazamientos, las sumas realizadas con el al-goritmo de desplazamiento a la izquierda requieren unsumador del doble de tamano respecto del algoritmo dedesplazamiento a la derecha. Esto se debe a que el aca-rreo de la suma se debe extender hacia los bits mas signi-ficativos. Por lo tanto, el algoritmo mas utilizado es el dedesplazamiento a la derecha.
El multiplicador SM requiere n iteraciones para la eje-cucion del producto y una iteracion previa para la cargade los operandos. Por lo tanto este multiplicador puederealizar un producto en un perıodo T = (n + 1)TCK ,donde n es la longitud de los operandos y TCK el perıodode reloj aplicado sobre el multiplicador.
A. Multiplicador secuencial sin entradasregistradas
El multiplicador secuencial sin entradas registradas(SMSR) es una variante del multiplicador SM de despla-zamiento a la derecha. El objetivo del SMSR es la simpli-ficacion del esquema de multiplicacion evitando la cargaparalelo de los registros del multiplicador y del multipli-cando, para lo cual, los datos deben permanecer establesdurante toda la operacion. Existiendo esta condicion, elSMSR no carga los operandos, por lo que no existe lademora propia del ciclo de carga, lo cual constituye unaventaja. Por lo tanto, este multiplicador realiza el produc-to en un T = nTCK .
En la Figura 2 se puede observar un esquema delSMSR, el cual utiliza un sumador de n bits y realiza laseleccion de los bits yj mediante un multiplexor de n en-tradas.
ADD
X
Producto
desplazamiento
n
n
Y
Parcialacarreo
0n-12n-1 n
nn
n
MUX
Control
Figura 2: SMSR.
El control del multiplicador, que no se muestra en laFigura 2, consiste en un contador que ejecuta la seleccionde los yj y que a su vez mantiene el numero de iteracionrealizada. La inicializacion del multiplicador se realizalimpiando el registro Producto Parcial y el contador, y esrequisito para este multiplicador que los datos se encuen-tren presentes durante todo el ciclo de la multiplicacion,tal como en un multiplicador paralelo tradicional.
B. Multiplicador SM de base 4 o superiorEsta variante de multiplicacion secuencial, reduce
la cantidad de iteraciones en base a la representacionnumerica.
Un numero binario de n-bits puede ser representadocomo un numero de n
2 -dıgitos de base 4 o n3 -dıgitos de
base 8. De este modo, es posible realizar un producto enmenor tiempo de calculo si se ejecuta una multiplicacionde un dıgito por vez en lugar de hacerlo bit a bit.
La expresion general para este tipo de multiplicaciones la de la Ec. (3):
p(j + 1) = (p(j) + yjXrn)r−1 (3)
con p(0) = 0.En el caso de la multiplicacion en base 4, se debe con-
formar el producto parcial [yj+1 yj ]2X y adicionarlo alresultado de la iteracion anterior. Mientras que en la mul-tiplicacion de base 2 cada producto parcial esta represen-tado por el valor 0 o por una version desplazada de X , enla multiplicacion de base 4 el producto parcial toma losvalores 0, X , 2X o 3X . El metodo mas directo para laejecucion de esta multiplicacion se realiza mediante unaasignacion pre-calculada de los productos parciales.
Un diagrama de este tipo de multiplicador se muestraen la Fig. 3. En el mismo se debe considerar que mien-tras los tres primeros valores de los productos parcialesse pueden utilizar en forma directa, el valor 3X requie-re un tiempo adicional para la ejecucion del calculo deX + 2X . Ademas, se debe considerar que el valor pre-calculado de 3X puede exceder el rango de X , por lo queel multiplexor y el sumador utilizado deben ser de n + 1bits.
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
n+2
n+2
n+2
n+2
ADD
Producto Parcial
desplazamiento 2 bits
n+2
n
Yacarreo
0n-12n-1 n
X
0
2X
3X
1
MUX
2
n+2
Figura 3: Multiplicador SM base 4.
Una alternativa consiste en reemplazar 3X por −X ygenerar un acarreo que modifique al siguiente dıgito. Esteset de dıgitos es afectado por el acarreo segun el Cuadro2, en el cual, cy(j − 1) es el acarreo correspondiente a laiteracion anterior, cy(j) es el acarreo que se genera porel evento actual, y2j−1 e y2j son los bits seleccionadosen cada iteracion que generan una salida de los valores[0,−X, X, 2X]. Esta alternativa demanda al final de laiteracion n
2 una nueva iteracion, si el ultimo dıgito de base4 genero un bit de acarreo.
Cuadro 2: Codificacion de los bits del multiplicadorcy(j − 1) y2j−1 y2j salida(j) cy(j)
0 0 0 0 00 0 1 X 00 1 0 2X 00 1 1 −X 11 0 0 X 01 0 1 2X 01 1 0 −X 11 1 1 0 1
El diagrama de este multiplicador se puede observar enla Fig. 4.
n+1
n+1
n+1
n+1
ADD
Producto Parcial
desplazamiento 2 bits
n+1
n
Yacarreo
0n-12n-1 n
X
0
2X
-X
1
MUX
2
n+1
FF
acarreo
y y +cy2j-1 2j
Figura 4: Variante del SM base 4.
En la Fig. 4 se puede observar que este esquema re-quiere una mayor cantidad de recursos logicos que un
SM. Entre estos se puede citar que requiere de un suma-dor de n + 1 o n + 2 bits, pre-calcular 3X o -X, y unmultiplexor que conmuta los valores 0, X, 2X y 3X etc.
Los esquemas de multiplicacion de base 4 ejecutan unproducto en n
2 iteraciones, sin embargo se requiere un ci-clo adicional para cargar los registros con los operandos.El perıodo de procesamiento para estos multiplicadoreses de T = (n
2 + 1)Tck debiendo adicionar otro ciclo sise considera la variante -X, con lo cual el perıodo es deT = (n
2 + 2)Tck.Estas variantes se pueden extender a multiplicado-
res de bases superiores, pero la estructura del multipli-cador se vuelve compleja debido a que se debe pre-computar una mayor cantidad de valores y consecuen-temente el numero de iteraciones deja de ser menor quen2 +1. Por ejemplo, para un producto de base 8, se debenpre-computar los valores de 3X, 5X y 7X , o solo pre-computar 3X y utilizar un esquema de acarreo similar alde la Fig. 4 para convertir a 5X , 6X y 7X en−3X ,−2Xy −X .
C. Multiplicador secuencial fraccionadoEl multiplicador secuencial fraccionado (SMF) es una
variante cuyo objetivo es mejorar la velocidad de ejecu-cion. Dado que el perıodo TCK no se puede reducir masalla del lımite impuesto por la logica, una mayor veloci-dad de ejecucion se puede obtener reduciendo el numerode iteraciones. Dicha reduccion se puede obtener fraccio-nando la sumatoria de la Ec. (4).
P =n−1∑j=0
X2j · yj (4)
Si se fracciona la sumatoria, entonces el producto sepuede realizar como la suma de dos semi-sumatorias:
P =k−1∑j=0
X2jyj +n−1∑j=k
X2jyj (5)
El producto resultante utilizando como base la de unSM con desplazamiento a la derecha esquema se puedeobservar en la Ec. (6).
P = 2n−1
k∑j=0
X · 2j−(n−1)yj +n−1∑j=k
X · 2j−(n−1)yj
(6)
La primer semi-sumatoria realiza su proceso en k·TCK
y la segunda en (n − 1 − k) · TCK . Si las dos semi-sumatorias se llevan a cabo al mismo tiempo y se sumansus resultados con el debido desplazamiento, el perıodode proceso estara dado por:
k · TCK si k > (n− 1)− ko
((n− 1)− k) · TCK si k < (n− 1)− k
y para el caso particular en que k = n2 , el perıodo de pro-
cesamiento para la ejecucion de cada producto sera T =n2 · TCK .
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
Se debe considerar que la suma de las dos semi-sumatorias de la Ec. (6) requiere un unico sumador de2n − k debido a que la primer semi-sumatoria se encon-trara desplazada k veces de la segunda. Por otro lado, di-cha suma agrega un retardo tR debido a la logica invo-lucrada. Este retardo se puede considerar menor o igualque TCK , tomando como pauta que el retardo de involu-crado en la adicion de los productos parciales es inferioral retardo definido para un multiplicador SM. Por lo tan-to, el perıodo de procesamiento para este multiplicadorestara dado por T = (n
2 + 1) · TCK .
X[n:0] X[n:0]
Y[m/2:0] Y[m:m/2+1]
Y[m:0] x X[n:0]
m/2 nx
SM
Acu
mu
laci
ón
m/2 nx
Figura 5: Diagrama de operacion de un SMF.
En la Fig. 5, se observa el esquema del SMF, dondedos multiplicadores secuenciales realizan sus productossimultaneamente y, un perıodo de tiempo despues, sus re-sultados son adicionados.
La aplicacion practica del SMF se puede realizar enbase a un SM tradicional o a un SMSR. La utilizacion delSM implica que se deben cargar los datos en los regis-tros, por lo que se requieren n
2 +2 iteraciones. Por lo quese justifica solo la utilizacion de este esquema para mul-tiplicadores cuya longitud de palabra haga despreciableslas dos iteraciones a n
2 . En el caso del SMF basado enun SMSR, el producto se realiza en T = (n
2 + 1) · TCK
iteraciones.En cuanto al consumo de recursos logicos, este multi-
plicador requiere dos multiplicadores de n× m2 bits, que
comparten el bloque de control, y un sumador de n + 3m4
bits. El control requiere menos recursos debido a que de-be realizar menos iteraciones.
D. Multiplicacion por sumas consecutivas
Otra opcion para reducir el numero de iteraciones sintener que pre-computar multiplos de los operandos, con-siste en realizar dos subproductos en forma consecutiva.Esta variante es similar al SMbase4 ya que basicamenteopera con dıgitos de 2 bits. El multiplicador por sumasconsecutivas (SMSC) realiza en cada iteracion dos sub-productos consecutivos como se puede observar en la Ec.(7).
P = 2n−1
n2−1∑j=0
(yjX22j−(n−1)+ yj+1X22j+1−(n−1))
(7)
La suma de los dos subproductos de la Ec. (7) generaun TCK superior al de un multiplicador secuencial debi-do al acarreo de los dos sumadores. Sin embargo, paraciertas longitudes de palabras el incremento en el retardose ve minimizado contra la ventaja de reducir a la mitadla cantidad de ciclos en el perıodo de procesamiento.
El perıodo de procesamiento para la ejecucion de unproducto depende del esquema en que se basa el SMSC.En el caso de un SMSC basado en un SM el perıodo deprocesamiento se reduce a T = (n
2 +1) ·TCK . En el casode uno basado en un SMSR, el perıodo de procesamientoresulta de T = n
2 · TCK .Un esquema del SMSC basado en SM se muestra en la
Fig. 6, donde se observa que con cada iteracion se realizala suma en forma consecutiva de dos subproductos, yjX ·2j + yj+1X · 2j+1 de la Ec. (7).
n
ADD
Producto Parcial
desplazamiento 2 bits
Y0n-12n-1 n 1
n-1
ADD
LSB
acarreo
acarreo
X0n-1
n
n
Figura 6: Ejemplo de un SMSC(SM).
El esquema del SMSC basado en el SMSR se muestraen la Fig. 7.
n
ADD
Producto
desplazamiento 2 bits
0n-12n-1 n
n-1
ADD
LSB
acarreo
acarreo
n
X
Y[bits impares]n
n/2
MUX
Control
Y[bits pares]n
n/2
MUX
Parcial
Figura 7: Ejemplo de un SMSC(SMSR).
En cuanto al consumo de recursos logicos, estos mul-tiplicadores duplican el consumo de recursos en cuanto asumadores y a la logica combinacional que genera el pro-ducto yjX . El control requiere menos recursos debido aque debe realizar menos iteraciones.
III. Comparaciones
Los multiplicadores presentados en secciones anterio-res se implementaron en una FPGA Spartan XCS30 deXilinx (The Programable Logic Data Book, 2000). Ca-da una de las variantes de los multiplicadores se imple-mento en primera instancia mediante captura esquemati-ca y posteriormente en Lenguaje de Descripcion de Hard-ware (VHDL) (Ghosh, 1999)- (Villar et al., 1997).
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
Todos los circuitos han sido evaluados segun los recur-sos logicos consumidos, la velocidad de procesamiento yun ındice de performance.
A. Recursos logicosLa cantidad de recursos logicos o area de utilizacion
de la FPGA se puede cuantificar en CLBs, compuestoscada uno por dos generadores de funciones (FG) y dosFlipFlops (FF).
En la Fig. 8 se muestran los resultados de los multi-plicadores en cuanto al consumo de CLBs. En la mismase puede observar que el numero de CLBs aumenta enforma lineal con n para todos los multiplicadores.
En la misma se puede observar la diferencia notablede consumo de recursos entre los multiplicadores SM,SMSR y los multiplicadores optimizados en velocidad.En el caso particular del SMbase4(-X), este posee un con-sumo que duplica al del SM. Esto se debe fundamental-mente a que se sacrifican recursos para obtener mayorvelocidad.
0 5 10 15 20 25 30 350
20
40
60
80
100
120
n
CLB
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 8: Consumo de recursos logicos.
Si se comparan entre sı los multiplicadores optimiza-dos en velocidad, se puede observar que el SMSC(SM) esel multiplicador que posee el menor consumo de recursoslogicos. Por otro lado, el multiplicador SMF(SMSR) re-quiere una mayor cantidad de recursos que los restantesmultiplicadores.
B. Velocidad de procesamientoLa velocidad de procesamiento fd, se expresa en mi-
llones de operaciones por segundo Mops, y se obtienecalculando la inversa del producto del retardo de propa-gacion del camino crıtico por el numero de ciclos querequiere realizar una operacion, fd = 1
tpdN . El retardode propagacion tpd se obtiene a partir de la herramien-ta de programacion de FPGA de Xilinx, Foundation 3.1i,Timimg Analyzer. A partir de los datos sumnistrados secalcula el peor caso de temporizacion del diseno.
En la Fig. 9 se presentan los resultados experimentalesde la velocidad de procesamiento de los multiplicadores.
En esta figura se pueden observar los resultados obteni-dos por cada multiplicador. En la misma, la variante delmultiplicador SMF(SMSR) es la que obtiene la mayor ve-locidad. Por otro lado, se puede observar que el multipli-cador SMSC(SMSR) posee una relacion mas balanceadaentre consumo de recursos logicos y velocidad de proce-samiento.
5 10 15 20 25 30 350
2
4
6
8
10
12
14
16
18
n
PS
[Mop
s]
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 9: Velocidad de procesamiento.
Los multiplicadores SM y SMSR como se esperaba,poseen una velocidad de procesamiento inferior debido ala cantidad de ciclos de reloj necesarios para ejecutar unproducto.
C. PerformanceSe establece un ındice de performance de manera de
poder evaluar el desempeno global del sistema imple-mentado en la FPGA, incluyendo tanto el concepto deconsumo de recursos como de velocidad de procesamien-to. En la Ec. (8) se define el ındice de performance p.
p =Velocidad de Procesamiento [Mops]
Area(8)
En esta ecuacion, la Velocidad de Procesamiento es-ta definida en Millones de Operaciones por Segundo yel Area como la fraccion de recursos utilizados para unadeterminada FPGA, (Total de la FPGA = 1). Este ındicepretende poder comparar la performance de distintos ti-pos de multiplicadores para su utilizacion en una FPGAdesignada.
En la Fig. 10 se grafica el ındice de performance pa-ra un rango de 8 < n < 20 bits. En la misma se puedeobservar que el mayor ındice lo comparten los multipli-cadores SM y SMSC(SMSR). Una forma de interpretareste resultado es analizando una posible aplicacion deestos multiplicadores. Dado el caso en que una aplica-cion requiere realizar un cierto numero de productos enun mismo instante, este indica que resulta tan eficienteutilizar arreglos paralelos de multiplicadores SMSR co-mo realizar todos los productos mas rapidamente en unsolo SMSC(SMSR).
XII Reunion de Trabajo en Procesamiento de la Informacion y Control, 16 al 18 de octubre de 2007
5 10 15 20
50
100
150
200
250
n
Per
form
ance
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 10: Indice de performance, n ≤ 20.
En la Fig. 11 se grafica el ındice de performance paraun rango de 20 < n < 32 bits. En esta figura se puedeobservar que el mayor ındice lo comparten los multiplica-dores SM y SMSC(SM). Esto se debe a que el multiplica-dor SMSC(SM) consume menor cantidad de recursos queel SMSC(SMSR) y a medida que aumenta la longitud depalabra de los operandos, la velocidad de procesamientode ambos multiplicadores se hace mas parecida.
IV. CONCLUSIONES
En este trabajo se presento un estudio comparativo demultiplicadores secuenciales los cuales constituyen unabuena alternativa para la utilizacion en FPGA. Se presen-taron resultados experimentales que permiten distinguirlas caracterısticas de cada uno de los multiplicadores pre-sentados.
A partir de estas caracterısticas se puede observar queel SM y los SMSC son los multiplicadores que mejorbalancean la relacion entre consumo de recursos logi-cos y velocidad de procesamiento. Resultando el optimoel primero para aplicaciones de muy reducida cantidadde recursos logicos, y el segundo en aplicaciones dondeademas de las restricciones de recursos se requiere incre-mentar la velocidad de procesamiento.
REFERENCIAS
Funes, M., D. Carrica and M. Benedetti (2001). Mul-tiplicadores secuenciales para estructuras FPGA. IXReunion de Trabajo en Procesamiento de la Informa-cion y Control. Vol. II, 646–651.
Ghosh, Sumit (1999). Hardware Description LanguagesConcepts and Principles. IEEE Press. 445 Hoes Lane,P.O. Box 1331 Piscataway, NJ 08855-1331.
Hayes, John P. (1996). Introduccion al Diseno Logico Di-gital. Addison-Wesley Iberoamericana. Wilmington,Delaware, E.U.A.
20 22 24 26 28 30 325
10
15
20
25
30
35
n
Per
form
ance
SMSMSRSMbase4 (3X)SMbase4 (−X)SMF (SM)SMF (SMSR)SMSC (SM)SMSC (SMSR)
Figura 11: Indice de performance 20 ≤ n ≤ 32.
Hennessy, John L. and David Patterson (1996). Compu-ter Architecture: A Quantitative Approach. MorganKaufmann Publishers, Inc.. San Francisco, CaliforniaISBN: 1-55860-329-8.
Parhami, Behrooz (2000). Computer Arithmetic: Algo-rithms and Hardware Design. Oxford UniversityPress. New York, Oxford.
Teixeira, Denis, Altamiro Susim and Luigi Carro (1999).Comparacion de multiplicadores en fpga. V WorkshopIberchip 1, 182–187.
The Programable Logic Data Book
The Programable Logic Data Book (2000). Xilinx.
Thornton, M.A. and J.V Gaiche, J.D.and Lemieux (1999).Tradeoff analysis of integer multiplier circuits im-plemented in FPGAs. Communications, Computersand Signal Processing IEEE Pacific RIM Conferencepp. 301–304.
Villar, E., L. Teres, S. Olcoz and Y. Torroja (1997). VHDLLenguaje Estandar de Diseno Electronico. McGrawHill. Madrid.
Floating Point Multiplierswith Reduced FPGA Area
M. Funes, D.Carrica, and M. Benedetti
Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
Abstract. FPGA based Floating Point Multipliers demand abundant logicalresources. This paper presents a sequential structure of floating-point multi-plier requiring a reduced number of resources. The proposed architecture wasevaluated theorically and experimentally achieving a substantially good per-formance.
1 INTRODUCTION
Many computationally-intensive applications found in Digital Signal Processing (DSP)employ the parallel processing capability of Field Programmable Gate Arrays (FPGAs)to obtain a high processing speed [4] [5]. FPGAs combine the flexibility of a general-purpose, programmable digital signal processor with the speed and density of a customhardware implementation. A digital processing implementation into a target FPGAshould be optimized in terms of logic resources consumption.to achieve a good perfor-mance and cost-effectiveness.
Digital Signal Processing mainly involves multiply operations which can be eitherfix or floating point, depending on the operand-range. The latter is used to reduceoverflow problems often observed in fixed point formats. A number expressed in floatingpoint format consist of a sign bit S, a biased exponent e of r bits and the fractional fof n bits. These elements express a number given by the following equation:
op = (−1)S × 2e−bias × 1.f (1)
Floating point multiplications involve sign setting, e exponent addition (with biascorrection) and mantissa product (including the leading bit). The latter is performed asan integer multiplication and is the most logic resources consummer. Furthermore, themultiplication is often executed in parallel way, that is, by developing simultaneouslythe product shown in Eq.(2):
p = 1.fx × 1.fy =n∑
i=0
[yi × (1xn−1..x3x2x0)] · 2i (2)
�� This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) andthe Agencia Nacional de Promocion Cientıfica y Tecnologica (BID 1201/OC-AR 2002).Theauthors are with the Department of Electronics, Universidad Nacional de Mar del Plataand CONICET, Argentina.
where 1.fx = {xn..x2x0} and 1.fy = {yn · · · y2y0} are mantissas of n + 1 bits, and xn
and yn both ’1’.There are two key factors of the FPGA multiplier design, the processing speed
and used area. There exists a tradeoff between logic resources and processing speed.Some multiplier schemes increase the processing speed but also increases the logicconsumption [9]. Increments in the FPGA used area reduce the maximum operatingfrequency. Consequently there exist a technological boundary where increasing of theimplementation complexity does not lead to an increment in the processing speed.Several authors studied and proposed different parallel schemes of FPGA Floating-Point Multipliers in order to reduce logic consumption [10] [8] [3].
This article proposes a novel floating-point multiplier leading to a meaningful areareduction without relegating much processing speed. An estimation of the logic re-sources consumption of the proposed scheme is generated in order to evaluate itsconsumption against the often used by parallel multipliers. Latter, the multiplier wasimplemented on several platforms and evaluated in terms of logical resources andspeed. Finally, the proposed multiplier is compared with multipliers referenced in theliterature.
2 Proposed Multiplier
This paper suggests the utilization of a Sequential Multiplication (SM) to reduce thelogic resources consumption. This multiplication algorithm executes a product usinga single adder, Eq. (3):
p = 2n−1
[n−1∑i=0
yiX · 2i−n+1
](3)
This adder performs successive accumulations of subproducts shifted by the corre-sponding value.
Some schemes can be found in literature like the multiplier of Hennesy shown inFigure 1 [7]. In each multiply step, the multiplier performs two tasks. First if theleast-significant bit of Y is 1, register X is added to P , otherwise ”00...00” is addedto P . Finally, the result will be stored back into P . The registers P and Y are shiftedright, the carry bit of the sum is moved into the high-order bit of P and the low-orderof P is moved into register Y . After N steps, the result is in the 2n-bit register PY .
The integer multiplication result has a 2n-bits wordlength, but floating-point mul-tiplication only needs the n-most significant bits of the result wich are stored in registerP . Consequently, there is no need in shifting bits into register Y of an integer multipli-erdesigned for floating point multiplication. This lead to simplified integer multipliershown in Fig. 2. This scheme is based on a stage counter and the multiplexer to executethe partial products. In this scheme, the partial product is added to the last shiftedresult and is stored in the corresponding output registers.
The product normalization depends on the integer multiplication result. This resultis a n-bit word plus a carry bit. If this carry bit is ‘1’, the result must be rightshiftedto be normalized. This operation can be achieved with the existing resources, addingan extra clock pulse and setting the non-feedback add input to zero.
ADD
X
YP
SHIFT
nn1
n
Fig. 1. Shift and Add multiplier.
MUX
COUNTER
ADD FF´s
X[n:0]
P[n-1:0]Y[n:0]
P[n:1]
carry
Fig. 2. Integer sequential multiplier.
Biased exponent of the product result is given by
ep = ex + ey − bias + carry (4)
This operation is performed by adding the biased exponents (ex,ey) and the number−bias + carry expressed in two´s complement. In order to reduce logic the numbers(−bias + 0) and (−bias + 1) are precalculated and added to ex + ey according to thecarry value.
After the design structure is defined, the logic resources consumption of the pro-posed floating point multiplier can be estimated. The logic resources consumption ina FPGA can be expressed in terms of it basic logic cells. Each basic cell contains twoFlip Flop (FF) that can be used to store a function generator output (FG). However,the storage elements and function generators can also be used independently.
Each component of the multiplier can be analized in terms of its function, inputand output nets, and if its outputs must be registered. Furthermore, in the design thereare many macro components like adders, multiplexers, counters, and primitive compo-nents. A n-module counter is a binary of at least log2 n bits counter. Consequently ituses n FFs and almost the same quantity of FGs. Then, the n-module counter consumslog2(n)
2 basic cells. A n-bit multiplexer is combinational logic which it needs at leastlog2(n) stages of three input FGs. The multiplexer used in the design has a registered
output in the last stage resulting in a component that consums
log2 n�
i=1(n·2−i)
2 for n-bit
inputs. The logic consumption of the n-bit adder depends of the adder seleted. Usu-ally, the often used adder is the ripple carry adder wich optimize the fast carry logicprovided by the manufacturers in each basic cell. In this case, a n-bit adder use n + 2FGs (n
2 + 1 basic cell) considering the carry and the overflow output. If the outputof the used adder must be registered, the logic consumption estimation is the samebecause the FFs are native of each basic cell.
Equation 5 summaries the estimated logic resources consumption of the PFPMexpressed in terms of basic cells of a n-bit wordlength mantissa including the leadingbit implied on the representation 1.f . This equation take in consideration the FGs andFFs that can be merged together into a same cell.
PFPM(n, r) =
log2 n+1∑i=1
(n · 2−i)
2+
log2(n + 1)2
+ n +132
+ r (5)
3 Comparison of the FPGA area
The logic resources used by the PFPM is compared with floating point multiplier wichare based on fixed point multipliers reported in the literature. For this purposes, thefloating point multiplier structure was designed considering the integer multiplier as aninterchangeable unit. Several parallel multipliers with a reported logic consumptionwere selected [2]. The integer multiplier and their respective logic consumption forfloating point multiplication implementation are: Guild scheme with a high throughputdue to the use of parallelism and pipelining, Eq. (6). Second, a McCanny - McWhirtermultiplication scheme with local communication between its basic cells, Eq. (7). Third,a Carry Save unit with constant delay in the carry chains Eq. (8) and fourth a RippleCarry multiplication unit which take advantage of the fast carry logic nets providedby the manufacturer. Eq. (9). For this estimation it was considered the effect of thelogic not used by the n less significant bits of the integer multiplication, but the logicconsumption reduction in this multipliers was neglected due to its little difference (lessthan 5 %).
Guild(n, r) =625
n2 +2320
n + 8 + r (6)
McCanny(n, r) =8710
n− 39 + r (7)
CarrySave(n, r) = 7n− 27 + r (8)
RippleCarry(n, r) =7310
n− 32 + r (9)
Figure 3 shows a comparison of the logic resources consumption for the selectedmultipliers with a typical 8 bit exponent (r = 8). The horizontal lines in the samefigure indicates the amount of avaiable basic cells in several Spartan FPGAs of XilinxInc. [1]. It can be observed the small of logic resources needed for the PFPM in contrastto the parallel multipliers applied to the floating point multiplication. The PFPM canbe implemented in all platforms for any mantissa wordlength, while for other schemesthe implementation is restricted to larger FPGAs. Besides, the proposed scheme makepossible the implementation of several multipliers in the same FPGA.
0 5 10 15 20 25 30 35 40 450
100
200
300
400
500
600
Wordlength
CLB
XCS05
XCS10
XCS20
XCS30GuidMacCannyCarry SaveRipple CarryProposed
Fig. 3. Logic consumption comparation.
4 Experimental results
The proposed multiplier was implemented on the three most extended Xilinx plat-forms: Spartan, Virtex and Virtex II. The evaluation of the proposal in the severalFPGAs allow the verification of the Eq.(5) and the exploration of the benefits of thedifferent FPGA series to improve a better performance. The design was evaluated interms of logical resources , minimum clock period and Processing Speed (PS).
Figure 4 shows the experimental results for the Spartan series. It can be observedthat the difference between the implementation and the estimation, Eq. (5) is less than5 %. The delay constrain in the implementation depends on the feedback between theadder inputs and the registered outputs shown in the bottom of the Figure 2. Thistiming determines the maximum clock speed TCK , which, along the n + 1 pulses,determines the multiplier processing speed PS = 1
(n+1)·TCK.
Figures 5 and 6 show the experimental results for Virtex and Virtex II series,respectivelly. In these figures it can be observed the logic resources consumption forboth implementations.
A comparative analyisis is shown in Figure 7 where the logic resources and theprocessing speed are despicted for all the implementations. It can be observed in thisfigure that the logic resource estimation is comfirmed with the experimental resultsfor each index n. Also it can be observed the improvement of the utilization of atechnology among the others.
5 10 15 20 25 300
2
4
6
8
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results
Fig. 4. Spartan series PFPM implementation
5 10 15 20 25 300
5
10
15
20
25
30
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results
Fig. 5. Virtex series PFPM implementation
5 10 15 20 25 300
10
20
30
40
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results
Fig. 6. Virtex II series PFPM implementation
5 10 15 20 25 300
5
10
15
20
25
30
35
n
PS
[Mflo
p]
5 10 15 20 25 3020
30
40
50
60
70
80
n
CLB
Estimation resultsExperimental results SpartanExperimental results VirtexExperimental results Virtex II
Fig. 7. Performance evaluation
5 Conclusion
This work addresses a novel floating-point multiplier wich can be easily implementedon several FPGA series. The proposed design, based on a sequential multiplication,provides a meaningful area reduction. This feature is useful not only to increase thesystem speed with parallel processing but also to simply add more taps to an algorithm.A function of the logic used by the proposed scheme was calculated allowing theestimation of the logic resources consumption for a given design.
The theoretical behavior was contrastated with the implementation for severalFPGA series with less than a 5% of difference in the logic consumption. The experi-mental results shown also the difference in processing speed between a FPGA seriesamong the other. This results allow the exploration of the benefics of select a differentFPGA series to improve a better performance in a given design.
References
1. The Programable Logic Data Book. Xilinx, 2000.2. N. Acosta, E. Todorovich, C. Collado, and K. Larsen. Multiplicadores paralelos: Estado
del arte y analisis de su materializacion en FPGA. Proc. of VI Workshop Iberchip., pages158–168, 2000.
3. GH. A. Aty, Aziza I. Hussein, I.S. Ashour, and M. Mones. High-speed, area-efficientFPGA-based floating-point multiplier. pages 274–277, 2003.
4. T.-S. Chang and C.-W. Jen. Hardware-efficient implementations for discrete functiontransforms using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings,146, Issue 6:309, 1999.
5. Chris Dick and Fred Harris. FPGA signal processing using sigma-delta modulation. IEEESIGNAL PROCESSING MAGAZINE, pages 20–35, 2000.
6. John P. Hayes. Introduccion al Diseno Logico Digital. Addison-Wesley Iberoamericana,Wilmington, Delaware, E.U.A, 1996.
7. John L. Hennessy and David Patterson. Computer Architecture: A Quantitative Approach.Morgan Kaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8, 1996.
8. Manuel A. Jimenez, Nayda G. Santiago, and Diane T. Rover. Development of a scalableFPGA-based floating point multiplier. Proceedings of the Fifth Canadian Workshop onField-Programmable Devices, pages pp. 145 – 150, 1998.
9. III Walter B. Ligon, Scott McMillan, Greg Monn, Kevin Schoonover, Fred Stivers, andKeith D. Underwood. A re-evaluation of the practicality of floating-point operations onFPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines,pages 206–215, 1998.
10. Nabeel Shirazi, Al Walters, and Peter Athanas. Quantitative analisis of floating pointarithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposiumon FPGAs for Custom Computing Machines, pages 155–162, 1995.
PERFORMANCE EVALUATION OF FPGAFLOATING POINT MULTIPLIERS
Funes, Marcos ∗,∗∗ Carrica, Daniel O. ∗
Benedetti, Mario ∗
∗ L.I.C., Universidad Nacional de Mar del Plata,CONICET
Abstract: The implementation of FPGA-based floating Point multipliers requirethe availability of huge logical resources, constraining their use in some applica-tions. The use of sequential multipliers instead of standard parallel multipliersreduce the area allocated on the FPGA. A comparison of sequential multiplieragainst parallel ones is developed. A performance index is introduced to comparethe obtained results.
Keywords: multiplication, floating point arithmetic, field programmable gatearrays, signal processing
1. INTRODUCTION
Many computationally-intensive applications foundin Digital Signal Processing (DSP) employ theparallel processing capability of Field Program-mable Gate Arrays (FPGAs) to obtain a highprocessing speed (Chang and Jen, 1999)(Dick andHarris, 2000). FPGAs combine the flexibility ofa general-purpose, programmable digital signalprocessor with the speed and density of a customhardware implementation. A digital processingimplementation into a target FPGA should be op-timized in terms of logic resources consumption toachieve a good performance and cost-effectiveness.
Digital Signal Processing mainly involves multi-ply operations which can be either fix or float-ing point, depending on the operand-range. Anoperand expressed in floating point format consist
0 This work was supported by the Universidad Nacional deMar del Plata (ING-15/G130) and the Agencia Nacionalde Promocion Cientıfica y Tecnologica (BID 1201/OC-AR2002).The authors are with the Department of Electronics,Universidad Nacional de Mar del Plata and CONICET,Argentina.
of a sign bit S, a biased exponent e of r bits andthe fractional f of n bits. These elements expressa number given by the following equation:
OP = (−1)S × 2e−bias × 1.f (1)
Floating point multiplications involve sign setting,e exponent addition (with bias correction), man-tissas product (including the leading bit) withrounding and normalization (IEEE754, 1985).The mantissas product is performed as an integermultiplication. This multiplication is often per-formed in a parallel way and is the most logicresources consumer operation.
The great consumption of resources leads to thefollowing problems:
• Greater FPGA are necessary.• More expensive FPGA are required.• Difficulty to implement several multipliers in
one FPGA.
Ligon et al assesed the practical implementationof several floating point multipliers in a XilinxXC4000 series, requiring bigger FPGAs to usemore than one multiplier in the same chip (Ligon
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
et al., 1998). Other authors studied and proposeddifferent parallel schemes of FPGA Floating-PointMultipliers in order to reduce logic consump-tion (Shirazi et al., 1995) (Jimenez et al., 1998.).These authors proposed custom formats and sev-eral methods prioritizing a reduced logic resourcesconsumption. Some other results were presentedby Aty et al over more recently FPGAs (Aty etal., 2003). Floating point multipliers based on Vir-tex II embedded parallel multipliers with severallevel of pipelining were presented by authors likeLee and Burgess (Lee and Burgess, 2002).
Other contributions proposed the use of sequentialmultipliers instead of standard parallel multipli-ers in order to reduce the area allocated on theFPGA, balancing the economy on resources withthe processing speed (Funes et al., 2002)(Funes etal., 2006). The performance achieved a substan-tial reduction in terms of logical blocks with anacceptable calculation rate.
In this paper, a comparative analysis of a se-quential scheme against other parallel ones is car-ried out. Section 3 deals with an evaluation con-cerned the logical resources consumption. Section4 presents a global index which includes both thelogical resources and the processing speed. Thecomparison of schemes from different authors isperformed using this index.
2. SEQUENTIAL FLOATING POINTMULTIPLIER
The sequential scheme (SM) like the Shift andAdd algorithm reduce the logic resources con-sumption, Fig.1 (Hennessy and Patterson, 1996).This scheme is based on a control stage and themultiplexer to execute the partial products. Inthis scheme, the partial product is added to thelast shifted result and is stored in the correspond-ing output registers.
ADD
X
Partial Product
shift
n
n
Y
carryn-1 0
nn
n
MUX
Controlnormalization
rounding
Fig. 1. Integer sequential multiplier.
The rounding mode implemented in this multi-plier is round to nearest even. This means alwaysround to nearest, and in the case of a tie roundto even. Then, when rounding, this system adds12 to the least significant bit of the desired result
2n bit product
N discarded bits
1 * * * * *
0 0 0 0 1 00...0
Overflow
* * * * * *
0 1 * * * *
0 0 0 0 0 10...0
No Overflow
0 1 * * * *
Round
Product
Truncation
1 * * * * *
Overflow
* * * * * * * * * *
No Overflow
No Round
n bit result
Normalize
Fig. 2. Rounding and normalization.
and then truncates by removing the bits to theright of the LSB. The rounding scheme is shownin Fig.2. Whenever the product result in the range4 ≥ product ≥ 2 a normalization is executed, withan appropiate adjustment of the exponent.
3. LOGICAL RESOURCES COMPARISON
The logic resources used by the SM are comparedwith those from parallel multipliers. The parallelmultipliers included in the comparison are: (a)Guild scheme with a high throughput due to theuse of parallelism and pipelining, (b) McCanny -McWhirter multiplication scheme with local com-munication between its basic cells, (c) Carry Saveunit with constant delay in the carry chains and(d) a Ripple Carry multiplication unit which takeadvantage of the fast carry logic nets provided bythe manufacturer (Acosta et al., 2000). Equations(2), (3), (4) and (5) show the logic resources con-sumption of the Guild, McCanny - McWhirter,Carry Save and Ripple Carry, respectively.
Guild(n, r) =625
n2 +2320
n + 8 + r (2)
McCanny(n, r) =8710
n− 39 + r (3)
CarrySave(n, r) = 7n− 27 + r (4)
RippleCarry(n, r) =7310
n− 32 + r (5)
The logic resources consumption of the sequentialscheme is expressed by Eq. (6):
SM(n, r) =
log2 n+1∑i=1
(n2−i)
2+
log2(n + 1)2
+n+172
+r
(6)
Eq. (6) can be reduced to eq.(7).
SM(n, r) =4932
n + 9 + r (7)
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
Figure 3 shows a comparison of the logic resourcesconsumption for the selected multipliers with atypical 8 bit exponent (r = 8). The horizontallines in the same figure indicates the amountof available basic cells in several Spartan FP-GAs of Xilinx Inc. (The Programable Logic DataBook, 2000). It can be observed the small of logicresources needed for the SM in contrast to theparallel multipliers applied to the floating pointmultiplication. The SM can be implemented inall platforms for any mantissa word length, whilefor other schemes the implementation is restrictedto larger FPGAs. Besides, the proposed schememake possible the implementation of several mul-tipliers in the same FPGA.
SM
Fig. 3. Logic consumption comparison.
4. PERFORMANCE EVALUATION
In order to evaluate the overall performance aperformance index p is defined as follows:
p =Processing Speed [Mflops]
Area(8)
where the Processing Speed is defined in Millionof Floating-Point Operations per second and theArea as the used fraction with respect to the totalresources available (Full FPGA = 1). This indexis useful in the selection of a multiplier for a givendesign because allows to compare several kinds ofmultipliers and wordlengths.
Figure 4 illustrates the p bar diagram correspond-ing to the Sequential Floating Point Multiplier(SM) and reported multipliers implemented in theXCS20 FPGA for several wordlengths.
For 18-bit format, the SM reduces at least fourtimes the logic area if compared to the reportsby other authors (Shirazi et al., 1995; Jimenez etal., 1998.; Aty et al., 2003; Ligon et al., 1998).Fig.4 shows that the best index score is reachedwith SM. Also, this figure depicts the performance
Wordlength Format
Per
form
ance
ShiraziJimenez
Aty
SM
Jimenez
SM
Ligon
SM
Fig. 4. Spartan multipliers performance
of 24-bit multipliers. Although the speed of themultiplier proposed by (Jimenez et al., 1998.)is similar to that of SM, logical resources getnotoriously reduced in the latter, thus renderinga significantly higher performance.
For 32-bit format, the SM utilizes 13% of theFPGA. The better performance index obtainedwith SM results from the differences of the de-signs: the 3-stage Booth-based multiplier pro-posed by (Ligon et al., 1998) is characterized byits fast speed, but it consumes 82% of the FPGA.If compared, despite being half slower, the SMconsumes 5 times less. The proper multiplier se-lection depends, in this case, on the type of projector FPGA size.
Figure 5 shows the performance index for themultipliers implemented in Virtex II FPGA. For18-bits format, the SM achieves superior perfor-mance to that proposed in the literature (Shiraziet al., 1995; Jimenez et al., 1998.; Aty et al., 2003).In addition to the decreasing level of logical re-sources employed, the proposed design is faster.For 32-bits, the difference is small and the per-formance index for the SM results from its lowlogical resource consumption. On the other handthe high performance of the 32-bit multiplier (Leeand Burgess, 2002) result from its high processingspeed. For these multipliers the applicability de-pends on the design constraints, i.e., less area orhigh speed.
5. CONCLUSION
This work compares the sequential multiplieragainst several parallel ones. The sequential mul-tiplier provides a meaningful area reduction withan acceptable calculation rate.
A performance index rendering an effective eval-uation of multipliers is also introduced in thispaper. The sequential multiplier is compared withthose reported by some authors and assessed in
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
Aty
SM
SMLee
Wordlength Format
Per
form
ance
Fig. 5. Virtex II multipliers performance
terms of its performance index. The multiplierhas demonstrated to be superior to some reportedmultipliers in term of this performance index.
REFERENCES
IEEE754, IEEE Std (1985). IEEE standard for bi-nary floating-point arithmetic. The Instituteof Electrical and Electronics Engineers Inc..New York.
Acosta, N., E. Todorovich, C. Collado andK. Larsen (2000). Multiplicadores paralelos:Estado del arte y analisis de su material-izacion en FPGA.. Proc. of VI WorkshopIberchip. pp. 158–168.
Aty, GH. A., Aziza I. Hussein, I.S. Ashourand M. Mones (2003). High-speed, area-efficient FPGA-based floating-point multi-plier. pp. 274–277.
Chang, T.-S. and C.-W. Jen (1999). Hardware-efficient implementations for discrete functiontransforms using LUT-based FPGAs. Com-puters and Digital Designs - IEE Proceedings146, Issue 6, 309.
Dick, Chris and Fred Harris (2000). FPGA sig-nal processing using sigma-delta modulation.IEEE SIGNAL PROCESSING MAGAZINEpp. 20–35.
Funes, M., D. Carrica and M. Benedetti (2002).Multiplicadores de punto flotante para estruc-turas FPGA. Proceedings XVIII CongresoArgentino de Control Automatico 1, 40.
Funes, M., D. Carrica and M. Benedetti (2006).Floating point multipliers with reduced fpgaarea. Proceedings II Southern ProgrammableLogic Conference ISBN 84-609-8998-4 1, 59–66.
Hayes, John P. (1996). Introduccion al DisenoLogico Digital. Addison-Wesley Iberoameri-cana. Wilmington, Delaware, E.U.A.
Hennessy, John L. and David Patterson (1996).Computer Architecture: A Quantitative Ap-proach. Morgan Kaufmann Publishers, Inc..
San Francisco, California ISBN: 1-55860-329-8.
Jimenez, Manuel A., Nayda G. Santiago and Di-ane T. Rover (1998.). Development of a scal-able FPGA-based floating point multiplier.Proceedings of the Fifth Canadian Workshopon Field-Programmable Devices pp. pp. 145 –150.
Lee, B. and N. Burgess (2002). Parameterisablefloating-point operations on FPGA. Confer-ence Record of the Thirty-Sixth AsilomarConference on Signals, Systems and Comput-ers pp. 1064–1068.
Ligon, III Walter B., Scott McMillan, Greg Monn,Kevin Schoonover, Fred Stivers and Keith D.Underwood (1998). A re-evaluation of thepracticality of floating-point operations onFPGAs. Proceedings of IEEE Symposium onFPGAs for Custom Computing Machinespp. 206–215.
Shirazi, Nabeel, Al Walters and Peter Athanas(1995). Quantitative analisis of floating pointarithmetic on FPGA based custom comput-ing machines. Proceedings. IEEE Symposiumon FPGAs for Custom Computing Machinespp. 155–162.
The Programable Logic Data Book (2000). Xilinx.
AADECA 2006 – XXº Congreso Argentino de Control Automático28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
Novel FPGA based Floating Point Multiplier:Consecutive-Sums Sequential Multiplier
M. Funes, D. Carrica, M. Benedetti, P. Donato
Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
Abstract. FPGA based Floating Point Multipliers of Parallel type demandabundant logical resources. On the other hand, Sequential type, required re-duced logic resources but al the expense of a worse processing speed. This paperpresents a new sequential structure of floating-point multiplier with a betterprocessing speed keeping on a reduced number of resources.
1 INTRODUCTION
Many applications in Digital Signal Processing (DSP) employ the parallel processingcapability of Field Programmable Gate Arrays (FPGAs) to obtain a high processingspeed [1] [2]. FPGAs combine the flexibility of a general-purpose, programmable digitalsignal processor with the speed and density of a custom hardware implementation.However, a FPGA digital processing implementation presents a great logic resourcesconsumption which should be optimized because the great consumption leads to thefollowing problems:
– Greater FPGA and more expensive are necessary.– Difficulty to implement several multipliers in one FPGA.
Several authors studied and proposed different parallel schemes of FPGA Floating-Point Multipliers in order to reduce logic consumption [3] [4] [5]. On the other hand,a previous work proposed the use of sequential multipliers instead of standard par-allel multipliers in order to reduce logic consumption [6]. This article proposes theconsecutive-sums sequential multiplier which achieves more speed than the obtainedin [6] maintaining the same speed vs logic resources figure. The multiplier was imple-mented on several platforms and evaluated in terms of logical resources and speed.Finally, the proposed multiplier was compared with the previous sequential scheme.
?? This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) andthe Agencia Nacional de Promocion Cientıfica y Tecnologica (BID 1201/OC-AR 2002).Theauthors are with the Department of Electronics, Universidad Nacional de Mar del Plataand CONICET, Argentina.
2 Floating Point Multiplication
A floating point format consists of a sign bit s, a biased exponent e of r bits and thefractional f of n bits whose value is expresed by (1):
OP = (−1)S × 2e−bias × 1.f (1)
Floating point multiplications involve sign setting, e exponent addition (with biascorrection) and mantissa product (including the leading bit) [7]. The latter is per-formed as an integer multiplication and is the most logic resources consumer.
Exclusive - ORExponentAddition
MantissasProduct
RoundingBias
Adjustment
Exponent Mantissa
Ofl.
Normalization
Sign
Exponent MantissaSign
ExponentAdjustment
Fig. 1. Floating Point Multiplication.
Furthermore, the multiplication is often executed in parallel way, Eq.(2):
p = 1.fx × 1.fy =n∑
i=0
[yi × (1xn−1..x2x1x0)] · 2i (2)
where 1.fx = {xn..x1x0} and 1.fy = {yn · · · y1y0} are mantissas of n + 1 bits, and xn
and yn are both ’1’.
2.1 Consecutive Sum Sequential Multiplier
The utilization of a Sequential Multiplication (SM) to reduce the logic resources con-sumption of the mantissas product was proposed by Funes et al. [6]. This multiplicationexecutes the product using only one adder, Eq. (3):
p = 2n−1
[n−1∑i=0
yiX · 2i−n+1
](3)
The processing speed of the SM depends on the clock frequency and the number ofiterations. The consecutive-sums sequential multiplier (SMSC) can reduce the numberof iterations by performing the addition of two subproducts at the same time, as shownin the Eq. (4).
p = 2n−1
n2−1∑j=0
(yjX22j−(n−1)+ yj+1X22j+1−(n−1))
(4)
Thus, the processing period is T = n2 · TCK , being TCK the clock period and n
the mantissa wordlength. The multiplier scheme of a fixed point SMSC multiplier isshown in Fig. 2.
n
ADD
Partial
2 bits shift
0n-12n-1 n
n-1
ADD
LSB
carry
carry
n
X
Y[odd bits]n
n/2
MUX
Control
Y[even bits]n
n/2
MUX
Product
Fig. 2. Consecutive sum sequential multiplier (SMSC).
2.2 Rounding and Normalization
The multiplier rounds the mantissas to +∞. This means always round to the theclosest to and no less than the infinitely precise result. Then, when rounding, thissystem adds 1
2 to the least significant bit of the desired result and then truncates byremoving the bits to the right of the LSB. There are three possible rounding operationswhich then occur. The first one is no rounding if the value of all the bits to the rightof the round bit is 0 or The second one is or the result is negative. To consider thefirst case, this operation can be computed storing in a register if any of the discardedbits was a ’1’. If the register value is 0 the the result of the mantissas product is justthe truncation of the least significant bits. The second case is after the computationof the result sign. The other two rounding operations depends on the most significantbit of this product as seen in Fig. 3.
2n bits product
n bits discarted
1 * * * * *
0 0 0 0 100...0
Overflow
* * * * * *
No Overflow
0 1 * * * *
Rounding
Product
Truncation
1 * * * * *
* * * * * * * * * *
No rounding
n bit product
Normalization
0 0 0 0 0 10...0+
1 * * * * *
No Overflow
Rounding
Fig. 3. Rounding and normalization.
When rounding, the system rounds by default in the last iteration and check theresult. If the result is in the range 1 ≤ p ≤ 2, the result is correctly rounded. But if theresult is in the range 4 ≥ rounded product ≥ 2, a normalization shift of 1 to the right isthen necessary to restore the rounded product to the range 2 ≥ rounded product ≥ 1,with a proper adjustment of the exponent. After the normalization, there are two casesin which the rounded results is correct and two other that need a correction.
The first case occurs when the LSB of the truncated product of n-th iteration was a”1”, because the 2−n addition propagates to the nearest significant bits. Consequentlythis is equivalent to add 2−n to a non-rounded result after normalization. The othercase occurs when the LSB of the truncated result was a ”0”, because the 2−n additiondoesn’t propagates to the nearest significant bits. The result after normalization isequivalent to a truncation. Then, a new rounding operation is required. The Table 1shows an example of the second case.
Truncated result (TR) TR + 2−n TR normalized TR expected Action
10.*****00 10.*****01 1.*****0 1.*****1 round10.*****01 10.*****10 1.*****1 1.*****1 none10.*****10 10.*****11 1.*****1 1.*****0 round10.*****11 10.*****00 1.*****0 1.*****0 none
Table 1. Rounding error of the normalized product.
Fig. 4 shows the mantissas product with the rounding and normalization scheme.In this figure it can be observed the control unit that performs the multiplicationiterations besides the rounding and normalization tasks.
LSB
n
ADD
Partial Product
2 bits shift
0nn+1
n-1ADD
carry
carry
n
X
Y[odd bits]n
n/2
MUX
Control
Y[even bits]n
n/2
MUX
Default rounding
Result0nn+1
Post-normalization rounding
Exponent correction
1 bit shift
Normalization
Sign
discarded bit
Fig. 4. Mantissa product scheme.
3 Experimental results
The proposed multiplier was implemented in VHDL [8] [9]. The mantissa wordlengthwas parameterized while the exponent was fixed (e = 8). The design evaluated interms of logical resources and Processing Speed (PS) was implemented on two Xilinxplatforms: Spartan and Virtex. The evaluation of the proposal in the several FPGAsallows the exploration of the benefits of the different FPGA series to improve a betterperformance.
In the Spartan series, the basic cell of logic is denominated Configurable Logic Block(CLB), each of one contains two 4-input Function generators and two Flip Flops. TheVirtex series rename the CLB as a slice and each CLB contains two slices. In this work,the logic resources consumption is unified into an unique unit denominated Basic Cell,witch contains the same logic as a Spartan CLB.
The processing speed is a function of the number of iterations of the multiplierand the maximum clock frequency. The maximum clock frequency is limited by thepropagation delay of the critical path.
In order to evaluate the performance of the proposed scheme, the SMSC float-ing point multiplier was compared with a SM scheme with the same rounding andnormalization scheme. Figs. 5 and 6 present the logic resources and processing speedcomparison for a Spartan and Virtex series respectively. In this figures, it can be ob-served the relation between the processing speed obtained in contrast with the logicresources consumed.
5 10 15 20 25 300
5
10
15
n
PS
[Mflo
p]
5 10 15 20 25 300
20
40
60
80
100
120
n
CLB
Experimental results SMSCExperimental results SM
Fig. 5. Spartan series implementation, comparison
5 10 15 20 25 300
5
10
15
20
25
30
n
PS
[Mflo
p]
5 10 15 20 25 300
20
40
60
80
100
120
n
Bas
ic c
ells
Experimental results SMSCExperimental results SM
Fig. 6. Virtex series implementation, comparison
To evaluate the processing speed-logic consumption relation, Figs. 7 and 8 showthe performance of the proposal vs. SM based scheme for the Spartan (XCS20) andVirtex (XV300) implementation. The performance index p is defined as follows:
p =Processing Speed [Mflops]
Area(5)
where the Processing Speed is expressed in Million of Floating-Point Operations persecond and the Area is the fraction used resources vs. total resources of a FPGA.
15 20 25 30 35 400
10
20
30
40
50
60
70
80
90
100
n
p
Experimental results SMSCExperimental results SM
Fig. 7. Spartan series implementation, performance index
These figures show that the performance is as good as the SM based scheme, withthe benefits of a better processing speed.
4 Conclusion
This work addresses a novel floating-point multiplier witch can be easily implementedon several FPGA series. The proposed design, based on a consecutive sums sequentialmultiplication, provides an optimization in the processing speed with the goal of areduced logic resources consumption. The performance obtained was experimentallyassessed, achieving a substantial increment in the calculation rate.
5 10 15 20 25 300
200
400
600
800
1000
1200
1400
1600
1800
2000
n
Per
form
ance
inde
xExperimental results SMSCExperimental results SM
Fig. 8. Virtex series implementation, performance index
References
1. Chang, T.S., Jen, C.W.: Hardware-efficient implementations for discrete function trans-forms using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings 146,Issue 6 (1999) 309
2. Dick, C., Harris, F.: FPGA signal processing using sigma-delta modulation. IEEE SIG-NAL PROCESSING MAGAZINE (2000) 20–35
3. Shirazi, N., Walters, A., Athanas, P.: Quantitative analisis of floating point arithmeticon FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAsfor Custom Computing Machines (1995) 155–162
4. Jimenez, M.A., Santiago, N.G., Rover, D.T.: Development of a scalable FPGA-basedfloating point multiplier. Proceedings of the Fifth Canadian Workshop on Field-Programmable Devices (1998.) pp. 145 – 150
5. Aty, G.A., Hussein, A.I., Ashour, I., Mones, M.: High-speed, area-efficient FPGA-basedfloating-point multiplier. (2003) 274–277
6. Funes, M., Carrica, D., Benedetti, M.: Floating point multipliers with reduced fpga area.Proceedings II Southern Programmable Logic Conference ISBN 84-609-8998-4 1 (2006)59–66
7. 754, I.S.: IEEE standard for binary floating-point arithmetic. The Institute of Electricaland Electronics Engineers Inc., New York (1985)
8. Villar, E., Teres, L., Olcoz, S., Torroja, Y.: VHDL Lenguaje Estandar de DisenoElectronico. McGraw Hill, Madrid (1997)
9. Ghosh, S.: Hardware Description Languages Concepts and Principles. IEEE Press, 445Hoes 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.:A re-evaluation of the practicality of floating-point operations on FPGAs. Proceedingsof IEEE Symposium on FPGAs for Custom Computing Machines (1998) 206–215
11. Lee, B., Burgess, N.: Parameterisable floating-point operations on FPGA. ConferenceRecord of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers(2002) 1064–1068
120 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003
Novel Stepper Motor Controller Based on FPGAHardware Implementation
Daniel Carrica, Senior Member, IEEE, Marcos A. Funes, and Sergio A. González, Member, IEEE
Abstract—This paper proposes a novel stepper motor controllerbased on field programable gate arrays, showing a remarkable per-formance. The system provides a combination between a novel al-gorithm and programmable logic to achieve both high speed andhigh precision on a compact hardware.
Index Terms—Field programable gate arrays (FPGA), motioncontrol, stepper motor.
I. INTRODUCTION
I N HIGH precision stepper motor applications, it is neces-sary to use motors with small steps whose size is imposed
by the required resolution. Another alternative is the techniqueof microstepping, where the motor step size is further reducedby means of control. As microsteps are related to very little dis-placements, a great quantity of microsteps are required to getthe total displacement. Total displacement should be executedin an acceptable time. As a consequence, the time between mi-crosteps should be reduced. A high-speed data transmission be-tween controller and driver is mandatory when indexing in mi-crostepping mode of operation.
Furthermore, open loop applications are much less expensivethan close loop ones due to encoders. If open loop is chosen,velocity profiles have to be used in order to avoid the step loseeffect.
A general system for the commanding of a stepper motor isshown in Fig. 1. There are three functions: 1) the velocity pro-file generation block; 2) the indexer; and 3) the power drivers.Blocks (1) and (2) are embedded in what we named controller.
After velocity profiles are generated, they have to be trans-lated into pulse intervals by the indexer. Each index pulsemeans that the motor must increment its rotor position in onestep/microstep, hence the name indexer. This block functionsas a velocity-to-time translator. This block is unique to thecommanding of incremental motion devices since other types
Manuscript received November 26, 2001; revised October 16, 2002. Recom-mended by Technical Editor K. Ohnishi. This work was supported in part by theUniversidad Nacional de Mar del Plata under Grant ING-15/G064 and in partby the Agencia Nacional de Promoción Científica y Tecnológica under GrantBID 1201/OC-AR 2000.
D. Carrica is with the Department of Electronics, National University of Mardel Plata, Mar del Plata, Argentina. He is also with He is also with the CentroAustral de Investigaciones Científicas (CADIC), Tierra del Fuego, Argentina.
M. A. Funes is with the Department of Electronics, National University ofMar del Plata, Mar del Plata, Argentina.
S.A. González is with the Laboratorio de Instrumentación y Control, De-partment of Electronics, National University of Mar del Plata, Mar del PlataArgentina. He is also with the Comision de Investigaciones Cientificas (CIC),Buenos Aires, Argentina (e-mail: [email protected]).
Digital Object Identifier 10.1109/TMECH.2003.809160
Fig. 1. Complete control system.
of motors can be commanded just by applying the velocityprofile in form of current or voltage [1], [2].
The implementation of the controller of Fig. 1 can be per-formed by two alternatives: off-line or on-line schemes.
A. Off-Line
In the off-line schemes the timing of the steps/microsteps iscalculated prior the movement [3], [4]. The velocity profile andthe time space between pulses are calculated and then storedin some kind of memory media bundled into the hardware, i.e.,ROM or even hard drives.
A disadvantage of these schemes is that they require an im-portant hardware volume, composed of memories and timers.This volume is proportional to the quantity of motors and theextension and precision of displacements.
B. On-Line
An intelligent system carries out the operation of calculatingthe index pulses through a time lagging sequence generation al-gorithm. In Fig. 2 a flowchart of one basic scheme can be seen.This flowchart contains two main blocks: construction,where the velocity profile is actually developed, and cal-culation, where the time between the current step and the next iscalculated. That is, is the velocity profile generation and
is the indexer of Fig. 1. Often a common block is sharedbecause a single equation computes both the velocity profile andthe . For example, (1) and (2) express a typical algorithmfor a trapezoidal profile [5].
(1)step
(2)
where is the resulting speed, is the maximum speedof the motor, is the total number of steps or microsteps,isthe acceleration of the trapezoidal profile and is the timeof the -th step.
1083-4435/03$17.00 © 2003 IEEE
CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 121
Fig. 2. On-line algorithms.
These schemes as well as the off-line ones make use of timersfor obtaining the indexed pulses. Since it is necessary one timerper motor, this approach is often discouraged when multiple mo-tors have to be commanded by a single processor.
Another important disadvantage is the computing time, re-quired to compute (1). imposes a practical limit to the speed.Moreover, not only but the timer resolution, , affect themaximum speed as in (3)
(3)
Current timer resolutions are small enough to discard theat the equation. Therefore, (3) turns into (4).
(4)
Standard algorithms fail to reach high speeds, mainly becausethe computing time, . In order to resolve the goal is toprovide a new algorithm with a more effective step generationprocedure without timers.
II. PROPOSEDALGORITHM
The proposed algorithm can be explained as follows. In orderto estimate the time , it is assumed that is times
, since it is an accurate way of measuring time without usingtimers. Therefore, the proposed algorithm has to do the fol-lowing functions during each iteration:
1) Let
Fig. 3. Flow chart of the algorithm.
2) Assume
(5)
where is a positive integer number.3) Verify if assumed allows the wished . Thus, it
means
(6)
where is the reference velocity at theth step.4) If the verification is true, then execute the new step/mi-
crostep. If not, then increment and repeat the process. (points2, 3, and 4)
(7)
From (5) it can be seen that the resolution of is . Theequality in(6) is not possible because of this resolution. Equa-tion (6) becomes the comparison stated in(8)
(8)
Eliminating the division in (8) is mandatory for reducing theiteration time. Therefore a simple contraction as in (9) is pre-ferred
(9)
The new algorithm is based on (5), (7), and (9).in (5) hasthe same meaning as in (4), but with a considerable smaller mag-nitude, since the computations here are very straightforward. It
122 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003
Fig. 4. Intended velocity profile.
is experimentaly demonstrated that aten times less than inconventional algorithms is achieved.
To conclude, the algorithm consists basically on a periodicaccumulative sum until the intended velocity is reached. Fig. 3shows the flowchart of a system that implements (5), (7) and(9). The velocity profiles block was previously executed.
From (5), resolution of the new algorithm is sinceis an integer. resolution in the new algorithm arises to a
velocity quantization problem because velocity is the inverse of, (6). Since the term is a multiple of and ,
it turns out that the speed commanded has the following char-acteristics:
......
(10)
As an example, Fig. 4 shows a trapezoidal profile which startsat and has a maximum . In order to keep track of theintended speed (in discontinuous line), the system commands aninitial value of . This results in an initial speed ofwhich is the closest possible speed to the intended initial speed,
. At , changes to 6. As a consequence a higher speedof occurs. At , produces a commanded speedof . It then follows that at time the commanding speedis which equals the intended velocity profile.
The quantification effect is more remarkable at higher speedswhen times are smaller as . The effect can also be ex-plained since intermediate speeds cannot take place between
and , or between and , nor amongand , etc.
Fig. 5. FPGA based control system.
Therefore, an algorithm has been developed which requiresneither timers nor lookup tables and can work for much higherspeeds. It’s disadvantage is the quantification effect which de-pends on the magnitude of . With current DSP technology, aminimun s is obtainable. This magnitude producesa quantification level of 2000 steps at speeds arround 15 000steps/s, which shows the importance of the problem.
III. H ARDWARE IMPLEMENTATION
In order to reduce the computing time, a hardware imple-mentation is proposed. The algorithm presented in Section II issimple enough to be executed by a custom hardware. Hardwareimplementation permits multiple parallel tasks, thus, providingan effective way of implementing true parallelism which allowsa great reduction of computing time because operations such asthe reference profile generation, multipication and indexationcan be executed in separate blocks and can run independentlyones of the others.
Equations (5) and (9) are replaced by (11) . Although, thismeans no changes in the algorithm, it reduces the pair ofmultiplications to only one. This fact allows an efficient hard-ware implementation without performance demerit. Hardwareimplementation of (5) and (9) is presented in Fig. 5, wherethe block diagram of the controller is shown. The COUNTER,wich counts clock periods, represents the execution of (5).
The hardware implementation of (11) is carried out by theMULTIPLIER and the COMPARATOR
(11)
When the inequation is satisfied, a new step is commanded.The signal is then fed to the DRIVER INTERFACE, which com-mands the pulses to the driver of each motor phase. Fig. 5 showsa four phase motor.
The clock period of hardware implementation is equiva-lent to the computing time in the software execution of the algo-rithm of Section II. The clock period defines the time resolu-tion of the controller. As can be well reduced in hardware ap-
CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE 123
Fig. 6. Position and velocity profile with the FPGA based system.
proach, the quantizacion effect on the mechanical velocity willbe negligible.
Standard implementation of a multiplier is accomplish by acombinatorial structure. This approach is very good regardingthe time because it presents a minimum delay imposed bythe logic gates, but it involves a great number of logic resources,which increase proportionally with the multiplier word length.As an example, a 16 16 bits product requires the 90% of a10 000 logic gates FPGA [6], [7]. In order to overcome theFPGA area problem, a sequential arquitecture for the multiplieris proposed [8], [9]. This approach allows an effective area re-duction of 10 times, but with a greater, i.e., 16 clock pulsesfor a 16-bit word multiplier. However, with a 40 MHz clock,time is only 400 ns which remains neglicted for system perfor-mance. As a consequence, a sequential multiplier was adopted,which permited the implementation of the algorithm in a FPGAof 6000 logic gates.
A trapezoidal profile is generated, with several parameters,such as acceleration, minimum and maximum speed, and stepquantity. The controller decides how the profile must be basedon these parameters, and generates a reference profile to drivethe stepper motor.
As a conclusion, a new controller based on a novel algorithmimplemented by hardware was proposed. The new system pro-vides a good combination to achieve both high speed and highprecision motion on a compact hardware. Furthermore, this con-troller can easily drive full, half and micro-step mode applica-tions due to the flexibility and the reduced computing time withthe FPGA implementation.
IV. EXPERIMENTAL RESULTS
To evaluate the performance of the system, the developed al-gorithm was implemented in a Xilinx FPGA XC4006–3. Thisdevice can run at synchronous system clock rates up to 80 MHzand has a capacity 6000 logic gates. A hybrid stepping motorwas used in the experiments. Motor characteristics: 400 step/rev,inertial moment 1310 kg m , 10 N m. Noaditional load was connected.
Fig. 7. Velocity profile with the FPGA based system.
The position measures were obtained through an incre-mental optical encoder ELAP-E521 with a resolution of 1024pulses/rev whose inertial moment is 10 kg m . It wascoupled through an HELICAL-WA25 with an inertial momentof 10 kg m .
The position curve was obtained by reading the encodersignal with a high resolution timer. The position was off linederived to obtain the speed profile.
The muliplier works with a 40-MHz clock rate, which yielda multiplication time of 400 ns. ns was adopted, wichremains negligible in relation to the motor speed.
The stepper motor must develop a 12 000 step displacementfollowing a reference trapezoidal profile with charasteristics:
stepss, stepss and a max accel-eration stepss .
The resultant speed and position profiles can be seen in Fig. 6.The low time allows an almost continuous profile and veryhigh speeds, higher than those generated by standard softwarealgorithms. Due to the characteristic of the profile, the steppermotor passes through resonance area [5]. This effect can be ob-served at low speeds in the profiles.
Fig. 7 shows a complete profile obtained at high speeds withfull step. Note the continuity at all the effective speed range.
Fig. 8 shows a complete profile obtained for a microstepingapplication. The stepper motor used in this experiment wasa SLO-SYN KML093F14C5 whose characteristics are: 200step/rev, holding torque 816 N cm and a rotor inertia3.32 kg cm . The position values were obtained throughan optical incremental encoder with a resolution of 500pulses/rev. The microstep drive module used was an SLO-SYNMD808, configured to produce 2000 pulses/rev. As a con-sequence, the system must generate a high velocity profilewith stepss, stepss and a maxacceleration stepss . The time adopted forthe application was 400 ns in order to reduce the speed jumpsat to 1000 steps/s, so the speed jump remains under 5%of . This effect can be observed as a ripple component atthe top of the profile.
124 IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003
Fig. 8. Velocity profile for microsteping application.
The system achieved very high speed that was unreachablewith standard algorithms executed by a processor. Furthermorethe new controller does not require the timers, wich are necesaryin conventional systems, and the processor was replaced by aFPGA of similar size and equivalent cost.
V. CONCLUSION
A novel algorithm with reduced quantity of operations wasintroduced. This algorithm implemented on FPGA allows a sub-stantial decrease of the equivalent processing time developed byclassic velocity controllers. As a consecuence, the stepper motorcan reach very high speeds never obtained with standard algo-rithm based systems.
Due to the system architecture, one FPGA can drive severalstepper motors simultaneously without increasing the procesingtime. It can drive three stepper motors with current 6000 gatesFPGAs. This advantage make the system very convenient sinceit allows the increase of the number of motors, simply using alarger FPGA.
REFERENCES
[1] B. K. Bose, Ed.,Modern Power Electronics. New York: IEEE Press,1992.
[2] J. V. Wyk, H. Skudelny, and A. Müller-Hellmann, “Power electronics,control of the electromechanical energy conversion process and someapplications,”Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369–399, Nov.1986.
[3] J. Crook, “Low cost microprocessor based speed control ,” inProc. 13thAnnu. Symp. Incremental Motion Control System and Devices, P. B. Kuo,Ed., Champaign, IL, May 1984, pp. 25–30.
[4] Z. Kang and S. Qu, “A new methodology for using single micropro-cessor to control DC stepper motors,” inProc. IEEE Int. Conf. IndustrialTechnology, Dec. 1994, pp. 543–545.
[5] T. Kenjo and A. Sugawara, “Stepping motors and their micropro-cessor controls,” inSer. Monographs in Electrical and ElectronicEngineering. Oxford, U.K.: Oxford Univ. Press, 1994.
[6] The Programmable Logic Data Book, Xilinx, San Jose, CA, 1999.[7] (2000) Xilinx Core Generator Tools . Xilinx. [Online]. Available:
http://www.xilinx.com/products/logicore/coregen/index.htm[8] E. Boemo, E. Juárez, and J. Meneses, “Taxonomía de multiplicadores,”
in Proc. 8th DCIS Conf., 1993, pp. 185–190.[9] J. L. Hennessy and D. Patterson,Computer Architecture: A Quantitative
Approach. San Francisco, CA: Morgan Kaufmann, 1996.
Daniel Carrica (M’84–SM’00) was born in Do-lores, Argentina, in 1958. He received the engineerdegree from the National University of Mar del Plata(UNMdP), Mar del Plata, Argentina, in 1984 andthe M.Sc. degree in electronics from the UniversidadPolitécnica de Madrid, Madrid, Spain, in 1992.
In 1984, he joined the Department of Electronics,National University of Mar del Plata (UNMdP), asa Research Assistant. From 1990 to 1991, he was anAssociate Scientist at the European Organization forNuclear Research (CERN), Geneva, Switzerland.
From 1994 to 1996, he was Head of the Department of Electronics, UNMdPwhere he is currently an Associate Professor. He is also with the Centro Australde Investigaciones Científicas (CADIC), Tierra del Fuego, Argentina. Hiscurrent research interests include motion control and power electronics.
Professor Carrica is a Vice President of the Joint Chapter of Argentina IEEESection.
Marcos A. Funes was born in Mar del Plata,Argentina in 1974. In 1999, he received his degreein electronic engineering from the UniversidadNacional de Mar del Plata (UNMdP), Argentina andjoined the Laboratorio de Instrumentación y Control,(UNMdP) as research assistant.
Since 2000, he is Assistant Professor and is cur-rently working toward his Ph.D degree at UNMdP.His current research interests include high densityprogrammable logic devices and digital signalprocessing.
Sergio A. González(M’01) was born in Mar delPlata, Argentina, in 1972. He obtained the electronicengineering degree from the National University ofMar del Plata (UNMdP), Mar del Plata, Argentina,in 1999, where he is currently working toward thePh.D. degree.
Since 1999, he has been an Assistant Professorof control systems at the School of Engineering,UNMdP. Currently, he is a Research Assistant at theLaboratorio de Instrumentación y Control, UNMdP.His research interests include hardware design,
digital signal processing, motion control and electromechanical systemsdynamics.
Mr. González is a Member of the International Federation of Automatic Con-trol.
FPGA based stepper motor controller
Sergio A. Gonzalez1, Marcos A. Funes1,2, and Daniel Carrica1,2
1 Laboratorio de Instrumentacion y ControlUniversidad Nacional de Mar del Plata, Argentina
[email protected] CONICET⋆⋆
Abstract. This paper proposes a novel stepper motor controller basedon Field Programable Gate Arrays, showing a remarkable performance.The system provides a combination between a novel algorithm developedby the authors in a previous work and programmable logic to achieveboth high speed and high precision on a compact hardware.
1 Introduction
Several motion control applications in which a load must be moved preciselyinvolve high speed positioning of stepper motors. When multiple stepper motorsmust be controlled, conventional control algorithms fail to produce a high speedstep rate. This problem arose in the simultaneous control and velocity profilegeneration of up to 6 stepper motors in the alignment system of the CERNCompact Linear Collider (CLIC) application [1–3]. The precise positioning of themotors require the use of velocity profiles, which must be adjusted to a certainperformance in speed and acceleration as well as the dynamics of the system inorder to guarantee motion without step-loss. An intelligent system carries outthe operation of calculating the index pulses through a time lagging sequencegeneration algorithm. For example, (1) and (2) express a typical algorithm for atrapezoidal profile [4].
∆t(k) =2√
V 2max − 2 (N − k − 1) a +
√V 2
max − 2 (N − 1) a(1)
V(k) =1 step∆t(k)
(2)
where V(k) is the resulting speed, Vmax is the maximum speed of the motor, N isthe total number of steps or microsteps, a is the acceleration of the trapezoidalprofile and ∆t(k) is the time of the k-th step.
⋆⋆ This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and the Agencia Nacional de Promocion Cientıfica y Tecnologica (BID1201/OC-AR 2002).The authors are with the Department of Electronics, Universi-dad Nacional de Mar del Plata and CONICET, Argentina.
2 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
These schemes as well as the off-line ones make use of timers for obtaining theindexed pulses. Since it is necessary one timer per motor, this approach is oftendiscouraged when multiple motors have to be commanded by a single processor.
Another important disadvantage is the computing time Tc, required to com-pute (1). Tc imposes a practical limit to the speed. Moreover, not only Tc butthe timer resolution, Tr, affect the maximum speed as in (3):
Vmax =1
Tr + Tc(3)
Current timer resolutions are small enough to discard the Tr at the equation.Therefore, (3) turns into (4).
Vmax=1Tc
(4)
Standard algorithms fail to reach high speeds, mainly because the computingtime, Tc. In order to resolve Vmax the goal is to provide a new algorithm with amore effective step generation procedure without timers.
2 Proposed algorithm
The proposed algorithm was introduced in a previous work [5]. The algorithmconsists basically on a periodic accumulative sum until the intended velocityis reached. Fig. 1 shows the basic flowchart of a system that implements thisalgorithm.
From Fig. 1, ∆t(k) resolution of the new algorithm is Tc since nk is an in-teger. ∆t(k) resolution in the new algorithm arises to a velocity quantizationproblem because velocity is the inverse of ∆t(k). Since the term ∆t(k) is a mul-tiple of Tc and nk > 1, it turns out that the speed commanded has the followingcharacteristics:
Vk(n) =
1∆tk
=1
nk · Tc=
Vmax; nk = 1Vmax
2 ; nk = 2...
...Vmax
K ; nk = K
(5)
As an example, Fig. 2 shows a trapezoidal profile which starts at Vmin and hasa maximum Vmax. In order to keep track of the intended speed (in discontinuousline), the system commands an initial value of nk = 7. This results in an initialspeed of Vmax/7 which is the closest possible speed to the intended initial speed,Vmin. At t1, nk changes to 6. As a consequence a higher speed of Vmax/6 occurs.At t2, nk = 5 produces a commanded speed of Vmax/5. It then follows thatat time t6 the commanding speed is Vmax which equals the intended velocityprofile.
The quantification effect is more remarkable at higher speeds when ∆t(k)
times are smaller as Tc. The effect can also be explained since intermediate
FPGA based stepper motor controller 3
t( )=n Tk k c
t( )k
th
D
D
Fig. 1. Flow chart of the algorithm
speeds cannot take place between Vmax and Vmax/2. Neither between Vmax/2and Vmax/3, nor among Vmax/3 and Vmax/4, etc.
Therefore, the algorithm developed does not require neither timers nor look-up tables and can work at higher speeds. It’s disadvantage is the quantificationeffect which depends on the magnitude of Tc. With current DSP technology, aminimum Tc = 6µs is obtainable. This Tc magnitude produces a quantificationlevel of 2000 steps at speeds around 15000 steps
s , which shows the importance ofthe problem.
3 Hardware implementation
In order to reduce the computing time, a hardware implementation is proposed.The algorithm presented in Section 2 is simple enough to be executed by a cus-tom hardware. Hardware implementation permits multiple parallel tasks, thus,providing an effective way of implementing true parallelism which allows a greatreduction of computing time because operations such as the reference profile
4 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
Fig. 2. Intended velocity profile
generation, multiplication and indexation can be executed in separate blocksand can run independently ones of the others.
The equations of Fig. 1 are replaced by (6). Although, this means no changesin the algorithm, it reduces the pair of multiplications to only one. This fact al-lows an efficient hardware implementation without performance demerit. Hard-ware implementation of Fig. 1 is presented in Fig. 3, where the block diagramof the controller is shown.
The hardware implementation of (6) is carried out by the MULTIPLIER andthe COMPARATOR.
VR · nk > 1Tc
(6)
When the inequality is satisfied, a new step is commanded. The signal is thenfed to the DRIVER INTERFACE, which commands the pulses to the driver ofeach motor phase. Fig. 3 shows a 4 phases motor.
The clock period Tc of hardware implementation is equivalent to the com-puting time in the software execution of the algorithm of Section 2. The clock
FPGA based stepper motor controller 5
period Tc defines the time resolution of the controller. As Tc can be well reducedin hardware approach, the quantization effect on the mechanical velocity will benegligible.
Standard implementation of a multiplier is accomplish by a combinatorialstructure. This approach is very good regarding the Tc time because it presentsa minimum delay imposed by the logic gates, but it involves a great number oflogic resources, which increase proportionally with the multiplier word length. Asan example, a 16×16 bits product requires the 45% of a 20000 logic gates FPGA[6] [7]. In order to overcome the FPGA area problem, a sequential architecture forthe multiplier is proposed [8] [9]. A sequential multiplier allows an effective areareduction of 10 times, but with a greater Tc, i.e. 16 clock pulses for a 16-bit wordmultiplier. However, a second approach using a fast scheme of the sequentialmultiplication (8 pulses per multiplication) achieve a Tc time of only 200 nswith a 40MHz clock. As a consequence, the quantization problem is minimizedand with the current scheme high speed profiles can be achieved to performmicrostepping applications. Also, the proposed scheme require the 12% of thelogic area allowing the implementation of several multipliers in the same FPGA.
A trapezoidal profile is generated, with several parameters, such as acceler-ation, minimum and maximum speed, and step quantity. The controller decideshow the profile must be based on these parameters, and generates a referenceprofile to drive the stepper motor.
Reference velocityprofile generator
MULTIPLIER
DRIVERINTERFACE
VRnk
COMPARATOR
V 1/TR Cx nk ³
COUNTER
ClockTc
PowerDrivers
Steppermotor
VR
x nk
16
1616
16
1/TC
Fig. 3. FPGA based control system
6 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
As a conclusion, a new controller based on a novel algorithm implemented byhardware was proposed. The new system provides a good combination to achieveboth high speed and high precision motion on a compact hardware. Furthermore,this controller can easily drive full, half and micro-step mode applications due tothe flexibility and the reduced computing time with the FPGA implementation.
4 Experimental results
The alignment control system of the CERN Compact Linear Collider (CLIC),must regulate the position of the girders and quadruples with a 10µm precision,so that the trajectory of the beam evolves aligned with the axial axis of cavitiesand quadruples, despite the multiple perturbations that affect the position. Thedisplacement of girders and quadruples is performed through incremental motionmotors. The girders that support the cavities are moved by three motors, whilethe quadruples are moved by five motors, all coupled by ball and socket joints,as schematically shown in Fig. 4. In the 4 sections, there is a grand total of70 motors along a distance of 5.6m. Stepper motors are suitable for precisepositioning in CLIC since motors with small step size are commonly available.The developed algorithm was tested on a prototype hardware where 6 motorsmust be controlled simultaneously, it has communication capacity with otherhierarchic systems in order to produce the complete motion profile through allthe sections.
vertical
motor
girder
horizontal
motor
x
z
vertical
motor
vertical
motor
vertical
motor
vertical
motor
horizontal
motor
horizontal
motor
y2
y1
quadrupole
: pivot
Fig. 4. Motor layout in the girders and in the quadruples
To evaluate the performance of the system, the developed algorithm wasimplemented in a Xilinx FPGA XCS20-4. This device can run at synchronoussystem clock rates up to 80MHz and has a capacity 10000 logic gates. A hybridstepping motor was used in the experiments. Motor characteristics: 400 step
rev ,inertial moment 13 · 10−7 kg m2, Tret = 33 · 10−7 N m. No additional load wasconnected.
FPGA based stepper motor controller 7
1 2 3 4 5 60
50
100
150
Position profile
Pos
ition
, [R
EV
]
Time, [s]
1 2 3 4 5 60
20
40
60
80
Velocity profile
Spe
ed, [
RE
V/s
]
Time, [s]
Fig. 5. Position and velocity profile with the FPGA based system
The position measures were obtained through an incremental optical encoderELAP-E521 with a resolution of 1024 pulses per revolution whose inertial mo-ment is 2.5 · 10−6 kg m2. It was coupled through an HELICAL-WA25 with aninertial moment of 2.3 · 10−6 kg m2 .
The position curve was obtained by reading the encoder signal with a highresolution timer. The position was off line derived to obtain the speed profile.
The multiplier works with a 40MHz clock rate, which yield a multiplicationtime of 200 ns. was adopted, which remains negligible in relation to the motorspeed.
The stepper motor must develop a 60000 step displacement following a refer-ence trapezoidal profile with characteristics: Vmin = 500 steps
s , Vmax = 36000 stepss
and a max acceleration amax = 16000 stepss2 .
The resultant speed and position profiles can be seen in Fig. 5. The lowTc time allows an almost continuous profile and very high speeds, higher thanthose generated by standard software algorithms. Due to the characteristic ofthe profile, the stepper motor passes through resonance area [4]. This effect canbe observed at low speeds in the profiles.
8 Sergio A. Gonzalez, Marcos A. Funes, and Daniel Carrica
10 20 30 40 50 600
50
100
150
Position profile
Pos
ition
, [R
EV
]
Time, [s]
0 10 20 30 40 50 600
10
20
30
40Velocity profile
Spe
ed, [
RE
V/s
]
Time, [s]
Fig. 6. Position and velocity profile for microstepping application.
Fig. 6 shows a complete profile obtained for a microstepping application. Thestepper motor used in this experiment was a SLO-SYN KML093F14C5 whosecharacteristics are: 200 step
rev , holding torque Thold = 816N cm and a rotor inertia3.32 kg cm2. The position values were obtained through an optical incrementalencoder with a resolution of 500 pulses per revolution. The microstep drivemodule used was an SLO-SYN MD808, configured to produce 2000 pulses perrevolution. As a consequence, the system must generate a high velocity profilewith Vmax = 72000 steps
s . The Tc time adopted for the application was 200 ns inorder to reduce the speed jumps under 5 % of Vmax. This effect can be observedas a ripple component at the top of the profile.
The system achieved very high speed that was unreachable with standardalgorithms executed by a processor. Furthermore the new controller does not re-quire the timers, which are necessary in conventional systems, and the processorwas replaced by a FPGA of similar size and equivalent cost.
FPGA based stepper motor controller 9
5 Conclusions
A novel algorithm with reduced quantity of operations was introduced. This al-gorithm implemented on FPGA allows a substantial decrease of the equivalentprocessing time developed by classic velocity controllers. As a consequence, thestepper motor can reach very high speeds never obtained with standard algo-rithm based systems.
Due to the system architecture, one FPGA can drive several stepper motorssimultaneously without increasing the processing time. It can drive three steppermotors with current 10000 gates FPGAs. This advantage make the system veryconvenient since it allows the increase of the number of motors, simply using alarger FPGA.
References
1. W. Coosemans and H. Mainaud, “Pre-alignment of clic using the double-wiremethod,” European Organization of Nuclear Research (CERN), Tech. Rep. 343,July 1997, CLIC-NOTE 343.
2. H. Braun, “Experimental results and technical research and development at CTFII,”in Proc. European Particle Accelerator Conference-EPAC2000, Vienna, Austria,June 20–30, 2000, pp. 48–52. [Online]. Available: http://accelconf.web.cern.ch/accelconf/e00/
3. P. Poirier, “Lalignement dynamique submicrometrique de sections acceleratrices,”Memoire de soutenance du Diplome de Recherche Specialisee en Sciences, UniversiteLouis Pasteur de Strasbourg, September 1991.
4. T. Kenjo and A. Sugawara, Stepping Motors and their Microprocessor Controls,2nd ed., ser. Monographs in Electrical and Electronic Engineering. Oxford, U.K.:Oxford University Press, 1995.
5. D. O. Carrica and S. A. Gonzalez, “Algoritmo eficiente para la generacion de perfilesde velocidad en el accionamiento simultaneo de multiples motores paso a paso,” VIIIReunion de Trabajo en Procesamiento de la Informacion y Control., Vol. I , 1999,pp. 118–122.
6. The Programable Logic Data Book. Xilinx, 2000.7. “Core generator,” http://www.xilinx.com/products/logicore/coregen/index.htm,
2000.8. M. Funes, D. Carrica, and M. Benedetti, “Multiplicadores secuenciales para es-
tructuras FPGA,” IX Reunion de Trabajo en Procesamiento de la Informacion yControl., vol. Vol. II, pp. 646–651, 2001.
9. J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach.San Francisco, California ISBN: 1-55860-329-8: Morgan Kaufmann Publishers, Inc.,1996.