diseÑo e implementacion de un microcontrolador 8051 … · 2018. 4. 18. · diseÑo e...
TRANSCRIPT
-
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