Logo Studenta
¡Este material tiene más páginas!

Vista previa del material en texto

M. Morris Mano
Charles R. Kime
3ª edición
www.librosite.net/mano
Fundamentos de diseño lógico
y de computadoras
El objeto de este texto es proporcionar una comprensión de los
fundamentos del diseño lógico y de los procesadores para una amplia
audiencia de lectores. El proceso de diseño se ha automatizado utilizando
lenguajes de descripción hardware y síntesis lógica, y la búsqueda de alta
velocidad y de bajo consumo han cambiado los fundamentos del diseño de
los procesadores.
El contenido de esta tercera edición continúa su enfoque en los
fundamentos mientras que al mismo tiempo refleja la importancia relativa
de los conceptos básicos como la tecnología y la evolución del proceso de
diseño. Por ejemplo, en esta edición, las secciones sobre circuitos NAND
y NOT aparecen en el contexto más amplio de la materialización
tecnológica.
El texto continúa proporcionando la opción a los instructores de cubrir
de forma básica tanto VHDL como Verilog®.
En resumen, esta edición de los Fundamentos de diseño lógico y de
computadoras ofrece un fuerte énfasis en los fundamentos que subyacen
al diseño lógico actual utilizando lenguajes de descripción hardware,
síntesis y verificación así como los cambios en el énfasis en el uso de los
fundamentos del diseño de procesadores.
www.pearsoneducacion.com
Incluye:
LibroSite es una página web asociada
al libro, con una gran variedad de
recursos y material adicional tanto
para los profesores como para
estudiantes. Apoyos a la docencia,
ejercicios de autocontrol, enlaces
relacionados, material de
investigación, etc., hacen de
LibroSite el complemento
académico perfecto para este libro.
IIIII
IIII
IIII
III
III
III
III
III
III
III
III
III
III
III
IIII
IIII
IIIII
IIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIw
w
w
.librosite.net/mano
Fu
nd
am
en
to
s 
de
 d
is
eñ
o 
ló
gi
co
y 
de
 c
