MULTIPLICACIÓN SECUENCIAL EN DISPOSITIVOS LÓGICOS PROGRAMABLES

´ SECUENCIAL EN MULTIPLICACION ´ DISPOSITIVOS LOGICOS PROGRAMABLES Ing. Marcos Funes Este Trabajo de Tesis fue presentado al Departamento de Electr´

8 downloads 170 Views 4MB Size

Story Transcript

´ SECUENCIAL EN MULTIPLICACION ´ DISPOSITIVOS LOGICOS PROGRAMABLES

Ing. Marcos Funes

Este Trabajo de Tesis fue presentado al Departamento de Electr´onica de la Facultad de Ingenier´ıa de la Universidad Nacional de Mar del Plata el 8 de Octubre de 2007, como requisito parcial para la obtenci´on del t´ıtulo de

Doctor en Ingenier´ıa. Menci´on Electr´onica

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

A mis Padres. A Andrea. A Nicol´as, Alejandro y Fernando

´Indice general Agradecimientos

XVII

Resumen

XVIII

Nomenclatura

XX

1. Introducci´ on

1

1.1. Estructuras de Multiplicadores . . . . . . . . . . . . . . . . . . . .

2

1.2. Objetivos de la tesis . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.3. Organizaci´on de la tesis

4

. . . . . . . . . . . . . . . . . . . . . . .

2. Arquitecturas de Multiplicadores

6

2.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.2. Algoritmo de la Multiplicaci´on . . . . . . . . . . . . . . . . . . . .

7

2.2.1. Operandos en punto fijo . . . . . . . . . . . . . . . . . . .

7

2.2.2. Operandos en punto flotante . . . . . . . . . . . . . . . . .

9

2.3. Adici´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.3.1. Semisumador . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.3.2. Sumador Total . . . . . . . . . . . . . . . . . . . . . . . .

13

2.3.3. Suma por Propagaci´on de Acarreo . . . . . . . . . . . . . .

15

2.3.4. Suma Carry-Save . . . . . . . . . . . . . . . . . . . . . . .

16

iii

2.3.5. Suma Multi-operandos . . . . . . . . . . . . . . . . . . . .

17

2.4. Multiplicadores Paralelos . . . . . . . . . . . . . . . . . . . . . . .

19

2.4.1. Multiplicador por Tabla de Look-up . . . . . . . . . . . . .

19

2.4.2. Multiplicador Ripple Carry . . . . . . . . . . . . . . . . .

20

2.4.3. Multiplicador Carry Save . . . . . . . . . . . . . . . . . . .

22

2.4.4. Multiplicador Guild . . . . . . . . . . . . . . . . . . . . . .

23

2.4.5. Multipicador McCanny-McWhinter . . . . . . . . . . . . .

25

2.5. Consumo de recursos l´ogicos . . . . . . . . . . . . . . . . . . . . .

25

2.5.1. Operandos en Punto Fijo . . . . . . . . . . . . . . . . . . .

25

2.5.2. Operandos en punto flotante . . . . . . . . . . . . . . . . .

31

2.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

3. Nuevas Arquitecturas de Multiplicadores

33

3.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

3.2. Multiplicaci´on Secuencial . . . . . . . . . . . . . . . . . . . . . . .

34

3.2.1. Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.2.2. Implementaci´on . . . . . . . . . . . . . . . . . . . . . . . .

37

3.2.3. Multiplicador Secuencial de Base 4 . . . . . . . . . . . . .

45

3.3. Arquitecturas Propuestas en Punto Fijo . . . . . . . . . . . . . .

56

3.3.1. Multiplicador Secuencial Sin Entradas Registradas . . . . .

56

3.3.2. Multiplicador Secuencial Fraccionado . . . . . . . . . . . .

61

3.3.3. Multiplicador de Sumas Consecutivas . . . . . . . . . . . .

67

3.4. Comparaci´on de los multiplicadores . . . . . . . . . . . . . . . . .

75

3.4.1. Multiplicadores optimizados en consumo de recursos . . . .

75

3.4.2. Multiplicadores optimizados en velocidad . . . . . . . . . .

76

3.4.3. Performance de los multiplicadores . . . . . . . . . . . . .

78

3.5. Arquitecturas Propuestas en Punto Flotante . . . . . . . . . . . .

80

iv

3.5.1. Variante Multiplicador Secuencial Sin Entradas Registradas 80 3.5.2. Variante Multiplicador Secuencial de Sumas Consecutivas .

86

3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

4. Resultados Experimentales

92

4.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

4.2. Par´ametros de inter´es . . . . . . . . . . . . . . . . . . . . . . . . .

92

4.3. Multiplicaci´on en Punto Fijo . . . . . . . . . . . . . . . . . . . . .

93

4.3.1. Consumo de recursos l´ogicos . . . . . . . . . . . . . . . . .

93

4.3.2. Comportamiento temporal . . . . . . . . . . . . . . . . . .

98

4.3.3. Comparaci´on de los multiplicadores . . . . . . . . . . . . . 101 4.4. Multiplicaci´on en Punto Flotante . . . . . . . . . . . . . . . . . . 114 4.4.1. Consumo de recursos l´ogicos . . . . . . . . . . . . . . . . . 114 4.4.2. Comportamiento temporal . . . . . . . . . . . . . . . . . . 115 4.4.3. Performance . . . . . . . . . . . . . . . . . . . . . . . . . . 116 4.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 5. Conclusiones

121

5.0.1. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . 127 Bibliograf´ıa

129

A. Dispositivos L´ ogicos Programables

137

A.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 A.2. PLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 A.3. CPLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 A.4. FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 A.4.1. Celdas L´ogicas . . . . . . . . . . . . . . . . . . . . . . . . 143 A.4.2. Recursos dedicados . . . . . . . . . . . . . . . . . . . . . . 145 v

A.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 B. Sistemas num´ ericos

150

B.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 B.2. Representaci´on num´erica . . . . . . . . . . . . . . . . . . . . . . . 150 B.2.1. Punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 B.2.2. Punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . 154 B.2.3. No-convencionales . . . . . . . . . . . . . . . . . . . . . . . 157 C. Multiplicaci´ on Secuencial aplicada al Control de Movimiento

159

C.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 C.2. Accionamientos paso a paso . . . . . . . . . . . . . . . . . . . . . 161 C.2.1. Generaci´on de perfiles de velocidad Off-line . . . . . . . . . 162 C.2.2. Generaci´on de perfiles de velocidad On-line . . . . . . . . . 162 C.3. Generaci´on de perfiles de velocidad mediante FPGA . . . . . . . . 167 C.3.1. Implementaci´on del producto Vr · nk

. . . . . . . . . . . . 169

C.4. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . . 172 C.4.1. Modo de funcionamiento en pasos . . . . . . . . . . . . . . 172 C.4.2. Modo de funcionamiento en micropasos . . . . . . . . . . . 174 C.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 D. Publicaciones

179

D.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 D.2. Multiplicadores secuenciales en FPGA: Evaluaci´on y Comparaci´on de Par´ametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 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 . . . . . . . . . . . . . . . .

7

2.2. Implementaci´on de multiplicadores en FPGA. . . . . . . . . . . .

29

3.1. Producto de dos operandos de 4 bits, acumulaci´on de productos parciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.2. Multiplicaci´on secuencial con desplazamiento a la izquierda para operandos de 4 bits.

. . . . . . . . . . . . . . . . . . . . . . . . .

35

3.3. Multiplicaci´on con desplazamiento a la derecha para operandos de 4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.4. Estimaci´on de consumo de recursos l´ogicos de un SM. . . . . . . .

40

3.5. Retardos de una FPGA Xilinx Spartan-4. . . . . . . . . . . . . . .

43

3.6. Producto de dos operandos en base 4 . . . . . . . . . . . . . . . .

46

3.7. Multiplicaci´on base 4 de dos operados de 4 bits. . . . . . . . . . .

46

3.8. Codificaci´on de los d´ıgitos, alternativa (-X). . . . . . . . . . . . .

47

3.9. Multiplicaci´on base 4, alternativa (-X). . . . . . . . . . . . . . . .

48

3.10. Estimaci´on de consumo de recursos de un SMB4(3X). . . . . . . .

49

3.11. Estimaci´on de consumo de recursos l´ogicos SMB4(-X). . . . . . .

50

3.12. Estimaci´on de consumo de recursos l´ogicos de un SMSR. . . . . .

57

3.13. Estimaci´on de consumo de recursos l´ogicos SMF(SM). . . . . . . .

63

3.14. Estimaci´on de consumo de recursos l´ogicos de un SMF(SMSR). .

64

viii

3.15. Ejemplo de una multiplicaci´on mediante sumas consecutivas . . .

68

3.16. Estimaci´on de consumo de recursos l´ogicos de un SMSC(SM). . .

69

3.17. Estimaci´on de consumo de recursos l´ogicos de un SMSC(SMSR). .

70

3.18. Estimaci´on de consumo de recursos l´ogicos de la variante SMSR con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . .

84

3.19. Estimaci´on de consumo de recursos l´ogicos de la variante SMSR con redondeo a +∞. . . . . . . . . . . . . . . . . . . . . . . . . .

85

3.20. Estimaci´on de consumo de recursos l´ogicos de la variante SMSC con redondeo a cero. . . . . . . . . . . . . . . . . . . . . . . . . .

88

3.21. Estimaci´on de consumo de recursos l´ogicos de la variante SMSC con redondeo a +∞. . . . . . . . . . . . . . . . . . . . . . . . . .

90

4.1. Consumo de recursos de los multiplicadores en Spartan[CLB]. . .

94

4.2. Consumo Estimado de recursos de los multiplicadores [CLB]. . . .

94

4.3. Diferencia porcentual, Consumo Experimental vs Estimado [ %]. .

95

4.4. Consumo de recursos de los multiplicadores en Virtex [slices]. . . .

98

4.5. Consumo de recursos de los multiplicadores en Virtex II [slices]. .

98

4.6. Retardo de propagaci´on de los multiplicadores en Spartan [ns]. . .

99

4.7. Retardo estimado de propagaci´on de los multiplicadores Trd = 0 [ns]. 99 4.8. Diferencia porcentual, Retardo de propagaci´on Experimental vs Estimado [ %]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.9. Velocidad de Procesamiento de los multiplicadores en Spartan [Mops/s].100 4.10. Velocidad de Procesamiento de los multiplicadores en Virtex [Mops/s].101 4.11. Velocidad de Procesamiento de los multiplicadores en Virtex II [Mops/s].

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4.12. Consumo de recursos l´ogicos de los multiplicadores en punto flotante en Spartan [CLBs]. . . . . . . . . . . . . . . . . . . . . . . . 114

ix

4.13. Consumo de recursos l´ogicos de las variantes en Virtex [slices]. . . 115 4.14. Consumo de recursos l´ogicos de las variantes en Virtex II [slices]. . 115 4.15. Comportamiento temporal de las variantes en Spartan [Mflop/s]. . 115 4.16. Comportamiento temporal de las variantes en Virtex [Mflop/s].

. 116

4.17. Comportamiento temporal de las variantes en Virtex II [Mflop/s]. 116 5.1. Implementaci´on de Multiplicadores Paralelos en FPGA. . . . . . . 122 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 flotante est´andar. . . . . . . . . . . . . . . . . . . . . . . . 156 B.2. Punto flotante a medida. . . . . . . . . . . . . . . . . . . . . . . . 157

x

´Indice de figuras 2.1. Diagrama en bloques de un multiplicador en punto flotante . . . .

9

2.2. Semisumador a) S´ımbolo l´ogico, b) y c) arquitectura. . . . . . . .

13

2.3. Sumador total,a) s´ımbolo l´ogico b) y c) arquitecturas. . . . . . . .

15

2.4. S´ımbolo l´ogico de un CPA e implementaci´on de un RCA. . . . .

16

2.5. CSA a) S´ımbolo l´ogico y b) implementaci´on con FAs. . . . . . . .

17

2.6. Sumadores concatenados a) con CPA, b) con CSA. . . . . . . . .

18

´ 2.7. Arbol de sumadores para m=9. . . . . . . . . . . . . . . . . . . .

19

2.8. Multiplicador por Tabla de Look-up. . . . . . . . . . . . . . . . .

20

2.9. Multiplicador Ripple Carry de 4 bits. . . . . . . . . . . . . . . . .

20

2.10. PE de un multiplicador Ripple Carry. . . . . . . . . . . . . . . . .

21

2.11. Esquema de un multiplicador Ripple Carry mediante PEs. . . . .

21

2.12. Multiplicador Carry Save de 4 bits. . . . . . . . . . . . . . . . . .

22

2.13. PE de un multiplicador Carry Save. . . . . . . . . . . . . . . . . .

22

2.14. Esquema de un multiplicador Carry Save mediante PEs. . . . . .

23

2.15. PE de un multiplicador paralelo Guild. . . . . . . . . . . . . . . .

23

2.16. Multiplicador paralelo Guild. . . . . . . . . . . . . . . . . . . . . .

24

2.17. PE de un multiplicador Mccanny - Mcwhinter. . . . . . . . . . . .

25

2.18. Multiplicador paralelo Mccanny - Mcwhinter. . . . . . . . . . . .

26

2.19. Consumo de recursos l´ogicos de MP.

. . . . . . . . . . . . . . . .

28

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

29

xi

2.21. Implementaci´on de Multiplicadores n = 8 . . . . . . . . . . . . . .

30

2.22. Implementaci´on de Multiplicadores n = 16 . . . . . . . . . . . . .

30

2.23. Implementaci´on de un multiplicador optimizado en a´rea de Xilinx n = 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

3.1. Multiplicador SM con desplazamiento a la derecha. . . . . . . . .

37

3.2. Multiplicador SM con desplazamiento a la derecha con registro compartido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

3.3. Multiplicador SM con desplazamiento a la izquierda. . . . . . . .

39

3.4. Consumo de recursos del SM. . . . . . . . . . . . . . . . . . . . .

41

3.5. Esquema de retardos en un sumador. . . . . . . . . . . . . . . . .

42

3.6. Retardo de propagaci´on estimado del SM. . . . . . . . . . . . . .

44

3.7. M´axima frecuencia de reloj estimada aplicable al SM. . . . . . . .

44

3.8. Velocidad m´axima de procesamiento del SM. . . . . . . . . . . . .

45

3.9. Diagrama de un SMB4(3X). . . . . . . . . . . . . . . . . . . . . .

47

3.10. Diagrama de un SMB4(-X). . . . . . . . . . . . . . . . . . . . . .

49

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

50

3.12. Consumo de recursos de multiplicadores SM. . . . . . . . . . . . .

52

3.13. Retardo de propagaci´on estimado del SMB4(3X). . . . . . . . . .

53

3.14. M´axima frecuencia de reloj estimada aplicable al SMB4(3X). . . .

53

3.15. Velocidad m´axima de procesamiento del SMB4(3X). . . . . . . . .

54

3.16. Retardo de propagaci´on estimado del SMB4(-X).

. . . . . . . . .

55

3.17. M´axima frecuencia de reloj estimada aplicable al SMB4(-X). . . .

55

3.18. Velocidad m´axima de procesamiento del SMB4(-X). . . . . . . . .

56

3.19. Multiplicador SMSR. . . . . . . . . . . . . . . . . . . . . . . . . .

57

3.20. Consumo de recursos del SMSR. . . . . . . . . . . . . . . . . . . .

58

3.21. Retardo de propagaci´on estimado del SMSR. . . . . . . . . . . . .

59

xii

3.22. M´axima frecuencia de reloj estimada aplicable al SMSR. . . . . .

60

3.23. Velocidad m´axima de procesamiento del SMSR. . . . . . . . . . .

60

3.24. Diagrama de operaci´on de un SMF. . . . . . . . . . . . . . . . . .

62

3.25. Consumo de recursos de multiplicadores SMF. . . . . . . . . . . .

65

3.26. Retardo de propagaci´on estimado del SMF. . . . . . . . . . . . . .

66

3.27. M´axima frecuencia de reloj estimada aplicable al SMF. . . . . . .

66

3.28. Velocidad m´axima de procesamiento de los SMF. . . . . . . . . .

67

3.29. Ejemplo de un SMSC(SM).

. . . . . . . . . . . . . . . . . . . . .

68

3.30. Ejemplo de un SMSC(SMSR). . . . . . . . . . . . . . . . . . . . .

69

3.31. Consumo de recursos estimado de un SMSC. . . . . . . . . . . . .

71

3.32. Ruta cr´ıtica de dos sumas consecutivas. . . . . . . . . . . . . . . .

72

3.33. Retardo de propagaci´on estimado del SMSC. . . . . . . . . . . . .

73

3.34. M´axima frecuencia de reloj estimada aplicable al SMSC. . . . . .

74

3.35. Velocidad m´axima de procesamiento del SMSC. . . . . . . . . . .

74

3.36. Consumo de recursos l´ogicos de un SM vs SMSR. . . . . . . . . .

75

3.37. Velocidad de procesamiento de un SM vs SMSR. . . . . . . . . . .

76

3.38. Consumo de recursos l´ogicos de los multiplicadores optimizados en velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

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

78

3.40. ´Indice de performance de los multiplicadores. . . . . . . . . . . . .

79

3.41. ´Indice de performance de los multiplicadores 20 < n < 32. . . . .

80

3.42. Modificaci´on del SMSR para el producto de las mantisas . . . . .

81

3.43. Ejemplo del esquema de redondeo implementado . . . . . . . . . .

83

3.44. Multiplicaci´on de las mantisas. . . . . . . . . . . . . . . . . . . . .

83

3.45. Consumo de recursos del PFPM(SMSR), r = 8. . . . . . . . . . .

85

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

86

xiii

3.47. SMSC modificado para el producto de las mantisas . . . . . . . .

87

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

89

3.49. Consumo de recursos del PFPM(SMSC), r = 8. . . . . . . . . . .

91

4.1. S´ıntesis de un CLB del multiplicador SM. . . . . . . . . . . . . . .

95

4.2. Consumo de recursos l´ogicos del SM en Spartan. . . . . . . . . . .

96

4.3. Consumo de recursos l´ogicos del SM en Spartan. . . . . . . . . . .

97

4.4. Consumo de recursos l´ogicos: SM vs SMSR en Spartan. . . . . . . 102 4.5. Consumo de recursos l´ogicos: SM vs SMSR en Virtex. . . . . . . . 103 4.6. Consumo de recursos l´ogicos: SM vs SMSR en Virtex II. . . . . . 103 4.7. Velocidad de procesamiento: SM vs SMSR en Spartan. . . . . . . 104 4.8. Velocidad de procesamiento: SM vs SMSR en Virtex. . . . . . . . 104 4.9. Velocidad de procesamiento: SM vs SMSR en Virtex II. . . . . . . 105 4.10. Consumo de recursos l´ogicos de multiplicadores optimizados en velocidad en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.11. Consumo de recursos l´ogicos de multiplicadores optimizados en velocidad en Virtex. . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.12. Consumo de recursos l´ogicos de multiplicadores optimizados en velocidad en Virtex II. . . . . . . . . . . . . . . . . . . . . . . . . 107 4.13. Velocidad de procesamiento de los multiplicadores optimizados en velocidad en Spartan. . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.14. Velocidad de procesamiento de multiplicadores optimizados en 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. Distribuci´on de bloques de una FPGA de Xilinx . . . . . . . . . . 141 A.3. Matriz de interconexi´on de una FPGA de Xilinx . . . . . . . . . . 143 A.4. Descripci´on de un LE de una FPGA FLEX10K de Altera . . . . . 144 A.5. Descripci´on de un CLB de una FPGA XC4000 de Xilinx . . . . . 145 A.6. Recursos l´ogicos de algunas FPGAs de Xilinx . . . . . . . . . . . 146 A.7. L´ogica de acarreo dedicada de una FPGA XC4000 de Xilinx . . . 148 B.1. Esquema de formatos num´ericos . . . . . . . . . . . . . . . . . . . 151 C.1. Esquema de motores de una secci´on del CLIC. . . . . . . . . . . . 161

xv

C.2. Sistema de control de movimiento de motores de accionamiento incremental. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 C.3. Diagrama de flujo de un algoritmo on-line. . . . . . . . . . . . . . 163 C.4. Perfil de velocidad trapezoidal. . . . . . . . . . . . . . . . . . . . . 164 C.5. Perfil de velocidad, deseado, cuantizado y la temporizaci´on resultante.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

C.6. (Izquierda) Posici´on y velocidad con el algoritmo iterativo. (Derecha) Detalle del perfil de posici´on y velocidad del perfil iterativo . 167 C.7. Arquitectura hardware del algoritmo de generaci´on de perfil de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 C.8. Implementaci´on del multiplicador Ripple Carry en una FPGA XC4006E.170 C.9. Implementaci´on de un multiplicador optimizado en a´rea de Xilinx en una FPGA XC4006E. . . . . . . . . . . . . . . . . . . . . . . . 171 C.10.Perfil de velocidad y posici´on del accionamiento controlado por un ≡ 6000 pasos sistema basado en FPGA. 15 rev s s

. . . . . . . . . . . . 173

C.11.Perfil de velocidad del accionamiento controlado por un sistema basado en FPGA. 62,5 rev ≡ 25000 pasos . . . . . . . . . . . . . . . 174 s s C.12.Perfil de velocidad del accionamiento utilizando el modo de micropasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 C.13.Perfiles de posici´on y velocidad para un sistema de accionamiento en modomicropaso. . . . . . . . . . . . . . . . . . . . . . . . . . . 177

xvi

Agradecimientos A Mario A Daniel A mis colegas en el Laboratorio de Instrumentaci´on y Control

xvii

Resumen El objetivo principal de esta tesis fue desarrollar arquitecturas de multiplicadores binarios de menor consumo de recursos l´ogicos que las existentes, manteniendo las prestaciones de velocidad de c´alculo. El prop´osito particular fue implementar las mismas en los dispositivos digitales denominados FPGA (Field Programmable Gate Array). Para ello se investigaron las estructuras de multiplicaci´on del tipo secuencial que se caracterizan por poseer un consumo de recursos reducido y una velocidad de procesamiento baja. Se modelizaron los multiplicadores a partir del desarrollo de ecuaciones que permiten estimar el consumo de recursos l´ogicos y el desempe˜ no temporal de los mismos. Se desarrollaron nuevas arquitecturas que se compararon con las existentes. Se introdujo un nuevo indicador denominado ´ındice de performance, que permite cuantificar el costo de un multiplicador para una dada FPGA. Los resultados te´oricos se corroboraron con un exhaustivo trabajo experimental mediante el cual se han validado las ecuaciones obtenidas. A partir de la validaci´on de los modelos de los multiplicadores, se determinaron los esquemas de mayor desempe˜ no que cumplen con los objetivos deseados. As´ı se arrib´o a multiplicadores en punto fijo con los que se obtuvo un consumo de recursos hasta 8 veces menor y una velocidad comparable a la de una arquitectura existente. Los avances se extendieron a la multiplicaci´on en punto xviii

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

xix

Nomenclatura 1C

Complemento a 1

2C

Complemento a 2

ALP

Arreglo L´ogico Programable

ASIC

Application Specific Integrated Circuit

CLB

Configurable Logic Block

CPA

Carry Propagate Adder

CPLD

Complex Programmable Logic Device

CSA

Carry Save Adder

DSP

Digital Signal Processor

FA

Full Adder

FF

Flip Flop

FG

Function Generator

FPGA

Field Programmable Gate Array

GAL

Generic Array Logic

HA

Half Adder

LSB

Least Significant Bit

LUT

Look-up Table xx

MAC

Multiplicador/Acumulador

MP

Multiplicador Paralelo

PAL

Programmable Array Logic

PE

Procesador Elemental

PLD

Programmable Logic Device

PROM

Programmable Read Only Memory

PS

Processing Speed

RCA

Ripple Carry Adder

SM

Multiplicador Secuencial

SMB4

Multiplicador Secuencial de base 4

SMF

Multiplicador Secuencial Fraccionado

SMSC

Multiplicador Secuencial de Sumas Consecutivas

SMSR

Multiplicador Secuencial Sin entradas Registradas

SR

Shift Register

VHDL

Very high speed integrated circuit Hardware Description Language

fc

M´axima frecuencia de reloj

pi

Bit i del operando P

P

Operando Producto

TBY P

CIN to COU T bypass delay

Tc

Tiempo de c´alculo

TCK

Per´ıodo de reloj

TCKO

Clock-to-output delay xxi

TILO

F/G inputs to X/Y outputs delay

TOCP Y

Operand inputs (F1, F2, G1, G4) to COU T delay

tpd

Propagation delay

Trd

Route delay

TSU M

CIN through function generator to X/Y output delay

X, Y

Operando Multiplicando y multiplicador respectivamente

xi , yi

Bit i del operando Multiplicando y Multiplicador respectivamente

Vmin

Velocidad m´ınima

Vmax

Velocidad m´axima

Vr (k)

Velocidad de referencia para el paso k-esimo

∆t(k)

Per´ıodo de tiempo entre el paso actual y el pr´oximo

xxii

Cap´ıtulo 1 Introducci´ on En el Procesamiento Digital de Se˜ nales (PDS) se recurre, como operaci´on elemental, al producto de dos operandos y la posterior adici´on de un tercero, estructura conocida como MAC (Multiplicador/Acumulador). Los dispositivos de c´alculo m´as empleados en el PDS son los DSPs (Digital Signal Processors). Si bien los DSPs son baratos y flexibles, poseen s´olo una unidad MAC por lo que un proceso aritm´etico demanda la ejecuci´on secuencial de las operaciones. Como consecuencia, una operaci´on algor´ıtmica consume un determinado tiempo de ejecuci´on y, si fuera necesario utilizar un tiempo de ejecuci´on menor, convendr´ıa adoptar hardware a medida, alternativa proporcionada por los ASICs (Application-Specific Integrated Circuit) y las FPGAs (Field Programmable Gate Array). Tanto los ASICs como las FPGAs posibilitan la utilizaci´on de varias MACs en paralelo, logrando de este modo una notable reducci´on del tiempo 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 fabricaci´on por lo que no aceptan errores en su desarrollo y, consecuentemente, su utilizaci´on representa un gran riesgo de producci´on. 1

