Publicado el 27 de Octubre del 2019
2.354 visualizaciones desde el 27 de Octubre del 2019
4,5 MB
354 paginas
DISEÑO DE
MICROPROCESADORES
Jesús Savage
Facultad de Ingeniería.
Universidad Nacional Autónoma de México, UNAM.
Gabriel Vázquez
Facultad de Ingeniería.
Universidad Nacional Autónoma de México, UNAM.
PREFACIO
Existe una gran variedad de textos que tratan temas referentes al diseño de
microprocesadores. Desafortunadamente, para las personas de habla española, la mayoría
de esos textos están en otros idiomas, o bien, las traducciones que se hacen de esos textos
suelen modificar el significado o la idea que el autor deseaba expresar. Teniendo en cuenta
estos puntos, intentamos escribir este libro lo más claro y sencillo posible, y además, en
español. No obstante, en varias ocasiones se tuvieron que recurrir a términos en inglés
debido a que no se encontró una traducción apropiada al español, o porque la traducción
restaba significado al concepto.
La siguiente obra presenta las bases para el diseño de un microprocesador,
particularmente, un ‘clón’ del microprocesador M68HC11 de Motorola®. Adicionalmente,
gracias al desarrollo en los últimos años de los dispositivos lógicos programables y de los
lenguajes de descripción de hardware de alto nivel, se logró vincular la teoría con la
práctica, de manera que el diseño del microprocesador propuesto es implantado en un
PLD, empleando uno de los lenguajes de descripción de hardware más utilizados en la
actualidad por los países líderes en el área: Verilog HDL.
Estas notas han sido utilizadas exitosamente por los estudiantes de las carreras de
Ingeniería en Computación y Telemática del Instituto Tecnológico Autónomo de México,
ITAM; por los estudiantes de la carrera de Ingeniería en Sistemas Electrónicos del Instituto
Tecnológico de Estudios Superiores de Monterrey, ITESM; y por los estudiantes de la
carrera de Ingeniería en Computación y de postgrado en Computación de la Universidad
Nacional Autónoma de México, UNAM.
El antecedente para poder utilizar estas notas es un curso básico de diseño digital en
donde se den a conocer las bases de la lógica booleana, la lógica secuencial y del diseño de
dispositivos digitales básicos.
Finalmente, los autores desean agradecer a todas aquellas personas que colaboraron en
la escritura y corrección del manuscrito, así como a aquellos que nos apoyaron en la
recopilación de información para esta obra. También queremos agradecer a los estudiantes
del ITAM, del ITESM y de la UNAM por sus correcciones y sugerencias durante el
desarrollo de estas notas.
Los Autores.
CONTENIDO
INTRODUCCIÓN
1.1 ESTRUCTURA BÁSICA DE UNA COMPUTADORA
1.2 TIPOS DE COMPUTADORAS
1.2.1 Computadoras secuenciales
1.2.2 Computadoras paralelas
1.3 SEGMENTACIÓN ENCAUZADA
1.4 EL CONTROLADOR DE LA COMPUTADORA
1.5 COMPUTADORAS PARALELAS
1.5.1 Arquitecturas SIMD
1.5.2 Arquitecturas MIMD
MÁQUINAS DE ESTADOS Y SU CONSTRUCCIÓN
2.1 MÁQUINAS DE ESTADOS
2.1.1 El algoritmo de la máquina de estados
2.1.2 Estados y reloj
2.2 NOTACIÓN DE LA CARTA ASM
2.2.1 Representación de estados
2.2.2 Representación de decisiones
2.2.3 Representación de salidas
2.3 EJEMPLOS DE CARTAS ASM
2.4 CONSTRUCCIÓN DE MÁQUINAS DE ESTADOS USANDO LOS
Latch tipo D
MÉTODOS TRADICIONALES
2.4.1 Circuito secuencial
2.4.2 Unidad básica de almacenamiento
2.4.3
2.4.4 Flip-flop tipo D
2.4.5 Procedimiento para el diseño de circuitos secuenciales
2.4.6 Ejemplo
2.5 DISEÑO DIGITAL USANDO DISPOSITIVOS LÓGICOS
PROGRAMABLES
1
2
2
2
3
4
5
6
6
7
11
12
12
12
13
13
13
14
14
26
26
26
27
28
29
30
33
CAPÍTULO
1
CAPÍTULO
2
CONSTRUCCIÓN DE MÁQUINAS DE ESTADOS
USANDO MEMORIAS
3.1 DIRECCIONAMIENTO POR TRAYECTORIA
3.2 DIRECCIONAMIENTO ENTRADA-ESTADO
3.3 DIRECCIONAMIENTO IMPLÍCITO
CAPÍTULO
3
CAPÍTULO
4
CONSTRUCCIÓN DE MÁQUINAS DE ESTADOS
USANDO SECUENCIADORES
4.1 EL SECUENCIADOR BÁSICO
4.2 INSTRUCCIONES PARA EL SECUENCIADOR
4.2.1 Continúa
4.2.2 Salto condicional
4.2.3 Salto de transformación
4.2.4 Salto condicional usando la dirección de las interrupciones
4.3 SECUENCIADORES Y MEMORIAS
4.4 IMPLANTACIÓN DE CARTAS ASM USANDO SECUENCIADORES
CAPÍTULO
5
COMPONENTES BÁSICOS DE UN PROCESADOR
5.1 ESTRUCTURA BÁSICA DE UNA COMPUTADORA
5.2 UNIDAD DE CONTROL DE LA COMPUTADORA
5.3 UNIDAD DE PROCESOS ARITMÉTICOS
5.4 REGISTROS INTERNOS
5.4.1 Registros acumuladores
5.4.2 El algoritmo de multiplicación
5.4.3 Registros contadores de 16 bits
5.5 UNIDAD DE CONTROL DE PROGRAMA
5.6 REGISTRO DE ESTADOS O BANDERAS
5.7 UNIDAD DE CONTROL DE INTERRUPCIONES
40
41
43
47
53
54
55
55
56
56
57
58
59
64
65
66
67
71
71
72
76
77
78
80
CAPÍTULO
6
DISEÑO DE UN MICROPROCESADOR DE 8 BITS
6.1 ARQUITECTURA DEL MICROPROCESADOR 68HC11
6.2 TIPOS DE INSTRUCCIONES
6.2.1 Acceso inmediato
6.2.2 Acceso extendido
6.2.3 Acceso directo
6.2.4 Acceso indexado
6.2.5 Acceso relativo
6.2.6 Acceso inherente
6.3 MICROPROGRAMACIÓN
Instrucción INX (acceso inherente)
6.3.1
Instrucción INY (acceso inherente)
6.3.2
Instrucción XGDX (acceso inherente)
6.3.3
Instrucción LDAB (acceso inmediato)
6.3.4
Instrucción LDAA (acceso inmediato)
6.3.5
Instrucción SUBA (acceso extendido)
6.3.6
Instrucción BRA (acceso relativo)
6.3.7
Instrucción BEQ (acceso relativo)
6.3.8
6.3.9
Instrucción JSR (acceso extendido)
6.3.10 Instrucción RTS (acceso inherente)
6.3.11 Atención a interrupciones
6.3.12 Instrucción RTI (regreso de interrupción)
CAPÍTULO
7
SEGMENTACIÓN ENCAUZADA (PIPELINE)
83
84
87
87
87
88
88
88
89
89
90
102
105
106
107
108
110
114
116
118
120
123
128
129
130
131
134
138
141
143
144
144
151
158
164
171
178
185
186
7.1 INTRODUCCIÓN
7.2 LA ARQUITECTURA SEGMENTADA DEL 68HC11
7.2.1 Etapa 1 - Lectura de la instrucción
7.2.2 Etapa 2 - Decodificación de la instrucción /
Cálculo de la dirección efectiva / Lectura de operandos
7.2.3 Etapa 3 - Ejecución / Cálculo de banderas y saltos
7.2.4 Etapa 4 - Post-Escritura
7.2.5 Representación gráfica de la segmentación encauzada
7.3 CONJUNTO DE INSTRUCCIONES
Instrucción LDAA (acceso inmediato)
Instrucción ABA (acceso inherente)
Instrucción ANDB (acceso extendido)
Instrucción ASL (acceso indexado)
Instrucción STAA (acceso extendido)
Instrucción BRA (acceso relativo)
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7 Resumen de instrucciones
7.3.8 Ejecución de múltiples instrucciones
APÉNDICE
A
7.4 RIESGOS POR DEPENDENCIAS DE DATOS
7.5 CONTROL DE RIESGOS POR DEPENDENCIAS DE DATOS
7.5.1 Control de riesgos por dependencias de datos
7.5.2 Control de riesgos por dependencias de datos
por medio de software
por medio de detenciones
7.5.3 Control de riesgos por dependencias de datos
por medio de anticipaciones
7.6 RIESGOS POR SALTOS
7.6.1 Detenciones
7.6.2 Suponer que el salto no es realizado
7.7 INTERRUPCIONES
USO DE VERILOG HDL EN EL ENTORNO
MAX+PLUS II
194
196
197
198
205
215
219
220
225
235
236
238
244
247
247
248
248
248
249
249
252
254
255
260
260
260
261
262
262
263
264
264
266
266
267
A.1 INICIANDO MAX+PLUS II
A.2 USANDO EL EDITOR DE TEXTO DE MAX+PLUS II
A.3 USANDO EL EDITOR GRÁFICO DE MAX+PLUS II
A.4 EL LENGUAJE DE DESCRIPCIÓN DE HARDWARE VERILOG
A.5 LÓGICA COMBINACIONAL EN VERILOG HDL
A.4.1 Módulos
A.4.2 Puertos
A.4.3 Cometarios
A.4.4 Bloques procedurales
A.4.5 Eventos
A.4.6 Sentencias de control de programa
A.4.7 Tipos de datos
A.4.8 Formato de números enteros
A.4.9 Tipos de operadores
A.5.1 Asignaciones continuas
A.5.2 Construcciones always
A.5.3 Construcción de multiplexores
A.6 LÓGICA SECUENCIAL EN VERILOG HDL
A.6.1 Construcción de registros
A.6.2 Construcción de contadores
A.6.3 Construcción de latches
A.6.4 Construcción de máquinas de estados
A.7 PROYECTOS JERÁRQUICOS
A.7.1 Cómo usar funciones lógicas de MAX+PLUS II en Verilog
A.7.2 Cómo usar instancias de compuertas lógicas en Verilog
A.7.3 Cómo usar funciones de usuario en Veri
Comentarios de: Diseño de microprocesadores (0)
No hay comentarios