You are on page 1of 255

MULTIPLICACION SECUENCIAL EN DISPOSITIVOS LOGICOS PROGRAMABLES

Ing. Marcos Funes

Este Trabajo de Tesis fue presentado al Departamento de Electrnica o de la Facultad de Ingenier de la Universidad Nacional de Mar del Plata a el 8 de Octubre de 2007, como requisito parcial para la obtencin del t o tulo de

Doctor en Ingenier Mencin Electrnica a. o o

Director: Dr. Daniel Carrica Co-Director: Ing. Mario Benedetti

A mis Padres. A Andrea. A Nicols, Alejandro y Fernando a

Indice general
Agradecimientos Resumen Nomenclatura 1. Introduccin o 1.1. Estructuras de Multiplicadores . . . . . . . . . . . . . . . . . . . . 1.2. Objetivos de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Organizacin de la tesis o . . . . . . . . . . . . . . . . . . . . . . .
XVII

XVIII

XX

1 2 4 4 6 6 7 7 9 12 12 13 15 16

2. Arquitecturas de Multiplicadores 2.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.2. Algoritmo de la Multiplicacin . . . . . . . . . . . . . . . . . . . . o 2.2.1. Operandos en punto jo . . . . . . . . . . . . . . . . . . . 2.2.2. Operandos en punto otante . . . . . . . . . . . . . . . . . 2.3. Adicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.3.1. Semisumador . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Sumador Total . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3. Suma por Propagacin de Acarreo . . . . . . . . . . . . . . o 2.3.4. Suma Carry-Save . . . . . . . . . . . . . . . . . . . . . . .

iii

2.3.5. Suma Multi-operandos . . . . . . . . . . . . . . . . . . . . 2.4. Multiplicadores Paralelos . . . . . . . . . . . . . . . . . . . . . . . 2.4.1. Multiplicador por Tabla de Look-up . . . . . . . . . . . . . 2.4.2. Multiplicador Ripple Carry . . . . . . . . . . . . . . . . . 2.4.3. Multiplicador Carry Save . . . . . . . . . . . . . . . . . . . 2.4.4. Multiplicador Guild . . . . . . . . . . . . . . . . . . . . . . 2.4.5. Multipicador McCanny-McWhinter . . . . . . . . . . . . . 2.5. Consumo de recursos lgicos . . . . . . . . . . . . . . . . . . . . . o 2.5.1. Operandos en Punto Fijo . . . . . . . . . . . . . . . . . . . 2.5.2. Operandos en punto otante . . . . . . . . . . . . . . . . . 2.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Nuevas Arquitecturas de Multiplicadores 3.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.2. Multiplicacin Secuencial . . . . . . . . . . . . . . . . . . . . . . . o 3.2.1. Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Implementacin . . . . . . . . . . . . . . . . . . . . . . . . o 3.2.3. Multiplicador Secuencial de Base 4 . . . . . . . . . . . . . 3.3. Arquitecturas Propuestas en Punto Fijo . . . . . . . . . . . . . . 3.3.1. Multiplicador Secuencial Sin Entradas Registradas . . . . . 3.3.2. Multiplicador Secuencial Fraccionado . . . . . . . . . . . . 3.3.3. Multiplicador de Sumas Consecutivas . . . . . . . . . . . . 3.4. Comparacin de los multiplicadores . . . . . . . . . . . . . . . . . o 3.4.1. Multiplicadores optimizados en consumo de recursos . . . . 3.4.2. Multiplicadores optimizados en velocidad . . . . . . . . . . 3.4.3. Performance de los multiplicadores . . . . . . . . . . . . . 3.5. Arquitecturas Propuestas en Punto Flotante . . . . . . . . . . . .

17 19 19 20 22 23 25 25 25 31 32 33 33 34 34 37 45 56 56 61 67 75 75 76 78 80

iv

3.5.1. Variante Multiplicador Secuencial Sin Entradas Registradas 80 3.5.2. Variante Multiplicador Secuencial de Sumas Consecutivas . 3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Resultados Experimentales 4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 4.2. Parmetros de inters . . . . . . . . . . . . . . . . . . . . . . . . . a e 4.3. Multiplicacin en Punto Fijo . . . . . . . . . . . . . . . . . . . . . o 4.3.1. Consumo de recursos lgicos . . . . . . . . . . . . . . . . . o 4.3.2. Comportamiento temporal . . . . . . . . . . . . . . . . . . 86 90 92 92 92 93 93 98

4.3.3. Comparacin de los multiplicadores . . . . . . . . . . . . . 101 o 4.4. Multiplicacin en Punto Flotante . . . . . . . . . . . . . . . . . . 114 o 4.4.1. Consumo de recursos lgicos . . . . . . . . . . . . . . . . . 114 o 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 A. Dispositivos Lgicos Programables o 129 137

A.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 o A.2. PLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 A.3. CPLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 A.4. FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 A.4.1. Celdas Lgicas . . . . . . . . . . . . . . . . . . . . . . . . 143 o A.4.2. Recursos dedicados . . . . . . . . . . . . . . . . . . . . . . 145 v

A.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 B. Sistemas numricos e 150

B.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 o B.2. Representacin numrica . . . . . . . . . . . . . . . . . . . . . . . 150 o e B.2.1. Punto jo . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 B.2.2. Punto otante . . . . . . . . . . . . . . . . . . . . . . . . . 154 B.2.3. No-convencionales . . . . . . . . . . . . . . . . . . . . . . . 157 C. Multiplicacin Secuencial aplicada al Control de Movimiento o 159

C.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 o C.2. Accionamientos paso a paso . . . . . . . . . . . . . . . . . . . . . 161 C.2.1. Generacin de perles de velocidad O-line . . . . . . . . . 162 o C.2.2. Generacin de perles de velocidad On-line . . . . . . . . . 162 o C.3. Generacin de perles de velocidad mediante FPGA . . . . . . . . 167 o C.3.1. Implementacin del producto Vr nk o . . . . . . . . . . . . 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. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 o D.2. Multiplicadores secuenciales en FPGA: Evaluacin y Comparacin o o de Parmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 a D.3. Estudio comparativo de multiplicadores secuenciales implementados 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 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 D.8. FPGA based stepper motor controller . . . . . . . . . . . . . . . . 225

vii

Indice de Tablas
2.1. Producto de dos operandos de 4 bits . . . . . . . . . . . . . . . . 2.2. Implementacin de multiplicadores en FPGA. . . . . . . . . . . . o 3.1. Producto de dos operandos de 4 bits, acumulacin de productos o parciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Multiplicacin secuencial con desplazamiento a la izquierda para o operandos de 4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . 35 34 7 29

3.3. Multiplicacin con desplazamiento a la derecha para operandos de o 4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Estimacin de consumo de recursos lgicos de un SM. . . . . . . . o o 3.5. Retardos de una FPGA Xilinx Spartan-4. . . . . . . . . . . . . . . 3.6. Producto de dos operandos en base 4 . . . . . . . . . . . . . . . . 3.7. Multiplicacin base 4 de dos operados de 4 bits. . . . . . . . . . . o 3.8. Codicacin de los d o gitos, alternativa (-X). . . . . . . . . . . . . 3.9. Multiplicacin base 4, alternativa (-X). . . . . . . . . . . . . . . . o 3.10. Estimacin de consumo de recursos de un SMB4(3X). . . . . . . . o 3.11. Estimacin de consumo de recursos lgicos SMB4(-X). . . . . . . o o 3.12. Estimacin de consumo de recursos lgicos de un SMSR. . . . . . o o 3.13. Estimacin de consumo de recursos lgicos SMF(SM). . . . . . . . o o 3.14. Estimacin de consumo de recursos lgicos de un SMF(SMSR). . o o 36 40 43 46 46 47 48 49 50 57 63 64

viii

3.15. Ejemplo de una multiplicacin mediante sumas consecutivas . . . o 3.16. Estimacin de consumo de recursos lgicos de un SMSC(SM). . . o o 3.17. Estimacin de consumo de recursos lgicos de un SMSC(SMSR). . o o 3.18. Estimacin de consumo de recursos lgicos de la variante SMSR o o con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . . 3.19. Estimacin de consumo de recursos lgicos de la variante SMSR o o con redondeo a +. . . . . . . . . . . . . . . . . . . . . . . . . . 3.20. Estimacin de consumo de recursos lgicos de la variante SMSC o o con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . . 3.21. Estimacin de consumo de recursos lgicos de la variante SMSC o o con redondeo a +. . . . . . . . . . . . . . . . . . . . . . . . . . 4.1. Consumo de recursos de los multiplicadores en Spartan[CLB]. . . 4.2. Consumo Estimado de recursos de los multiplicadores [CLB]. . . . 4.3. Diferencia porcentual, Consumo Experimental vs Estimado [ %]. . 4.4. Consumo de recursos de los multiplicadores en Virtex [slices]. . . . 4.5. Consumo de recursos de los multiplicadores en Virtex II [slices]. . 4.6. Retardo de propagacin de los multiplicadores en Spartan [ns]. . . o

68 69 70

84

85

88

90 94 94 95 98 98 99

4.7. Retardo estimado de propagacin de los multiplicadores Trd = 0 [ns]. 99 o 4.8. Diferencia porcentual, Retardo de propagacin Experimental vs o 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 lgicos de los multiplicadores en punto oo tante en Spartan [CLBs]. . . . . . . . . . . . . . . . . . . . . . . . 114

ix

4.13. Consumo de recursos lgicos de las variantes en Virtex [slices]. . . 115 o 4.14. Consumo de recursos lgicos de las variantes en Virtex II [slices]. . 115 o 4.15. Comportamiento temporal de las variantes en Spartan [Mop/s]. . 115 4.16. Comportamiento temporal de las variantes en Virtex [Mop/s]. . 116

4.17. Comportamiento temporal de las variantes en Virtex II [Mop/s]. 116 5.1. Implementacin de Multiplicadores Paralelos en FPGA. . . . . . . 122 o 5.2. Resultados experimentales de Multiplicadores Secuenciales . . . . 123 5.3. Resultados experimentales de los Multiplicadores Secuenciales propuestos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.4. Resultados experimentales de Multiplicadores en Punto Flotante . 125 B.1. Punto otante estndar. . . . . . . . . . . . . . . . . . . . . . . . 156 a B.2. Punto otante a medida. . . . . . . . . . . . . . . . . . . . . . . . 157

Indice de guras
2.1. Diagrama en bloques de un multiplicador en punto otante . . . . 2.2. Semisumador a) S mbolo lgico, b) y c) arquitectura. . . . . . . . o 2.3. Sumador total,a) s mbolo lgico b) y c) arquitecturas. . . . . . . . o 2.4. S mbolo lgico de un CPA e implementacin de un RCA. . . . . o o 2.5. CSA a) S mbolo lgico y b) implementacin con FAs. . . . . . . . o o 2.6. Sumadores concatenados a) con CPA, b) con CSA. . . . . . . . . 2.7. Arbol de sumadores para m=9. . . . . . . . . . . . . . . . . . . . 2.8. Multiplicador por Tabla de Look-up. . . . . . . . . . . . . . . . . 2.9. Multiplicador Ripple Carry de 4 bits. . . . . . . . . . . . . . . . . 2.10. PE de un multiplicador Ripple Carry. . . . . . . . . . . . . . . . . 2.11. Esquema de un multiplicador Ripple Carry mediante PEs. . . . . 2.12. Multiplicador Carry Save de 4 bits. . . . . . . . . . . . . . . . . . 2.13. PE de un multiplicador Carry Save. . . . . . . . . . . . . . . . . . 2.14. Esquema de un multiplicador Carry Save mediante PEs. . . . . . 2.15. PE de un multiplicador paralelo Guild. . . . . . . . . . . . . . . . 2.16. Multiplicador paralelo Guild. . . . . . . . . . . . . . . . . . . . . . 2.17. PE de un multiplicador Mccanny - Mcwhinter. . . . . . . . . . . . 2.18. Multiplicador paralelo Mccanny - Mcwhinter. . . . . . . . . . . . 2.19. Consumo de recursos lgicos de MP. o . . . . . . . . . . . . . . . . 9 13 15 16 17 18 19 20 20 21 21 22 22 23 23 24 25 26 28 29

2.20. Multiplicadores proporcionados por Xilinx. . . . . . . . . . . . . . xi

2.21. Implementacin de Multiplicadores n = 8 . . . . . . . . . . . . . . o 2.22. Implementacin de Multiplicadores n = 16 . . . . . . . . . . . . . o 2.23. Implementacin de un multiplicador optimizado en area de Xilinx o n = 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1. Multiplicador SM con desplazamiento a la derecha. . . . . . . . . 3.2. Multiplicador SM con desplazamiento a la derecha con registro compartido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Multiplicador SM con desplazamiento a la izquierda. . . . . . . . 3.4. Consumo de recursos del SM. . . . . . . . . . . . . . . . . . . . . 3.5. Esquema de retardos en un sumador. . . . . . . . . . . . . . . . . 3.6. Retardo de propagacin estimado del SM. . . . . . . . . . . . . . o 3.7. Mxima frecuencia de reloj estimada aplicable al SM. . . . . . . . a 3.8. Velocidad mxima de procesamiento del SM. . . . . . . . . . . . . a 3.9. Diagrama de un SMB4(3X). . . . . . . . . . . . . . . . . . . . . . 3.10. Diagrama de un SMB4(-X). . . . . . . . . . . . . . . . . . . . . . 3.11. Diagrama de la variante del SMB4(-X). . . . . . . . . . . . . . . . 3.12. Consumo de recursos de multiplicadores SM. . . . . . . . . . . . . 3.13. Retardo de propagacin estimado del SMB4(3X). . . . . . . . . . o 3.14. Mxima frecuencia de reloj estimada aplicable al SMB4(3X). . . . a 3.15. Velocidad mxima de procesamiento del SMB4(3X). . . . . . . . . a 3.16. Retardo de propagacin estimado del SMB4(-X). o . . . . . . . . .

30 30

31 37

38 39 41 42 44 44 45 47 49 50 52 53 53 54 55 55 56 57 58 59

3.17. Mxima frecuencia de reloj estimada aplicable al SMB4(-X). . . . a 3.18. Velocidad mxima de procesamiento del SMB4(-X). . . . . . . . . a 3.19. Multiplicador SMSR. . . . . . . . . . . . . . . . . . . . . . . . . . 3.20. Consumo de recursos del SMSR. . . . . . . . . . . . . . . . . . . . 3.21. Retardo de propagacin estimado del SMSR. . . . . . . . . . . . . o

xii

3.22. Mxima frecuencia de reloj estimada aplicable al SMSR. . . . . . a 3.23. Velocidad mxima de procesamiento del SMSR. . . . . . . . . . . a 3.24. Diagrama de operacin de un SMF. . . . . . . . . . . . . . . . . . o 3.25. Consumo de recursos de multiplicadores SMF. . . . . . . . . . . . 3.26. Retardo de propagacin estimado del SMF. . . . . . . . . . . . . . o 3.27. Mxima frecuencia de reloj estimada aplicable al SMF. . . . . . . a 3.28. Velocidad mxima de procesamiento de los SMF. . . . . . . . . . a 3.29. Ejemplo de un SMSC(SM). . . . . . . . . . . . . . . . . . . . . .

60 60 62 65 66 66 67 68 69 71 72 73 74 74 75 76

3.30. Ejemplo de un SMSC(SMSR). . . . . . . . . . . . . . . . . . . . . 3.31. Consumo de recursos estimado de un SMSC. . . . . . . . . . . . . 3.32. Ruta cr tica de dos sumas consecutivas. . . . . . . . . . . . . . . . 3.33. Retardo de propagacin estimado del SMSC. . . . . . . . . . . . . o 3.34. Mxima frecuencia de reloj estimada aplicable al SMSC. . . . . . a 3.35. Velocidad mxima de procesamiento del SMSC. . . . . . . . . . . a 3.36. Consumo de recursos lgicos de un SM vs SMSR. . . . . . . . . . o 3.37. Velocidad de procesamiento de un SM vs SMSR. . . . . . . . . . . 3.38. Consumo de recursos lgicos de los multiplicadores optimizados en o velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.39. Velocidad de procesamiento de los multiplicadores optimizados en velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.40. Indice de performance de los multiplicadores. . . . . . . . . . . . . 3.41. Indice de performance de los multiplicadores 20 < n < 32. . . . . 3.42. Modicacin del SMSR para el producto de las mantisas . . . . . o 3.43. Ejemplo del esquema de redondeo implementado . . . . . . . . . . 3.44. Multiplicacin de las mantisas. . . . . . . . . . . . . . . . . . . . . o 3.45. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . . 3.46. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . . xiii

77

78 79 80 81 83 83 85 86

3.47. SMSC modicado para el producto de las mantisas . . . . . . . . 3.48. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . . 3.49. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . . 4.1. S ntesis de un CLB del multiplicador SM. . . . . . . . . . . . . . . 4.2. Consumo de recursos lgicos del SM en Spartan. . . . . . . . . . . o 4.3. Consumo de recursos lgicos del SM en Spartan. . . . . . . . . . . o

87 89 91 95 96 97

4.4. Consumo de recursos lgicos: SM vs SMSR en Spartan. . . . . . . 102 o 4.5. Consumo de recursos lgicos: SM vs SMSR en Virtex. . . . . . . . 103 o 4.6. Consumo de recursos lgicos: SM vs SMSR en Virtex II. . . . . . 103 o 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 lgicos de multiplicadores optimizados en o velocidad en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.11. Consumo de recursos lgicos de multiplicadores optimizados en o velocidad en Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.12. Consumo de recursos lgicos de multiplicadores optimizados en o 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 velocidad en Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.15. Velocidad de procesamiento de multiplicadores optimizados en velocidad 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. Distribucin de bloques de una FPGA de Xilinx . . . . . . . . . . 141 o A.3. Matriz de interconexin de una FPGA de Xilinx . . . . . . . . . . 143 o A.4. Descripcin de un LE de una FPGA FLEX10K de Altera . . . . . 144 o A.5. Descripcin de un CLB de una FPGA XC4000 de Xilinx . . . . . 145 o A.6. Recursos lgicos de algunas FPGAs de Xilinx . . . . . . . . . . . 146 o A.7. Lgica de acarreo dedicada de una FPGA XC4000 de Xilinx . . . 148 o B.1. Esquema de formatos numricos . . . . . . . . . . . . . . . . . . . 151 e C.1. Esquema de motores de una seccin del CLIC. . . . . . . . . . . . 161 o

xv

C.2. Sistema de control de movimiento de motores de accionamiento incremental. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 C.3. Diagrama de ujo de un algoritmo on-line. . . . . . . . . . . . . . 163 C.4. Perl de velocidad trapezoidal. . . . . . . . . . . . . . . . . . . . . 164 C.5. Perl de velocidad, deseado, cuantizado y la temporizacin resulo tante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

C.6. (Izquierda) Posicin y velocidad con el algoritmo iterativo. (Dereo cha) Detalle del perl de posicin y velocidad del perl iterativo . 167 o C.7. Arquitectura hardware del algoritmo de generacin de perl de o velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 C.8. Implementacin del multiplicador Ripple Carry en una FPGA XC4006E.170 o C.9. Implementacin de un multiplicador optimizado en area de Xilinx o en una FPGA XC4006E. . . . . . . . . . . . . . . . . . . . . . . . 171 C.10.Perl de velocidad y posicin del accionamiento controlado por un o sistema basado en FPGA. 15 rev 6000 pasos s s . . . . . . . . . . . . 173

C.11.Perl de velocidad del accionamiento controlado por un sistema basado en FPGA. 62,5 rev 25000 pasos . . . . . . . . . . . . . . . 174 s s C.12.Perl de velocidad del accionamiento utilizando el modo de micropasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 C.13.Perles de posicin y velocidad para un sistema de accionamiento o en modomicropaso. . . . . . . . . . . . . . . . . . . . . . . . . . . 177

xvi

Agradecimientos
A Mario A Daniel A mis colegas en el Laboratorio de Instrumentacin y Control o

xvii

Resumen
El objetivo principal de esta tesis fue desarrollar arquitecturas de multiplicadores binarios de menor consumo de recursos lgicos que las existentes, manteniendo o las prestaciones de velocidad de clculo. El propsito particular fue implementar a o las mismas en los dispositivos digitales denominados FPGA (Field Programmable Gate Array). Para ello se investigaron las estructuras de multiplicacin del tipo secuencial o 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 lgicos y el desempeo temporal de los o n mismos. Se desarrollaron nuevas arquitecturas que se compararon con las existentes. Se introdujo un nuevo indicador denominado ndice de performance, que permite cuanticar el costo de un multiplicador para una dada FPGA. Los resultados tericos se corroboraron con un exhaustivo trabajo experimental mediante o el cual se han validado las ecuaciones obtenidas. A partir de la validacin de los modelos de los multiplicadores, se determinao ron los esquemas de mayor desempeo que cumplen con los objetivos deseados. n As se arrib a multiplicadores en punto jo con los que se obtuvo un consu o mo de recursos hasta 8 veces menor y una velocidad comparable a la de una arquitectura existente. Los avances se extendieron a la multiplicacin en punto o xviii

otante, obteniendose esquemas de bajo consumo de recursos y buena velocidad de procesamiento.

xix

Nomenclatura
1C 2C ALP ASIC CLB CPA CPLD CSA DSP FA FF FG FPGA GAL HA LSB LUT Complemento a 1 Complemento a 2 Arreglo Lgico Programable o Application Specic Integrated Circuit Congurable Logic Block Carry Propagate Adder Complex Programmable Logic Device Carry Save Adder Digital Signal Processor Full Adder Flip Flop Function Generator Field Programmable Gate Array Generic Array Logic Half Adder Least Signicant Bit Look-up Table xx

MAC MP PAL PE PLD PROM PS RCA SM SMB4 SMF SMSC SMSR SR VHDL

Multiplicador/Acumulador Multiplicador Paralelo Programmable Array Logic Procesador Elemental Programmable Logic Device Programmable Read Only Memory Processing Speed Ripple Carry Adder Multiplicador Secuencial Multiplicador Secuencial de base 4 Multiplicador Secuencial Fraccionado Multiplicador Secuencial de Sumas Consecutivas Multiplicador Secuencial Sin entradas Registradas Shift Register Very high speed integrated circuit Hardware Description Language

fc pi P TBY P Tc TCK TCKO

Mxima frecuencia de reloj a Bit i del operando P Operando Producto CIN to COU T bypass delay Tiempo de clculo a Per odo de reloj Clock-to-output delay xxi

TILO TOCP Y tpd Trd TSU M X, Y xi , yi

F/G inputs to X/Y outputs delay Operand inputs (F1, F2, G1, G4) to COU T delay Propagation delay Route delay CIN through function generator to X/Y output delay Operando Multiplicando y multiplicador respectivamente Bit i del operando Multiplicando y Multiplicador respectivamente

Vmin Vmax Vr (k) t(k)

Velocidad m nima Velocidad mxima a Velocidad de referencia para el paso k-esimo Per odo de tiempo entre el paso actual y el prximo o

xxii

Cap tulo 1 Introduccin o


En el Procesamiento Digital de Seales (PDS) se recurre, como operacin n o elemental, al producto de dos operandos y la posterior adicin de un tercero, o estructura conocida como MAC (Multiplicador/Acumulador). Los dispositivos de clculo ms empleados en el PDS son los DSPs (Digital a a Signal Processors). Si bien los DSPs son baratos y exibles, poseen slo una unio dad MAC por lo que un proceso aritmtico demanda la ejecucin secuencial de las e o operaciones. Como consecuencia, una operacin algor o tmica consume un determinado tiempo de ejecucin y, si fuera necesario utilizar un tiempo de ejecucin o o menor, convendr adoptar hardware a medida, alternativa proporcionada por los a ASICs (Application-Specic Integrated Circuit) y las FPGAs (Field Programmable Gate Array). Tanto los ASICs como las FPGAs posibilitan la utilizacin de o varias MACs en paralelo, logrando de este modo una notable reduccin del tiempo o de procesamiento. Los ASICs admiten implementar sistemas complejos y resguardan la propiedad intelectual de los procesos debido a que no son copiables. Sin embargo implican un gran costo de fabricacin por lo que no aceptan errores o en su desarrollo y, consecuentemente, su utilizacin representa un gran riesgo de o produccin. o 1

Cap tulo 1. Introduccin o

En cuanto a las FPGAs, stas combinan la exibilidad de un DSP con la e velocidad y la densidad de componentes de un ASIC. Las FPGAs poseen una gran cantidad de recursos lgicos, un bajo costo de desarrollo ya que son fciles de o a depurar y, fundamentalmente, permiten al diseador corregir errores y actualizar n el diseo. Estas ventajas convierten a las FPGAs en dispositivos apropiados como n procesadores de seales o aceleradores de clculo. n a

1.1.

Estructuras de Multiplicadores

Los multiplicadores se pueden clasicar segn el modo en que ingresan los u operandos [1] [2]. Si ambos operandos ingresan en forma serie se denominan serie/serie. La mayor ventaja de estos multiplicadores reside en el bajo nmeu ro de entradas/salidas utilizadas y en la bajo consumo de recursos lgicos, sin o embargo estos multiplicadores se encuentran limitados a aplicaciones de baja velocidad [3] [4] [5]. Si slo uno de los operandos ingresa en forma serie, el mulo tiplicador se denomina serie/paralelo [6]. Este tipo de multiplicadores presentan un consumo de recursos lgicos moderado y son ideales para aplicaciones de veloo cidad media donde los multiplicadores serie/serie son demasiado lentos. Si ambos operandos son ingresados en paralelo el tipo de multiplicador es denominado paralelo/paralelo. Estos ultimos son los que se tratarn en esta tesis debido a su a capacidad de procesar los datos a alta velocidad. Los multiplicadores tambin se pueden clasicar en funcin del algoritmo de e o clculo en: suma y desplazamiento, por arbol o contadores. Los multiplicadores a por suma y desplazamiento utilizan el mtodo conocido comnmente como lpiz e u a y papel para calcular el producto. En algunos casos esta tarea se realiza construyendo una celda de procesamiento bsica que se repite en un arreglo determinado. a

Cap tulo 1. Introduccin o

La diferencia de procesamiento de estos multiplicadores radica en el tipo de comunicacin entre estas celdas, que puede ser local (solo existe comunicacin entre o o celdas vecinas) o global (existe comunicacin mas all de la celda vecina). Con el o a 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 nmero de sumandos. Otro modo de u acelerar los productos parciales consiste en la utilizacin de contadores paraleo 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 simultnea son denominados habitualmente multiplicadores paralelos. Esa tos multiplicadores realizan el producto rpidamente, pero son dif a ciles de realizar cuando un dispositivo posee una cantidad de recursos limitada. Este problema se acenta, cuando el formato de los operandos esta expresado en punto otante. u Los multiplicadores en punto otante utilizan t picamente multiplicadores paralelos para el producto de las mantisas [9] [10]. A medida que se incrementa la complejidad de la operacin, el consumo de recursos lgicos utilizados aumenta o o notablemente y consecuentemente los costos de implementacin. o Un esquema de multiplicacin de operandos en paralelo que utiliza una menor o cantidad de recursos lgicos es el denominado Shift and Add [11] [12] o secuencial o (SM). Esta reduccin del consumo de recursos se realiza a costa de ejecutar tantas o iteraciones como longitud de palabra posean los operandos [13] [14]. Esto representa una seria desventaja debido al excesivo tiempo de clculo y por esta razn a o han sido excluidos de las aplicaciones t picas. Por otro lado, si se puede mejorar el desempeo en velocidad sin incurrir en la cantidad de recursos que requiere un n
En la multiplicacin de dos nmeros enteros de n bits se denomina producto parcial al o u producto un bit del multiplicador por el multiplicando.
1

Cap tulo 1. Introduccin o

multiplicador paralelo, estos multiplicadores pueden resultar ms ventajosos. a

1.2.

Objetivos de la tesis

El objetivo principal de esta tesis consiste en el desarrollo de multiplicadores con un reducido consumo de recursos lgicos, que mantengan un desempeo o n aceptable de la velocidad de procesamiento. En funcin de este objetivo, se caracterizarn las arquitecturas de los multio a plicadores existentes. Se propondrn variantes que incluyan la multiplicacin de a o operandos en punto jo y punto otante.

1.3.

Organizacin de la tesis o

Esta tesis est dividida en cinco cap a tulos. El Cap tulo 1 presenta el estado del arte e introduce aspectos de la temtica de esta tesis. El Cap a tulo 2 presenta conceptos bsicos sobre la multiplicacin. Se presentan los esquemas de Multia o plicadores Paralelos, los cuales se caracterizan y se ensayan con el objetivo de cuanticar la problemtica de consumo de recursos. a El Cap tulo 3 est dedicado al desarrollo de la propuesta que consiste en la a aplicacin de Multiplicadores Secuenciales al producto binario en punto jo y en o punto otante. En este cap tulo se desarrollan diferentes esquemas de Multiplicacin Secuencial para los cuales se estima su desempeo en cuanto a la cantidad o n de recursos lgicos y velocidad de procesamiento. o El Cap tulo 4 est dedicado a la vericacin experimental. Para ello se exa o plicita la implementacin prctica de los diferentes esquemas desarrollados sobre o a algunas familias de FPGAs. El objetivo de este cap tulo es la contrastacin de las o estimaciones obtenidas en el cap tulo anterior con los resultados experimentales.

Cap tulo 1. Introduccin o

En el mismo se establecen criterios de comparacin, en trminos de performance, o e entre los multiplicadores propuestos y otros existentes. Adicionalmente, se presentan cuatro apndices, a saber: e El Apndice A realiza una breve descripcin de los Dispositivos Lgicos Proe o o gramables y sus caracter sticas. El Apndice B introduce los formatos numricos utilizados en PDS. e e El Apndice C describe la aplicacin espec e o ca de los multiplicadores secuenciales 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 implementacin hardware de un algoritmo de control de posicin. o o Finalmente, el Apndice D presenta los trabajos publicados como resultado e del trabajo de tesis.

Cap tulo 2 Arquitecturas de Multiplicadores


2.1. Introduccin o

La utilizacin de FPGA en el Procesamiento Digital de Seales (PDS) es suo n mamente ventajosa. Una de las ventajas consiste en la posibilidad de lograr un hardware a medida que incluya desde la seleccin de la longitud de palabra de o los operandos hasta la ejecucin de los clculos. Un hardware a medida puede o a realizar clculos ms rpidamente que uno programable porque pueden disponera a a se varias unidades de clculo en una sola FPGA. Estos multiplicadores pueden a operar independientes de modo de explotar toda la potencial concurrencia de un algoritmo. Adicionalmente, en la FPGA se pueden ejecutar otros procesos, como atencin de perifricos, comunicacin, etc. sin interferir con el procesamiento. o e o En PDS [15] [16] [17] los procesos recurren, como operacin elemental, al o producto de dos operandos y la posterior adicin de un tercero, denominada o MAC (Multiplicador/Acumulador). En una MAC, la multiplicacin demanda una o mayor cantidad de recursos lgicos que la adicin. o o En este cap tulo se realiza un repaso de conceptos de la multiplicacin de opeo randos en punto jo y punto otante. Luego, para comprender las arquitecturas 6

Cap tulo 2. Arquitecturas de Multiplicadores

de los multiplicadores se introducen aspectos relativos a la adicin. Finalmente, o se presentan las estructuras de multiplicadores paralelos y su implementacin en o FPGA.

2.2.
2.2.1.

Algoritmo de la Multiplicacin o
Operandos en punto jo

Multiplicacin de enteros sin signo o El producto de dos operandos binarios de n bits, un multiplicando, X =
n1 j=0

xj 2j y un multiplicador, Y =

n1 j=0

yj 2j est representado por la Ec. (2.1). a

P =Y X
n1

(2.1) (2.2)

=
j=0 n1

yj 2j X 2j yj X
j=0

(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 x3 x2 x1 x0 y3 y2 y1 y0 s03 s02 s01 s00 s13 s12 s11 s10 + s23 s22 s21 s20 s33 s32 s31 s30 p7 p6 p5 p 4 p3 p2 p 1 p0 producto parcial Producto bits y0 X20 y1 X21 y2 X22 y3 X23 P

S = sj,n1 , ..., sj,2 , sj,1 , sj,0 con j = 0, 1, 2 n 1 P = p2n1 , ..., p2 , p1 , p0

Cap tulo 2. Arquitecturas de Multiplicadores

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 tambin como mtodo del lpiz y papel. e e a Multiplicacin de enteros con signo o En sistemas de magnitud con signo, la magnitud y el signo son representados en forma separada. Existen multiples formatos para expresar los nmeros con u signo, como por ejemplo Magnitud y Signo, Complemento a 1 (1C) y Complemento a 2 (2C) (ver Seccin B.2.1). o La multiplicacin de dos operandos expresados en Magnitud y Signo se efecta o u como un producto de enteros sin signo, y se ejecuta con una funcin XOR para o procesar el signo. El producto de dos operandos expresados en 1C o 2C se puede efectuar realizando el complemento del operando negativo, multiplicando luego como enteros sin signo y, nalmente, complementando el resultado si slo uno de ellos hubiese o estado complementado. Este tipo de multiplicacin puede resultar sencillo para o el caso de 1C, pero representa bastante complejidad para el caso de 2C. En este caso, se puede aplicar el mtodo de lpiz y papel siempre que los operandos sean e a positivos o que el multiplicando sea negativo y el multiplicador positivo. En ambos casos la suma acumulativa de los productos parciales arrojar un resultado a correcto mientras que la acumulacin contemple la extensin de signo. Esto es, o o si el bit ms signicativo es 0, se desplaza el operando introduciendo un 0. En el a caso en que este bit sea 1, el desplazamiento se realiza introduciendo un 1. Cuando el multiplicador sea negativo se debe realizar una correccin al proo cedimiento mencionado que consiste en restar el multiplicando en el ultimo paso, en vez de adicionarlo.

Cap tulo 2. Arquitecturas de Multiplicadores

2.2.2.

Operandos en punto otante

Los sistemas numricos de punto otante fueron desarrollados para operar e con precisin sobre un gran rango dinmico. Sin embargo, este formato numrico o a e requiere algoritmos aritmticos ms complejos. e a La multiplicacin de dos operandos en punto otante incluye varias operacioo nes: obtencin del signo, adicin de los exponentes, multiplicacin de las mantisas o o o y normalizacin del resultado (Ecs. (2.4 - 2.7)). o C = A B = SC 2eC bias 1.fC SC = SA SB eC = eA + eB bias 1.fC = 1.fA 1.fB

(2.4) (2.5) (2.6) (2.7)

El algoritmo para la multiplicacin en punto otante se representa de manera o sinttica en la Fig. 2.1. e
Bits de signo Exponentes Mantisas

Etapa 1

OR-exclusiva

Adicin de exponentes

Producto de mantisas

Etapa 2

Ajuste de bias

Redondeo

Etapa 3

Ajuste de exponente

Normalizacin

Bit de signo

Ofl.

Exponente

Mantisa

Figura 2.1: Diagrama en bloques de un multiplicador en punto otante

Cap tulo 2. Arquitecturas de Multiplicadores

10

Las Ecs. (2.4 - 2.7) se realizan en varias etapas, que se describen a continuacin: o Etapa 1: Se adicionan los exponentes eA y eB ; si el resultado es menor que la representacin, se produce un desbordamiento de capacidad inferior (underow). o En este caso el resultado de toda la operacin se ja al valor cero. En el o caso de un overow, el resultado se ja en el mximo nmero que el formato a u puede representar. Si el operando C es distinto de cero, se concatena el 1 impl cito a la izquierda del fraccional (fA y fB ) representado de cada operando y se realiza el producto entero de los nmeros binarios resultantes (Ec. (2.7)). u Si el operando C es distinto de cero, se realiza la operacin XOR de los o 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 Seccin B.2.2) y la adicin o o de dos operandos produce un desplazamiento superior al representado por el formato. Slo se almacenan los n bits ms signicativos del producto entero de la o a etapa anterior de longitud 2n bits. Se realiza una operacin de redondeo o sobre la mantisa resultante. Etapa 3: Se normaliza el resultado de la mantisa dependiendo del bit ms signicativo a del producto de la Ec. (2.7).

Cap tulo 2. Arquitecturas de Multiplicadores

11

Se ajusta el exponente dependiendo de la normalizacin del producto de las o 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 otante, especican cuatro tipos de redondeo: redondeo al ms cercano, redondeo a +, redondeo a a y redondeo a cero. Redondeo al ms cercano (al par en caso de empate): El estndar IEEE a a recomienda este redondeo por defecto. En este caso se obtiene el valor representable ms cercano al resultado innitesimalmente preciso. a Redondeo a +: El estndar indica que el valor obtenido debe ser el ms a a cercano y no menor que el resultado innitesimalmente preciso. Bsicamente a esto signica 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 estndar indica que el valor obtenido debe ser el ms a a cercano y no mayor que el resultado innitesimalmente preciso. Bsicamente a esto signica 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 ms cercano y a no mayor en magnitud que el resultado innitesimalmente preciso. Este redondeo se aplica truncando el resultado a la derecha del LSB.

Cap tulo 2. Arquitecturas de Multiplicadores Normalizacin o

12

Si el producto de mantisas de la Ec. (2.7) resulta en el rango 2 p 4, se debe realizar un desplazamiento de normalizacin a la derecha para restaurar o el producto al rango 1 pr 2, con el apropiado ajuste del exponente en una unidad.

2.3.
2.3.1.

Adicin o
Semisumador

El Sumador Parcial (SP) tambin llamado Semisumador de un bit (Half Adder e - HA) adiciona dos operandos de un bit y genera como resultado un operando de dos bits. El bit menos signicativo es el bit suma, que surge de realizar la operacion de OR-EXC s = a b. El bit ms signicativo resulta de realizar la a operacin AND, cout = ab. Este bit es llamado bit de acarreo de salida debido al o desborde de la adicin. o La expresin aritmtica de un sumador parcial se puede observar en las Ecs. o e (2.8,2.9 y 2.9), a partir de las que se desprende el clculo del bit s y el bit de a acarreo. 2 cout + s = a + b s = (a + b) mod 2 1 cout = (a + b)div2 = (a + b s) 2 (2.9) (2.8)

En la Fig. 2.2 se puede observar el s mbolo lgico y dos posibles implementao ciones del HA.

Cap tulo 2. Arquitecturas de Multiplicadores


a b cout HA s (a) cout a b a b

13

cout

s (b) s (c)

Figura 2.2: Semisumador a) S mbolo lgico, b) y c) arquitectura. o

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 seal de acarreo de un bit menos signicativo. n Las Ecs. (2.10 y 2.11) representan las ecuaciones lgicas que gobiernan el o funcionamiento del sumador.

s = a b cin cout = ab + acin + bcin

(2.10) (2.11)

Las Ecs. (2.12 - 2.15) representan las ecuaciones aritmticas correspondientes. e

2 cout + s = a + b + cin s = (a + b + cin ) mod 2 cout = (a + b + cin )div2 1 = (a + b + cin s) 2

(2.12) (2.13) (2.14) (2.15)

Otra forma de describir el funcionamiento del FA consiste en declarar dos seales, una seal de generacin (g) y una seal de propagacin (p). La seal g n n o n o n

Cap tulo 2. Arquitecturas de Multiplicadores

14

indica cuando una seal de acarreo 0 o 1 es generada dentro del sumador. La n seal p indica cuando una seal de acarreo de entrada es propagada por el FA sin n n cambio hacia el acarreo de salida. Adicionalmente se denen para este sistema dos seales intermedias de acarreo, c0 y c1 , que pueden ser calculadas para el caso n de cin = 0 y cin = 1. De esta manera, la salida de acarreo puede ser expresada mediante (g, p) o (c0 , c1 ) y la seal de acarreo de entrada puede ser realizada n utilizando compuertas AND-OR o mediante una estructura de multiplexacin. o

g = ab p=ab c0 = ab c1 = a + b s = a b cin = p cin cout = ab + acin + bcin = ab + (a + b)cin = ab + (a b)cin = g + cin = pg + pcin = pa + pcin = cin c0 + cin c1

(2.16) (2.17) (2.18) (2.19)

(2.20)

(2.21)

Se debe tener en cuenta que para el clculo de cout utilizando una estructura a AND-OR, la seal de propagacin puede ser formulada como p = a + b pero para n o el clculo del bit de la adicin debe ser implementada como p = a b. a o Un FA puede ser implementado a partir de dos sumadores parciales, compuertas de dos entradas, multiplexores, o arreglos ms complejos. En la Fig. 2.3 se a pueden observar a), el s mbolo del sumador, y dos alternativas de implementacin: o mediante dos semisumadores y mediante compuertas lgicas. o

Cap tulo 2. Arquitecturas de Multiplicadores

15

Figura 2.3: Sumador total,a) s mbolo lgico b) y c) arquitecturas. o

2.3.3.

Suma por Propagacin de Acarreo o

Una suma de propagacin de acarreo (Carry Propagate Adder - CPA) adiciona o dos operandos de n bits A = (an1 , an2 ..., a0 ), B = (bn1 , bn2 ..., b0 ) y una seal n de acarreo de entrada opcional. El resultado est representado por un operando a de (n + 1) bits que consiste en un operando S = (sn1 , sn2 ..., s0 ) de n bits y una seal de acarreo de salida. n Las Ecs. (2.22 y 2.23) representan las ecuaciones lgicas de cada sumador. o Se puede notar que el acarreo de salida de un bit menos signicativo se propaga hacia un acarreo de entrada de un bit ms signicativo. a

s j = aj b j c j cj+1 = aj bj + (a bj )cj

(2.22) (2.23)

Las Ecs. (2.24 - 2.27) representan las ecuaciones aritmticas correspondientes. e

2n cout + S = A + B + cin

(2.24)

Cap tulo 2. Arquitecturas de Multiplicadores


n1 n1 n1

16

2 cout +
n j=0

2 sj =
j=0 n1

2 aj +
j=0

2j bj + cin

(2.25)

=
j=0

2j (aj + bj ) + cin

(2.26)

2cj+1 + sj = (aj + bj + cj ) donde j = 0, 1, .., n 1 y c0 = cin y cn = cout .

(2.27)

En la Fig. 2.4 se muestra el s mbolo de este sumador, que puede ser implementado mediante varios FAs, y es comnmente denominado Ripple Carry u Adder (RCA). Se observa que se genera una propagacin de la seal de acarreo o n
A cout CPA S (a) B cin cout an-1 bn-1 FA sn-1 (b) a1 b1 ... FA cn-1 c2 s1 c1 a0 b0 FA s0 cin

Figura 2.4: S mbolo lgico de un CPA e implementacin de un RCA. o o que depende de la longitud de palabra de los operandos. La propagacin de esta o seal inuye directamente en la velocidad de procesamiento del sumador debido n al retardo generado.

2.3.4.

Suma Carry-Save

Una suma Carry-Save evita la propagacin del acarreo ubicando a los acarreos o intermedios como salidas en vez de colocarlos en la cadena de propagacin. La o 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 operar como acarreo de entrada. a

Cap tulo 2. Arquitecturas de Multiplicadores

17

Las Ecs. (2.28, 2.29 y 2.30) representan las ecuaciones aritmticas correspone dientes.

2 C + S = A0 + A1 + A2
n n1 2 n1

(2.28) (2.29)

2 ci +
i=0 i=0

2 si =
j=0 i=0 2

2i aj,i

2ci+1 + si =
j=0

aj,i

(2.30)

dnde i = 0, 1, .., n 1. o 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
a2 a1 a0 CSA c s (a) cn a2,n-1 a1,n-1 a0,n-1 FA sn-1 ... c2 (b) a2,1 a1,1 a0,1 FA s1 c1 a2,0 a1,0 a0,0 FA s0

Figura 2.5: CSA a) S mbolo lgico y b) implementacin con FAs. o o tipo de suma es utilizada en la generacin de arreglos de sumadores e implica la o necesidad de una suma nal que aplique los acarreos correspondientes a la suma resultante.

2.3.5.

Suma Multi-operandos

Una suma multi-operando es utilizada en la adicin de m operandos de n o bits, A0 , ...., Am1 (m > 2) arrojando un resultado S con una representacin de o (n + [log m]) bits.
m1

S=
j=0

Aj

(2.31)

Cap tulo 2. Arquitecturas de Multiplicadores

18

Un sumador multi-operando puede ser realizado mediante la concatenacin o serie de m 1 sumadores de Propagacin de Acarreo ( RCAs) de m 2 o o o sumadores Carry-Save seguidos de un sumador de Propagacin de Acarreo. o Ambos tipos de sumadores concatenados son similares en cuanto a su estructura lgica, y requerimientos de hardware, as como la longitud de camino o cr tico. La mayor diferencia entre ambas opciones es el arribo de los bits al ultimo sumador de propagacin. o En el sumador implementado slo con RCAs los bits ms signicativos arriban o a ms tarde que los menos signicativos, debido a la propagacin de la seal de a o n acarreo. Por otro lado, en el sumador implementado con CSAs, el arribo de los bits es balanceado, dependiendo la propagacin del acarreo fundamentalmente o del CPA de la ultima etapa, que t picamente es un RCA, Fig. 2.6.
A0 CPA A2 CPA A3 FA sn (a) CPA sn-1...0 CPA S (b) CSA A1 A0 A1 A2 CSA A2 A3

Figura 2.6: Sumadores concatenados a) con CPA, b) con CSA. Otra suma multi-operando es la propuesta por Wallace [7] tambin denomie nada rbol de sumadores (o Wallace tree). Est compuesto de sumadores CSA en a a un arreglo de arbol con un CPA nal. Esta estructura esta diseada para obtener n un retardo de propagacin m o nimo. La estructura de arbol posee tantas secciones como sean necesarias para reducir el nmero de sumandos a slo dos. En la ultima u o

Cap tulo 2. Arquitecturas de Multiplicadores

19

etapa, se utiliza un CPA rpido que ejecuta la adicin del sumando y el acarreo a o nal. En la Fig. 2.7 se muestra un rbol de sumadores para m = 9. a
A0 A1 A2 CSA A3 A4 A5 CSA A6 A7 A8 CSA

CSA

CSA

CSA

CSA CPA S

Figura 2.7: Arbol de sumadores para m=9.

2.4.

Multiplicadores Paralelos

El multiplicador paralelo (MP) ejecuta el producto de dos operandos simultneamente o en paralelo. Existen nmerosos esquemas de MPs y las vaa u riantes radican en la forma en que se aborda la ejecucin de los subproductos a o n 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 clculo, sino que opera como a una memoria. Se concatenan los operandos X e Y constituyendo una direccin o 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 ms veloz que existe. Su desventaja radica en la cantidad de a

Cap tulo 2. Arquitecturas de Multiplicadores

20

recursos lgicos que demanda. A modo de ejemplo, un multiplicador de 16 bits o requiere una memoria de 4,294,967,296x32 bits.
XY
DIR VALOR

Figura 2.8: Multiplicador por Tabla de Look-up.

2.4.2.

Multiplicador Ripple Carry

El multiplicador paralelo ms difundido se basa en un esquema de propagacin a o del acarreo tal como con la suma multi-operandos mediante CPA. Este multiplicador es conocido como Multiplicador Ripple Carry. En la Fig. 2.9 se muestra un ejemplo de este producto para dos operandos de 4 bits.
y0 x3 0 FA y2 x3 x3 FA x1 FA x0 FA 0 x3 x3 x3 x1 x0

y1

x1

x0

FA y3 x3 x3

FA x1

FA x0

FA

FA p7 p6

FA p5

FA p4

FA p3

p2

p1

p0

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 travs de la s e ntesis de una unidad denominada PE (Procesador Elemental) que contiene una compuerta AND y un FA, Fig. 2.10. Cada PE toma un bit de cada operando v las entradas ai y bi , a calcula su producto a travs de la compuerta AND, suma el resultado proveniente e de un PE previo a travs de si y el acarreo generado de un PE previo a travs e e 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 travs de ao y bo . e
si ao co bo
FA

bi ai ci

so

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.
x3 x2 x1 x0 y0
FA FA FA FA

y1
FA FA FA FA

y2
FA FA FA FA

y3
FA FA FA FA

p7

p6

p5

p4

p3

p2

p1

p0

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 propagacin del o acarreo como la suma Carry Save, Fig. 2.12. Este esquema busca romper la propagacin de la cadena de acarreo para disminuir el retardo de cada suma, lo cual o permite acelerar la multiplicacin. o
y0 x3 x3 x3 x3 x1 x0

y1

x1

x0

HA y2 x3 x3 x1

HA x0

HA

FA y3 x3 x3 x1

FA x0

FA

FA 0 FA p7 p6 FA p5

FA

FA

FA p4 p3 p2 p1 p0

Figura 2.12: Multiplicador Carry Save de 4 bits. Las Figs. 2.13 y 2.14 muestran el PE del multiplicador con propagacin tipo o Carry Save y el multiplicador mediante esta representacin. o
si ao
FA

bi

ci ai

bo co so

Figura 2.13: PE de un multiplicador Carry Save.

Cap tulo 2. Arquitecturas de Multiplicadores


x3 x2 x1 x0 y0
FA FA FA FA

23

y1
FA FA FA FA

y2
FA FA FA FA

y3
FA FA FA FA

FA

FA

FA

FA

p7

p6

p5

p4

p3

p2

p1

p0

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.
si ao
FA

bi

ci ai

co

bo

so

Figura 2.15: PE de un multiplicador paralelo Guild. Este multiplicador est estructurado en cadenas de sumadores para cada bit a del producto, las cuales se encuentran en direccin diagonal desde la esquina o 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 su a

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 utilizacin de o paralelismo y la posibilidad de implementacin pipelines1 . o
y3 x3 y2 x2 y1 x1 y0 x0

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

p7

p6

p5

p4

p3

p2

p1

p0

Figura 2.16: Multiplicador paralelo Guild.


Es una tcnica de aceleracin de procesos que se basa en la introduccin latches o registros en e o o una apropiada posicin del arreglo para separar la operacin en etapas. Una vez implementada, o o el sistema incrementa su velocidad de procesamiento como etapas posea.
1

Cap tulo 2. Arquitecturas de Multiplicadores

25

2.4.5.

Multipicador McCanny-McWhinter

Otro esquema de multiplicacin paralelo es el propuesto por J. McCanny o 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 direccin vertical. Cada sumador de la o cadena recibe en forma diagonal un acarreo de entrada correspondiente a una suma de la cadena previa y env su salida de acarreo a un sumador de una a cadena posterior. Este multiplicador se caracteriza por presentar comunicacin o local entre las celdas bsicas. a
si ai bi ci
FA

bo

ao

co

so

Figura 2.17: PE de un multiplicador Mccanny - Mcwhinter.

2.5.
2.5.1.

Consumo de recursos lgicos o


Operandos en Punto Fijo

El consumo de recursos lgicos (CR) de los Multiplicadores Paralelos mencioo nados var con el esquema utilizado. a Una estimacin de este consumo expresado en trminos de celdas bsicas o e a se realiz para una FPGA de Xilinx. Si se considera que cada CLB (ver Seccin o o A.4.1) posee dos funciones de 4 entradas, cada trmino de salida generado implica e

Cap tulo 2. Arquitecturas de Multiplicadores

26

y0

x3

y1

x2

FA

y2

x1

FA

FA

y3

x0

FA

FA

FA FA

FA

FA

FA

FA FA FA FA FA FA FA

FA

FA

FA FA FA FA FA

FA

FA

p7

p6

p5

p4

p3

p2

p1

p0

Figura 2.18: Multiplicador paralelo Mccanny - Mcwhinter.

Cap tulo 2. Arquitecturas de Multiplicadores


n 2

27

el consumo de

CLBs. Las Ecs. (2.32 - 2.35) resumen la estimacin de consumo o

para las distintas arquitecturas de MPs. Ripple Carry:

CLB(n) = (n 1)n + Carry Save:

n n = n2 2 2

(2.32)

CLB(n) = n(n 1) + Guild:

n n = n2 2 2

(2.33)

CLB(n) = n2 McCanny - McWhinter:

(2.34)

CLB(n) = n2 +

3n2 n(n 1) n + = 2 2 2

(2.35)

En la Fig. 2.19 se graca el consumo de recursos lgicos de estos multiplio cadores. En la misma gura se presenta como referencia la cantidad de recursos lgicos de distintas FPGAs de la serie Spartan de Xilinx. o Se puede concluir que los multiplicadores paralelos, en sus diferentes variantes, presentan un consumo de recursos elevado que se incrementa cuadrticamente con a la longitud de palabra. De las variantes ejemplicadas, la de McCanny-McWhinter es la ms onerosa, mientras que las variantes que menos recursos lgicos consumen a o son la de Ripple Carry y la de Carry Save. En la misma gura se puede observar

Cap tulo 2. Arquitecturas de Multiplicadores

28

tambin que para las FPGAs de menor capacidad slo se pueden implementar e o multiplicadores de longitudes de palabra inferiores a 10 bits.
1500

1000

CLB

XCS40

XCS30 500 XCS20

XCS10 XCS05 0

Ripple Carry Carry Save Guild McCanny

10

15 n

20

25

30

Figura 2.19: Consumo de recursos lgicos de MP. o Los fabricantes de FPGAs ofrecen MPs que pueden ser congurados por el diseador. Por ejemplo Xilinx ofrece dos versiones, una para multiplicadores opn timizados en el consumo de recursos y otra para optimizados en velocidad [21]. La Fig. 2.20 presenta la informacin de referencia proporcionada por el fabricante o donde se puede observar que an los multiplicadores optimizados en consumo de u recursos demandan una importante cantidad de los mismos, limitando la aplicacin de estos multiplicadores a FPGAs de elevado nmero de CLBs. o u Implementacin en FPGA o Se realiz la implementacin de multiplicadores paralelos en FPGA. En la o o la Tabla 2.2 se muestra el consumo de recursos lgicos en trminos de CLBs y o e la velocidad de procesamiento de datos en Millones de Operaciones por segundo (Mops). Se puede notar el notable incremento de consumo de recursos lgicos que o

Cap tulo 2. Arquitecturas de Multiplicadores

29

100 90 80 70 60 8x8 10x10 12x12 Optimizado en Recursos 16x16 8x8 12x12 Opt. en velocidad

MHz

50 40 30 20 10 0 0 50

100

CLBs

150

200

250

Figura 2.20: Multiplicadores proporcionados por Xilinx. demanda cada multiplicador cuando se duplica la longitud de palabra. Tal como se expres anteriormente, este incremento es t o picamente cuadrtico. a Tabla 2.2: Implementacin de multiplicadores en FPGA. o Spartan Virtex Virtex II Bits Tipo CLB Mops Slices Mops Slices Mops 8 MP 61 20.8 64 41.9 64 45.5 8 MX 52 17.5 36 76.3 36 62.6 16 MP 247 10.8 257 22.0 258 24.7 16 MX 213 11.2 140 59.0 141 47.2 32 MX 816 3.1 544 40.5 548 38.5 MP: Multiplicador Paralelo MX: Multiplicador propuesto por Xilinx Las Figs. 2.21(a) y 2.21(b) muestran el area de ocupacin lgica para los o o 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 lgicos de los Mulo tiplicadores Paralelos se incrementa notablemente con la longitud de palabra. Esta caracter stica hace necesaria la utilizacin de FPGAs con gran cantidad de o recursos para poder implementar los multiplicadores. En la Fig 2.23 se muestra 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: Implementacin de Multiplicadores n = 8 o

(a) Ripple Carry

(b) Xilinx

Figura 2.22: Implementacin de Multiplicadores n = 16 o

Cap tulo 2. Arquitecturas de Multiplicadores

31

de Xilinx. Para esta implementacin fue necesario recurrir a una FPGA de 400 o CLBs.

Figura 2.23: Implementacin de un multiplicador optimizado en area de Xilinx o n = 32.

2.5.2.

Operandos en punto otante

La multiplicacin de operandos en punto otante requiere una mayor cantidad o de recursos que su contraparte en punto jo, debido a que se deben realizar ms a operaciones. Sin embargo, de todas las operaciones involucradas, el producto de las mantisas es la que demanda la mayor cantidad de recursos lgicos. o Como se mencion en la Seccin 2.2.2, el producto de las mantisas se efecta o o u como un producto en punto jo. Por lo tanto, el anlisis de consumo de recursos a de la seccin anterior se puede extender a la presente, con la observacin que se o o debe adicionar el consumo de recursos propio de la adicin de los exponentes, o la determinacin del signo y, el de las operaciones de redondeo y normalizacin. o o Razn por la cual, la problemtica de recursos se acenta. o a u Un anlisis de las implicaciones prcticas de la implementacin de multiplicaa a o dores de punto otante 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 encontrar en los trabajos de Allan y Luk [23], Jimenez et al [24] donde se presentan realizaciones parametrizables de multiplicadores. Ms recientemente, en un trabajo presentado por Aty et al [25] se presenta a un esquema de multiplicador que muestra una relacin de compromiso entre la o velocidad de procesamiento y el consumo de recursos lgicos. Sin embargo, en este o trabajo se puede apreciar que el consumo de recursos contina siendo sustancial. u

2.6.

Conclusiones

En este cap tulo se presentaron algunos conceptos de la multiplicacin con el o objetivo de poder introducir la problemtica del consumo de recursos lgicos en a o la implementacin de esta operacin. o o Se concluye que, si bien los multiplicadores paralelos permiten ejecutar productos rpidamente, el consumo de recursos de estos multiplicadores es muy elea vado aumenta cuadrticamente con la longitud de palabra. Esto presenta una a desventaja respecto a la utilizacin de estos dispositivos para el procesamiento o de seales, pues restringe la implementacin de los mismos a FPGAs de gran n o tamao y costo. n

Cap tulo 3 Nuevas Arquitecturas de Multiplicadores


3.1. Introduccin o

La utilizacin de un multiplicador con un gran consumo de recursos lgicos o o puede empeorar el desempeo general del sistema o requerir de FPGAs de mayor n tamao. n El Multiplicador Secuencial denominado tambin Shift and Add [11] [12] utie liza una cantidad reducida de recursos lgicos. El SM no es muy utilizado debido o a la cantidad de iteraciones involucradas en un producto. En este cap tulo se analiza la multiplicacin secuencial con el objetivo de o ampliarla a FPGAs. Se caracterizan las variantes existentes y se proponen algunos esquemas que intentan mejorar la velocidad de clculo manteniendo un bajo a consumo de recursos lgicos. o

33

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

34

3.2.

Multiplicacin Secuencial o

El Multiplicador Secuencial (SM) realiza el clculo en forma iterativa mantea niendo un producto parcial acumulativo y sucesivamente sumando al mismo los trminos yj X con el debido desplazamiento (Tabla 3.1). De esta forma, se logra e reducir la cantidad de recursos a los necesarios para realizar la multiplicacin o yj X. Tabla 3.1: Producto de dos operandos de 4 bits, acumulacin de productos paro ciales. x3 x2 x1 x0 y3 y2 y1 y0 s03 s02 s01 s00 0 s13 s12 s11 s10 y0 X20 s23 s22 s21 s20 y1 X21 + y0 X20 2 s33 s32 s31 s30 y2 X2 + y1 X21 + y0 X20 p8 p7 p6 p5 p4 p3 p2 p1 y3 X23 + y2 X22 + y1 X21 + y0 X20

3.2.1.

Algoritmo

En forma simplicada 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 desplazamiento a la izquierda o viceversa. En la multiplicacin con desplazamiento a la izquierda, se debe contar con o un acumulador de longitud 2n bits. En este caso los productos parciales yj X 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) + yn1j X 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: Multiplicacin secuencial con desplazamiento a la izquierda para opeo randos de 4 bits. X 1 0 0 1 Y 1 1 0 1 p(0) 0 0 0 0 2p(0) +y 3 X p(1) 2p(1) +y 2 X p(2) 2p(2) +y 1 X p(3) 2p(3) +y 0 X p(4) 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 1

1 1 1 1 0 1

En la multiplicacin con desplazamiento a la derecha el algoritmo se puede o analizar con la Ec. (3.2). p(j + 1) = (p(j) + yj X2n )21

con p(0) = 0

(3.2)

o visto de otra manera con la Ec. (3.3),


n1

P = 2n1
j=0

yj X 2j(n1)

(3.3)

En este caso los productos parciales yj X son adicionados al resultado acumulado con un desplazamiento hacia la derecha de un bit (21 ) respecto al anterior.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

36

Debido a que el desplazamiento a la derecha genera un primer producto parcial multiplicado por 2k se debe pre-multiplicar y0 X por 2k para compensar el efecto del desplazamiento. Esta pre-multiplicacin se puede efectuar fcilmente, o a almacenando p(j) en el segmento ms signicativo de un registro de 2n bit. a Un ejemplo de este algoritmo se muestra en la Tabla 3.3. Tabla 3.3: Multiplicacin con o bits. X Y p(0) +y 0 X 2p(1) p(1) +y 1 X 2p(2) p(2) +y 2 X 2p(3) p(3) +y 3 X 2p(4) p(4) desplazamiento a la derecha para operandos de 4 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1

0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 1 1 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 desplazamientos, 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 ms signicativos. Por lo tanto, el algoritmo ms a a utilizado es el de desplazamiento a la derecha que involucra menos recursos.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

37

3.2.2.

Implementacin o

La implementacin hardware de la multiplicacin con desplazamiento a la o o derecha se muestra en la Figura 3.1. El multiplicador Y y la acumulacin de o los productos parciales p(j) son almacenados en registros de desplazamiento. El bit yj del multiplicador es el bit menos signicativo disponible a la derecha del registro Y , el mismo es utilizado en el producto yj X 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 seal de acarreo del sumador. Por otro lado, el desplazamiento se puede realizar n conectando el bit menos signicativo 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 slo ciclo de reloj. o
desplazamiento
n n-1

desplazamiento acarreo
2n-1 n

Producto

n-1

Parcial

ADD

n-1

Figura 3.1: Multiplicador SM con desplazamiento a la derecha. Se debe considerar que el multiplicador y la mitad menos signicativa 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 signicativo, el bit menos signicativo de p(j) es ingresado por el extremo ms a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

38

signicativo del mismo registro. El control del multiplicador, que no se muestra en la Figura 3.1, consiste en un contador que mantiene el nmero de iteracin u o ejecutada y un circuito para la inicializacin y carga del mismo. o En la Figura 3.2 se puede observar un esquema de la realizacin del multiplio cador de desplazamiento a la derecha con registro compartido.
n

desplazamiento acarreo
2n-1 n

Producto Parcial

n-1

ADD

n-1

Figura 3.2: Multiplicador SM con desplazamiento a la derecha con registro compartido. La implementacin hardware del algoritmo con desplazamiento a la izquierda o se puede observar en la Figura 3.3. En este esquema, tambin el multiplicador Y e y la acumulacin de los productos parciales p(j) son almacenados en registros de o 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 ms signicativo a disponible a la izquierda del registro Y , el mismo es utilizado en el producto ynj1 X seleccionando 0 o X en la suma. En este multiplicador no se puede compartir el registro Y con la seccin ms o a signicativa 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


2n

39

desplazamiento
2n-1 2n

Producto

n-1

Parcial desplazamiento

ADD

n n

n-1

n-1

Figura 3.3: Multiplicador SM con desplazamiento a la izquierda. El hardware de este multiplicador es ms complejo que el de la Figura 3.2, a por lo que el mtodo ms utilizado es la multiplicacin con desplazamiento a la e a o derecha. Consumo de recursos El consumo de recursos lgicos del SM debe ser estimado en funcin de la o o longitud de palabra de los operandos. Si se analiza la estructura de los bloques que componen el multiplicador: sumadores, multiplexores, contadores y componentes bsicos, se puede cuanticar el consumo de recursos de los mismos en funcin de a o la longitud de palabra. Un contador de mdulo-n es un contador binario de log2 n bits. Consecuenteo mente utiliza n FFs (FlipFlops) y al menos la misma cantidad de FGs (Funcin o Generators - ver Seccin A.4.1). Por lo cual, este contador consume como m o nimo
log2 (n) 2

FGs.

Un multiplexor esta conformado slo por lgica combinacional que requiere al o o menos n 1 FGs de tres entradas. Esto genera un consumo de recursos de CLBs para una longitud de n bits entradas.
n1 2

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

40

El consumo de recursos lgicos de un sumador depende del tipo de sumador o seleccionado. Tal como se indic en cap o tulos previos, el sumador indicado para la implementacin de los multiplicadores en las FPGAs seleccionadas, es el sumador o a de ripple-carry. En este caso, un sumador utiliza (n+2) FGs ( n +1 celdas bsicas) 2 considerando las salidas de acarreo y desborde. En el caso en que la salida de un sumador deba ser registrada, el consumo de recursos lgicos en trminos de CLBs o e es el mismo dado que los FFs son nativos de cada celda bsica. a La Tabla 3.4 realiza una estimacin del consumo de recursos para el SM. En o esta estimacin se considera que los n bits ms signicativos del registro P se o a pueden ubicar en conjunto con los FGs del sumador, y los menos signicativos compartidos con el registro de desplazamiento Y (con carga de datos en paralelo). Las Ecs. (3.4 - 3.6) resumen el clculo de la estimacin en trminos de FGs, FFs a o e y CLBs. Funcin o Registro X Registro Y (SR) Control Producto yi X Sumador + Reg. P FG 0 n+1 log2 (n) + 2 n n+2 FF n n log2 (n) + 1 0 n+2 CLB
n 2 n+1 2 log2 (n) + 2 n 2 n +1 2

Tabla 3.4: Estimacin de consumo de recursos lgicos de un SM. o o

F G(n) = 3n + log2 n + 5

(3.4)

F F (n) = 3n + log2 n + 3

(3.5)

CLB(n) = 2n +

log2 n 5 + 2 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

120

100

80

CLB

60

40

20

10

15 n

20

25

30

35

Figura 3.4: Consumo de recursos del SM. Comportamiento temporal El comportamiento temporal del SM depende de dos factores, el retardo inherente de las compuertas lgicas y registros, y el retardo por la interconexin de o o las mismas. En la mayor de los circuitos realizados en FPGA el desempeo solo a n puede ser estimado despus de ser implementado, ya que los retardos de intercoe nexin se conocen una vez implementado el circuito. Sin embargo, en el caso de o sumadores y contadores que utilizan recursos dedicados de lgica de acarreo, es o posible estimar un desempeo temporal [26]. n El per odo m nimo de reloj que se puede utilizar con el SM depende del retardo de propagacin de la ruta ms cr o a tica. En este caso, la ruta ms cr a tica es aquella en la cual los operandos del sumador son realimentados a travs de una cadena de e Flip Flops, Fig. 3.1. El retardo de propagacin para un sumador se puede estimar o 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
n 2

CLBs. En esta gura los dos

bits menos signicativos de los operandos comparten un CLB y el retardo de las

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

42

TSUM

SALIDA DE ACARREO

AN-1,BN-1 AN-2,BN-2 AN-3,BN-3 AN-4,BN-4

TBYP

SN-1 SN-2

TSUM

TBYP

SN-3 SN-4 N-4 CLBs 2

A3 ,B3 A2 ,B2 A1 ,B1 A0 ,B0 TOPCY TBYP

S3 S2

S1 S0

Figura 3.5: Esquema de retardos en un sumador. entradas de estos bits a la cadena de acarreo se dene como el tiempo TOP CY . Los dos bits ms signicativos tambin comparten un CLB y el retardo de la cadena a e de acarreo a la salida ms signicativa es el tiempo TSU M . Los n 4 bits restantes a contribuyen con un retardo TBY P por cada dos bits. La Ec. (3.7) resume el retardo de propagacin en un sumador como el que se o describe en la Fig. 3.5. n4 TBY P + TSU M 2

tpd = TOP CY +

(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 efecta un anco de reloj y se u establece la salida de un Flip Flop, TCKO . La salida de este registro se realimenta a la entrada del sumador generando un retardo de interconexin Trd . o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

43

Otra ruta de interconexin cr o tica proviene de la seleccin del paso de iterao cin que incorpora un retardo entre una entrada F/G y la salida X/Y debido al o producto yi Xi , este retardo es denominado TILO . La Ec. (3.8) resume el retardo de propagacin de la ruta de interconexin ms o o a cr tica. n4 TBY P + TSU M + TILO + TCKO + Trd 2

tpd = TOP CY +

(3.8)

Con el objetivo de poder cuanticar el retardo de propagacin estimado se o propone la utilizacin de los retardos de una FPGA de Xilinx de la familia Spartan o [27]. Para esta estimacin no se considera el retardo Trd dado que a priori se o desconoce su valor. Retardo Valor [ns] TOP CY 2.7 TBY P 0.5 TSU M 2.0 TILO 1.2 TCKO 2.1 Tabla 3.5: Retardos de una FPGA Xilinx Spartan-4. En la Fig. 3.21 se grac el retardo de propagacin estimado para el SM, en o o funcin de la longitud de palabra n. Este retardo dene la frecuencia mxima o a 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 P S =
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

25

20

15 Tpd [ns] 10 5 0 0

10

15 n

20

25

30

35

Figura 3.6: Retardo de propagacin estimado del SM. o

120

100

Max. Frec. de reloj [Mhz]

80

60

40

20

10

15 n

20

25

30

35

Figura 3.7: Mxima frecuencia de reloj estimada aplicable al SM. a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

45

14

12

Velocidad de Procesamiento [Mop]

10

10

15 n

20

25

30

35

Figura 3.8: Velocidad mxima de procesamiento del SM. a

3.2.3.

Multiplicador Secuencial de Base 4

Esta variante de multiplicacin secuencial reduce la cantidad de iteraciones o aprovechando la representacin numrica. o e Un nmero binario de n bits puede ser representado como un nmero de u u d gitos de base 4 o un nmero de u
n 3 n 2

d gitos de base 8. De modo que para un

dado rango de nmeros que se pueden representar, existe una representacin de u o mayor base que reduce la cantidad de d gitos. De este modo, es posible realizar un producto en menor tiempo de clculo si se ejecuta una multiplicacin de un a o d gito por vez en lugar de hacerlo bit a bit. La expresin general para este tipo de multiplicacin es la de la Ec. (3.9): o o

p(j + 1) = (p(j) + yj Xrn )r1

con p(0) = 0 y p(n) = p

(3.9)

En el caso de la multiplicacin en base 4 (SMB4), se debe conformar el proo ducto parcial [yj+1 yj ]2 X y adicionarlo al resultado de la iteracin anterior. El o

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 4 x3 x 2 x1 x0 y3 y2 y1 y0 s05 s04 s03 s02 s01 s00 y1 y0 X40 s15 s14 s13 s12 s11 s10 y3 y2 X41 P8 P 7 P6 P5 P 4 P3 P2 P1 P Mientras que en la multiplicacin de base 2 cada producto parcial est repreo a sentado por el valor 0 o una versin desplazada de X, en la multiplicacin de o o base 4 el producto parcial toma la forma del valor 0, X, 2X y 3X. El mtodo e ms directo para la ejecucin de esta multiplicacin se puede realizar mediante a o o una asignacin pre-calculada de los productos parciales. o Un ejemplo de este tipo de multiplicacin se puede observar en la Tabla 3.7. o Tabla 3.7: Multiplicacin o X Y p(0) +(01)2 X = X 4p(1) p(1) +(11)2 X = 3X 4p(2) p(2) base 4 1 0 1 1 0 0 1 0 1 0 de 0 0 0 0 0 dos operados de 4 bits. 1 1 0 1 1 0 0 0 1 1 1 0 1

0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 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. Adems, como el valor prea 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

desplazamiento 2 bits acarreo


2n-1 n n+2

Producto Parcial

n-1

Y 0 X 2X 3X
2

1 0

ADD
n+2

n+2

MUX

n+2 n+2

Figura 3.9: Diagrama de un SMB4(3X). Una alternativa consiste en reemplazar 3X por X generando un acarreo que modica al siguiente d gito. Este set de d gitos es afectado por el acarreo segn u la Tabla 3.8, en la cual, cy(j 1) es el acarreo correspondiente a una iteracin o anterior, cy(j) es el acarreo actual, y2j1 e y2j son los bits seleccionados con cada iteracin que generan una salida con los valores [0, X, X, 2X]. Con esta o alternativa, al nal de la iteracin o
n 2

se debe realizar una nueva iteracin, si el o

ultimo d gito de base 4 gener un bit de acarreo. o Tabla 3.8: Codicacin o cy(j 1) y2j1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 de los d gitos, alternativa (-X). y2j salida(j) cy(j) 0 0 0 1 X 0 0 2X 0 1 X 1 0 X 0 1 2X 0 0 X 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 nal de la ultima iteracin el o acarreo debido al ultimo d gito genera una iteracin adicional. o Tabla 3.9: X 0 Y 1 p(0) 0 +(10)X = +2X 1 4p(1) 1 p(1) +(01)X = +X 4p(2) p(2) +(11)X = X 4p(3) p(3) +(11 + cy)X = 0 4p(4) p(4) +(00 + cy)X = X p(5) Multiplicacin o 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 base 4, alternativa (-X). 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0

0 0 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0

El diagrama de este multiplicador (en adelante SMB4(-X)) se muestra en la Fig. 3.10. Los esquemas de multiplicacin de las Figs. 3.9 y 3.10 se pueden extender a o multiplicadores de bases superiores, pero la estructura del multiplicador se vuelve ms compleja debido a que se debe pre-computar una mayor cantidad de valores a y consecuentemente el nmero de iteraciones deja de ser menor que u
n 2

+ 1. Por

ejemplo, para un producto de base 8, se deben pre-computar los valores de 3X, 5X y 7X, o slo pre-computar 3X y utilizar un esquema de acarreo similar al de la o Fig. 3.10 para convertir a 5X, 6X y 7X en 3X, 2X y X.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores


n+1

49

desplazamiento 2 bits acarreo


2n-1 n n+1

Producto Parcial

n-1

Y 0 X 2X -X
2

1 0

ADD
n+1

n+1

MUX

n+1 n+1

y2j-1y2j+cy

FF acarreo

Figura 3.10: Diagrama de un SMB4(-X). Consumo de recursos SMB4(3X): La estimacin del consumo de recursos lgicos del SMB4(3X) debe o o considerar los recursos para el pre-clculo de 3X y que este clculo puede resultar a a en n + 2 bits. La estimacin para este multiplicador se consigna en la Tabla 3.10 o Funcin o Registro X Sumador X + 2X Registro Y (SR) Control Multiplexor 4 : 1 (n + 2) Sumador (n + 2) + Reg. PH FG 0 n+2 n+1 log2 ( n ) + 2 2 3(n + 2) n+4 FF n 0 n log2 ( n ) + 1 2 0 n+4 CLB
n +1 2 n +1 2 n 2 log2 ( 2 ) + 2 3n +3 2 n +2 2 n 2

Tabla 3.10: Estimacin de consumo de recursos de un SMB4(3X). o Las Ecs. (3.10 - 3.12) resumen el clculo de la estimacin en trminos de FGs, a o e FFs y CLBs. n F G(n) = 6n + log2 ( ) + 15 2

(3.10)

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

50

n F F (n) = 3n + log2 ( ) + 5 2 log2 ( n ) 15 7 2 CLB(n) = n + + 2 2 2

(3.11)

(3.12)

SMB4(-X): En esta versin se reemplaza X por X y se ingresa un acarreo o de entrada al sumador. De este modo no es necesario el pre-clculo de X y se a ahorran recursos.
n+1

desplazamiento 2 bits acarreo


2n-1 n n+1

Producto Parcial

n-1

Y 0 X 2X X
2

1 0

ADD
n+1

n+1

MUX

n+1 n+1

acarreo de entrada

y2j-1y2j+cy

FF acarreo

Figura 3.11: Diagrama de la variante del SMB4(-X).

La estimacin de recursos para este multiplicador se muestra en la Tabla 3.11. o Funcin o Registro X Registro Y (SR) Control Multiplexor 4 : 1 (n + 1) Sumador (n + 1) + Reg. PH FG 0 n+1 log2 ( n ) + 6 2 3(n + 1) n+3 FF n n log2 ( n ) + 3 2 0 n+3 CLB
n +1 2 2 log2 ( n ) 2 + 2 3n +3 2 2 n +3 2 2 n 2

Tabla 3.11: Estimacin de consumo de recursos lgicos SMB4(-X). o o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

51

Las Ecs. (3.13 - 3.15) resumen el clculo de la estimacin en trminos de FGs, a o e FFs y CLBs. n F G(n) = 5n + log2 ( ) + 13 2

(3.13)

n F F (n) = 3n + log2 ( ) + 6 2 log2 ( n ) 15 2 CLB(n) = 3n + + 2 2

(3.14)

(3.15)

En la Fig. 3.12 se muestra el consumo de recursos lgicos de las dos variantes o del multiplicador secuencial de base 4 en contraste con el multiplicador secuencial tradicional. Se observa en la misma gura que, si bien la velocidad de procesamiento de los SM base 4 se incrementa casi al doble por realizar menos iteraciones, el costo en consumo de recursos lgicos asciende a ms del doble respecto a un o a SM tradicional. Comportamiento temporal SMB4(3X): El comportamiento temporal del SMB4(3X) involucra dos cadenas de adiciones, la primera resulta de la obtencin del valor 3X y la segunda de o la operacin de acumulacin de los productos parciales, Fig. 3.9. o o La Ec. (3.16) resume el retardo de propagacin de la ruta de interconexin o o ms cr a tica este multiplicador.

tpd = 2TOP CY +

(n + 2) 4 TBY P + 2TSU M + TIHO + Trd 2

(3.16)

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

52

XCS10 200 SMB4(3X) SMB4(X) SM

180

160

140

120 XCS05 CLB 100

80

60

40

20

10

15 n

20

25

30

35

Figura 3.12: Consumo de recursos de multiplicadores SM. En la Fig. 3.13 se muestra el retardo de propagacin estimado para el SMB4(3X). o Este retardo dene la frecuencia mxima de reloj que se puede utilizar con este a multiplicador, que se observa en la Fig. 3.14. La velocidad de procesamiento estimada del SMB4(3X) se graca en la Fig. 3.15. La misma es obtenida como la frecuencia mxima de reloj aplicable al a multiplicador dividido el nmero de ciclos necesarios para ejecutar un producto, u PS =
fc n +1 2

, expresado en millones de operaciones por segundo. En esta estimacin o

se considera que la carga de datos y el clculo de 3X no excede un per a odo de reloj.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

53

30

25

20

Tpd [ns]

15

10

10

15 n

20

25

30

35

Figura 3.13: Retardo de propagacin estimado del SMB4(3X). o

100

90

80

70 Max. Frec. de reloj [Mhz]

60

50

40

30

20

10

10

15 n

20

25

30

35

Figura 3.14: Mxima frecuencia de reloj estimada aplicable al SMB4(3X). a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

54

14

12

Velocidad de Procesamiento [Mop]

10

10

15 n

20

25

30

35

Figura 3.15: Velocidad mxima de procesamiento del SMB4(3X). a SMB4(-X): El comportamiento temporal del SMB4(-X), si bien evita el clculo a de 3X, involucra un retardo asociado a la operacin de la Tabla 3.8. La Ec. (3.17) o resume el retardo de propagacin de la ruta de interconexin ms cr o o a tica de este multiplicador. (n + 2) 4 TBY P + TSU M + TIHO + TILO + TICK + Trd (3.17) 2

tpd = TOP CY +

En la Fig. 3.16 se puede observar el retardo de propagacin estimado para el o SMB4(-X). Este retardo dene la frecuencia mxima de reloj que se puede utilizar a 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 mxima de reloj aplicable al a multiplicador dividido el nmero de ciclos necesarios para ejecutar un producto, u PS =
fc n +2 2

, expresado en millones de operaciones por segundo.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

55

30

25

20

Tpd [ns]

15

10

10

15 n

20

25

30

35

Figura 3.16: Retardo de propagacin estimado del SMB4(-X). o

100

90

80

70 Max. Frec. de reloj [Mhz]

60

50

40

30

20

10

10

15 n

20

25

30

35

Figura 3.17: Mxima frecuencia de reloj estimada aplicable al SMB4(-X). a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

56

14

12

Velocidad de Procesamiento [Mop]

10

10

15 n

20

25

30

35

Figura 3.18: Velocidad mxima de procesamiento del SMB4(-X). a

3.3.
3.3.1.

Arquitecturas Propuestas en Punto Fijo


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 esquema de multiplicacin simplicado ya que no realiza la carga paralelo de los o registros del multiplicador y del multiplicando. De esta manera no existe la demora 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 seleccin de los bits yj . o El control del multiplicador consiste en un contador que ejecuta la seleccin de o los yj y que a su vez mantiene el nmero de iteracin realizada. La inicializacin u o o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores


n

57

desplazamiento acarreo
2n-1 n

Producto

n-1

Parcial

ADD

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 multiplicacin. o Consumo de recursos La Tabla 3.12 muestra el consumo de recursos lgicos del SMSR. En esta o estimacin se acepta que los n bits ms signicativos del registro P se ubican en o a conjunto con los FGs del sumador, y los menos signicativos constituyen tan slo o un registro de desplazamiento serie. Funcin o Multiplexor yi Producto yi X Control Sumador + Reg. PH Registro PL FG n1 n log2 (n) + 2 n+2 0 FF 0 0 log2 (n) + 1 n+2 n CLB
n1 2 n 2 log2 (n) + 2 n +1 2 n 2

Tabla 3.12: Estimacin de consumo de recursos lgicos de un SMSR. o o Las Ecs. (3.18, 3.19 y 3.20) resumen la estimacin en trminos de FGs, FFs o e y CLBs.

F G(n) = 3n + log2 n + 3

(3.18)

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

58

F F (n) = 2n + log2 n + 3

(3.19)

CLB(n) = 2n +

log2 n 3 + 2 2

(3.20)

En la Fig. 3.20 se muestra el consumo estimado de recursos del SMSR.

120 XCS05 100

80

CLB

60

40

20

10

15 n

20

25

30

35

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 seleccin de yi . o La Ec. (3.21) resume el retardo de propagacin de la ruta de interconexin o o ms cr a tica.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

59

tpd = TOP CY +

n4 TBY P + TSU M + TILO + TCKO + Trd 2

(3.21)

En la Fig. 3.21 se graca el retardo de propagacin estimado para el multio plicador propuesto. La mxima frecuencia de reloj que se puede utilizar con este a multiplicador se muestra en la Fig. 3.22.
25

20

15 Tpd [ns] 10 5 0 0

10

15 n

20

25

30

35

Figura 3.21: Retardo de propagacin estimado del SMSR. o La velocidad de procesamiento estimada del SMSR se presenta en la Fig. 3.23. La misma se calcula como la frecuencia mxima de reloj aplicable al multiplicador a dividido el nmero de ciclos necesarios para ejecutar un producto, P S = u expresado en millones de operaciones por segundo.
fc , n

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

60

120

100

Max. Frec. de reloj [Mhz]

80

60

40

20

10

15 n

20

25

30

35

Figura 3.22: Mxima frecuencia de reloj estimada aplicable al SMSR. a

14

12

Velocidad de Procesamiento [Mop]

10

10

15 n

20

25

30

35

Figura 3.23: Velocidad mxima de procesamiento del SMSR. a

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 nmero de ciclos necesarios para ejecutar u el producto. Esta reduccin se obtiene fraccionando la sumatoria de la Ec. (3.22) o en dos semisumatorias, (3.23).
n1

P =
j=0

X2j yj

(3.22)

n1

P =
j=0

X2 yj +
j=k

X2j yj

(3.23)

Aplicando el SM con desplazamiento a la derecha, el producto resultante se muestra en la Ec. (3.24).


k n1

P =2

n1 j=0

X 2

j(n1)

yj +
j=k

X 2j(n1) 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 comienzan al mismo tiempo y se suman sus resultados con el debido desplazamiento, el per odo de proceso estar dado por: a k TCK si k > (n 1) k o ((n 1) k) TCK Para el caso particular en que k = producto ser a
n 2

si k < (n 1) k
n , 2

el per odo de procesamiento de cada

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 encontrar des a plazada k veces de la segunda. Por otro lado dicha suma agrega un retardo tR proveniente de la lgica involucrada. Este retardo se puede considerar menor que o TCK , tomando como pauta que el retardo de involucrado en la adicin de los o productos parciales es inferior o igual al retardo denido para un multiplicador SM. El per odo de procesamiento para este multiplicador estar dado por T = a ( n + 1) TCK . 2
X[n:0] X[n:0]

SM

Y[m/2:0]

m/2 x n

m/2 x n

Y[m:m/2+1]

Acumulacin

Y[m:0] x X[n:0]

Figura 3.24: Diagrama de operacin de un SMF. o En la Fig. 3.24 se muestra el esquema del SMF, donde dos multiplicadores secuenciales realizan sus productos simultneamente y, un per a odo despus, sus e resultados son adicionados. La aplicacin prctica del SMF se puede realizar en base a un SM tradicional o a o un SMSR. La utilizacin del SM implica que se deben cargar los datos en los o registros, por lo que se requieren
n 2

+ 2 iteraciones para realizar un producto.

Por lo tanto, se justica la utilizacin de este esquema para multiplicadores con o una longitud de palabra que haga despreciables las dos iteraciones adicionales en comparacin con n . En el caso del SMF basado en un SMSR, el producto se o 2 realiza en
n 2

+ 1 iteraciones.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores Consumo de recursos

63

Recursos de un SMF(SM): La Tabla 3.13 muestra el consumo de recursos del SMF basado en el SM. En esta estimacin se considera que ambos multiplicadores o parciales son controlados por un unico contador. Funcin o FG Registro X 0 n n 2 Registro SR Y [ 2 : 0] 2( 2 + 1) 2 Producto yi X 2n n Control mod 2 log2 ( n ) + 2 2 2 Sumador + Reg. PHi 2n + 4 3 n+2 Sumador + Reg. Ptotal 2 FF n 2n 2 0 log2 ( n ) + 1 2 2n + 4 3 n+2 2 CLB +1 n 1 log2 ( n ) + 1 2 2 n+2 3 n+1 4
n 2 n 2

Tabla 3.13: Estimacin de consumo de recursos lgicos SMF(SM). o o Las Ecs. (3.25 - 3.27) resumen el clculo de la estimacin en trminos de FGs, a o e FFs y CLBs. 13 n n + log2 + 10 2 2

F G(n) =

(3.25)

F F (n) =

n 11 n + log2 + 7 2 2
n 2

(3.26)

CLB(n) =

log2 15 n+ 4 2

+5

(3.27)

Recursos de un SMF(SMSR): La Tabla 3.14 realiza una estimacin del o consumo de recursos del SMF basado en el SMSR. Las consideraciones de esta estimacin son similares al SMF basado en un SM. o Las Ecs. (3.28 - 3.30) resumen el clculo de la estimacin en trminos de FGs, a o e FFs y CLBs.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

64 CLB 1 n 1 log2 ( n ) + 1 2 2 n+2


n 2 3 n 4 n 2

Funcin o 2 Multiplexor yi 2 Producto yi X Control mod n 2 2 Sumador + Reg. PHi 2 Registro PL n 2 Sumador + Reg. Ptotal

FG 1) 2n log2 ( n ) + 2 2 2n + 4 0 3 n+2 2 2( n 2

FF 0 0 log2 ( n ) + 1 2 2n + 4 2n 2 3 n+2 2

+1

Tabla 3.14: Estimacin de consumo de recursos lgicos de un SMF(SMSR). o o

F G(n) =

n 13 n + log2 + 6 2 2

(3.28)

n 7 F F (n) = n + log2 + 7 2 2
n 2

(3.29)

log2 15 CLB(n) = n + 4 2

+3

(3.30)

En la Fig. 3.25 se puede observar el consumo de recursos lgicos estimado del o 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 interconexin ms cr o a tica se encuentra en la constitucin de los multiplicadores fraccionados, Fig. 3.24. o La Ec. (3.31) resume el retardo de propagacin de la ruta de interconexin o o ms cr a tica para el multiplicador propuesto. n4 TBY P + TSU M + TILO + Trd 2

tpd = TOP CY +

(3.31)

En la Fig. 3.26 se graca el retardo de propagacin estimado para el SMF. o Este retardo dene la frecuencia mxima de reloj que se puede utilizar con este a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

65

XCS10 200 SMF (SM) SMF (SMSR) 180

160

140

120 XCS05 CLB 100

80

60

40

20

10

15 n

20

25

30

35

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 mxima de reloj dividido el nmero a u de ciclos necesarios para ejecutar un producto, P SSM = expresado en millones de operaciones por segundo.
fc n +1 2

y P SSM SR =

fc
n 2

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

66

25

20

15 Tdp [ns] 10 5 0 0

10

15 n

20

25

30

35

Figura 3.26: Retardo de propagacin estimado del SMF. o

120

100

Max. Frec. de reloj [Mhz]

80

60

40

20

10

15 n

20

25

30

35

Figura 3.27: Mxima frecuencia de reloj estimada aplicable al SMF. a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

67

25 SMF (SM) SMF (SMSR)

20 Velocidad de Procesamiento [Mops]

15

10

10

15 n

20

25

30

35

Figura 3.28: Velocidad mxima de procesamiento de los SMF. a

3.3.3.

Multiplicador de Sumas Consecutivas

Esta variante es similar al SMB4 ya que bsicamente opera con d a gitos de 2 bits. La estrategia consiste en realizar dos subproductos en forma consecutiva para reducir el nmero de iteraciones sin tener que pre-computar mltiplos u u de los operandos. El Multiplicador de Sumas Consecutivas (SMSC) realiza dos subproductos consecutivos en cada iteracin como se puede observar en la Ec. o (3.32). n P = 2n1
2

(3.32)

(yj X 22j(n1) + yj+1 X 22j+1(n1) )

j=0

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 multiplicacin mediante sumas consecutivas o X 1 0 0 1 Y 1 1 0 1 p(0) 0 0 0 0 +y 0 X 1 0 0 1 +2y 1 X 0 0 0 0 4p(1) 0 1 0 0 1 p(1) +y 3 X +21 y4 X 4p(2) p(2) 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1

0 0

1 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 iteracin, se realiza la suma en forma consecutiva de dos o subproductos, yj X + yj+1 X 2j+1 de la Ec. (3.32).
LSB acarreo acarreo
n-1 2n-1

desplazamiento 2 bits
n n-1

Producto Parcial

1 0

ADD

ADD
n

n n-1

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

LSB acarreo acarreo


n-1 2n-1

desplazamiento 2 bits Producto


n n-1

Parcial

ADD

ADD
n

n n

MUX MUX

n/2

Y[bits pares] Y[bits impares]

n/2

X Control

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. Funcin o Registro X Registro Y (SR) Control 2 Producto yi X Sumador Sumador + Reg. P FG 0 n+1 log2 ( n ) + 2 2 2n n+2 n+2 FF n n log2 ( n ) + 1 2 0 0 n+2 CLB
n 2 n+1 2 log2 ( n ) 2 + 2 n 2 n 2

n +1 +1

Tabla 3.16: Estimacin de consumo de recursos lgicos de un SMSC(SM). o o Las Ecs. (3.33 - 3.35) resumen el clculo del consumo en trminos de FGs, a e FFs y CLBs. n +7 2

F G(n) = 5n + log2

(3.33)

F F (n) = 3n + log2

n +3 2
n 2

(3.34)

log2 CLB(n) = 3n + 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 recursos para un SMSC basado en el SMSR. Funcin o 2 Multiplexor yi Control 2 Producto yi X Sumador Sumador + Reg. P Registro PL FG 1) n log2 ( 2 ) + 2 2n n+2 n+2 0 2( n 2 FF 0 log2 ( n ) + 1 2 0 0 n+2 n
n 2 log2 ( n ) 2 2

CLB 1 +1 n n +1 2 n +1 2
n 2

Tabla 3.17: Estimacin de consumo de recursos lgicos de un SMSC(SMSR). o o Las Ecs. (3.36 - 3.38) resumen el consumo en trminos de FGs, FFs y CLBs. e n +4 2

F G(n) = 5n + log2

(3.36)

F F (n) = n + log2

n +3 2

(3.37)

CLB(n) = 3n +

1 n log2 + 2 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

120 XCS05 100 SMSC (SM) SMSC (SMSR)

80

CLB

60

40

20

10

15 n

20

25

30

35

Figura 3.31: Consumo de recursos estimado de un SMSC. Comportamiento temporal El comportamiento temporal del SMSC depende de la ruta ms cr a tica que, en este caso debe tener en cuenta el acarreo los operandos a travs de los dos e sumadores consecutivos realimentados a travs de una cadena de Flip Flops, Fig. e 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 Seccin 3.3.1 y se observa sobre el sumador de la o izquierda. La segunda, incorpora un retardo adicional TOP CY para la generacin o 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 propagacin de la ruta de interconexin o o ms cr a tica para el multiplicador propuesto.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

72

TSUM

CO

TSUM

CO

CO,B7 S7,B6

TBYP

S7 S6 S5 S4 S3

A7,B7 A6,B6 A5,B5 A4,B4 A3,B3 A2,B2 A1,B1 A0,B0

TBYP

S7 S6 S5 S4 S3

S6,B5 S5,B4 S4,B3 S3,B2 S2,B1 S1,B0

TBYP

TBYP

TBYP

S2 S1 S0

TBYP

S2 S1 S0

TOPCY

TOPCY

Figura 3.32: Ruta cr tica de dos sumas consecutivas.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

73

tpd = 2 TOP CY +

n4 TBY P + 2 TSU M + TILO + Trd 2

(3.39)

La Fig. 3.33 muestra el retardo de propagacin estimado para el SMSC. Eso te retardo dene la frecuencia mxima de reloj que se puede utilizar con este a multiplicador, que se observa en la Fig. 3.34.
25

20

15 Tdp [ns] 10 5 0 0

10

15 n

20

25

30

35

Figura 3.33: Retardo de propagacin estimado del SMSC. o La velocidad de procesamiento estimada del SMSC se graca en la Fig. 3.35. La misma es calculada como la frecuencia mxima de reloj aplicable al multiplia cador, dividida por el nmero de ciclos necesarios para ejecutar un producto y u depende del esquema en que se basa el mismo. Si se basa en un SM, la velocidad de procesamiento es P S =
fc n +1 2

. En el caso de un SMSR, resulta de P S =

fc
n 2

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

74

120

100

Max. Frec. de reloj [Mhz]

80

60

40

20

10

15 n

20

25

30

35

Figura 3.34: Mxima frecuencia de reloj estimada aplicable al SMSC. a

25 SMSC (SM) SMSC (SMSR)

20 Velocidad de Procesamiento [Mop]

15

10

10

15 n

20

25

30

35

Figura 3.35: Velocidad mxima de procesamiento del SMSC. a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

75

3.4.

Comparacin de los multiplicadores o

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 lgicos, y la segunda destinada a los o multiplicadores secuenciales optimizados en velocidad de procesamiento.

3.4.1.

Multiplicadores optimizados en consumo de recursos

En la Fig. 3.36 se graca el consumo de recursos lgicos de los multiplicadores o secuenciales SM y SMSR.

80 SM SMSR 70

60

50

CLB

40

30

20

10

10

15 n

20

25

30

35

Figura 3.36: Consumo de recursos lgicos de un SM vs SMSR. o 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 prcticamente a el mismo, sin embargo la velocidad de procesamiento (que depende del nmero u de iteraciones) presenta una diferencia a favor del multiplicador SMSR. Esto se puede observar en la Fig. 3.37.
14 SM SMSR

12

10

PS [Mops]

10

15

20 n

25

30

35

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 lgicos de las variantes o 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 gracan 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

150

XCS05 100

CLB 50 SMB4(3X) SMB4(X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR) 0 0

10

15 n

20

25

30

35

Figura 3.38: Consumo de recursos lgicos de los multiplicadores optimizados en o velocidad. SMF(SM), salvo para n = 8, presenta una buena velocidad de procesamiento aunque inferior al SMF(SMSR) debido a que requiere una iteracin adicional. o El multiplicador SMSC(SMSR) presenta una buena velocidad de procesamiento para n < 14 bits, pero para valores mayores decrece. Se observa tambin que e las otras variantes logran velocidades inferiores a las del SMF(SMSR), pero superiores a la velocidad del SMB4(3X).

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

78

22 SMB4(3X) SMB4(X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

20

18

16

14 PS [Mops]

12

10

10

15

20 n

25

30

35

Figura 3.39: Velocidad de procesamiento de los multiplicadores optimizados en velocidad.

3.4.3.

Performance de los multiplicadores

A n de estimar los benecios de cada variante utilizando un unico indicador, se propone el ndice de performance p, denido en la Ec. (3.40). Velocidad de Procesamiento [Mops] Area

pi (n) =

(3.40)

en la cual, la Velocidad de Procesamiento est expresada en Millones de Operaa ciones por Segundo y el Area como la fraccin de recursos respecto de todos los o 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 CLBs. 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 lgicos bastante reducido, y la relacin entre este consumo y su velocidad o o de procesamiento es la ptima. o Una forma de interpretar este resultado es analizando una posible aplicacin o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

79

300 SM SMSR SMB4(3X) SMB4(X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

250

200 Performance

150

100

50

10

15

20 n

25

30

35

Figura 3.40: Indice de performance de los multiplicadores. de este multiplicador. El ndice de performance reeja que, si existiera la necesidad de realizar un cierto nmero de productos simultneamente, resulta ms eciente u a a utilizar arreglos paralelos de multiplicadores SMSR en lugar de un multiplicador optimizado en velocidad. El ndice indica que el SMSC es casi tan eciente como el SMF(SMSR). Por otro lado, los multiplicadores SMF(SM) y SMSC(SM) poseen una eciencia menor, debido al nmero de iteraciones adicionales que deben realizar para ejecutar u un producto. Comparativamente se puede observar que la eciencia de los multiplicadores de base 4 es bastante inferior. En la Fig. 3.41 se graca en forma ampliada el ndice para 20 < n < 32. En esta gura se puede observar que al aumentar la longitud de palabra el SMF(SMSR) y el SMSC(SMSR) resultan tanto o ms ecientes que el SMSR. a

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

80

35 SM SMSR SMB4(3X) SMB4(X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

30

25 Performance

20

15

10

20

22

24

26 n

28

30

32

Figura 3.41: Indice de performance de los multiplicadores 20 < n < 32.

3.5.

Arquitecturas Propuestas en Punto Flotante

3.5.1.

Variante Multiplicador Secuencial Sin Entradas Registradas

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 nmero u de 2n bits, sin embargo, en la multiplicacin en punto otante solo se representan o los n bits ms signicativos. Esto permite que exista una reduccin de la lgica a o o del multiplicador debido a que la seccin menos signicativa del registro que o almacena el P roductoparcial es reemplazada por un unico Flip-Flop. Fig. 3.42.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores


n

81

desplazamiento acarreo
n+1 n n

Producto Parcial

bits descartados

ADD

MUX

X
Control

Figura 3.42: Modicacin del SMSR para el producto de las mantisas o Redondeo y normalizacin o El multiplicador propuesto se desarroll para efectuar dos tipos de redondeo, o el redondeo a cero y el redondeo a +. El multiplicador con redondeo a cero es el ms sencillo y ms econmico en trminos de consumo de recursos lgicos. El a a o e o multiplicador con redondeo a + es ms elaborado pero ms econmico que el a a o que utiliza el redondeo al ms cercano. a Redondeo a cero: El redondeo a cero consiste en truncar el producto de las mantisas a la derecha del bit menos signicativo. Esta operacin se efecta por o u defecto al eliminar los registros de la seccin menos signicativa del producto o de las mantisas. La particularidad de esta operacin radica en que el producto o resultante no se ve afectado por los registros eliminados debido a que son tan slo una cadena de registros de desplazamiento que va ubicando el bit menos o signicativo de la acumulacin de los productos parciales (ver Sec. 3.3.1). o Cuando el producto de las mantisas resulte en el rango 2 p 4, se debe realizar un desplazamiento de normalizacin a la derecha para restaurar el proo ducto al rango 1 pr 2, con el apropiado ajuste del exponente en una unidad. Este desplazamiento se realiza mediante una iteracin adicional (ciclo n + 1) en o 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 posibilidad es el truncamiento si el producto es negativo o si todos los bits a la derecha del LSB son 0. Esta operacin se realiza mediante la registracin de los bits o o descartados en cada iteracin. o Las otras dos posibilidades de redondeo dependen de los bits ms signicativos a 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 2n por defecto y posteriormente evala el rango del producto. Si el rango del u producto resulta comprendido en el rango 1 p 2, el redondeo se efectu coo rrectamente y no es requerida ninguna operacin adicional. o Cuando el producto resulta comprendido en el rango 2 p 4, se debe ajustar el redondeo efectuado debido a la posterior normalizacin. Se presentan o dos casos en base a los bits menos signicativos: a) Si el bit menos signicativo del producto truncado es un 1, para el cual la adicin de la constante 2n se propaga a los bits ms signicativos. En este o a caso no se realiza correccin. o b) Si el bit menos signicativo del producto truncado es un 0. En este caso la adicin de la constante 2n no se propaga a los bits ms signicativos y o a 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. Adicin de los exponentes o 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 Producto Truncamiento Redondeo ** ** + 00 00 0...0 01 ** ** ** ** ** ** n bits descartados

Sin Overflow Overflow con error 1* Redondeo 00 1* Normalizacin 01 ** ** 00 ** 0...0 ** 01 **

Sin Redondeo Overflow sin error 1* ** **

**

Producto n bit

Figura 3.43: Ejemplo del esquema de redondeo implementado

desplazamiento acarreo
n+1 n n

Producto Parcial

ADD

MUX

redondeo

X normalizacin

Control

Figura 3.44: Multiplicacin de las mantisas. o

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 normalizacin del resultado. o Consumo de recursos lgicos o SMSR con redondeo a cero: La Tabla 3.18 expresa la estimacin del consuo mo de recursos lgicos del multiplicador en punto otante basado en un SMSR o con redondeo a cero. Funcin o Multiplexor 1.f yi n + 1 Control Producto yi X Sumador + Reg. PH Registro P0 Adicin exponentes o Correccin Bias + normalizacin o o Signo FG FF n 0 log2 (n + 1) + 2 log2 (n + 1) + 3 n+1 0 n+3 n+1 0 1 r+2 0 r+4 0 1 0 CLB
n 2 log2 (n+1) +3 2 2 n+1 2 n+3 2 1 2 r +1 2 r +2 2 1 2

Tabla 3.18: Estimacin de consumo de recursos lgicos de la variante SMSR con o o redondeo a cero. Las Ecs. (3.42, 3.43 y 3.44) resumen el clculo de la estimacin en trminos a o e de FGs, FFs y CLBs.

F G(n, r) = 3n + log2 (n + 1) + 13 + 2r F F (n, r) = n + log2 (n + 1) + 5 CLB(n, r) = 3n log2 (n + 1) 15 + + +r 2 2 2

(3.42)

(3.43) (3.44)

En la Fig. 3.45 se muestra el consumo estimado de recursos del SMSR.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

85

120 XCS05 100

80

CLB

60

40

20

10

15 n

20

25

30

35

Figura 3.45: Consumo de recursos del PFPM(SMSR), r = 8. SMSR con redondeo a +: La Tabla 3.19 presenta la estimacin del cono sumo de recursos lgicos del multiplicador en punto otante basado en un SMSR o con redondeo a +. Funcin o Multiplexor 1.f yi n + 1 Control Producto yi X Sumador + Reg. PH Registro P0 Redondeo + normalizacin o Adicin exponentes o Correccin Bias + normalizacin o o Signo FG FF n 0 log2 (n + 1) + 2 log2 (n + 1) + 3 n+1 0 n+3 n+1 0 1 5 3 r+2 0 r+4 r+1 1 0 CLB
n 2 log2 (n+1) 2 n+1 2 n+3 2 1 2 5 2 r +1 2 r +2 2 1 2

Tabla 3.19: Estimacin de consumo de recursos lgicos de la variante SMSR con o o redondeo a +. Las Ecs. (3.45, 3.46 y 3.47) resumen el clculo de la estimacin en trminos a o e de FGs, FFs y CLBs.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

86

F G(n, r) = 3n + log2 (n + 1) + 10 + 2r

(3.45)

F F (n, r) = n + log2 (n + 1) + 9

(3.46)

CLB(n, r) =

3n log2 (n + 1) + + 10 + r 2 2

(3.47)

En la Fig. 3.46 se muestra el consumo de estimado de recursos del SMSR.


120 XCS05 100

80

CLB

60

40

20

10

15 n

20

25

30

35

Figura 3.46: Consumo de recursos del PFPM(SMSR), r = 8.

3.5.2.

Variante Multiplicador Secuencial de Sumas Consecutivas

Producto de mantisas El producto de las mantisas mediante el SMSC se efecta como un producto u de dos enteros binarios sin signo, con la reduccin de la lgica del multiplicador o o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

87

debido a que la seccin menos signicativa del registro P es reemplazada por un o unico Flip-Flop. Fig. 3.47.
LSB acarreo acarreo
n n+1 n

desplazamiento 2 bits
1 0

Producto Parcial

Bits descartados

ADD
n

ADD

n n

MUX MUX

n/2

Y[bits pares] Y[bits impares]

n/2

X Control

Figura 3.47: SMSC modicado para el producto de las mantisas

Redondeo y normalizacin o Redondeo a cero: El redondeo a cero consiste en truncar el resultado del producto de las mantisas a la derecha del bit menos signicativo. Esta operacin o se efecta por defecto al eliminar los registros de la seccin menos signicativa u o 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 normalizacin a la derecha para restaurar o el producto al rango 1 pr 2, con el apropiado ajuste del exponente en una unidad. Mientras que el multiplicador de punto otante basado en el SMSR, la operacin de normalizacin se efecta mediante una iteracin adicional (ciclo o o u o n + 1) en la que la entrada X = 0, con el SMSC esta operacin no es posible o debido a que una iteracin del SMSC efecta dos desplazamientos. Debido a esto, o u el multiplicador basado en el SMSC requiere de lgica adicional para la realizacin o o de las tareas de normalizacin y de correccin del redondeo. o o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

88

Redondeo a +: El esquema de redondeo a + implementado en este multiplicador es el mismo que aquel descripto en la seccin 3.5.1. La diferencia radica o en la aplicacin del mismo, ya que tal como se explica en la seccin previa, se o o requiere de lgica adicional para efectuar la normalizacin. o o Adicin de los exponentes o La adicin de los exponentes se realiza de la misma manera que en la seccin o o 3.5.1. El exponente del producto resultante se puede expresar mediante la Ec. (3.48). ep = ex + ey bias + normal Consumo de recursos lgicos o SMSC con redondeo a cero: La Tabla 3.20 muestra la estimacin del cono sumo de recursos lgicos del multiplicador en punto otante basado en un SMSC o con redondeo a cero. Las Ecs. (3.49, 3.50 y 3.51) resumen el clculo de la estia Funcin o 2 Multiplexor yi Control 2 Producto yi X Sumador Sumador + Reg. P Registro P0 Adicin exponentes o Correccin Bias + normalizacin o o Signo FG 2( n+1 1) 2 log2 ( n+1 ) + 2 2 2n + 2 n+3 n+3 0 r+2 r+4 1 FF 0 log2 ( n+1 ) + 3 2 0 0 n+3 1 0 1 0 CLB
n 1 2 2 n+1 log2 ( 2 ) 3 +2 2

(3.48)

n+1 n +3 2 2 n +3 2 2
r 2 r 2

+1 5 +2
1 2

1 2

Tabla 3.20: Estimacin de consumo de recursos lgicos de la variante SMSC con o o redondeo a cero. macin en trminos de FGs, FFs y CLBs. En la Fig. 3.48 se graca el consumo o e

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

89

estimado de recursos del SMSC. n+1 ) + 16 + 2r 2 n+1 )+8 2

F G(n, r) = 5n + log2 (

(3.49)

F F (n, r) = n + log2 ( CLB(n, r) =

(3.50) (3.51)

5n log2 ( n+1 ) 19 2 + + +r 2 2 2

140

120 XCS05 100

80 CLB 60 40 20 0 0

10

15 n

20

25

30

35

Figura 3.48: Consumo de recursos del PFPM(SMSC), r = 8.

SMSC con redondeo a +: La Tabla 3.21 presenta la estimacin del consuo mo de recursos lgicos del multiplicador en punto otante basado en un SMSC. o

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

90 FF 0 CLB n1 + n+1 n +3 2 2 n +3 2 2 n+2 r +1 2 r 5 +2 2


1 2 1 2 3 2

Funcin o 2 Multiplexor yi Control 2 Producto yi X Sumador Sumador + Reg. P Registro P0 Redondeo + norm. Adicin exponentes o Correccin Bias + normalizacin o o Signo

FG 2( n+1 1) 2 log2 ( n+1 ) + 2 2 2n + 2 n+3 n+3 0 2n + 4 r+2 r+4 1

log2 ( n+1 ) + 3 2 0 0 n+3 1 3 0 1 0

log2 ( n+1 ) 2 2

Tabla 3.21: Estimacin de consumo de recursos lgicos de la variante SMSC con o o redondeo a +. Las Ecs. (3.52, 3.53 y 3.54) resumen el clculo de la estimacin en trminos a o e de FGs, FFs y CLBs. n+1 ) + 20 + 2r 2 n+1 ) + 10 2

F G(n, r) = 7n + log2 (

(3.52)

F F (n, r) = n + log2 ( CLB(n, r) =

(3.53) (3.54)

7n log2 (n + 1) 23 + + +r 2 2 2

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 propusieron nuevas arquitecturas con el objetivo de realizar un estudio comparativo destinado a su implementacin en FPGA. Se presentaron las estimaciones de o consumo de recursos lgicos y de comportamiento temporal que permitieron cono trastar las caracter sticas de los multiplicadores presentados.

Cap tulo 3. Nuevas Arquitecturas de Multiplicadores

91

140

120 XCS05 100

80 CLB 60 40 20 0 0

10

15 n

20

25

30

35

Figura 3.49: Consumo de recursos del PFPM(SMSC), r = 8. A partir de estas comparaciones se concluy que el SMSR, el SMSC(SMSR) y o el SMF(SMSR) son los multiplicadores que mejor ndice de performance presentan. Resultando el SMSR el ptimo para aplicaciones donde se busca una reducida o cantidad de recursos lgicos, y el SMSC(SMSR) o SMF(SMSR) en aplicaciones o donde adems de las restricciones de recursos se requiere una alta velocidad de a procesamiento. Como resultado de las comparaciones, se extendieron las variantes SMSR y SMSC(SMSR) a la multiplicacin de operandos en punto otante. Las arquiteco turas propuestas contemplan los esquemas con redondeo a cero y a +. Para cada variante se obtuvo una estimacin del consumo de recursos lgicos. o o

Cap tulo 4 Resultados Experimentales


4.1. Introduccin o

Los multiplicadores propuestos fueron ensayados experimentalmente con el objetivo de contrastar los resultados tericos y de las estimaciones. Para ello, los o multiplicadores se implementaron en tres series de FPGA de Xilinx: Spartan, Virtex y Virtex II. Cada una de las variantes de los multiplicadores se implement en o primera instancia mediante captura esquemtica y posteriormente en Lenguaje a de Descripcin de Hardware (VHDL) [28] [29]. o

4.2.

Parmetros de inters a e

Las variables de inters para la validacin experimental fueron: consumo de e o recursos lgicos, el retardo de propagacin, la frecuencia maxima del reloj de la o o FPGA (inversa del retardo de propagacin), la frecuencia de actualizacin de o o datos por segundo (inversa del tiempo que demanda realizar las iteraciones) y nalmente, el ndice de performance, que integra los conceptos de tiempo y de cantidad de recursos lgicos. o

92

Cap tulo 4. Resultados Experimentales

93

El retardo de propagacin tpd se obtuvo a partir del Analizador de Tiempos o que posee la herramienta de programacin de FPGA de Xilinx (Foundation 3.1i, o Timimg Analyzer). Esta herramienta realiza un anlisis esttico de todos los a a retardos incluyendo el retardo entre un anco de reloj y la correspondiente salida Q de un FlipFlop, considerando adicionalmente el tiempo de establecimiento de una seal. A partir de estos datos calcula el peor caso de temporizacin del diseo. n o n La frecuencia mxima de funcionamiento de reloj (fc [Mhz]) es la inversa del a tiempo tpd e indica la frecuencia mxima de reloj posible con ese diseo. A partir a n de esta ultima se obtiene la frecuencia de actualizacin de datos o velocidad o de procesamiento (P S [Mops]). Esta frecuencia surge de dividir la frecuencia mxima de trabajo por el nmero de ciclos N que requiere ejecutar una operacin, a u o PS =
fc . N

El ndice de performance denido en la Seccin 3.4.3 se utiliz con el objetivo o o de comparar el desempeo de cada sistema implementado en la FPGA. n

4.3.
4.3.1.

Multiplicacin en Punto Fijo o


Consumo de recursos lgicos o

El consumo de recursos lgicos se puede cuanticar en CLBs. Cada CLB o est compuesto por dos generadores de funciones (FG) y dos FlipFlops (FF). En a las series Virtex y Virtex II, cada CLB posee dos celdas denominadas slice, pero a nes prcticos la unidad utilizada es la de un CLB = un slice. a A continuacin se presentan los resultados experimentales de los multiplicao dores implementados en una FPGA XCS20-pq208, perteneciente a la Familia Spartan, con una capacidad de 400 CLBs. Finalmente, se presenta de forma resumida el consumo de recursos lgicos de los multiplicadores implementados en o

Cap tulo 4. Resultados Experimentales

94

las FPGAs XCV300e-8 y XC2V250-5 de las series Virtex y Virtex II. Implementacin de los multiplicadores en Spartan o En la Tabla 4.1 se muestran los resultados experimentales de los multiplicadores implementados en Spartan. Tabla 4.1: Consumo de recursos n 8 10 12 14 SM 17 20 23 26 SMSR 19 24 28 31 SMB4(3X) 30 36 42 48 SMB4(-x) 28 32 38 44 SMSC(SM) 24 30 35 40 SMSC(SMSR) 28 34 39 45 SMF(SM) 32 38 45 51 SMF(SMSR) 35 42 50 56 de los multiplicadores en Spartan[CLB]. 16 18 20 22 24 26 28 30 29 32 35 39 41 44 47 50 35 40 43 47 50 54 58 61 55 62 67 74 79 86 91 98 51 56 61 66 70 76 81 87 45 50 55 61 65 70 75 81 51 60 65 71 75 82 87 93 59 65 72 78 85 91 97 104 64 73 81 86 94 101 109 114

32 54 65 104 92 86 98 111 122

Las Tablas 4.2 y 4.3 muestran, respectivamente, el consumo estimado (Cap tulo 3) y la diferencia porcentual entre el consumo experimental y el estimado. Tabla 4.2: Consumo Estimado n 8 10 12 14 SM 20 24 28 32 SMSR 19 23 27 31 SMB4(3X) 37 44 51 58 SMB4(-x) 33 39 45 51 SMSC(SM) 29 35 41 47 SMSC(SMSR) 27 33 39 45 SMF(SM) 35 43 50 58 SMF(SMSR) 32 39 46 53 de recursos de 16 18 20 37 41 45 36 40 44 66 73 80 58 64 70 53 59 65 52 58 64 66 73 81 61 68 75 los multiplicadores [CLB]. 22 24 26 28 30 49 53 57 61 65 48 52 56 60 64 87 94 101 108 115 76 82 88 94 100 71 77 83 89 95 70 76 82 88 94 88 96 103 111 118 82 89 96 103 110

32 69 68 122 106 102 100 126 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 implementacin de Xilinx agrupa dos secciones de los multiplicadores en un slo CLB. En el o o

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 -22 SMSR 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 -15 SMB4(-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 -15 SMSC(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 -12 SMF(SMSR) 9 7 8 5 6 8 8 5 6 5 6 4 4 caso de este esquema de multiplicacin existen dos secciones, una combinacional o sin registros y otra que utiliza slo registros, permitiendo, que el programa logre o reducir el consumo de CLBs complementando dos secciones del multiplicador. A continuacin se explica esta situacin por medio de la implementacin del o o o 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 slo utiliza los FFs de un CLB permitiendo que los o FGs se puedan utilizar para otras funciones. Si se introduce esta consideracin de o

Cap tulo 4. Resultados Experimentales

96

s ntesis en la estimacin de consumo de recursos del multiplicador, la Ec. (3.6) es o modicada, obteniendo la Ec. (4.1). 3 log2 n 5 CLB(n) = n + + 2 2 2

(4.1)

La Fig. 4.2 muestra grcamente la diferencia existente entre el consumo de a recursos estimado y el experimental para el SM.
120 Estimado Experimental

100

80

CLB

60

40

20

10

15 n

20

25

30

35

Figura 4.2: Consumo de recursos lgicos del SM en Spartan. o La Fig. 4.3 presenta la contrastacin entre la estimacin de la Ec. 4.1 y los o o resultados experimentales, donde se advierte la consistencia entre los resultados experimentales y los estimados.

Cap tulo 4. Resultados Experimentales

97

120 Estimado Experimental

100

80

CLB

60

40

20

10

15 n

20

25

30

35

Figura 4.3: Consumo de recursos lgicos del SM en Spartan. o Implementacin de los multiplicadores en Virtex o En la Tabla 4.4 se presenta el consumo de recursos lgicos de los multiplio cadores, en trminos de slices1 , para una FPGA XCV300e-8 de la serie Virtex e de Xilinx. Se puede observar que en el caso de los multiplicadores en Virtex, el software de implementacin no optimiza el uso de las celdas como lo hizo en la o serie Spartan, por lo que el consumo coincide conlo estimado en Cap tulo 3. Implementacin de los multiplicadores en Virtex II o La Tabla 4.5 presenta el consumo de recursos lgicos de los multiplicadores, o en trminos de slices, para una FPGA XC2V250-5 de la serie Virtex II de Xilinx. e Se puede observar que en el caso de los multiplicadores en Virtex II el consumo de recursos es similar al de la serie Virtex.
1

El 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 n 8 10 12 14 SM 21 25 29 33 SMSR 19 24 28 31 SMB4(3X) 33 39 45 51 SMB4(-x) 31 36 40 46 SMSC(SM) 30 36 42 49 SMSC(SMSR) 28 33 39 46 SMF(SM) 37 44 51 59 SMF(SMSR) 35 42 50 56 Tabla 4.5: Consumo de n 8 10 SM 21 25 SMSR 19 24 SMB4(3X) 31 38 SMB4(-x) 32 38 SMSC(SM) 30 36 SMSC(SMSR) 28 33 SMF(SM) 36 44 SMF(SMSR) 35 41 recursos 12 14 29 33 28 31 44 50 42 48 42 49 39 46 51 59 48 55

de los multiplicadores en Virtex [slices]. 16 18 20 22 24 26 28 30 38 42 46 50 54 58 62 66 34 41 44 48 53 57 60 64 58 65 70 76 82 89 94 100 52 57 62 67 73 77 82 87 55 62 67 73 79 86 91 97 50 58 64 71 76 82 88 94 67 74 81 90 96 104 111 119 64 73 81 86 94 101 109 114

32 71 64 107 94 104 96 128 122

de los multiplicadores en Virtex II [slices]. 16 18 20 22 24 26 28 30 32 38 42 46 50 54 58 62 66 71 34 41 45 48 52 56 60 64 63 57 64 69 75 81 88 93 99 106 54 58 64 69 73 79 83 89 93 55 62 67 73 79 86 91 97 104 51 58 63 70 76 82 88 94 96 67 74 81 90 96 104 111 119 128 62 72 80 87 94 101 109 114 122

4.3.2.

Comportamiento temporal

El comportamiento temporal de los multiplicadores depende del retardo inherente de las compuertas lgicas y registros, y el retardo debido a la interconexin o o entre las mismas. En el cap tulo anterior se estim el comportamiento temporal o sin considerar los retardos de interconexin debido a que los mismos recin se o e conocen una vez implementado el circuito. Implementacin de los multiplicadores en Spartan o En esta seccin se presentan los resultados experimentales de los multiplicao dores implementados en una FPGA XCS20-pq208. A partir de estos resultados, se obtiene una expresin de los retardos de interconexin, los que se incorporan o o

Cap tulo 4. Resultados Experimentales

99

a la estimacin del comportamiento temporal de cada multiplicador permitiendo o caracterizarlo de manera ms precisa. a En la Tabla 4.6 se muestran los resultados experimentales de los multiplicadores implementados en Spartan. Tabla 4.6: Retardo de propagacin de los multiplicadores en Spartan [ns]. o 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.1 SMSR 10.9 11.7 12.0 12.8 13.4 14.0 14.4 15.0 15.8 16.3 16.8 17.3 17.9 SMB4(3X) 16.8 17.2 17.8 18.8 19.1 19.3 20.4 20.6 21.3 22.3 22.5 23.5 23.7 SMB4(-x) 15.9 16.6 17.2 18.5 19.1 19.6 19.8 20.5 21.5 21.8 22.9 23.5 24.0 SMSC(SM) 15.7 16.4 17.0 17.9 18.3 18.6 19.5 20.1 20.9 21.4 22.0 22.4 22.9 SMSC(SMSR) 15.5 16.5 17.0 17.5 18.0 18.6 19.7 20.2 20.6 21.1 21.4 22.2 23.1 SMF(SM) 11.4 12.0 12.6 13.3 14.1 14.6 15.4 16.2 17.0 17.9 18.3 19.0 20.2 SMF(SMSR) 11.1 11.9 12.2 13.1 13.6 14.1 14.9 15.7 16.7 17.7 18.0 18.6 19.6 La Tabla 4.7 muestra el retardo de propagacin estimado en el Cap o tulo 3. Se recuerda que el retardo de propagacin en las variantes SM y SMSR es el mismo, o existiendo la diferencia en el nmero de iteraciones de cada modelo. u Tabla 4.7: Retardo estimado de propagacin de los multiplicadores Trd = 0 [ns]. o 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.1 SMB4(3X) 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0 20.5 21.0 SMB4(-x) 13.3 13.8 14.3 14.8 15.3 15.8 16.3 16.8 17.3 17.8 18.3 18.8 19.3 SMSC 13.9 14.5 15.0 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 SMF 9.3 9.7 10.3 10.8 11.3 11.8 12.3 12.8 13.3 13.7 14.3 14.8 15.2

La Tabla 4.8 muestra la diferencia porcentual entre el retardo experimental y el estimado. Se puede concluir que el retardo de interconexin genera entre un 10 o y un 30 % de retardo adicional al retardo estimado. La Tabla 4.9 muestra la velocidad de procesamiento resultante de los multiplicadores implementados en Spartan.

Cap tulo 4. Resultados Experimentales

100

Tabla 4.8: Diferencia porcentual, Retardo de propagacin Experimental vs Estio 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.8 SMSR 20.0 22.1 19.0 20.9 20.5 20.3 19.3 19.4 20.3 19.9 19.1 18.2 18.5 SMB4(3X) 12.0 11.2 11.1 13.7 12.6 10.4 13.1 11.4 12.3 14.5 12.7 14.7 12.7 SMB4(-x) 19.5 20.2 20.0 24.8 25.0 24.0 21.3 22.3 24.2 22.7 25.2 25.1 24.4 SMSC(SM) 12.6 13.7 13.9 15.6 14.9 13.0 14.8 15.1 16.3 15.8 16.3 15.2 14.6 SMSC(SMSR) 11.2 14.3 13.4 13.3 12.6 13.2 16.0 15.7 14.7 14.2 13.0 14.3 15.6 SMF(SM) 23.7 22.9 23.0 23.3 25.2 24.3 26.0 26.8 28.2 29.9 28.4 29.1 32.5 SMF(SMSR) 19.6 22.0 19.1 21.9 20.6 20.1 21.8 22.9 26.4 28.6 26.1 26.0 28.8 Tabla 4.9: Velocidad [Mops/s]. n 8 SM 10.0 SMSR 11.4 SMB4(3X) 11.9 SMB4(-x) 10.5 SMSC(SM) 12.7 SMSC(SMSR) 16.1 SMF(SM) 14.6 SMF(SMSR) 18.1 de Procesamiento de los multiplicadores en Spartan 10 12 7.7 6.2 8.5 6.9 9.7 8.0 8.6 7.3 10.1 8.4 12.1 9.8 11.9 9.9 14.0 11.7 14 5.1 5.6 6.7 6.0 7.0 8.2 8.4 9.5 16 4.4 4.7 5.8 5.2 6.1 7.0 7.1 8.2 18 3.7 4.0 5.2 4.6 5.4 6.0 6.2 7.1 20 3.2 3.5 4.5 4.2 4.7 5.1 5.4 6.1 22 2.9 3.0 4.0 3.7 4.2 4.5 4.8 5.3 24 2.5 2.6 3.6 3.3 3.7 4.0 4.2 4.6 26 2.2 2.4 3.2 3.1 3.3 3.6 3.7 4.0 28 2.0 2.1 3.0 2.7 3.0 3.3 3.4 3.7 30 1.9 1.9 2.7 2.5 2.8 3.0 3.1 3.4 32 1.6 1.7 2.5 2.3 2.6 2.7 2.7 3.0

Implementacin de los multiplicadores en Virtex o La Tabla 4.10 presenta mxima velocidad de procesamiento que se puede obtea ner con los multiplicadores, en trminos de Millones de operaciones por segundo, e para la FPGA XCV300e-8. Implementacin de los multiplicadores en Virtex II o La Tabla 4.11 presenta mxima velocidad de procesamiento que se puede obtea ner con los multiplicadores, en trminos de Millones de operaciones por segundo, e 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.2 SMSR 27.5 21.4 17.4 14.4 12.5 11.1 9.5 8.4 7.6 7.0 6.4 5.3 5.4 SMB4(3X) 28.0 23.5 19.8 17.2 15.1 13.5 11.8 10.7 9.4 8.4 7.6 7.3 6.7 SMB4(-x) 22.9 18.9 16.7 14.7 12.5 11.2 9.8 9.1 8.2 7.3 6.5 6.1 5.9 SMSC(SM) 31.0 25.3 21.8 18.3 15.9 14.2 12.8 11.7 10.5 9.7 8.8 8.2 7.6 SMSC(SMSR) 38.2 29.8 24.8 21.2 17.9 15.5 13.8 12.4 11.3 10.4 9.5 8.7 8.1 SMF(SM) 35.5 29.5 25.3 21.5 19.9 17.9 16.3 14.4 13.1 12.1 11.1 10.2 9.4 SMF(SMSR) 42.1 35.3 29.5 24.1 21.3 18.6 16.3 14.7 13.2 12.1 11.5 10.6 9.6 Tabla 4.11: Velocidad de Procesamiento de [Mops/s]. n 8 10 12 14 16 18 SM 30.9 25.2 20.4 17.1 14.7 12.5 SMSR 36.1 27.5 22.0 18.5 15.7 13.7 SMB4(3X) 34.8 28.5 23.6 20.9 18.4 16.3 SMB4(-x) 32.1 27.5 23.2 20.4 17.9 16.1 SMSC(SM) 35.7 28.9 24.5 20.6 18.0 16.0 SMSC(SMSR) 45.5 34.9 28.5 24.0 20.4 17.9 SMF(SM) 44.3 36.9 31.7 27.3 23.8 21.0 SMF(SMSR) 53.8 44.9 37.2 30.9 27.8 24.3 los multiplicadores en Virtex II 20 11.2 11.7 14.5 14.2 14.2 16.2 18.6 21.6 22 9.9 10.6 13.1 12.9 13.0 14.2 16.8 19.2 24 8.9 9.4 11.7 11.7 11.9 12.7 15.6 16.6 26 8.2 8.4 10.7 10.7 10.8 11.5 13.9 15.2 28 7.3 7.4 9.6 10.1 9.9 10.4 13.0 13.9 30 6.8 7.0 8.9 9.4 9.1 10.0 12.0 12.8 32 6.1 6.5 8.6 8.5 8.5 9.1 10.9 11.6

4.3.3.

Comparacin de los multiplicadores o

En esta seccin se realiza la comparacin de los multiplicadores ensayados a o o partir de los resultados obtenidos de las implementaciones. Multiplicadores optimizados en consumo de recursos La Fig. 4.4 muestra el consumo de recursos lgicos de los multiplicadores o 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 implementacin o de Xilinx que agrupa dos secciones del SM en un solo CLB.

Cap tulo 4. Resultados Experimentales

102

80 SM SMSR 70

60

50

CLB

40

30

20

10

10

15

20 n

25

30

35

Figura 4.4: Consumo de recursos lgicos: SM vs SMSR en Spartan. o En la Fig. 4.5 se muestra la misma comparacin en la serie Virtex. En la o misma se puede observar que la relacin de consumo entre los multiplicadores o posee las mismas caracter sticas que las estimadas en la Seccin 3.4. La Fig 4.6 o muestra la comparacin de los multiplicadores implementados en Virtex II. o En cuanto a la velocidad de procesamiento de ambos multiplicadores en Spartan, la diferencia entre estas, se puede observar en la Fig. 4.7. Esta diferencia depende del nmero de iteraciones de cada multiplicador, debido a que el retardo u de la ruta cr tica para ambos multiplicadores es prcticamente el mismo. a Las Figs. 4.8 y 4.9 muestran la misma comparacin realizada para las seo ries Virtex y Virtex II. Se puede observar que la relacin existente entre ambos o multiplicadores se mantiene para todas las implementaciones.

Cap tulo 4. Resultados Experimentales

103

80

70

60

50

CLB

40

30

20

10 SM SMSR 0 5 10 15 20 n 25 30 35

Figura 4.5: Consumo de recursos lgicos: SM vs SMSR en Virtex. o

80

70

60

50

CLB

40

30

20

10 SM SMSR 0 5 10 15 20 n 25 30 35

Figura 4.6: Consumo de recursos lgicos: SM vs SMSR en Virtex II. o

Cap tulo 4. Resultados Experimentales

104

14 SM SMSR 12

10

PS [Mops]

10

15

20 n

25

30

35

Figura 4.7: Velocidad de procesamiento: SM vs SMSR en Spartan.

30 SM SMSR

25

20

PS [Mops]

15

10

10

15

20 n

25

30

35

Figura 4.8: Velocidad de procesamiento: SM vs SMSR en Virtex.

Cap tulo 4. Resultados Experimentales

105

40 SM SMSR 35

30

25 PS [Mops]

20

15

10

10

15

20 n

25

30

35

Figura 4.9: Velocidad de procesamiento: SM vs SMSR en Virtex II. Multiplicadores optimizados en velocidad En la Fig. 4.10 se graca el consumo de recursos lgicos de las variantes o 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 lgicos alrededor de un 20 % o superior a la variante SM. Una relacin similar mantienen ambas variantes del o 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 comparacin realizada para las series Virtex o 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 Seccin 3.4. o

Cap tulo 4. Resultados Experimentales

106

120

100

80

CLB 60 40 SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR) 20 0 0

10

15 n

20

25

30

35

Figura 4.10: Consumo de recursos lgicos de multiplicadores optimizados en veo locidad en Spartan.

120

100

80

CLB 60 40 SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR) 20 0 5

10

15

20 n

25

30

35

Figura 4.11: Consumo de recursos lgicos de multiplicadores optimizados en veo locidad en Virtex.

Cap tulo 4. Resultados Experimentales

107

120

100

80

CLB 60 40 SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR) 20 0 5

10

15

20 n

25

30

35

Figura 4.12: Consumo de recursos lgicos de multiplicadores optimizados en veo locidad en Virtex II. En la Fig. 4.13 se graca una comparacin de las velocidades de procesamieno 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 iteracin adicional. El multiplicador o SMSC(SMSR) obtiene una buena velocidad de procesamiento que es comparativa a la velocidad obtenida por el multiplicador SMF(SM). Se observa tambin que e la velocidad de la variante SMSC(SM) es superior a la velocidad obtenida por el SMbase4(3X).

Cap tulo 4. Resultados Experimentales

108

22 20 18 16 14 PS [Mops] 12 10 8 6 4 2 0 SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

10

15

20 n

25

30

35

Figura 4.13: Velocidad de procesamiento de los multiplicadores optimizados en velocidad en Spartan.

45 SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

40

35

30

PS [Mops]

25

20

15

10

10

15

20 n

25

30

35

Figura 4.14: Velocidad de procesamiento de multiplicadores optimizados en velocidad en Virtex.

Cap tulo 4. Resultados Experimentales

109

55 50 45 40 35 PS [Mops] 30 25 20 15 10 5 0 SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

10

15

20 n

25

30

35

Figura 4.15: Velocidad de procesamiento de multiplicadores optimizados en velocidad en Virtex II. Performance de los multiplicadores A n de estimar los benecios que se obtienen con cada variante se utiliza el ndice de performance propuesto en la Ec. (3.40). Implementacin en Spartan: En la Fig. 4.16 se graca el o ndice de performance para las distintas variantes, luego de su implementacin en una FPGA de o 400 CLBs 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 graca el ndice de performance para un rango de 20 n 32 bits. En esta gura se observa que el SM posee el mejor ndice. Adicionalmente ndice del SMSC(SM) resulta mejor que el del SMSC(SMSR) debido a que consume 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 ms parecida. a

Cap tulo 4. Resultados Experimentales

110

250 SM SMSR SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

200

Performance

150

100

50

10 n

15

20

Figura 4.16: Indice de performance de los multiplicadores en Spartan, 8 n 20.

35 SM SMSR SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

30

25 Performance

20

15

10

20

22

24

26 n

28

30

32

Figura 4.17: Indice de performance de los multiplicadores en Spartan, 20 n 32.

Cap tulo 4. Resultados Experimentales

111

Implementacin en Virtex: En la Fig. 4.16 se graca el o ndice de performance para las distintas variantes, luego de su implementacin en una FPGA o Virtex de 1536 CLBs 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).
SM SMSR SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

2000

1500 Performance

1000

500

10 n

15

20

Figura 4.18: Indice de performance de los multiplicadores en Virtex, 8 n 20. En la Fig. 4.17 se graca el ndice de performance para un rango de 20 n 32 bits, donde se observa que el ndice de los multiplicadores resulta ms a 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 interconexin de los multiplicadores ms complejos aumenta ms o a a notoriamente en relacin con el SM y el SMSR. o

Cap tulo 4. Resultados Experimentales

112

400 SM SMSR SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

350

300

250 Performance

200

150

100

50

20

22

24

26 n

28

30

32

Figura 4.19: Indice de performance de los multiplicadores en Virtex, 20 n 32. Implementacin en Virtex II: En la Fig. 4.16 se graca el o ndice de performance para las distintas variantes, luego de su implementacin en una FPGA o Virtex II de 1536 CLBs 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 graca el ndice de performance para un rango de 20 n 32 bits, donde se observa que el ndice de los multiplicadores resulta ms a comparable pero manteniendo la misma relacin que para valores de n < 20. o

Cap tulo 4. Resultados Experimentales

113

2500

2000

SM SMSR SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

Performance

1500

1000

500

10 n

15

20

Figura 4.20: Indice de performance de los multiplicadores en Virtex II, 8 n 20.

500 SM SMSR SMB4 (3X) SMB4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

450

400

350

300 Performance

250

200

150

100

50

20

22

24

26 n

28

30

32

Figura 4.21: Indice de performance de los multiplicadores en Virtex II, 20 n 32.

Cap tulo 4. Resultados Experimentales

114

4.4.

Multiplicacin en Punto Flotante o

Los multiplicadores en punto otante propuestos fueron ensayados experimentalmente a n de vericar los resultados obtenidos tericamente y de las estimao 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 Descripcin de Hardware (VHDL) [28] [29] para o una longitud de exponente r = 8 y variando la longitud de palabra de la mantisa.

4.4.1.

Consumo de recursos lgicos o

Implementacin de los multiplicadores en Spartan o El consumo de recursos lgicos de los multiplicadores en punto otante en o Spartan se muestran en la Tabla 4.12. Tabla 4.12: Consumo en Spartan [CLBs]. n SMSR SMSR + SMSC SMSC + de recursos lgicos de los multiplicadores en punto otante o 9 32 35 45 51 11 35 37 50 56 13 37 40 56 64 15 40 42 61 71 17 44 46 70 80 19 46 49 75 86 21 23 49 51 51 53 80 85 93 100 25 27 54 57 57 60 92 97 108 113

Implementacin de los multiplicadores en Virtex o En la Tabla 4.13 se presenta el consumo de recursos lgicos de los multiplicao dores, en trminos de slices2 , para una FPGA XCV300e-8 de la serie Virtex de e Xilinx.
2

El 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 n 9 SMSR 30 SMSR + 32 SMSC 46 SMSC + 51

recursos 11 13 33 35 35 38 51 57 56 64

lgicos de las o 15 17 19 39 43 46 42 46 48 63 71 77 71 80 86

variantes en Virtex [slices]. 21 23 25 27 48 52 55 57 51 54 57 58 83 89 93 97 93 100 108 113

Implementacin de los multiplicadores en Virtex II o En la Tabla 4.14 se presenta el consumo de recursos lgicos de los multiplicao dores para una FPGA XC2V250-5 de la serie Virtex de Xilinx. Tabla 4.14: Consumo de n 9 SMSR 32 SMSR + 35 SMSC 46 SMSC + 53 recursos lgicos de o 11 13 15 17 35 37 41 45 38 40 44 48 51 57 63 71 60 68 73 82 las variantes en Virtex II [slices]. 19 21 23 25 27 47 50 53 55 58 50 53 57 59 61 77 83 89 93 97 90 96 102 110 116

4.4.2.

Comportamiento temporal

Implementacin de los multiplicadores en Spartan o En la Tabla 4.15 se presenta mxima velocidad de procesamiento que se puea de obtener con los multiplicadores, en trminos de Millones de operaciones por e segundo, para una FPGA de la serie Spartan de Xilinx. Tabla 4.15: Comportamiento temporal de las variantes en Spartan [Mop/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.0 SMSR + 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.1 SMSC + 10.2 8.4 7.1 6.1 5.3 4.8 4.2 3.7 3.4 3.1

Cap tulo 4. Resultados Experimentales Implementacin de los multiplicadores en Virtex o

116

En la Tabla 4.16 se presenta mxima velocidad de procesamiento que se puea de obtener con los multiplicadores, en trminos de Millones de operaciones por e segundo, para una FPGA XCV300e-8 de la serie Virtex de Xilinx. Tabla 4.16: Comportamiento temporal de las variantes n 9 11 13 15 17 19 21 SMSR 20.3 15.8 13.4 11.8 10.2 9.0 7.8 SMSR + 16.2 13.6 11.5 9.7 8.4 7.4 6.6 SMSC 27.0 22.6 19.0 16.2 14.4 12.9 11.7 SMSC + 26.9 21.5 17.7 15.9 13.8 12.3 11.3 en Virtex [Mop/s]. 23 25 27 7.2 6.2 5.7 6.0 5.2 4.8 10.5 9.5 8.8 10.3 9.2 8.4

Implementacin de los multiplicadores en Virtex II o En la Tabla 4.17 se presenta mxima velocidad de procesamiento que se puea de obtener con los multiplicadores, en trminos de Millones de operaciones por e segundo, para una FPGA XC2V250e-8 de la serie Virtex II de Xilinx. Tabla 4.17: Comportamiento temporal de las variantes n 9 11 13 15 17 19 21 SMSR 25.6 20.3 17.2 15.2 13.3 11.4 10.0 SMSR + 20.9 17.1 14.0 11.7 11.1 9.4 8.5 SMSC 29.3 24.8 21.0 18.4 16.2 14.4 13.3 SMSC + 29.4 24.5 21.0 18.3 16.1 14.5 13.3 en Virtex 23 25 9.1 8.3 7.5 6.9 12.1 10.9 11.9 10.7 II [Mop/s]. 27 7.2 6.2 10.0 10.0

4.4.3.

Performance

A n de poder estimar los benecios que se obtienen con cada variante a travs e 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 fundamentalmente a que el retardo de propagacin de la variante SMSR con redondeo a o cero es inferior al de la variante SMSC.
120 SMSC SMSR

100

80

60

40

20

0 15

20

25 n

30

35

40

Figura 4.22: Indice de performance de los multiplicadores con redondeo a cero en Spartan. 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 prcticamente es a el mismo. Esto quiere decir que la variante SMSR es la ptima para diseos con o n fuertes restricciones en cuanto a consumo de recursos lgicos y la variante SMSC o 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 prcticamente igual al de la variante SMSC, en Virtex II a el SMSR logra un porcentaje mayor de desempeo. Esto es, debido a que en sta n e ultima serie de FPGA se obtuvo una mejor velocidad de procesamiento por parte de la variante SMSR.

Cap tulo 4. Resultados Experimentales

118

120 SMSC SMSR

100

80

60

40

20

0 15

20

25 n

30

35

40

Figura 4.23: Indice de performance de los multiplicadores con redondeo a + en Spartan.

1000 Experimental results SMSC Experimental results SM 900

800

700 Performance index

600

500

400

300

200

100

10

15 n

20

25

30

Figura 4.24: Indice de performance de los multiplicadores con redondeo a + en Virtex.

Cap tulo 4. Resultados Experimentales

119

1200 Experimental results SMSC Experimental results SM

1000

800 Performance index

600

400

200

10

15 n

20

25

30

Figura 4.25: Indice de performance de los multiplicadores con redondeo a + en Virtex II.

4.5.

Conclusiones

Se presentaron los resultados de implementacin de los multiplicadores secueno ciales. Estos resultados permiten validar las ecuaciones y conceptos presentados en cap tulos previos, habilitando estas ecuaciones como una herramienta util para la evaluacin de multiplicadores en FPGA. o A partir de los resultados de las comparaciones entre los multiplicadores ensayados, se concluye que el SM slo posee el mayor o ndice de performance cuando se lo implementa en la serie Spartan debido a que consume una cantidad inferior de recursos relativo a la implementacin de los otras series. En estas ultimas, o la performance del SMSR resulta superior a la del SM segn lo estimado en el u cap tulo anterior. Estos resultados se extienden a las variantes de los multiplicadores basadas en uno u otro esquema. La variante SMSC representa en general un buena eleccin cuando se requiere, o adems de bajo consumo de recursos, una mejor velocidad de procesamiento. A a

Cap tulo 4. Resultados Experimentales

120

pesar de que esta velocidad resulta inferior que la de la variante SMF, presenta una notable reduccin en consumo de recursos a su favor. Adems se observa que o a los resultados obtenidos con ambos multiplicadores respecto a los de base 4, la mejora es sustancial. Finalmente, la extensin de los multiplicadores a punto otante demostr que o o se pudo obtener un multiplicador de bajo consumo de recursos lgicos y buen o desempeo en velocidad. n

Cap tulo 5 Conclusiones


Las conclusiones de esta Tesis son las siguientes: 1. Se relevaron las arquitecturas de multiplicadores existentes en la literatura, corroborndose el excesivo consumo de recursos lgicos de los mismos. a o 2. Se propuso la utilizacin de la Multiplicacin Secuencial para reducir el o o consumo de recursos. Se modelaron los multiplicadores secuenciales y se concluy que se deb mejorar su desempeo en velocidad. o a n 3. Se propusieron nuevas arquitecturas de multiplicadores secuenciales con el objetivo de mejorar su desempeo en velocidad. Se modelaron las variantes n y se las compar con los multiplicadores existentes. o 4. Se validaron experimentalmente los modelos de los multiplicadores a travs e de la implementacin de los mismos en varias familias de FPGAs. Se obtuo vieron mejoras importantes del desempeo de los mismos. n 5. Se aplicaron las nuevas arquitecturas de Multiplicadores Secuenciales a la multiplicacin en punto otante. Se obtuvieron multiplicadores de punto o otante de reducido consumo lgico y buenas prestaciones de velocidad. o 121

Cap tulo 5. Conclusiones

122

6. Se aplic la multiplicacin secuencial a un problema concreto de control de o o movimiento. El sistema desarrollado mostr notables mejoras con respecto o al diseo convencional basado en DSPs. n Estas conclusiones se desarrollan con ms detalle a continuacin. a o Arquitecturas existentes Se analizaron y modelaron los multiplicadores paralelos Ripple Carry, Carry Save y las variantes propuestas por Guild y McCanny-McWhinter. Adicionalmente, se realizaron implementaciones en FPGA del multiplicador Ripple Carry y de otro propuesto por Xilinx optimizado en consumo de recursos. Los resultados de esta implementacin obtenidos se resumen en la Tabla 5.1. o Tabla 5.1: Implementacin de Multiplicadores Paralelos en FPGA. o Spartan Virtex Virtex II Bits Tipo CLB Mops Slices Mops Slices Mops 8 MP 61 20.8 64 41.9 64 45.5 8 MX 52 17.5 36 76.3 36 62.6 16 MP 247 10.8 257 22.0 258 24.7 16 MX 213 11.2 140 59.0 141 47.2 32 MX 816 3.1 544 40.5 548 38.5 MP: Multiplicador Paralelo MX: Multiplicador propuesto por Xilinx Se concluy que, si bien los multiplicadores paralelos pueden ejecutar produco tos rpidamente, presentan un elevado consumo de recursos que adems aumenta a a cuadrticamente con la longitud de palabra de los operandos. Por ejemplo se pua 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 aplicacin de estas o arquitecturas se limita a FPGAs de gran tamao. n

Cap tulo 5. Conclusiones Multiplicacin Secuencial o

123

Se investig el esquema de la Multiplicacin Secuencial, que consume una o o cantidad inferior de recursos. En particular se modelaron y implementaron experimentalmente 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 Secuenciales Spartan Virtex Virtex II Bits Tipo CLB Mops CLB Mops CLB Mops 8 SM 19 10.0 19 23.9 19 30.9 8 SMB4(3X) 24 11.9 24 28.0 24 34.8 8 SMB4(-X) 28 10.5 28 22.9 28 32.1 16 SM 35 4.4 35 12.2 35 14.7 16 SMB4(3X) 45 5.8 45 15.1 45 18.4 16 SMB4(-X) 51 5.2 51 12.5 51 17.9 32 SM 65 1.6 65 5.2 65 6.1 32 SMB4(3X) 86 2.5 86 6.7 86 8.6 32 SMB4(-X) 98 2.3 98 5.9 98 8.5 Se concluy que, si bien el consumo de recursos lgicos es sustancialmente meo o 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 concluy que es o necesario mejorar el desempeo en velocidad de los multiplicadores secuenciales. n Arquitecturas propuestas de Multiplicadores Secuenciales Se realizaron propuestas para la optimizacin en velocidad de la Multiplicao cin Secuencial. Para cada uno de los multiplicadores se describi su estrategia o o y se lo model para poder comparar su desempeo. A partir del modelo de cao n da multiplicador, se expres cada uno en Lenguaje de Descripcin de Hardware o o (HDL) [28] [29] y se realiz la correspondiente implementacin experimental. La o o 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 propuestos. Spartan Virtex Virtex II Bits Tipo CLB Mops CLB Mops CLB Mops 8 SMSR 19 11.4 19 27.5 21 36.1 8 SMSC(SM) 24 12.7 30 31.0 30 35.7 8 SMSC(SMSR) 28 16.1 28 38.2 28 45.5 8 SMF(SM) 32 14.6 37 35.5 36 44.3 8 SMF(SMSR) 35 18.1 35 42.1 35 53.8 16 SMSR 35 4.7 34 12.5 38 15.7 16 SMSC(SM) 45 6.1 55 15.9 55 18.0 16 SMSC(SMSR) 51 7.0 50 17.9 51 20.4 16 SMF(SM) 59 7.1 67 19.9 67 23.8 16 SMF(SMSR) 64 8.2 64 21.3 62 27.8 32 SMSR 65 1.7 64 5.4 71 6.5 32 SMSC(SM) 86 2.6 104 7.6 104 8.5 32 SMSC(SMSR) 98 2.7 96 8.1 96 9.1 32 SMF(SM) 111 2.7 127 9.4 128 10.9 32 SMF(SMSR) 122 3.0 122 9.6 122 11.6 Se concluye que, con las variantes propuestas, se pudo incrementar el desempeo en velocidad sin un sacricio sustancial de recursos lgicos. En particular, n o con la variante SMF(SMSR) se logr un incremento de velocidad estimado entre o un 60 % (8 bits) y un 100 % (32 bits) con respecto al SM. Con esta variante se estar alcanzando la velocidad de procesamiento del MP para la serie Spartan a con un consumo hasta 8 veces menor. Nuevas Arquitecturas de Multiplicacin Secuencial en Punto Flotante o Los resultados obtenidos con las multiplicadores propuestos se aplicaron a la multiplicacin en punto otante. Se seleccionaron dos de los multiplicadores o desarrollados y se realiz el respectivo modelo en punto otante. Las ecuaciones o se validaron a travs de la implementacin de los mismos en las familias de FPGA e o antes mencionadas.

Cap tulo 5. Conclusiones

125

La Tabla 5.4 muestra el consumo de recursos lgicos de los multiplicadores o SMSR y SMSC aplicados a punto otante. A su vez, se muestran los ensayos realizados con redondeo a cero y redondeo a + (ver Seccin 2.2.2). o Tabla 5.4: Resultados experimentales de Multiplicadores en Punto Flotante Spartan Virtex Virtex II Bits Tipo CLB Mops CLB Mops CLB Mops 18 SMSR trunc 32 7.6 30 20.3 32 25.6 18 SMSR + 35 6.2 32 16.2 35 20.9 18 SMSC trunc 45 10.3 46 27.0 46 29.3 18 SMSC + 51 10.2 51 26.9 53 29.4 32 SMSR trunc 51 2.5 52 7.2 53 9.1 32 SMSR + 53 2.0 54 6.0 57 7.5 32 SMSC trunc 85 3.8 89 10.5 89 12.1 32 SMSC + 100 3.7 100 10.3 102 11.9 Se concluye que, para multiplicadores de 18 bits, se ha obtenido un desempeo n 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 desempeo n 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 desempeo al menos 3 veces superior a los reportados por n estos autores1 . Por otra parte, por ejemplo el SMSC propuesto en esta tesis consume 8 veces menos que el propuesto por Jaenicke and Luk [23], con una velocidad tan slo 2,5 veces menor. Es decir, que el desempeo logrado con los multiplicadores o n propuestos es al menos 3 veces mayor.
1

Estos autores hacen uso del multiplicador embebido de 18 bits de la serie Virtex II

Cap tulo 5. Conclusiones Multiplicacin Secuencial aplicada al Control de Movimiento o

126

El controlador desarrollado permiti el control de posicin de mquinas increo o a mentales a alta velocidad en paso completo o en modo micropaso2 . Se utiliz el o 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: evaluacin y comparacin de parmeo o a 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 Reunin de Trabajo en Procesamiento de la Informacin y o o Control. Mar del Plata 2007. Floating Point Multipliers with Reduced FPGA Area, II Southern Conference on Programmable Logic. ISBN 84-609-8998-4. Mar del Plata 2006. Performance evaluation of Floating Point Multipliers, XX Congreso Argentino de Control Automtico. ISBN 978-950-99994-4-2. Mar del Plata a 2006. Novel FPGA based Floating Point Multiplier: Consecutive-Sums Sequential Multiplier, 8th Argentine Symposium on Computing Technology (36 JAIIO) ISBN 1850-2776. Mar del Plata 2007.
El modo micropaso consiste en el accionamiento del movimiento del motor incremental en fracciones de un paso.
2

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 Programmable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.

5.0.1.

Trabajos futuros

La implementacin hardware de algoritmos de control puede resultar de suma o utilidad en el campo de la Electrnica de Potencia. Los convertidores de potencia o presentan permanentemente un compromiso entre la velocidad del sistema global y la complejidad del control. La evolucin de los dispositivos digitales de las o ultimas dcadas permiti el avance en el control de estos sistemas, sin embargo e o los requerimientos actuales tambin son mayores. e En el campo de lgica programable, la capacidad de paralelizacin de tareas o o permitir aumentar la eciencia del control de los convertidores, ya sea aumena tando la velocidad de procesamiento del sistema utilizando algoritmos de control y/o modulacin ms sosticados que mejorar la performance del convertidor. o a a Adicionalmente, el sistema implementado en FPGA permitir la generacin de a o seguridad y proteccin en la conmutacin de las llaves de los convertidores en o o forma independiente de la ejecucin del algoritmo. o En el marco de la investigacin realizada hasta el momento, se propone exo pandir los conocimientos adquiridos para el desarrollo e implementacin de los o algoritmos de control destinados a Convertidores de Potencia. Entre las herramientas necesarias, se encuentra la necesidad de desarrollar sumadores en punto otante que posean las mismas caracter sticas que los multiplicadores propuestos

Cap tulo 5. Conclusiones

128

en el Cap tulo 3. Los sumadores en punto otante consumen considerables cantidades de recursos lgicos, comparables a la de los multiplicadores. Por otro lado, o los algoritmos de control de los convertidores de potencia requieren usualmente el clculo de funciones trigonomtricas. Se pretende desarrollar avances en este a e campo mediante la aplicacin de los conocimientos en la ejecucin de algoritmos, o o entre los que se encuentra el de CORDIC [30] [31].

Bibliograf a
[1] E. Boemo, E. Jurez, and J. Meneses, Taxonom de multiplicadores, Proc. a a VIII DCIS Conference. Univ. of Malaga., pp. 185190, 1993. [2] D. Teixeira, A. Susim, and L. Carro, Comparacin de multiplicadores en o fpga, V Workshop Iberchip, vol. 1, pp. 182187, Enero 1999. [3] .Nibouche, A. Bouridarie, and M.Nibouche, New architectures for serialserial multiplication, IEEE, pp. 705708, 2001. [4] A. Aggoun, A. Ashur, and M. K. Ibrahimi, Area-time efticient serial-serial multipliers, in IEEE International Symposium on Circuits and Systems, 2000. [5] A. Aggoun, A. Farwan, M. Ibrahim, and A. Ashur, Radix-2n serialserial multipliers, IEE Proc.-Circuits Devices Syst., vol. 151 No. 6, pp. 503509, 2004. [6] A. Bouridane, M.Nibouche, D. Crookes, and B. Albesher, A low latency bidirectional serial-parallel multiplier architecture, IEEE ISCAS 2000, vol. 5, pp. 593596, May 2000. [7] C. Wallace, A suggestion for a fast multiplier, IEEE Trans. on Electronic Comuters, pp. 1417, 1964. [8] L. Dadda, Some schemes for parallel multipliers, Alta Frequenza, vol. XXXIV, N 5, 1965. [9] N. Shirazi, A. Walters, and P. Athanas, Quantitative analisis of oating point arithmetic on FPGA based custom computing machines, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines, pp. 155162, 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 oating-point operations on FPGAs, Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines, pp. 206215, 1998.

129

Bibliograf a

130

[11] J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach. San Francisco, California ISBN: 1-55860-329-8: Morgan Kaufmann Publishers, Inc., 1996. [12] J. P. Hayes, Introduccin al Diseo Lgico Digital. Wilmington, Delaware, o n o E.U.A: Addison-Wesley Iberoamericana, 1996. [13] G. E. Ordoez-Fernandez, L. Lpez-Lpez, and J. Velazco-Medina, Diseo de multiplicadores paralelos de 16 bits en fpgas, in Proceedings X Taller Iberchip, 2004. [14] B. Parhami, Computer Arithmetic: Algorithms and Hardware Design. New York, Oxford: Oxford University Press, 2000. [15] E. Jamro and K. Wiatr, Constant coecient convolution implemented in fpgas, in Digital System Design, 2002. Proceedings. Euromicro Symposium on, 4-6 Sept. 2002, pp. 291298. [16] J. B. Evans, C.-J. Chou, and S. Mohanakrishnan, FPGA implementation of digital lters, Proc. ICSPAT93, pp. 19, 1993. [17] R. J. Landry, V. Calmettes, and E. Robin, High speed IIR lter for xilinx FPGA, Proceedings of the 1998 Midwest Symposium on Systems and Circuits, 1998. [18] I. S. 754, IEEE standard for binary oating-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 multiplier array suitable for VLSI, IEE Proceedings, Part G - Electronic Circuits and Systems, vol. 129, pt. G, no. 2, Apr. 1982, p. 40-46., vol. 129, pp. 4046, 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 single precision oating point addition and multiplication on FPGAs, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines, pp. 107116, 1996. [23] A. Jaenicke and W. Luk, Parameterised oating-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. 897900vol.2.

Bibliograf a

131

[24] M. A. Jimnez, N. G. Santiago, and D. T. Rover, Development of a scalable FPGA-based oating point multiplier, Proceedings of the Fifth Canadian Workshop on Field-Programmable Devices, pp. pp. 145 150, 1998. [25] G. Aty, A. Hussein, I. Ashour, and M. Mones, High-speed, area-ecient fpga-based oating-point multiplier, in Microelectronics, 2003. ICM 2003. Proceedings of the 15th International Conference on, 9-11 Dec. 2003, pp. 274277. [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. 445 Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331: IEEE Press, 1999. [29] E. Villar, L. Ters, S. Olcoz, and Y. Torroja, VHDL Lenguaje Estandar de e Diseo Electrnico. Madrid: McGraw Hill, 1997. n o [30] J. E. Volder, The CORDIC Trigonometric Computing Technique, IRE Transactions on Electronic Computers, vol. EC-8, pp. 330334, 1959. [31] M. Kharrat, M. Loulou, and N. M. andL. Kamoun, A new method to implement cordic algorithm, in The 8th IEEE International Conference on Electronics, Circuits and Systems, vol. 2, 2001, pp. 715718. [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. Rinol, S. Schreiber, G. Suberlucq, I. Wilson, and W. Wuensch, Performances obtained with the cern linear collider test facility, in Proc. European Particle Accelerator ConferenceEPAC94, London, UK, July 1994, pp. 680682. [Online]. Available: http://accelconf.web.cern.ch/AccelConf/

Bibliograf a

132

[40] W. Coosemans and H. Mainaud, Pre-alignment of clic using the double-wire method, European Organization of Nuclear Research (CERN), Tech. Rep. 343, July 1997, CLIC-NOTE 343. [41] P. Poirier, Llignement dynamique submicrometrique de sections accelea ratrices, Memoire de soutenance du Diplome de Recherche Specialisee en Sciences, Universite Louis Pasteur de Strasbourg, September 1991. [42] D. Carrica, R. Pittin, and M. Benedetti, Control subsystem hardware of the high performance electronics for alignment regulation on the CLIC 30GHz modules, 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 Proceedings of the Thirteeth Annual Symposium, Incremental Motion Control System and Devices, B. C. Kuo, Ed., Incremental Motion Control System Society. Champaign, Illinois: Board of Trustees of the University of Illinois, May 1984, pp. 2530. [44] Z. Kang and S. Qu, A new methodology for using single microprocessor to control DC stepper motors, in Proceedings of the IEEE International Conference on Industrial Technology, I. of Electrical & Electronics Engineers Sta, Ed. Piscataway, NJ, USA: IEEE Press, Dec. 1994, pp. 543545. [45] D. O. Carrica and S. A. Gonzlez, Algoritmo eciente para la generacin a o de perles de velocidad en el accionamiento simultneo de mltiples motores a u paso a paso, in ANALES VIII Reunin de Trabajo en Procesamiento de la o Informacin y Control, RPIC99, vol. 1. Mar del Plata, Argentina: Facultad o de Ingenieria, U.N.M.d.P., Sept. 2325, 1999, pp. 118122. [46] P. Acarnley, Stepping Motors: A Guide to Modern Theory and Practice, 4th ed., ser. IEE Control Engineering Series, no. 63. London, U.K.: Peter Peregrinus Ltd, Dec. 2002. [47] 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. [48] B. Robert, F. Alin, and C. Goeldel, Aperiodic and chaotic dynamics in hybrid step motor-new experimental results, in Proceedings of the IEEE International Symposium on Industrial Electronics-ISIE2001, 2001, pp. 2136 2141. [49] M.-C. Pera, B. Robert, and C. Goeldel, Nonlinear dynamics in electromechanical systems-application to a hybrid stepping motor, Electromotion, vol. 7, no. 1, pp. 3142, Jan./Mar. 2000.

Bibliograf a

133

[50] N. Acosta, C. Collado, and K. Larsen, Mtricas para la generacin de mule o tiplicadores paralelos en FPGA. Proc. of VII Workshop Iberchip., 2001. [51] N. Acosta, E. Todorovich, C. Collado, and K. Larsen, Multiplicadores paralelos: Estado del arte y anlisis de su materializacin en FPGA. Proc. of a o VI Workshop Iberchip., pp. 158168, 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 Computers, IEEE, vol. 13, pp. 915, 1996. [54] S. Brown and J. Rose, FPGA and CPLD architectures: A tutorial, Design & Test of Computers, IEEE, vol. 13, pp. 4257, 1996. [55] D. Carrica, R. Pittin, W. Coosemans, and M. Benedetti, Active alignment electronic system for CLIC 30 GHz modules in CTF2, CERN Publication, CLIC Nro. 361, November 1998. [56] T.-S. Chang and C.-W. Jen, Hardware-ecient implementations for discrete function transforms using LUT-based FPGAs, Computers and Digital Designs - IEE Proceedings, vol. 146, Issue 6, p. 309, 1999. [57] C. Dick and F. Harris, FPGA signal processing using sigma-delta modulation, 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 modied booth algorithm, IEEE Transactions on Circuits and Systems - II: Analog and Digital Signal Processing, vol. 47, no. 9, pp. 902908, September 2000. [59] M. Funes, D. Carrica, and M. Benedetti, Floating point multipliers with reduced fpga area, vol. 1, 2006, pp. 5966. [60] , Multiplicadores de punto otante para estructuras FPGA, vol. 1, 2002, p. 40. [61] , Multiplicadores secuenciales para estructuras FPGA, vol. Vol. II, 2001, pp. 646651. [62] A. A. Gray and S. D. Hoy, Parallel adaptive equalizer employing subconvolution: VLSI architecture realized in a eld programmable gate array, 2003 MAPLD International Conference, 2003. [63] R. W. Hix and R. L. Haggard, Comparative design methodologies for FPGA based computer arithmetic, Proceedings of the Twenty-Ninth Southeastern Symposium on System Theory, pp. 374378, 1997.

Bibliograf a

134

[64] B. Lee and N. Burgess, Parameterisable oating-point operations on FPGA, Conference Record of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers, pp. 10641068, 2002. [65] L. Mintzer, Large FFTs in a single FPGA, ICSPAT, 1996. [66] K. Rajagopalan and P. Sutton, A exible multiplication unit for an FPGA logic block, The 2001 IEEE International Symposium on Circuits and Systems, 2001. ISCAS 2001, vol. vol. 4, pp. 546549, 2001. [67] C. Souani, M. Abid, and R. Tourki, An FPGA implementation of the oating point addition, Industrial Electronics Society IECON 98. Proceedings of the 24th Annual Conference of the IEEE, vol. 3, pp. 16441648, 1998. [68] P. F. Stelling, C. U. Martel, V. G. Oklobdzija, and R. Ravi, Optimal circuits for parallel multipliers, IEEE Transactions on Computers, vol. 47, no. 3, pp. 273285, March 1998. [69] P. F. Stelling and V. G. Oklobdzija, Optimal designs for multipliers and multiply-accumulators, Proceedings of the 15th IMACS World Congress on Scientic Computation, Modeling, and Applied Mathematics, vol. 4, pp. 739 744, August 1997. [70] M. Thornton, J. Gaiche, and J. Lemieux, Tradeo analysis of integer multiplier circuits implemented in FPGAs, Communications, Computers and Signal Processing IEEE Pacic RIM Conference, pp. 301304, 1999. [71] E. Todorovich, G. Sutter, N. Acosta, E. Boemo, and S. Lpez-Buedo, Reo lacin entre velocidad y consumo en FPGAs, VII Workshop Iberchip, pp. o 16 CD Browser, 2001. [72] B. Von Herzen, Signal processing at 250mhz using highperformanceFPGAs, IEEE Transactions on Very Large Scale Integration (VLSI) Systems,, vol. 6, Issue 2, pp. 238246, 1998. [73] The Programable Logic Data Book. Xilinx, 2000. [74] R. Zimmermann, Binary Adder Architectures for Cell-Based VLSI and their Synthesis. Swiss Federal Institute of Technology, 1997. [75] M. Lu, Arithmetic and Logic in Computer Systems. 2004. Wiley-Interscience,

[76] U. Meyer-Baese, Digital Signal Processing with Field Programmable Gate Arrays. Springer-Verlag, 2001. [77] A. Gaar, W. Luk, P. Cheung, and N. Shirazi, Customising oating-point designs, in Symposium on Field-Programmable Custom Computing Machines. IEEE, 2002, pp. 315 317.

Bibliograf a

135

[78] J. Knopman, E. Fernandes, and A. Mesquita, Implementation of hardware structures through congurable logic, in EUROMICRO 94. System Architecture and Integration. Proceedings of the 20th EUROMICRO Conference., 5-8 Sept. 1994, pp. 125130. [79] M. Louie and M. Ercegovac, Multiplication and inner product with eld programmable gate arrays, in VLSI Signal Processing, VII, 1994., [Workshop on], 26-28 Oct. 1994, pp. 246255. [80] R. Lysecky and F. Vahid, A congurable logic architecture for dynamic hardware/software partitioning, in Design, Automation and Test in Europe Conference and Exhibition, 2004. Proceedings, vol. 1, 16-20 Feb. 2004, pp. 480485Vol.1. [81] T. Miyamori and U. Olukotun, A quantitative analysis of recongurable coprocessors for multimedia applications, in FPGAs for Custom Computing Machines, 1998. Proceedings. IEEE Symposium on, 15-17 April 1998, pp. 2 11. [82] T.Noll, Carry-save arithmetic for high-speed digital signal processing, in Circuits and Systems, 1990., IEEE International Symposium on, 1-3 May 1990, pp. 982986vol.2. [83] S. Shah, A. Al-Khalili, and D. Al-Khalili, Comparison of 32-bit multipliers for various performance measures, in Microelectronics, 2000. ICM 2000. Proceedings of the 12th International Conference on, 31 Oct.-2 Nov. 2000, pp. 7580. [84] N. Vassiliadis, S.Nikolaidis, S. Siskos, and D. Soudris, The eect of the interconnection architecture on the fpga performance and energy consumption, in Electrotechnical Conference, 2004. MELECON 2004. Proceedings of the 12th IEEE Mediterranean, vol. 1, 12-15 May 2004, pp. 213216Vol.1. [85] J. S. Walther, A Unied Algorithm for Elementary Functions, in Proceedings of the Spring Joint Computer Conference, 1971. [86] X. Wang and S. Ziavras, A congurable multiprocessor and dynamic load balancing for parallel lu factorization, in Parallel and Distributed Processing Symposium, 2004. Proceedings. 18th International, 26-30 April 2004, p. 234. [87] L. Wayne and J. Allan, Parameterised oating-point arithmetics on FPGAs, in International Conference on Speech, and Signal Processing, Vol. IEEE, 2001, pp. 897900. [88] W. W. Yu and S. Xing, Fixed-point multiplier evaluation and design with fpga, in Proc. SPIE Vol. 3844, p. 153-161, Recongurable Technology: FPGAs for Computing and Applications, Aug. 1999, pp. 153161.

Apndices e

136

Apndice A e Dispositivos Lgicos o Programables


A.1. Introduccin o

Desde nales de la dcada de los 60, los equipos electrnicos digitales se e o han construido utilizando circuitos integrados (CI) que realizan funciones lgicas o bsicas, realizados en pequea o mediana escala de integracin. A medida que los a n o sistemas se volvieron ms complejos, exigiendo un nmero ms elevado de funa u a ciones lgicas, se gener la necesidad de utilizar circuitos diseados a medida que o o n slo sirven para una aplicacin. Estos circuitos espec o o cos, o ASIC (Application Specic Integrated Circuit), se producen con las especicaciones proporcionadas por el usuario. Los equipos realizados con ASICs ocupan menos espacio, son ms ables, a consumen menos energ y resultan ms baratos que los equipos equivalentes a a realizados con CI de funcin lgica bsica cuando se fabrican en grandes series. o o a Otra de las ventajas que tienen las ASICs radica en que el diseo es muy dif n cil de copiar protegiendo la propiedad intelectual. Sin embargo poseen un alto costo 137

Apndice A. Dispositivos Lgicos Programables e o

138

de desarrollo y su empleo slo se justica para volmenes de produccin muy o u o elevados. El tiempo necesario para el desarrollo y la construccin de una ASIC es o considerable ya que puede oscilar de unos meses a unos aos. n

A.2.

PLD

Un dispositivo que permiti reducir algunos costos de diseo surgi con la o n o generacin del PLD (Programmable Logic Device). Un PLD es un dispositivo o cuyas caracter sticas pueden ser modicadas y almacenadas mediante programacin. La s o ntesis de estos dispositivos esta fundamentada en el hecho que una funcin booleana cualquiera puede ser expresada como una suma de productos. o El dispositivo programable ms simple es una PAL (Programmable Array a Logic). El circuito interno de una PAL consiste en un arreglo, o matriz, de compuertas AND y un arreglo de compuertas OR. El arreglo AND es programable mientras que el OR generalmente es jo. Mediante una matriz de conexiones se seleccionan las entradas que sern conectadas al arreglo AND, cuyas salidas son a conectadas al arreglo OR y de esta manera se obtiene una funcin lgica en forma o o de suma de productos. La matriz de conexiones de un PLD es una red de conductores distribuidos en las y columnas con un fusible en cada punto de interseccin. Con estos recursos o se implementan las funciones lgicas deseadas mediante un software especial y o un programador. La s ntesis de las ecuaciones lgicas se realiza mediante el queo mado del fusible en cada punto de interseccin de los pines de entrada con las o compuertas. Posteriormente, el fusible se reemplaz por una celda CMOS elctricameno e te borrable (EECMOS) creandose as una Matriz Genrica Programable (GAL, e Generic Array Logic). Un GAL en su forma bsica es un PLD con una matriz a

Apndice A. Dispositivos Lgicos Programables e o

139

AND reprogramable, una matriz OR ja y una lgica de salida programable meo diante una macrocelda. Esta estructura permite implementar cualquier funcin o lgica como suma de productos con un nmero de trminos denido. Mediante o u e la programacin se activa o desactiva cada celda EECMOS y se puede aplicar o cualquier combinacin de variables de entrada, o sus complementos, a una como puerta AND para generar cualquier operacin producto que se desee. La celda o activada conecta su correspondiente interseccin de la y columna, y una celda o desactivada desconecta la interseccin. Las celdas se pueden borrar y reprogramar o elctricamente. e

A.3.

CPLD

Un CPLD (Complex Programmable Logic Device) extiende el concepto de un PLD a un mayor nivel de integracin ya que permite implementar sistemas o con un mejor desempeo porque utilizan menor espacio y reducen costos. Un n CPLD esta formado con mltiples bloques lgicos, cada uno similar a un PLD. u o Estos bloques lgicos se comunican entre s utilizando una matriz programable o de interconexiones (PIM). Esta matriz permite unir los pines de entrada/salida a las entradas del bloque lgico, o las salidas del bloque lgico a las entradas de o o otro bloque lgico o inclusive a las entradas del mismo (Fig. A.1). o La mayor de los CPLDs usan una de dos conguraciones para esta matriz: a interconexin mediante arreglo de celdas EECMOS o interconexin mediante mulo o tiplexores. La primera se basa en una matriz de las y columnas con una celda programable de conexin en cada interseccin. Al igual que en el GAL esta celda o o puede ser activada para conectar/desconectar la correspondiente la y columna. Esta conguracin permite una total interconexin entre las entradas y salidas o o del dispositivo o bloques lgicos. o

Apndice A. Dispositivos Lgicos Programables e o


36 I/O I/O I/O I/O 18

140

Bloque de Funciones 1 Macroceldas 1 to 18

Matriz Programable de Interconexiones

36 18

Bloque de Funciones 2 Macroceldas 1 to 18

I/O I/O I/O I/O 3 I/O/GCK 1 I/O/GSR I/O/GTS 2 or 4

Bloques I/O

36 18

Bloque de Funciones 3 Macroceldas 1 to 18

36 18

Bloque de Funciones N Macroceldas 1 to 18

Figura A.1: Diagrama en bloques de un CPLD En la interconexin mediante multiplexores, existe un multiplexor por cada o entrada al bloque lgico. Las v de interconexin programables son conectadas o as o a las entradas de un nmero de multiplexores por cada bloque lgico. Las l u o neas de seleccin de estos multiplexores son programadas para permitir que sea seleco cionada unicamente una v de la matriz de interconexin por cada multiplexor la a o cual se propagara a hacia el bloque lgico. Cabe mencionar que no todas las v o as son conectadas a las entradas de cada multiplexor. La capacidad de interconexin o se incrementa usando multiplexores de mayor tamao, permitiendo que cualquier n combinacin de seales de la matriz de interconexin pueda ser interconectada o n o con cualquier bloque lgico. o En ambos casos, la capacidad de interconexin provoca que disminuya el o desempeo del dispositivo debido al aumento de consumo de energ y el tamao n a n del componente.

Apndice A. Dispositivos Lgicos Programables e o

141

A.4.

FPGA

Los Arreglos Lgicos Programables (ALPs) o Field Programmable Gate Arrays o (FPGAs) surgieron en los 80, como solucin a las excesivas demoras del desarroo llo convencional de circuitos integrados digitales. Adems, esta tecnolog constia a tuy una alternativa a la costosa implementacin de circuitos integrados espec o o cos (ASICs). A pesar de estas importantes ventajas la utilizacin extensiva de los o FPGAs comenz recin en la dcada de los 90. o e e La arquitectura de una FPGA consiste en arreglos de varias celdas lgicas o las cuales se comunican unas con otras mediante canales de conexin verticales y o horizontales como se muestra en la Fig. A.2.
IOB IOB IOB IOB IOB IOB IOB IOB

IOB IOB

CL B

CL B

CL B

CL B

IOB IOB

IOB IOB

CL B

CL B

CL B

CL B

IOB IOB

IOB IOB

CL B

CL B

CL B

CL B

IOB IOB

IOB IOB

IOB CL B CL B CL B CL B IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

Figura A.2: Distribucin de bloques de una FPGA de Xilinx o La estructura de las celdas lgicas y las formas en que estas pueden ser intercoo nectadas, tanto salidas como entradas de la celda, var de acuerdo al fabricante. an En general una celda lgica tiene menos funcionalidad que la combinacin de suo o mas de productos y macroceldas de un CPLD. La estructura de las celdas se ve fuertemente inuida por la tecnolog utilia zada para fabricar la FPGA. Una FPGA que tiene una gran cantidad de canales

IOB

Apndice A. Dispositivos Lgicos Programables e o

142

de interconexin tiende a tener pequeas celdas lgicas con muchas entradas y o n o salidas en comparacin con el nmero de compuertas que tiene la celda. Sin emo u bargo, una FPGA que tiene una estructura pequea en canales de interconexin n o tiende a tener celdas lgicas con pocas entradas y salidas en comparacin con el o o nmero de compuertas que hay en la celda. u La tecnolog de interconexin se puede clasicar en dos tipos, antifusibles a o o RAM esttica (SRAM). Las FPGAs con gran cantidad de canales de intercoa nexin utilizan una tecnolog de antifusibles que generan una conexin cuando o a o son programados, no permitiendo la reutilizacin de la FPGA. La tecnolog de o a antifusibles es utilizada por empresas tales como Cypress [32], Actel [33] y Quicklogic [34]. Por otro lado, para FPGAs con pocos canales se realiza la interconexin con o tecnolog SRAM. La primera FPGA fue introducida por Xilinx [35] en el ao a n 1985 y era basada en RAM esttica. Esta FPGA cada vez que se aplica la tena sin de alimentacin se re-programa con la informacin que lee desde una PROM o o o (Programmable Read Only Memory) de conguracin externa. Una FPGA basao da en SRAM admite un nmero ilimitado de re-programaciones sin necesidad de u borrados previos. En la Fig. A.3 se puede observar la matriz de interconexin de o una FPGA de Xilinx. En detalle se puede observar el conjunto de los 6 transistores de paso que permiten la interconexin de las celdas. Una vez programada o la FPGA, una memoria SRAM mantiene el estado de conexin o desconexin de o o cada uno de estos transistores. A medida que se realiza la interconexin de las l o neas, comnmente denomiu nadas rutas, se van adicionando retardos en la trayectoria recorrida. Este efecto debe ser tomado en cuenta en las herramientas de programacin para diseo y o n ajuste de las FPGA, de manera que el software sea capaz de establecer las conexiones ms cortas posibles y luego realizar el trazado de esas conexiones, para a

Apndice A. Dispositivos Lgicos Programables e o

143

PSM

PSM

PSM

8 Simples 2 Dobles 3 Longs

CLB

CLB
3 Largas 2 Dobles

PSM

PSM

PSM

Transistores de paso
2 Dobles 3 Largas 8 Simples 3 Largas 2 Dobles

Figura A.3: Matriz de interconexin de una FPGA de Xilinx o as optimizar el rendimiento del dispositivo. Este mismo tipo de tecnolog es adems utilizado por Altera [36], Lucent a a Technologies [37] y Atmel [38] entre otros.

A.4.1.

Celdas Lgicas o

Otra consecuencia de los recursos de interconexin se presenta con el tamao o n de las celdas. Si las celdas lgicas son demasiado pequeas sucede que se debe o n utilizar un gran nmero de estas en cascada para poder implementar funciones u lgicas grandes. Estas celdas en general resuelven funciones elementales de dos o o tres variables (denominadas de grano no) y presentan como desventaja que cada celda lgica en cascada agrega un tiempo de retardo en la funcin implementada. o o A medida que el tamao de la celda lgica aumenta, sucede lo contrario. n o En este tipo de celdas lgicas, que resuelven funciones elementales de cuatro o o ms variables de entrada (denominadas de grano grueso), es posible implementar a funciones lgicas de varios trminos con pocas celdas lgicas. Entre las FPGA con o e o celdas de grano grueso se encuentran las de Xilinx y algunas familias de Altera, la que tambin ofrece algunas familias con celdas de grano medio. Fabricantes e como Actel ofrecen FPGAs de grano no.

Apndice A. Dispositivos Lgicos Programables e o

144

La celda bsica de una FPGA de la serie FLEX10K de Altera, denominada a 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 congurada tambin como e una LUT de 3 entradas y una lgica de acarreo rpido. El conjunto de ocho LEs o a se encuentran dispuestas en un arreglo denominado LAB (Logic Array Block). Adicionalmente cada la posee un EAB (Embeded Array Block) que puede ser congurado como un elemento de 2048x1 hasta 256x8 de memoria. Estos LAB y EAB se encuentran interconectados a travs de buses de alta velocidad de 100 a e 300 l neas por columna.
Carry-In Cascade-In

Register Bypass

Programmable Register

data1 data2 data3 data4

Look-Up Table (LUT)

Carry Chain

Cascade Chain

PRN DQ ENA CLRN

To FastTrack Interconnect

To LAB Local Interconnect

labctrl1 labctrl2 Chip-Wide Reset

Clear/ Preset Logic

Clock Select labctrl3 labctrl4 Carry-Out Cascade-Out

Figura A.4: Descripcin de un LE de una FPGA FLEX10K de Altera o Un ejemplo de una celda bsica de Xilinx denominado CLB (Congurable a 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 lgicas de cuatro o variables independientes, o bien una funcin lgica combinada (H) de 5 variables. o o Cada LUT cuenta con lgica aritmtica dedicada para la propagacin rpida de o e o a acarreo a celdas vecinas. Cada CLB cuenta adems con dos Flipops con los a cuales se pueden registrar las salidas combinacionales. Xilinx posee cinco niveles de interconexin, que va desde la conexin entre dos CLBs, a conexiones largas o o

Apndice A. Dispositivos Lgicos Programables e o

145

que atraviesan toda la FPGA. Cada CLB puede ser utilizado como un elemento de 16x2 a 31x1 de memoria.
B G-L U T
G4 G3 G2 G1 SR H1 IN F4 F3 F2 F1 F4 L ogic F 3 F unction of G F 2 F 1-F 4 F1 G4 L ogic G3 F unction of G G2 G1-G4 G1 G D CK EC SR Q Y

H -L U T
L ogic F unction H H 1 of F -G-H 1 F SR D CK EC Q X Y

F -L U T
K EC Multiplexer Controlled by Configuration P rogram

Figura A.5: Descripcin de un CLB de una FPGA XC4000 de Xilinx o En la Fig. A.6 se muestra un ejemplo de los recursos lgicos de algunas FPGAs o de Xilinx. En la misma el fabricante presenta la cantidad de celdas bsicas, el a mximo contenido de memoria que se puede generar y la cantidad de Flip-ops a que contiene cada modelo.

A.4.2.

Recursos dedicados

Los fabricantes de FPGAs generan en los dispositivos algunos recursos dedicados a mejorar el desempeo de los mismos. Ejemplo de ello se puede observar n sobre la serie XC4000 de Xilinx, la cual cuenta con l neas de comunicacin gloo bal, seleccin de velocidad de acceso de buers de salidas y lgica de acarreo para o o acelerar y condensar funciones arimticas. e Las l neas de comunicacin globales estn diseadas para distribuir seales o a n n de reloj o que poseen un gran fan out. Estas l neas poseen un retardo m nimo y pueden ser accedidas mediante la utilizacin de buers especiales. o

Apndice A. Dispositivos Lgicos Programables e o

146

Celdas Lgicas

Rango Tpico de Compuertas

Comp. Lgicas

Max. RAM Bits

Matriz de CLB

FPGA

Modelo XC4013XLA XC4020XLA XC4028XLA

1368 1862 2432 3078 3800 4598 5472 7448 238 466 950 1368 1862 238 466 950 1368 1862 432 972 1728 2700 3888 1728 2700 3888 5292 6912 10800 15552 21168 27648

13K 20K 28K 36K 44K 52K 62K 85K 3K 5K 10K 13K 20K 3K 5K 10K 13K 20K 8K 17K 30K 53K 77K 21K 32K 47K 64K 83K 130K 187K 254K 332K

10K-30K 13K-40K 18K-50K 22K-65K 27K-80K 33K-100K 40K-130K 55K-180K 2K-5K 3K-10K 7K-20K 10K-30K 13K-40K 2K-5K 3K-10K 7K-20K 10K-30K 13K-40K 6K-15K 13K-30K 23K-50K 37K-100K 52K-150K 34K-58K 72K-109K 93K-165K 146K-237K 176K-323K 282K-468K 365K-661K 511K-888K 622K-1,124K

18K 24x24 25K 28x28 33K 32x32 42K 36x36 51K 40x40 62K 44x44 74K 48x48 100K 56x56 3K 10x10 6K 14x14 13K 20x20 18K 24x24 25K 28x28 3K 10x10 6K 14x14 13K 20x20 18K 24x24 25K 28x28 22K 8x12 36K 12x18 56K 16x24 78K 20x30 102K 24x36 56K 16x24 78K 20x30 102K 24x36 130K 28x42 160K 32x48 230K 40x60 312K 48x72 406K 56x84 512K 64x96

576 784 1024 1296 1600 1936 2304 3136 100 196 400 576 784 100 196 400 576 784 96 216 384 600 864 384 600 864 1176 1536 2400

1536 2016 2560 3168 3840 4576 5376 7168 360 616 1120 1536 2016 360 616 1120 1536 2016 384 863 1536 2400 3456 1536 2400 3456 4704 6144 9600

Serie XC4000:

XC4036XLA XC4044XLA XC4052XLA XC4062XLA XC4085XLA XCS05 XCS10 XCS20 XCS30 XCS40 XCS05XL XCS10XL XCS20XL XCS30XL XCS40XL XC2S15 XC2S30 XC2S50 XC2S100 XC2S150 XCV50 XCV100 XCV150 XCV200

Serie Spartan:

Serie Virtex:

XCV300 XCV400 XCV600 XCV800 XCV1000

3456 13824 4704 18816 6144 24576

Figura A.6: Recursos lgicos de algunas FPGAs de Xilinx o

Flip-Flops

CLBs

Apndice A. Dispositivos Lgicos Programables e o

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 anco de reloj se genere sincronicamente entre todos los FlipFlops y el reloj de entrada. La velocidad de acceso de los buers de salida por defecto se encuentra limitada para minimizar transitorios en las l neas de alimentacin cuando conmutan o 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 ms rpidamente. a a A partir de la serie XC4000E, Xilinx incorpor lgica de acarreo dedicada a o o las FPGAs. En la Fig. A.7 se puede observar que la lgica de acarreo comparte o 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 realizacin de una suma. Las o salidas de tipo propagacin de acarreo se comunican entre CLBs a travs de o e rutas dedicadas de alta velocidad. Como se observa en la misma gura, 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 lgica de acarreo puede ser congurada para implementar funciones de o adicin, substraccin o ambas. Adems se pueden realizar operaciones de increo o a mento, decremento y/o funciones en complemento.

Apndice A. Dispositivos Lgicos Programables e o

148

COUT CIN DOWN LOGICA ACARREO

DIN

G G H
Y

ACARREO

G4

G3 G2
G

G1
C OUT0

DIN H G F

S/R DQ

YQ

EC

H1

ACARREO

DIN H G F

S/R DQ

XQ

F4

EC

F3 F2 F1

F H F
X

CIN UP

COUT

Figura A.7: Lgica de acarreo dedicada de una FPGA XC4000 de Xilinx o

Apndice A. Dispositivos Lgicos Programables e o

149

A.5.

Conclusiones

Desde hace ya un par de dcadas el procesamiento de seales se lleva a cabo en e n lo que se denomin DSPs (Digital Signal Processors). Estos DSPs estn basados o a en la arquitectura de un procesador capaz de ejecutar clculos mediante una unia dad MAC (Multiply/Accumulator) y multiples bancos de memoria destinados a incrementar la transferencia de datos. La ventaja de estos DSPs siempre radic en o que el procesamiento de seales utiliza intensivamente estas operaciones. n Sin embargo, a pesar de que estos DSPs son exibles en cuanto a su programacin, la arquitectura es ja y slo disponen de una o dos unidades MAC. Como o o consecuencia, el grado de ejecuciones concurrentes est limitado por este nmero, a u de manera que no permite explotar toda la potencial concurrencia del algoritmo. En contraste, en una FPGA es posible generar la lgica necesaria para exploo tar esta concurrencia. Por ejemplo, si un algoritmo requiere la ejecucin de 16 o multiplicaciones y la suma de estos productos, la FPGA puede ser congurada para la realizacin de estos 16 productos en forma simultnea. Adicionalmente, en o a la misma FPGA se pueden realizar otras tareas que no dependen de la realizacin o del clculo, tal como comunicacin con perifricos, otros clculos independientes, a o e a etc. Este tipo de ventaja motiv el inters respecto de las FPGAs para la aplicacin o e o de soluciones a medida sin perder la exibilidad de la programacin que ofrece o un PSDP o el costo y el tiempo de fabricacin de una ASIC. o

Apndice B e Sistemas numricos e


B.1. Introduccin o

La resolucin de todo algoritmo comienza por denir el tipo de las variables o con las que se debe trabajar. A partir de la seleccin de estas variables, queda o determinada el tipo de aritmtica que se va a utilizar. Los Arreglos Lgicos Proe o gramables (ALPs o FPGAs) permiten que la resolucin de un problema admita o distintas variantes en cuanto al tipo de aritmtica que se puede seleccionar. El e tipo de aritmtica seleccionado determina entonces la forma en que opera el ale gor tmo.En el presente cap tulo se mostrarn las caracter a sticas de cada uno de los sistemas y la forma en que operan cada una de ellos.

B.2.

Representacin numrica o e

La eleccin del sistema numrico de las variables a utilizar debe realizarse o e cuidadosamente. Los sistemas numricos de dividen en dos campos, punto jo y e punto otante. En general puede ser asumido que la operatoria en punto jo es mas rpida y requiere menos recursos lgicos, mientras que la operatoria en punto a o

150

Apndice B. Sistemas numricos e e

151

FORMATO NUMRICO

PUNTO FIJO

PUNTO FLOTANTE

convencional Complemento a 2 Complemento a 1 Disminuido a 1

no convencional Con digito de signo Logartmico RNS

convencional 32-Bit IEEE 64-Bit IEEE

no convencional 16, 18, 20, 24 Bit Format

Figura B.1: Esquema de formatos numricos e otante posee mayor rango dinmico y no requiere reescalar los resultados. Esto a ultimo puede resultar interesante para la resolucin de algor o tmos complicados. La Figura B.1 presenta el esquema de algunos sistemas numricos para punto jo e y punto otante. Los mismos pueden ser utilizados fuera del sistema estndar a dependiendo de los requerimientos del problema a resolver.

B.2.1.

Punto jo

En esta seccin se presentar una breve descripcin de los sistemas numricos o a o e de punto jo. Enteros sin signo Sea X un nmero binario sin signo de n bits, el rango numrico es [0, 2n 1] u e y su representacin esta dada por: o
n1

X=
j=0

xj 2j

(B.1)

donde xj es el j digito binario de X (por ej. xj [0, 1]). El digito x0 es llamado el bit menos signicativo (LSB - Least Signicative Bit) y tiene como

Apndice B. Sistemas numricos e e

152

peso relativo la unidad. El digito xn1 es el bit mas signicativo (MSB - More Signicative Bit) y posee un peso relativo de 2n1 . 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 representacin esta dada por: o X=
n1 j=0 n1 j=0

xj 2j xj 2
j

X0 (B.2) X<0

El rango de esta representacin es [2n1 , 2n1 ]. La ventaja de la represeno tacin de magnitud con signo es una simplicidad en la prevencin de desbordes o o de clculo, pero su desventaja es que cuando se adicionan estos nmeros se debe a u 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 [2n1 , 2n1 1]. En este tipo de sistema los nmeros positivos y negativos u se representan de la misma manera excepto por el bit de signo. La representacin o del nmero cero es de hecho redundante. La representacin de los nmeros en 1C u o u esta dado por: X= n 2 1
n1 j=0 n1 j=0

xj 2j xj 2
j

X0 (B.3) X<0

Este sistema numrico es utilizado para implementar aritmtica de mdulo e e o 2n 1 sin cambios en la aritmtica. e

Apndice B. Sistemas numricos e e Complemento a 2 (2C)

153

Un sistema de n bits en 2C puede representar enteros binarios con signo en el rango [2n1 1, 2n1 1]. Su representacin esta dada por: o X= n 2
n1 j=0 n1 j=0

xj 2j xj 2
j

X0 (B.4) X<0

La representacin de los nmeros en 2C es una de las mas populares, esto es o u debido a que con la misma es posible sumar varios nmeros con signo, y al nal u el resultado pertenece al rango de n bits. De este modo se puede ignorar cualquier desborde numrico en la aritmtica. Por ejemplo, si se adicionan dos nmeros de e e u 3 bits de la siguiente manera:

310 210 110

1112C 1102C 1 0012C

el desborde puede ser ignorado. La ventaja de esta representacin radica en o que todos los clculos son 2C. Aun en el caso en que haya clculos intermedios, a a los mismos pueden no estar correctamente representados pero el resultado nal es correcto. Esto se puede apreciar si se realiza el clculo 2+23, el resultado parcial a de 010 + 010 = 100 (410 ), pero el resultado de 100 011 = 100 + 101 = 0012C es correcto. Este sistema numrico es utilizado para implementar aritmtica de e e mdulo 2n sin cambios en la aritmtica. o e Disminuido a 1 (D1) El sistema disminuido a 1 (D1) es un sistema polarizado. Los nmeros positiu vos son, comparados con 2C, disminuidos en 1. El rango para un sistema D1 de

Apndice B. Sistemas numricos e e

154

N bits es [2n1 , 2n1 ], excluyendo el cero. La representacin de este sistema o es: X=


n1 j=0 n1

xj 2j 1

X0 X<0 X=0 (B.5)

n j 2 j=0 xj 2 2n

Para adicionar dos nmeros D1 u

310 210 110 Carry 110 1

010D1 110D1 1 000D1 0D1 000D1

se puede observar que se debe complementar y adicionar el bit de carry para lograr un resultado correcto. Este sistema numrico es utilizado para implementar e aritmtica de mdulo 2n + 1 sin cambios en la aritmtica. e o e

B.2.2.

Punto otante

Los sistemas de punto otante fueron desarrollados para proveer alta resolucin sobre un gran rango dinmico. A menudo estos sistemas pueden resultar una o a solucin cuando los sistemas de punto jo fallan debido a su limitada precisin y o o rango dinmico. Este formato numrico se encuentra estndarizado por la norma a e a IEEE 754 [18]. Esta norma establece criterios sobre diversos aspectos del diseo: n codicacin interna de los nmeros a nivel de bits (formato numrico), tcnicas o u e e de redondeo, tratamiento de excepciones, etc.

Apndice B. Sistemas numricos e e

155

Los sistemas de punto otante respecto al tratamiento de su contraparte en punto jo poseen un costo importante en cuanto a la velocidad y complejidad de clculo; cuestin que ha llevado a diversos autores a la utilizacin de esta a o o representacin a medida. Una palabra en punto otante se representa de la o siguiente manera:

Signo Exponente entero Mantisa Sx e m

Algebraicamente, un nmero en punto otante se representa: u

X = (1)S 2ebias 1.m donde S, bit de signo.

(B.6)

e, exponente: Este campo se representa utilizando un desplazamiento (bias) bias = 2e1 1. m, mantisa: Es la parte fraccional de 1.m. Norma IEEE 754 Los parmetros para precisin simple y doble que determina la norma IEEE a o 754 se pueden observar en la Tabla B.1.

Apndice B. Sistemas numricos e e

156

Tabla B.1: Punto otante estndar. a Simple Doble Longitud de palabra 32 64 Exponente 8 11 Mantisa 23 52 Bias 127 1023 38 Rango Mximo a 3,4028 10 1,7977 10308 Rango M nimo 1,1755 1038 2,2251 10308 Codicaciones con signicado especial Innito (e=255, m=0): representan cualquier valor de la regin de overow o NaN (Not-a-Number) (e=255, m>0): se obtienen como resultado de operaciones invlidas a Nmero denormalizado (e=0, m>0): es un nmero sin normalizar cuyo bit u u impl cito se supone que es 0. Al ser el exponente 0, permiten representar nmeros en las regiones de underow. El valor del exponente es el del exu ponente ms pequeo de los nmeros no desnormalizados: -126 en precisin a n u o simple y 1022 en doble. Cero (e=0, m=0): nmero no normalizado que representa al cero (en lugar u de representar al 1) Excepciones: Operacin invlida: , 0 , 0 0, , x mod 0, o a x < 0, x = Inexacto: el resultado redondeado no coincide con el real Overow y underow Divisin por cero o x cuando

Apndice B. Sistemas numricos e e Formato a medida

157

El sistema en punto otante, como se mencion posee un costo en cuanto a o velocidad y complejidad de clculo. Es por esto que muchos autores han generado a con el tiempo el sistema de punto otante a medida. El formato de palabra que se utiliza depende del rango dinmico y la resolucin que se desea. En la Tabla a o B.2 se pueden observar algunos ejemplos de estos formatos. Tabla B.2: Punto otante a medida.
16 7 8 63 18 7 10 63

Longitud de palabra Exponente Mantisa Bias RangoMximo a RangoM nimo

1.84111019 2.17691019

1.84381019 2.17051019

3.40201038 1.17611038

20 8 11 127

1.15791077 3.45471077

24 9 14 255

B.2.3.

No-convencionales

Listema numrico logar e tmico (LNS) El sistema numrico logar e tmico (LNS) es anlogo al sistema de punto otante, a con una mantisa de punto jo y un exponente fraccional. Un nmero en LNS es u representado por:

X = rex

(B.7)

donde r es la ra del sistema, y ex es el exponente LNS. El formato LNS z consiste en un bit de signo para el nmero y otro para el exponente, un exponente u entero de I bits y F fraccionales bits de precisin. El formato en forma grca o a es:

Apndice B. Sistemas numricos e e

158

Signo Signo de exponente Sx Se

Exponente entero Exponente fraccional I F

El LNS como el sistema de punto otante posee una precisin no uniforme. o Pequeos valores de X son resueltos con gran precisin, miemtras que los grandes n o valores poseen una precisin pobre. o La atraccin histrica del LNS se encuentra en la habilidad para implementar o o ecientemente la multiplicacin, la divisin y la potenciacin. Por ejemplo, el o o o 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 divisin y otras operaciones se resuelven de manera similar. La o deventaja de este sistema es la complejidad con que se deben resolver la adicin o y la substraccin. Las mismas se basan en la siguiente operatoria, sonde se asume o que A > B.

C = A + B = 2eA + 2eB = 2eA 1 + 2eB eA = 2eC

Apndice C e Multiplicacin Secuencial o aplicada al Control de Movimiento


C.1. Introduccin o

En sistemas de control de posicin existen aplicaciones en las cuales se requiere o la ejecucin de una accin de control sobre una mquina en un per o o a odo de tiempo que depende inversamente de la mxima velocidad que se desea imponer sobre a la misma. Esta situacin lleva a la necesidad de disponer de algoritmos muy o rpidos y ecientes que puedan realizar el procesamiento en tiempos muy breves. a Estos algoritmos donde se requiere alta velocidad de procesamiento constituye una aplicacin ideal para la implementacin hardware de los mismos en FPGA. o o Tal es el caso de la aplicacin realizada sobre el control de posicin de un o o Acelerador Lineal de Part culas, cuyas caracter sticas de gran precisin en la o posicin, y de gran cantidad de motores asociados, obliga a la utilizacin de o o procesamiento de alt sima velocidad, con la mayor econom de recursos lgicos a o 159

MS aplicada al Control de Movimiento

160

en las FPGAs. Control de posicin del CLIC o El control de posicin del Compact Linear Collider (CLIC), acelerador lineal o de part culas del Centro Europeo de Investigacin Nuclear (Centre Europeeno ne pour la Recherche Nucleaire), requiere en forma intensiva el posicionamiento preciso y rpido de motores paso a paso, por lo que es necesario utilizariles de a velocidad que se ajusten a la dinmica de la carga a n de garantizar movia mientos sin prdidas de pasos. La principal ventaja tecnolgica del CLIC es la e o concentracin del haz de part o culas en una seccin mucho ms reducida que en o a los aceleradores circulares [39]. Esto permite obtener part culas de mayor energ a pero, como contrapartida existen serias exigencias en cuanto a la alineacin del o acelerador respecto de su haz de part culas. Este sistema posee una especicacin o de la desviacin mxima de 10 micrones, a lo largo de los 24000 m de longitud del o a acelerador [40]. Para lograr tal especicacin es necesario un control de posicin o o capaz de compensar perturbaciones y desviaciones con una alt sima presicin [41]. o El sistema mecnico del CLIC esta compuesto por mdulos de 1.4 mts. de lona o gitud. Cada mdulo posee dos aceleradores con un girder y un quadrupole o por acelerador. Los girders son elementos que soportan mecnicamente las cavia dades del acelerador mientras que los quadrupoles son electroimanes que tienen por objeto la concentracin de los haces de part o culas. La Fig. C.1 muestra un esquema de la distribucin de los motores que requieren los girders y quadrupoles. o El sistema de alineacin del CLIC consiste en un conjunto de sensores que o detectan la posicin de las cavidades del haz. Luego de un adecuado procesao miento de la informacin, se obtiene el movimiento que se debe operar sobre los o elementos del acelerador a travs de un conjunto de motores paso a paso. e

MS aplicada al Control de Movimiento

161

Figura C.1: Esquema de motores de una seccin del CLIC. o El control de alineacin del CLIC se encarga de procesar seales y accionar o n mltiples motores paso a paso simultneamente utilizando perles de velocidad u a con una alta dinmica y gran precisin [42]. a o

C.2.

Accionamientos paso a paso

Un accionamiento paso a paso est compuesto por un controlador digital de a movimientos, un driver de potencia y el motor paso a paso, Fig. C.2. El controlador digital de movimientos genera un perl de movimiento, t picamente un perl de velocidad, en funcin de parmetros tales como velocidad m o a nima, mxima, a aceleracin, cantidad de pasos, etc. Una vez establecido el perl de velocidad, el o controlador de movimiento env los pulsos de accionamiento al driver del moa tor. El espaciamiento entre los pulsos de accionamiento determina la velocidad instantnea del eje y se lo conoce como temporizacin. a o La generacin de un perl de velocidad consiste en el clculo de la temporizao a cin requerida acorde con los parmetros suministrados. La generacin de estos o a o perles puede ser del tipo on-line u o-line.

MS aplicada al Control de Movimiento

162

Generador de perfil de movimiento

Indexador

Controlador

Motor paso a paso

Figura C.2: Sistema de control de movimiento de motores de accionamiento incremental.

C.2.1.

Generacin de perles de velocidad O-line o

En el accionamiento o-line el perl de velocidad es calculado previamente al desarrollo del movimiento [43] [44]. El perl de velocidad y la temporizacin o 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 timers y de memoria proporcional a la extensin y precisin de los desplazamientos; o o adems son poco exibles. a

C.2.2.

Generacin de perles de velocidad On-line o

Algoritmos convencionales En cuanto a los perles on-line, los mismos son generados por un sistema inteligente que realiza la operacin de clculo mediante la utilizacin de un alo a o goritmo. La Fig. C.3 muestra un diagrama de ujo de un algoritmo bsico. En a este diagrama se distinguen dos bloques principales, la construccin de Vr (k) en o el cual se genera el perl de velocidad y el clculo de t(k), en el cual se calcula a el per odo de tiempo entre el paso actual y el prximo. La construccin de Vr (k) o o se efecta a partir de parmetros que caracterizan al perl, tal como velocidad u a inicial (Vmin = Vr (0)), velocidad mxima (Vmax ), aceleracin (a1 ) y desaceleracin a o o

MS aplicada al Control de Movimiento

163

Generacin de pulsos

k=1

Construccin de Vr(k)

k=k+1

Dtk-1

Clculo de Dtk

Dtk

Accionamiento de un paso

k=N ?

no

si

Fin

Figura C.3: Diagrama de ujo 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 perl de velocidad trapezoidal.
Vmax aceleracin desaceleracin

Vmin t

Figura C.4: Perl de velocidad trapezoidal. La Ec. (C.2) muestra el clculo de t(k) de un algoritmo t a pico para el k-esimo paso. 1 Vr (k) 2
2 Vmax 2 (N k 1) a + 2 Vmax 2 (N 1) a

t(k) = t(k) =

(C.1) (C.2)

Este algoritmo involucra divisiones y ra lo que conlleva un elevado tiempo de ces clculo para obtener t(k). El tiempo de clculo, Tc , impone una limitacin a la a a o velocidad debido a que el per odo entre pasos no puede ser inferior a Tc . De este modo, la velocidad mxima, expresada en pasos por seg., est limitada por la Ec. a a (C.3). Vmax = 1 Tc (C.3)

MS aplicada al Control de Movimiento Algoritmos iterativos

165

Los algoritmos convencionales poseen un Tc elevado y por lo tanto estos algoritmos 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 iterativamente 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. 1 t(k)

Vr (k) =

(C.4)

Si la Ec. (C.4) se verica, entonces se ejecuta un nuevo paso. En caso contrario nk se incrementa y se repite el proceso. La resolucin de t(k) en la Ec. (C.4) es Tc . En consecuencia estos algoritmos o trabajan con intervalos discretos y la Ec. (C.4) se reescribi como la Ec. (C.5). o 1 t(k)

Vr (k)

(C.5)

Adicionalmente, con el objetivo de reducir el Tc , se evit el cociente, utilizando o la Ec. (C.6). Vr (k) t(k) 1 (C.6)

Si bien este algoritmo presenta la limitacin expresada por la Ec. (C.3), el Tc o mucho menor debido a la menor complejidad del clculo. a Una desventaja del algoritmo iterativo es la existencia de valores discretos de Vr (k) que crea un efecto de cuantizacin en la velocidad. Observando la Ec. (C.4) o y considerando que nk es un nmero entero positivo, Vr (k) toma valores: u

MS aplicada al Control de Movimiento

166

V max ; nk = 1 Vmax ; nk = 2 1 1 2 = = Vr (k) = . tk nk Tc . . . . . Vmax ; nk = K K

(C.7)

Como consecuencia, la velocidad mxima del motor, Vmax, no slo queda a o limitada por
V max 2 1 Tc

sino que adems el perl excursiona a saltos V max a


V max , 4

V max , 2

V max V max , 3 3

etc.

El perl de velocidad es alterado por esta cuantizacin ya que se producen o discontinuidades en la velocidad con la consiguiente dicultad del motor frente a esta exigencia de aceleraciones innitas, como puede verse en la Fig. C.5 donde se ilustra el perl ideal versus el perl de velocidad cuantizado.

v(t)
Vmx

nmx = 1

Vmx/2

nmx = 2 nmx = 3 nmx=4 nmx=5 nmx=6 nmx=7 t0 t1 t2 t3

Vmx/3 Vmx/4 Vmx/5 Vmx/6

Tc t4 t5

i(k)

k
Figura C.5: Perl de velocidad, deseado, cuantizado y la temporizacin resultante. o La Fig. C.6 muestra los perles de velocidad reales obtenidos mediante el algoritmo iterativo ejecutado en un DSP, donde se desarroll el desplazamiento con o

MS aplicada al Control de Movimiento

167

una velocidad mxima de 5700 pasos . Se observan saltos de velocidad importantes a s debido al efecto de cuantizacin. o

Figura C.6: (Izquierda) Posicin y velocidad con el algoritmo iterativo. (Derecha) o Detalle del perl de posicin y velocidad del perl iterativo o Se puede concluir que, para reducir el problema de la cuantizacin, es muy imo portante reducir apreciablemente los tiempos de procesamiento. De esta manera se podr obtener velocidades mucho mayores an

C.3.

Generacin de perles de velocidad meo diante FPGA

A n de reducir los tiempos de procesamiento se implement en hardware (en o 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 generacin del perl trapezoidal se constituye a partir de los datos de la o aceleracin, velocidad m o nima, mxima, y nmero de pasos. La lgica interna de a u o seleccin toma la decisin en base a estos parmetros y de este modo ejecuta el o o a perl de referencia que el motor intentar seguir. a
Controlador Digital
Generador del Perfil de velocidad de referencia

CONSTANTE=1/Tc
DRIVERS DE POTENCIA

VR
MULTIPLICADOR

VR x nk

COMPARADOR VR x nk 1/Tc

Interfaz de Accionamiento
MOTOR PASO A PASO

RELOJ Tck

nk
CONTADOR

Figura C.7: Arquitectura hardware del algoritmo de generacin de perl de veloo cidad. La implementacin hardware del algoritmo permite reducir sustancialmente o el Tc aprovechando la capacidad de las FPGAs de realizar todos procesos en simultneamente, a diferencia de la ejecucin secuencial propia de un DSP. Es a o decir, el algoritmo implementado en hardware efecta en forma independiente, la u generacin del perl de velocidad de referencia y el clculo de la Ec. (C.6). De o a este modo, se puede inferir que el Tc depende fundamentalmente de la tarea que mayor demanda de tiempo requiere. La construccin del perl de velocidad es una tarea que se resume a una cuenta o incremental que inicia en Vmin , alcanza el valor Vmax en un per odo de tiempo t1 , una vez que se alcanz este valor permanece un per o 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 se hace mayor o igual que
1 , Tc 1 . Tc

Cuando el producto

se genera un pulso que genera un nuevo paso del

motor y adicionalmente reinicia la cuenta del contador. Por otro lado, la implementacin hardware de la Ec. (C.6) involucra el proo 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 perl 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 otante en FPGA, es ms eciente el uso magnitudes enteras. a A n de operar con enteros y reducir la cantidad de multiplicaciones, se propone una variante que consiste en reescribir la Ec. (C.6) como 1 Tc

Vr (k) nk
1 Tc

(C.8)

en la cual

es un valor conocido y constante. Esta simplicacin reduce las o

operaciones a slo una multiplicacin, va a imponer el per o o odo Tc .

C.3.1.

Implementacin del producto Vr nk o

En cuanto al producto Vr nk , la solucin inmediata consiste en un Multio plicador Paralelo. Esta alternativa presenta como ventaja el m nimo retardo que imponen las compuertas lgicas. o Considerando que las FPGAs poseen recursos dedicados para la ejecucin de o adiciones por propagacin de acarreo, la opcin inmediata es un multiplicador o o 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 cuanticar el Tc requerido por este multiplicador, se implement el mismo en una FPGA XC4006E-4 de Xilinx, que es la misma tecnolog o a que utiliza el CLIC en el control de alineacin del acelerador. o El multiplicador Ripple Carry para una longitud de palabra de 16 bits, que corresponde a una velocidad mxima seleccionable de 65535 pasos . En estas condia s ciones se pudo ejecutar u producto en un Tc = 92, 5ns. De esta forma, la velocidad mxima terica que se puede desarrollar es: a o pasos 1 = 10, 81x106 Tc s

Vmax

(C.9)

obteniendose una cuantizacin del perl de velocidad de solo el 0.6 % de la mxima o a velocidad seleccionable. Si bien el Tc obtenido es ideal para la aplicacin, este multiplicador utiliz el o o 96,5 % de los recursos lgicos de la FPGA, haciendo imposible la utilizacin de o o otros bloques para la ejecucin del algoritmo. La Fig. C.8 muestra el consumo de o recursos lgicos del multiplicador implementado. o

Figura C.8: Implementacin del multiplicador Ripple Carry en una FPGA o XC4006E.

MS aplicada al Control de Movimiento

171

Otra opcin, tal como el multiplicador optimizado en area propuesto por Xio linx [21], permite ejecutar una multiplicacin de 16 en un Tc = 89ns, inferior o incluso que con el multiplicador Ripple Carry, pero con un consumo de recursos lgicos de aproximadamente un 83,2 %. La Fig. C.9 muestra el consumo de o recursos lgicos de este multiplicador implementado. o

Figura C.9: Implementacin de un multiplicador optimizado en area de Xilinx en o una FPGA XC4006E. Para solucionar este problema se propone la utilizacin de Multiplicadores Seo cuenciales, que permiten realizar un producto con un m nimo consumo de recursos lgicos. o En particular se considera la utilizacin de un SMSR (ver. Seccin 3.3.1), en o o el cual la ejecucin del producto se pudo realizar en Tc = 229ns para un m = 16. o En consecuencia, la velocidad mxima terica que obtenida es: a o pasos 1 = 4,36x106 Tc s

Vmax

(C.10)

Adems, este esquema permiti la ejecucin del algoritmo iterativo con saltos a o o de velocidad de slo 1,46 % de la mxima velocidad. Si bien este Tc es mayor o a que el obtenido con un Multiplicador Paralelo, el consumo de recursos lgicos del o

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 lgicos permite controlar multiples motores. o

C.4.
C.4.1.

Resultados experimentales
Modo de funcionamiento en pasos

Con el objetivo de evaluar el sistema propuesto, se implement el controlador o digital en una FPGA XC4006-3 de Xilinx, tecnolog utilizada en los ensayos del a CLIC. Este dispositivo posee una capacidad de 6000 puertas de lgicas y puede o funcionar con un reloj de hasta 80 MHz. En los experimentos se utiliz un motor h o brido cuyas caracter sticas son: reo solucin angular 400 paso , momento de inercia 13107 kg m2 y torque de retencin o rev Tret = 33 107 N m. La medicin de la posicin fue realizada mediante un encoder optico increo o mental ELAP-E521, cuya resolucin es 1024 pulsos por revolucin y su momeno o to de inercia de 2,5 106 kg m2 . El acople fue realizado con un acople elstico a HELICAL-WA25 con un momento de inercia de 2,3 106 kg m2 . La curva de la posicin fue obtenida mediante la lectura de la seal del encoder o n a travs de un contador de tiempo de alta resolucin. El perl de la velocidad fue e o calculado o-line, realizando la derivacin numrica de los datos de posicin. o e o El multiplicador SMSR utiliz un reloj sincrnico de 40 MHz, resultando un o o Tc de 400 ns, para 16 bits . Se adopt un Tclk = 800 ns, que es despreciable en o relacin a la velocidad del motor. o Se aplic al motor paso a paso un desplazamiento de 12000 pasos mediante o un perl trapezoidal con las siguientes caracter sticas: Vm = 500 pasos , Vmx = n a s

MS aplicada al Control de Movimiento 6000 pasos y aceleracin mxima amx = 4200 pasos . o a a s s2

173

Los perles resultantes de velocidad y posicin se muestran en la Fig. C.10. o El bajo tiempo de procesamiento, Tc , permiti un perl casi continuo, con velocio dades mucho mayores que las generadas por algoritmos estndar implementados a en software. Debido a las caracter sticas del motor incremental el perl atraviesa zonas de resonancia, tal como se predice en [46], [47], [48] y [49]. Este efecto, que se observ en la regin de bajas velocidades, no logr sacar de sincronismo a las o o o mquinas ya que las mismas se encuentran en la zona de trabajo por debajo de a la curva de pull-out 1 .

Figura C.10: Perl de velocidad y posicin del accionamiento controlado por un o pasos rev sistema basado en FPGA. 15 s 6000 s
Previo a la obtencin de resultados experimentales, los perles son simulados para vericar o que puedan enfrentar la inercia impuesta.
1

MS aplicada al Control de Movimiento

174

Adicionalmente, se aplic un perl de velocidad con caracter o sticas ms exigena tes, velocidad mxima de 24000 pasos y una aceleracin aproximada de 20000 pasos . a o s s2 En la Fig. C.11 se muestra el perl obtenido a las altas velocidades con paso completo, donde se aprecia la continuidad en toda la gama efectiva de la velocidad.

Figura C.11: Perl de velocidad del accionamiento controlado por un sistema basado en FPGA. 62,5 rev 25000 pasos s s

C.4.2.

Modo de funcionamiento en micropasos

El modo micropaso consiste en el accionamiento del movimiento del motor incremental en fracciones de un paso. De esta manera se logra una menor vibracin o y ruido audible, y sobre todo una mejor resolucin de posicin (en fracciones 1/n o o del paso original). En cuanto a la generacin del perl de velocidad, la dicultad o

MS aplicada al Control de Movimiento

175

estriba en que se debe ejecutar el algoritmo en tiempos muy cortos, correspondientes al tiempo que transcurre entre micropaso y micropaso. Se realizaron ensayos en modo micropaso, el los que se utiliz un motor SLO o SYN KML093F14C5 cuyas caracter sticas son: resolucin angular 200 paso , torque o rev de retencin Thold = 816 N cm y momento de inercia de 3,32 kg cm2 . Los valores o de la posicin fueron obtenidos a travs de un encoder optico incremental con o e una resolucin de 500 pulsos por revolucin. El driver, con capacidad de manejo o o de micropasos, es un SLO-SYN MD808, congurado para producir 2000 pulsos por revolucin. Se aplic un perl de alta velocidad con Vm = 500 pasos , Vmx = o o n a s 50000 pasos y una aceleracin mxima amx = 5000 pasos . El Tc adoptado para esta o a a s s2 aplicacin fue de 400 ns de manera de producir saltos de velocidad mximos de o a 1000 pasos en Vmax , de manera que el salto sea menor que el 5 % Vmx . Este efecto a s puede observarse en el plateau del perl en la Fig. C.12. Los resultados relevados demuestran que el sistema alcanz muy altas veloo cidades, inalcanzables con algoritmos estndares ejecutados por un procesador. a Sin embargo, la necesidad de realizar perles de velocidad en modo micropaso requiere una mayor velocidad de clculo, aunque sin el sacricio de recursos lgicos a o que implica la utilizacin de un multiplicador paralelo. o Para lograr la mayor velocidad de clculo se propone utilizar un nuevo tipo de a multiplicador. El multiplicador secuencial de sumas consecutivas (SMSC) es una variante de la multiplicacin secuencial optimizada para realizar un producto en o la mitad de tiempo que el SMSR (ver Seccin 3.3.3). o Se realiz un nuevo ensayo con el SMSC. El sistema de driver-motor ensayado o es el mismo que se utiliz en las experiencias en modo micropaso. El perl de veloo cidad aplicado presenta las siguientes caracter sticas: velocidad Vmx = 72000 pasos , a s 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: Perl de velocidad del accionamiento utilizando el modo de micropasos. Vmax . La Fig. C.13 muestra el perl de velocidad resultante. Como en las mediciones anteriores puede observarse el efecto de cuantizacin, aunque reducido, o tanto en las rampas como en el plateau del perl.

MS aplicada al Control de Movimiento

177

Figura C.13: Perles de posicin y velocidad para un sistema de accionamiento o en modomicropaso.

MS aplicada al Control de Movimiento

178

C.5.

Conclusiones

Se present una implementacin hardware, utilizando FPGA, de los algorito o mos iterativos de generacin de perles de velocidad. El uso de esta tecnolog o a permiti reducir sustancialmente el tiempo de procesamiento equivalente frente o al desarrollado por cualquier procesador rpido. Como consecuencia se redujeron a apreciablemente los saltos de velocidad que se observaban en los perles de velocidad on-line generados por software. Esto a su vez, posibilit llegar a velocidades o del motor mucho mayores dado que se eliminaron las exigencias de aceleracin o propias de los saltos de velocidad. Gracias a las arquitecturas SMSR y SMSC se consigui un reducido consumo o de recursos lgicos para cada controlador digital, por lo que se pueden accionar o multiples motores simultneamente. Esta ventaja hace al sistema muy convea niente ya que permite incrementar an ms el nmero de motores recurriendo u a u a FPGAs de mayor capacidad. Esto fue clave para su aplicacin extensiva en el o control de posicin del CLIC. o La idea propuesta, evaluada experimentalmente, posibilita la operacin de o motores paso a paso a muy altas velocidades, lo que antes estaba vedado debido a las dicultades tecnolgicas de los procesadores para atender con rapidez el o env de la consigna de nuevos pasos a la mquina. o a

Apndice D e Publicaciones
D.1. Introduccin o

Los trabajos que se presentan a continuacin resumen la investigacin realizada durante los o o ultimos aos. n

Multiplicadores secuenciales en FPGA: Evaluacin y Comparacin de o o Parmetros a


En este trabajo se presenta el estado del arte de multiplicadores secuenciales orientado a su implementacin en FPGA. Se presentan estimaciones de consumo de recursos lgicos y de o o 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 propuestas, en las cuales se puede vericar la importante reduccin de los recursos manteniendo o un aceptable desempeo en cuanto a velocidad. n

179

Apndice D. Publicaciones e Floating Point Multipliers with Reduced FPGA Area

180

En este trabajo se realiz un estudio comparativo del multiplicador secuencial para difeo rentes tecnolog de FGPA. as

Performance evaluation of Floating Point Multipliers


En este trabajo se plasmaron algunos de los resultados de la aplicacin del SM a punto o otante 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 Sequential Multiplier


En este trabajo se presenta una estructura de multiplicadores de punto otante parametrizable basada en una variante del multiplicador secuencial de sumas consecutivas que con una sustancial reduccin de los recursos lgicos utilizados mejora el desempeo del multiplicador en o o n velocidad. Se realizaron ensayos donde se evala la arquitectura propuesta y se la compara con u los resultados previos obtenidos.

Novel Stepper Motor Controller Based on FPGA Hardware Implementation


En esta publicacin se present un nuevo sistema de generacin de perles de velocidad o o o basado en FPGA, el cual permite que las mquinas incrementales puedan utilizarse en todo el a rango de velocidades, an a altas velocidades. Se presentan los ensayos en los cuales se demuestra u que el controlador basado en FPGA posee un desenvolvimiento notorio, lo que permiti llegar o 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 implementacin de multiplicadores ms veloces a n de reducir el tiempo de procesamiento del algoritmo o a y con un consecuentemente aumento de las velocidades alcanzadas por el motor incremental.

Multiplicadores secuenciales en FPGA: evaluacin y o comparacin de parmetros o a


M. Funes, D. Carrica, M. Benedetti, P. Donato
Laboratorio de Instrumentacin y Control o Universidad Nacional de Mar del Plata, Argentina mfunes@fi.mdp.edu.ar **

Resumen En este trabajo se presenta el estado del arte de multiplicadores secuenciales orientado a su implementacin en FPGA. Se presentan estimaciones o de consumo de recursos lgicos y de comportamiento temporal que permiten o contrastar las caracter sticas de los multiplicadores presentados.

1.

Introduccin o

La multiplicacin es una de las operaciones escenciales en el procesamiento aritmtio e co. Adicionalmente, es una de las tareas que ms recursos lgicos consume. Dcadas a o e atrs cuando la arquitectura del multiplicador era estudiada para su implementacin a o en circuitos de procesadores o unidades aritmticas de clculo, el consumo de recursos e a circuitales era aceptado por la necesidad de realizar los clculos ms rpidamente. a a a Actualmente, la utilizacin de las FPGAs permite el diseo personalizado de siso n temas de procesamiento, lo cual ha masicado la aplicacin de los mismos. La impleo mentacin en una FPGA de una unidad de clculo con un gran consumo de recursos o a lgicos obliga a utilizar una FPGA de gran tamao, lo que implica un mayor costo de o n produccin. Con el objeto de reducir el consumo de recursos lgicos Funes et. al [1] o o propusieron la utilizacin del esquema de multiplicacin Shift and Add [2], [3] , deo o nominado tambin Multiplicador Secuencial (SM), para sistemas basados en FPGA. e Este multiplicador ejecuta un producto en forma secuencial y se caracteriza por utilizar una cantidad reducida de recursos lgicos. Como contra-partida por su entidad o secuencial, 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 mayor consumo de recursos lgicos [6]. o En este trabajo se explicitan las ecuaciones que determinan los parmetros caraca ter sticos que describen el comportamiento de multiplicadores secuenciales implementables en FPGA. Adicionalmente se presenta un estudio comparativo de los multiplicadores 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 Promocin Cientica y Tecnolgica (BID o o 1201/OC-AR 2002), Argentina

2.

Multiplicadores secuenciales
Dados dos operandos, un multiplicando X =
n1 j=0

xj 2j , y un multiplicador Y =

n1 j=0

yj 2j , el Cuadro 1 muestra el proceso de multiplicacin para n = 4. El SM realiza el o

producto de este cuadro en forma secuencial, acumulando un producto parcial yi X (i = 0, 1, 2, 3) al resultado acumulado de la iteracin anterior con el debido desplazamiento o de un bit entre ambos. Cuadro 1.
x3 y3 s03 s13 s12 + s23 s22 s21 s33 s32 s31 s30 p7 p6 p5 p4 p3 x2 y2 s02 s11 s20 x1 x0 y1 y0 s01 s00 y0 X20 s10 y1 X21 y2 X22 y3 X23 p2 p1 p0 P

Existen dos versiones dependiendo del sentido de los valores a acumular, con desplazamiento a la izquierda con desplazamiento a la derecha. En la multiplicacin con o o desplazamiento a la izquierda se debe contar con un acumulador de longitud 2n bits. En este caso los productos parciales yj X son adicionados al resultado acumulado con un desplazamiento de un bit (21 ) hacia la izquierda, respecto al anterior. El algoritmo se puede analizar a partir de la Ec. (1), donde p(j) es el producto parcial de la iteracin o j. p(j + 1) = 2p(j) + y(n1)j X con p(0) = 0 (1) En la multiplicacin con desplazamiento a la derecha los productos parciales yj X son o adicionados al resultado acumulado con un desplazamiento de un bit (21 ) hacia la derecha respecto al anterior. El algoritmo se observa en la Ec. (2). p(j + 1) = (p(j) + yj X2n )21 con p(0) = 0 (2) Debido a que el desplazamiento a la derecha genera un primer producto parcial multiplicado por 2n se debe pre-multiplicar y0 X por 2n para compensar el efecto del desplazamiento. Esta pre-multiplicacin se puede efectuar fcilmente, almacenando o a p(j) en el segmento ms signicativo de un registro de 2n bit. a La implementacin hardware del algoritmo de la multiplicacin con desplazamiento o o a la derecha se puede observar en la Fig. 1. El multiplicador Y y la acumulacin de o los productos parciales p(j) son almacenados en registros de desplazamiento. El bit yj del multiplicador es el bit menos signicativo existente en el registro Y en la iteracin o j. El mismo es utilizado en el producto yj X seleccionando 0 o X en la suma. El multiplicador SM requiere n iteraciones para la ejecucin del producto y una o iteracin previa para la carga de los operandos. Por lo tanto este multiplicador puede o realizar un producto en un per odo T = (n + 1)TCK , donde n es la longitud de los operandos y TCK el per odo de reloj aplicado sobre el multiplicador.

desplazamiento
N N-1

desplazamiento acarreo
2N-1 N

Producto

N-1

Parcial

ADD

N N

N-1

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 del multiplicador SM de desplazamiento a la derecha. El objetivo del SMSR es la simplicacin del esquema de multiplicacin evitando la carga paralelo de los registros o o del multiplicador y del multiplicando. El SMSR no carga los operandos, por lo que no existe 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 observar un esquema del SMSR, el cual utiliza un sumador de n bits y realiza la seleccin de o los bits yj mediante un multiplexor de n entradas.
N

desplazamiento acarreo
2N-1 N

Producto

N-1

Parcial

ADD

N N

MUX

Control

Figura 2. SMSR. El control del multiplicador, que no se muestra en esta gura, consiste en un contador que ejecuta la seleccin de los yj y que a su vez mantiene el nmero de o u iteracin realizada. La inicializacin del multiplicador se realiza limpiando el registro o o Producto Parcial y el contador, y es requisito para este multiplicador que los datos se encuentren presentes durante todo el ciclo de la multiplicacin, tal como en un o multiplicador paralelo tradicional. 2.2. Multiplicador SM de base 4 o superior

Esta variante de multiplicacin secuencial, reduce la cantidad de iteraciones en o base a la representacin numrica. o e

Un nmero binario de n-bits puede ser representado como un nmero de n -d u u 2 gitos de base 4 n -d o 3 gitos de base 8. De este modo, es posible realizar un producto en menor tiempo de clculo si se ejecuta una multiplicacin de un d a o gito por vez en lugar de hacerlo bit a bit. La expresin general para este tipo de multiplicacin es la de la Ec. (3): o o p(j + 1) = (p(j) + yj Xrn )r1 con p(0) = 0 (3)

En el caso de la multiplicacin en base 4, se debe conformar el producto parcial [yj+1 o yj ]2 X y adicionarlo al resultado de la iteracin anterior. Mientras que en la multio plicacin de base 2 cada producto parcial est representado por el valor 0 o por una o a versin desplazada de X, en la multiplicacin de base 4 el producto parcial toma los o o valores 0, X, 2X 3X. El mtodo ms directo para la ejecucin de esta multiplicacin o e a o o se realiza mediante una asignacin pre-calculada de los productos parciales. o Un diagrama de este tipo de multiplicador se muestra en la Fig. 3. 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 un tiempo adicional para la ejecucin del clculo de X +2X. Adems, se debe considerar que el valor pre-calculado o a a de 3X puede exceder el rango de X, por lo que el multiplexor y el sumador utilizado deben ser de n+1 bits. Una alternativa consiste en reemplazar 3X por X y generar un
N+1

desplazamiento 2 bits acarreo


2N-1 N N

Producto Parcial

N-1

1 0

ADD
N+1

0 X 2X 3X
2

MUX

N N+1

Figura 3. Multiplicador SM base 4. acarreo que modique al siguiente d gito. Este set de d gitos es afectado por el acarreo segn el Cuadro 2, en el cual, cy(j 1) es el acarreo correspondiente a la iteracin u o anterior, cy(j) es el acarreo que se genera por el evento actual, y2j1 e y2j son los bits seleccionados en cada iteracin que generan una salida de los valores [0, X, X, 2X]. o Esta alternativa demanda al nal de la iteracin n una nueva iteracin, si el ultimo o 2 o d gito de base 4 gener un bit de acarreo. En la Fig. 4 se muestra el esquema de este o multiplicador. En la misma se observa que requiere una mayor cantidad de recursos lgicos que un SM. Entre estos se puede citar que requiere de un sumador de n + 1 o o n + 2 bits, pre-calcular 3X o -X, y un multiplexor que conmuta los valores 0, X, 2X y 3X etc. Los esquemas de multiplicacin de base 4 ejecutan un producto en n o 2 iteraciones, sin embargo se requiere un ciclo adicional para cargar los registros con los operandos. El per odo de procesamiento para estos multiplicadores es de T = ( n +1)Tck 2

Cuadro 2.
cy(j 1) y2j1 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 1
N

y2j salida(j) cy(j) 0 0 0 1 X 0 0 2X 0 1 X 1 0 X 0 1 2X 0 0 X 1 1 0 1

desplazamiento 2 bits acarreo


2N-1 N N

Producto Parcial

N-1

1 0

ADD
N

0 X 2X -X
2

MUX

N N

y2j-1y2j+cy

FF acarreo

Figura 4. Variante del SM base 4. debiendo adicionar otro ciclo si se considera la variante -X, con lo cual el per odo es de T = ( n + 2)Tck . 2 2.3. Multiplicador secuencial fraccionado

El multiplicador secuencial fraccionado (SMF) es una variante cuyo objetivo es mejorar la velocidad de ejecucin. Dado que el per o odo TCK no se puede reducir ms a all del l a mite impuesto por la lgica, una mayor velocidad de ejecucin se puede o o obtener reduciendo el nmero de iteraciones. Dicha reduccin se puede obtener fracu o cionando la sumatoria de la Ec. (4).
n1 j=0

P = obteniendo la Ec. 5: P =
j=0

X2j yj

(4)

k1

X2j yj +

n1 j=k

X2j yj

(5)

La primer semi-sumatoria realiza su proceso en k TCK y la segunda en (n k) TCK odo de procesamiento para la ejecucin o y para el caso particular en que k = n , el per 2 de cada producto ser T = n TCK . a 2

Se debe considerar que la suma de las dos semi-sumatorias de la Ec. (5) requiere un unico sumador de 2n k debido a que la primer semi-sumatoria se encontrar despla a zada k veces de la segunda. Por otro lado, dicha suma agrega un retardo tR debido a la lgica involucrada. Este retardo se puede considerar menor o igual que TCK , tomando o como pauta que el retardo de involucrado en la adicin de los productos parciales o es inferior al retardo denido para un multiplicador SM. Por lo tanto, el per odo de procesamiento para este multiplicador estar dado por T = ( n + 1) TCK . a 2

X[n:0] Multiplicador Shift and Add

X[n:0]

Y[m/2:0] m/2 x n m/2 x n

Y[m:m/2+1]

Acumulacin

Y[m:0] x X[n:0]

Figura 5. Diagrama de operacin de un SMF. o En la Fig. 5, se observa el esquema del SMF, donde dos multiplicadores secuenciales realizan sus productos simultneamente y, un per a odo de tiempo despus, sus e resultados son adicionados. La aplicacin prctica del SMF se puede realizar en base a un SM tradicional o a o a un SMSR. La utilizacin del SM implica que se deben cargar los datos en los registros, o por lo que se requieren n + 2 iteraciones. Por lo que se justica solo la utilizacin de o 2 este esquema para multiplicadores cuya longitud de palabra haga despreciables las dos iteraciones a n . En el caso del SMF basado en un SMSR, el producto se realiza en 2 T = ( n + 1) TCK iteraciones. 2 En cuanto al consumo de recursos lgicos, este multiplicador requiere dos multiplio cadores de n m bits, que comparten el bloque de control, y un sumador de n + 3m 2 4 bits. El control requiere menos recursos debido a que debe realizar menos iteraciones. 2.4. Multiplicacin por sumas consecutivas o

Otra opcin para reducir el nmero de iteraciones sin tener que pre-computar o u mltiplos de los operandos, consiste en realizar dos subproductos en forma consecuu tiva. Esta variante es similar al SMbase4 ya que bsicamente opera con d a gitos de 2 bits. El multiplicador por sumas consecutivas (SMSC) realiza en cada iteracin dos o subproductos consecutivos como se puede observar en la Ec. (6). n P = 2n1
2

(yj X22j(n1)+ yj+1 X22j+1(n1) ) (6)

j=0

La suma de los dos subproductos de la Ec. (6) 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 contra la ventaja de reducir a la mitad la cantidad de ciclos en el per odo de procesamiento. El per odo de procesamiento para la ejecucin de un producto depende del esquema o en que se basa el SMSC. En el caso de un SMSC basado en un SM el per odo de procesamiento se reduce a T = ( n + 1) TCK . En el caso de uno basado en un SMSR, 2 el per odo de procesamiento resulta de T = n TCK . 2 Un esquema del SMSC basado en SM se muestra en la Fig. 6, donde se observa que con cada iteracin se realiza la suma en forma consecutiva de dos subproductos, o yj X 2j + yj+1 X 2j+1 de la Ec. (6). El esquema del SMSC basado en el SMSR se

LSB desplazamiento 2 bits acarreo acarreo


N-1 2N-1

Producto Parcial

N-1

1 0

ADD ADD
N N

N N-1

Figura 6. Ejemplo de un SMSC(SM). muestra en la Fig. 7. En cuanto al consumo de recursos lgicos, estos multiplicadores o

LSB desplazamiento 2 bits acarreo acarreo


N-1 2N-1

Producto

N-1

Parcial

ADD ADD
N N N N

N/2

MUX
N/2

Y[bits pares] Y[bits impares]

MUX

X Control

Figura 7. Ejemplo de un SMSC(SMSR). duplican el consumo de recursos en cuanto a sumadores y a la lgica combinacional o que genera el producto yj X. El control requiere menos recursos debido a que debe realizar menos iteraciones.

3.
3.1.

Evaluacin de los parmetros o a


Consumo de recursos lgicos o

El consumo de recursos se puede expresar en trminos de CLBs, compuestos por e dos generadores de funciones (FG) y dos FlipFlops (FF). Cada multiplicador esta compuesto por bloques tal como, sumadores, multiplexores, contadores y componentes bsicos. Estos bloques poseen un consumo de recursos acotado, que en algunos a casos son funcin de la longitud de palabra de los operandos, n. Ejemplo de ello se o presenta en un contador de mdulo-n. El mismo es un contador binario de log2 n bits o que utiliza n FFs (FlipFlops) y al menos la misma cantidad de FGs (Function Generators), consumiendo como m nimo log2 (n) CLBs. En caso de un multiplexor, este 2 est conformado slo por lgica combinacional que requiere de al menos n 1 FGs de a o o tres entradas. Esto genera un consumo de recursos de n1 CLBs para una longitud 2 de n-bit entradas. El consumo de recursos lgicos de un sumador depende del tipo de o sumador seleccionado. El sumador indicado para la implementacin de los multiplio cadores en las FPGAs seleccionadas, es el sumador de ripple-carry. En este caso, un sumador utiliza n + 2 FGs ( n + 1 celdas bsicas) considerando las salidas de acarreo y a 2 desborde. En el caso en que la salida de un sumador deba ser registrada, el consumo de recursos lgicos en trminos de CLBs es el mismo dado que los FFs son nativos de o e cada celda bsica. a A partir de estos conceptos bsicos, se desarrollan las ecuaciones que denen el a consumo de recursos lgicos en terminos de CLBs para los multiplicadores presentados, o Ecs. (7 - 14). log2 n 5 + 2 2 log2 n 3 CRSM SR (n) = 2n + + 2 2 7 log2 n CRSM base4a (n) = n + +4 2 2 7 log2 n 7 CRSM base4b (n) = n + + 2 2 2 log2 n 15 2 CRSM FSM (n) = n+ +5 4 2 log2 n 15 2 CRSM FSM SR (n) = n+ +3 4 2 n log2 2 7 CRSM SCSM (n) = 3n + + 2 2 1 n CRSM SCSM SR (n) = 3n + log2 + 2 2 2 CRSM (n) = 2n + 3.2. Comportamiento temporal (7) (8) (9) (10) (11) (12) (13) (14)

El comportamiento temporal de los multiplicadores presentados depende de dos factores: el retardo inherente de las compuertas lgicas y/o registros, y el impuesto o

por la interconexin entre las mismas. En la mayor de los circuitos realizados en o a FPGA el desempeo de los mismos no puede ser estimado hasta despus de ser implen e mentado debido a que los retardos de interconexin recin se conocen una vez realizada o e esta tarea. Sin embargo, en el caso de sumadores y contadores que utilizan recursos dedicados de lgica de acarreo es posible estimar un desempeo temporal aproximado [7]. o n El per odo m nimo de reloj que se puede utilizar con los multiplicadores presentados depende del retardo de propagacin de la ruta ms cr o a tica. Las Ecs. (15-19) resumen el retardo de propagacin de esta ruta expresados en o ns para los multiplicadores presentados tomando como referencia los retardos de una FPGA de Xilinx de la familia Spartan [8]. Cabe destacar que el retardo de propagacin dene el mximo reloj utilizable para un dado multiplicador. En el caso de los o a multiplicadores implementados a partir de un SM o un SMSR, el retardo es el mismo, siendo la diferencia entre ambos el nmero de iteraciones necesarias para ejecutar un u producto. tSM (n) = tSM base4a (n) = tSM base4b (n) = tSM F (n) = tSM SC (n) = n 4 n 4 n 4 n 4 n 4 + 8,3 + 14,2 + 12,5 + 8,45 + 13,15 (15) (16) (17) (18) (19)

4.

Comparacin de los multiplicadores o

A partir de las Ecs. (7 - 19) se realiz una comparacin de los multiplicadores o o presentados. En la Fig. 8 se muestra el consumo estimado de recursos lgicos de los o multiplicadores. Se puede observar que los multiplicadores optimizados en velocidad sacrican el consumo de recursos lgicos a costa de obtener una mayor velocidad de o procesamiento. Los multiplicadores del tipo SMSC son los que consumen la menor cantidad de recursos, mientras que los del tipo SMF poseen un consumo entre un 30 y un 40 % mayor. Por otro lado, los multiplicadores de base 4 poseen un consumo entre un 15 y un 20 % mayor. La velocidad de procesamiento (P S [Mop])se obtiene como resultado de dividir la frecuencia mxima de trabajo por el nmero de ciclos que requiere realizar una a u ck operacin N , P S = fN . La misma se expresa en millones de operaciones por segundo. o En la Fig. 9 se muestra una comparacin de las velocidades de procesamiento de los o multiplicadores. En la misma se puede observar que el SMF(SMSR) presenta la mayor velocidad de procesamiento para todo n. Adicionalmente, la variante SMF(SM) salvo para el caso de n = 8, posee una buena velocidad de procesamiento aunque inferior a la del SMF(SMSR) debido a que requiere de una iteracin adicional. El SMSC(SMSR) o posee una buena velocidad de procesamiento para n < 14 bits, pero para n mayores es similar a la del SMbase4(-X). Se observa tambin que las otras variantes presentan e velocidades inferiores a las del SMF(SMSR), pero superiores a la del SMbase4(3X).

120

100

SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

80

CLB 60 40 20 0 5

10

15

20 n

25

30

35

Figura 8. Consumo de recursos lgicos de los multiplicadores. o

20 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

18

16

14

12 PS [Mops]

10

10

15

20 n

25

30

35

Figura 9. Velocidad de procesamiento de los multiplicadores.

4.1.

Performance de los multiplicadores

A n de estimar los benecios de cada variante, se propone un unico indicador, el ndice de performance p, denido por la Ec. (20) donde la Velocidad de Procesamiento est denida en Millones de Operaciones por Segundo y el Area como la fraccin de a o recursos 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 de 400 CLBs, en la cual se puede observar que los multiplicadores SM y SMSC(SMSR) obtienen el mejor desempeo. En la Fig. 11 se muestra el n ndice para el intervalo 20 n 32 donde observa que el mayor valor lo comparten los multiplicadores SM y SMSC(SM). Esto se debe a que el SCSC(SM) consume menor cantidad de recursos que el SMSC(SMSR) y, a medida que aumenta n, la velocidad de procesamiento de ambos multiplicadores se hace ms parecida. a
250 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

200

Performance

150

100

50

10

12 n

14

16

18

20

Figura 10. Indice de performance [8,20].

5.

Conclusiones

En este trabajo se present un estudio comparativo de multiplicadores secuenciales o destinados a su implementacin en FPGA. Se presentaron las estimaciones de consuo mo de recursos lgicos y de comportamiento temporal que permiten contrastar las o caracter sticas de los multiplicadores presentados. A partir de estas comparaciones se puede observar que el SM, el SMSR y los SMSC son los multiplicadores que mejor balancean la relacin entre consumo de recursos lgio o cos y velocidad de procesamiento. Resultando el SMSR el ptimo para aplicaciones o

35 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

30

25 Performance

20

15

10

20

22

24

26 n

28

30

32

Figura 11. Indice de performance [20,32]. donde se busca una reducida cantidad de recursos lgicos, y el SMSC en aplicacioo nes donde adems de las restricciones de recursos se requiere una alta velocidad de a procesamiento.

Referencias
1. Funes, M., Carrica, D., Benedetti, M.: Multiplicadores secuenciales para estructuras FPGA. IX Reunin de Trabajo en Procesamiento de la Informacin y Control. Vol. II (2001) o o 646651 2. Hennessy, J.L., Patterson, D.: Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8 (1996) 3. Hayes, J.P.: Introduccin al Diseo Lgico Digital. Addison-Wesley Iberoamericana, o n o Wilmington, Delaware, E.U.A (1996) 4. Thornton, M., Gaiche, J.D.and Lemieux, J.: Tradeo analysis of integer multiplier circuits implemented in FPGAs. Communications, Computers and Signal Processing IEEE Pacic RIM Conference (1999) 301304 5. Teixeira, D., Susim, A., Carro, L.: Comparacin de multiplicadores en fpga. V Workshop o Iberchip 1 (Enero 1999) 182187 6. Parhami, B.: Computer Arithmetic: Algorithms and Hardware Design. Oxford University Press, New York, Oxford (2000) 7. New, B.: Estimating the performance of XC4000E adders and counters. Technical Report Xapp 018, Xilinx (1996) 8. : The Programable Logic Data Book. Xilinx (2000)

XII Reuni n de Trabajo en Procesamiento de la Informaci n y Control, 16 al 18 de octubre de 2007 o o

Estudio comparativo de multiplicadores secuenciales implementados en FPGA


M. Funes , D. Carrica , M. Benedetti , P. Donato
UNMDP, Facultad de Ing. - LIC mfunes@.mdp.edu.ar CONICET liclab@.mdp.edu.ar

Resumen En este trabajo se presenta un estudio comparativo de multiplicadores secuenciales orientado a su implementaci n en FPGA. Se exponen o los resultados de las implementaciones, las que permiten contrastar las caractersticas de los multiplicado res presentados. P alabras Clave Multiplicadores, Secuenciales, FPGA, Recursos l gicos, Velocidad de procesao miento. I. INTRODUCCION

sistema desarrollado. Resultados experimentales permiten distinguir las caractersticas de cada uno de los multi plicadores presentados. II. Multiplicador secuencial
n1 j=0

Dados dos operandos, un multiplicando X = xj 2j , y un multiplicador Y =


n1 j=0

yj 2j , el Cuadro

La multiplicaci n es una de las operaciones esceno ciales en el procesamiento aritm tico. Adicionalmente, e es una de las tareas que m s recursos l gicos consume. a o D cadas atr s cuando la arquitectura del multiplicador e a era estudiada para su implementaci n en circuitos de proo cesadores o unidades aritm ticas de c lculo, el consumo e a de recursos circuitales era aceptado por la necesidad de realizar los c lculos m s r pidamente. a a a Actualmente, la utilizaci n de las FPGAs permite el dio se o personalizado de sistemas de procesamiento, lo cual n ha masicado la aplicaci n de los mismos. La implemeno taci n en una FPGA de una unidad de c lculo con un gran o a consumo de recursos l gicos obliga a utilizar una FPGA o de gran tama o, lo que implica un mayor costo de pron ducci n. Con el objeto de reducir el consumo de recursos o l gicos Funes et al. (2001) propusieron la utilizaci n del o o esquema de multiplicaci n Shift and Add (Hennessy and o Patterson, 1996), (Hayes, 1996) , denominado tambi n e Multiplicador Secuencial (SM), para sistemas basados en FPGA. Este multiplicador ejecuta un producto en forma secuencial y se caracteriza por utilizar una cantidad reducida de recursos l gicos. Como contrapartida por su eno tidad secuencial, este multiplicador demanda un perodo mayor para ejecutar un producto. Existen variantes del multiplicador SM que reducen este perodo a costa de un mayor consumo de recursos l gicos (Parhami, 2000). o En este trabajo se presenta un estudio comparativo de los multiplicadores secuenciales y algunas variantes de los mismos optimizadas en velocidad, con el objetivo de obtener buenas alternativas para la utilizaci n de multio plicadores en FPGA sin comprometer los recursos del

1 muestra el proceso de multiplicaci n para n = 4. El o SM realiza el producto de este cuadro en forma secuencial, acumulando un producto parcial yi X (i = 0, 1, 2, 3) al resultado acumulado de la iteraci n anterior con el deo bido desplazamiento de un bit entre ambos. Cuadro 1: x3 x2 x1 y3 y2 y1 s03 s02 s01 s13 s12 s11 s10 s22 s21 s20 s31 s30 p4 p3 p2 p1

+ p7

s23 s33 s32 p6 p5

x0 y0 s00 p0

y0 X20 y1 X21 y2 X22 y3 X23 P

Existen dos versiones dependiendo del sentido de los valores a acumular, con desplazamiento a la izquierda o con desplazamiento a la derecha. En la multiplicaci n con desplazamiento a la izquierda o se debe contar con un acumulador de longitud 2n bits. En este caso los productos parciales yj X son adicionados al resultado acumulado con un desplazamiento de un bit (21 ) hacia la izquierda, respecto al anterior. El algoritmo se puede analizar a partir de la Ec. (1), donde p(j) es el producto parcial de la iteraci n j. o p(j + 1) = 2p(j) + y(n1)j X con p(0) = 0 (1)

En la multiplicaci n con desplazamiento a la derecha o los productos parciales yj X son adicionados al resultado acumulado con un desplazamiento de un bit (21 ) hacia la derecha respecto al anterior. El algoritmo se observa en la Ec. (2).

XII Reuni n de Trabajo en Procesamiento de la Informaci n y Control, 16 al 18 de octubre de 2007 o o En la Figura 2 se puede observar un esquema del SMSR, el cual utiliza un sumador de n bits y realiza la selecci n de los bits yj mediante un multiplexor de n eno tradas.
n

p(j + 1) = (p(j) + yj X2n )21

con p(0) = 0

(2)

Debido a que el desplazamiento a la derecha genera un primer producto parcial multiplicado por 2n se debe pre-multiplicar y0 X por 2n para compensar el efecto del desplazamiento. Esta pre-multiplicaci n se puede efeco tuar f cilmente, almacenando p(j) en el segmento m s a a signicativo de un registro de 2n bit. La implementaci n hardware del algoritmo de la mulo tiplicaci n con desplazamiento a la derecha se puede obo servar en la Fig. 1. El multiplicador Y y la acumulaci n o de los productos parciales p(j) son almacenados en registros de desplazamiento. El bit yj del multiplicador es el bit menos signicativo existente en el registro Y en la iteraci n j. El mismo es utilizado en el producto yj X o seleccionando 0 o X en la suma.
n

desplazamiento acarreo
2n-1 n

Producto

n-1

Parcial

ADD

n n

MUX

Control

Figura 2: SMSR. El control del multiplicador, que no se muestra en la Figura 2, consiste en un contador que ejecuta la selecci n o de los yj y que a su vez mantiene el n mero de iteraci n u o realizada. La inicializaci n del multiplicador se realiza o limpiando el registro Producto Parcial y el contador, y es requisito para este multiplicador que los datos se encuentren presentes durante todo el ciclo de la multiplicaci n, o tal como en un multiplicador paralelo tradicional. B. Multiplicador SM de base 4 o superior Esta variante de multiplicaci n secuencial, reduce o la cantidad de iteraciones en base a la representaci n o num rica. e Un n mero binario de n-bits puede ser representado u 3 como un n mero de n -dgitos de base 4 o n -dgitos de u 2 base 8. De este modo, es posible realizar un producto en menor tiempo de c lculo si se ejecuta una multiplicaci n a o de un dgito por vez en lugar de hacerlo bit a bit. La expresi n general para este tipo de multiplicaci n o o es la de la Ec. (3): p(j + 1) = (p(j) + yj Xrn )r1 (3)

desplazamiento acarreo
2n-1 n

Producto Parcial

n-1

ADD

n n

n-1

Figura 1: SM con desplazamiento a la derecha. Si bien ambos algoritmos presentados realizan n sumas y n desplazamientos, las sumas realizadas con el algoritmo de desplazamiento a la izquierda requieren un sumador del doble de tama o respecto del algoritmo de n desplazamiento a la derecha. Esto se debe a que el acarreo de la suma se debe extender hacia los bits m s signia cativos. Por lo tanto, el algoritmo m s utilizado es el de a desplazamiento a la derecha. El multiplicador SM requiere n iteraciones para la ejecuci n del producto y una iteraci n previa para la carga o o de los operandos. Por lo tanto este multiplicador puede realizar un producto en un perodo T = (n + 1)TCK , donde n es la longitud de los operandos y TCK el perodo de reloj aplicado sobre el multiplicador. A. Multiplicador secuencial sin entradas registradas El multiplicador secuencial sin entradas registradas (SMSR) es una variante del multiplicador SM de desplazamiento a la derecha. El objetivo del SMSR es la simplicaci n del esquema de multiplicaci n evitando la carga o o paralelo de los registros del multiplicador y del multiplicando, para lo cual, los datos deben permanecer estables durante toda la operaci n. Existiendo esta condici n, el o o SMSR no carga los operandos, por lo que no existe la demora propia del ciclo de carga, lo cual constituye una ventaja. Por lo tanto, este multiplicador realiza el producto en un T = nTCK .

con p(0) = 0. En el caso de la multiplicaci n en base 4, se debe cono formar el producto parcial [yj+1 yj ]2 X y adicionarlo al resultado de la iteraci n anterior. Mientras que en la mulo tiplicaci n de base 2 cada producto parcial est represeno a tado por el valor 0 o por una versi n desplazada de X, en o la multiplicaci n de base 4 el producto parcial toma los o valores 0, X, 2X o 3X. El m todo m s directo para la e a ejecuci n de esta multiplicaci n se realiza mediante una o o asignaci n pre-calculada de los productos parciales. o Un diagrama de este tipo de multiplicador se muestra en la Fig. 3. 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 un tiempo adicional para la ejecuci n del c lculo de o a X + 2X. Adem s, se debe considerar que el valor prea calculado de 3X puede exceder el rango de X, por lo que el multiplexor y el sumador utilizado deben ser de n + 1 bits.

XII Reuni n de Trabajo en Procesamiento de la Informaci n y Control, 16 al 18 de octubre de 2007 o o


n+2

desplazamiento 2 bits acarreo


2n-1 n n+2

Producto Parcial

n-1

1 0

ADD
n+2

0 X 2X 3X
2

n+2

MUX

n+2 n+2

Figura 3: Multiplicador SM base 4. Una alternativa consiste en reemplazar 3X por X y generar un acarreo que modique al siguiente dgito. Este set de dgitos es afectado por el acarreo seg n el Cuadro u 2, en el cual, cy(j 1) es el acarreo correspondiente a la iteraci n anterior, cy(j) es el acarreo que se genera por o el evento actual, y2j1 e y2j son los bits seleccionados en cada iteraci n que generan una salida de los valores o [0, X, X, 2X]. Esta alternativa demanda al nal de la iteraci n n una nueva iteraci n, si el ultimo dgito de base o 2 o 4 gener un bit de acarreo. o Cuadro 2: Codicaci n de los bits del multiplicador o cy(j 1) y2j1 y2j salida(j) cy(j) 0 0 0 0 0 0 0 1 X 0 1 0 2X 0 0 0 1 1 X 1 0 0 X 0 1 1 0 1 2X 0 1 1 0 X 1 1 1 1 0 1 El diagrama de este multiplicador se puede observar en la Fig. 4.
n+1

SM. Entre estos se puede citar que requiere de un sumador de n + 1 o n + 2 bits, pre-calcular 3X o -X, y un multiplexor que conmuta los valores 0, X, 2X y 3X etc. Los esquemas de multiplicaci n de base 4 ejecutan un o producto en n iteraciones, sin embargo se requiere un ci2 clo adicional para cargar los registros con los operandos. El perodo de procesamiento para estos multiplicadores es de T = ( n + 1)Tck debiendo adicionar otro ciclo si 2 se considera la variante -X, con lo cual el perodo es de T = ( n + 2)Tck . 2 Estas variantes se pueden extender a multiplicadores de bases superiores, pero la estructura del multiplicador se vuelve compleja debido a que se debe precomputar una mayor cantidad de valores y consecuentemente el n mero de iteraciones deja de ser menor que u n + 1. Por ejemplo, para un producto de base 8, se deben 2 pre-computar los valores de 3X, 5X y 7X, o s lo preo computar 3X y utilizar un esquema de acarreo similar al de la Fig. 4 para convertir a 5X, 6X y 7X en 3X, 2X y X. C. Multiplicador secuencial fraccionado El multiplicador secuencial fraccionado (SMF) es una variante cuyo objetivo es mejorar la velocidad de ejecuci n. Dado que el perodo TCK no se puede reducir m s o a all del lmite impuesto por la l gica, una mayor velocia o dad de ejecuci n se puede obtener reduciendo el n mero o u de iteraciones. Dicha reducci n se puede obtener fraccioo nando la sumatoria de la Ec. (4).
n1

P =
j=0

X2j yj

(4)

Si se fracciona la sumatoria, entonces el producto se puede realizar como la suma de dos semi-sumatorias:
k1

P =
j=0

X2j yj +

n1 j=k

X2j yj

(5)

El producto resultante utilizando como base la de un SM con desplazamiento a la derecha esquema se puede observar en la Ec. (6). P = 2n1
k j=0

desplazamiento 2 bits acarreo


2n-1 n n+1

Producto Parcial

n-1

1 0

X 2j(n1) yj +

n1 j=k

X 2j(n1) yj

ADD
n+1

0 X 2X -X
2

n+1

MUX

n+1 n+1

y2j-1y2j+cy

(6) La primer semi-sumatoria realiza su proceso en kTCK y la segunda en (n 1 k) TCK . Si las dos semisumatorias se llevan a cabo al mismo tiempo y se suman sus resultados con el debido desplazamiento, el perodo de proceso estar dado por: a k TCK ((n 1) k) TCK si o si k > (n 1) k k < (n 1) k

FF acarreo

Figura 4: Variante del SM base 4. En la Fig. 4 se puede observar que este esquema requiere una mayor cantidad de recursos l gicos que un o

y para el caso particular en que k = n , el perodo de pro2 cesamiento para la ejecuci n de cada producto ser T = o a n 2 TCK .

XII Reuni n de Trabajo en Procesamiento de la Informaci n y Control, 16 al 18 de octubre de 2007 o o Se debe considerar que la suma de las dos semi sumatorias de la Ec. (6) requiere un unico sumador de 2n k debido a que la primer semi-sumatoria se encontrar desplazada k veces de la segunda. Por otro lado, dia cha suma agrega un retardo tR debido a la l gica invoo lucrada. Este retardo se puede considerar menor o igual que TCK , tomando como pauta que el retardo de involucrado en la adici n de los productos parciales es inferior o al retardo denido para un multiplicador SM. Por lo tanto, el perodo de procesamiento para este multiplicador estar dado por T = ( n + 1) TCK . a 2
X[n:0] X[n:0]

Y[m/2:0] m/2 x n m/2 x n

Y[m:m/2+1]

La suma de los dos subproductos de la Ec. (7) 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 contra la ventaja de reducir a la mitad la cantidad de ciclos en el perodo de procesamiento. El perodo de procesamiento para la ejecuci n de un o producto depende del esquema en que se basa el SMSC. En el caso de un SMSC basado en un SM el perodo de procesamiento se reduce a T = ( n + 1) TCK . En el caso 2 de uno basado en un SMSR, el perodo de procesamiento resulta de T = n TCK . 2 Un esquema del SMSC basado en SM se muestra en la Fig. 6, donde se observa que con cada iteraci n se realiza o la suma en forma consecutiva de dos subproductos, yj X 2j + yj+1 X 2j+1 de la Ec. (7).
LSB desplazamiento 2 bits acarreo acarreo
2n-1

Acumulacin

SM

Producto Parcial

n-1

1 0

Y[m:0] x X[n:0]

n-1

ADD

Figura 5: Diagrama de operaci n de un SMF. o En la Fig. 5, se observa el esquema del SMF, donde dos multiplicadores secuenciales realizan sus productos simult neamente y, un perodo de tiempo despu s, sus rea e sultados son adicionados. La aplicaci n pr ctica del SMF se puede realizar en o a base a un SM tradicional o a un SMSR. La utilizaci n del o SM implica que se deben cargar los datos en los registros, por lo que se requieren n + 2 iteraciones. Por lo que 2 se justica solo la utilizaci n de este esquema para mulo tiplicadores cuya longitud de palabra haga despreciables las dos iteraciones a n . En el caso del SMF basado en 2 un SMSR, el producto se realiza en T = ( n + 1) TCK 2 iteraciones. En cuanto al consumo de recursos l gicos, este multio plicador requiere dos multiplicadores de n m bits, que 2 comparten el bloque de control, y un sumador de n + 3m 4 bits. El control requiere menos recursos debido a que debe realizar menos iteraciones. D. Multiplicaci n por sumas consecutivas o Otra opci n para reducir el n mero de iteraciones sin o u tener que pre-computar m ltiplos de los operandos, conu siste en realizar dos subproductos en forma consecutiva. Esta variante es similar al SMbase4 ya que b sicamente a opera con dgitos de 2 bits. El multiplicador por sumas consecutivas (SMSC) realiza en cada iteraci n dos subo productos consecutivos como se puede observar en la Ec. (7). n P = 2n1
2

ADD
n

n n-1

Figura 6: Ejemplo de un SMSC(SM). El esquema del SMSC basado en el SMSR se muestra en la Fig. 7.
LSB desplazamiento 2 bits acarreo acarreo
n-1 2n-1

Producto

n-1

Parcial

ADD ADD
n n n n

n/2

MUX
n/2

Y[bits pares] Y[bits impares]

MUX

X Control

Figura 7: Ejemplo de un SMSC(SMSR). En cuanto al consumo de recursos l gicos, estos mulo tiplicadores duplican el consumo de recursos en cuanto a sumadores y a la l gica combinacional que genera el proo ducto yj X. El control requiere menos recursos debido a que debe realizar menos iteraciones. III. Comparaciones Los multiplicadores presentados en secciones anteriores se implementaron en una FPGA Spartan XCS30 de Xilinx (The Programable Logic Data Book, 2000). Cada una de las variantes de los multiplicadores se implement en primera instancia mediante captura esquem tio a ca y posteriormente en Lenguaje de Descripci n de Hardo ware (VHDL) (Ghosh, 1999)- (Villar et al., 1997).

(yj X22j(n1)+ yj+1 X22j+1(n1) ) (7)

j=0

XII Reuni n de Trabajo en Procesamiento de la Informaci n y Control, 16 al 18 de octubre de 2007 o o Todos los circuitos han sido evaluados seg n los recuru sos l gicos consumidos, la velocidad de procesamiento y o un ndice de performance. A. Recursos l gicos o La cantidad de recursos l gicos o area de utilizaci n o o de la FPGA se puede cuanticar en CLBs, compuestos cada uno por dos generadores de funciones (FG) y dos FlipFlops (FF). En la Fig. 8 se muestran los resultados de los multiplicadores en cuanto al consumo de CLBs. En la misma se puede observar que el n mero de CLBs aumenta en u forma lineal con n para todos los multiplicadores. En la misma se puede observar la diferencia notable de consumo de recursos entre los multiplicadores SM, SMSR y los multiplicadores optimizados en velocidad. En el caso particular del SMbase4(-X), este posee un consumo que duplica al del SM. Esto se debe fundamentalmente a que se sacrican recursos para obtener mayor velocidad.
120 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

En esta gura se pueden observar los resultados obtenidos por cada multiplicador. En la misma, la variante del multiplicador SMF(SMSR) es la que obtiene la mayor velocidad. Por otro lado, se puede observar que el multiplicador SMSC(SMSR) posee una relaci n m s balanceada o a entre consumo de recursos l gicos y velocidad de proceo samiento.
18 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

16

14

12

PS [Mops]

10

10

15

20 n

25

30

35

100

Figura 9: Velocidad de procesamiento. Los multiplicadores SM y SMSR como se esperaba, poseen una velocidad de procesamiento inferior debido a la cantidad de ciclos de reloj necesarios para ejecutar un producto. C. Performance Se establece un ndice de performance de manera de poder evaluar el desempe o global del sistema implen mentado en la FPGA, incluyendo tanto el concepto de consumo de recursos como de velocidad de procesamiento. En la Ec. (8) se dene el ndice de performance p. Velocidad de Procesamiento [Mops] (8) Area En esta ecuaci n, la Velocidad de Procesamiento eso ta denida en Millones de Operaciones por Segundo y el Area como la fracci n de recursos utilizados para una o determinada FPGA, (Total de la FPGA = 1). Este ndice pretende poder comparar la performance de distintos tipos de multiplicadores para su utilizaci n en una FPGA o designada. En la Fig. 10 se graca el ndice de performance pa ra un rango de 8 < n < 20 bits. En la misma se puede observar que el mayor ndice lo comparten los multipli cadores SM y SMSC(SMSR). Una forma de interpretar este resultado es analizando una posible aplicaci n de o estos multiplicadores. Dado el caso en que una aplicaci n requiere realizar un cierto n mero de productos en o u un mismo instante, este indica que resulta tan eciente utilizar arreglos paralelos de multiplicadores SMSR como realizar todos los productos m s r pidamente en un a a solo SMSC(SMSR). p=

80

CLB 60 40 20 0 0

10

15 n

20

25

30

35

Figura 8: Consumo de recursos l gicos. o Si se comparan entre s los multiplicadores optimiza dos en velocidad, se puede observar que el SMSC(SM) es el multiplicador que posee el menor consumo de recursos l gicos. Por otro lado, el multiplicador SMF(SMSR) reo quiere una mayor cantidad de recursos que los restantes multiplicadores. B. Velocidad de procesamiento La velocidad de procesamiento fd , se expresa en millones de operaciones por segundo M ops, y se obtiene calculando la inversa del producto del retardo de propagaci n del camino crtico por el n mero de ciclos que o u 1 requiere realizar una operaci n, fd = tpd N . El retardo o de propagaci n tpd se obtiene a partir de la herramieno ta de programaci n de FPGA de Xilinx, Foundation 3.1i, o Timimg Analyzer. A partir de los datos sumnistrados se calcula el peor caso de temporizaci n del dise o. o n En la Fig. 9 se presentan los resultados experimentales de la velocidad de procesamiento de los multiplicadores.

XII Reuni n de Trabajo en Procesamiento de la Informaci n y Control, 16 al 18 de octubre de 2007 o o


250 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)
35 SM SMSR SMbase4 (3X) SMbase4 (X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

30

200

25

Performance

150
Performance

20

100
15

50

10

10 n

15

20

20

22

24

26 n

28

30

32

Figura 10: Indice de performance, n 20. En la Fig. 11 se graca el ndice de performance para un rango de 20 < n < 32 bits. En esta gura se puede observar que el mayor ndice lo comparten los multiplica dores SM y SMSC(SM). Esto se debe a que el multiplicador SMSC(SM) consume menor cantidad de recursos que el SMSC(SMSR) y a medida que aumenta la longitud de palabra de los operandos, la velocidad de procesamiento de ambos multiplicadores se hace m s parecida. a IV. CONCLUSIONES En este trabajo se present un estudio comparativo de o multiplicadores secuenciales los cuales constituyen una buena alternativa para la utilizaci n en FPGA. Se preseno taron resultados experimentales que permiten distinguir las caractersticas de cada uno de los multiplicadores pre sentados. A partir de estas caractersticas se puede observar que el SM y los SMSC son los multiplicadores que mejor balancean la relaci n entre consumo de recursos l gio o cos y velocidad de procesamiento. Resultando el optimo el primero para aplicaciones de muy reducida cantidad de recursos l gicos, y el segundo en aplicaciones donde o adem s de las restricciones de recursos se requiere increa mentar la velocidad de procesamiento. REFERENCIAS Funes, M., D. Carrica and M. Benedetti (2001). Multiplicadores secuenciales para estructuras FPGA. IX Reuni n de Trabajo en Procesamiento de la Informao ci n y Control. Vol. II, 646651. o Ghosh, Sumit (1999). Hardware Description Languages Concepts and Principles. IEEE Press. 445 Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331. Hayes, John P. (1996). Introducci n al Dise o L gico Dio n o gital. Addison-Wesley Iberoamericana. Wilmington, Delaware, E.U.A.

Figura 11: Indice de performance 20 n 32. Hennessy, John L. and David Patterson (1996). Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc.. San Francisco, California ISBN: 1-55860-329-8. Parhami, Behrooz (2000). Computer Arithmetic: Algorithms and Hardware Design. Oxford University Press. New York, Oxford. Teixeira, Denis, Altamiro Susim and Luigi Carro (1999). Comparaci n de multiplicadores en fpga. V Workshop o Iberchip 1, 182187. 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 implemented in FPGAs. Communications, Computers and Signal Processing IEEE Pacic RIM Conference pp. 301304. Villar, E., L. Ter s, S. Olcoz and Y. Torroja (1997). VHDL e Lenguaje Estandar de Dise o Electr nico. McGraw n o Hill. Madrid.

Floating Point Multipliers with Reduced FPGA Area


M. Funes, D.Carrica, and M. Benedetti
Laboratorio de Instrumentacin y Control o Universidad Nacional de Mar del Plata, Argentina mfunes@fi.mdp.edu.ar

Abstract. FPGA based Floating Point Multipliers demand abundant logical resources. This paper presents a sequential structure of oating-point multiplier requiring a reduced number of resources. The proposed architecture was evaluated theorically and experimentally achieving a substantially good performance.

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 exibility of a generalpurpose, programmable digital signal processor with the speed and density of a custom hardware implementation. A digital processing implementation into a target FPGA should be optimized in terms of logic resources consumption.to achieve a good performance and cost-eectiveness. Digital Signal Processing mainly involves multiply operations which can be either x or oating point, depending on the operand-range. The latter is used to reduce overow problems often observed in xed point formats. A number expressed in oating point format consist of a sign bit S, a biased exponent e of r bits and the fractional f of n bits. These elements express a number given by the following equation: op = (1)S 2ebias 1.f (1)

Floating point multiplications involve sign setting, e exponent addition (with bias correction) and mantissa product (including the leading bit). The latter is performed as an integer multiplication and is the most logic resources consummer. Furthermore, the multiplication is often executed in parallel way, that is, by developing simultaneously the product shown in Eq.(2):
n

p = 1.fx 1.fy =
i=0

[yi (1xn1 ..x3 x2 x0 )] 2i

(2)

This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and the Agencia Nacional de Promocin Cient o ca y Tecnolgica (BID 1201/OC-AR 2002).The o authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

where 1.fx = {xn ..x2 x0 } and 1.fy = {yn y2 y0 } 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 tradeo between logic resources and processing speed. Some multiplier schemes increase the processing speed but also increases the logic consumption [9]. Increments in the FPGA used area reduce the maximum operating frequency. Consequently there exist a technological boundary where increasing of the implementation complexity does not lead to an increment in the processing speed. Several authors studied and proposed dierent parallel schemes of FPGA FloatingPoint Multipliers in order to reduce logic consumption [10] [8] [3]. This article proposes a novel oating-point multiplier leading to a meaningful area reduction without relegating much processing speed. An estimation of the logic resources consumption of the proposed scheme is generated in order to evaluate its consumption against the often used by parallel multipliers. Latter, the multiplier was implemented on several platforms and evaluated in terms of logical resources and speed. Finally, the proposed multiplier is compared with multipliers referenced in the literature.

Proposed Multiplier

This paper suggests the utilization of a Sequential Multiplication (SM) to reduce the logic resources consumption. This multiplication algorithm executes a product using a single adder, Eq. (3): p = 2n1
n1 i=0

yi X 2in+1

(3)

This adder performs successive accumulations of subproducts shifted by the corresponding value. Some schemes can be found in literature like the multiplier of Hennesy shown in Figure 1 [7]. In each multiply step, the multiplier performs two tasks. First if the least-signicant bit of Y is 1, register X is added to P , otherwise 00...00 is added to P . Finally, the result will be stored back into P . The registers P and Y are shifted right, the carry bit of the sum is moved into the high-order bit of P and the low-order of P is moved into register Y . After N steps, the result is in the 2n-bit register P Y . The integer multiplication result has a 2n-bits wordlength, but oating-point multiplication only needs the n-most signicant bits of the result wich are stored in register P . Consequently, there is no need in shifting bits into register Y of an integer multiplierdesigned for oating point multiplication. This lead to simplied integer multiplier shown in Fig. 2. This scheme is based on a stage counter and the multiplexer to execute the partial products. In this scheme, the partial product is added to the last shifted result and is stored in the corresponding output registers. The product normalization depends on the integer multiplication result. This result is a n-bit word plus a carry bit. If this carry bit is 1, the result must be rightshifted to be normalized. This operation can be achieved with the existing resources, adding an extra clock pulse and setting the non-feedback add input to zero.

SHIFT
1 ADD P n Y n

X n

Fig. 1. Shift and Add multiplier.


X[n:0] Y[n:0]

carry

MUX COUNTER

ADD

FFs

P[n-1:0]

P[n:1]

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 twos complement. In order to reduce logic the numbers (bias + 0) and (bias + 1) are precalculated and added to ex + ey according to the carry value. After the design structure is dened, the logic resources consumption of the proposed oating point multiplier can be estimated. The logic resources consumption in a FPGA can be expressed in terms of it basic logic cells. Each basic cell contains two Flip 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, input and output nets, and if its outputs must be registered. Furthermore, in the design there are many macro components like adders, multiplexers, counters, and primitive components. A n-module counter is a binary of at least log2 n bits counter. Consequently it uses n FFs and almost the same quantity of FGs. Then, the n-module counter consums log2 (n) basic cells. A n-bit multiplexer is combinational logic which it needs at least 2 log2 (n) stages of three input FGs. The multiplexer used in the design has a registered
log2 n i=1

output in the last stage resulting in a component that consums

(n2
2

for n-bit

inputs. The logic consumption of the n-bit adder depends of the adder seleted. Usually, the often used adder is the ripple carry adder wich optimize the fast carry logic provided by the manufacturers in each basic cell. In this case, a n-bit adder use n + 2 FGs ( n + 1 basic cell) considering the carry and the overow output. If the output 2 of the used adder must be registered, the logic consumption estimation is the same because the FFs are native of each basic cell. Equation 5 summaries the estimated logic resources consumption of the PFPM expressed in terms of basic cells of a n-bit wordlength mantissa including the leading bit implied on the representation 1.f . This equation take in consideration the FGs and FFs that can be merged together into a same cell.
log2 n+1 i=1

(n 2i ) +

P F P M (n, r) =

log2 (n + 1) 13 +n+ +r 2 2

(5)

Comparison of the FPGA area

The logic resources used by the PFPM is compared with oating point multiplier wich are based on xed point multipliers reported in the literature. For this purposes, the oating point multiplier structure was designed considering the integer multiplier as an interchangeable unit. Several parallel multipliers with a reported logic consumption were selected [2]. The integer multiplier and their respective logic consumption for oating point multiplication implementation are: Guild scheme with a high throughput due to the use of parallelism and pipelining, Eq. (6). Second, a McCanny - McWhirter multiplication 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 Ripple Carry multiplication unit which take advantage of the fast carry logic nets provided by the manufacturer. Eq. (9). For this estimation it was considered the eect of the logic not used by the n less signicant bits of the integer multiplication, but the logic consumption reduction in this multipliers was neglected due to its little dierence (less than 5 %). 6 2 23 n + n+8+r (6) Guild(n, r) = 25 20 87 n 39 + r (7) M cCanny(n, r) = 10 CarrySave(n, r) = 7n 27 + r (8) 73 RippleCarry(n, r) = n 32 + r (9) 10 Figure 3 shows a comparison of the logic resources consumption for the selected multipliers with a typical 8 bit exponent (r = 8). The horizontal lines in the same gure indicates the amount of avaiable basic cells in several Spartan FPGAs of Xilinx Inc. [1]. It can be observed the small of logic resources needed for the PFPM in contrast to the parallel multipliers applied to the oating point multiplication. The PFPM can be implemented in all platforms for any mantissa wordlength, while for other schemes the implementation is restricted to larger FPGAs. Besides, the proposed scheme make possible the implementation of several multipliers in the same FPGA.

600

500

XCS30 Guid MacCanny Carry Save Ripple Carry Proposed

400

XCS20

CLB

300

200

XCS10

100

XCS05

10

15

20

25 Wordlength

30

35

40

45

Fig. 3. Logic consumption comparation.

Experimental results

The proposed multiplier was implemented on the three most extended Xilinx platforms: Spartan, Virtex and Virtex II. The evaluation of the proposal in the several FPGAs allow the verication of the Eq.(5) and the exploration of the benets of the dierent FPGA series to improve a better performance. The design was evaluated in terms of logical resources , minimum clock period and Processing Speed (PS). Figure 4 shows the experimental results for the Spartan series. It can be observed that the dierence between the implementation and the estimation, Eq. (5) is less than 5 %. The delay constrain in the implementation depends on the feedback between the adder inputs and the registered outputs shown in the bottom of the Figure 2. This timing determines the maximum clock speed TCK , which, along the n + 1 pulses, 1 determines the multiplier processing speed P S = (n+1)TCK . Figures 5 and 6 show the experimental results for Virtex and Virtex II series, respectivelly. In these gures it can be observed the logic resources consumption for both implementations. A comparative analyisis is shown in Figure 7 where the logic resources and the processing speed are despicted for all the implementations. It can be observed in this gure that the logic resource estimation is comrmed with the experimental results for each index n. Also it can be observed the improvement of the utilization of a technology among the others.

6 PS [Mflop]

10

15 n

20

25

30

80 70 60 CLB 50 40 30 20 5

Estimation results Experimental results

10

15 n

20

25

30

Fig. 4. Spartan series PFPM implementation

30 25 PS [Mflop] 20 15 10 5 0 5 10 15 n 20 25 30

80 70 60 CLB 50 40 30 20 5

Estimation results Experimental results

10

15 n

20

25

30

Fig. 5. Virtex series PFPM implementation

40

30 PS [Mflop]

20

10

10

15 n

20

25

30

80 70 60 CLB 50 40 30 20 5

Estimation results Experimental results

10

15 n

20

25

30

Fig. 6. Virtex II series PFPM implementation

35 30 25 PS [Mflop] 20 15 10 5 0 5 10 15 n 20 25 30

80 70 60 CLB 50 40 30 20 5

Estimation results Experimental results Spartan Experimental results Virtex Experimental results Virtex II

10

15 n

20

25

30

Fig. 7. Performance evaluation

Conclusion

This work addresses a novel oating-point multiplier wich can be easily implemented on several FPGA series. The proposed design, based on a sequential multiplication, provides a meaningful area reduction. This feature is useful not only to increase the system 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 the estimation of the logic resources consumption for a given design. The theoretical behavior was contrastated with the implementation for several FPGA series with less than a 5% of dierence in the logic consumption. The experimental results shown also the dierence in processing speed between a FPGA series among the other. This results allow the exploration of the benecs of select a dierent FPGA 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 anlisis de su materializacin en FPGA. Proc. of VI Workshop Iberchip., pages a o 158168, 2000. 3. GH. A. Aty, Aziza I. Hussein, I.S. Ashour, and M. Mones. High-speed, area-ecient FPGA-based oating-point multiplier. pages 274277, 2003. 4. T.-S. Chang and C.-W. Jen. Hardware-ecient implementations for discrete function transforms 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. IEEE SIGNAL PROCESSING MAGAZINE, pages 2035, 2000. 6. John P. Hayes. Introduccin al Diseo Lgico Digital. Addison-Wesley Iberoamericana, o n o 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. Jimnez, Nayda G. Santiago, and Diane T. Rover. Development of a scalable e FPGA-based oating point multiplier. Proceedings of the Fifth Canadian Workshop on Field-Programmable Devices, pages pp. 145 150, 1998. 9. III Walter B. Ligon, Scott McMillan, Greg Monn, Kevin Schoonover, Fred Stivers, and Keith D. Underwood. A re-evaluation of the practicality of oating-point operations on FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines, pages 206215, 1998. 10. Nabeel Shirazi, Al Walters, and Peter Athanas. Quantitative analisis of oating point arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines, pages 155162, 1995.

AADECA 2006 XX Congreso Argentino de Control Automtico 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.

PERFORMANCE EVALUATION OF FPGA FLOATING POINT MULTIPLIERS Funes, Marcos , Carrica, Daniel O. Benedetti, Mario

L.I.C., Universidad Nacional de Mar del Plata, CONICET mfunes@.mdp.edu.ar

Abstract: The implementation of FPGA-based oating Point multipliers require the availability of huge logical resources, constraining their use in some applications. The use of sequential multipliers instead of standard parallel multipliers reduce the area allocated on the FPGA. A comparison of sequential multiplier against parallel ones is developed. A performance index is introduced to compare the obtained results. Keywords: multiplication, oating point arithmetic, eld programmable gate arrays, signal processing

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 (Chang and Jen, 1999)(Dick and Harris, 2000). FPGAs combine the exibility of a general-purpose, programmable digital signal processor with the speed and density of a custom hardware implementation. A digital processing implementation into a target FPGA should be optimized in terms of logic resources consumption to achieve a good performance and cost-eectiveness. Digital Signal Processing mainly involves multiply operations which can be either x or oating point, depending on the operand-range. An operand expressed in oating point format consist
0

of a sign bit S, a biased exponent e of r bits and the fractional f of n bits. These elements express a number given by the following equation: OP = (1)S 2ebias 1.f (1)

Floating point multiplications involve sign setting, e exponent addition (with bias correction), mantissas product (including the leading bit) with rounding and normalization (IEEE754, 1985). The mantissas product is performed as an integer multiplication. This multiplication is often performed in a parallel way and is the most logic resources consumer operation. The great consumption of resources leads to the following problems: Greater FPGA are necessary. More expensive FPGA are required. Diculty to implement several multipliers in one FPGA. Ligon et al assesed the practical implementation of several oating point multipliers in a Xilinx XC4000 series, requiring bigger FPGAs to use more than one multiplier in the same chip (Ligon

This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and the Agencia Nacional de Promocin Cient o ca y Tecnolgica (BID 1201/OC-AR o 2002).The authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

AADECA 2006 XX Congreso Argentino de Control Automtico 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.

et al., 1998). Other authors studied and proposed dierent parallel schemes of FPGA Floating-Point Multipliers in order to reduce logic consumption (Shirazi et al., 1995) (Jimnez et al., 1998.). e These authors proposed custom formats and several methods prioritizing a reduced logic resources consumption. Some other results were presented by Aty et al over more recently FPGAs (Aty et al., 2003). Floating point multipliers based on Virtex II embedded parallel multipliers with several level of pipelining were presented by authors like Lee and Burgess (Lee and Burgess, 2002). Other contributions proposed the use of sequential multipliers instead of standard parallel multipliers in order to reduce the area allocated on the FPGA, balancing the economy on resources with the processing speed (Funes et al., 2002)(Funes et al., 2006). The performance achieved a substantial reduction in terms of logical blocks with an acceptable calculation rate. In this paper, a comparative analysis of a sequential scheme against other parallel ones is carried out. Section 3 deals with an evaluation concerned the logical resources consumption. Section 4 presents a global index which includes both the logical resources and the processing speed. The comparison of schemes from dierent authors is performed using this index. 2. SEQUENTIAL FLOATING POINT MULTIPLIER The sequential scheme (SM) like the Shift and Add algorithm reduce the logic resources consumption, Fig.1 (Hennessy and Patterson, 1996). This scheme is based on a control stage and the multiplexer to execute the partial products. In this scheme, the partial product is added to the last shifted result and is stored in the corresponding output registers.
n

2n bit product Product Truncation ** ** ** ** ** ** No Round ** 0...0 Overflow 1* Normalize 01 ** n bit result ** ** ** 10 01 00 ** 00 0...0 No Overflow ** 01 ** ** N discarded bits

Overflow 1* Round 00 ** 00

No Overflow

Fig. 2. Rounding and normalization. and then truncates by removing the bits to the right of the LSB. The rounding scheme is shown in Fig.2. Whenever the product result in the range 4 product 2 a normalization is executed, with an appropiate adjustment of the exponent. 3. LOGICAL RESOURCES COMPARISON The logic resources used by the SM are compared with those from parallel multipliers. The parallel multipliers included in the comparison are: (a) Guild scheme with a high throughput due to the use of parallelism and pipelining, (b) McCanny McWhirter multiplication scheme with local communication between its basic cells, (c) Carry Save unit with constant delay in the carry chains and (d) a Ripple Carry multiplication unit which take advantage of the fast carry logic nets provided by the manufacturer (Acosta et al., 2000). Equations (2), (3), (4) and (5) show the logic resources consumption of the Guild, McCanny - McWhirter, Carry Save and Ripple Carry, respectively. 6 2 23 n + n+8+r 20 25 87 n 39 + r M cCanny(n, r) = 10 CarrySave(n, r) = 7n 27 + r 73 n 32 + r RippleCarry(n, r) = 10 Guild(n, r) =
(2)
(3) (4)
(5)

shift carry
n-1 n

Partial Product

ADD

n n

MUX

rounding

normalization

X
Control

The logic resources consumption of the sequential scheme is expressed by Eq. (6):
log2 n+1 i=1

(n2i )
+

Fig. 1. Integer sequential multiplier. The rounding mode implemented in this multiplier is round to nearest even. This means always round to nearest, and in the case of a tie round to even. Then, when rounding, this system adds 1 2 to the least signicant bit of the desired result

SM (n, r) =

17 log2 (n + 1) +n+ +r 2 2 (6)

Eq. (6) can be reduced to eq.(7). SM (n, r) = 49 n+9+r 32


(7)

AADECA 2006 XX Congreso Argentino de Control Automtico 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.

Figure 3 shows a comparison of the logic resources consumption for the selected multipliers with a typical 8 bit exponent (r = 8). The horizontal lines in the same gure indicates the amount of available basic cells in several Spartan FPGAs of Xilinx Inc. (The Programable Logic Data Book, 2000). It can be observed the small of logic resources needed for the SM in contrast to the parallel multipliers applied to the oating point multiplication. The SM can be implemented in all platforms for any mantissa word length, while for other schemes the implementation is restricted to larger FPGAs. Besides, the proposed scheme make possible the implementation of several multipliers in the same FPGA.

SM

Performance

SM

Aty Jimenez Shirazi Jimenez Ligon SM

Wordlength Format

Fig. 4. Spartan multipliers performance


SM

of 24-bit multipliers. Although the speed of the multiplier proposed by (Jimnez et al., 1998.) e is similar to that of SM, logical resources get notoriously reduced in the latter, thus rendering a signicantly higher performance. For 32-bit format, the SM utilizes 13% of the FPGA. The better performance index obtained with SM results from the dierences of the designs: the 3-stage Booth-based multiplier proposed by (Ligon et al., 1998) is characterized by its fast speed, but it consumes 82% of the FPGA. If compared, despite being half slower, the SM consumes 5 times less. The proper multiplier selection depends, in this case, on the type of project or FPGA size. Figure 5 shows the performance index for the multipliers implemented in Virtex II FPGA. For 18-bits format, the SM achieves superior performance to that proposed in the literature (Shirazi et al., 1995; Jimnez et al., 1998.; Aty et al., 2003). e In addition to the decreasing level of logical resources employed, the proposed design is faster. For 32-bits, the dierence is small and the performance index for the SM results from its low logical resource consumption. On the other hand the high performance of the 32-bit multiplier (Lee and Burgess, 2002) result from its high processing speed. For these multipliers the applicability depends on the design constraints, i.e., less area or high speed. 5. CONCLUSION This work compares the sequential multiplier against several parallel ones. The sequential multiplier provides a meaningful area reduction with an acceptable calculation rate. A performance index rendering an eective evaluation of multipliers is also introduced in this paper. The sequential multiplier is compared with those reported by some authors and assessed in

Fig. 3. Logic consumption comparison.

4. PERFORMANCE EVALUATION In order to evaluate the overall performance a performance index p is dened as follows: Processing Speed [Mops] (8) Area where the Processing Speed is dened in Million of Floating-Point Operations per second and the Area as the used fraction with respect to the total resources available (Full FPGA = 1). This index is useful in the selection of a multiplier for a given design because allows to compare several kinds of multipliers and wordlengths. p=
Figure 4 illustrates the p bar diagram corresponding to the Sequential Floating Point Multiplier (SM) and reported multipliers implemented in the XCS20 FPGA for several wordlengths. For 18-bit format, the SM reduces at least four times the logic area if compared to the reports by other authors (Shirazi et al., 1995; Jimnez et e al., 1998.; Aty et al., 2003; Ligon et al., 1998). Fig.4 shows that the best index score is reached with SM. Also, this gure depicts the performance

AADECA 2006 XX Congreso Argentino de Control Automtico 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.
SM

Aty

Lee

SM

Wordlength Format

Fig. 5. Virtex II multipliers performance terms of its performance index. The multiplier has demonstrated to be superior to some reported multipliers in term of this performance index. REFERENCES IEEE754, IEEE Std (1985). IEEE standard for binary oating-point arithmetic. The Institute of Electrical and Electronics Engineers Inc.. New York. Acosta, N., E. Todorovich, C. Collado and K. Larsen (2000). Multiplicadores paralelos: Estado del arte y anlisis de su materiala izacin en FPGA.. Proc. of VI Workshop o Iberchip. pp. 158168. Aty, GH. A., Aziza I. Hussein, I.S. Ashour and M. Mones (2003). High-speed, areaecient FPGA-based oating-point multiplier. pp. 274277. Chang, T.-S. and C.-W. Jen (1999). Hardwareecient implementations for discrete function transforms using LUT-based FPGAs. Computers and Digital Designs - IEE Proceedings 146, Issue 6, 309. Dick, Chris and Fred Harris (2000). FPGA signal processing using sigma-delta modulation. IEEE SIGNAL PROCESSING MAGAZINE pp. 2035. Funes, M., D. Carrica and M. Benedetti (2002). Multiplicadores de punto otante para estructuras FPGA. Proceedings XVIII Congreso Argentino de Control Automtico 1, 40. a Funes, M., D. Carrica and M. Benedetti (2006). Floating point multipliers with reduced fpga area. Proceedings II Southern Programmable Logic Conference ISBN 84-609-8998-4 1, 59 66. Hayes, John P. (1996). Introduccin al Diseo o n Lgico Digital. Addison-Wesley Iberoamerio cana. Wilmington, Delaware, E.U.A. Hennessy, John L. and David Patterson (1996). Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc..

San Francisco, California ISBN: 1-55860-3298. Jimnez, Manuel A., Nayda G. Santiago and Die ane T. Rover (1998.). Development of a scalable FPGA-based oating point multiplier. Proceedings of the Fifth Canadian Workshop on Field-Programmable Devices pp. pp. 145 150. Lee, B. and N. Burgess (2002). Parameterisable oating-point operations on FPGA. Conference Record of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers pp. 10641068. Ligon, III Walter B., Scott McMillan, Greg Monn, Kevin Schoonover, Fred Stivers and Keith D. Underwood (1998). A re-evaluation of the practicality of oating-point operations on FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines pp. 206215. Shirazi, Nabeel, Al Walters and Peter Athanas (1995). Quantitative analisis of oating point arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines pp. 155162. The Programable Logic Data Book (2000). Xilinx.

Performance

Novel FPGA based Floating Point Multiplier: Consecutive-Sums Sequential Multiplier


M. Funes, D. Carrica, M. Benedetti, P. Donato
Laboratorio de Instrumentacin y Control o Universidad Nacional de Mar del Plata, Argentina mfunes@fi.mdp.edu.ar

Abstract. FPGA based Floating Point Multipliers of Parallel type demand abundant logical resources. On the other hand, Sequential type, required reduced logic resources but al the expense of a worse processing speed. This paper presents a new sequential structure of oating-point multiplier with a better processing speed keeping on a reduced number of resources.

INTRODUCTION

Many applications in Digital Signal Processing (DSP) employ the parallel processing capability of Field Programmable Gate Arrays (FPGAs) to obtain a high processing speed [1] [2]. FPGAs combine the exibility of a general-purpose, programmable digital signal processor with the speed and density of a custom hardware implementation. However, a FPGA digital processing implementation presents a great logic resources consumption which should be optimized because the great consumption leads to the following problems: Greater FPGA and more expensive are necessary. Diculty to implement several multipliers in one FPGA. Several authors studied and proposed dierent parallel schemes of FPGA FloatingPoint 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 parallel multipliers in order to reduce logic consumption [6]. This article proposes the consecutive-sums sequential multiplier which achieves more speed than the obtained in [6] maintaining the same speed vs logic resources gure. The multiplier was implemented 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) and the Agencia Nacional de Promocin Cient o ca y Tecnolgica (BID 1201/OC-AR 2002).The o authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

Floating Point Multiplication

A oating point format consists of a sign bit s, a biased exponent e of r bits and the fractional f of n bits whose value is expresed by (1): OP = (1)S 2ebias 1.f (1) Floating point multiplications involve sign setting, e exponent addition (with bias correction) and mantissa product (including the leading bit) [7]. The latter is performed as an integer multiplication and is the most logic resources consumer.
Sign
Exponent Mantissa

Exclusive - OR

Exponent Addition

Mantissas Product

Bias Adjustment

Rounding

Exponent Adjustment

Normalization

Sign

Ofl.

Exponent

Mantissa

Fig. 1. Floating Point Multiplication. Furthermore, the multiplication is often executed in parallel way, Eq.(2):
n

p = 1.fx 1.fy =
i=0

[yi (1xn1 ..x2 x1 x0 )] 2i

(2)

where 1.fx = {xn ..x1 x0 } and 1.fy = {yn y1 y0 } 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 consumption of the mantissas product was proposed by Funes et al. [6]. This multiplication executes the product using only one adder, Eq. (3): p = 2n1
n1 i=0

yi X 2in+1

(3)

The processing speed of the SM depends on the clock frequency and the number of iterations. The consecutive-sums sequential multiplier (SMSC) can reduce the number of iterations by performing the addition of two subproducts at the same time, as shown in the Eq. (4). n p = 2n1
2

(yj X22j(n1)+ yj+1 X22j+1(n1) ) (4)

j=0

Thus, the processing period is T = n TCK , being TCK the clock period and n 2 the mantissa wordlength. The multiplier scheme of a xed point SMSC multiplier is shown in Fig. 2.

LSB 2 bits shift carry carry


n-1 2n-1

Partial

n-1

Product

ADD ADD
n n n n

n/2

MUX
n/2

Y[even bits] Y[odd bits]

MUX

X Control

Fig. 2. Consecutive sum sequential multiplier (SMSC).

2.2

Rounding and Normalization

The multiplier rounds the mantissas to +. This means always round to the the closest to and no less than the innitely precise result. Then, when rounding, this 1 system adds 2 to the least signicant bit of the desired result and then truncates by removing the bits to the right of the LSB. There are three possible rounding operations which then occur. The rst one is no rounding if the value of all the bits to the right of the round bit is 0 or The second one is or the result is negative. To consider the rst case, this operation can be computed storing in a register if any of the discarded bits was a 1. If the register value is 0 the the result of the mantissas product is just the truncation of the least signicant bits. The second case is after the computation of the result sign. The other two rounding operations depends on the most signicant bit of this product as seen in Fig. 3.

2n bits product Product Truncation + Rounding 00 00 0...0 01 No rounding 1* ** ** ** ** ** ** ** ** ** n bits discarted

Overflow 1* Rounding 00 1* Normalization ** 00 ** 0...0

No Overflow ** 01 ** 01 **

No Overflow **

**

n bit product

Fig. 3. Rounding and normalization.

When rounding, the system rounds by default in the last iteration and check the result. If the result is in the range 1 p 2, the result is correctly rounded. But if the result is in the range 4 rounded product 2, a normalization shift of 1 to the right is then 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 cases in which the rounded results is correct and two other that need a correction. The rst case occurs when the LSB of the truncated product of n-th iteration was a 1, because the 2n addition propagates to the nearest signicant bits. Consequently this is equivalent to add 2n to a non-rounded result after normalization. The other case occurs when the LSB of the truncated result was a 0, because the 2n addition doesnt propagates to the nearest signicant bits. The result after normalization is equivalent to a truncation. Then, a new rounding operation is required. The Table 1 shows an example of the second case.
Truncated result (TR) 10.*****00 10.*****01 10.*****10 10.*****11 TR + 2n TR normalized TR expected 10.*****01 1.*****0 1.*****1 10.*****10 1.*****1 1.*****1 10.*****11 1.*****1 1.*****0 10.*****00 1.*****0 1.*****0 Action round none round none

Table 1. Rounding error of the normalized product.

Fig. 4 shows the mantissas product with the rounding and normalization scheme. In this gure it can be observed the control unit that performs the multiplication iterations besides the rounding and normalization tasks.

LSB 2 bits shift carry carry


n-1 n+1 n

Partial Product

0 n+1 n

Result 1 bit shift

ADD
n n

n/2

ADD
n

MUX
n/2

Y[even bits] Y[odd bits]

MUX

X
discarded bit Default rounding Control Exponent correction Sign Normalization Post-normalization rounding

Fig. 4. Mantissa product scheme.

Experimental results

The proposed multiplier was implemented in VHDL [8] [9]. The mantissa wordlength was parameterized while the exponent was xed (e = 8). The design evaluated in terms of logical resources and Processing Speed (PS) was implemented on two Xilinx platforms: Spartan and Virtex. The evaluation of the proposal in the several FPGAs allows the exploration of the benets of the dierent FPGA series to improve a better performance. In the Spartan series, the basic cell of logic is denominated Congurable Logic Block (CLB), each of one contains two 4-input Function generators and two Flip Flops. The Virtex series rename the CLB as a slice and each CLB contains two slices. In this work, the logic resources consumption is unied 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 multiplier and the maximum clock frequency. The maximum clock frequency is limited by the propagation delay of the critical path. In order to evaluate the performance of the proposed scheme, the SMSC oating point multiplier was compared with a SM scheme with the same rounding and normalization scheme. Figs. 5 and 6 present the logic resources and processing speed comparison for a Spartan and Virtex series respectively. In this gures, it can be observed the relation between the processing speed obtained in contrast with the logic resources consumed.

15

PS [Mflop]

10

10

15 n

20

25

30

120 100 80 CLB 60 40 20 0 5

Experimental results SMSC Experimental results SM

10

15 n

20

25

30

Fig. 5. Spartan series implementation, comparison


30 25 PS [Mflop] 20 15 10 5 0 5 10 15 n 20 25 30

120 100 Basic cells 80 60 40 20 0 5

Experimental results SMSC Experimental results SM

10

15 n

20

25

30

Fig. 6. Virtex series implementation, comparison

To evaluate the processing speed-logic consumption relation, Figs. 7 and 8 show the performance of the proposal vs. SM based scheme for the Spartan (XCS20) and Virtex (XV300) implementation. The performance index p is dened as follows: p= Processing Speed [Mops] Area (5)

where the Processing Speed is expressed in Million of Floating-Point Operations per second and the Area is the fraction used resources vs. total resources of a FPGA.
100 Experimental results SMSC Experimental results SM 90

80

70

60

50

40

30

20

10

0 15

20

25 n

30

35

40

Fig. 7. Spartan series implementation, performance index

These gures show that the performance is as good as the SM based scheme, with the benets of a better processing speed.

Conclusion

This work addresses a novel oating-point multiplier witch can be easily implemented on several FPGA series. The proposed design, based on a consecutive sums sequential multiplication, provides an optimization in the processing speed with the goal of a reduced logic resources consumption. The performance obtained was experimentally assessed, achieving a substantial increment in the calculation rate.

2000 Experimental results SMSC Experimental results SM 1800

1600

1400 Performance index

1200

1000

800

600

400

200

10

15 n

20

25

30

Fig. 8. Virtex series implementation, performance index

References
1. Chang, T.S., Jen, C.W.: Hardware-ecient implementations for discrete function transforms 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 SIGNAL PROCESSING MAGAZINE (2000) 2035 3. Shirazi, N., Walters, A., Athanas, P.: Quantitative analisis of oating point arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (1995) 155162 4. Jimnez, M.A., Santiago, N.G., Rover, D.T.: Development of a scalable FPGA-based e oating point multiplier. Proceedings of the Fifth Canadian Workshop on FieldProgrammable Devices (1998.) pp. 145 150 5. Aty, G.A., Hussein, A.I., Ashour, I., Mones, M.: High-speed, area-ecient FPGA-based oating-point multiplier. (2003) 274277 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) 5966 7. 754, I.S.: IEEE standard for binary oating-point arithmetic. The Institute of Electrical and Electronics Engineers Inc., New York (1985) 8. Villar, E., Ters, L., Olcoz, S., Torroja, Y.: VHDL Lenguaje Estandar de Diseo e n Electrnico. McGraw Hill, Madrid (1997) o 9. Ghosh, S.: Hardware Description Languages Concepts and Principles. IEEE Press, 445 Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331 (1999)

10. Ligon, I.W.B., McMillan, S., Monn, G., Schoonover, K., Stivers, F., Underwood, K.D.: A re-evaluation of the practicality of oating-point operations on FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines (1998) 206215 11. Lee, B., Burgess, N.: Parameterisable oating-point operations on FPGA. Conference Record of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers (2002) 10641068

120

IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Novel Stepper Motor Controller Based on FPGA Hardware Implementation


Daniel Carrica, Senior Member, IEEE, Marcos A. Funes, and Sergio A. Gonzlez, Member, IEEE
AbstractThis paper proposes a novel stepper motor controller based on field programable gate arrays, showing a remarkable performance. The system provides a combination between a novel algorithm and programmable logic to achieve both high speed and high precision on a compact hardware. Index TermsField programable gate arrays (FPGA), motion control, stepper motor.
Fig. 1. Complete control system.

I. INTRODUCTION N HIGH precision stepper motor applications, it is necessary to use motors with small steps whose size is imposed by the required resolution. Another alternative is the technique of microstepping, where the motor step size is further reduced by means of control. As microsteps are related to very little displacements, a great quantity of microsteps are required to get the total displacement. Total displacement should be executed in an acceptable time. As a consequence, the time between microsteps should be reduced. A high-speed data transmission between controller and driver is mandatory when indexing in microstepping mode of operation. Furthermore, open loop applications are much less expensive than close loop ones due to encoders. If open loop is chosen, velocity profiles have to be used in order to avoid the step lose effect. A general system for the commanding of a stepper motor is shown in Fig. 1. There are three functions: 1) the velocity profile 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 translated into pulse intervals by the indexer. Each index pulse means that the motor must increment its rotor position in one step/microstep, hence the name indexer. This block functions as a velocity-to-time translator. This block is unique to the commanding of incremental motion devices since other types

of motors can be commanded just by applying the velocity profile in form of current or voltage [1], [2]. The implementation of the controller of Fig. 1 can be performed by two alternatives: off-line or on-line schemes. A. Off-Line In the off-line schemes the timing of the steps/microsteps is calculated prior the movement [3], [4]. The velocity profile and the time space between pulses are calculated and then stored in 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 important hardware volume, composed of memories and timers. This volume is proportional to the quantity of motors and the extension and precision of displacements. B. On-Line An intelligent system carries out the operation of calculating the index pulses through a time lagging sequence generation algorithm. In Fig. 2 a flowchart of one basic scheme can be seen. construction, This flowchart contains two main blocks: calwhere the velocity profile is actually developed, and culation, where the time between the current step and the next is is the velocity profile generation and calculated. That is, is the indexer of Fig. 1. Often a common block is shared because a single equation computes both the velocity profile and . For example, (1) and (2) express a typical algorithm the for a trapezoidal profile [5].

Manuscript received November 26, 2001; revised October 16, 2002. Recommended by Technical Editor K. Ohnishi. This work was supported in part by the Universidad Nacional de Mar del Plata under Grant ING-15/G064 and in part by the Agencia Nacional de Promocin Cientfica y Tecnolgica under Grant BID 1201/OC-AR 2000. D. Carrica is with the Department of Electronics, National University of Mar del Plata, Mar del Plata, Argentina. He is also with He is also with the Centro Austral de Investigaciones Cientficas (CADIC), Tierra del Fuego, Argentina. M. A. Funes is with the Department of Electronics, National University of Mar del Plata, Mar del Plata, Argentina. S.A. Gonzlez is with the Laboratorio de Instrumentacin y Control, Department of Electronics, National University of Mar del Plata, Mar del Plata Argentina. He is also with the Comision de Investigaciones Cientificas (CIC), Buenos Aires, Argentina (e-mail: sagonzal@ieee.org). Digital Object Identifier 10.1109/TMECH.2003.809160

(1) step (2)

is the resulting speed, is the maximum speed where of the motor, is the total number of steps or microsteps, is is the time the acceleration of the trapezoidal profile and of the -th step.

1083-4435/03$17.00 2003 IEEE

CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE

121

Fig. 3. Flow chart of the algorithm.

Fig. 2.

On-line algorithms.

2) Assume (5)

These schemes as well as the off-line ones make use of timers for obtaining the indexed pulses. Since it is necessary one timer per motor, this approach is often discouraged when multiple motors have to be commanded by a single processor. Another important disadvantage is the computing time , required to compute (1). imposes a practical limit to the speed. but the timer resolution, , affect the Moreover, not only maximum speed as in (3) (3) Current timer resolutions are small enough to discard the at the equation. Therefore, (3) turns into (4). (4) Standard algorithms fail to reach high speeds, mainly because the goal is to the computing time, . In order to resolve provide a new algorithm with a more effective step generation procedure without timers. II. PROPOSED ALGORITHM The proposed algorithm can be explained as follows. In order , it is assumed that is times to estimate the time , since it is an accurate way of measuring time without using timers. Therefore, the proposed algorithm has to do the following functions during each iteration: 1) Let

is a positive integer number. where allows the wished 3) Verify if assumed means

. Thus, it

(6) is the reference velocity at the th step. where 4) If the verification is true, then execute the new step/microstep. If not, then increment and repeat the process. (points 2, 3, and 4) (7) is . The From (5) it can be seen that the resolution of equality in (6) is not possible because of this resolution. Equation (6) becomes the comparison stated in (8) (8) Eliminating the division in (8) is mandatory for reducing the iteration time. Therefore a simple contraction as in (9) is preferred (9) The new algorithm is based on (5), (7), and (9). in (5) has the same meaning as in (4), but with a considerable smaller magnitude, since the computations here are very straightforward. It

122

IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

Fig. 5. FPGA based control system.

Fig. 4.

Intended velocity profile.

is experimentaly demonstrated that a ten times less than in conventional algorithms is achieved. To conclude, the algorithm consists basically on a periodic accumulative sum until the intended velocity is reached. Fig. 3 shows the flowchart of a system that implements (5), (7) and (9). The velocity profiles block was previously executed. resolution of the new algorithm is since From (5), is 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 characteristics:

Therefore, an algorithm has been developed which requires neither timers nor lookup tables and can work for much higher speeds. Its disadvantage is the quantification effect which depends on the magnitude of . With current DSP technology, a s is obtainable. This magnitude produces minimun a quantification level of 2000 steps at speeds arround 15 000 steps/s, which shows the importance of the problem. III. HARDWARE IMPLEMENTATION In order to reduce the computing time, a hardware implementation is proposed. The algorithm presented in Section II is simple enough to be executed by a custom hardware. Hardware implementation permits multiple parallel tasks, thus, providing an effective way of implementing true parallelism which allows a great reduction of computing time because operations such as the reference profile generation, multipication and indexation can be executed in separate blocks and can run independently ones of the others. Equations (5) and (9) are replaced by (11) . Although, this means no changes in the algorithm, it reduces the pair of multiplications to only one. This fact allows an efficient hardware implementation without performance demerit. Hardware implementation of (5) and (9) is presented in Fig. 5, where the block diagram of the controller is shown. The COUNTER, clock periods, represents the execution of (5). wich counts The hardware implementation of (11) is carried out by the MULTIPLIER and the COMPARATOR (11) When the inequation is satisfied, a new step is commanded. The signal is then fed to the DRIVER INTERFACE, which commands the pulses to the driver of each motor phase. Fig. 5 shows a four phase motor. of hardware implementation is equivaThe clock period lent to the computing time in the software execution of the algorithm of Section II. The clock period defines the time resolution of the controller. As can be well reduced in hardware ap-

. . .

. . .

(10)

As an example, Fig. 4 shows a trapezoidal profile which starts and has a maximum . In order to keep track of the at intended speed (in discontinuous line), the system commands an . This results in an initial speed of initial value of which is the closest possible speed to the intended initial speed, . At , changes to 6. As a consequence a higher speed occurs. At , produces a commanded speed of . It then follows that at time the commanding speed of which equals the intended velocity profile. is The quantification effect is more remarkable at higher speeds times are smaller as . The effect can also be exwhen plained since intermediate speeds cannot take place between and , or between and , nor among and , etc.

CARRICA et al.: NOVEL STEPPER MOTOR CONTROLLER BASED ON FPGA HARDWARE

123

Fig. 6.

Position and velocity profile with the FPGA based system.

Fig. 7. Velocity profile with the FPGA based system.

proach, the quantizacion effect on the mechanical velocity will be negligible. Standard implementation of a multiplier is accomplish by a combinatorial structure. This approach is very good regarding time because it presents a minimum delay imposed by the the 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 a 10 000 logic gates FPGA [6], [7]. In order to overcome the FPGA area problem, a sequential arquitecture for the multiplier is proposed [8], [9]. This approach allows an effective area reduction of 10 times, but with a greater , i.e., 16 clock pulses for a 16-bit word multiplier. However, with a 40 MHz clock, time is only 400 ns which remains neglicted for system performance. As a consequence, a sequential multiplier was adopted, which permited the implementation of the algorithm in a FPGA of 6000 logic gates. A trapezoidal profile is generated, with several parameters, such as acceleration, minimum and maximum speed, and step quantity. The controller decides how the profile must be based on these parameters, and generates a reference profile to drive the stepper motor. As a conclusion, a new controller based on a novel algorithm implemented by hardware was proposed. The new system provides a good combination to achieve both high speed and high precision motion on a compact hardware. Furthermore, this controller can easily drive full, half and micro-step mode applications due to the flexibility and the reduced computing time with the FPGA implementation. IV. EXPERIMENTAL RESULTS To evaluate the performance of the system, the developed algorithm was implemented in a Xilinx FPGA XC40063. This device can run at synchronous system clock rates up to 80 MHz and has a capacity 6000 logic gates. A hybrid stepping motor was used in the experiments. Motor characteristics: 400 step/rev, 10 N m. No inertial moment 13 10 kg m , aditional load was connected.

The position measures were obtained through an incremental optical encoder ELAP-E521 with a resolution of 1024 10 kg m . It was pulses/rev whose inertial moment is coupled through an HELICAL-WA25 with an inertial moment 10 kg m . of The position curve was obtained by reading the encoder signal with a high resolution timer. The position was off line derived to obtain the speed profile. The muliplier works with a 40-MHz clock rate, which yield ns was adopted, wich a multiplication time of 400 ns. remains negligible in relation to the motor speed. The stepper motor must develop a 12 000 step displacement following a reference trapezoidal profile with charasteristics: steps s, steps s and a max accelsteps s . eration The resultant speed and position profiles can be seen in Fig. 6. time allows an almost continuous profile and very The low high speeds, higher than those generated by standard software algorithms. Due to the characteristic of the profile, the stepper motor passes through resonance area [5]. This effect can be observed at low speeds in the profiles. Fig. 7 shows a complete profile obtained at high speeds with full step. Note the continuity at all the effective speed range. Fig. 8 shows a complete profile obtained for a microsteping application. The stepper motor used in this experiment was a SLO-SYN KML093F14C5 whose characteristics are: 200 816 N cm and a rotor inertia step/rev, holding torque 3.32 kg cm . The position values were obtained through an optical incremental encoder with a resolution of 500 pulses/rev. The microstep drive module used was an SLO-SYN MD808, configured to produce 2000 pulses/rev. As a consequence, the system must generate a high velocity profile steps s, steps s and a max with steps s . The time adopted for acceleration the application was 400 ns in order to reduce the speed jumps to 1000 steps/s, so the speed jump remains under 5% at . This effect can be observed as a ripple component at of the top of the profile.

124

IEEE/ASME TRANSACTIONS ON MECHATRONICS, VOL. 8, NO. 1, MARCH 2003

[4] Z. Kang and S. Qu, A new methodology for using single microprocessor to control DC stepper motors, in Proc. IEEE Int. Conf. Industrial Technology, Dec. 1994, pp. 543545. [5] T. Kenjo and A. Sugawara, Stepping motors and their microprocessor controls, in Ser. Monographs in Electrical and Electronic Engineering. 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. Jurez, and J. Meneses, Taxonoma de multiplicadores, in Proc. 8th DCIS Conf., 1993, pp. 185190. [9] J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach. San Francisco, CA: Morgan Kaufmann, 1996.

Fig. 8.

Velocity profile for microsteping application.

The system achieved very high speed that was unreachable with standard algorithms executed by a processor. Furthermore the new controller does not require the timers, wich are necesary in conventional systems, and the processor was replaced by a FPGA of similar size and equivalent cost. V. CONCLUSION A novel algorithm with reduced quantity of operations was introduced. This algorithm implemented on FPGA allows a substantial decrease of the equivalent processing time developed by classic velocity controllers. As a consecuence, the stepper motor can reach very high speeds never obtained with standard algorithm based systems. Due to the system architecture, one FPGA can drive several stepper motors simultaneously without increasing the procesing time. It can drive three stepper motors with current 6000 gates FPGAs. This advantage make the system very convenient since it allows the increase of the number of motors, simply using a larger FPGA. REFERENCES
[1] B. K. Bose, Ed., Modern Power Electronics. New York: IEEE Press, 1992. [2] J. V. Wyk, H. Skudelny, and A. Mller-Hellmann, Power electronics, control of the electromechanical energy conversion process and some applications, Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369399, Nov. 1986. [3] J. Crook, Low cost microprocessor based speed control , in Proc. 13th Annu. Symp. Incremental Motion Control System and Devices, P. B. Kuo, Ed., Champaign, IL, May 1984, pp. 2530.

Daniel Carrica (M84SM00) was born in Dolores, Argentina, in 1958. He received the engineer degree from the National University of Mar del Plata (UNMdP), Mar del Plata, Argentina, in 1984 and the M.Sc. degree in electronics from the Universidad Politcnica de Madrid, Madrid, Spain, in 1992. In 1984, he joined the Department of Electronics, National University of Mar del Plata (UNMdP), as a Research Assistant. From 1990 to 1991, he was an Associate Scientist at the European Organization for Nuclear Research (CERN), Geneva, Switzerland. From 1994 to 1996, he was Head of the Department of Electronics, UNMdP where he is currently an Associate Professor. He is also with the Centro Austral de Investigaciones Cientficas (CADIC), Tierra del Fuego, Argentina. His current research interests include motion control and power electronics. Professor Carrica is a Vice President of the Joint Chapter of Argentina IEEE Section.

Marcos A. Funes was born in Mar del Plata, Argentina in 1974. In 1999, he received his degree in electronic engineering from the Universidad Nacional de Mar del Plata (UNMdP), Argentina and joined the Laboratorio de Instrumentacin y Control, (UNMdP) as research assistant. Since 2000, he is Assistant Professor and is currently working toward his Ph.D degree at UNMdP. His current research interests include high density programmable logic devices and digital signal processing.

Sergio A. Gonzlez (M01) was born in Mar del Plata, Argentina, in 1972. He obtained the electronic engineering degree from the National University of Mar del Plata (UNMdP), Mar del Plata, Argentina, in 1999, where he is currently working toward the Ph.D. degree. Since 1999, he has been an Assistant Professor of control systems at the School of Engineering, UNMdP. Currently, he is a Research Assistant at the Laboratorio de Instrumentacin y Control, UNMdP. His research interests include hardware design, digital signal processing, motion control and electromechanical systems dynamics. Mr. Gonzlez is a Member of the International Federation of Automatic Control.

FPGA based stepper motor controller


Sergio A. Gonzlez1 , Marcos A. Funes1,2 , and Daniel Carrica1,2 a
Laboratorio de Instrumentacin y Control o Universidad Nacional de Mar del Plata, Argentina mfunes@fi.mdp.edu.ar 2 CONICET
1

Abstract. This paper proposes a novel stepper motor controller based on Field Programable Gate Arrays, showing a remarkable performance. The system provides a combination between a novel algorithm developed by the authors in a previous work and programmable logic to achieve both high speed and high precision on a compact hardware.

Introduction

Several motion control applications in which a load must be moved precisely involve high speed positioning of stepper motors. When multiple stepper motors must be controlled, conventional control algorithms fail to produce a high speed step rate. This problem arose in the simultaneous control and velocity prole generation of up to 6 stepper motors in the alignment system of the CERN Compact Linear Collider (CLIC) application [13]. The precise positioning of the motors require the use of velocity proles, which must be adjusted to a certain performance in speed and acceleration as well as the dynamics of the system in order to guarantee motion without step-loss. An intelligent system carries out the operation of calculating the index pulses through a time lagging sequence generation algorithm. For example, (1) and (2) express a typical algorithm for a trapezoidal prole [4]. t(k) = V(k) = 2 1 step t(k)
2 Vmax

2 (N k 1) a +

2 Vmax 2 (N 1) a

(1) (2)

where V(k) is the resulting speed, Vmax is the maximum speed of the motor, N is the total number of steps or microsteps, a is the acceleration of the trapezoidal prole and t(k) is the time of the k-th step.

This work was supported by the Universidad Nacional de Mar del Plata (ING15/G130) and the Agencia Nacional de Promocin Cient o ca y Tecnolgica (BID o 1201/OC-AR 2002).The authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

Sergio A. Gonzlez, Marcos A. Funes, and Daniel Carrica a

These schemes as well as the o-line ones make use of timers for obtaining the indexed pulses. Since it is necessary one timer per motor, this approach is often discouraged when multiple motors have to be commanded by a single processor. Another important disadvantage is the computing time Tc , required to compute (1). Tc imposes a practical limit to the speed. Moreover, not only Tc but the timer resolution, Tr , aect 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 = 1 Tc (4)

Standard algorithms fail to reach high speeds, mainly because the computing time, Tc . In order to resolve Vmax the goal is to provide a new algorithm with a more eective step generation procedure without timers.

Proposed algorithm

The proposed algorithm was introduced in a previous work [5]. The algorithm consists basically on a periodic accumulative sum until the intended velocity is reached. Fig. 1 shows the basic owchart of a system that implements this algorithm. From Fig. 1, t(k) resolution of the new algorithm is Tc since nk is an integer. t(k) resolution in the new algorithm arises to a velocity quantization problem because velocity is the inverse of t(k) . Since the term t(k) is a multiple of Tc and nk 1, it turns out that the speed commanded has the following characteristics: ; Vmax nk = 1 Vmax ; nk = 2 1 1 2 Vk (n) = (5) = = . . . . tk nk Tc . . Vmax K ; nk = K As an example, Fig. 2 shows a trapezoidal prole which starts at Vmin and has a maximum Vmax . In order to keep track of the intended speed (in discontinuous line), the system commands an initial value of nk = 7. This results in an initial speed 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 that at time t6 the commanding speed is Vmax which equals the intended velocity prole. The quantication eect is more remarkable at higher speeds when t(k) times are smaller as Tc . The eect can also be explained since intermediate

FPGA based stepper motor controller

th

D t(k)=nk Tc

Dt(k)

Fig. 1. Flow chart of the algorithm

speeds cannot take place between Vmax and Vmax /2. Neither between Vmax /2 and Vmax /3, nor among Vmax /3 and Vmax /4, etc. Therefore, the algorithm developed does not require neither timers nor lookup tables and can work at higher speeds. Its disadvantage is the quantication eect which depends on the magnitude of Tc . With current DSP technology, a minimum Tc = 6 s is obtainable. This Tc magnitude produces a quantication level of 2000 steps at speeds around 15000 steps , which shows the importance of s the problem.

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 custom hardware. Hardware implementation permits multiple parallel tasks, thus, providing an eective way of implementing true parallelism which allows a great reduction of computing time because operations such as the reference prole

Sergio A. Gonzlez, Marcos A. Funes, and Daniel Carrica a

Fig. 2. Intended velocity prole

generation, multiplication and indexation can be executed in separate blocks and can run independently ones of the others. The equations of Fig. 1 are replaced by (6). Although, this means no changes in the algorithm, it reduces the pair of multiplications to only one. This fact allows an ecient hardware implementation without performance demerit. Hardware implementation of Fig. 1 is presented in Fig. 3, where the block diagram of the controller is shown. The hardware implementation of (6) is carried out by the MULTIPLIER and the COMPARATOR. VR nk 1 Tc (6)

When the inequality is satised, a new step is commanded. The signal is then fed to the DRIVER INTERFACE, which commands the pulses to the driver of each motor phase. Fig. 3 shows a 4 phases motor. The clock period Tc of hardware implementation is equivalent to the computing time in the software execution of the algorithm of Section 2. The clock

FPGA based stepper motor controller

period Tc denes the time resolution of the controller. As Tc can be well reduced in hardware approach, the quantization eect on the mechanical velocity will be negligible. Standard implementation of a multiplier is accomplish by a combinatorial structure. This approach is very good regarding the Tc time because it presents a minimum delay imposed by the logic gates, but it involves a great number of logic resources, which increase proportionally with the multiplier word length. As an example, a 1616 bits product requires the 45% of a 20000 logic gates FPGA [6] [7]. In order to overcome the FPGA area problem, a sequential architecture for the multiplier is proposed [8] [9]. A sequential multiplier allows an eective area reduction of 10 times, but with a greater Tc , i.e. 16 clock pulses for a 16-bit word multiplier. However, a second approach using a fast scheme of the sequential multiplication (8 pulses per multiplication) achieve a Tc time of only 200 ns with a 40 MHz clock. As a consequence, the quantization problem is minimized and with the current scheme high speed proles can be achieved to perform microstepping applications. Also, the proposed scheme require the 12% of the logic area allowing the implementation of several multipliers in the same FPGA. A trapezoidal prole is generated, with several parameters, such as acceleration, minimum and maximum speed, and step quantity. The controller decides how the prole must be based on these parameters, and generates a reference prole to drive the stepper motor.

Clock Tc

Reference velocity profile generator

COUNTER 16

nk

16

VR

1/T
16

MULTIPLIER
VR x nk

16

Power Drivers DRIVER INTERFACE Stepper motor

COMPARATOR VR x nk 1/T
C

Fig. 3. FPGA based control system

Sergio A. Gonzlez, Marcos A. Funes, and Daniel Carrica a

As a conclusion, a new controller based on a novel algorithm implemented by hardware was proposed. The new system provides a good combination to achieve both high speed and high precision motion on a compact hardware. Furthermore, this controller can easily drive full, half and micro-step mode applications due to the exibility and the reduced computing time with the FPGA implementation.

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 cavities and quadruples, despite the multiple perturbations that aect the position. The displacement of girders and quadruples is performed through incremental motion motors. The girders that support the cavities are moved by three motors, while the quadruples are moved by ve motors, all coupled by ball and socket joints, as schematically shown in Fig. 4. In the 4 sections, there is a grand total of 70 motors along a distance of 5.6 m. Stepper motors are suitable for precise positioning in CLIC since motors with small step size are commonly available. The developed algorithm was tested on a prototype hardware where 6 motors must be controlled simultaneously, it has communication capacity with other hierarchic systems in order to produce the complete motion prole through all the sections.
z x vertical motor horizontal motor quadrupole y2 girder vertical motor y1 vertical motor horizontal motor horizontal motor vertical motor

: pivot

vertical motor

Fig. 4. Motor layout in the girders and in the quadruples

To evaluate the performance of the system, the developed algorithm was implemented in a Xilinx FPGA XCS20-4. This device can run at synchronous system clock rates up to 80 MHz and has a capacity 10000 logic gates. A hybrid stepping motor was used in the experiments. Motor characteristics: 400 step , rev inertial moment 13 107 kg m2 , Tret = 33 107 N m. No additional load was connected.

FPGA based stepper motor controller


Position profile

Position, [REV]

150

100

50

0 1 2 3 Time, [s] Velocity profile 4 5 6

80 Speed, [REV/s] 60 40 20 0

3 Time, [s]

Fig. 5. Position and velocity prole with the FPGA based system

The position measures were obtained through an incremental optical encoder ELAP-E521 with a resolution of 1024 pulses per revolution whose inertial moment is 2.5 106 kg m2 . It was coupled through an HELICAL-WA25 with an inertial moment of 2.3 106 kg m2 . The position curve was obtained by reading the encoder signal with a high resolution timer. The position was o line derived to obtain the speed prole. The multiplier works with a 40 MHz clock rate, which yield a multiplication time of 200 ns. was adopted, which remains negligible in relation to the motor speed. The stepper motor must develop a 60000 step displacement following a reference trapezoidal prole with characteristics: Vmin = 500 steps , Vmax = 36000 steps s s and a max acceleration amax = 16000 steps . s2 The resultant speed and position proles can be seen in Fig. 5. The low Tc time allows an almost continuous prole and very high speeds, higher than those generated by standard software algorithms. Due to the characteristic of the prole, the stepper motor passes through resonance area [4]. This eect can be observed at low speeds in the proles.

Sergio A. Gonzlez, Marcos A. Funes, and Daniel Carrica a


Position profile

150 Position, [REV]

100

50

0 10 20 30 Time, [s] Velocity profile 40 40 50 60

Speed, [REV/s]

30

20

10

10

20

30 Time, [s]

40

50

60

Fig. 6. Position and velocity prole for microstepping application.

Fig. 6 shows a complete prole obtained for a microstepping application. The stepper motor used in this experiment was a SLO-SYN KML093F14C5 whose characteristics are: 200 step , holding torque Thold = 816 N cm and a rotor inertia rev 3.32 kg cm2 . The position values were obtained through an optical incremental encoder with a resolution of 500 pulses per revolution. The microstep drive module used was an SLO-SYN MD808, congured to produce 2000 pulses per revolution. As a consequence, the system must generate a high velocity prole with Vmax = 72000 steps . The Tc time adopted for the application was 200 ns in s order to reduce the speed jumps under 5 % of Vmax . This eect can be observed as a ripple component at the top of the prole. The system achieved very high speed that was unreachable with standard algorithms executed by a processor. Furthermore the new controller does not require the timers, which are necessary in conventional systems, and the processor was replaced by a FPGA of similar size and equivalent cost.

FPGA based stepper motor controller

Conclusions

A novel algorithm with reduced quantity of operations was introduced. This algorithm implemented on FPGA allows a substantial decrease of the equivalent processing time developed by classic velocity controllers. As a consequence, the stepper motor can reach very high speeds never obtained with standard algorithm based systems. Due to the system architecture, one FPGA can drive several stepper motors simultaneously without increasing the processing time. It can drive three stepper motors with current 10000 gates FPGAs. This advantage make the system very convenient since it allows the increase of the number of motors, simply using a larger FPGA.

References
1. W. Coosemans and H. Mainaud, Pre-alignment of clic using the double-wire method, 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 2030, 2000, pp. 4852. [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, Universite Louis 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. Gonzlez, Algoritmo eciente para la generacin de perles a o de velocidad en el accionamiento simultneo de mltiples motores paso a paso, VIII a u Reunin de Trabajo en Procesamiento de la Informacin y Control., Vol. I , 1999, o o pp. 118122. 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 estructuras FPGA, IX Reunin de Trabajo en Procesamiento de la Informacin y o o Control., vol. Vol. II, pp. 646651, 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.