Cap´ıtulo 1. Introducci´on

2

En cuanto a las FPGAs, ´estas combinan la flexibilidad de un DSP con la velocidad y la densidad de componentes de un ASIC. Las FPGAs poseen una gran cantidad de recursos l´ogicos, un bajo costo de desarrollo ya que son f´aciles de depurar y, fundamentalmente, permiten al dise˜ nador corregir errores y actualizar el dise˜ no. Estas ventajas convierten a las FPGAs en dispositivos apropiados como procesadores de se˜ nales o aceleradores de c´alculo.

1.1.

Estructuras de Multiplicadores

Los multiplicadores se pueden clasificar seg´ un el modo en que ingresan los operandos [1] [2]. Si ambos operandos ingresan en forma serie se denominan serie/serie. La mayor ventaja de estos multiplicadores reside en el bajo n´ umero de entradas/salidas utilizadas y en la bajo consumo de recursos l´ogicos, sin embargo estos multiplicadores se encuentran limitados a aplicaciones de baja velocidad [3] [4] [5]. Si s´olo uno de los operandos ingresa en forma serie, el multiplicador se denomina serie/paralelo [6]. Este tipo de multiplicadores presentan un consumo de recursos l´ogicos moderado y son ideales para aplicaciones de velocidad 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 u ´ltimos son los que se tratar´an en esta tesis debido a su capacidad de procesar los datos a alta velocidad. Los multiplicadores tambi´en se pueden clasificar en funci´on del algoritmo de c´alculo en: suma y desplazamiento, por a´rbol o contadores. Los multiplicadores por suma y desplazamiento utilizan el m´etodo conocido com´ unmente como l´apiz y papel para calcular el producto. En algunos casos esta tarea se realiza construyendo una celda de procesamiento b´asica que se repite en un arreglo determinado.

Cap´ıtulo 1. Introducci´on

3

La diferencia de procesamiento de estos multiplicadores radica en el tipo de comunicaci´on entre estas celdas, que puede ser local (solo existe comunicaci´on entre celdas vecinas) o global (existe comunicaci´on mas all´a de la celda vecina). Con el objetivo de acelerar los productos parciales1 C. Wallace [7] propuso originalmente ´ una estructura de sumadores, conocida como Arbol de Wallace, donde el retardo de la suma es proporcional el logaritmo del n´ umero de sumandos. Otro modo de acelerar los productos parciales consiste en la utilizaci´on de contadores paralelos [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 simult´anea son denominados habitualmente multiplicadores paralelos. Estos multiplicadores realizan el producto r´apidamente, pero son dif´ıciles de realizar cuando un dispositivo posee una cantidad de recursos limitada. Este problema se acent´ ua, cuando el formato de los operandos esta expresado en punto flotante. Los multiplicadores en punto flotante utilizan t´ıpicamente multiplicadores paralelos para el producto de las mantisas [9] [10]. A medida que se incrementa la complejidad de la operaci´on, el consumo de recursos l´ogicos utilizados aumenta notablemente y consecuentemente los costos de implementaci´on. Un esquema de multiplicaci´on de operandos en paralelo que utiliza una menor cantidad de recursos l´ogicos es el denominado Shift and Add [11] [12] o secuencial (SM). Esta reducci´on del consumo de recursos se realiza a costa de ejecutar tantas iteraciones como longitud de palabra posean los operandos [13] [14]. Esto representa una seria desventaja debido al excesivo tiempo de c´alculo y por esta raz´on han sido excluidos de las aplicaciones t´ıpicas. Por otro lado, si se puede mejorar el desempe˜ no en velocidad sin incurrir en la cantidad de recursos que requiere un 1

En la multiplicaci´ on de dos n´ umeros enteros de n bits se denomina producto parcial al producto un bit del multiplicador por el multiplicando.

Cap´ıtulo 1. Introducci´on

4

multiplicador paralelo, estos multiplicadores pueden resultar m´as ventajosos.

1.2.

Objetivos de la tesis

El objetivo principal de esta tesis consiste en el desarrollo de multiplicadores con un reducido consumo de recursos l´ogicos, que mantengan un desempe˜ no aceptable de la velocidad de procesamiento. En funci´on de este objetivo, se caracterizar´an las arquitecturas de los multiplicadores existentes. Se propondr´an variantes que incluyan la multiplicaci´on de operandos en punto fijo y punto flotante.

1.3.

Organizaci´ on de la tesis

Esta tesis est´a dividida en cinco cap´ıtulos. El Cap´ıtulo 1 presenta el estado del arte e introduce aspectos de la tem´atica de esta tesis. El Cap´ıtulo 2 presenta conceptos b´asicos sobre la multiplicaci´on. Se presentan los esquemas de Multiplicadores Paralelos, los cuales se caracterizan y se ensayan con el objetivo de cuantificar la problem´atica de consumo de recursos. El Cap´ıtulo 3 est´a dedicado al desarrollo de la propuesta que consiste en la aplicaci´on de Multiplicadores Secuenciales al producto binario en punto fijo y en punto flotante. En este cap´ıtulo se desarrollan diferentes esquemas de Multiplicaci´on Secuencial para los cuales se estima su desempe˜ no en cuanto a la cantidad de recursos l´ogicos y velocidad de procesamiento. El Cap´ıtulo 4 est´a dedicado a la verificaci´on experimental. Para ello se explicita la implementaci´on pr´actica de los diferentes esquemas desarrollados sobre algunas familias de FPGAs. El objetivo de este cap´ıtulo es la contrastaci´on de las estimaciones obtenidas en el cap´ıtulo anterior con los resultados experimentales.

Cap´ıtulo 1. Introducci´on

5

En el mismo se establecen criterios de comparaci´on, en t´erminos de performance, entre los multiplicadores propuestos y otros existentes. Adicionalmente, se presentan cuatro ap´endices, a saber: El Ap´endice A realiza una breve descripci´on de los Dispositivos L´ogicos Programables y sus caracter´ısticas. El Ap´endice B introduce los formatos num´ericos utilizados en PDS. El Ap´endice C describe la aplicaci´on espec´ıfica de los multiplicadores secuenciales en el Procesamiento Digital utilizado en el a´rea de Control de Movimiento. En el mismo se aprovechan las prestaciones que brindan los multiplicadores en la implementaci´on hardware de un algoritmo de control de posici´on. Finalmente, el Ap´endice D presenta los trabajos publicados como resultado del trabajo de tesis.

Cap´ıtulo 2 Arquitecturas de Multiplicadores 2.1.

Introducci´ on

La utilizaci´on de FPGA en el Procesamiento Digital de Se˜ nales (PDS) es sumamente ventajosa. Una de las ventajas consiste en la posibilidad de lograr un hardware a medida que incluya desde la selecci´on de la longitud de palabra de los operandos hasta la ejecuci´on de los c´alculos. Un hardware a medida puede realizar c´alculos m´as r´apidamente que uno programable porque pueden disponerse varias unidades de c´alculo en una sola FPGA. Estos multiplicadores pueden operar independientes de modo de explotar toda la potencial concurrencia de un algoritmo. Adicionalmente, en la FPGA se pueden ejecutar otros procesos, como atenci´on de perif´ericos, comunicaci´on, etc. sin interferir con el procesamiento. En PDS [15] [16] [17] los procesos recurren, como operaci´on elemental, al producto de dos operandos y la posterior adici´on de un tercero, denominada MAC (Multiplicador/Acumulador). En una MAC, la multiplicaci´on demanda una mayor cantidad de recursos l´ogicos que la adici´on. En este cap´ıtulo se realiza un repaso de conceptos de la multiplicaci´on de operandos en punto fijo y punto flotante. Luego, para comprender las arquitecturas 6

7

Cap´ıtulo 2. Arquitecturas de Multiplicadores

de los multiplicadores se introducen aspectos relativos a la adici´on. Finalmente, se presentan las estructuras de multiplicadores paralelos y su implementaci´on en FPGA.

2.2.

Algoritmo de la Multiplicaci´ on

2.2.1.

Operandos en punto fijo

Multiplicaci´ on de enteros sin signo

n−1 P

El producto de dos operandos binarios de n bits, un multiplicando, X = n−1 P xj 2j y un multiplicador, Y = yj 2j est´a representado por la Ec. (2.1).

j=0

j=0

P =Y ·X =

n−1 X

(2.1)

yj 2j · X

(2.2)

2j · yj X

(2.3)

j=0

=

n−1 X j=0

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,n−1 , ..., sj,2 , sj,1 , sj,0 con j = 0, 1, 2 · n − 1 P = p2n−1 , ..., p2 , p1 , p0

Cap´ıtulo 2. Arquitecturas de Multiplicadores

8

El producto P se obtiene como la suma de todos los productos parciales cada uno desplazado 2j veces a la izquierda con j = 0, ..., n − 1. Este producto es conocido tambi´en como m´etodo del l´apiz y papel. Multiplicaci´ on de enteros con signo En sistemas de magnitud con signo, la magnitud y el signo son representados en forma separada. Existen multiples formatos para expresar los n´ umeros con signo, como por ejemplo Magnitud y Signo, Complemento a 1 (1C) y Complemento a 2 (2C) (ver Secci´on B.2.1). La multiplicaci´on de dos operandos expresados en Magnitud y Signo se efect´ ua como un producto de enteros sin signo, y se ejecuta con una funci´on XOR para 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, finalmente, complementando el resultado si s´olo uno de ellos hubiese estado complementado. Este tipo de multiplicaci´on puede resultar sencillo para el caso de 1C, pero representa bastante complejidad para el caso de 2C. En este caso, se puede aplicar el m´etodo de l´apiz y papel siempre que los operandos sean positivos o que el multiplicando sea negativo y el multiplicador positivo. En ambos casos la suma acumulativa de los productos parciales arrojar´a un resultado correcto mientras que la acumulaci´on contemple la extensi´on de signo. Esto es, si el bit m´as significativo es 0, se desplaza el operando introduciendo un 0. En el caso en que este bit sea 1, el desplazamiento se realiza introduciendo un 1. Cuando el multiplicador sea negativo se debe realizar una correcci´on al procedimiento mencionado que consiste en restar el multiplicando en el u ´ltimo paso, en vez de adicionarlo.

9

Cap´ıtulo 2. Arquitecturas de Multiplicadores

2.2.2.

Operandos en punto flotante

Los sistemas num´ericos de punto flotante fueron desarrollados para operar con precisi´on sobre un gran rango din´amico. Sin embargo, este formato num´erico requiere algoritmos aritm´eticos m´as complejos. La multiplicaci´on de dos operandos en punto flotante incluye varias operaciones: obtenci´on del signo, adici´on de los exponentes, multiplicaci´on de las mantisas y normalizaci´on del resultado (Ecs. (2.4 - 2.7)). C = A × B = SC · 2eC −bias · 1.fC

(2.4)

SC = SA ⊕ SB

(2.5)

eC = eA + eB − bias

(2.6)

1.fC = 1.fA × 1.fB

(2.7)

El algoritmo para la multiplicaci´on en punto flotante se representa de manera

Exponentes

Mantisas

OR-exclusiva

Adición de exponentes

Producto de mantisas

Etapa 2

Ajuste de bias

Redondeo

Ajuste de exponente

Normalización

Etapa 1

Bits de signo

Etapa 3

sint´etica en la Fig. 2.1.

Bit de signo

Ofl.

Exponente

Mantisa

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

Cap´ıtulo 2. Arquitecturas de Multiplicadores

10

Las Ecs. (2.4 - 2.7) se realizan en varias etapas, que se describen a continuaci´on: Etapa 1: Se adicionan los exponentes eA y eB ; si el resultado es menor que la representaci´on, se produce un desbordamiento de capacidad inferior (underflow). En este caso el resultado de toda la operaci´on se fija al valor ”cero”. En el caso de un overflow, el resultado se fija en el m´aximo n´ umero que el formato 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 n´ umeros binarios resultantes (Ec. (2.7)). Si el operando C es distinto de cero, se realiza la operaci´on XOR de los signos de los operandos A y B. Etapa 2: Se ajusta el bias del exponente. Este ajuste se debe a que cada uno de los exponentes de los operandos posee un bias (ver Secci´on B.2.2) y la adici´on de dos operandos produce un desplazamiento superior al representado por el formato. S´olo se almacenan los n bits m´as significativos del producto entero de la etapa anterior de longitud 2n bits. Se realiza una operaci´on de redondeo sobre la mantisa resultante. Etapa 3: Se normaliza el resultado de la mantisa dependiendo del bit m´as significativo del producto de la Ec. (2.7).

Cap´ıtulo 2. Arquitecturas de Multiplicadores

11

Se ajusta el exponente dependiendo de la normalizaci´on del producto de las mantisas. Se conforma el signo, el exponente y la mantisa en el formato representado. Redondeo La norma IEEE 754 [18], que trata el formato en punto flotante, especifican cuatro tipos de redondeo: redondeo al m´as cercano, redondeo a +∞, redondeo a −∞ y redondeo a cero. Redondeo al m´as cercano (al par en caso de empate): El est´andar IEEE recomienda este redondeo por defecto. En este caso se obtiene el valor representable m´as cercano al resultado infinitesimalmente preciso. Redondeo a +∞: El est´andar indica que el valor obtenido debe ser el m´as cercano y no menor que el resultado infinitesimalmente preciso. B´asicamente esto significa que, para un resultado positivo, si los bits a la derecha del LSB son todos 0, entonces el resultado es correcto. Si por el contrario, cualquiera de estos bits es 1, entonces se debe adicionar un 1 al LSB. Redondeo a −∞: Este est´andar indica que el valor obtenido debe ser el m´as cercano y no mayor que el resultado infinitesimalmente preciso. B´asicamente esto significa que, para un resultado negativo, si los bits a la derecha del LSB son todos 0, entonces el resultado es correcto. Si por el contrario, cualquiera de estos bits es 1, entonces se debe adicionar un 1 al LSB. Redondeo a cero: En el redondeo a cero el resultado es m´as cercano y no mayor en magnitud que el resultado infinitesimalmente preciso. Este redondeo se aplica truncando el resultado a la derecha del LSB.

Cap´ıtulo 2. Arquitecturas de Multiplicadores

12

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

2.3. 2.3.1.

Adici´ on Semisumador

El Sumador Parcial (SP) tambi´en llamado Semisumador de un bit (Half Adder - HA) adiciona dos operandos de un bit y genera como resultado un operando de dos bits. El bit menos significativo es el bit suma, que surge de realizar la operacion de OR-EXC s = a ⊕ b. El bit m´as significativo resulta de realizar la operaci´on AND, cout = ab. Este bit es llamado bit de acarreo de salida debido al desborde de la adici´on. La expresi´on aritm´etica de un sumador parcial se puede observar en las Ecs. (2.8,2.9 y 2.9), a partir de las que se desprende el c´alculo del bit s y el bit de acarreo. 2 · cout + s = a + b

(2.8)

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

(2.9)

En la Fig. 2.2 se puede observar el s´ımbolo l´ogico y dos posibles implementaciones del HA.

13

Cap´ıtulo 2. Arquitecturas de Multiplicadores a b cout

a b cout

HA s (a)

a b

cout

s (b) s (c)

Figura 2.2: Semisumador a) S´ımbolo l´ogico, b) y c) arquitectura.

2.3.2.

Sumador Total

A diferencia del HA, el sumador total (Full Adder - FA) posee una tercer entrada denominada bit de acarreo de entrada (cin ). Esta entrada es utilizada para recibir una se˜ nal de acarreo de un bit menos significativo. Las Ecs. (2.10 y 2.11) representan las ecuaciones l´ogicas que gobiernan el funcionamiento del sumador.

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

(2.10) (2.11)

Las Ecs. (2.12 - 2.15) representan las ecuaciones aritm´eticas correspondientes.

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 se˜ nales, una se˜ nal de generaci´on (g) y una se˜ nal de propagaci´on (p). La se˜ nal g

Cap´ıtulo 2. Arquitecturas de Multiplicadores

14

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

g = ab

(2.16)

p=a⊕b

(2.17)

c0 = ab

(2.18)

c1 = a + b

(2.19)

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

(2.20)

= ab + (a + b)cin = ab + (a ⊕ b)cin = g + cin = p¯g + pcin = p¯a + pcin = c¯in c0 + cin c1

(2.21)

Se debe tener en cuenta que para el c´alculo de cout utilizando una estructura AND-OR, la se˜ nal de propagaci´on puede ser formulada como p = a + b pero para el c´alculo del bit de la adici´on debe ser implementada como p = a ⊕ b. Un FA puede ser implementado a partir de dos sumadores parciales, compuertas de dos entradas, multiplexores, o arreglos m´as complejos. En la Fig. 2.3 se pueden observar a), el s´ımbolo del sumador, y dos alternativas de implementaci´on: mediante dos semisumadores y mediante compuertas l´ogicas.

Cap´ıtulo 2. Arquitecturas de Multiplicadores

15

Figura 2.3: Sumador total,a) s´ımbolo l´ogico b) y c) arquitecturas.

2.3.3.

Suma por Propagaci´ on de Acarreo

Una suma de propagaci´on de acarreo (Carry Propagate Adder - CPA) adiciona dos operandos de n bits A = (an−1 , an−2 ..., a0 ), B = (bn−1 , bn−2 ..., b0 ) y una se˜ nal de acarreo de entrada opcional. El resultado est´a representado por un operando de (n + 1) bits que consiste en un operando S = (sn−1 , sn−2 ..., s0 ) de n bits y una se˜ nal de acarreo de salida. Las Ecs. (2.22 y 2.23) representan las ecuaciones l´ogicas de cada sumador. Se puede notar que el acarreo de salida de un bit menos significativo se propaga hacia un acarreo de entrada de un bit m´as significativo.

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 aritm´eticas correspondientes.

2n · cout + S = A + B + cin

(2.24)

16

Cap´ıtulo 2. Arquitecturas de Multiplicadores

2 · cout + n

n−1 X

j

2 sj =

j=0

n−1 X

j

2 aj +

j=0

=

n−1 X

n−1 X

2j bj + cin

(2.25)

j=0

2j (aj + bj ) + cin

(2.26)

j=0

2cj+1 + sj = (aj + bj + cj )

(2.27)

donde j = 0, 1, .., n − 1 y c0 = cin y cn = cout . En la Fig. 2.4 se muestra el s´ımbolo de este sumador, que puede ser implementado mediante varios FAs, y es com´ unmente denominado Ripple Carry Adder (RCA). Se observa que se genera una propagaci´on de la se˜ nal de acarreo A cout

B

CPA

an-1 bn-1 cin

cout

S

a0 b0

a1 b1

FA

... FA cn-1 c2

sn-1

s1

(a)

c1

FA

cin

s0

(b)

Figura 2.4: S´ımbolo l´ogico de un CPA e implementaci´on de un RCA. que depende de la longitud de palabra de los operandos. La propagaci´on de esta se˜ nal influye directamente en la velocidad de procesamiento del sumador debido al retardo generado.

2.3.4.

Suma Carry-Save

Una suma Carry-Save evita la propagaci´on del acarreo ubicando a los acarreos intermedios como salidas en vez de colocarlos en la cadena de propagaci´on. La suma de dos operandos de n bits presenta dos dos palabras resultantes, S (suma), y C (acarreo). Este sumador acepta tres operandos binarios de entrada uno de los cuales podr´ıa operar como acarreo de entrada.

17

Cap´ıtulo 2. Arquitecturas de Multiplicadores

Las Ecs. (2.28, 2.29 y 2.30) representan las ecuaciones aritm´eticas correspondientes.

2 · C + S = A0 + A1 + A2 n X

i

2 ci +

n−1 X

i=0

i

2 si =

i=0

2 X n−1 X

(2.28)

2i aj,i

(2.29)

j=0 i=0

2ci+1 + si =

2 X

aj,i

(2.30)

j=0

d´onde i = 0, 1, .., n − 1. El CSA se construye a partir de un arreglo lineal de FAs y posee un retardo constante independiente de la longitud de palabra de los operandos, Fig. 2.5. Este a2,n-1 a1,n-1 a0,n-1

a2 a1 a0 CSA c

s

...

FA cn

a2,1 a1,1 a0,1 FA

c2

sn-1

(a)

a2,0 a1,0 a0,0

s1

FA c1

s0

(b)

Figura 2.5: CSA a) S´ımbolo l´ogico y b) implementaci´on con FAs. tipo de suma es utilizada en la generaci´on de arreglos de sumadores e implica la necesidad de una suma final que aplique los acarreos correspondientes a la suma resultante.

2.3.5.

Suma Multi-operandos

Una suma multi-operando es utilizada en la adici´on de m operandos de n bits, A0 , ...., Am−1 (m > 2) arrojando un resultado S con una representaci´on de (n + [log m]) bits. S=

m−1 X j=0

Aj

(2.31)

18

Cap´ıtulo 2. Arquitecturas de Multiplicadores

Un sumador multi-operando puede ser realizado mediante la concatenaci´on serie de m − 1 sumadores de Propagaci´on de Acarreo (´o RCAs) ´o de m − 2 sumadores Carry-Save seguidos de un sumador de Propagaci´on de Acarreo. Ambos tipos de sumadores concatenados son similares en cuanto a su estructura l´ogica, y requerimientos de hardware, as´ı como la longitud de camino cr´ıtico. La mayor diferencia entre ambas opciones es el arribo de los bits al u ´ltimo sumador de propagaci´on. En el sumador implementado s´olo con RCAs los bits m´as significativos arriban m´as tarde que los menos significativos, debido a la propagaci´on de la se˜ nal de acarreo. Por otro lado, en el sumador implementado con CSAs, el arribo de los bits es balanceado, dependiendo la propagaci´on del acarreo fundamentalmente del CPA de la u ´ltima etapa, que t´ıpicamente es un RCA, Fig. 2.6. A0

A0 A1 A2

A1

CPA

A2

A3

CSA A2

CPA

CSA A3

FA

CPA

sn

sn-1...0 (a)

CPA S (b)

Figura 2.6: Sumadores concatenados a) con CPA, b) con CSA. Otra suma multi-operando es la propuesta por Wallace [7] tambi´en denominada ´arbol de sumadores (o Wallace tree). Est´a compuesto de sumadores CSA en un arreglo de a´rbol con un CPA final. Esta estructura esta dise˜ nada para obtener un retardo de propagaci´on m´ınimo. La estructura de a´rbol posee tantas secciones como sean necesarias para reducir el n´ umero de sumandos a s´olo dos. En la u ´ltima

19

Cap´ıtulo 2. Arquitecturas de Multiplicadores

etapa, se utiliza un CPA r´apido que ejecuta la adici´on del sumando y el acarreo final. En la Fig. 2.7 se muestra un ´arbol de sumadores para m = 9. A0 A1 A2

A3 A4 A5

A6 A7 A8

CSA

CSA

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 simult´aneamente o en ”paralelo”. Existen n´ umerosos esquemas de MPs y las variantes radican en la forma en que se aborda la ejecuci´on de los subproductos a fin de obtener una mayor velocidad de procesamiento.

2.4.1.

Multiplicador por Tabla de Look-up

El multiplicador por Tabla de Look-up no realiza c´alculo, sino que opera como una memoria. Se concatenan los operandos X e Y constituyendo una direcci´on 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 m´as veloz que existe. Su desventaja radica en la cantidad de

20

Cap´ıtulo 2. Arquitecturas de Multiplicadores

recursos l´ogicos que demanda. A modo de ejemplo, un multiplicador de 16 bits requiere una memoria de 4,294,967,296x32 bits. XY

P VALOR

DIR

Figura 2.8: Multiplicador por Tabla de Look-up.

2.4.2.

Multiplicador Ripple Carry

El multiplicador paralelo m´as difundido se basa en un esquema de propagaci´on 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. x3

y0 x3

y1

y2

p7

x1

x3

x1

x0

FA

FA

FA

x0

0 FA

y3

x3

x3

x3

x1

x0

FA

FA

FA

FA

x3

x3

x1

x0

FA

FA

FA

FA

p6

p5

p4

p3

0

0

0

p2

p1

Figura 2.9: Multiplicador Ripple Carry de 4 bits.

p0

21

Cap´ıtulo 2. Arquitecturas de Multiplicadores

Una forma de analizar un esquema de MP es a trav´es de la s´ı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´ıa las entradas ai y bi , calcula su producto a trav´es de la compuerta AND, suma el resultado proveniente de un PE previo a trav´es de si y el acarreo generado de un PE previo a trav´es 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 trav´es de ao y bo . si

bi ai

ao co bo

ci

FA

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

x0

x1

x2

y0 FA

FA

FA

FA

FA

FA

FA

y1 FA

y2 FA

FA

FA

FA

FA

FA

FA

y3 FA

p7

p6

p5

p4

p3

p2

p1

p0

Figura 2.11: Esquema de un multiplicador Ripple Carry mediante PEs.

22

Cap´ıtulo 2. Arquitecturas de Multiplicadores

2.4.3.

Multiplicador Carry Save

Otro tipo de MP es el generado a partir de un esquema de propagaci´on del acarreo como la suma Carry Save, Fig. 2.12. Este esquema busca romper la propagaci´on de la cadena de acarreo para disminuir el retardo de cada suma, lo cual permite acelerar la multiplicaci´on. x3

y0 x3

y1

x3

y2

x3

FA x3

y3

x3

x1

x3

x1

x0

HA

HA

HA

x1

x0

FA

FA

x3

x1

x0

FA

FA

FA

x0

0

p7

FA

FA

FA

p6

p5

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 propagaci´on tipo Carry Save y el multiplicador mediante esta representaci´on. si ao

bi

ci ai

FA

bo co

so

Figura 2.13: PE de un multiplicador Carry Save.