om
pu
ta
do
ra
s
M
or
ri
s
K
im
e
3ª ed.
Cubierta Morris Mano.qxd 22/3/10 13:32 Página 1
Fundamentos de diseño lógico
y de computadoras
Tercera Edición
Fundamentos de diseño lógico
y de computadoras
Tercera Edición
M. MORRIS MANO
California State University, Los Ángeles
CHARLES R. KIME
University of Wisconsin, Madison
Traducción
José Antonio Herrera Camacho
Profesor Titular de Escuela Universitaria
Universidad Politécnica de Madrid
Martina Eckert
Dra. Ingeniería en Telecomunicación
Universidad Politécnica de Madrid
Beatriz Valcuende Lozano
Ingeniera Técnica en Telefonía y Transmisión de Datos
Universidad Politécnica de Madrid
Revisión técnica
José Antonio Herrera Camacho
Profesor Titular de Escuela Universitaria
Universidad Politécnica de Madrid
Madrid México Santafé de Bogotá Buenos Aires Caracas Lima Montevideo
San Juan San José Santiago São Paulo White Plains
Datos de catalogaciÜn bibliogrØfica
FUNDAMENTOS DE DISEÑO LÓGICO
Y DE COMPUTADORAS
Mano, M. Morris; Kime, Charles
PEARSON EDUCACIÓN, S.A., Madrid, 2005
ISBN: 978-84-832-2688-9
Materia: Electrónica 621,3
Formato 195 # 250 mm Páginas: 648
Todos los derechos reservados.
Queda prohibida, salvo excepción prevista en la Ley, cualquier forma de reproducción, distribución,
comunicación pública y transformación de esta obra sin contar con autorización de los titulares
de propiedad intelectual. La infracción de los derechos mencionados puede ser constitutiva
de delito contra la propiedad intelectual (arts. 270 y sgts. Código Penal).
DERECHOS RESERVADOS
5 2005 por PEARSON EDUCACIÓN, S.A.
Ribera del Loira, 28
28042 Madrid (España)
FUNDAMENTOS DE DISEÑO LÓGICO Y DE COMPUTADORES
Mano, M. Morris; Kime, Charles
ISBN: 84-205-4399-3
Depósito legal: M.
PEARSON PRENTICE HALL es un sello editorial autorizado de PEARSON EDUCACIÓN, S.A.
Authorized translation from the English language edition, entitled LOGIC AND COMPUTER DESIGN
FUNDAMENTALS, 3rd Edition by Mano, M. Morris; Kime, Charkes, published by Pearson Education, Inc,
publishing as Prentice Hall, Copyright 5 2004.
ISBN 0-13-140539-X
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission form Pearson Education, Inc.
Equipo editorial:
Editor: Miguel Martín-Romo
Técnico editorial: Marta Caicoya
Equipo de producción:
Director: José Antonio Clares
Técnico: Diego Marín
Diseño de cubierta: Equipo de diseño de Pearson Educación, S.A.
Composición: COPIBOOK, S.L.
Impreso por:
IMPRESO EN ESPAÑA - PRINTED IN SPAIN
Este libro ha sido impreso con papel y tintas ecológicos
CONTENIDO
Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
� Capítulo 1 3
ORDENADORES DIGITALES E INFORMACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1-1 Computadoras digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Representación de la información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Estructura de una computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Más en relación con la computadora genérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1-2 Sistemas numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Números binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Números octales y hexadecimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Rangos de los números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1-3 Operaciones aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Conversión de decimal a otras bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1-4 Códigos decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Suma en BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Bit de paridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1-5 Códigos Gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1-6 Códigos alfanuméricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1-7 Sumario del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
� Capítulo 2 27
CIRCUITOS LÓGICOS COMBINACIONALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2-1 Lógica binaria y puertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Lógica binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Puertas lógicas . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2-2 Álgebra de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Identidades básicas del Álgebra de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Manipulación algebraica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
El complemento de una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2-3 Formas canónicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Minitérminos y maxitérminos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Suma de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Producto de sumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2-4 Optimización de circuitos de dos niveles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Criterios de coste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Mapa de dos variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Mapa de tres variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Mapa de cuatro variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2-5 Manipulación del mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Implicantes primos esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Implicantes primos no esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Optimización de producto de sumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Condiciones de indiferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2-6 Optimización de circuitos multinivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2-7 Otros tipos de puertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2-8 Operador y puertas OR exclusiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Función impar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2-9 Salidas en altas impedancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2-10 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
� Capítulo 3 81
DISEÑO LÓGICO COMBINACIONAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3-1 Conceptos de diseño y automatización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Diseño jerárquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Diseño top-down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Diseño asistido por computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Lenguaje de descripción hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Síntesis lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3-2 El espacio de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Propiedades de las puertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Niveles de integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Tecnologías de circuitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Parámetros tecnológicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Lógica positiva y negativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Compromisos de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3-3 Ciclo de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3-4 Mapeado tecnológico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Especificaciones de las células . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Librerías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Técnicas de mapeado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
vi � CONTENIDO
3-5 Verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Análisis lógico manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
La simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3-6 Tecnologías de implementación programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Memorias de sólo lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Array lógico programable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Arrays de lógica programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3-7 Sumario del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
� Capítulo 4 133
FUNCIONESY CIRCUITOS COMBINACIONALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4-1 Circuitos combinacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4-2 Funciones lógicas básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Asignación, transferencia y complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Funciones de varios bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Habilitación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4-3 Decodificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Extensión de decodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Decodificadores con señal de habilitación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4-4 Codificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Codificador con prioridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Expansión de codificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4-5 Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Expansión de multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Implementaciones alternativas de selectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4-6 Implementación de funciones combinacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Empleando decodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Empleando multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Empleando memorias de sólo lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Usando arrays lógicos programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Usando arrays de lógica programable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Empleando tablas de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4-7 HDL representación para circuitos combinacionales-VHDL . . . . . . . . . . . . . . . . . . . . . . . 165
4-8 Representación HDL de circuitos combinacionales-Verilog . . . . . . . . . . . . . . . . . . . . . . . 172
4-9 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
� Capítulo 5 189
FUNCIONES Y CIRCUITOS ARITMÉTICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5-1 Circuitos combinacionales iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5-2 Sumadores binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Semi-sumador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
CONTENIDO � vii
Sumador completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Sumador binario con acarreo serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Sumador con acarreo anticipado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5-3 Resta binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Complementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Resta con complementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
5-4 Sumador-restador binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Números binarios con signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Suma y resta binaria con signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Overflow o desbordamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
5-5 Multiplicación binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
5-6 Otras funciones aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Contracción o reducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Incremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Decremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Multiplicación por constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
División por constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Relleno a ceros y extensión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5-7 Representación HDL-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Descripción de comportamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5-8 Representaiones HDL-Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Descripción de comportamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
5-9 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . 221
� Capítulo 6 227
CIRCUITOS SECUENCIALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
6-1 Definición de circuito secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
6-2 Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Latches RS y R1 S1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Latch D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
6-3 Flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Flip-flop maestro-esclavo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Flip-flop disparados por flanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Símbolos gráficos estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Entradas asíncronas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Tiempos de los flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6-4 Análisis de circuitos secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Ecuaciones de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Tabla de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Diagrama de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Temporización del circuito secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
6-5 Diseño de circuitos secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Procedimiento del diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Localización de los diagramas de estados y las tablas de estados . . . . . . . . . . . . . . . . . 253
viii � CONTENIDO
Asignación de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Diseñando con flip-flops D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Diseñando con estados no usados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
6-6 Otros tipos de flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Flip-flops JK y T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
6-7 Representación HDL para circuitos secuenciales-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . 267
6-8 Representación de HDL para circuitos secuenciales-Verilog . . . . . . . . . . . . . . . . . . . . . . 275
6-9 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
� Capítulo 7 291
REGISTROS Y TRANSFERENCIA DE REGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
7-1 Registros y habilitación de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Registro con carga en paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
7-2 Transferencia de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
7-3 Operaciones de transferencia de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
7-4 Nota para usuarios de VHDL y Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
7-5 Microoperaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Microoperaciones aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Microoperaciones lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Microoperaciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
7-6 Microoperaciones en un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Transferencias basadas en multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Registros de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Contador asíncrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Contadores binarios síncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Otros contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
7-7 Diseño de células básicas de un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
7-8 Transferencia de múltiples registros basada en buses y multiplexores . . . . . . . . . . . . . 325
Bus triestado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
7-9 Transferencia serie y microoperaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Suma en serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
7-10 Modelado en HDL de registros de desplazamiento y contadores-VHDL . . . . . . . . . . . 331
7-11 Modelado en HDL de registros de desplazamiento y contadores-Verilog . . . . . . . . . . 333
7-12 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
� Capítulo 8 343
SECUENCIAMIENTO Y CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
8-1 La unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
8-2 Algoritmo de máquinas de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Diagrama ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
8-3 Ejemplos de diagramas ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
CONTENIDO � ix
Multiplicador binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
8-4 Control cableado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Registro de secuencia y descodificador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Un flip-flop por estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
8-5 Representación HDL del multiplicador binario-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
8-6 Representación HDL del multiplicador binario-Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
8-7 Control microprogramado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
8-8 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
� Capítulo 9 377
MEMORIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
9-1 Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
9-2 Memoria de acceso aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Operaciones de lectura y escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Temporización de las formas de onda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Características de las memorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
9-3 Memorias integradas SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Selección combinada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
9-4 Array de circuitos integrados de memoria SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
9-5 Circuitos integrados de memoria DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Celda DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Tira de un bit de memoria DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
9-6 Tipos de memoria DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Memoria síncrona DRAM (SDRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Memoria SDRAM de doble tasa de transferencia de datos (DDR SDRAM) . . . . . . . 402
Memoria RAMBUS555 DRAM (RDRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
9-7 Arrays de circuitos integrados de memorias dinámicas RAM . . . . . . . . . . . . . . . . . . . . . 404
9-8 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
� Capítulo 10 407
FUNDAMENTOS DEL DISEÑO DE PROCESADORES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
10-1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
10-2 Rutas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
10-3 Unidad aritmético-lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Circuito aritmético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Circuito lógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Unidad lógico-aritmética . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
10-4 El desplazador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Barrel Shifter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
10-5 Representación de rutas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
10-6 La palabra de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
10-7 Arquitectura de un sencillo procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
x � CONTENIDO
Arquitectura de conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Recursos de almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Formatos de la instrucción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Especificación de las instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
10-8 Control cableado de un solo ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Decodificador de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Ejemplo de instrucciones y programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Problemas del procesador de un solo ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
10-9 Control cableado multiciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Diseño del control secuencial . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
10-10 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
� Capítulo 11 459
ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
11-1 Conceptos de la arquitectura de procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Ciclo de operación básico de un procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Conjunto de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
11-2 Direccionamiento de los operandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Instrucciones de tres direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Instrucciones de dos direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Instrucciones de una dirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Instrucciones con cero direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Arquitecturas de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
11-3 Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Modo implícito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Modo inmediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Modos registro y registro indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Modo de direccionamiento directo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Modo de direccionamiento indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Modo de direccionamiento relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Modo de direccionamiento indexado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Resumen de modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
11-4 Arquitecturas de conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
11-5 Instrucciones de transferencia de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Instrucciones de manejo de pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
E/S independiente versus E/S ubicada en memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
11-6 Instrucciones de manipulación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Instrucciones aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Instrucciones lógicas y de manipulación de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Instrucciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
11-7 Cálculos en punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Operaciones aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Exponente sesgado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Formato estándar de los operandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
11-8 Instrucciones de control de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
CONTENIDO � xi
Instrucciones de bifurcación condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Instrucciones de llamada y retorno de subrutinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
11-9 Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Tipos de interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Procesamiento de interrupciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
11-10 Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
� Capítulo 12 503
UNIDADES CENTRALES DE PROCESAMIENTO RISC Y CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
12-1 Ruta de datos segtmentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Ejecución de microoperaciones de pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
12-2 Control de la ruta de datos segmentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Rendimiento y realización de un pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
12-3 Procesador de conjunto reducido de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Arquitectura de conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Organización de la ruta de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Organización del control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Conflictos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Control de conflictos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
12-4 Procesadores de conjunto de instrucciones complejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Modificaciones de la ISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
Modificaciones en la ruta de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 534
Modificaciones de la unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Control microprogramado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Microprograma para instrucciones complejas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
12-5 Más sobre diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Conceptos de CPU de alto rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Recientes innovaciones arquitecturales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Sistemas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
12-6 Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
� Capítulo 13 551
ENTRADA/SALIDA Y COMUNICACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
13-1 Procesadores de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
13-2 Ejemplo de periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Disco duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Monitores gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Tasas de transferencia de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
13-3 Interfaces de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Unidad interfaz y bus de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
xii � CONTENIDO
Ejemplo de interfaz de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Strobing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Handshaking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
13-4 Comunicación serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Transmisión asíncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Transmisión síncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
De vuelta al teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Un bus de E/S serie basado en paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
13-5 Modos de transferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Ejemplo de una transferencia controlada por programa . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Transferencia iniciada por interrupción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
13-6- Prioridad en las interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Prioridad Daisy Chain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Hardware de prioridad paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
13-7 Acceso directo a memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
El controlador de DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Transferencia de DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
13-8 Procesadores de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
13-9 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
� Capítulo 14 587
SISTEMAS DE MEMORIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
14-1 Jerarquía de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
14-2 Localidad de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
14-3 Memoria caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Mapeado de la caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Tamaño de línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Carga de la caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
Métodos de escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
Integración de conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Cachés de instrucciones y datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Cachés de múltiples niveles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
14-4 Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Tablas de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Translation Lookaside Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Memoria virtual y caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 610
14-5 Resumen del capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
CONTENIDO � xiii
PREFACIO
El objeto de este texto es proporcionar una compresión de los fundamentos del diseño lógico y
de los procesadores para una amplia audiencia de lectores. Muchos de los fundamentos que se
presentan no han cambiado en décadas. Por otro lado, los avances que la tecnología subyacente
han tenido un gran efecto en la aplicación de estos fundamentos y se ha hecho énfasis en ellos.
El proceso de diseño se ha automatizado utilizando lenguajes de descripción hardware y síntesis
lógica, y la búsqueda de alta velocidad y de bajo consumo han cambiado los fundamentos del
diseño de los procesadores.
El contenido de esta tercera edición continúa su enfoque en los fundamentos mientras que al
mismo tiempo refleja la importancia relativa de los conceptos básicos como la tecnología y la
evolución del proceso de diseño. Como ejemplo, la microprogramación, cuyo uso ha declinado
como principal método de diseño de unidades de control, se trata sólo como técnica de diseño
de unidades de control para realizar procesadores con instrucciones complejas. Además, con el
tiempo, la terminología fundamental evoluciona y, junto con ella, nuestra perspectiva de los
conceptos asociados. Por ejemplo, en esta edición, las secciones sobre circuitos NAND y NOT
aparecen en el contexto más amplio de la materialización tecnológica.
El texto continua proporcionando la opción a los instructores de cubrir de forma básica tanto
VHDL como Verilog4 u omitir los lenguajes de descripción hardware (HDL, del inglés Hard-
ware Description Language). La perspectiva de cubrir aquí, en forma de introducción, es la co-
rrespondencia de los HDLs con el hardware real que representa. Esta perspectiva vital, que es
crítica al escribir los HDLs para síntesis lógica, se puede perder en un tratamiento más detalla-
do, enfocado en el lenguaje y la facilidad de su uso.
En resumen, esta edición ofrece un fuerte énfasis en los fundamentos que subyacen al dise-
ño lógico actual utilizando lenguajes de descripción hardware, síntesis y verificación así como
los cambios en el énfasis en el uso de los fundamentos del diseño de procesadores. El enfoque
de los conceptos básicos y los ejercicios manuales permanece para reforzar la comprensión
completa de estos conceptos como soporte principal.
Para apoyar la perspectiva de la evolución y tratar los problemas estructurales acrecentando
notablemente la longitud del capítulo, esta edición ofrece una importante reorganización de los
capítulos. Los Capítulos 1 al 6 del libro tratan el diseño lógico, y los Capítulos 7 al 9 tratan el
diseño de sistemas digitales. Los Capítulos 10 al 14 se enfocan directamente en el diseño de
procesadores. Esta organización proporciona unos fundamentos sólidos del diseño de siste-
mas digitales mientras que lleva a cabo un desarrollo gradual de abajo a arriba (bottom-up)
de los fundamentos para utilizarlos en el diseño de los procesadores desde arriba hasta abajo
(top-down) en los últimos capítulos. Once de los 14 capítulos contienen nuevo material que no
se incluyó en la segunda edición, y aproximadamente, el 50% de los problemas se han modifi-
cado o son nuevos. Hay en torno a una docena de textos complementarios disponibles en la
página web del libro, que representan tanto material nuevo como material eliminado de las ante-
riores ediciones. A continuación siguen los resúmenes de los temas tratados en cada capítulo.
Capítulo 1—Ordenadores digitales e información, presenta los sistemas con procesador y
la representación de la información, incluyendo una nueva sección sobre los Códigos Gray.
Capítulo 2—Circuitos lógicos combinacionales, trata la teoría básica y los conceptos del
diseño y optimización de los circuitos con puertas. Aparece una nueva sección sobre optimiza-
ción de lógica multinivel. Además del número de literales básicos, se introduce el número de
entradas por puerta como un criterio de coste más preciso en el uso de circuitos multinivel.
Capítulo 3—Diseño Lógico combinacional, ofrece una visión del proceso de diseño lógico
actual y trata con las características de las puertas y retardos, el uso tecnológico de puertas
como la NAND, NOR, AOI, OAI, XOR y XNOR. Se tratan los detalles de los pasos en el pro-
ceso de diseño de la lógica combinacional, incluyendo el problema de formulación, optimiza-
ción lógica, materialización tecnológica y la verificación. Como parte de la materialización tec-
nológica, este capítulo cubre básicamente las memorias ROM, PLAs y PALs. Se proporciona
una introducción a los FPGAs (Field Programmable Gate Arrays), enfocándose en las piezas
utilizadas por los estudiantes en el laboratorio, como un suplemento en la página del texto, que
permite actualizar estos cambios tecnológicos durante el tiempo de vida de esta edición.
Capítulo 4—Circuitos y funciones combinacionales, cubre el diseño de subsistemas com-
binacionales. Se han eliminado los remanentes de la lógica MSI, según el cambio de enfoque,
por 1) los fundamentos de funciones combinacionales y su realización, y 2) las técnicas de utili-
zación y modificación de estas funciones y sus realizaciones asociadas. Este enfoque proporcio-
na los fundamentos para tener una visión más clara del diseño de lógica estructurada y para la
visualización de la lógica resultante de la síntesis de los HDLs. Además de presentar la decodi-
ficación, codificación, conversión de códigos, selección y distribución, se han presentado nue-
vas funciones como la habilitación y la entrada fija. Se incluyen secciones introductorias sobre
Verilog, VHDL para los diversos tipos de funciones.
Capítulo 5—Funciones y circuitos aritméticos, trata de las funciones aritméticas y su rea-
lización. Además de la representación de números, la suma, la resta y la multiplicación se han
presentado las funciones de incremento, decremento, rellenado, extensión y desplazamiento,
y su realización. Se han incluido descripciones en Verilog y en VHDL de las funciones arit-
méticas.
Capítulo 6—Circuitos secuenciales, presenta el análisis y el diseño de circuitos digitales.
Se tratan los latches, los flip-flops maestro-esclavo, los flip-flops disparados por flanco, con es-
pecial énfasis en los de tipo D. También se tratan otros tipos de flip-flops (S-R, J-K y T), usados
con menor frecuencia en los diseños modernos, pero con menos énfasis, presentándose con más
profundidad en un suplemento de la página web. También se proporcionan las descripciones en
VHDL y en Verilog de los flip-flops y de circuitos secuenciales.
Capítulo 7—Registros y transferencia de registros, se relacionan juntos y muy cercanos
al diseño de los registros y sus aplicaciones. El diseño de registro de desplazamiento y los con-
tadores se basa en la combinación de registros con funciones y su realización, presentadas en el
Capítulo 4 y 5. Solamente se presenta el contador, llamado ripple counter, como un concepto
xvi � PREFACIO
totalmente nuevo. Este enfoque concuerda con la reducción del enfoque en los circuitos origina-
les como los MSI. Una sección nueva se enfoca en el diseño de células básicas para construir
registros que realizan varias operaciones. Se presentan las descripciones en Verilog y VHDL de
los diversos tipos de registros.
Capítulo 8—Secuenciamiento y control, trata el diseño de la unidad de control. Una ca-
racterística adicional de la representación del Algoritmo deMáquinas de Estados (ASM, Algo-
rithmic State Machine) es la bifurcación en varios caminos, análoga al «case» de Verilog y
VHDL. Se enfatiza el control hardware y se reduce este énfasis en el control microprogramado.
Capítulo 9—Memorias, presenta las memorias SRAM, DRAM y las bases de las memorias
como sistemas. En una nueva sección se trata las memorias síncronas DRAM y las bases de las
tecnologías actuales. En la página web del texto se proporcionen modelos de las memorias en
Verilog y VHDL.
Capítulo 10—Fundamentos del diseño de procesadores, trata los bancos de registros, las
unidades funcionales, las rutas de datos y dos procesadores sencillos. Se diseña con algo de de-
talle un procesador de un solo ciclo de reloj y un nuevo procesador de varios ciclos de reloj,
empleando en ambos control cableado.
Capítulo 11—Arquitecturas de conjunto de instrucciones, presenta varias facetas de la
arquitectura de conjunto de instrucciones. Se trata la cuenta de direcciones, los modos de direc-
cionamiento, las arquitecturas y los tipos de instrucciones. Los modos de direccionamiento y
otros aspectos se ilustran con breves conjuntos de códigos de instrucciones.
Capítulo 12—Unidades centrales de procesamiento RISC y CISC, presenta rutas de da-
tos segmentadas (pipeline) y el control. Se da un procesador de conjunto de instrucciones redu-
cido (RISC, Reduced Instruction Set Computer). También se presenta un nuevo procesador de
conjunto de instrucciones complejo (CISC, Complex Instruction Set Computer). Este diseño uti-
liza una unidad de control microprogramado junto con un RISC de base para realizar instruccio-
nes complejas.
Capítulo 13—Entrada/Salida y comunicaciones, trata la transferencia de datos entre la
CPU, interfaces de entrada/salida y dispositivos periféricos. Se estudia un teclado, un monitor
CRT y un disco duro como periféricos, y se ilustra la interfaz de un teclado. Además se tratan
las comunicaciones vía serie, incluyendo el Bus Serie Universal (USB, Universal Serial Bus),
hasta los procesadores E/S.
Capítulo 14—Sistemas de memoria, tiene un particular enfoque sobre las jerarquías de
memorias. Se presenta e ilustra el concepto de localidad de referencia, considerando la relación
memoria caché/principal y memoria principal/disco duro. Se proporciona una visión de los pa-
rámetros de diseño de las memorias cachés. El tratamiento de la memoria se enfoca en la pagi-
nación y en translation lookaside buffer que da soporte a la memoria virtual.
Además del propio texto, hay un importante material de apoyo, que se comenta a continua-
ción.
La página web del texto (http://www.librosite.net/mano) se incluye el siguiente material:
1) Doce suplementos que incluyen material nuevo y el material eliminado de las anteriores
ediciones.
2) Los ficheros fuentes en VHDL y Verilog de todos los ejemplos.
3) Soluciones de aproximadamente un tercio de los problemas de todos los capítulos del
texto y del material suplementario.
4) Fe de erratas.
5) Transparencias en PowerPoint4 de los Capítulos 1 al 9.
6) Colección de las figuras y tablas más complejas del texto.
PREFACIO � xvii
El paquete de herramientas de diseño utilizado en las impresiones locales e internacionales
del texto consisten en el software ISE Student Edition de Xilinx4, que cortésmente ha propor-
cionado sin cargo Xilinx Inc. Está también disponible, mediante descarga a través de Xilinx, la
versión de demostración del simulador lógico XE de ModelSim4 de Model Technology Incor-
porated. Estas herramientas se pueden utilizar para realizar esquemáticos y máquinas de esta-
dos, compilar y simular código VHDL, Verilog o esquemáticos, y sintetizar diseños en CPLD y
FPGA, y simular el resultado de los diseños. Con la compra de hardware de bajo coste para los
experimentos, estas herramientas proporcionan a los estudiantes todo lo necesario para llevar a
cabo sus experimentos en CPLDs o FPGAs.
Debido a su amplio tratamiento tanto en diseño lógico y de procesadores, este libro puede
servir a diferentes objetivos, desde estudiantes de cursos básicos hasta cursos de nivel superior.
Los Capítulos 1 al 11, omitiendo algunas secciones, proporcionan una visión general del hard-
ware para estudiantes de ingeniería de telecomunicación, informática, industriales o ingenierías
en general, en un curso semestral. Los Capítulos del 1 al 8 dan una introducción básica al dise-
ño lógico, que se lleva a cabo en un semestre para estudiantes de las ingenierías mencionadas.
Impartir los Capítulos del 1 al 10 en un semestre proporciona un tratamiento más fuerte y actual
del diseño lógico. El libro completo, impartido en dos semestres, proporciona las bases del dise-
ño lógico y de procesadores para estos estudiantes de ingeniería. Impartir el libro completo, con
el apropiado material complementario o un laboratorio podría efectuarse en una secuencia de
dos semestres de un curso de diseño lógico y de procesadores. Para terminar, debido a su mode-
rado tratamiento por pasos de un amplio espectro de temas, el libro es ideal para el autoaprendi-
zaje de ingenieros.
Entre las diferentes contribuciones de este libro, Richard E. Haskell, Oakland University;
Eugene Henry, University of Notre Dame; Sung Hu, San Francisco State University; and Walid
Hubbi, New Jersey Institute of Technology proporcionaron excelentes comentarios y sugeren-
cias sobre los dibujos de los Capítulo del 1 al 8. Su contribución a las mejoras del texto se
agredeció muy sinceramente. También contribuyeron en este libro los profesores y estudiantes
de la Universidad de Wisconsin. La dirección que tomó el Capítulo 12 sobre diseño de CISC se
motivó por una sugerencia del Profesor Jim Smith, y el Profesor Leon Shohet sugirió mejoras
específicas basadas en el uso de la 2a edición del libro. Un agradecimiento especial para Eric
Weglarz por su profunda revisión del nuevo material tanto en su contenido como en su claridad.
Agradecer también a Eric y Jim Liu por la preparación de las soluciones a los problemas nuevos
y a los modificados del manual del instructor. Un agradecimiento especial al equipo de Prentice
Hall por sus esfuerzos en esta edición. Hay que destacar a Tom Robbins y Alice Dworkin por su
dirección y apoyo, a Eric Frank por su contribución en las primeras etapas de esta edición, y a
Daniel Sandin por su muy eficiente y útil manejo en la producción de esta edición.
Para terminar, un agradecimiento especial a Val Kime por su paciencia y compresión a lo largo
del desarrollo de esta tercera edición.
M. MORRIS MANO
CHARLES R. KIME
xviii � PREFACIO
FUNDAMENTOS DE DISEÑO
LÓGICO Y DE COMPUTADORAS
1
COMPUTADORAS DIGITALES
E INFORMACIÓN
C A P Í T U L O
Los fundamentos del diseño lógico y los fundamentos del diseño de computadorasson los temas a tratar en este libro. El diseño lógico trata los conceptos básicos ylas herramientas usadas en el diseño de hardware digital, formado por circuitos
lógicos. El diseño de computadoras trata los conceptos y las herramientas adicio-
nales usadas en el diseño de computadoras y otro tipo de hardware complejo. A las
computadoras y al hardware digital se les llama, en general, sistemas digitales. Así, es-
te libro trata del entendimiento y diseño de sistemas digitales. Debido a su generalidad
y complejidad, la computadora proporciona un vehículo ideal para aprender los concep-
tos y las herramientas para el diseño de sistemas digitales. Además, gracias a su uso
corriente, la propia computadora merece ser estudiada. Por eso, el enfoque en este li-
bro está en las computadoras y su diseño.
La computadora no va a ser solamente un vehículo, sino también un motivo de es-
tudio. Para ese fin, usamos el diagrama detallado de un ordenador del tipo que, normal-
mente, se denomina como PC (personal computer), de la página anterior. Usamos esa
computadora genérica para destacar la importancia del material cubierto y su relación
con el sistema total. Más adelante en el capítulo, discutiremos los diversos componen-
tes principales de una computadora genérica y veremoscomo se relacionan con un
diagrama de bloques, comúnmente usado, para describir una computadora.
1-1 COMPUTADORAS DIGITALES
Hoy en día, las computadoras digitales tienen un papel tan prominente y creciente en la socie-
dad moderna, que muchas veces decimos que estamos en la «era de la información». Las com-
putadoras están involucradas en nuestras transacciones de negocios, comunicaciones, transporte,
tratamiento médico y entretenimiento. Monitorizan nuestro tiempo y medio ambiente. En el
mundo industrial están fuertemente empleados en diseño, producción, distribución, y ventas.
Han contribuido a muchos descubrimientos científicos y desarrollos ingenieriles que, de otra
manera, hubieran sido inalcanzables. Notablemente, el diseño de un procesador para una com-
putadora moderna no se podría hacer sin usar muchas computadoras.
La propiedad más llamativa de una computadora digital es su generalidad. Puede seguir una
serie de instrucciones, llamada programa, que opera con los datos dados. El usuario puede espe-
cificar y cambiar el programa o los datos dependiendo de necesidades concretas. Como resulta-
do de su flexibilidad, las computadoras digitales de propósito general pueden ejecutar una varie-
dad de tareas de procesamiento de información en un espectro muy amplio de aplicaciones. La
computadora de propósito general es el ejemplo más conocido de un sistema digital. La caracte-
rística de un sistema digital es la manipulación de elementos discretos de información. Cual-
quier conjunto que se restrinja a un número finito de elementos contiene información discreta.
Ejemplos de conjuntos discretos son los 10 dígitos decimales, las 27 letras del alfabeto, las 52
cartas de una baraja, y los 64 cuadrados de una tabla de ajedrez. Las primeras computadoras
digitales se usaron principalmente para cálculos numéricos. En este caso, los elementos discre-
tos usados fueron los dígitos. De una aplicación como ésta salió el término computadora digital.
Los elementos discretos de información se representan en un sistema digital por cantidades
físicas llamadas señales. Señales eléctricas como voltajes y corrientes son las más conocidas.
Los dispositivos electrónicos llamados transistores predominan en los circuitos que manejan es-
tas señales. Las señales en la mayoría de los sistemas digitales de hoy usan justamente dos valo-
res discretos y por eso se denominan señales binarias.
Típicamente representamos los dos valores discretos por rangos de valores de voltajes lla-
mados ALTO (del término inglés HIGH) y BAJO (del término inglés LOW). Los rangos de
voltios de salida y de entrada se ilustran en la Figura 1-1. El valor del voltaje de salida ALTO
oscila entre 4.0 y 5.5 voltios, y el voltaje de salida BAJO entre .0.5 y 1.0 voltios. El rango de
entrada mayor permite que entre 3.0 y 5.5 voltios se reconozca como ALTO, y el rango de en-
trada menor permite que entre .0.5 y 2.0 voltios se reconozca como BAJO. El hecho de que
los rangos de entrada sean más grandes que los de salida, permite que los circuitos funcionen
correctamente a pesar de variaciones en su comportamiento e indeseados voltajes de «ruido»
que podrían ser añadidos o restados de las salidas.
5,0
4,0
3,0
2,0
1,0
0,0
Voltios
ALTO
BAJO
ALTO
BAJO
SALIDA ENTRADA
� FIGURA 1-1
Ejemplo de rangos de voltaje para señales binarias
4 � FUNDAMENTOS DEL DISEÑO LÓGICO Y DE COMPUTADORAS
Damos a los rangos de voltios de entrada y de salida diferentes nombres. Entre ellos están
ALTO (HIGH, H) y BAJO (LOW, L), VERDAD (TRUE, T) y FALSO (FALSE, F), y 1 y 0.
Está claro que los rangos de voltaje más altos están asociados con ALTO o H, y los rangos más
bajos con BAJO o L. Encontramos, sin embargo, que para TRUE y 1 y FALSE y 0, hay una
elección. TRUE y 1 se puede asociar o con rangos altos o bajos de voltaje y FALSE y 0 con los
otros rangos. Si no se indica otra cosa, asumimos que TRUE y 1 están asociados con los rangos
más altos de voltaje, H, y que FALSE y 0 están asociados con los rangos bajos, L.
¿Por qué se usa binario? En contraposición a la situación en la Figura 1-1, considere un
sistema con 10 valores, que representan a los dígitos decimales. En un sistema semejante, los
voltajes disponibles —es decir entre 0 y 5.0 voltios— se podrían dividir en 10 rangos, cada uno
del tamaño de 0.5 voltios. Un circuito proporcionaría un voltaje de salida dentro de estos 10
rangos. Una entrada de un circuito necesitaría determinar en cual de estos 10 rangos está situado
un voltaje aplicado. Si queremos permitir ruido en los voltajes, los voltajes de salida podrían
oscilar en menos de 0.25 voltios para una representación de un digito dado, y los márgenes en-
tre entradas podrían variar solamente en menos de 0.25 voltios. Esto requeriría circuitos electró-
nicos complejos y costosos y todavía podrían ser perturbados por pequeños voltajes de «ruido»
o pequeñas variaciones en los circuitos debidas a la fabricación o el uso. Como consecuencia, el
uso de estos circuitos multivalores es muy limitado. En cambio, se usan circuitos binarios donde
se pueden lograr operaciones correctas de los circuitos con variaciones significativas tanto en
los dos voltajes de entrada como de salida. El circuito resultante con transistores con una salida
ALTA o BAJA es sencillo, fácil de diseñar y extremadamente fiable.
Representación de la información
Ya que 0 y 1 están asociados con el sistema de numeración binario, son los nombres preferidos
para el rango de las señales. A un dígito binario se le llama bit. La información está representa-
da en computadoras digitales por grupos de bits. Usando diferentes técnicas de codificación, se
pueden construir grupos de bits no solamente para representar números binarios sino también
otros grupos de símbolos discretos. Los grupos de bits, adecuadamente ordenados, pueden espe-
cificar incluso instrucciones para la computadora y datos para procesar.
Las cantidades discretas de información surgen de la naturaleza de los datos a procesar o
podrían ser cuantificados intencionadamente en valores continuos. Por ejemplo, un plan de pago
de nóminas tiene inherentemente datos discretos que contiene nombres de empleados, números
de seguridad social, salarios semanales, tasas de ingreso, etc. Un cheque de pago de un emplea-
do está procesado usando valores de datos discretos como las letras del alfabeto (para los nom-
bres de los empleados), dígitos (para el sueldo) y símbolos especiales como $. En cambio, un
ingeniero podría medir la velocidad de rotación de una rueda de un coche, que varía continua-
mente en el tiempo, pero podría grabar solamente valores específicos en forma tabular. De este
modo, el ingeniero cuantifica los datos continuos, convirtiendo cada número de la tabla en una
cantidad discreta de información. En un caso como éste, si la medición puede ser convertida en
una señal electrónica, la cuantificación de la señal, tanto en valor y tiempo, puede ser realizada
automáticamente con un dispositivo de conversión analógico-digital.
Estructura de una computadora
En la Figura 1-2 se muestra un diagrama de bloques de una computadora digital. La memoria
guarda tanto programas como datos de entrada, salida e intermedios. La ruta de datos ejecuta
COMPUTADORAS DIGITALES E INFORMACIÓN � 5
Memoria
Unidad
de control
Ruta
de datos
Entrada/Salida
CPU
� FIGURA 1-2
operaciones aritméticas y de otro tipo como se especifica en el programa. La unidad de control
supervisa el flujo de información entre las diferentes unidades. Una ruta de datos, cuando está
combinada con una unidad de control, forma un componente llamado CPU (unidad central de
proceso, en inglés central processing unit).
El programa y los datos preparados por el usuario se transfieren a la memoria mediante un
dispositivo de entrada como es el teclado. Un dispositivo de salida, como es un monitor CRT
(tubo de rayos catódicos, en inglés cathode-ray tube) visualiza los resultados de los cálculos y
los presenta al usuario. Una computadora digital puede alojar muchos dispositivos