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