23

Cap´ıtulo 2. Arquitecturas de Multiplicadores x3

x0

x1

x2

y0 FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

p7

p6

p5

p4

FA

y1

y2

y3

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

bi

ci ai

ao FA

co

bo

so

Figura 2.15: PE de un multiplicador paralelo Guild. Este multiplicador est´a estructurado en cadenas de sumadores para cada bit del producto, las cuales se encuentran en direcci´on diagonal desde la esquina izquierda superior a la derecha inferior. Cada sumador de la cadena recibe un acarreo de entrada correspondiente a una suma de la cadena previa y env´ıa su

24

Cap´ıtulo 2. Arquitecturas de Multiplicadores

salida de acarreo a un sumador de una cadena posterior. El multiplicador Guild se caracteriza por una alta tasa de procesamiento, debido a la utilizaci´on de paralelismo y la posibilidad de implementaci´on pipelines1 . y3

x3

y2

FA

x2

y1

FA

x1

FA

FA

x0

FA

FA

FA

y0

FA

FA

FA

FA

FA

FA

FA

FA

FA

p7

p6

p5

p4

p3

p2

p1

p0

Figura 2.16: Multiplicador paralelo Guild. 1

Es una t´ecnica de aceleraci´ on de procesos que se basa en la introducci´on latches o registros en una apropiada posici´ on del arreglo para separar la operaci´on en etapas. Una vez implementada, el sistema incrementa su velocidad de procesamiento como etapas posea.

25

Cap´ıtulo 2. Arquitecturas de Multiplicadores

2.4.5.

Multipicador McCanny-McWhinter

Otro esquema de multiplicaci´on paralelo es el propuesto por J. McCanny y J. McWhinter [20], Figs. 2.17 y 2.18. En la Fig. 2.18 se puede observar que el multiplicador esta estructurado en cadenas de sumadores para cada bit del producto, las cuales se encuentran en direcci´on vertical. Cada sumador de la cadena recibe en forma diagonal un acarreo de entrada correspondiente a una suma de la cadena previa y env´ıa su salida de acarreo a un sumador de una cadena posterior. Este multiplicador se caracteriza por presentar comunicaci´on local entre las celdas b´asicas. si ai

bi ci

FA

bo

co

ao

so

Figura 2.17: PE de un multiplicador Mccanny - Mcwhinter.

2.5. 2.5.1.

Consumo de recursos l´ ogicos Operandos en Punto Fijo

El consumo de recursos l´ogicos (CR) de los Multiplicadores Paralelos mencionados var´ıa con el esquema utilizado. Una estimaci´on de este consumo expresado en t´erminos de celdas b´asicas se realiz´o para una FPGA de Xilinx. Si se considera que cada CLB (ver Secci´on A.4.1) posee dos funciones de 4 entradas, cada t´ermino de salida generado implica

26

Cap´ıtulo 2. Arquitecturas de Multiplicadores

x3

y0

x1

FA

x0

FA

FA

FA

y3

FA

y2

x2

FA

y1

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.

27

Cap´ıtulo 2. Arquitecturas de Multiplicadores

el consumo de

n 2

CLBs. Las Ecs. (2.32 - 2.35) resumen la estimaci´on de consumo

para las distintas arquitecturas de MPs. Ripple Carry:

CLB(n) = (n − 1)n +

n n = n2 − 2 2

(2.32)

CLB(n) = n(n − 1) +

n n = n2 − 2 2

(2.33)

Carry Save:

Guild:

CLB(n) = n2

(2.34)

McCanny - McWhinter:

CLB(n) = n2 +

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

(2.35)

En la Fig. 2.19 se grafica el consumo de recursos l´ogicos de estos multiplicadores. En la misma figura se presenta como referencia la cantidad de recursos l´ogicos de distintas FPGAs de la serie Spartan de Xilinx. Se puede concluir que los multiplicadores paralelos, en sus diferentes variantes, presentan un consumo de recursos elevado que se incrementa cuadr´aticamente con la longitud de palabra. De las variantes ejemplificadas, la de McCanny-McWhinter es la m´as onerosa, mientras que las variantes que menos recursos l´ogicos consumen son la de Ripple Carry y la de Carry Save. En la misma figura se puede observar

28

Cap´ıtulo 2. Arquitecturas de Multiplicadores

tambi´en que para las FPGAs de menor capacidad s´olo se pueden implementar multiplicadores de longitudes de palabra inferiores a 10 bits. 1500

1000

CLB

XCS40

XCS30 500 XCS20

Ripple Carry Carry Save Guild McCanny

XCS10 XCS05 0

0

5

10

15

20

25

30

n

Figura 2.19: Consumo de recursos l´ogicos de MP. Los fabricantes de FPGAs ofrecen MPs que pueden ser configurados por el dise˜ nador. Por ejemplo Xilinx ofrece dos versiones, una para multiplicadores optimizados en el consumo de recursos y otra para optimizados en velocidad [21]. La Fig. 2.20 presenta la informaci´on de referencia proporcionada por el fabricante donde se puede observar que a´ un los multiplicadores optimizados en consumo de recursos demandan una importante cantidad de los mismos, limitando la aplicaci´on de estos multiplicadores a FPGAs de elevado n´ umero de CLBs. Implementaci´ on en FPGA Se realiz´o la implementaci´on de multiplicadores paralelos en FPGA. En la la Tabla 2.2 se muestra el consumo de recursos l´ogicos en t´erminos de CLBs y la velocidad de procesamiento de datos en Millones de Operaciones por segundo (Mops). Se puede notar el notable incremento de consumo de recursos l´ogicos que

29

Cap´ıtulo 2. Arquitecturas de Multiplicadores

100 8x8

90 80

12x12

8x8 12x12

60

MHz

Opt. en velocidad

10x10

70

Optimizado en Recursos

50

16x16

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´o anteriormente, este incremento es t´ıpicamente cuadr´atico. Tabla 2.2: Implementaci´on de multiplicadores en FPGA. 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 a´rea de ocupaci´on l´ogica para los multiplicadores de 8 bits en una FPGA de 256 CLBs. Las Figs 2.22(a) y 2.22(b) indican el a´rea para una longitud de palabra de 16 bits. Nuevamente se puede observar que el consumo de recursos l´ogicos de los Multiplicadores Paralelos se incrementa notablemente con la longitud de palabra. Esta caracter´ıstica hace necesaria la utilizaci´on de FPGAs con gran cantidad de recursos para poder implementar los multiplicadores. En la Fig 2.23 se muestra el consumo de recursos para un multiplicador optimizado en a´rea de 32 bits

30

Cap´ıtulo 2. Arquitecturas de Multiplicadores

(a) Ripple Carry

(b) Xilinx

Figura 2.21: Implementaci´on de Multiplicadores n = 8

(a) Ripple Carry

(b) Xilinx

Figura 2.22: Implementaci´on de Multiplicadores n = 16

Cap´ıtulo 2. Arquitecturas de Multiplicadores

31

de Xilinx. Para esta implementaci´on fue necesario recurrir a una FPGA de 400 CLBs.

Figura 2.23: Implementaci´on de un multiplicador optimizado en a´rea de Xilinx n = 32.

2.5.2.

Operandos en punto flotante

La multiplicaci´on de operandos en punto flotante requiere una mayor cantidad de recursos que su contraparte en punto fijo, debido a que se deben realizar m´as operaciones. Sin embargo, de todas las operaciones involucradas, el producto de las mantisas es la que demanda la mayor cantidad de recursos l´ogicos. Como se mencion´o en la Secci´on 2.2.2, el producto de las mantisas se efect´ ua como un producto en punto fijo. Por lo tanto, el an´alisis de consumo de recursos de la secci´on anterior se puede extender a la presente, con la observaci´on que se debe adicionar el consumo de recursos propio de la adici´on de los exponentes, la determinaci´on del signo y, el de las operaciones de redondeo y normalizaci´on. Raz´on por la cual, la problem´atica de recursos se acent´ ua. Un an´alisis de las implicaciones pr´acticas de la implementaci´on de multiplicadores de punto flotante en FPGA se puede encontrar en los trabajos de Shirazi

Cap´ıtulo 2. Arquitecturas de Multiplicadores

32

et al [9], de Ligon et al [10] y de Louca et al [22]. Otros aportes se pueden encontrar en los trabajos de Allan y Luk [23], Jimenez et al [24] donde se presentan realizaciones parametrizables de multiplicadores. M´as recientemente, en un trabajo presentado por Aty et al [25] se presenta un esquema de multiplicador que muestra una relaci´on de compromiso entre la velocidad de procesamiento y el consumo de recursos l´ogicos. Sin embargo, en este trabajo se puede apreciar que el consumo de recursos contin´ ua siendo sustancial.

2.6.

Conclusiones

En este cap´ıtulo se presentaron algunos conceptos de la multiplicaci´on con el objetivo de poder introducir la problem´atica del consumo de recursos l´ogicos en la implementaci´on de esta operaci´on. Se concluye que, si bien los multiplicadores paralelos permiten ejecutar productos r´apidamente, el consumo de recursos de estos multiplicadores es muy elevado aumenta cuadr´aticamente con la longitud de palabra. Esto presenta una desventaja respecto a la utilizaci´on de estos dispositivos para el procesamiento de se˜ nales, pues restringe la implementaci´on de los mismos a FPGAs de gran tama˜ no y costo.

Cap´ıtulo 3 Nuevas Arquitecturas de Multiplicadores 3.1.

Introducci´ on

La utilizaci´on de un multiplicador con un gran consumo de recursos l´ogicos puede empeorar el desempe˜ no general del sistema o requerir de FPGAs de mayor tama˜ no. El Multiplicador Secuencial denominado tambi´en Shift and Add [11] [12] utiliza una cantidad reducida de recursos l´ogicos. El SM no es muy utilizado debido a la cantidad de iteraciones involucradas en un producto. En este cap´ıtulo se analiza la multiplicaci´on secuencial con el objetivo de ampliarla a FPGAs. Se caracterizan las variantes existentes y se proponen algunos esquemas que intentan mejorar la velocidad de c´alculo manteniendo un bajo consumo de recursos l´ogicos.

33

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

3.2.

34

Multiplicaci´ on Secuencial

El Multiplicador Secuencial (SM) realiza el c´alculo en forma iterativa manteniendo un producto parcial acumulativo y sucesivamente sumando al mismo los t´erminos yj X con el debido desplazamiento (Tabla 3.1). De esta forma, se logra reducir la cantidad de recursos a los necesarios para realizar la multiplicaci´on yj X. Tabla 3.1: Producto de dos operandos de 4 bits, acumulaci´on de productos parciales. 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 simplificada el algoritmo acumula cada producto parcial sobre el resultado parcial desplazado un bit respecto al anterior. Existen dos versiones de este algoritmo dependiendo del sentido de los valores a acumular, con desplazamiento a la izquierda o viceversa. En la multiplicaci´on con 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 hacia la izquierda de un bit (21 ) respecto al anterior. El algoritmo se puede analizar a partir de la Ec. (3.1). p(j + 1) = 2p(j) + yn−1−j 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: Multiplicaci´on secuencial con desplazamiento a la izquierda para operandos 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)

0

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

2p(1) +y 2 X p(2)

1

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

1

2p(2) +y 1 X p(3) 2p(3) +y 0 X p(4)

0

1

1

1

1

1

1

0

1

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

En la multiplicaci´on con desplazamiento a la derecha el algoritmo se puede analizar con la Ec. (3.2). p(j + 1) = (p(j) + yj X2n )2−1

con p(0) = 0

(3.2)

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

P = 2n−1

" n−1 X

# yj X · 2j−(n−1)

(3.3)

j=0

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

36

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Debido a que el desplazamiento a la derecha genera un primer producto parcial multiplicado por 2−k se debe pre-multiplicar y0 X por 2k para compensar el efecto del desplazamiento. Esta pre-multiplicaci´on se puede efectuar f´acilmente, almacenando p(j) en el segmento m´as significativo de un registro de 2n bit. Un ejemplo de este algoritmo se muestra en la Tabla 3.3. Tabla 3.3: Multiplicaci´on con bits. X Y p(0) +y 0 X 2p(1)

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

p(1) +y 1 X 2p(2)

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

1

p(2) +y 2 X 2p(3)

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

0

1

0

1

p(3) +y 3 X 2p(4)

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

1

0

1

1

0

1

p(4)

0

0

1

0

1

1

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 m´as significativos. Por lo tanto, el algoritmo m´as utilizado es el de desplazamiento a la derecha que involucra menos recursos.

37

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

3.2.2.

Implementaci´ on

La implementaci´on hardware de la multiplicaci´on con desplazamiento a la derecha se muestra en la Figura 3.1. El multiplicador Y y la acumulaci´on de los productos parciales p(j) son almacenados en registros de desplazamiento. El bit yj del multiplicador es el bit menos significativo disponible a la derecha del registro Y , el mismo es utilizado en el producto 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 se˜ nal de acarreo del sumador. Por otro lado, el desplazamiento se puede realizar conectando el bit menos significativo de la suma al bit n − 1 del registro P y el bit de acarreo al bit 2n − 1 del mismo registro de longitud 2n y realizando de este modo suma y desplazamiento en un s´olo ciclo de reloj. desplazamiento

Y

0

Parcial

0

n-1

n

desplazamiento acarreo 2n-1

Producto

n

n-1

n

ADD

n

n

n-1

X

0

Figura 3.1: Multiplicador SM con desplazamiento a la derecha. Se debe considerar que el multiplicador y la mitad menos significativa del registro P pueden compartir un mismo registro, de manera que a medida que los bits del multiplicador se van extrayendo del registro a partir del bit menos significativo, el bit menos significativo de p(j) es ingresado por el extremo m´as

38

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

significativo del mismo registro. El control del multiplicador, que no se muestra en la Figura 3.1, consiste en un contador que mantiene el n´ umero de iteraci´on ejecutada y un circuito para la inicializaci´on y carga del mismo. En la Figura 3.2 se puede observar un esquema de la realizaci´on del multiplicador de desplazamiento a la derecha con registro compartido. n

desplazamiento acarreo 2n-1

Producto Parcial

n

n-1

Y

0

n

ADD

n

n

n-1

X

0

Figura 3.2: Multiplicador SM con desplazamiento a la derecha con registro compartido. La implementaci´on hardware del algoritmo con desplazamiento a la izquierda se puede observar en la Figura 3.3. En este esquema, tambi´en el multiplicador Y y la acumulaci´on de los productos parciales p(j) son almacenados en registros de desplazamiento, con la diferencia de que los registros se desplazan a la izquierda en vez de a la derecha. El bit yj del multiplicador es el bit m´as significativo disponible a la izquierda del registro Y , el mismo es utilizado en el producto yn−j−1 X seleccionando 0 o X en la suma. En este multiplicador no se puede compartir el registro Y con la secci´on m´as significativa del registro P debido a que se utiliza un sumador de 2n bits. Esto es, que cada vez que se registra un producto parcial, se utiliza la totalidad del registro. El control del multiplicador, que no se muestra en la Figura 3.3, es similar al del multiplicador con desplazamiento a la derecha.

39

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores 2n

desplazamiento 2n-1

Producto

n

n-1

Parcial

0

2n

ADD

desplazamiento n n

n-1

n-1

Y

X

0

0

Figura 3.3: Multiplicador SM con desplazamiento a la izquierda. El hardware de este multiplicador es m´as complejo que el de la Figura 3.2, por lo que el m´etodo m´as utilizado es la multiplicaci´on con desplazamiento a la derecha. Consumo de recursos El consumo de recursos l´ogicos del SM debe ser estimado en funci´on de la longitud de palabra de los operandos. Si se analiza la estructura de los bloques que componen el multiplicador: sumadores, multiplexores, contadores y componentes b´asicos, se puede cuantificar el consumo de recursos de los mismos en funci´on de la longitud de palabra. Un contador de m´odulo-n es un contador binario de log2 n bits. Consecuentemente utiliza n FFs (FlipFlops) y al menos la misma cantidad de FGs (Funci´on Generators - ver Secci´on A.4.1). Por lo cual, este contador consume como m´ınimo log2 (n) 2

FGs.

Un multiplexor esta conformado s´olo por l´ogica combinacional que requiere al menos n − 1 FGs de tres entradas. Esto genera un consumo de recursos de CLBs para una longitud de n bits entradas.

n−1 2

40

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

El consumo de recursos l´ogicos de un sumador depende del tipo de sumador seleccionado. Tal como se indic´o en cap´ıtulos previos, el sumador indicado para la implementaci´on de los multiplicadores en las FPGAs seleccionadas, es el sumador de ripple-carry. En este caso, un sumador utiliza (n+2) FGs ( n2 +1 celdas b´asicas) considerando las salidas de acarreo y desborde. En el caso en que la salida de un sumador deba ser registrada, el consumo de recursos l´ogicos en t´erminos de CLBs es el mismo dado que los FFs son nativos de cada celda b´asica. La Tabla 3.4 realiza una estimaci´on del consumo de recursos para el SM. En esta estimaci´on se considera que los n bits m´as significativos del registro P se pueden ubicar en conjunto con los FGs del sumador, y los menos significativos compartidos con el registro de desplazamiento Y (con carga de datos en paralelo). Las Ecs. (3.4 - 3.6) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs. Funci´on 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

1

Tabla 3.4: Estimaci´on de consumo de recursos l´ogicos de un SM.

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.

41

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

120

100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

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 l´ogicas y registros, y el retardo por la interconexi´on de las mismas. En la mayor´ıa de los circuitos realizados en FPGA el desempe˜ no solo puede ser estimado despu´es de ser implementado, ya que los retardos de interconexi´on se conocen una vez implementado el circuito. Sin embargo, en el caso de sumadores y contadores que utilizan recursos dedicados de l´ogica de acarreo, es posible estimar un desempe˜ no temporal [26]. El per´ıodo m´ınimo de reloj que se puede utilizar con el SM depende del retardo de propagaci´on de la ruta m´as cr´ıtica. En este caso, la ruta m´as cr´ıtica es aquella en la cual los operandos del sumador son realimentados a trav´es de una cadena de Flip Flops, Fig. 3.1. El retardo de propagaci´on para un sumador se puede estimar a partir de la Fig. 3.5 en la cual se asume que n es par y que el sumador (sin contar las cadenas de acarreo) es implementado en

n 2

CLBs. En esta figura los dos

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

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

TSUM

AN-1,BN-1

TBYP

AN-2,BN-2

42

SALIDA DE ACARREO

SN-1 SN-2

TSUM

AN-3,BN-3

TBYP

AN-4,BN-4

SN-3 SN-4 N-4 CLBs 2

A3 ,B3 TBYP

A2 ,B2 A1 ,B1 A0 ,B0

TOPCY

S3 S2

S1 S0

Figura 3.5: Esquema de retardos en un sumador. entradas de estos bits a la cadena de acarreo se define como el tiempo TOP CY . Los dos bits m´as significativos tambi´en comparten un CLB y el retardo de la cadena de acarreo a la salida m´as significativa es el tiempo TSU M . Los n − 4 bits restantes contribuyen con un retardo TBY P por cada dos bits. La Ec. (3.7) resume el retardo de propagaci´on en un sumador como el que se describe en la Fig. 3.5.

tpd = TOP CY +

n−4 × TBY P + TSU M 2

