317
DISEÑO E IMPLEMENTACION DE UN MICROCONTROLADOR 8051 USANDO VHDL “FLEX51” JORGE ANDRES CASTRO RESTREPO UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERIAS DEPARTAMENTO DE ENERGÉTICA Y ELECTRÓNICA PROGRAMA DE INGENIERIA ELECTRONICA SANTIAGO DE CALI 2004

DISEÑO E IMPLEMENTACION DE UN MICROCONTROLADOR 8051 … · 2018. 4. 18. · diseÑo e implementacion de un microcontrolador 8051 usando vhdl “flex51” jorge andres castro restrepo

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • DISEÑO E IMPLEMENTACION DE UN MICROCONTROLADOR 8051 USANDO VHDL

    “FLEX51”

    JORGE ANDRES CASTRO RESTREPO

    UNIVERSIDAD AUTÓNOMA DE OCCIDENTE

    FACULTAD DE INGENIERIAS

    DEPARTAMENTO DE ENERGÉTICA Y ELECTRÓNICA

    PROGRAMA DE INGENIERIA ELECTRONICA

    SANTIAGO DE CALI

    2004

  • DISEÑO E IMPLEMENTACION DE UN MICROCONTROLADOR 8051 USANDO VHDL

    “FLEX51”

    JORGE ANDRÉS CASTRO RESTREPO

    Proyecto de Grado para optar el titulo de

    Ingeniero Electrónico

    Director

    JOHNNY POSADA CONTRERAS

    Ingeniero Electrónico

    UNIVERSIDAD AUTÓNOMA DE OCCIDENTE

    FACULTAD DE INGENIERIAS

    DEPARTAMENTO DE ENERGÉTICA Y ELECTRONICA

    PROGRAMA DE INGENIERÍA ELECTRÓNICA

    SANTIAGO DE CALI

    2004

  • Nota de aceptación:

    Aprobado por el comité de trabajo de

    grado en cumplimiento de los

    requisitos exigidos por la Universidad

    Autónoma de Occidente para optar al

    titulo de Ingeniero Electrónico

    Henry Cabra

    Firma del jurado

    Diego Martínez

    Firma del jurado

    Santiago de Cali, Julio 29 de 2.004

  • Al Señor Jesús por ser la luz de mi vida, el hacedor de todo lo que vemos y fiel

    amigo.

    A mi familia por ser un apoyo constante, hoy ven el fruto de sus esfuerzos.

  • AGRADECIMIENTOS

    Universidad Autónoma de Occidente, por creer en mis capacidades y habilidades

    dándome las herramientas materiales, intelectuales y emocionales para alcanzar la

    cima de nuestro sueño.

    Johnny Posada Contreras, Ingeniero Electrónico y director de tesis, por su

    colaboración en el desarrollo de los objetivos.

  • CONTENIDO

    Pág.

    INTRODUCCIÓN 30

    1. OBJETIVO GENERAL 32

    1.1 OBJETIVOS ESPECIFICOS 32

    2. PLANTEAMIENTO DEL PROBLEMA 33

    3. JUSTIFICACIÓN 35

    4. DISTRIBUCIÓN DEL TRABAJO 38

    5. MICROCONTROLADOR 40

    6. FLEX10K DE ALTERA 42

    6.1 DESCRIPCIÓN GENERAL 42

    6.2 BLOQUE DE ARREGLOS EMBEBIDOS 42

    6.3 BLOQUE DE ARREGLOS LOGICOS 43

    6.4 ELEMENTO LOGICO 44

    6.5 MODOS DE OPERACIÓN 45

    6.5.1 MODO NORMAL 45

    6.5.2 MODO ARIMETICO 46

    6.5.3 MODO CONTADOR ASCENDENTE/DESCENDENTE 47

    6.5.4 MODO CONTABLE CLAREABLE 48

    7. CIRCUITOS COMBINATORIOS 49

  • 7.1 CIRCUITOS ARITMETICOS 49

    7.1.1 SUMADORES 49

    7.1.1.1 Semisumador 49

    7.1.1.2 Sumador completo 50

    7.1.1.3 Sumador paralelo binario 52

    7.1.1.4 Sumador-restador binario 53

    7.1.1.5 Lpm_add_sub 54

    7.1.1.6 Diseño de sumadores utilizados en el Flex51 54

    7.1.1.6.1 Ader_a 54

    7.1.1.6.2 Sumagu 57

    7.1.2 MULTIPLICADORES 58

    7.1.2.1 Multiplicador serie 58

    7.1.2.2 Multiplicador paralelo de n bits basado en arreglos de sumadores

    con acarreo propagado 59

    7.1.2.3 Multiplicador paralelo de n bits basado en arreglos de sumadores

    con acarreo salvado 60

    7.1.2.4 Multiplicador de Wallace 61

    7.1.2.5 Multiplicador parametrizado: Mega Función Lpm_mult 62

    7.1.2.6 Multiplicador paralelo basado en el algoritmo de Booth 62

    7.1.2.7 Multiplicador de Baugh-Wooley 63

    7.1.2.8 Resultados de optimización de multiplicadores paralelos 64

    7.1.2.9 Diseño del multiplicador del FEX51. 67

    7.1.3 DIVISORES 68

    7.1.3.1 Divisor basado en restas y desplazamientos 68

  • 7.1.3.2 Divisor con restauración de 2N-N bits 68

    7.1.3.3 Divisor sin restauración de 2N-N bits 70

    7.1.3.4 Lpm_divide 71

    7.1.3.5 Diseño del divisor del FLEX51 71

    7.2 DECODIFICADORES 72

    7.2.1 DEC2TO4 72

    7.2.2 DEC2TO4H 73

    7.2.3 DECOD127 74

    7.2.4 DECINT 76

    7.3 MULTIPLEXORES 77

    7.3.1 MUX1OF2B 78

    7.3.2 MU3 78

    7.3.3 MBIT 79

    7.3.4 MUXPREES 79

    8. REGISTROS Y CONTADORES 81

    8.1 FLIP-FLOPS 81

    8.1.1 FDD 81

    8.1.2 FDD1 82

    8.2 REGISTROS 82

    8.2.1 REG8B 82

    8.2.2 STD_REG8B2 83

    8.2.3 STD_REG8B22 84

    8.2.4 STD_REG8B1 85

    8.2.5 REG8BPSW 87

  • 8.2.6 REGTCON 87

    8.2.7 REGSCON 88

    8.2.8 REG8BTRANS 89

    8.2.9 REG8BRECC 90

    8.3 CONTADORES 90

    8.3.1 CONT_REG8B 90

    8.3.2 REG_SP 91

    8.3.3 PC0 92

    8.3.4 PC1 92

    8.3.5 INC_DEC 94

    8.2.6 CONTBAUDRATE 95

    8.2.7 CONTBAUDRATE1 96

    8.2.8 CONT_REG6B 97

    9. MEMORIA 98

    9.1 MEMORIA DE ACCESO ALEATORIO (RAM) 99

    9.1.1 DISEÑO DE LA MEMORIA RAM DEL FLEX51 99

    9.2 MEMORIA DE SOLO LECTURA (ROM) 99

    9.2.1 DISEÑO DE LA MEMORIA ROM DEL FLEX51 100

    10. DISEÑO DEL FLEX51 101

    10.1 MICROCONTROLADOR 80C31/80C51/80C57 101

    10.2 FLEX51 107

    10.2.1 CARACTERISTICAS 108

  • 10.2.2 FLEX51 EN BLOQUES 109

    10.2.3 FLEX51 EN PARTES 113

    10.2.3.1 Decodificador de zona de registros de funciones especiales

    DECOD127 115

    10.2.3.2 Dispositivo de salidas de control de la máquina de estados DIROUT 116

    10.2.3.3 Memoria de programa ROMPROG 119

    10.2.3.4 Tri 120

    10.2.3.5 Memoria de datos RAMD. 120

    10.2.3.6 Registro IR 121

    10.2.3.7 Zona de puertos de entrada y salida 121

    10.2.3.8 Registro PSW 123

    10.2.3.9 Cable 125

    10.2.3.10 Arreagu1 126

    10.2.3.10.1 And20 129

    10.2.3.11 Agu 129

    10.2.3.11.1 Pc 131

    10.2.3.11.2 Dptr 133

    10.2.3.11.3 Reg8bagu 135

    10.2.3.11.4 Arreagu2 136

    10.2.3.11.5 Arreagu3 136

    10.2.3.11.6 Arregloagu 137

    10.2.3.11.7 Cable2 138

    10.2.3.11.8 Funcionamiento general de la AGU 139

    10.2.3.12 Alu (Prueba4) 141

  • 10.2.3.12.1 Alu 143

    U_corri 146

    U_exch 146

    Paridad 147

    Dirbit 148

    Cjne 150

    Incdec 151

    Ul 152

    Arreglodirecto 153

    10.2.3.12.2 Logalu 155

    10.2.3.12.3 Arreov 158

    10.2.3.13 Unidad_bits 160

    10.2.3.13.1 Prubit 162

    10.2.3.13.2 Arrecarry 162

    10.2.3.13.3 Saltoarre 163

    10.2.3.13.4 Compilación del dispositivo Unidad_bits 163

    10.2.3.14 Arre_ramex 164

    10.3 MÁQUINA DE ESTADOS 164

    11. PERIFERICOS DEL FLEX51 177

    11.1 UNIDAD SERIAL 178

    11.1.1 UNIDAD DE TRANSMISION 178

    11.1.1.1 Baudrate 180

    11.1.1.2 Mqtx 181

    11.1.2 UNIDAD DE RECEPCION 182

  • 11.1.2.1 Mqrx 184

    11.1.3 PREESCALER 184

    11.1.4 SCON 185

    11.1.5 FUNCIONAMIENTO GENERAL DE LA UNIDAD SERIAL 187

    11.1.6 FORMULA PARA GENERAR LA RATA DE BAUDIOS 188

    11.2 UNI_INTERRUPCIONES 189

    11.2.1 FUNCIONAMIENTO GENERAL DEL DISPOSITIVO UNI_INTERRUPCIONES 190

    11.2.2 INTERRUP 192

    11.3 UNIDAD DE TIMERS 193

    11.3.1 TCON 197

    12. PRUEBAS DE FUNCIONAMIENTO Y VALIDACIÓN 199

    12.1 PRUEBA 1: TABLAS DE MULTIPLICAR DE 4 X(0-F). HEXADECIMAL 201

    12.2 PRUEBA 2: CONTADOR DE EVENTOS 202

    12.3 PRUEBA 3: TRANSMISIÓN SERIAL 205

    13. CONCLUSIONES 209

    14. RECOMENDACIONES 211

    BIBLIOGRAFIA 212

    ANEXOS 213

  • LISTA DE TABLAS

    Pág.

    Tabla 1. Tabla de verdad del semisumador. 50

    Tabla 2. Tabla de verdad del sumador completo. 51

    Tabla 3. Control de funcionamiento del ADER_A 55

    Tabla 4. Multiplicadores paralelos optimizados por velocidad usando

    MAX+plus II. 65

    Tabla 5. Multiplicadores paralelos optimizados por área usando MAX+plus

    II. 65

    Tabla 6. Multiplicadores paralelos optimizados por velocidad usando

    QUARTUS II versión 3. 66

    Tabla 7. Multiplicadores paralelos optimizados por área usando QUARTUS II

    versión 3. 66

    Tabla 8. Tabla de verdad del DEC2TO4 73

    Tabla 9. Tabla de verdad del DEC2TO4H 74

    Tabla 10. Tabla de verdad del DECOD127. 75

    Tabla 11. Tabla de verdad del DECINT. 77

    Tabla 12. Set de instrucciones y modos de direccionamiento. 104

    Tabla 13. Salidas del dispositivo DIROUT y sus funciones. 116

  • Tabla 14. Tabla de operaciones aritméticas con su número de estados 165

    Tabla 15. Tabla de operaciones lógicas con su número de estados 167

    Tabla 16. Tabla de operaciones de transferencia de datos con su número

    de estados. 168

    Tabla 17. Tabla de operaciones de manipulación de variables booleanas

    con su número de estados. 169

    Tabla 18. Tabla de operaciones de salto de programa con su número de

    estados 170

  • LISTA DE FIGURAS

    Pág.

    Figura 1. Diagrama Bloques general del FLEX51. 41

    Figura 2. Bloque de arreglos embebidos. 43

    Figura 3. Bloque de arreglos lógicos. 44

    Figura 4. Elemento lógico. 45

    Figura 5. Modo normal. 46

    Figura 6. Modo aritmético. 47

    Figura 7. Modo contador ascendente/descendente. 48

    Figura 8. Modo contador clareable. 48

    Figura 9. Diagrama de lógica del sumador. 50

    Figura 10. Diagrama de lógica del sumador completo. 52

    Figura 11. Sumador paralelo de 4 bits. 52

    Figura 12. Circuito sumador-restador 53

    Figura 13.Dispositivo ADER_A sumador-restador 55

    Figura 14. Sumario de compilación del dispositivo ADER_A. 56

    Figura 15. Dispositivo diseñado con la función MegaWizard Pulg-In

    Manager Sumador_A. 56

    Figura 16. Diagrama esquemático del ADER_A. 57

  • Figura 17. Dispositivo diseñado con la función MegaWizard Pulg-In

    Manager Sumagu. 58

    Figura 18. Multiplicador serial sin signo. 59

    Figura 19. Multiplicador de 4 bits basado en sumadores con acarreo

    propagado. 60

    Figura 20. Multiplicador de 4 bits basado en sumadores con acarreo

    salvado. 61

    Figura 21. Multiplicador de Wallace de 4 bits. 61

    Figura 22. Celda básica de control. 63

    Figura 23. Multiplicador de Booth. 63

    Figura 24. Multiplicador de Baugh-Wooley de 4 bits. 64

    Figura 25. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager Multiplicador. 67

    Figura 26. Arreglo del divisor con restauración para N =4 bits. 69

    Figura 27. Celda básica para el arreglo del divisor con restauración. 69

    Figura 28. Arreglo divisor sin restauración con N =4 bits. 70

    Figura 29. Celda básica para el arreglo del divisor sin restauración. 71

    Figura 30. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager Divisor. 72

    Figura 31. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DEC2TO4. 73

  • Figura 32. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DEC2TO4H. 74

    Figura 33. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DECOD127. 75

    Figura 34. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DECINT. 76

    Figura 35. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    MUX1OF2_8B. 78

    Figura 36. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager Mu3. 79

    Figura 37. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager Mu3. 79

    Figura 38. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager MUXPREES. 80

    Figura 39. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    FDD. 81

    Figura 40. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    FDD1. 82

    Figura 41. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8B. 83

    Figura 42. Dispositivo STD_REG8B2. 83

    Figura 43. Diagrama esquemático del STD_REG8B2. 84

  • Figura 44. Dispositivo STD_REG8B22. 85

    Figura 45. Diagrama esquemático del STD_REG8B22. 85

    Figura 46. Dispositivo STD_REG8B1. 86

    Figura 47. Diagrama esquemático del STD_REG8B1. 86

    Figura 48. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8BPSW. 87

    Figura 49 Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REGTCON. 88

    Figura 50. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REGSCON. 89

    Figura 51. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8BTRANS. 89

    Figura 52. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8BREPC. 90

    Figura 53. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONT_REG8B. 91

    Figura 54. Sumario de compilación del dispositivo CONT_REG8B. 91

    Figura 55. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG_SP. 92

    Figura 56. Sumario de compilación de dispositivo REG_SP. 92

    Figura 57. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager PC0. 93

  • Figura 58. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager PC1. 94

    Figura 59. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    INC_DEC. 94

    Figura 60. Sumario de compilación de dispositivo INC_DEC. 94

    Figura 61. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONTBAUDRATE. 95

    Figura 62. Sumario de compilación de dispositivo CONTBAUDRATE. 95

    Figura 63. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONTBAUDRATE1. 96

    Figura 64. Sumario de compilación de dispositivo CONTBAUDRATE1. 96

    Figura 65. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONT_REG6B. 97

    Figura 66. Sumario de compilación de dispositivo CONT_REG6B. 97

    Figura 67. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager RDAM. 99

    Figura 68. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager MEMPROG. 100

    Figura 69. Símbolo lógico. 102

    Figura 70. Diagrama de Bloques. 103

    Figura 71. Set de instrucciones del 8051 parte 1. 105

    Figura 72. Set de instrucciones del 8051 parte 2. 106

  • Figura 73. Microcontrolador embebido FLEX51. 108

    Figura 74. Diagrama de bloques de la unidad de control implementada en

    el Flex51. 110

    Figura 75. Diagrama de bloques de la unidad generadora de direcciones

    AGU. 111

    Figura 76. Diagrama de bloques de la unidad aritmética lógica ALU. 113

    Figura 77. Diagrama de bloques del microcontrolador embebido Flex51.

    114

    Figura 78. Diagrama esquemático del Flex51. a)CPU, b)DIROUT, c)IR, d)ALU,

    e)AGU, f)Banco de puertos, g)DECOD127, h)Memoria ROM, i)Memoria

    RAM, j)Unidad de bits, k)PSW, l)Unidad de temporizadores, m)Unidad

    de interrupciones, n)unidad de transmisión serial. 115

    Figura 79. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DIROUT. 116

    Figura 80. Sumario de compilación del dispositivo DIROUT. 118

    Figura 81. Dispositivo diseñado en el entorno grafico de ALTERA

    ROMPROG. 119

    Figura 82. Esquema de la memoria de programa ROMPROG. 119

    Figura 83. Sumario de compilación del dispositivo ROMPROG. 120

    Figura 84. Dispositivo diseñado con la función MegaWizard Plug-In

    Manager TRI. 120

    Figura 85. Dispositivo diseñado en el entorno grafico de ALTERA RAMD.121

  • Figura 86. Esquema de la memoria de datos RAMD. 121

    Figura 87. Dispositivo diseñado en el entorno grafico de ALTERA BANREG.

    122

    Figura 88. Esquema del dispositivo de puertos de entrada y salida. 123

    Figura 89. Dispositivo diseñado en el entorno grafico de ALTERA PSW. 124

    Figura 90. Esquema del dispositivo PSW. 125

    Figura 91. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CABLE. 125

    Figura 92. Dispositivo diseñado en el entorno grafico de ALTERA

    ARREAGU1. 127

    Figura 93. Esquema del dispositivo Arreagu1. 128

    Figura 94. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    AND20. 129

    Figura 95. Dispositivo diseñado en el entorno grafico de ALTERA AGU. 131

    Figura 96. Dispositivo diseñado en el entorno grafico de ALTERA PC. 132

    Figura 97. Esquema del dispositivo PC. 133

    Figura 98. Dispositivo diseñado en el entorno grafico de ALTERA DPTR. 134

    Figura 99. Esquema del dispositivo DPTR. 134

    Figura 100. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL REG8BAGU. 135

    Figura 101. Dispositivo diseñado en el entorno grafico de ALTERA

    ARREAGU2. 136

  • Figura 102. Dispositivo diseñado en el entorno grafico de ALTERA

    ARREAGU3. 137

    Figura 103. Esquema del dispositivo ARREAGU3. 137

    Figura 104. Dispositivo diseñado en el entorno grafico de ALTERA

    ARREGLOAGU. 138

    Figura 105. Esquema del dispositivo ARREGLOAGU. 138

    Figura 106. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL CABLE2. 139

    Figura 107. Esquema del dispositivo AGU. a)PC, b)DPTR, c)Registros

    temporales, d)SP, e)sumador, f)REG8BAGU, g)MU3, h)CABLE,

    i)ARREAGU2, j)ARREGLOAGU 140

    Figura 108. Sumario de compilación del dispositivo AGU. 141

    Figura 109. Dispositivo diseñado en el entorno grafico de ALTERA

    PRUEBA4. 142

    Figura 110. Esquema del dispositivo PRUEBA4. 143

    Figura 111. Dispositivo diseñado en el entorno gráfico de Altera ALU. 145

    Figura 112. Esquema del dispositivo ALU. a)registros, b) ADER_A, c)UL, d)

    Multiplicador, e)divisor, f)U_exch, g)U_corri, h)dirbit, i)Paridad,

    j)Multiplexores, k)Decodificadores, l)CJNE, m)Arreglodirecto, n)Incdec.

    145

    Figura 113. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL U_CORRI. 146

  • Figura 114. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL U_EXCH. 147

    Figura 115. Dispositivo diseñado en el entorno gráfico de Altera PARIDAD.

    148

    Figura 116. Esquema del dispositivo PARIDAD. 148

    Figura 117. Dispositivo diseñado en el entorno gráfico de Altera DIRBIT.

    149

    Figura 118. Esquema del dispositivo DIRBIT. 149

    Figura 119. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL DIRBITS. 150

    Figura 120. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL CJNE. 151

    Figura 121. Dispositivo diseñado en el entorno gráfico de Altera INCDEC.

    151

    Figura 122. Esquema del dispositivo INCDEC. 152

    Figura 123. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL UL. 152

    Figura 124. Dispositivo diseñado en el entorno gráfico de Altera

    ARREGLODIRECTO. 153

    Figura 125. Esquema del dispositivo ARREGLODIRECTO. 153

    Figura 126. Bandera de Cero. 154

    Figura 127. Bandera de desbordamiento de la división. 154

  • Figura 128. Bandera de desbordamiento de la multiplicación. 155

    Figura 129. Dispositivo diseñado en el entorno gráfico de Altera LOGALU.

    157

    Figura 130. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL CJNEMUX. 158

    Figura 131. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL CJNEMUX1. 158

    Figura 132. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL ARREOV. 159

    Figura 133. Sumario de compilación del dispositivo PRUEBA4. 160

    Figura 134. Dispositivo diseñado en ele entorno gráfico de Altera

    UNIDAD_BITS. 161

    Figura 135. Esquema del dispositivo UNIDAD_BITS. 161

    Figura 136. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL PRUBIT. 162

    Figura 137. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL ARRECARRY. 163

    Figura 138. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL SALTOARRE. 163

    Figura 139. Sumario de compilación del dispositivo UNIDAD_BITS 164

    Figura 140. Dispositivo diseñado en lenguaje descripción hardware VHDL

    ARRE_RAMEX. 164

  • Figura 141. Dispositivo diseñado en lenguaje de descripción hardware

    AHDL CPU. 165

    Figura 142. Máquina de estados del FLEX51. 172

    Figura 143. Sumario de compilación del microcontrolador FLEX51. 176

    Figura 144. Dispositivo diseñado en el entorno grafico de ALTERA

    UNIDAD_SERIAL. 178

    Figura 145. Dispositivo diseñado en el entorno grafico de ALTERA

    TRANSMISION. 179

    Figura 146. Esquema del dispositivo TRANSMISION. 179

    Figura 147. Dispositivo diseñado en lenguaje de descripción hardware

    VHDL BAUDRATE. 181

    Figura 148. Dispositivo diseñado en lenguaje de descripción hardware

    AHDL MQTX. 181

    Figura 149. Dispositivo diseñado en el entorno grafico de ALTERA

    RECEPCION. 182

    Figura 150. Esquema del dispositivo RECEPCION. 183

    Figura 151. Dispositivo diseñado en lenguaje de descripción hardware

    AHDL MQRX. 184

    Figura 152. Dispositivo diseñado en el entorno grafico de ALTERA

    PREESCALER. 184

    Figura 153. Esquema del dispositivo PREESCALER. 185

  • Figura 154. Dispositivo diseñado en el entorno grafico de ALTERA SCON.

    186

    Figura 155. Esquema del dispositivo SCON. 186

    Figura 156. Esquema del dispositivo UNIDAD_SERIAL. a)Preescaler,

    b)Transmisión, c)recepción, d)scon. 187

    Figura 157. Sumario de compilación de la unidad serial. 188

    Figura 158. Dispositivo diseñado en el entorno grafico de ALTERA

    UNI_INTERRUPCIONES. 189

    Figura 159. Esquema del dispositivo UNI_INTERRUPCIONES. a)arreglo de

    flip-flops 1, b) registro IR, c)registro IP, d)decodificador de

    interrupciones 1, e)interrup, f)decodificador de interrupciones 2,

    g)arreglo de slip-flops 2. 191

    Figura 160. Sumario de compilación del dispositivo UNI_INTERRUPCIONES.

    191

    Figura 161. Dispositivo diseñado en lenguaje de descripción hardware

    AHDL INTERRUP. 192

    Figura 162. Dispositivo diseñado en el entorno gráfico de Altera

    UNI_TIMER-COUNTER. 193

    Figura 163. Esquema del temporizador cero. 195

    Figura 164 Esquema del temporizador uno. 195

    Figura 165 Esquema de la salida de la unidad timer-counter. a)TCON,

    b)TMOD, c)arreglo de salidas. 196

  • Figura 166. Sumario de compilación del dispositivo TIMER-COUNTER. 197

    Figura 167. Dispositivo diseñado en el entorno gráfico de altera TCON. 197

    Figura 168. Esquema del dispositivo TCON. 198

    Figura 169. Montaje de dispositivos en ALTERA para pruebas. 200

    Figura 170. Tarjeta UP2 y protoboard. 200

    Figura 171. Sumario de compilación del FLEX51 con el programa de la

    prueba 1. 202

    Figura 172. Simulación de la prueba 1 en donde se multiplica 4 h x 2h. 202

    Figura 173. Diagrama de bloques de la prueba 2. 203

    Figura 174. Sumario de compilación del FLEX51 con el programa de la

    prueba 2 204

    Figura 175. Simulación de la prueba 2. 204

    Figura 176. Circuito eléctrico de los pulsadores. 205

    Figura 177. Diagrama de bloques de la prueba 3. 207

    Figura 178. Sumario de compilación del FLEX51 con el programa de la

    prueba 2 207

    Figura 179. Resultado de la prueba 3 en el Hyper Terminal. 207

    Figura 180. Circuito RS-232. 208

    Figura 181. Circuito eléctrico de los pulsadores. 208

  • LISTA DE ANEXOS

    Pág.

    Anexo A 213

    Anexo B 288

  • RESUMEN

    En este documento se hablará a grandes rasgos lo que es el microcontrolador de

    la familia 8051, sus características, su set de instrucciones, los diferentes modos

    de direccionamiento, etc.

    También se hablar un poco de lo que es el FLEX10K, sus elementos básicos y sus

    modos de funcionamiento.

    Además se planteará todo el diseño implementado para la elaboración del

    microcontrolador embebido FLEX51, cuales son sus características,

    especificaciones, que copiará del 8051 y que no, como están diseñados y como

    funcionan sus dispositivos internos y cuales dispositivos periféricos se le

    implementan.

    Finalmente se plantearon una serie de practicas de laboratorios y sus respectivos

    resultados.

  • 30

    INTRODUCCIÓN

    En la actualidad el gran crecimiento de recursos disponibles en un solo circuito

    integrado permite afrontar diseños de una complejidad muy alta, incluso la

    instalación de sistemas enteros. Esta solución conocida como SOC (System On a

    Chip), busca la minimización de los tiempos de diseño, disminución de costos,

    aumento de la velocidad de operación, etc.

    Años atrás y aun en la actualidad un proyecto que necesitara un componente

    digital especifico, tenia como solución su implementación con lógica digital,

    sistemas microprocesadores o arreglos lógico programables como las PAL, GAL,

    sistemas a medida entre otros. Hoy en día, dada la popularización de la lógica

    programable y más específicamente de los Complex Field-programmable Devices

    (CPLDs) y Field-Programmable Gate Arrays (FPGAs), es posible sintetizar estos

    diseños complejos, mejorando notablemente la implementación de ellos. Por eso,

    en nuestros tiempos es muy común encontrar aplicaciones de la lógica

    programable en muchas áreas tales como: microcomputadoras, audio, video,

    comunicaciones, tratamiento digital de señales (DSP), equipos médicos, sistema

    para medición y telecontrol etc. Los lenguajes de descripción de hardware (HDLs)

    surgieron como una solución a la complejidad del diseño digital en grandes

    sistemas, debido que los tradicionales esquemas eléctricos eran de difícil manejo.

  • 31

    Este trabajo se enfoca exactamente en este campo, puesto que será embebido un

    microcontrolador en una FPGA con muchas de las características del 8051 y

    posibilidades de unirse a periféricos para diferentes aplicaciones; estos anexos se

    realizan por medio de lógica programable que sintetizaran aun más los diseños

    en un futuro.

    Este proyecto será uno de los puntos de partida para nuevas investigaciones y

    desarrollos por parte de La Universidad Autónoma de Occidente en el área de

    electrónica digital, microcontroladores, etc. puesto que será de gran ayuda para

    los estudiantes de los programas de Electrónica y Mecatrónica que podrán usarlo,

    no preocupándose ahora por el microcontrolador sino por periféricos específicos

    de cada aplicación teniendo estos en un mismo encapsulado y disminuyendo así

    los tiempos de diseño.

  • 32

    1. OBJETIVO GENERAL

    Diseñar e implementar usando VHDL una arquitectura de microcontrolador

    compatible con el set de instrucciones del 8051, en una FPGA (FLEX 10K) de

    Altera.

    1.1 OBJETIVOS ESPECIFICOS

    Aprender el funcionamiento del microcontrolador 8051 (su arquitectura,

    funcionamiento, periféricos, listado de instrucciones, etc).

    Fijar el funcionamiento de los lenguajes de descripción hardware, en nuestro caso

    VHDL utilizando la plataforma proporcionada por Altera (MAX+PLUS II 10.1

    BASELINE).

    Conocer el funcionamiento de la arquitectura de las FPGA’s FLEX 10K de altera y

    comprender sus modos de funcionamiento interno, con el fin de tener pautas para

    sintetizar en un menor espacio un circuito digital sin disminuir su desempeño en

    cuanto a velocidad.

  • 33

    2 . PLANTEAMIENTO DEL PROBLEMA

    En la actualidad en el área de diseño de dispositivos se habla del término

    codiseño y sistemas embebidos, donde se trabaja a la par, software y hardware,

    obteniendo una gran compenetración de entre ambos. Además de estos,

    encontramos lo que son diseños On-chip o diseños de sistemas en un solo chip,

    en donde podemos observar un gran numero de aplicaciones desarrolladas y en

    desarrollo. Aunque se han desarrollado en la universidad unos cuantos trabajos

    de este tipo1, la universidad no cuenta con una solución propia con estas

    características. Entendiendo como solución propia el diseño de un

    microprocesador genérico que se pueda reutilizar para diversas aplicaciones.

    Se puede pensar que la solución es adquirir módulos IP (Intellectual Property) de

    microprocesadores, pero erramos en esta decisión, puesto que estas soluciones

    son bastante costosas en el mercado (varían entre 12 millones y 95 millones de

    pesos, dependiendo de la velocidad); por tal motivo se desea realizar un

    microcontrolador tipo 8051 buscando el desarrollo de un dispositivo de muy buen

    desempeño y a costos relativamente bajos (precio de la tarjeta UP2 + software).

    1 Uno ejemplo de este trabajo es la tesis “Implementación de un modulo de sensado y de actuación para el control de nivel de un tanque mediante la técnica de codiseño hardware software”, donde se utiliza como elemento central de proceso un modulo IP 6805 de Motorola descrito en VHDL por Guillermo Jacquenod denominado FLEX6805

  • 34

    En el área de diseño lógico digital la implementación de este tipo de

    procesadores es tema de desarrollo, ya que se busca diariamente la forma de

    optimizar la velocidad, el tamaño y los costos.

    Un inconveniente que se posee al no trabajar con soluciones de este tipo es el

    aprovechar parcialmente las características de los microcontroladores usados,

    debido a que las aplicaciones no requieren en su mayoría de todos los módulos y

    funciones del microcontrolador. Por eso al implementar un microcontrolador en

    software, se deja a parte este problema, puesto que los módulos que no se

    requieren pueden ser omitidos a la hora de desarrollar nuevas aplicaciones o

    añadir al microcontrolador, módulos adicionales que cumplan funciones

    específicas para un diseño particular.

  • 35

    3 . JUSTIFICACIÓN

    Es importante y cabe decir que el funcionamiento del microcontrolador embebido

    es igual que el funcionamiento de un microcontrolador real, pero a diferencia de

    este, el microcontrolador embebido posee la ventaja que en una misma pastilla se

    pueda integrar los componentes necesarios y las funciones específicamente

    necesarias para realizar la aplicación deseada.

    Una característica es la programación, ya que es mucho mas sencilla, en donde

    se desarrolla un archivo que lee el dispositivo, una vez compilado y programado,

    por otra parte para programar el dispositivo real se debe estar borrando la

    memoria y el proceso de pruebas es considerablemente mas tardado, sino queda

    bien borrada o programada.

    Al estudiante poseer un microcontrolador ya desarrollado en una tarjeta como la

    UPX10K o UP2, adelanta mucho el proceso de desarrollo nuevas aplicaciones,

    puesto que se enfocaría a los periféricos que necesita para la aplicación

    especifica. De esta manera obtendríamos un número elevado de nuevas

    aplicaciones en pro de la investigación haciendo uso de microprocesadores y

    microcontroladores.

  • 36

    Una ventaja de que el microcontrolador sea embebido y no real a la hora de

    realizar nuevas aplicaciones es que el estudiante podrá optimizar al máximo sus

    diseños, porque no tendrá que desperdiciar algunas de las características del

    microcontrolador, puesto que este es hecho en software y puede ser modificado,

    usando solo necesario.

    Una de las razones de peso para la realización de este proyecto es el precio

    comercial de un desarrollo de este tipo, debido a que es realmente elevado, (por

    ejemplo la FPGA con Core E8051 cuesta en el mercado $4000 US

    aproximadamente $11’600.000 pesos), si miramos un proveedor como ALDEC

    notamos que sus valores son aun mas elevados ($33.000 US aproximadamente

    95’700.000 pesos). Por tal motivo es bastante rentable la realización de un

    dispositivo con estas características, que por el contrario comprarlo. Cabe decir

    que el microcontrolador que se diseñará no alcanzará las velocidades en las que

    estos otros dispositivos trabajan, puesto que no se compilará en dispositivos tan

    robustos y de tan grandes velocidades, pero su funcionamiento será bastante

    aceptable.

    Además podemos decir que importantes investigaciones se están realizando en la

    actualidad entorno a los IP cores por parte de diversas Universidades alrededor

    del mundo. A continuación se citarán de tres de ellas: “Diseño de cores-ip para

    redes de comunicaciones inalámbricas basadas en ofdm: optimización en área en

    la estación base” Investigador Principal: Javier Valls Coquillat. Universidad

    Politécnica de Valencia.

  • 37

    “Adaptación del núcleo IP de un procesador tipo M6805 para operar en un en

    ambiente multiprocesador y multitarea” Guillermo Jaquenod, Facultad de

    Ingeniería, Universidad del Centro de la Provincia de Buenos Aires.

    “Diseño de multiplicadores paralelos de 16 bits en FPGAs” Gustavo E. Ordóñez

    Fernández, Lewin A. López López, Jaime Velasco Medina.

    Siendo la Universidad Autónoma de Occidente impulsadora de grandes

    desarrollos, un proyecto con estos enfoques encaja muy bien dentro de visiones

    de progreso investigativo.

  • 38

    4 . DISTRIBUCIÓN DEL TRABAJO

    En este capítulo se mostrará como está divido el desarrollo del trabajo, y se dará

    un pequeño apunte de cada parte.

    MICRONTROLADOR, este capítulo es un abre bocas de todo este trabajo, en donde

    se encuentra un pequeño resumen de que es un microcontrolador y una

    descripción breve del Flex51.

    FLEX10K DE ALTERA, este capítulo muestra brevemente los elementos que

    Componen la Flex10k de altera y sus modos de funcionamiento.

    CIRCUITOS COMBINATORIOS, este capítulo trata acerca de los circuitos

    sumadores, multiplicadores, divisores, decodificadores y multiplexores que

    existen y cuales se implementan en el Flex51.

    REGISTROS Y CONTADORES, este capítulo habla de los dispositivos flip-flops,

    registros y contadores implementados en el microcontrolador embebido Flex51.

    MEMORIA, en esta parte se habla brevemente de los tipos de memorias que

    utiliza el dispositivo flex10k y la manera en que fueron implementadas las

    memorias de datos y de programa del microcontrolador Flex51.

  • 39

    DISEÑO DEL FLEX51, en este capítulo se habla de cómo se diseñaron y como

    funcionan los bloques funcionales ALU, AGU, CPU.

    PERIFERICOS, está sección contiene todo lo concerniente a la información de los

    periféricos que se le implementaron al Flex51, como funcionan y cuales son los

    tiempos de operación de estos dispositivos.

    PRUEBAS DE FUNCIONAMIENTO Y VALIDACIÓN, este capítulo documenta tres

    pruebas realizadas con el Flex51 en la tarjeta UP2.

  • 40

    5 . MICROCONTROLADOR

    Los microcontroladores poseen internamente una serie de elementos básicos tales

    como: la cpu, la alu, la agu,2 registros y diferentes tipos de buses (bus de datos,

    bus de direcciones y bus de control). El eje de todo microcontrolador es la cpu, ya

    que está se encarga de ejecutar cada orden que se dé al microcontrolador, genera

    las señales de control para de los otros componentes tales como la agu, la alu y

    los registros funcionen correctamente. Se encarga de orientar los datos, tanto a

    procesar como los ya procesados.

    Un microcontrolador además debe tener otros dispositivos que estén unidos a él

    para su buen funcionamiento: memorias, puertos y una señal de sincronice el

    sistema (reloj).

    Para la implementación del microcontrolador embebido FLEX51 se tendrá una

    unidad de direccionamiento AGU, una unidad aritmético lógica ALU, una máquina

    de estados, una unidad de salidas de control de la máquina de estados, el registro

    de interpretación de código IR, un bus de datos de 8 bits y un bus de direcciones

    de 16 bits. Ver figura 1.

    2 Morris Mano, M. INGENIERIA COMPUTACIONAL DISEÑO DEL HARDWARE.

  • 41

    Figura 1. Diagrama Bloques general del FLEX51.

  • 42

    6 . FLEX10K DE ALTERA

    6.1 DESCRIPCIÓN GENERAL.

    Los FLEX 10K de Altera son los primeros dispositivos PLDs embebidos de la

    industria. Basados en elementos reconfigurables CMOS SRAM. Con un máximo de

    250000 compuertas implementables, la familia FLEX 10K provee la densidad, la

    velocidad, y las características para integrar sistemas enteros, incluyendo buses

    múltiples de 32 bits, dentro de un solo dispositivo.

    Cada dispositivo FLEX 10K contiene un arreglo embebido para implementar

    memoria y funciones lógicas especializadas, y un arreglo lógico para implementar

    lógica en general.

    6.2 BLOQUE DE ARREGLOS EMBEBIDOS

    El EAB es un bloque flexible de RAM con registros con puertos de entrada y salida,

    y es usado para implementar mega funciones de arreglo de entrada común. El EAB

    es también adecuado para funciones tales como multiplicaciones, vectores

    escalares, circuitos de corrección de error, porque es grande y flexible. Estas

    funciones pueden ser combinadas en aplicaciones tales como filtros digitales y

    microcontroladores. Ver figura 2.

  • 43

    Figura 2. Bloque de arreglos embebidos.

    Flex10K Familia de dispositivos embebidos de lógica programable.

    6.3 BLOQUE DE ARREGLOS LOGICOS

    Cada LAB consiste en ocho LEs, ellos asociados con el carry y la cadena de

    cascada, la señal de control del LAB y la interconexión local LAB. Los LABs proveen

    la estructura de grano grueso a la arquitectura de la FLEX 10K, facilitando el

    enrutamiento eficiente con una utilización óptima del dispositivo y alto

    desempeño. Ver figura 3.

  • 44

    Figura 3. Bloque de arreglos lógicos.

    Flex10K Familia de dispositivos embebidos de lógica programable

    6.4 ELEMENTO LOGICO

    Los LE, son la unidad mas pequeña de la arquitectura lógica de la FLEX 10K, tiene

    un tamaño compacto que provee una utilización lógica eficiente. Cada LE contiene

    una LUT de cuatro entradas, la cual es una función generadora que puede

    rápidamente computar algunas funciones de cuatro variables. En adición, cada LE

    contiene un flipflop programable con habilitadores sincrónicos, cadena de carry, y

    cadena de cascada. Cada LE maneja la interconexión local y la interconexión

    FastTrack. Ver figura 4.

  • 45

    Figura 4. Elemento lógico.

    Flex10K Familia de dispositivos embebidos de lógica programable

    6.5 MODOS DE OPERACIÓN

    La FLEX 10K LE puede operar en los siguientes 4 modos:

    Modo normal.

    Modo aritmético.

    Modo contador ascendente/ descendente.

    Modo contador clareable.

    6.5.1 Modo normal. El modo normal es adecuado generalmente para aplicaciones

    lógicas y funciones de decodificación amplias que pueden tomar ventaja de una

    cadena de cascada. En modo normal, cuatro entradas de interconexión local LAB y

    carry-in son entradas para cuatro entradas LUT (ver figura 5). El compilador

    automáticamente selecciona la señal de carry-in o DATA3 como una de las

  • 46

    entradas a la LUT. La salida LUT es combinada con una señal cascade-in a una

    cadena de cascada a través de una señal cascade-out.

    El registro o la LUT puede manejar la interconexión local y la interconexión

    FastTrack al mismo tiempo.

    Figura 5. Modo normal.

    Flex10K Familia de dispositivos embebidos de lógica programable

    6.5.2 Modo aritmético. El modo aritmético ofrece dos LUT de tres entradas que

    son ideales para la implementación de sumadores, acumuladores y comparadores.

    Una LUT calcula funciones de tres entradas, y la otra genera una salida de carry

    (ver figura 6). La primera LUT usa una señal de carry de entrada y dos entradas de

    datos de la interconexión local LAB para generar una salida combinacional o

    registrada. La segunda LUT usa las mismas tres señales para generar la señal de

    carry de salida.

  • 47

    Figura 6. Modo aritmético.

    Flex10K Familia de dispositivos embebidos de lógica programable

    6.5.3 Modo contador ascendente/descendente. El modo contador

    ascendente/descendente ofrece habilitador de conteo, habilitador de reloj, control

    sincrónico ascendente/descendente, y opción de carga de datos. Las señales de

    control son generadas por las entradas de datos de la interconexión local LAB, la

    señal carry de entrada y las salida realimentada del registro programable. El modo

    contador ascendente/ descendente usa dos LUT de tres entradas: Una genera el

    dato de conteo, y la otra genera el bit de carry rápido. Un multiplexor de 2 a 1

    provee una carga sincrónica. El dato también puede ser cargado

    asincrónicamente con las señales de control present y clear del registro, sin usar

    las LUTs fuentes. Ver figura 7.

  • 48

    Figura 7. Modo contador ascendente/descendente.

    Flex10K Familia de dispositivos embebidos de lógica programable.

    6.5.4 Modo contador clareable. El modo contador clareable es similar al modo

    contador ascendente/ descendente, pero soporta clareo sincrónico en cambio del

    control ascendente/ descendente. La función de clareo es sustituida por la señal

    cascade de entrada en el modo contador ascendente/ descendente. Usa dos LUTs

    de tres entradas: Una genera el dato de conteo, y la otra genera el bit de carry

    rápido.

    Figura 8. Modo contador clareable.

    Flex10K Familia de dispositivos embebidos de lógica programable

  • 49

    7. CIRCUITOS COMBINATORIOS

    En este capítulo se hablará de los circuitos combinatorios, tales como circuitos

    sumadores, restadores, multiplicadores, divisores y circuitos secuénciales, tales

    como decodificadores y multiplexores, en donde se mostrará diferentes opciones

    para cada uno, cuales fueron implementados en el microcontrolador Flex51.

    7.1 CIRCUITOS ARITMETICOS

    Un circuito aritmético es un circuito combinatorio que realiza operaciones

    aritméticas tales como suma, resta, multiplicación y división con números binarios

    o con números decimales en código binario.

    7.1.1 Sumadores. La operación aritmética más simple es la adición de dos dígitos

    binarios de cuatro posibles combinaciones. 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 y

    1 + 1 = 10.

    7.1.1.1 Semisumador. Es un circuito aritmético que genera la suma de dos dígitos

    binarios. Posee tanto dos entradas como dos salidas. Su tabla de verdad es la

    siguiente (ver tabla 1). X y Y representan las dos entradas, C y S representan el

    acarreo y la suma (ver figura 9). Las funciones booleanas de las salidas son:

    YXYXYXS ⊕=+=

  • 50

    XYC =

    Tabla 1. Tabla de verdad del semisumador.

    Entradas Salidas

    X Y C S

    0 0 0 0

    0 1 0 1

    1 0 0 1

    1 1 1 0

    Ingeniería Computacional Diseño del Hardware.

    Figura 9. Diagrama de lógica del sumador.

    Ingeniería Computacional Diseño del Hardware.

    7.1.1.2 Sumador completo. Un sumador completo es un circuito combinatorio

    que forma la suma aritmética de tres bits de entrada (Dos entradas que son X y Y,

    y el acarreo de la posición significativa inferior anterior Z) y dos bits de salida S y

    C (Suma y acarreo). Las funciones booleanas de las salidas son:

  • 51

    XYZZYXZYXZYXS +++=

    YZXZXYC ++=

    Veamos cual es su tabla de verdad y su diagrama esquemático (ver figura 10).

    Tabla 2. Tabla de verdad del sumador completo.

    Entradas Salidas

    X Y Z C S

    0 0 0 0 0

    0 0 1 0 1

    0 1 0 0 1

    0 1 1 1 0

    1 0 0 0 1

    1 0 1 1 0

    1 1 0 1 0

    1 1 1 1 1

    Ingeniería Computacional Diseño del Hardware.

  • 52

    Figura 10. Diagrama de lógica del sumador completo.

    Ingeniería Computacional Diseño del Hardware.

    7.1.1.3 Sumador paralelo binario. La suma de dos números binarios de n bits se

    puede generar en serie o paralelo. El método de adición serie solo cuenta con un

    sumador completo y un dispositivo de almacenamiento para guardar el acarreo de

    salida. El sumador paralelo es un circuito digital que consta de circuitos

    sumadores completos conectados en cascada, con el acarreo de salida de uno a la

    entrada del sumador siguiente (ver figura 11). Un sumador paralelo de n bits

    requiere de n sumadores completos conectados en cascada.

    Figura 11. Sumador paralelo de 4 bits.

    Ingeniería Computacional Diseño del Hardware.

  • 53

    Cuando el sumador se implementa en dispositivos FLEX y es configurada la opción

    CARRY CHAIN el sumador requiere tantos LEs como bits de precisión se necesiten

    (N), más aun LE para el acarreo de entrada y de salida de la cadena de acarreos, es

    decir N+2 LEs.

    7.1.1.4 Sumador-restador binario. Las operaciones de suma y resta se pueden

    combinar en un circuito con un sumador común. Esta se hace incluyendo una

    compuerta OR exclusiva con cada sumador completo. La entrada S controla la

    operación a realizar, con S =1 realiza restas y con S =0 realiza sumas. Ver figura

    12.

    Figura 12. Circuito sumador-restador

    Ingeniería Computacional Diseño del Hardware.

  • 54

    Los LEs cuando tienen configurada la opción CARRY CHAIN solo pueden resolver

    dos funciones de 3 variables de entrada y el sumador restador requiere 4

    entradas, por eso la utilización de recursos es de N bits es de 2N+2 LEs.

    7.1.1.5 Lpm_add_sub. La función LPM_ADD_SUB reemplaza todas las otras

    funciones de sumadores-restadores, incluyendo algunos dispositivos estándar

    tales como: 7480 (sumador completo), 7482 (sumador completo binario de 2

    bits), 7483 (sumador completo binario de 4 bits con acarreo rápido), 74183

    (sumador dual completo con acarreo salvado), 74283 (sumador completo de 4

    bits con acarreo rápido), 74385 (sumador-restador de 4 bits con clareo).

    7.1.1.6 Diseño de los sumadores utilizados en el Flex51. Para diseñar los

    dispositivos sumadores del FLEX51 se tuvieron en cuenta los sumadores

    anteriormente mencionados; pero, se opto por escoger el sumador LPM_ADD_SUB

    debido a su gran facilidad de implementación y de cambio en cualquier momento

    del desarrollo del proyecto (con la ayuda de la función MegaWizard Plug-In

    Manager), mientras que los demás no contaban con estas características, porque

    eran muy dispendiosos en sus implementación y muy rígidos. Además es mucho

    más fácil la implementación de las banderas de acarreo (carry) y desbordamiento

    (overflow) para el caso del sumador ADER_A.

    7.1.1.6.1 Ader_a. El dispositivo ADER_A se diseño en el entorno gráfico de

    ALTERA y es propio de la ALU, posee dos entradas de datos A y B, cada una de 8

    bits, una entrada cin (acarreo de entrada) y dos entradas de control (s0 y s1).

  • 55

    Tiene una salida de datos Q de 8 bits, una salida de acarreo intermedio AC, una

    salida de acarreo final Co y una salida de desbordamiento OV (ver figura 13 y

    tabla 3). En su interior consta de dos sumadores Sumador_A diseñados con la

    función MegaWizard Plug-In Manager conectados en cascada (ver figura 15 y 16) y

    controlados por las entradas s0 y s1. El dispositivo ADER_A ejecuta funciones

    aritméticas tales como: Suma, Suma con acarreo y resta con préstamo (borrow).

    Después de hacer un análisis en el set de instrucciones del microcontrolador 8051

    se obtuvo que las entradas s0 y s1 fueran los dos bits menos significativos del

    nibble alto del código de instrucción almacenado en el registro IR (bits 5 y 4). Con

    la ayuda de este análisis se desarrollo la siguiente tabla que gobernará el

    funcionamiento del dispositivo.

    Tabla 3. Control de funcionamiento del ADER_A

    S1 S0 Operación

    0 0 A – B – Cin

    0 1 A – B – Cin

    1 0 A + B

    1 1 A + B + Cin

    Figura 13.Dispositivo ADER_A sumador-restador

  • 56

    En la gráfica siguiente (figura 14) se ve el número de pines de entrada y salida que

    utiliza el dispositivo en el que se compila, en este caso es el EPF10K70RC240-4.

    Utiliza 18 LCs (circuitos lógicos) y 0% de de memoria.

    Figura 14. Sumario de compilación del dispositivo ADER_A.

    El retardo mas crítico es de 59.2ns dado en la salida Co y proveniente de la

    entrada Ci.

    Figura 15. Dispositivo diseñado con la función MegaWizard Pulg-In Manager

    Sumador_A.

  • 57

    Figura 16. Diagrama esquemático del ADER_A.

    La lógica de control del acarreo de entrada que gobierna este dispositivo se

    conforma por las compuertas AND de tres entradas, la OR y OR negada y las

    entradas S0 y Cin. La entrada S1 se conecta a las entradas de selección de

    operación de los dispositivos Sumador_A. Los sumadores-restadores se conectan

    en cascada. La tabla muestra las combinaciones de S0 y S1 para elegir las

    operaciones, esta tabla se hizo después realizar un análisis en el set de

    instrucciones del microcontrolador 8051 y encontrar un patrón en los bits 5 y 4

    del código de operación.

    7.1.1.6.2 Sumagu. El dispositivo SUMAGU se diseño por medio la función

    MegaWizard Plug-In Manager de ALTERA y es propio de la AGU (ver figura 17).

  • 58

    Consta de dos entradas, cada una de 16 bits y una salida también de 16 bits. Este

    dispositivo es un simple sumador, y es usado para las instrucciones de salto. El

    dato que llega a la entrada B es un dato arreglado, puesto que en la parte alta

    todos pueden ser unos o ceros dependiendo hacia donde se ejecute el la salto y la

    parte baja corresponde al bus de datos.

    Figura 17. Dispositivo diseñado con la función MegaWizard Pulg-In Manager

    Sumagu.

    7.1.2 Multiplicadores. La multiplicación de números binarios se realiza en la

    misma forma que con números decimales. El multiplicando se multiplica por cada

    bit del multiplicador, empezando desde el bit menos significativo. Cada

    multiplicación de esta forma arroja un producto parcial. Los productos parciales

    sucesivos se desplazan una posición a la izquierda. El producto final es obtenido

    de la suma de los productos parciales.

    7.1.2.1 Multiplicador serie. El multiplicador serial es útil cuando para realizar una

    operación de multiplicación, el multiplicador MR es conocido en forma paralela,

    en tanto el multiplicando MO ingresa de manera serial (ver figura 18). El producto

  • 59

    de cada bit de MR por MO es realizado usando N funciones AND. El resultado de

    cada producto parcial es sumado, mediante una cadena de sumadores seriales, al

    resultado acumulado hasta entonces y desplazado a la derecha. La primera etapa

    no recibe acarreos anteriores, por eso se usa un FFD. La salida del sumador serial

    menos significativo RES corresponde al producto. Es necesario generar 2xN-1

    ciclos de reloj, durante los N primeros se ingresa MO (Primero el menos

    significativo) y después 0 para limpiar las etapas de acarreo salvado. Además todo

    el circuito requiere 2N-1 LEs.

    Figura 18. Multiplicador serial sin signo.

    7.1.2.2 Multiplicador paralelo de n bits basado en arreglos de sumadores con

    acarreo propagado. El multiplicador basado en un arreglo de sumadores de

    acarreo propagado es una primera aproximación a la implementación del

    algoritmo de sumas sucesivas y desplazamientos, tiene como característica

    transferir la propagación del acarreo a la siguiente suma parcial en la fila hasta

    terminar los productos de esa fila, en donde el acarreo generado se propaga al

  • 60

    último producto de la fila siguiente de productos parciales. Esto continua hasta

    que la multiplicación esta realizada. El bloque principal es un sumador completo

    de un bit. Veamos la siguiente figura.

    Figura 19. Multiplicador de 4 bits basado en sumadores con acarreo propagado.

    Curso diseño de sistemas digitales avanzados

    7.1.2.3 Multiplicador paralelo de n bits basado en arreglos de sumadores con

    acarreo salvado. También conocido como el multiplicador de Braun, es una

    segunda aproximación para implementar el algoritmo de sumas sucesivas y

    desplazamientos. Lo que se pretende es reducir el retardo de cada suma, para que

    la operación se realice más rápido. Este multiplicador permite salvar el acarreo

    generado en las sumas parciales y transferirlo como acarreo de entrada a la

    siguiente suma parcial de la siguiente fila de sumas parciales. Veamos un ejemplo

    en la siguiente figura..

  • 61

    Figura 20. Multiplicador de 4 bits basado en sumadores con acarreo salvado.

    Curso diseño de sistemas digitales avanzados

    7.1.2.4 Multiplicador de Wallace. Es una variante del algoritmo de sumas

    sucesivas y desplazamientos, donde se usan bloques de sumadores completos

    con tres entradas recibiendo productos y generando un termino que se agrega en

    otro termino suma. Veamos un ejemplo en la siguiente figura.

    Figura 21. Multiplicador de Wallace de 4 bits.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

  • 62

    7.1.2.5 Multiplicador Parametrizado: Megafunción Lpm_mult. La megafunción

    LPM_MULT reemplaza algunas de las funciones de multiplicación anteriores, e

    incluyendo algunos dispositivos estándar tales como: 7497 (multiplicador

    síncrono de 6 bits), 74261 (multiplicador paralelo binario de 2 bits), 74284

    (multiplicador paralelo binario de 4 bits por 4 bits y resultado los 4 bits más

    altos), 74285 (multiplicador paralelo binario de 4 bits por 4 bits y resultado los 4

    bits más bajos).

    7.1.2.6 Multiplicador paralelo basado en el algoritmo de Booth Este algoritmo

    presenta dos ventajas, una ventaja es la unificación de los multiplicadores tanto

    de números binarios positivos como de negativos de n bits; y la otra es que logra

    cierta eficacia con respecto al número de productos parciales generados, cuando

    tiene bloques grandes de unos. Veamos la estructura básica en la figura 22 y el

    multiplicador como tal en la figura 23.

    Este algoritmo se basa en que existen varias formas calcular un producto usando

    la suma y resta, por tal motivo si se tiene una ALU que pueda sumar o restar se

    podría obtener el mismo resultado.

  • 63

    Figura 22. Celda básica de control.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

    Figura 23. Multiplicador de Booth.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

    7.1.2.7 Multiplicador de Baugh-Wooley. Este multiplicador permite realizar

    multiplicaciones de números con signo utilizando la representación de

  • 64

    complemento a dos. Se basa en arreglos de sumadores de acarreo salvado. Ver

    figura 24.

    Figura 24. Multiplicador de Baugh-Wooley de 4 bits.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

    7.1.2.8 Resultados de optimización de multiplicadores paralelos. En esta sección,

    se muestran los resultados de simulación para los diferentes multiplicadores

    paralelos obtenidos en trabajos desarrollados por el grupo de Bioelectrónica y

    Nanoelectrónica de la Universidad del Valle; el dispositivo utilizado es el

    EPF10K70RC240-4 de la tarjeta UP2 de Altera. Veamos las tablas 4, 5, 6 y 7.

  • 65

    Tabla 4. Multiplicadores paralelos optimizados por velocidad usando MAX+plus II.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

    Tabla 5. Multiplicadores paralelos optimizados por área usando MAX+plus II.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

  • 66

    Tabla 6. Multiplicadores paralelos optimizados por velocidad usando QUARTUS II

    versión 3.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

    Tabla 7. Multiplicadores paralelos optimizados por área usando QUARTUS II

    versión 3.

    Diseño de multiplicadores paralelos de 16 bits en FPGAs.

    Se puede ver los multiplicadores más rápidos como los el desarrollado por Mega

    Función y el multiplicador Pipeline son los que necesitan mayores recursos y

  • 67

    generan más potencia, mientras que multiplicadores como el de Wallace y el de

    carry salvado necesitan mucho menos recursos, pero no igualan las velocidades .

    7.1.2.9 Diseño del multiplicador del Flex51. Para diseñar el dispositivo

    multiplicador del FLEX51 se tuvo en cuenta la velocidad de funcionamiento, la

    facilidad de implementación, cambios y prueba de errores. Por tal motivo se opto

    por diseñar el multiplicador con ayuda de la función MegaWizard Plug-In Manager

    de ALTERA (ver figura 25), ya que el dispositivo sería rápido en su funcionamiento

    por ser un dispositivo parametrizado y de entradas paralelas; es mucho más fácil

    de implementar que uno de los multiplicadores paralelos antes mencionados.

    Aunque el multiplicador serial ocupaba mucho menos espacio en la FLEX10K

    necesitaba muchos ciclos de reloj para su funcionamiento y otros dispositivos que

    le ayudasen a entrar los datos serialmente y a sacarlos paralelo. El dispositivo

    multiplicador consta de dos entradas de 8 bits y una salida de 16 bits.

    Figura 25. Dispositivo diseñado con la función MegaWizard Plug-In Manager

    Multiplicador.

  • 68

    7.1.3 Divisores. En esta sección se hablará de algunas de las arquitecturas de

    divisores que existen y por cual de ellos se opto.

    7.1.3.1 Divisor basado en restas y desplazamientos. La división binaria más

    simple está basada en el método tradicional de restas y desplazamientos, la idea

    básica es comparar el dividendo reducido con los múltiplos del divisor para

    determinar cuál múltiplo del divisor desplazado se restará.

    7.1.3.2 Divisor con restauración de 2N-N bits. Su algoritmo es el siguiente, dados

    dos enteros N y D tal que N < D, existirán dos enteros únicos Q y R que satisfacen

    la ecuación:

    RBQN +=2

    La propiedad que fundamenta la utilización de este algoritmo es el reflejo de la

    propiedad N < D al residuo y divisor (R < D), Figura 26. El circuito es

    implementado a partir de un restador completo y un multiplexor de 2 a 1(Figura

    27).

  • 69

    Figura 26. Arreglo del divisor con restauración para N =4 bits.

    Curso diseño de sistemas digitales avanzados

    Figura 27. Celda básica para el arreglo del divisor con restauración.

    Curso diseño de sistemas digitales avanzados

  • 70

    7.1.3.3 Divisor sin restauración 2N-N bits. Dados dos enteros N y D tal que –D ≤

    N < D, entonces existirán dos enteros únicos Q y R que satisfacen la ecuación:

    RBBQDN ++=+ 222

    La principal condición para este algoritmo es que los dos números deben ser

    enteros positivos (0 ≤ N < D) (ver figura 28). La celda básica es un sumador-

    restador con la señal C como señal de control del tipo de operación. Ver figura 29.

    Figura 28. Arreglo divisor sin restauración con N =4 bits.

    Curso diseño de sistemas digitales avanzados

  • 71

    Figura 29. Celda básica para el arreglo del divisor sin restauración.

    Curso diseño de sistemas digitales avanzados

    7.1.3.4 Lpm_divide. La Mega función LPM_DIVIDE toma un numerador y un

    denominador y computa un cociente y un residuo.

    7.1.3.5 Diseño del divisor del Flex51. Para diseñar el dispositivo divisor del

    FLEX51 se tuvo en cuenta la velocidad de funcionamiento, la facilidad de

    implementación, cambios y prueba de errores. Por tal motivo se opto por diseñar

    el divisor con ayuda de la función MegaWizard Plug-In Manager de ALTERA, ya

    que el dispositivo sería rápido en su funcionamiento y más fácil de implementar

    que uno de los divisores antes mencionados, debido a que solo es parametrizar

    uno valores necesarios. Los divisores no escogidos son muy dispendiosos y de

    muchísimo cuidado, ya que por ser diseños de muchos dispositivos en su interior

    al menor descuido se tendría resultados no esperados, no obstante el diseño de la

    manera elegida es un poco más seguro. El divisor consta de dos entradas de 8

    bits (numerador y denominador) y dos salidas de 8bits (cociente y residuo). Ver

    figura 30.

  • 72

    Figura 30. Dispositivo diseñado con la función MegaWizard Plug-In Manager

    Divisor.

    7.2 DECODIFICADORES

    Las cantidades discretas de información se representan con códigos binarios. Un

    decodificador es un circuito combinatorio que convierte información binaria de n

    entradas codificadas a un máximo de n2 salidas únicas. Todos los

    decodificadores que se utilizaron el FLEX51 fueron desarrollados en lenguaje

    VHDL, debido la facilidad de su diseño, dado a que para todos los casos un

    decodificador de tipo estándar hubiera sido muy grande o muy pequeño, no

    obteniendo así un diseño óptimo.

    7.2.1Dec2to4. Este dispositivo desarrollado en VHDL es un decodificador de 2 a 4

    con señal de habilitación (ver figura 31). Consta de una entrada de control de 2

    bits S[1..0] y una entrada de habilitación E; una salida de 4 bits D[3..0]. El

    dispositivo DEC2TO4 se usa en la ALU y en la AGU (más adelante se mostrará que

    función especifica cumple en dichas unidades). Para ver su código referirse al

    anexo A.

  • 73

    Figura 31. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DEC2TO4.

    Su tabla de verdad es la siguiente:

    Tabla 8. Tabla de verdad del DEC2TO4

    E S1 S0 D[3..0]

    0 0 0 0000

    0 0 1 0000

    0 1 0 0000

    0 1 1 0000

    1 0 0 0001

    1 0 1 0010

    1 1 0 0100

    1 1 1 1000

    7.2.2 Dec2to4h. Este dispositivo desarrollado en VHDL es un decodificador de 2 a

    4 sin señal de habilitación (ver figura 32). Consta de una entrada de control de 2

    bits S[1..0] y una salida de 4 bits D[3..0]. El dispositivo DEC2TO4H se usa en la

    AGU (más adelante se mostrará que función especifica cumple en dicha unidad).

    Para ver su código referirse al anexo A.

  • 74

    Figura 32. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DEC2TO4H.

    Su tabla de verdad es la siguiente:

    Tabla 9. Tabla de verdad del DEC2TO4H

    S1 S0 D[3..0]

    0 0 0001

    0 1 0010

    1 0 0100

    1 1 1000

    7.2.3 Decod127. Este dispositivo desarrollado en VHDL es un decodificador de 8 a

    21 sin señal de habilitación. Consta de una entrada de control de 8 bits S[7..0] y

    una salida de 21 bits D[20..0] (ver figura 33). El dispositivo DECOD127 es el

    decodificador de la zona de registros de funciones especiales, su entrada proviene

    de la parte baja del bus de direcciones. Para ver su código referirse al anexo A.

  • 75

    Figura 33. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DECOD127.

    Su tabla de verdad es la siguiente:

    Tabla 10. Tabla de verdad del DECOD127.

    SEL[7..0] S[20..0]

    11100000 000000000000000000001

    11110000 000000000000000000010

    10000011 000000000000000000100

    10000010 000000000000000001000

    10101000 000000000000000010000

    10111000 000000000000000100000

    10000000 000000000000001000000

    10010000 000000000000010000000

    10100000 000000000000100000000

    10110000 000000000001000000000

    11010000 000000000010000000000

    10011001 000000000100000000000

    10011000 000000001000000000000

  • 76

    10000001 000000010000000000000

    10001000 000000100000000000000

    10001100 000001000000000000000

    10001101 000010000000000000000

    10001010 000100000000000000000

    10001011 001000000000000000000

    10001001 010000000000000000000

    10010111 100000000000000000000

    Para cualquier otra opción. 000000000000000000000

    7.2.4 Decint. Este dispositivo desarrollado en VHDL es un decodificador de 5 a 4

    con señal de clareo y salida en nivel bajo (ver figura 34). Consta de una entrada de

    control de 5 bits S[5..0] y una salida de 4 bits D[4..0]. El dispositivo DECINT es un

    decodificador que cumple unas funciones de selección muy especiales y es

    utilizado en la unidad de interrupciones (más adelante se mostrará que función

    especifica cumple en dicha unidad).. Para ver su código referirse al anexo A.

    Figura 34. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    DECINT.

  • 77

    Su tabla de verdad es la siguiente:

    Tabla 11. Tabla de verdad del DECINT.

    C S[5..0] D[3..0]

    0 000000 11111

    0 000011 11111

    0 001011 11111

    0 010011 11111

    0 011011 11111

    0 100011 11111

    1 000000 11111

    1 000011 11110

    1 001011 11101

    1 010011 11011

    1 011011 10111

    1 100011 01111

    1 Para cualquier otra opcion 11111

    7.3 MULTIPLEXORES

    Un multiplexor es un circuito combinatorio que selecciona información binaria de

    una de muchas líneas de entrada y la dirige a una sola línea de salida. La selección

    una de entrada en particular es controlada por un conjunto de variables de

    selección. Normalmente hay n2 líneas de entrada y n variables de selección cuyas

    combinaciones de bits determinan que entrada se selecciona. Los multiplexores

  • 78

    que se utilizan en el FLEX51 fueron desarrollados de dos maneras diferentes,

    unos se diseñaron en lenguaje VHDL en editor de ALTERA y otros se diseñaron

    con la ayuda de la función MegaWizard Pulg-In Manager de ALTERA.

    7.3.1 Mux1of2_8b. Este dispositivo desarrollado en VHDL es un multiplexor que

    consta de una entrada de control de S, dos entradas de datos A y B de 8 bits y una

    salida Q de 8 bits (ver figura 35). El dispositivo MUX1OF2_8B se usa en la ALU

    (más adelante se mostrará que función especifica cumple en dicha unidad).. Para

    ver su código referirse al anexo A.

    Figura 35. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    MUX1OF2_8B.

    7.3.2 Mu3. Este dispositivo se desarrolló con ayuda de la función MegaWizard

    Plug-In Manager de ALTERA. Es un multiplexor que consta de una entrada de

    control de Sel de 2 bits, cuatro entradas de datos de 8 bits y una salida de datos

    de 8 bits. El dispositivo MU3 se usa en la AGU (más adelante se mostrará que

    función especifica cumple en dicha unidad). Se desarrolló con ayuda de esta

    función por su facilidad de diseño y adaptación a cambios.

  • 79

    Figura 36. Dispositivo diseñado con la función MegaWizard Plug-In Manager Mu3.

    7.3.3 Mbit. Este dispositivo se desarrolló con ayuda de la función MegaWizard

    Plug-In Manager de ALTERA. Es un multiplexor que consta de una entrada de

    control SEL de 1 bit, dos entradas de datos de 1 bit y una salida de datos de 1 bit.

    El dispositivo MBIT se usa en la Unidad de Temporizadores (más adelante se

    mostrará que función especifica cumple en dicha unidad). Se desarrolló con ayuda

    de esta función por su facilidad de diseño y adaptación a cambios.

    Figura 37. Dispositivo diseñado con la función MegaWizard Plug-In Manager Mu3.

    7.3.4 MUXPREES. Este dispositivo se desarrolló con ayuda de la función

    MegaWizard Plug-In Manager de ALTERA. Es un multiplexor que consta de una

    entrada de control de Sel de 1 bit, siete entradas de datos de 1 bit y una salida de

  • 80

    datos de 1 bit. El dispositivo MUXPREES se usa en el dispositivo PREESCALER (más

    adelante se mostrará que función especifica cumple en dicha unidad).

    Figura 38. Dispositivo diseñado con la función MegaWizard Plug-In Manager

    MUXPREES.

  • 81

    8. REGISTROS Y CONTADORES

    A continuación veremos los dispositivos slip-flops implementados en el

    microcontrolador embebido FLEX51.

    8.1 FLIP-FLOPS

    Los flip-flops son fundamentales porque, en su ausencia, el circuito tan solo sería

    un circuito netamente combinatorio. Un circuito con flip-flops se considera un

    circuito secuencial. En el FLEX51 se puede observar el diseño de dos flip-flops

    síncronos.

    8.1.1 Ffd. Flip-flop síncrono diseñado en lenguaje de descripción hardware VHDL,

    es un flip-flop de transición de alto a bajo, con entrada de clareo (ver figura 39).

    Se usa en la unidad de interrupciones (más adelante se mostrará que función

    especifica cumple en dicha unidad). Para ver su código referirse al anexo A.

    Figura 39. Dispositivo diseñado en lenguaje de descripción hardware VHDL FDD.

  • 82

    8.1.2 Ffd1. Flip-flop síncrono diseñado en lenguaje de descripción hardware

    VHDL, es un flip-flop de transición de bajo a alto, con entrada de clareo (ver

    figura 40). Se usa en la unidad de interrupciones (más adelante se mostrará que

    función especifica cumple en dicha unidad). Para ver su código referirse al anexo

    A.

    Figura 40. Dispositivo diseñado en lenguaje de descripción hardware VHDL FDD1.

    8.2 REGISTROS

    Un registro es un grupo de flip-flops, cada uno de los flip-flops es capaz de

    almacenar un bit de información. Un registro de n bits tiene un grupo de n flip-

    flops y puede almacenar cualquier información binaria de n bits.. A continuación

    veremos los registros que se implementaron el diseño del FLEX51.

    8.2.1 Reg8b. Este dispositivo fue diseñado en VHDL y es el registro más básico

    del FLEX51, además es el punto de partida de varios otros dispositivos

    (std_reg8b22, STD_REG8B1 y std_reg8b2) (ver figura 41). Consta una entrada de

    reloj, una de carga L de 1 bit, una de clareo C de 1 bit y 1 de datos D de 8 bits.

    Tiene una salida Q de 8 bits. Este dispositivo es usado en la ALU, la AGU, BANREG

    y es justamente el registro usado para hacer de registro IR (más adelante se

  • 83

    mostrará que función especifica cumple en dichas unidades). Para ver su código

    referirse al anexo A.

    Figura 41. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8B.

    8.2.2 Std_regb8b2. El dispositivo STD_REG8B2 se diseño en el entorno gráfico de

    ALTERA y es usado dentro del dispositivo BANREG y la Unidad AGU (en la sección

    10 se presentará su funcionamiento). Posee cuatro entradas de 1 bit (una entrada

    de carga de dato SLOAD, una entrada de clareo SCLR, una entrada de reloj CLK y

    una entrada de habilitación de salida OC), una entrada de D de 8 bits y una salida

    Q de 8 bits. La entrada OC habilita el dispositivo tri-estados que se tiene en la

    salida dejando así colocar datos en el bus. En su interior consta de registro REG8B

    y un dispositivo TRI. Ver figura 42 y 43.

    Figura 42. Dispositivo STD_REG8B2.

  • 84

    Figura 43. Diagrama esquemático del STD_REG8B2.

    Este dispositivo es un arreglo del registro REG8B, puesto que se adicionó un

    dispositivo TRI, para hacer que la salida sea tri-estados y puede ser conectada al

    bus.

    8.2.3 Std_reg8b22. El dispositivo STD_REG8B22 se diseño en el entorno gráfico de

    ALTERA y es usado dentro de la Unidad ALU, Unidad de interrupciones y Unidad

    de temporizadores (más adelante se mostrará que función especifica cumple en

    dichas unidades). Posee cuatro entradas de 1 bit (una entrada de carga de dato

    SLOAD, una entrada de clareo SCLR, una entrada de reloj CLK y una entrada de

    habilitación de salida OC), una entrada de D de 8 bits y dos salidas Q y Q1 de 8

    bits. La entrada OC habilita el dispositivo tri-estados que se tiene en la salida Q

    dejando así colocar datos en el bus de Datos, la salida Q1 no posee dispositivos

    tri-estados. En su interior consta de un registro REG8B y un dispositivo TRI. Ver

    figura 44 y 45.

  • 85

    Figura 44. Dispositivo STD_REG8B22.

    Figura 45. Diagrama esquemático del STD_REG8B22.

    La función de este dispositivo es proveer una salida tri-estados para ser

    conectada al bus de datos y una salida normal para ser utiliza en distintas

    operaciones donde se necesite tener el dato sin requerir del bus.

    8.2.4 Std_reg8b1. El dispositivo STD_REG8B1 se diseño en el entorno gráfico de

    ALTERA y es usado dentro de la Unidad AGU. Posee cinco entradas de 1 bit (una

    entrada de carga de dato SLOAD, una entrada de clareo SCLR, una entrada de reloj

    CLK, dos entradas de habilitación de salida OC y ETL), una entrada D de 8 bits y

    dos salidas Q y TMPLDATO de 8 bits. La entrada OC habilita el dispositivo tri-

  • 86

    estados (TRI) que se tiene en la salida Q dejando así colocar datos en el bus de

    direcciones en la parte baja y la entrada ETL habilita el dispositivo tri-estados

    (TRI) en la salida TMPLDATO dejando así colocar datos en el bus de datos, este

    registro es justamente el registro temporal bajo de la AGU. En su interior consta

    de registro REG8B y dos dispositivos TRI. Ver figura 46 y 47.

    Figura 46. Dispositivo STD_REG8B1.

    Figura 47. Diagrama esquemático del STD_REG8B1.

  • 87

    Este dispositivo es un arreglo del registro REG8B, puesto que se adicionaron dos

    dispositivos TRI, para hacer que las salidas sean tri-estados y puede ser

    conectada al bus de direcciones y de datos.

    8.2.5 Reg8bpsw. El dispositivo REG8BPSW se diseño en VHDL y forma parte de un

    dispositivo llamado PSW, que veremos en el capitulo 10 con detenimiento. Cuenta

    con once entradas de 1 bit (una entrada de clareo CL, una entrada de reloj CLK,

    una entrada de carga de datos L, una entrada de paridad P, acarreo C, acarreo

    intermedio AC, desbordamiento OV y sus respectivas entradas de carga LP, LC,

    LAC, LOV), dos entradas D y R de 8 bits (D es la entrada de datos y R una entrada

    de retroalimentación). Tiene una salida Q de 8 bits. Ver figura 48. Para ver su

    código referirse al anexo A.

    Figura 48. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8BPSW.

    8.2.6 Regtcon. Este dispositivo se diseño en VHDL y forma parte de un dispositivo

    llamado TCON, que veremos con detenimiento en el capitulo 10. Tiene siete

  • 88

    entradas de 1 bit (una entrada de carga L, una entrada de clareo C, una entrada de

    reloj CLK, una entrada de la bandera de interrupción del temporizador 0, una

    entrada de la bandera de interrupción del temporizador 1, una entrada de la

    bandera de interrupción externa 0 y una entrada de la bandera de interrupción

    externa 1), dos entradas D y R de 8 bits (D es la entra de datos y R la entrada de

    retroalimentación). Tiene una salida Q de 8 bits. Ver figura 49. Para ver su código

    referirse al anexo A.

    Figura 49 Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REGTCON.

    8.2.7 Regscon. Este dispositivo se diseño en VHDL y forma parte de un dispositivo

    llamado SCON, que veremos con detenimiento en el capitulo 10. Tiene cinco

    entradas de 1 bit (una entrada de carga L, una entrada de clareo C, una entrada de

    reloj CLK, una entrada de la bandera de interrupción de transmisión serial TI y una

    entrada de la bandera de interrupción de recepción serial RI), dos entradas D y R

    de 8 bits (D es la entra de datos y R la entrada de retroalimentación). Tiene una

    salida Q de 8 bits. Ver figura 50. Para ver su código referirse al anexo A.

  • 89

    Figura 50. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REGSCON.

    8.2.8 Reg8btrans. Este dispositivo se diseño en VHDL y forma parte de un

    dispositivo llamado TRASMISION, que veremos más adelante. Tiene tres entradas

    de 1 bit (una entrada de carga L, una entrada de corrimiento E, una entrada de

    reloj CLK, una entradas de datos D 8 bits. Tiene una salida OU de 1 bit para la

    transmisión serial (ver figura 51). La carga de los datos es asíncrona y el

    desplazamiento es sincrono, esto se debe a que no utiliza el reloj global, sino una

    señal que proviene del dispositivo generador de rata de baudio BAUDRATE que

    posee una frecuencia diferente. Para ver su código referirse al anexo A.

    Figura 51. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8BTRANS.

  • 90

    8.2.9 Reg8brepc. Este dispositivo se diseño en VHDL totalmente sincrono y forma

    parte de un dispositivo llamado RECEPCION, que veremos más adelante. Tiene

    tres entradas de 1 bit (una entrada de datos seriales INT, una entrada de

    corrimiento E, una entrada de reloj CLK. Tiene una salida Q de 10 bits para la

    transmisión serial (ver figura 52). No utiliza el reloj global, sino la señal que

    proviene del dispositivo PREESCALER, la señal de corrimiento la da la salida del

    BAUDRATE. Para ver su código referirse al anexo A.

    Figura 52. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG8BREPC.

    8.3 CONTADORES

    Los contadores, son máquinas de estado sincronas. Poseen un total de n2

    estados. Donde n es el número de bits en su salida y el número de flip-flops de

    contador. El contador recorrerá cada de sus estados en cada pulso de reloj.

    8.3.1 Cont_reg8b. Este dispositivo fue desarrollado en VHDL, es un contador que

    lo encontramos en los dispositivos PC y DPTR. Consta de una entrada de datos A

    de 8 bits, una entrada de carga de datos L, una entrada de clareo C, una entrada

    de habilitación de conteo E y una entrada de reloj CLK. Tiene una salida de datos

  • 91

    Q de 8 bits y una salida de desbordamiento M. Ver figura 53. Para ver su código

    referirse al anexo A.

    Figura 53. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONT_REG8B.

    Figura 54. Sumario de compilación del dispositivo CONT_REG8B.

    La frecuencia máxima de este dispositivo compilado en un EPF10K70RC240-4 es

    125MHz, con un retardo máximo de 23.4ns en la salida M.

    8.3.2 Reg_sp. Este dispositivo fue desarrollado en VHDL, es el registro SP de la

    zona de registros de funciones especiales; pero, por su comportamiento dentro

    del FLEX51 se catalogó como contador; lo encontramos dentro de la unidad AGU.

    Consta de una entrada de datos A de 8 bits, una entrada de carga de datos L, una

    entrada de clareo C, una entrada de habilitación de conteo E, una entrada de

  • 92

    selección de operación S (incremento con S =0 y decremento con S =1) y una

    entrada de reloj CLK. Tiene una salida de datos Q de 8 bits. Ver figura 55. Para ver

    su código referirse al anexo A.

    Figura 55. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    REG_SP.

    Figura 56. Sumario de compilación de dispositivo REG_SP.

    8.3.3 Pc0. Este dispositivo contador fue diseñado con ayuda la función

    MegaWizard Plug-In Manager de ALTERA. PC0 es el contador que hace las veces

    de registro TL0 y TL1 de la zona de registros de funciones especiales y lo

    encontramos en la Unidad de temporizadores. Consta de cuatro entradas de 1 bit

    (una entrada de clareo SCLR, una entrada de carga SLOAD, una entrada de reloj

    CLK y una entrada de habilitador de conteo cnt_en) y una entrada de datos de 8

  • 93

    bits. Tiene una salida desbordamiento cout de 1 bit y una de datos de 8 bits (ver

    figura 57).

    Figura 57. Dispositivo diseñado con la función MegaWizard Plug-In Manager PC0.

    8.3.4 Pc1. Este dispositivo contador fue diseñado con ayuda la función

    MegaWizard Plug-In Manager de ALTERA. PC1 es el contador que hace las veces

    de registro TH0 y TH1 de la zona de registros de funciones especiales y lo

    encontramos en la Unidad de temporizadores. Consta de cinco entradas de 1 bit

    (una entrada de clareo SCLR, una entrada de carga SLOAD, una entrada de reloj

    CLK, una entrada de acarreo Cin y una entrada de habilitador de conteo cnt_en) y

    una entrada de datos de 8 bits. Tiene una salida desbordamiento cout de 1 bit y

    una de datos de 8 bits (ver figura 58).

  • 94

    Figura 58. Dispositivo diseñado con la función MegaWizard Plug-In Manager PC1.

    8.3.5 Inc_dec. Este contador se encuentra dentro del dispositivo de incremento y

    decremento de la unidad ALU. Fue desarrollado en lenguaje VHDL. Tiene una

    entrada de datos A de 8 bits, una entrada de selección de operación S y una salida

    Q de 8 bits (ver figura 59). Para ver el sumario de compilación ver figura 60 y para

    ver su código referirse al anexo A.

    Figura 59. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    INC_DEC.

    Figura 60. Sumario de compilación de dispositivo INC_DEC.

  • 95

    Cuenta con un retardo máximo de 25.6ns.

    8.3.6 Contbaudrate. Este contador se encuentra dentro del dispositivo

    TRANSMISION de la unidad de transmisión serial. Fue desarrollado en lenguaje

    VHDL debido a que necesitaba cumplir unas condiciones que uno parametrizado

    no podía cumplir. Tiene una entrada de datos A de 1 bit, una entrada de

    habilitación de conteo E, una entrada de clareo C asíncrono, una entrada de reloj

    CLK y una salida M de 1 bits (ver figura 61). Este contador tiene un valor

    predeterminado “1011” en su código para que cuando llegue a él se reinicie el

    conteo y se ponga en alto la salida de M. Para ver el sumario de compilación ver

    figura 62 y para ver su código referirse al anexo A.

    Figura 61. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONTBAUDRATE.

    Figura 62. Sumario de compilación de dispositivo CONTBAUDRATE.

  • 96

    La frecuencia máxima de este dispositivo compilado en un EPF10K70RC240-4 es

    106.38MHz, con un retardo máximo de 19.3ns.

    8.3.7 Contbaudrate1. Este contador se encuentra dentro del dispositivo

    RECEPCION de la unidad de transmisión serial. Fue desarrollado en lenguaje VHDL

    debido a que necesitaba cumplir unas condiciones que uno parametrizado no

    podía cumplir. Tiene una entrada de datos A de 1 bit, una entrada de habilitación

    de conteo E, una entrada de clareo C asíncrono, una entrada de reloj CLK y una

    salida M de 1 bits (ver figura 63). Este contador tiene un valor predeterminado

    “1010” en su código para que cuando llegue a él se reinicie el conteo y se ponga

    en alto la salida de M. Para ver el sumario de compilación ver figura 64 y para ver

    su código referirse al anexo A.

    Figura 63. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONTBAUDRATE1.

    Figura 64. Sumario de compilación de dispositivo CONTBAUDRATE1.

  • 97

    La frecuencia máxima de este dispositivo compilado en un EPF10K70RC240-4 es

    106.38MHz, con un retardo máximo de 19.3ns.

    8.3.8 CONT_REG6B. Este dispositivo fue desarrollado en VHDL, es un contador

    que lo encontramos en los dispositivos PC y DPTR. Consta de una entrada de

    clareo C, una entrada de reloj CLK y una salida de datos Q de 6 bits (ver figura

    65). Para ver su código referirse al anexo A. El CONT_REG6B se utiliza en el

    dispositivo PREESCALER.

    Figura 65. Dispositivo diseñado en lenguaje de descripción hardware VHDL

    CONT_REG6B.

    Figura 66. Sumario de compilación de dispositivo CONT_REG6B.

    La frecuencia máxima de este dispositivo compilado en un EPF10K70RC240-4 es

    106.38MHz, con un retardo máximo de 17.4ns.

  • 98

    9. MEMORIA

    La unidad de memoria es un dispositivo al cual se transfiere información binaria

    para su almacenamiento y de la cual se puede obtener información cuando sea

    necesaria para ser procesarla. La unidad de memoria almacena información en

    grupos de bits llamados palabras. Existen dos tipos de memorias que se

    comunican directamente con la unidad central de procesamiento: La memoria de

    acceso aleatorio (RAM) y la memoria de solo lectura (ROM).

    Cada dispositivo FLEX10K contiene un arreglo embebido para implementar

    memoria y funciones lógicas especializadas. Los arreglos embebidos consisten en

    una serie de EABs (bloque flexible de RAM). Cuando implementamos funciones de

    memoria, cada EAB provee 2048 bits, con lo cual puede ser usado para crear

    memoria RAM, memoria ROM y RAM de puerto dual, o funciones tipo FIFO (el

    primero en entrar es el primero en salir).

    Cuando es usado como RAM, cada EAB puede ser configurada en alguno de estos

    tamaños: 256x8, 512x4, 1024x2, o 2048x1.

  • 99

    9.1 MEMORIA DE ACCESO ALEATORIO (RAM)

    La memoria de acceso aleatorio o RAM puede aceptar nueva información para ser

    almacenada y quedar disponible para utilizarse después. La memoria puede

    realizar operaciones de lectura y escritura.

    9.1.1 Diseño de la memoria ram del Flex51. La memoria RAM del FLEX51 se

    diseño con ayuda de la función MegaWizard Plug-In Manager de ALTERA, tiene

    una entrada de datos de 8 bits, una entrada de escritura We, una entrada de

    direcciones de 8 bits y una entrada de reloj inclock. Posee una salida Q de 8 bits

    (ver figura 67). Se desarrollo este dispositivo con la función de ALTERA de