(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 efect´ ua un flanco de reloj y se establece la salida de un Flip Flop, TCKO . La salida de este registro se realimenta a la entrada del sumador generando un retardo de interconexi´on Trd .

43

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Otra ruta de interconexi´on cr´ıtica proviene de la selecci´on del paso de iteraci´on que incorpora un retardo entre una entrada F/G y la salida X/Y debido al producto yi Xi , este retardo es denominado TILO . La Ec. (3.8) resume el retardo de propagaci´on de la ruta de interconexi´on m´as cr´ıtica.

tpd = TOP CY +

n−4 × TBY P + TSU M + TILO + TCKO + Trd 2

(3.8)

Con el objetivo de poder cuantificar el retardo de propagaci´on estimado se propone la utilizaci´on de los retardos de una FPGA de Xilinx de la familia Spartan [27]. Para esta estimaci´on no se considera el retardo Trd dado que a priori se 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 grafic´o el retardo de propagaci´on estimado para el SM, en funci´on de la longitud de palabra n. Este retardo define la frecuencia m´axima 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.

44

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

25

20

Tpd [ns]

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.6: Retardo de propagaci´on estimado del SM.

120

Max. Frec. de reloj [Mhz]

100

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.7: M´axima frecuencia de reloj estimada aplicable al SM.

45

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

14

Velocidad de Procesamiento [Mop]

12

10

8

6

4

2

0

0

5

10

15

20

25

30

35

n

Figura 3.8: Velocidad m´axima de procesamiento del SM.

3.2.3.

Multiplicador Secuencial de Base 4

Esta variante de multiplicaci´on secuencial reduce la cantidad de iteraciones aprovechando la representaci´on num´erica. Un n´ umero binario de n bits puede ser representado como un n´ umero de d´ıgitos de base 4 o´ un n´ umero de

n 3

n 2

d´ıgitos de base 8. De modo que para un

dado rango de n´ umeros que se pueden representar, existe una representaci´on de mayor base que reduce la cantidad de d´ıgitos. De este modo, es posible realizar un producto en menor tiempo de c´alculo si se ejecuta una multiplicaci´on de un d´ıgito por vez en lugar de hacerlo bit a bit. La expresi´on general para este tipo de multiplicaci´on es la de la Ec. (3.9):

p(j + 1) = (p(j) + yj Xrn )r−1

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

(3.9)

En el caso de la multiplicaci´on en base 4 (SMB4), se debe conformar el producto parcial [yj+1 yj ]2 X y adicionarlo al resultado de la iteraci´on anterior. El

46

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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 multiplicaci´on de base 2 cada producto parcial est´a representado por el valor 0 o una versi´on desplazada de X, en la multiplicaci´on de base 4 el producto parcial toma la forma del valor 0, X, 2X y 3X. El m´etodo m´as directo para la ejecuci´on de esta multiplicaci´on se puede realizar mediante una asignaci´on pre-calculada de los productos parciales. Un ejemplo de este tipo de multiplicaci´on se puede observar en la Tabla 3.7. Tabla 3.7: Multiplicaci´on 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 1 0 1 1 0 1 1 1 1 1 0 1 0

1

1

1

0

1

0

1

0

1

0

1

Un diagrama de este multiplicador (en adelante SMB4(3X)) se muestra en la Fig. 3.9. En el mismo se debe considerar que, mientras los tres primeros valores de los productos parciales se pueden utilizar en forma directa, el valor 3X requiere

47

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

un per´ıodo de tiempo para ejecutar la suma X + 2X. Adem´as, como el valor precalculado 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

Producto Parcial

n

Y

n-1

1 0

n n+2

ADD

n+2

n+2

MUX

n+2 n+2

0 X 2X 3X 2

Figura 3.9: Diagrama de un SMB4(3X). Una alternativa consiste en reemplazar 3X por −X generando un acarreo que modifica al siguiente d´ıgito. Este set de d´ıgitos es afectado por el acarreo seg´ un la Tabla 3.8, en la cual, cy(j − 1) es el acarreo correspondiente a una iteraci´on anterior, cy(j) es el acarreo actual, y2j−1 e y2j son los bits seleccionados con cada iteraci´on que generan una salida con los valores [0, −X, X, 2X]. Con esta alternativa, al final de la iteraci´on

n 2

se debe realizar una nueva iteraci´on, si el

u ´ltimo d´ıgito de base 4 gener´o un bit de acarreo. Tabla 3.8: Codificaci´on cy(j − 1) y2j−1 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

48

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Un ejemplo de esta alternativa se observa en la Tabla 3.8, en la cual se ejecuta un producto de dos operandos de 8 bits, donde al final de la u ´ltima iteraci´on el acarreo debido al u ´ltimo d´ıgito genera una iteraci´on adicional. Tabla 3.9: X 0 Y 1 p(0) 0 +(10)X = +2X 1 4p(1) 1

Multiplicaci´on 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

p(1) +(01)X = +X 4p(2)

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

p(2) +(11)X = −X 4p(3)

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

p(3) +(11 + cy)X = 0 4p(4)

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

p(4) +(00 + cy)X = X p(5)

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

1

0

1

0

0

0

1

0

0

0

1

0

1

1

0

0

1

0

1

1

0

0

1

0

0

0

1

1

0

0

1

0

0

0

1

1

0

0

1

0

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

n 2

+ 1. Por

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

49

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores n+1

desplazamiento 2 bits acarreo 2n-1

Producto Parcial

n

Y

n-1

1 0

n n+1

ADD n+1

n+1

MUX

n+1 n+1

0 X 2X -X

y2j-1y2j+cy

2

FF acarreo

Figura 3.10: Diagrama de un SMB4(-X). Consumo de recursos SMB4(3X): La estimaci´on del consumo de recursos l´ogicos del SMB4(3X) debe considerar los recursos para el pre-c´alculo de 3X y que este c´alculo puede resultar en n + 2 bits. La estimaci´on para este multiplicador se consigna en la Tabla 3.10 Funci´on 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 ( n2 ) + 2 3(n + 2) n+4

FF n 0 n log2 ( n2 ) + 1 0 n+4

CLB n 2

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

1

Tabla 3.10: Estimaci´on de consumo de recursos de un SMB4(3X). Las Ecs. (3.10 - 3.12) resumen el c´alculo de la estimaci´on en t´erminos de FGs, 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

(3.11)

log2 ( n2 ) 15 7 CLB(n) = n + + 2 2 2

(3.12)

¯ y se ingresa un acarreo SMB4(-X): En esta versi´on se reemplaza −X por X de entrada al sumador. De este modo no es necesario el pre-c´alculo de −X y se ahorran recursos. n+1

desplazamiento 2 bits acarreo 2n-1

Producto Parcial

n

Y

n-1

1 0

n n+1

ADD n+1

n+1

MUX

n+1 n+1

0 X 2X X 2

y2j-1y2j+cy

acarreo de entrada

FF acarreo

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

La estimaci´on de recursos para este multiplicador se muestra en la Tabla 3.11. Funci´on Registro X Registro Y (SR) Control Multiplexor 4 : 1 × (n + 1) Sumador (n + 1) + Reg. PH

FG 0 n+1

FF n n

log2 ( n2 ) + 6 3(n + 1) n+3

log2 ( n2 ) + 3 0 n+3

CLB n 2

n + 12 2 log2 ( n ) 2 + 2 3n + 32 2 n + 32 2

4

Tabla 3.11: Estimaci´on de consumo de recursos l´ogicos SMB4(-X).

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

51

Las Ecs. (3.13 - 3.15) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs. n F G(n) = 5n + log2 ( ) + 13 2

(3.13)

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

(3.14)

log2 ( n2 ) 15 CLB(n) = 3n + + 2 2

(3.15)

En la Fig. 3.12 se muestra el consumo de recursos l´ogicos de las dos variantes del multiplicador secuencial de base 4 en contraste con el multiplicador secuencial tradicional. Se observa en la misma figura que, si bien la velocidad de procesamiento de los SM base 4 se incrementa casi al doble por realizar menos iteraciones, el costo en consumo de recursos l´ogicos asciende a m´as del doble respecto a un SM tradicional. Comportamiento temporal SMB4(3X): El comportamiento temporal del SMB4(3X) involucra dos cadenas de adiciones, la primera resulta de la obtenci´on del valor 3X y la segunda de la operaci´on de acumulaci´on de los productos parciales, Fig. 3.9. La Ec. (3.16) resume el retardo de propagaci´on de la ruta de interconexi´on m´as cr´ıtica este multiplicador.

tpd = 2TOP CY +

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

(3.16)

52

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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

180

160

140

120 CLB

XCS05 100

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.12: Consumo de recursos de multiplicadores SM. En la Fig. 3.13 se muestra el retardo de propagaci´on estimado para el SMB4(3X). Este retardo define la frecuencia m´axima de reloj que se puede utilizar con este multiplicador, que se observa en la Fig. 3.14. La velocidad de procesamiento estimada del SMB4(3X) se grafica en la Fig. 3.15. La misma es obtenida como la frecuencia m´axima de reloj aplicable al multiplicador dividido el n´ umero de ciclos necesarios para ejecutar un producto, PS =

fc n +1 2

, expresado en millones de operaciones por segundo. En esta estimaci´on

se considera que la carga de datos y el c´alculo de 3X no excede un per´ıodo de reloj.

53

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

30

25

Tpd [ns]

20

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.13: Retardo de propagaci´on estimado del SMB4(3X).

100

90

80

Max. Frec. de reloj [Mhz]

70

60

50

40

30

20

10

0

0

5

10

15

20

25

30

35

n

Figura 3.14: M´axima frecuencia de reloj estimada aplicable al SMB4(3X).

54

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

14

Velocidad de Procesamiento [Mop]

12

10

8

6

4

2

0

0

5

10

15

20

25

30

35

n

Figura 3.15: Velocidad m´axima de procesamiento del SMB4(3X). SMB4(-X): El comportamiento temporal del SMB4(-X), si bien evita el c´alculo de 3X, involucra un retardo asociado a la operaci´on de la Tabla 3.8. La Ec. (3.17) resume el retardo de propagaci´on de la ruta de interconexi´on m´as cr´ıtica de este multiplicador.

tpd = TOP CY +

(n + 2) − 4 × TBY P + TSU M + TIHO + TILO + TICK + Trd (3.17) 2

En la Fig. 3.16 se puede observar el retardo de propagaci´on estimado para el SMB4(-X). Este retardo define la frecuencia m´axima de reloj que se puede utilizar con este multiplicador, que se observa en la Fig. 3.17. La velocidad de procesamiento estimada del SMB4(-X) se muestra en la Fig. 3.18. La misma es calculada como la frecuencia m´axima de reloj aplicable al multiplicador dividido el n´ umero de ciclos necesarios para ejecutar un producto, PS =

fc n +2 2

, expresado en millones de operaciones por segundo.

55

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

30

25

Tpd [ns]

20

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.16: Retardo de propagaci´on estimado del SMB4(-X).

100

90

80

Max. Frec. de reloj [Mhz]

70

60

50

40

30

20

10

0

0

5

10

15

20

25

30

35

n

Figura 3.17: M´axima frecuencia de reloj estimada aplicable al SMB4(-X).

56

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

14

Velocidad de Procesamiento [Mop]

12

10

8

6

4

2

0

0

5

10

15

20

25

30

35

n

Figura 3.18: Velocidad m´axima de procesamiento del SMB4(-X).

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 multiplicaci´on simplificado ya que no realiza la carga paralelo de los 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 selecci´on de los bits yj . El control del multiplicador consiste en un contador que ejecuta la selecci´on de los yj y que a su vez mantiene el n´ umero de iteraci´on realizada. La inicializaci´on

57

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores n

desplazamiento acarreo

Producto

2n-1

n

Parcial

n-1

0

n

ADD

n

MUX

n

X

n

Y

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 multiplicaci´on. Consumo de recursos La Tabla 3.12 muestra el consumo de recursos l´ogicos del SMSR. En esta estimaci´on se acepta que los n bits m´as significativos del registro P se ubican en conjunto con los FGs del sumador, y los menos significativos constituyen tan s´olo un registro de desplazamiento serie. Funci´on Multiplexor yi Producto yi X Control Sumador + Reg. PH Registro PL

FG n−1 n log2 (n) + 2 n+2 0

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

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

1

Tabla 3.12: Estimaci´on de consumo de recursos l´ogicos de un SMSR. Las Ecs. (3.18, 3.19 y 3.20) resumen la estimaci´on en t´erminos de FGs, FFs y CLBs.

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

(3.18)

58

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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

CLB(n) = 2n +

(3.19)

log2 n 3 + 2 2

(3.20)

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

120 XCS05 100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

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 selecci´on de yi . La Ec. (3.21) resume el retardo de propagaci´on de la ruta de interconexi´on m´as cr´ıtica.

59

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

tpd = TOP CY +

n−4 × TBY P + TSU M + TILO + TCKO + Trd 2

(3.21)

En la Fig. 3.21 se grafica el retardo de propagaci´on estimado para el multiplicador propuesto. La m´axima frecuencia de reloj que se puede utilizar con este multiplicador se muestra en la Fig. 3.22. 25

20

Tpd [ns]

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.21: Retardo de propagaci´on estimado del SMSR. La velocidad de procesamiento estimada del SMSR se presenta en la Fig. 3.23. La misma se calcula como la frecuencia m´axima de reloj aplicable al multiplicador dividido el n´ umero de ciclos necesarios para ejecutar un producto, P S = expresado en millones de operaciones por segundo.

fc , n

60

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

120

Max. Frec. de reloj [Mhz]

100

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.22: M´axima frecuencia de reloj estimada aplicable al SMSR.

14

Velocidad de Procesamiento [Mop]

12

10

8

6

4

2

0

0

5

10

15

20

25

30

35

n

Figura 3.23: Velocidad m´axima de procesamiento del SMSR.

61

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

3.3.2.

Multiplicador Secuencial Fraccionado

El Multiplicador Secuencial Fraccionado (SMF) permite obtener una buena velocidad procesamiento reduciendo el n´ umero de ciclos necesarios para ejecutar el producto. Esta reducci´on se obtiene fraccionando la sumatoria de la Ec. (3.22) en dos semisumatorias, (3.23).

P =

n−1 X

X2j · yj

(3.22)

j=0

P =

k X

j

X2 yj +

j=0

n−1 X

X2j yj

(3.23)

j=k

Aplicando el SM con desplazamiento a la derecha, el producto resultante se muestra en la Ec. (3.24). " P = 2n−1

k X

X · 2j−(n−1) yj +

j=0

n−1 X

# X · 2j−(n−1) yj

(3.24)

j=k

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´a dado por: 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

62

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

u ´nico sumador de 2n − k bits, ya que la primer semi-sumatoria se encontrar´a desplazada k veces de la segunda. Por otro lado dicha suma agrega un retardo tR proveniente de la l´ogica involucrada. Este retardo se puede considerar menor que TCK , tomando como pauta que el retardo de involucrado en la adici´on de los productos parciales es inferior o igual al retardo definido para un multiplicador SM. El per´ıodo de procesamiento para este multiplicador estar´a dado por T =

Y[m/2:0]

X[n:0]

X[n:0]

m/2 x n

m/2 x n

Acumulación

SM

( n2 + 1) · TCK .

Y[m:m/2+1]

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

Figura 3.24: Diagrama de operaci´on de un SMF. En la Fig. 3.24 se muestra el esquema del SMF, donde dos multiplicadores secuenciales realizan sus productos simult´aneamente y, un per´ıodo despu´es, sus resultados son adicionados. La aplicaci´on pr´actica del SMF se puede realizar en base a un SM tradicional o un SMSR. La utilizaci´on del SM implica que se deben cargar los datos en los registros, por lo que se requieren

n 2

+ 2 iteraciones para realizar un producto.

Por lo tanto, se justifica la utilizaci´on de este esquema para multiplicadores con una longitud de palabra que haga despreciables las dos iteraciones adicionales en comparaci´on con n2 . En el caso del SMF basado en un SMSR, el producto se realiza en

n 2

+ 1 iteraciones.

63

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores Consumo de recursos

Recursos de un SMF(SM): La Tabla 3.13 muestra el consumo de recursos del SMF basado en el SM. En esta estimaci´on se considera que ambos multiplicadores parciales son controlados por un u ´nico contador. Funci´on 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 ( n2 ) + 2 2× Sumador + Reg. PHi 2n + 4 3 n+2 Sumador + Reg. Ptotal 2

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

CLB n 2

n 2

+1 n 1 log2 ( n2 ) + 1 2 n+2 3 n+1 4

Tabla 3.13: Estimaci´on de consumo de recursos l´ogicos SMF(SM). Las Ecs. (3.25 - 3.27) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs.

F G(n) =

13 n n + log2 + 10 2 2

(3.25)

F F (n) =

n 11 n + log2 + 7 2 2

(3.26)

CLB(n) =

log2 15 n+ 4 2

n 2

+5

(3.27)

Recursos de un SMF(SMSR): La Tabla 3.14 realiza una estimaci´on del consumo de recursos del SMF basado en el SMSR. Las consideraciones de esta estimaci´on son similares al SMF basado en un SM. Las Ecs. (3.28 - 3.30) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs.

64

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Funci´on 2× Multiplexor yi 2× Producto yi X Control mod n2 2× Sumador + Reg. PHi 2× Registro PL n2 Sumador + Reg. Ptotal

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

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

CLB −1 n 1 n log ( 2 2) + 1 2 n+2 n 2

3 n 4

n 2

+1

Tabla 3.14: Estimaci´on de consumo de recursos l´ogicos de un SMF(SMSR).

n 13 n + log2 + 6 2 2

(3.28)

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

(3.29)

F G(n) =

log2 15 CLB(n) = n + 4 2

n 2

+3

(3.30)

En la Fig. 3.25 se puede observar el consumo de recursos l´ogicos estimado del SMF basado en un SM tradicional y en un SMSR. Comportamiento temporal El comportamiento temporal resulta similar al de un multiplicador SM o SMSR debido a que la ruta de interconexi´on m´as cr´ıtica se encuentra en la constituci´on de los multiplicadores fraccionados, Fig. 3.24. La Ec. (3.31) resume el retardo de propagaci´on de la ruta de interconexi´on m´as cr´ıtica para el multiplicador propuesto.

tpd = TOP CY +

n−4 × TBY P + TSU M + TILO + Trd 2

(3.31)

En la Fig. 3.26 se grafica el retardo de propagaci´on estimado para el SMF. Este retardo define la frecuencia m´axima de reloj que se puede utilizar con este

65

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

XCS10 200 SMF (SM) SMF (SMSR) 180

160

140

120 CLB

XCS05 100

80

60

40

20

0

0

5

10

15

20

25

30

35

n

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 m´axima de reloj dividido el n´ umero 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

,

66

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

25

20

Tdp [ns]

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.26: Retardo de propagaci´on estimado del SMF.

120

Max. Frec. de reloj [Mhz]

100

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.27: M´axima frecuencia de reloj estimada aplicable al SMF.

67

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

25 SMF (SM) SMF (SMSR)

Velocidad de Procesamiento [Mops]

20

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.28: Velocidad m´axima de procesamiento de los SMF.

3.3.3.

Multiplicador de Sumas Consecutivas

Esta variante es similar al SMB4 ya que b´asicamente opera con d´ıgitos de 2 bits. La estrategia consiste en realizar dos subproductos en forma consecutiva para reducir el n´ umero de iteraciones sin tener que pre-computar m´ ultiplos de los operandos. El Multiplicador de Sumas Consecutivas (SMSC) realiza dos subproductos consecutivos en cada iteraci´on como se puede observar en la Ec. (3.32). n  −1 2 X P = 2n−1  (yj X · 22j−(n−1) + yj+1 X · 22j+1−(n−1) )

(3.32)

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

68

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Tabla 3.15: Ejemplo de una multiplicaci´on mediante sumas consecutivas 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 +2−1 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

1

0

1

0

1

frente a la ventaja de reducir a la mitad la cantidad de ciclos en el per´ıodo de procesamiento. Un esquema del SMSC basado en un SM se muestra en la Fig. 3.29, donde se aprecia que, en cada iteraci´on, se realiza la suma en forma consecutiva de dos subproductos, yj X + yj+1 X · 2j+1 de la Ec. (3.32). LSB acarreo

2n-1

desplazamiento 2 bits

Producto Parcial

n

Y

n-1

1 0

acarreo n-1

ADD

ADD

n

n n n-1

X

Figura 3.29: Ejemplo de un SMSC(SM). El esquema basado en el SMSR se muestra en la Fig. 3.30.

0

69

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

LSB acarreo

2n-1

desplazamiento 2 bits Producto

n

Parcial

n-1

0

acarreo n-1

ADD

n

ADD

n

MUX

n

MUX

n/2

n

n/2

Y[bits pares] Y[bits impares]

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. Funci´on Registro X Registro Y (SR) Control 2× Producto yi X Sumador Sumador + Reg. P

FG 0 n+1 log2 ( n2 ) + 2 2n n+2 n+2

FF n n log2 ( n2 ) + 1 0 0 n+2

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

1

n +1 +1

Tabla 3.16: Estimaci´on de consumo de recursos l´ogicos de un SMSC(SM). Las Ecs. (3.33 - 3.35) resumen el c´alculo del consumo en t´erminos de FGs, FFs y CLBs.

F G(n) = 5n + log2

n +7 2

(3.33)

F F (n) = 3n + log2

n +3 2

(3.34)

log2 CLB(n) = 3n + 2

n 2

+

7 2

(3.35)

70

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Recursos de un SMSC(SMSR): La Tabla 3.17 expresa el consumo de recursos para un SMSC basado en el SMSR. Funci´on 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( n2

FF 0 log2 ( n2 ) + 1 0 0 n+2 n

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

n − 2 log2 ( n ) 2 2

n 2

Tabla 3.17: Estimaci´on de consumo de recursos l´ogicos de un SMSC(SMSR). Las Ecs. (3.36 - 3.38) resumen el consumo en t´erminos de FGs, FFs y CLBs.

F G(n) = 5n + log2

n +4 2

(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.

71

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

120 SMSC (SM) SMSC (SMSR)

XCS05 100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.31: Consumo de recursos estimado de un SMSC. Comportamiento temporal El comportamiento temporal del SMSC depende de la ruta m´as cr´ıtica que, en este caso debe tener en cuenta el acarreo los operandos a trav´es de los dos sumadores consecutivos realimentados a trav´es de una cadena de Flip Flops, Fig. 3.29 o 3.30. La ruta de retardos entre los dos sumadores consecutivos es mostrada en la Fig. 3.32, donde se puede observar que existen dos rutas de acarreo cr´ıticas. La primera fue presentada en la Secci´on 3.3.1 y se observa sobre el sumador de la izquierda. La segunda, incorpora un retardo adicional TOP CY para la generaci´on 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 propagaci´on de la ruta de interconexi´on m´as cr´ıtica para el multiplicador propuesto.

72

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

TSUM

TSUM

A7,B7

TBYP

A6,B6 A5,B5 A4,B4

TBYP

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

TBYP

TOPCY

CO

CO,B7

TBYP

S7,B6 S7

S6,B5

S6

S5,B4

S5

S4,B3

S4

S3,B2

S3

S2,B1

S2

S1,B0

CO

S7 S6

TBYP

S5 S4 S3

TBYP

TOPCY

S2 S1 S0

S1 S0

Figura 3.32: Ruta cr´ıtica de dos sumas consecutivas.

73

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

tpd = 2 × TOP CY +

n−4 × TBY P + 2 × TSU M + TILO + Trd 2

(3.39)

La Fig. 3.33 muestra el retardo de propagaci´on estimado para el SMSC. Este retardo define la frecuencia m´axima de reloj que se puede utilizar con este multiplicador, que se observa en la Fig. 3.34. 25

20

Tdp [ns]

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.33: Retardo de propagaci´on estimado del SMSC. La velocidad de procesamiento estimada del SMSC se grafica en la Fig. 3.35. La misma es calculada como la frecuencia m´axima de reloj aplicable al multiplicador, dividida por el n´ umero de ciclos necesarios para ejecutar un producto y depende del esquema en que se basa el mismo. Si se basa en un SM, la velocidad de procesamiento es P S =

fc n +1 2

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

fc n 2

.

74

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

120

Max. Frec. de reloj [Mhz]

100

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.34: M´axima frecuencia de reloj estimada aplicable al SMSC.

25 SMSC (SM) SMSC (SMSR)

Velocidad de Procesamiento [Mop]

20

15

10

5

0

0

5

10

15

20

25

30

35

n

Figura 3.35: Velocidad m´axima de procesamiento del SMSC.

75

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

3.4.

Comparaci´ on de los multiplicadores

Los multiplicadores propuestos fueron comparados entre s´ı y con respecto a los multiplicadores existentes en la literatura. Se realizaron dos comparaciones, la primera destinada a los multiplicadores secuenciales SM y SMSR, que son los optimizados en consumo de recursos l´ogicos, y la segunda destinada a los multiplicadores secuenciales optimizados en velocidad de procesamiento.

3.4.1.

Multiplicadores optimizados en consumo de recursos

En la Fig. 3.36 se grafica el consumo de recursos l´ogicos de los multiplicadores secuenciales SM y SMSR.

80 SM SMSR 70

60

CLB

50

40

30

20

10

0

0

5

10

15

20

25

30

35

n

Figura 3.36: Consumo de recursos l´ogicos de un SM vs SMSR. Se puede observar que el SMSR posee un consumo de recursos levemente inferior al del SM.

76

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

El retardo de la ruta cr´ıtica para ambos multiplicadores es pr´acticamente el mismo, sin embargo la velocidad de procesamiento (que depende del n´ umero de iteraciones) presenta una diferencia a favor del multiplicador SMSR. Esto se puede observar en la Fig. 3.37. 14 SM SMSR

12

PS [Mops]

10

8

6

4

2

5

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 l´ogicos de las variantes optimizadas en velocidad. Se puede observar que los multiplicadores del tipo SMSC son los que consumen la menor cantidad de recursos, mientras que los del tipo SMF poseen un consumo relativo entre un 30 y un 40 % mayor. Por otro lado, los multiplicadores de base 4 poseen un consumo relativo a los SMSC entre un 15 y un 20 % mayor. En la Fig. 3.39 se grafican las velocidades de procesamiento, donde se puede observar que el SMF(SMSR) es el que provee la mayor velocidad de procesamiento para todos los valores de n. Adicionalmente, se puede observar que la variante

77

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

150

XCS05

CLB

100

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

0

0

5

10

15

20

25

30

35

n

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

78

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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

20

18

16

PS [Mops]

14

12

10

8

6

4

2

5

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 fin de estimar los beneficios de cada variante utilizando un u ´nico indicador, se propone el ´ındice de performance p, definido en la Ec. (3.40).

pi (n) =

Velocidad de Procesamiento [Mops] Area

(3.40)

en la cual, la Velocidad de Procesamiento est´a expresada en Millones de Operaciones por Segundo y el Area como la fracci´on de recursos respecto de todos los existentes en una FPGA, (Total de la FPGA = 1). En la Fig. 3.40 se muestra el ´ındice de performance para una FPGA de 400 CLB’s. Se puede observar que, para n < 14 bits, el SMSR presenta el mayor ´ındice de performance. Esto se debe a que este multiplicador posee un consumo de recursos l´ogicos bastante reducido, y la relaci´on entre este consumo y su velocidad de procesamiento es la ´optima. Una forma de interpretar este resultado es analizando una posible aplicaci´on

79

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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

250

Performance

200

150

100

50

5

10

15

20 n

25

30

35

Figura 3.40: ´Indice de performance de los multiplicadores. de este multiplicador. El ´ındice de performance refleja que, si existiera la necesidad de realizar un cierto n´ umero de productos simult´aneamente, resulta m´as eficiente utilizar arreglos paralelos de multiplicadores SMSR en lugar de un multiplicador optimizado en velocidad. El ´ındice indica que el SMSC es casi tan eficiente como el SMF(SMSR). Por otro lado, los multiplicadores SMF(SM) y SMSC(SM) poseen una eficiencia menor, debido al n´ umero de iteraciones adicionales que deben realizar para ejecutar un producto. Comparativamente se puede observar que la eficiencia de los multiplicadores de base 4 es bastante inferior. En la Fig. 3.41 se grafica en forma ampliada el ´ındice para 20 < n < 32. En esta figura se puede observar que al aumentar la longitud de palabra el SMF(SMSR) y el SMSC(SMSR) resultan tanto o m´as eficientes que el SMSR.

80

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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

30

Performance

25

20

15

10

5

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 n´ umero de 2n bits, sin embargo, en la multiplicaci´on en punto flotante solo se representan los n bits m´as significativos. Esto permite que exista una reducci´on de la l´ogica del multiplicador debido a que la secci´on menos significativa del registro que almacena el P roductoparcial es reemplazada por un u ´nico Flip-Flop. Fig. 3.42.

81

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores n

desplazamiento acarreo n+1 n

Producto Parcial

0

bits descartados

n

ADD

n

MUX

n

n

Y

X Control

Figura 3.42: Modificaci´on del SMSR para el producto de las mantisas Redondeo y normalizaci´ on El multiplicador propuesto se desarroll´o para efectuar dos tipos de redondeo, el redondeo a cero y el redondeo a +∞. El multiplicador con redondeo a cero es el m´as sencillo y m´as econ´omico en t´erminos de consumo de recursos l´ogicos. El multiplicador con redondeo a +∞ es m´as elaborado pero m´as econ´omico que el que utiliza el redondeo al m´as cercano. Redondeo a cero: El redondeo a cero consiste en truncar el producto de las mantisas a la derecha del bit menos significativo. Esta operaci´on se efect´ ua por defecto al eliminar los registros de la secci´on menos significativa del producto de las mantisas. La particularidad de esta operaci´on radica en que el producto resultante no se ve afectado por los registros eliminados debido a que son tan s´olo una cadena de registros de desplazamiento que va ubicando el bit menos significativo de la acumulaci´on de los productos parciales (ver Sec. 3.3.1). Cuando el producto de las mantisas resulte en el rango 2 ≤ p ≤ 4, se debe realizar un desplazamiento de normalizaci´on a la derecha para restaurar el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del exponente en una unidad. Este desplazamiento se realiza mediante una iteraci´on adicional (ciclo n + 1) en la que la entrada X = 0 (equivalente al desplazamiento a la derecha).

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

82

Redondeo a +∞: Este esquema presenta tres posibilidades: la primer posibilidad es el truncamiento si el producto es negativo o si todos los bits a la derecha del LSB son 0. Esta operaci´on se realiza mediante la registraci´on de los bits descartados en cada iteraci´on. Las otras dos posibilidades de redondeo dependen de los bits m´as significativos del producto de las mantisas y se diferencian entre s´ı por el rango del resultado. La estrategia de redondeo utilizada con el multiplicador adiciona la constante 2−n por defecto y posteriormente eval´ ua el rango del producto. Si el rango del producto resulta comprendido en el rango 1 ≤ p ≤ 2, el redondeo se efectu´o correctamente y no es requerida ninguna operaci´on adicional. Cuando el producto resulta comprendido en el rango 2 ≤ p ≤ 4, se debe ajustar el redondeo efectuado debido a la posterior normalizaci´on. Se presentan dos casos en base a los bits menos significativos: a) Si el bit menos significativo del producto truncado es un ”1”, para el cual la adici´on de la constante 2−n se propaga a los bits m´as significativos. En este caso no se realiza correcci´on. b) Si el bit menos significativo del producto truncado es un ”0”. En este caso la adici´on de la constante 2−n no se propaga a los bits m´as significativos y consecuentemente luego de normalizar debe volver a redondear. La Fig. 3.43 muestra el esquema de redondeo del multiplicador. El multiplicador resultante se presenta en la Fig. 3.5.1. Adici´ on de los exponentes El exponente del producto resultante se puede expresar mediante la Ec. (3.41).

ep = ex + ey − bias + normal

(3.41)

83

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Producto 2n bits Producto

**

**

**

Truncamiento

**

**

**

00

00

**

** n bits descartados

+

Redondeo

0...0

01

Sin Redondeo

Sin Overflow Overflow con error

Redondeo

1*

**

00

00

1*

**

Overflow sin error 1*

** 0...0

**

**

01 **

Normalización 01

**

**

Producto n bit

Figura 3.43: Ejemplo del esquema de redondeo implementado

n

desplazamiento acarreo n+1 n

Producto Parcial

0

n

ADD

n

redondeo

n

X normalización

MUX

n

Control

Figura 3.44: Multiplicaci´on de las mantisas.

Y

84

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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 normalizaci´on del resultado. Consumo de recursos l´ ogicos SMSR con redondeo a cero: La Tabla 3.18 expresa la estimaci´on del consumo de recursos l´ogicos del multiplicador en punto flotante basado en un SMSR con redondeo a cero. Funci´on Multiplexor 1.f yi n + 1 Control Producto yi X Sumador + Reg. PH Registro P0 Adici´on exponentes Correcci´on Bias + normalizaci´on 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) + 32 2 n+1 2 n+3 2 1 2 r +1 2 r +2 2 1 2

Tabla 3.18: Estimaci´on de consumo de recursos l´ogicos de la variante SMSR con redondeo a cero. Las Ecs. (3.42, 3.43 y 3.44) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs.

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

(3.42)

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

(3.43)

CLB(n, r) =

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

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

(3.44)

85

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

120 XCS05 100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.45: Consumo de recursos del PFPM(SMSR), r = 8. SMSR con redondeo a +∞: La Tabla 3.19 presenta la estimaci´on del consumo de recursos l´ogicos del multiplicador en punto flotante basado en un SMSR con redondeo a +∞. Funci´on Multiplexor 1.f yi n + 1 Control Producto yi X Sumador + Reg. PH Registro P0 Redondeo + normalizaci´on Adici´on exponentes Correcci´on Bias + normalizaci´on 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: Estimaci´on de consumo de recursos l´ogicos de la variante SMSR con redondeo a +∞. Las Ecs. (3.45, 3.46 y 3.47) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs.

86

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

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

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

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 efect´ ua como un producto de dos enteros binarios sin signo, con la reducci´on de la l´ogica del multiplicador

87

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

debido a que la secci´on menos significativa del registro P es reemplazada por un u ´nico Flip-Flop. Fig. 3.47. LSB acarreo

desplazamiento 2 bits

Producto Parcial

n+1 n

1

0

Bits descartados

acarreo n

ADD

ADD

n n

MUX

n

MUX

n

n/2

n/2

Y[bits pares] Y[bits impares]

X Control

Figura 3.47: SMSC modificado para el producto de las mantisas

Redondeo y normalizaci´ on Redondeo a cero: El redondeo a cero consiste en truncar el resultado del producto de las mantisas a la derecha del bit menos significativo. Esta operaci´on se efect´ ua por defecto al eliminar los registros de la secci´on menos significativa del producto de las mantisas tal como se realiza con el multiplicador basado en un SMSR. En el caso en que el producto de las mantisas resulte en el rango 2 ≤ p ≤ 4, se debe realizar un desplazamiento de normalizaci´on a la derecha para restaurar el producto al rango 1 ≤ pr ≤ 2, con el apropiado ajuste del exponente en una unidad. Mientras que el multiplicador de punto flotante basado en el SMSR, la operaci´on de normalizaci´on se efect´ ua mediante una iteraci´on adicional (ciclo n + 1) en la que la entrada X = 0, con el SMSC esta operaci´on no es posible debido a que una iteraci´on del SMSC efect´ ua dos desplazamientos. Debido a esto, el multiplicador basado en el SMSC requiere de l´ogica adicional para la realizaci´on de las tareas de normalizaci´on y de correcci´on del redondeo.

88

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Redondeo a +∞: El esquema de redondeo a +∞ implementado en este multiplicador es el mismo que aquel descripto en la secci´on 3.5.1. La diferencia radica en la aplicaci´on del mismo, ya que tal como se explica en la secci´on previa, se requiere de l´ogica adicional para efectuar la normalizaci´on. Adici´ on de los exponentes La adici´on de los exponentes se realiza de la misma manera que en la secci´on 3.5.1. El exponente del producto resultante se puede expresar mediante la Ec. (3.48). ep = ex + ey − bias + normal

(3.48)

Consumo de recursos l´ ogicos SMSC con redondeo a cero: La Tabla 3.20 muestra la estimaci´on del consumo de recursos l´ogicos del multiplicador en punto flotante basado en un SMSC con redondeo a cero. Las Ecs. (3.49, 3.50 y 3.51) resumen el c´alculo de la estiFunci´on 2× Multiplexor yi Control 2× Producto yi X Sumador Sumador + Reg. P Registro P0 Adici´on exponentes Correcci´on Bias + normalizaci´on Signo

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

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

CLB n − 12 2 n+1 log2 ( 2 ) + 23 2

n+1 n + 32 2 n + 32 2 r 2 r 2

1 2

+1 + 25 1 2

Tabla 3.20: Estimaci´on de consumo de recursos l´ogicos de la variante SMSC con redondeo a cero. maci´on en t´erminos de FGs, FFs y CLBs. En la Fig. 3.48 se grafica el consumo

89

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

estimado de recursos del SMSC.

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

n+1 ) + 16 + 2r 2

(3.49)

n+1 )+8 2

(3.50)

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

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

(3.51)

140

120 XCS05 100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

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

SMSC con redondeo a +∞: La Tabla 3.21 presenta la estimaci´on del consumo de recursos l´ogicos del multiplicador en punto flotante basado en un SMSC.

90

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

Funci´on 2× Multiplexor yi

FG

Control 2× Producto yi X Sumador Sumador + Reg. P Registro P0 Redondeo + norm. Adici´on exponentes Correcci´on Bias + normalizaci´on Signo

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

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

CLB n−1

log2 ( n+1 ) 2 2

+ n+1 n + 32 2 n + 32 2

3 2

1 2

n+2 r +1 2 r + 25 2 1 2

Tabla 3.21: Estimaci´on de consumo de recursos l´ogicos de la variante SMSC con redondeo a +∞. Las Ecs. (3.52, 3.53 y 3.54) resumen el c´alculo de la estimaci´on en t´erminos de FGs, FFs y CLBs.

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

n+1 ) + 20 + 2r 2

(3.52)

n+1 ) + 10 2

(3.53)

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

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

(3.54)

En la Fig. 3.49 se muestra el consumo estimado de recursos del SMSC.

3.6.

Conclusiones

En este cap´ıtulo se caracterizaron los multiplicadores secuenciales y se propusieron nuevas arquitecturas con el objetivo de realizar un estudio comparativo destinado a su implementaci´on en FPGA. Se presentaron las estimaciones de consumo de recursos l´ogicos y de comportamiento temporal que permitieron contrastar las caracter´ısticas de los multiplicadores presentados.

91

Cap´ıtulo 3. Nuevas Arquitecturas de Multiplicadores

140

120 XCS05 100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 3.49: Consumo de recursos del PFPM(SMSC), r = 8. A partir de estas comparaciones se concluy´o que el SMSR, el SMSC(SMSR) y el SMF(SMSR) son los multiplicadores que mejor ´ındice de performance presentan. Resultando el SMSR el ´optimo para aplicaciones donde se busca una reducida cantidad de recursos l´ogicos, y el SMSC(SMSR) o SMF(SMSR) en aplicaciones donde adem´as de las restricciones de recursos se requiere una alta velocidad de procesamiento. Como resultado de las comparaciones, se extendieron las variantes SMSR y SMSC(SMSR) a la multiplicaci´on de operandos en punto flotante. Las arquitecturas propuestas contemplan los esquemas con redondeo a cero y a +∞. Para cada variante se obtuvo una estimaci´on del consumo de recursos l´ogicos.

Cap´ıtulo 4 Resultados Experimentales 4.1.

Introducci´ on

Los multiplicadores propuestos fueron ensayados experimentalmente con el objetivo de contrastar los resultados te´oricos y de las estimaciones. Para ello, los 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´o en primera instancia mediante captura esquem´atica y posteriormente en Lenguaje de Descripci´on de Hardware (VHDL) [28] [29].

4.2.

Par´ ametros de inter´ es

Las variables de inter´es para la validaci´on experimental fueron: consumo de recursos l´ogicos, el retardo de propagaci´on, la frecuencia maxima del reloj de la FPGA (inversa del retardo de propagaci´on), la frecuencia de actualizaci´on de datos por segundo (inversa del tiempo que demanda realizar las iteraciones) y finalmente, el ´ındice de performance, que integra los conceptos de tiempo y de cantidad de recursos l´ogicos.

92

Cap´ıtulo 4. Resultados Experimentales

93

El retardo de propagaci´on tpd se obtuvo a partir del Analizador de Tiempos que posee la herramienta de programaci´on de FPGA de Xilinx (Foundation 3.1i, Timimg Analyzer). Esta herramienta realiza un an´alisis est´atico de todos los retardos incluyendo el retardo entre un flanco de reloj y la correspondiente salida Q de un FlipFlop, considerando adicionalmente el tiempo de establecimiento de una se˜ nal. A partir de estos datos calcula el peor caso de temporizaci´on del dise˜ no. La frecuencia m´axima de funcionamiento de reloj (fc [Mhz]) es la inversa del tiempo tpd e indica la frecuencia m´axima de reloj posible con ese dise˜ no. A partir de esta u ´ltima se obtiene la frecuencia de actualizaci´on de datos o velocidad de procesamiento (P S [Mops]). Esta frecuencia surge de dividir la frecuencia m´axima de trabajo por el n´ umero de ciclos N que requiere ejecutar una operaci´on, PS =

fc . N

El ´ındice de performance definido en la Secci´on 3.4.3 se utiliz´o con el objetivo de comparar el desempe˜ no de cada sistema implementado en la FPGA.

4.3. 4.3.1.

Multiplicaci´ on en Punto Fijo Consumo de recursos l´ ogicos

El consumo de recursos l´ogicos se puede cuantificar en CLBs. Cada CLB est´a compuesto por dos generadores de funciones (FG) y dos FlipFlops (FF). En las series Virtex y Virtex II, cada CLB posee dos celdas denominadas slice, pero a fines pr´acticos la unidad utilizada es la de un CLB = un slice. A continuaci´on se presentan los resultados experimentales de los multiplicadores 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 l´ogicos de los multiplicadores implementados en

94

Cap´ıtulo 4. Resultados Experimentales

las FPGAs XCV300e-8 y XC2V250-5 de las series Virtex y Virtex II. Implementaci´ on de los multiplicadores en Spartan 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 implementaci´on de Xilinx agrupa dos secciones de los multiplicadores en un s´olo CLB. En el

Cap´ıtulo 4. Resultados Experimentales

95

Tabla 4.3: Diferencia porcentual, Consumo Experimental vs Estimado [ %]. n 8 10 12 14 16 18 20 22 24 26 28 30 32 SM -15 -17 -19 -20 -21 -21 -22 -20 -22 -23 -23 -23 -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 multiplicaci´on existen dos secciones, una combinacional sin registros y otra que utiliza s´olo registros, permitiendo, que el programa logre reducir el consumo de CLBs complementando dos secciones del multiplicador. A continuaci´on se explica esta situaci´on por medio de la implementaci´on del SM que se muestra en la Fig. 4.1. En la estructura del SM, Fig. 3.2, el registro

Figura 4.1: S´ıntesis de un CLB del multiplicador SM. que almacena el operando X s´olo utiliza los FFs de un CLB permitiendo que los FGs se puedan utilizar para otras funciones. Si se introduce esta consideraci´on de

96

Cap´ıtulo 4. Resultados Experimentales

s´ıntesis en la estimaci´on de consumo de recursos del multiplicador, la Ec. (3.6) es modificada, obteniendo la Ec. (4.1). 3 log2 n 5 CLB(n) = n + + 2 2 2

(4.1)

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

100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 4.2: Consumo de recursos l´ogicos del SM en Spartan. La Fig. 4.3 presenta la contrastaci´on entre la estimaci´on de la Ec. 4.1 y los resultados experimentales, donde se advierte la consistencia entre los resultados experimentales y los estimados.

97

Cap´ıtulo 4. Resultados Experimentales

120 Estimado Experimental

100

CLB

80

60

40

20

0

0

5

10

15

20

25

30

35

n

Figura 4.3: Consumo de recursos l´ogicos del SM en Spartan. Implementaci´ on de los multiplicadores en Virtex En la Tabla 4.4 se presenta el consumo de recursos l´ogicos de los multiplicadores, en t´erminos de slices1 , para una FPGA XCV300e-8 de la serie Virtex de Xilinx. Se puede observar que en el caso de los multiplicadores en Virtex, el software de implementaci´on no optimiza el uso de las celdas como lo hizo en la serie Spartan, por lo que el consumo coincide conlo estimado en Cap´ıtulo 3. Implementaci´ on de los multiplicadores en Virtex II La Tabla 4.5 presenta el consumo de recursos l´ogicos de los multiplicadores, en t´erminos de slices, para una FPGA XC2V250-5 de la serie Virtex II de Xilinx. Se puede observar que en el caso de los multiplicadores en Virtex II el consumo de recursos es similar al de la serie Virtex. 1

El contenido de un slice es similar al de un CLB de una Serie Spartan de Xilinx.

Cap´ıtulo 4. Resultados Experimentales

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

4.3.2.

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

98

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

Comportamiento temporal

El comportamiento temporal de los multiplicadores depende del retardo inherente de las compuertas l´ogicas y registros, y el retardo debido a la interconexi´on entre las mismas. En el cap´ıtulo anterior se estim´o el comportamiento temporal sin considerar los retardos de interconexi´on debido a que los mismos reci´en se conocen una vez implementado el circuito. Implementaci´ on de los multiplicadores en Spartan En esta secci´on se presentan los resultados experimentales de los multiplicadores implementados en una FPGA XCS20-pq208. A partir de estos resultados, se obtiene una expresi´on de los retardos de interconexi´on, los que se incorporan

Cap´ıtulo 4. Resultados Experimentales

99

a la estimaci´on del comportamiento temporal de cada multiplicador permitiendo caracterizarlo de manera m´as precisa. En la Tabla 4.6 se muestran los resultados experimentales de los multiplicadores implementados en Spartan. Tabla 4.6: Retardo de propagaci´on de los multiplicadores en Spartan [ns]. n 8 10 12 14 16 18 20 22 24 26 28 30 32 SM 11.1 11.8 12.5 13.0 13.5 14.3 14.8 15.2 15.9 16.6 17.0 17.3 18.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 propagaci´on estimado en el Cap´ıtulo 3. Se recuerda que el retardo de propagaci´on en las variantes SM y SMSR es el mismo, existiendo la diferencia en el n´ umero de iteraciones de cada modelo. Tabla 4.7: Retardo estimado de propagaci´on de los multiplicadores Trd = 0 [ns]. n 8 10 12 14 16 18 20 22 24 26 28 30 32 SM 9.1 9.6 10.1 10.6 11.1 11.6 12.1 12.6 13.1 13.6 14.1 14.6 15.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 interconexi´on genera entre un 10 y un 30 % de retardo adicional al retardo estimado. La Tabla 4.9 muestra la velocidad de procesamiento resultante de los multiplicadores implementados en Spartan.

100

Cap´ıtulo 4. Resultados Experimentales

Tabla 4.8: Diferencia porcentual, Retardo de propagaci´on Experimental vs Estimado [ %]. 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

Implementaci´ on de los multiplicadores en Virtex La Tabla 4.10 presenta m´axima velocidad de procesamiento que se puede obtener con los multiplicadores, en t´erminos de Millones de operaciones por segundo, para la FPGA XCV300e-8. Implementaci´ on de los multiplicadores en Virtex II La Tabla 4.11 presenta m´axima velocidad de procesamiento que se puede obtener con los multiplicadores, en t´erminos de Millones de operaciones por segundo, para la FPGA XC2V250e-8.

101

Cap´ıtulo 4. Resultados Experimentales

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

4.3.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

Comparaci´ on de los multiplicadores

En esta secci´on se realiza la comparaci´on de los multiplicadores ensayados a partir de los resultados obtenidos de las implementaciones. Multiplicadores optimizados en consumo de recursos La Fig. 4.4 muestra el consumo de recursos l´ogicos de los multiplicadores secuenciales SM y SMSR implementados en la serie Spartan. Se puede observar que el SM posee un consumo de recursos aproximadamente 20 % inferior al del SMSR. Esto se debe fundamentalmente al algoritmo de s´ıntesis e implementaci´on de Xilinx que agrupa dos secciones del SM en un solo CLB.

102

Cap´ıtulo 4. Resultados Experimentales

80 SM SMSR 70

60

CLB

50

40

30

20

10

0

5

10

15

20 n

25

30

35

Figura 4.4: Consumo de recursos l´ogicos: SM vs SMSR en Spartan. En la Fig. 4.5 se muestra la misma comparaci´on en la serie Virtex. En la misma se puede observar que la relaci´on de consumo entre los multiplicadores posee las mismas caracter´ısticas que las estimadas en la Secci´on 3.4. La Fig 4.6 muestra la comparaci´on de los multiplicadores implementados en Virtex II. 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 n´ umero de iteraciones de cada multiplicador, debido a que el retardo de la ruta cr´ıtica para ambos multiplicadores es pr´acticamente el mismo. Las Figs. 4.8 y 4.9 muestran la misma comparaci´on realizada para las series Virtex y Virtex II. Se puede observar que la relaci´on existente entre ambos multiplicadores se mantiene para todas las implementaciones.

103

Cap´ıtulo 4. Resultados Experimentales

80

70

60

CLB

50

40

30

20

10 SM SMSR 0

5

10

15

20 n

25

30

35

Figura 4.5: Consumo de recursos l´ogicos: SM vs SMSR en Virtex.

80

70

60

CLB

50

40

30

20

10 SM SMSR 0

5

10

15

20 n

25

30

35

Figura 4.6: Consumo de recursos l´ogicos: SM vs SMSR en Virtex II.

104

Cap´ıtulo 4. Resultados Experimentales

14 SM SMSR 12

PS [Mops]

10

8

6

4

2

0

5

10

15

20 n

25

30

35

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

30 SM SMSR

25

PS [Mops]

20

15

10

5

0

5

10

15

20 n

25

30

35

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

105

Cap´ıtulo 4. Resultados Experimentales

40 SM SMSR 35

30

PS [Mops]

25

20

15

10

5

0

5

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 grafica el consumo de recursos l´ogicos de las variantes propuestas, optimizadas en velocidad, en contraste con los multiplicadores de base 4. Al respecto se puede observar que el multiplicador del tipo SMSC(SM) es el que consume la menor cantidad de recursos, seguido del SMbase4(-X). El SMSC(SMSR) presenta un consumo de recursos l´ogicos alrededor de un 20 % superior a la variante SM. Una relaci´on similar mantienen ambas variantes del multiplicador SMF. Al respecto se puede observar que la variante SMSR posee un consumo de recursos de casi un 142 % del SMSC(SM), y la variante SM un 129 %. Las Figs. 4.11 y 4.12 muestran la comparaci´on realizada para las series Virtex y Virtex II de Xilinx respectivamente. Se puede observar que las variantes de los multiplicadores basadas en los SM poseen un consumo de recursos similar al presentado en la Secci´on 3.4.

106

Cap´ıtulo 4. Resultados Experimentales

120

100

CLB

80

60

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

20

0

0

5

10

15

20

25

30

35

n

Figura 4.10: Consumo de recursos l´ogicos de multiplicadores optimizados en velocidad en Spartan.

120

100

CLB

80

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 l´ogicos de multiplicadores optimizados en velocidad en Virtex.

107

Cap´ıtulo 4. Resultados Experimentales

120

100

CLB

80

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 l´ogicos de multiplicadores optimizados en velocidad en Virtex II. En la Fig. 4.13 se grafica una comparaci´on de las velocidades de procesamiento 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 iteraci´on adicional. El multiplicador SMSC(SMSR) obtiene una buena velocidad de procesamiento que es comparativa a la velocidad obtenida por el multiplicador SMF(SM). Se observa tambi´en que la velocidad de la variante SMSC(SM) es superior a la velocidad obtenida por el SMbase4(3X).

108

Cap´ıtulo 4. Resultados Experimentales

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

20 18 16

PS [Mops]

14 12 10 8 6 4 2 0

5

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

PS [Mops]

30

25

20

15

10

5

0

5

10

15

20 n

25

30

35

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

109

Cap´ıtulo 4. Resultados Experimentales

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

50 45 40

PS [Mops]

35 30 25 20 15 10 5 0

5

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 fin de estimar los beneficios que se obtienen con cada variante se utiliza el ´ındice de performance propuesto en la Ec. (3.40). Implementaci´ on en Spartan: En la Fig. 4.16 se grafica el ´ındice de performance para las distintas variantes, luego de su implementaci´on en una FPGA de 400 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que los mejores resultados corresponden a los multiplicadores SM y SMSC(SMSR). En la Fig. 4.17 se grafica el ´ındice de performance para un rango de 20 ≤ n ≤ 32 bits. En esta figura se observa que el SM posee el mejor ´ındice. Adicionalmente ´ındice del SMSC(SM) resulta mejor que el del SMSC(SMSR) debido a que 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 m´as parecida.

110

Cap´ıtulo 4. Resultados Experimentales

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

Performance

200

150

100

50

5

10

15

20

n

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

Performance

25

20

15

10

5

20

22

24

26 n

28

30

32

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

111

Cap´ıtulo 4. Resultados Experimentales

Implementaci´ on en Virtex: En la Fig. 4.16 se grafica el ´ındice de performance para las distintas variantes, luego de su implementaci´on en una FPGA Virtex de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que el mejor resultado corresponde al SMSC(SMSR) y, en menor medida el SMSR Y el SMF(SMSR). SM SMSR SMB4 (3X) SMB4 (−X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

2000

Performance

1500

1000

500

0

5

10

15

20

n

Figura 4.18: ´Indice de performance de los multiplicadores en Virtex, 8 ≤ n ≤ 20. En la Fig. 4.17 se grafica el ´ındice de performance para un rango de 20 ≤ n ≤ 32 bits, donde se observa que el ´ındice de los multiplicadores resulta m´as 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 interconexi´on de los multiplicadores m´as complejos aumenta m´as notoriamente en relaci´on con el SM y el SMSR.

112

Cap´ıtulo 4. Resultados Experimentales

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

350

300

Performance

250

200

150

100

50

0

20

22

24

26 n

28

30

32

Figura 4.19: ´Indice de performance de los multiplicadores en Virtex, 20 ≤ n ≤ 32. Implementaci´ on en Virtex II: En la Fig. 4.16 se grafica el ´ındice de performance para las distintas variantes, luego de su implementaci´on en una FPGA Virtex II de 1536 CLB’s para el rango de 8 ≤ n ≤ 20 bits. Se puede observar que el mejor resultado corresponde al SMF(SMSR) y, en menor medida el SMSR Y EL SMF(SMSR)(salvo para el caso de n = 8, en el cual ambos poseen un mayor ´ındice). En la Fig. 4.17 se grafica el ´ındice de performance para un rango de 20 ≤ n ≤ 32 bits, donde se observa que el ´ındice de los multiplicadores resulta m´as comparable pero manteniendo la misma relaci´on que para valores de n < 20.

113

Cap´ıtulo 4. Resultados Experimentales

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

2500

Performance

2000

1500

1000

500

0

5

10

15

20

n

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

Performance

300

250

200

150

100

50

0

20

22

24

26 n

28

30

32

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

114

Cap´ıtulo 4. Resultados Experimentales

4.4.

Multiplicaci´ on en Punto Flotante

Los multiplicadores en punto flotante propuestos fueron ensayados experimentalmente a fin de verificar los resultados obtenidos te´oricamente y de las estimaciones. 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 Descripci´on de Hardware (VHDL) [28] [29] para una longitud de exponente r = 8 y variando la longitud de palabra de la mantisa.

4.4.1.

Consumo de recursos l´ ogicos

Implementaci´ on de los multiplicadores en Spartan El consumo de recursos l´ogicos de los multiplicadores en punto flotante en Spartan se muestran en la Tabla 4.12. Tabla 4.12: Consumo en Spartan [CLBs]. n SMSR SMSR +∞ SMSC SMSC +∞

de recursos l´ogicos de los multiplicadores en punto flotante 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

Implementaci´ on de los multiplicadores en Virtex En la Tabla 4.13 se presenta el consumo de recursos l´ogicos de los multiplicadores, en t´erminos de slices2 , para una FPGA XCV300e-8 de la serie Virtex de Xilinx. 2

El contenido de un slice es similar al de un CLB de una Serie Spartan de Xilinx.

115

Cap´ıtulo 4. Resultados Experimentales

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

l´ogicos de las 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

Implementaci´ on de los multiplicadores en Virtex II En la Tabla 4.14 se presenta el consumo de recursos l´ogicos de los multiplicadores 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

4.4.2.

recursos l´ogicos de 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

Comportamiento temporal

Implementaci´ on de los multiplicadores en Spartan En la Tabla 4.15 se presenta m´axima velocidad de procesamiento que se puede obtener con los multiplicadores, en t´erminos de Millones de operaciones por segundo, para una FPGA de la serie Spartan de Xilinx. Tabla 4.15: Comportamiento temporal de las variantes en Spartan [Mflop/s]. n 9 11 13 15 17 19 21 23 25 27 SMSR 7.6 6.1 5.1 4.3 3.7 3.2 2.8 2.5 2.2 2.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

116

Cap´ıtulo 4. Resultados Experimentales Implementaci´ on de los multiplicadores en Virtex

En la Tabla 4.16 se presenta m´axima velocidad de procesamiento que se puede obtener con los multiplicadores, en t´erminos de Millones de operaciones por segundo, para una FPGA XCV300e-8 de la serie Virtex de Xilinx. Tabla 4.16: Comportamiento temporal de las variantes 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 [Mflop/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

Implementaci´ on de los multiplicadores en Virtex II En la Tabla 4.17 se presenta m´axima velocidad de procesamiento que se puede obtener con los multiplicadores, en t´erminos de Millones de operaciones por segundo, para una FPGA XC2V250e-8 de la serie Virtex II de Xilinx. Tabla 4.17: Comportamiento temporal de las variantes 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

4.4.3.

en Virtex 23 25 9.1 8.3 7.5 6.9 12.1 10.9 11.9 10.7

II [Mflop/s]. 27 7.2 6.2 10.0 10.0

Performance

A fin de poder estimar los beneficios que se obtienen con cada variante a trav´es de un u ´nico 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

117

Cap´ıtulo 4. Resultados Experimentales

un ´ındice de hasta un 15 % superior a la variante SMSC. Esto se debe fundamentalmente a que el retardo de propagaci´on de la variante SMSR con redondeo a cero es inferior al de la variante SMSC. 120 SMSC SMSR

100

p

80

60

40

20

0 15

20

25

30

35

40

n

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 pr´acticamente es el mismo. Esto quiere decir que la variante SMSR es la ´optima para dise˜ nos con fuertes restricciones en cuanto a consumo de recursos l´ogicos y la variante SMSC para restricciones en velocidad de procesamiento. Las Figs. 4.24 y 4.25 se muestra el ´ındice de los multiplicadores para Virtex y Virtex II respectivamente. Se puede observar que, si bien el ´ındice de la variante SMSR para Virtex es pr´acticamente igual al de la variante SMSC, en Virtex II el SMSR logra un porcentaje mayor de desempe˜ no. Esto es, debido a que en ´esta u ´ltima serie de FPGA se obtuvo una mejor velocidad de procesamiento por parte de la variante SMSR.

118

Cap´ıtulo 4. Resultados Experimentales

120 SMSC SMSR

100

p

80

60

40

20

0 15

20

25

30

35

40

n

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

1000 Experimental results SMSC Experimental results SM 900

800

Performance index

700

600

500

400

300

200

100

0

5

10

15

20

25

30

n

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

119

Cap´ıtulo 4. Resultados Experimentales

1200 Experimental results SMSC Experimental results SM

1000

Performance index

800

600

400

200

0

5

10

15

20

25

30

n

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

4.5.

Conclusiones

Se presentaron los resultados de implementaci´on de los multiplicadores secuenciales. Estos resultados permiten validar las ecuaciones y conceptos presentados en cap´ıtulos previos, habilitando estas ecuaciones como una herramienta u ´til para la evaluaci´on de multiplicadores en FPGA. A partir de los resultados de las comparaciones entre los multiplicadores ensayados, se concluye que el SM s´olo posee el mayor ´ındice de performance cuando se lo implementa en la serie Spartan debido a que consume una cantidad inferior de recursos relativo a la implementaci´on de los otras series. En estas u ´ltimas, la performance del SMSR resulta superior a la del SM seg´ un lo estimado en el 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 elecci´on cuando se requiere, adem´as de bajo consumo de recursos, una mejor velocidad de procesamiento. A

Cap´ıtulo 4. Resultados Experimentales

120

pesar de que esta velocidad resulta inferior que la de la variante SMF, presenta una notable reducci´on en consumo de recursos a su favor. Adem´as se observa que los resultados obtenidos con ambos multiplicadores respecto a los de base 4, la mejora es sustancial. Finalmente, la extensi´on de los multiplicadores a punto flotante demostr´o que se pudo obtener un multiplicador de bajo consumo de recursos l´ogicos y buen desempe˜ no en velocidad.

Cap´ıtulo 5 Conclusiones Las conclusiones de esta Tesis son las siguientes: 1. Se relevaron las arquitecturas de multiplicadores existentes en la literatura, corrobor´andose el excesivo consumo de recursos l´ogicos de los mismos. 2. Se propuso la utilizaci´on de la Multiplicaci´on Secuencial para reducir el consumo de recursos. Se modelaron los multiplicadores secuenciales y se concluy´o que se deb´ıa mejorar su desempe˜ no en velocidad. 3. Se propusieron nuevas arquitecturas de multiplicadores secuenciales con el objetivo de mejorar su desempe˜ no en velocidad. Se modelaron las variantes y se las compar´o con los multiplicadores existentes. 4. Se validaron experimentalmente los modelos de los multiplicadores a trav´es de la implementaci´on de los mismos en varias familias de FPGAs. Se obtuvieron mejoras importantes del desempe˜ no de los mismos. 5. Se aplicaron las nuevas arquitecturas de Multiplicadores Secuenciales a la multiplicaci´on en punto flotante. Se obtuvieron multiplicadores de punto flotante de reducido consumo l´ogico y buenas prestaciones de velocidad. 121

Cap´ıtulo 5. Conclusiones

122

6. Se aplic´o la multiplicaci´on secuencial a un problema concreto de control de movimiento. El sistema desarrollado mostr´o notables mejoras con respecto al dise˜ no convencional basado en DSPs. Estas conclusiones se desarrollan con m´as detalle a continuaci´on. 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 implementaci´on obtenidos se resumen en la Tabla 5.1. Tabla 5.1: Implementaci´on de Multiplicadores Paralelos en FPGA. 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´o que, si bien los multiplicadores paralelos pueden ejecutar productos r´apidamente, presentan un elevado consumo de recursos que adem´as aumenta cuadr´aticamente con la longitud de palabra de los operandos. Por ejemplo se pudo comprobar que, para 32 bits, no existen modelos de la serie Spartan, capaces de soportar la cantidad de recursos necesarios. Por lo tanto, la aplicaci´on de estas arquitecturas se limita a FPGAs de gran tama˜ no.

Cap´ıtulo 5. Conclusiones

123

Multiplicaci´ on Secuencial Se investig´o el esquema de la Multiplicaci´on Secuencial, que consume una 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´o que, si bien el consumo de recursos l´ogicos es sustancialmente menor, 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´o que es necesario mejorar el desempe˜ no en velocidad de los multiplicadores secuenciales. Arquitecturas propuestas de Multiplicadores Secuenciales Se realizaron propuestas para la optimizaci´on en velocidad de la Multiplicaci´on Secuencial. Para cada uno de los multiplicadores se describi´o su estrategia y se lo model´o para poder comparar su desempe˜ no. A partir del modelo de cada multiplicador, se expres´o cada uno en Lenguaje de Descripci´on de Hardware (HDL) [28] [29] y se realiz´o la correspondiente implementaci´on experimental. La Tabla 5.3 resume el consumo de recursos y la velocidad de procesamiento obtenida para estos multiplicadores.

Cap´ıtulo 5. Conclusiones

124

Tabla 5.3: Resultados experimentales de los Multiplicadores Secuenciales 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 desempe˜ no en velocidad sin un sacrificio sustancial de recursos l´ogicos. En particular, con la variante SMF(SMSR) se logr´o un incremento de velocidad estimado entre un 60 % (8 bits) y un 100 % (32 bits) con respecto al SM. Con esta variante se estar´ıa alcanzando la velocidad de procesamiento del MP para la serie Spartan con un consumo hasta 8 veces menor. Nuevas Arquitecturas de Multiplicaci´ on Secuencial en Punto Flotante Los resultados obtenidos con las multiplicadores propuestos se aplicaron a la multiplicaci´on en punto flotante. Se seleccionaron dos de los multiplicadores desarrollados y se realiz´o el respectivo modelo en punto flotante. Las ecuaciones se validaron a trav´es de la implementaci´on de los mismos en las familias de FPGA antes mencionadas.

Cap´ıtulo 5. Conclusiones

125

La Tabla 5.4 muestra el consumo de recursos l´ogicos de los multiplicadores SMSR y SMSC aplicados a punto flotante. A su vez, se muestran los ensayos realizados con redondeo a cero y redondeo a +∞ (ver Secci´on 2.2.2). Tabla 5.4: Resultados experimentales de Multiplicadores en Punto Flotante Spartan Virtex Virtex II Bits Tipo CLB Mflops CLB Mflops CLB Mflops 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 desempe˜ no 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 desempe˜ no 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 desempe˜ no al menos 3 veces superior a los reportados por 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 s´olo 2,5 veces menor. Es decir, que el desempe˜ no logrado con los multiplicadores 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

126

Multiplicaci´ on Secuencial aplicada al Control de Movimiento El controlador desarrollado permiti´o el control de posici´on de m´aquinas incrementales a alta velocidad en paso completo o en modo micropaso2 . Se utiliz´o el multiplicador SMSR para el modo paso y el SMSC para el modo micropaso. Con el sistema desarrollado, se alcanzaron velocidades hasta 5 veces mayores que las obtenidas mediante DSPs en modo paso y hasta 12 veces en modo micropaso. Publicaciones ”Multiplicadores secuenciales en FPGA: evaluaci´on y comparaci´on de par´ametros”, 8th Argentine Symposium on Computing Technology (36 JAIIO) ISBN 1850-2776. Mar del Plata 2007. ”Estudio comparativo de multiplicadores secuenciales implementados en FPGA”, XII Reuni´on de Trabajo en Procesamiento de la Informaci´on y 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 Autom´atico. ISBN 978-950-99994-4-2. Mar del Plata 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. 2

El modo micropaso consiste en el accionamiento del movimiento del motor incremental en fracciones de un paso.

Cap´ıtulo 5. Conclusiones

127

”Novel stepper motor controler based on FPGA hardware implementation ”, IEEE/ASME Transactions on Mechatronics, Nro. 1 Vol 8 ISSN 1083-4435 March 2003, pg 120-124. ”FPGA based stepper motor controller”, II Southern Conference on Programmable Logic. ISBN 84-609-8998-4. Mar del Plata 2006.

5.0.1.

Trabajos futuros

La implementaci´on hardware de algoritmos de control puede resultar de suma utilidad en el campo de la Electr´onica de Potencia. Los convertidores de potencia presentan permanentemente un compromiso entre la velocidad del sistema global y la complejidad del control. La evoluci´on de los dispositivos digitales de las u ´ltimas d´ecadas permiti´o el avance en el control de estos sistemas, sin embargo los requerimientos actuales tambi´en son mayores. En el campo de l´ogica programable, la capacidad de paralelizaci´on de tareas permitir´ıa aumentar la eficiencia del control de los convertidores, ya sea aumentando la velocidad de procesamiento del sistema utilizando algoritmos de control y/o modulaci´on m´as sofisticados que mejorar´ıa la performance del convertidor. Adicionalmente, el sistema implementado en FPGA permitir´ıa la generaci´on de seguridad y protecci´on en la conmutaci´on de las llaves de los convertidores en forma independiente de la ejecuci´on del algoritmo. En el marco de la investigaci´on realizada hasta el momento, se propone expandir los conocimientos adquiridos para el desarrollo e implementaci´on de los algoritmos de control destinados a Convertidores de Potencia. Entre las herramientas necesarias, se encuentra la necesidad de desarrollar sumadores en punto flotante que posean las mismas caracter´ısticas que los multiplicadores propuestos

Cap´ıtulo 5. Conclusiones

128

en el Cap´ıtulo 3. Los sumadores en punto flotante consumen considerables cantidades de recursos l´ogicos, comparables a la de los multiplicadores. Por otro lado, los algoritmos de control de los convertidores de potencia requieren usualmente el c´alculo de funciones trigonom´etricas. Se pretende desarrollar avances en este campo mediante la aplicaci´on de los conocimientos en la ejecuci´on de algoritmos, entre los que se encuentra el de CORDIC [30] [31].

Bibliograf´ıa [1] E. Boemo, E. Ju´arez, and J. Meneses, “Taxonom´ıa de multiplicadores,” Proc. VIII DCIS Conference. Univ. of Malaga., pp. 185–190, 1993. [2] D. Teixeira, A. Susim, and L. Carro, “Comparaci´on de multiplicadores en fpga,” V Workshop Iberchip, vol. 1, pp. 182–187, Enero 1999. ˜ ˜ [3] .Nibouche, A. Bouridarie, and M.Nibouche, “New architectures for serialserial multiplication,” IEEE, pp. 705–708, 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. 503–509, 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. 593–596, May 2000. [7] C. Wallace, “A suggestion for a fast multiplier,” IEEE Trans. on Electronic Comuters, pp. 14–17, 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 floating point arithmetic on FPGA based custom computing machines,” Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines, pp. 155–162, 1995. [10] I. W. B. Ligon, S. McMillan, G. Monn, K. Schoonover, F. Stivers, and K. D. Underwood, “A re-evaluation of the practicality of floating-point operations on FPGAs,” Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines, pp. 206–215, 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, Introducci´on al Dise˜ no L´ogico Digital. Wilmington, Delaware, 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 coefficient convolution implemented in fpgas,” in Digital System Design, 2002. Proceedings. Euromicro Symposium on, 4-6 Sept. 2002, pp. 291–298. [16] J. B. Evans, C.-J. Chou, and S. Mohanakrishnan, “FPGA implementation of digital filters,” Proc. ICSPAT’93, pp. 1–9, 1993. [17] R. J. Landry, V. Calmettes, and E. Robin, “High speed IIR filter for xilinx FPGA,” Proceedings of the 1998 Midwest Symposium on Systems and Circuits, 1998. [18] I. S. 754, IEEE standard for binary floating-point arithmetic. New York: The Institute of Electrical and Electronics Engineers Inc., 1985. [19] H. Guild, “Fully iterative fast array for binary multiplication and addition,” Electronic Letters, vol. 5, p. 263, 1969. [20] J. McCanny and J. McWhirter, “Completely iterative, pipelined 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. 40–46, Apr. 1982. [21] “Core generator,” http://www.xilinx.com/products/logicore/coregen/index.htm, 2000. [22] L. Louca, T. A. Cook, and W. H. Johnson, “Implementation of IEEE single precision floating point addition and multiplication on FPGAs,” Proceedings IEEE Symposium on FPGAs for Custom Computing Machines, pp. 107–116, 1996. [23] A. Jaenicke and W. Luk, “Parameterised floating-point arithmetic on fpgas,” in Acoustics, Speech, and Signal Processing, 2001. Proceedings. (ICASSP ’01). 2001 IEEE International Conference on, vol. 2, 7-11 May 2001, pp. 897–900vol.2.

Bibliograf´ıa

131

[24] M. A. Jimnez, N. G. Santiago, and D. T. Rover, “Development of a scalable FPGA-based floating 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-efficient fpga-based floating-point multiplier,” in Microelectronics, 2003. ICM 2003. Proceedings of the 15th International Conference on, 9-11 Dec. 2003, pp. 274–277. ˜ [26] B.New, “Estimating the performance of XC4000E adders and counters,” Xilinx, Tech. Rep. Xapp 018, 1996. [27] The Programable Logic Data Book 1999. Xilinx, 1999. [28] S. Ghosh, Hardware Description Languages Concepts and Principles. 445 Hoes Lane, P.O. Box 1331 Piscataway, NJ 08855-1331: IEEE Press, 1999. [29] E. Villar, L. Ter´es, S. Olcoz, and Y. Torroja, VHDL Lenguaje Estandar de Dise˜ no Electr´onico. Madrid: McGraw Hill, 1997. [30] J. E. Volder, “The CORDIC Trigonometric Computing Technique,” IRE Transactions on Electronic Computers, vol. EC-8, pp. 330–334, 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. 715–718. [32] [Online]. Available: www.cypress.com [33] [Online]. Available: www.actel.com [34] [Online]. Available: www.quicklogic.com [35] [Online]. Available: www.xilinx.com [36] [Online]. Available: www.altera.com [37] [Online]. Available: http://www.alcatel-lucent.com/wps/portal [38] [Online]. Available: www.atmel.com [39] R. Bossart, H. Braun, F. Chautard, M. Comunian, J. Delahaye, J.C.Godot, I. Kamber, J. Madsen, L. Rinolfi, S. Schreiber, G. Suberlucq, I. Wilson, and W. Wuensch, “Performances obtained with the cern linear collider test facility,” in Proc. European Particle Accelerator ConferenceEPAC’94, London, UK, July 1994, pp. 680–682. [Online]. Available: http://accelconf.web.cern.ch/AccelConf/

Bibliograf´ıa

132

[40] W. Coosemans and H. Mainaud, “Pre-alignment of clic using the double-wire method,” European Organization of Nuclear Research (CERN), Tech. Rep. 343, July 1997, CLIC-NOTE 343. [41] P. Poirier, “L´alignement dynamique submicrometrique de sections acceleratrices,” 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. 25–30. [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 Staff, Ed. Piscataway, NJ, USA: IEEE Press, Dec. 1994, pp. 543–545. [45] D. O. Carrica and S. A. Gonz´alez, “Algoritmo eficiente para la generaci´on de perfiles de velocidad en el accionamiento simult´aneo de m´ ultiples motores paso a paso,” in ANALES VIII Reuni´on de Trabajo en Procesamiento de la Informaci´on y Control, RPIC’99, vol. 1. Mar del Plata, Argentina: Facultad de Ingenieria, U.N.M.d.P., Sept. 23–25, 1999, pp. 118–122. [46] P. Acarnley, Stepping Motors: A Guide to Modern Theory and Practice, 4th ed., ser. IEE Control Engineering Series, no. 63. London, U.K.: 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-ISIE’2001, 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. 31–42, Jan./Mar. 2000.

Bibliograf´ıa

133

[50] N. Acosta, C. Collado, and K. Larsen, “M´etricas para la generaci´on de multiplicadores 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 an´alisis de su materializaci´on en FPGA.” Proc. of VI Workshop Iberchip., pp. 158–168, 2000. [52] A. Booth, “A signed binary multiplication technique,” Quartelly J. of Mech. Appl. Math., vol. 4 Part 2, 1951. [53] S. Brown, “FPGA architectural research: A survey,” Design & Test of Computers, IEEE, vol. 13, pp. 9–15, 1996. [54] S. Brown and J. Rose, “FPGA and CPLD architectures: A tutorial,” Design & Test of Computers, IEEE, vol. 13, pp. 42–57, 1996. [55] D. Carrica, R. Pittin, W. Coosemans, and M. Benedetti, “Active 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-efficient 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 modified booth algorithm,” IEEE Transactions on Circuits and Systems - II: Analog and Digital Signal Processing, vol. 47, no. 9, pp. 902–908, September 2000. [59] M. Funes, D. Carrica, and M. Benedetti, “Floating point multipliers with reduced fpga area,” vol. 1, 2006, pp. 59–66. [60] ——, “Multiplicadores de punto flotante para estructuras FPGA,” vol. 1, 2002, p. 40. [61] ——, “Multiplicadores secuenciales para estructuras FPGA,” vol. Vol. II, 2001, pp. 646–651. [62] A. A. Gray and S. D. Hoy, “Parallel adaptive equalizer employing subconvolution: VLSI architecture realized in a field programmable gate array,” 2003 MAPLD International Conference, 2003. [63] R. W. Hix and R. L. Haggard, “Comparative design methodologies for FPGA based computer arithmetic,” Proceedings of the Twenty-Ninth Southeastern Symposium on System Theory, pp. 374–378, 1997.

134

Bibliograf´ıa

[64] B. Lee and N. Burgess, “Parameterisable floating-point operations on FPGA,” Conference Record of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers, pp. 1064–1068, 2002. [65] L. Mintzer, “Large FFT’s in a single FPGA,” ICSPAT, 1996. [66] K. Rajagopalan and P. Sutton, “A flexible multiplication unit for an FPGA logic block,” The 2001 IEEE International Symposium on Circuits and Systems, 2001. ISCAS 2001, vol. vol. 4, pp. 546–549, 2001. [67] C. Souani, M. Abid, and R. Tourki, “An FPGA implementation of the floating point addition,” Industrial Electronics Society IECON ’98. Proceedings of the 24th Annual Conference of the IEEE, vol. 3, pp. 1644–1648, 1998. [68] P. F. Stelling, C. U. Martel, V. G. Oklobdzija, and R. Ravi, “Optimal circuits for parallel multipliers,” IEEE Transactions on Computers, vol. 47, no. 3, pp. 273–285, March 1998. [69] P. F. Stelling and V. G. Oklobdzija, “Optimal designs for multipliers and multiply-accumulators,” Proceedings of the 15th IMACS World Congress on Scientific Computation, Modeling, and Applied Mathematics, vol. 4, pp. 739– 744, August 1997. [70] M. Thornton, J. Gaiche, and J. Lemieux, “Tradeoff analysis of integer multiplier circuits implemented in FPGAs,” Communications, Computers and Signal Processing IEEE Pacific RIM Conference, pp. 301–304, 1999. [71] E. Todorovich, G. Sutter, N. Acosta, E. Boemo, and S. L´opez-Buedo, “Relaci´on entre velocidad y consumo en FPGAs,” VII Workshop Iberchip, pp. 1–6 CD Browser, 2001. [72] B. Von Herzen, “Signal processing at 250mhz using highperformanceFPGA’s,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems,, vol. 6, Issue 2, pp. 238–246, 1998. [73] The Programable Logic Data Book. Xilinx, 2000. [74] R. Zimmermann, Binary Adder Architectures for Cell-Based VLSI and 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. Gaffar, W. Luk, P. Cheung, and N. Shirazi, “Customising floating-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 configurable logic,” in EUROMICRO 94. System Architecture and Integration. Proceedings of the 20th EUROMICRO Conference., 5-8 Sept. 1994, pp. 125–130. [79] M. Louie and M. Ercegovac, “Multiplication and inner product with field programmable gate arrays,” in VLSI Signal Processing, VII, 1994., [Workshop on], 26-28 Oct. 1994, pp. 246–255. [80] R. Lysecky and F. Vahid, “A configurable 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. 480–485Vol.1. [81] T. Miyamori and U. Olukotun, “A quantitative analysis of reconfigurable 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. 982–986vol.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. 75–80. ˜ [84] N. Vassiliadis, S.Nikolaidis, S. Siskos, and D. Soudris, “The effect 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. 213–216Vol.1. [85] J. S. Walther, “A Unified Algorithm for Elementary Functions,” in Proceedings of the Spring Joint Computer Conference, 1971. [86] X. Wang and S. Ziavras, “A configurable 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 floating-point arithmetics on FPGAs,” in International Conference on Speech, and Signal Processing, Vol. IEEE, 2001, pp. 897–900. [88] W. W. Yu and S. Xing, “Fixed-point multiplier evaluation and design with fpga,” in Proc. SPIE Vol. 3844, p. 153-161, Reconfigurable Technology: FPGAs for Computing and Applications, Aug. 1999, pp. 153–161.

Ap´ endices

136

Ap´ endice A Dispositivos L´ ogicos Programables A.1.

Introducci´ on

Desde finales de la d´ecada de los ’60, los equipos electr´onicos digitales se han construido utilizando circuitos integrados (CI) que realizan funciones l´ogicas b´asicas, realizados en peque˜ na o mediana escala de integraci´on. A medida que los sistemas se volvieron m´as complejos, exigiendo un n´ umero m´as elevado de funciones l´ogicas, se gener´o la necesidad de utilizar circuitos dise˜ nados a medida que s´olo sirven para una aplicaci´on. Estos circuitos espec´ıficos, o ASIC (Application Specific Integrated Circuit), se producen con las especificaciones proporcionadas por el usuario. Los equipos realizados con ASICs ocupan menos espacio, son m´as fiables, consumen menos energ´ıa y resultan m´as baratos que los equipos equivalentes realizados con CI de funci´on l´ogica b´asica cuando se fabrican en grandes series. Otra de las ventajas que tienen las ASICs radica en que el dise˜ no es muy dif´ıcil de copiar protegiendo la propiedad intelectual. Sin embargo poseen un alto costo 137

Ap´endice A. Dispositivos L´ogicos Programables

138

de desarrollo y su empleo s´olo se justifica para vol´ umenes de producci´on muy elevados. El tiempo necesario para el desarrollo y la construcci´on de una ASIC es considerable ya que puede oscilar de unos meses a unos a˜ nos.

A.2.

PLD

Un dispositivo que permiti´o reducir algunos costos de dise˜ no surgi´o con la generaci´on del PLD (Programmable Logic Device). Un PLD es un dispositivo cuyas caracter´ısticas pueden ser modificadas y almacenadas mediante programaci´on. La s´ıntesis de estos dispositivos esta fundamentada en el hecho que una funci´on booleana cualquiera puede ser expresada como una suma de productos. El dispositivo programable m´as simple es una PAL (Programmable Array 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 fijo. Mediante una matriz de conexiones se seleccionan las entradas que ser´an conectadas al arreglo AND, cuyas salidas son conectadas al arreglo OR y de esta manera se obtiene una funci´on l´ogica en forma de suma de productos. La matriz de conexiones de un PLD es una red de conductores distribuidos en filas y columnas con un fusible en cada punto de intersecci´on. Con estos recursos se implementan las funciones l´ogicas deseadas mediante un software especial y un programador. La s´ıntesis de las ecuaciones l´ogicas se realiza mediante el quemado del fusible en cada punto de intersecci´on de los pines de entrada con las compuertas. Posteriormente, el fusible se reemplaz´o por una celda CMOS el´ectricamente borrable (EECMOS) creandose as´ı una Matriz Gen´erica Programable (GAL, Generic Array Logic). Un GAL en su forma b´asica es un PLD con una matriz

Ap´endice A. Dispositivos L´ogicos Programables

139

AND reprogramable, una matriz OR fija y una l´ogica de salida programable mediante una macrocelda. Esta estructura permite implementar cualquier funci´on l´ogica como suma de productos con un n´ umero de t´erminos definido. Mediante la programaci´on se activa o desactiva cada celda EECMOS y se puede aplicar cualquier combinaci´on de variables de entrada, o sus complementos, a una compuerta AND para generar cualquier operaci´on producto que se desee. La celda activada conecta su correspondiente intersecci´on de fila y columna, y una celda desactivada desconecta la intersecci´on. Las celdas se pueden borrar y reprogramar el´ectricamente.

A.3.

CPLD

Un CPLD (Complex Programmable Logic Device) extiende el concepto de un PLD a un mayor nivel de integraci´on ya que permite implementar sistemas con un mejor desempe˜ no porque utilizan menor espacio y reducen costos. Un CPLD esta formado con m´ ultiples bloques l´ogicos, cada uno similar a un PLD. Estos bloques l´ogicos se comunican entre s´ı utilizando una matriz programable de interconexiones (PIM). Esta matriz permite unir los pines de entrada/salida a las entradas del bloque l´ogico, o las salidas del bloque l´ogico a las entradas de otro bloque l´ogico o inclusive a las entradas del mismo (Fig. A.1). La mayor´ıa de los CPLDs usan una de dos configuraciones para esta matriz: interconexi´on mediante arreglo de celdas EECMOS o interconexi´on mediante multiplexores. La primera se basa en una matriz de filas y columnas con una celda programable de conexi´on en cada intersecci´on. Al igual que en el GAL esta celda puede ser activada para conectar/desconectar la correspondiente fila y columna. Esta configuraci´on permite una total interconexi´on entre las entradas y salidas del dispositivo o bloques l´ogicos.

140

Ap´endice A. Dispositivos L´ogicos Programables 36 18

I/O

Macroceldas 1 to 18

I/O

Bloques I/O

I/O I/O I/O I/O 3

Matriz Programable de Interconexiones

I/O I/O

36 18

36 18

I/O/GTS

Bloque de Funciones 3 Macroceldas 1 to 18

36 1

Bloque de Funciones 2 Macroceldas 1 to 18

I/O/GCK I/O/GSR

Bloque de Funciones 1

18

2 or 4

Bloque de Funciones N Macroceldas 1 to 18

Figura A.1: Diagrama en bloques de un CPLD En la interconexi´on mediante multiplexores, existe un multiplexor por cada entrada al bloque l´ogico. Las v´ıas de interconexi´on programables son conectadas a las entradas de un n´ umero de multiplexores por cada bloque l´ogico. Las l´ıneas de selecci´on de estos multiplexores son programadas para permitir que sea seleccionada u ´nicamente una v´ıa de la matriz de interconexi´on por cada multiplexor la cual se propagara a hacia el bloque l´ogico. Cabe mencionar que no todas las v´ıas son conectadas a las entradas de cada multiplexor. La capacidad de interconexi´on se incrementa usando multiplexores de mayor tama˜ no, permitiendo que cualquier combinaci´on de se˜ nales de la matriz de interconexi´on pueda ser interconectada con cualquier bloque l´ogico. En ambos casos, la capacidad de interconexi´on provoca que disminuya el desempe˜ no del dispositivo debido al aumento de consumo de energ´ıa y el tama˜ no del componente.

141

Ap´endice A. Dispositivos L´ogicos Programables

A.4.

FPGA

Los Arreglos L´ogicos Programables (ALPs) o Field Programmable Gate Arrays (FPGAs) surgieron en los ’80, como soluci´on a las excesivas demoras del desarrollo convencional de circuitos integrados digitales. Adem´as, esta tecnolog´ıa constituy´o una alternativa a la costosa implementaci´on de circuitos integrados espec´ıficos (ASICs). A pesar de estas importantes ventajas la utilizaci´on extensiva de los FPGAs comenz´o reci´en en la d´ecada de los ’90. La arquitectura de una FPGA consiste en arreglos de varias celdas l´ogicas las cuales se comunican unas con otras mediante canales de conexi´on verticales y

IOB

CL B

CL B

CL B

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

horizontales como se muestra en la Fig. A.2.

IOB

CL B

IOB

IOB

IOB

CL B

CL B

CL B

IOB

CL B

IOB

IOB

IOB

CL B

CL B

CL B

CL B

CL B

CL B

CL B

CL B

IOB IOB

IOB

IOB

IOB IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

IOB

Figura A.2: Distribuci´on de bloques de una FPGA de Xilinx La estructura de las celdas l´ogicas y las formas en que estas pueden ser interconectadas, tanto salidas como entradas de la celda, var´ıan de acuerdo al fabricante. En general una celda l´ogica tiene menos funcionalidad que la combinaci´on de sumas de productos y macroceldas de un CPLD. La estructura de las celdas se ve fuertemente influida por la tecnolog´ıa utilizada para fabricar la FPGA. Una FPGA que tiene una gran cantidad de canales

Ap´endice A. Dispositivos L´ogicos Programables

142

de interconexi´on tiende a tener peque˜ nas celdas l´ogicas con muchas entradas y salidas en comparaci´on con el n´ umero de compuertas que tiene la celda. Sin embargo, una FPGA que tiene una estructura peque˜ na en canales de interconexi´on tiende a tener celdas l´ogicas con pocas entradas y salidas en comparaci´on con el n´ umero de compuertas que hay en la celda. La tecnolog´ıa de interconexi´on se puede clasificar en dos tipos, antifusibles o RAM est´atica (SRAM). Las FPGAs con gran cantidad de canales de interconexi´on utilizan una tecnolog´ıa de antifusibles que generan una conexi´on cuando son programados, no permitiendo la reutilizaci´on de la FPGA. La tecnolog´ıa de 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 interconexi´on con tecnolog´ıa SRAM. La primera FPGA fue introducida por Xilinx [35] en el a˜ no 1985 y era basada en RAM est´atica. Esta FPGA cada vez que se aplica la tensi´on de alimentaci´on se re-programa con la informaci´on que lee desde una PROM (Programmable Read Only Memory) de configuraci´on externa. Una FPGA basada en SRAM admite un n´ umero ilimitado de re-programaciones sin necesidad de borrados previos. En la Fig. A.3 se puede observar la matriz de interconexi´on de una FPGA de Xilinx. En detalle se puede observar el conjunto de los 6 transistores de paso que permiten la interconexi´on de las celdas. Una vez programada la FPGA, una memoria SRAM mantiene el estado de conexi´on o desconexi´on de cada uno de estos transistores. A medida que se realiza la interconexi´on de las l´ıneas, com´ unmente denominadas rutas, se van adicionando retardos en la trayectoria recorrida. Este efecto debe ser tomado en cuenta en las herramientas de programaci´on para dise˜ no y ajuste de las FPGA, de manera que el software sea capaz de establecer las conexiones m´as cortas posibles y luego realizar el trazado de esas conexiones, para

143

Ap´endice A. Dispositivos L´ogicos Programables

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 interconexi´on de una FPGA de Xilinx as´ı optimizar el rendimiento del dispositivo. Este mismo tipo de tecnolog´ıa es adem´as utilizado por Altera [36], Lucent Technologies [37] y Atmel [38] entre otros.

A.4.1.

Celdas L´ ogicas

Otra consecuencia de los recursos de interconexi´on se presenta con el tama˜ no de las celdas. Si las celdas l´ogicas son demasiado peque˜ nas sucede que se debe utilizar un gran n´ umero de estas en cascada para poder implementar funciones l´ogicas grandes. Estas celdas en general resuelven funciones elementales de dos o tres variables (denominadas de grano fino) y presentan como desventaja que cada celda l´ogica en cascada agrega un tiempo de retardo en la funci´on implementada. A medida que el tama˜ no de la celda l´ogica aumenta, sucede lo contrario. En este tipo de celdas l´ogicas, que resuelven funciones elementales de cuatro o m´as variables de entrada (denominadas de grano grueso), es posible implementar funciones l´ogicas de varios t´erminos con pocas celdas l´ogicas. Entre las FPGA con celdas de grano grueso se encuentran las de Xilinx y algunas familias de Altera, la que tambi´en ofrece algunas familias con celdas de grano medio. Fabricantes como Actel ofrecen FPGAs de grano fino.

144

Ap´endice A. Dispositivos L´ogicos Programables

La celda b´asica de una FPGA de la serie FLEX10K de Altera, denominada LE (Logic Element), es una celda de grano medio que posee una LUT (Look-up Table) de 4 entradas y un Fliplop. La LUT puede ser configurada tambi´en como una LUT de 3 entradas y una l´ogica de acarreo r´apido. El conjunto de ocho LEs se encuentran dispuestas en un arreglo denominado LAB (Logic Array Block). Adicionalmente cada fila posee un EAB (Embeded Array Block) que puede ser configurado como un elemento de 2048x1 hasta 256x8 de memoria. Estos LAB y EAB se encuentran interconectados a trav´es de buses de alta velocidad de 100 a 300 l´ıneas por columna. Carry-In

data1 data2 data3 data4

Look-Up Table (LUT)

Carry Chain

Cascade-In

Cascade Chain

Register Bypass

PRN DQ

Programmable Register

To FastTrack Interconnect

ENA CLRN

To LAB Local Interconnect

labctrl1 labctrl2

Clear/ Preset Logic

Chip-Wide Reset Clock Select labctrl3 labctrl4 Carry-Out

Cascade-Out

Figura A.4: Descripci´on de un LE de una FPGA FLEX10K de Altera Un ejemplo de una celda b´asica de Xilinx denominado CLB (Configurable Logic Block) se puede observar en la Fig. A.5. Estos CLBs estan compuestos por dos LUTs (F y G) con las cuales se pueden generar funciones l´ogicas de cuatro variables independientes, o bien una funci´on l´ogica combinada (H) de 5 variables. Cada LUT cuenta con l´ogica aritm´etica dedicada para la propagaci´on r´apida de acarreo a celdas vecinas. Cada CLB cuenta adem´as con dos Flipflops con los cuales se pueden registrar las salidas combinacionales. Xilinx posee cinco niveles de interconexi´on, que va desde la conexi´on entre dos CLBs, a conexiones largas

145

Ap´endice A. Dispositivos L´ogicos Programables

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

G4

G2

L ogic G3 F unction of G G2 G1-G4

G1

G1

G3

SR Q

D

Y

CK EC

H -L U T Y

G

SR H1

L ogic F unction H H 1 of

IN

F

F -G-H 1

F4

F4

F2

L ogic F 3 F unction of G F 2 F 1-F 4

F1

F1

F3

A

SR D

Q

X

CK EC

F -L U T K

X Multiplexer Controlled by Configuration P rogram

EC

Figura A.5: Descripci´on de un CLB de una FPGA XC4000 de Xilinx En la Fig. A.6 se muestra un ejemplo de los recursos l´ogicos de algunas FPGAs de Xilinx. En la misma el fabricante presenta la cantidad de celdas b´asicas, el m´aximo contenido de memoria que se puede generar y la cantidad de Flip-flops que contiene cada modelo.

A.4.2.

Recursos dedicados

Los fabricantes de FPGAs generan en los dispositivos algunos recursos dedicados a mejorar el desempe˜ no de los mismos. Ejemplo de ello se puede observar sobre la serie XC4000 de Xilinx, la cual cuenta con l´ıneas de comunicaci´on global, selecci´on de velocidad de acceso de buffers de salidas y l´ogica de acarreo para acelerar y condensar funciones arim´eticas. Las l´ıneas de comunicaci´on globales est´an dise˜ nadas para distribuir se˜ nales de reloj o que poseen un gran fan out. Estas l´ıneas poseen un retardo m´ınimo y pueden ser accedidas mediante la utilizaci´on de buffers especiales.

146

13K

10K-30K

18K 24x24

576

1536

1862

20K

13K-40K

25K 28x28

784

2016

XC4028XLA

2432

28K

18K-50K

33K 32x32

1024

2560

XC4036XLA

3078

36K

22K-65K

42K 36x36

1296

3168

XC4044XLA

3800

44K

27K-80K

51K 40x40

1600

3840

XC4052XLA

4598

52K

33K-100K

62K 44x44

1936

4576

XC4062XLA

5472

62K

40K-130K

74K 48x48

2304

5376

XC4085XLA

7448

85K

55K-180K

100K 56x56

3136

7168

XCS05

238

3K

2K-5K

3K 10x10

100

360

XCS10

466

5K

3K-10K

6K 14x14

196

616

XCS20

950

10K

7K-20K

13K 20x20

400

1120

XCS30

1368

13K

10K-30K

18K 24x24

576

1536

XCS40

1862

20K

13K-40K

25K 28x28

784

2016

XCS05XL

238

3K

2K-5K

3K 10x10

100

360

XCS10XL

466

5K

3K-10K

6K 14x14

196

616

XCS20XL

950

10K

7K-20K

13K 20x20

400

1120

XCS30XL

1368

13K

10K-30K

18K 24x24

576

1536

XCS40XL

1862

20K

13K-40K

25K 28x28

784

2016

XC2S15

432

8K

6K-15K

22K

8x12

96

384

XC2S30 XC2S50

972 1728

17K 30K

13K-30K 23K-50K

36K 12x18 56K 16x24

216 384

863 1536

XC2S100

2700

53K

37K-100K

78K 20x30

600

2400

XC2S150

3888

77K

52K-150K

102K 24x36

864

3456

XCV50

1728

21K

34K-58K

56K 16x24

384

1536

XCV100 XCV150

2700 3888

32K 47K

72K-109K 93K-165K

78K 20x30 102K 24x36

600 864

2400 3456

XCV200

5292

64K

146K-237K

130K 28x42

1176

4704

XCV300

6912

83K

176K-323K

160K 32x48

1536

6144

XCV400

10800

130K

282K-468K

230K 40x60

2400

9600

XCV600

15552

187K

365K-661K

312K 48x72

3456 13824

XCV800

21168

254K

511K-888K

406K 56x84

4704 18816

XCV1000

27648

332K

622K-1,124K

512K 64x96

6144 24576

Matriz de CLB

1368

XC4020XLA

Max. RAM Bits

Flip-Flops

Serie Virtex:

CLBs

Serie Spartan:

Rango Típico de Compuertas

Serie XC4000:

Modelo XC4013XLA

Comp. Lógicas

FPGA

Celdas Lógicas

Ap´endice A. Dispositivos L´ogicos Programables

Figura A.6: Recursos l´ogicos de algunas FPGAs de Xilinx

Ap´endice A. Dispositivos L´ogicos Programables

147

Las series a partir de la Familia Virtex cuentan adicionalmente con bloques denominados DLL (Delay-Locked Loop). Estos DLLs se encargan de monitorear el reloj de entrada y el distribuido en los bloques utilizados y generan un retardo sobre las l´ıneas de manera que el flanco de reloj se genere sincronicamente entre todos los FlipFlops y el reloj de entrada. La velocidad de acceso de los buffers de salida por defecto se encuentra limitada para minimizar transitorios en las l´ıneas de alimentaci´on cuando conmutan entradas no prioritarias. Para el caso de l´ıneas en las cuales se requiere mayor velocidad, se puede cambiar el atributo de velocidad para que la salida pueda operar m´as r´apidamente. A partir de la serie XC4000E, Xilinx incorpor´o l´ogica de acarreo dedicada a las FPGAs. En la Fig. A.7 se puede observar que la l´ogica de acarreo comparte las entradas de datos y de control con los generadores de funciones. Las salidas de acarreo se encuentran conectadas a los generadores de funciones de manera de realizar las combinaciones adecuadas para la realizaci´on de una suma. Las salidas de tipo propagaci´on de acarreo se comunican entre CLBs a trav´es de rutas dedicadas de alta velocidad. Como se observa en la misma figura, el acarreo se puede propagar hacia el CLB superior o inferior. En el caso en que no existen CLBs en la parte superior o inferior debido a que el CLB se encuentra en los l´ımites f´ısicos de la FPGA, el acarreo se propaga hacia la derecha. La l´ogica de acarreo puede ser configurada para implementar funciones de adici´on, substracci´on o ambas. Adem´as se pueden realizar operaciones de incremento, decremento y/o funciones en complemento.

148

Ap´endice A. Dispositivos L´ogicos Programables

COUT CIN DOWN LOGICA ACARREO

DIN

G Y

H

G

ACARREO

G4

G3 G

G2

DIN H G F

G1

S/R DQ

YQ

EC C OUT0

H1

H

DIN H G F

F

ACARREO

S/R DQ

XQ

EC

F4

F3

F

F2 H

F1

F

CIN UP

X

COUT

Figura A.7: L´ogica de acarreo dedicada de una FPGA XC4000 de Xilinx

Ap´endice A. Dispositivos L´ogicos Programables

A.5.

149

Conclusiones

Desde hace ya un par de d´ecadas el procesamiento de se˜ nales se lleva a cabo en lo que se denomin´o DSPs (Digital Signal Processors). Estos DSPs est´an basados en la arquitectura de un procesador capaz de ejecutar c´alculos mediante una unidad MAC (Multiply/Accumulator) y multiples bancos de memoria destinados a incrementar la transferencia de datos. La ventaja de estos DSPs siempre radic´o en que el procesamiento de se˜ nales utiliza intensivamente estas operaciones. Sin embargo, a pesar de que estos DSPs son flexibles en cuanto a su programaci´on, la arquitectura es fija y s´olo disponen de una o dos unidades MAC. Como consecuencia, el grado de ejecuciones concurrentes est´a limitado por este n´ umero, de manera que no permite explotar toda la potencial concurrencia del algoritmo. En contraste, en una FPGA es posible generar la l´ogica necesaria para explotar esta concurrencia. Por ejemplo, si un algoritmo requiere la ejecuci´on de 16 multiplicaciones y la suma de estos productos, la FPGA puede ser configurada para la realizaci´on de estos 16 productos en forma simult´anea. Adicionalmente, en la misma FPGA se pueden realizar otras tareas que no dependen de la realizaci´on del c´alculo, tal como comunicaci´on con perif´ericos, otros c´alculos independientes, etc. Este tipo de ventaja motiv´o el inter´es respecto de las FPGAs para la aplicaci´on de soluciones a medida sin perder la flexibilidad de la programaci´on que ofrece un PSDP o el costo y el tiempo de fabricaci´on de una ASIC.

Ap´ endice B Sistemas num´ ericos B.1.

Introducci´ on

La resoluci´on de todo algoritmo comienza por definir el tipo de las variables con las que se debe trabajar. A partir de la selecci´on de estas variables, queda determinada el tipo de aritm´etica que se va a utilizar. Los Arreglos L´ogicos Programables (ALPs o FPGAs) permiten que la resoluci´on de un problema admita distintas variantes en cuanto al tipo de aritm´etica que se puede seleccionar. El tipo de aritm´etica seleccionado determina entonces la forma en que opera el algor´ıtmo.En el presente cap´ıtulo se mostrar´an las caracter´ısticas de cada uno de los sistemas y la forma en que operan cada una de ellos.

B.2.

Representaci´ on num´ erica

La elecci´on del sistema num´erico de las variables a utilizar debe realizarse cuidadosamente. Los sistemas num´ericos de dividen en dos campos, punto fijo y punto flotante. En general puede ser asumido que la operatoria en punto fijo es mas r´apida y requiere menos recursos l´ogicos, mientras que la operatoria en punto

150

151

Ap´endice B. Sistemas num´ericos

FORMATO NUMÉRICO

PUNTO FIJO

convencional

PUNTO FLOTANTE

no convencional

Complemento a 2 Complemento a 1 Disminuido a 1

convencional

Con digito de signo Logarítmico RNS

no convencional

32-Bit IEEE 64-Bit IEEE

16, 18, 20, 24 Bit Format

Figura B.1: Esquema de formatos num´ericos flotante posee mayor rango din´amico y no requiere reescalar los resultados. Esto u ´ltimo puede resultar interesante para la resoluci´on de algor´ıtmos complicados. La Figura B.1 presenta el esquema de algunos sistemas num´ericos para punto fijo y punto flotante. Los mismos pueden ser utilizados fuera del sistema est´andar dependiendo de los requerimientos del problema a resolver.

B.2.1.

Punto fijo

En esta secci´on se presentar´a una breve descripci´on de los sistemas num´ericos de punto fijo. Enteros sin signo Sea X un n´ umero binario sin signo de n bits, el rango num´erico es [0, 2n − 1] y su representaci´on esta dada por:

X=

n−1 X

xj 2j

(B.1)

j=0

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

152

Ap´endice B. Sistemas num´ericos

peso relativo la unidad. El digito xn−1 es el bit mas significativo (MSB - More Significative Bit) y posee un peso relativo de 2n−1 . Magnitud con signo En sistemas de magnitud con signo la magnitud y el signo son representados en forma separada. El primer bit representa el signo y los restantes n − 1 bits representan la magnitud, su representaci´on esta dada por:     X=

   −

n−1 P j=0 n−1 P

X≥0

xj 2j

(B.2) j

xj 2

X (n − 1) − k k < (n − 1) − k

y para el caso particular en que k = n2 , el per´ıodo de procesamiento para la ejecuci´on de cada producto ser´a T = n 2 · TCK .

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

SM

Se debe considerar que la suma de las dos semisumatorias de la Ec. (6) requiere un u´ nico sumador de 2n − k debido a que la primer semi-sumatoria se encontrar´a desplazada k veces de la segunda. Por otro lado, dicha suma agrega un retardo tR debido a la l´ogica involucrada. Este retardo se puede considerar menor o igual que TCK , tomando como pauta que el retardo de involucrado en la adici´on de los productos parciales es inferior al retardo definido para un multiplicador SM. Por lo tanto, el per´ıodo de procesamiento para este multiplicador estar´a dado por T = ( n2 + 1) · TCK . X[n:0]

X[n:0]

m/2 x n

m/2 x n

Y[m/2:0]

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 per´ıodo de procesamiento. El per´ıodo de procesamiento para la ejecuci´on de un producto depende del esquema 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 = ( n2 + 1) · TCK . En el caso de uno basado en un SMSR, el per´ıodo de procesamiento resulta de T = n2 · TCK . Un esquema del SMSC basado en SM se muestra en la Fig. 6, donde se observa que con cada iteraci´on se realiza la suma en forma consecutiva de dos subproductos, yj X · 2j + yj+1 X · 2j+1 de la Ec. (7). LSB

Acumulación

desplazamiento 2 bits acarreo

Producto Parcial

2n-1

n

Y

n-1

1 0

acarreo

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

n-1

ADD

Figura 5: Diagrama de operaci´on de un SMF.

n

En la Fig. 5, se observa el esquema del SMF, donde dos multiplicadores secuenciales realizan sus productos simult´aneamente y, un per´ıodo de tiempo despu´es, sus resultados son adicionados. La aplicaci´on pr´actica del SMF se puede realizar en base a un SM tradicional o a un SMSR. La utilizaci´on del SM implica que se deben cargar los datos en los registros, por lo que se requieren n2 + 2 iteraciones. Por lo que se justifica solo la utilizaci´on de este esquema para multiplicadores cuya longitud de palabra haga despreciables las dos iteraciones a n2 . En el caso del SMF basado en un SMSR, el producto se realiza en T = ( n2 + 1) · TCK iteraciones. En cuanto al consumo de recursos l´ogicos, este multiplicador requiere dos multiplicadores de n × m 2 bits, que 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´on por sumas consecutivas Otra opci´on para reducir el n´umero de iteraciones sin tener que pre-computar m´ultiplos de los operandos, consiste en realizar dos subproductos en forma consecutiva. Esta variante es similar al SMbase4 ya que b´asicamente opera con d´ıgitos de 2 bits. El multiplicador por sumas consecutivas (SMSC) realiza en cada iteraci´on dos subproductos consecutivos como se puede observar en la Ec. (7). n  2 −1 X P = 2n−1 (yj X22j−(n−1)+ yj+1 X22j+1−(n−1) ) j=0

n

ADD

(7)

n

X

n-1

0

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

2n-1

Producto

n

n-1

Parcial

0

acarreo n-1

ADD

n/2

n

ADD

n

MUX

n

n/2 n

MUX

Y[bits pares] Y[bits impares]

X Control

Figura 7: Ejemplo de un SMSC(SMSR). En cuanto al consumo de recursos l´ogicos, estos multiplicadores duplican el consumo de recursos en cuanto a sumadores y a la l´ogica combinacional que genera el producto 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´o en primera instancia mediante captura esquem´atica y posteriormente en Lenguaje de Descripci´on de Hardware (VHDL) (Ghosh, 1999)- (Villar et al., 1997).

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

A. Recursos l´ogicos La cantidad de recursos l´ogicos o a´ rea de utilizaci´on de la FPGA se puede cuantificar 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´umero de CLBs aumenta en 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 sacrifican recursos para obtener mayor velocidad.

En esta figura 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´on m´as balanceada entre consumo de recursos l´ogicos y velocidad de procesamiento. 18 SM SMSR SMbase4 (3X) SMbase4 (−X) SMF (SM) SMF (SMSR) SMSC (SM) SMSC (SMSR)

16

14

12

PS [Mops]

Todos los circuitos han sido evaluados seg´un los recursos l´ogicos consumidos, la velocidad de procesamiento y un ´ındice de performance.

10

8

6

4

2

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

120

100

0

5

10

15

20 n

25

30

35

Figura 9: Velocidad de procesamiento.

80

CLB

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.

60

40

C. Performance 20

0

0

5

10

15

20

25

30

35

n

Figura 8: Consumo de recursos l´ogicos. Si se comparan entre s´ı los multiplicadores optimizados en velocidad, se puede observar que el SMSC(SM) es el multiplicador que posee el menor consumo de recursos l´ogicos. Por otro lado, el multiplicador SMF(SMSR) requiere 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´on del camino cr´ıtico por el n´umero de ciclos que requiere realizar una operaci´on, fd = tpd1N . El retardo de propagaci´on tpd se obtiene a partir de la herramienta de programaci´on de FPGA de Xilinx, Foundation 3.1i, Timimg Analyzer. A partir de los datos sumnistrados se calcula el peor caso de temporizaci´on del dise˜no. En la Fig. 9 se presentan los resultados experimentales de la velocidad de procesamiento de los multiplicadores.

Se establece un ´ındice de performance de manera de poder evaluar el desempe˜no global del sistema implementado en la FPGA, incluyendo tanto el concepto de consumo de recursos como de velocidad de procesamiento. En la Ec. (8) se define el ´ındice de performance p. Velocidad de Procesamiento [Mops] (8) Area En esta ecuaci´on, la Velocidad de Procesamiento esta definida en Millones de Operaciones por Segundo y el Area como la fracci´on de recursos utilizados para una determinada FPGA, (Total de la FPGA = 1). Este ´ındice pretende poder comparar la performance de distintos tipos de multiplicadores para su utilizaci´on en una FPGA designada. En la Fig. 10 se grafica el ´ındice de performance para un rango de 8 < n < 20 bits. En la misma se puede observar que el mayor ´ındice lo comparten los multiplicadores SM y SMSC(SMSR). Una forma de interpretar este resultado es analizando una posible aplicaci´on de estos multiplicadores. Dado el caso en que una aplicaci´on requiere realizar un cierto n´umero de productos en un mismo instante, este indica que resulta tan eficiente utilizar arreglos paralelos de multiplicadores SMSR como realizar todos los productos m´as r´apidamente en un solo SMSC(SMSR). p=

XII Reuni´on de Trabajo en Procesamiento de la Informaci´on y Control, 16 al 18 de octubre de 2007 250

35

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

200

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

30

Performance

Performance

25

150

20

100 15

50

10

5

10

15

20

n

5

20

22

24

26 n

28

30

32

Figura 10: ´Indice de performance, n ≤ 20.

Figura 11: ´Indice de performance 20 ≤ n ≤ 32.

En la Fig. 11 se grafica el ´ındice de performance para un rango de 20 < n < 32 bits. En esta figura se puede observar que el mayor ´ındice lo comparten los multiplicadores 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´as parecida.

Hennessy, John L. and David Patterson (1996). Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc.. San Francisco, California ISBN: 1-55860-329-8.

IV. CONCLUSIONES

Teixeira, Denis, Altamiro Susim and Luigi Carro (1999). Comparaci´on de multiplicadores en fpga. V Workshop Iberchip 1, 182–187.

En este trabajo se present´o un estudio comparativo de multiplicadores secuenciales los cuales constituyen una buena alternativa para la utilizaci´on en FPGA. Se presentaron resultados experimentales que permiten distinguir las caracter´ısticas de cada uno de los multiplicadores presentados. A partir de estas caracter´ısticas se puede observar que el SM y los SMSC son los multiplicadores que mejor balancean la relaci´on entre consumo de recursos l´ogicos y velocidad de procesamiento. Resultando el o´ ptimo el primero para aplicaciones de muy reducida cantidad de recursos l´ogicos, y el segundo en aplicaciones donde adem´as de las restricciones de recursos se requiere incrementar la velocidad de procesamiento. REFERENCIAS Funes, M., D. Carrica and M. Benedetti (2001). Multiplicadores secuenciales para estructuras FPGA. IX Reuni´on de Trabajo en Procesamiento de la Informaci´on y Control. Vol. II, 646–651. 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´on al Dise˜no L´ogico Digital. Addison-Wesley Iberoamericana. Wilmington, Delaware, E.U.A.

Parhami, Behrooz (2000). Computer Arithmetic: Algorithms and Hardware Design. Oxford University Press. New York, Oxford.

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 Pacific RIM Conference pp. 301–304. Villar, E., L. Ter´es, S. Olcoz and Y. Torroja (1997). VHDL Lenguaje Estandar de Dise˜no Electr´onico. McGraw Hill. Madrid.

Floating Point Multipliers with Reduced FPGA Area M. Funes, D.Carrica, and M. Benedetti Laboratorio de Instrumentaci´ on y Control Universidad Nacional de Mar del Plata, Argentina [email protected] 

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

1

INTRODUCTION

Many computationally-intensive applications found in Digital Signal Processing (DSP) employ the parallel processing capability of Field Programmable Gate Arrays (FPGAs) to obtain a high processing speed [4] [5]. FPGAs combine the flexibility of a 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-effectiveness. Digital Signal Processing mainly involves multiply operations which can be either fix or floating point, depending on the operand-range. The latter is used to reduce overflow problems often observed in fixed point formats. A number expressed in floating 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 × 2e−bias × 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): p = 1.fx × 1.fy =

n 

[yi × (1xn−1 ..x3 x2 x0 )] · 2i

(2)

i=0 

This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and the Agencia Nacional de Promoci´ on Cient´ıfica y Tecnol´ ogica (BID 1201/OC-AR 2002).The 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 tradeoff 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 different parallel schemes of FPGA FloatingPoint Multipliers in order to reduce logic consumption [10] [8] [3]. This article proposes a novel floating-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.

2

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): n−1   n−1 i−n+1 yi X · 2 (3) p=2 i=0

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-significant 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 floating-point multiplication only needs the n-most significant 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 floating point multiplication. This lead to simplified 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

P n

Y n

ADD

X n

Fig. 1. Shift and Add multiplier. X[n:0] Y[n:0]

carry

MUX

FF´s

ADD

P[n-1:0]

COUNTER

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 two´s 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 defined, the logic resources consumption of the proposed floating 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

 (n·2

log2 n

output in the last stage resulting in a component that consums

i=1

−i

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 ( n2 + 1 basic cell) considering the carry and the overflow output. If the output 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. log 2 n+1

P F P M (n, r) =

3

i=1

(n · 2−i )

2

+

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

(5)

Comparison of the FPGA area

The logic resources used by the PFPM is compared with floating point multiplier wich are based on fixed point multipliers reported in the literature. For this purposes, the floating 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 floating 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 effect of the logic not used by the n less significant bits of the integer multiplication, but the logic consumption reduction in this multipliers was neglected due to its little difference (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 figure 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 floating 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

XCS30 Guid MacCanny Carry Save Ripple Carry Proposed

500

XCS20

CLB

400

300

XCS10

200

XCS05

100

0

0

5

10

15

20

25 Wordlength

30

35

40

45

Fig. 3. Logic consumption comparation.

4

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 verification of the Eq.(5) and the exploration of the benefits of the different 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 difference 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)·T CK Figures 5 and 6 show the experimental results for Virtex and Virtex II series, respectivelly. In these figures it can be observed the logic resources consumption 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 figure that the logic resource estimation is comfirmed with the experimental results for each index n. Also it can be observed the improvement of the utilization of a technology among the others.

8

PS [Mflop]

6

4

2

0

5

10

15

20

25

30

20

25

30

n

80

Estimation results Experimental results

70

CLB

60 50 40 30 20

5

10

15 n

Fig. 4. Spartan series PFPM implementation

30

PS [Mflop]

25 20 15 10 5 0

5

10

15

20

25

30

20

25

30

n

80

Estimation results Experimental results

70

CLB

60 50 40 30 20

5

10

15 n

Fig. 5. Virtex series PFPM implementation

40

PS [Mflop]

30

20

10

0

5

10

15

20

25

30

20

25

30

n

80

Estimation results Experimental results

70

CLB

60 50 40 30 20

5

10

15 n

Fig. 6. Virtex II series PFPM implementation

35 30 PS [Mflop]

25 20 15 10 5 0

5

10

15

20

25

30

20

25

30

n

80

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

70

CLB

60 50 40 30 20

5

10

15 n

Fig. 7. Performance evaluation

5

Conclusion

This work addresses a novel floating-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 difference in the logic consumption. The experimental results shown also the difference in processing speed between a FPGA series among the other. This results allow the exploration of the benefics of select a different 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 an´ alisis de su materializaci´ on en FPGA. Proc. of VI Workshop Iberchip., pages 158–168, 2000. 3. GH. A. Aty, Aziza I. Hussein, I.S. Ashour, and M. Mones. High-speed, area-efficient FPGA-based floating-point multiplier. pages 274–277, 2003. 4. T.-S. Chang and C.-W. Jen. Hardware-efficient 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 20–35, 2000. 6. John P. Hayes. Introducci´ on al Dise˜ no L´ ogico Digital. Addison-Wesley Iberoamericana, Wilmington, Delaware, E.U.A, 1996. 7. John L. Hennessy and David Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc., San Francisco, California ISBN: 1-55860-329-8, 1996. 8. Manuel A. Jim´enez, Nayda G. Santiago, and Diane T. Rover. Development of a scalable FPGA-based floating 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 floating-point operations on FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines, pages 206–215, 1998. 10. Nabeel Shirazi, Al Walters, and Peter Athanas. Quantitative analisis of floating point arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines, pages 155–162, 1995.

AADECA 2006 – XXº Congreso Argentino de Control Automático 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 ∗∗ [email protected]

Abstract: The implementation of FPGA-based floating 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, floating point arithmetic, field 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 flexibility 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-effectiveness. Digital Signal Processing mainly involves multiply operations which can be either fix or floating point, depending on the operand-range. An operand expressed in floating point format consist 0

This work was supported by the Universidad Nacional de Mar del Plata (ING-15/G130) and the Agencia Nacional de Promoci´ on Cient´ıfica y Tecnol´ ogica (BID 1201/OC-AR 2002).The authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

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

(1)

Floating point multiplications involve sign setting, e exponent addition (with 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. • Difficulty to implement several multipliers in one FPGA. Ligon et al assesed the practical implementation of several floating point multipliers in a Xilinx XC4000 series, requiring bigger FPGAs to use more than one multiplier in the same chip (Ligon

AADECA 2006 – XXº Congreso Argentino de Control Automático 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.

et al., 1998). Other authors studied and proposed different parallel schemes of FPGA Floating-Point Multipliers in order to reduce logic consumption (Shirazi et al., 1995) (Jim´enez et al., 1998.). 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 different 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

shift carry

Partial Product

n-1

0

n

ADD

n

n

MUX

n

rounding

normalization

Y

2n bit product **

Product

**

**

**

** N discarded bits

**

Truncation

**

**

Overflow

Round

1*

**

00

00

0...0

No Round **

01

**

10

00

00

Overflow 1*

**

No Overflow ** 0...0

01

No Overflow **

Normalize 01

**

**

n bit result

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)

The logic resources consumption of the sequential scheme is expressed by Eq. (6):

X

logP 2 n+1

Control

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 significant bit of the desired result

SM (n, r) =

i=1

(n2−i )

2

+

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 Automático 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.

SM

Performance

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 figure 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 floating 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

Aty SM

Jimenez Shirazi

Jimenez

Ligon

Wordlength Format

Fig. 4. Spartan multipliers performance of 24-bit multipliers. Although the speed of the multiplier proposed by (Jim´enez et al., 1998.) is similar to that of SM, logical resources get notoriously reduced in the latter, thus rendering a significantly higher performance.

SM

Fig. 3. Logic consumption comparison.

4. PERFORMANCE EVALUATION In order to evaluate the overall performance a performance index p is defined as follows: Processing Speed [Mflops] (8) Area where the Processing Speed is defined 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; Jim´enez et al., 1998.; Aty et al., 2003; Ligon et al., 1998). Fig.4 shows that the best index score is reached with SM. Also, this figure depicts the performance

For 32-bit format, the SM utilizes 13% of the FPGA. The better performance index obtained with SM results from the differences 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; Jim´enez et al., 1998.; Aty et al., 2003). In addition to the decreasing level of logical resources employed, the proposed design is faster. For 32-bits, the difference 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 effective evaluation of multipliers is also introduced in this paper. The sequential multiplier is compared with those reported by some authors and assessed in

AADECA 2006 – XXº Congreso Argentino de Control Automático 28 al 30 de Agosto de 2006 - Buenos Aires, Argentina.

Performance

SM

Lee

Aty

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 floating-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 an´alisis de su materializaci´on en FPGA.. Proc. of VI Workshop Iberchip. pp. 158–168. Aty, GH. A., Aziza I. Hussein, I.S. Ashour and M. Mones (2003). High-speed, areaefficient FPGA-based floating-point multiplier. pp. 274–277. Chang, T.-S. and C.-W. Jen (1999). Hardwareefficient 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. 20–35. Funes, M., D. Carrica and M. Benedetti (2002). Multiplicadores de punto flotante para estructuras FPGA. Proceedings XVIII Congreso Argentino de Control Autom´ atico 1, 40. 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). Introducci´ on al Dise˜ no L´ ogico Digital. Addison-Wesley Iberoamericana. 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. Jim´enez, Manuel A., Nayda G. Santiago and Diane T. Rover (1998.). Development of a scalable FPGA-based floating point multiplier. Proceedings of the Fifth Canadian Workshop on Field-Programmable Devices pp. pp. 145 – 150. Lee, B. and N. Burgess (2002). Parameterisable floating-point operations on FPGA. Conference Record of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers pp. 1064–1068. Ligon, III Walter B., Scott McMillan, Greg Monn, Kevin Schoonover, Fred Stivers and Keith D. Underwood (1998). A re-evaluation of the practicality of floating-point operations on FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines pp. 206–215. Shirazi, Nabeel, Al Walters and Peter Athanas (1995). Quantitative analisis of floating point arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines pp. 155–162. The Programable Logic Data Book (2000). Xilinx.

Novel FPGA based Floating Point Multiplier: Consecutive-Sums Sequential Multiplier M. Funes, D. Carrica, M. Benedetti, P. Donato Laboratorio de Instrumentaci´ on y Control Universidad Nacional de Mar del Plata, Argentina [email protected] ??

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 floating-point multiplier with a better processing speed keeping on a reduced number of resources.

1

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 flexibility 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. – Difficulty to implement several multipliers in one FPGA. Several authors studied and proposed different 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 figure. 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 Promoci´ on Cient´ıfica y Tecnol´ ogica (BID 1201/OC-AR 2002).The authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

2

Floating Point Multiplication

A floating 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 × 2e−bias × 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. Exponent

Sign

Exclusive - OR

Sign

Ofl.

Mantissa

Exponent Addition

Mantissas Product

Bias Adjustment

Rounding

Exponent Adjustment

Normalization

Exponent

Mantissa

Fig. 1. Floating Point Multiplication. Furthermore, the multiplication is often executed in parallel way, Eq.(2): p = 1.fx × 1.fy =

n X

[yi × (1xn−1 ..x2 x1 x0 )] · 2i

(2)

i=0

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): "n−1 # X n−1 i−n+1 p=2 yi X · 2 (3) i=0

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  2 −1 X p = 2n−1 (yj X22j−(n−1)+ yj+1 X22j+1−(n−1) )

(4)

j=0

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

LSB 2 bits shift carry

2n-1

Partial

n

n-1

Product

0

carry n-1

ADD

n/2

n

ADD

n

MUX

n

MUX

n

n/2

Y[even bits] Y[odd bits]

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 infinitely precise result. Then, when rounding, this system adds 21 to the least significant 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 first 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 first 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 significant bits. The second case is after the computation of the result sign. The other two rounding operations depends on the most significant bit of this product as seen in Fig. 3.

2n bits product Product Truncation

**

**

**

**

**

**

00

00

**

** n bits discarted

+ Rounding

0...0

No Overflow

Overflow

Rounding

1*

**

00

00

1*

**

01 No rounding

** 0...0

1*

No Overflow **

**

01 **

Normalization 01

**

**

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 first case occurs when the LSB of the truncated product of n-th iteration was a ”1”, because the 2−n addition propagates to the nearest significant bits. Consequently this is equivalent to add 2−n to a non-rounded result after normalization. The other case occurs when the LSB of the truncated result was a ”0”, because the 2−n addition doesn’t propagates to the nearest significant 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 + 2−n 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

Table 1. Rounding error of the normalized product.

Action round none round none

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

LSB 2 bits shift carry

n+1 n

Partial Product

0

carry n-1

n+1 n

ADD

n/2

n

ADD

n

MUX

n

MUX

n

n/2

Result

0

1 bit shift

Y[even bits] Y[odd bits]

X discarded bit Default rounding Control

Normalization Post-normalization rounding

Exponent correction Sign

Fig. 4. Mantissa product scheme.

3

Experimental results

The proposed multiplier was implemented in VHDL [8] [9]. The mantissa wordlength was parameterized while the exponent was fixed (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 benefits of the different FPGA series to improve a better performance. In the Spartan series, the basic cell of logic is denominated Configurable Logic Block (CLB), each of one contains two 4-input Function generators and two Flip Flops. The Virtex series rename the CLB as a slice and each CLB contains two slices. In this work, the logic resources consumption is unified into an unique unit denominated Basic Cell, witch contains the same logic as a Spartan CLB. The processing speed is a function of the number of iterations of the 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 floating 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 figures, it can be observed the relation between the processing speed obtained in contrast with the logic resources consumed.

PS [Mflop]

15

10

5

0

5

10

15

20

25

30

20

25

30

n

120

Experimental results SMSC Experimental results SM

100

CLB

80 60 40 20 0

5

10

15 n

Fig. 5. Spartan series implementation, comparison 30

PS [Mflop]

25 20 15 10 5 0

5

10

15

20

25

30

20

25

30

n

120

Experimental results SMSC Experimental results SM

Basic cells

100 80 60 40 20 0

5

10

15 n

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 defined as follows: p=

Processing Speed [Mflops] 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

p

60

50

40

30

20

10

0 15

20

25

30

35

40

n

Fig. 7. Spartan series implementation, performance index

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

4

Conclusion

This work addresses a novel floating-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

Performance index

1400

1200

1000

800

600

400

200

0

5

10

15

20

25

30

n

Fig. 8. Virtex series implementation, performance index

References 1. Chang, T.S., Jen, C.W.: Hardware-efficient 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) 20–35 3. Shirazi, N., Walters, A., Athanas, P.: Quantitative analisis of floating point arithmetic on FPGA based custom computing machines. Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (1995) 155–162 4. Jim´enez, M.A., Santiago, N.G., Rover, D.T.: Development of a scalable FPGA-based floating 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-efficient FPGA-based floating-point multiplier. (2003) 274–277 6. Funes, M., Carrica, D., Benedetti, M.: Floating point multipliers with reduced fpga area. Proceedings II Southern Programmable Logic Conference ISBN 84-609-8998-4 1 (2006) 59–66 7. 754, I.S.: IEEE standard for binary floating-point arithmetic. The Institute of Electrical and Electronics Engineers Inc., New York (1985) 8. Villar, E., Ter´es, L., Olcoz, S., Torroja, Y.: VHDL Lenguaje Estandar de Dise˜ no Electr´ onico. McGraw Hill, Madrid (1997) 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 floating-point operations on FPGAs. Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines (1998) 206–215 11. Lee, B., Burgess, N.: Parameterisable floating-point operations on FPGA. Conference Record of the Thirty-Sixth Asilomar Conference on Signals, Systems and Computers (2002) 1064–1068

120

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

Novel Stepper Motor Controller Based on FPGA Hardware Implementation Daniel Carrica, Senior Member, IEEE, Marcos A. Funes, and Sergio A. González, Member, IEEE

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 and programmable logic to achieve both high speed and high precision on a compact hardware. Index Terms—Field programable gate arrays (FPGA), motion control, stepper motor. Fig. 1. Complete control system.

I. INTRODUCTION

I

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

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 Promoción Científica y Tecnológica 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 Científicas (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. González is with the Laboratorio de Instrumentación 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: [email protected]). Digital Object Identifier 10.1109/TMECH.2003.809160

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].

(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.

2) Assume

On-line algorithms.

(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).

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)

(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 . 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:

.. .

.. .

(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.

Therefore, an algorithm has been developed which requires neither timers nor lookup tables and can work for much higher speeds. It’s 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-

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

Fig. 6.

Position and 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 XC4006–3. 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.

123

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

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. 543–545. [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. Juárez, and J. Meneses, “Taxonomía de multiplicadores,” in Proc. 8th DCIS Conf., 1993, pp. 185–190. [9] J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach. San Francisco, CA: Morgan Kaufmann, 1996.

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.

Daniel Carrica (M’84–SM’00) 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 Politécnica 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 Científicas (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.

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. Müller-Hellmann, “Power electronics, control of the electromechanical energy conversion process and some applications,” Proc. Inst. Elect. Eng., vol. 133, no. 6, pp. 369–399, 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. 25–30.

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 Instrumentación 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. González (M’01) 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 Instrumentación y Control, UNMdP. His research interests include hardware design, digital signal processing, motion control and electromechanical systems dynamics. Mr. González is a Member of the International Federation of Automatic Control.

FPGA based stepper motor controller Sergio A. Gonz´alez1 , Marcos A. Funes1,2 , and Daniel Carrica1,2 1

Laboratorio de Instrumentaci´ on y Control Universidad Nacional de Mar del Plata, Argentina [email protected] 2 CONICET⋆⋆

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.

1

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 profile generation of up to 6 stepper motors in the alignment system of the CERN Compact Linear Collider (CLIC) application [1–3]. The precise positioning of the motors require the use of velocity profiles, 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 profile [4]. ∆t(k) = p V(k) =

2 2 Vmax

1 step ∆t(k)

− 2 (N − k − 1) a +

p

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 profile 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 Promoci´ on Cient´ıfica y Tecnol´ ogica (BID 1201/OC-AR 2002).The authors are with the Department of Electronics, Universidad Nacional de Mar del Plata and CONICET, Argentina.

2

Sergio A. Gonz´ alez, Marcos A. Funes, and Daniel Carrica

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 Tc , required to compute (1). Tc imposes a practical limit to the speed. Moreover, not only Tc but the timer resolution, Tr , affect the maximum speed as in (3): Vmax =

1 Tr + Tc

(3)

Current timer resolutions are small enough to discard the Tr at the equation. Therefore, (3) turns into (4). Vmax = ˜

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 effective step generation procedure without timers.

2

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 flowchart 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  1 1 2 ; nk = 2 Vk (n) = (5) = = . .. ..  ∆tk nk · Tc .    Vmax K ; nk = K As an example, Fig. 2 shows a trapezoidal profile 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 profile. The quantification effect is more remarkable at higher speeds when ∆t(k) times are smaller as Tc . The effect can also be explained since intermediate

FPGA based stepper motor controller

3

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. It’s disadvantage is the quantification effect which depends on the magnitude of Tc . With current DSP technology, a minimum Tc = 6 µs is obtainable. This Tc magnitude produces a quantification level of 2000 steps at speeds around 15000 steps s , which shows the importance of the problem.

3

Hardware implementation

In order to reduce the computing time, a hardware implementation is proposed. The algorithm presented in Section 2 is simple enough to be executed by a 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

4

Sergio A. Gonz´ alez, Marcos A. Funes, and Daniel Carrica

Fig. 2. Intended velocity profile

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 efficient 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 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. 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

5

period Tc defines the time resolution of the controller. As Tc can be well reduced in hardware approach, the quantization 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 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 16×16 bits product requires the 45% of a 20000 logic gates FPGA [6] [7]. In order to overcome the FPGA area problem, a sequential architecture for the multiplier is proposed [8] [9]. A sequential multiplier allows an effective 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 profiles 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 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.

Reference velocity profile generator

Clock Tc

COUNTER 16

nk

VR

16

MULTIPLIER

1/T

C

16

16

VR x nk

Power Drivers

COMPARATOR VR x nk ³ 1/T

C

DRIVER INTERFACE Stepper motor

Fig. 3. FPGA based control system

6

Sergio A. Gonz´ alez, Marcos A. Funes, and Daniel Carrica

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.

4

Experimental results

The alignment control system of the CERN Compact Linear Collider (CLIC), must regulate the position of the girders and quadruples with a 10 µm precision, so that the trajectory of the beam evolves aligned with the axial axis of cavities and quadruples, despite the multiple perturbations that affect 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 five 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 profile through all the sections. z x

horizontal motor

vertical motor

quadrupole y2

girder

y1 vertical motor

vertical motor

horizontal motor

: pivot

horizontal motor

vertical motor

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 · 10−7 kg m2 , Tret = 33 · 10−7 N m. No additional load was connected.

FPGA based stepper motor controller

7

Position, [REV]

Position profile

150

100

50

0 1

2

3 Time, [s]

4

5

6

Velocity profile

Speed, [REV/s]

80 60 40 20 0

1

2

3

4

5

6

Time, [s]

Fig. 5. Position and velocity profile 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 · 10−6 kg m2 . It was coupled through an HELICAL-WA25 with an inertial moment of 2.3 · 10−6 kg m2 . 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 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 refersteps ence trapezoidal profile with characteristics: Vmin = 500 steps s , Vmax = 36000 s steps and a max acceleration amax = 16000 s2 . The resultant speed and position profiles can be seen in Fig. 5. The low Tc time allows an almost continuous profile and very high speeds, higher than those generated by standard software algorithms. Due to the characteristic of the profile, the stepper motor passes through resonance area [4]. This effect can be observed at low speeds in the profiles.

8

Sergio A. Gonz´ alez, Marcos A. Funes, and Daniel Carrica Position profile

Position, [REV]

150

100

50

0 10

20

30 Time, [s]

40

50

60

40

50

60

Velocity profile

Speed, [REV/s]

40

30

20

10

0

0

10

20

30 Time, [s]

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

Fig. 6 shows a complete profile obtained for a microstepping application. The stepper motor used in this experiment was a SLO-SYN KML093F14C5 whose characteristics are: 200 step rev , holding torque Thold = 816 N cm and a rotor inertia 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, configured to produce 2000 pulses per revolution. As a consequence, the system must generate a high velocity profile with Vmax = 72000 steps s . The Tc time adopted for the application was 200 ns in order to reduce the speed jumps under 5 % of Vmax . This effect can be observed as a ripple component at the top of the profile. 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

5

9

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 20–30, 2000, pp. 48–52. [Online]. Available: http://accelconf.web.cern.ch/ accelconf/e00/ 3. P. Poirier, “Lalignement dynamique submicrometrique de sections acceleratrices,” Memoire de soutenance du Diplome de Recherche Specialisee en Sciences, 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. Gonz´ alez, “Algoritmo eficiente para la generaci´ on de perfiles de velocidad en el accionamiento simult´ aneo de m´ ultiples motores paso a paso,” VIII Reuni´ on de Trabajo en Procesamiento de la Informaci´ on y Control., Vol. I , 1999, pp. 118–122. 6. The Programable Logic Data Book. Xilinx, 2000. 7. “Core generator,” http://www.xilinx.com/products/logicore/coregen/index.htm, 2000. 8. M. Funes, D. Carrica, and M. Benedetti, “Multiplicadores secuenciales para estructuras FPGA,” IX Reuni´ on de Trabajo en Procesamiento de la Informaci´ on y Control., vol. Vol. II, pp. 646–651, 2001. 9. J. L. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach. San Francisco, California ISBN: 1-55860-329-8: Morgan Kaufmann Publishers, Inc., 1996.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.