Fundamentos de Diseno Logico y de Computadoras

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 646

Cubierta Morris Mano.

qxd 22/3/10 13:32 Pgina 1

Incluye:
IIIIIIIIIIIIIIIIIIII

IIIII

IIIIIIIIIIIIIIIIIIII

IIIII

IIII

IIIIIIII

IIIIIIII

IIIII

net

IIII

it

El contenido de esta tercera edicin contina su enfoque en los


fundamentos mientras que al mismo tiempo refleja la importancia relativa
de los conceptos bsicos como la tecnologa y la evolucin del proceso de
diseo. Por ejemplo, en esta edicin, las secciones sobre circuitos NAND
y NOT aparecen en el contexto ms amplio de la materializacin
tecnolgica.

IIIII

.li b r o s

e.

IIII

ww

El objeto de este texto es proporcionar una comprensin de los


fundamentos del diseo lgico y de los procesadores para una amplia
audiencia de lectores. El proceso de diseo se ha automatizado utilizando
lenguajes de descripcin hardware y sntesis lgica, y la bsqueda de alta
velocidad y de bajo consumo han cambiado los fundamentos del diseo de
los procesadores.

/mano

IIIII

LibroSite es una pgina web asociada


al libro, con una gran variedad de
recursos y material adicional tanto
para los profesores como para
estudiantes. Apoyos a la docencia,

El texto contina proporcionando la opcin a los instructores de cubrir


de forma bsica tanto VHDL como Verilog.

ejercicios de autocontrol, enlaces


relacionados, material de
investigacin, etc., hacen de
LibroSite el complemento
acadmico perfecto para este libro.

3 edicin

Fundamentos de diseo lgico


y de computadoras
www.librosite.net/mano

Morris
Kime

En resumen, esta edicin de los Fundamentos de diseo lgico y de


computadoras ofrece un fuerte nfasis en los fundamentos que subyacen
al diseo lgico actual utilizando lenguajes de descripcin hardware,
sntesis y verificacin as como los cambios en el nfasis en el uso de los
fundamentos del diseo de procesadores.

Fundamentos de diseo lgico


y de computadoras

3 ed.

M. Morris Mano
Charles R. Kime
www.pearsoneducacion.com

Fundamentos de diseo lgico


y de computadoras
Tercera Edicin

Fundamentos de diseo lgico


y de computadoras
Tercera Edicin
M. MORRIS MANO
California State University, Los ngeles

CHARLES R. KIME
University of Wisconsin, Madison

Traduccin
Jos Antonio Herrera Camacho
Profesor Titular de Escuela Universitaria
Universidad Politcnica de Madrid

Martina Eckert
Dra. Ingeniera en Telecomunicacin
Universidad Politcnica de Madrid

Beatriz Valcuende Lozano


Ingeniera Tcnica en Telefona y Transmisin de Datos
Universidad Politcnica de Madrid

Revisin tcnica
Jos Antonio Herrera Camacho
Profesor Titular de Escuela Universitaria
Universidad Politcnica de Madrid

Madrid

Mxico Santaf de Bogot Buenos Aires Caracas Lima Montevideo


San Juan San Jos Santiago Sa o Paulo White Plains

Datos de catalogacin bibliogrfica

FUNDAMENTOS DE DISEO LGICO


Y DE COMPUTADORAS
Mano, M. Morris; Kime, Charles
PEARSON EDUCACIN, S.A., Madrid, 2005
ISBN: 978-84-832-2688-9
Materia: Electrnica 621,3
Formato 195 # 250 mm

Pginas: 648

Todos los derechos reservados.


Queda prohibida, salvo excepcin prevista en la Ley, cualquier forma de reproduccin, distribucin,
comunicacin pblica y transformacin de esta obra sin contar con autorizacin de los titulares
de propiedad intelectual. La infraccin de los derechos mencionados puede ser constitutiva
de delito contra la propiedad intelectual (arts. 270 y sgts. Cdigo Penal).
DERECHOS RESERVADOS
5 2005 por PEARSON EDUCACIN, S.A.
Ribera del Loira, 28
28042 Madrid (Espaa)
FUNDAMENTOS DE DISEO LGICO Y DE COMPUTADORES
Mano, M. Morris; Kime, Charles
ISBN: 84-205-4399-3
Depsito legal: M.
PEARSON PRENTICE HALL es un sello editorial autorizado de PEARSON EDUCACIN, 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 Martn-Romo
Tcnico editorial: Marta Caicoya
Equipo de produccin:
Director: Jos Antonio Clares
Tcnico: Diego Marn
Diseo de cubierta: Equipo de diseo de Pearson Educacin, S.A.
Composicin: COPIBOOK, S.L.
Impreso por:
IMPRESO EN ESPAA - PRINTED IN SPAIN
Este libro ha sido impreso con papel y tintas ecolgicos

CONTENIDO

Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 1

ORDENADORES DIGITALES E INFORMACIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1-1
Computadoras digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representacin de la informacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estructura de una computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ms en relacin con la computadora genrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-2
Sistemas numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nmeros binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nmeros octales y hexadecimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rangos de los nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-3
Operaciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversin de decimal a otras bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-4
Cdigos decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suma en BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bit de paridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-5
Cdigos Gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-6
Cdigos alfanumricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-7
Sumario del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 2

xv

3
4
5
5
6
8
9
10
12
12
15
17
18
19
19
21
24
24
24

27

CIRCUITOS LGICOS COMBINACIONALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


2-1
Lgica binaria y puertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lgica binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Puertas lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27
28
28
29

vi

CONTENIDO

2-2

lgebra de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Identidades bsicas del lgebra de Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Manipulacin algebraica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
El complemento de una funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formas cannicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Minitrminos y maxitrminos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suma de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Producto de sumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimizacin de circuitos de dos niveles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Criterios de coste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapa de dos variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapa de tres variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapa de cuatro variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Manipulacin del mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implicantes primos esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implicantes primos no esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimizacin de producto de sumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Condiciones de indiferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimizacin de circuitos multinivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otros tipos de puertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operador y puertas OR exclusiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funcin impar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Salidas en altas impedancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2-3

2-4

2-5

2-6
2-7
2-8
2-9
2-10

Captulo 3

81

DISEO
3-1

..................................................................
Conceptos de diseo y automatizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo jerrquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo top-down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo asistido por computadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lenguaje de descripcin hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sntesis lgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
El espacio de diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propiedades de las puertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Niveles de integracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tecnologas de circuitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parmetros tecnolgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lgica positiva y negativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compromisos de diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ciclo de diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapeado tecnolgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Especificaciones de las clulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Libreras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tcnicas de mapeado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3-2

3-3
3-4

LGICO COMBINACIONAL

31
33
35
37
39
39
42
44
44
45
46
47
51
54
54
56
57
59
61
65
69
70
71
74
74
75

81
82
83
86
86
87
88
90
90
90
91
91
95
96
97
104
105
105
107

CONTENIDO

3-5

Verificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anlisis lgico manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
La simulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tecnologas de implementacin programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memorias de slo lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Array lgico programable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arrays de lgica programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sumario del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3-6

3-7

Captulo 4

133

FUNCIONES
4-1
4-2

.......................................................
Circuitos combinacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones lgicas bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Asignacin, transferencia y complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de varios bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Habilitacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decodificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Extensin de decodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decodificadores con seal de habilitacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codificador con prioridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Expansin de codificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Seleccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Expansin de multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementaciones alternativas de selectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementacin de funciones combinacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Empleando decodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Empleando multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Empleando memorias de slo lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Usando arrays lgicos programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Usando arrays de lgica programable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Empleando tablas de bsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HDL representacin para circuitos combinacionales-VHDL . . . . . . . . . . . . . . . . . . . . . . .
Representacin HDL de circuitos combinacionales-Verilog . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Y CIRCUITOS COMBINACIONALES

4-3

4-4

4-5

4-6

4-7
4-8
4-9

Captulo 5

vii
113
113
115
116
119
121
122
124
124
125

133
134
134
134
135
137
140
140
143
144
145
146
148
147
149
150
152
152
154
157
159
162
163
165
172
178
179
179

189

FUNCIONES Y CIRCUITOS ARITMTICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


5-1
Circuitos combinacionales iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-2
Sumadores binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Semi-sumador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

189
190
190
191

viii

CONTENIDO

Sumador completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sumador binario con acarreo serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sumador con acarreo anticipado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resta binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Complementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resta con complementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sumador-restador binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nmeros binarios con signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suma y resta binaria con signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Overflow o desbordamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplicacin binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otras funciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contraccin o reduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Incremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplicacin por constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Divisin por constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Relleno a ceros y extensin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representacin HDL-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin de comportamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representaiones HDL-Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin de comportamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5-3

5-4

5-5
5-6

5-7
5-8
5-9

Captulo 6

227

CIRCUITOS
6-1
6-2

.........................................................................
Definicin de circuito secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Latches RS y R1 S1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Latch D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flip-flop maestro-esclavo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flip-flop disparados por flanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Smbolos grficos estndar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entradas asncronas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tiempos de los flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anlisis de circuitos secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ecuaciones de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabla de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagrama de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temporizacin del circuito secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo de circuitos secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procedimiento del diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Localizacin de los diagramas de estados y las tablas de estados . . . . . . . . . . . . . . . . .

6-3

6-4

6-5

SECUENCIALES

192
193
194
197
200
200
202
203
204
206
208
209
209
211
213
213
213
214
215
217
216
219
220
220
221

227
228
230
231
233
235
236
238
239
241
242
243
243
245
247
248
250
252
252
253

CONTENIDO

6-6
6-7
6-8
6-9

Captulo 7

Asignacin de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseando con flip-flops D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseando con estados no usados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otros tipos de flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flip-flops JK y T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representacin HDL para circuitos secuenciales-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . .
Representacin de HDL para circuitos secuenciales-Verilog . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

259
259
261
262
265
265
267
275
281
281
282

291

REGISTROS Y TRANSFERENCIA DE REGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


7-1
Registros y habilitacin de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Registro con carga en paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-2
Transferencia de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-3
Operaciones de transferencia de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-4
Nota para usuarios de VHDL y Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-5
Microoperaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Microoperaciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Microoperaciones lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Microoperaciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-6
Microoperaciones en un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transferencias basadas en multiplexores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Registros de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contador asncrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contadores binarios sncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otros contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-7
Diseo de clulas bsicas de un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-8
Transferencia de mltiples registros basada en buses y multiplexores . . . . . . . . . . . . .
Bus triestado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-9
Transferencia serie y microoperaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suma en serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7-10
Modelado en HDL de registros de desplazamiento y contadores-VHDL . . . . . . . . . . .
7-11
Modelado en HDL de registros de desplazamiento y contadores-Verilog . . . . . . . . . .
7-12
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 8

ix

291
292
293
295
297
299
299
300
302
304
305
305
307
311
316
317
319
325
326
328
329
331
333
334
335
335

343

SECUENCIAMIENTO Y CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-1
La unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-2
Algoritmo de mquinas de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagrama ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8-3
Ejemplos de diagramas ASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

343
344
345
345
348

CONTENIDO

8-4

8-5
8-6
8-7
8-8

Captulo 9

Multiplicador binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control cableado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Registro de secuencia y descodificador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Un flip-flop por estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representacin HDL del multiplicador binario-VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representacin HDL del multiplicador binario-Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control microprogramado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

377

MEMORIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-1
Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-2
Memoria de acceso aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operaciones de lectura y escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temporizacin de las formas de onda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Caractersticas de las memorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-3
Memorias integradas SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Seleccin combinada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-4
Array de circuitos integrados de memoria SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-5
Circuitos integrados de memoria DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Celda DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tira de un bit de memoria DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-6
Tipos de memoria DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoria sncrona DRAM (SDRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoria SDRAM de doble tasa de transferencia de datos (DDR SDRAM) . . . . . . .
Memoria RAMBUS5 DRAM (RDRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9-7
Arrays de circuitos integrados de memorias dinmicas RAM . . . . . . . . . . . . . . . . . . . . .
9-8
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 10

348
354
357
358
363
365
368
370
370
371

377
378
378
380
381
383
383
386
389
392
393
394
398
400
402
402
404
404
405
405

407

FUNDAMENTOS DEL DISEO DE PROCESADORES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


10-1
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10-2
Rutas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10-3
Unidad aritmtico-lgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Circuito aritmtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Circuito lgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unidad lgico-aritmtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10-4
El desplazador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Barrel Shifter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10-5
Representacin de rutas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10-6
La palabra de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10-7
Arquitectura de un sencillo procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

407
408
408
411
411
414
415
416
417
419
421
426

CONTENIDO

10-8

10-9
10-10

Captulo 11

Arquitectura de conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Recursos de almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formatos de la instruccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Especificacin de las instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control cableado de un solo ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decodificador de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de instrucciones y programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas del procesador de un solo ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control cableado multiciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo del control secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

xi
427
427
428
430
433
435
437
439
441
443
452
452
452

459

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


11-1
Conceptos de la arquitectura de procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ciclo de operacin bsico de un procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conjunto de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-2
Direccionamiento de los operandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de tres direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de dos direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de una direccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones con cero direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitecturas de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-3
Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modo implcito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modo inmediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modos registro y registro indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modo de direccionamiento directo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modo de direccionamiento indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modo de direccionamiento relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modo de direccionamiento indexado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen de modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-4
Arquitecturas de conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-5
Instrucciones de transferencia de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de manejo de pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
E/S independiente versus E/S ubicada en memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-6
Instrucciones de manipulacin de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones lgicas y de manipulacin de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-7
Clculos en punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operaciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exponente sesgado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formato estndar de los operandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11-8
Instrucciones de control de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

459
460
461
461
462
463
463
463
464
465
468
469
469
469
470
471
473
473
473
474
476
476
478
479
479
480
481
483
484
485
485
487

xii

CONTENIDO

11-9

11-10

Captulo 12

Instrucciones de bifurcacin condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Instrucciones de llamada y retorno de subrutinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tipos de interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procesamiento de interrupciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

503

UNIDADES CENTRALES DE PROCESAMIENTO RISC Y CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


12-1
Ruta de datos segtmentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejecucin de microoperaciones de pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12-2
Control de la ruta de datos segmentada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rendimiento y realizacin de un pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12-3
Procesador de conjunto reducido de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitectura de conjunto de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Organizacin de la ruta de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Organizacin del control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conflictos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control de conflictos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12-4
Procesadores de conjunto de instrucciones complejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modificaciones de la ISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modificaciones en la ruta de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modificaciones de la unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control microprogramado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Microprograma para instrucciones complejas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12-5
Ms sobre diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conceptos de CPU de alto rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recientes innovaciones arquitecturales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sistemas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12-6
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 13

489
491
492
493
494
495
496
496

503
504
507
509
511
512
513
516
516
519
520
527
530
533
534
535
537
539
542
542
545
546
546
547
548

551

ENTRADA/SALIDA Y COMUNICACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13-1
Procesadores de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13-2
Ejemplo de perifricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Disco duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Monitores grficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tasas de transferencia de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13-3
Interfaces de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unidad interfaz y bus de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

551
552
552
552
553
555
556
556
557

xiii

Ejemplo de interfaz de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Strobing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Handshaking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comunicacin serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transmisin asncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transmisin sncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
De vuelta al teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Un bus de E/S serie basado en paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modos de transferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de una transferencia controlada por programa . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transferencia iniciada por interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prioridad en las interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prioridad Daisy Chain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hardware de prioridad paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Acceso directo a memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
El controlador de DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transferencia de DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procesadores de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

558
559
561
562
563
564
564
565
569
570
571
572
573
574
576
576
578
579
582
582
583

CONTENIDO

13-4

13-5

13-6-

13-7

13-8
13-9

Captulo 14

587

SISTEMAS
14-1
14-2
14-3

...........................................................................
Jerarqua de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Localidad de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoria cach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapeado de la cach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tamao de lnea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Carga de la cach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mtodos de escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integracin de conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cachs de instrucciones y datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cachs de mltiples niveles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tablas de pginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Translation Lookaside Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoria virtual y cach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumen del captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14-4

14-5

DE MEMORIA

587
588
590
592
594
599
600
600
601
604
604
605
606
609
610
610
611
611

ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615

PREFACIO

El objeto de este texto es proporcionar una compresin de los fundamentos del diseo lgico y
de los procesadores para una amplia audiencia de lectores. Muchos de los fundamentos que se
presentan no han cambiado en dcadas. Por otro lado, los avances que la tecnologa subyacente
han tenido un gran efecto en la aplicacin de estos fundamentos y se ha hecho nfasis en ellos.
El proceso de diseo se ha automatizado utilizando lenguajes de descripcin hardware y sntesis
lgica, y la bsqueda de alta velocidad y de bajo consumo han cambiado los fundamentos del
diseo de los procesadores.
El contenido de esta tercera edicin contina su enfoque en los fundamentos mientras que al
mismo tiempo refleja la importancia relativa de los conceptos bsicos como la tecnologa y la
evolucin del proceso de diseo. Como ejemplo, la microprogramacin, cuyo uso ha declinado
como principal mtodo de diseo de unidades de control, se trata slo como tcnica de diseo
de unidades de control para realizar procesadores con instrucciones complejas. Adems, con el
tiempo, la terminologa fundamental evoluciona y, junto con ella, nuestra perspectiva de los
conceptos asociados. Por ejemplo, en esta edicin, las secciones sobre circuitos NAND y NOT
aparecen en el contexto ms amplio de la materializacin tecnolgica.
El texto continua proporcionando la opcin a los instructores de cubrir de forma bsica tanto
VHDL como Verilog4 u omitir los lenguajes de descripcin hardware (HDL, del ingls Hardware Description Language). La perspectiva de cubrir aqu, en forma de introduccin, es la correspondencia de los HDLs con el hardware real que representa. Esta perspectiva vital, que es
crtica al escribir los HDLs para sntesis lgica, se puede perder en un tratamiento ms detallado, enfocado en el lenguaje y la facilidad de su uso.
En resumen, esta edicin ofrece un fuerte nfasis en los fundamentos que subyacen al diseo lgico actual utilizando lenguajes de descripcin hardware, sntesis y verificacin as como
los cambios en el nfasis en el uso de los fundamentos del diseo de procesadores. El enfoque
de los conceptos bsicos y los ejercicios manuales permanece para reforzar la comprensin
completa de estos conceptos como soporte principal.
Para apoyar la perspectiva de la evolucin y tratar los problemas estructurales acrecentando
notablemente la longitud del captulo, esta edicin ofrece una importante reorganizacin de los
captulos. Los Captulos 1 al 6 del libro tratan el diseo lgico, y los Captulos 7 al 9 tratan el

xvi

PREFACIO

diseo de sistemas digitales. Los Captulos 10 al 14 se enfocan directamente en el diseo de


procesadores. Esta organizacin proporciona unos fundamentos slidos del diseo de sistemas digitales mientras que lleva a cabo un desarrollo gradual de abajo a arriba (bottom-up)
de los fundamentos para utilizarlos en el diseo de los procesadores desde arriba hasta abajo
(top-down) en los ltimos captulos. Once de los 14 captulos contienen nuevo material que no
se incluy en la segunda edicin, y aproximadamente, el 50% de los problemas se han modificado o son nuevos. Hay en torno a una docena de textos complementarios disponibles en la
pgina web del libro, que representan tanto material nuevo como material eliminado de las anteriores ediciones. A continuacin siguen los resmenes de los temas tratados en cada captulo.
Captulo 1Ordenadores digitales e informacin, presenta los sistemas con procesador y
la representacin de la informacin, incluyendo una nueva seccin sobre los Cdigos Gray.
Captulo 2Circuitos lgicos combinacionales, trata la teora bsica y los conceptos del
diseo y optimizacin de los circuitos con puertas. Aparece una nueva seccin sobre optimizacin de lgica multinivel. Adems del nmero de literales bsicos, se introduce el nmero de
entradas por puerta como un criterio de coste ms preciso en el uso de circuitos multinivel.
Captulo 3Diseo Lgico combinacional, ofrece una visin del proceso de diseo lgico
actual y trata con las caractersticas de las puertas y retardos, el uso tecnolgico de puertas
como la NAND, NOR, AOI, OAI, XOR y XNOR. Se tratan los detalles de los pasos en el proceso de diseo de la lgica combinacional, incluyendo el problema de formulacin, optimizacin lgica, materializacin tecnolgica y la verificacin. Como parte de la materializacin tecnolgica, este captulo cubre bsicamente las memorias ROM, PLAs y PALs. Se proporciona
una introduccin a los FPGAs (Field Programmable Gate Arrays), enfocndose en las piezas
utilizadas por los estudiantes en el laboratorio, como un suplemento en la pgina del texto, que
permite actualizar estos cambios tecnolgicos durante el tiempo de vida de esta edicin.
Captulo 4Circuitos y funciones combinacionales, cubre el diseo de subsistemas combinacionales. Se han eliminado los remanentes de la lgica MSI, segn el cambio de enfoque,
por 1) los fundamentos de funciones combinacionales y su realizacin, y 2) las tcnicas de utilizacin y modificacin de estas funciones y sus realizaciones asociadas. Este enfoque proporciona los fundamentos para tener una visin ms clara del diseo de lgica estructurada y para la
visualizacin de la lgica resultante de la sntesis de los HDLs. Adems de presentar la decodificacin, codificacin, conversin de cdigos, seleccin y distribucin, se han presentado nuevas funciones como la habilitacin y la entrada fija. Se incluyen secciones introductorias sobre
Verilog, VHDL para los diversos tipos de funciones.
Captulo 5Funciones y circuitos aritmticos, trata de las funciones aritmticas y su realizacin. Adems de la representacin de nmeros, la suma, la resta y la multiplicacin se han
presentado las funciones de incremento, decremento, rellenado, extensin y desplazamiento,
y su realizacin. Se han incluido descripciones en Verilog y en VHDL de las funciones aritmticas.
Captulo 6Circuitos secuenciales, presenta el anlisis y el diseo de circuitos digitales.
Se tratan los latches, los flip-flops maestro-esclavo, los flip-flops disparados por flanco, con especial nfasis en los de tipo D. Tambin se tratan otros tipos de flip-flops (S-R, J-K y T), usados
con menor frecuencia en los diseos modernos, pero con menos nfasis, presentndose con ms
profundidad en un suplemento de la pgina web. Tambin se proporcionan las descripciones en
VHDL y en Verilog de los flip-flops y de circuitos secuenciales.
Captulo 7Registros y transferencia de registros, se relacionan juntos y muy cercanos
al diseo de los registros y sus aplicaciones. El diseo de registro de desplazamiento y los contadores se basa en la combinacin de registros con funciones y su realizacin, presentadas en el
Captulo 4 y 5. Solamente se presenta el contador, llamado ripple counter, como un concepto

PREFACIO

xvii

totalmente nuevo. Este enfoque concuerda con la reduccin del enfoque en los circuitos originales como los MSI. Una seccin nueva se enfoca en el diseo de clulas bsicas para construir
registros que realizan varias operaciones. Se presentan las descripciones en Verilog y VHDL de
los diversos tipos de registros.
Captulo 8Secuenciamiento y control, trata el diseo de la unidad de control. Una caracterstica adicional de la representacin del Algoritmo de Mquinas de Estados (ASM, Algorithmic State Machine) es la bifurcacin en varios caminos, anloga al case de Verilog y
VHDL. Se enfatiza el control hardware y se reduce este nfasis en el control microprogramado.
Captulo 9Memorias, presenta las memorias SRAM, DRAM y las bases de las memorias
como sistemas. En una nueva seccin se trata las memorias sncronas DRAM y las bases de las
tecnologas actuales. En la pgina web del texto se proporcionen modelos de las memorias en
Verilog y VHDL.
Captulo 10Fundamentos del diseo de procesadores, trata los bancos de registros, las
unidades funcionales, las rutas de datos y dos procesadores sencillos. Se disea con algo de detalle un procesador de un solo ciclo de reloj y un nuevo procesador de varios ciclos de reloj,
empleando en ambos control cableado.
Captulo 11Arquitecturas de conjunto de instrucciones, presenta varias facetas de la
arquitectura de conjunto de instrucciones. Se trata la cuenta de direcciones, los modos de direccionamiento, las arquitecturas y los tipos de instrucciones. Los modos de direccionamiento y
otros aspectos se ilustran con breves conjuntos de cdigos de instrucciones.
Captulo 12Unidades centrales de procesamiento RISC y CISC, presenta rutas de datos segmentadas (pipeline) y el control. Se da un procesador de conjunto de instrucciones reducido (RISC, Reduced Instruction Set Computer). Tambin se presenta un nuevo procesador de
conjunto de instrucciones complejo (CISC, Complex Instruction Set Computer). Este diseo utiliza una unidad de control microprogramado junto con un RISC de base para realizar instrucciones complejas.
Captulo 13Entrada/Salida y comunicaciones, trata la transferencia de datos entre la
CPU, interfaces de entrada/salida y dispositivos perifricos. Se estudia un teclado, un monitor
CRT y un disco duro como perifricos, y se ilustra la interfaz de un teclado. Adems se tratan
las comunicaciones va serie, incluyendo el Bus Serie Universal (USB, Universal Serial Bus),
hasta los procesadores E/S.
Captulo 14Sistemas de memoria, tiene un particular enfoque sobre las jerarquas de
memorias. Se presenta e ilustra el concepto de localidad de referencia, considerando la relacin
memoria cach/principal y memoria principal/disco duro. Se proporciona una visin de los parmetros de diseo de las memorias cachs. El tratamiento de la memoria se enfoca en la paginacin y en translation lookaside buffer que da soporte a la memoria virtual.
Adems del propio texto, hay un importante material de apoyo, que se comenta a continuacin.
La pgina 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 captulos del
texto y del material suplementario.
4) Fe de erratas.
5) Transparencias en PowerPoint4 de los Captulos 1 al 9.
6) Coleccin de las figuras y tablas ms complejas del texto.

xviii

PREFACIO

El paquete de herramientas de diseo utilizado en las impresiones locales e internacionales


del texto consisten en el software ISE Student Edition de Xilinx4, que cortsmente ha proporcionado sin cargo Xilinx Inc. Est tambin disponible, mediante descarga a travs de Xilinx, la
versin de demostracin del simulador lgico XE de ModelSim4 de Model Technology Incorporated. Estas herramientas se pueden utilizar para realizar esquemticos y mquinas de estados, compilar y simular cdigo VHDL, Verilog o esquemticos, y sintetizar diseos en CPLD y
FPGA, y simular el resultado de los diseos. 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 diseo lgico y de procesadores, este libro puede
servir a diferentes objetivos, desde estudiantes de cursos bsicos hasta cursos de nivel superior.
Los Captulos 1 al 11, omitiendo algunas secciones, proporcionan una visin general del hardware para estudiantes de ingeniera de telecomunicacin, informtica, industriales o ingenieras
en general, en un curso semestral. Los Captulos del 1 al 8 dan una introduccin bsica al diseo lgico, que se lleva a cabo en un semestre para estudiantes de las ingenieras mencionadas.
Impartir los Captulos del 1 al 10 en un semestre proporciona un tratamiento ms fuerte y actual
del diseo lgico. El libro completo, impartido en dos semestres, proporciona las bases del diseo lgico y de procesadores para estos estudiantes de ingeniera. Impartir el libro completo, con
el apropiado material complementario o un laboratorio podra efectuarse en una secuencia de
dos semestres de un curso de diseo lgico y de procesadores. Para terminar, debido a su moderado tratamiento por pasos de un amplio espectro de temas, el libro es ideal para el autoaprendizaje 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 sugerencias sobre los dibujos de los Captulo del 1 al 8. Su contribucin a las mejoras del texto se
agredeci muy sinceramente. Tambin contribuyeron en este libro los profesores y estudiantes
de la Universidad de Wisconsin. La direccin que tom el Captulo 12 sobre diseo de CISC se
motiv por una sugerencia del Profesor Jim Smith, y el Profesor Leon Shohet sugiri mejoras
especficas basadas en el uso de la 2a edicin del libro. Un agradecimiento especial para Eric
Weglarz por su profunda revisin del nuevo material tanto en su contenido como en su claridad.
Agradecer tambin a Eric y Jim Liu por la preparacin 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 edicin. Hay que destacar a Tom Robbins y Alice Dworkin por su
direccin y apoyo, a Eric Frank por su contribucin en las primeras etapas de esta edicin, y a
Daniel Sandin por su muy eficiente y til manejo en la produccin de esta edicin.
Para terminar, un agradecimiento especial a Val Kime por su paciencia y compresin a lo largo
del desarrollo de esta tercera edicin.
M. MORRIS MANO
CHARLES R. KIME

FUNDAMENTOS DE DISEO
LGICO Y DE COMPUTADORAS

CAPTULO

1
COMPUTADORAS DIGITALES
E INFORMACIN

os fundamentos del diseo lgico y los fundamentos del diseo de computadoras


son los temas a tratar en este libro. El diseo lgico trata los conceptos bsicos y
las herramientas usadas en el diseo de hardware digital, formado por circuitos
lgicos. El diseo de computadoras trata los conceptos y las herramientas adicionales usadas en el diseo de computadoras y otro tipo de hardware complejo. A las
computadoras y al hardware digital se les llama, en general, sistemas digitales. As, este libro trata del entendimiento y diseo de sistemas digitales. Debido a su generalidad
y complejidad, la computadora proporciona un vehculo ideal para aprender los conceptos y las herramientas para el diseo de sistemas digitales. Adems, gracias a su uso
corriente, la propia computadora merece ser estudiada. Por eso, el enfoque en este libro est en las computadoras y su diseo.
La computadora no va a ser solamente un vehculo, sino tambin un motivo de estudio. Para ese fin, usamos el diagrama detallado de un ordenador del tipo que, normalmente, se denomina como PC (personal computer), de la pgina anterior. Usamos esa
computadora genrica para destacar la importancia del material cubierto y su relacin
con el sistema total. Ms adelante en el captulo, discutiremos los diversos componentes principales de una computadora genrica y veremos como se relacionan con un
diagrama de bloques, comnmente usado, para describir una computadora.

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

1-1 COMPUTADORAS DIGITALES


Hoy en da, las computadoras digitales tienen un papel tan prominente y creciente en la sociedad moderna, que muchas veces decimos que estamos en la era de la informacin. Las computadoras estn involucradas en nuestras transacciones de negocios, comunicaciones, transporte,
tratamiento mdico y entretenimiento. Monitorizan nuestro tiempo y medio ambiente. En el
mundo industrial estn fuertemente empleados en diseo, produccin, distribucin, y ventas.
Han contribuido a muchos descubrimientos cientficos y desarrollos ingenieriles que, de otra
manera, hubieran sido inalcanzables. Notablemente, el diseo de un procesador para una computadora moderna no se podra hacer sin usar muchas computadoras.
La propiedad ms 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 especificar y cambiar el programa o los datos dependiendo de necesidades concretas. Como resultado de su flexibilidad, las computadoras digitales de propsito general pueden ejecutar una variedad de tareas de procesamiento de informacin en un espectro muy amplio de aplicaciones. La
computadora de propsito general es el ejemplo ms conocido de un sistema digital. La caracterstica de un sistema digital es la manipulacin de elementos discretos de informacin. Cualquier conjunto que se restrinja a un nmero finito de elementos contiene informacin discreta.
Ejemplos de conjuntos discretos son los 10 dgitos 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 clculos numricos. En este caso, los elementos discretos usados fueron los dgitos. De una aplicacin como sta sali el trmino computadora digital.
Los elementos discretos de informacin se representan en un sistema digital por cantidades
fsicas llamadas seales. Seales elctricas como voltajes y corrientes son las ms conocidas.
Los dispositivos electrnicos llamados transistores predominan en los circuitos que manejan estas seales. Las seales en la mayora de los sistemas digitales de hoy usan justamente dos valores discretos y por eso se denominan seales binarias.
Tpicamente representamos los dos valores discretos por rangos de valores de voltajes llamados ALTO (del trmino ingls HIGH) y BAJO (del trmino ingls 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 entrada menor permite que entre .0.5 y 2.0 voltios se reconozca como BAJO. El hecho de que
los rangos de entrada sean ms grandes que los de salida, permite que los circuitos funcionen
correctamente a pesar de variaciones en su comportamiento e indeseados voltajes de ruido
que podran ser aadidos o restados de las salidas.
SALIDA

ENTRADA
5,0

ALTO

4,0

ALTO

3,0
2,0
BAJO

1,0

BAJO

0,0
Voltios

FIGURA 1-1
Ejemplo de rangos de voltaje para seales binarias

COMPUTADORAS DIGITALES E INFORMACIN

Damos a los rangos de voltios de entrada y de salida diferentes nombres. Entre ellos estn
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 ms altos estn asociados con ALTO o H, y los rangos ms
bajos con BAJO o L. Encontramos, sin embargo, que para TRUE y 1 y FALSE y 0, hay una
eleccin. 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 estn asociados con los rangos
ms altos de voltaje, H, y que FALSE y 0 estn asociados con los rangos bajos, L.
Por qu se usa binario? En contraposicin a la situacin en la Figura 1-1, considere un
sistema con 10 valores, que representan a los dgitos decimales. En un sistema semejante, los
voltajes disponibles es decir entre 0 y 5.0 voltios se podran dividir en 10 rangos, cada uno
del tamao de 0.5 voltios. Un circuito proporcionara un voltaje de salida dentro de estos 10
rangos. Una entrada de un circuito necesitara determinar en cual de estos 10 rangos est situado
un voltaje aplicado. Si queremos permitir ruido en los voltajes, los voltajes de salida podran
oscilar en menos de 0.25 voltios para una representacin de un digito dado, y los mrgenes entre entradas podran variar solamente en menos de 0.25 voltios. Esto requerira circuitos electrnicos complejos y costosos y todava podran ser perturbados por pequeos voltajes de ruido
o pequeas variaciones en los circuitos debidas a la fabricacin 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, fcil de disear y extremadamente fiable.

Representacin de la informacin
Ya que 0 y 1 estn asociados con el sistema de numeracin binario, son los nombres preferidos
para el rango de las seales. A un dgito binario se le llama bit. La informacin est representada en computadoras digitales por grupos de bits. Usando diferentes tcnicas de codificacin, se
pueden construir grupos de bits no solamente para representar nmeros binarios sino tambin
otros grupos de smbolos discretos. Los grupos de bits, adecuadamente ordenados, pueden especificar incluso instrucciones para la computadora y datos para procesar.
Las cantidades discretas de informacin surgen de la naturaleza de los datos a procesar o
podran ser cuantificados intencionadamente en valores continuos. Por ejemplo, un plan de pago
de nminas tiene inherentemente datos discretos que contiene nombres de empleados, nmeros
de seguridad social, salarios semanales, tasas de ingreso, etc. Un cheque de pago de un empleado est procesado usando valores de datos discretos como las letras del alfabeto (para los nombres de los empleados), dgitos (para el sueldo) y smbolos especiales como $. En cambio, un
ingeniero podra medir la velocidad de rotacin de una rueda de un coche, que vara continuamente en el tiempo, pero podra grabar solamente valores especficos en forma tabular. De este
modo, el ingeniero cuantifica los datos continuos, convirtiendo cada nmero de la tabla en una
cantidad discreta de informacin. En un caso como ste, si la medicin puede ser convertida en
una seal electrnica, la cuantificacin de la seal, tanto en valor y tiempo, puede ser realizada
automticamente con un dispositivo de conversin analgico-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

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Memoria

CPU

Unidad
de control

Ruta
de datos

Entrada/Salida

FIGURA 1-2

operaciones aritmticas y de otro tipo como se especifica en el programa. La unidad de control


supervisa el flujo de informacin 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 ingls 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 catdicos, en ingls cathode-ray tube) visualiza los resultados de los clculos y
los presenta al usuario. Una computadora digital puede alojar muchos dispositivos de entrada y
salida diferentes, como un disco duro, floppy, CD-ROM y escner. stos dispositivos tienen
alguna lgica digital, pero muchas veces incluyen circuitos electrnicos analgicos, sensores
pticos, CRTs o LCDs (liquid crystal displays), y componentes electromecnicos.
La unidad de control de la CPU recupera las instrucciones, de una en una, del programa
guardado en la memoria. En cada instruccin, la unidad de control manipula la ruta de datos
para ejecutar la operacin especificada por la instruccin. Ambos, programa y datos, estn guardados en la memoria. Una computadora digital es un sistema muy potente. Puede realizar clculos aritmticos, manipular cadenas de caracteres alfabticos y ser programado para tomar decisiones basadas en condiciones internas y externas.

Ms en relacin con la computadora genrica


En este punto, vamos a presentar brevemente la computadora genrica y a relacionar sus partes
con el diagrama de bloques de la Figura 1-2. En la parte inferior izquierda del diagrama, al
principio de este captulo, est el corazn de la computadora, un circuito integrado llamado el
procesador. Los procesadores modernos como este son bastante complejos y se componen de
millones de transistores. El procesador contiene cuatro mdulos funcionales: la CPU, la FPU, la
MMU, y la cache interna.
Ya hemos presentado la CPU. La FPU (unidad de punto flotante, en ingls floating-point
unit) es parecida a la CPU, excepto que su ruta de datos y unidad de control estn especficamente diseados para realizar operaciones en punto flotante. En esencia, esas operaciones procesan informacin representada en forma de notacin cientfica (por ejemplo 1.234 # 107), permitiendo a la computadora genrica manejar nmeros muy grandes y muy pequeos. La CPU y la
FPU, en relacin con la Figura 1-2, contienen cada una, una ruta de datos y una unidad de control.
La MMU es la unidad de administracin de la memoria. La MMU ms la cache interna y
los otros bloques, en la parte baja de la figura, etiquetados como Cache Externa y RAM

COMPUTADORAS DIGITALES E INFORMACIN

(random access memory) son todas partes de la memoria de la Figura 1-2. Las dos caches son
un tipo especial de memoria que permite a la CPU y FPU acceder a los datos a procesar ms
rpidamente que slo con la RAM. La RAM es la que se refiere generalmente como memoria.
Como funcin principal, la MMU hace que la memoria que parece estar disponible es mucha,
mucho ms grande que el tamao actual de la RAM. Esto se logra mediante traslados de datos
entre la RAM y el disco duro, mostrado en la parte superior de la imagen de la computadora
genrica. As el disco duro, que estudiaremos ms tarde como dispositivo de entrada/salida,
aparece conceptualmente como una parte de la memoria y de entrada/salida.
Las rutas de conexin mostradas entre el procesador, la memoria y cache externa, son los
caminos entre circuitos integrados. Tpicamente se realizan con finos conductores de cobre en
una placa de circuito impreso. A los caminos de conexin debajo de la interfaz del bus se le
llama bus del procesador. A las conexiones encima de la interfaz del bus se le llama bus de
entrada/salida (E/S). El bus del procesador y el bus E/S ligados al interfaz de buses llevan datos
con diferentes nmeros de bits y tienen diferentes maneras de controlar el movimiento de los
datos. Tambin pueden operar a diferentes velocidades. El hardware del interfaz de buses maneja esas diferencias de manera que los datos pueden comunicarse entre los dos buses.
El resto de estructuras de la computadora genrica se consideran parte de la E/S de la Figura
1-2. En trminos de volumen, estas estructuras son las que ms ocupan. Para introducir informacin en la computadora, se proporciona un teclado. Para ver la salida en forma de texto o grficos, se utiliza una tarjeta con un adaptador grfico y un monitor CRT. El disco duro, presentado
previamente, es un dispositivo de almacenaje magntico electromecnico. Guarda grandes cantidades de informacin en forma de flujo magntico en discos giratorios cubiertos de una capa
de materiales magnticos. Para controlar el disco duro y transferir informacin hacia y desde l,
se usa un controlador de disco. El teclado, la tarjeta de adaptador grfico y la tarjeta de controlador de disco estn todos vinculados con el bus E/S. Esto permite a estos dispositivos comunicarse mediante la interfaz de bus con la CPU y otros circuitos conectados a los buses del procesador. La computadora genrica est formada bsicamente por una interconexin de mdulos
digitales. Para entender la operacin de cada mdulo, es necesario tener un conocimiento bsico
de los sistemas digitales y su comportamiento general. Los Captulos 1 a 6 de este libro tratan el
diseo lgico de circuitos digitales en general.
En los Captulos 7 y 8 se presentan los componentes bsicos de un sistema digital, sus operaciones y su diseo. Las caractersticas operacionales de la memoria RAM se explican en el
Captulo 9. La ruta de datos y el control de computadoras sencillas se presentan en el Captulo
10. En los Captulos 11 al 14 se presentan las bases del diseo de computadoras. Las instrucciones tpicas empleadas en arquitecturas de conjunto de instrucciones se presentan en Captulo 11.
La arquitectura y el diseo de CPUs se examinan en el Captulo 12. Los dispositivos de entrada
y salida y los diferentes caminos con que la CPU puede comunicarse con ellos se discuten en el
Captulo 13. Finalmente, los conceptos de jerarqua de memoria relacionados con caches y
MMU se presentan en el Captulo 14.
Para guiar el lector por este material y para tener en mente este bosque examinamos minuciosamente muchos de sus rboles, las discusiones que acompaan aparecen en las cajitas
azules al principio de cada captulo para relacionar los temas de cada captulo con los componentes asociados en el diagrama genrico de computadoras al principio de este captulo. Al final
de nuestro viaje habremos cubierto la mayora de los diferentes mdulos de una computadora y
tendremos un entendimiento de los fundamentos, que son la base del funcionamiento como del
diseo.
Antes mencionamos que una computadora digital manipula elementos discretos de informacin y que toda la informacin dentro de la computadora est representada en forma binaria.

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Los operandos usados en los clculos se pueden expresar en el sistema de nmeros binarios o en
el sistema decimal por medio de un cdigo binario. Las letras del alfabeto tambin se convierten a cdigo binario. El propsito del resto de este captulo es la introduccin al sistema de
numeracin binario, a la aritmtica binaria y de cdigos binarios seleccionados como base para
el estudio en los siguientes captulos. En relacin con la computadora genrica, este material es
muy importante y alcanza a todos los componentes excepto algunos de E/S que involucran operaciones mecnicas y de electrnica analgica (en contraste a la digital).

1-2 SISTEMAS NUMRICOS


El sistema numrico decimal se emplea en la aritmtica cotidiana para representar nmeros mediante cadenas de dgitos. Dependiente de su posicin en la cadena, cada dgito tiene un valor
asociado a un entero como potencia en base 10. Por ejemplo, el nmero decimal 724.5 se interpreta de manera que representa 7 centenas, ms 2 decenas, ms 4 unidades y ms 5 dcimas.
Las centenas, decenas, unidades y dcimas son potencias de 10, dependiendo de la posicin de
los dgitos. El valor del nmero se calcula de la forma siguiente:
724.5 % 7 # 102 ! 2 # 101 ! 4 # 100 ! 5 # 10.1
La convencin es escribir solamente los dgitos y deducir las potencias de 10 segn su posicin.
En general, un nmero decimal con n dgitos a la izquierda del punto decimal y m dgitos a la
derecha del punto decimal es representado por una cadena de coeficientes:
An.1An.2 ...A1A0 .A.1A.2 ...A.m!1A.m
Cada coeficiente Ai es uno de los 10 dgitos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9). El valor de subndice i
determina la posicin del coeficiente y, asimismo el peso 10i con que hay que multiplicar el
coeficiente.
Al sistema numrico decimal se llama base 10, porque se multiplican los coeficientes por
potencias de 10 y el sistema usa 10 dgitos diferentes. En general, un nmero en base r contiene
r dgitos, 0, 1, 2, ..., r . 1, y se expresa como una potencia de r segn la frmula general
An.1rn.1 ! An.2rn.2 ! ... ! A1r1 ! A0r0
! A.1r.1 ! A.2r.2 ! ...! A.m!1r.m!1 ! A.mr.m
Cuando un nmero se expresa en notacin posicional, se escriben solamente los coeficientes y
el punto de la base:
An.1An.2 ...A1A0 .A.1A.2 ...A.m!1A.m
En general, se llama al . punto de base. A An.1 se le llama dgito ms significativo (msd, del
ingls most significant digit) y a A.m se le llama dgito menos significativo (lsd, del ingls less
significant digit) del nmero. Note que si m % 0, el lsd es A.0 % A0. Para distinguir entre nmeros con bases diferentes, habitualmente se encierran los coeficientes en parntesis y se coloca
en el parntesis derecho un subndice para indicar la base del nmero. Sin embargo, si la base
est clara por el contexto, no es necesario usar parntesis. A continuacin se muestra un nmero
en base 5 con n % 3 y m % 1, y su conversin a decimal:
(312.4)5 % 3 # 52 ! 1 # 51 ! 2 # 50 ! 4 # 5.1
% 75 ! 5 ! 2 ! 0.8 % (82.8)10

COMPUTADORAS DIGITALES E INFORMACIN

Note que para todos los nmeros sin base definida, la operacin se realiza con nmeros decimales. Note tambin que el sistema en base 5 usa solamente cinco dgitos y, asimismo, los valores
de los coeficientes de un nmero solamente pueden ser 0, 1, 2, 3, y 4, si se expresan en ese
sistema.
Un mtodo alternativo para la conversin a base 10, que reduce el nmero de operaciones,
est basado en una forma factorizada de series de potencias:
(...((An.1 r ! An.2)r ! An.3)r ! ... ! A1)r ! A0
!(A.1 ! (A.2 ! (A.3 ! ... ! (A.m!2 ! (A.m!1 ! A.m r.1)r.1)r.1...)r.1)r.1)r.1
Para el ejemplo de arriba,
(312.4)5 % ((3 # 5 ! 1) # 5) ! 2 ! 4 # 5.1
% 16 # 5 ! 2 ! 0.8 % (82.8)10
Adems del sistema de numeracin decimal, se usan tres sistemas de numeracin a la hora
de trabajar con computadoras: binario, octal, y hexadecimal. Estos estn en base 2, 8, y 16 respectivamente.

Nmeros binarios
El sistema de numeracin binario es un sistema en base 2 con dos dgitos: 0 y 1. Un nmero
binario como el 11010.11 se expresa mediante una cadena de 1 y 0 y, posiblemente, un punto
binario. El nmero decimal equivalente a un nmero binario se puede encontrar mediante la
expansin del nmero en una serie de potencias en base 2. Por ejemplo,
(11010)2 % 1 # 24 ! 1 # 23 ! 0 # 22 ! 1 # 21 ! 0 # 20 % (26)10
Como anteriormente se ha mencionado, los digitos de un nmero binario se llaman bits. Si un
bit es igual a 0, no contribuye a la suma en la conversin. Por tanto, la conversin a decimal se
puede obtener sumando los numeros con potencias de 2 correspondiente a los bits iguales a 1.
Por ejemplo,
(110101.11)2 % 32 ! 16 ! 4 ! 1 ! 0.5 ! 0.25 % (53.75)10
Los primeros 24 nmeros obtenidos desde 2 hasta la potencia de 2 elevado a n se enumeran en la Tabla 1-1. Trabajando con computadoras, se refiere a 210 como K (kilo), a 220 como
M (mega), y a 230 como G (giga). As,
4 K % 22 # 210 % 212 % 4 096 y 16 M % 24 # 220 % 224 % 16 777 216
La conversin de un nmero decimal a binario se puede obtener fcilmente con un mtodo
que resta sucesivamente potencias de dos al nmero decimal. Para convertir el nmero decimal
N a binario, se busca primero el nmero ms grande que es potencia de dos (vase Tabla 1-1) y
que, restado de N, produce una diferencia positiva. Llamemos la diferencia N1. Ahora encuentre
el nmero ms grande que es potencia de dos y que, restado de N1, produce una diferencia positiva N2. Continue este procedimiento hasta que la diferencia sea cero. De esta manera, el nmero decimal se convierte en sus componentes de potencia de dos. El nmero binario equivalente
se obtiene de los coeficientes de una serie de potencias que forma la suma de los componentes.

10

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 1-1
Potencias de dos
n

2n

0
1
1
2
2
4
3
8
4 16
5 32
6 64
7 128

2n

2n

8
9
10
11
12
13
14
15

256
512
1 024
2 048
4 096
8 192
16 384
32 768

16
17
18
19
20
21
22
23

65 536
131 072
262 144
524 288
1 048 576
2 097 152
4 194 304
8 388 608

Los 1 aparecen en el nmero binario en las posiciones para los que aparecen trminos en la
serie de potencias, y aparecen 0 en el resto de posiciones. Este mtodo se muestra mediante la
conversin del nmero decimal 625 a binario de la siguiente manera:
625 . 512 % 113 % N1

512 % 29

113 . 64 % 49 % N2

64 % 26

49 . 32 % 17 % N3

32 % 25

17 . 16 % 1 % N4

16 % 24

1 . 1 % 0 % N5

1 % 20

(625)10 % 29 ! 26 ! 25 ! 24 ! 20 % (1001110001)2

Nmeros octales y hexadecimales


Como hemos mencionado anteriormente, todos las computadoras y sistemas digitales usan la
representacin binaria. Los sistemas de numeracin octal (en base 8) y hexadecimal (en base
16) son tiles para representar cantidades binarias indirectamente porque poseen la propiedad de
que sus bases son de potencia a 2. Ya que 23 % 8 y 24 % 16, cada dgito octal corresponde a tres
dgitos binarios y cada dgito hexadecimal corresponde a cuatro dgitos binarios.
La representacin ms compacta de nmeros binarios en octal o hexadecimal es mucho ms
conveniente para las personas que usar cadenas de bits en binario que son tres o cuatro veces
ms largas. As, la mayora de los manuales de computadoras usan nmeros octales o hexadecimales para especificar cantidades binarias. Un grupo de 15 bits, por ejemplo, puede ser representado en el sistema octal con solamente cinco dgitos. Un grupo de 16 bits se puede representar en hexadecimal con cuatro dgitos. La eleccin entre una representacin octal o hexadecimal
de nmeros binarios es arbitraria, aunque la hexadecimal tiende a ser la ms usada, ya que los
bits aparecen frecuentemente en grupos de tamao divisible por cuatro.
El sistema de numeracin octal es el sistema en base 8 con los dgitos 0, 1, 2, 3, 4, 5, 6 y 7.
Un ejemplo de un nmero octal es 127.4. Para determinar su valor decimal equivalente, extendemos el nmero en una serie con base 8:
(127.4)8 % 1 # 82 ! 2 # 81 ! 7 # 80 ! 4 # 8.1 % (87.5)10
Vase que los dgitos 8 y 9 no pueden aparecer en un nmero octal.

COMPUTADORAS DIGITALES E INFORMACIN

11

Es usual usar los primeros r dgitos del sistema decimal, empezando con 0, para representar
los coeficientes en un sistema en base r si r es menor que 10. Las letras del alfabeto se usan
para complementar los dgitos si r es 10 o ms. El sistema numrico hexadecimal es un sistema
de numeracin en base 16 con los 10 primeros dgitos tomados del sistema de numeracin decimal y las letras A, B, C, D, E, y F usadas para los valores 10, 11, 12, 13, 14 y 15, respectivamente. Un ejemplo de un nmero hexadecimal es
(B65F)16 % 11 # 163 ! 6 # 162 ! 5 # 161 ! 15 # 160 % (46687)10
Los 16 primeros nmeros de los sistemas de numeracin decimal, binario, octal y hexadecimal
se encuentran en la Tabla 1-2. Note que la secuencia de nmeros binarios sigue un patrn preescrito. El bit menos significativo alterna entre 0 y 1, el segundo bit significativo alterna entre dos
0 y dos 1, el tercer bit significativo alterna entre cuatro 0 y cuatro 1, y el bit ms significativo
alterna entre ocho 0 y ocho 1.
La conversin de binario a octal se consigue fcilmente dividiendo el nmero binario en
grupos de tres bits cada uno, empezando por punto binario y procediendo hacia la izquierda y
hacia la derecha. El dgito octal correspondiente se asigna a cada grupo. El siguiente ejemplo
demuestra el procedimiento:
(010 110 001 101 011. 111 100 000 110)2 % (26153.7406)8
El dgito octal correspondiente a cada grupo de tres bits se obtiene de las primeras ocho filas de
la Tabla 1-2. Para conseguir que el nmero total de bits sea un mltiplo de tres, se puede aadir
0 a la izquierda de la cadena a la izquierda del punto binario. Ms importante: hay que aadir 0
a la derecha de la cadena de bits a la derecha del punto binario para conseguir que el nmero de
bits sea un mltiplo de tres y obtener el resultado octal correcto.
TABLA 1-2
Nmeros con diferentes bases
Decimal
(base 10)

Binario
(base 2)

Octal
(base 8)

Hexadecimal
(base 16)

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

00
01
02
03
04
05
06
07
10
11
12
13
14
15
16
17

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

12

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La conversin de binario a hexadecimal es similar, excepto que el nmero binario es dividido en grupos de cuatro dgitos. El nmero binario anterior se convierte a hexadecimal de la
siguiente manera:
(0010 1100 0110 1011. 1111 0000 0110)2 % (2C6B.F06)16
El dgito hexadecimal correspondiente para cada grupo de cuatro bits se obtiene de la Tabla 1-2.
La conversin de octal o hexadecimal a binario se consigue invirtiendo el procedimiento
anterior. Cada dgito octal se convierte en su equivalente binario de 3 bits y se aade 0 adicionales. De forma parecida, cada dgito hexadecimal se convierte a su equivalente binario de
4 bits. Esto se muestra en los siguientes ejemplos:
(673.12)8 % 110

111

011.

001 010 % (110111011.00101)2

(3A6.C)16 % 0011 1010 0110. 1100

% (1110100110.11)2

Rangos de los nmeros


En las computadoras digitales, el rango de los nmeros que se pueden representar est basado
en el nmero de bits disponibles en la estructura del hardware que almacena y procesa la informacin. El nmero de bits en estas estructuras son normalmente potencias de dos, como 8, 16,
32 y 64. Como el nmero de bits est predeterminado por las estructuras, la adicin de ceros al
principio y al final es necesario para representar los nmeros, as el rango de nmeros que pueden ser representados est tambin predeterminado.
Por ejemplo, para una computadora que procesa enteros sin signo de 16 bits, el nmero 537
est representado como 0000001000011001. El rango de enteros que pueden ser manejados por
esta representacin va de 0 a 216 . 1, eso es de 0 a 65 535. Si la misma computadora procesa
fracciones sin signo de 16 bits con el punto binario a la izquierda del dgito ms significativo,
entonces el nmero 0.375 est representado por 0.0110000000000000. El rango de fracciones
que se puede representar es de 0 a (216 . 1)/216, o de 0.0 a 0.9999847412.
En captulos posteriores, trabajaremos con representaciones de bits fijas y rangos para nmeros binarios con signo y nmeros en punto flotante. En ambos casos, algunos bits se usan
para representar otra informacin que simples valores enteros o fraccionados.

1-3 OPERACIONES ARITMTICAS


Las operaciones aritmticas con nmeros en base r siguen las mismas leyes que los nmeros
decimales. Sin embargo, si se usa una base diferente a la muy conocida base 10, hay que tener
cuidado en solamente usar los r dgitos permitidos y realizar todos los clculos con dgitos en
base r. Ejemplos para la suma de dos nmeros binarios son los siguientes:
Acarreos:

00000

101100

Sumando:

01100

10110

Sumando:

!10001

!10111

11101

101101

Suma:

La suma de dos nmeros binarios se calcula segn las mismas reglas que para los nmeros decimales, excepto que el dgito de la suma puede ser solamente 1 o 0. Asimismo, un acarreo en

COMPUTADORAS DIGITALES E INFORMACIN

13

binario aparece si la suma en alguna posicin es mayor que 1 (un acarreo en decimal aparece si
la suma en alguna posicin es mayor que 9). El acarreo generado en una posicin dada se suma
a los bits de la columna siguiente ms significativa. En el primer ejemplo, como todos los acarreos son 0, los bits resultantes son simplemente la suma de los bits de cada columna. En el
segundo ejemplo, la suma de los bits de la segunda columna a partir de la derecha es 2, resultando un bit igual a 0 y un bit de acarreo igual 1 (2 % 2 ! 0). El bit de acarreo se suma con los
1 de la tercera posicin, resultando una suma igual a 3, que produce un bit resultante igual a 1 y
un bit de acarreo igual a 1 (3 % 2 ! 1).
El siguiente ejemplo es una resta de dos nmeros binarios:

Las reglas para la resta son las mismas que en decimal, excepto que un acarreo dentro de una
columna dada suma 2 al bit del minuendo (un acarreo en el sistema decimal suma 10 al dgito
del minuendo). En el primer ejemplo presentado no se genera acarreo, as los bits de la diferencia son simplemente los bits del minuendo menos los bits a restar. En el segundo ejemplo, en la
posicin derecha, el bit para restar es 1 con un bit 0 en el minuendo, as es necesario un acarreo
de la segunda posicin, segn se ilustra. Esto da como resultado un bit de la diferencia en la
primera posicin de 1 (2 ! 0 . 1 % 1). En la segunda posicin, el acarreo est restado, as hace
falta otro acarreo. Recuerde que, en el caso de que el substraendo es ms grande que el minuendo, restamos el minuendo del substraendo y aadimos un signo negativo. As es en el caso del
tercer ejemplo, donde se muestra este intercambio de los dos operandos.
La ltima operacin a presentar es la multiplicacin binaria, que es bastante sencilla. Los
dgitos del multiplicador son siempre 0 o 1. Por tanto, los productos parciales son iguales al
multiplicando o a 0. Se demuestra la multiplicacin en el siguiente ejemplo:
Multiplicando:

1011

Multiplicador:

# 101
1011
0000
1011

Producto:

110111

Las operaciones aritmticas en octal, hexadecimal, o cualquier otro sistema en base r requieren normalmente la formulacin de tablas de las que se puede obtener sumas y productos de dos
dgitos en esta base. Una alternativa ms sencilla para sumar dos nmeros en base r es convertir
cada par de dgitos de una columna a decimal, sumar los dgitos en decimal, y despus convertir
el resultado correspondiente a la suma y al acarreo en el sistema de numeracin en base r. Ya
que la suma se lleva a cabo en decimal, nos podemos fiar de nuestra memoria para obtener las
entradas de la tabla de la suma en decimal. La secuencia de pasos para sumar los dos nmeros
hexadecimales 59F y E46 se muestra en el Ejemplo 1-1.

14

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EJEMPLO 1-1 Adicin hexadecimal


Realice la suma (59F)16 ! (E46)16:

Las columnas de clculo decimal equivalente a la derecha muestran el razonamiento mental que
hay que llevar a cabo para producir cada dgito de la suma hexadecimal. En vez de sumar F ! 6
en hexadecimal, sumamos los decimales equivalentes, 15 ! 6 % 21. Despus reconvertimos al
hexadecimal anotando que 21 % 16 ! 5. Esto da como resultado un dgito de suma de 5 y un
acarreo de 1 para la columna siguiente ms significativa. Las otras dos columnas se suman de
manera similar.

La multiplicacin de dos nmeros en base a r se puede conseguir haciendo todas las operaciones aritmticas en decimal y convirtiendo resultados intermediarios de uno en uno. Esto se
muestra con la multiplicacin de dos nmeros octales en el siguiente Ejemplo 1-2.

EJEMPLO 1-2 Multiplicacin octal


Realice la multiplicacin (762)8 # (45)8:

Los clculos de la derecha muestran los clculos mentales para cada par de dgitos octales. Los
dgitos octales 0 a 7 tienen el mismo valor que sus dgitos decimales correspondientes. La multiplicacin de dos dgitos octales ms un acarreo, derivado del clculo de la linea anterior, se
realiza en decimal, y el resultado se reconvierte en octal. El dgito izquierdo del resultado octal
de dos dgitos da lugar a un acarreo que hay que sumar al producto de dgitos de la linea siguiente. Los dgitos azules del resultado octal de los clculos decimales se copian a los productos parciales octales a la izquierda. Por ejemplo, (5 # 2)8 % (12)8. El dgito izquierdo, 1, es el
acarreo que hay que sumar al producto (5 # 6)8, y el ltimo dgito significativo, 2, es el dgito
correspondiente del producto parcial octal. Si no hay ningn dgito del producto al cual se puede sumar el acarreo, el acarreo est escrito directamente dentro del producto octal parcial, como
en el caso de 4 en 46.

COMPUTADORAS DIGITALES E INFORMACIN

15

Conversin de decimal a otras bases


La conversin de un nmero en base r a un decimal se realiza expandiendo el nmero en una
serie de potencias y sumando todos los trminos, como se mostr anteriormente. Presentamos
ahora un procedimiento general para la operacin inversa de convertir un nmero decimal a un
nmero en base r que est relacionado con la expansin alternativa a decimal en la Seccin 1-2.
Si el nmero incluye un punto decimal, es necesario separar el nmero en una parte entera y
una parte fraccionaria, ya que hay que convertir las dos partes de diferente manera. La conversin de un entero decimal a un nmero en base r se hace dividiendo el nmero en todos los
cocientes de r y acumulando los restos. Este procedimiento se explica mejor con un ejemplo.
EJEMPLO 1-3 Conversin de enteros decimales a octal
Convierta el nmero decimal 153 a octal:
La conversin es a base 8. Primero, se divide 153 por 8 que resulta en un cociente de 19 y un
resto 1, como ilustrado en negrita. Despus 19 es dividido por 8 lo que resulta en un cociente de
2 y un resto de 3. Finalmente, 2 es dividido por 8 resultando en un cociente de 0 y un resto de 2.
Los coeficientes del nmero octal deseado se obtiene de los restos:

Vase en el Ejemplo 1-3 que se lee los restos desde el ltimo hacia el primero, como se
indica mediante la flecha, para obtener el nmero convertido. Los cocientes se dividen por r
hasta que el resultado sea 0. Tambin podemos usar este procedimiento para convertir enteros
decimales a binario como se muestra en el Ejemplo 1-4. En este caso, la base del nmero convertido es 2, y asimismo, todas las divisiones hay que hacerlas por 2.
EJEMPLO 1-4 Conversin de enteros decimales a binario
Convierta el nmero decimal 41 a binario:
R

Por supuesto, se puede convertir el nmero decimal mediante la suma de potencias de dos:
(41)10 % 32 ! 8 ! 1 % (101001)2

16

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La conversin de una fraccin decimal en base r se logra mediante un mtodo similar al que
se usa para enteros, excepto que se usa la multiplicacin por r en vez de la divisin, y se acumulan enteros en vez de restos. Otra vez, se explica el mtodo mejor con un ejemplo.
EJEMPLO 1-5 Conversin de fracciones decimales a binario
Convierta el nmero decimal 0.6875 a binario:
Primero, se multiplica 0.6875 por 2 para conseguir un entero y una fraccin. La nueva fraccin
se multiplica por 2 para conseguir otro entero y otra fraccin. Se contina este procedimiento
hasta que la parte fraccionaria sea igual a 0 o hasta que haya suficientes dgitos para conseguir
exactitud suficiente. Los coeficientes del nmero binario se obtienen de los enteros de la manera siguiente:

Vase en el ejemplo anterior que se leen los enteros desde el primero hacia el ltimo, como
indica la flecha, para obtener el nmero convertido. En el ejemplo, aparece un nmero finito de
dgitos en el nmero convertido. El proceso de multiplicacin de fracciones por r no termina
necesariamente en cero, as que hay que decidir cuntos dgitos de la fraccin convertida se
usan. Asimismo, recuerde que las multiplicaciones son por el nmero r. Por eso, para convertir
una fraccin decimal al octal, tenemos que multiplicar las fracciones por 8, como muestra el
Ejemplo 1-6.
EJEMPLO 1-6 Conversin de fracciones decimales a octal
Convierta el nmero decimal 0.513 a una fraccin octal de tres dgitos:

La respuesta, a tres figuras significativas, se obtiene de los dgitos enteros. Note que el ltimo
dgito entero, 5, es usado para rondar en base 8 en el penltimo dgito, 6, para obtener
(0.513)10 % (0.407)8 .

La conversin de nmeros decimales con partes enteras y fraccionarias se realiza convirtiendo cada parte por separado y despus combinando los dos resultados. Usando los resultados de
los Ejemplos 1-3 y 1-6, obtenemos
(153.513)10 % (231.407)8

COMPUTADORAS DIGITALES E INFORMACIN

17

1-4 CDIGOS DECIMALES


El sistema numrico binario es el sistema ms natural para una computadora, pero las personas
estn acostumbradas al sistema decimal. Una posibilidad para resolver esa diferencia es convertir nmeros decimales a binario, realizar todos los clculos en binario y reconvertir los resultados binarios a decimal. Este mtodo requiere que guardemos los nmeros decimales en la computadora de una manera que facilite la conversin a binario. Como la computadora slo acepta
valores binarios, hay que representar los dgitos decimales mediante un cdigo de 1 y 0. Tambin es posible realizar las operaciones aritmticas directamente con nmeros decimales cuando
se guardan en la computadora de forma codificada.
Un cdigo binario de n bits es un grupo de n bits que implica hasta 2n combinaciones diferentes de 1 y 0, donde cada combinacin representa un elemento del conjunto codificado. Un
conjunto de cuatro elementos se puede codificar con un cdigo binario de 2 bits, donde cada
elemento est asignado a una de las siguientes combinaciones binarias: 00, 01, 10, 11. Un conjunto de 8 elementos requiere un cdigo de 3 bits, y un conjunto de 16 elementos requiere un
cdigo de 4 bits. Las combinaciones binarias de un cdigo de n bits se pueden determinar contando en binario de 0 a 2n . 1. A cada elemento hay que asignarle una nica combinacin binaria, no est permitido que dos elementos tengan el mismo valor; si no, el cdigo es ambiguo.
Un cdigo binario tendr algunas combinaciones binarias sin asignar si el nmero de elementos en un conjunto no es una potencia de 2. Los 10 dgitos decimales forman un conjunto
as. Un cdigo binario que distingue entre 10 elementos tiene que contener al menos cuatro bits,
pero 6 de las 16 combinaciones posibles permanecern sin asignar. Se pueden obtener numerosos
cdigos binarios diferentes colocando los cuatro bits con 10 combinaciones diferentes. El cdigo usado ms comn para los dgitos decimales es la asignacin binaria directa enumerada en la
Tabla 1-2. Se llama decimal codificado en binario (en ingls binary-coded decimal ) o BCD.
Tambin son posibles otros cdigos decimales, algunos de ellos se presentan en el Captulo 3.
La Tabla 1-3 muestra un cdigo de 4 bits para cada dgito decimal. Un nmero con n dgitos decimales requiere 4n bits en BCD. As, el nmero decimal 396 se representa en BCD con
12 bits como
0011

1001

0110

TABLA 1-3
Decimal codificado en binario (BCD)
Smbolo
decimal

Dgito
BCD

0
1
2
3
4
5
6
7
8
9

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001

18

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

donde cada grupo de cuatro bits representa un dgito decimal. Un nmero decimal en BCD es lo
mismo que su nmero equivalente binario si es un nmero entre 0 y 9, incluido. Un nmero
BCD ms grande que 10 tiene una representacin diferente de su nmero binario equivalente,
aunque ambos contienen 1 y 0. Adems, las combinaciones binarias 1010 hasta 1111 no se usan
y no tienen significado en el cdigo BCD.
Considere decimal 185 y su valor correspondiente en BCD y binario:
(185)10 % (0001

1000

0101)BCD % (10111001)2

El valor BCD tiene 12 bits, pero su nmero equivalente binario necesita solamente 9 bits. Es
obvio que un nmero en BCD necesita ms bits que su valor binario equivalente. No obstante,
hay una ventaja en el uso de nmeros decimales porque los datos de entrada y salida se manejan
por personas que usan el sistema decimal. Nmeros BCD son nmeros decimales y no binarios,
aunque estn representados con bits. La nica diferencia entre un nmero decimal y BCD es
que los nmeros decimales se escriben con los smbolos 0, 1, 2, ..., 9, y los nmeros BCD usan
los cdigos binarios 0000, 0001, 0010, ..., 1001.

Suma en BCD
Considere la suma de dos dgitos decimales en BCD, junto con un posible acarreo igual a 1,
resultado de un par de dgitos anteriores menos significantivos. Como ningn dgito excede de
9, la suma no puede ser mayor que 9 ! 9 ! 1 % 19, donde 1 es el acarreo. Supongamos que
sumamos los dgitos BCD como si tuviramos nmeros binarios. Entonces, la suma binaria produce un resultado de 0 a 19. En binario, esto ser de 0000 a 10011, pero en BCD, podra ser de
0000 a 1 1001, donde el primer 1 es el acarreo y los siguientes cuatro bits son la suma en BCD.
Si la suma binaria es menor que 1010 (sin acarreo), el dgito BCD correspondiente es correcto.
Pero si la suma binaria es mayor o igual que 1010, el resultado es un dgito BCD no vlido. La
adicin de 6 en binario, (0110)2, a la suma, lo convierte en el dgito correcto y adems produce
el acarreo decimal requerido. La razn es que la diferencia de un acarreo de la posicin ms
significativa de la suma binaria y un acarreo decimal es 16 . 10 % 6. Por eso, el acarreo decimal y el dgito correcto de la suma BCD se fuerzan sumando un 6 en binario. Considere el
siguiente ejemplo de suma de tres dgitos en BCD.
EJEMPLO 1-7 Adicin BCD

Para cada posicin, se suman los dos dgitos BCD como si fuesen dos nmeros binarios. Si la
suma binaria es mayor que 1001, sumamos 0110 para obtener la suma de BCD correcta y un
acarreo. En la columna derecha, la suma binaria es igual a 17. La presencia del acarreo indica

COMPUTADORAS DIGITALES E INFORMACIN

19

que la suma es mayor que 16 (indudablemente mayor que 9), con lo cual se necesita una correcin. La adicin de 0110 produce la suma correcta en BCD, 0111 (7), y un acarreo de 1. En la
siguiente columna, la suma binaria es 1101 (13), un dgito BCD no vlido. La adicin de 0110
produce la suma BCD correcta, 0011 (3), y un acarreo de 1. En la ltima columna, la suma es
igual a 1001 (9) y es el dgito BCD correcto.

Bit de paridad
Para detectar errores en la comunicacin y el procesamiento de datos, a veces se aade un bit
adicional a una palabra de cdigo binario para definir su paridad. Un bit de paridad es un extra
bit incluido para conseguir que la cantidad de 1 en la palabra de cdigo resultante sea o par o
impar. Considere los dos caracteres siguientes y su paridad par o impar:

1000001
1010100

Con paridad par

Con paridad impar

01000001
11010100

11000001
01010100

En cada caso usamos el bit extra en la posicin ms a la izquierda del cdigo para producir un
nmero par de 1 en el caracter para la paridad par o un nmero impar de 1 en el carcter para la
paridad impar. En general, se usan ambas paridades, siendo la paridad par la ms comn. Se
puede usar paridad tanto con numeros binarios como con cdigos, incluyendo ASCII para los
caracteres, y se puede emplazar el bit de paridad en cualquier posicin fija del cdigo.
El bit de paridad es til para detectar errores durante la transmisin de informacin de un
sitio a otro. Asumiendo que se usa paridad par, el caso ms simple se trata de la manera siguiente: se genera un bit de paridad par (o impar) en el emisor para todos los caracteres ASCII de 7
bits; se transmiten los caracteres de 8 bits, que incluyen los bits de paridad, hacia su destino. En
el destino se comprueba la paridad de cada carcter; si la paridad de un carcter recibido no es
par (impar), significa que al menos un bit ha cambiado su valor durante la transmisin. Este
mtodo detecta uno, tres o cada nmero impar de errores en cada carcter transmitido. Un nmero par de errores no se detecta. Otros cdigos de deteccin de errores, de los cuales algunos
se basan en bits de paridad, pueden ser necesarios para vigilar los nmeros pares de errores. Lo
que se hace despus de detectar un error depende de la aplicacin particular. Una posibilidad es
pedir una retransmisin del mensaje suponiendo que el error fue por azar y no ocurrir otra vez.
Por eso, el receptor, si detecta un error de paridad, devuelve un NAK (reconocimiento negativo,
del ingls negative acknowledge), que es un carcter de control que consiste en 8 bits con paridad par, 10010101, de la Tabla 1-5. Si no se detecta ningn error, el receptor devuelve un carcter de control ACK (confirmacin, del ingls acknowledge), 00000110. El emisor contestar a
un NAK transmitiendo otra vez el mismo mensaje, hasta que se recibe la paridad correcta. Si la
transmisin todava tiene fallos despus de un cierto nmero de intentos, se indica un mal funcionamiento en el camino de transmisin.

1-5 CDIGOS GRAY


Cuando se cuenta adelante o atrs usando cdigos binarios, el nmero de bits que cambian de
un valor binario a otro vara. Esto se muestra en el cdigo binario para los dgitos octales a la
izquierda de la Tabla 1-4. Como contamos de 000 a 111 y saltamos a 000, el nmero de bits
que cambia entre los valores binarios flucta de 1 a 3.

20

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 1-4
Cdigo Gray
Cdigo
binario

Bits
cambiados

Cdigo
Gray

Bits
cambiados

000
001
010
011
100
101
110
111
000

1
2
1
3
1
2
1
3

000
001
011
010
110
111
101
100
000

1
1
1
1
1
1
1
1

En muchas aplicaciones, mltiples cambios de bits como las cuentas circulares no presentan
problemas. Pero hay aplicaciones donde un cambio de ms de un bit contando hacia adelante o
atrs puede causar problemas serios. Uno de estos problemas se ilustra mediante un codificador
ptico de posicin angular mostrado en la Figura 1-3(a). El codificador es un disco fijado en un
eje giratorio para medir la posicin rotatoria del eje. El disco contiene reas transparentes para
el 1 binario y opacas para el 0. Una fuente de luz est posicionada en un lado del disco, y los
sensores pticos, uno para cada de los bits a codificar, se encuentran en el otro lado del disco. Si
hay una regin transparente entre la fuente y el sensor, el sensor reacciona a la luz con una
salida binaria igual a 1. Si hay una regin opaca entre la fuente y el sensor, el sensor reacciona a
la oscuridad con una salida binaria igual a 0.
Sin embargo, el eje giratorio puede estar en una posicin angular. Por ejemplo, suponga que
el eje y el disco se posicionan de manera que los sensores estn justamente en el borde entre
011 y 100. En este caso, los sensores de las posiciones B2, B1 y B0 tienen la luz parcialmente
bloqueada. En una situacin como esa no est claro si los sensores ven luz o oscuridad. Como
resultado, cada sensor puede producir o 1 o 0. As el nmero binario codificado resultante para
un valor entre 3 y 4 puede ser 000, 001, 010, 011, 100, 101, 110 o 111. Tanto 011 como 100
sern adecuados en este caso, pero los otros 6 valores son claramente errneos.
111

000

100

000

B0
110

101

B1
B2

001

101

010

111

100
011
(a) Cdigo binario para las posiciones de 0 a 7

001

G0

G1

G2
011

110
010
(b) Cdigo Gray para las posiciones de 0 a 7

FIGURA 1-3
Codificador ptico de posicin angular

COMPUTADORAS DIGITALES E INFORMACIN

21

La solucin a este problema parece evidente si uno se da cuenta de que en los casos donde
cambia slo un bit de valor al siguiente o anterior, este problema no puede ocurrir. Por ejemplo,
si los sensores estn en el borde entre 2 y 3, el cdigo resultante es o 010 o 011, los dos son
satisfactorios. Si cambiamos la codificacin de los valores de 0 a 7 de la manera que solo cambia un bit contando hacia delante o atrs (incluyendo saltos de 7 a 0), entonces la codificacin
va a ser satisfactoria para todas las posiciones. Un cdigo con la propiedad de que un solo bit
cambia durante la cuenta es un Cdigo Gray. Hay varios cdigos Gray para cada conjunto de n
enteros consecutivos, si n es par.
Un Cdigo Gray para los dgitos octales, llamado Cdigo Gray binario reflectado (del ingls binary reflected Gray code), aparece a la derecha de la Tabla 1-4. Note que el orden para
contar cdigos binarios es ahora 000, 001, 011, 010, 110, 111, 101, 100 y 000. Si queremos
cdigos binarios para su procesamiento, podemos construir un circuito binario o usar software
que convierta estos cdigos a binario antes de usarlos en el siguiente proceso de la informacin.
La Figura 1-3(b) presenta el codificador ptico de posicin angular usando el Cdigo Gray
de la Tabla 1-4. Note que cada dos segmentos adyacentes en el disco slo tienen una regin
transparente para uno y opaca para el otro. El Cdigo Gray lleva su nombre por Frank Gray
quien patent su uso para codificadores pticos de posicin angular en 1953.
El codificador ptico de posicin angular ilustra un uso del concepto del Cdigo Gray. Hay
muchos otros usos parecidos donde una variable fsica, como posicin o voltaje, tiene un rango
continuo de valores que se convierte a una representacin digital. Un uso bastante diferente de
cdigos Gray aparece en circuitos lgicos CMOS (Complementary Metal Oxide Semiconductor)
de bajo consumo que cuentan hacia delante y atrs. En CMOS, solamente se consume energa
cuando cambia un bit. Para los cdigos de ejemplo de la Tabla 1-4 con conteo continuo (o hacia
delante o atrs), hay 14 cambios de bits contando en binario para cada 8 cambios de bits usando
el Cdigo Gray. As, la energa consumida en las salidas del contador de Gray es solamente
57% de lo que se consume en las salidas del contador binario.
Un Cdigo Gray para una secuencia de cuenta de n palabras de cdigo binario (n tiene que
ser par) puede ser construida sustituyendo cada de los primeros n/2 nmeros de la secuencia por
una palabra de cdigo que consista en un 0 seguido de la paridad par para cada bit de la palabra
de cdigo binario con el bit a su izquierda. Por ejemplo, para la palabra de cdigo binario 0100,
la palabra de Cdigo Gray es 0, paridad (0,1), paridad (1,0), paridad (0,0) % 0110. Despus,
coge la secuencia de nmeros formada y copiala en orden inverso con el 0 ms a la izquierda
sustituido por 1. Esta nueva secuencia proporciona las palabras de Cdigo Gray para los siguientes n/2 de las n palabras de cdigo originales. Por ejemplo, para cdigos BCD, las primeros cinco palabras son 0000, 0001, 0011, 0010 y 0110. Invirtiendo el orden de estos cdigos y
reemplazando el 0 ms a la izquierda con 1, obtenemos 1110, 1010, 1011, 1001 y 1000 para los
ltimos cinco Cdigos Gray.
Para casos especiales donde los cdigos binarios originales son de 0 a 2n . 1, cada palabra
de Cdigo Gray puede formarse directamente de la palabra del cdigo binario correspondiente
copiando su bit ms a la izquierda y despus reemplazando cada uno de los bits sobrantes con el
bit de paridad par para el bit del nmero y el bit a su izquierda.

1-6

CDIGOS ALFANUMRICOS
Muchas aplicaciones para computadoras digitales requieren el manejo de datos que no solamente consisten en nmeros, sino tambin en letras. Por ejemplo, una compaa de seguros con
miles de asegurados usa una computadora para procesar sus ficheros. Para representar los nom-

22

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

bres y otra informacin pertinente, es necesario formular un cdigo binario para las letras del
alfabeto. Adems, el mismo cdigo binario tiene que representar nmeros y caracteres especiales
como $. Cada conjunto alfanumrico en ingls es un conjunto de elementos que incluye los 10
dgitos decimales, las 26 letras del alfabeto, y algunos (ms que tres) caracteres especiales. Si se
incluyen solamente las maysculas, necesitamos un cdigo binario de al menos seis bits, y si se
incluyen las maysculas y las minsculas necesitamos un cdigo binario de al menos siete bits.
Los cdigos binarios tienen un papel muy importante en las computadoras digitales. Los cdigos
tienen que ser binarios, porque la computadora solamente entiende 1 y 0. Note que la codificacin
binaria cambia solamente los smbolos, no el significado de los elementos codificados.

Cdigo ASCII para caracteres


El cdigo estndar para caracteres alfanumricos se llama ASCII (Cdigo estandarizado americano para intercambio de informacin, American Standard Code for Information Interchange).
Usa siete bits para codificar 128 caracteres, segn se muestra en la Tabla 1-5. Los siete bits del
cdigo se indican como B1 hasta B7, donde B7 es el bit ms significativo. Note que los tres bits
ms significativos del cdigo determinan la columna y los cuatro bits menos significantes la fila
de la tabla. La letra A, por ejemplo, es representada en ASCII por 1000001 (columna 100, fila
0001). El cdigo ASCII contiene 94 caracteres que pueden ser imprimidos y 34 caracteres no
imprimibles usados para varias funciones de control. Los caracteres imprimibles consisten en 26
letras maysculas, 26 letras minsculas, 10 cifras y 32 caracteres especiales imprimibles como
%, @, y $.
Los 34 caracteres de control se indican en la tabla de ASCII con nombres abreviados. Se
muestran otra vez debajo de la tabla con sus nombres completos funcionales. Los caracteres de
control se usan para el encaminamiento de datos y colocar el texto impreso en un formato predefinido. Hay tres tipos de caracteres de control: efectos de formato, separadores de informacin, y caracteres de control de comunicacin. Los efectos de formato son caracteres que controlan el diseo de la impresin. Incluyen los controles conocidos de la mquina de escribir
como el retroceso (backspace, BS), tabulador horizontal (horizontal tabulation, HT), y retorno
de carro (carriage return, CR). Los separadores de informacin se usan para separar los datos
en divisiones, por ejemplo, prrafos y pginas. Incluyen caracteres como el separador de registro (record separator, RS) y separador de ficheros ( file separator, FS). Los caracteres de control de comunicaciones se usan durante la transmisin de un texto de un sitio a otro. Ejemplos
de caracteres de control de comunicacin son STX (inicio de de texto, start of text) y ETX (final de texto, end of text), que se usan para enmarcar un mensaje de texto transmitido mediante
comunicacin sobre hilos.
ASCII es un cdigo de 7 bits, pero la mayora de las computadoras manipulan una cantidad
de 8 bits como una unidad llamada byte. Por eso, se guardan los caracteres ASCII, normalmente, uno por byte, con el bit ms significativo puesto en 0. El bit extra se usa a veces para
fines especficos, dependiendo de la aplicacin. Por ejemplo, algunas impresoras reconocen 128
caracteres adicionales de 8 bits, con el bit ms significativo puesto en 1. Estos caracteres habilitan la impresora para producir smbolos adicionales, como por ejemplo los del alfabeto griego o
caracteres con marcas de acentos como se usan en idiomas diferentes al ingls.
UNICODE Hay disponible un apndice sobre Unicode, un cdigo estndar de 16 bits para
representar los smbolos y grficos de lenguajes de todo el mundo, en la pgina Web de
(http://www.librosite.net/mano) de este libro.

COMPUTADORAS DIGITALES E INFORMACIN

23

TABLA 1-5
American Standard Code for Information Interchange (ASCII)
B7B6B5
B4B3B2B1

000

001

010

011

100

101

110

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

NULL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI

DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US

SP
!
"
#
$
%
&
'
(
)
*
!
,
.
/

0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O

P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^

`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o

111
p
q
r
s
t
u
v
w
x
y
z
{
8
}
~
DEL

Caracteres de control:
NULL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
SP

NULL
Inicio del cabecero
Inicio del texto
Fin del texto
Fin de la transmisin
Peticin
Confirmacin
Timbre
Retroceso
Tab. horizontal
Line feed
Tab. vertical
Form feed
Retorno de carro
Desplazamiento hacia fuera
Desplazamiento hacia dentro
Espacio

DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
DEL

Data link escape


Control de dispositivo 1
Control de dispositivo 2
Control de dispositivo 3
Control de dispositivo 4
Acknowledge negativo
Espera Sncrona
Fin del bloque de transmisin
Cancelar
Fin del medio
Sustituir
Escape
Separador de fichero
Separador de grupo
Separador de registro
Separador de unidad
Borrar

24

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

1-7 SUMARIO DEL CAPTULO


En este captulo hemos presentado los sistemas digitales y las computadoras digitales y hemos
ilustrado porque estos sistemas usan seales con dos valores solamente. Hemos introducido brevemente la estructura de la computadora mediante un diagrama de bloques discutiendo a la vez
la naturaleza de los bloques. Se han presentado los conceptos de sistemas numricos, incluyendo base y punto de base. Por su correspondencia con las seales de dos valores, se han presentado en detalle los nmeros binarios. El sistema de numeracin octal (base 8) y hexadecimal (base
16) tambin han sido enfatizados, al ser tiles como notacin taquigrfica para el cdigo binario. Las operaciones aritmticas en otras bases distintas de 10 y la conversin de nmeros de
una base a otra se han cubierto. Por el predominio del sistema de numeracin decimal en el uso
comn, se ha tratado el cdigo BCD. Se ha presentado el bit de paridad como tcnica para deteccin de errores, y el cdigo Gray, que es crtico para ciertas aplicaciones, se ha descrito. Finalmente, se ha presentado la representacin de informacin en forma de caracteres en vez de
nmeros mediante el cdigo ASCII para el alfabeto ingls.
En los captulos siguientes, trataremos la representacin de nmeros con signo y nmeros de
punto flotante. Tambin introduciremos cdigos adicionales para dgitos decimales. Aunque estos temas se ajustan bien en los temas incluidos en este captulo, son difciles de justificar sin
asociarles con el hardware usado para implementar las operaciones que se denotan. As, retrasamos su presentacin hasta que examinemos su hardware asociado.

REFERENCIAS
1. GRAY, F.: Pulse Code Communication. U. S. Patent 2 632 058, March 17, 1953.
2. MANO, M. M.: Computer Engineering: Hardware Design. Englewood Cliffs, NJ: Prentice
Hall, 1988.
3. MANO, M. M.: Digital Design, 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 2002.
4. MANO, M. M.: Computer System Architecture, 3rd ed. Englewood Cliffs, NJ: Prentice Hall,
1993.
5. PATTERSON, D. A., and HENNESSY, J. L.: Computer Organization and Design: The Hardware/Software Interface. 2nd ed. San Mateo, CA: Morgan Kaufmann, 1998.
6. TANENBAUM, A. S.: Structured Computer Organization, 4th ed. Upper Saddle River, NJ:
Prentice Hall, 1999.
7. WHITE, R.: How Computers Work, Emeryville, CA: Ziff-Davis Press, 1993.
8. WILLIAMS, M. R.: A History of Computing Technology. Englewood Cliffs, NJ: PrenticeHall, 1985.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que hay una solucin
disponible en la direccin de Internet: http://www.librosite.net/Mano.
1-1. *Enumere los nmeros binarios, octales, y hexadecimales de 16 a 31.
1-2. Cul es el nmero exacto de bits en una memoria que contiene (a) 48 Kbits; (b) 384
Mbits; (c) 8 Gbits?

COMPUTADORAS DIGITALES E INFORMACIN

25

1-3. Cul es el nmero decimal equivalente del entero binario ms grande que se puede obtener con (a) 12 bits y (b) 24 bits?
1-4. *Convierta los nmeros binarios siguientes a decimal: 1001101, 1010011.101 y
10101110.1001.
1-5. Convierta los siguientes nmeros decimales a binario: 125, 610, 2003 y 18944.
1-6. Cada uno de los siguientes cinco nmeros tiene una base diferente: (11100111)2, (22120)3,
(3113)4, (4110)5, y (343)8. Cul de los cinco nmeros tienen el mismo valor en decimal?
1-7. *Convierta los nmeros siguientes de una base dada a las otras tres bases enumeradas en
la tabla:
Decimal

Binario

Octal

Hexadecimal

369.3125
?
?
?

?
10111101.101
?
?

?
?
326.5
?

?
?
?
F3C7.A

1-8. *Convierta los siguientes nmeros decimales a las bases indicadas usando los mtodos de
los Ejemplos 1-3 y 1-6:
(a) 7562.45 a octal

(b) 1938.257 a hexadecimal

(c) 175.175 a binario

1-9. *Realice la siguiente conversin usando base 2 en vez de base 10 como base intermedia
para la conversin:
(a) (673.6)8 a hexadecimal

(b) (E7C.B)16 a octal

(c) (310.2)4 a octal

1-10. Realice las multiplicaciones binarias siguientes:


(a) 1101 # 1001

(b) 0101 # 1011

(c) 100101 # 0110110

1-11. !La divisin est compuesta por multiplicaciones y substracciones. Realice la divisin
binaria 1011110 $ 101 para obtener el cociente y el resto.
1-12. Hay una evidencia considerable en suponer que la base 20 ha sido usada histricamente
para sistemas numricos en algunas culturas.
(a) Escriba los dgitos para un sistema en base a 20, usando una extensin del mismo
esquema de representacin de dgitos empleado para hexadecimal.
(b) Convierta (2003)10 a la base 20. (c) Convierta (BCH.G)20 al decimal.
1-13. *En cada uno de los siguientes casos, determine el la base r:
(a) (BEE)r % (2699)10

(b) (365)r % (194)10

1-14. El clculo siguiente ha sido realizado por una especie particular de pollos extraordinariamente inteligentes. Si la base r usada por el pollo corresponde a su numero total de dedos,
cuantos dedos tiene el pollo en cada pata?
((35)r ! (24)r) # (21)r % (1501)r
1-15. *Represente los nmeros decimales 694 y 835 en BCD, e indique despus los pasos necesarios para formar su suma.

26

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

1-16. *Encuentre las representaciones binarias para cada uno de los siguientes nmeros BCD:
(a) 0100 1000 0110 0111 (b) 0011 0111 1000.0111 0101
1-17. Enumere los nmeros binarios equivalentes de 5 bits para 16 hasta 31 con un bit de paridad aadido en la posicin ms a la derecha dando paridad impar para la totalidad de
nmeros de 6 bits. Repita para paridad par.
1-18. Usando el procedimiento dado en la Seccin 1-5, encuentre el Cdigo Gray para dgitos
hexadecimales.
1-19. !Cul es el porcentaje de energa consumida por un contador continuo (o hacia delante
o hacia detrs, no ambos) en las salidas de un contador de Cdigo Gray binario comparado con un contador binario en funcin del nmero de bits, n, en los dos contadores?
1-20. Qu posicin del bit en cdigo ASCII tiene que ser complementado para cambiar la letra
ASCII representada de maysculas a minsculas y al revs?
1-21. Escriba su nombre completo en ASCII, usando un cdigo de 8 bits (a) con el bit ms a la
izquierda siempre en 0 y (b) con el bit ms a la izquierda seleccionado para producir paridad par. Incluya un espacio entre los nombres y un punto despus de l.
1-22. Decodifique el cdigo ASCII siguiente: 1001010 1101111 1101000 1101110 0100000
1000100 1101111 1100101.
1-23. *Indique la configuracin de bits que representa al nmero decimal 365 en (a) binario,
(b) BCD, (c) ASCII.
1-24. Una computadora representa informacin en grupos de 32 bits. Cuantos enteros diferentes
se pueden representar en (a) binario, (b) BCD, y (c) 8-bit ASCII, todos usando 32 bits?

CAPTULO

2
CIRCUITOS LGICOS
COMBINACIONALES

n este captulo estudiaremos las puertas, los elementos lgicos ms sencillos usados en los sistemas digitales. Adems, aprenderemos las tcnicas
matemticas usadas en el diseo de circuitos con esas puertas y cmo disear
circuitos eficientes en coste. Estas tcnicas, que son fundamentales para disear casi
todos los circuitos digitales, se basan en el lgebra de Boole. Un aspecto del diseo
es evitar circuitos innecesarios y costes excesivos, una meta que se cumple mediante
una tcnica llamada optimizacin. Los Mapas de Karnaugh proporcionan un mtodo
grfico para mejorar el entendimiento de optimizacin y solucionar pequeos problemas de circuitos con dos niveles. Se introducen los mtodos ms generales de
optimizacin para circuitos con ms de dos niveles. Se discuten los tipos de puertas
lgicas caractersticas en la realizacin de los circuitos integrados actuales. Se presentan las puertas OR y NOR exclusiva, junto con las tcnicas algebraicas asociadas.
En trminos del diagrama del principio del Captulo 1, los conceptos de este captulo se pueden aplicar a la mayor parte de la computadora genrica. Las excepciones
a esto son circuitos que son, principalmente, memorias, como cachs y RAM, y circuitos analgicos en el monitor y el controlador del disco duro. Sin embargo, con su uso
por todas partes del diseo de la mayor parte de la computadora, lo que estudiaremos
en este captulo es fundamental para un entendimiento profundo de las computadoras
y los sistemas digitales, y cmo estn diseados.

28 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

2-1 LGICA BINARIA Y PUERTAS


Los circuitos digitales son componentes de hardware que manipulan informacin binaria. Los
circuitos se realizan con transistores e interconexiones en complejos dispositivos de semiconductores llamados circuitos integrados. A cada circuito bsico se le denomina puerta lgica.
Por simplicidad en el diseo, modelamos los circuitos electrnicos basados en transistores como
puertas lgicas. As, el diseador no tiene que preocuparse por la electrnica interna de cada
una de las individuales, sino solamente por sus propiedades lgicas externas. Cada puerta realiza una operacin lgica especfica. Las salidas de las puertas se aplican a las entradas de otras
puertas para formar un circuito digital.
Para describir las propiedades operacionales de los circuitos digitales es necesario introducir
una notacin matemtica que especifica la operacin de cada puerta y que puede ser usada para
analizar y disear circuitos. Este sistema de lgica binaria es una clase de sistema matemtico
que se denomina lgebra de Boole. El nombre es en honor al matemtico ingls George Boole,
quien public un libro en 1854 introduciendo la teora matemtica de la lgica. El lgebra especfica de Boole que estudiaremos se usa para describir la interconexin de las puertas digitales y
para disear circuitos lgicos a travs del uso de expresiones booleanas. Primero introducimos
el concepto de lgica binaria e indicamos su relacin con las puertas digitales y las seales binarias. Despus presentamos las propiedades del lgebra de Boole, junto con otros conceptos y
mtodos tiles en el diseo de circuitos lgicos.

Lgica binaria
La lgica binaria trabaja con variables binarias, que pueden tomar dos valores discretos, y con
las operaciones lgicas matemticas aplicadas a esas variables. A los dos valores que pueden
tomar las variables se les pueden llamar por diferentes nombres, como se mencion en la Seccin 1-1, pero para nuestro propsito, es conveniente pensar en trminos de valores binarios y
asignar 1 o 0 a cada variable. En la primera parte de este libro, se designan a las variables con
las letras del alfabeto, como A, B, C, X, Y, y Z. Ms tarde se extiende esta notacin para incluir
cadenas de letras, nmeros y caracteres especiales. Asociados con las variables binarias hay tres
operaciones lgicas llamadas AND, OR y NOT:
1.

AND. Esta operacin est representada por un punto o por la ausencia de un operador.
Por ejemplo, Z % X Y o Z % XY se lee Z es igual a X AND Y. La operacin lgica
AND se interpreta de manera que Z % 1 si y solamente si X % 1 e Y % 1; de lo contrario
es Z % 0. (Recuerde que X, Y y Z son variables binarias y solamente pueden tener los
valores 1 o 0.)
2. OR. Esta operacin se representa por el smbolo ms. Por ejemplo, Z % X ! Y se lee
Z es igual a X OR Y, lo que significa que Z % 1 si X % 1 o si Y % 1, o si los dos
X % 1 e Y % 1. Z % 0 si y solamente si X % 0 e Y % 0.
3. NOT. Esta operacin est representada por una barra encima de la variable. Por ejemplo, Z % X1 se lee Z es igual a NOT X, lo que significa que Z es lo que X no es. En
otras palabras, si X % 1, entonces Z % 0, pero si X % 0, entonces Z % 1. A la operacin
NOT se le denomina tambin como operacin complementaria, ya que cambia un 1 a 0
y un 0 a 1.
Lgica binaria se parece a la aritmtica binaria, y las operaciones AND y OR se parecen a la
multiplicacin y la suma, respectivamente. Por eso los smbolos usados para la AND y la OR

CIRCUITOS LGICOS COMBINACIONALES

29

son los mismos que los que se usan para la multiplicacin y la suma. Sin embargo, no se debe
confundir la lgica binaria con la aritmtica binaria. Uno debera darse cuenta de que una variable aritmtica define a un nmero que se puede componer de muchos dgitos, mientras una variable lgica siempre es 1 o 0. Las siguientes ecuaciones definen la operacin lgica OR:
0!0%0
0!1%1
1!0%1
1!1%1
Esto se parece a la suma binaria, excepto para la ltima operacin. En la lgica binaria, tenemos
que 1 ! 1 % 1 (lase uno o uno es igual a uno), pero en la aritmtica binaria tenemos
1 ! 1 % 10 (lase uno ms uno es igual a dos). Para evitar ambiguedad, a veces se usa el
smbolo o para la operacin OR en vez del smbolo !. Pero mientras no se mezclen operaciones aritmticas y lgicas, en cada parte se puede usar el smbolo ! con su propio significado
independiente.
Las siguientes ecuaciones definen la operacin lgica AND:
00%0
01%0
10%0
11%1
Esta operacin es idntica a la multiplicacin binaria, con tal de que se use solamente un nico
bit. Los smbolos alternativos para el de la AND y el ! de la OR, son los smbolos p y o,
respectivamente, que representan operaciones conjuntivas y disyuntivas en clculos proposicionales.
Para cada combinacin de los valores de variables binarias como X e Y, hay un valor de Z
especificado por la definicin de la operacin lgica. Las definiciones pueden ser enumeradas
de forma compacta en una tabla de verdad. Una tabla de verdad para una operacin es una tabla
de combinaciones de las variables binarias que muestran la relacin entre los valores que toman
las variables y los valores del resultado de la operacin. Las tablas de verdad para las operaciones AND, OR y NOT se muestran en la Tabla 2-1. Las tablas enumeran todas las combinaciones posibles de valores para dos variables y el resultado de la operacin. Demuestran claramente la definicin de las tres operaciones.

Puertas lgicas
Las puertas lgicas son circuitos electrnicos que operan con una o ms seales de entrada para
producir una seal de salida. Las seales elctricas como voltaje o corriente existen en todas las
partes de un sistema digital en cada uno de los dos valores definidos. Los circuitos que operan
con voltajes responden a dos rangos separados de voltajes que representan una variable binaria
igual a un 1 lgico o a un 0 lgico, como se ilustra en la Figura 1-1. Los terminales de entrada

30 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 TABLA 2-1
Tablas de verdad para las tres operaciones lgicas bsicas
AND

OR

NOT

Z%XY

Z%X!Y

Z % X1

0
0
1
1

0
1
0
1

0
0
0
1

0
0
1
1

0
1
0
1

0
1
1
1

0
1

1
0

de las puertas lgicas aceptan seales binarias dentro del rango permitido y responden a los terminales de salida con seales binarias que caen dentro de un rango especfico. Las regiones
intermedias entre los rangos permitidos de la figura se cruzan solamente durante los cambios de
1 a 0 o de 0 a 1. A estos cambios se le llaman transiciones, y las regiones intermediarias se
llaman regiones de trnsito.
Los smbolos grficos usados para designar los tres tipos de puertas AND, OR y NOT
se muestran en la Figura 2-1(a). Las puertas son circuitos electrnicos que producen los equivalentes a las seales de salida de 1 lgico y 0 lgico, de acuerdo con sus respectivas tablas de
verdad, si se aplican el equivalente de las seales de entrada de 1 lgico y 0 lgico. Las dos
seales de entrada X e Y de las puertas AND y OR toman una de cuatro combinaciones: 00, 01,
10, o 11. Estas seales de entrada se muestran en los diagramas de tiempos de la Figura 2-1(b),
junto con los diagramas de tiempos de las seales de salida correspondientes a cada tipo de
puerta. El eje horizontal de un diagrama de tiempos representa el tiempo, y el eje vertical muestra una seal cuando cambia entre los dos posibles niveles de voltaje. El nivel bajo representa
X
Y

ZXY

ZXY

Puerta NOT
o inversor

Puerta OR

Puerta AND

(a) Smbolo grfico


X

(AND) X Y

XY

(OR)

(NOT) X

ZX

(b) Diagrama de tiempos

 FIGURA 2-1
Puertas lgicas digitales

CIRCUITOS LGICOS COMBINACIONALES

A
B
C

F  ABC

(a) Puerta AND de tres entradas

A
B
C
D
E
F

31

GABCDEF
(b) Puerta OR de seis entradas

 FIGURA 2-2
Puertas con ms que dos entradas

el 0 lgico y el nivel alto representa el 1 lgico. La puerta AND se corresponde con una seal
de salida a 1 lgico cuando las dos seales de entrada son un 1 lgico. La puerta OR responde
con una seal de salida a 1 lgico si una de las seales de entrada es un 1 lgico. A la puerta
NOT se le llama frecuentemente como inversor. La razn para este nombre es evidente por su
respuesta en el diagrama de tiempos. La seal lgica de la salida es una versin invertida de la
seal lgica de la entrada X.
Las puertas AND y OR pueden tener ms de dos entradas. En la Figura 2-2 se muestra una
puerta AND con tres entradas y una puerta OR con seis entradas. La puerta AND de tres entradas responde con una salida a 1 lgico si las tres entradas son 1 lgico. La salida es un 0 lgico
si alguna de las entradas es un 0 lgico. La puerta OR de seis entradas responde con un lgico 1
si alguna de las entradas es un 1 lgico; su salida ser un 0 lgico solamente cuando todas las
entradas son 0 lgico.

2-2 LGEBRA DE BOOLE


El lgebra de Boole que presentamos es un lgebra que trata con variables binarias y operaciones lgicas. Las variables se indican con las letras del alfabeto y las operaciones bsicas son
AND, OR y NOT (complemento). Una expresin booleana es una expresin algebraica formada
por variables binarias, las constantes 0 y 1, los smbolos de operacin lgicos y parntesis. Una
funcin booleana se puede describir con una ecuacin booleana que se compone de una variable
binaria que identifica la funcin seguida por un smbolo de igualdad y una expresin booleana.
Opcionalmente, al identificador le pueden seguir parntesis que rodean a una lista de las variables de la funcin separadas por comas. Una funcin booleana con nica salida se tabula a
partir de cada combinacin posible de valores 0 y 1 entre las variables de la funcin al valor 0
o 1. Una funcin booleana con salida mltiple se tabula a partir de cada combinacin posible de
valores 0 y 1 entre las variables de la funcin a combinaciones de 0 y 1 entre las salidas de la
funcin. Considere un ejemplo de una ecuacin booleana que representa a la funcin F:
F(X, Y, Z) % X ! Y1 Z
A las dos partes de la expresin, X y Y1 Z, se le llaman trminos de la expresin de F. La funcin
F es igual a 1 si el trmino X es igual a 1 o si el trmino Y1 Z es igual a 1 (es decir, ambos Y1 y Z
son iguales a 1). De otro modo, F es igual a 0. La operacin complemento determina que si
Y1 % 1, Y tiene que ser igual a 0. Por tanto, podemos decir que F % 1 si X % 1 o si Y % 0 y
Z % 1. Una ecuacin booleana expresa la relacin lgica entre variables binarias. Se evala determinando el valor binario de la expresin para todas las combinaciones posibles de valores
para las variables.
Se puede representar una funcin booleana con una tabla de verdad. Una tabla de verdad
para una funcin es una lista de todas las combinaciones de 1 y 0 que se pueden asignar a las
variables binarias y una lista que indica el valor de la funcin para cada combinacin binaria.

32 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 TABLA 2-2
Tabla de verdad
de la funcin F % X ! Y1 Z
X

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
0
0
1
1
1
1

Las tablas de verdad para las operaciones lgicas de la Tabla 2-1 son casos especiales de
tablas de verdad para funciones. El nmero de filas en una tabla de verdad es 2n, donde n es el
nmero de variables de la funcin. Las combinaciones binarias para la tabla de verdad son los
nmeros binarios de n-bit que corresponden a la cuenta en decimal de 0 a 2n . 1. La Tabla 2-2
muestra la tabla de verdad de la funcin F % X ! Y1 Z. Hay ocho posibles combinaciones binarias que asignan bits a las tres variables X, Y y Z. La columna etiquetada como F contiene 0 o 1
para cada una de las combinaciones. La tabla indica que la funcin es igual a 1 si X % 1 y si
Y % 0 y Z % 1. De otro modo, la funcin es igual a 0.
Una expresin algebraica para una funcin booleana puede transformarse en un diagrama de
un circuito compuesto por puertas lgicas que efectan la funcin. El diagrama lgico del circuito para la funcin F se muestra en la Figura 2-3. Un inversor en la entrada Y genera el complemento, Y1 . Una puerta AND opera con Y1 y Z, y una puerta OR combina X y Y1 Z. En los diagramas lgicos de los circuitos, las variables de la funcin F se toman como entradas del
circuito, y la variable binaria F se toma como salida del circuito. Si el circuito tiene una nica
salida, F es una funcin de salida nica. Si el circuito tiene mltiples salidas, la funcin F es
una funcin de salida mltiple que requiere de mltiples ecuaciones para representar sus salidas.
Las puertas del circuito estn interconectadas por hilos que llevan las seales lgicas. A los circuitos lgicos de este tipo se les llama circuitos lgicos combinacionales, porque las variables
estn combinadas por las operaciones lgicas. Esto es lo contrario a la lgica secuencial, que
se trata en el Captulo 6, donde se almacenan y combinan las variables en funcin del tiempo.
Una funcin booleana se puede representar en una tabla de verdad de una sola manera. No
obstante, si la funcin tiene forma de ecuacin algebraica, puede ser expresada de diferentes
maneras. La expresin particular usada para representar la funcin determina la interconexin
de las puertas en el diagrama lgico del circuito. Manipulando una expresin booleana conforme con reglas algebraicas booleanas, muchas veces es posible obtener una expresin ms
simple para la misma funcin. sta funcin ms simple reduce el nmero de puertas en el circuito y el nmero de entradas de las puertas. Para ver como se logra esto, es necesario estudiar
primero las reglas bsicas del lgebra de Boole.
X
Y
Z

 FIGURA 2-3
Diagrama lgico de circuito para F % X ! Y1 Z

CIRCUITOS LGICOS COMBINACIONALES

33

Identidades bsicas del lgebra de Boole


En la Tabla 2-3 se enumeran las identidades bsicas del lgebra de Boole. La notacin est
simplificada omitiendo el smbolo de la AND siempre que no lleve a ninguna confusin. Las
nueve primeras identidades indican la relacin entre una nica variable X, su complemento X1 , y
las constantes binarias 0 y 1. Las siguientes cinco identidades, de la 10 a la 14, son las mismas
que en el lgebra ordinaria. Las tres ltimas, de la 15 a la 17, no se usan en el lgebra ordinaria,
pero son tiles para manipular expresiones booleanas.
Las reglas bsicas enumeradas en la tabla han sido colocadas en dos columnas que demuestran la propiedad dual del lgebra de Boole. El dual de una expresin algebraica se obtiene
intercambiando las operaciones OR y AND y reemplazando los 1 por 0 y los 0 por 1. Una ecuacin en una columna de la tabla se puede obtener de la ecuacin correspondiente de la otra
columna usando el dual de las expresiones en ambos lados del smbolo de igualdad. Por ejemplo, la relacin 2 es la dual de la relacin 1 porque la OR ha sido reemplazada por la AND y el
0 por el 1. Es importante darse cuenta de que, en la mayora de las veces, el dual de la expresin no es igual que la expresin original, de manera que una expresin normalmente no puede
ser reemplazada por su dual.
Las nueve identidades que involucran a una nica variable se pueden verificar sencillamente
sustituyendo cada uno de los posibles valores de X. Por ejemplo, para mostrar que X ! 0 % X,
sea X % 0 para obtener 0 ! 0 % 0, y despus sea X % 1 para obtener 1 ! 0 % 1. Ambas ecuaciones son verdad conforme a la definicin de la operacin lgica OR. Cada expresin puede
ser sustituida por la variable X en todas las ecuaciones booleanas enumeradas en la tabla. As,
en la identidad 3 y con X % AB ! C, obtenemos
AB ! C ! 1 % 1
Vase que la identidad 9 expresa que la doble complementacin restaura el valor original de la
variable. As, si X % 0, entonces X1 % 1 y X11 % 0 % X.
Las identidades 10 y 11, las leyes conmutativas, expresan que el orden en que se escriben
las variables no afecta el resultado usando las operaciones OR y AND. Las identidades 12 y 13,
las leyes asociativas, expresan que el resultado aplicando una operacin sobre tres variables es
 TABLA 2-3
Identidades bsicas del lgebra de Boole
1.

X%0%X

2.

X1 X

3.

X!1%1

4.

X0%0

5.

X!X%X

6.

XX%X

7.

X ! X1 % 1
X11 % X

8.

X X1 % 0

9.
10.

X!Y%Y!X

11.

XY % YX

Conmutativa

12.

X ! (Y ! Z) % (X ! Y) ! Z

13.

X(YZ) % (XY )Z

Asociativa

14.

X(Y ! Z) % XY ! XZ

15.

X ! YZ % (X ! Y)(X ! Z)

Distributiva

16.

X ! Y % X1 Y1

17.

X Y % X1 ! Y1

De DeMorgan

34 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

independiente del orden en que se apliquen, y asimismo, los parntesis se puede quitar como en
el siguiente caso:
X ! (Y ! Z) % (X ! Y) ! Z % X ! Y ! Z
X(YZ) % (XY )Z % XYZ
Estas dos leyes y la primera ley distributiva, Identidad 14, son bien conocidas del lgebra ordinaria, por eso no deberan causar ninguna dificultad. La segunda ley distributiva, dada por Identidad 15, es el dual de la ley ordinaria distributiva y no se basa en el lgebra ordinaria. Como se
ilustr anteriormente, se puede reemplazar cada variable de una identidad por una expresin
booleana, y la identidad es todava vlida. As, considere la expresin (A ! B) (A ! CD). Poniendo X % A, Y % B y Z % CD, y aplicando la segunda ley distributiva, obtenemos
(A ! B)(A ! CD) % A ! BCD
A las dos ltimas identidades de la Tabla 2-3,
X ! Y % X1 Y1 y X Y % X1 ! Y1
se les denomina como Teorema de DeMorgan. Es un teorema muy importante y se usa para
obtener el complemento de una expresin y de la funcin correspondiente. El Teorema de
DeMorgan se puede ilustrar mediante tablas de verdad que asignan todos los valores binarios
posibles a X e Y. La Tabla 2-4 muestra dos tablas de verdad que verifican la primera parte del
Teorema de DeMorgan. En A, evaluamos X ! Y para todos los valores posibles de X e Y. Esto
se hace primero evaluando X ! Y y despus calculando el complemento. En B, evaluamos X1 e
Y1 y despus las conectamos con una operacin AND. El resultado es el mismo para las cuatro
combinaciones binarias de X e Y, que verifican la identidad de la ecuacin.
Vase el orden en que se realizan las operaciones al evaluar una expresin. En la parte B de
la tabla, se evalan primero los complementos de las variables particulares, seguida de la operacin AND, justo como en el lgebra ordinaria con la multiplicacin y la suma. En la parte A, se
evala primero la operacin OR. Despus, notando que el complemento de una expresin como
X ! Y se considera como NOT (X ! Y), evaluamos la expresin de dentro de los parntesis y
tomamos el complemento del resultado. Es usual excluir los parntesis calculando el complemento de una expresin, y a la barra encima de una expresin entera la une. As, (X ! Y) se
expresa como X ! Y cuando se indica el complemento de X ! Y.
El Teorema de DeMorgan puede ser extendido a tres o ms variables. El Teorema General
de DeMorgan se puede expresar como
X1 ! X2 ! ... ! Xn % X1 1X1 2 ...X1 n
X1X2 ...Xn % X1 1 ! X1 2 ! ... ! X1 n
 TABLA 2-4
Tablas de verdad para verificar el teorema de DeMorgan
A) X

0
0
1
1

0
1
0
1

X!Y X!Y
0
1
1
1

1
0
0
0

B) X

X1

Y1

X1 Y1

0
0
1
1

0
1
0
1

1
1
0
0

1
0
1
0

1
0
0
0

CIRCUITOS LGICOS COMBINACIONALES

35

Observe que la operacin lgica cambia de OR a AND o de AND a OR. Adems, se elimina el
complemento de la expresin entera y se coloca encima de cada variable. Por ejemplo,
A ! B ! C ! D % A1 B1 C1 D1

Manipulacin algebraica
El lgebra de Boole es un instrumento muy til para simplificar circuitos digitales. Considere,
por ejemplo, la funcin booleana representada por
F % X1 YZ ! X1 YZ1 ! XZ
La implementacin de sta ecuacin con puertas lgicas se muestra en la Figura 2-4(a). A las
variables de entrada X y Z se le ha realizado el complemento con inversores para obtener X1 y Z1 .
Los tres trminos de la expresin se realizan con tres puertas AND. La puerta OR forma la OR
lgica de tres de los trminos. Considere ahora una simplificacin de la expresin para F aplicando algunas de las identidades listadas en la Tabla 2-3:
F % X1 YZ ! X1 YZ1 ! XZ
% X1 Y(Z ! Z1 ) ! XZ con la identidad 14
% X1 Y 1 ! XZ
con la identidad 7
% X1 Y ! XZ
con la identidad 2
La expresin se reduce a slo dos trminos y puede ser realizada con puertas segn se muestra en la Figura 2-4(b). Es obvio que el circuito de (b) es ms simple que el de (a), ahora, ambos
realizan la misma funcin. Es posible usar una tabla de verdad para verificar que dos implementaciones son equivalentes. sto se muestra en la Tabla 2-5. Como se expresa en la Figura 2-4(a),
la funcin es igual a 1 si X % 0, Y % 1, y Z % 1; si X % 0, Y % 1, y Z % 0; o si X y Z son ambas 1. Esto produce los cuatro 1 para F en la parte (a) de la tabla. Como se expresa en la Figura
2-4(b), la funcin es igual a 1 si X % 0 e Y % 1 o si X % 1 y Z % 1. Esto produce los mismos
X

(a) F  XYZ  XYZ  XZ


X
Y
F
Z
(b) F  XY  XZ

 FIGURA 2-4
Implementacin de funciones booleanas con puertas

36 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 TABLA 2-5
Tabla de verdad para la funcin booleana
X

(a) F

(b) F

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
1
1
0
1
0
1

0
0
1
1
0
1
0
1

cuatro 1 en la parte (b) de la tabla. Como ambas expresiones producen las mismas tablas de
verdad, se dice que son equivalentes. Por eso, los dos circuitos tienen las mismas salidas para
todas las combinaciones binarias posibles de las tres variables de entrada. Cada circuito realiza
la misma funcin, pero se prefiere la de menor nmero de puertas porque requiere menos componentes.
Si se implementa una ecuacin booleana con puertas lgicas, cada trmino requiere una
puerta, y cada variable dentro del trmino indica una entrada para la puerta. Definimos un literal como una variable nica dentro de un trmino que puede estar complementado o no. La
expresin para la funcin de la Figura 2-4(a) tiene tres trminos y ocho literales; la de la Figura
2-4(b) tiene dos trminos y cuatro literales. Reduciendo el nmero de trminos, el nmero de
literales, o ambos en una expresin booleana, muchas veces es posible obtener un circuito ms
sencillo. Se aplica el lgebra de Boole para reducir una expresin con el fin de obtener un circuito ms sencillo. Para funciones muy complejas es muy difcil encontrar la mejor expresin
basada en sumas de trminos y literales, aunque se usen programas de computadora. Ciertos
mtodos, sin embargo, para reducir expresiones, se incluyen frecuentemente en las herramientas
por computadora para sintetizar circuitos lgicos. Estos mtodos pueden obtener buenas soluciones, si no las mejores. El nico mtodo manual para el caso general es el procedimiento de
intentar y probar a emplear las relaciones bsicas y otras manipulaciones que uno va conociendo bien con el uso. Los siguientes ejemplos usan las identidades de la Tabla 2-3 para ilustrar
algunas posibilidades:
1. X ! XY % X(1 ! Y) % X
2. XY ! XY1 % X(Y ! Y1 ) % X
3. X ! X1 Y % (X ! X1 )(X ! Y) % X ! Y
Vase que el paso intermedio X % X 1 se ha omitido cuando se saca el factor X en la ecuacin
1. La relacin 1 ! Y % 1 es til para eliminar trminos redundantes, como se hace con el trmino XY en esta misma ecuacin. La relacin Y ! Y1 % 1 es til para combinar dos trminos, como
se hace en la ecuacin 2. Los dos trminos combinados tienen que ser idnticos excepto en una
variable, y esa variable tiene que estar complementada en un trmino y no complementada en el
otro. La ecuacin 3 est simplificada mediante la segunda ley distributiva (identidad 15 en la
Tabla 2-3). A continuacin hay tres ejemplos para simplificar expresiones booleanas:
4. X(X ! Y) % X ! XY % X
5. (X ! Y)(X ! Y1 ) % X ! YY1 % X
6. X(X1 ! Y) % XX1 ! XY % XY

CIRCUITOS LGICOS COMBINACIONALES

37

Vase que los pasos intermediarios XX % X % X 1 han sido omitidos durante la manipulacin
de la ecuacin 4. La expresin de la ecuacin 5 est simplificada mediante la segunda ley distributiva. Aqu omitimos otra vez los pasos intermediarios YY1 % 0 y X ! 0 % X.
Las ecuaciones 4 a 6 son las duales de las ecuaciones 1 a 3. Recuerde que el dual de una
expresin se obtiene cambiando AND por OR y OR por AND en todas partes (y 1 por 0 y 0 por
1 si aparecen en la expresin). El principio de dualidad del lgebra de Boole expresa que una
ecuacin booleana permanece vlida si tomamos el dual de la expresin en ambos lados del
signo de igualdad. Por eso, las ecuaciones 4, 5 y 6 se pueden obtener tomando el dual de las
ecuaciones 1, 2 y 3, respectivamente.
Junto con los resultados dados en las ecuaciones 1 a 6, el teorema siguiente, teorema de
consenso, es til a la hora de simplificar expresiones booleanas:
XY ! X1 Z ! YZ % XY ! X1 Z
El teorema muestra que el tercer trmino, YZ, es redundante y se puede eliminar. Note que
se asocian Y y Z con X y X1 en los primeros dos trminos y que aparecen juntos en el trmino
eliminado. La prueba del teorema de consenso se obtiene por la conexin AND entre YZ y
(X ! X1 ) % 1 y siguiendo despus como se indica a continuacin:
XY ! X1 Z ! YZ % XY ! X1 Z ! YZ(X ! X1 )
% XY ! X1 Z ! XYZ ! X1 YZ
% XY ! XYZ ! X1 Z ! X1 YZ
% XY(1 ! Z) ! X1 Z(1 ! Y)
% XY ! X1 Z
El dual del teorema de consenso es
(X ! Y)(X1 ! Z)(Y ! Z) % (X ! Y)(X1 ! Z)
El ejemplo siguiente muestra cmo se puede aplicar el teorema de consenso durante la manipulacin de una expresin booleana:
(A ! B)(A1 ! C) % AA1 ! AC ! A1 B ! BC
% AC ! A1 B ! BC
% AC ! A1 B
Vase que AA1 % 0 y 0 ! AC % AC. El trmino redundante eliminado por el teorema de consenso es BC.

El complemento de una funcin


La representacin complementaria de una funcin F, F1 , se obtiene de un intercambio de 1 por 0
y 0 por 1 en los valores de F en la tabla de verdad. El complemento de una funcin se puede
derivar algebraicamente aplicando el Teorema de DeMorgan. La forma generalizada de este
teorema expresa que se obtiene el complemento de una expresin mediante el intercambio de
las operaciones AND y OR y complementando cada variable y cada constante, como se muestra
en el Ejemplo 2-1.

38 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EJEMPLO 2-1 Funciones de complemento


Encuentre el complemento de cada una de las funciones representadas por las ecuaciones
F1 % X1 YZ1 ! X1 Y1 Z y F2 % X(Y1 Z1 ! YZ). Aplicando el Teorema de DeMorgan tantas veces como
sea necesario, obtenemos el complemento segn lo siguiente:
F1 1 % X1 YZ1 ! X1 Y1 Z % (X1 YZ1 ) (X1 Y1 Z)
% (X ! Y1 ! Z)(X ! Y ! Z1 )
F1 2 % X(Y1 Z1 ! YZ) % X1 ! (Y1 Z1 ! YZ)
% X1 ! (Y1 Z1 Y1 Z1 )
% X1 ! (Y ! Z)(Y1 ! Z1 )

Un mtodo ms simple para derivar el complemento de una funcin es calcular el dual de la


ecuacin de la funcin y complementar cada literal. Este mtodo es el resultado de la generalizacin del Teorema de DeMorgan. Recuerde que se obtiene el dual de una expresin intercambiando las operaciones AND y OR y 1 y 0. Para evitar confusin en el manejo de funciones
complejas, es til aadir parntesis alrededor de los trminos antes de calcular el dual, segn se
ilustra en el siguiente ejemplo.
EJEMPLO 2-2 Complementando funciones usando dualidad
Encuentre los complementos de las funciones del Ejemplo 2-1 calculando los duales de sus
ecuaciones y complementando cada literal.
Empezamos con
F1 % X1 YZ1 ! X1 Y1 Z % (X1 YZ1 ) ! (X1 Y1 Z)
El dual de F1 es
(X1 ! Y ! Z1 )(X1 ! Y1 ! Z)
Complementando cada literal, tenemos
(X ! Y1 ! Z)(X ! Y ! Z1 ) % F1 1
Ahora,
F2 % X(Y1 Z1 ! YZ) % X((Y1 Z1 ) ! (YZ))
El dual de F2 es
X ! (Y1 ! Z1 )(Y ! Z)
Complementando cada literal da lugar a
X1 ! (Y ! Z)(Y1 ! Z1 ) % F1 2.

CIRCUITOS LGICOS COMBINACIONALES

39

2-3 FORMAS CANNICAS


Se puede escribir una funcin booleana, expresada algebraicamente, de diferentes maneras.
Hay, sin embargo, formas concretas de escribir las ecuaciones algebraicas que se consideran
como formas cannicas. Las formas cannicas facilitan los procedimientos de simplificacin
para expresiones booleanas y frecuentemente da lugar a circuitos lgicos ms deseables.
La forma cannica contiene trminos producto y trminos suma. Un ejemplo de un trmino
producto es XY1 Z. Esto es un producto lgico formado por una operacin AND de tres literales.
Un ejemplo de un trmino suma es X ! Y ! Z1 . Esto es una suma lgica formada por una operacin OR entre los literales. Hay que darse cuenta de que las palabras producto y suma no
implican operaciones aritmticas en el lgebra de Boole; en cambio, especifican las operaciones
lgicas AND y OR respectivamente.

Minitrminos y maxitrminos
Se ha mostrado que la tabla de verdad define una funcin booleana. Una expresin algebraica
que represente la funcin se puede derivar de la tabla buscando la suma lgica de todos los
trminos producto para los que la funcin asume el valor binario 1. A un trmino producto donde todas las variables aparecen exactamente una vez, sean complementadas o no complementadas, se le llama minitrmino. Su propiedad caracterstica es que representa exactamente una
combinacin de las variables binarias en la tabla de verdad. Tiene el valor 1 para esta combinacin y 0 para el resto. Hay 2n diferentes minitrminos para n variables. Los cuatro minitrminos
para las dos variables X e Y son y X1 Y1 , X1 Y, XY1 y XY. Los ocho minitrminos para las tres variables X, Y, y Z se muestran en la Tabla 2-6. Los nmeros binarios de 000 a 111 se muestran
debajo de las variables. Para cada combinacin binaria hay un minitrmino asociado. Cada minitrmino es un trmino de producto de exactamente tres literales. Un literal es una variable
complementada si el bit correspondiente de la combinacin binaria asociada es 0 y es una variable no complementada si es 1. Tambin se muestra un smbolo mj para cada minitrmino en la
tabla, donde el subndice j denota el equivalente decimal de la combinacin binaria para la que
el minitrmino tiene el valor 1. Esta lista de minitrminos para cada n variables dadas se puede
formar de manera similar a una lista de los nmeros binarios de 0 a 2n . 1. Adems, la tabla de
verdad para cada minitrmino se muestra en la parte derecha de la tabla. Estas tablas de verdad
muestran claramente que cada minitrmino es 1 para la combinacin binaria correspondiente y
0 para todas las otras combinaciones. Ms tarde, estas tablas de verdad sern tiles al usar minitrminos para formar expresiones booleanas.
A un trmino suma que contiene todas las variables de forma complementada o no complementada se le llama maxitrmino. Otra vez es posible formular 2n maxitrminos con n variables.
Los ocho maxitrminos para tres variables se muestran en la Tabla 2-7. Cada maxitrmino es
una suma lgica de tres variables, donde cada variable se complementa si el bit correspondiente
del nmero binario es 1 y no se complementa si es 0. El smbolo para un maxitrmino es Mj,
donde j denota el equivalente decimal de una combinacin binaria para la que el maxitrmino
tiene el valor 0. En la parte derecha de la tabla, se muestra la tabla de verdad para cada maxitrmino. Vase que el valor del maxitrmino es 0 para la combinacin correspondiente y 1 para el
resto de combinaciones. Ahora est claro de donde salen los trminos minitrmino y maxitrmino: un minitrmino es una funcin, no igual a 0, que tiene el menor nmero de 1s en su
tabla de verdad; un maxitrmino es una funcin, no igual a 1, que tiene el mayor nmero de 1s
en su tabla de verdad. Vase de la Tabla 2-6 y la Tabla 2-7 que los minitrminos y maxitrminos

40 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 TABLA 2-6
Minitrminos para tres variables
X

Trmino
producto

Smbolo

m0

m1

m2

m3

m4

m5

m6

m7

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

X1 Y1 Z1
X1 Y1 Z
X1 YZ1
X1 YZ
XY1 Z1
XY1 Z
XYZ1
XYZ

m0
m1
m2
m3
m4
m5
m6
m7

1
0
0
0
0
0
0
0

0
1
0
0
0
0
0
0

0
0
1
0
0
0
0
0

0
0
0
1
0
0
0
0

0
0
0
0
1
0
0
0

0
0
0
0
0
1
0
0

0
0
0
0
0
0
1
0

0
0
0
0
0
0
0
1

 TABLA 2-7
Maxitrminos para tres variables
X

Trmino
suma

Smbolo

M0

M1

M2

M3

M4

M5

M6

M7

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

X!Y!Z
X ! Y ! Z1
X ! Y1 ! Z
X ! Y1 ! Z1
X1 ! Y ! Z
X1 ! Y ! Z1
X1 ! Y1 ! Z
X1 ! Y1 ! Z1

M0
M1
M2
M3
M4
M5
M6
M7

0
1
1
1
1
1
1
1

1
0
1
1
1
1
1
1

1
1
0
1
1
1
1
1

1
1
1
0
1
1
1
1

1
1
1
1
0
1
1
1

1
1
1
1
1
0
1
1

1
1
1
1
1
1
0
1

1
1
1
1
1
1
1
0

con los mismos subndices son los complementos entre s; o sea, Mj % m1 j. Por ejemplo, para
j % 3, tenemos
m1 3 % X1 YZ % X ! Y1 ! Z1 % M3
Una funcin booleana puede ser representada algebraicamente por una tabla de verdad dada
formando la suma lgica de todos los minitrminos que producen un 1 en la funcin. Esta expresin se llama una suma de minitrminos. Considere la funcin booleana F de la Tabla 2-8(a).
La funcin es igual a 1 para cada una de las siguientes combinaciones binarias de las variables
X, Y, y Z: 000, 010, 101 y 111. Esas combinaciones corresponden a los minitrminos 0, 2, 5 y 7.
Examinando la Tabla 2-8 y las tablas de verdad para stos minitrminos de la Tabla 2-6, es
evidente que se puede expresar la funcin F algebraicamente como la suma lgica de los minitrminos formulados:
F % X1 Y1 Z1 ! X1 YZ1 ! XY1 Z ! XYZ % m0 ! m2 ! m5 ! m7

CIRCUITOS LGICOS COMBINACIONALES

41

 TABLA 2-8
Funciones booleanas de tres variables
(a) X

F1

(b) X

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
0
1
0
0
1
0
1

0
1
0
1
1
0
1
0

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
1
1
0
1
1
0
0

Esto se puede abreviar ms enumerando solamente los subndices decimales de los minitrminos:
F(X, Y, Z) % Gm(0, 2, 5, 7)
El smbolo G significa la suma lgica (OR booleana) de los minitrminos. Los nmeros en parntesis representan los minitrminos de la funcin. Las letras entre parntesis que van a continuacin de F forman una lista de variables en el orden de conversin de los minitrminos a
trminos producto.
Ahora considere el complemento de una funcin booleana. Los valores binarios de F1 de la
Tabla 2-8(a) se obtienen cambiando 1 a 0 y 0 a 1 en los valores de F. Partiendo de la suma
lgica de los minitrminos de F1 , obtenemos
F1 % X1 Y1 Z ! X1 YZ ! XY1 Z1 ! XYZ1 % m1 ! m3 ! m4 ! m6
o, de forma abreviada,
F1 (X, Y, Z) % Gm(1, 3, 4, 6)
Vase que los nmeros de los minitrminos de F1 son los que faltan en la lista de nmeros de los
minitrminos de F. Ahora tomamos el complemento de para obtener F:
F % m1 ! m3 ! m4 ! m6 % m1 m3 m4 m6
% M1 M3 M4 M6 (ya que mj % Mj)
% (X ! Y ! Z1 )(X ! Y1 ! Z1 )(X1 ! Y ! Z)(X1 ! Y1 ! Z)
Esto muestra el procedimiento para expresar una funcin booleana como producto de maxitrminos. La forma abreviada para ese producto es
F(X, Y, Z) % FM(1, 3, 4, 6)
donde el smbolo F denota el producto lgico (AND booleana) de los maxitrminos cuyos nmeros se enumeran entre parntesis. Vase que los nmeros decimales incluidos en el producto
de maxitrminos siempre sern los mismos que los de la lista de minitrminos de la funcin
complementada, como (1, 3, 4, 6) del ejemplo anterior. Los maxitrminos se usan rara vez
cuando se trata con funciones booleanas, porque es siempre posible reemplazarlos con la lista
de minitrminos de F1 .

42 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A continuacin se resumen las propiedades ms importantes de los minitrminos:


Hay 2n minitrminos para n variables booleanas. Estos minitrminos se pueden evaluar
a partir de los nmeros binarios de 0 a 2n . 1.
2. Cada funcin booleana se puede expresar como suma lgica de minitrminos.
3. El complemento de una funcin contiene los minitrminos que no estn incluidos en la
funcin original.
4. Una funcin que incluye todos los 2n minitrminos es igual a un 1 lgico.
1.

Una funcin que no tiene la forma de suma de minitrminos puede convertirse a esta forma
mediante la tabla de verdad, mientras que la tabla de verdad especifica los minitrminos de la
funcin. Considere, por ejemplo, la funcin booleana
E % Y1 ! X1 Y1
La expresin no tiene forma de suma de minitrminos, porque cada trmino no contiene todas
los tres variables X, Y, y Z. En la Tabla 2-8(b) se enumera la tabla de verdad de esta funcin. De
la tabla, obtenemos los minitrminos de la funcin:
E(X, Y, Z) % Gm(0, 1, 2, 4, 5)
Los minitrminos para el complemento de E resultan de
E1 (X, Y, Z) % Gm(3, 6, 7)
Vase que el nmero total de minitrminos en E y E1 es igual a ocho, ya que la funcin tiene tres
variables, y tres variables producen un total de ocho minitrminos. Con cuatro variables habr
un total de 16 minitrminos, y para dos variables, habr 4 minitrminos. Un ejemplo de una
funcin que incluye todos los minitrminos es
G(X, Y) % Gm(0, 1, 2, 3) % 1
Como G es una funcin de dos variables y contiene todos los cuatro minitrminos, siempre es
igual a un 1 lgico.

Suma de productos
La forma de suma de minitrminos es una expresin algebraica cannica que se obtiene directamente de una tabla de verdad. La expresin obtenida de esta manera contiene el nmero mximo de literales en cada trmino y tiene normalmente ms productos de los que son necesarios.
La razn para esto es que, por definicin, cada minitrmino tiene que incluir todas las variables
de la funcin, complementada o no complementada. Si se ha obtenido una vez la suma de minitrminos de la tabla de verdad, el siguiente paso es intentar simplificar la expresin para ver si
es posible reducir el nmero de productos y el nmero de literales en los trminos. El resultado
es una expresin simplificada en la forma de suma de productos. Esto es una forma cannica
alternativa de expresin que contiene productos con uno, dos, o cualquier nmero de literales.
Un ejemplo de una funcin booleana expresada como suma de productos es
F % Y1 ! X1 YZ1 ! XY

CIRCUITOS LGICOS COMBINACIONALES

43

Y
X
Y
Z

X
Y

 FIGURA 2-5
Implementacin con suma de productos

La expresin tiene tres productos, el primero con un literal, el segundo con tres literales, y el
tercero con dos literales.
El diagrama lgico para una forma de suma de productos est formado por un grupo de
puertas AND seguido de una nica puerta OR, como se muestra en la Figura 2-5. Cada producto
requiere una puerta AND, excepto para el trmino con un nico literal. La suma lgica se forma
con una puerta OR que tiene como entradas literales nicos y la salida de puertas AND. Se
supone que las variables de entrada estn directamente disponibles en sus formas complementadas y no complementadas, as que no se incluyen inversores en el diagrama. Las puertas AND
seguidas por la puerta OR forman una configuracin de circuito al que se le denomina como
una implementacin de dos niveles o como circuito de dos niveles.
Si una expresin no est en la forma de suma de productos, se puede convertir a una forma
cannica mediante las leyes distributivas. Considere la expresin
F % AB ! C(D ! E)
Esta no est en forma de suma de productos, porque el trmino D ! E es parte de un producto,
pero no es un literal nico. La expresin puede convertirse en una suma de productos aplicando
la ley distributiva apropiada, como se muestra a continuacin:
F % AB ! C(D ! E) % AB ! CD ! CE
En la Figura 2-6(a) se ve la funcin F implementada en forma no cannica. Esto requiere
dos puertas AND y dos puertas OR. Hay tres niveles de puertas en el circuito. En la Figura
2-6(b), se ha implementado F en forma de suma de productos. Este circuito requiere tres puertas
AND y una puerta OR y usa dos niveles de puertas. La decisin de usar una implementacin de
dos o de mltiples niveles (tres o ms) es compleja. Los problemas aqu involucrados son el
nmero de puertas, el nmero de entradas a las puertas y el retardo entre el momento en que las
variables de entrada estn puestas y el momento en que aparecen los valores resultantes en la
A
B
A
B

D
E

C
E
(a) AB  C(D  E)

(b) AB  CD  CE

 FIGURA 2-6
Implementacin de tres y dos niveles

44 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

salida. Las implementaciones de dos niveles son la forma natural para ciertas tecnologas, como
veremos en el Captulo 4.

Producto de sumas
Otra forma cannica para expresar funciones booleanas algebraicamente es el producto de sumas. Esta forma se obtiene formando un producto lgico de sumas. Cada trmino de la suma
lgica puede tener cualquier nmero de literales diferentes. Un ejemplo de una funcin expresada de forma de suma de productos es
F % X(Y1 ! Z)(X ! Y ! Z1 )
Esta expresin tiene sumas de uno, dos y tres literales. Los trminos de suma realizan una operacin OR, y el producto es una operacin AND.
La estructura de las puertas de la expresin de productos de suma esta formada por un grupo
de puertas OR para las sumas (excepto para el trmino con un nico literal), seguido de una
puerta AND. Esto se muestra en la Figura 2-7 para la anterior funcin F. Como en el caso de
suma de productos, este tipo de expresin cannica est formada por una estructura de dos niveles de puertas.
X
Y
Z

X
Y
Z

 FIGURA 2-7
Implementacin de producto de sumas

2-4 OPTIMIZACIN DE CIRCUITOS DE DOS NIVELES


La complejidad de las puertas lgicas digitales que realizan una funcin booleana est relacionada directamente con la expresin algebraica a partir de la cual se implementa la funcin.
Aunque la representacin de una funcin en la tabla de verdad es nica, cuando se expresa algebraicamente, la funcin puede aparecer en muchas formas diferentes. Las expresiones booleanas
podran simplificarse mediante manipulacin algebraica como se ha discutido en la Seccin 2-2.
Sin embargo, este procedimiento de simplificacin es malo porque carece de reglas especiales
para predecir cada paso que ocurre en el proceso manipulativo y es difcil de determinar si se ha
conseguido la expresin ms sencilla. Por otro lado, el mtodo del mapa provee un procedimiento directo para optimizar funciones booleanas con un mximo de cuatro variables. Se puede pintar tambin mapas para cinco y seis variables, pero estas son ms incmodas de usar. El
mapa se conoce tambin como Mapa de Karnaugh, o mapa-K. El mapa es un diagrama hecho
con cuadrados, donde cada cuadrado representa un minitrmino de la funcin. Puesto que cualquier funcin booleana se puede expresar como suma de minitrminos, una funcin booleana
puede ser reconocida grficamente en el mapa por aquellos cuadrados cuyos minitrminos se
incluyen en la funcin. De hecho, el mapa presenta un diagrama visual de todos los caminos
posibles para expresar una funcin en forma cannica. Reconociendo diferentes patrones, el
usuario puede derivar expresiones algebraicas alternativas para la misma funcin, de las cuales

CIRCUITOS LGICOS COMBINACIONALES

45

se selecciona la ms sencilla. Las expresiones optimizadas producidas por el mapa estn siempre en forma de suma de productos o producto de sumas. As, los mapas manejan la optimizacin para implementaciones de dos niveles, pero no se puede aplicar directamente a posibles
implementaciones ms sencillas para el caso general con tres o ms niveles. Inicialmente, esta
seccin cubre la optimizacin de suma de productos y, ms tarde, aplica la optimizacin de producto de sumas.

Criterios de coste
En la seccin anterior, el nmero de literales y trminos se vio como una manera de medir la
simplicidad de un circuito lgico. Ahora introducimos dos criterios de coste para formalizar este
concepto.
El primer criterio es el coste por literal, el nmero de veces que aparecen los literales en
una expresin booleana que corresponde exactamente al diagrama lgico. Por ejemplo, para los
circuitos de la Figura 2-6, Las expresiones booleanas correspondientes son
F % AB ! C(D ! E)

F % AB ! CD ! CE

En la primera ecuacin aparecen cinco literales y seis en la segunda, de esta forma, la primera
ecuacin es la ms simple en trminos de coste por literal. El coste por literal tiene la ventaja
que se puede evaluar muy sencillamente contando la aparicin de los literales. Sin embargo, no
representa correctamente la complejidad del circuito en todos los casos, ni siquiera para la comparacin de diferentes implementaciones de la misma funcin lgica. Las siguientes ecuaciones
booleanas, ambas de la funcin G, muestran esta situacin:
G % ABCD ! A1 B1 C1 D

G % (A1 ! B)(B1 ! C)(C1 ! D)(D1 ! A)

Las implementaciones representadas por esas ecuaciones tienen ambas un coste literal de ocho.
Pero, la primera ecuacin tiene dos trminos y la segunda tiene cuatro. Esto sugiere que la primera ecuacin tiene un coste ms bajo que la segunda.
Para entender la diferencia ilustrada, definimos el coste de entradas de puerta como el nmero de entradas a las puertas en la implementacin que corresponde exactamente a la ecuacin
o las ecuaciones dadas. Este coste se puede determinar fcilmente a partir del diagrama lgico
contando simplemente el nmero total de entradas a las puertas. Para las ecuaciones de suma de
productos o producto de sumas, se puede averiguar encontrando la suma de
(1) todas las apariciones de los literales,
(2) el nmero de trminos excluyendo trminos que solamente consisten en un nico literal, y, opcionalmente,
(3) el nmero de diferentes literales complementados.
En (1), se representan todas las entradas de las puertas desde fuera del circuito. En (2), se representa todas las entradas de las puertas dentro del circuito, excepto las que van a los inversores y
en (3), los inversores necesarios para complementar las variables de entrada, que se cuentan en
el momento que no se proporcionan las variables de entrada complementadas. Para las dos
ecuaciones precedentes, excluyendo la suma de (3), las respectivas sumas de las entradas de las
puertas son 8 ! 2 % 10 y 8 ! 4 % 12. Incluyendo la suma de (3), la de inversores de entrada,
las sumas respectivas son 14 y 16. As, la primera ecuacin para G tiene un coste por entradas
ms bajo, aunque los costes por literales sean iguales.

46 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

El coste por entradas de puerta es ahora una buena medida para implementaciones lgicas
actuales ya que es proporcional el nmero de transistores y conexiones usadas para implementar
un circuito lgico. La representacin de las entradas de las puertas va ser particularmente ms
importante para medir los costes de los circuitos con ms que dos niveles. Tpicamente, como el
nmero de niveles incrementa, el coste literal representa una proporcin ms pequea en el coste de los circuitos actuales, ya que ms y ms puertas no tienen entradas desde fuera del mismo
circuito. Ms adelante, en la Figura 2-29, introducimos otros tipos de puertas complejas para las
que la evaluacin del coste de las entradas de las puertas a partir de una ecuacin no es vlida,
ya que la correspondencia entre las operaciones AND, OR y NOT de la ecuacin y las puertas
del circuito no se puede establecer. En estos casos, tanto como para ecuaciones ms complejas
que las sumas de productos y los productos de sumas, hay que determinar la suma de las entradas de las puertas directamente desde la implementacin.
Sin tener en cuenta los criterios de coste usados, ms adelante veremos que la expresin ms
sencilla no es necesariamente la nica. A veces es posible encontrar dos o ms expresiones que
cumplen el criterio de coste aplicado. En este caso, cada solucin es satisfactoria desde el punto
de vista de coste.

Mapa de dos variables


Hay cuatro minitrminos en una funcin booleana con dos variables. As, el mapa de dos variables consiste en cuatro cuadrados, uno por cada minitrmino, segn se muestra en la Figura 2-8(a). El mapa se muestra otra vez en la Figura 2-8(b) para sealar la relacin entre los
cuadrados y las dos variables X e Y. El 0 y 1 marcado, en el lado izquierdo y en la parte superior del mapa indican los valores de las variables. La variable X aparece complementada en la
fila 0 y no complementada en la fila 1. De igual manera, Y aparece complementada en la columna 0 y no complementada en la columna 1. Vase que las cuatro combinaciones de estos valores
binarios corresponden a las filas de la tabla de verdad asociadas a los cuatro minitrminos.
Una funcin de dos variables puede ser representada en un mapa marcando los cuadrados
que corresponden a los minitrminos de la funcin. Como ejemplo, se muestra la funcin XY de
la Figura 2-9(a). Ya que XY es igual al minitrmino m3, se pone un 1 dentro del cuadrado que
pertenece a m3. En la Figura 2-9(b) se muestra el mapa para la suma lgica de tres minitrminos:
m1 ! m2 ! m3 % X1 Y ! XY1 ! XY % X ! Y
La expresin optimizada X ! Y se determina del rea de dos cuadrados para la variable X en la
segunda fila y del rea de dos cuadrados para Y en la segunda columna. Juntas, estas dos reas
Y
X

Y
X

m0

m1

0 XY

XY

m2

m3

1 XY

XY

(a)

(b)

 FIGURA 2-8
Mapa de dos variables

Y
X

0
1
(a) XY

1
1

(b) X  Y

 FIGURA 2-9
Representacin de funciones en el mapa

CIRCUITOS LGICOS COMBINACIONALES

47

incluyen los tres cuadrados pertenecientes a X o Y. Esta simplificacin puede justificase mediante manipulacin algebraica:
X1 Y ! XY1 ! XY % X1 Y ! X(Y1 ! Y) % (X1 ! X)(Y ! X) % X ! Y
El procedimiento exacto para combinar cuadrados en el mapa se va a aclarar en los siguientes
ejemplos.

Mapa de tres variables


Hay ocho minitrminos para tres variables binarias. Por eso, un mapa de tres variables tiene
ocho cuadrados, como se indica en la Figura 2-10. El mapa dibujado en la parte (b) est marcado con nmeros binarios para cada fila y cada columna para mostrar los valores binarios de los
minitrminos. Note que los nmeros en las columnas no siguen la secuencia de la cuenta binaria. La caracterstica de la secuencia enumerada es que slo un bit cambia su valor de una columna hacia la adyacente, que corresponde al Cdigo Gray introducido en el Captulo 1.
Un cuadrado perteneciente a un minitrmino se puede localizar en el mapa de dos maneras.
Primero, podemos memorizar los nmeros enumerados en la Figura 2-10(a) para cada lugar del
minitrmino, o podemos referirnos a los nmeros binarios dentro de las filas y columnas de la
Figura 2-10(b). Por ejemplo, el cuadrado asignado a m5 corresponde a la fila 1 y a la columna
01. Cuando se combinan estos dos nmeros, dan lugar al nmero binario 101, cuyo equivalente
decimal es 5.
Otra posibilidad de localizar el cuadrado m5 % XY1 Z es verlo situado en la fila marcada con
X y la columna que pertenece a Y1 Z (columna 01). Vase que hay cuatro cuadrados donde cada
variable es igual a 1 y cuatro donde cada una es igual a 0. La variable aparece sin complementar
en los cuatro cuadrados donde es igual a 1 y de forma complementada en los cuatro cuadrados
donde es igual a 0. Es ms conveniente escribir el nombre de la variable al lado de los cuatro
cuadrados donde no aparece complementada. Despus de familiarizarse con los mapas, el uso
de los nombres de los variables es suficiente para identificar las regiones del mapa. Para esto, es
importante localizar estas etiquetas para obtener todos los minitrminos del mapa.
En el mapa de dos variables, la funcin XY mostraba que una funcin o un trmino de una
funcin pueden estar formados por un nico cuadrado del mapa. Pero para conseguir una simplificacin, hay que considerar varios cuadrados que corresponden a trminos productos. Para
entender cmo la combinacin de cuadrados simplifica las funciones booleanas, tenemos que
conocer la propiedad bsica de cuadrados adyacentes: cada pareja de cuadrados adyacentes, horizontales o verticales (pero no diagonales), que forman un rectngulo, corresponden a minitrY

YZ
X

00

11

01

10

m0

m1

m3

m2

0 XYZ XYZ XYZ XYZ

m4

m5

m7

m6

X 1 XYZ XYZ XYZ XYZ


Z

(a)

(b)

 FIGURA 2-10
Mapa de tres variables

48 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

minos que varan en una sola variable. Esta variable aparece sin complementar en un cuadrado
y complementada en el otro. Por ejemplo, m5 y m7 estn situadas en dos cuadrados adyacentes.
Se encuentra el complemento de Y en m5 y la misma variable, sin complementar, en m7, mientras las otras dos variables son iguales en los dos cuadrados. La suma lgica de dos de estos
minitrminos adyacentes se puede simplificar en un nico trmino producto de dos variables:
m5 ! m7 % XY1 Z ! XYZ % XZ(Y1 ! Y) % XZ
Aqu, los dos cuadrados son diferentes en cuanto a la variable Y, que se puede quitar cuando se
calcula la suma lgica (OR) de los minitrminos. As, en un mapa de 3 variables, cada dos minitrminos en cuadrados adyacentes que se combinan con una OR producen un trmino producto de dos variables. Esto se muestra en el Ejemplo 2-3.
EJEMPLO 2-3 Simplificacin de una funcin booleana usando un mapa
Simplifique la funcin booleana
F(X, Y, Z) % Gm(2, 3, 4, 5)
Primero, se pone un 1 en cada minitrmino que representa la funcin. Esto se muestra en la
Figura 2-11, donde los cuadrados para los minitrminos 010, 011, 100, y 101 se han rellenado
con 1s. Es mejor dejar todos los cuadrados en los que la funcin tiene el valor 0 en blanco en
vez de poner los 0s. El paso siguiente es encontrar grupos de cuadrados en el mapa que representan trminos producto considerados para la expresin simplificada. Llamamos a estos objetos
rectngulos, ya que su forma es un rectngulo (incluyendo, por supuesto, un cuadrado). Sin embargo, los rectngulos que corresponden a trminos producto estn restringidos al contener un
nmero de cuadrados que son potencias de 2, como 1, 2, 4, 8, ... As, nuestro objetivo es encontrar el menor nmero de rectngulos que incluyan a todos los minitrminos marcados con 1s.
Esto va a dar lugar a un mnimo de trminos producto. En el mapa de la figura, los dos rectngulos acogen a los cuatro cuadrados que contienen 1. El rectngulo superior derecho representa
al trmino producto X1 Y. Esto se determina observando que el rectngulo est en la fila 0, que
corresponde a X1 , y las ltimas dos columnas, correspondiendo a Y. De igual manera, el rectngulo inferior izquierdo representa el trmino de producto XY1 . (La segunda fila representa X y las
dos columnas a la izquierda representan Y1 .) Ya que estos dos rectngulos incluyen a todos de
los 1s del mapa, la suma lgica de los dos trminos producto correspondientes dan como resultado una expresin optimizada de F:
F % X1 Y ! XY1
Y

YZ
00

01

0
X 1

11

10

XY

1
Z

XY

 FIGURA 2-11
Mapa para Ejemplo 2-3: F(X, Y, Z) % Gm(2, 3, 4, 5) % X1 Y ! XY1

CIRCUITOS LGICOS COMBINACIONALES

49

En algunos casos, dos cuadrados del mapa son adyacentes y forman un rectngulo de tamao dos, aunque no se tocan. Por ejemplo, en la Figura 2-10, m0 es adyacente a m2 y m4 es adyacente a m6 porque los minitrminos se distinguen en una variable. Esto se puede verificar algebraicamente:
m0 ! m2 % X1 Y1 Z1 ! X1 YZ1 % X1 Z1 (Y1 ! Y) % X1 Z1
m4 ! m6 % XY1 Z1 ! XYZ1 % XZ1 (Y1 ! Y) % XZ1
Los rectngulos que corresponden a estos dos trminos producto, X1 Z1 y XZ1 , se muestran en el
mapa de la Figura 2-12(a). Basndose en la ubicacin de estos rectngulos, tenemos que modificar la definicin de los cuadrados adyacentes para incluir este y otros casos similares. Lo hacemos considerando el mapa como si estuviese dibujado en forma de cilindro, como se muestra en
la Figura 2-12(b), donde los bordes derechos e izquierdos se tocan para establecer correctamente las vecindades de los minitrminos y formar los rectngulos. En los mapas de la Figura
2-12, hemos usado simplemente nmeros en vez de m para representar los minitrminos. Cualquiera de estas notaciones se usar libremente.
Un rectngulo de cuatro cuadrados representa un trmino producto que es la suma lgica de
cuatro minitrminos. Para el caso de tres variables, un trmino producto de estos est formado
por un solo literal. Como ejemplo, la suma lgica de cuatro minitrminos adyacentes 0, 2, 4, y 6
se reducen a un nico trmino literal Z1 :
m0 ! m2 ! m4 ! m6 % X1 Y1 Z1 ! X1 YZ1 ! XY1 Z1 ! XYZ1
% X1 Z1 (Y1 ! Y) ! XZ1 (Y1 ! Y)
% X1 Z1 ! XZ1 % Z1 (X1 ! X) % Z1
El rectngulo para este trmino producto se muestra en la Figura 2-13(a). Vase que el trmino
producto se basa en que los bordes izquierdos y derechos del mapa son adyacentes de manera
que forman un rectngulo. Los otros dos ejemplos de rectngulos que se corresponden con trminos producto derivados de cuatro minitrminos se muestran en la Figura 2-13(b).
En general, ya que se combinan ms cuadrados, obtenemos un trmino producto con menos
literales. Los mapas de tres variables requieren las siguientes caractersticas:
Un cuadrado representa un minitrmino de tres literales.
Un rectngulo de dos cuadrados representa un trmino de producto de dos literales.
Un rectngulo de cuatro cuadrados representa un trmino de producto de un literal.
Un rectngulo de ocho cuadrados abarca el mapa entero y produce una funcin que es siempre igual a 1 lgico.
stas caractersticas se muestran en el Ejemplo 2-4.
Y

YZ
00

01

11

10

X 1

XZ

XZ
Z
(a)

(b)

 FIGURA 2-12
Mapa de tres variables: Plano y en cilindro para mostrar los cuadrados adyacentes

50 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

YZ
00

01

11

10

X 1

YZ
X
Z

00

01

11

10

X 1

(a)

(b)

 FIGURA 2-13
Trminos producto usando cuatro minitrminos

EJEMPLO 2-4 Simplificacin de funciones de tres variables con mapas


Simplifique las dos funciones booleanas siguientes:
F1(X, Y, Z) % Gm(3, 4, 6, 7)
F2(X, Y, Z) % Gm(0, 2, 4, 5, 6)
El mapa de F1 se muestra en la Figura 2-14(a). Hay cuatro cuadrados marcados con 1s, uno
para cada minitrmino de la funcin. Se combinan dos cuadrados adyacentes en la tercera columna para llegar al trmino de dos literales YZ. Los dos cuadrados sobrantes, tambin con 1,
son adyacentes por la definicin basada en el cilindro y se muestran en el diagrama con sus
valores incluidos en medios rectngulos. Cuando se combinan, estos dos cuadrados construyen
el trmino de dos literales XZ1 . As la funcin optimizada pasa a ser
F1 % YZ ! XZ1
El mapa para F2 se muestra en la Figura 2-14(b). Primero, combinamos los cuatro cuadrados
adyacentes en las primeras y ltimas columnas, basndonos en lo que hemos aprendido de la
Figura 2-13, para llegar al trmino de un literal Z1 . El ltimo cuadrado sobrante que representa el
minitrmino 5 se combina con un cuadrado adyacente que ya ha sido usado una vez. Esto no
slo se permite, sino que es deseable, ya que los dos cuadrados adyacentes llegan al trmino de
dos literales XY1 , con el cuadrado simple representando el minitrmino de tres literales XY1 Z. La
funcin optimizada es
F2 % Z1 ! XY1
Y

YZ
00

01

11
1

0
X 1

10

YZ
00
X
0

X 1

Y
01

Z
(a) F1(X, Y, Z)  m(3, 4, 6, 7)
 YZ + XZ

11

10
1

1
Z

(b) F2(X, Y, Z)  m(0, 2, 4, 5, 6)


 Z + XY

 FIGURA 2-14
Mapas para el Ejemplo 2-4

CIRCUITOS LGICOS COMBINACIONALES

51

Existen en ocasiones formas alternativas de combinar cuadrados para producir expresiones


igualmente optimizadas. Un ejemplo de esto se muestra en el mapa de la Figura 2-15. Los minitrminos 1 y 3 se combinan para llegar al trmino X1 Z, y los minitrminos 4 y 6 producen el
trmino XZ1 . Sin embargo, hay dos formas de combinar el cuadrado del minitrmino 5 con otro
cuadrado adyacente para producir un tercer trmino de dos literales. Combinndolo con el minitrmino 4 se llega al trmino XY1 ; pero combinndolo con el minitrmino 1 se llega al trmino
Y1 Z. Cada una de las dos expresiones, enumeradas en la Figura 2-15, tienen tres trminos de dos
literales cada uno, de esta forma, hay dos posibles soluciones optimizadas para esta funcin.
Si una funcin no se expresa como suma de minitrminos, podemos usar el mapa para obtener los minitrminos de la funcin y despus simplificarla. Sin embargo, es necesario tener la
expresin algebraica en forma de suma de productos, a partir de la cual cada trmino producto
se dibuja en el mapa. Como ejemplo considere la funcin booleana
F % X1 Z ! X1 Y ! XY1 Z ! YZ
Los tres trminos producto de la expresin tienen dos literales y estn representados en un mapa
de tres variables por dos cuadrados cada uno. Los dos cuadrados correspondientes al primer trmino, X1 Z, se encuentran en la Figura 2-16 donde coinciden X1 (primera columna) y Z (dos columnas medianas), dando lugar a 1 en los cuadrados 001 y 011. Vase que cuando se marcan
los 1 en los cuadrados, es posible encontrar un 1 ya puesto por el trmino precedente. Esto pasa
con el segundo trmino, X1 Y, que tiene 1 en los cuadrados 011 y 010; pero el cuadrado 011 lo
tiene en comn con el primer trmino, X1 Z, as se marca solamente un 1 en l. Continuando de
esta manera, encontramos que la funcin tiene cinco minitrminos, como se indica por los cinco
1 de la figura. Los minitrminos se leen directamente a partir del mapa para ser 1, 2, 3, 5, y 7.
La funcin originalmente dada tiene cuatro trminos producto. Puede ser optimizada en el mapa
con solamente dos nicos trminos
F % Z ! X1 Y
con lo que resulta una reduccin significativa del coste de la implementacin.
Y

YZ
00

X
0
X 1

01

11

YZ
10

1
Z

 FIGURA 2-15
F(X, Y, Z) % Gm(1, 3, 4, 5, 6)
% X1 Z ! XZ1 ! XY1
% X1 Z ! XZ1 ! Y1 Z

00

01

11

10

X 1

 FIGURA 2-16
F(X, Y, Z) % Gm(1, 2, 3, 5, 7) % Z ! X1 Y

Mapa de cuatro variables


Hay 16 minitrminos para cuatro variables binarias, y por esto, un mapa de cuatro variables est
formado por 16 cuadrados, como se indica en la Figura 2-17. La asignacin de minitrminos en
cada cuadrado se indica en la parte (a) del diagrama. Se dibuja el mapa en (b) otra vez para
mostrar la relacin de las cuatro variables. Las filas y columnas se enumeran de manera que

52 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

YZ
WX
m0

m1

m3

m2

00

m4

m5

m7

m6

01

m12

m13

m15

m14

11

m8

m9

m11

m10

00

11

01

10

X
W
10
Z
(b)

(a)

 FIGURA 2-17
Mapa de cuatro variables

slo un bit del nmero binario cambia su valor entre cada dos columnas o filas adyacentes, garantizando la misma propiedad para los cuadrados adyacentes. Los nmeros de las filas y las
columnas corresponden a un Cdigo Gray de dos bits, como se introdujo en Captulo 1. Los
minitrminos correspondientes a cada cuadrado se pueden obtener combinando los nmeros de
la fila y la columna. Por ejemplo, combinando los nmeros de la tercera fila (11) y la segunda
columna (01) se obtiene el nmero binario 1101, el equivalente binario de 13. As, el cuadrado
en la tercera fila, segunda columna, representa el minitrmino m13. Adems, se marca cada variable en el mapa para mostrar los ocho cuadrados donde aparecen sin complementar. Los otros
ocho cuadrados, donde no se indica ningna etiqueta, corresponden a la variable que se complementa. As, W aparece complementado en las dos primeras lneas y sin complementar en las dos
segundas filas.
El mtodo usado para simplificar funciones de cuatro variables es similar al que se usa para
simplificar funciones de tres variables. Como cuadrados adyacentes se definen los que se encuentran uno al lado de otro, como para los mapas de dos y tres variables. Para mostrar las
vecindades entre cuadrados, se ha dibujado el mapa de la Figura 2-18(a) como un toro en la
Figura 2-18(b), con los bordes superior e inferior, como tambin los bordes derecho e izquierdo,
tocndose mutuamente para mostrar cuadrados adyacentes. Por ejemplo, m0 y m2 son dos cuadrados adyacentes, como lo son tambin m0 y m8. Las combinaciones elegibles posibles durante
el proceso de optimizacin en el mapa de cuatro variables son las siguientes:
Un
Un
Un
Un
Un

cuadrado representa un minitrmino de cuatro literales.


rectngulo de 2 cuadrados representa un trmino producto de tres literales.
rectngulo de 4 cuadrados representa un trmino producto de dos literales.
rectngulo de 8 cuadrados representa un trmino producto de un literal.
rectngulo de 16 cuadrados produce una funcin que es siempre igual a 1 lgico.

No se puede usar ninguna otra combinacin de cuadrados. Un trmino producto interesante de


dos literales, X1 Z1 , se muestra en la Figura 2-18. En (b), donde se ve el mapa como un toro, las
vecindades de los cuadrados que representan este trmino producto quedan claras, pero en (a)
estos cuadrados estn en las cuatro esquinas del mapa y as aparecen muy lejanos uno de otro.
Es importante recordar este trmino producto, ya que se olvida muchas veces. Tambin sirve
como recordatorio de que los bordes izquierdo y derecho del mapa son adyacentes, tanto como
los bordes superior e inferior. As, los rectngulos del mapa cruzan los bordes derecho e izquierdo, superior e inferior, o ambos.

CIRCUITOS LGICOS COMBINACIONALES

53

 FIGURA 2-18
Mapa de cuatro variables: Plano y toro para mostrar las vecindades

Los siguientes ejemplos muestran el procedimiento de simplificar funciones booleanas de


cuatro variables.
EJEMPLO 2-5 Simplificacin de una funcin de 4 variables mediante un mapa
Simplifique la funcin booleana
F(W, X, Y, Z) % Gm(0, 1, 2, 4, 5, 6, 8, 9, 12, 13, 14)
Los minitrminos de la funcin se han marcado con 1 en el mapa de la Figura 2-19. Los ocho
cuadrados de las dos columnas a la izquierda se combinan para formar un rectngulo para el
trmino literal nico, Y1 . Los tres 1s sobrantes no se pueden combinar para llegar a un trmino
simplificado; ms bien, se tienen que combinar como rectngulos de dos o cuatro cuadrados.
Los dos 1s superiores de la derecha se combinan con los dos 1s superiores de la izquierda para
dar lugar al trmino W1 Z1 . Vase otra vez que est permitido usar el mismo cuadrado ms de una
vez. Ahora nos queda un cuadrado marcado con 1 en la tercera fila y cuarta columna (minitrmino 1110). En vez de tomar este cuadrado slo, lo que da lugar a un trmino de cuatro literales, lo combinamos con cuadrados ya usados para formar un rectngulo de cuatro cuadrados
en las dos filas intermedias y las dos columnas finales, resultando el trmino XZ1 . La expresin
optimizada es la suma lgica de los tres trminos:
F % Y1 ! W1 Z1 ! XZ1
Y

YZ
11

10

00

01

00

01

11

10

WX

X
W

 FIGURA 2-19
Mapa para el Ejemplo 2-5: F % Y1 ! W1 Z1 ! XZ1

54 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EJEMPLO 2-6 Simplificacin de una funcin de cuatro variables mediante un mapa


Simplifique la funcin booleana
F % A1 B1 C1 ! B1 CD1 ! AB1 C1 ! A1 BCD1
Esta funcin tiene cuatro variables: A, B, C, y D. Se expresa en forma de suma de productos con
tres trminos de tres literales cada y un trmino de cuatro literales. El rea del mapa cubierto
por la funcin se muestra en la Figura 2-20. Cada trmino de tres literales se representa en el
mapa por dos cuadrados. A1 B1 C1 se representa por los cuadrados 0000 y 0001, B1 CD1 por los cuadrados 0010 y 1010, y A1 B1 C1 por los cuadrados 1000 y 1001. El trmino con cuatro literales es el
minitrmino 0110. La funcin est simplificada en el mapa tomando los 1s de las cuatro esquinas, para llegar al trmino B1 D1 . Este trmino producto est en los mismos sitios del mapa que X1 Z1
de la Figura 2-18. Los dos 1s de la lnea superior se combinan con los dos 1s de la fila inferior
llevando al trmino B1 C1 . El 1 sobrante, en el cuadrado 0110, se combina con su cuadrado adyacente, 0010, llevando al trmino A1 CD1 . La funcin optimizada es por tanto
F % B1 D1 ! B1 C1 ! A1 CD1
C

CD
AB
00

00

01

11

10
1

01

1
B

11
A
10

1
D

 FIGURA 2-20
Mapa para el Ejemplo 2-6: F % B1 D1 ! B1 C1 ! A1 CD1

2-5 MANIPULACIN DEL MAPA


Cuando se combinan los cuadrados de un mapa, es necesario asegurar que se incluyen todos los
minitrminos de la funcin. Al mismo tiempo, es necesario minimizar el nmero de trminos de
la funcin optimizada evitando todos los trminos redundantes cuyos minitrminos ya estn incluidos en otros trminos. En esta seccin consideramos un procedimiento que ayuda al reconocimiento de patrones tiles en el mapa. Otros temas a tratar son la optimizacin de productos de
sumas y la optimizacin de funciones incompletas.

Implicantes primos esenciales


El procedimiento para combinar cuadrados en un mapa se podra hacer de forma ms sistemtica si presentamos los trminos implicante, implicante primo e implicante primo esencial.
Un trmino producto es un implicante de una funcin si la funcin vale 1 para todos los minitrminos del trmino producto. Claramente, todos los rectngulos en un mapa compuestos por cuadrados que contienen 1 corresponden a implicantes. Si se elimina cualquier literal de un implicante P, resulta un trmino producto que no es un implicante de la funcin, entonces P es un

CIRCUITOS LGICOS COMBINACIONALES

55

implicante primo. En un mapa para una funcin de n-variables, el conjunto de implicantes primos corresponde al conjunto de todos los rectngulos hechos con 2m cuadrados que contienen 1
(m % 0, 1, ..., n), donde cada rectngulo contiene tantos cuadrados como le sea posible.
Si un minitrmino de una funcin est incluido en un nico implicante primo, este implicante primo se llama esencial. As, si un cuadrado que contiene un 1 est en un slo rectngulo que
representa un implicante primo, entonces este implicante primo es esencial. En la Figura 2-15,
los trminos X1 Z y XZ1 son implicantes primos esenciales, y los trminos XY1 e Y1 Z son implicantes
primos no esenciales.
Los implicantes primos de una funcin se pueden obtener de un mapa de la funcin como
todas las colecciones mximas de 2m cuadrados que contienen 1 (m % 0, 1, ..., n) que constituyen rectngulos. Esto quiere decir que un nico 1 en un mapa representa un implicante primo
si no es adyacente a cualquier otro 1. Dos 1s adyacentes forman un rectngulo representando un
implicante primo, con tal de que no estn dentro de un rectngulo de cuatro o ms cuadrados
que contengan 1. Cuatro 1s forman un rectngulo que representa un implicante primo si no estn dentro de un rectngulo de ocho o ms cuadrados que contengan 1, y as sucesivamente.
Cada implicante primo esencial contiene al menos un cuadrado que no est dentro de ningn
otro implicante primo.
El procedimiento sistemtico para encontrar la expresin optimizada del mapa requiere que
primero determinemos todos los implicantes primos. Despus, se obtiene la expresin optimizada de la suma lgica de todos los implicantes primos esenciales, ms otros implicantes primos
necesarios para incluir los minitrminos sobrantes que no estn incluidos en los implicantes primos esenciales. Este procedimiento se aclarar con ejemplos.
EJEMPLO 2-7 Simplificacin usando implicantes primos
Considere el mapa de la Figura 2-21. Hay tres caminos para combinar cuatro cuadrados en rectngulos. Los trminos producto obtenidos a partir de estas combinaciones son los implicantes
primos de la funcin, A1 D, BD1 y A1 B. Los trminos A1 D y BD1 son implicantes primos esenciales,
pero A1 B no es esencial. Esto es porque los minitrminos 1 y 3 se pueden incluir solamente en el
trmino A1 D y los minitrminos 12 y 14 slo se puede incluir en el trmino BD1 . Pero los minitrminos 4, 5, 6, y 7 estn todos incluidos en dos implicantes primos, uno de ellos es A1 B, as el
trmino A1 B no es un implicante primo esencial. De hecho, si se han elegido los implicantes
primos esenciales, el tercer trmino no es necesario porque todos los minitrminos estn ya incluidos en los implicantes primos esenciales. La expresin optimizada para la funcin de la Figura 2-21 es
F % A1 D ! BD1
CD
00
AB
00
01

11

C
01

11

10

1
B
1

A
10
D

 FIGURA 2-21
Implicantes primos para el Ejemplo 2-7: A1 D, BD1 , y AB1

56 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EJEMPLO 2-8 Simplificacin mediante implicantes primos esenciales y no esenciales


Un segundo ejemplo se muestra en la Figura 2-22. La funcin dibujada en la parte (a) tiene siete
minitrminos. Si intentamos combinar los cuadrados, nos encontramos con seis implicantes primos. Para obtener un nmero mnimo de trminos de la funcin, tenemos que determinar primero los implicantes primos que son esenciales. Como se muestra en la parte (b) de la figura, la
funcin tiene cuatro implicantes primos esenciales. El trmino producto A1 B1 C1 D1 es esencial porque es el nico implicante primo que incluye el minitrmino 0. De igual manera, los trminos
producto BC1 D, ABC1 y AB1 C son implicantes primos esenciales porque son los nicos implicantes primos que incluyen a los minitrminos 5, 12 y 10, respectivamente. El minitrmino 15 est
incluido en dos implicantes primos no esenciales. La expresin optimizada para la funcin consiste en la suma lgica de los cuatro implicantes primos esenciales y un implicante primo que
incluye el minitrmino 15:
F % A1 B1 C1 D1 ! BC1 D ! ABC1 ! AB1 C !

CD
AB
00

00

01

11

CD
10

AB
00

01

ACD
o
ABD

00

11

10

01

01

1
B

B
11

11

A
10

D
(a) Dibujando los minitrminos

10

D
(b) Implicantes primos esenciales

 FIGURA 2-22
Simplificacin con los implicantes primos del Ejemplo 2-8

La identificacin de los implicantes primos esenciales en el mapa proporciona una herramienta adicional que muestra los trminos que tienen que aparecer necesariamente en cada expresin de suma de productos de una funcin y proporciona una estructura parcial para un mtodo ms sistemtico de elegir patrones de cuadrados.

Implicantes primos no esenciales


Ms all de usar todos los implicantes primos esenciales, se puede aplicar la siguiente regla para
incluir los minitrminos restantes de la funcin en implicantes primos no esenciales:
Regla de seleccin: minimice el solapamiento entre implicantes primos cuanto sea posible.
En particular, en la solucin final, asegrese de que cada implicante primo seleccionado incluye
al menos un minitrmino que no est incluido en algn otro implicante primo seleccionado.
En la mayora de los casos, esto da lugar a una expresin de suma de producto simplificada,
aunque no necesariamente de coste mnimo. El uso de la regla de seleccin se ilustra en el siguiente ejemplo.

CIRCUITOS LGICOS COMBINACIONALES

57

EJEMPLO 2-9 Simplificacin de una funcin usando la regla de seleccin


Encuentre una forma simplificada de suma de productos para F(A, B, C, D) % Gm(0, 1, 2, 4, 5,
10, 11, 13, 15).
El mapa de F se presenta en la Figura 2-23, mostrando todos los implicantes primos. A1 C1 es
el nico implicante primo esencial. Usando la anterior regla de seleccin, podemos elegir los
implicantes primos sobrantes para la forma de suma de productos en el orden indicado por los
nmeros. Vase como se seleccionan los implicantes primos 1 y 2 para incluir minitrminos sin
solapamiento. El implicante primo 3 (A1 B1 D1 ) y el implicante primo B1 CD1 , ambos incluyen el minitrmino 0010 sobrante, el implicante primo 3 se selecciona arbitrariamente para incluir el
minitrmino y completar la expresin de suma de productos:
F(A, B, C, D) % A1 C1 ! ABD ! AB1 C ! A1 B1 D1
C

CD
AB

00

01

00

01

11

10

B
11
A

10

D
1

 FIGURA 2-23
Mapa para el Ejemplo 2-9

Optimizacin de producto de sumas


Las funciones booleanas optimizadas derivadas de los mapas en todos los ejemplos previos han
sido expresadas en forma de suma de productos. Con pequeas modificaciones se puede obtener
la forma de producto de sumas.
El procedimiento para obtener una expresin optimizada en forma de producto de suma sale
de las propiedades bsicas de las funciones booleanas. Los 1s colocados en los cuadrados del
mapa representan los minitrminos de la funcin. Los minitrminos que no estn incluidos en la
funcin pertenecen al complemento de la funcin. De esto vemos que el complemento de una
funcin se representa en el mapa por los cuadrados no marcados con 1. Si marcamos los cuadrados vacos con 0 y los combinamos en rectngulos vlidos, obtenemos una expresin optimizada del complemento de la funcin. Entonces, tomamos el complemento de F1 para obtener la
funcin F como producto de sumas. Esto se hace tomando el dual y complementando cada literal, como se ha descrito en el Ejemplo 2-2.
EJEMPLO 2-10 Simplificacin de una forma de productos de sumas
Simplifique la siguiente funcin booleana en forma de productos de sumas:
F(A, B, C, D) % Gm(0, 1, 2, 5, 8, 9, 10)

58 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Los 1s marcados en el mapa de la Figura 2-24 representan los minitrminos de la funcin. Los
cuadrados marcados con 0 representan los minitrminos no incluidos en F y as denotan el complemento de F. Combinando los cuadrados marcados con 0, obtenemos la funcin complementada optimizada
F1 % AB ! CD ! BD1
Tomando el dual y complementando cada literal se obtiene el complemento de F1 . As es F en
forma de producto de sumas:
F % (A1 ! B1 )(C1 ! D1 )(B1 ! D)
C

CD
00

01

11

10

00

01

11

10

AB

B
A

 FIGURA 2-24
Mapa para el Ejemplo 2-10: F % (A1 ! B1 )(C1 ! D1 )(B1 ! D)

El ejemplo anterior muestra el procedimiento para obtener la optimizacin en producto de


sumas cuando la funcin originalmente se expresa como suma de minitrminos. El procedimiento tambin es vlido si la funcin se expresa originalmente como producto de maxitrminos o como producto de sumas. Recuerde que los nmeros del maxitrmino son los mismos que
los nmeros del minitrmino de la funcin complementada, de esta forma se introducen 0s en el
mapa para los maxitrminos o para el complemento de la funcin. Para introducir una funcin
expresada como producto de sumas en el mapa, tomamos el complemento de la funcin y, de
all, encontramos los cuadrados que hay que marcar con 0. Por ejemplo, se puede dibujar la
funcin
F % (A1 ! B1 ! C)(B ! D)
en el mapa obteniendo primero el complemento,
F1 % ABC1 ! B1 D1
y despus marcando los 0s en los cuadrados que representan los minitrminos de F1 . Los cuadrados sobrantes se marcan con 1. Despus, combinando los 1s se llega a la expresin optimizada
en forma de suma de productos. Combinando los 0s y despus calculando el complemento resulta la expresin optimizada en forma de producto de sumas. As, para cada funcin dibujada
en el mapa, podemos derivar la funcin optimizada en cualquiera de las dos formas cannicas.

CIRCUITOS LGICOS COMBINACIONALES

59

Condiciones de indiferencia
Los minitrminos de una funcin booleana especifican todas las combinaciones de valores de
variables para los que la funcin es igual a 1. Se supone que la funcin es igual a 0 para el resto
de los minitrminos. Sin embargo, esta suposicin no es siempre vlida, ya que hay aplicaciones
en las que la funcin no est especificada para ciertas combinaciones de valores de las variables. Hay dos casos donde ocurre esto. En el primer caso, las combinaciones de entrada no ocurren nunca. Como ejemplo, el cdigo binario de cuatro bits para los dgitos decimales tiene seis
combinaciones que no se usan y que no se espera que ocurran. En el segundo caso, las combinaciones de entrada se espera que ocurran, pero el valor de la salida como respuesta a estas combinaciones no importa. En ambos casos se dice que no se han especificado las salidas para estas
combinaciones. Las funciones que tienen salidas sin especificar para algunas combinaciones de
entradas se llaman funciones incompletamente especificadas. En la mayora de las aplicaciones, simplemente nos da igual qu valor asume la funcin para los minitrminos no especificados. Por esta razn, es usual llamar los minitrminos no especificados condiciones de indiferencia. Estas condiciones se pueden usar en un mapa para proporcionar la funcin ms
simplificada.
Habra que darse cuenta de que un minitrmino indiferente no se puede marcar con un 1 en
el mapa, porque esto implicara que la funcin sera siempre 1 para uno de estos minitrminos.
Asimismo, poniendo un 0 en el cuadrado implica que la funcin es 0. Para distinguir la condicin de indiferencia de 1 y 0, se usa una X. As, una X dentro de un cuadrado en el mapa indica
que no nos importa si est asignado el valor de 0 o 1 a la funcin para un minitrmino en particular.
Se pueden usar los minitrminos de indiferencia para simplificar la funcin en un mapa.
Cuando se simplifica la funcin F, usando los 1s podemos elegir si incluimos los minitrminos
de indiferencia que resultan del implicante primo ms simple de F. Cuando se simplifica la funcin F1 usando los 0s, podemos elegir si incluimos los minitrminos de indiferencia que resultan
de los implicantes primos ms sencillos de F1 , independientemente de los que estn incluidos en
los implicantes primos de F. En ambos casos, es irrelevante si los minitrminos de indiferencia
estn incluidos o no en los trminos de la expresin final. El manejo de condiciones de indiferencia se demuestra en el siguiente ejemplo.
EJEMPLO 2-11 Simplificacin con condiciones de indiferencia
Para clarificar el procedimiento en el manejo de condiciones de indiferencia, considere la siguiente funcin F que no est completamente especificada, que tiene tres minitrminos de indiferencia d:
F(A, B, C, D) % Gm(1, 3, 7, 11, 15)
d(A, B, C, D) % Gm(0, 2, 5)
Los minitrminos de F son las combinaciones de variables que igualan la funcin a 1. Los minitrminos de d son minitrminos de indiferencia. La optimizacin del mapa se muestra en la Figura 2-25. Los minitrminos de F estn marcados con 1, los de d estn marcados con X, y los
cuadrados sobrantes se han rellenado con 0. Para conseguir la funcin simplificada en forma de
suma de productos, tenemos que incluir los cinco 1s en el mapa, pero podemos o no incluir
alguna de las X, dependiendo de que se produzca la expresin ms sencilla de la funcin. El
trmino CD incluye los cuatro minitrminos en la tercera columna. Los minitrminos sobrantes

60 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

CD

CD

00

01

11

10

00

01

AB

00

01

11

10

00

01

11

10

AB

B
11

10

B
A

D
(b) F  CD  AD

D
(a) F  CD  A B

 FIGURA 2-25
Ejemplo con condiciones de indiferencia

en el cuadrado 0001 se puede combinar con el cuadrado 0011 para dar lugar a un trmino de
tres literales. Sin embargo, incluyendo una o dos X adyacentes, podemos combinar cuatro cuadrados en un rectngulo para llegar a un trmino de dos literales. En la parte (a) de la figura, los
minitrminos de indiferencia 0 y 2 estn incluidos con los 1s, lo cual da lugar a la funcin
simplificada
F % CD ! A1 B1
En la parte (b), el minitrmino de indiferencia 5 est incluido con los 1s, y la funcin simplificada es ahora
F % CD ! A1 D
Las dos expresiones representan dos funciones que son algebraicamente diferentes. Ambas incluyen los minitrminos especificados en la funcin original incompletamente especificada,
pero cada uno incluye diferentes minitrminos de indiferencia. Por lo que respecta a la funcin
incompletamente especificada, ambas expresiones son aceptables. La nica diferencia est en el
valor de F para los minitrminos no especificados.
Tambin es posible obtener una expresin optimizada de producto de sumas para la funcin
de la Figura 2-25. En este caso, la manera de combinar los 0s es incluir los minitrminos de
indiferencia 0 y 2 con los 0s, resultando la funcin optimizada complementada
F1 % D1 ! AC1
Tomando el complemento de F1 resulta la expresin optimizada en forma de producto de sumas:
F % D(A1 ! C)

El ejemplo anterior muestra que inicialmente se consideran los minitrminos de indiferencia


en el mapa representando ambos 0 y 1. El valor 0 o 1 finalmente asignado depende del proceso
de optimizacin. Debido a este proceso, la funcin optimizada tendr el valor 0 o 1 para cada
minitrmino de la funcin original, incluyendo los que inicialmente eran indiferentes. As, aunque las salidas de la especificacin inicial podran contener X, las salidas en una implementacin particular de la especificacin son solamente 0 y 1.

CIRCUITOS LGICOS COMBINACIONALES

61

2-6 OPTIMIZACIN DE CIRCUITOS MULTINIVEL


Aunque hemos averiguado que la optimizacin de circuitos de dos niveles puede reducir el coste de los circuitos lgicos combinacionales, muchas veces se puede ahorrar ms costes usando
circuitos con ms de dos niveles. A estos circuitos se les llama circuitos multinivel. Este ahorro
se demuestra mediante la implementacin de la funcin:
G % ABC ! ABD ! E ! ACF ! ADF
La Figura 2-26(a) muestra la implementacin de dos niveles de G que tiene un coste de 17 entradas de puerta. Ahora suponemos que aplicamos la ley distributiva del lgebra de Boole a G
para conseguir:
G % AB(C ! D) ! E ! A(C ! D)F
Esta ecuacin da lugar a la implementacin en varios niveles de G de la Figura 2-26(b) que
tiene un coste de 13 entradas de puerta, con una mejora de 4 entradas de puerta. En la Figura
2-26(b), C ! D se ha implementado dos veces. En cambio, una implementacin de esta subfuncin puede compartirse para dar lugar al circuito de la Figura 2-26(c) con un coste de 11 entradas de puerta, con una mejora de 2. Este uso de (C ! D) sugiere que se puede escribir G como
G % (AB ! AF)(C ! D) ! E
Esto incrementa el coste a 12. Pero sacando el factor A de AB ! AF, obtenemos
G % A(B ! F)(C ! D) ! E
A
A
B
C

B
E

D
F

D
F
(a)
A
B
C
D
E

(b)
A
G

B
F
E
C
D

F
(d)

(c)

 FIGURA 2-26
Ejemplo de un circuito multinivel

62 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La Figura 2-26(d) muestra la implementacin en varios niveles de G usando esta ecuacin que
tiene un coste de entradas de puerta de solo nueve, que es ligeramente ms que la mitad del
coste original.
Esta reduccin se ha obtenido mediante una secuencia de aplicaciones de identidades algebraicas, observando en cada paso el efecto en el coste de las entradas de puerta. Slo usando el
lgebra de Boole para obtener circuitos simplificados de dos niveles, el procedimiento usado
aqu no es realmente sistemtico. Adems, no existe ningn procedimiento algortmico para
usar los Mapas de Karnaugh para la optimizacin de circuitos de dos niveles que tengan un
coste ptimo, debido al amplio rango de acciones posibles y al nmero de soluciones posibles.
As la optimizacin en mltiples niveles se basa en el uso de un conjunto de las transformaciones aplicadas junto con la evaluacin del coste para encontrar una solucin buena pero no necesariamente ptima. Para el resto de esta seccin, tenemos en cuenta estas transformaciones e
ilustramos su aplicacin para reducir el coste del circuito. Las transformaciones, mostradas en el
siguiente ejemplo, se definen como:
1. Factorizacin: es encontrar una forma factorizada de una expresin de suma de productos o de producto de sumas para una funcin.
2. Descomposicin: es la expresin de una funcin como un conjunto de funciones nuevas.
3. Extraccin: es la expresin de varias funciones como un conjunto de nuevas funciones.
4. Substitucin de una funcin G por una funcin F es expresar F como funcin de G y de
algunas o todas las variables originales de F.
5. Eliminacin: es la inversa de la sustitucin donde la funcin G dentro de una expresin
de funcin F se sustituye por la expresin de G. A la eliminacin tambin se le llama
flattening (aplanar) o collapsing (colapsar).
EJEMPLO 2-12 Transformaciones de optimizacin de mltiples niveles
Se usarn las siguientes funciones para ilustrar las transformaciones:
G % AC1 E ! AC1 F ! AD1 E ! AD1 F ! BCDE1 F1
H % A1 BCD ! ACE ! ACF ! BCE ! BCF
La primera transformacin a mostrar es la factorizacin usando la funcin G. Inicialmente,
miramos a la factorizacin algebraica, que evita axiomas que son nicos en el lgebra de Boole, tal como los que incluyen el complemento y la idempotencia. Se pueden encontrar los factores no solamente para la expresin entera de G, sino tambin para sus subexpresiones. Por ejemplo, ya que los primeros cuatro trminos de G contienen la variable A, se puede sacar fuera de
estos trminos dando lugar a en:
G % A(C1 E ! C1 F ! D1 E ! D1 F) ! BCDE1 F1
En este caso, vase que A y C1 E ! C1 F ! D1 E ! D1 F son factores, y BCDE1 F1 no est involucrado
en la operacin de factorizacin. Sacando los factores C1 y D1 , C1 E ! C1 F ! D1 E ! D1 F se puede
escribir como C1 (E ! F) ! D1 (E ! F) lo que, adems, se puede escribir como (C1 ! D1 )(E ! F).
La integracin de esta expresin en G da como resultado:
G % A(C1 ! D1 )(E ! F) ! BCDE1 F1
El trmino BCDE1 F1 se podra factorizar en trminos producto, pero esta factorizacin no reducira el nmero de entradas de puertas y por tanto no se tiene en cuenta. El nmero de entradas

CIRCUITOS LGICOS COMBINACIONALES

63

por puerta en la expresin original de la suma de productos para G es 26 y en la forma factorizada de G es 18, ahorrndose 8 entradas de puerta. Debido a esta factorizacin, hay ms puertas
en serie desde las entradas hasta las salidas, un mximo de cuatro niveles en vez de tres niveles
incluyendo los inversores de entrada. Esto dara lugar a un incremento del retardo del circuito
despus de aplicar un mapeo tecnolgico.
La segunda transformacin que se muestra es la descomposicin que permite operaciones
ms all de la factorizacin algebraica. La forma factorizada de G se puede escribir como una
descomposicin, segn sigue a continuacin:
G % A(C1 ! D1 )X2 ! BX1E1 F1
X1 % CD
X2 % E ! F
Una vez que X1 y X2 se han definido, se puede calcular el complemento, y los complementos
pueden reemplazar C1 ! D1 y E1 F1 , respectivamente, en G. Una ilustracin de la transformacin de
sustitucin es
G % AX1 1X2 ! BX1X1 2
X1 % CD
X2 % E ! F
El nmero de entradas de puertas para esta descomposicin es 14, dando lugar a un ahorro de
12 entradas de puerta de la expresin original de suma de productos para G, y de 4 puertas de
entrada de la forma factorizada de G.
Para ilustrar la extraccin, necesitamos realizar la descomposicin en H y extraer subexpresiones comunes en G y H. Sacando el factor B de H, tenemos
H % B(A1 CD ! AE ! A ! CE ! CF)
Determinando factores adicionales en H, podemos escribir
H % B(A1 (CD) ! (A ! C)(E ! F))
Ahora los factores X1, X2, y X3 se puede extraer para obtener
X1 % CD
X2 % E ! F
X3 % A ! C
y los factores X1 y X2 se puede compartir entre G y H. Realizando la sustitucin, podemos escribir G y H como
G % AX1 1X2 ! BX1X1 2
H % B(A1 X1 ! X3X2)
Se da un diagrama lgico para la suma de productos original en la Figura 2-27(a) y para la
forma extrada en la Figura 2-27(b). El coste de entradas de puerta para las funciones originales
G y H, sin trminos compartidos, excepto para los inversores de entrada, es de 48. Para G y H

64 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A
B

D
E

F
G
(a)
C
D
G
E
F
A
H
B
(b)
C
D
G
E
F
A
H
B
(c)

 FIGURA 2-27
Ejemplo de optimizacin de un circuito de mltiples niveles

en forma decompuesta, sin trminos compartidos entre G y H, es de 31. Con trminos compartidos es de 25, dividiendo el coste de entradas de puertas de entrada a la mitad.

Este ejemplo muestra el valor de las transformaciones reduciendo el coste de entradas. En
general, debido al amplio rango de soluciones alternativas y la complejidad de determinar divisores para usar en la descomposicin y la extraccin, la obtencin de soluciones realmente ptimas, en cuanto al coste de entradas, no es factible normalmente, as que solamente se buscan
soluciones buenas.

CIRCUITOS LGICOS COMBINACIONALES

65

La clave para realizar transformaciones con xito es la determinacin de los factores que se
usan en la descomposicin o extraccin y la eleccin de la secuencia aplicada en la transformacin. Esas decisiones son complejas y fuera del mbito de nuestros estudios, pero normalmente
se incorporan en las herramientas de sntesis lgica.
Nuestra discusin, hasta ahora, trataba solamente de la optimizacin en varios niveles en
trminos de reducir el nmero de entradas de puertas. En muchos diseos, la longitud de la ruta
o rutas ms largas por el circuito se restringe por el retardo en la ruta, el tiempo que tarda en
propagarse el cambio de una seal por un camino a travs de las puertas. En estos casos podra
ser necesario reducir el nmero de puertas en serie. Una reduccin as, usando la transformacin
final, eliminacin, se muestra en el siguiente ejemplo.
EJEMPLO 2-13 Ejemplo de transformacin para la reduccin del retardo
En el circuito de la Figura 2-27(b), las rutas de C, D, E, F y A a H pasan por cuatro puertas de 2
entradas. Suponiendo que todas las puertas, con diferente nmero de entradas, contribuyen con
el mismo retardo en la ruta (retardo mayor que el de un inversor) estas son las rutas ms lentas
del circuito. Debido a una especificacin de un retardo de ruta mximo para un circuito, hay
que acortar estos caminos en al menos tres puertas de varias entradas o su equivalente en retardos de puertas de varias entradas o de inversores. Este acortamiento de las rutas se debera hacer con un incremento mnimo del nmero de entradas de puerta.
La transformacin de eliminacin que reemplaza variables intermediarias, Xi, con las expresiones a su lado derecho o elimina otra factorizacin como la de la variable B, es el mecanismo
para reducir el nmero de puertas en serie. Para determinar qu factor o combinacin de factores se debera eliminar, tenemos que contemplar el efecto en el nmero de entradas de puerta.
El incremento en el nmero de entradas de puertas para las combinaciones de eliminaciones que
reducen las longitudes de rutas problemticas en al menos una puerta de entrada son interesantes. Hay solamente tres de estas combinaciones: eliminacin de la factorizacin de B, eliminacin de variables intermediarias X1, X2, y X3, y eliminacin del factor B y las tres variables
intermediarias X1, X2, y X3. Los incrementos en los nmeros de entradas de puerta respectivos
para estas acciones son 0, 12, y 12, respectivamente. Claramente, la eliminacin del factor B es
la mejor eleccin ya que el nmero de entradas de puerta no se incrementa. Esto tambin demuestra que, debido a la descomposicin adicional de H, la ganancia del coste de entradas de
puerta de 3, que ocurri sacando el factor B al principio, ha desaparecido. El diagrama lgico
resultante de la eliminacin del factor B se muestra en la Figura 2-27(c).

Mientras que la reduccin necesaria del retardo se ha obtenido usando la eliminacin para
reducir el nmero de puertas a lo largo de la ruta en el Ejemplo 2-13, en general, tal reduccin
de puerta podra no reducir el retardo, o incluso podra incrementarlo debido a las diferencias en
las caractersticas de retardo de las puertas que se discutir ms adelante en el Captulo 3.

2-7 OTROS TIPOS DE PUERTAS


Ya que las funciones booleanas se expresan en trminos de operaciones AND, OR, y NOT, stas constituyen un procedimiento directo para implementar una funcin booleana con puertas
AND, OR, y NOT. Sin embargo, encontramos que la posibilidad de considerar puertas con otras
operaciones lgicas es de un considerable inters prctico. Los factores que hay que considerar
al construir otros tipos de puertas son la viabilidad y economa de implementar la puerta con

66 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

componentes electrnicos, la capacidad de la puerta para implementar funciones booleanas por


si solas o en combinacin con otras puertas, y la utilidad de representar puertas funcionales que
se usan frecuentemente. En esta seccin introducimos estos otros tipos de puertas que se usan a
lo largo del resto del texto. Las tcnicas especficas para la incorporacin de estos tipos de puertas en los circuitos se muestran en la Seccin 3-5.
Los smbolos grficos y las tablas de verdad de las seis puertas lgicas se muestra en la
Figura 2-28, con seis tipos de puertas adicionales mostradas en la Figura 2-29. A las puertas de
la Figura 2-28 se las denomina como puertas primitivas, y a las de la Figura 2-29 como puertas
complejas.
Aunque las puertas de la Figura 2-28 se muestra solamente con dos variables binarias de
entrada, X e Y, y una variable binaria de salida, F, con la excepcin del inversor y el buffer,
todos podran tener ms de dos entradas. Las diferentes formas de los smbolos mostrados, tanto
como los smbolos rectangulares no mostrados, se especifica en detalle en el Institute of Electrical y Electronics Engineers (IEEE) Standard Graphic Symbols for Logic Funcions (IEEE
Standard 91-1984). Las puertas AND, OR, y NOT se han definido anteriormente. El circuito
NOT invierte el sentido lgico de una seal binaria para producir una operacin de complemento. Recuerde que a este circuito se le llama tpicamente inversor en vez de puerta NOT. El crculo pequeo a la salida del smbolo grfico de un inversor se llama formalmente un indicador
de negacin y designa el complemento lgico. Informalmente nos referimos al indicador de negacin como a una burbuja. El mismo smbolo triangular designa un circuito buffer. Un buffer produce la funcin lgica Z % X, ya que el valor binario de la salida es igual al valor binario
de la entrada. Este circuito se usa principalmente para amplificar una seal elctrica para permitir que ms puertas sean conectadas a la salida y se reduce el tiempo de propagacin de las
seales por el circuito.
El buffer triestado es nico en el sentido de que se pueden conectar sus salidas entre ellos,
con tal de que una sola de las seales de sus entradas E sea 1 en un momento dado. Este tipo de
buffer y su uso bsico se discuten en detalle ms tarde en esta seccin.
La puerta NAND representa el complemento de la operacin AND, y la puerta NOR representa el complemento de la operacin OR. Los nombres respectivos son abreviaturas de NOTAND y NOT-OR, respectivamente. Los smbolos grficos para la puerta NAND y la puerta
NOR estn compuestos por el smbolo de la puerta AND y el smbolo de la puerta OR, respectivamente, con una burbuja en la salida, que indica el complemento de la operacin. En las tecnologas actuales de circuitos integrados, las puertas NAND y NOR son las funciones primitivas
naturales para los circuitos ms simples y ms rpidos. Si consideramos el inversor como una
versin degenerada de las puertas NAND y NOR con solamente una entrada, las puertas NAND
o puertas NOR, por si mismas, pueden implementar cualquier funcin booleana. As, estos tipos
de puertas se usan mucho ms que las puertas AND y OR en los circuitos lgicos actuales.
Como consecuencia, las implementaciones de los circuitos actuales se realiza muchas veces en
trinos de este tipo de puertas.
Un tipo de puerta que se puede usar nicamente para implementar todas las funciones booleanas se llama una puerta universal. Para mostrar que la puerta NAND es una puerta universal,
solo tenemos que demostrar que se pueden obtener las operaciones lgicas de AND, OR, y
NOT usando solamente puertas NAND. Esto se ha realizado en la Figura 2-30. La operacin
complemento obtenida de una puerta NAND con una entrada corresponde a una puerta NOT.
De hecho, la puerta NAND de una entrada es un smbolo no vlido y se sustituye por un smbolo NOT, como se muestra en la figura. La operacin AND requiere una puerta NAND seguida
de una puerta NOT. El NOT invierte la salida de la NAND, resultando una operacin AND. La
operacin OR se logra usando una puerta NAND con un NOT en cada entrada. Si se aplica el

CIRCUITOS LGICOS COMBINACIONALES

67

Smbolos grficos
Nombre

Ecuacin
algebraica

Smbolo

Tabla
de verdad
XY F

X
AND
Y

F  XY

0
0
1
1

0
1
0
1

0
0
0
1

XY F
X
OR

FXY

0
0
1
1

0
1
0
1

0
1
1
1

X F
NOT
(inversor)

FX

Buffer

FX

0 1
1 0
X F
0 0
1 1
EX F

Buffer triestado

0
0
1
1

0
1
0
1

Hi-Z
Hi-Z
0
1

XY F

NAND

X
Y

FXY

0
0
1
1

0
1
0
1

1
1
1
0

XY F
X
NOR
Y

FXY

0
0
1
1

0
1
0
1

1
0
0
0

 FIGURA 2-28
Puertas lgicas digitales primitivas

Teorema de DeMorgan, como se muestra en la Figura 2-30, las inversiones se anulan y resulta
una funcin OR.
La puerta OR exclusiva (XOR) mostrada en la Figura 2-29 es similar a la puerta OR, pero
excluye (tiene el valor 0 para) la combinacin con ambas entradas X e Y iguales a 1. El smbolo
grfico para la puerta XOR es similar al de la puerta OR, excepto en la lnea curvada adicional
en las entradas. La OR exclusiva tiene el smbolo especial S para designar esta operacin. La

68 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Smbolos grficos
Nombre

Ecuacin
algebraica

Smbolo

Tabla
de verdad
XY F

OR exclusiva
(XOR)

F  XY  XY
XY

0
0
1
1

0
1
0
1

0
1
1
0

XY F
NOR exclusiva
(XNOR)

F  XY  XY
XY

0
0
1
1

0
1
0
1

1
0
0
1

W
AND-OR-INVERSOR
(AOI)

X
Y

F  WX  YZ

Z
W
OR-AND -INVERSOR X
Y
(OAI)

F  (W  X )(Y  Z)

Z
W
AND-OR
(AO)

X
Y

F  WX  YZ

F  (W  X )(Y  Z)

Z
W
OR-AND
(OA)

X
Y
Z

 FIGURA 2-29
Puertas lgicas digitales complejas primitivas

NOR exclusiva es el complemento de la OR exclusiva, como se indica con la burbuja a la salida


de su smbolo grfico.
La puerta AND-OR-INVERT (AOI) forma el complemento de una suma de productos. Hay
muchas puertas diferentes AND-OR-INVERT dependiendo del nmero de puertas AND y el
nmero de entradas en cada AND y sus salidas van conectadas directamente a la puerta OR. Por
ejemplo, suponga que la funcin implementada por un AOI es
F % XY ! Z
A esta AOI se le denomina como una AOI 2-1 ya que consiste en una AND de 2 entradas y una
entrada directa a la puerta OR. Si la funcin implementada es
F % TUV ! WX ! YZ

CIRCUITOS LGICOS COMBINACIONALES

NOT X

XX

69

XY  XY

AND
Y

X
XY X  Y

OR
Y

 FIGURA 2-30
Operaciones lgicas con puertas NAND

entonces a la AOI se le llama AOI 3-2-2. LA OR-AND-INVERT (OAI) es la dual de la AOI e


implementa el complemento en forma de producto de sumas. La AND-OR (AO) y OR-AND
(OA) son versiones de AOI y OAI sin el complemento.
En general, las puertas complejas se usan para reducir la complejidad del circuito necesario
para la implementacin de funciones especficas de Boole con el fin de reducir costes del circuito integrado. Adems, reducen el tiempo necesario para la propagacin de seales por el circuito.
CIRCUITOS CMOS Este suplemento, que discute la implementacin de puertas primitivas y
complejas en tecnologa CMOS, est disponible en la pgina web del texto: www.librosite.net/
Mano.

2-8 OPERADOR Y PUERTAS OR

EXCLUSIVA

Adems de la puerta de OR exclusiva mostrada en la Figura 2-29, hay un operador de OR exclusivo con sus identidades algebraicas propias. El operador OR exclusivo, denotado por S, es
una operacin lgica que ejecuta la funcin
X S Y % XY1 ! X1 Y
Es igual a 1 si slo una variable de entrada es igual a 1. El operador NOR exclusivo, tambin
conocido como equivalencia, es el complemento del OR exclusivo y se expresa mediante la
funcin
X S Y % XY ! X1 Y1
Es igual a 1 si ambas entradas, X e Y, son iguales a 1 o si ambas entradas son iguales a 0. Se
puede demostrar que las dos funciones son complementos una de la otra, tanto por medio de la
tabla de verdad o, como sigue a continuacin, por manipulacin algebraica:
X S Y % XY1 ! X1 Y % (X1 ! Y)(X ! Y1 ) % XY ! X1 Y1
Las siguientes identidades se pueden aplicar a la operacin OR exclusiva:
XS0%X
XSX%0
X S Y1 % X S Y

X S 1 % X1
X S X1 % 1
X1 S Y % X S Y

70 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Se puede verificar cada una de estas identidades usando una tabla de verdad o reemplazando
la operacin S por su expresin booleana equivalente. Tambin se puede mostrar que la operacin OR exclusiva es tanto conmutativa como asociativa; o sea,
ASB%BSA
(A S B) S C % A S (B S C) % A S B S C
Esto significa que las dos entradas a una puerta de OR exclusiva pueden ser intercambiadas sin
tener efecto en la operacin. Tambin significa que podemos evaluar una operacin OR exclusiva de tres variables en cualquier orden y por esa razn, se pueden expresar las ORs exclusivas
con tres o ms variables sin parntesis.
Una funcin OR exclusiva de dos entradas se puede construir con puertas convencionales.
Se usan dos puertas NOT, dos puertas AND, y una puerta OR. La asociatividad del operador
OR exclusivo sugiere la posibilidad de puertas de OR exclusivas con ms que dos entradas. Sin
embargo, el concepto del OR exclusivo para ms de dos variables se reemplaza por la funcin
impar discutida a continuacin. Por esto, no hay ningn smbolo para la OR exclusiva de ms
de dos entradas. Por dualidad, se reemplaza la NOR exclusiva por la funcin par y no tiene
ningn smbolo para ms de dos entradas.

Funcin impar
La operacin OR exclusiva con tres o ms variables se puede convertir en una funcin booleana
ordinaria reemplazando el smbolo S con su expresin booleana equivalente. En concreto, el
caso de tres variables puede convertirse en una expresin booleana como la siguiente:
X S Y S Z % (XY1 ! X1 Y)Z1 ! (XY ! X1 Y1 )Z
% XY1 Z1 ! X1 YZ1 ! X1 Y1 Z ! XYZ
La expresin booleana indica claramente que la OR exclusiva de tres variables es igual a 1 si
solamente una variable es igual a 1 o si las tres variables son iguales a 1. Por esto, mientras que
en la funcin de dos variables slo una variable tiene que ser igual a 1, con tres o ms variables
tiene que ser un nmero impar de variables iguales a 1. Como consecuencia, se define la operacin OR exclusiva de mltiples variables como funcin impar. De hecho, estrictamente hablando, este es el nombre correcto para la operacin S con tres o ms variables; el nombre OR
exclusiva es aplicable al caso con solamente dos variables.
La definicin de la funcin impar se puede clarificar dibujando la funcin en un mapa. La
Figura 2-31(a) muestra el mapa para la funcin impar de tres variables. Los cuatro minitrminos
de la funcin son diferentes entre si en al menos dos literales y por esto no pueden estar adyacentes en el mapa. Se dice que estos minitrminos tienen una distancia de dos uno al otro. La
funcin impar se identifica por los cuatro minitrminos cuyas variables binarias tienen un nmero impar de 1. El caso de cuatro variables se muestra en la Figura 2-31(b). Los ocho minitrminos marcados con 1 en el mapa constituyen la funcin impar. Vase el patrn caracterstico
de la distancia entre los 1 en el mapa. Se debera mencionar que los minitrminos no marcados
con 1 en el mapa tienen un nmero impar de 1 y constituyen el complemento de la funcin
impar, llamada funcin par. La funcin impar se implementa mediante puertas OR exclusiva de
dos entradas, como se muestra en la Figura 2-32. La funcin par se puede obtener reemplazando
la puerta de salida con una puerta NOR exclusiva.

CIRCUITOS LGICOS COMBINACIONALES

YZ
00

X
0
X 1

01

11

00

00

1
1

AB

01

71

CD
10

01

11

10
1

1
1

B
1

11

Z
(a) X  Y  Z

A
10

D
(b) A  B  C  D

 FIGURA 2-31
Mapas para funciones impares de mltiples variables

X
Y
P

Z
(a) P  X  Y  Z

Y
Z

P
(b) C  X  Y  Z  P

 FIGURA 2-32
Funciones impares de mltiples entradas

2-9 SALIDAS EN ALTA IMPEDANCIA


Hasta ahora, hemos considerado solamente puertas que tienen los valores de salida 0 lgico y 1
lgico. En esta seccin introducimos dos estructuras importantes, los buffers triestado y las
puertas de transmisin, que proporcionan un tercer valor de salida a la que se llama como estado de alta impedancia y que se denota como Hi-Z o simplemente Z o z. El valor Hi-Z se comporta como un circuito abierto, que quiere decir que, mirando hacia atrs del circuito, encontramos que la salida aparece como desconectada. Las salidas de alta impedancia podran aparecer
en cualquier puerta, pero aqu nos restringimos a dos estructuras de puertas con entradas de datos simples. Las puertas con valores de salida Hi-Z pueden tener sus salidas conectadas entre s,
con tal de que no pueda haber dos puertas que conduzcan al mismo tiempo con valores opuestos
0 y 1. Por contra, las puertas con salidas lgicas de 0 y 1 no pueden tener sus salidas conectadas.
Buffers triestado El buffer triestado se ha presentado anteriormente como una de las puertas primitivas. Como indica su nombre, una salida lgica de tres estados muestra tres estados
diferentes. Dos de los estados son el 1 y el 0 lgico de la lgica convencional. El tercer estado
es el valor Hi-Z, al cual, para la lgica triestado, se le denomina como estado Hi-Z o estado de
alta impedancia.
El smbolo grfico y la tabla de verdad para un buffer triestado se presenta en la Figura 2-33. El smbolo de la Figura 2-33(a) se distingue del smbolo de un buffer normal por su
entrada de habilitacin, EN, que entra por debajo del smbolo. Segn la tabla de verdad de la

72 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EN IN OUT
OUT

IN

0
1
1

EN
(a) Smbolo lgico

X
0
1

Hi-Z
0
1

(b) Tabla de verdad

 FIGURA 2-33
Buffer de tres estados

Figura 2-33(b), si EN % 1, OUT es igual a IN, comportndose como un buffer normal. Pero para
EN % 0, el valor de salida es de alta impedancia (Hi-Z), independiente del valor de IN.
Las salidas del buffer triestado se pueden conectar para formar una salida multiplexada. La
Figura 2-34(a) muestra dos buffers triestados con sus salidas conectadas para formar la salida
OL. Centramos el estudio en la salida de esta estructura en funcin de las cuatro entradas EN1,
EN0, IN1, y IN0. El comportamiento de la salida se muestra en la tabla de verdad de la Figura
2-34(b). Para EN1 y EN0 igual a 0, ambas salidas del buffer son Hi-Z. Ya que ambas aparecen
como circuitos abiertos, OL tambin es un circuito abierto, representado por un valor Hi-Z. Para
EN1 % 0 y EN0 % 1, la salida del buffer superior es IN0 y la salida del buffer inferior es Hi-Z.
Ya que el valor de IN0 combinado con un circuito abierto es justamente IN0, OL tiene el valor
IN0, dando lugar a la segunda y tercera fila de la tabla de verdad. El caso contrario ocurre para
EN1 % 1 y EN0 % 0, as OL tiene el valor IN1, dando lugar a la cuarta y quinta fila de la tabla

IN0
(S)

EN0

OL

IN1
EN1

(S)

(a) Diagrama lgico


EN1 EN0 IN1 IN0 OL
0

(S) 0 (S) 1

Hi-Z

1
1
1
1
1

0
1
1
1
1

1
0
1
0
1

X
0
1
1
0

1
0
1

(b) Tabla de verdad

 FIGURA 2-34
Buffers de tres estados formando una lnea multiplexada OL

CIRCUITOS LGICOS COMBINACIONALES

73

de verdad. Para EN1 y EN0, ambas 1, la situacin es ms complicada. Si IN1 % IN0, su valor
aparece en OL. Pero si IN IN0, sus valores tienen un conflicto en la salida. El conflicto resulta en un flujo de corriente de la salida del buffer que est en 1 hacia la salida del buffer que est
en 0. Esta corriente muchas veces es lo suficientemente alta para producir calentamiento y incluso podra destruir el circuito, como se simboliza por los iconos de humo en la tabla de
verdad. Claramente hay que evitar semejante situacin. El diseador tiene que asegurar que
EN0 y EN1 no son nunca iguales a 1 al mismo tiempo. En el caso general, para buffers triestados vinculados a una lnea de bus, EN puede ser igual a 1 para solamente uno de los buffers y
tiene que ser 0 para el resto. Una posibilidad para asegurar esto es usar un decodificador para
generar las seales de EN. Para el caso de dos buffers, el decodificador es solamente un inversor
con entrada seleccionable S, como se muestra en las lneas punteadas de la Figura 2-34(a). Es
interesante examinar la tabla de verdad con el inversor puesto. Observe el rea sombreada de la
tabla de la Figura 2-34(b). Claramente, el valor en S selecciona entre las entradas IN0 y IN1.
Adems, la salida del circuito OL no est nunca en el estado Hi-Z.
Puertas de transmisin En los circuitos integrados lgicos, hay un circuito lgico con
transistores CMOS que es suficientemente importante para ser presentado por separado, a nivel
de puertas. Este circuito, llamado puerta de transmisin (transmission gate (TG)), es una especie de interruptor electrnico para conectar y desconectar dos puntos en un circuito. La Figura
2-35(a) muestra el smbolo IEEE para la puerta de transmisin. Tiene cuatro conexiones externas o puertos. C y C1 son las entradas de control y X e Y son las seales que van a ser conectadas
o desconectadas por la TG. En la Figura 2-35(b) y (c), aparece el modelo con interruptores para
la puerta de transmisin. Si C % 1 y C1 % 0, X e Y se conectan segn el modelo, por un interruptor cerrado y las seales pueden pasar de X a Y o de Y a X. Si C % 0 y C1 % 1, X e Y estn
desconectados, como se representa en el modelo, por un interruptor abierto y las seales no
pueden pasar entre X e Y. En uso normal, las entradas de control estn conectadas por un inverso, como se muestra en la Figura 2-35(d), de manera que C y C1 son uno el complemento del
otro.
Para ilustrar el uso de una puerta de transmisin, se muestra en la Figura 2-36(a) una puerta
OR exclusiva construida con dos puertas de transmisin y dos inversores. La entrada C controla
las rutas por las puertas de transmisin, y la entrada A proporciona la salida para F. Si la entrada
C es igual a 1, existe un camino por la puerta de transmisin TG1 conectando F con A1 , y no
existe ninguna ruta por TG0. Si la entrada C es igual a 0, existe una ruta por TG0 conectando F
con A, y no existe ninguna ruta por TG1. As, la salida F est conectada con A. Esto da lugar a
la tabla de verdad de la OR exclusiva, como se indica en la Figura 2-36(b).

C1yC0
X

TG

(b)
Y

X
X

Y
C0yC1

(a)

(c)

TG

C
(d)

 FIGURA 2-35
Puerta de transmisin (TG)

74 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 FIGURA 2-36
Puerta de transmisin OR exclusiva

2-10 RESUMEN DEL CAPTULO


Las operaciones lgicas primitivas AND, OR, y NOT definen tres componentes lgicos llamados puertas, usadas para implementar sistemas digitales. El lgebra de Boole, definido en trminos de estas operaciones, proporciona una herramienta para manipular funciones booleanas
en el diseo de circuitos lgicos. Las formas cannicas de minitrminos y maxitrminos se corresponden directamente con las tablas de verdad de las funciones. Estas formas cannicas se
pueden manipular en forma de suma de productos o producto de sumas, que corresponden a
circuitos con dos niveles puertas. Dos medidas de coste para minimizar, optimizando un circuito, son el nmero de literales de entrada al circuito y el nmero total de puertas del circuito. Los
mapas-K, desde dos hasta cuatro variables, son una alternativa efectiva a la manipulacin algebraica en la optimizacin de circuitos pequeos. Estos mapas se pueden usar para optimizar las
formas de suma de productos, producto de sumas, y funciones especificadas incompletamente
con condiciones de indiferencia. Se han ilustrado las transformaciones para optimizar circuitos
de mltiples niveles con tres o ms niveles de puertas.
Las operaciones primitivas AND y OR no estn directamente implementadas por elementos
lgicos primitivos en la familia lgica ms popular. As, se han presentado las primitivas
NAND y NOR tanto as como las puertas complejas que implementan esas familias. Se ha presentado una primitiva ms compleja, la OR exclusiva, tanto como su complemento, la NOR exclusiva, junto con sus propiedades matemticas.

REFERENCIAS
1. BOOLE, G.: An Investigation of the Laws of Thought. New York: Dover, 1854.
2. KARNAUGH, M.: A Map Method for Synthesis of Combinational Logic Circuitos, Transactions of AIEE, Communication y Electronics, 72, part I (Nov. 1953), 593-99.
3. DIETMEYER, D. L.: Logic Design of Digital Systems, 3rd ed. Boston: Allyn Bacon, 1988.
4. MANO, M. M.: Digital Design, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 2002.
5. ROTH, C. H.: Fundamentals of Logic Design, 4th ed. St. Paul: West, 1992.
6. HAYES, J. P.: Introduction to Digital Logic Design. Reading, MA: Addison-Wesley, 1993.
7. WAKERLY, J. F.: Digital Design: Principles y Practices, 3rd ed. Upper Saddle River, NJ:
Prentice Hall, 2000.
8. GAJSKI, D. D.: Principles of Digital Design. Upper Saddle River, NJ: Prentice Hall, 1997.

CIRCUITOS LGICOS COMBINACIONALES

9.

75

IEEE Standard Graphic Symbols for Logic Funcins. (Includes IEEE Std 91a-1991 Supplement y IEEE Std 91-1984.) New York: The Institute of Electrical y Electronics Engineers,
1991.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que hay una solucin
disponible en la direccin de Internet: http://www.librosite.net/Mano.
2-1. *Demuestre por medio de tablas de verdad la validez de las siguientes identidades:
(a) Teorema de DeMorgan para tres variables: XYZ % X1 ! Y1 ! Z1
(b) La segunda ley distributiva: X ! YZ % (X ! Y)(X ! Z)
(c) X1 Y ! Y1 Z ! XZ1 % XY1 ! YZ1 ! X1 Z
2-2. *Demuestre la identidad de cada una de las siguientes ecuaciones booleanas, usando la
manipulacin algebraica:
(a) X1 Y1 ! X1 Y ! XY % X1 ! Y
(b) A1 B ! B1 C1 ! AB ! B1 C % 1
(c) Y ! X1 Z ! XY1 % X ! Y ! Z
(d) X1 Y1 ! Y1 Z ! XZ ! XY ! YZ1 % X1 Y1 ! XZ ! YZ1
2-3. !Demuestre la identidad de cada una de las siguientes ecuaciones booleanas, usando la
manipulacin algebraica:
(a) AB ! BC1 D1 ! A1 BC ! C1 D % B ! C1 D
(b) WY ! W1 YZ1 ! WXZ ! W1 XY1 % WY ! W1 XZ1 ! X1 YZ1 ! XY1 Z
(c) AC1 ! A1 B ! B1 C ! D1 % (A1 ! B1 ! C1 ! D1 )(A ! B ! C ! D1 )
2-4. !Dado que A B % 0 y A ! B % 1, use la manipulacin algebraica para demostrar que
(A ! C) (A1 ! B) (B ! C) % B C
2-5. !En este captulo se ha usado un lgebra especfica de Boole con solamente dos elementos 0 y 1. Se pueden definir otras lgebras booleanas con ms que dos elementos
usando elementos que corresponden a cadenas binarias. Estas lgebras forman la base
matemtica para las operaciones lgicas de bit a bit que vamos a estudiar en el Captulo
7. Suponga que las cadenas son cada una un nibble (medio byte) de cuatro bits. Entonces
hay 24, o 16, elementos en el lgebra, donde un elemento I es el nibble de 4-bit en binario
correspondiente a I en decimal. Basndose en la aplicacin bit a bit del lgebra de Boole
de dos elementos, defina cada uno de los siguientes puntos para la nueva lgebra de manera que las identidades booleanas sean correctas:
(a) La operacin OR A ! B para cada dos elementos A y B
(b) La operacin AND A B para cada dos elementos A y B
(c) El elemento que acta como el 0 para el lgebra
(d) El elemento que acta como el 1 para el lgebra
(e) Para cada elemento A, el elemento A1 .
2-6. Simplifique las siguientes expresiones booleanas a las expresiones conteniendo un nmero mnimo de literales:
(a) A1 C1 ! A1 BC ! B1 C

76 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

(b)
(c)
(d)
(e)

(A ! B)(A1 ! B1 )
ABC ! A1 C
BC ! B(AD ! C1 D)
(B ! C1 ! BC1 )(BC ! AB1 ! AC)

2-7. *Reduzca las siguientes expresiones booleanas al nmero de literales indicado:


(a) X1 Y1 ! XYZ ! X1 Y a tres literales
(b) X ! Y(Z ! X ! Z) a dos literales
(c) W1 X(Z1 ! Y1 Z) ! X(W ! W1 YZ) a un literal
(d) (AB ! A1 B1 )(C1 D1 ! CD) ! A1 C1 a cuatro literales
2-8. Usando el Teorema de DeMorgan, exprese la funcin
F % A1 BC ! B1 C1 ! AB1
(a) Solamente con operaciones de OR y de complemento.
(b) Solamente con operaciones AND y de complemento.
2-9. *Encuentre el complemento de las siguientes expresiones:
(a) AB1 ! A1 B
(b) (V1 W ! X)Y ! Z1
(c) WX(Y1 Z ! YZ1 ) ! W1 X1 (Y1 ! Z)(Y ! Z1 )
(d) (A ! B1 ! C)(A1 B1 ! C)(A ! B1 C1 )
2-10. *Obtenga la tabla de verdad para las siguientes funciones, y exprese cada funcin en forma de suma de minitrminos y de producto de maxitrminos:
(a) (XY ! Z)(Y ! XZ)
(b) (A1 ! B)(B1 ! C)
(c) WXY1 ! WXZ1 ! WXZ ! YZ1
2-11. Para las Funciones de Boole E y F, segn la siguiente tabla de verdad:

(a)
(b)
(c)
(d)
(e)

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

1
0
1
0
0
1
1
0

0
0
1
0
1
0
1
1

Enumere los minitrminos y maxitrminos de cada funcin.


Enumere los minitrminos de E1 y F1 .
Enumere los minitrminos de E ! F y E F.
Exprese E y F en forma algebraica de suma de minitrminos.
Simplifique E y F a expresiones con un nmero mnimo de literales.

CIRCUITOS LGICOS COMBINACIONALES

77

2-12. *Convierta las siguientes expresiones en formas de suma de productos y de producto de


sumas:
(a) (AB ! C)(B ! C1 D)
(b) X1 ! X(X ! Y1 )(Y ! Z1 )
(c) (A ! BC1 ! CD)(B1 ! EF)
2-13. Dibuje el diagrama lgico para las siguientes expresiones booleanas. El diagrama debera
corresponder exactamente a la ecuacin. Suponga que los complementos de las entradas
no estn disponibles.
(a) WX1 Y1 ! W1 Z ! YZ
(b) A(BD1 ! B1 D) ! D(BC ! B1 C1 )
(c) WY1 (X ! Z) ! X1 Z(W ! Y) ! WX1 (Y ! Z)
2-14. Optimice las siguientes ecuaciones booleanas mediante un mapa de tres variables:
(a) F(X, Y, Z) % Gm(1, 3, 6, 7)
(b) F(X, Y, Z) % Gm(3, 5, 6, 7)
(c) F(A, B, C) % Gm(0, 1, 2, 4, 6)
(d) F(A, B, C) % Gm(0, 3, 4, 5, 7)
2-15. *Optimice la siguiente expresin booleana usando un mapa:
(a) X1 Z1 ! YZ1 ! XYZ
(b) A1 B ! B1 C ! A1 B1 C1
(c) A1 B1 ! AC1 ! B1 C ! A1 BC1
2-16. Optimice las siguientes funciones booleanas mediante un mapa de cuatro variables:
(a) F(A, B, C, D) % Gm(2, 3, 8, 9, 10, 12, 13, 14)
(b) F(W, X, Y, Z) % Gm(0, 2, 5, 6, 8, 10, 13, 14, 15)
(c) F(A, B, C, D) % Gm(0, 2, 3, 7, 8, 10, 12, 13)
2-17. Optimice las siguientes funciones booleanas, usando un mapa:
(a) F(W, X, Y, Z) % Gm(0, 2, 5, 8, 9, 11, 12, 13)
(b) F(A, B, C, D) % Gm(3, 4, 6, 7, 9, 12, 13, 14, 15)
2-18. *Encuentre los minitrminos de las siguientes expresiones dibujando primero cada expresin en un mapa:
(a) XY ! XZ ! X1 YZ
(b) XZ ! W1 XY1 ! WXY ! W1 YZ ! WY1 Z
(c) B1 D1 ! ABD ! A1 BC
2-19. *Encuentre todos los implicantes primos para las siguientes funciones booleanas, y determine cules son esenciales:
(a) F(W, X, Y, Z) % Gm(0, 2, 5, 7, 8, 10, 12, 13, 14, 15)
(b) F(A, B, C, D) % Gm(0, 2, 3, 5, 7, 8, 10, 11, 14, 15)
(c) F(A, B, C, D) % Gm(1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15)
2-20. Optimice las siguientes funciones booleanas encontrando todos los implicantes primos y
los implicantes primos esenciales aplicando la regla de seleccin:
(a) F(W, X, Y, Z) % Gm(0, 1, 4, 5, 7, 8, 9, 12, 14, 15)

78 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

(b) F(A, B, C, D) % Gm(1, 5, 6, 7, 11, 12, 13, 15)


(c) F(W, X, Y, Z) % Gm(0, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 15)
2-21. Optimice las siguientes funciones booleanas en forma de producto de sumas:
(a) F(W, X, Y, Z) % Gm(0, 2, 3, 4, 8, 10, 11, 15)
(b) F(A, B, C, D) % FM(0, 2, 4, 5, 8, 10, 11, 12, 13, 14)
2-22. Optimice las siguientes expresiones en (1) forma de suma de productos y (2) forma de
producto de sumas:
(a) AC1 ! B1 D ! A1 CD ! ABCD
(b) (A1 ! B1 ! D1 )(A ! B1 ! C1 )(A1 ! B ! D1 )(B ! C1 ! D1 )
(c) (A1 ! B1 ! D)(A1 ! D1 )(A ! B ! D1 )(A ! B1 ! C ! D)
2-23. Optimice las siguientes funciones en forma de (1) suma de productos y (2) forma de producto de sumas:
(a) F(A, B, C, D) % Gm(2, 3, 5, 7, 8, 10, 12, 13)
(b) F(W, X, Y, Z) % FM(2, 10, 13)
2-24. Optimice las siguientes funciones booleanas F junto con las condiciones de indiferencia d:
(a) F(A, B, C, D) % Gm(0, 3, 5, 7, 11, 13), d(A, B, C, D) % Gm(4, 6, 14, 15)
(b) F(W, X, Y, Z) % Gm(0, 6, 8, 13, 14), d(W, X, Y, Z) % Gm(2, 4, 7, 10, 12)
(c) F(A, B, C) % Gm(0, 1, 2, 4, 5), d(A, B, C) % Gm(3, 6, 7)
2-25. *Optimice las siguientes funciones booleanas F junto con las condiciones de indiferencia
d. Encuentre todos los implicantes primos y los implicantes primos esenciales, y aplique
la regla de seleccin.
(a) F(A, B, C) % Gm(3, 5, 6), d(A, B, C) % Gm(0, 7)
(b) F(W, X, Y, Z) % Gm(0, 2, 4, 5, 8, 14, 15), d(W, X, Y, Z) % Gm(7, 10, 13)
(c) F(A, B, C, D) % Gm(4, 6, 7, 8, 12, 15), d(A, B, C, D) % Gm(2, 3, 5, 10, 11, 14)
2-26. Optimice las siguientes funciones booleanas F junto con las condiciones de indiferencia d
en forma de (1) suma de productos y (2) producto de sumas:
(a) F(A, B, C, D) % FM(1, 3, 4, 6, 9, 11), d(A, B, C, D) % Gm(0, 2, 5, 10, 12, 14)
(b) F(W, X, Y, Z) % Gm(3, 4, 9, 15), d(W, X, Y, Z) % Gm(0, 2, 5, 10, 12, 14)
2-27. Use la descomposicin para encontrar el menor nmero de entradas de puerta, implementaciones de mltiples niveles, para las funciones usando puertas AND y OR y inversores.
(a) F(A, B, C, D) % AB1 C ! A1 BC ! AB1 D ! A1 BD
(b) F(W, X, Y, Z) % WY ! XY ! W1 XZ ! WX1 Z
2-28. Use extraccin para encontrar el menor nmero de entradas de puertas compartidas, implementacin de mltiple nivel para el par de funciones dadas usando puertas AND y OR
y inversores.
(a) F(A, B, C, D) % Gm(0, 5, 11, 14, 15), d(A, B, C, D) % Gm(10)
(b) G(A, B, C, D) % Gm(2, 7, 10, 11, 14), d(A, B, C, D) % Gm(15)

CIRCUITOS LGICOS COMBINACIONALES

79

2-29. Use eliminacin para aplanar (flatten) cada uno de los conjuntos de funciones dados en
una forma de suma de productos de dos niveles.
(a) F(A, B, G, H) % ABG1 ! B1 G ! A1 H1 , G(C, D) % CD1 ! C1 D, H(B, C, D) % B ! CD
(b) T(U, V, Y, Z) % YZU ! Y1 Z1 V, U(W, X) % W ! X1 , V(W, X, Y) % W1 Y ! X
2-30. *Demuestre que el dual del OR exclusiva es igual a su complemento.
2-31. Implemente la siguiente funcin booleana con puertas de OR exclusiva y AND, usando el
menor nmero de entradas de puerta:
F(A, B, C, D) % ABC1 D ! AD1 ! A1 D
2-32. (a) Implemente la funcin H % X1 Y ! XZ usando dos buffers triestados y un inversor.
(b) Construya una puerta de OR exclusiva interconectando dos buffers triestados y dos
inversores.
2-33. (a) Conecte las salidas de tres buffers triestados, y aada la lgica adicional para implementar la funcin
F % A1 BC ! ABD ! AB1 D1
Suponga que C, D y D1 son entradas de datos a los buffers y A y B pasan por una
lgica que genera las entradas de habilitacin.
(b) Est su diseo de la parte (a) libre de conflictos en la salida triestado? Si no, cambie
el diseo si es necesario para estar libre de estos conflictos.
2-34. Use solamente puertas de transmisin e inversores para implementar la funcin del Problema 2-32.
2-35. Dependiendo del diseo y de la familia lgica usada, en general no es una buena idea
dejar la salida de un circuito triestado o de puertas de transmisin en un estado de alta
impedancia (Hi-Z).
(a) Para el circuito de puertas de transmisin diseado en el Problema 2-33, presente todas las combinaciones de entrada para las que la salida F est en un estado de alta
impedancia.
(b) Modifique la lgica de habilitacin cambiando las entradas de habilitacin de manera
que la salida sea 0 o 1 (en vez de Hi-Z).

CAPTULO

3
DISEO LGICO
COMBINACIONAL

n este captulo, aprenderemos a disear circuitos combinacionales. Se introducir el uso de la jerarqua y del diseo top-down, ambos esenciales para el
diseo de circuitos digitales. Adems se realizar una breve descripcin del diseo asistido por computadora, incluyendo los lenguajes de descripcin hardware
(HDLs) y la sntesis lgica, dos conceptos que juegan papeles cruciales en el diseo
eficiente de los modernos, y complejos, circuitos.
En la seccin del espacio de diseo se cubren los conceptos relativos a la tecnologa subyacente para la implementacin de circuitos digitales. Se presentan las propiedades de las puertas lgicas, los niveles de integracin, y los parmetros de las
distintas tecnologas lgicas. Se definirn los trminos fan-in, fan-out y tiempo de propagacin de las puertas, y se introducirn los conceptos de lgica positiva y negativa.
Finalmente, trataremos sobre el equilibrio entre las distintas dimensiones del espacio
de diseo, como pueden ser coste y prestaciones.
Se presenta un ciclo de diseo con cinco pasos principales. Los tres primeros
pasos, especificacin, formulacin y optimizacin se muestran con ejemplos. Se presentan las tecnologas no programables y con ellas el siguiente proceso del ciclo de
diseo, el mapeado tecnolgico. El paso final en el proceso de diseo, la verificacin,
se muestra mediante un ejemplo usando tanto el mtodo manual como la simulacin
lgica. El captulo finaliza con una introduccin a las tecnologas basadas en lgica
programable.
Los distintos conceptos de este capitulo son fundamentales en el diseo de una
computadora genrica tal y como se mostr en el diagrama del principio del Captulo
1. Los conceptos vistos en este captulo se aplican a todos los componentes digitales
de esta computadora genrica incluyendo las memorias.

82

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

3-1 CONCEPTOS DE DISEO Y AUTOMATIZACIN


En al Captulo 1 aprendimos sobre nmeros binarios y cdigos binarios capaces de representar
cantidades discretas de informacin. En el Captulo 2, se presentaron las distintas puertas lgicas y se aprendi a optimizar las expresiones y ecuaciones booleanas con el fin de minimizar el
numero de puertas en las implementacines. El propsito de este capitulo es aprovechar los conocimientos adquiridos en los captulos anteriores para formular un procedimiento de diseo
sistemtico de circuitos combinacionales. Adems, los pasos de este proceso se relacionarn con
el uso de las herramientas de diseo asistido por computadora. Varios ejemplos servirn para
adquirir prctica en el diseo. El diseo digital moderno hace uso de una serie de tcnicas y
herramientas que son esenciales para el diseo de circuitos complejos y sistemas. El diseo jerrquico, el diseo top-down, las herramientas de diseo asistido por computadora, los lenguajes
de descripcin hardware, y la sntesis lgica, son algunas de las herramientas mas importantes
necesarias para un diseo digital eficiente y efectivo.
Los circuitos lgicos para sistemas digitales pueden ser combinacionales o secuenciales. Un
circuito combinacional est formado por puertas lgicas cuyas salidas estn determinadas, en
cualquier instante del tiempo, por operaciones lgicas realizadas sobre las entradas en ese mismo instante. Un circuito combinacional realiza una operacin lgica que puede especificarse
lgicamente mediante un conjunto de ecuaciones booleanas. Por el contrario, los circuitos secuenciales emplean elementos que almacenan bits. Las salidas de un circuito secuencial son
funcin de las entradas y de los bits almacenados en los elementos de memoria que, a su vez, no
slo dependen de los valores actuales de sus entradas sino tambin de sus valores pasados. El
comportamiento de un circuito se debe especificar por una secuencia temporal de entradas as
como de bits memorizados. Los circuitos secuenciales sern estudiados en el Captulo 6.
Un circuito combinacional consiste en variables de entrada, variables de salida, puertas lgicas e interconexiones. Las puertas lgicas interconectadas aceptan seales procedentes de las
entradas y generan seales hacia las salidas. En la Figura 3-1, se muestra el diagrama de bloques de un circuito combinacional tpico. Las n variables de entrada provienen del entorno del
circuito, y las m variables de salida estn disponibles para ser usadas por dicho entorno. Cada
variable de entrada y de salida existe fsicamente como una seal binaria que toma el valor 0
lgico o 1 lgico.
Para n variables de entrada, existen 2n posibles combinaciones binarias de entrada. Para cada combinacin binaria de las variables de entrada, existe un nico valor binario posible en cada
salida. De esta forma, un circuito combinacional puede definirse a travs de una tabla de verdad
que muestre una lista con los valores de la salida para cada combinacin de las variables de
entrada. Un circuito combinacional, puede definirse tambin mediante m funciones booleanas,
una para cada variable de salida. Cada una de estas funciones se expresa mediante una funcin de las n variables de entrada. Antes de entrar a definir el proceso de diseo, se presentarn
dos conceptos fundamentales relacionados con l: el diseo jerrquico y el diseo top-down.

n entradas

Circuito
combinacional

m salidas

FIGURA 3-1
Diagrama de bloques de un circuito combinacional

DISEO LGICO COMBINACIONAL

83

Diseo jerrquico
Un circuito se puede representar mediante un smbolo que muestra sus entradas y sus salidas y
una descripcin que defina exactamente su modo de funcionamiento. Sin embargo, en trminos
de implementacin, un circuito se compone de puertas lgicas y otras estructuras lgicas interconectadas entre s. Un sistema digital complejo puede llegar a contener millones de puertas
lgicas interconectadas. De hecho, un slo procesador de muy alta escala de integracin (VLSI)
puede llegar a contener varias decenas de millones de puertas. Con tal complejidad, la interconexin de puertas parece un incomprensible laberinto. De esta manera, no es posible disear
circuitos o sistemas complejos mediante la simple interconexin de puertas. Con el fin de poder
manejar circuitos de semejante complejidad se emplea el mtodo divide y vencers. El circuito se divide en piezas menores que llamaremos bloques. Los bloques se interconectan para formar el circuito. Las funciones de estos bloques y sus interfaces se definen cuidadosamente de
modo que el circuito formado mediante su interconexin obedezca las especificaciones del circuito primigenio. Si un bloque todava resultase demasiado grande y complejo para disearse
como una entidad simple, puede volverse a dividir en otros bloques ms pequeos. Este proceso
puede repetirse tantas veces como sea necesario. Tenga presente que aunque ahora estamos trabajando fundamentalmente con circuitos lgicos, se ha empleado el termino circuito para esta
discusin pero, estas ideas pueden aplicarse igualmente a los sistemas tratados en los siguientes captulos.
La tcnica divide y vencers se muestra para un circuito combinacional en la Figura 3-2.
El circuito implementa la funcin de paridad impar de 9 entradas. La parte (a) de la figura
muestra un smbolo para el circuito completo. En la parte (b), se representa un diagrama lgico,
esquema o esquemtico, para el circuito representado por el smbolo de la parte (a). En este
esquemtico el diseador ha decidido partir el circuito en cuatro bloques idnticos, cada uno de
los cuales es una funcin de paridad impar de 3 entradas. Por ello el smbolo empleado para
esta funcin de paridad impar de 3 entradas se repite 4 veces. Los cuatro smbolos se interconectan para formar el circuito de paridad impar de 9 entradas. En la parte (c) se muestra cmo
el bloque generador de paridad impar de 3 entradas esta compuesto a su vez por dos puertas
XOR interconectadas. Finalmente, en la parte (d), las puertas XOR se implementan a partir de
puertas NAND. Tenga en cuenta que en cada caso, cada vez que se desciende un nivel, cada
smbolo se sustituye por un esquema que representa la implementacin de dicho smbolo.
Este modo de entender el diseo se conoce como diseo jerrquico y la relacin de smbolos y esquemas resultante constituye una jerarqua que representa al circuito diseado. La estructura de la jerarqua se puede representar, sin las interconexiones, comenzando por el bloque
superior y enlazndolo por debajo a aquellos que lo forman. Usando esta representacin, la jerarqua para el circuito de paridad impar de 9 entradas se muestra en la Figura 3-3(a). Observe
cmo la estructura que resulta tiene forma de rbol invertido. Las hojas del rbol son las
puertas NAND, en este caso 32 puertas. Con el fin de obtener una representacin mas compacta, podemos reutilizar los bloques tal y como se muestra en la Figura 3-3 (b). Este diagrama se
corresponde con los bloques de la Figura 3-2 pero empleando solo una copia de cada uno de
ellos. Este diagrama y los circuitos de la Figura 3-2 sern de ayuda para ilustrar algunos conceptos tiles asociados con las jerarquas y con los bloques jerrquicos.
En primer lugar, la jerarqua reduce la complejidad necesaria para representar el esquemtico de un circuito. Por ejemplo, en la Figura 3-3(a), aparecen 32 bloques NAND. Esto significa
que si un generador de paridad impar de 9 entradas va a ser diseado directamente en trminos
de puertas NAND, el esquema del circuito consistir en 32 smbolos de puertas NAND interconectados entre s, frente a los slo 10 smbolos necesarios para describir la implementacin

84

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

jerrquica del circuito que aparece en la Figura 3-2. De esta forma, la jerarqua permite representaciones simplificadas de circuitos complejos.
En segundo lugar, la jerarqua de la Figura 3-3 termina en un conjunto de hojas. En este
caso, las hojas son las puertas NAND. Ya que las puertas NAND son circuitos electrnicos, y
aqu solo estamos interesados en diseo lgico, las puertas NAND se denominan bloques primitivos, primitivas de diseo o, simplemente, primitivas. Estos son los bloques bsicos que teniendo smbolo no tiene esquema lgico. Las primitivas son un tipo rudimentario de bloques predefinidos. En general, otras estructuras ms complejas que igualmente tienen smbolo pero no
esquema lgico, tambin son bloques predefinidos. En vez de esquemticos, su funcin puede
definirse mediante un programa o una descripcin que sirva como modelo de funcionamiento.
Por ejemplo, en la jerarqua representada en la Figura 3-3, las puertas XOR pueden considerarse
como bloques predefinidos. En tal caso, el diagrama que describe los bloques XOR de la Figura 3-2 (d) no sera necesario. La representacin jerrquica de la Figura 3-3 terminara entonces
en los bloques XOR. En cualquier jerarqua las hojas son los bloques predefinidos, algunos de
los cuales pueden ser primitivas.
X0
X1
X2 Generador
X3 de paridad
ZO
X4
X5 impar de
X6 9 entradas
X7
X8
(a) Smbolo del circuito

X0

A0 Generador

X1

A1 de paridad BO

X2

A2 3 entradas

X3

A0 Generador

A0 Generador

X5

de paridad
A1 impar de BO
A 3 entradas

A1 impar de BO
A2 3 entradas

X6

A0 Generador

X7

A1 impar de BO
A2 3 entradas

X4

X8

impar de

de paridad

de paridad

(b) Circuito como interconexin de bloques


generadores de paridad impar de 3 entradas
A0
A1

BO

A2
(c) Generador de paridad impar de
3 entradas como interconexin
de bloques XOR

(d) Bloque XOR como interconexin


de NAND

FIGURA 3-2
Ejemplo de diseo jerrquico y reutilizacin de bloques

ZO

DISEO LGICO COMBINACIONAL

85

Una tercera propiedad muy importante que resulta del diseo jerrquico es la reutilizacin
de bloques, tal y como se muestra en la Figuras 3-3(a) y (b). En la parte (a), hay cuatro copias
del bloque de paridad impar de 3 entradas y ocho copias del bloque de XOR. En la parte (b),
slo hay una copia del bloque de paridad impar de 3 entradas y una nica copia del bloque
XOR. Esto significa que el diseador solo tiene que disear un bloque para el generador de
paridad impar de 3 entradas y un bloque para la XOR y luego podr usar dichos bloques, cuatro
y ocho veces respectivamente para formar el circuito de paridad impar de 9 entradas. En general, suponga que en varios niveles de la jerarqua los bloques usados han sido definidos cuidadosamente de manera que muchos sean idnticos. Para estos bloques repetidos, solo ser necesario
un nico diseo. Este diseo podr usarse en todos los lugares donde se necesite el bloque.
Cada presencia de un determinado bloque en el diseo se denomina una instancia del bloque y
su uso se llama instanciacin. Un bloque es reutilizable en el sentido que se puede emplear en
mltiples lugares del diseo del circuito y, posiblemente, tambin en el diseo de otros circuitos. Este concepto reduce enormemente los esfuerzos necesarios para el diseo de circuitos
complejos. Vase que, en la implementacin del circuito, cada instancia de un bloque requiere
su propio hardware como se muestra en la Figura 3-3(a). La reutilizacin, como se presenta
en la Figura 3-3(b), nicamente tiene cabida en el esquema, no en la implementacin real del
circuito.
Tras completar la discusin acerca del proceso de diseo, en los Captulos 4 y 5, centraremos nuestra atencin en los bloques reutilizables predefinidos que usualmente estn situados en
los niveles inferiores de la jerarqua de los diseos lgicos. Son bloques que proporcionan funciones bsicas empleadas en diseo digital. Permiten a los diseadores trabajar, la mayor parte
del tiempo, en el ciclo de diseo a un nivel superior al de las primitivas. Nos referiremos a estos
bloques particulares como bloques funcionales. De este modo, un bloque funcional es una
coleccin predefinida de puertas interconectadas. Muchos de estos bloques funcionales han estado disponibles durante dcadas como circuitos de integracin a media escala (MSI) que se
interconectaban para formar circuitos o sistemas. Actualmente, las libreras de las herramientas

Generador de paridad
impar de 9 entradas

Generador de paridad
impar de 9 entradas

Generador
de paridad
impar de
3 entradas

XOR

XOR

Generador
de paridad
impar de
3 entradas

XOR

Generador
de paridad
impar de
3 entradas

XOR

XOR

XOR

Generador
de paridad
impar de
3 entradas

XOR

XOR

Generador
de paridad
impar de
3 entradas

XOR

-NAND
(a)

FIGURA 3-3
Diagramas representando la jerarqua de la Figura 3-2

(b)

86

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

de diseo asistido por computadora incluyen bloques similares que se emplean para el diseo de
cicuitos integrados mas grandes. Estos bloques funcionales forman un catalogo de componentes
digitales elementales que se usan ampliamente en el diseo y la implementacin de circuitos
integrados para computadoras y sistemas digitales.

Diseo top-down
Preferiblemente, el proceso de diseo debe ser realizado de arriba hacia abajo (top-down). Esto
significa que el funcionamiento del circuito se especifica mediante texto o mediante un lenguaje
de descripcin hardware (HDL), junto con los objetivos de coste, prestaciones y fiabilidad. En
los niveles altos del diseo el circuito se divide en bloques, tantas veces como sea necesario,
hasta conseguir bloques suficientemente pequeos como para permitir su diseo lgico. Para un
diseo lgico manual, puede ser necesario dividir todava ms los bloques. En sntesis automtica, la descripcin HDL se convierte automticamente en lgica. Entonces, tanto para el diseo
manual como para la sntesis automtica, la lgica se optimiza y es entonces mapeada a las
primitivas disponibles. En la prctica, la realidad se separa significativamente de esta descripcin ideal, especialmente en los niveles ms altos del diseo. Para alcanzar la reusabilidad y
para maximizar el uso de mdulos predefinidos es a menudo necesario realizar algunas partes
del diseo de abajo hacia arriba (bottom-up). Adems, un diseo concreto obtenido durante el
ciclo de diseo puede violar alguno de los objetivos de la especificacin inicial. En estos casos
es necesario recorrer hacia arriba la jerarqua de diseo hasta alcanzar algn nivel en el que esta
violacin pueda ser eliminada. Entonces se revisa a ese nivel una parte del diseo y las revisiones son transferidas desde ese nivel hacia abajo a travs de la jerarqua.
En este texto, dado que la familiaridad del lector con el diseo lgico y de computadoras es,
probablemente, limitada; es necesario disponer ya de un conjunto de bloques funcionales que
permitan guiar el diseo top-down. De la misma forma, tambin debe ser alcanzada una cierta
maestra en la manera cmo dividir un circuito en bloques que puedan servir como gua para un
diseo top-down. As, una gran parte de este texto se dedicar al diseo bottom-up ms que al
top-down. Para comenzar construyendo las bases del diseo top-down, en los Captulo 4 y 5
centraremos nuestros esfuerzos en el diseo de los bloques funcionales de uso ms frecuente.
En los Captulos 7 y 10 ilustraremos cmo circuitos ms grandes y sistemas, pueden ser divididos en bloques y cmo estos bloques son implementados con bloques funcionales. Finalmente,
comenzando en el Captulo 11, aplicaremos estas ideas para contemplar el diseo ms desde
una perspectiva top-down.

Diseo asistido por computadora


El diseo de sistemas complejos y de circuitos integrados no resultara factible sin la ayuda de
herramientas de diseo asistido por computadora (CAD). Las herramientas de captura de esquemas permiten dibujar bloques e interconectarlos en cualquiera de los niveles de la jerarqua. En
el nivel de las primitivas y los bloques funcionales, se proporcionan libreras de smbolos grficos. Las herramientas de captura de esquemas ayudan a construir una jerarqua permitiendo generar smbolos de bloques jerrquicos y replicando estos smbolos para poder reutilizarlos.
Las primitivas y los bloques funcionales de las libreras tienen asociados unos modelos que
permiten verificar el comportamiento y los tiempos caractersticos tanto de los bloques jerrquicos como del circuito entero. Esta verificacin se realiza aplicando entradas a los bloques o al
circuito, y usando un simulador lgico que determine las salidas. Mostraremos esta simulacin
lgica con algunos ejemplos.

DISEO LGICO COMBINACIONAL

87

Las primitivas de las libreras tambin tienen asociada otra informacin como es rea fsica
o parmetros de retardo, que puede ser empleada por el sintetizador lgico para optimizar diseos generados automticamente a partir de una especificacin en un lenguaje de descripcin
hardware.

Lenguajes de descripcin hardware


Hasta ahora, hemos mencionado los lenguajes de descripcin hardware slo ocasionalmente.
Sin embargo, en el diseo moderno estos lenguajes han llegado a ser cruciales en el ciclo de
diseo. Inicialmente, justificaremos el empleo de dichos lenguajes describiendo sus aplicaciones. Ms tarde, discutiremos brevemente sobre VHDL y Verilog4, los ms populares de ellos.
Comenzando en el Captulo 4, se presentarn con detalle ambos lenguajes, aunque esperamos
que en cualquier otro curso que se imparta slo se vea uno de ellos.
Los lenguajes de descripcin hardware son parecidos a los lenguajes de programacin, pero
estn ms orientados a describir estructuras hardware y sus comportamientos. Se distinguen
fundamentalmente de los lenguajes de programacin en que describen operaciones en paralelo
mientras que la mayora de los lenguajes de programacin describen operaciones secuenciales.
Una aplicacin obvia para los lenguajes de descripcin hardware es proporcionar una alternativa a los esquemticos. Cuando el lenguaje se emplea de esta manera para describir una interconexin de componentes, se denomina descripcin estructural. La descripcin estructural, referida como netlist, se emplea como entrada en la simulacin lgica tal y como se hara con el
esquemtico. Para poder llevar a cabo esto, es necesario disponer de modelos para cada primitiva. Si se emplea un HDL, entonces estos modelos pueden tambin escribirse en dicho HDL, con
lo que se logra una representacin ms uniforme y portable para la simulacin.
Sin embargo, la potencia del HDL se hace ms evidente cuando se emplea para algo ms
que para representar informacin esquemtica. Puede representar ecuaciones booleanas, tablas
de verdad y operaciones complejas como las aritmticas. De esta manera, en el diseo topdown, se puede definir con exactitud la descripcin, a muy alto nivel, de un sistema entero empleando HDL. Cmo una fase del ciclo de diseo, esta descripcin de alto nivel puede redefinirse y subdividirse en descripciones de ms bajo nivel. Finalmente, y como resultado del ciclo de
diseo, se obtiene una descripcin final en trminos de primitivas y bloques funcionales. Tenga
presente que todas estas descripciones pueden simularse. Ya que todas estas descripciones representan el mismo sistema en trminos de funciones, pero no necesariamente de tiempo, siempre deben responder entregando los mismos valores lgicos para las mismas entradas. Esta vital
propiedad de la simulacin permite la verificacin del diseo y es una de las causas principales
que justifican el empleo de HDLs.
Otra de las causas responsables del amplio uso de los HDLs es la sntesis lgica. La descripcin HDL de un sistema puede definirse a un nivel intermedio denominado nivel de transferencia entre registros (RTL). Una herramienta de sntesis lgica acompaada de una librera de
componentes puede convertir dicha descripcin en una interconexin de primitivas que implementa el circuito. De esta forma, al eliminar el diseo lgico manual se consigue que el diseo
de lgica compleja sea mucho ms eficiente.
Actualmente existen dos HDL: VHDL y Verilog4 que son muy empleados como lenguajes
estndar para el diseo hardware. Los lenguajes estndar son definidos, aprobados y publicados
por el Instituto de Ingenieros Elctricos y Electrnicos (IEEE). Cualquier implementacin de
estos lenguajes debe cumplir sus respectivos estndares. Este proceso de estandarizacin da a
los HDLs una ventaja ms sobre los esquemticos. Los HDLs son portables a travs de distintas herramientas de diseo asistido por computadora mientras que las herramientas de captura

88

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

de esquemas suelen ser nicas para cada fabricante. Adems, de estos lenguajes estndar un buen
numero de compaas disponen de sus propios lenguajes, a veces desarrollados mucho antes que
los lenguajes estndar, y que incorporan caractersticas nicas para sus productos particulares.
VHDL significa lenguaje de descripcin hardware para VHSIC. VHDL fue desarrollado bajo un contrato del Departamento de Defensa de los Estados Unidos como parte del programa de
circuitos integrados de muy alta velocidad (VHSIC) para convertirse, posteriormente, en un estndar del IEEE. Verilog4 fue desarrollado por una compaa, Gateway Design Automation,
ms tarde adquirida por Cadence4 Design Systems, Inc. Durante un tiempo, Verilog4 fue un
lenguaje propietario pero posteriormente se convirti en un lenguaje estndar del IEEE. En este
texto haremos una breve introduccin a ambos VHDL y Verilog4. Estas partes del texto son
opcionales y permitirn a su profesor abordar cualquiera de los lenguajes o ninguno de ellos.
Con independencia del HDL concreto, existe un procedimiento tpico a la hora de emplear
una descripcin HDL como entrada para la simulacin. Los pasos de este procedimiento son:
anlisis, elaboracin e inicializacin, seguidos finalmente por la simulacin. Normalmente, el
anlisis y la elaboracin se efectan por un compilador similar a los de los lenguajes de programacin. Durante el anlisis, se comprueba la descripcin para detectar violaciones de las reglas
sintcticas y semnticas del HDL y se genera una representacin intermedia del diseo. Durante
la elaboracin, se recorre la jerarqua del diseo representada mediante esta descripcin y se
aplana hasta conseguir una descripcin de una interconexin de mdulos cada uno de los cuales
esta definido nicamente por su comportamiento. El resultado final del anlisis y la elaboracin
realizados por el compilador es un modelo de simulacin de la descripcin HDL original. Este
modelo es entregado entonces al simulador para su ejecucin. La inicializacin fija todas las
variables del modelo de simulacin a los valores especificados o a sus valores por defecto. La
simulacin ejecuta el modelo de simulacin en modo batch (por lotes) o modo interactivo empleando un conjunto de entradas que fija el usuario.
Dada la capacidad de los HDLs para describir eficiente hardware complejo, se puede emplear una estructura HDL especial denominada testbench (banco de test). El testbench es una
descripcin que incluye el diseo que se va a comprobar, usualmente denominado dispositivo
bajo test (DUT). El testbench describe una coleccin de hardware y funciones software que
aplican entradas al DUT y analizan sus salidas comprobando que sean correctas. Este enfoque,
elimina la necesidad de generar por un lado las entradas del simulador y por otro analizar,
usualmente a mano, la salida del simulador. La construccin de un testbench proporciona un
mecanismo de verificacin uniforme que puede emplearse en mltiples niveles del ciclo de diseo top-down para verificar el correcto funcionamiento del circuito.

Sntesis lgica
Cmo se indic anteriormente, la disponibilidad de herramientas de sntesis lgica es la causa
desencadenante del uso creciente de los HDLs. La sntesis lgica transforma la descripcin
RTL, expresada en HDL, de un circuito en un netlist optimizado formado por elementos de memoria y lgica combinacional. Posteriormente, este netlist se puede transformar mediante herramientas de diseo fsico en el layout (plano o dibujo) del circuito integrado final. Este layout
sirve como base para la fabricacin del circuito integrado. Las herramientas de sntesis lgica
tienen en consideracin buena parte de los detalles del diseo y permiten buscar el mejor equilibrio entre coste y prestaciones, lo que resulta esencial en diseos avanzados.
En la Figura 3-4 se representa el diagrama de flujo a alto nivel de los pasos necesarios
para la sntesis lgica. El usuario es quien proporciona tanto la descripcin HDL del circuito a

DISEO LGICO COMBINACIONAL

Descripcin en
HDL del circuito

Restricciones elctricas,
de velocidad y de rea

89

Librera
tecnolgica

Traduccin

Representacin
intermedia

Preoptimizacin

Optimizacin

Mapeado tecnolgico

Netlist

FIGURA 3-4
Diagrama de flujo de alto nivel de una herramienta de sntesis lgica

disear como los distintos lmites y restricciones del diseo. Las restricciones elctricas incluyen los fan-out permisibles para las puertas y la carga mxima en las salidas. Las restricciones de rea y velocidad dirigen las etapas de optimizacin de la sntesis. Normalmente, los compromisos de rea fijan la mxima rea permitida para el circuito dentro del integrado. Tambin
es posible indicar mediante una directiva general que debe intentar minimizarse el rea. Usualmente, los requisitos de velocidad se expresan en forma de tiempos mximos de propagacin
permitidos a lo largo de varios caminos del circuito. Tambin es posible, mediante el empleo de
otra directiva general, indicar que debe intentar maximizarse la velocidad. Ambos, rea y velocidad, tienen impacto en el coste del circuito. Normalmente, un circuito rpido tendr una gran
rea y por tanto su fabricacin ser ms costosa. Un circuito que no necesite trabajar a altas
velocidades, podr ser optimizado en rea y ser, en trminos relativos, de fabricacin ms barata. En algunas herramientas de sntesis sofisticadas, el consumo de potencia tambin se puede
especificar como una restriccin. La herramienta de sntesis necesita informacin adicional, expresada en forma de una librera de tecnologa, que describe los elementos lgicos disponibles
para usar en el netlist as como sus parmetros de retardo y carga. Esta ltima informacin es
esencial a la hora de verificar las restricciones y efectuar optimizaciones.
El primer paso en el proceso de sntesis de la Figura 3-4 es la traduccin de la descripcin
HDL a un formato intermedio. La informacin en esta representacin puede ser una interconexin de puertas genricas y elementos de memoria no tomados de la librera de primitivas denominada librera tecnolgica. Esta informacin tambin puede materializarse en un formato alternativo que representa grupos de lgica y las interconexiones entre ellos.
El segundo paso en el proceso de sntesis es la optimizacin. Se puede emplear un paso de
preoptimizacin para simplificar el formato intermedio. Por ejemplo, si se detecta que en varias
partes del circuito se obtiene la misma funcin lgica de las mismas variables, esta funcin slo
se implementar una nica vez, y ser compartida por los bloques que lo requieran. Lo siguiente
es la optimizacin en la que el formato intermedio es procesado para intentar alcanzar las
restricciones especificadas. Usualmente se realizan optimizaciones a dos niveles y a mltiples
niveles. La optimizacin es seguida por el mapeado tecnolgico que sustituye las puertas AND,

90

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

OR y los inversores por puertas procedentes de la librera tecnolgica. Con el fin de evaluar el
rea y los parmetros de velocidad asociados a dichas puertas se emplea la informacin adicional existente en dichas libreras. Adems, con herramientas de sntesis complejas, la optimizacin se puede aplicar durante el mapeado tecnolgico aumentando de esta manera la probabilidad de alcanzar las restricciones del diseo. La optimizacin puede ser, para circuitos grandes,
un proceso muy complejo y lento. Pueden necesitarse muchas fases de optimizacin para conseguir alcanzar las restricciones especificadas o para demostrar que stas son muy difciles, si no
imposibles, de satisfacer. A fin de conseguir un diseo satisfactorio, el diseador puede que necesite modificar estas restricciones o el HDL. Modificar el HDL puede suponer disear manualmente algunas partes de la lgica para alcanzar los objetivos del diseo.
Tpicamente, el resultado de los procesos de mapeado tecnolgico y optimizacin es una
netlist que se corresponde a un esquemtico compuesto por elementos de almacenamiento,
puertas y otros bloques funcionales de lgica combinacional. Esta salida sirve como entrada para las herramientas de diseo fsico que fsicamente colocan los elementos lgicos y enrutan las
interconexiones entre ellos, generando el layout del circuito para fabricarlo. En el caso de las
piezas programables como los arrays de puertas programables en campo (FPGA) que discutiremos en la Seccin 3-6, una herramienta similar a la del diseo fsico genera la informacin binaria empleada para programar la lgica dentro de las piezas.

3-2 EL ESPACIO DE DISEO


Usualmente existe, para cada un diseo dado, una tecnologa de implementacin objetivo que
determina cules son las primitivas disponibles y sus propiedades. Adems, existe un conjunto
de restricciones que deben aplicarse al diseo. En esta seccin trataremos sobre las funciones de
las potenciales puertas primitivas y sus propiedades, y realizaremos una breve discusin acerca
de las restricciones del diseo y de los compromisos que deben considerarse a la hora de intentar alcanzarlas.

Propiedades de las puertas


Los circuitos digitales se construyen a partir de circuitos integrados. Un circuito integrado
(abreviado IC) es un cristal semiconductor de silicio, coloquialmente denominado chip, que
contiene componentes electrnicos como puertas lgicas o elementos de almacenamiento. Todos estos componentes estn interconectados entre s dentro del chip. Para formar un circuito
integrado, el chip se monta sobre un soporte cermico o plstico, y las conexiones se sueldan
desde el chip hasta pines externos. El nmero de pines puede oscilar desde 14 para los encapsulados de IC ms pequeos hasta varios cientos en los encapsulados mayores. Cada IC tiene un
nmero de identificacin impreso en la superficie del encapsulado que permite identificarlo. Cada fabricante publica unas hojas de datos o un catalogo con la descripcin y toda la informacin
necesaria acerca de los IC que fabrica. Normalmente, es fcil encontrar esta informacin en los
sitios web de los diversos fabricantes.

Niveles de integracin
Segn la tecnologa de los ICs ha ido mejorando, el nmero de puertas contenidas en un nico
chip de silicio ha aumentado considerablemente. Se acostumbra a referirse a los encapsulados

DISEO LGICO COMBINACIONAL

91

como de pequea, mediana, gran o gran escala para diferenciar los chips formados con un nmero pequeo de puertas de aquellos otros formados por, desde miles hasta decenas de millones
de puertas.
Integracin a pequea escala (Small Scale Integrated, SSI) se refiere a los dispositivos que
contienen algunas puertas primitivas independientes en un nico encapsulado. Las entradas y las
salidas de las puertas se conectan directamente a los pines del encapsulado. Normalmente, el
numero de puertas es menor que 10 y est limitado por el nmero de pines del IC.
Integracin a media escala (Medium Scale Integrated, MSI) se refiere a los dispositivos con
aproximadamente de 10 a 100 puertas por cada encapsulado. Normalmente, son circuitos integrados capaces de realizar funciones digitales basicas como sumas de cuatro bits. Las funciones
digitales MSI son parecidas a los bloques funcionales que describiremos en los Captulos 4 y 5.
Alta escala de integracin (Large Scale Integrated, LSI) son dispositivos que contienen entre 100 y algunos miles de puertas por encapsulado. LSI incluye a sistemas digitales como pueden ser pequeos procesadores, memorias pequeas y mdulos programables.
Muy alta escala de integracin (Very Large Scale Integrated, VLSI) son dispositivos que
pueden contener desde varios miles hasta decenas de millones de puertas por CI. Algunos ejemplos son microprocesadores complejos y los chips para procesado digital de seales. Los dispositivos VLSI han revolucionado el mundo de los sistemas digitales y el diseo de computadoras
debido al pequeo tamao de los transistores, su gran densidad y su, comparativamente, bajo
coste. La tecnologa VLSI ha permitido a los diseadores crear estructuras complejas cuya fabricacin, hasta ahora, no resultaba econmicamente viable.

Tecnologas de circuitos
Los circuitos digitales integrados no slo se clasifican por su funcin sino tambin lo hacen por
la tecnologa concreta con que se implementan. Cada tecnologa dispone de sus propios dispositivos electrnicos bsicos y estructuras circuitales en base a los cuales pueden desarrollase funciones y circuitos digitales mas complejos. Los distintos dispositivos electrnicos que se emplean en la construccin de los circuitos bsicos son los que dan nombre a la tecnologa. As,
actualmente la tecnologa CMOS basada en Silicio es la que predomina debido a su alta densidad circuital, sus buenas prestaciones y su bajo consumo de potencia. Las tecnologas alternativas basadas en Arseniuro de Galio (AsGa) y Silicio-Germanio (SiGe) solo se emplean especficamente para circuitos de muy alta velocidad.

FIGURA 3-5
Implementacin de una puerta NAND de 7 entradas con puertas de 4 o menos entradas.

Parmetros tecnolgicos
En el diseo de un circuito electrnico existen caractersticas y parmetros diferentes segn la
tecnologa de implementacin que se emplee. Los principales parmetros que caracterizan cualquier tecnologa de implementacin son los siguientes:
Fan-in especifica el nmero de entradas disponibles en una puerta.
Fan-out especifica el nmero de cargas estndar atacadas por la salida de una puerta. El
fan-out mximo para una salida determina el fan-out que la salida puede atacar sin afectar a

92

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

las prestaciones de dicha puerta. La carga estndar se puede definir de diversas maneras dependiendo de la tecnologa empleada.
Margen de Ruido. Es el mximo nivel de voltaje de ruido externo que, superpuesto a la seal de entrada, no provoca cambios indeseados sobre la salida del circuito.
Coste. El coste de una puerta es una medida de la contribucin al coste final del circuito
integrado que la contiene.
Tiempo de propagacin. Es el tiempo necesario para que un cambio en una seal se propague desde la entrada a la salida de la puerta. La velocidad de funcionamiento de un circuito
depende inversamente del mayor tiempo de propagacin que exista a travs de las puertas
de dicho circuito.
Potencia disipada. Es la potencia extrada de la fuente de alimentacin y consumida por la
puerta. La potencia consumida se disipa en forma de calor, de modo que la capacidad de
disipacin se debe considerar en funcin de la temperatura de trabajo y de los requisitos de
refrigeracin del chip.
Aunque todos estos parmetros son importantes para el diseador, a continuacin se muestran ms detalles de slo algunos de ellos.
FAN-IN Para las tecnologas de alta velocidad, el fan-in, nmero de entradas de una puerta,
est, a menudo, limitado en las primitivas a tan slo cuatro o cinco. Esto se debe fundamentalmente a consideraciones electrnicas relacionadas con la velocidad de la puerta. Para lograr
puertas con mayor fan-in se emplea, durante el proceso de mapeado tecnolgico, una interconexin de puertas de menor fan-in. En la Figura 3-5 se muestra cmo una puerta NAND de 7
entradas se mapea empleando puertas NAND de 4 entradas y un inversor.
TIEMPO DE PROPAGACIN La Figura 3-6 muestra cmo se determina el tiempo de propagacin. Se definen tres parmetros de propagacin. El tiempo de propagacin de alto a bajo tPHL.
Mide el tiempo transcurrido desde que la seal de entrada IN pasa por un nivel de tensin prefijado hasta que la salida OUT pasa por otro nivel de tensin, tambin prefijado, cuando la seal
de salida pasa de H a L. Los niveles de tensin prefijados suelen ser del 50%, a medio camino
entre el valor mnimo y mximo del nivel de voltaje de la seal; dependiendo de las familias
lgicas, pueden llegar a usarse otros niveles de tensin. El tiempo de propagacin de bajo a alto
tPLH mide el tiempo transcurrido desde que la seal de entrada IN pasa por un nivel de tensin
prefijado hasta que la salida OUT pasa por otro nivel de tensin, tambin prefijado, en una transicin de L a H de la salida. Se define el tiempo de propagacin tpd como el mayor de los tiempos de propagacin anteriormente definidos. La razn por la que se elige el mximo de los dos
ENTRADA

ENTRADA

SALIDA

SALIDA

tPHL

tPLH

tpd  max (tPHL, tPLH)

FIGURA 3-6
Tiempo de propagacin para un inversor

DISEO LGICO COMBINACIONAL

93

valores es que estamos preocupados por encontrar el tiempo ms largo que tarda una seal en
propagarse desde las entradas a las salidas. Los fabricantes normalmente especifican, para sus
productos los valores mximos y tpicos tanto de tPHL como de tPLH y tpd.
Para modelar las puertas durante la simulacin se emplean dos modelos distintos: el modelo
de retardo de transporte y el de retardo inercial. En el modelo de retardo de transporte, las variaciones en la salida como respuesta a cambios en la entrada se producen tras un determinado
retardo de propagacin. El modelo de retardo inercial es similar al de retardo de transporte,
excepto que si los valores de salida cambian dos veces en un intervalo de tiempo menor que el
tiempo de rechazo, el primero de los cambios no se reflejar. El tiempo de rechazo es un valor
determinado, nunca mayor que el retardo de propagacin y muchas veces igual. La Figura 3-7
muestra una puerta AND modelada mediante ambos retardos: de transporte e inercial. Con el fin
de favorecer un mejor entendimiento de los comportamientos de los retardos, tambin se muestra la seal de salida de la puerta AND sin retardo. Una barra coloreada sobre la forma de onda
de la seal, indica un tiempo de retardo de propagacin de 2 ns tras cada variacin en la entrada
y una pequea lnea negra muestra un tiempo de rechazo de 1ns. La salida modelada con el
retardo de transporte es idntica a la que se obtuvo sin retardo, a excepcin de que aparece desplazada a la derecha 2 ns. Para el caso del retardo inercial, la forma de onda tambin aparece
desplazada. Para determinar la forma de onda de una salida con retardo, denominaremos flanco
(edge) a cada cambio en una forma de onda. Con el fin de determinar si aparece un determinado
flanco en la salida ID, debemos observar si existe un segundo flanco en la salida ND antes de
que acabe el tiempo de rechazo para el flanco en cuestin. Dado que el flanco b ocurre antes
que acabe el tiempo de rechazo para el flanco a en la salida ND, el flanco a no aparece en la
salida ID. El flanco b es ignorado al no cambiar el estado de ID. Debido a que el flanco d ocurre al finalizar el tiempo de rechazo despus del flanco c en la salida ND, el flanco c aparece.
Por contra, el flanco e ocurre durante el tiempo de rechazo despus del flanco d, con lo que el
flanco d no aparece. Como el flanco c aparece y el d no, el flanco e no produce ningn cambio.
FAN-OUT Una aproximacin para medir el fan-out es usar una carga estndar. Cada entrada de
una puerta representa una carga en la salida de la puerta que la ataca y que se mide en unidades
de carga estndar. Por ejemplo, la entrada de determinado inversor puede representar una carga

B
A B:
Sin retardo (ND)
a

d e

Retardo de
transporte (TD)

Retardo inicial (ID)

10

12

14

16 Tiempo (ns)

FIGURA 3-7
Ejemplo de comportamiento de retardos de transporte e inerciales

94

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

igual a 1.0 carga estndar. Si una puerta excita a seis de estos inversores, entonces el fan-out
es igual a 6.0 cargas estndar. An ms, la salida de una determinada puerta puede excitar a una
carga mxima denominada mximo fan-out. La determinacin del mximo fan-out es funcin
de cada familia lgica concreta. Nuestra discusin queda limitada a CMOS, en la actualidad la
ms popular de las familias lgicas. Para las puertas CMOS, la carga en la salida de una puerta
en un circuito integrado debida al cableado y a las entradas de otras puertas se modela como
una capacidad. Esta carga capacitiva no tiene efecto sobre los niveles lgicos, como s sucede a
menudo con las cargas de otras familias lgicas. En cambio, la carga sobre la salida de una
puerta determinada, s influye en el tiempo que la salida tarda en pasar de L a H y de H a L. De
modo que si la carga sobre la salida de la puerta es mayor, este tiempo, denominado tiempo de
transicin, aumenta. As, el fan-out mximo de una puerta es el nmero de cargas estndar capacitivas que pueden excitarse sin que el tiempo de transicin supere los valores mximos permitidos. Por ejemplo, una puerta con un fan-out mximo de 8 cargas estndar podra excitar
hasta 8 inversores que presentan 1.0 carga estndar en sus entradas.
Puesto que representa capacidades, el fan-out real de la puerta, en trminos de cargas estndar, tambin afecta a los retardos de propagacin de la puerta. De este modo, el tiempo de propagacin puede expresarse mediante una sencilla frmula o una tabla que considere un retardo
fijo ms un retardo por cada carga estndar excitada, tal y como muestra el prximo ejemplo.
EJEMPLO 3-1 Clculo del retardo de una puerta en base al fan-out
La salida de una puerta NAND de 4 entradas se conecta a las entradas de las siguientes puertas,
cada una representando un nmero de cargas estndar determinado:
NOR de 4 entradas .0.80 carga estndar
NAND de 3 entradas .1.00 carga estndar y
inversor .1.00 carga estndar.
La frmula para el retardo de la puerta NAND de 4 entradas es
tpd % 0.07 ! 0.021 # SL ns
donde SL es la suma de las cargas estndar excitadas por la puerta.
Despreciando el retardo por cableado, el retardo calculado para la puerta NAND cuando est
cargada es
tpd % 0.07 ! 0.021 # (0.80 ! 1.00 ! 1.00) % 0.129 ns
En los modernos circuitos de alta velocidad, muchas veces la fraccin del retardo debida a la
capacidad del cableado no es despreciable. An siendo imprudente ignorarlo, es difcil de calcular, pues depende de la disposicin del cableado en el circuito integrado. No obstante, y puesto
que ahora no se dispone de esta informacin ni de un mtodo capaz de proporcionar una buena
estimacin, aqu se ignorar esta componente del retardo.

Tanto el fan-in como el fan-out, deben tenerse en cuenta durante el paso del mapeado tecnolgico del ciclo de diseo Las puertas con fan-in mayores que los permitidos por la tecnologa se debern implementar con varias puertas. Puertas con fan-out mayores que el mximo
permitido o que presenten retardos demasiado grandes debern reemplazarse por varias puertas,
o bien debern aadirse buffers a sus salidas.
COSTE Normalmente, el coste de una primitiva en los circuitos integrados se calcula en base a
la superficie ocupada por la clula de la primitiva en el layout del circuito. El rea del layout de

DISEO LGICO COMBINACIONAL

95

la clula es proporcional al tamao de los transistores y al de las interconexiones interiores de


dicha clula. Despreciando el rea debida al cableado, el rea de la clula es proporcional al
nmero de transistores que contiene, usualmente proporcional al nmero de entradas de dicha
clula. Si se conoce el rea total de un layout, entonces el valor normalizado de esta rea proporciona una estimacin del coste ms precisa que la obtenida a partir del nmero de entradas.

Lgica positiva y negativa


Excluyendo las transiciones, las seales binarias de las entradas y salidas de cualquier puerta
toman uno de entre dos posibles valores: H o L. Un valor representa un 1 lgico y el otro un 0
lgico. Existen dos maneras diferentes de asignar niveles de seal a valores lgicos, tal y cmo
se muestra en la Figura 3-8. Si se elige el nivel alto H para representar el 1 lgico, hablamos de
sistema en lgica positiva. Por el contrario, un sistema en lgica negativa escogera el nivel
bajo L para representar el 1 lgico. Los trminos positiva y negativa son engaosos, pues
las seales pueden tener tanto tensiones positivas como negativas. No son los valores concretos
de una seal los que determinan el tipo de lgica, sino ms bien la posicin relativa de los mrgenes de seal asociados con cada valor lgico.
Valor de
la seal

Valor
lgico

Valor de
la seal

Valor
lgico

L
0
(a) Lgica positiva

L
1
(b) Lgica negativa

FIGURA 3-8
Seales y polaridad lgica

Las hojas de datos de los circuitos integrados definen las puertas lgicas en trminos tanto
de valores lgicos como de valores de seal H y L. Si se emplean H y L, ser el usuario quien
decida emplear lgica positiva o negativa. Consideremos, por ejemplo, la tabla de verdad de la
Figura 3-9(a). Esta tabla se ha obtenido del catlogo de la puerta CMOS de la Figura 3-9(b). La
tabla indica el comportamiento fsico de la puerta cuando H son 5 voltios y L es 0 voltios. La
tabla de verdad de la Figura 3-9(c) supone que se trabaja en lgica positiva, asignando un 1 a H
y un 0 a L. La tabla se corresponde con la tabla de verdad de la operacin AND. El smbolo
grafico en lgica positiva de una puerta AND es el que aparece en la Figura 3-9(d).
Implementar independientemente estas siete funciones exige 27 puertas AND y 7 puertas
OR. Sin embargo, compartiendo seis de los productos comunes a las diferentes expresiones de
salida, el nmero de puertas AND se reduce a 14, y adems se consigue un importante ahorro
en cuanto al nmero total de entradas. Por ejemplo, el trmino BCD aparece a, c, d, y e. La
salida de la puerta AND que implementa este producto va directamente a las entradas de las
puertas OR de estas cuatro funciones. Para esta funcin detenemos la optimizacin en el circuito de dos niveles con puertas compartidas, comprendiendo que no ser posible reducir an ms
el nmero total de entradas si no es mediante la optimizacin a mltiples niveles.
Ahora vamos a trabajar en lgica negativa con la misma puerta fsica, asignando un 1 para L
y un 0 para H. El resultado es la tabla de verdad de la Figura 3-9(e). Esta tabla representa la
operacin OR, aunque con las filas de la tabla desordenadas respecto a su ordenacin habitual.

96

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

X Y

L L
L
L H
L
H L
L
H H H
(a) Tabla de verdad
con H y L
X Y

Puerta
CMOS

(b) Puerta de diagramas


de bloques

0 0
0
0 1
0
1 0
0
1 1
1
(c) Tabla de verdad
en lgica positiva
X Y

X
Y

(d) Puerta AND


en lgica positiva

1 1
1
1 0
1
0 1
1
0 0
0
(e) Tabla de verdad
en lgica negativa

X
Y

(f) Puerta OR
en lgica negativa

FIGURA 3-9
Demostracin de lgica positiva y negativa

La Figura 3-9(f) muestra el smbolo grafico en lgica negativa de una puerta OR. Los tringulos
pequeos que aparecen tanto en las entradas como en las salidas son los indicadores de polaridad. Siempre que aparezca un indicador de polaridad en una entrada o en una salida, significar
que dicha seal se supone en lgica negativa. De este modo, la misma puerta fsica puede funcionar tanto como una puerta AND en lgica positiva o como una puerta OR en lgica negativa.
La conversin de lgica negativa en positiva y viceversa es una operacin que intercambia 1
por 0 y 0 por 1 tanto en entradas como en salidas. Dado que el intercambio de 0 y 1 forma parte
de la operacin de obtencin de la funcin dual, esta operacin de conversin produce el dual
de la funcin implementada por la puerta. De esta manera, el cambio de polaridad de todas las
entradas y salidas obtiene la funcin dual de la dada, con todas las operaciones AND (y sus
smbolos grficos) convertidas en operaciones OR (y sus smbolos grficos) y viceversa. An
ms, uno no debe olvidarse de incluir los indicadores de polaridad en los smbolos grficos
cuando se trabaje con lgica negativa, y debe adems darse cuenta que las definiciones de polaridad de las entradas y salidas del circuito han cambiado. En este libro no emplearemos lgica
negativa y asumiremos que todas las puertas trabajan en lgica positiva.

Compromisos de diseo
Con anterioridad, hemos visto que existe relacin entre el fan-out de una puerta y los tiempos
de propagacin. Un fan-out mayor aumenta el tiempo de propagacin. Por ejemplo, un circuito
tiene una puerta G con un fan-out de 16.00 cargas estndar. El retardo a travs de esta puerta,
incluyendo la componente debida a las cargas estndar atacadas, es de 0.406 ns. Para reducir

DISEO LGICO COMBINACIONAL

97

este retardo, se aade un buffer a la salida de la puerta G y las 16.00 cargas estndar se conectan a la salida de dicho buffer. Ahora, la salida de la puerta G slo ataca al buffer. El retardo
para esta combinacin en serie de la puerta y el buffer es de slo 0.323 ns, consiguiendo una
reduccin de ms del 20%. La puerta G tiene un coste de 2.00 mientras la puerta G ms el
buffer tiene un coste de 3.00. Estos dos circuitos muestran el compromiso entre coste y rendimiento, el ms habitual de los compromisos a los que debe enfrentarse el diseador. Mientras en
este ejemplo se han empleado tan slo dos circuitos sencillos, el compromiso coste/prestaciones
puede hacerse a niveles mucho mas elevados dentro del diseo de un sistema. Estos compromisos pueden influir en la especificacin del sistema y tambin en el enfoque a emplear para la
implementacin de sus funciones.
Continuando con el mismo ejemplo, el diseador tiene dos elecciones. Si la puerta G sola
fuese lo suficientemente rpida, debera ser elegida por su menor coste. Ahora bien, si no lo es,
debe optarse por la puerta G ms el buffer. Para poder tomar esta decisin debemos disponer de
una o ms restricciones para disear el circuito. Supongamos ahora que existe la restriccin de
que el tiempo de propagacin mximo de entrada salida sea 0.35 ns. En tal caso, como con la
puerta G sola no se cubre este requisito, deberamos aadir el buffer. Alternativamente, suponga
que la restriccin es que el nmero mximo de unidades de rea para el circuito sea 2.5. Dado
que, la puerta G ms el buffer no satisface esta condicin, deber elegirse para el diseo la puerta G sola. Finalmente, suponga que se espera que ambas restricciones se satisfagan en el diseo.
Entonces ninguna solucin de las anteriores es satisfactoria. Debemos encontrar un nuevo diseo que verifique ambas restricciones o bien, relajar las limitaciones impuestas de modo que
alguno de los dos circuitos las cumpla.
A continuacin se presentan algunas restricciones habituales en los circuitos:
Tiempo de propagacin mximo de entradas a salidas.
Nmero mximo de unidades de rea.
Mxima potencia disipada.
Mximo nmero de cargas estndar que presenta el circuito en sus entradas.
Mnimo nmero de cargas estndar que el circuito debe poder atacar.
Normalmente, para un circuito determinado no se especifican todas estas restricciones. Por
ejemplo, en lugar de tener, tanto restricciones de retardo como de coste, se podra fijar una restriccin de retardo y minimizar el coste, respetando el resto de restricciones

3-3 CICLO DE DISEO


El diseo de un circuito combinacional comienza con la descripcin del problema y termina en
un diagrama lgico o netlist que describe al circuito. El proceso implica los siguientes pasos:
1.
2.
3.

4.
5.

Especificacin: se escribe la especificacin del circuito en el caso de que sta no


exista.
Formulacin: se localiza la tabla de verdad o las ecuaciones booleanas que definen las
relaciones necesarias entre entradas y salidas.
Optimizacin: se aplica una optimizacin a dos niveles o a mltiples niveles. Se obtiene un diagrama lgico o se genera un netlist para el circuito resultante, a base de puertas AND, OR e inversores.
Mapeado tecnolgico: se transforma el diagrama lgico o netlist en un nuevo diagrama
o netlist empleando la tecnologa de implementacin disponible.
Verificacin: se verifica el correcto funcionamiento del diseo final.

98

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La especificacin puede adoptar muchas formas, puede ser texto o una descripcin en HDL
y debe incluir los respectivos smbolos y nombres para las entradas y salidas. La formulacin
traduce la especificacin a un formato que pueda ser optimizado. Normalmente, se trata de tablas de verdad o expresiones booleanas. Es importante que las especificaciones verbales se
interpreten correctamente cuando se formulan tablas de verdad o expresiones. La optimizacin
puede llevarse a cabo mediante numerosos y variados mtodos, como la manipulacin algebraica, el Mtodo de Mapas de Karnaugh o los programas de simplificacin basados en computadora. Para cada aplicacin en particular existen criterios especficos que permiten elegir el mtodo
de optimizacin. Un diseo prctico ha de considerar las siguientes especificaciones: coste de
las puertas a emplear, mximo tiempo de propagacin permisible de una seal a travs del circuito y limitaciones en el fan-out de cada puerta. Esto es bastante complicado ya que el coste
de las puertas, sus retardos y los lmites de fan-out no se conocen hasta la etapa de mapeado
tecnolgico. En consecuencia, es difcil saber cundo el resultado final de una optimizacin es
satisfactorio. En muchos casos, la optimizacin comienza por satisfacer un objetivo elemental,
tal como obtener expresiones booleanas simplificadas en forma estndar para cada salida. El
siguiente paso es una optimizacin a mltiples niveles en la que trminos comunes son compartidos entre distintas salidas. Con herramientas ms sofisticadas, la optimizacin y el mapeado
tecnolgico pueden interactuar para mejorar la probabilidad de satisfacer las restricciones. Es
posible que sea necesario repetir los procesos de optimizacin y mapeado tecnolgico varias
veces para llegar a alcanzar dichas restricciones.
El resto del captulo muestra el proceso del diseo a travs de tres ejemplos. En lo que queda de seccin realizaremos los tres primeros pasos del diseo: especificacin, formulacin y
optimizacin. Luego, analizaremos las tecnologas de implementacin y los dos ltimos pasos
en secciones aparte.
Las especificaciones de los dos primeros ejemplos son para una clase de circuitos denominados conversores de cdigo, que traducen informacin de un cdigo binario a otro. Las entradas del circuito son combinaciones de bits especificadas por el primer cdigo, y por las salidas
se genera la combinacin de bits correspondiente al segundo cdigo. El circuito combinacional
realiza la transformacin de un cdigo a otro. El primer ejemplo es un conversor de cdigo
BCD a cdigo exceso-3 para dgitos decimales. El otro conversor traduce cdigo BCD a las
siete seales necesarias para excitar un display de diodos emisores de luz (LED) de siete segmentos. El tercer ejemplo es el diseo de un comparador de igualdad de 4 bits que representa un
circuito con un nmero elevado de entradas.
EJEMPLO 3-2 Diseo de un conversor de cdigo BCD a exceso-3
ESPECIFIACIN: el cdigo exceso-3 para un dgito decimal es la combinacin binaria correspondiente al dgito decimal ms 3. Por ejemplo, el cdigo exceso-3 para el dgito decimal 5 es
la combinacin binaria 5 ! 3 % 8, que es 1000. El cdigo exceso-3 tiene propiedades muy
interesantes de cara a la implementacin de la resta decimal.
Cada dgito BCD se representa por cuatro bits que se nombran, comenzando por el bit ms
significativo, como A, B, C, D. Cada dgito exceso-3 son cuatro bits que se nombran, del ms al
menos significativo como W, X, Y, Z.
FORMULACIN: la palabra en cdigo exceso-3 se obtiene muy fcilmente a partir de la palabra
en cdigo BCD sin ms que aadirle el binario 0011 (3). La tabla de verdad que relaciona las
variables de entrada con las salidas se muestra en la Tabla 3-1. Observe cmo, a pesar que las
cuatro variables de entrada BCD pueden adoptar 16 combinaciones posibles de bits, slo se

DISEO LGICO COMBINACIONAL

99

TABLA 3-1
Tabla de verdad para el ejemplo del convertidor de cdigo
Dgito
decimal

0
1
2
3
4
5
6
7
8
9

Entradas
BCD

Salidas
exceso-3

0
0
0
0
0
0
0
0
1
1

0
0
0
0
1
1
1
1
0
0

0
0
1
1
0
0
1
1
0
0

0
1
0
1
0
1
0
1
0
1

0
0
0
0
0
1
1
1
1
1

0
1
1
1
1
0
0
0
0
1

1
0
0
1
1
0
0
1
1
0

1
0
1
0
1
0
1
0
1
0

muestran 10 en la tabla de verdad. Las seis combinaciones, desde 1010 hasta 1111, no se muestran ya que no tienen significado en cdigo BCD, y podemos asumir que nunca se producirn.
Por ello, para estas combinaciones de entrada, no importa qu valores binarios asignamos a las
salidas exceso-3, y por tanto, las trataremos como indiferencias.
OPTIMIZACIN: puesto que se trata de una funcin de 4 variables, usaremos los Mapas de Karnaugh de la Figura 3-10 para la optimizacin inicial de las cuatro funciones de salida. Los mapas se han construido para obtener expresiones booleanas de las salidas como de sumas de productos simplificadas. Cada uno de los cuatro mapas representa una de las salidas del circuito
como una funcin de cuatro entradas. Los 1s en los mapas se obtienen directamente desde las
columnas de salida de la tabla de verdad. Por ejemplo, la columna que hay debajo de la salida
W tiene 1 para los mini trminos 5, 6, 7, 8 y 9. Por tanto, el mapa para W debe tener 1s en los
cuadros correspondientes a dichos minitrminos. Los seis minitrminos indiferentes, del 10 al
15, estn marcados con una X en todos los mapas. Las funciones optimizadas se listan en forma
de sumas de productos debajo del Mapa de Karnaugh de cada variable de salida.
El diagrama lgico en dos niveles AND-OR puede obtenerse directamente a partir de las
expresiones booleanas deducidas de los mapas. Para poder reducir el nmero total de entradas a
las puertas, ahora 26 (incluidos inversores), realizaremos una optimizacin multinivel como segundo paso de la optimizacin La manipulacin siguiente muestra una optimizacin de un circuito con mltiples salidas en la que se emplean tres niveles de puertas:
T1 % C ! D
W % A ! BC ! BD % A ! BT1
X % B1 C ! B1 D ! BC1 D1 % B1 T1 ! BC1 D1
Y % CD ! C1 D1
Z % D1
Esta manipulacin permite que la puerta que genera C ! D sea compartida por la lgica de W y
de X, y reduce el nmero total de entradas a 22. Este resultado optimizado se considera adecuado y a partir de l se obtiene el diagrama lgico de la Figura 3-11.

100

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

CD
AB

00

01

11

CD
10

AB

00

00

00
1

01

01

11

01

11

10

B
11

10

B
A
10

D
X  BC  BD  BCD

D
W  A  BC  BD
C

CD
AB

00

01

11

00

01

CD
10

AB

00

01

11

10

00

01

11

10

B
11

10

B
X

D
Y  CD  CD

D
ZD

FIGURA 3-10
Mapas para el convertidor de BCD a exceso 3

A
W

C
D

FIGURA 3-11
Diagrama lgico del convertidor de BCD a exceso 3

DISEO LGICO COMBINACIONAL

101

EJEMPLO 3-3 Diseo de un decodificador BCD a siete segmentos


ESPECIFICACIN: los displays digitales encontrados en muchos productos de electrnica de
consumo, como despertadores, a menudo emplean diodos emisores de luz (LEDs). Cada dgito
del display est formado por siete segmentos LED. Cada segmento puede iluminarse mediante
una seal digital. Un decodificador BCD a siete-segmentos es un circuito combinacional que
acepta un dgito decimal en BCD y genera las salidas necesarias para visualizar el dgito decimal en el display. Las siete salidas del decodificador (a, b, c, d, e, f y g) seleccionan el segmento correspondiente en el display, tal y como muestra la Figura 3-12(a). Las representaciones
numricas elegidas para representar los dgitos decimales se muestran en la Figura 3-12(b). El
decodificador BCD a siete-segmentos tiene cuatro entradas, A, B, C y D para el dgito BCD y
siete salidas, de la a hasta la g, para controlar los segmentos.
a
f
e

b
g

d
(a) Designacin de segmentos

(b) Representacin de nmeros en el display

FIGURA 3-12
Display de 7 segmentos

FORMULACIN: la tabla de verdad del circuito combinacional se ilustra en la Tabla 3-2. A la


vista de la Figura 3-12(b), cada dgito BCD ilumina los segmentos apropiados en el display. Por
ejemplo, el cdigo BCD 0011 corresponde al decimal 3, que se visualiza con los segmentos a,
b, c, d y g. La tabla de verdad supone que un 1 lgico en una seal ilumina el segmento y que
un 0 lgico lo apaga. Algunos displays de 7 segmentos trabajan de la manera contraria y se
iluminan mediante seales a 0 lgico. En estos displays, las siete salidas se deben invertir. Las
seis combinaciones binarias desde 1010 hasta 1111, no tienen significacin en BCD. En el
TABLA 3-2
Tabla de verdad del decodificador BCD a 7 segmentos
Entradas BCD
A

Decodificador 7 segmentos
D

0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
Todas las dems entradas

1
0
1
1
0
1
1
1
1
1
0

1
1
1
1
1
0
0
1
1
1
0

1
1
0
1
1
1
1
1
1
1
0

1
0
1
1
0
1
1
0
1
1
0

1
0
1
0
0
0
1
0
1
0
0

1
0
0
0
1
1
1
0
1
1
0

0
0
1
1
1
1
1
0
1
1
0

102

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

ejemplo anterior, a estas combinaciones las asignamos estados indiferentes. Si hacemos lo mismo aqu el diseo producir, probablemente, algunas visualizaciones arbitrarias y sin sentido
para estas combinaciones no usadas. Siempre que estas combinaciones no se produzcan, podramos usar este enfoque para reducir la complejidad del convertidor. Una eleccin ms segura es
apagar todos los segmentos siempre que se produzca una combinacin en las entradas no usada,
evitando as cualquier visualizacin espuria si ocurren estas entradas, pero aumentando la complejidad del convertidor. Esta eleccin se consigue asignando 0 a todos los minitrminos desde
10 hasta 15.
OPTIMIZACIN: la informacin de la tabla de verdad se traslada a los Mapas de Karnaugh a
partir de los cuales se obtienen las primeras optimizaciones de las funciones de salida. La realizacin de estos mapas se deja como ejercicio. Una posible manera de simplificar las siete funciones resulta en las siguientes funciones booleanas:
a % A1 C ! A1 BD ! B1 C1 D1 ! AB1 C1
b % A1 B1 ! A1 C1 D1 ! A1 CD ! AB1 C1
c % A1 B ! A1 D ! B1 C1 D1 ! AB1 C1
d % A1 CD1 ! A1 B1 C ! B1 C1 D1 ! AB1 C1 ! A1 BC1 D
e % A1 CD1 ! B1 C1 D1
f % A1 BC1 ! A1 C1 D1 ! A1 BD1 ! AB1 C1
g % A1 CD1 ! A1 B1 C ! A1 BC1 ! AB1 C1
Implementar independientemente estas siete funciones exige 27 puertas AND y 7 puertas OR.
Sin embargo, compartiendo seis de los productos comunes a las diferentes expresiones de salida, el nmero de puertas AND se reduce a 14, y adems se consigue un importante ahorro en
cuanto al nmero total de entradas. Por ejemplo, el trmino B1 C1 D1 aparece a, c, d y e. La salida
de la puerta AND que implementa este producto va directamente a las entradas de las puertas
OR de estas cuatro funciones. Para esta funcin detenemos la optimizacin en el circuito de dos
niveles con puertas compartidas, comprendiendo que no ser posible reducir an ms el nmero
total de entradas si no es mediante la optimizacin a mltiples niveles.

El decodificador BCD a siete segmentos es denominado decodificador por la mayora de los


fabricantes de circuitos integrados porque decodifica, a partir de un dgito decimal, un cdigo
binario. Sin embargo, verdaderamente, se trata de un convertidor de cdigo ya que convierte un
cdigo decimal de 4 bits en un cdigo de siete bits. La palabra decodificador est normalmente reservada para otro tipo de circuitos que se mostrarn en el prximo captulo.
En general, el nmero total de puertas puede reducirse en un circuito combinacional de mltiples salidas empleando los trminos comunes de las funciones de salida. Los mapas de las
funciones de salida pueden ayudar a localizar los trminos comunes buscando implicantes idnticos entre dos o ms mapas. Algunos de estos trminos comunes pueden no ser implicantes
primos de las funciones individuales. El diseador debe ser suficientemente ingenioso para
combinar las clulas de los mapas de forma que se generen trminos comunes. Esto puede realizarse de una manera ms formal empleando un procedimiento de simplificacin de funciones de
mltiples salidas. Los implicantes primos se definen no slo para cada funcin individual sino
tambin para todas las posibles combinaciones de las funciones de salida. Estos implicantes primos se obtienen aplicando un operador AND a cada posible subconjunto no vaco de las funcio-

DISEO LGICO COMBINACIONAL

103

nes de salida y localizando los implicantes primos de cada resultado. Este procedimiento se implementa de distintas formas en los programas de simplificacin lgica de las herramientas de
sntesis lgica y ha sido el mtodo empleado para obtener las ecuaciones del Ejemplo 3-3.
EJEMPLO 3-4 Diseo de un comparador de igualdad de 4-bit
ESPECIFICACIN: las salidas del circuito consisten en dos vectores: A(3:0) y B(3:0). El vector
A se compone de cuatro bits, A(3), A(2), A(1) y A(0), siendo A(3) el bit ms significativo. El
vector B tiene una definicin similar sin ms que reemplazar B por A. La salida del circuito es
una variable E de un nico bit. La salida E es igual a 1 si A y B son iguales y 0 si A y B son
distintos.
FORMULACIN: puesto que este circuito tiene ocho entradas, resulta inviable emplear una tabla
de verdad para la formulacin. Para que A y B sean iguales los valores de los bits en cada una de
las posiciones relativas, desde 3 hasta 0, de A y de B deben ser iguales. Si, para posiciones de bits
iguales, A y B contienen los mismos valores binarios, entonces E % 1; de lo contrario, E % 0.
OPTIMIZACIN: en este circuito, usamos la intuicin para desarrollar rpidamente un circuito
multinivel usando jerarqua. Puesto que se debe comparar cada bit de A con el correspondiente
bit de B, descompondremos el problema en cuatro circuitos comparadores de 1 bit y un circuito
adicional que combine las salidas obtenidas de dichos circuitos comparadores para obtener E.
Para el bit de posicin i, definimos la salida del circuito Ei % 0 si Ai % Bi y Ei % 1 si Ai Bi.
Este circuito se puede describir mediante la ecuacin
Ei % A1 iBi ! AiB1 i
cuyo diagrama esquemtico se muestra en la Figura 3-13(a). Mediante el empleo de jerarqua y
reutilizacin podemos utilizar cuatro copias de este circuito, una por cada uno de los bits de A
Ai
Ei
MX

Bi

E0
E1
E2
E3

(a)
A0
B0

MX

A1
B1

MX

MX

A3
B3

MX

ME
(b)

E0

E1
ME

A2
B2

E2

E3
(c)

FIGURA 3-13
Diagrama jerrquico de un comparador de igualdad de 4 bits

104

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

y B. La salida E valdr 1 slo si todos los Ei valen 0. Esto puede describirse mediante la siguiente ecuacin:
E % E0 ! E1 ! E2 ! E3
que tiene el diagrama dado en la Figura 3-13(b). Los dos circuitos dados son circuitos ptimos
de dos niveles. El circuito completo se describe jerrquicamente mediante el diagrama de la
Figura 3-13(c).

3-4 MAPEADO TECNOLGICO


Hay tres filosofas bsicas para disear circuitos VLSI. En el diseo full-custom, se disea el
chip completamente, hasta los niveles ms pequeos del layout. Puesto que este proceso es muy
costoso el diseo custom slo puede justificarse para ICs rpidos y de muy alta densidad que se
espera vender en muy grandes cantidades.
Una tcnica estrechamente relacionada con ella es el diseo con clulas estndar (standardcell), en el que muchas partes del diseo han sido realizadas con anterioridad o posiblemente
usadas en otros diseos previos. La interconexin de estas partes prediseadas forma el diseo
del IC. Esta metodologa, de coste intermedio, proporciona menor densidad de integracin y
menores prestaciones que el diseo full-custom.
La tercera aproximacin al diseo VLSI es el uso de arrays de puertas (gate arrays). En los
arrays de puertas se emplea una matriz rectangular de puertas fabricadas en silicio. Esta matriz
se repite cientos de veces, de modo que el chip entero contiene puertas iguales. Dependiendo de
la tecnologa que se emplee, es posible integrar en un nico IC arrays de matrices conteniendo
desde 1000 a millones de puertas. El empleo de un array de puertas necesita que el diseo especifique cmo se interconectan las puertas y como se enrutan esas interconexiones. Muchos pasos del proceso de fabricacin son comunes e independientes de la funcin lgica final. Estos
pasos, al ser usados en numerosos diseos distintos, resultan econmicos. Con el fin de particularizar un array de puertas a un diseo concreto se necesitan una serie de pasos adicionales en el
proceso de fabricacin que sirven para determinar la interconexin concreta de las puertas. Debido a que la mayora de los pasos de fabricacin son comunes y a la capacidad para compartir
los resultados de estos pasos entre varios diseos diferentes, este es el mtodo de menor coste
de entre las diversas tecnologas de implementacin no programables.
Para las tecnologas de arrays de puertas y clulas estndar, el circuito se construye mediante la interconexin de clulas. La coleccin de clulas disponibles en una tecnologa de implementacin dada se denomina librera de clulas. Con el fin de poder disear en base a estas
libreras de clulas, es necesario caracterizar cada una de dichas clulas, esto es, proporcionar
una especificacin detallada de cada clula que pueda ser empleada por el diseador. Una librera de clulas convenientemente caracterizadas proporciona una base para el mapeado tecnolgico de circuitos. Asociada a la librera est el procedimiento de mapeado tecnolgico. En esta
seccin, consideraremos los procesos de mapeado tecnolgico para libreras de clulas consistentes en (1) puertas de un nico tipo, como puertas NAND, y (2) puertas de mltiples tipos. El
mapeado tecnolgico puede enfocarse hacia unas dimensiones determinadas del espacio de diseo, habitualmente coste y prestaciones. Por simplicidad nuestros procedimientos slo se enfocan
hacia la optimizacin del coste. An ms, estos procesos son versiones rudimentarias de los algoritmos de mapeado tecnolgico empleados en las herramientas de diseo asistido por computadora y slo son apropiados para su aplicacin manual en los circuitos ms sencillos. Sin embargo nos proporcionarn una visin de cmo puede transformarse un diseo que emplea

DISEO LGICO COMBINACIONAL

105

puertas AND, puertas OR e inversores en diseos ms efectivos en coste, empleando tipos de


clulas soportadas por la tecnologa de implementacin disponible.

Especificaciones de las clulas


Las especificacin de las clulas empleadas en los diseos basados en arrays de puertas y clulas estndar est formada por varios componentes. Estos componentes son tpicamente los siguientes:
1. Un esquemtico o diagrama lgico de la funcin de la clula.
2. Una especificacin del rea que ocupa la clula, a menudo normalizada respecto al rea
de una clula pequea, como el rea del inversor mnimo.
3. La carga de entrada, expresada en unidades de carga estndar, que cada entrada de la
clula presenta a la salida que la excita.
4. Retardos desde cada entrada de la clula a cada salida (si es que existe un camino desde
la entrada a la salida) incluyendo el efecto de las cargas estndar conectadas en la salida.
5. Una o ms plantillas de la clula que sern empleadas durante la ejecucin del mapeado
tecnolgico.
6. Uno o ms modelos HDL de la clula.
Si las herramientas empleadas son capaces de realizar el layout automticamente, entonces la
especificacin de las clulas tambin incluir:
7. El layout completo de la clula.
8. Un layout simplificado que muestra la situacin de las entradas y salidas, as como las
conexiones de alimentacin y masa para la clula. Este layout se emplear durante el
proceso de interconexin.
Los primeros cinco componentes listados se han incluido en una sencilla librera tecnolgica de clulas en la prxima sub-seccin. Algunos de estos componentes se discuten con ms
detalle.

Libreras
Para una tecnologa de diseo en particular, las clulas se organizan en una o ms libreras. Una
librera es una coleccin de especificaciones de clulas. Un circuito que inicialmente consiste en
puertas AND, OR y NOT se convierte, mediante el mapeado tecnolgico, en otro que solamente
emplea clulas procedentes de estas libreras. En la Tabla 3-3 se describe una librera tecnolgica muy sencilla. Esta librera contiene puertas lgicas con salida negada con fan-in hasta 4.0 y
un nico circuito AOI.
La primera columna de la tabla contiene un nombre descriptivo para la clula y la segunda
columna contiene el esquemtico de la clula. La tercera columna contiene el rea de la clula,
normalizada respecto al rea del inversor mnimo. Una manera sencilla de medir el coste de la
clula es emplear su rea. La siguiente columna proporciona la carga tpica que las entradas de
la clula presentan a la puerta que las excita. El valor de la carga est normalizado con respecto
a una cantidad denominada carga estndar la cual, en este caso, es la capacidad presentada a un
circuito por la entrada de un inversor. En el caso de las clulas de esta tabla, la carga de entrada
es prcticamente igual para todas. La quinta columna da una sencilla ecuacin lineal para calcular el retardo tpico desde las entradas a las salidas para cada clula. La variable SL es la suma

106

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 3-3
Librera de clulas de ejemplo para mapeado tecnolgico
rea
normalizada

Carga de
entrada
tpica

Retardo
tpico

Inverter

1.00

1.00

0.04
 0.012  SL

2NAND

1.25

1.00

0.05
 0.014  SL

3NAND

1.50

1.00

0.06
 0.017  SL

4NAND

2.00

0.95

0.07
 0.021  SL

2NOR

1.25

1.00

0.06
 0.018  SL

3NOR

2.00

0.95

0.15
 0.012  SL

4NOR

3.25

0.80

0.17
 0.012  SL

2-2 AOI

2.25

0.95

0.07
 0.019  SL

Nombre
de la clula

Esquema
de la clula

Plantillas
funcionales
bsicas

DISEO LGICO COMBINACIONAL

107

de todas las cargas estndar presentadas por las entradas de las clulas conectadas a la salida de
la clula en cuestin. SL tambin puede incluir una estimacin, expresada en cargas estndar, de
la capacidad del cableado empleado en la interconexin de la salida de la clula con las entradas
de las otras clulas. Esta ecuacin muestra cmo el retardo de una clula consiste en un valor
fijo al que hay que aadir el retardo debido a la capacidad de carga de la clula y que se representa por SL. El Ejemplo 3-5 muestra el clculo del retardo de una clula.

EJEMPLO 3-5 Clculo del retardo de clula


Este ejemplo muestra el efecto de la carga sobre el retardo de una clula. La salida de una
NAND de 2 entradas se conecta a las siguientes clulas: un inversor, una NAND de 4 entradas,
y una NOR de 4 entradas. En este caso la suma de las cargas estndar es
SL % 1.00 ! 0.95 ! 0.80 % 2.75
A partir de este valor, el retardo de la puerta NAND de dos entradas conectada a las clulas
especificadas es
tp % 0.05 ! 0.014 # 2.75 % 0.089 ns

La ltima columna de la tabla muestra plantillas de las funciones de las clulas que slo
emplean como componentes funciones bsicas. En este caso, las funciones bsicas son: una
puerta NAND de 2 entradas y un inversor. El uso de estas plantillas en funciones bsicas proporciona un mecanismo para representar la funcin de cada clula de una forma estndar. Tal
y cmo se aprecia en las clulas NAND y NOR de 4 entradas, la plantilla en funciones bsicas
de una clula no es necesariamente nica. Debe notarse, que estos diagramas representan slo
un netlist, y no la interconexin, la colocacin o la orientacin real en el layout. Por ejemplo,
consideremos la plantilla para la puerta NAND de 3 entradas. Si la puerta NAND de la izquierda y el siguiente inversor se conectaran a la entrada de arriba de la puerta NAND de la derecha,
en lugar de a la entrada de abajo, la plantilla no habra cambiado. En la prxima seccin sobre
tcnicas de mapeado se har ms evidente el valor de estas plantillas.

Tcnicas de mapeado
En esta sub-seccin trataremos el proceso de mapeado para tecnologas no programables. Una
forma razonable de implementar funciones booleanas con puertas NAND es obtener las funciones booleanas optimizadas en trminos de los operadores booleanos AND, OR y NOT, y entonces mapear la funcin a lgica de puertas NAND. La conversin de una expresin algebraica
desde AND, OR y NOT hasta NAND puede hacerse mediante un sencillo procedimiento que
cambia las puertas AND y OR de los diagramas lgicos por puertas NAND. Para puertas NOR
existe un procedimiento homlogo.
A partir de un circuito optimizado formado por puertas AND, OR y NOT, el siguiente procedimiento genera un circuito que emplea puertas NAND (o NOR) sin restricciones en el fan-in.
1. Reemplazar cada puerta AND y OR por su circuito equivalente en puertas NAND (o
NOR) e inversores mostrado en la Figura 3-14(a) y (b).
2. Eliminar todos los pares de inversores.

108

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

.
.
.

.
.
.

.
.
.

.
.
.

(a) Mapeado a puertas NAND

.
.
.

.
.
.

.
.
.

.
.
.
(b) Mapeado a puertas NOR

.
.
.

.
.
.

(c) Empuje de inversores a travs de nodos

(d) Cancelacin de pares de inversores

FIGURA 3-14
Mapeado de puertas AND, puertas OR e inversores a puertas NAND, puertas NOR e inversores

3.

Sin cambiar la funcin lgica, (a) empujar todos los inversores que estn entre (i) una
entrada del circuito o la salida de una puerta NAND (NOR) y (ii) las entradas de las
puertas NAND (NOR) a las que se conectan, hacia estas ltimas puertas. Durante este
paso, cancelar cuntos pares de inversores sea posible. (b) Reemplazar los inversores en
paralelo por un solo inversor que ataque todas las salidas de dichos inversores en paralelo. (c) Repetir los pasos (a) y (b) hasta que haya como mximo un inversor entre las
entradas del circuito o la salida de una puerta NAND (NOR) y las entradas de las siguientes puertas NAND (NOR).

En la Figura 3-14(c), se ensea la regla para empujar un inversor a travs de un nudo. El


inversor situado en la lnea que entra al nudo se sustituye por un inversor en cada una de las
lneas que salen de dicho nudo. La Figura 3-14 (de) muestra el proceso de cancelacin de pares
de inversores basado en la identidad booleana siguiente:
X11 % X
El siguiente ejemplo muestra este procedimiento para puertas NAND.

DISEO LGICO COMBINACIONAL

109

EJEMPLO 3-6 Implementacin con puertas NAND


Implementar la siguiente funcin optimizada empleando puertas NAND:
F % AB ! (AB)C ! (AB)D1 ! E
En la Figura 3-15(a), se muestra la implementacin con puertas AND, OR e inversores. En la
Figura 3-15(b) hemos aplicado el paso 1 del procedimiento, reemplazando cada puerta AND y
OR del circuito de la Figura 3-14(a) por sus circuitos equivalentes que emplean puertas NAND
e inversores. Se han colocado etiquetas en los nudos y en los inversores para ayudar en la explicacin. En el paso nmero 2, los pares de inversores (1, 2) y (3, 4), se han suprimido, permitiendo conectar directamente las puertas NAND, tal y como se muestra en la Figura 3-15(d). Al
empujar el inversor 5 a travs de X, tal y como se aprecia en la Figura 3-15 (c), hemos podido
suprimir los inversores 6 y 7 respectivamente. Esto conlleva el poder conectar directamente las
correspondientes puertas NAND, como ilustra la Figura 3-15(d). Al no poder aplicarse pasos
similares sobre los inversores 8 y 9 el mapeado final del circuito quedar como el representado
en la Figura 3-15(d). El prximo ejemplo muestra este mismo proceso para puertas NOR.
A

A
B

X
OI

Y
1

6
2

4
D
E

D
E

9
(b)

(a)
A
B
X

D
E
(d)

(c)

FIGURA 3-15
Solucin del Ejemplo 3-6

EJEMPLO 3-7 Implementacin con puertas NOR


Implementar la misma funcin booleana optimizada usada en el Ejemplo 3-7 empleando puertas NOR:
F % AB ! (AB)C ! (AB)D1 ! E
La implementacin con puertas AND, OR e inversores se muestra en la Figura 3-16(a). En la
Figura 3-16(b), se aplica el paso 1 del proceso, reemplazando cada una de las puertas AND y
OR del circuito de la Figura 3-14(b) por sus circuitos equivalentes que usan puertas NOR e

110

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A
B

C
D
E
(a)
A
B
1
C

D
E
(b)
A
B

D
E
(c)

FIGURA 3-16
Solucin del Ejemplo 3-7

inversores. Se han etiquetado los nudos y los inversores para facilitar la explicacin. En el
paso 2, el inversor 1 se ha empujado a travs del nudo X desdoblndolo, y suprimiendo as
los inversores 2 y 3 respectivamente. Del mismo modo, el par de inversores sobre la lnea de
entrada D tambin desaparece. Slo los inversores sobre las lneas de entrada A, B y C, y el
situado sobre la lnea de salida F permanecern, dando como resultado final el circuito mapeado
que aparece en la Figura 3-16(c).

El coste, en nmero total de entradas, para el circuito mapeado del Ejemplo 3-6 es 12; mientras que en el Ejemplo 3-7, el coste es 14, por lo tanto la implementacin con puertas NAND
resulta menos costosa. Adems, la implementacin con puertas NAND tiene como mximo 3
puertas en serie, frente a las 5 puertas en serie que presenta la implementacin con puertas
NOR. Debido a que el circuito con puertas NOR tiene un mayor nmero de puertas en serie es
probable que el retardo mximo, desde que un cambio en la entrada se traduce en su correspondiente cambio en la salida, sea mayor.
En el proceso anterior y en los ejemplos el objetivo del mapeado ha consistido en utilizar un
nico tipo de puertas, bien sean puertas NAND o puertas NOR. El siguiente proceso maneja
mltiples tipos de puertas:

DISEO LGICO COMBINACIONAL

111

1.

Reemplazar cada puerta AND y OR por su circuito equivalente ptimo formado slo
por puertas NAND de 2 entradas e inversores.
2. En cada lnea del circuito conectada a una entrada del circuito, a una entrada de una
puerta NAND, a una salida de una puertas NAND o a una salida del circuito, y siempre
que esta lnea no tenga inversores, insertar un par de inversores en serie.
3. Reemplazar las conexiones de puertas NAND e inversores por clulas disponibles en la
librera, de modo que se mejore el coste en nmero total de entradas de los subcircuitos
libres de fan-out. Un subcircuito libre de fan-out es un circuito en el que cada salida de
una puerta est conectada a una nica entrada. (Este paso no se cubre aqu en detalle
debido a su complejidad, pero en el sitio web del libro se dispone de un ejemplo. Se han
empleado las plantillas mostradas en la columna derecha de la Tabla 3-3 para encajar
conexiones de puertas NAND e inversores en clulas disponibles en la librera.)
4. Sin cambiar la funcin lgica, (a) empujar todos los inversores que estn entre (i) una
entrada del circuito o la salida de una puerta y (ii) las entradas de las puertas a las que
se conectan, hacia estas ltimas puertas. Durante este paso, cancelar cuntos pares de
inversores sea posible. (b) Reemplazar los inversores en paralelo por un solo inversor
que ataque todas las salidas de dichos inversores en paralelo. (c) Repetir los pasos (a) y
(b) hasta que haya como mximo un nico inversor entre las entradas del circuito o la
salida de una puerta y las entradas de las siguientes puertas.
Este proceso es el fundamento del mapeado tecnolgico en las herramientas de sntesis comerciales. Esta sustitucin de las puertas del circuito inicial por puertas NAND de 2 entradas e inversores divide el circuito en piezas ms pequeas, proporcionando una mayor flexibilidad en el
mapeado de clulas, lo que permitir conseguir un resultado ptimo. El Ejemplo 3-8 muestra
una forma de implementacin empleando una pequea librera de clulas.
EJEMPLO 3-8 Implementacin con una librera pequea de clulas
Implementar la misma funcin booleana optimizada de los Ejemplos 3-6 y 3-7.
F % AB ! (AB)C ! (AB)D1 ! E
con ayuda de una librera de clulas que contiene puertas NAND de 2 entradas, puertas NAND
de 3 entradas, puertas NOR de 2 entradas y un inversor. La implementacin con puertas AND,
OR e inversores se muestra en la Figura 3-17(a). En la Figura 3-17(b), se han aplicado los pasos 1 y 2 del procedimiento. Cada puerta AND y OR se ha sustituido por un circuito equivalente
formado por puertas NAND de 2 entradas e inversores. En las lneas internas del circuito sin
inversores se han insertado pares de ellos. Debido a la falta de espacio, no se muestran los pares
de inversores en las entradas ni en las salidas. La Figura 3-17(c) muestra el resultado de aplicar
el paso 3, el mapeado a clulas procedentes de la librera de clulas. Cada grupo de puertas
NAND e inversores interconectados que aparecen enmarcados por lneas azules se ha reemplazado, empleando las plantillas de la Tabla 3-3, por una de las clulas disponibles en la librera.
En este caso, todas las clulas disponibles se han usado por lo menos una vez. La aplicacin del
paso 4 cancela tres de los inversores, dando como resultado final el circuito mapeado que se
muestra en la Figura 3-17(d).

La solucin para el Ejemplo 3-8 tiene un coste, en nmero total de entradas, de 12, frente a
los costes de 12 y 14 entradas de los Ejemplos 3-6 y 3-7, respectivamente. Aunque los costes en

112

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A
B

A
B

D
E

D
E

(b)

(a)
A
B

A
B

D
E

C
D
E
(d)

(c)

FIGURA 3-17
Solucin del Ejemplo 3-8

los Ejemplos 3-6 y 3-7 son iguales, debe notarse que las libreras de clulas son diferentes. En
concreto, el Ejemplo 3-6 se beneficia de emplear una puerta NAND de 4 entradas que no est
disponible en el Ejemplo 3-8. Sin esta clula, la solucin tendra un coste adicional de dos entradas ms. As, el empleo de una librera de clulas ms variada ha proporcionado beneficios
en el coste.
Para enlazar con los ejemplos de las primeras secciones de este captulo, el siguiente ejemplo muestra el mapeado de un conversor de cdigo de BCD a exceso-3 empleando una librera
de clulas ampliada.

EJEMPLO 3-9 Mapeado tecnolgico para un conversor de cdigo de BCD a Exceso-3


El resultado final del mapeado tecnolgico para un conversor de cdigo de BCD a Exceso-3 es
el dado en la Figura 3-18. El diagrama lgico inicial formado por puertas AND, OR e inversores
aparece en la Figura 3-11, y la librera de clulas que se ha empleado es la dada en la Tabla 3-3.
Como resultado de la optimizacin se han empleado las siguientes clulas de la librera: inversores, puertas NAND de 2 entradas, puertas NOR de 2 entradas y un circuito 2-2 AOI.

El coste en nmero de total de entradas para el circuito mapeado en el Ejemplo 3-9 es 22, el
mismo que para el circuito original formado a partir de puertas AND, OR y NOT. El proceso de
optimizacin, aparte de minimizar localmente los inversores, trabaja separadamente en distintas
partes del circuito. Estas partes estn separadas en base a los fan-out de las puertas del circuito
original. La seleccin de estos puntos durante la optimizacin afectar a la calidad del resultado
final. Para este circuito concreto, un circuito de partida diferente podra haber proporcionado
una mejor optimizacin.
En general, el problema de que optimizacin y mapeado sean procesos separados, se maneja, en las herramientas comerciales de optimizacin lgica, mediante pasos combinados de optimizacin y mapeado.

DISEO LGICO COMBINACIONAL

113

A
W

B
X

FIGURA 3-18
Ejemplo de mapeado tecnolgico: convertidor de BCD a exceso 3

EL MAPEADO TECNOLGICO AVANZADO Este suplemento sobre el mapeado tecnolgico, incluyendo ejemplos detallados que ilustran un procedimiento de mapeado para libreras generales
de clulas, est disponible en el Sitio Web del libro.

3-5 VERIFICACIN
En esta seccin, se van a considerar el anlisis lgico manual y el anlisis lgico basado en la
simulacin por computadora, ambos tienen por objeto verificar el funcionamiento del circuito
(es decir, determinar si un circuito dado lleva a cabo su funcin especificada o no). Si el circuito no responde a su especificacin, entonces es incorrecto. En consecuencia, la verificacin juega un papel vital evitando que un circuito diseado incorrectamente sea fabricado y usado. El
anlisis lgico tambin puede usarse para otros propsitos como para el rediseo de un circuito
y la determinacin de su funcin.
Para verificar un circuito combinacional es esencial que la especificacin sea inequvoca y
correcta. Es por ello que las especificaciones dadas en forma de tablas de verdad, ecuaciones
booleanas o cdigo HDL son especialmente tiles. Inicialmente examinaremos la verificacin
manual continuando con los diseos de ejemplo que ya presentamos en este captulo.

Anlisis lgico manual


El anlisis lgico manual consiste en hallar las ecuaciones booleanas para las salidas del circuito o, adicionalmente, encontrar la tabla de verdad para el circuito. La aproximacin empleada
aqu, opta por hallar las ecuaciones y entonces usarlas para encontrar la tabla de verdad. Para
localizar las ecuaciones de un circuito es a menudo conveniente fragmentar el circuito en subcircuitos, definiendo variables intermedias en puntos seleccionados de l. Los puntos tpicamente seleccionados sern aqullos en los que una salida de la puerta se conecta a dos o ms

114

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

entradas de otras puertas. Dichos puntos son normalmente denominados como puntos fan-out.
Por regla general, los puntos fan-out de un solo inversor o de una entrada no se seleccionarn.
La determinacin de las ecuaciones lgicas de un circuito se ilustra usando el circuito Conversor de Cdigo BCD-a-exceso-3 que se dise en las secciones anteriores.
EJEMPLO 3-10 Verificacin manual de un conversor de cdigo BCD-a-exceso-3
La Figura 3-19 muestra (a) la tabla de verdad de la especificacin original, (b) la implementacin final del circuito, y (c) una tabla de verdad incompleta que debe ser completada a partir de
la implementacin y entonces comparada con la tabla de verdad inicial. Los valores de tabla de
verdad sern obtenidos a partir de las ecuaciones booleanas para W, X, Y y Z derivadas del circuito. El punto T1 se selecciona como una variable intermedia para simplificar el anlisis:
T1 % C ! D % C ! D
W % A1 (T1 B) % A ! B T1
X % (B1 T1) (B C1 D1 ) % B1 T1 ! BC1 D1
Y % CD1 ! C1 D % CD ! C1 D1
Z % D1
Sustituyendo la expresin de T1 en las ecuaciones de W y X, se tiene
W % A ! B(C ! D) % A ! BC ! BD
X % B1 (C ! D) ! BC1 D1 % B1 C ! B1 D ! BC1 D1
Cada uno de los trminos productos en las cuatro ecuaciones de salida puede mapearse a 1
en la tabla de verdad de la Figura 3-19(c). Se muestran los mapeados de los 1 para A, B1 C, BD,
CD y D1 . Despus de mapear los restantes productos a 1, las entradas en blanco se rellenan con
0. En este caso, la nueva tabla de verdad debe coincidir con la inicial, verificando que el circuito es correcto.
A

Entrada
BCD

Salida
exceso 3

A B C D

W X Y Z

0
0
0
0
0
0
0
0
1
1

0
0
0
0
1
1
1
1
0
0

0
0
1
1
0
0
1
1
0
0

0
1
0
1
0
1
0
1
0
1

0
0
0
0
0
1
1
1
1
1

0
1
1
1
1
0
0
0
0
1

1
0
0
1
1
0
0
1
1
0

Entrada
BCD

Salida
exceso 3

A B C D

W X Y Z

0
1
0
1
0
1
0
1
0
1

1
0
1
0
1
0
1
0
1
0

T1

B
X

0
0
0
0
0
0
0
0
1
1

0
0
0
0
1
1
1
1
0
0

0
0
1
1
0
0
1
1
0
0

1
1

1
1
1

1
1
1
1
1

1
1
1

Z
(a)

(b)

FIGURA 3-19
Verificacin: convertidor BCD a exceso-3

(c)

DISEO LGICO COMBINACIONAL

115

ANLISIS LGICO Este suplemento, incluyendo tcnicas adicionales de anlisis lgico y ejemplos, est disponible en el sitio web del libro.

La simulacin
Una alternativa a la verificacin manual es el uso de la simulacin por computadora. El empleo
de una computadora permite verificar tablas de verdad de un nmero significativamente ms
grande de variables y reduce considerablemente el tedioso esfuerzo requerido por el anlisis.
Dado que la simulacin por computadora se basa en la aplicacin de valores a las entradas, si es
posible, y para conseguir alcanzar una verificacin ms completa, es deseable aplicar todas las
posibles combinaciones de las entradas. El prximo ejemplo ilustra el uso de la herramienta
Xilinx ISE4.2i para el desarrollo con FPGAs y del simulador Modelsim XE II para verificar el
conversor de cdigo BCD-a-exceso-3 verificando todas las posibles combinaciones de las entradas de la tabla de verdad.
EJEMPLO 3-11 Verificacin basada en simulacin del conversor de cdigo
BCD-a-exceso-3
La Figura 3-19 muestra(a) la tabla de verdad de la especificacin inicial, y (b) la implementacin final del circuito conversor de cdigo BCD-a-exceso-3. La implementacin del circuito se
ha capturado en Xilinx ISE 4.2i mediante el esquemtico mostrado en la Figura 3-20. Como no
hay ninguna puerta AOI en la librera de smbolos, esta puerta se ha modelado empleando las
puertas disponibles. Adems de introducir el esquemtico tambin se han introducido, mediante
A

INV
NAND2
NAND2
INV
NOR2
B
INV

NAND2
NAND2
C
INV

NAND3

D
INV

AND2

Y
NOR2

AND2

AOI
Z

FIGURA 3-20
Esquemtico para la simulacin del convertidor BCD-a-exceso-3

116

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

formas de onda, las combinaciones de las entradas mostradas en la Figura 3-19(a). Estas formas
de onda de las entradas se muestran en la seccin ENTRADAS de la Figura 3-21, que ilustra los
resultados de la simulacin. La simulacin de las formas de onda de las entradas aplicadas al
circuito produce las formas de onda de salida mostradas en la seccin SALIDAS. Examinando
cada combinacin de entrada y la combinacin de salida correspondiente representada por las
forma de onda, podemos verificar manualmente si las salidas coinciden con la tabla de verdad
inicial. Comenzando con (A, B, C, D) % (0, 0, 0, 0) en la forma de onda de entrada, encontramos que la forma de onda de salida correspondiente es (W, X, Y, Z) % (0, 0, 1, 1). Continuando,
para (A, B, C, D) % (0, 0, 0, 1), los valores para la forma de onda de salida son (W, X, Y,
Z) % (0, 1, 0, 0). En ambos casos, los valores son correctos. Este proceso de verificar los valores
de las formas de onda con los de las especificaciones puede continuarse para las restantes ocho
combinaciones de entrada a fin de completar la verificacin.
ENTRADAS
A
B
C
D
SALIDAS
W
X
Y
Z

50 ns

100 ns

FIGURA 3-21
Ejemplo 3-10: resultados de la simulacin del convertidor de BCD a exceso 3

VERIFICACIN AVANZADA Este suplemento, conteniendo tcnicas para la verificacin adicionales y ejemplos, est disponible en la pgina web del libro.

3-6 TECNOLOGAS DE IMPLEMENTACIN PROGRAMABLES


Hasta aqu, hemos realizado una introduccin a las tecnologas de implementacin no programables, en el sentido de que se fabrican como circuitos integrados o interconectando circuitos
integrados. En contraposicin, los dispositivos lgicos programables (PLDs) se fabrican mediante estructuras que implementan funciones lgicas y estructuras que controlan su interconexionado, o que almacenan informacin que controla su funcionamiento, y que determinan la
lgica concreta que se implementa. Estos ltimos dispositivos requieren de la programacin, un
procedimiento hardware mediante el cual se determina qu funciones se implementarn. Las
prximas tres secciones tratan de los tres tipos ms simples de dispositivos lgicos programables (PLDs): la memoria de slo lectura (ROM), el array lgico programable (PLA), y el array
de lgica programable (PAL4). En un suplemento en el sitio web del libro se discuten y muestran los ms complejos arrays de puertas programables en campo (FPGA). Antes de tratar los
PLDs, trataremos de las tecnologas de programacin en las que se apoyan. En los PLDs,

DISEO LGICO COMBINACIONAL

117

las tecnologas de programacin se emplean para (1) abrir o cerrar conexiones, (2) construir las
tablas de bsqueda, y (3) controlar la conmutacin de transistores. Nosotros relacionaremos las
tecnologas a estas tres aplicaciones.
La tecnologa de programacin ms antigua para el control de las interconexiones es el empleo de fusibles. Cada uno de los puntos programables en el PLD consiste en una conexin formada por un fusible. Cuando una tensin considerablemente superior a la normal de alimentacin se aplica a travs del fusible, ste se quema debido a la elevada corriente, lo que abre la
conexin. Los dos estados de la conexin, CERRADO y ABIERTO, se representan por un fusible intacto y uno quemado, respectivamente.
Una segunda tecnologa de programacin para el control de las interconexiones es la programacin con mscaras, realizada por el fabricante del semiconductor durante las ltimas fases del proceso de fabricacin del chip. Las conexiones se realizan o no sobre las capas de
metal que sirven como conductoras en el chip. Dependiendo de la funcin que se desee para el
chip, la estructura de estas capas es determinada durante el proceso de fabricacin. Este procedimiento es costoso ya que para cada cliente deben realizarse a medida las mscaras que generan las capas de metal. Por esta razn, la programacin con mscaras slo es rentable si se pide
la fabricacin de una cantidad grande de PLDs todos con la misma configuracin.
Una tercera tecnologa para controlar las interconexiones es el uso de antifusibles. Tal y cmo sugiere su nombre, el antifusible es simplemente lo contrario de un fusible. En contraste con
un fusible, un antifusible consiste en un rea pequea en la que dos conductores estn separados
por un material de resistencia elctrica elevada. El antifusible acta como un camino ABIERTO
antes de la programacin. Al aplicar una tensin algo superior a la normal de alimentacin entre
los dos conductores, el material que los separa se funde o, de otra forma, su resistencia elctrica
disminuye. La baja resistencia de los materiales conductores hace que se establezca una conexin, es decir, un camino CERRADO.
Las tres tecnologas de conexin anteriores son permanentes. Los dispositivos no pueden
reprogramarse, porque como resultado de la programacin se han producido cambios fsicos
irreversibles en los dispositivos. As, si la programacin es incorrecta o necesita ser modificada,
el dispositivo debe desecharse.
La ltima tecnologa de programacin que puede emplearse para el control de las interconexiones, es un elemento de almacenamiento de un solo bit que ataca la puerta de un transistor
MOS de canal-N que est en el punto de programacin. Si el valor del bit almacenado es un 1,
entonces el transistor est conduciendo (ON), y la conexin entre fuente y drenador forma un
circuito CERRADO. Para un valor del bit almacenado igual a 0, el transistor est cortado (OFF)
y la conexin entre fuente y drenador es un circuito ABIERTO. Puesto que el contenido del
elemento de almacenamiento puede modificarse electrnicamente, el dispositivo puede reprogramarse fcilmente. Pero para que estos valores permanezcan almacenados es necesario que no
se retire la tensin de alimentacin. De este modo, la tecnologa de elementos de almacenamiento es voltil; es decir, la funcin lgica programada se pierde al retirar la tensin de alimentacin.
La segunda aplicacin de las tecnologas de programacin es la construccin de tablas de
bsqueda. Adems de para controlar el interconexionado, los elementos de almacenamiento son
ideales para construir estas tablas. En este caso, la combinacin de entrada en la tabla de verdad
se usa para seleccionar un elemento de almacenamiento, que contiene el valor de salida correspondiente en dicha tabla de verdad, y proporcionarlo como salida de la funcin lgica. El hardware consiste en (1) los elementos del almacenamiento, (2) el hardware para programar los valores en los elementos del almacenamiento, y (3) la lgica que selecciona el contenido de los
elementos de almacenamiento que ser presentado como salida de la funcin lgica. Puesto que

118

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

los elementos de almacenamiento se seleccionan mediante el valor de entrada, los elementos del
almacenamiento combinados con el hardware (3) se parecen a una memoria, que almacena valores de datos que al ser seleccionados aplicando una direccin en las entradas, se presentan en
las salida de dicha memoria. As, la lgica simplemente puede llevarse a cabo guardando la
tabla de verdad en la memoria de ah el trmino tabla de bsqueda (lookup).
La tercera aplicacin de las tecnologas de programacin es el control de la conmutacin de
transistores. La tecnologa ms popular est basada en almacenar carga en la puerta flotante de
un transistor. Esta ltima se localiza debajo de la puerta normal de un transistor MOS y est
completamente aislada por un material dielctrico que la rodea. La carga negativa almacenada
en la puerta flotante hace imposible que el transistor se ponga en conduccin (ON). Si no existe
carga negativa almacenada entonces es posible que el transistor conduzca si se aplica en su
puerta un nivel ALTO. Ya que la carga almacenada se puede poner o quitar, estas tecnologas
permiten el borrado y la reprogramacin.
Dos de las tecnologas que emplean el control de la conmutacin de transistores se denominan: borrable y elctricamente borrable. La programacin se consigue aplicando al transistor
combinaciones de tensin superiores a la tensin normal de alimentacin. El borrado se realiza
mediante la exposicin a una intensa fuente de radiacin ultravioleta durante un tiempo determinado. Una vez borrados, este tipo de chips puede reprogramarse. Un dispositivo elctricamente borrable puede borrarse mediante un proceso similar al proceso de la programacin,
usando tensiones superiores a los valores normales de alimentacin. Puesto que controlando el
transistor se evita o se permite el establecimiento de una conexin entre fuente y drenador, realmente es una forma de controlar la conexin, dando a elegir entre (1) siempre ABIERTO o (2)
ABIERTO o CERRADO, dependiendo de la aplicacin de un nivel ALTO o BAJO, respectivamente, en la puerta normal del transistor. Una tercera tecnologa basada en el control de la conmutacin del transistor es la tecnologa flash ampliamente usada en las memorias flash. La tecnologa flash es una forma de tecnologa elctricamente-borrable que tiene una gran variedad de
opciones de borrado incluyendo el borrado de la carga almacenada en puertas flotantes individuales, de todas las puertas flotantes, o de subconjuntos especficos de puertas flotantes.
Un PLD tpico puede tener de centenares a millones de puertas. Algunas, pero no todas las
tecnologas lgicas programables, tienen puertas con alto fan-in. Para mostrar de una forma
concisa el diagrama lgico interior de estas tecnologas de arrays lgicos, es necesario emplear
una simbologa especial para las puertas. La Figura 3-22 muestra el smbolo convencional y el
smbolo de array lgico para una puerta OR de mltiples entradas. En lugar de tener mltiples
lneas de entrada a la puerta, dibujamos una sola lnea hacia la entrada. Las lneas de entrada se
dibujan perpendiculares a esta lnea y se conectan selectivamente a la puerta. Si aparece una x
en la interseccin de dos lneas, significa que hay una conexin. Si la x no est, entonces, no
hay ninguna conexin. De manera similar, podemos dibujar la representacin de array lgico de
una puerta AND. Puesto que esto se hizo primero para una tecnologa basada en fusibles, la
representacin grfica donde quedan marcadas las conexiones seleccionadas se denomina mapa
de fusibles. Emplearemos esta misma representacin grfica y terminologa aun cuando la tecnologa de programacin no sea la de fusibles. Este tipo de representacin grfica para las entradas de las puertas se usar de ahora en adelante para dibujar diagramas lgicos.

(a) Smbolo convencional

(b) Smbolo de array lgico

FIGURA 3-22
Smbolos convencional y de array lgico de una puerta OR

DISEO LGICO COMBINACIONAL

119

A continuacin, consideraremos tres estructuras distintas de dispositivos programables. Describiremos cada una de las estructuras e indicaremos cul es la tecnologa tpica, en cada caso,
que se emplea para su implementacin. Estos tipos de PLDs difieren en la colocacin de las
conexiones programables en los planos AND y OR. La Figura 3-23 muestra la situacin de las
conexiones para los tres tipos de dispositivos. La memoria programable de slo-lectura (PROM)
as como la memoria flash tiene un plano AND fijo construido como un decodificador y conexiones programables para las puertas OR de salida. La PROM implementa las funciones booleanas en forma de sumas de mini trminos. Los arrays de lgica programable (PAL4) tienen
un plano AND con conexiones programables y un plano OR fijo. Las puertas AND se programan para generar los productos de las funciones booleanas que se suman lgicamente en cada
puerta OR. El ms flexible de los tres tipos de PLD es el array lgico programable (PLA) que
tiene conexiones programables tanto para el plano AND como para el OR. Los productos en el
plano AND pueden ser compartidos por cualquier puerta OR para conseguir la implementacin
de los productos de sumas requeridos. Los nombres de PLA y PAL4 surgieron para los distintos
dispositivos de diferentes fabricantes durante el desarrollo de los PLDs.
Plano
AND fijo
(decodificador)

Entradas

Conexiones
programables

Plano OR
programable

Salidas

Plano OR
fijo

Salidas

Plano OR
programable

Salidas

(a) Memoria de slo lectura programable

Entradas

Conexiones
programables

Plano AND
programable
(b) Array de lgica programable

Entradas

Conexiones
programables

Plano AND
programable

Conexiones
programables

(c) Array lgico programable

FIGURA 3-23
Configuracin bsica de tres PLDs

Memorias de solo lectura


Esencialmente, una memoria de solo lectura (ROM) es un dispositivo en el que se almacena
informacin de forma permanente. Esta informacin debe ser especificada por el diseador y
entonces es introducida en la ROM en forma de interconexiones o como una disposicin de
dispositivos. Una vez que este patrn ha sido establecido permanece dentro de la ROM incluso
cuando la alimentacin se apaga y se vuelve a conectar; por esto la ROM es no voltil.
En la Figura 3-24 se muestra el diagrama de bloques de una ROM. Existen k entradas y n
salidas. Las entradas seleccionan una direccin de la memoria, y por las salidas se obtienen los
bits de datos de la palabra almacenada en la direccin seleccionada. El nmero de palabras en

120

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

ROM 2k  n

k entradas (direccin)

n salidas (datos)

FIGURA 3-24
Diagrama de bloques de una ROM

una ROM est determinado por el hecho de que con k lneas de direccin se pueden especificar
2k palabras. Note que la ROM no dispone de lneas de entrada de datos, dado que no soporta la
operacin de escritura. Los chips de ROM tienen una o ms entradas de habilitacin y disponen
tambin de salidas de 3 estados que facilitan la construccin de grandes arrays de ROM.
Considere, por ejemplo, una ROM de 32 # 8. Esta memoria almacena 32 palabras de ocho
bits cada una. Existen cinco lneas de datos que conforman los nmeros del 0 al 31 para cada
direccin. La Figura 3-25 muestra la construccin lgica interna de esta ROM. Las cinco entradas son decodificadas a 32 salidas distintas mediante un decodificador de 5 a 32 lneas. Cada
salida del decodificador representa una direccin de memoria. Las 32 salidas son conectadas a
travs de conexiones programables a las entradas de ocho puertas OR. El diagrama utiliza la
representacin de array lgico empleada en circuitos complejos (vase Figura 3-22). Debe considerarse que cada puerta OR tiene 32 entradas. Cada salida del decodificador se conecta a travs de un fusible a una de las entradas de cada puerta OR. Puesto que cada puerta OR tiene 32
conexiones internas programables, y ya que existen ocho puertas OR, la ROM contiene
32 # 8 % 256 conexiones programables. En general, una ROM de 2k # n tendr internamente
un decodificador de k a 2k lneas y n puertas OR.
Se emplearn cuatro tecnologas para la programacin de la ROM. Si se emplea la programacin por mscara entonces la ROM se denomina simplemente ROM. Si se emplean fusibles,
la ROM puede ser programada por el usuario si dispone del equipo adecuado. En este caso, la
ROM se refiere como una ROM programable o PROM. Si la ROM emplea la tecnologa
de puerta flotante, entonces la ROM se denomina ROM programable y borrable, o EPROM.
Finalmente, si se emplea la tecnologa borrable elctricamente, la ROM se denomina ROM programable y borrable elctricamente, o EEPROM o tambin E2PROM. Como ya se dijo anterior-

0
1
I0
I1
I2

2
3
Decodificador .
.
5:32
.

I3

28

I4

29
30
31

A7

A6

A5

A4

A3

FIGURA 3-25
Lgica interna de una ROM 32 # 8

A2

A1

A0

DISEO LGICO COMBINACIONAL

121

mente, la memoria flash es una versin modificada de la E2PROM. La eleccin de la tecnologa


de programacin depende de varios factores entre los que se incluye en el nmero de ROMs
idnticas que se quieran fabricar, la volatilidad requerida, la facultad de reprogramacin, y las
prestaciones deseadas en trminos de retardo.

Array lgico programable


El array lgico programable (PLA) es similar en concepto a la PROM, excepto que el PLA no
decodifica completamente todas las variables y no genera todos los mini trminos. El decodificador es sustituido por un plano de puertas AND que puede ser programado para generar productos de las variables de entrada. Estos productos son entonces conectados selectivamente a las
puertas OR para generar las sumas de productos requeridas por las funciones booleanas.
En la Figura 3-26 se muestra la lgica interna de un PLA con tres entradas y 2 salidas. Este
circuito es demasiado pequeo para ser eficiente en coste, pero se presenta aqu para demostrar
la configuracin lgica tpica de un PLA. El diagrama utiliza los smbolos de array lgico empleados para circuitos complejos. Cada entrada atraviesa un buffer y un inversor, representados
en el diagrama por smbolos grficos compuestos que tienen salidas complementarias. Las conexiones programables van desde cada entrada y su complementaria a las entradas de cada puerta
AND, como se indica por las intersecciones entre las lneas verticales y horizontales. Las salidas de las puertas AND tienen conexiones programables hacia las entradas de cada puerta OR.
La salida de cada puerta OR entra en una puerta XOR en la que la otra entrada se puede prograA

X X

X X

AB

AC

X Fusible intacto
Fusible abierto

BC

ABC
X

C C B B A A
X

0
1
F1

F2

FIGURA 3-26
PLA con tres entradas, cuatro productos y dos salidas

122

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

mar para recibir un 1 lgico o un 0 lgico. La salida es invertida cuando la entrada de la puerta
se conecta a 1 (dado que X S 1 % X1 ). La salida no es alterada cuando la entrada de la puerta XOR se conecta a 0 (ya que X S 0 % X). Las funciones booleanas concretas implementadas
en el PLA de la figura son
F1 % AB1 ! AC ! A1 BC1
F2 % AC ! BC
Los productos generados en cada puerta AND se enumeran en la salida de cada puerta en el
diagrama. Cada producto est determinado por aquellas entradas que tienen su conexin cerrada. La salida de las puertas OR obtiene la suma lgica de los productos seleccionados. Esta
salida puede ser complementada o no, dependiendo de la programacin de la conexin asociada
con la puerta XOR.
El tamao del PLA se determina en funcin del nmero de entradas, el nmero de productos, y el nmero de salidas. Un PLA tpico tiene 16 entradas, 48 productos, y 8 salidas. Para n
entradas, k productos, y m salidas, la lgica interna de PLA consiste en n buffers inversores, k
puertas AND, m puertas OR, y m puertas XOR. Existen conexiones programables entre las entradas y el plano AND, conexiones programables entre los planos AND y OR, y n conexiones
programables asociadas a las puertas XOR.
Como ocurre con la ROM, el PLA puede ser programable por mscaras o programable en
campo. En el caso de programacin por mscaras, el cliente enva una tabla con la programacin del PLA al fabricante. Esta tabla es utilizada por el fabricante para generar un PLA a medida que internamente tiene la lgica especificada por el cliente. Para el caso de programacin en
campo se emplea un PLA denominado PLA programable en campo, o FPLA. Este dispositivo
puede ser programado por el usuario mediante una unidad de programacin disponible comercialmente.

Arrays de lgica programables


El array de lgica programable (PAL4) es un PLD con un plano OR fijo y un plano AND programable. Dado que slo es programable el plano AND, el PAL es ms fcil de programar que
el PLA, pero no tan flexible. La Figura 3-27 muestra la configuracin lgica de un array de
lgica programable tpico. El dispositivo mostrado tiene cuatro entradas y cuatro salidas. Cada
entrada tiene un buffer-inversor, y cada salida se genera mediante una puerta OR fija. El dispositivo tiene cuatro secciones, cada una compuesta por un array AND-OR triple, significando que
hay tres puertas AND programables en cada seccin. Cada puerta AND tiene 10 conexiones de
entrada programables, indicadas en el diagrama mediante 10 lneas verticales que cruzan cada
lnea horizontal. Las lneas horizontales simbolizan las mltiples entradas de cada puerta AND.
Una de las salidas mostradas se realimenta mediante un buffer-inversor hacia una de las puertas
AND de entrada. Esto se hace a menudo con todas las salidas del dispositivo.
Las funciones booleanas concretas implementadas en el PAL de la Figura 3-27 son
F1 % AB1 ! AC ! A1 BC1
F2 % AC ! BC % A1 B1 ! C1
Estas funciones son las mismas que las implementadas empleando el PLA. Dado que la salida complementada no est disponible, F2 se ha expresado en forma de suma de productos.

DISEO LGICO COMBINACIONAL

123

Entradas de las puertas AND


Trmino
producto

0
1

X
F1

X X

I1  A
X

F2

6
I2  B
7
F3

8
9
I3  C
10

F4

11
12
I4
0

FIGURA 3-27
Dispositivo PAL4 con cuatro entradas, cuatro salidas y estructuras AND-OR triples

Los dispositivos PAL comerciales contienen ms puertas que el mostrado en la Figura 3-27.
Un pequeo PAL integrado puede tener hasta 8 entradas, 8 salidas y 8 secciones, cada una
consistente en un array AND-OR ctuple. Cada salida de un dispositivo PAL es generada mediante un buffer de 3 estados y sirve tambin como entrada. Estas entradas/salidas pueden ser
programadas para funcionar como entrada, como salida o como pin bidireccional, estando controlado en este caso por otra seal que acta sobre la habilitacin del buffer de 3 estados. Los
PAL incluyen a menudo flip-flops entre el array y los buffers de 3 estados de las salidas. Dado
que cada salida es realimentada mediante un buffer-inversor hacia las puertas AND, es sencillo
implementar circuitos secuenciales.

124

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

DISPOSITIVOS LGICOS PROGRAMABLES VLSI Este suplemento, que cubre los fundamentos
de dos tpicos arrays de puertas programables en campo (FPGA) empleados a menudo en laboratorios docentes, est disponible en el la pgina web del libro. Este suplemento emplea multiplexores, sumadores, flip-flops, latches y SRAMs. Un apndice del suplemento presenta una
breve descripcin de estos conceptos.

3-7 SUMARIO DEL CAPTULO


Este captulo comenz con la presentacin de dos importantes conceptos de diseo: el diseo
jerrquico y el diseo top-down, que se emplearn a lo largo del resto del libro. El diseo asistido por computadora se present brevemente, enfocndose a los lenguajes de descripcin hardware y a la sntesis lgica.
En la Seccin 3-2 se presentaron las propiedades de la subyacente tecnologa de puertas. Se
describieron dos tipos de componentes junto con un nuevo valor de salida, denominado alta impedancia (Hi-Z): los buffers de tres estados y las puertas de transmisin. En esta misma seccin
se han definido e ilustrado parmetros tecnolgicos clave, entre los que se incluyen fan-in, fanout y tiempo de propagacin. La lgica positiva y la lgica negativa describen formas distintas
de relacionar los niveles de tensin y los niveles lgicos.
El ncleo de este captulo ha sido un ciclo de diseo de 5 pasos descrito en la Seccin 3-3.
Estos pasos se aplicaron tanto al diseo manual como al diseo asistido por computadora. El
diseo comienza definiendo las especificaciones, siendo el siguiente paso el de formulacin, en
el cual la especificacin se convierte en una tabla de ecuaciones. El procedimiento de optimizacin realiza una optimizacin, a dos niveles o a mltiples niveles, para obtener un circuito compuesto de puertas AND, OR e inversores. El mapeado tecnolgico convierte este circuito en uno
que usa eficientemente las puertas disponibles en la tecnologa de implementacin empleada.
Finalmente se efecta una verificacin para asegurar que el circuito final satisface las especificaciones iniciales. Los tres primeros pasos de este proceso se han ilustrado mediante tres
ejemplos.
Con el fin de discutir el mapeado tecnolgico se presentaron las tecnologas de implementacin no programables incluyndose: full-custom, standard-cell y gate-arrays. Tambin se ha
presentado la especificacin de clulas y las libreras de clulas, as como tcnicas de mapeado
tecnolgico similares a las usadas por las herramientas CAD, ilustradas tanto para el caso de
trabajar con un nico tipo de puertas como con varios tipos de puertas.
La seccin final del captulo se centr en las tecnologas de lgica programable. Tres tecnologas bsicas memorias de slo lectura, arrays lgicos programables y arrays de lgica programable proporcionaron distintas alternativas para el mapeado tecnolgico.

REFERENCIAS
1.

HACTEL, G., and F. SOMENZI: Logic Synthesis and Verification Algorithms. Boston: Kluwer
Academic Publishers, 1996.

2. DE MICHELI, G.: Synthesis and Optimization of Digital Circuits. New York: McGraw-Hill,
Inc., 1994.
3.

KNAPP, S.: Frequently-Asked Questions (FAQ) About Programmable Logic


(http://www.optimagic.com/faq.html). OptiMagicTM, Inc., 51997-2001.

DISEO LGICO COMBINACIONAL

125

4.

LATTICE SEMICONDUCTOR CORPORATION: Lattice


GALs(R)(http://www.latticesemi.com/products/spld/GAL/index.cfm). Lattice Semiconductor Corporation, 51995-2002.
5. TRIMBERGER, S. M. (Ed.): Field-Programmable Gate Array Technology. Boston: Kluwer
Academic Publishers, 1994.
6. XILINX, INC.: Xilinx SpartanTM-IIE Data Sheet
(http://direct.xilinx.com/bvdocs/publications/ds077 2.pdf). Xilinx, Inc. 51994-2002.
7. ALTERA(R) CORPORATION: Altera FLEX 10KE Embedded Programmable Logic Device
Family Data Sheet ver. 2.4 (http://www.altera.com/literature/ds/dsf10ke.pdf). Altera Corporation, 51995-2002.

PROBLEMAS
El smbolo (!) indica problemas ms avanzados y el asterisco (*) indica que la solucin se
puede encontrar en el sitio web del libro: http://www.librosite.net/Mano.
3-1. Disee un circuito que implemente el siguiente par de ecuaciones booleanas:
F % A(CE1 ! DE) ! A1 D
F % B(CE1 ! DE) ! B1 C
Para simplificar el dibujo del esquemtico, emplee jerarqua basndose en la factorizacin mostrada para las funciones. Se utilizarn tres instancias (copias) de un nico circuito compuesto de 2 puertas AND, una puerta OR y un inversor. Dibuje el diagrama lgico
para este componente y para el circuito completo, empleando un smbolo para el componente.
3-2. Un componente que implementa la funcin
H % X1 Y ! XZ
debe emplearse, junto con inversores, para obtener la funcin:
G % A1 B1 C ! A1 BD ! AB1 C1 ! ABD1
El circuito puede obtenerse mediante la aplicacin del Teorema de expansin de Shannon,
F % X1 F0(X) ! X F1(X)
en la que F0(X) es F(X) evaluada para X % 0 y F1(X) es evaluada para X % 1. Esta expansin para F puede implementarse para H haciendo Y % F0 y Z % F1. El teorema de expansin puede entonces ser aplicado a F0 y F1 seleccionando una variable de cada una,
preferiblemente una variable que aparezca tanto negada como sin negar. Este proceso se
puede iterar hasta que todas las Fi sean constantes o literales simples. Para G, emplee
X % A para encontrar G0 y G1 y entonces haga X % B en G0 y G1. Dibuje el diagrama de
G empleando un smbolo para H.
3-3. Una familia lgica de circuitos integrados tiene puertas NAND con un fan-out de 8 cargas estndar y buffers con un fan-out de 16 cargas estndar. Esboce un esquema que
muestre cmo la seal de salida de una nica puerta NAND puede aplicarse a 38 entradas
de puertas usando tantos buffers como sea necesario. Suponga que cada entrada es una
carga estndar.

126

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

3-4. *La puerta NOR de la Figura 3-28 tiene un tiempo de propagacin tpd % 0.078 ns y el
inversor tiene un retardo de propagacin tpd % 0.052 ns. Cul ser el retardo de propagacin del camino ms largo del circuito?
A
B
F

A
B
E

C
D

FIGURA 3-28
Circuito del Problema 3-4

3-5. La forma de onda de la Figura 3-29 se aplica a un inversor. Calcule la salida del inversor, suponiendo que
(a) no tiene retardo.
(b) tiene un retardo de transporte de 0.06 ns.
(c) tiene un retardo inercial de 0.06 ns con un tiempo de rechazo de 0.06 ns.

Tiempo (ns)

0.6 ns
0.6 ns

FIGURA 3-29
Forma de onda para el Problema 3-5

3-6. Suponiendo que tpd es la media de tPHL y tPLH, calcule el retardo desde cada entrada hasta cada salida en la Figura 3-30
(a) Calculando tPHL y tPLH para cada camino, suponiendo que tPHL % 0.30 ns y
tPLH % 0.50 ns para cada puerta. A partir de estos valores, calcule tpd para cada
camino.
(b) Tomando tpd % 0.40 ns para cada puerta.
(c) Compare sus respuestas de la Seccin (a) y (b) y comente las diferencias.
C
D
B
A
F
B
C

FIGURA 3-30
Circuito para el Problema 3-6

DISEO LGICO COMBINACIONAL

127

3-7. !El tiempo de rechazo para el retardo inercial debe ser menor que el tiempo de propagacin. En los trminos dados en la Figura 3-7. Por qu es esta condicin necesaria
para determinar el valor de la salida?
3-8. !Una determinada puerta tiene tPHL % 0.05 ns y tPLH % 0.10 ns. Suponga que a partir
de esta informacin se debe desarrollar un modelo de retardo inercial para el comportamiento tpico del retardo de la puerta.
(a) Suponga un pulso de salida positivo (L H L), qu valdran el tiempo de propagacin y el tiempo de rechazo?
(b) Comente la aplicabilidad de los parmetros encontrados en (a) suponiendo un pulso
negativo de salida (H L H).
3-9. *Demuestre cmo una puerta NAND en lgica positiva es una puerta NOR en lgica
negativa y viceversa.
3-10. Una funcin mayora toma el valor de salida 1 si hay ms 1 que 0 en sus entradas. En
caso contrario, toma el valor 0. Disee una funcin mayora de 3 entradas.
3-11. *Calcule una funcin que detecte un error en la representacin de un dgito decimal en
BCD. En otras palabras, escriba una ecuacin con salida 1 cuando las entradas sean una
cualquiera de la seis combinaciones no usadas en cdigo BCD, y valor 0, en el resto de
los casos.
3-12. Disee un conversor de cdigo de Exceso 3 a BCD que muestre el cdigo de salida
0000 para todas las combinaciones de entrada no vlidas.
3-13. (a) Un sistema de iluminacin a baja tensin emplea lgica de control binaria para una
determinada luminaria. Esta luminaria est en una interseccin en forma de T en un
vestbulo. Hay un conmutador para esta luz en cada uno de los tres puntos del final
de la T. Estos interruptores tienen salidas binarias 0 y 1 dependiendo de su posicin
y se nombran como X1, X2 y X3. La luz se controla mediante un amplificador conectado a un tiristor. Cuando Z, la entrada del amplificador, est a 1, la luz se enciende
y cuando Z est a 0, la luz se apaga. Debe encontrar una funcin Z % F(X1, X2, X3)
de modo que si cualquiera de los interruptores cambia, el valor de Z cambia pasando
la luz de estar encendida a estar apagada.
(b) La funcin Z no es nica. Cuntas funciones Z diferentes hay?
3-14. !Un semforo de una interseccin emplea un contador binario para producir la siguiente secuencia de combinaciones en sus lneas A, B, C y D: 0000, 0001, 0011, 0010, 0110,
0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010, 1011, 1001, 1000. Despus de 1000, la
secuencia se repite, comenzando de nuevo con 0000. Cada combinacin se presenta durante 5 segundos antes que la prxima aparezca. Estas lneas conectan la lgica combinacional con las salidas de las lmparas RNS (Rojo - Norte/Sur), ANS (Amarillo - Norte/Sur), VNS (Verde - Norte/Sur), REO (Rojo - Este/Oeste), AEO (Amarillo - Este/
Oeste), y VEO (Verde - Este/Oeste). La lmpara controlada por cada salida se enciende
al aplicar un 1 y se apaga al aplicar un 0. Para una direccin dada, suponga que el verde
est encendido durante 30 segundos, el amarillo durante 5 segundos y el rojo durante 45
segundos. (el intervalo del rojo se superpone durante 5 segundos). Divida los 80 segundos disponibles para cada ciclo entre las 16 combinaciones de los 16 intervalos y determine qu lmparas debern lucir en cada intervalo basadas en el comportamiento esperado del conductor. Suponga que, para el intervalo 0000, acaba de ocurrir un cambio y

128

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

que VNS % 1, REO % 1 y las dems salidas estn a 0. Disee el esquema lgico necesario para producir las seis salidas usando puertas AND, OR e inversores.
3-15. Disee un circuito combinacional que genere, a partir de un nmero de 3 bits, un nmero de 6 bits igual al cuadrado del nmero de entrada.
3-16. !Disee un circuito combinacional que genere, a partir de un nmero de 4 bits, un nmero de 3 bits que aproxime la raz cuadrada del nmero de entrada. Por ejemplo, si la
raz es igual o mayor que 3.5 debe obtener 4. Si la raz es menor que 3.5 y mayor o
igual que 2.5 debe obtener 3.
3-17. Disee un circuito con una entrada BCD de 4 bits (A, B, C, D) que genere una salida W, X, Y, Z que debe ser igual a la entrada ms 6 en binario. Por ejemplo,
9 (1001) ! 6 (0110) % 15 (1111).
3-18. Un sistema de medida del trfico, que se emplea para regular el acceso de vehculos
desde una va de servicio a una autopista, presenta las siguientes especificaciones para
una parte de su controlador. Existen tres carriles en la va de servicio, cada uno con su
propia luz de parada (rojo) o acceso libre (verde). Uno de estos carriles, el central, tiene
prioridad (en verde) sobre los otros dos. En caso contrario se aplicar un esquema
round-robin a los otros dos carriles, de forma que la luz verde se alternar entre uno y
otro (izquierdo y derecho). Debe disearse la parte del controlador que determina cual
de las luces es verde (en vez de roja). Las especificaciones de este controlador son:
Entradas:
SC -Sensor de vehculo en el carril central (hay vehculo - 1, no hay - 0)
SI -Sensor de vehculo en el carril izquierdo (hay vehculo - 1, no hay - 0)
SD -Sensor de vehculo en el carril derecho (hay vehculo - 1, no hay - 0)
RR -Seal del round robin (izquierdo - 1, derecho - 0)
Salidas:
LC -Luz del carril central (verde - 1, roja - 0)
LI -Luz del carril izquierdo (verde - 1, roja - 0)
LD -Luz del carril derecho (verde - 1, roja - 0)
Funcionamiento:
1. Si hay un vehculo en el carril central LC es 1.
2. Si no hay vehculos en el carril central ni en el derecho entonces LI es 1.
3. Si no hay vehculos en el carril central ni en el izquierdo, pero los hay en el
carril derecho es LD % 1.
4. Si no hay vehculos en el carril central, pero los hay en los dos carriles laterales,
entonces si RR es 1 ser LI % 1.
5. Si no hay vehculos en el carril central, pero los hay en los dos carriles laterales,
entonces si RR es 0 ser LD % 1.
6. Si cualquiera de LC, LI o LD no se ha especificado a 1 en alguno de los puntos
anteriores, entonces es que vale 0.
(a) Localice la tabla de verdad del controlador.
(b) Localice una implementacin mnima de varios niveles, que implemente esta funcin minimizando el nmero total de entradas y empleando puertas AND, OR e
inversores.

DISEO LGICO COMBINACIONAL

129

3-19. Complete el diseo del decodificador de BCD a 7 segmentos realizando los siguientes
pasos:
(a) Dibuje los 7 mapas para cada una de las salidas, de acuerdo a lo especificado en la
Tabla 3-2.
(b) Simplifique las 7 funciones de salida en forma de sumas de productos y determine el
nmero total de entradas necesarias para implementar el circuito.
(c) Verifique que las 7 funcionas dadas en el texto son simplificaciones vlidas. Compare su nmero total de entradas con el del apartado (b) y explique las diferencias.
3-20. !Se necesita una puerta NAND de 8 entradas. Para cada uno de los siguientes casos
minimice el nmero de puertas empleadas en la solucin final a mltiples niveles:
(a) Disee la puerta NAND de 8 entradas empleando puertas NAND de 2 entradas e
inversores.
(b) Disee la puerta NAND de 8 entradas empleando puertas NAND de 2 entradas,
puertas NOR de 2 entradas y, slo en caso necesario, inversores.
(c) Compare el nmero de puertas necesario parta los Apartados (a) y (b).
3-21. Realice un mapeado tecnolgico, empleando las clulas NAND e inversores de la Tabla
3-3, para el circuito de la Figura 3-31 minimizando el coste (mida el coste en rea total
normalizada).
A

B
C
D
E
F

FIGURA 3-31
Circuito para el Problema 3-21

3-22. Realice un mapeado tecnolgico, empleando clulas de la Tabla 3-3, para el circuito de
la Figura 3-32 minimizando el coste (mida el coste en rea total normalizada).
A
B
C
F
D

FIGURA 3-32
Circuito para el Problema 3-22

3-23. Empleando mtodos manuales verifique que el circuito de la Figura 3-33 implementa
una funcin XNOR.

130

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 3-33
Circuito para el Problema 3-23

3-24. *Verifique manualmente que las funciones para las salidas F y G del circuito jerrquico
de la Figura 3-34 son
F % X1 Y ! XY1 Z ! XYZ1
G % XZ ! X1 YZ ! X1 Y1 Z1
En la Figura 4-10 se encuentra el diagrama y la tabla de verdad del decodificador.

Decodificador
2:4
D0
A1

A0

D1

D2
D3

Decodificador
2:4
D0
A1

A0

D1

D2
D3

FIGURA 3-34
Circuito para los Problemas 3-24 y 3-25

3-25. Verifique manualmente que las tablas de verdad para las salidas F y G del circuito jerrquico de la Figura 3-34 son:
W

En la Figura 4-10 se encuentra el diagrama y la tabla de verdad del decodificador.

DISEO LGICO COMBINACIONAL

131

3-26. La Figura 3-35 muestra el diagrama lgico de un circuito CMOS MSI 74HC138. Localice las funciones booleanas de cada una de sus salidas. Describa con detalle el funcionamiento del circuito.
Y0

Y1

Y2
B
Y3

Y4

Y5

Y6

Y7

G1
G2A
G2B

FIGURA 3-35
Circuito para los Problemas 3-26 y 3-27

3-27. Repita el Problema 3-26 empleando un simulador lgico para obtener las formas de
onda de salida o una tabla de verdad parcial, en vez de obtener las expresiones lgicas
del circuito.
3-28. En la Figura 3-21 se muestran los resultados de la simulacin del convertidor de BCD a
exceso 3 para las entradas BCD del 0 al 9. Realice una simulacin similar para determinar las salidas del circuito ante las entradas BCD del 10 al 15.

CAPTULO

4
FUNCIONES Y CIRCUITOS
COMBINACIONALES

n este captulo, estudiaremos varias funciones y sus correspondientes circuitos


fundamentales, muy tiles en el diseo de circuitos digitales ms grandes. Los
circuitos fundamentales, reutilizables, que denominaremos bloques funcionales, implementan funciones de una nica variable, decodificadores, codificadores,
conversores de cdigo, multiplexores y lgica programable. Aparte de ser bloques importantes en la construccin de circuitos y sistemas ms grandes, muchas de estas
funciones estn fuertemente unidas a los distintos componentes de los lenguajes de
descripcin hardware y sirven como vehculo para la presentacin del HDL. Se introducirn los lenguajes de descripcin hardware VHDL y Verilog como una alternativa a
las tablas de verdad, ecuaciones, y esquemticos.
En el diagrama de una computadora genrica que aparece al principio del Captulo 1, los multiplexores son muy importantes para seleccionar los datos en el procesador, en la memoria, y en las placas de I/O. Los decodificadores se emplean para seleccionar las placas conectadas al bus de entrada/salida y para descifrar las
instrucciones a fin de determinar las funciones ejecutadas por el procesador. Los codificadores se usan en varios componentes, como el teclado. La lgica programable
se usa para manejar instrucciones complejas dentro de los procesadores as como en
muchos otros componentes de la computadora. En general, los bloques funcionales
son muy utilizados, tanto que los conceptos de este captulo son aplicables a la mayora de los componentes de la computadora genrica, incluso a las memorias.

134

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

4-1 CIRCUITOS COMBINACIONALES


En el Captulo 3, se definieron e ilustraron los circuitos combinacionales y su diseo. En esta
seccin definiremos algunas funciones combinacionales determinadas junto con sus correspondientes circuitos combinacionales, referidos como bloques funcionales. En algunos casos, iremos a travs del proceso de diseo para obtener un circuito a partir de la funcin, mientras en
otros casos, simplemente presentaremos la funcin y una implementacin de ella. Estas funciones tienen una importancia especial en el diseo digital. En el pasado, los bloques funcionales
se fabricaban como circuitos integrados de pequea y media escala. Hoy, en circuitos de muy
alta escala de integracin (VLSI), los bloques funcionales se emplean para disear circuitos con
muchos de estos bloques. Las funciones combinacionales y sus implementaciones son fundamentales para entender los circuitos VLSI. Normalmente, mediante el empleo de jerarqua, construimos circuitos como instancias de estas funciones o de los bloques funcionales asociados.
Los circuitos de alta y muy alta escala de integracin son, en su mayora, circuitos secuenciales como los descritos en la Seccin 3.1 y estudiados al comienzo del Captulo 6. Las funciones y los bloques funcionales que se discuten en este Captulo 4 son combinacionales. Sin embargo, estn a menudo combinados con elementos de almacenamiento para formar circuitos
secuenciales como se muestra en la Figura 4-1. Las entradas al circuito combinacional pueden
proceder tanto del entorno exterior como de los elementos de almacenamiento. Las salidas del
circuito combinacional van tanto hacia el entorno exterior como hacia los elementos de almacenamiento. En captulos posteriores emplearemos las funciones y bloques combinacionales aqu
definidos, Captulo 5, junto con elementos de almacenamiento, Captulo 6, para formar circuitos
secuenciales que realicen funciones muy tiles. Adems, las funciones y bloques definidos en
los Captulo 4 y 5, servirn, en este y siguientes captulos, como base para describir y entender
tanto los circuitos combinacionales como los secuenciales mediante el empleo de lenguajes de
descripcin hardware.
Salidas

Entradas
Circuito
combinacional

Estado
futuro

Elementos de
almacenamiento

Estado
actual

FIGURA 4-1
Diagrama de bloques de un circuito secuencial

4-2 FUNCIONES LGICAS BSICAS


La asignacin, transferencia, inversin y habilitacin son algunas de las funciones lgicas combinacionales ms elementales. Las dos primeras operaciones, la asignacin y la transferencia, no
implican ningn operador booleano. Slo usan variables y constantes. Como consecuencia, en la
implementacin de estas operaciones no se emplean puertas lgicas. La inversin (o complemento) supone el uso de una nica puerta por variable, y la habilitacin implica el empleo de
una o dos puertas lgicas por variable.

Asignacin, transferencia y complemento


Si una funcin de un nico bit depende de una nica variable X, sern posibles, como mucho,
cuatro funciones diferentes. La Tabla 4-1 muestra las tablas de verdad para estas funciones.

FUNCIONES Y CIRCUITOS COMBINACIONALES

135

TABLA 4-1
Funciones de una variable
X

F%0

F%X

F % X1

F%1

0
1

0
0

0
1

1
0

1
1

La primera y la ltima de las columnas de la tabla asignan el valor constante 0 y el valor constante 1 a la funcin respectivamente, por consiguiente, llevan a cabo una asignacin. En la segunda columna, la funcin es simplemente la variable de entrada X, de este modo X se transfiere de la entrada a la salida. En la tercera columna, la funcin es X1 , por tanto la entrada X se
complementa para convertirse en la salida X1 .
La Figura 4-2 muestra las implementaciones para estas cuatro funciones. La asignacin de
valores fijos se implementa conectando una constante 0 o 1 a la salida F, tal y como muestra la
Figura 4-2(a). La Figura 4-2(b) muestra una representacin alternativa que se emplea en los esquemas lgicos. Empleando lgica positiva, la constante 0 se representa por el smbolo de masa
y la constante 1 por el smbolo de la tensin de alimentacin. Este ltimo smbolo puede nombrarse como VCC o VDD. La transferencia se implementa conectando un nico cable desde X
hacia F, tal y como se aprecia en la Figura 4-2(c). Finalmente, el complemento se representa
mediante un inversor que logra F % X1 a partir de la entrada X como se observa en la Figura 4-2(d).
VCC o VDD
F1

F1

FX

X
(c)

F0

F0

FX

X
(a)

(b)

(d)

FIGURA 4-2
Implementacin de funciones de una nica variable X

Funciones de varios bit


Las funciones definidas con anterioridad pueden aplicarse a varios bits simultneamente. Podemos pensar en estas funciones de mltiples bits como vectores de funciones de un nico bit. Por
ejemplo, supongamos que tenemos cuatro funciones, F3, F2, F1 y F0 que construyen una funcin
F de 4 bits. Ordenaremos las cuatro funciones de modo que F3 sea el bit ms significativo y el
F0 el bit menos significativo, proporcionando el vector F % (F3, F2, F1, F0). Suponga que F
consiste en las siguientes funciones bsicas F3 % 0, F2 % 1, F1 % A y F0 % A1 . Entonces podemos escribir F como el vector (0, 1 A, A1 ). Para A % 0, F % (0, 1, 0, 1) y para A % 1, F % (0, 1,
1, 0). Esta funcin de mltiples bis puede ser referida como F(3:0) o simplemente como F y su
implementacin se muestra en la Figura 4-3(a). Por comodidad, en los esquemas hemos representado un conjunto de varios hilos relacionados empleando una nica lnea de mayor grosor
con una barra (slash) cruzndola. El entero que acompaa a la barra indica el nmero de cables,
cmo muestra la Figura 4-3(b). Para poder conectar los valores 0, 1, X y X1 a los bits apropiados
de F, separamos F en cuatro cables, uno por cada bit de F, y los nombramos adecuadamente.

136

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

F3

F2

F1

F0

(a)

3
0
(b)

2:1
F

F(2:1)

(c)
3

4 3,1:0
F

F(3), F(1:0)

(d)

FIGURA 4-3
Implementacin de funciones bsicas de varios bits

Del mismo modo, puede ocurrir en el proceso de transferencia, que slo queramos usar un pequeo grupo de elementos de F, por ejemplo, F2 y F1. La Figura 4-3(c) muestra la notacin
utilizada con este fin para los bits de F. La Figura 4-3(d) se ha empleado para ilustrar un caso
ms complejo que utiliza F3, F1 y F0. Observe que, puesto que, F3, F1 y F0 no estn juntos, no
podemos usar la anotacin F(3:0) para referirnos a este subvector. En su lugar emplearemos una
combinacin de dos su vectores, F(3), F(1:0) nombrado por los subndices 3, 1:0. La notacin
real empleada para los vectores y subvectores vara dependiendo de las herramientas de captura
de esquemas y HDL disponibles. La Figura 4-3 muestra una de estas propuestas. Para cada
herramienta determinada, debe consultarse la documentacin.
La asignacin de valores, la transferencia y el complemento tienen una gran variedad de
aplicaciones en los diseos lgicos. La asignacin de valores implica sustituir una o ms variables por los valores constantes 1 y 0. La asignacin puede ser permanente o temporal. En la
asignacin permanente, el valor nunca se podr modificar. En la asignacin temporal, los valores pueden ser cambiados, empleando a menudo mecanismos algo diferentes a los empleados en
las operaciones lgicas ordinarias. La asignacin de valores permanentes o fijos tiene su aplicacin principal en los dispositivos de lgica programable. Cualquier funcin que no est contemplada en un dispositivo programable puede ser implementada fijando un conjunto de valores,
como se muestra el prximo ejemplo.
EJEMPLO 4-1 Asignacin de valores para implementar una funcin
Considere la tabla de verdad mostrada en la Figura 4-4(a). A y B son dos variables de entrada,
como tambin lo son desde I0 hasta I3. Dependiendo de la funcin que se desee, a las variables
I0, I1, I2 e I3 se les asignaran valores de 0 o 1. Observe que I es, en realidad, una funcin de seis
variables cuya tabla de verdad expandida est formada por 64 filas y 7 columnas. Pero, al colocar I0, I1, I2 e I3 en la columna de salida, hemos reducido considerablemente el tamao de la
tabla. La ecuacin para la salida Y de esta tabla es:
Y(A, B, I0, I1, I2, I3) % A1 B1 I0 ! A1 BI1 ! AB1 I2 ! ABI3
La Figura 4-4(b), muestra la implementacin para esta ecuacin. Al fijar los valores desde I0
hasta I3, se puede implementar cualquier funcin Y(A, B). Como muestra la Tabla 4-2,
Y % A ! B puede implementarse usando I0 % 0, I1 % 1, I2 % 1 e I3 % 1. O podemos implementar Y % AB1 ! B1 A usando I0 % 0, I1 % 1, I2 % 1 e I3 % 0. Cualquiera de estas funciones puede
implementarse permanente o temporalmente sin ms que fijar I0 % 0, I1 % 1, I2 % 1, y usando I3
como una variable que toma el valor 1 para A ! B y el valor 0 para AB1 ! A1 B. La Figura 4-4(c)
muestra el circuito final.

FUNCIONES Y CIRCUITOS COMBINACIONALES

137

A
A B

0
1
0
1

I0
I1
I2
I3

0
0
1
1

B
I0

I1

(a)

Y
I2
I3
(b)
A
B
0

1
Y
1
I3
(c)

FIGURA 4-4
Implementacin de dos funciones usando asignacin de valores

TABLA 4-2
Implementacin de una funcin por asignacin de valores
A

Y%A ! B

Y %AB1 !A1 B

Y%A!B(I3 %1) o Y%AB1 !A1 B(I3 %0)

0
0
1
1

0
1
0
1

0
1
1
1

0
1
1
0

0
1
1
I3

Habilitacin
El concepto de habilitar una seal apareci por primera vez en la Seccin 2-9 donde se introdujeron los conceptos de salida en alta impedancia (Hi-Z) y buffer tri-estado. En general, la habilitacin permite que una seal de entrada pase hacia la salida. Adems de reemplazar la seal de
entrada por un estado de alta impedancia en la salida, la deshabilitacin tambin puede sustituir

138

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

la seal de entrada por un valor fijo en la salida, bien sea 0 o 1. La seal de entrada adicional, a
menudo denominada ENABLE o EN, es necesaria para determinar cundo la salida est habilitada o no lo est. Por ejemplo, si la seal EN tiene un 1, la entrada X pasar directamente a la
salida (habilitada) pero si la seal EN est a 0, la salida mostrar un 0 fijo (deshabilitada). En
estos casos, si el valor deshabilitado est a 0 fijo, la seal de entrada X es multiplicada (AND) a
la seal EN, como muestra la Figura 4-5(a). Si el valor deshabilitado est a 1, entonces la seal
de entrada X ser sumada (OR) con el complemento de la seal EN, tal y como muestra la Figura 4-5(b). Por otra parte, la seal de salida puede ser habilitada con EN % 0 en lugar de 1, pasando a denominarse entonces EN, pues EN se ha invertido, como en la Figura 4-5(b).
X
EN

F
(a)
X

EN
(b)

FIGURA 4-5
Circuitos habilitadores

EJEMPLO 4-2 Aplicacin de habilitacin


En la mayora de los automviles, la luz, la radio y las ventanilla slo funcionan si el interruptor
del contacto est encendido. En este caso, el contacto acta como una seal habilitadora. Suponga que queremos copiar este sistema automovilstico usando las siguientes variables y definiciones:
Contacto CN - A 0 si est abierto, a 1 cerrado
Interruptor de luz IL - A 0 si est abierto, a 1 cerrado
Interruptor de radio IR - A 0 si est abierto, a 1 cerrado
Interruptor de las ventanillas IV - A 0 si est abierto, a 1 cerrado
Luces L - A 0 apagadas, a 1 encendidas
Radio R - A 0 apagada, a 1 encendida
Alimentacin de las ventanillas V - A 0 desconectada, a 1 conectada
La Tabla 4-3 contiene la tabla de verdad resumida para las operaciones de este sistema.
Observe cmo, cuando el interruptor de arranque est abierto CN % 0, todos los accesorios que
controla estn apagados (0) a pesar del estado en que se encuentren sus interruptores.
Esto se refleja en la primera fila de la tabla. Con el empleo de las indiferencias (X), esta
tabla resumida de tan slo nueve filas representa la misma informacin que la habitual tabla de
verdad de 16 filas. Mientras las X en las columnas de salida representan condiciones indiferentes, las X en las columnas de entrada se usan para representar productos de trminos que no son
mini trminos. Por ejemplo 0XXX representa el producto CN. En los mini trminos, cada variable es negada si el bit correspondiente en la combinacin es 0 y no ser negada si el bit es 1. Si
el bit correspondiente en la combinacin de entrada es X, entonces la variable no aparecer en
el producto de trminos. Cuando el interruptor del contacto est encendido CN % 1, entonces
los accesorios se controlarn por sus respectivos interruptores. Cuando CN est apagado (0),
todos los accesorios tambin estarn apagados. Entonces CN modifica los valores normales de
las salidas L, R y V por un valor 0 fijo, dando sentido a la definicin de una seal ENABLE.

FUNCIONES Y CIRCUITOS COMBINACIONALES

139

TABLA 4-3
Tabla de verdad de una aplicacin de habilitacin
Interruptores de entrada

Controles

CN

IL

IR

IV

0
1
1
1
1
1
1
1
1

X
0
0
0
0
1
1
1
1

X
0
0
1
1
0
0
1
1

X
0
1
0
1
0
1
0
1

0
0
0
0
0
1
1
1
1

0
0
0
1
1
0
0
1
1

0
0
1
0
1
0
1
0
1

4-3 DECODIFICACIN
En las computadora digitales, se emplean cdigos binarios para representar cantidades discretas
de informacin. Un cdigo binario de n bits es capaz de representar hasta 2n elementos distintos
de informacin codificada. Decodificar es convertir un cdigo de entrada de n bits en un cdigo
de salida de m bits, n m m m 2n, tal que para cada palabra vlida codificada en la entrada exista
un nico cdigo de salida. La decodificacin es realizada por un decodificador, un circuito
combinacional al que se aplica un cdigo binario de n bits por sus entradas y genera un cdigo
binario de m bits por sus salidas. Puede ocurrir que para ciertas combinaciones de entrada no
usadas el decodificador no genera ningn cdigo por las salidas. Entre todas las funciones especializadas definidas aqu, la decodificacin es la ms importante y sus correspondientes bloques
funcionales se incorporan en muchas de otras funciones y en bloques funcionales definidos
aqu.
En esta seccin, los bloques funcionales que implementan la decodificacin se denominan
decodificadores de n a m lneas, donde m m 2n. Su propsito es generar 2n (o menos) mini trminos a partir de las n variables de entrada. Para n % 1 y m % 2 obtenemos la funcin decodificadora de 1 a 2 lneas con una entrada A y salidas D0 y D1. La Figura 4-6(a) muestra la tabla de
verdad para esta funcin decodificadora. Si A % 0, entonces D0 % 1 y D1 % 0. Si A % 1, entonces D0 % 0 y D1 % 1. A partir de esta tabla de verdad, se obtiene D0 % A1 y D1 % A dando el
circuito que aparece en la Figura 4-6(b).
A
0
1

D0 D1
1
0

0
1

(a)

D0  A
D1  A

A
(b)

FIGURA 4-6
Decodificador de 1 a 2 lneas

140

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

En la Figura 4-7(a) se muestra la tabla de verdad de una segunda funcin decodificadora


para n % 2 y m % 4, que ilustra mejor la naturaleza general de los decodificadores. Las salidas
de esta tabla son mini trminos de dos variables, en cada fila aparece un valor de salida igual a
1 y 3 valores de salida iguales a 0. La salida Di es igual a 1 siempre que los dos valores de
entrada A1 y A0 representen el cdigo binario para el nmero i. Como consecuencia, el circuito
implementa cuatro posibles mini trminos de dos variables, un mini trmino para cada salida.
En el diagrama lgico de la Figura 4-7(b), cada mini trmino se implementa mediante una puerta AND de 2 entradas. Estas puertas AND estn conectadas a dos decodificadores de 1 a 2 lneas, uno por cada una de las lneas conectadas a las entradas de la puerta AND.
A0
A1 A 0
0
0
1
1

0
1
0
1

D0 D1 D2 D3
1
0
0
0

0
1
0
0

0
0
1
0

A1

0
0
0
1

D 0  A 1 A0
D 1  A 1 A0

(a)

D 2  A 1 A0
D 3  A 1 A0
(b)

FIGURA 4-7
Decodificador de 2 a 4 lneas

Extensin de decodificadores
Pueden construirse decodificadores mayores implementando simplemente cada funcin de mini
trminos con una puerta AND que tenga ms entradas. Desafortunadamente, a medida que los
decodificadores se hacen ms grandes, esta solucin da como resultado puertas con un elevado
nmero de entradas. En esta seccin, se proporciona un mtodo que emplea diseo jerrquico y
agrupaciones de puertas AND para construir cualquier decodificador con n entradas y 2n salidas.
El decodificador que se obtiene por este modo tiene el mismo o menor nmero total de entradas
que el construido mediante la mera ampliacin de cada puerta AND.
Para construir un decodificador de 3 a 8 lneas (n % 3) emplearemos, para formar los mini
trminos, un decodificador de 2 a 4 lneas y un decodificador de 1 a 2 lneas que alimentarn a
8 puertas AND de 2 entradas. Jerrquicamente, el decodificador de 2 a 4 puede implementarse
usando decodificadores de 1 a 2 lneas que alimentan a 4 puertas AND de 2 entradas, como se
observa en la Figura 4-7. La estructura resultante se muestra en la Figura 4-8.
El procedimiento general es el siguiente:
1.
2.

Hacer k % n.
Si k es par, dividir k entre 2 para obtener k/2. Emplear 2k puertas AND conectadas a dos
decodificadores de tamao de salida 2k/2. Si k es impar, calcular (k ! 1)/2 y (k . 1)/2.
Usar 2k puertas AND conectadas a un decodificador de tamao de salida 2(k!1)/2 y un
decodificador de tamao de salida 2(k.1)/2.

FUNCIONES Y CIRCUITOS COMBINACIONALES

4 puertas AND
de 2 entradas

141

8 puertas AND
de 2 entradas
D0

A0

D1
A1

D2
D3

Decodificador 2:4

D4
D5

A2
Decodificador 1:2

D6
D7

Decodificador 3:8

FIGURA 4-8
Decodificador de 3 a 8 lneas

3.

Para cada uno de los decodificadores resultantes en el paso 2, repita el paso 2 desde k
igual a los valores obtenidos en el paso 2 hasta k % 1. Para k % 1, use un decodificador
de 1 a 2 lneas.

EJEMPLO 4-3 Decodificador de 6 a 64 lneas


Para un decodificador de 6 a 64 lneas (k % n % 6), en la primera ejecucin del paso 2, se conectan 64 puertas AND de 2 entradas a dos decodificadores de tamao de salida 23 % 8 (es
decir, por dos decodificadores de 3 a 8 lneas). En la segunda ejecucin del paso 2, es k % 3.
Puesto que k es impar, el resultado es que (k ! 1)/2 % 2 y (k . 1)/2 % 1. Se conectan 8 puertas
AND de 2 entradas a un decodificador de tamao de salida 22 % 4 y a un decodificador de tamao de salida (es decir, a dos decodificadores de 2 a 4 lneas y a un decodificador de 2 a 1
lneas, respectivamente). Finalmente, en la siguiente ejecucin del paso 2, k % 2, dando lugar a
cuatro puertas AND de 2 entradas conectadas a dos decodificadores con tamao de salida 2 (es
decir, a dos decodificadores de 1 a 2 lneas). Puesto que todos los decodificadores se han expandido, el algoritmo del paso 3 termina en este momento. La Figura 4-9 muestra la estructura resultante. Esta estructura tiene un nmero total de entradas de 6 ! 2(2 # 4) ! 2(2 # 8) !
2 # 64 % 182. Si se hubiera empleado una nica puerta AND para cada mini trmino, el nmero total de entradas habra sido 6 ! (6 # 64) % 390, con lo que se ha conseguido una reduccin
significativa en el nmero total de entradas.

Como alternativa, suponga que se necesitan mltiples decodificadores y que stos tienen
variables de entrada comunes. En este caso, en lugar de implementar decodificadores distintos

142

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 4-9
Decodificador de 6 a 64 lneas

algunas partes de ellos podrn compartirse. Por ejemplo, suponga que 3 decodificadores da, db y
dc son funcin de las siguientes variables de entrada:
da(A, B, C, D)
db(A, B, C, E)
dc(C, D, E, F)
da y db pueden compartir un decodificador de 3 a 8 lneas para A, B y C. da y dc pueden compartir un decodificador de 2 a 4 lneas para C y D. db y dc pueden compartir un decodificador 2 a 4
lneas para C y E. Al implementar estos tres bloques compartidos, C aparecera en los tres decodificadores diferentes y el circuito presentara redundancia. Para usar C solamente una vez en
los decodificadores compartidos, tendremos en cuenta los siguientes casos:
1. (A, B) compartido por da y db, y (C, D) compartido por da y dc
2. (A, B) compartido por da y db, y (C, E) compartido por db y dc, o
3. (A, B, C) compartido por da y db
Puesto que los casos 1 y 2 tienen claramente el mismo coste, compararemos el coste de los
casos 1 y 3. Para el caso 1, el coste de las funciones da, db y dc se reducir en el coste de
2 decodificadores de 2 a 4 lneas (excepto los inversores) o 16 entradas de puertas. Para el
caso 3, el coste para las funciones da y db se reduce en un decodificador de 3 a 8 lneas, o 24

FUNCIONES Y CIRCUITOS COMBINACIONALES

143

entradas. Por tanto, es el caso 3 el que debe implementarse. La implementacin formal de este
algoritmo va ms all de nuestras posibilidades, solo se muestra un dibujo esquemtico de esta
aproximacin.

Decodificadores con seal de habilitacin


La funcin decodificador de n a m lneas con habilitacin puede implementarse conectando m
circuitos habilitadores a las salidas del decodificador. De este modo, m copias de la seal habilitadora EN se conectarn a la entrada del control de habilitacin de los circuitos habilitadores.
Para n % 2 y m % 4, resulta el decodificador 2 a 4 lneas y con seal de habilitacin mostrado
en la Figura 4-10, junto a su tabla de verdad. Para EN % 0, todas las salidas del decodificador
son 0. Para EN % 1, slo una de las salidas del decodificador, determinada por el valor de
(A1, A0), es 1 y todas las dems son 0. Si el decodificador controla un conjunto de luces, cuando
la seal EN % 0, las luces estarn apagadas, y cuando EN % 1, solamente una luz estar encendida, con las otras tres apagadas. Para decodificadores mayores (n n 4), el nmero total de entradas puede reducirse colocando los circuitos habilitadores en las entradas del decodificador y
sus negadas, en vez de en cada una de las salidas del decodificador.
En la Seccin 4-5, se tratar la seleccin mediante el empleo de multiplexores. Lo contrario
a la seleccin es la distribucin, en la cual la informacin recibida procedente de una nica
lnea es transmitida a cada una de las 2n posibles lneas de salida. El circuito que implementa
esta distribucin se denomina demultiplexor. Para controlar qu seal de entrada es transmitida
a la salida, se emplea una combinacin de bits sobre las n lneas de seleccin. El decodificador
2 a 4 lneas con habilitacin de la Figura 4-10 es una implementacin de un demultiplexor de 1
a 4 lneas. En el demultiplexor, la entrada EN proporciona los datos, mientras que las otras entradas actan como variables de seleccin. Aunque los dos circuitos tienen aplicaciones diferentes, sus diagramas lgicos son exactamente los mismos. Por esta razn, un decodificador con
entrada de habilitacin se denomina tambin decodificador/demultiplexor. La entrada de datos
EN tiene conexin hacia las cuatro salidas, pero la informacin de entrada slo es direccionada
haca una de ellas, especificada mediante las dos lneas de seleccin A1 y A0. Por ejemplo, si
(A1, A0) % 10, la salida D2 tiene el valor aplicado en la entrada EN, mientras las dems salidas
EN
A1
A0
D0
EN A1 A0
0
1
1
1
1

X
0
0
1
1

X
0
1
0
1

D0 D1 D2 D3
0
1
0
0
0
(a)

0
0
1
0
0

0
0
0
1
0

D1

0
0
0
0
1

D2
D3
(b)

FIGURA 4-10
Decodificador con seal de habilitacin de 2 a 4 lneas

144

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

permanecen inactivas mostrando un 0 lgico. Si el decodificador controla un conjunto de cuatro


luces, con (A1, A0) % 10 y EN alternativamente cambiando entre 1 y 0, la luz controlada por D2
lucir intermitentemente, mientras que todas las dems luces estarn apagadas.

4-4 CODIFICACIN
Un codificador es una funcin digital que realiza la operacin inversa del decodificador. Un
codificador tiene 2n (o menos) lneas de entrada y n lneas de salida. Las lneas de salida generan el cdigo binario correspondiente a los valores de la entrada. Un ejemplo de codificador es
el codificador de Octal a Binario que se muestra en la Tabla 4-4. Este codificador tiene 8 entradas, una por cada uno de los dgitos que soporta, y 3 salidas que generan el correspondiente
nmero binario. Si suponemos que slo una de las entradas puede tomar el valor 1 al mismo
tiempo, entonces la tabla slo tendr ocho filas, cada una con los valores de salida especificados. Para las 56 combinaciones restantes, todas las salidas sern indiferencias. A partir de la
tabla de verdad observamos como Ai es 1 para las columnas en las que Dj es 1 cuando el subndice j se representa en binario con un 1 en la posicin i. Por ejemplo, la salida es A0 % 1 si la
entrada es 1, 3, 5 o 7. Puesto que todos estos valores son impares, tienen un 1 en la posicin 0
de su correspondiente representacin binaria. Esta aproximacin se puede emplear para encontrar la tabla de verdad. A partir de la tabla, el decodificador puede implementarse con n puertas
OR, una por cada una de las variables Ai de salida. Cada puerta OR combina las variables de
entrada Dj de las filas que tienen un 1 para un valor Ai % 1. Para el codificador de 8 a 3 lneas,
las ecuaciones de salida resultantes son:
A0 % D1 ! D3 ! D5 ! D7
A1 % D2 ! D3 ! D6 ! D7
A2 % D4 ! D5 ! D6 ! D7
que se implementan con 3 puertas OR de 4 entradas.
El codificador recin descrito presenta la limitacin de que slo una de las entradas puede
estar activa al mismo tiempo: si dos entradas se activan simultneamente, la salida presenta una
TABLA 4-4
Tabla de verdad para un codificador octal a binario
Entradas

Salidas

D7

D6

D5

D4

D3

D2

D1

D0

A2

A1

A0

0
0
0
0
0
0
0
1

0
0
0
0
0
0
1
0

0
0
0
0
0
1
0
0

0
0
0
0
1
0
0
0

0
0
0
1
0
0
0
0

0
0
1
0
0
0
0
0

0
1
0
0
0
0
0
0

1
0
0
0
0
0
0
0

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

FUNCIONES Y CIRCUITOS COMBINACIONALES

145

combinacin incorrecta. Por ejemplo, si D3 y D6 son puestas simultneamente a 1, la salida del


codificador ser 111 puesto que las tres salidas son iguales a 1. Esta combinacin no es la representacin binaria ni del 3 ni del 6. Para resolver esta ambiguedad, algunos circuitos codificadores establecen una prioridad en las entradas para asegurar que slo una de ellas sea codificada.
Si asignamos una prioridad mayor a las entradas que representan nmeros mayores, y si tanto
D3 como D6 se han colocado a 1 al mismo tiempo, la salida ser 110 porque D6 tiene mayor
prioridad que D3. En el codificador octal a binario se produce otra ambiguedad cuando todas las
entradas estn a 0, al mostrar ceros en todas las salidas, igual que se produce cuando la entrada
D0 es 1. Esta discrepancia puede resolverse proporcionando una salida adicional que indique
que una de las entradas, al menos, se ha puesto a 1.

Codificador con prioridad


Un codificador con prioridad es un circuito combinacional que implementa una funcin de prioridad. Como se ha mencionado en el prrafo anterior, la funcin del codificador con prioridad
es tal que si dos o ms entradas son iguales a 1 al mismo tiempo, aquella que tenga mayor
prioridad tomar la delantera. La tabla de verdad para un codificador de prioridad de cuatro
entradas se da en la Tabla 4-5. Con el empleo de las X, esta tabla reducida de cinco filas representa la misma informacin que la tabla de verdad habitual de 16 filas. Mientras que las X en
las columnas de salida representan condiciones indiferentes, las X en las columnas de entrada se
usan para representar productos de trminos que no son mini trminos. Por ejemplo 001X representa el producto de trminos D1 3D1 2D1. Tal y como ocurre con los mini trminos, cada variable
es negada si el bit correspondiente en la combinacin de entrada de la tabla es 0 y no es invertida si el bit es 1. Si el correspondiente bit en la combinacin de entrada es una X, entonces la
variable no aparece en el producto de trminos. De este modo, para 001X, la variable D0, correspondiente a la posicin de la X, no aparecer en D1 3D1 2D1.
El nmero de filas de una tabla de verdad completa representadas por una nica fila en la
tabla resumida es 2p, donde p es el nmero de X en la fila. Por ejemplo, en la Tabla 4-5, la fila
1XXX representa 23 % 8 filas de la tabla de verdad completa que tienen el mismo valor para
todas las salidas. Para construir una tabla de verdad resumida debemos incluir cada mini trmino en al menos una de las filas, en el sentido de que cada mini trmino puede obtenerse reemplazando por 1 y 0 las X. Del mismo modo, un mini trmino nunca debe incluirse en ms de
una fila, de modo que no existan conflictos entre las salidas de varias filas.
Formamos la Tabla 4-5 como sigue: la entrada D3 es la de mayor prioridad; por tanto no
tendremos en cuenta los valores de las otras entradas cuando esta entrada est a 1, la salida para
TABLA 4-5
Tabla de verdad de un codificador con prioridad
Entradas

Salidas

D3

D2

D1

D0

A1

A0

0
0
0
0
1

0
0
0
1
X

0
0
1
X
X

0
1
X
X
X

X
0
0
1
1

X
0
1
0
1

0
1
1
1
1

146

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A1A0 es 1 (el binario de 3). A partir de aqu hemos obtenido la ltima fila de la Tabla 4-5. D2
tiene el siguiente nivel de prioridad. La salida es 10 si D2 es 1, y siempre que D3 sea 0, no
teniendo en cuenta los valores de las entradas de menor prioridad. De este modo, obtenemos la
cuarta fila de la tabla. La salida para D1 se genera slo si todas las entradas con mayor prioridad
estn a 0, y sin tener en cuenta los niveles de prioridad que estn por debajo. De este modo,
obtenemos las restantes filas de la tabla. La salida de validacin designada como V es puesta a 1
slo cuando una o ms de las entradas son iguales a 1. Si todas las entradas son 0, entonces
V % 0 y las otras dos salidas del circuito no se emplearn, siendo referidas como indiferencias
en la parte de la tabla destinada a las salidas.
Los mapas para simplificar las salidas A1 y A0 se muestran en la Figura 4-11. A partir de la
Tabla 4-5 se han obtenido los mini trminos de las dos funciones. Los valores de salida de la
tabla se han transferido directamente a los mapas situndolos en los cuadros cubiertos por el
correspondiente producto. La ecuacin optimizada para cada funcin se ha colocado debajo de
su mapa correspondiente. La ecuacin para la salida V es una funcin OR de todas las variables
de entrada. El codificador con prioridad se ha implementado en la Figura 4-12 de acuerdo con
las siguientes funciones booleanas:
A0 % D3 ! D1D1 2
A 1 % D2 ! D3
V % D0 ! D1 ! D2 ! D3

D3D2

D1D0
00

00

01

D1
01

11

D3D2

10

D1D0
00

00
1

D1
01

11

10

01

D2

D2
11

10

11

10

D3

D3

D0
A1  D2  D3

D0
A0  D3  D1D2

FIGURA 4-11
Mapas para el codificador con prioridad

Expansin de codificadores
Hasta ahora, slo hemos tenido en cuenta codificadores pequeos. Los codificadores pueden
ampliarse para un mayor nmero de entradas mediante la expansin de puertas OR. En la implementacin de codificadores, el empleo de circuitos de mltiples niveles para las puertas OR,
compartidos para la obtencin de los bits ms significativos del cdigo de salida, reduce el nmero total de entradas cuando n n 5. Para n n 3 el mapeado tecnolgico, debido a las limitaciones en el fan-in de las puertas, resulta en la generacin directa de estos circuitos de mltiples
niveles.

FUNCIONES Y CIRCUITOS COMBINACIONALES

147

D3
D2
A0
D1
A1

D0

FIGURA 4-12
Diagrama lgico para un codificador con prioridad de 4 entradas

4-5 SELECCIN
En una computadora, la seleccin de informacin es una funcin muy importante, no slo en la
comunicacin entre las partes del sistema, sino tambin dentro de las propias partes. En otras
aplicaciones la seleccin, en combinacin con la asignacin de valores, permite implementar
funciones combinacionales. Normalmente, los circuitos que llevan a cabo la seleccin se componen de una serie de entradas de entre las que se realiza la seleccin, una nica salida y un
conjunto de lneas de control para determinar la seleccin a realizar. Primero consideraremos la
seleccin usando multiplexores; ms tarde examinaremos, brevemente, los circuitos de seleccin implementados con puertas tri-estado y puertas de transmisin.

Multiplexores
Un multiplexor es un circuito combinacional capaz de seleccionar una informacin binaria procedente de una de entre varias lneas de entrada y direccionar dicha informacin hacia una nica
lnea de salida. La seleccin de una lnea de entrada en particular se controla mediante un conjunto de variables de entrada, denominadas lneas de seleccin. Normalmente hay 2n lneas de
entrada y n entradas de seleccin, cuya combinacin de bits determina qu entrada ser seleccionada. Comenzamos con n % 1, un multiplexor de 2 a 1. Esta funcin tiene dos entradas de
informacin, I0 e I1, y una nica entrada de seleccin S. La tabla de verdad para este circuito es
la mostrada en la Tabla 4-6. Examinando dicha tabla, si la entrada de seleccin es S % 1, la
salida del multiplexor tomar el valor de I1 y si la entrada de seleccin es S % 0, entonces la
salida del multiplexor tomar el valor de I0. De este modo, S selecciona cul de las entradas I0 o
I1 aparece en la salida Y. A partir de esta discusin, podemos ver que la ecuacin para la salida
del multiplexor 2 a 1 Y es:
Y % S1 I0 ! SI1
Esta misma ecuacin puede obtenerse utilizando un Mapa de Karnaugh de 3 variables. Tal
y como muestra la Figura 4-13, la implementacin de la ecuacin anterior puede descomponerse en un decodificador de 1 a 2 lneas, dos circuitos de habilitacin y una puerta OR de 2
entradas.

148

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 4-6
Tabla de verdad de un multiplexor 2 a 1
S

I0

I1

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
1
1
0
1
0
1

Circuitos de
habilitacin

Decodificador
I0

Y
S
I1

FIGURA 4-13
Multiplexor de un solo bit 2 a 1

Suponga que deseamos disear un multiplexor de 4 a 1 lneas. En este caso, la funcin Y


depende de cuatro entradas I0, I1, I2 e I3 y dos entradas de seleccin S0 y S1. Colocando en la
columna Y los valores desde I0 hasta I3, podemos construir la Tabla 4-7, una tabla de verdad
resumida para este multiplexor. En esta tabla, la informacin de las variables de entrada no aparece en las columnas de entrada de la tabla pero aparece en la columna de salida. Cada fila de la
tabla resumida representa muchas filas de la tabla de verdad completa. En la Tabla 4-7, la fila
00I0 representa todas filas en las cuales (S1, S0) % 00, para I0 % 1 da Y % 1 y para I0 % 0 da
Y % 0. Puesto que hay seis variables y slo S1 y S0 son fijos, una nica fila representa o equivale
a 16 filas de la correspondiente tabla de verdad completa. A partir de esta tabla, podemos escribir la ecuacin para Y como:
Y % S1 1S1 0 I0 ! S1 1S0 I1 ! S1S1 0 I2 ! S1S0 I3
TABLA 4-7
Tabla de verdad resumida de un multiplexor 4 a 1
S1

S0

0
0
1
1

0
1
0
1

I0
I1
I2
I3

FUNCIONES Y CIRCUITOS COMBINACIONALES

149

Si esta ecuacin se implementara directamente, necesitaramos dos inversores, cuatro puertas


AND de 3 entradas y una puerta OR de cuatro entradas, dando un nmero total de entradas de
18. Puede obtenerse una implementacin diferente factorizando los trminos AND, de modo
que quedara:
Y % (S1 1S1 0)I0 ! (S1 1S0)I1 ! (S1S1 0)I2 ! (S1S0)I3
Esta implementacin puede construirse combinando un decodificador 2-4 lneas, cuatro
puertas AND empleadas como circuitos de habilitacin y una puerta OR de 4 entradas, tal y
como muestra la Figura 4-14. Nos referiremos a la combinacin de puertas AND y OR como
m # 2 AND-OR, donde m es el nmero de puertas AND y 2 es el nmero de entradas de las
puertas AND. El circuito resultante cuenta con 22 entradas de puertas, lo que incrementa su
coste. Sin embargo, ste es la base estructural para la construccin, por expansin, de grandes
multiplexores de n a 2n lneas.
Un multiplexor tambin se denomina selector de datos, puesto que selecciona solo una de
entre las muchas informaciones de entrada y lleva la informacin binaria hacia la lnea de salida. El trmino multiplexor es a menudo abreviado por MUX.
Decodificador

S1

AND-OR 4  2

S0
I0

I1
Y
I2

I3

FIGURA 4-14
Multiplexor 4 a 1 de un solo bit

Expansin de multiplexores
Los multiplexores pueden expandirse considerando n vectores de bits de entrada. La expansin
se basa en el empleo de circuitos cuya estructura viene dada por la Figura 4-14, consistiendo en
un decodificador, circuitos habilitadores y puertas AND y OR. El diseo de multiplexores se
ilustra en los Ejemplos 4-4 y 4-5.
EJEMPLO 4-4 Multiplexor de 64 a 1
Debe disearse un multiplexor para n % 6. Para ello, necesitaremos el decodificador de 6 a 64
lneas que se muestra en la Figura 4-9 y una puerta AND-OR. La estructura resultante se muestra
en la Figura 4-15. Esta estructura presenta un nmero total de entradas 182 ! 128 ! 64 % 374.
En contraposicin, si el decodificador y el circuito habilitador se reemplazan por inversores ms
puertas AND de 7 entradas, el nmero total de entradas necesario es 6 ! 448 ! 64 % 518. Para

150

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

AND-OR 64  2
A0

D0

I0

A1

A2
Decodificador
6:64

.
.
.

.
.
.

A3

A4

A5

D63

I63

FIGURA 4-15
Multiplexor de 64 a 1 lneas

multiplexores de un nico bit como ste, la combinacin de las puertas AND que generan Di
con la puerta AND atacada por Di en una nica puerta AND de 3 entradas, para cada i % 0
hasta 63, reduce el nmero total de entradas a 310. Para multiplexores de mltiples bits, esta
reduccin a puertas AND de 3 entradas no puede llevarse a cabo sin reproducir exactamente las
salidas AND de los decodificadores. Como resultado, en la mayora de los casos la estructura
original presenta una menor coste en nmero total de entradas. El siguiente ejemplo ilustra la
expansin para un multiplexor mltiple.

EJEMPLO 4-5 Multiplexor cudruple 4 a 1


Se va a disear un multiplexor cudruple 4 a 1 con dos entradas de seleccin y donde cada
entrada de informacin se ha sustituido por un vector de 4 entradas. Puesto que la informacin
de entrada es un vector, la salida Y tambin ser un vector de cuatro elementos. Para implementar este multiplexor se necesitan decodificadores de 2 a 4 lneas como los dados en la Figura
4-7, y cuatro puertas 4 # 2 AND-OR. La estructura resultante se muestra en la Figura 4-16.
Esta estructura presenta un coste de 10 ! 32 ! 16 % 58 entradas de puertas. Sin embargo cuatro multiplexores de 4 entradas, implementados con puertas de 3 entradas, presentan un coste de
76 entradas de puertas. Por tanto compartiendo los decodificadores se reduce el coste.

Implementaciones alternativas de selectores


Es posible implementar selectores de datos y multiplexores empleando drivers tri-estado y puertas de transmisin, consiguiendo disminuir el coste requerido con puertas.

FUNCIONES Y CIRCUITOS COMBINACIONALES

151

AND-OR 4  2
I0,0
Y0

.
.
.
AND-OR 4  2

I3,0
A0
Decodificador
2:4
A1

D0

I0,1

.
.
.
D3

.
.
.

Y1

AND-OR 4  2

I3,1
I0,2

Y2

.
.
.
AND-OR 4  2

I3,2
I0,3
.
.
.

Y3

I3,3

FIGURA 4-16
Cudruple multiplexor de 4 a 1

IMPLEMENTACIONES CON TRI-ESTADO Los drivers triestado, introducidos en el Captulo 2,


proporcionan una implementacin alternativa a los multiplexores. En la implementacin que se
muestra en la Figura 4-17(a), cuatro drivers tri-estado con sus salidas conectadas a Y sustituyen
a los circuitos de habilitacin y la puerta OR de salida, dando un nmero total de entradas
de 18. Adems, la lgica puede reducirse distribuyendo la decodificacin a travs de los drivers
tri-estado, tal y cmo muestra la Figura 4-17(b). En este caso, tres pares de circuitos de habilitacin, todos con decodificares de 2 salidas consistentes en un sencillo cable y un inversor, atacan
a las entradas de habilitacin. El nmero total de entradas para este circuito se reduce a slo 14.
IMPLEMENTACIN CON PUERTAS DE TRANSMISIN Una modificacin a la aproximacin con
puertas tri-estado de la Figura 4-17(b) consiste en construir los circuitos de seleccin con puertas de transmisin. Esta implementacin, mostrada para un selector de 4 a 1 en la Figura 4-18,
usa puertas de transmisin como conmutadores. El circuito con puertas de transmisin proporciona un camino de transmisin entre cada entrada I y la salida Y cuando las dos entradas de
seleccin de las puertas de transmisin del camino tienen el valor 1 en el terminal no negado y
un 0 en el terminal negado. Si los valores se cambian en la entrada de seleccin, una de las
entradas de transmisin del camino se convierte en un circuito abierto y el camino desaparece.
Las dos entradas de seleccin S1 y S0 controlan los caminos de transmisin en el circuito con
puertas de transmisin. Por ejemplo, si S0 % 0 y S1 % 0, existe un camino entre I0 y la salida Y,
y las otras tres entradas son desconectadas por el resto del circuito. El coste de una puerta de
transmisin es equivalente al de las puertas de una entrada. Por tanto, el coste para este multiplexor basado en puertas de transmisin es de 8.

152

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

S1
I0

S0

I1
Y
I2
I3

(a)
S0

I0

I1

S1
Y

I2

I3
(b)

FIGURA 4-17
Circuitos de seleccin usando drivers tri-estado

4-6 IMPLEMENTACIN DE FUNCIONES COMBINACIONALES


Los decodificadores y multiplexores pueden usarse para implementar funciones booleanas. Adems puede considerarse que los dispositivos lgicos programables introducidos en el Captulo 3
contienen bloques capaces de implementar funciones lgicas. En esta seccin discutiremos el
uso de decodificadores, multiplexores, memorias de slo lectura (ROMs), arrays lgicos programables (PLAs), arrays de lgica programable (PALs), y tablas de bsqueda para implementar
funciones lgicas combinacionales.

Empleando decodificadores
Un decodificador proporciona mini trminos de n variables de entrada. Puesto que cualquier
funcin booleana puede expresarse como una suma de mini trminos, uno puede usar un decodificador para generar los mini trminos y combinarlos con una puerta OR externa para implementar la funcin como una suma de mini trminos. De esta manera, cualquier circuito combinacional con n entradas y m salidas puede implementarse con un decodificador n a 2n y m
puertas OR.
El procedimiento para implementar un circuito combinacional mediante un decodificador y
puertas OR requiere expresar cada funcin booleana como una suma de mini trminos. Esta

FUNCIONES Y CIRCUITOS COMBINACIONALES

153

S0
S1

I0

PT
(S0  0)
PT
(S1  0)

I1

PT
(S0  1)
Y

I2

PT
(S0  0)
PT
(S1  1)

I3

PT
(S0  1)

FIGURA 4-18
Multiplexor 4 a 1 usando puertas de transmisin

forma puede obtenerse a partir una tabla de verdad o construyendo el Mapa de Karnaugh de
cada funcin. El decodificador se elige o disea de modo que genere todos los mini trminos de
las variables de entrada. Las entradas de cada puerta OR se conectan a las salidas del decodificador correspondientes a los minitrminos de la funcin. Este proceso se muestra en el siguiente
ejemplo.
EJEMPLO 4-6

Implementacin de un sumador binario con decodificadores y puertas OR

En el Captulo 1, vimos la suma binaria. La Tabla 4-8 da el valor del bit de suma S y el de
acarreo C para cada posicin en funcin de los bits X e Y de los operandos y el acarreo proveniente de la derecha Z.
De esta tabla de verdad se obtienen las funciones para este circuito combinacional, expresadas como suma de minitrminos:
S(X, Y, Z) % Gm(1, 2, 4, 7)
C(X, Y, Z) % Gm(3, 5, 6, 7)
Puesto que hay 3 entradas y un total de 8 mini trminos, necesitaremos un decodificador 3 a 8.
La implementacin se muestra en la Figura 4-19. El decodificador genera los 8 mini trminos
de las entradas X, Y y Z. La puerta OR para la salida S obtiene la suma lgica de los mini trminos 1, 2, 4 y 7. La puerta OR para la salida C obtiene la suma lgica de los minitrminos 3, 5, 6
y 7. El minitrmino 0 no se usa.

154

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 4-8
Tabla de verdad de un sumador de 1 bit
X

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
0
1
1
1

0
1
1
0
1
0
0
1

Una funcin con un mayor nmero de mini trminos necesitar una puerta OR con mayor
nmero de entradas. La negada de una funcin que tenga k mini trminos puede ser expresada
con 2k . k minitrminos. Si el nmero de minitrminos en una funcin F es mayor que 2k/2,
entonces la funcin negada F1 puede expresarse con un menor nmero de mini trminos. En tal
caso, resulta ms ventajoso emplear puertas NOR en lugar de puertas OR. La parte OR de la
puerta NOR genera la suma lgica de los mini trminos de F1 . La parte inversora de la puerta
NOR obtiene F.
El mtodo del decodificador puede emplearse para implementar cualquier circuito combinacional. Sin embargo, esta implementacin debe ser comparada con otras posibles implementaciones para determinar la mejor solucin posible. El mtodo del decodificador puede proporcionar la mejor solucin, especialmente si el circuito combinacional tiene algunas salidas
dependientes de las mismas entradas y cada funcin de salida se expresa mediante un nmero
pequeo de minitrminos.
Decodificador
3:8
0
Z

20

21

22

1
2
3
4
5
6
7

FIGURA 4-19
Implementacin de un sumador binario usando un decodificador

Empleando multiplexores
En la Seccin 4-5 aprendimos cmo implementar un multiplexor empleando un decodificador y
una puerta AND-OR m # 2. El decodificador del multiplexor genera los minitrminos de las
entradas de seleccin. La puerta AND-OR proporciona los circuitos de habilitacin que determinan qu minitrminos son conectados a la puerta OR, empleando las entradas de informacin (Ii) como seales habilitadoras. Si la entrada Ii es 1, el minitrmino mi es conectado a la

FUNCIONES Y CIRCUITOS COMBINACIONALES

155

puerta OR, y si la entrada Ii es 0, el minitrmino mi es sustituido por un 0. La asignacin de


valores aplicada a las entradas I proporciona un mtodo de implementacin de funciones booleanas de n variables empleando un multiplexor con n entradas de seleccin y 2n entradas de
datos, una por cada mini trmino. Adems, una funcin con m salidas puede incrementarse empleando la asignacin de valores en un multiplexor con vectores de informacin de m bits en
lugar de un nico bit individual, tal como ilustra el prximo ejemplo.
EJEMPLO 4-7 Implementacin de un sumador binario con multiplexores
Los valores para las salidas S y C de un sumador binario de 1 bit se dan en la tabla de verdad de
la Tabla 4-8 y se pueden generar empleando asignacin de valores a las entradas de informacin
de un multiplexor. Puesto que hay 3 entradas de seleccin y un total de ocho minitrminos,
necesitamos un multiplexor doble de 8 a 1 lneas para implementar las dos salidas, S y C. La
implementacin se basa en la tabla de verdad mostrada en la Figura 4-20. Cada par de valores,
como (0, 1) en (I1,1, I1,0), se toma directamente de la fila correspondiente de las ltimas dos
columnas de la tabla.
X
Y
Z
0
0
1
0
1
0
0
1
1
0
0
1
0
1
1
1

S2 Multiplexor
doble
S1
8:1
S0
I0,0
I0,1
I1,0
I1,1
I2,0
I2,1
I3,0
Y0
I3,1
Y1
I4,0
I4,1
I5,0
I5,1
I6,0
I6,1
I7,0
I7,1

S
C

FIGURA 4-20
Implementacin de un sumador binario de 1 bit con un doble multiplexor de 8 a 1

Hay otro mtodo ms eficiente que implementa una funcin booleana de n variables con un
multiplexor que tiene slo n . 1 entradas de seleccin. Las primeras n . 1 variables de la funcin se conectan a las entradas de seleccin del multiplexor. Las restantes variables de la
funcin se emplean como entradas de informacin. Si la ltima variable es Z, cada entrada de
datos del multiplexor ser Z, Z1 , 1 o 0. La funcin puede implementarse conectando directamente
las cuatro funciones bsicas de la Tabla 4-1 a las entradas de datos del multiplexor. El prximo
ejemplo muestra este procedimiento.
EJEMPLO 4-8 Implementacin alternativa con multiplexores de un sumador binario
Esta funcin puede implementarse con un multiplexor doble de 4 a 1, como muestra la Figura 4-21. El proceso de diseo puede ilustrarse considerando la suma S. Las dos variables X e Y

156

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

X
Y
Z
0
Z
Z
Z
Z
Z
1

S1 Multiplexor
doble
S0
4:1
I0,0
I0,1
Y0
I1,0
Y1
I1,1
I2,0
I2,1
I3,0
I3,1

S
C

FIGURA 4-21
Implementacin de un sumador binario de 1 bit con un multiplexor doble de 8 a 1

se aplican como lneas de seleccin en el siguiente orden: X se conecta a la entrada S1, e Y se


conecta a la entrada S0. A partir de la tabla de verdad se determinan los valores para las lneas
de entrada de la funcin. Cuando (X, Y) % 00, la salida S es igual a Z porque S % 0 cuando
Z % 0 y S % 1 cuando Z % 1. Esto requiere que la variable Z se aplique como informacin de
entrada I00. El funcionamiento del multiplexor es tal que, cuando (X, Y) % 00, la entrada de informacin I00 tiene un camino hacia la salida que hace que S sea igual a Z. De manera similar
podemos determinar las entradas necesarias para las lneas I10, I20 e I30 a partir de los valores de
S cuando (X, Y) sea 01, 10 y 11, respectivamente. Puede usarse una aproximacin similar para

determinar los valores para I01, I11, I21 e I31.


El procedimiento general para implementar cualquier funcin booleana de n variables con
un multiplexor con n . 1 entradas de seleccin y 2n.1 entradas de datos se expone en el siguiente ejemplo. Primero se pasa la funcin booleana a una tabla de verdad. Las n . 1 primeras
variables de la tabla se aplican como entradas de seleccin al multiplexor. Para cada combinacin de estas variables de seleccin, evaluamos la salida como una funcin de la ltima variable. Esta funcin puede ser 0, 1, la variable, o el complemento de la variable. Estos valores se
aplican a la entrada de datos apropiada. Este proceso se ilustra mediante el prximo ejemplo.

EJEMPLO 4-9 Implementacin con multiplexores de una funcin de 4 variables


Como segundo ejemplo, considere la implementacin de la siguiente funcin Booleana:
F(A, B, C, D) % Gm(1, 3, 4, 11, 12, 13, 14, 15)
Esta funcin se implementa con un multiplexor 8 # 1, como muestra la Figura 4-22. Para obtener el resultado correcto, las variables de la tabla de verdad se conectan a las entradas de seleccin S2, S1 y S0 en el orden en que aparecen en la tabla (es decir, tal que A se conecta a S2, B se
conecta a S1 y C se conecta a S0). Los valores de las entradas de datos vienen determinados por
la tabla de verdad. El nmero en la lnea de informacin se determina a partir de las combinaciones binarias de A, B y C. Por ejemplo, cuando (A, B, C) % 101, la tabla de verdad muestra
que F % D por lo que la variable D se aplica a la entrada de informacin I5. Las constantes
binarias 0 y 1 corresponden a dos valores fijos de seal. Recuerde que, de la Seccin 4-2, en los
esquemas lgicos estos valores constantes se reemplazaban por los smbolos de masa y alimentacin que aparecen en la Figura 4-2.

FUNCIONES Y CIRCUITOS COMBINACIONALES

A B C D

0 0 0 0
0 0 0 1

0
FD
1

0 0 1 0
0 0 1 1

0
FD
1

MULTIPLEXOR
8:1
S0

B
0 1 0 0
0 1 0 1

1
FD
0

S1

S2

0 1 1 0
0 1 1 1

0
F0
0

1 0 0 0
1 0 0 1

0
F0
0

1 0 1 0

1 0 1 1

1 1 0 0

1 1 0 1

1 1 1 0

1 1 1 1

FD

1
2
0

157

3
4
5

6
7

F1
F1

FIGURA 4-22
Implementacin de una funcin de 4 entradas con un multiplexor

Empleando memorias de slo lectura


En base a los principios sobre decodificadores y multiplexores tratados hasta ahora hay dos
aproximaciones para implementar memorias de solo lectura. Una aproximacin se basa en el
empleo de un decodificador y puertas OR. Insertando puertas OR en paralelo, una por cada salida de la ROM, para sumar los mini trminos de las funciones booleanas, somos capaces de genera cualquier circuito combinacional que deseemos. Las ROM pueden ser vistas como dispositivos que incluyen un decodificador y puertas OR dentro de una nica unidad. Cerrando las
conexiones de las entradas de una puerta OR para los mini trminos de la funcin, las salidas de
la ROM pueden programarse para representar las funciones booleanas de las variables de salida
de un circuito combinacional. Una solucin alternativa est basada en la asignacin de valores
fijos a un multiplexor de mltiples bits. Los valores Ii se emplean como seales de habilitacin
que determinan qu mini trminos estn conectados a las puertas OR del multiplexor. Esto se
ilustra en el Ejemplo 4-8 que equivale a una ROM de 3 entradas y 2 salidas. La programacin
de este enfoque ROM se realiza aplicando la tabla de verdad a las entradas de informacin del
multiplexor. Dado que el enfoque basado en un decodificador y puertas OR es simplemente un
modelo diferente, ste tambin, puede programarse usando la tabla de verdad para determinar
las conexiones entre el decodificador y las puertas OR. De esta manera, en la prctica, cuando
un circuito combinacional es diseado por medio de una ROM, no se disea necesariamente la
lgica ni se muestran las conexiones internas dentro de la unidad. Todo lo que el diseador tiene que hacer es especificar la ROM particular por su nombre y proporcionar su tabla de verdad.
La tabla de verdad da toda la informacin necesaria para programar la ROM. No es necesario
que acompae a la tabla ningn diagrama lgico interno. El Ejemplo 4-10 muestra este uso para
una ROM.

158

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EJEMPLO 4-10 Implementando un circuito combinacional con una ROM


Disee un circuito combinacional usando una ROM. El circuito acepta nmeros de 3 bits y genera un nmero de salida binario igual al cuadrado del nmero de entrada.
El primer paso del diseo es obtener la tabla de verdad del circuito combinacional. En la
mayora de los casos realizaremos una tabla de verdad parcial para la ROM, empleando determinadas propiedades en el clculo de las salidas de las variables. La Tabla 4-9 es la tabla de
verdad para el circuito combinacional. Se necesitan tres entradas y seis salidas para acomodar
todos los posibles nmeros binarios. Notemos como la salida B0 es siempre igual a la entrada
A0, por lo que no hay que generar B0 con la ROM. Es ms, la salida B1 es siempre 0, de modo
que esta salida es una constante conocida. Entonces slo es necesario generar cuatro salidas con
la ROM; las otras dos salidas ya estn obtenidas. El tamao mnimo para la ROM ha de ser de
3 entradas y cuatro salidas. Las tres entradas especifican ocho palabras; por lo que la ROM ha
de tener un tamao de 8 # 4. La Figura 4-23 muestra la implementacin de la ROM. Las tres
entradas especifican ocho palabras de cuatro bits cada una. El diagrama de bloques de la Figura
4-23(a) muestra las conexiones necesarias del circuito combinacional. La tabla de verdad de la
Figura 4-23(b) especifica la informacin necesaria para programar la ROM.
TABLA 4-9
Tabla de verdad para el circuito del Ejemplo 4-10
Entradas

Salidas

Decimal

A2

A1

A0

B5

B4

B3

B2

B1

B0

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
0
0
0
1
1

0
0
0
0
1
1
0
1

0
0
0
1
0
1
0
0

0
0
1
0
0
0
1
0

0
0
0
0
0
0
0
0

0
1
0
1
0
1
0
1

A2 A1 A0
B0
0
A0
A1

B1
B2

ROM 8  4

B3
B4

A2

B5
(a) Diagrama de bloques

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
4
9
16
25
36
49

B5 B4 B3 B2
0
0
0
0
0
0
1
1

0
0
0
0
1
1
0
1

0
0
0
1
0
1
0
0

0
0
1
0
0
0
1
0

(b) Tabla de verdad de la ROM

FIGURA 4-23
Implementacin con ROM del Ejemplo 4-10

FUNCIONES Y CIRCUITOS COMBINACIONALES

159

Los dispositivos ROM son muy empleados para implementar circuitos combinacionales
complejos directamente a partir de sus tablas de verdad. Son muy tiles para convertir desde un
cdigo, por ejemplo el cdigo Gray, a otro cdigo, como el BCD. Pueden generar operaciones
aritmticas complejas, tales como la multiplicacin o la divisin, y en general, se usan en aplicaciones que requieran un moderado nmero de entradas y un gran nmero de salidas.

Usando arrays lgicos programables


El PLA es un concepto muy similar al de la ROM, excepto que el PLA no proporciona la decodificacin de todas las variables, por tanto no genera todos los mini trminos. El decodificador
es sustituido por un array de puertas AND, cada una de las cuales puede ser programada para
generar cualquier producto de trminos de las variables de entrada. Los trminos producto se
conectan selectivamente a puertas OR, como en una ROM, para obtener las sumas de productos
de las funciones requeridas.
Este mapa de fusibles de un PLA puede especificarse en forma tabular. Por ejemplo, la tabla
de programacin que determina el funcionamiento del PLA de la Figura 4-24 se enumera en la
Tabla 4-10. La Tabla tiene tres secciones. La primera seccin enumera el nmero de los trminos producto. La segunda seccin especifica los caminos necesarios entre las entradas y las
puertas AND. La tercera seccin especifica los caminos entre las puertas AND y las puertas
OR. Para cada variable de salida, se indica con T (true-verdadero) o C (complemento), si la salida debe ser negada medante una puerta XOR. Los trminos producto enumerados a la izquierda
A

X X

AB

AC

X Fusible intacto
 Fusible abierto

X X

BC

ABC
X

C C B B A A
X

0
1
F1

F2

FIGURA 4-24
PLA con 3 entradas, 4 productos y 2 salidas

160

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 4-10
Tabla de programacin del PLA de la Figura 4-24
Entradas

AB1
AC
BC
A1 BC1

Salidas

Trmino
producto

(T)
F1

(C)
F2

1
2
3
4

1
1

1
1

1
1
0

1
1

1
1

no forman parte de la tabla; solo se ha incluido como referencia. Para cada trmino producto las
entradas se marcan con 1, 0 o . Si una variable aparece en el producto de trminos en su
forma no negada, su correspondiente variable de entrada se marca con 1. Si la variable en el
producto de trminos aparece complementada, la variable de entrada correspondiente estar
marcada como 0. Si la variable est ausente en el producto de trminos, se marcar con .
Los caminos entre las entradas y las puertas AND se especifican en la columna encabezada
como entradas de la tabla. Un 1 en la columna de entrada indica un circuito CERRADO desde
la variable de entrada hasta la puerta AND. Un 0 en la columna de entrada indica un circuito
CERRADO desde el complemento de la variable de entrada hasta la puerta AND. Un indica
un circuito ABIERTO tanto para la variable de entrada como para su complementaria. Se supone que un terminal ABIERTO desde una entrada hasta una puerta AND se comporta como un 1.
Los caminos entre las puertas AND y OR se especifican bajo la columna encabezada como
salidas. Las variables de salida se marcan con 1 para aquellos trminos producto que estn incluidos en la funcin. Cada trmino producto que presenta un 1 en su columna de salida necesita un camino CERRADO desde la salida de la puerta AND hasta la entrada de la puerta OR.
Aquellos trminos producto marcados con un , indican un circuito ABIERTO. Se supone que
un terminal abierto en la entrada de una puerta OR se comporta como un 0. Finalmente, una
salida T dicta que la otra entrada de la correspondiente puertas XOR se conecta a 0, y una C
especifica una conexin a 1.
El tamao del PLA se especifica mediante el nmero de entradas, el nmero de trminos
producto y el nmero de salidas. Un PLA tpico tiene 16 entradas, 48 trminos producto y 8
salidas. Para n entradas, k producto y m salidas, la lgica interna del PLA consiste en n buffersinversores, k puertas AND, m puertas OR y m puertas XOR. Existen 2n # k posibles conexiones
programables entre las entradas y el array de AND, k # n conexiones programables entre los
arrays AND y OR, y m conexiones programables asociadas a las puertas XOR.
En el diseo de un sistema digital mediante PAL no es necesario mostrar las conexiones
internas de la unidad, tal y como se ha hecho en la Figura 4-24. Lo nico que se necesita es la
tabla de programacin con la que programar dicho PLA para obtener la lgica requerida. Como
con una ROM, la PLA puede ser programable por mscara o en campo.
En la implementacin de un circuito combinacional con PLA, hay que prestar especial atencin a la obtencin del menor nmero de productos distintos, dado que de este modo puede
reducirse la complejidad del circuito. Se pueden disminuir los productos mediante simplificacin de la funcin booleana hasta lograr un mnimo nmero de trminos. Puesto que en un PLA
se dispone en todo momento de todas las variables de entrada, el nmero de literales en cada
trmino es menos importante. Sin embargo, es deseable para evitar literales extra que pueden

FUNCIONES Y CIRCUITOS COMBINACIONALES

161

causar problemas durante el test del circuito y que pueden reducir su velocidad. Tanto la forma
directa como la complementaria de cada funcin deben simplificarse para ver cul de ellas se
puede expresar con menos productos y cules contienen productos comunes a otras funciones.
Este proceso se muestra en el Ejemplo 4-11.

EJEMPLO 4-11 Implementando un circuito combinacional usando un PLA


Implemente las dos funciones booleanas siguientes con PLA:
F1(A, B, C) % Gm(0, 1, 2, 4)
F2(A, B, C) % Gm(0, 5, 6, 7)
Las dos funciones se simplifican con ayuda de los mapas de la Figura 4-25. Tanto las funciones
directas como sus complementarias se simplifican en forma de sumas de productos. Las combinaciones que dan el menor nmero de productos son:
F1 % AB ! AC ! BC
F2 % AB ! AC ! A1 B1 C1
La simplificacin proporciona cuatro productos distintos: AB, AC, BC y A1 B1 C1 . La tabla de programacin del PLA para esta combinacin es la mostrada en la figura. Observe que la salida F1
es la salida directa y se designa con una C en la tabla. Esto es as porque F1 1 se genera con el
circuito AND-OR y est disponible a la salida de la puerta OR. La puerta XOR complementa la
funcin F1 1 para producir la salida F1.
B

BC
01

11

10

A 1

BC

00

00

01

11

10

A 1

C
F1  A B  AC BC
F1  A B  AC  BC

C
F2  AB  AC A B C
F2  AC  AB A B C

Tabla de programacin del PLA


Salidas
Trmino Entradas (C) (T)
producto A B C F1 F2
AB
AC
BC
AB C

1
2
3

1 1
1 1
1 1

1
1
1

1
1

0 0 0

FIGURA 4-25
Solucin al Ejemplo 4-11

162

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Usando arrays de lgica programable


Al disear con un dispositivo PAL, las funciones booleanas deben simplificarse para encajar en
cada seccin, como se ilustra en el PAL de ejemplo de la Figura 4-26. Al contrario de como
ocurra con el PLA, un producto no puede compartirse entre dos o ms puertas OR. Por ello cada
funcin debe simplificarse por s misma, sin tener en cuenta los productos comunes. El nmero de
productos en cada seccin es fijo, y si el nmero de trminos de la funcin es demasiado grande,
puede ser necesario usar dos o ms secciones para implementar la funcin booleana. En tal caso,
los trminos comunes pueden ser tiles. Este proceso se ilustra en el Ejemplo 4-12.
Entradas de las puertas AND
Trmino
producto

A A B B C C D D W W
1

X
W

X X

A
4

X
Todos los fusibles intactos
(siempre  0)

B
7

X X

8
9

X
X

C
10
11
12

X
X

X
X

X X
X Fusible intacto
 Fusible abierto

D
A A B B C C D D W W

FIGURA 4-26
Mapa de conexiones de una PAL4 para el Ejemplo 4-12

FUNCIONES Y CIRCUITOS COMBINACIONALES

163

EJEMPLO 4-12 Implementacin de un circuito combinacional usando un PAL


Como un ejemplo de empleo de un dispositivo PAL para el diseo de un circuito combinacional, considere las funciones booleanas siguientes dadas en forma de suma de mini trminos:
W(A, B, C, D) % Gm(2, 12, 13)
X(A, B, C, D) % Gm(7, 8, 9, 10, 11, 12, 13, 14, 15)
Y(A, B, C, D) % Gm(0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 15)
Z(A, B, C, D) % Gm(1, 2, 8, 12, 13)
Simplificando las cuatro funciones a un nmero mnimo de trminos resultan las siguientes funciones booleanas:
W % ABC1 ! A1 B1 CD1
X % A ! BCD
Y % A1 B ! CD ! B1 D1
Z % ABC1 ! A1 B1 CD1 ! AC1 D1 ! A1 B1 C1 D
% W ! AC1 D1 ! A1 B1 C1 D
Observe que la funcin Z tiene cuatro productos. La suma lgica de dos de estos trminos es
igual a W. Entonces, usando W, es posible reducir el nmero de trminos para Z de cuatro a tres,
para que las funciones puedan encajar en el dispositivo PAL de la Figura 4-26.
La tabla de programacin de la PAL es similar a la tabla usada para el PLA, excepto que
slo necesitan ser programadas las entradas de las puertas AND. La Tabla 4-11 enumera la tabla
de programacin para la PAL para las cuatro funciones booleanas anteriores. La tabla se divide
en cuatro secciones con tres productos cada una, de acuerdo con el dispositivo PAL de la Figura
4-26. Las primeras dos secciones slo necesitan dos productos de trminos para llevar a cabo la
funcin booleana. Poniendo W en la primera seccin del dispositivo, la conexin de realimentacin desde F1 hasta el array permite reducir la funcin Z a tres trminos.
El mapa de conexin para el dispositivo PAL, como se ha especificado en la tabla de programacin, se muestra en la Figura 4-26. Por cada 1 o 0 de la tabla, marcamos la interseccin
correspondiente en el diagrama con el smbolo de una conexin cerrada. Para cada , marcamos como abiertas tanto las entradas directas como las complementarias. Si la puerta AND no
se usa, dejamos todas sus entradas como circuitos cerrados. Puesto que la entrada correspondiente recibe una seal y su complemento, tenemos el AA1 % 0, y la salida de la puerta AND
siempre es 0.

Empleando tablas de bsqueda


Los FPGAs y los dispositivos lgicos programables complejos (CPLDs), a menudo usan tablas
de bsqueda (LookUp Tables-LUTs) para implementar su lgica. Programar una nica funcin
de m entradas es igual que programar un ROM de una sla salida (es decir, la tabla de busqueda
simplemente almacena la tabla de verdad de la funcin). Una tabla de bsqueda de m entradas
puede implementar cualquier funcin de m o menos variables. Tpicamente, m % 4. La clave del
problema de la programacin de las tablas de bsqueda est en tratar con funciones de ms de m
variables de entrada. Tambin es importante la comparticin de las tablas de bsqueda entre
mltiples funciones. Estos problemas pueden tratarse empleando transformaciones lgicas de

164

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 4-11
Tabla de programacin del PAL4 del Ejemplo 4.12
Entradas de las puertas AND
Producto
terminado

Salidas

1
2
3

1
0

1
0

0
1

W % ABC1
! A1 B1 CD1

4
5
6

X%A
! BCD

7
8
9

1
0

Y % A1 B
! CD
!B1 D1

10
11
12

1
0

0
0

0
1

Z%W
! AC1 D1
!A1 B1 C1 D

varios niveles, principalmente la descomposicin y la extraccin. La meta de la optimizacin es


implementar la funcin o funciones usando el menor nmero posible de LUT, con la limitacin
de que cada LUT puede implementar funciones de, a lo sumo, m variables. Esto puede lograrse
encontrando un menor nmero posible de ecuaciones, cada una de m variables como mximo,
que implementan la funcin o funciones deseadas. Este proceso se ilustra para funciones de una
nica salida y de mltiples salidas con m % 4 en los siguiente ejemplos.

EJEMPLO 4-13 Implementacin con tablas de bsqueda de una funcin


de una nica salida
Implemente la siguiente funcin booleana empleando tablas de bsqueda:
F1(A, B, C, D, E, F, G, H, I) % ABCDE ! F1 GHID1 E1
El nmero de variables de entrada para una funcin se llama soporte, s, de la funcin. El soporte para F1 es s % 9. Aparentemente el nmero mnimo, k, de tablas de bsqueda necesario es
por lo menos 9/4 (es decir, k % 3). Adems, para una funcin de m-salidas, el nmero mnimo
de tablas de bsqueda para una funcin de una nica salida debe obedecer la relacin ms estricta mk n s ! k . 1, de modo que k debe satisfacer 4k n 9 ! k . 1. Resolviendo, k % 3, de
modo que buscaremos una descomposicin de F1 en tres ecuaciones, cada una con, como mximo, s % 4. Factorizando F1, obtenemos
F1 % (ABC)DE ! (F1 GHI)D1 E1

FUNCIONES Y CIRCUITOS COMBINACIONALES

165

Basndonos en esta ecuacin, F1 puede descomponerse en tres ecuaciones con s m 4:


F1(D, E, X1, X2) % X1DE ! X2D1 E1
X1(A, B, C) % ABC
X2(F, G, H, I) % F1 GHI
Cada una de estas tres ecuaciones puede implementarse mediante una LUT, dando una imple
mentacin ptima para F1.
EJEMPLO 4-14 Implementacin de una funcin de varias salidas con tablas de bsqueda
Implemente el siguiente par de funciones booleanas con tablas de bsqueda:
F1(A, B, C, D, E, F, G, H, I) % ABCDE ! F1 GHID1 E1
F2(A, B, C, D, E, F, G, H, I) % ABCEF ! F1 GHI
Cada una de estas funciones requiere un soporte s % 9. Por tanto se necesitan por lo menos tres
LUTs para cada funcin. Pero dos de las LUTs pueden compartirse, de modo que el nmero
mnimo de LUTs necesarias es k % 6 . 2 % 4. Factorizando F2 para poder compartir ecuaciones con la descomposicin de F1 del ejemplo anterior se obtiene:
F2 % (ABC)EF ! (F1 GHI)
Esto produce una descomposicin para F1 y F2:
F1(D, E, X1, X2) % X1DE ! X2D1 E1
F2(E, F, X1, X2) % X1EF ! X2
X1(A, B, C) % ABC
X2(F, G, H, I) % F1 GHI
En este caso, la extraccin requiere cuatro LUTs, el nmero mnimo. Por regla general no puede
garantizarse la localizacin de una descomposicin o extraccin que requiera el mnimo nmero
calculado de LUTs.

4-7 HDL REPRESENTACIN PARA CIRCUITOS


COMBINACIONALES VHDL
Dado que un HDL se emplea para describir y disear hardware, es muy importante tener presente cmo se escribe en ese lenguaje el hardware involucrado. Esto es particularmente crtico
si la descripcin HDL debe ser sintetizada. Por ejemplo, si se ignora el hardware que se generar, es muy fcil especificar una estructura de puertas enorme y compleja usando # (multiplicacin) cuando todo lo que se hubiera necesitado es una estructura mucho ms simple con tan slo
unas pocas puertas. Por esta razn, inicialmente hacemos hincapi en la descripcin detallada
del hardware con VHDL, y procedemos despus a descripciones ms abstractas de niveles superiores.
Los ejemplos seleccionados en este captulo son tiles para introducir VHDL como un medio alternativo para representar detalladamente circuitos digitales. Inicialmente mostramos las
descripciones estructurales VHDL que sustituyen al esquemtico para el decodificador 2 a 4 con

166

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

habilitacin de la Figura 4-10. Este ejemplo y otro que usa el multiplexor 4 a 1 de la Figura
4-14, ilustran muchos de los conceptos fundamentales del VHDL. Despus presentaremos descripciones VHDL de nivel funcional superior y descripciones VHDL de comportamiento para
estos circuitos que ilustrarn ms conceptos fundamentales de VHDL.
EJEMPLO 4-15 VHDL estructural para un decodificador 2 a 4
La Figura 4-27 muestra una descripcin VHDL para el circuito decodificador 2 a 4 de la Figura 4-10, en la pgina 143. Este ejemplo se usar para mostrar varias caractersticas generales del
VHDL as como la descripcin estructural de circuitos.
El texto entre dos - - y el final de lnea se interpreta como un comentario. As que la descripcin en la Figura 4-27 empieza con dos lneas de comentarios que identifican la descripcin y
su relacin con la Figura 4-10. Para ayudar en la discusin de esta descripcin se han agregado
comentarios, a la derecha, que proporcionan los nmeros de lnea. Como lenguaje que es,
VHDL tiene una sintaxis que describe de forma precisa las estructuras vlidas que pueden usarse. Este ejemplo ilustrar muchos aspectos de la sintaxis. En particular vase el uso de punto y
coma, comas y dos puntos en la descripcin.

FIGURA 4-27
Descripcin estructural en VHDL de un decodificador 2 a 4

FUNCIONES Y CIRCUITOS COMBINACIONALES

167

Inicialmente, saltamos las lneas 3 y 4 de la descripcin para centrarnos en la estructura


global. La lnea 5 comienza con la declaracin de una entidad que es la unidad fundamental
de un diseo VHDL. En VHDL por cada uno de los smbolos del esquemtico necesitamos darle un nombre al diseo y definir sus entradas y salidas. Esta es la funcin de la
declaracin de entidad. En VHDL, entity e is son palabras claves. Las palabras clave
que nosotros mostramos en tipo negrita tienen un significado especial y no pueden usarse
para nombrar objetos tales como las entidades, entradas, salidas o seales. La sentencia
entity decoder2to4wenable is declara que existe un diseo con el nombre
decoder 2to4wenable. VHDL no es sensible a las maysculas (es decir, los nombres y
palabras claves no se distinguen por estar escritas en letras maysculas o minsculas).
DECODER24WENABLE es lo mismo que Decoder24wEnable y decoder24wenable.
Lo siguiente, una declaracin de puertos en las lneas 6 y 7 se usa para definir las entradas y
salidas tal y como se hara en un smbolo de un esquemtico. Para el diseo del ejemplo, hay
tres seales de entrada: EN, A0 y A1. El modo in denota que estas son entradas. Igualmente, se
designan D0, D1, D2 y D3 como salidas mediante el modo out. VHDL es un lenguaje fuertemente-tipado, de modo que debe declararse el tipo de todas las entradas y salidas. En este caso,
el tipo es stdlogic que representa lgica estndar. Esta declaracin del tipo especifica los
valores que pueden aparecer en las entradas y en las salidas, as como las operaciones que pueden aplicarse a las seales. La lgica estndar, entre sus nueve valores, incluye los valores binarios usuales 0 y 1 y dos valores adicionales X y U. X representa un valor desconocido, U un
valor sin inicializar. Hemos escogido usar lgica normal, que incluye estos valores, por ser dichos valores empleados por las herramientas tpicas de la simulacin.
Para usar el tipo stdlogic, es necesario definir los valores y las operaciones. Por conveniencia, se emplea un package (paquete) consistente en cdigo VHDL precompilado. Normalmente, los packages se guardan en un directorio llamado library que es compartido por
algunos, o por todos, los usuarios de la herramienta. Para el stdlogic, el paquete bsico es
ieee.std logic 1164. Este paquete define los valores y las operaciones lgicas bsicas
para los tipos stdulogic y stdlogic. Para usar stdlogic, incluimos en la lnea 3
una llamada a la library (librera) de paquetes llamada ieee e incluimos en la lnea 4 conteniendo ieee.std logic1164.all para indicar que queremos usar todo (all) el paquete
stdlogic1164 de la librera ieee. Tambin queremos usar todo el paquete funcprims de
una librera adicional, lcdfvhdl, que contiene descripciones VHDL de puertas lgicas bsicas, biestables y latches. La librera lcdfvhdl est disponible en ASCII y puede copiarse para
este texto desde la pgina web del libro. Observe que las declaraciones de las lneas 3 y 4 estn
vinculadas con la entidad siguiente. Si se incluyera otra entidad que usase el tipo stdlogic y
los elementos del paquete funcprims, estas declaraciones deberan repetirse con anterioridad
a la declaracin de dicha entidad.
La declaracin de entidad acaba con la palabra clave end seguida por el nombre de la entidad. Hasta aqu, hemos discutido el equivalente en VHDL para un smbolo de un circuito.
DESCRIPCIN ESTRUCTURAL Ahora, queremos especificar la funcin del circuito. Una representacin particular de la funcin de una entidad se llama arquitectura (architecture) de la entidad. As, los contenidos de la lnea 10 declaran una arquitectura VHDL llamada structural 1
para la entidad decoder2to4wenable. A continuacin aparecen los detalles de la arquitectura. En este caso usamos una descripcin estructural que es equivalente al esquemtico para
el circuito dado en la Figura 4-10.
Primero, desde la lnea 11 hasta la 18, declaramos los tipos de puertas que se van a usar
como componentes de la descripcin. Puesto que estamos construyendo esta arquitectura a par-

168

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

tir de puertas, declaramos un inversor llamado NOT1 y una puerta AND de 2-entrada llamada
AND2 como componentes. Estos tipos de puertas son descripciones VHDL dentro del paquete
funcprims que contiene la entidad y la arquitectura para cada una de las puertas. El nombre y
la declaracin de puertos de un componente deben ser idnticos a aqullos de su entidad. Para
NOT1, port indica que in1 es el nombre de la entrada y out1 es el nombre de la salida. La
declaracin del componente para AND2 nombra in1 e in2 como las entradas y out1 como la salida.
Lo siguiente que necesitamos, antes de especificar la interconexin de las puertas, que es
equivalente a un netlist del circuito, es nombrar todos los nodos del circuito. Las entradas y
salidas ya tienen nombres. Los nodos interiores son las salidas de los dos inversores y las cuatro
puertas AND de ms a la izquierda de la Figura 4-10. Estos nodos de salida se declaran como
seales (signals) del tipo stdlogic. A0n y A1n son las seales para las salidas de los dos
inversores y N0, N1, N2 y N3 son las seales para las salidas de las cuatro puertas AND. Igualmente, todas las entradas y salidas declaradas como puertos son seales. En VHDL, hay seales
y variables. Las variables se evalan instantneamente. Por contra, las seales se evalan en
algn instante futuro de tiempo. Este tiempo puede ser tiempo fsico, como 2 ns despus de
ahora, o puede ser lo que se llama tiempo delta (delta time), en que una seal se evala un
tiempo delta despus del tiempo actual. El tiempo delta es equivalente a una cantidad infinitesimal de tiempo. Para el funcionamiento interno de los simuladores digitales tpicos es esencial
considerar algn retardo en la evaluacin de las seales y, por supuesto, este tiempo, basado en
el retardo de las puertas, modela de forma realista el comportamiento de los circuitos. Por simplicidad, tpicamente simularemos los circuitos para comprobar si su diseo es correcto, no para
detectar problemas en las prestaciones o retardos. Para estas simulaciones funcionales es ms
fcil igualar estos retardos a un tiempo delta. As, nuestras descripciones circuitales VHDL no
explicitarn ningn retardo, aunque pueden aparecer retardos en los bancos de prueba.
Tras la declaracin de las seales internas, el grueso de la arquitectura empieza con la palabra clave begin. El circuito descrito consiste en dos inversores y ocho puertas AND de 2 entradas. En la lnea 21 se coloca la etiqueta g0 al primer inversor e indica que el inversor es el
componente NOT1. Luego aparece un port map (mapeado de puertos) que asigna la entrada y
salida del inversor a las seales a las que se conectan. Esta forma particular de port map usa el
smbolo => con el puerto de la puerta a la izquierda y la seal a la que se conecta a la derecha.
Por ejemplo, la entrada g0 del inversor es A0 y la salida es A0n. Desde la lnea 22 hasta
la lnea 30 se etiquetan las nueve puertas restantes y se asignan las seales conectadas a sus
entradas y salidas. Por ejemplo, en la lnea 24, A0 y A1n son las entradas y N1 es la salida.
La arquitectura se completa con la palabra clave end seguida por su nombre structural 1.

EJEMPLO 4-16 VHDL estructural para un multiplexor 4 a 1


En Figura 4-28, la descripcin estructural del multiplexor de 4 a 1 de la Figura 4-14 ilustra dos
conceptos adicionales del VHDL: stdlogicvector y una aproximacin alternativa al mapeado
de los puertos.
En las lneas 6 y 7, en lugar de especificar S e I como entradas individuales del tipo
stdlogic, se especifican como vectores del tipo stdlogicvector. Para especificar vectores se
usa un ndice. Puesto que S consiste en dos seales de entrada numeradas 0 y 1, el ndice para S
ir desde 0 hasta 1 (0 to 1). Los componentes de este vector son S(0) y S(1). I consiste en
cuatro seales de entrada numeradas desde 0 hasta 3, por lo que el ndice ir desde 0 hasta 3
(0 to 3). Igualmente, en las lneas 24 y 25, especificamos las seales Sn, D, y N como vectores
del tipo stdlogicvector. D representa las salidas decodificadas, y N representa las cuatro seales internas entre las puertas AND y las puertas OR.

FUNCIONES Y CIRCUITOS COMBINACIONALES

169

FIGURA 4-28
Descripcin estructural VHDL de un multiplexor 4 a 1

Empezando en la lnea 27, observe cmo se referencian las seales del tipo stdlogicvector
empleando el nombre de la seal y el ndice entre parntesis. Tambin es posible referirse a un
subvector (por ejemplo, N(1 to 2) que se refiere a N(1) y N(2), las seales centrales de N).
Tambin, si se desea que el ndice mayor aparezca primero, VHDL usa una notacin algo diferente. Por ejemplo, signal N: stdlogicvector (3 downto 0) define el primer bit de la
seal N como N(3) y el ltimo como N(0).
En las lneas de la 27 a 37, se emplea un mtodo alternativo para especificar el mapeado de
los puertos para las puertas lgicas. En lugar de dar explcitamente los nombres de las entradas
y las salidas del componente, asumimos que estos nombres estn en el mapeado del puerto en el
mismo orden que el dado para el componente. Entonces podemos especificar implcitamente las
seales ligadas a estos nombres listndolas en el mismo orden que dichos nombres. Por ejem-

170

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

plo, en la lnea 29, Sn(1) aparece primero, y por tanto, se conecta a in1. Sn(0) aparece
segundo, por lo que se conecta a in2. Finalmente, D(0) se conecta a out1.
Por otra parte, esta descripcin VHDL es similar en estructura a la empleada para el decodificador 2 a 4, excepto que el esquemtico representado es el de la Figura 4-14.

DESCRIPCION DE FLUJO DE DATOS Una descripcin de flujo de datos (dataflow) describe un


circuito en trminos de su funcin en lugar de su estructura y se lleva a cabo mediante sentencias de asignacin concurrentes o sus equivalentes. Las sentencias de asignacin concurrentes se
ejecutan concurrentemente (es decir, en paralelo) siempre que alguno de los valores del lado
derecho de la sentencia vara. Por ejemplo, siempre que ocurra un cambio en un valor en el lado
derecho de una ecuacin booleana, se evala el lado izquierdo. El uso de descripciones de flujo
de datos compuesto por ecuaciones booleanas se ilustra en el Ejemplo 4-17.
EJEMPLO 4-17 Flujo de datos VHDL para un decodificador 2 a 4
La Figura 4-29 muestra una descripcin VHDL del circuito decodificador 2 a 4 de la Figura 4-10. Este ejemplo se usar para mostrar una descripcin de flujo de datos compuesta por
ecuaciones booleanas. La librera a usar y la declaracin de la entidad son idnticas a las de la
Figura 4-27, por lo que no se repetirn aqu. La descripcin del flujo de datos empieza en la
lnea 9. Las seales A0n y A1n se definen mediante asignaciones de seal que aplican el operador not a la seal de entrada A0 y A1, respectivamente. En la lnea 11, A0n, A1n y EN se
combinan con un operador and para formar D0. De forma similar se definen D1, D2 y D3 en las
lneas 12 a 14. Vase cmo esta descripcin de flujo de datos es mucho ms simple que la descripcin estructural dada en la Figura 4-27.

FIGURA 4-29
Descripcin de flujo de datos VHDL de un decodificador 2 a 4

En los prximos dos ejemplos, describimos el multiplexor 4 a 1 para ilustrar dos formas
alternativas de descripcin de flujo de datos: when-else y with-select.
EJEMPLO 4-18 VHDL de un multiplexor 4 a 1 usando when-else
En la Figura 4-30, se emplea, en vez de sentencias en forma de ecuaciones booleanas, la sentencia when-else para describir la arquitectura del multiplexor. Esta sentencia representa la tabla

FUNCIONES Y CIRCUITOS COMBINACIONALES

-- Multiplexor 4-a-1: descripcin VHDL de flujo de datos condicional


-- empleando when-else (ver la Tabla 4-7 para la tabla de funcionamiento)
library ieee;
se ieee.std_logic_1164.all;
entity multiplexer_4_to_1_we is
port (S : in std_logic_vector(1 downto 0);
I : in std_logic_vector(3 downto 0);
Y : out std_logic);
end multiplexer_4_to_1_we;
architecture function_table of multiplexer_4_to_1_we is
begin
Y <= I(0) when S = "00" else
I(1) when S = "01" else
I(2) when S = "10" else
I(3) when S = "11" else
'X';
end function_table;

-------------------

171
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

FIGURA 4-30
Descripcin VHDL de flujo de datos condicional VHDL de un multiplexor 4 a 1 usando when-else

de verdad de la funcin dada en la Tabla 4-7. Cuando S toma un determinado valor binario
entonces se asigna entrada I(i) concreta a la salida Y. Cuando el valor de S es 00, entonces
I(0) se asigna a Y. En otros casos se invoca el else y cuando el valor de S es 01, entonces
se asigna I(1) a Y, y as sucesivamente. En stdlogic, cada bit puede tomar 9 valores diferentes. As que el par de bits para S puede tomar 81 posibles valores, pero hasta ahora slo se han
especificado 4 de ellos. Con el fin de definir Y para los 77 valores restantes, se coloca la ltima
sentencia else seguida por X (desconocida). Esto asigna a Y el valor X, para cualquiera de los
77 valores restantes que se den en S. Este valor de la salida slo se genera durante la simula
cin, sin embargo, en el circuito real, Y siempre valdr 0 o 1.
EJEMPLO 4-19 VHDL de un multiplexor 4 a 1 usando with-select
Whith-select es una variacin del when-else, como se ilustra, para el multiplexor 4 a 1, en la
Figura 4-31. La expresin cuyo valor se emplear para tomar la decisin se coloca detrs de
with y antes de select. Los valores de la expresin que causan las distintas asignaciones siguen a when y se separan unos de otros mediante comas. En el ejemplo, S es la seal que determina cul ser el valor seleccionado para Y. Cuando S="00", I(0) se asigna a Y. Cuando
S="01", I(1) se asigna Y y as sucesivamente. 'X' se asigna a Y when others, donde others
(otros) representa las 77 combinaciones stdlogic no especificadas hasta ahora.

Observe que when-else permite tomar decisiones sobre varias seales distintas. Por ejemplo,
para el demultiplexor de la Figura 4-10, el primer when puede condicionarse en la entrada EN y
los siguientes when sobre la entrada S. Por contra, el with-select slo puede depender de una
nica condicin booleana (por ejemplo, EN o S, pero no ambas). Tambin es normal que en las
herramientas tpicas de sntesis, el when-else se implemente con una estructura lgica ms compleja, puesto que cada una de las decisiones depende no slo de la condicin que se est evaluando actualmente, sino tambin de todas las decisiones anteriores. Como consecuencia,
la estructura que se sintetiza tiene en cuenta este orden de prioridad, reemplazando la puerta

172

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

-- Multiplexor 4-a-1: descripcin VHDL de flujo de datos condicional


--- empleando with Select (ver la Tabla 4-7 para la tabla de funcionamiento) -library ieee;
--se ieee.std_logic_1164.all;
entity multiplexer_4_to_1_ws is
-port (S : in std_logic_vector(1 downto 0);
-I : in std_logic_vector(3 downto 0);
-Y : out std_logic);
-end multiplexer_4_to_1_ws;
--architecture function_table_ws of multiplexer_4_to_1_ws is
-begin
-with S select
-Y <= I(0) when "00",
-I(1) when "01",
-I(2) when "10",
-I(3) when "11",
--'X' when others;
end function_table_ws;
--

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

FIGURA 4-31
Descripcin VHDL de flujo de datos condicional de un multiplexor 4 a 1 usando with-select

4 # 2 AND-OR por una cadena de cuatro multiplexores 2 a 1. Por contra no hay ninguna dependencia directa entre las decisiones de with-select. With-select se implementa con un decodificador y la puerta 4 # 2 AND-OR.
Ya hemos cubierto muchos de los fundamentos de VHDL que se necesitan para describir
circuitos combinacionales. Continuaremos con ms VHDL presentando las formas de describir
circuitos aritmticos en el Captulo 5 y circuitos secuenciales en el Captulo 6.

4-8 REPRESENTACIN HDL DE CIRCUITOS


COMBINACIONALESVERILOG
Dado que un HDL se emplea para describir y disear hardware, es muy importante tener presente cmo se escribe en ese lenguaje el hardware involucrado. Esto es particularmente crtico
si la descripcin HDL debe ser sintetizada. Por ejemplo, si se ignora el hardware que se generar,
es muy fcil especificar una estructura de puertas enorme y compleja usando # (multiplicacin) cuando todo lo que se hubiera necesitado es una estructura mucho ms simple con tan slo
unas pocas puertas. Por esta razn, inicialmente hacemos hincapi en la descripcin detallada
del hardware con Verilog, y procedemos despus a descripciones ms abstractas de niveles superiores.
Los ejemplos seleccionados en este captulo son tiles para introducir Verilog como un medio alternativo para representar detalladamente circuitos digitales. Inicialmente mostramos las
descripciones estructurales Verilog que sustituyen al esquemtico para el decodificador 2 a 4
con habilitacin de la Figura 4-10. Este ejemplo y otro que usa el multiplexor 4 a 1 de la Figura 4-14, ilustran muchos de los conceptos fundamentales del Verilog. Despus presentaremos
descripciones Verilog de nivel funcional superior y descripciones Verilog de comportamiento
para estos circuitos que ilustrarn ms conceptos fundamentales de Verilog.

FUNCIONES Y CIRCUITOS COMBINACIONALES

173

EJEMPLO 4-20 Verilog estructural para un decodificador 2 a 4


La Figura 4-32 muestra una descripcin Verilog para el circuito decodificador 2 a 4 de la Figura
4-10, en la pgina 152. Este ejemplo se usar para mostrar varias caractersticas generales del
Verilog as como la descripcin estructural de circuitos.
El texto entre dos // y el final de lnea se interpreta como un comentario, as que la descripcin en la Figura 4-27 empieza con dos lneas de comentarios. Para comentarios de varias lneas
existe una notacin alternativa que emplea / y *:
/* decodificador 2 a 4 con habilitacin: descripcin estructural Verilog
// (ver Figura 4-10 para el diagrama lgico) */

Para ayudar en la discusin de esta descripcin Verilog se han agregado comentarios, a la derecha, que proporcionan los nmeros de lnea. Como lenguaje que es, Verilog tiene una sintaxis
que describe de forma precisa las estructuras vlidas que pueden usarse. Este ejemplo ilustrar
muchos aspectos de la sintaxis. En particular vase el uso de comas y puntos y comas en la
descripcin. Las comas ( , ) se emplean normalmente para separar elementos de una lista y los
puntos y comas ( ; ) para terminar las sentencias Verilog.
La lnea 3 comienza con la declaracin de un module (mdulo) que es la unidad fundamental de un diseo Verilog. El resto de esta descripcin, hasta el endmodule de la lnea 20, define
el mdulo. Note que no hay ; despus de endmodule. Al igual que en el smbolo de un esquemtico necesitamos darle un nombre al diseo y definir sus entradas y salidas. Esta es la funcin de
la declaracin de mdulo de la lnea 3 y de las sentencias input y output que siguen. En Verilog, module, input y output son palabras claves. Las palabras clave, que nosotros mostramos
en tipo negrita, tienen un significado especial y no pueden usarse para nombrar objetos tales
como los mdulos, entradas, salidas o cables. La sentencia module decoder2to4stv
declara que existe un diseo (o parte del diseo) con el nombre decoder2to4stv.

FIGURA 4-32
Descripcin estructural en Verilog de un decodificador 2 a 4

174

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Verilog es sensible a las maysculas (es decir, los nombres y palabras claves se distinguen
por estar escritas en letras maysculas o minsculas). DECODER24stv es distinto de
Decoder 24stv o decoder24stV.
Tal y como se hara con un smbolo de un esquemtico, nombramos las entradas y salidas
del decodificador en la declaracin del mdulo. Despus, se usar una declaracin de entradas
para definir qu nombres en la declaracin del mdulo son entradas. En el diseo del ejemplo
hay tres seales de entrada EN, A0, y A1. El hecho de que stas son las entradas se denota por el
uso de la palabra clave input . De manera similar se emplea una declaracin de salidas para
definir las salidas, que en este caso se nombran como D0, D1, D2 y D3 y se distinguen como
salidas por el empleo de la palabra clave output.
Las entradas y salidas as como otros tipos de seales binarias en Verilog pueden tomar uno
de cuatro valores distintos. Los dos valores obvios son 0 y 1. Se aade la x para representar
valores desconocidos y z para representar la alta impedancia en las salidas de 3 estados. Verilog
tambin tiene valores de fuerza que, cuando se combinan con los cuatro valores dados, proporcionan 120 posibles estados para las seales. Los valores de fuerza se usan en el modelado de
circuitos electrnicos, sin embargo, aqu no se tendrn en cuenta.

DESCRIPCIN ESTRUCTURAL Ahora, especificaremos la funcin del decodificador. En este caso, usamos una descripcin estructural que es equivalente al esquemtico mostrado en la Figura 4-10. Observe que el esquemtico est hecho con puertas. Verilog proporciona 14 puertas
primitivas como palabras claves. De stas, ahora slo estamos interesados en ocho: buf, not,
and, or, nand, nor, xor y xnor. buf y not tiene una nica entrada y todos los otros tipos de
puertas pueden tener de dos a cualquier nmero entero de entradas. buf es un buffer que implementa la funcin z % x, con x como la entrada y z como la salida. Es un amplificador de seales
electricas que puede usarse para conseguir un mayor fan-out o menores retardos. xor es la
puerta OR-exclusiva y xnor es la puerta del NOR-exclusiva, el complemento de la OR-exclusiva. En nuestro ejemplo, usaremos simplemente dos tipos de puertas, not y and como se muestra en las lneas 8 y 11 de la Figura 4-32.
Antes de especificar la interconexin de las puertas, que es lo mismo que el netlist del circuito, hay que nombrar todos los nodos del circuito. Las entradas y salidas ya tienen nombres.
Los nodos interiores son las salidas de los dos inversores y de las cuatro puertas AND ms a la
izquierda en la Figura 4-10. En la lnea 7, estos nodos se declaran como cables mediante el
empleo de la palabra clave wire. Los nombres A0n y A1n se emplean para las salidas del
inversor y N0, N1, N2 y N3 para las salidas de las puertas AND. En Verilog, wire es el tipo
predefinido para un nodo. El tipo predefinido para los puertos input y output es wire.
Siguiendo a la declaracin de las seales internas, el circuito descrito contiene dos inversores y ocho puertas AND de 2-entradas. Una declaracin consiste en un tipo de puerta seguido
por una lista de instancias de ese tipo de puerta separada por comas. Cada instancia consiste en
el nombre de la puerta y, entre parntesis, la salida y las entradas de la puerta separadas por
comas, con la salida colocada en primer lugar. La primera declaracin empieza en la lnea 8 con
el tipo de puerta not. Seguido est el inversor g0 con A0n como salida y A0 como entrada.
Para completar la declaracin, el inversor g1 se describe de forma similar. Desde la lnea 11
hasta la 19 se definen las ocho puertas restantes y se indican cmo estn conectadas las seales
a sus salidas y entradas. Por ejemplo, en la lnea 14, se define el caso de una puerta AND de 2
entradas nombrada como g5. Tiene como salida N2 y como entradas A0n y A1. El mdulo se

completa con la palabra clave endmodule.

FUNCIONES Y CIRCUITOS COMBINACIONALES

175

EJEMPLO 4-21 Verilog estructural de un multiplexor 4 a 1


En la Figura 4-33 se muestra la descripcin estructural del multiplexor 4 a 1 de la Figura 4-14,
que sirve para ilustrar el concepto Verilog de vector. En las lneas 4 y 5, en lugar de especificar
S e I como cables de un nico bit, se definen como cables de varios bits llamados vectores. Los
bits de un vector son nombrados mediante un rango de enteros. Este rango viene dado por los
valores mximo y mnimo. Especificando estos dos valores definimos la anchura del vector y
los nombres de cada uno de sus bits. En las lneas 4, 5,8 y 9 se ilustran los rangos de los vectores de la Figura 4-33. La lnea input [1:0] S indica que S es un vector con una anchura de
dos, con el bit de mayor peso numerado 1 y bit menos significativo numerado 0. Los componentes de S son S[1] y S[0]. La lnea input [3:0] I declara I como una entrada de 4 bits,
con el bit de mayor peso numerado 3 y bit de menor numerado 0. La lnea wire [0:3] D tambin es un vector de 4 bits que representa los cuatro cables internos entre las puertas AND de la
izquierda y de la derecha, pero en este caso, el bit ms significativo se numera 0 y el bit menos
significativo se numera 3. Una vez un vector se ha declarado, entonces pueden ser referidos el
vector entero o sus subcomponentes. Por ejemplo, S se refiere a los dos bits de S, y S[1] se
refiere al bit ms significativo de S. N se refiere a los cuatro bits de N y N[1:2] se refiere a los
bits centrales de N. Este tipo de referencias se usa para especificar entradas y salidas al instanciar las puertas, tal y como se aprecia en las lneas 11 a la 25. Por otra parte, esta descripcin
Verilog es similar en estructura a la del decodificador 2 a 4, excepto que el esquemtico representado es el de la Figura 4-14.

FIGURA 4-33
Descripcin estructural en Verilog de un multiplexor 4 a 1

176

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

DESCRIPCIN DE FLUJO DE DATOS Una descripcin de flujo de datos (dataflow) es una forma
de descripcin Verilog que no se basa en la estructura, sino en la funcin. Una descripcin de
flujo de datos se realiza a partir de sentencias de flujo de datos. Para la primera descripcin de
flujo de datos, se usarn ecuaciones Booleanas en lugar de un esquema lgico equivalente. Las
ecuaciones Booleanas se ejecutan en el paralelo siempre que cambie cualquiera de los valores
del lado derecho de las ecuaciones.
EJEMPLO 4-22 Flujo de datos Verilog de un decodificador 2 a 4
En la Figura 4-34, se da una descripcin de flujo de datos para el decodificador 2 a 4. Esta
descripcin en particular usa una sentencia de asignacin consistente en la palabra clave
assign seguida, en este caso, por una ecuacin booleana. En estas ecuaciones, usamos los operadores booleanos de bits dados por la Tabla 4-12. En la lnea 7 de la Figura 4-34, EN, ~A0 y
~A1 se combinan con un operador &. Esta combinacin & se asigna a la salida D0. Anlogamente, se definen D1, D2 y D3 en las lneas 8 a 10.
TABLA 4-12
Operadores Verilog para bits
Operacin

Operador

~
&

NOT
AND
OR
XOR
XNOR

8
^
^~ o ~^

FIGURA 4-34
Descripcin de flujo de datos Verilog de un decodificador 2 a 4

En los prximos tres ejemplos describimos el multiplexor 4 a 1 para ilustrar tres formas alternativas de descripcin de flujo de datos: las ecuaciones booleanas, las combinaciones binarias como condiciones, y decisiones binarias como condiciones.
EJEMPLO 4-23 Flujo de datos Verilog de un multiplexor 4 a 1
En la Figura 4-35, una nica ecuacin booleana para Y describe el multiplexor. Esta ecuacin
est en forma de suma-de-productos con & para AND y 8 para OR. Como variables se emplean
componentes de los vectores S e I.

FUNCIONES Y CIRCUITOS COMBINACIONALES

FIGURA 4-35
Descripcin de flujo de datos Verilog de un multiplexor 4 a 1 usando una ecuacin booleana

177

EJEMPLO 4-24 Verilog de un multiplexor 4 a 1 usando combinaciones


La descripcin de la Figura 4-36 es equivalente a la tabla de la funcin dada en la Tabla 4-7 de
la pgina 148 usando un operador condicional sobre las combinaciones binarias. Si el valor lgico entre parntesis es cierto, entonces el valor antes de : se asigna a la variable independiente,
en este caso, Y. Si el valor lgico es falso, entonces se asigna el valor que hay despus de :.
El operador de igualdad lgica se denota por ==. Suponga que consideramos la condicin
S==2'b00. 2'b00 representa una constante. El 2 especifica que la constante contiene dos dgitos, b que la constante se da en binario, y 00 proporciona el valor de la constante. As, la expresin tiene el valor verdadero si el vector S es igual a 00; de lo contrario, es falso. Si la expresin es verdadera, entonces I[0] se asigna a Y. Si la expresin es falsa, entonces se evala la
siguiente expresin conteniendo ?, y as sucesivamente. En este caso, para que una condicin
sea evaluada, todas las condiciones que la preceden deben evaluarse como falsas. Si ninguna de
las decisiones se evala como verdadera, entonces el valor por defecto 1'bx se asigna a Y. Recuerde que el valor por defecto x significa desconocido.

FIGURA 4-36
Descripcin Verilog de flujo de datos condicional de un multiplexor 4 a 1 usando combinaciones

EJEMPLO 4-25 Verilog de un multiplexor 4 a 1 usando decisiones binarias


La ltima forma de descripcin de flujo de datos se muestra en la Figura 4-37. Est basada en el
empleo de operadores condicionales para formar un rbol de decisin que se corresponda con

178

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

una expresin booleana factorizada. En este caso, si S[1] es 1, entonces S[0] se evala para
determinar si a Y se asigna I[3] o I[2]. Si S[1] es 0, entonces S[0] se evala para determinar
si a Y se asigna I[1] o I[0]. Para una estructura regular como un multiplexor, esta aproximacin basada en decisiones de dos caminos (binarias) obtiene una expresin muy simple para la
descripcin del flujo de datos.

FIGURA 4-37
Descripcin Verilog de flujo de datos condicional para un multiplexor 4 a 1 usando decisiones binarias

Esto completa la introduccin a Verilog. Continuaremos con ms Verilog presentando las


formas de describir los circuitos aritmticos en el Captulo 5 y los circuitos secuenciales en el
Captulo 6.

4-9 RESUMEN DEL CAPTULO


En este captulo se han tratado varios tipos de circuitos combinacionales, denominados frecuentemente bloques funcionales y que se usan para disear circuitos ms grandes. Se introdujeron
circuitos bsicos que llevan a cabo funciones de una sola variable. Se ha tratado el diseo de
decodificadores que activan una de sus varias lneas de salida en respuesta a un cdigo de entrada. Los codificadores, a la inversa de los decodificadores, generan un cdigo asociado a la lnea
activa de un conjunto de lneas de entrada. Se ha ilustrado el diseo de multiplexores que toman
datos aplicados a la entrada seleccionada y los entregan a la salida.
Se ha abordado el diseo de circuitos lgicos combinacionales usando decodificadores, multiplexores, y lgica programable. En combinacin con puertas OR, los decodificadores proporcionan una aproximacin sencilla, basada en mini trminos, para realizar circuitos combinacionales. Se han estudiado procedimientos para implementar cualquier funcin booleana de n
entradas a partir de un multiplexor n a 1 o a partir de un inversor y un multiplexor (n . 1) a 1.
Las memorias ROM pueden programarse para que contengan tablas de verdad. PLAs y PALs
pueden programarse mediante tablas de programacin especializadas. La descomposicin y
extraccin lgica de mltiples niveles del Captulo 2 permite el mapeado de ecuaciones combinacionales para su implementacin mediante tablas de bsqueda.
Las ltimas dos secciones del captulo introdujeron la descripcin de circuitos combinacionales en VHDL y Verilog. Cada uno de los HDLs se ilustr mediante descripciones a nivel
estructural, funcional, y de comportamiento para varios bloques funcionales presentados con anterioridad en el captulo.

FUNCIONES Y CIRCUITOS COMBINACIONALES

179

REFERENCIAS
1. MANO, M. M.: Digital Design, 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 2002.
2. WAKERLY, J. F.: Digital Design: Principles and Practices, 3rd ed. Englewood Cliffs, NJ:
Prentice Hall, 2000.
3. High-Speed CMOS Logic Data Book. Dallas: Texas Instruments, 1989.
4. IEEE Standard VHDL Language Reference Manual. (ANSI/IEEE Std 1076-1993; revision
of IEEE Std 1076-1987). New York: The Institute of Electrical and Electronics Engineers,
1994.
5. SMITH, D. J.: HDL Chip Design. Madison, AL: Doone Publications, 1996.
6. PELLERIN, D. and D. TAYLOR: VHDL Made Easy! Upper Saddle River, NJ: Prentice Hall
PTR, 1997.
7. STEFAN, S. and L. LINDH: VHDL for Designers. London: Prentice Hall Europe, 1997.
8. YALAMANCHILI, S.: VHDL Starters Guide. Upper Saddle River, NJ: Prentice Hall, 1998.
9. IEEE Standard Description Language Based on the Verilog(TM) Hardware Description
Language (IEEE Std 1364-1995). New York: The Institute of Electrical and Electronics
Engineers, 1995.
10. PALNITKAR, S.: Verilog HDL: A Guide to Digital Design and Synthesis. Upper Saddle River, NJ: SunSoft Press (A Prentice Hall Title), 1996.
11. BHASKER, J.: A Verilog HDL Primer. Allentown, PA: Star Galaxy Press, 1997.
12. THOMAS, D., and P. MOORBY: The Verilog Hardware Description Language 4th ed. Boston: Kluwer Academic Publishers, 1998.
13. CILETTI, M.: Modeling, Synthesis, and Rapid Prototyping with the Verilog HDL, Upper
Saddle River, NJ: Prentice Hall, 1999.

PROBLEMAS
El smbolo (!) indica problemas ms avanzados y el asterisco (*) indica que la solucin se
puede encontrar en el sitio web del libro: http://www.librosite.net/Mano.
4-1. *(a) Dibuje un diagrama que implemente la funcin constante F % (F7, F6, F5, F4, F3,
F2, F1, F0) % (1, 0, 0, 1, 0, 1, 1, 0) usando los smbolos de masa y alimentacin de
la Figura 4-2(b).
(b) Dibuje un diagrama que implemente la funcin G % (G7, G6, G5, G4, G3, G2, G1,
G0) % (A, A1 , 0, 1, A1 , A, 1, 1) usando las entradas 1, 0, A y A1 .
4-2. (a) Dibuje un diagrama que implemente la funcin F % (F7, F6, F5, F4, F3, F2, F1,
F0) % (1, 0, A, A1 , A1 , A, 0, 1), usando los smbolos de masa y tensin de alimentacin
de la Figura 4-2(b) y el cable y el inversor de la Figura 4-2(c) y 4-2(d).
(b) Dibuje un diagrama que implemente la funcin G % (G7, G6, G5, G4, G3, G2, G1,
G0) % (F3, F1 2, 0, 1, F1 1, F0, 1, 1), usando los smbolos de masa y tensin de alimentacin y los componentes de vector F.
4-3. (a) Dibuje un diagrama que implemente G % (G7, G6, G5, G4, G3, G2, G1, G0) % (F11,
F10, F9, F8, F3, F2, F1, F0).
(b) Dibuje una implementacin sencilla de H % (H7, H6, H5, H4, H3, H2, H1, H0) % (F3,
F2, F1, F0, G3, G2, G1, G0).

180

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

4-4. Un sistema de seguridad domstico tiene un interruptor principal que se usa para habilitar
una alarma, luces, cmaras de video, y una llamada a la polica local en el caso de que
uno o ms de seis juegos de sensores detecte a un intruso. Las entradas, salidas, y las
operaciones de habilitacin lgicas se especifican a continuacin:
Entradas:
Si, i % 0, 1, 2, 3, 4, 5 - seales de seis juegos de sensores (0 - detectado intruso,
1 - ningn intruso)
P - el interruptor principal (0 - sistema de seguridad encendido, 1 - sistema de seguridad apagado)
Salidas:
A - alarma (0 - alarma encendida, 1 - alarma apagada)
L - luces (0 - luces encendidas, 1 - luces apagadas)
V - cmaras de video (0 - cmaras apagadas, 1 - cmaras encendidas)
M - llamada a la polica (0 - no llamar, 1 - llamar)
Funcionamiento:
Si uno o ms de los juegos de sensores descubre un intruso y el sistema de seguridad
esta encendido, entonces todas las salidas estn activadas. De lo contrario, todas las
salidas estarn apagadas.
Encuentre la implementacin con puertas AND, OR e inversores de este circuito de habilitacin que minimiza el nmero total de entradas de puertas.
4-5. Disee un decodificador 4 a 16 a partir de dos decodificadores de 3 a 8 y 16 puertas AND
de 2-entradas.
4-6. Disee un decodificador 4 a 16 con habilitacin usando cinco decodificadores 2 a 4 como
el de la Figura 4-10.
4-7. *Disee un decodificador 5 a 32 usando dos decodificadores 3 a 8 y 32 puertas AND de 2
entradas.
4-8. Se va a disear un decodificador especial 4 a 6. Los cdigos de la entrada son desde 000
hasta 101. Para un cdigo dado, la salida Di, con i igual al equivalente decimal del cdigo, es 1 y todas las dems salidas son 0. Disee el decodificador empleando un decodificador 2 a 4, un decodificador 1 a 2, y seis puertas AND de 2-entradas, tal que las salidas
de todos los decodificadores se usen por lo menos una vez.
4-9. Dibuje el diagrama lgico detallado de un decodificador 3 a 8 que slo use puertas NOR
y NOT. Incluya una entrada de habilitacin.
4-10. *Disee un codificador con prioridad de 4 entradas con las entradas y salidas como los
dados en la Tabla 4-5, pero en el que la entrada D0 tiene la prioridad ms alta y la entrada D3 tiene la prioridad ms baja.
4-11. Obtenga la tabla de verdad de un codificador con prioridad de decimal a binario.
4-12. (a) Disee un multiplexor 8 a 1 a partir de un decodificador 3- a-8 y una puerta 8 # 2
AND-OR.
(b) Repita la parte (a), usando dos multiplexores 4 a 1 y un multiplexor 2 a 1.
4-13. Disee un multiplexor 16 a 1 a partir de un decodificador 4 a 16 y una puerta 16 # 2
AND-OR.

FUNCIONES Y CIRCUITOS COMBINACIONALES

181

4-14. Disee un multiplexor doble 8 a 1 a partir de un decodificador 3 a 8 y dos puertas 8 # 2


AND-OR.
4-15. Disee un multiplexor doble 4 a 1 a partir de un decodificador 2 a 4 y ocho buffers de
3 estados.
4-16. Disee un multiplexor 8 a 1 a partir de puertas de transmisin.
4-17. Construya un multiplexor 10 a 1 con un decodificador 3 a 8, un decodificador 1 a 2, y
una puerta 10 # 3 AND-OR. Los cdigos de seleccin del 0000 al 1001 deben aplicarse
directamente a las entradas decodificadoras sin lgica aadida.
4-18. Construya un multiplexor cudruple 9 a 1 con solo cuatro multiplexores 8 a 1 y un multiplexor cudruple 2 a 1. Los multiplexores deben interconectarse y las entradas deben
etiquetarse de modo que cdigos de seleccin desde 0000 hasta 1000 puedan aplicarse
directamente a las entradas de seleccin del multiplexor sin lgica aadida.
4-19. *Construya un multiplexor 15 a 1 con dos multiplexores 8 a 1. Interconecte los dos multiplexores y etiquete las entradas de modo que se minimice la lgica adicional necesaria
para los cdigos de seleccin 0000 hasta 1110.
4-20. Reordene la tabla de verdad condensada del circuito de la Figura 4-10, y verifique que
el circuito puede funcionar como un demultiplexor.
4-21. Un circuito combinacional se define por las siguientes tres funciones booleanas:
F1 % X ! Z ! XYZ
F2 % X ! Z ! X1 YZ
F3 % XY1 Z ! X ! Z
Disee el circuito con un decodificador y puertas OR.
4-22. Un circuito combinacional se especifica por las siguientes tres funciones booleanas:
F1(A, B, C) % Gm(0, 3, 4)
F2(A, B, C) % Gm(1, 2, 7)
F3(A, B, C) % FM(0, 1, 2, 4)
Implemente el circuito con un decodificador y puertas OR.
4-23. Implemente un sumador completo con un multiplexor doble 4 a 1 y un nico inversor.
4-24. Implemente la funcin booleana siguiente con un multiplexor 8 a 1 y un nico inversor
con la variable D como entrada:
F(A, B, C, D) % Gm(2, 4, 6, 9, 10, 11, 15)
4-25. *Implemente la funcin booleana
F(A, B, C, D) % Gm(1, 3, 4, 11, 12, 13, 14, 15)
con un multiplexor 4 a 1 y puertas. Conecte las entradas A y B a las lneas de seleccin.
Las entradas necesarias para las cuatro lneas de datos sern funcin de las variables C y
D. Los valores de estas variables se obtienen expresando F como una funcin de C y D

182

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

para cada uno de los cuatro casos cuando AB igual 00, 01, 10, y 11. Estas funciones
implementarse conpuertas.
4-26. Repita el Problema 4-25 usando dos decodificadores 3 a 8 con habilitacin, un inversor,
y puertas OR con un fan-in mximo de 4.
4-27. Dado un chip ROM de 256 # 8 con entrada de habilitacin, muestre las conexiones externas necesarias para construir una ROM de 1 K # 16 con ocho chips, un decodificador
y puertas OR.
4-28. *La ROM de 32 # 6, junto con la lnea 20, mostrada en la Figura 4-38 convierte un
nmero binario de 6 bits en su correspondiente nmero de 2 dgitos BCD. Por ejemplo,
el binario 100001 se ha convertido a BCD 011 0011 (decimal 33). Especifique la tabla
de verdad de la ROM.
20

21

I1

22

I2

23

I3

24

I4

25

D1

100

D2
ROM
32  6

I5

D3
D4
D5

101

D6

FIGURA 4-38
Convertidor binario a decimal con ROM

4-29. Especifique el tamao de una ROM (nmero de palabras y nmero de bits por palabra)
que almacena la tabla de verdad para los siguientes componentes combinacionales:
(a) Un sumador-restador de 8 bits con Cin y Cout.
(b) Un multiplicador binario que multiplica dos nmeros del 8-bits.
(c) Un conversor de cdigo BCD a binario para nmeros de 4 dgitos.
4-30. Obtenga la tabla de verdad para una ROM de 8 # 4 que implementa las cuatro funciones booleanas siguientes:
A(X, Y, Z) % Gm(0, 1, 2, 6, 7)
B(X, Y, Z) % Gm(2, 3, 4, 5, 6)
C(X, Y, Z) % Gm(2, 6)
D(X, Y, Z) % Gm(1, 2, 3, 5, 6, 7)
4-31. Obtenga la tabla de programacin del PLA para las cuatro funciones booleanas listadas
en el Problema 4-30. Minimice el nmero de productos. Asegrese de intentar compartir
trminos de productos entre funciones que no son implicantes primos de funciones individuales y considere el uso de salidas complementarias (C).
4-32. Calcule la tabla de programacin del PLA para un circuito combinacional que obtiene el
cuadrado de un nmero de 3 bits. Minimice el nmero productos.

FUNCIONES Y CIRCUITOS COMBINACIONALES

183

4-33. Enumere la tabla de programacin del PLA para un conversor de cdigo BCD a exceso3.
4-34. *Repita el Problema 4-33 usando un dispositivo PAL.
4-35. La siguiente es la tabla de verdad de un circuito combinacional de tres-entradas y cuatro-salidas. Obtenga la tabla de programacin del PAL para el circuito y marque los fusibles a fundir en un diagrama de la PAL similar al mostrado en Figura 4-26.
Entradas

Salidas

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
1
0
1
0
1
0

1
1
0
1
0
0
1
1

0
1
1
0
1
0
1
1

0
1
1
1
0
1
0
1

Todos los archivos HDL para circuitos referidos en los restantes problemas estn disponibles en
ASCII para su simulacin y edicin en la pgina web del libro. Para los problemas que piden
simulacin se necesita un compilador/simulador de VHDL o Verilog. En cualquier caso, siempre se pueden escribir las descripciones HDL de muchos problemas sin necesidad de compilar o
simular.
4-36. Compile y simule el decodificador 2 a 4 con habilitacin de la Figura 4-27 para
la secuencia 000, 001, 010, 011, 100, 101, 110, 111 en (En, A0, A1). Verifique que
el circuito funciona como un decodificador. Primero necesitar compilar la librera
lcdfvhdl.funcprims que se usa en la simulacin.
4-37. Vuelva a escribir en VHDL el decodificador 2 a 4 dado en la Figura 4-27 que usa (1) la
notacin stdlogicvector en lugar de la notacin del stdlogic para A y Dn y (2)
especificacin implcita de los nombres de las entradas y salidas de los componentes por
su orden en el paquete funcprims de la librera lcdfvhdl dado en el sitio web del
libro. Vase la Figura 4-28 y el texto que la acompaa para aclarar estos conceptos.
Compile y simule el archivo resultante como en el Problema 4-36.
4-38. Compile y simule el multiplexor 4 a 1 de la Figura 4-28 para las 16 combinaciones de
00, 10, 01, 11 en S y 1000, 0100, 0010, 0001 en D. Primero necesitar compilar la librera lcdfvhdl.func prims que se usa en la simulacin. Verifique que el circuito
funciona como un multiplexor.
4-39. *Encuentre un diagrama lgico que se corresponda al VHDL de la descripcin estructural de la Figura 4-39. Observe que las entradas complementadas no estn disponibles.
4-40. Empleando la Figura 4-28 como punto de partida escriba una descripcin estructural del
circuito de la Figura 4-40 en VHDL. Sustituya X, Y y Z por X(0:2). Consulte el paquete
funcprims de la librera lcdfvhdl para ms informacin sobre los diversos compo-

184

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

-- Circuito combinacional 1: descripcin VHDL estructural


library ieee, lcdf_vhdl;
se ieee.std_logic_1164.all, lcdf_vhdl.func_prims.all;
entity comb_ckt_1 is
port(x1, x2, x3, x4 : in std_logic;
f : out std_logic);
end comb_ckt_1;
architecture structural_1 of comb_ckt_1 is
component NOT1
port(in1: in std_logic;
out1: out std_logic);
end component;
component AND2
port(in1, in2 : in std_logic;
out1: out std_logic);
end component;
component OR3
port(in1, in2, in3 : in std_logic;
out1: out std_logic);
end component;
signal n1, n2, n3, n4, n5, n6 : std_logic;
begin
g0: NOT1 port map (in1 => x1, out1 => n1);
g1: NOT1 port map (in1 => n3, out1 => n4);
g2: AND2 port map (in1 => x2, in2 => n1,
out1 => n2);
g3: AND2 port map (in1 => x2, in2 => x3,
out1 => n3);
g4: AND2 port map (in1 => x3, in2 => x4,
out1 => n5);
g5: AND2 port map (in1 => x1, in2 => n4,
out1 => n6);
g6: OR3 port map (in1 => n2, in2 => n5,
in3 => n6, out1 => f);
end structural_1;
FIGURA 4-39
VHDL para el Problema 4-39

nentes de la puerta. Compile funcprims y su VHDL, y simule su VHDL para las ocho
posibles combinaciones de la entrada, verificando la bondad de su descripcin.
X

Y
Z

FIGURA 4-40
Circuito para los Problemas 4-40, 4-43, 4-51 y 4-53

FUNCIONES Y CIRCUITOS COMBINACIONALES

185

4-41. Emplee la Figura 4-27 como punto de partida y escriba una descripcin estructural en
VHDL para el circuito de la Figura 4-41. Consulte el paquete funcprims de la librera
lcdfvhdl para ms informacin sobre los diversos componentes de la puerta. Compile
funcprims y su VHDL, y simule su VHDL para las 16 posibles combinaciones de la
entrada a fin de verificar la bondad de su descripcin.
D
X
C
B

FIGURA 4-41
Circuito para los Problemas 4-41 y 4-50

4-42. Encuentre un diagrama lgico que implemente la lgica mnima de dos niveles para la
descripcin VHDL de flujo de datos de la Figura 4-42. Observe que estn disponibles
las entradas complementadas.
-- Circuito combinacional 2: descripcin VHDL de flujo de datos
-library ieee;
se ieee.std_logic_1164.all;
entity comb_ckt_2 is
port(a, b, c, d, a_n, b_n, c_n, d_n: in std_logic;
f, g : out std_logic);
-- a_n, b_n, ... son las negadas de a, b, ... , respectivamente.
end comb_ckt_2;
architecture dataflow_1 of comb_ckt_2 is
begin
f <= b and (a or (a_n and c)) or (b_n and c and d_n);
g <= b and (c or (a_n and c_n) or (c_n and d_n));
end dataflow_1;
FIGURA 4-42
VHDL para el Problema 4-42

4-43. *Escriba una descripcin de flujo de datos en VHDL para el circuito de la Figura 4-40
usando una ecuacin booleana para la salida F.
4-44. !Escriba una descripcin de flujo de datos en VHDL para el codificador con prioridad
de la Figura 4-30 usando when else. Compile y simule su descripcin con un conjunto
de vectores de entrada adecuados para comprobar el correcto funcionamiento del circuito.
4-45. Escriba la descripcin de flujo de datos en VHDL para el multiplexor 8 a 1 de la Figu-ra
4-31 usando with select. Compile y simule de forma convincente su descripcin empleando un conjunto de vectores adecuado a la funcin del circuito.
4-46. *Compile y simule el decodificador 2 a 4 de la Figura 4-32 para la secuencia 000, 001,
010, 011, 100, 101, 110, 111 en (E, A0, A1). Verifique que el circuito funciona como un
decodificador.

186

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

4-47. Rescriba la descripcin Verilog dada en Figura 4-32 para el decodificador 2 a 4 empleando la notacin de vectores para las entradas, salidas, y cables. Vase la Figura 4-33
y el texto que la acompaa para recordar estos conceptos. Compile y simule el archivo
resultante como en el Problema 4-46.
4-48. Compile y simule el multiplexor 4 a 1 de la Figura 4-33 para las 16 combinaciones de
00, 10, 01, 11 en S y 1000, 0100, 0010, 0001 en D. Verifique que el circuito funciona
como un multiplexor.
4-49. *Encuentre un diagrama lgico que se corresponda con la descripcin estructural en
Verilog de la Figura 4-43. Observe que las entradas complementadas no estn disponibles.
// Circuito combinacional 1: descripcin Verilog estructural
module comb_ckt_1(x1, x2, x3, x4,f);
input x1, x2, x3, x4;
output f;
wire n1, n2, n3, n4, n5, n6;
not
go(n1, x1),
g1(n4, n3);
and
g2(n2, x2, n1),
g3(n3, x2, x3),
g4(n5, x3, x4),);
g5(n6, x1, n4),);
or
g6(f, n2, n5, n6),
endmodule
FIGURA 4-43
Verilog para el Problema 4-49

4-50. Emplee la Figura 4-32 como punto de partida y escriba una descripcin estructural del
circuito de la Figura 4-41 usando Verilog. Compile y simule su Verilog para las 16 posibles combinaciones de la entrada a fin de verificar la bondad de su descripcin.
4-51. Emplee la Figura 4-33 como punto de partida y escriba una descripcin estructural del
circuito de la Figura 4-40 en Verilog. Reemplace X, Y, y Z por input [2:0] X. Compile
y simule su Verilog para las ocho posibles combinaciones de la entrada a fin de verificar
la bondad de su descripcin.
4-52. Encuentre un diagrama lgico que implemente la lgica mnima de dos niveles para la
descripcin Verilog de flujo de datos de la Figura 4-44. Observe que estn disponibles
las entradas complementadas.
4-53. *Escriba la descripcin de flujo de datos en Verilog para el circuito de la Figura 4-40
usando una ecuacin booleana para la salida F y la Figura 4-35 como modelo.
4-54. Usando el concepto de flujo de datos condicional de la Figura 4-36 escriba una descripcin de flujo de datos Verilog para un multiplexor 8 a 1. Compile y simule su descripcin con un juego de vectores de entrada adecuado para la funcin del circuito.

FUNCIONES Y CIRCUITOS COMBINACIONALES

187

// circuito combinacional 2: flujo de datos Verilog


module comb_ckt_1 (a, b, c, d, a_n, b_n, c_n, d_n, f, g);
// a_n, b_n, ... son las negadas de a, b, ... , respectivamente.
input a, b, c, d, a_n, b_n, c_n, d_n;
output f, g;
assign f = b & (a |(a_n & c)) | (b_n & c & d_n);
assign g = b & (c | (a_n & c_n) | (c_n & d_n));
endmodule
FIGURA 4-44
Verilog para el Problema 4-52

4-55. !Escriba una descripcin de flujo de datos para el codificador con prioridad de la Figura 4-12 usando el concepto de decisin binaria de la Figura 4-37. Compile y simule su
descripcin con un juego de vectores de entrada adecuados a la funcionalidad del circuito.

CAPTULO

5
FUNCIONES Y CIRCUITOS
ARITMTICOS

n este captulo, el foco de atencin contina estando en los bloques funcionales, concretamente en una clase especial de bloques funcionales que realizan
operaciones aritmticas. Se introduce el concepto de circuito iterativo, realizado a partir de arrays de clulas combinacionales. Trataremos bloques diseados como arrays iterativos que realizan sumas, sumas y restas, y multiplicaciones. La simplicidad de estos circuitos aritmticos se logra empleando las representaciones en
complemento para los nmeros y la aritmtica basada en el complemento. Adems,
se introduce la contraccin de circuitos, que nos permitir disear nuevos bloques
funcionales. La contraccin supone aplicar asignacin de valores a las entradas de
los bloques existentes y la simplificacin de los circuitos resultantes. Estos circuitos
realizan operaciones tales como incrementar o decrementar un nmero o multiplicar
un nmero por una constante. Muchos de estos nuevos bloques funcionales se usan
para construir los bloques funcionales secuenciales del Captulo 7.
En el diagrama de la computadora genrica que se mostr al comienzo del Captulo 1, se emplean sumadores, sumadores-restadores, y multiplicadores en el procesador. Tambin se emplean, muy a menudo, incrementadores y decrementadores en
otros tantos componentes, en definitiva, los conceptos de este captulo se aplican a la
mayora de los componentes de la computadora genrica.

190 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

5-1 CIRCUITOS COMBINACIONALES ITERATIVOS


En este captulo, los bloques aritmticos se disean tpicamente para operar sobre vectores de
entrada binarios y producen vectores de salida binarios. Adems, la funcin implementada requiere, en numerosas ocasiones, que una misma funcin auxiliar se aplique a los bits de cada
posicin. De este modo, se puede disear un bloque funcional para la funcin auxiliar y entonces este bloque se podr usar repetidamente en cada posicin de bits (o par de bits del mismo
peso) del bloque aritmtico global a disear. A menudo habr una o ms conexiones para pasar
los valores entre las posiciones de bits adyacentes. Estas variables interiores son entradas o salidas de la funcin auxiliar, pero no son accesibles fuera del bloque aritmtico global. Los bloques de la funcin auxiliar se denominan clulas y la implementacin global es un array de
clulas. Con frecuencia, las clulas del array son idnticas, aunque no siempre ocurre as. Debido a la naturaleza repetitiva del circuito y a la asociacin de un vector de ndices a cada una de
las clulas del circuito, el bloque funcional global se denomina array iterativo. El empleo de
arrays iterativos, un caso especial de circuitos jerrquicos, es til en el manejo de vectores de
bits, por ejemplo, en un circuito que suma dos enteros binarios de 32 bits. Como mnimo, dicho
circuito tendra 64 entradas y 32 salidas. En consecuencia, confeccionar las tablas de verdad y
escribir las ecuaciones para el circuito entero queda fuera de nuestro alcance. Dado que los circuitos iterativos estn basados en clulas repetitivas, el proceso de diseo se simplifica considerablemente a partir de una estructura bsica que gua el diseo.
En la Figura 5-1 se muestra un diagrama de bloques para un circuito iterativo que maneja
dos vectores de n entradas y produce un vector de n salidas. En este caso, hay dos conexiones
laterales entre cada par de clulas del array, una lnea de derecha a izquierda y otra de izquierda
a derecha. Tambin existen conexiones opcionales, indicadas por lneas discontinuas, en los extremos derechos e izquierdos del array. Una serie arbitraria emplear tantas conexiones laterales
como necesite para un diseo en particular. La definicin de las funciones asociadas con tales
conexiones es muy importante en el diseo del array y de sus clulas. En particular, el nmero
de conexiones empleadas y sus funciones pueden afectar al coste y a la velocidad de un circuito
iterativo.
En la prxima seccin, definiremos las clulas para realizar sumas en posiciones individuales de bits y, a partir de ellas, definiremos un sumador binario como un array de clulas.
An1Bn1

Xn
Yn

Clula
n1

A1 B1

Xn1
Yn1

Cn1

X2
Y2

Clula
1

A0 B0

X1
Y1

C1

Clula
0

X0
Y0

C0

 FIGURA 5-1
Diagrama de bloques de un circuito iterativo

5-2 SUMADORES BINARIOS


Un circuito aritmtico es un circuito combinacional que realiza operaciones aritmticas como
suma, resta, multiplicacin, y divisin con nmeros binarios o con nmeros decimales en cdi-

FUNCIONES Y CIRCUITOS ARITMTICOS

191

go binario. Desarrollaremos los circuitos aritmticos mediante diseo jerrquico iterativo. Empezamos en el nivel ms bajo encontrando un circuito que realiza la suma de dos dgitos binarios. Esta simple suma consiste en cuatro posibles operaciones: 0 ! 0 % 0, 0 ! 1 % 1,
1 ! 0 % 1 y 1 ! 1 % 10. Las tres primeras operaciones producen una suma que necesita un nico bit para representarla, sin embargo, cuando los dos sumandos son iguales a 1, la suma binaria
requiere dos bits. Por ello, en este caso, el resultado se representa siempre por dos bits, el acarreo y la suma. El acarreo que se obtiene de la suma de dos bits se suma al prximo par de bits
ms significativos. Un circuito combinacional que realiza la suma de dos bits se denomina semisumador. Un circuito que realiza la suma de tres bits (dos bits significativos y un acarreo anterior) se denomina sumador completo. Los nombres de estos circuitos provienen del hecho de
que pueden emplearse dos semi-sumadores para implementar un sumador completo. El semi-sumador y el sumador completo son bloques bsicos de la aritmtica con que se disean otros
circuitos aritmticos.

Semi-sumador
Un semi-sumador es un circuito aritmtico que efecta la suma de dos dgitos binarios. El circuito tiene dos entradas y dos salidas. Las variables de entrada son los sumandos, y por las variables de salida se obtienen la suma y el acarreo. Asignamos los smbolos X e Y a las dos entradas y S (por Suma) y C (por aCarreo, o Carry) a las salidas. La tabla de verdad para el semisumador se muestra en la Tabla 5-1. La salida C slo es 1 cuando ambas entradas son 1. La
salida S representa el bit menos significativo de la suma. Las funciones booleanas para las dos
salidas, obtenidas fcilmente de la tabla de verdad, son:
S % X1 Y ! XY1 % X S Y
C % XY
 TABLA 5-1
Tabla de verdad del semi-sumador
Entradas

Salidas

0
0
1
1

0
1
0
1

0
0
0
1

0
1
1
0

El semi-sumador puede implementarse con una puerta OR exclusiva y una puerta AND, tal y
como se muestra en la Figura 5-2.
X
Y

 FIGURA 5-2
Diagrama lgico de un medio sumador

192 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Sumador completo
Un sumador completo es un circuito combinacional que efecta la suma aritmtica de tres bits
de entrada. Adems de las tres entradas, tiene dos salidas. Dos de las variables de entrada, denominadas como X e Y, representan los dos bits significativos a sumar. La tercera entrada, Z, representa el acarreo que procede de la posicin anterior menos significativa. Se necesitan dos
salidas porque la suma aritmtica de tres bits puede tomar valores entre 0 y 3, y el binario de 2
y de 3 necesita dos bits para su representacin. De nuevo, las dos salidas se designan por los
smbolos S para Suma y C para aCarreo (o Carry); la variable binaria S proporciona el valor del
bit de la suma, y de la variable binaria C se obtiene el acarreo de salida. La tabla de verdad del
sumador completo se lista en la Tabla 5-2. Los valores para las salidas se determinan a partir de
la suma aritmtica de los tres bits de entrada. Cuando todos los bits de las entradas son 0, las
salidas son 0. La salida S es igual a 1 cuando slo una entrada es igual a 1 o cuando las tres
entradas son iguales a 1. La salida C tiene un acarreo de 1 si dos o tres de las entradas son
iguales a 1. En la Figura 5-3 se muestran los Mapas de Karnaugh para las dos salidas del sumador completo. Las funciones simplificadas para las dos salidas en forma de suma de productos
son:
S % X1 Y1 Z ! X1 YZ1 ! XY1 Z1 ! XYZ
C % XY ! XZ ! YZ
 TABLA 5-2
Tabla de verdad del sumador completo
Entradas
X

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
0
1
1
1

0
1
1
0
1
0
0
1

YZ
00

01

11

YZ
10
1

0
X 1

Salidas

1
Z

S  XYZ  XYZ  XYZ  XYZ


XYZ

00

01

11

0
X 1

10

1
1

Z
C  XY  XZ YZ
 XY  Z(XY  XY)
 XY  Z(X  Y)

 FIGURA 5-3
Mapas de Karnaugh para un sumador completo

FUNCIONES Y CIRCUITOS ARITMTICOS

193

La implementacin a dos niveles requiere de siete puertas AND y dos puertas OR. Sin embargo,
el mapa para la salida S es idntico al de un generador de paridad impar, discutida con anterioridad en la Seccin 2-7. Adems, la funcin de salida C puede manipularse para incluir tres puertas OR exclusivas de X e Y. Las funciones booleanas resultantes para el sumador completo pueden expresarse en trminos de OR exclusivas como:
S % (X S Y) S Z
C % XY ! Z(X S Y)
El diagrama lgico para esta implementacin multinivel, consistente en dos semi-sumadores y
una puerta OR, se muestra en la Figura 5-4.
Semi sumador

Semi sumador

X
Y

C
Z

 FIGURA 5-4
Diagrama lgico de un sumador completo

Sumador binario con acarreo serie


Un sumador binario paralelo es un circuito digital que realiza la suma aritmtica de dos nmeros binarios empleando slo lgica combinacional. El sumador paralelo se construye a partir de
n sumadores completos en paralelo, donde todos los bits de ambos nmeros a sumar se presentan simultneamente en paralelo en las entradas para producir la suma. Los sumadores completos se conectan en cascada, con la salida del acarreo de un sumador completo conectada a la
entrada de acarreo del siguiente sumador completo. Dado que puede aparecer un acarreo a 1
cerca del bit menos significativo del sumador y propagarse a travs de una serie de muchos
sumadores completos hacia el bit ms significativo, el sumador paralelo se denomina sumador
con acarreo serie (en ingls ripple carry adder)1. La Figura 5-5 muestra la interconexin de
cuatro bloques sumadores completos para formar un sumador de 4 bits con acarreo serie. Los
bits del primer sumando A y los del segundo sumando B son designados mediante subndices en
orden creciente de derecha a izquierda, de modo que el subndice 0 denota el bit de menor peso.
Los acarreos se conectan en cadena a travs de los sumadores completos. El acarreo de entrada
del sumador pararelo es C0, y el acarreo de salida es C4. Un sumador de n bits con acarreo serie
requiere n sumadores completos, con cada salida de acarreo conectada a la entrada de acarreo
del siguiente sumador completo de orden inmediato superior. Por ejemplo, considere los dos
nmeros binarios A % 1011 y B % 0011. Su suma, S % 1110, se forma con un sumador completo de 4 bits con acarreo serie como sigue:

1 N. del T.: El trmino ripple, muchas veces traducido por rizado, hace referencia a cmo este bit a 1 se mueve haca los bits
ms significativos anlogamente al movimiento de la cresta de una ola. Ha parecido ms adecuado traducirlo por acarreo serie.

194 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

El acarreo de entrada para la pareja de bits menos significativa es 0. Cada sumador completo
recibe los bits correspondientes de A y B y la entrada de acarreo y genera el bit de suma S y la
salida de acarreo. El acarreo de salida de cada posicin es el acarreo de entrada de la prxima
posicin de orden superior, como se indica con las lneas de color.
El sumador de 4 bits es un ejemplo tpico de un componente digital que puede usarse como
un bloque. Puede emplearse en muchas aplicaciones que implican operaciones aritmticas. Observe que el diseo de este circuito por el mtodo usual, y puesto que el circuito presenta 9
entradas, requerira una tabla de verdad con 512 filas. Colocando directamente cuatro de los
sumadores completos conocidos en cascada, es posible obtener una aplicacin simple y directa
salvando este gran problema. ste es un ejemplo de la capacidad de los circuitos iterativos y la
reutilizacin de circuitos en el diseo.
B3

A3

FA

C4

S3

B2

C3

A2

FA

S2

B1

C2

A1

FA

B0

C1

S1

A0

FA

C0

S0

 FIGURA 5-5
Sumador de 4-bits con acarreo serie

Sumador con acarreo anticipado


El sumador con acarreo serie, aunque simple en el concepto, lleva implcito un gran retardo
debido a las muchas puertas que hay en el camino del acarreo: del bit menos significativo al bit
ms significativo. Para un diseo tpico, el camino de retardo ms largo a travs de un sumador
de n-bits con acarreo serie es 2n ! 2 retardos de puerta. As, para un sumador de 16 bits con
acarreo serie, el retardo es 34 retardos de puerta. Este retardo suele ser uno de los ms grandes
en un diseo tpico para computacin. Por ello se ha encontrado un diseo alternativo ms
atractivo, el sumador con acarreo anticipado (o carry lookahead adder). Este sumador es un
diseo prctico con un retardo reducido, aunque a costa de una mayor complejidad circuital. El
diseo para la generacin del acarreo se puede obtener mediante una transformacin del diseo
de acarreo serie consistente en sustituir la lgica del acarreo de los grupos fijos de bits del sumador reducida a lgica de dos niveles. La transformacin para un grupo sumador de 4-bits se
muestra en la Figura 5-6.

FUNCIONES Y CIRCUITOS ARITMTICOS

PFA

S3

G3

G
B2

A3

B3

C3

S2

G2

A2

B1

PFA

P3

A1

B0

PFA

P2

C2

195

S1

G1

A0

PFA

P1

C1

S0

G0

P0

C4
C0

Acarreo serie
(a)
G3

P3

C3

G2

P2

C2

G1

P1

C1

G0

P0
C0

G0-3

Acarreo anticipado
P0-3
(b)

 FIGURA 5-6
Desarrollo de un sumador con generacin de acarreo

196 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Primero, construimos una nueva jerarqua lgica, separando de los sumadores completos la
parte que no est involucrada en el camino de propagacin del acarreo de aquellas otras que s
lo estn. A la primera parte de cada sumador completo la llamaremos sumador completo parcial
(PFA, partial full adder). Esta separacin se muestra en la Figura 5-6(a), que presenta el diagrama de un PFA y los diagramas de cuatro PFAs conectados al camino de propagacin del acarreo. Hemos quitado la puerta OR y una de las puertas AND de cada uno de los sumadores
completos para formar el camino del acarreo serie.
Cada PFA tiene dos salidas, Pi y Gi , hacia el camino del acarreo serie y una entrada Ci
desde el camino al PFA. La funcin se llama funcin de propagacin. Siempre que Pi sea igual
a 1, un acarreo entrante se propaga a travs de la posicin del bit desde Ci a Ci!1. Para Pi % 0,
la propagacin de acarreo a travs de la posicin del bit se detiene. La funcin se llama funcin
generacin. Siempre que Gi sea igual a 1, la salida del acarreo de la posicin es 1, sin tener en
cuenta el valor de Pi , generndose entonces un acarreo en la posicin. Cuando Gi es 0, no se
genera acarreo, entonces Ci!1 es 0 si el acarreo propagado a travs de la posicin Ci tambin es
0. Las funciones de generacin y propagacin corresponden exactamente a las del semi-sumador y son esenciales para controlar los valores del acarreo serie en el camino. Igual que el sumador completo, el PFA realiza la funcin de la suma mediante la OR exclusiva del acarreo entrante Ci y la funcin de propagacin Pi .
El camino del acarreo en un sumador de 4 bits con acarreo serie est formado por un total
de ocho puertas en cascada, por lo que el circuito tiene un retardo de ocho retardos de puerta.
Puesto que el camino del acarreo est formado slo por puertas OR y AND, idealmente el retardo para cada una de las cuatro seales de acarreo producidas, desde C1 hasta C4, podra ser de
slo dos retardos de puerta. El circuito bsico para el acarreo paralelo es simplemente un circuito en el que las funciones de C1 a C3 tienen un retardo de slo dos retardos de puerta. La implementacin de C4 es ms complicada pues debe permitir que el sumador de 4 bits con acarreo
anticipado pueda extenderse a mltiplos de 4 bits, por ejemplo a 16 bits El circuito para el acarreo paralelo de 4 bits se muestra en Figura 5-6(b). Est diseado para reemplazar directamente
el camino de acarreo serie de la Figura 5-6(a). Puesto que la generacin lgica de C1 ya est en
dos niveles, permanece sin modificaciones. La lgica para C2, sin embargo, tiene cuatro niveles.
Para encontrar la lgica del acarreo paralelo para C2, debemos reducir la lgica a dos niveles.
La ecuacin para C2 se obtiene de la Figura 5-6(a), y se le aplica la ley distributiva para obtener:
C2 % G1 ! P1(G0 ! P0C0)
% G1 ! P1G0 ! P1P0C0
La salida C2 de la Figura 5-6(b) es la implementacin lgica de esta ecuacin. Del mismo modo, a partir de la ecuacin encontrada en el camino del acarreo de la Figura 5-6(a) y aplicando
la ley distributiva, hemos obtenido la lgica en dos niveles para C3:
C3 % G2 ! P2(G1 ! P1(G0 ! P0C0))
% G2 ! P2(G1 ! P1G0 ! P0C0)
% G2 ! P2G1 ! P2P1G0 ! P2P1P0C0
Esta funcin se implementa mediante lgica a dos niveles con la salida C3 de la Figura 5-6(b).
Podramos implementar C4 usando el mismo mtodo. Pero algunas de las puertas tendran
un fan-in de cinco, lo que puede aumentar el retardo. Estamos interesados tambin en reutilizar
este mismo circuito para bits superiores (por ejemplo, del 4 al 7, del 8 al 11, y del 12 al 15 en

FUNCIONES Y CIRCUITOS ARITMTICOS

197

un sumador de 16 bits). Para este sumador nos gustara que el acarreo para las posiciones 4, 8 y
12, fuese generado lo ms rpido posible y sin requerir un excesivo fan-in. Por tanto queremos
repetir este truco del acarreo paralelo para grupos de 4 bits. Esto nos permitir reutilizar el circuito de acarreo paralelo para cada grupo de 4 bits, y tambin usar el mismo circuito para cuatro
grupos de 4 bits como si fueran bits individuales. As en lugar de generar C4, obtenemos funciones de generacin y propagacin que se aplican a grupos de 4 bits en lugar de aplicarse a un
nico bit y que actan como entradas para el grupo de circuitos de acarreo paralelo. Para propagar un acarreo desde C0 hasta C4 necesitamos que las cuatro funciones de propagacin sean
iguales a 1, dando la funcin propagacin de grupo
P0.3 % P3P2P1P0
Para representar la generacin de un acarreo en las posiciones 0, 1, 2, y 3, y su propagacin a
C4, necesitamos considerar la generacin del acarreo en cada una de las posiciones, representado por G desde G0 hasta G3, y la propagacin de cada uno de estos cuatro acarreos generados
hasta la posicin 4. Esto da la funcin generacin de grupo
G0.3 % G3 ! P3G2 ! P3P2G1 ! P3P2P1G0
Las ecuaciones para la propagacin de grupo y para la generacin de grupo se implementan
mediante lgica en la parte inferior de la Figura 5-6(b). Si slo hay 4 bits en el sumador, entonces el circuito lgico empleado para C1 puede usarse para generar C4 a partir de estas dos salidas. En un sumador ms grande, se coloca un circuito de acarreo paralelo idntico al de la figura, excepto por los nombres de las seales, en el segundo nivel para generar C4, C8 y C12. Este
concepto se puede ampliar a un sumador de 64 bits con ms circuitos de acarreo paralelo en el
segundo nivel y con un circuito de acarreo paralelo en el tercer nivel para generar los acarreos
de las posiciones 16, 32 y 48.
Suponiendo que una OR exclusiva contribuye con 2 retardos de puerta, el mayor retardo que
se produce en el sumador de 4 bits con acarreo anticipado es de 6 retardos de puerta, frente a los
10 retardos de puerta del sumador con acarreo serie. La mejora es muy modesta y quizs no
compensa toda la lgica extra. Pero aplicando el circuito de acarreo paralelo a un sumador de
16 bits que emplea cinco copias en dos niveles reduce el retraso de 34 a slo 10 retardos de
puerta, lo que mejora la actuacin del sumador por un factor de cerca de tres. En un sumador de
64 bits, empleando 21 circuitos de acarreo paralelo en tres niveles, el retardo se reduce de 130 a
14 retardos de puerta, dando un factor de ms de 8 en la mejora de la actuacin. En general,
para la implementacin que hemos mostrado, el retardo de un sumador con acarreo paralelo
diseado para optimizar el funcionamiento es de 4L ! 2 retardos de puerta, dnde L es el nmero de niveles del generacin anticipada de acarreo del diseo.

5-3 RESTA BINARIA


En el Captulo 1, examinamos brevemente la resta de nmeros binarios sin signo. Aunque los
textos introductorios slo cubren la suma y la resta de nmeros con signo, excluyendo completamente la alternativa sin signo, la aritmtica de nmeros sin signo juega un importante papel en
la computacin y en el diseo del hardware de computadoras. Se usa en unidades de punto flotante, en sumas con magnitud y signo y en algoritmos de resta, as como para extender la precisin de nmeros de punto fijo. Por estas razones, trataremos aqu la suma y la resta de nmeros
sin signo. Sin embargo, tambin hemos escogido tratarlo primero para poder justificar clara-

198 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

mente, basndonos en el coste del hardware, el uso, a priori extrao y a menudo admitido como
acto de fe, de las representaciones aritmticas en complemento.
En la Seccin 1-3, la resta se realiz comparando el substraendo con el minuendo y restando
el menor del mayor. El empleo de un mtodo que recurre a esta operacin de comparacin produce una circuitera ineficaz y costosa. Como alternativa, podemos restar el substraendo simplemente del minuendo. Usando los mismos nmeros que en el ejemplo de resta de la Seccin 1-3,
tenemos
Acarreos:
Minuendo
Substraendo
Diferencia
Diferencia correcta

11100
10011
.11110
10101
.01011

Si no hay ningn acarreo en la posicin ms significativa, entonces sabemos que el substraendo


es menor que el minuendo y, por tanto, el resultado es positivo y correcto. Si ocurre un acarreo
en la posicin ms significativa, indicado en azul, entonces sabemos que el substraendo es
mayor que el minuendo. Entonces, el resultado debe ser negativo, y necesitaremos corregir su
magnitud. Podemos hacer esto examinando el resultado del clculo siempre que ocurra un
acarreo:
M . N ! 2n
Observe que el sumando 2n representa el valor del acarreo en la posicin ms significativa. En
lugar de este resultado, la magnitud deseada es N . M, que se obtiene restando la frmula anterior de 2n:
2n . (M . N ! 2n) % N . M
En el ejemplo anterior, 100000 . 10101 % 01011 que es la magnitud correcta.
En general, la resta de dos nmeros de n dgitos, M . N, en base 2 puede hacerse como
sigue:
1. Reste el substraendo N del minuendo M.
2. Si no hay ningn acarreo final, entonces M n N, y el resultado es positivo y correcto.
3. Si se produce un acarreo final, entonces N b M, y la diferencia, M . N ! 2n se resta de
2n y se aade un signo menos al resultado.
La resta de un nmero binario de 2n para obtener un resultado de n dgitos se denomina complemento a 2 del nmero. As en el paso 3, estamos tomando el complemento a 2 de la diferencia
M . N ! 2n. El empleo del complemento a 2 en la resta se ilustra con el siguiente ejemplo.
EJEMPLO 5-1 Resta binaria sin signo en complemento a 2
Realice la resta binaria 01100100 . 10010110. Tenemos:
Acarreos:
Minuendo:
Substraendo:
Resultado inicial

10011110
01100100
.10010110
11001110

FUNCIONES Y CIRCUITOS ARITMTICOS

199

El acarreo final a 1 implica la correccin:


28
Resultado inicial
Resultado final

100000000
.11001110
.00110010

Para implementar una resta empleando este mtodo se necesita un restador para la resta inicial. Adems, cuando sea necesario, se utilizar un segundo restador o bien un complementador
a 2 para realizar la correccin. Hasta ahora, por tanto, necesitamos un restador, un sumador, y
posiblemente un complementador a 2 para efectuar la suma y la resta. El diagrama de bloques
del sumador-restador de 4 bits que emplea dichos bloques funcionales se muestra en la Figura
5-7. Las entradas se aplican tanto al sumador como al restador, de modo que ambos realicen las
operaciones en paralelo. Si durante la resta se produce un acarreo de 1 en el extremo, entonces
el complementador a 2 selectivo recibe en su entrada de complemento un 1. Este circuito saca
entonces el complemento a 2 de las salidas del restador. Si el acarreo final tiene valor de 0, el
complementador a 2 selectivo muestra las salidas del restador sin cambios. Si es una operacin
de resta, entonces se aplica un 1 a la entrada S del multiplexor seleccionando las salidas del
complementador. Si es una operacin de suma, entonces se aplica un 0 a S, seleccionando de
este modo las salidas del sumador.
Tal y como veremos, este circuito es ms complejo de lo necesario. Para reducir la cantidad
de hardware, nos gustara compartir la lgica entre el sumador y el restador. Esto tambin se
puede hacer empleando la notacin del complemento. As, antes de ir ms all en las consideraciones sobre la combinacin sumador-restador, estudiaremos con ms detalles los complementos.
A

Sumador binario

Acarreo de
la muestra

Complementar

Restar/Sumar

Restador binario

Complementador a 2
seleccionable

0
1
Multiplexor
cudruple 2:1

Resultado

 FIGURA 5-7
Diagrama de bloques de un sumador-restador binario

200 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Complementos
Hay dos tipos de complementos para cada sistema en base-r: el complemento a la base, que ya
vimos para base 2, y el complemento a la base menos 1. El primero se denomina complemento
a r y el segundo se denomina complemento a (r . 1). Cuando el valor de la base r se sustituye
por los nombres, los dos tipos mencionados son el complemento a 2 y el complemento a 1 para
los nmeros binarios, y el complemento a 1, 0 y a 9 para los nmeros decimales, respectivamente. Sin embargo, ahora nuestro inters est en los nmeros binarios y en sus operaciones, y
slo trataremos de los complementos a 1 y a 2.
A partir de un nmero binario N de n dgitos, se define su complemento a 1 de N como
(2n . 1) . N. 2n se representa por un nmero binario que consiste en un 1 seguido por tantos 0
como n. 2n . 1 es un nmero binario representado por n 1. Por ejemplo, si n % 4, tenemos
24 % (10000)2 y 24 . 1 % (1111)2. As, el complemento a 1 de un nmero binario se obtiene
restando cada dgito de 1. Al restar los dgitos binarios de 1, puede ocurrir 1 . 0 % 1
1 . 1 % 0, lo que provoca el cambio del bit original de 0 a 1 o de 1 a 0, respectivamente. Por
consiguiente, el complemento a 1 de un nmero binario se forma cambiando todos los 1 por 0 y
todos los 0 por 1 esto es, aplicando NOT o la funcin complemento a cada uno de los bits.
Los siguientes son dos ejemplos numricos:
El complemento a unos de 1011001 es 0100110.
El complemento a unos de 0001111 es 1110000.
De manera similar, el complemento a 9 de un nmero decimal, el complemento a 7 de un
nmero octal, y el complemento a 15 de un nmero hexadecimal se obtiene restando cada dgito
de 9, 7, y F (decimal 15), respectivamente.
Dado un nmero N de n dgitos en binario, el complemento a 2 de N se define como 2n . N
para N 0 y 0 para N % 0. La razn para el caso especial de N % 0 es que el resultado debe
tener n bits, y la resta de 0 de 2n da un resultado de (n ! 1) bits. Este caso especial se consigue
empleando un nico restador de n bits o retirando el 1 de la posicin extra. Comparndolo con
el complemento a 1, observamos que el complemento a 2 se obtiene sumando un 1 al complemento a 1, es decir 2n . N % {[(2n . 1) . N] ! 1}. Por ejemplo, el complemento a 2 del binario 101100 es 010011 ! 1 % 010100 y se obtiene sumando 1 al valor del complemento a 1. De
nuevo, para N % 0, el resultado de esta suma es 0, y se ha conseguido ignorando el acarreo
externo de la posicin ms significativa de la suma. Estos conceptos tambin se mantienen para
otras bases. Como veremos ms tarde, son muy tiles para simplificar el complemento a 2 y el
hardware de la resta.
El complemento a 2 tambin se puede formar dejando inalterados todos los 0 menos significativos y el primer 1, y reemplazando entonces los 1 por 0 y los 0 por 1 en los restantes bits
ms significativos. As, el complemento a 2 de 1101100 es 0010100 y se obtiene dejando igual
los dos 0 de menor orden y el primer 1 y reemplazando en los otros 4 bits ms significativo los
1 por 0 y los 0 por 1. En otras bases, el primer dgito no nulo se resta de la base r, y se reemplazan los dgitos restantes a la izquierda por dgitos de valores r . 1.
Tambin es importante mencionar que el complemento del complemento devuelve el nmero a su valor original. Para ver esto, observe que el complemento a 2 de N es 2n . N, y el complemento del complemento es 2n . (2n . N) % N, devolviendo el nmero original.

Resta con complementos


Con anterioridad, comentamos nuestro deseo de simplificar el hardware compartiendo la lgica
del sumador y del restador. Respaldados por los complementos nos preparamos a definir un pro-

FUNCIONES Y CIRCUITOS ARITMTICOS

201

cedimiento para la resta binaria que emplea la suma y la lgica del complemento correspondiente. La resta binaria de dos nmeros de n dgitos sin signo M . N, puede realizarse del siguiente
modo:
1. Sume el complemento a 2 del substraendo N al minuendo M.
M ! (2n . N) % M . N ! 2n
Si M n N, la suma producir un acarreo final, 2n. Deseche el acarreo final, dejando
mientras como resultado M . N.
3. Si M a N, la suma no producir acarreo final por lo que ser igual a 2n . (N . M), el
complemento a 2 de N . M. Realice una correccin tomando el complemento a 2 de la
suma y poniendo un signo menos delante para obtener el resultado .(N . M).
2.

Los ejemplos que aparecen ms adelante ilustran el procedimiento anterior. Note que, aunque estamos tratando con nmeros sin signo, no hay ninguna manera de conseguir un resultado
sin signo para el caso del paso 3. Al trabajar con papel y lpiz, reconocemos, por la ausencia del
acarreo final, cundo la respuesta debe cambiarse a un nmero negativo. Si queremos conservar
el signo menos del resultado, se debe guardar separadamente del resultado corregido de n bits.

EJEMPLO 5-2 Resta binaria sin signo en complemento a 2


Dados dos nmeros binarios X % 1010100 e Y % 1000011, realice la resta X . Y e Y . X usando operaciones en complemento a 2. Tenemos:
X%
1010100
Complemento a 2 de X %
0111101
Suma % 10010001
Ignorar el acarreo 27 % .10000000
Respuesta: X . Y %
0010001
Y%
1000011
Complemento a 2 de X %
0101100
Suma %
1101111
No hay acarreo final.
Respuesta: Y . X % .(complemento a 2 de 1101111) % .0010001

La resta de nmeros sin signo tambin se puede hacer mediante el complemento a 1. Recuerde que el complemento a 1 es 1 menos que el complemento a 2. Debido a esto, el resultado
de sumar el minuendo al complemento del substraendo produce una suma que es 1 menos que
de la diferencia correcta cuando se produce acarreo final. Desechar el acarreo final y sumar 1 a
la suma se denomina redondeo del acarreo.

EJEMPLO 5-3 Resta binaria sin signo mediante sumas en complemento a 1


Repita el Ejemplo 5-2 usando operaciones en complemento a 1. Aqu, tenemos:

202 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Observe que el resultado negativo se obtiene tomando el complemento a 1 de la suma, ya


que ste es el tipo de complemento empleado.

5-4 SUMADOR-RESTADOR BINARIO


Usando el complemento a 1 y el complemento a 2 hemos suprimido la operacin de la resta y
solamente necesitamos un complementador apropiado y un sumador. Cuando realizamos una
resta complementamos el substraendo N, mientras que para sumar no es necesario. Estas operaciones se pueden lograr usando un complementador selectivo y un sumador interconectados
para formar un sumador-restador. Empleamos el complemento a 2 por ser el ms habitual en los
sistemas modernos. El complemento a 2 se puede obtener tomando el complemento a 1 y sumndole 1 al bit de menor peso. El complemento a 1 se implementa fcilmente a partir de circuitos inversores, mientras que la suma de 1 la conseguimos haciendo la entrada de acarreo del
sumador paralelo igual a 1. De esta manera, usando el complemento a 1 y una entrada no usada
del sumador, se obtiene muy econmicamente el complemento a 2. En la resta en complemento
a 2, como en el paso de correccin despus de la suma, tenemos que complementar el resultado
y aadirle un signo menos si se produce acarreo final. La operacin de correccin se realiza
empleando cualquier sumador-restador una segunda vez con M % 0 o un complementador selectivo como el de la Figura 5-7.
El circuito para restar A . B consiste en un sumador paralelo como el de la Figura 5-5, con
inversores colocados entre cada trminal B y la entrada correspondiente del sumador completo.
La entrada de acarreo C0 debe ser igual a 1. La operacin que se realiza se convierte en:
A ! complemento a 1 de B ! 1. Esto es igual a A ! el complemento a 2 de B. Para los nmeros
sin signo, da A . B si A n o el complemento a 2 de B . A si A a B.
La suma y la resta se pueden combinar en un circuito con un sumador binario comn. Esto
se hace incluyendo una puerta OR exclusiva con cada sumador completo. En la Figura 5-8 se
muestra un circuito sumador-restador de 4 bits. La entrada S controla el funcionamiento. Cuando S % 0 el circuito funciona como un sumador, y cuando S % 1 el circuito se convierte en un
restador. Cada puerta OR exclusiva recibe la entrada S y una de las entradas de B, Bi. Cuando
S % 0, tenemos Bi S 0. Si los sumadores completos reciben el valor de B, y la entrada de acarreo es 0, el circuito realiza A ! B. Cuando S % 1, tenemos Bi S1 % Bi y C0 % 1. En este caso,
el circuito realiza la operacin A ! el complemento a 2 de B.

FUNCIONES Y CIRCUITOS ARITMTICOS

A3

B3

B2

A2

B1

A1

B0

203

A0

FA

C4

S3

C3

FA

S2

C2

FA

S1

C1

FA

C0

S0

 FIGURA 5-8
Circuito sumador/restador

Nmeros binarios con signo


En la seccin anterior tratamos la suma y la resta de nmeros sin signo. Ahora extenderemos
esta aproximacin a los nmeros con signo, incluyendo otros usos de los complementos que nos
ayudarn a eliminar el paso de la correccin.
Los enteros positivos y el nmero 0 pueden representarse como nmeros sin signo. Para representar los enteros negativos, necesitamos, sin embargo, una notacin especfica para los valores negativos. En aritmtica ordinaria, un nmero negativo se indica por un signo menos y un
nmero positivo por un signo ms. Debido a las limitaciones del hardware, las computadoras
deben representar todo con 1 y 0, incluso el signo de un nmero. En consecuencia, es costumbre
representar el signo con un bit colocado en la posicin ms significativa del nmero de n bits.
Lo convencional es emplear el 0 para los nmeros positivos y el 1 para los nmeros negativos.
Es importante comprender que ambos, los nmeros binarios sin signo y los nmeros binarios
con signo, consisten en una cadena de bits cuando se representan en una computadora. El usuario es quien determina si el nmero es con signo o sin signo. Si el nmero binario es con signo,
entonces el bit del extremo izquierdo representa el signo y el resto de los bits representan el
nmero. Si se supone que el nmero binario es sin signo, entonces el bit del extremo izquierdo
es el bit de mayor peso del nmero. Por ejemplo, la cadena de bits 01001 puede ser considerada
como el 9 (en binario sin signo) o el !9 (en binario con signo), puesto que el bit del extremo
izquierdo es 0. De manera similar, la cadena de bits 11001 representa el equivalente binario de
25 cuando se considera como un nmero sin signo de .9 cuando se considera como un nmero con signo. Esto ltimo es porque el 1 en la posicin del extremo izquierdo designa un
signo menos y los restantes cuatro bits representan el 9 binario. Normalmente, no hay confusin
identificando los bits ya que se conoce de antemano el tipo de representacin del nmero. Esta
representacin de nmeros con signo se denomina sistema de representacin en signo y magnitud. En este sistema, el nmero consiste en una magnitud y un smbolo (! .) o un bit (0 1)
indicando el signo. sta es la representacin de nmeros con signo que se emplea en la aritmtica ordinaria.
En la implementacin de sumas y restas para nmeros de n bits en signo y magnitud, el bit
de signo en el extremo izquierdo y los n . 1 bits de magnitud se procesan separadamente.
Los bits de magnitud se procesan como en los nmeros binarios sin signo. Por tanto, la resta

204 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

implica necesariamente tener que llevar a cabo el paso de la correccin. Para evitar este paso
empleamos un sistema de representacin diferente para los nmeros negativos, llamado sistema
en signo y complemento. En este sistema un nmero negativo se representa por su complemento. Mientras en el sistema de signo y magnitud un nmero se convierte en negativo cambiando
su signo, en el sistema de signo y complemento se hace tomando su complemento. Puesto que
los nmeros positivos empiezan siempre con un 0 (representando un signo !) en la posicin
del extremo izquierdo, sus complementos empezarn siempre con un 1, indicando un nmero
negativo. Los sistemas de signo y complemento pueden usar tanto el complemento a 1 como a
2, pero ste ltimo es el ms comn. Como ejemplo, considere el nmero 9, representado en
binario con 8 bits. Se representa !9 con un bit de signo a 0 en el extremo izquierdo, seguido
por el equivalente binario de 9, dando 00001001. Observe que los 8 bits deben tener un valor, y
por consiguiente, se insertan 0 entre el bit de signo y el primer 1. Aunque slo hay una manera
de representar !9, tenemos tres maneras diferentes de representar .9 usando 8 bits:
En la representacin de signo y magnitud:
En la representacin de signo y complemento a 1:
En la representacin de signo y complemento a 2:

10001001
11110110
11110111

En signo y magnitud, se obtiene .9 de !9 cambiando el bit de signo del extremo izquierdo de


0 a 1. En signo y complemento a 1, .9 se obtiene complementando todos los bits de !9, incluso el bit de signo. La representacin en signo y complemento a 2 de .9 se obtiene tomando
el complemento a 2 del nmero positivo, incluso el bit 0 del signo.
La Tabla 5-3 lista las tres representaciones para todos los posibles nmeros binarios de 4
bits con signo. Tambin se muestra el nmero decimal equivalente. Observe cmo los nmeros
positivos son idnticos en todas las representaciones y tienen 0 en la posicin del extremo izquierdo. En el sistema de signo y complemento a 2, el 0 tiene slo una representacin que es
siempre positiva. Los otros dos sistemas tienen un 0 positivo y un 0 negativo, algo no habitual
en la aritmtica ordinaria. Observe tambin que todos los nmeros negativos tienen un 1 en el
bit del extremo izquierdo; sta es la manera de distinguirlos de los nmeros positivos. Con 4
bits, podemos representar 16 nmeros binarios. En las representaciones en signo y magnitud
y en complemento a 1, hay siete nmeros positivos, siete nmeros negativos y dos ceros con
signo. En la representacin en complemento a 2 hay siete nmeros positivos un cero y ocho
nmeros negativos.
El sistema de signo y magnitud se emplea en la aritmtica ordinaria, pero es incmodo en la
aritmtica de computacin debido al manejo separado del signo y a la necesidad de emplear el
paso de la correccin en la resta. Por consiguiente se utiliza normalmente el sistema de signo y
complemento. El complemento a 1 supone ciertas dificultades debido a sus dos representaciones
para el 0 y raramente se usa para las operaciones aritmticas. Es til como operacin, pues cambiar de 1 a 0 de 0 a 1 es equivalente a una operacin lgica de complemento. En la siguiente
discusin de aritmtica binaria con signo se emplea exclusivamente la representacin de nmeros negativos en complemento a 2, pues es la que predomina en realidad. Para el complemento
a 1 y el redondeo de acarreo se pueden aplicar los mismos procedimientos de signo que los que
se han aplicado al complemento a 2 con signo.

Suma y resta binaria con signo


La suma de dos nmeros, M ! N, en el sistema de signo y magnitud sigue las reglas de la aritmtica ordinaria: Si los dos signos son iguales, sumamos las magnitudes y damos el signo de M
a la suma. Si los signos son diferentes, restamos la magnitud de N a la magnitud de M. La

FUNCIONES Y CIRCUITOS ARITMTICOS

205

 TABLA 5-3
Nmeros binarios con signo
Decimal

Signo y
complemento a 2

Signo y
complemento a unos

Signo y
magnitud

!7
!6
!5
!4
!3
!2
!1
!0
.0
.1
.2
.3
.4
.5
.6
.7
.8

0111
0110
0101
0100
0011
0010
0001
0000

1111
1110
1101
1100
1011
1010
1001
1000

0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000

0111
0110
0101
0100
0011
0010
0001
0000
1000
1001
1010
1011
1100
1101
1110
1111

ausencia o presencia de acarreo final determina el signo del resultado, basado en el signo de M,
y determina si hay o no que realizar una correccin del complemento a 2. Por ejemplo, puesto
que los signos son diferentes, (0 0011001) ! (1 0100101) provoca que 0100101 sea restado de
0011001. El resultado es 1110100, y se ha producido un acarreo de 1. El acarreo final indica
que la magnitud de M es menor que la magnitud de N. Entonces, el signo del resultado es
opuesto al de M y es, por consiguiente, un menos (.). El acarreo final tambin indica que la
magnitud del resultado, 1110100, se debe corregir tomando su complemento a 2. Combinando
el signo y la magnitud corregida del resultado, se obtiene 1 0001100.
A diferencia del sistema de signo y magnitud, la regla para sumar nmeros en signo y complemento no requiere ni comparacin ni resta, sino slo suma. El procedimiento es simple y
puede exponerse como sigue para los nmeros binarios:
La suma de dos nmeros binarios con signo, con nmeros negativos representados en signo
y complemento a 2, se obtiene sumando los dos nmeros, incluyendo sus bits de signo y
desechando cualquier acarreo que se produzca ms all del bit de signo.
En el Ejemplo 5-4 se dan algunos ejemplos numricos de suma binaria con signo. Observe que
los nmeros negativos ya estn en complemento a 2 y que el resultado obtenido tras la suma, si
es negativo, queda representado de la misma forma..
EJEMPLO 5-4 Suma binaria con signo empleando complemento a 2
!6 00000110
!13 00001101
!19 00010011

.6 11111010
!13 00001101
!7 00000111

!6 00000110
.13 11110011
.7 11111001

.6
.13
.19

11111010
11110011
11101101

206 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

En cualquiera de los cuatro casos, la operacin realizada ha sido la suma, incluyendo el bit de
signo. El acarreo que se produzca ms all del bit de signo se desecha, y los resultados negativos estn automticamente en forma de complemento a 2.

La manera de representar nmeros negativos en complemento es poco familiar para quienes
estn acostumbrados al sistema de signo y magnitud. Para determinar el valor de un nmero
negativo en la forma de signo y complemento a 2 se necesita convertir el nmero en un nmero
positivo, de manera que nos sea ms familiar. Por ejemplo, el nmero binario con signo
11111001 es negativo porque el bit del extremo izquierdo es 1. Su complemento a 2 es
00000111 que equivale al binario !7. De este modo reconocemos el nmero original como .7.
La resta de dos nmeros binarios con signo, cuando los nmeros negativos estn en forma
de complemento a 2, es muy simple y se puede exponer como sigue:
Tome el complemento a 2 del substraendo (incluso el bit de signo) y smelo al minuendo
(incluso el bit de signo). No se considerar ningn acarreo ms all del bit de signo.
Este procedimiento viene del hecho de que una operacin de resta puede cambiarse por una
operacin de suma si el signo del substraendo se cambia. Es decir,
(uA) . (!B) % (uA) ! (.B)
(uA) . (.B) % (uA) ! (!B)
Cambiar un nmero positivo por un nmero negativo es fcil si se toma su complemento a 2. Al
contrario tambin es verdad, porque el complemento de un nmero negativo, que ya est en
forma de complemento, produce el nmero positivo correspondiente. Se muestran algunos
ejemplos numricos en el Ejemplo 5-5.
EJEMPLO 5-5 Resta binaria con signo que usa el complemento a 2
.6
11111010
11111010
!6
00000110
.(.13) .11110011 !00001101 .(.13) .11110011
!7
00000111
!19
El acarreo final se desecha.

00000110
!00001101
00010011


Es importante mencionar que los nmeros binarios en el sistema de signo y complemento se


suman y restan con las mismas reglas bsicas que se aplican para los nmeros sin signo. Por
consiguiente, las computadoras necesitan un nico circuito hardware comn para ocuparse de
ambos tipos de aritmtica. El usuario o el programador deben interpretar de manera diferente
los resultados de tales sumas o restas, en tanto que depende de si se han supuesto los nmeros
con signo o sin signo. De este modo, el mismo sumador-restador diseado para nmeros sin
signo se puede emplear para nmeros con signo.
Si los nmeros con signo estn representados en complemento a 2 entonces el circuito de la
Figura 5-8 se puede usar sin el paso de la correccin. Para sumas y restas en complemento a 1,
la entrada desde S a C0 del sumador se reemplaza por una entrada desde Cn a C0.

Overflow o desbordamiento
Para obtener un resultado correcto cuando se suma y se resta, debemos asegurarnos que el resultado tenga el nmero suficiente de bits para acomodar la suma. Decimos que se ha producido

FUNCIONES Y CIRCUITOS ARITMTICOS

207

overflow o desbordamiento, si partiendo de dos nmeros de n bits su suma ocupa n ! 1 bits.


Esto es cierto para nmeros binarios o nmeros decimales con o sin signo. Cuando se realiza la
suma con papel y lpiz el desbordamiento no es un problema, ya que no estamos limitados por
la anchura de la pgina. Nos basta con aadir en la posicin ms significativa otro 0 a un nmero positivo y otro 1 a un nmero negativo para extenderlos a n ! 1 bits y entonces poder realizar la suma. El desbordamiento es un problema en las computadoras porque el nmero de bits
que soporta un nmero es fijo, y no puede acomodarse un resultado que excede del nmero de
bits. Por esta razn, las computadoras detectan y pueden sealar la aparicin del overflow. La
deteccin del desbordamiento puede manejarse automticamente interrumpiendo la ejecucin
del programa y tomando una accin especial. Una alternativa es monitorizar o supervisar mediante software las condiciones del desbordamiento.
Detectar la aparicin del desbordamiento tras la suma de dos nmeros binarios depender de
si hemos considerado los nmeros con o sin signo. Cuando se suman dos nmeros sin signo el
desbordamiento se detecta si ha habido acarreo ms all de la posicin ms significativa. En la
resta sin signo, la magnitud del resultado es siempre igual a o menor que el mayor de los nmeros originales, con lo que el desbordamiento es imposible. En el caso de los nmeros con signo
en complemento a 2, el bit ms significativo siempre representa el signo. Cuando se suman dos
nmeros con signo, el bit de signo se trata como una parte del nmero y un acarreo de 1 en el
extremo no implica necesariamente un desbordamiento.
En la suma de nmeros con signo el desbordamiento nunca se produce si un nmero es positivo y el otro es negativo: sumar un nmero positivo a un nmero negativo produce un resultado
cuya magnitud es igual o menor que el mayor de los nmeros originales. El desbordamiento
slo ocurre si los dos nmeros sumados son ambos positivos o negativos. Para ver cmo se produce esto considere el siguiente ejemplo en complemento a 2: se almacenan dos nmeros con
signo !70 y !80 en dos registros de 8 bits. El rango de nmeros binarios que cada registro
puede almacenar, expresado en decimal, es de !127 a .128. Por tanto, la suma de los dos
nmeros almacenados, !150, excede de la capacidad del registro de 8 bits. Tambin ocurre as
para .70 y .80. Estas dos sumas, junto con los valores de los bits de acarreo ms significativos, son las siguientes:
Acarreos: 0 1
Acarreos: 1 0
!70
0 1000110
.70
1 0111010
0 1010000
.80
1 0110000
!80
!150
1 0010110
.150
0 1101010
Observe que el resultado de 8 bits que deba haber sido positivo tiene un bit de signo negativo y
que el resultado de 8 bits que deba ser negativo tiene un bit de signo positivo. Sin embargo, si
consideramos el acarreo producido ms all del bit de signo como el signo del resultado, entonces la respuesta obtenida con 9 bits es correcta. Puesto que, a pesar de todo, no hay lugar para el
noveno bit del resultado, decimos que ha ocurrido un desbordamiento.
La condicin de desbordamiento se puede detectar observando el acarreo asociado a la posicin del bit de signo el acarreo anterior. Si estos dos acarreos no son iguales, hay desbordamiento. Esto se aprecia sencillamente en el ejemplo que hemos realizado en complemento a 2, dnde
los dos acarreos se muestran explcitamente. Hay desbordamiento si al aplicar los dos acarreos a
una puerta OR exclusiva, la salida de la puerta es igual a 1. Para trabajar correctamente en complemento a 2, hay que aplicar el complemento a 1 del substraendo al sumador y sumarle 1
bien dotar de deteccion de desbordamiento al circuito complementador a 2. La segunda opcin
es debida a la posibilidad de que se produzca desbordamiento cuando el substraendo es el menor nmero negativo.

208 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La Figura 5-9 muestra la sencilla lgica necesaria para detectar la aparicin del desbordamiento. Si se consideran los nmeros sin signo, entonces la salida C detecta un acarreo (un desbordamiento) para la suma cuando es igual a 1 y para el caso de la resta indica que no se necesita ningn paso de correccin. Si C es igual a 0 no detecta acarreo (ningn desbordamiento) para
la suma mientras que en el caso de la resta indica que se necesita corregir el resultado.
Si los nmeros son con signo, entonces se emplea la salida V para detectar un desbordamiento. Si V % 0 despus de una suma con signo o una resta, indica que no hay desbordamiento
y que el resultado es correcto. Si V % 1, entonces el resultado de la operacin contiene n ! 1
bits, pero slo los n bits de la derecha encajan en el resultado de n bits, y por tanto, se ha producido desbordamiento. El bit n!1 es el signo real del resultado, aunque no puede ocupar la posicin del bit de signo en el resultado.
V
C

Cn1
Cn
Sumador restador de n bit

 FIGURA 5-9
Lgica para la deteccin del desbordamiento en una suma o resta

5-5 MULTIPLICACIN BINARIA


La multiplicacin de nmeros binarios se realiza de la misma manera que con los nmeros decimales. El multiplicando se multiplica por cada bit del multiplicador, empezando por el bit menos significativo. Cada una de estas multiplicaciones forma un producto parcial. Cada uno de
estos productos parciales se desplaza un bit a la izquierda. El producto final se obtiene de la
suma de los productos parciales.
Para ver cmo se puede implementar un multiplicador binario con un circuito combinacional, considere la multiplicacin de dos nmeros de 2 bits que se muestra en la Figura 5-10. Los
bits del multiplicando son B1 y B0, los bits del multiplicador son A1 y A0, y el producto es C3,
C2, C1 y C0. El primer producto parcial se forma multiplicando B1 B0 por A0. La multiplicacin
de dos bits como A0 y B0 produce un 1 si ambos bits son 1; de lo contrario da como resultado un
0. Resulta idntico al funcionamiento de una puerta AND. Por consiguiente, el producto parcial
puede implementarse con puertas AND tal y como se ilustra en el diagrama. El segundo producto parcial se obtiene multiplicando B1 B0 por A1 y desplazndolo una posicin a la izquierda.
Los dos productos parciales se suman con circuitos semi-sumadores (HA). Normalmente hay
ms bits en los productos parciales, por lo que ser necesario usar sumadores completos para
efectuar la suma de los productos parciales. Observe como, una vez obtenido a partir de la primera puerta AND, el bit menos significativo no tiene que pasar por el sumador.
El circuito combinacional de un multiplicador binario con ms bits puede construirse de manera similar. Se realiza la AND de un bit del multiplicador con cada bit del multiplicando en
tantos niveles como bits tenga el multiplicador. En cada nivel de puertas AND, la salida binaria
se suma en paralelo con el producto parcial del nivel anterior para formar un nuevo producto
parcial. El ltimo nivel produce el producto final. Para un multiplicador de J bits y un multiplicando de K bits, necesitamos J # K puertas AND y (J . 1) sumadores de K bits para producir
un producto de J ! K bits. Como ejemplo de circuito combinacional de un multiplicador bina-

FUNCIONES Y CIRCUITOS ARITMTICOS

C3

B1

B0

A1

A0

A0B1

A0B0

A1B1

A1B0

C2

C1

C0

A0

A1

B1

B1

B0

HA

HA

C3 C2

C1

209

B0

C0

 FIGURA 5-10
Multiplicador binario de 2 # 2 bits

rio, considere un circuito que multiplica un nmero binario de cuatro bits por un nmero de tres
bits. Representemos el multiplicando por B3B2B1B0 y el multiplicador por A2A1A0. Puesto que
K % 4 y J % 3, necesitamos 12 puertas AND y dos sumadores de 4 bits para obtener un producto de 7 bits. El diagrama lgico de este tipo de circuitos multiplicadores se muestra en la Figura
5-11. Observe que el bit de salida del acarreo forma parte del multiplicador entrando al sumador
en el siguiente nivel.

5-6 OTRAS FUNCIONES ARITMTICAS


Hay otras operaciones aritmticas aparte de !, ., y # que son bastante importantes. Entre
estas operaciones est el incremento, el decremento, la multiplicacin y divisin por una constante y la comparacin mayor que y menor que. Cada uno de estas operaciones puede implementarse para operandos de varios bits usando un array iterativo de clulas de 1 bit. En lugar de
utilizar estas aproximaciones bsicas, se emplean combinaciones de operaciones fundamentales
y una nueva tcnica denominada contraccin. La contraccin parte de un circuito como un sumador binario, un sumador con acarreo anticipado, o un multiplicador binario. Este enfoque
simplifica el diseo convirtiendo los circuitos existentes en circuitos tiles, menos complicados
en lugar de disear los ltimos circuitos directamente.

Contraccin o reduccin
La asignacin de valores, la transferencia o la inversin de las entradas se puede combinar con
bloques funcionales para implementar nuevas operaciones tal y como se hizo en el Captulo 4.
Implementaremos nuevas operaciones usando tcnicas similares sobre un circuito dado o sobre
sus ecuaciones y reducindolo para una aplicacin especfica a un circuito ms simple. Llamaremos a este procedimiento contraccin. La meta de la contraccin es lograr el diseo de un

210 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A0

B3

A1

B3

B2

B1

B2

B1

B0

B0

Operando
Sumador de 4 bit
Acarreo
de salida

A2

B3

B2

B1

C6

Suma

B0

Operando
Acarreo
de salida

Operando

Operando

Sumador de 4 bit
Suma

C5

C4

C3

C2

C1

C0

 FIGURA 5-11
Multiplicador binario de 4 bits # 3 bits

circuito lgico o de un bloque funcional usando los resultados de diseos previos. Esta tcnica
de contraccin puede ser aplicada por el diseador, para disear un circuito concreto, o por las
herramientas de sntesis lgicas para simplificar un circuito inicial mediante la asignacin de
valores, la transferencia o la inversin en sus entradas. En ambos casos, la contraccin tambin
se puede aplicar sobre las salidas del circuito que no se emplean, contrayendo el circuito original hacia el circuito deseado. Ilustraremos primero la contraccin usando ecuaciones booleanas.
EJEMPLO 5-6 Contraccin de ecuaciones del sumador completo
El circuito a disear Add1 debe generar la suma Si y el acarreo Ci!1, para la suma de un slo bit
Ai ! 1 ! Ci. Se trata del caso especial de un sumador completo Ai ! Bi ! Ci con Bi % 1. Entonces, las ecuaciones para el nuevo circuito se pueden obtener a partir de las ecuaciones del
sumador completo,
Si % Ai S Bi S Ci
Ci!1 % Ai Bi ! Ai Ci ! Bi Ci

FUNCIONES Y CIRCUITOS ARITMTICOS

211

haciendo Bi % 1 y simplificando los resultados, obtenemos,


Si % Ai S 1 S Ci % Ai S Ci
Ci!1 % Ai 1 ! Ai Ci ! 1 Ci % Ai ! Ci
Suponga que se emplea el circuito Add1 por cada uno de los cuatro sumadores completos en un
sumador de 4 bits con acarreo serie. El clculo a realizar ser S % A ! 1111 ! C0 en lugar de
S % A ! B ! C0. En complemento a 2, este clculo es S % A . 1 ! C0. Si C0 % 0, esto implementa una operacin de decremento S % A . 1, empleando considerablemente menos lgica
que la necesaria para un sumador-restador de 4 bits.

La contraccin se puede aplicar a las ecuaciones, como se ha hecho aqu, o directamente
sobre los diagramas del circuito aplicando funciones fundamentales a las entradas de los bloques funcionales. Para aplicar la contraccin con xito, la funcin deseada se debe poder obtener a partir del circuito inicial mediante la aplicacin de funciones fundamentales en sus entradas. Ahora consideramos la contraccin basada en las salidas no utilizadas.
Colocar un valor desconocido, X, en la salida de un circuito significa que dicha salida no se
usar. De este modo, puede eliminarse tanto la salida de la puerta como cualquier otra puerta
que est conectada nicamente a dicha salida. Las reglas para acortar las ecuaciones con X en
una o ms salidas son las siguientes:
1. Eliminar todas las ecuaciones con X en las salidas del circuito.
2. Si alguna variable intermedia no aparece en ninguna de las restantes ecuaciones, eliminar su ecuacin.
3. Si alguna variable de entrada no aparece en ninguna ecuacin restante, eliminarla.
4. Repetir los pasos 2 y 3 hasta que no haya ninguna nueva anulacin.
Las reglas para acortar un diagrama lgico con X en una o ms de las salidas son las siguientes:
1. Empezando por las salidas, eliminar todas las puertas con X en sus salidas y colocar X
en sus cables de entrada.
2. Si todos los cables atacados por una puerta estn etiquetados con X, eliminar la puerta y
colocar X en sus entradas.
3. Si todos los cables de entrada conectados a una entrada externa estn etiquetados con X,
elimine la entrada.
4. Repita 2 y 3 hasta que no sea posible ninguna nueva eliminacin.
En la prxima subseccin, se ilustra la contraccin de un diagrama lgico para la operacin
de incremento.

Incremento
Incrementar significa aadir a una variable aritmtica un valor fijo, el valor fijo empleado ms
a menudo es el 1. Un incrementador de n bits que realiza la operacin A ! 1 se puede obtener a
partir de un sumador binario que realice la operacin A ! B con B % 0...01. El uso de n % 3 es
suficientemente grande para determinar la lgica necesaria para construir el circuito de un incrementador de n bits.
La Figura 5-12(a) muestra un sumador de 3 bits con las entradas conectadas de tal modo que
representan el clculo A ! 1 y con la salida del bit de acarreo ms significativo C3 conectada al
valor X. El operando B % 001 y el acarreo entrante C0 % 0 hacen que el clculo sea
A ! 001 ! 0. Otra alternativa sera, B % 000 con el acarreo entrante C0 % 1.

212 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A2
0

A1
0

X
C3  X

C1

S1

S2

A0
1

C0  0

S0
(a)

A2

S2

A1

S1

A0

S0
(b)

 FIGURA 5-12
Contraccin de un sumador a un incrementador

Basndonos en la asignacin de valores, hay tres contracciones distintas para las clulas del
sumador:
1. La clula menos significativa a la derecha con B0 % 1 y C0 % 0.
2. La clula normal en el medio con B1 % 0.
3. La clula ms significativa a la izquierda con B2 % 0 y C3 % X.
Para la clula de la derecha, la salida de la puerta 1 es A1 0 por lo que puede reemplazarse por
un inversor. La salida de la puerta 2 se vuelve A0, por lo que puede reemplazarse por un cable
conectado a A0. Aplicando A1 0 y 0 a la puerta 3 sta puede reemplazarse por un cable, que conecte A0 con la salida S0. La salida de la puerta 4 es 0, por lo que puede reemplazarse por un
valor 0. Aplicando este 0 y A0 desde la puerta 2 hasta la puerta 5, la puerta 5 puede reemplazarse por un cable que conecte A0 con C1. El circuito resultante es la clula de la derecha en la
Figura 5-12(a).
Aplicando la misma tcnica a la clula normal del centro con B1 % 0 las salidas son:
S1 % A1 S C1
C2 % A1C1
El circuito resultante es la clula del centro en la Figura 5-12(b). Para la clula de la izquierda
con B2 % 0 y C3 % X, primero se propagan los efectos de X para ahorrar esfuerzos. Puesto que
la puerta A tiene X en su salida, la salida se elimina y se ponen X en sus dos entradas. Como
todas las puertas conectadas a las puertas B y C tienen X en sus entradas, pueden eliminarse y
poner X en sus entradas. No pueden quitarse las puertas D y E, puesto que cada una est conectada a una puerta sin una X en su entrada. El circuito resultante se muestra como la clula izquierda en Figura 5-12(b).
Para un incrementador con n b 3 bits, la clula menos significativa del incrementador se
coloca en la posicin 0, la clula normal en posiciones de la 1 a la n . 2, y la clula ms significativa en la posicin n . 1. En este ejemplo, la clula del extremo derecho en la posicin 1 es
la contrada, pero, si desea, podra reemplazarse por la clula de la posicin 2 con B0 % 0 y
C0 % 1. Igualmente, podra generarse la salida C3, pero no se usa. En ambos casos, se sacrifican
el coste y la eficacia para hacer todas las clulas idnticas.

FUNCIONES Y CIRCUITOS ARITMTICOS

213

Decremento
Decrementar es sumar un valor negativo fijo a una variable aritmtica, el valor fijo empleado
ms frecuentemente es .1. En el Ejemplo 5-6 ya se ha diseado un decrementador. Otra posible alternativa sera disear un decrementador basndonos en un sumador-restador como circuito de partida, aplicando B % 0...01 y C0 % 0, y seleccionando la operacin de resta haciendo
S % 1. Partiendo de un sumador-restador, tambin podemos usar la contraccin para disear un
circuito que incremente para S % 0 y decremente para S % 1 aplicando B % 0...01, C0 % 0, y
permitiendo a S seguir siendo una variable. En este caso, el resultado es una clula de la complejidad de un sumador completo en las posiciones de bits normales. De hecho, volviendo a los
orgenes, redefiniendo la funcin de acarreo y diseando aquella clula empleando esta redefinicin, el coste pueden disminuirse un poco. De lo que se deduce que la contraccin, aunque produce una implementacin, puede no proporcionar el resultado con menor coste o mejor rendimiento.

Multiplicacin por constantes


Suponiendo que el circuito de la Figura 5-11 se emplee como base para la multiplicacin, se
consigue multiplicar por una constante simplemente aplicando la constante como el multiplicador A. Si el valor para una determinada posicin de bits es 1, entonces el multiplicando se aplicar al sumador. Si el valor para una posicin de bit es 0, entonces se aplicarn 0 al sumador y
el sumador se eliminar por contraccin. En ambos casos, las puertas AND se quitarn. El proceso se ilustra en la Figura 5-13(a). Para este caso, el multiplicador se ha puesto a 101. En la
contraccin, puesto que 0 ! B % B, el valor del acarreo de salida es siempre 0. El resultado
final de la contraccin es un circuito que lleva los dos bits de menor peso de B a las salidas C1 y
C0. El circuito suma los dos bits ms significativo de B a B desplazando dos posiciones a la
izquierda y aplica el resultado del producto a las salidas desde C6 hasta C2.
Se produce un caso especialmente importante cuando la constante es igual 2i (es decir, para
la multiplicacin 2i # B). En este caso, slo aparece un 1 en el multiplicador y toda la lgica se
elimina, convirtiendo el circuito nicamente en cables. En este caso, para un 1 en la posicin i,
el resultado es B seguido por i 0. El bloque funcional que resulta es simplemente una combinacin de desplazamientos y relleno a 0. La funcin de este bloque se denomina desplazamiento a
izquierda de i posiciones con relleno a ceros. El relleno a ceros se refiere a aadir 0 a la derecha (o a la izquierda) de un operando como B. El desplazamiento es una operacin muy importante aplicada tanto a datos numricos como no numricos. El resultado de contraer una multiplicacin por 22 (es decir, un desplazamiento a izquierdas de 2 posiciones de bits) se muestra en
Figura 5-13(b).

Divisin por constantes


Puesto que no hemos tratado la operacin de divisin, nuestra discusin sobre la divisin por
constantes se limitar a la divisin por las potencias de 2 (es decir, por 2i en binario). Dado que
la multiplicacin por 2i resulta de aadir i 0 a la derecha del multiplicando, por analoga, la
divisin por 2i resulta de eliminar los i bits menos significativos del dividendo. Los bits restantes son el cociente y los bits desechados son el resto. La funcin de este bloque se denomina
desplazamiento a derechas de i posiciones. Del mismo modo que el desplazamiento a izquierdas, el desplazamiento a derechas es igualmente una operacin muy importante. El bloque fun-

214 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

A0  1
B3

B2

B1

B0

A1  0
B3

B2

B1

B0
0

Acarreo
de salida

0
Sumador de 4 bit
Suma

A2  1
B3

B2

B1

Acarreo
de salida

B0

Sumador de 4 bit
Suma

C6

C5

C4

C3

C2

C1

C0

(a)
B3

C5

C4

B2

C2

C3

B1

B0

C1

C0

C1

C2

(b)
B3

B2

C3

C2

B1

B0

C1

C0
(c)

 FIGURA 5-13
Contraccin de un multiplicador: (a) para 101 # B, (b) para 100 # B y (c) para B $ 100

cional para la divisin por 22 (es decir, desplazamiento a derechas de 2 posiciones) se muestra
en Figura 5-13(c).

Relleno a ceros y extensin


El relleno a ceros, como se ha definido previamente para la multiplicacin por una constante,
tambin puede usarse para aumentar el nmero de bits de un operando. Por ejemplo, suponga
que el byte 01101011 es la entrada de un circuito que necesita una entrada de 16 bits. Una ma-

FUNCIONES Y CIRCUITOS ARITMTICOS

215

nera posible de generar la entrada de 16 bits es rellenar a ceros por la izquierda con ocho 0 para
producir 0000000001101011. Otra opcin es rellenar a ceros por la derecha para producir
0110101100000000. El primer planteamiento sera apropiado para operaciones como la suma o
la resta. La ltima aproximacin podra usarse para efectuar una multiplicacin de 16 bits con
baja precisin, en la que el byte ms significativo representa los 8 bits ms significativos del
resultado, mientras que el byte menos significativo es ignorado.
Frente al relleno a ceros, la extensin del signo se emplea para aumentar el nmero de bits
en un operando usando la representacin en complemento para los nmeros con signo. Si el
operando es positivo, entonces los bits pueden ser agregados a la izquierda extendiendo el signo
del nmero (0 para positivo y 1 para negativo). El byte 01101011 que representa 107 en decimal, extendido a 16 bits se vuelve 0000000001101011. El byte 10010101, que en complemento
a 2 representa .107, extendido a 16 bits se vuelve 1111111110010101. La razn para utilizar
la extensin del signo es conservar la representacin en complemento para los nmeros con signo. Por ejemplo, si 10010101 estuviera extendido con 0, la magnitud representada sera muy
grande y extensa, y el bit del extremo izquierdo que debera ser un 1 para un signo menos sera
incorrecto en la representacin en complemento a 2.
ARITMTICA DECIMAL Un suplemento que discute las operaciones aritmticas decimales y sus
implemetaciones circuitales est disponible en la pgina web del libro.

5-7 REPRESENTACIONES HDL-VHDL


Hasta ahora, todas las descripciones usadas de VHDL contenan slo una nica entidad. Las
descripciones que representan circuitos que emplean jerarqua tienen entidades mltiples, una
para cada elemento distinto de la jerarqua, tal y cmo se muestra en el prximo ejemplo.
EJEMPLO 5-7 VHDL jerrquico para un sumador de 4 bits con acarreo serie
Los ejemplos de las Figuras 5-14 y 5-15 recurren a tres entidades para construir la descripcin
jerrquica de un sumador de 4 bits con acarreo serie. El estilo empleado para las arquitecturas
ser una mezcla de descripcin estructural y de flujo de datos. Las tres entidades son un semisumador, un sumador completo basado en semi-sumadores, y el propio sumador de 4 bits. La
arquitectura de halfadder consiste en dos asignaciones de flujo de datos, una para s y otra
para c. La arquitectura del fulladder usa halfadder como componente. En la suma, se
declaran tres seales internas, hs, hc, y tc. Estas seales se aplican a dos semi-sumadores y
tambin se emplean en una asignacin del flujo de datos para construir el sumador completo de
la Figura 5-4. En la entidad adder4, simplemente se conectan juntos los cuatro componentes
del sumador completo usando las seales de la Figura 5-5.
Observe que mientras C0 y C4 son entrada y salida respectivamente, sin embargo C(0) y
C(4) son seales internas (es decir, ni entradas ni salidas). C(0) se asigna a C0 y C4 se asigna a
C(4). El uso de C(0) y C(4) separadamente de C0 y C4 no es esencial aqu, pero es til para
ilustrar una restriccin de VHDL. Suponga que queremos aadir la deteccin de desbordamiento al sumador tal y como aparece en la Figura 5-9. Si C(4) no se define separadamente, entonces podramos intentar escribir
V <= C(3) xor C4

216 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

En VHDL, esto es incorrecto. Una salida no puede usarse como seal interna. Entonces, hay
que definir una seal interna para utilizar en lugar de C4 (por ejemplo, C(4)) dando
V <= C(3) xor C(4)

 FIGURA 5-14
Descripcin jerrquica de flujo de datos/estructural de un sumador de 4 bits

FUNCIONES Y CIRCUITOS ARITMTICOS

217

architecture structural_4 of adder_4 is


component full_adder
port(x, y, z : in std_logic;
s, c : out std_logic);
end component;
signal C: std_logic_vector(4 downto 0);
begin
Bit0: full_adder
port map (B(0), A(0), C(0), S(0), C(1));
Bit1: full_adder
port map (B(1), A(1), C(1), S(1), C(2));
Bit2: full_adder
port map (B(2), A(2), C(2), S(2), C(3));
Bit3: full_adder
port map (B(3), A(3), C(3), S(3), C(4));
C(0) <= C0;
C4 <= C(4);
end structural_4;
 FIGURA 5-15
Descripcin jerrquica de flujo de datos/estructural de un sumador de 4 bits (continuacin)

Descripcin de comportamiento
El sumador de 4 bits proporciona una oportunidad para ilustrar la descripcin de circuitos con
niveles superiores al nivel lgico. Estos niveles de descripcin se refieren como nivel de comportamiento o nivel de transferencia entre registros. Estudiaremos especficamente el nivel de
transferencia entre registros en el Captulo 7. An sin estudiar el nivel de transferencia entre
registros, sin embargo, podemos mostrar una descripcin del nivel de comportamiento.
EJEMPLO 5-8 VHDL de comportamiento de un sumador de 4 bits con acarreo serie
La Figura 5-16 muestra la descripcin de comportamiento para el sumador de 4 bits. En la arquitectura de la entidad adder4b, la suma lgica se describe por una nica declaracin que
usa + y &. El + representa la suma y el & representa una operacin denominada concatenacin.
El operador de concatenacin combina dos seales en una sola seal que tiene un nmero de
bits igual a la suma de los nmeros de bits de cada una de las seales originales. En el ejemplo,
'0' & A representa la seal
'0' A(3) A(2) A(1) A(0)

con 1 ! 4 % 5 seales. Observe que '0', que aparece a la izquierda en la expresin de la concatenacin, aparece a la izquierda en el listado de la seal. Por consistencia, todas las entradas
de la suma se convierten en cantidades de 5 bits por concatenacin, ya que la salida, incluyendo
C4, es de 5 bits. Esta conversin no es necesaria, pero es un planteamiento seguro.
Dado que ! no puede realizarse en el tipo stdlogic, necesitamos un paquete adicional
para definir la suma para el tipo stdlogic. En este caso estamos usando stdlogicarith,
un paquete presente en la librera ieee. Adems, deseamos definir la suma especficamente sin
signo, por lo que emplearemos la extensin unsigned . Tambin ocurre que la concatenacin en
VHDL no puede usarse en el lado izquierdo de una sentencia de asignacin. Para obtener C4 y S
como resultado de la suma, se declara una seal sum de 5 bits. Se asigna el resultado de la

218 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

-- Sumador de 4 bits: descripcin de comportamiento


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity adder_4_b is
port(B, A : in std_logic_vector(3 downto 0);
C0 : in std_logic;
S : out std_logic_vector(3 downto 0);
C4: out std_logic);
end adder_4_b;
architecture behavioral of adder_4_b is
signal sum : std_logic_vector(4 downto 0);
begin
sum <= ('0' & A) + ('0' & B) + ("0000" & C0);
C4 <= sum(4);
S <= sum(3 downto 0);
end behavioral;
 FIGURA 5-16
Descripcin de comportamiento de un sumador completo de 4-bits

suma, incluyendo el acarreo de salida, a la seal sum. Por ltimo, las dos sentencias siguientes

son asignaciones adicionales sobre sum para obtener las salidas C4 y S.
Esto completa nuestra introduccin a VHDL para los circuitos aritmticos. Continuaremos
con ms VHDL presentando maneras de describir los circuitos secuenciales en el Captulo 6.

5-8 REPRESENTACIONES HDL-VERILOG


Hasta ahora, todas las descripciones empleadas han contenido nicamente un solo mdulo. Las
descripciones que representan circuitos que usan jerarqua tienen varios mdulos, uno para cada
elemento distinto de la jerarqua, tal y cmo se muestra en el siguiente ejemplo.
EJEMPLO 5-9 Verilog jerrquico para un sumador acarreo serie de 4 bits
La descripcin de la Figura 5-17 recurre a tres mdulos para representar el diseo jerrquico
para un sumador de 4 bits con acarreo serie. El estilo usado para los mdulos ser una mezcla
de descripcin estructural y descripcin de flujo de datos. Los tres mdulos son un semi-sumador, un sumador completo construido a partir de semi-sumadores, y el propio sumador de 4 bits.
El mdulo halfadder consiste en dos asignaciones de flujo de datos una para s y otra
para c. El mdulo fulladder usa el halfadder como componente, como en la Figura 5-4.
En el mdulo fulladder se declaran tres cables internos, hs, hc, y tc. Se aplican las entradas, salidas y estos cables a los dos semi-sumadores y mediante la OR de tc y hc se forma el
acarreo c. Note que los mismos nombres pueden usarse en mdulos diferentes (se usan por
ejemplo, x, y, s, y c en halfadder y fulladder).
En el mdulo adder4 simplemente se conectan juntos los cuatro sumadores completos mediante las seales de la Figura 5-5. Observe que C0 y C4 son entrada y salida respectivamente,
mientras que C(3) a C(1) son seales internas (es decir, ni entradas ni salidas).

FUNCIONES Y CIRCUITOS ARITMTICOS

 FIGURA 5-17
Descripcin jerrquica de flujo de datos/estructural Verilog para un sumador de 4-bits

219

Descripcin de comportamiento
El sumador de 4 bits proporciona una oportunidad para ilustrar la descripcin de circuitos con
niveles superiores a un nivel lgico. Tales niveles de descripcin se denominan nivel de comportamiento o nivel de transferencia entre registros. Estudiaremos especficamente el nivel de
transferencia entre registros en el Captulo 7. An sin estudiar el nivel de transferencia entre
registros, podemos mostrar sin embargo la descripcin a nivel de comportamiento para el sumador de 4 bits.
EJEMPLO 5-10 Verilog de comportamiento para un sumador de 4 bits con acarreo serie
La Figura 5-18 muestra la descripcin Verilog para el sumador. En el mdulo adder4bv, la
suma lgica se describe mediante una nica sentencia que usa ! y {}. El ! representa la suma
y el {} representa una operacin denominada concatenacin. La operacin ! realizada sobre
los tipos de datos del cable es sin signo. La concatenacin combina dos seales en una sola

220 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

seal que tiene un nmero de bits igual a la suma del nmero de bits en las seales originales.
En el ejemplo, {C4, S} representa el vector
C4 S[3] S[2] S[1] S[0]

con 1 ! 4 % 5 seales. Observe que C4 aparece a la izquierda en la expresin de la concatenacin y aparece a la izquierda en el listado de la seal.
// Sumador de 4 bits: descripcin Verilog de comportamiento
module adder_4_b_v(A, B, C0, S, C4);
input[3:0] A, B;
input C0;
output[3:0] S;
output C4;
assign {C4, S} = A + B + C0;
endmodule

 FIGURA 5-18
Descripcin de comportamiento de un sumador completo de 4-bits usando Verilog

Esto completa nuestra introduccin a Verilog para los circuitos aritmticos. En el Captulo 6
se presentarn los mecanismos ofrecidos por Verilog para la descripcin de circuitos secuenciales.

5-9 RESUMEN DEL CAPTULO


En este captulo se han presentado circuitos que efectan operaciones aritmticas. Se ha tratado
en detalle la implementacin de sumadores binarios, incluso del sumador con acarreo paralelo
para mejorar el rendimiento. Se ha mostrado la resta de nmeros binarios sin signo empleando
el complemento a 2 y a 1, as como la representacin de nmeros binarios con signo, y su suma
y su resta. El sumador-restador, desarrollado para los binarios sin signo tambin se ha utilizado
para sumar y restar directamente nmeros con signo en complemento a 2. Se ha realizado una
breve introduccin a la multiplicacin binaria usando circuitos combinacionales compuestos de
puertas AND y sumadores binarios.
Igualmente se han presentado operaciones aritmticas adicionales como el incremento, el
decremento, la multiplicacin y divisin por una constante, y los desplazamientos. Se obtuvieron aplicaciones para estas operaciones por medio de una tcnica de diseo denominada contraccin. Tambin se han presentado el relleno con ceros y la extensin del signo del operando.
Las ltimas dos secciones del captulo han proporcionado una introduccin a las descripciones de circuitos aritmticos en VHDL y Verilog. Ambos HDLs se han ilustrado estudiando las
descripciones a nivel funcional y de comportamiento para varios bloques funcionales del captulo.

REFERENCIAS
1. MANO, M. M.: Digital Design, 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 2002.
2. WAKERLY, J. F.: Digital Design: Principles and Practices, 3rd ed. Englewood Cliffs, NJ:
Prentice Hall, 2000.
3. High-Speed CMOS Logic Data Book. Dallas: Texas Instruments, 1989.

FUNCIONES Y CIRCUITOS ARITMTICOS

4.

5.
6.
7.
8.

9.
10.
11.
12.

221

IEEE Standard VHDL Language Reference Manual. (ANSI/IEEE Std 1076- 1993; revision of IEEE Std 1076-1987). New York: The Institute of Electrical and Electronics Engineers, 1994.
SMITH, D. J.: HDL Chip Design. Madison, AL: Doone Publications, 1996.
PELLERIN, D. and D. TAYLOR: VHDL Made Easy! Upper Saddle River, NJ: Prentice Hall
PTR, 1997.
STEFAN, S. and L. LINDH: VHDL for Designers. London: Prentice Hall Europe, 1997.
IEEE Standard Description Language Based on the Verilog4 Hardware Description Language (IEEE Std 1364-1995). New York: The Institute of Electrical and Electronics Engineers, 1995.
PALNITKAR, S.: Verilog HDL: A Guide to Digital Design and Synthesis. Upper Saddle River, NJ: SunSoft Press (A Prentice Hall Title), 1996.
BHASKER, J.: A Verilog HDL Primer. Allentown, PA: Star Galaxy Press, 1997.
THOMAS, D., and P. MOORBY: The Verilog Hardware Description Language 4th ed. Boston: Kluwer Academic Publishers, 1998.
CILETTI, M.: Modeling, Synthesis, and Rapid Prototyping with the Verilog HDL, Upper
Saddle River, NJ: Prentice Hall, 1999.

PROBLEMAS
El smbolo (!) indica problemas ms avanzados y el asterisco (*) indica que la solucin se
puede encontrar en el sitio web del libro: http://www.librosite.net/Mano.
5-1. Disee un circuito combinacional que obtenga la suma binaria en 2 bits S1S0 de dos nmeros de 2 bits A1A0 y B1B0 y que tiene una entrada de acarreo C0 y una salida de acarreo
C2. Disee el circuito entero que implemente cada una de las tres salidas como un circuito de dos niveles ms inversores para las variables de entrada. Empiece el diseo con las
siguientes ecuaciones para cada uno de los dos bits del sumador:
Si % Ai Bi Ci ! Ai Bi Ci ! Ai Bi Ci ! Ai Bi Ci
Ci!1 % Ai Bi ! Ai Ci ! Bi Ci
5-2. *El diagrama lgico de la primera etapa de un sumador de 4 bits, como el implementado
en el circuito integrado 74283, se muestra en la Figura 5-19. Verifique que el circuito
implementa un sumador completo.
5-3. *Obtenga los complementos a 1 y a 2 de los siguientes nmeros binarios sin signo:
10011100, 10011101, 10101000, 00000000, y 10000000.
5-4. Realice la resta indicada con los siguientes nmeros binarios sin signo tomando el complemento a 2 del substraendo:
(a) 11111 . 10000
(c) 1011110 . 1011110
(b) 10110 . 1111
(d) 101 . 101000
5-5. Repita el Problema 5-4 suponiendo que los nmeros estn en complemento a 2 con signo.
Use la extensin para igualar la longitud de los operandos. Se produce desbordamiento
durante las operaciones del complemento para cualquiera de los nmeros dados? Ocurre
desbordamiento en la resta global para cualquiera de los nmeros dados?

222 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

C1

B0
A0
S0

C0

 FIGURA 5-19
Circuito del Problema 5-2

5-6. *Calcule las operaciones aritmticas (!36) ! (.24) y (.35) . (.24) en binario empleando la representacin en signo y complemento a 2 para los nmeros negativos.
5-7. Los siguientes nmeros binarios tienen un signo en la posicin del extremo izquierdo y, si
son negativos, estn en complemento a 2. Realice las operaciones aritmticas indicadas y
verifique las respuestas.
(a) 100111 ! 111001
(b) 001011 ! 100110

(c) 110001 . 010010


(d) 101110 . 110111

Indique si hay desbordamiento para cada clculo.


5-8. !Disee tres versiones de un circuito combinacional cuya entrada es un nmero de 4 bits
y cuya salida es el complemento a 2 del nmero de la entrada, para cada uno de los siguientes casos:
(a) El circuito es un circuito simplificado a dos niveles, ms los inversores necesarios
para las variables de entrada.
(b) El circuito est formado por cuatro clulas idnticas de dos entradas y dos salidas,
una para cada bit. Las clulas se conectan en cascada, con lneas entre ellas similares
a un acarreo. El valor aplicado al bit de acarreo final derecho es 0.
(c) El circuito se redisea con lgica de acarreo anticipado para aumentar la velocidad
del circuito del apartado b, de modo que pueda emplearse en circuitos ms grandes
con 4n bits de entrada.
5-9. Emplee contraccin a partir de un sumador de 4 bits con acarreo para disear el circuito
de un incrementador por 2 de 4 bits con acarreo que aade el valor binario 0010 a su
entrada de 4 bits. La funcin a implementar es S % A ! 0010.
5-10. Use contraccin partiendo de un sumador-restador de 8 bits sin acarreo para disear un
circuito de 8 bits sin acarreo que incrementa su entrada en 00000010 cuando la entrada
S % 0 y disminuye su entrada en 00000010 cuando la entrada S % 1. Realice el diseo
diseando las distintas clulas de 1 bit necesarias e indicando qu tipo de clula emplear
en cada una de las ocho posiciones de bits.

FUNCIONES Y CIRCUITOS ARITMTICOS

223

5-11. !(a) Usando contraccin a partir de un sumador de 4 bits con acarreo anticipado, con entrada de acarreo y funciones de propagacin de grupo y acarreo de grupo disee un
circuito de 4 bits con acarreo paralelo que incrementa sus 4 bits de entrada en el
equivalente binario de 2.
(b) Repita el apartado (a), diseando un circuito con acarreo anticipado que sume 0000 a
su entrada de 4 bits.
(c) Construya un circuito de 16 bits con acarreo anticipado que incremente su entrada de
16 bits en 2, dando la salida de 16 bits ms un acarreo de salida. Emplee una contraccin adicional sobre los circuitos diseados en los apartados (a) y (b) para producir
C4, C8, y C12 y G0- 15 y P0-15 con las entradas P0-3, G0-3, P4-7, P8-11, y P12-15, y la lgica adicional necesaria para producir C16. (Observe que, debido al apartado (b), G4-7,
G8-11, y G12-15 son iguales a 0.)
5-12. Disee un circuito combinacional que compare dos nmeros sin signo de 4 bits A y B
para ver si B es mayor que A. El circuito tiene una salida X, de modo que X % 1 si A a B
y X % 0 si A % B.
5-13. !Repita el Problema 5-12 usando circuitos de tres entradas y una salida, uno para cada
uno de los cuatro bits. Los cuatro circuitos se conectan juntos en cascada a travs de las
seales de acarreo. Una de las entradas a cada clula es una entrada de acarreo, y la nica
salida es la del acarreo.
5-14. Repita el Problema 5-12 aplicando contraccin a un restador de 4 bits y usando el acarreo
externo como X.
5-15. Disee un circuito combinacional que compare los nmeros sin signo de 4 bits A y B para
ver si A % B o A a B. Use un circuito iterativo como en el Problema 5-14.
5-16. !Disee un sumador-restador en signo y magnitud de 5 bits. Divida el circuito para el
diseo en (1) la generacin del signo y la lgica de control del sumador-restador, (2) un
sumador-restador de nmeros sin signo que emplea el complemento a 2 del minuendo para la resta, y (3) la correccin lgica selectiva en complemento a 2 del resultado.
5-17. *El circuito sumador-restador de la Figura 5-8 tiene los siguientes valores para la entrada
de seleccin S y para las entradas de datos A y B:

(a)
(b)
(c)
(d)
(e)

0
1
1
0
1

0111
0100
1101
0111
0001

0111
0111
1010
1010
1000

Determine, en cada caso, los valores de las salidas S3, S2, S1, S0 y C4.
5-18. *Disee un multiplicador binario que multiplique dos nmeros sin signo de 4 bits. Emplee puertas AND y sumadores binarios.
5-19. Disee un circuito que multiplique un nmero de 4 bits por la constante 1010 aplicando
contraccin a la solucin del Problema 5-18.

224 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

5-20. (a) Disee un circuito que multiplique un dato de 4 bits por la constante 1000.
(b) Disee un circuito que divida un dato de 8 bits entre la constante 1000 dando un cociente de 8 bits y un resto de 8 bits.
Todos los archivos HDL para circuitos referidos en los restantes problemas estn disponibles en
ASCII para su simulacin y edicin en el sitio web del libro. Para los problemas que piden simulacin se necesita un compilador/simulador de VHDL o Verilog. En cualquier caso, siempre
se pueden escribir las descripciones HDL de muchos problemas sin necesidad de compilar o
simular.
5-21. Compile y simule el sumador de 4 bits de las Figuras 5-14 y 5-15. Aplique estmulos
que verifiquen el sumador completo ms a la derecha para las ocho posibles combinaciones de entrada; esto tambin sirve como chequeo para los otros sumadores completos. Aplique tambin combinaciones que verifiquen las conexiones de la cadena de acarreos entre todos los sumadores completos demostrando que puede propagarse un 0 y un
1 desde C0 hasta C4.
5-22. *Compile y simule la descripcin de comportamiento del sumador de 4 bits de la Figura
5-16. Suponiendo una implementacin con acarreo serie, aplique combinaciones que
comprueben el sumador completo de ms a la derecha para las ocho combinaciones de
entrada. Aplique tambin combinaciones que verifiquen las conexiones de la cadena de
acarreos entre todos los sumadores demostrando que puede propagarse un 0 y un 1 de
C0 a C4.
5-23. !Usando la Figura 5-16 como gua y un when else para S, escriba la descripcin de
comportamiento VHDL en alto nivel para el sumador-restador de la Figura 5-8. Compile
y simule su descripcin. Suponiendo una implementacin con acarreo serie, aplique
combinaciones que comprueben una de las etapas del sumador-restador para las 16 posibles combinaciones de entrada. Tambin, aplique las combinaciones para verificar las
conexiones de la cadena de acarreos entre los sumadores completos demostrando que
pueden propagarse un 0 y un 1 de C0 a C4.
5-24. !Escriba la descripcin jerrquica de flujo de datos en VHDL similar a la de las Figuras 5-14 y 5-15 para la lgica del sumador de 4-bits con acarreo anticipado de la Figura
5-6. Compile y simule su descripcin. Obtenga un conjunto de vectores de test que permitan verificar de forma convincente la lgica del sumador.
5-25. Compile y simule el sumador de 4 bits de la Figura 5-17. Aplique combinaciones que
comprueben el sumador completo ms a la derecha para las ocho posibles combinaciones de entrada; esto tambin servir como test para los otros sumadores completos. Aplique tambin combinaciones que verifiquen las conexiones de la cadena de acarreos entre todos los sumadores demostrando que puede propagarse un 0 y un 1 de C0 a C4.
5-26. *Compile y simule la descripcin de comportamiento del sumador de 4 bits de la Figura
5-18. Asumiendo una implementacin de acarreo serie, aplique las ocho combinaciones
de entrada para comprobar el sumador completo ms a la derecha. Aplique tambin
combinaciones que verifiquen las conexiones de la cadena de acarreos entre todos los
sumadores completos, demostrando que puede propagarse un 0 y un 1 de C0 a C4.
5-27. Usando la Figura 5-18 como gua y con una decisin binaria en S de la Figura 4-37,
escriba la descripcin de comportamiento de alto nivel en Verilog para el sumador-restador de la Figura 5-8. Compile y simule su descripcin. Suponiendo una implementa-

FUNCIONES Y CIRCUITOS ARITMTICOS

225

cin de acarreo serie, proponga un conjunto de vectores de test que (1) apliquen las 16
posibles combinaciones de entrada a la etapa sumadora-restadora del bit 2 y (2) obtengan el acarreo de salida de esta etapa a travs de alguna salida del circuito. Aplique tambin combinaciones que permitan verificar las conexiones de la cadena de acarreo entre
todos los sumadores completos, demostrando que puede propagarse un 0 y un 1 de C0
a C4.
5-28. !Escriba una descripcin de flujo de datos jerrquica en Verilog similar a la de la Figura 5-17 para el sumador de 4 bits con acarreo anticipado de la Figura 5-6. Compile y
simule su descripcin. Localice un conjunto de vectores de test que permitan verificar
de forma convincente el funcionamiento del circuito.

CAPTULO

6
CIRCUITOS SECUENCIALES

asta este momento hemos estudiado nicamente lgica combinacional. Aunque esta lgica es capaz de realizar interesantes operaciones tales como la
suma y la resta, la realizacin de secuencias de operaciones empleando lgica
combinacional requiere una cascada de muchas estructuras juntas. Sin embargo, el
hardware para lograrlo es muy costoso y poco flexible. Para conseguir secuencias de
operaciones tiles y flexibles, necesitamos poder construir circuitos que permitan
guardar la informacin entre las operaciones. Tales circuitos son los denominados circuitos secuenciales. Este captulo empieza con una introduccin a los circuitos secuenciales seguida por un estudio de los elementos bsicos para almacenar informacin binaria, denominados latches y flip-flops. Distinguiremos los latches de los flipflops y estudiaremos varios tipos de cada uno. Ms tarde analizaremos los circuitos
secuenciales consistentes en flip-flops y lgica combinacional. Las tablas y los diagramas de estado proporcionan una forma de describir el comportamiento de los circuitos secuenciales. Las siguientes secciones del captulo desarrollan tcnicas para disear circuitos secuenciales y verificar su correcto funcionamiento. En las dos ltimas
secciones, con los lenguajes de descripcin hardware VHDL y Verilog proporcionamos representaciones de los elementos de almacenamiento para los tipos de circuitos
secuenciales de este captulo.
Los latches, los flip-flops y los circuitos secuenciales son componentes fundamentales en el diseo de la mayora de la lgica digital. En la computadora genrica mostrada al principio del Captulo 1, los latches y los flip-flops estn muy extendidos en
todo el diseo. La excepcin son los circuitos de memoria, puesto que se disean
grandes cantidades de memoria como circuitos electrnicos en lugar de como circuitos lgicos. No obstante, debido al empleo masivo del almacenamiento basado en lgica, este captulo contiene material fundamental para que cualquiera entienda en
profundidad las computadoras y los sistemas digitales y cmo se disean.

228 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

6-1 DEFINICIN DE CIRCUITO SECUENCIAL


Los circuitos digitales que se han considerado hasta ahora han sido los combinacionales. Aunque la mayora de los sistemas digitales incluyen circuitos combinacionales, la mayora de los
sistemas encontrados en la prctica incluyen tambin elementos de almacenamiento por lo que
el sistema se describe como un sistema secuencial.
En la Figura 6-1 se muestra el diagrama de bloques de un circuito secuencial. Para formar
un circuito secuencial se interconecta un circuito combinacional con elementos de almacenamiento. Los elementos de almacenamiento son circuitos capaces de almacenar informacin binaria. La informacin binaria guardada en estos elementos en un momento dado define el estado
del circuito secuencial en ese momento. El circuito secuencial recibe la informacin binaria de
su entorno a travs de las entradas. Estas entradas, junto con el estado actual de los elementos
de almacenamiento, determinan el valor binario de las salidas. Tambin determinan los valores
empleados para determinar el prximo estado de los elementos de almacenamiento. El diagrama
de bloques demuestra que las salidas de un circuito secuencial no slo son funcin de las entradas, sino tambin del estado actual de los elementos de almacenamiento. El prximo estado de
los elementos de almacenamiento tambin es una funcin de las entradas as como del estado
presente. De este modo, un circuito secuencial se especifica por una sucesin en el tiempo de
entradas, estados interiores, y salidas.
Entradas

Salidas
Circuito
combinacional

Estado
futuro

Elementos de
almacenamiento

Estado
actual

 FIGURA 6-1
Diagrama de bloques de un circuito secuencial

Hay dos tipos principales de circuitos secuenciales, y su clasificacin depende del momento
en que se observan sus entradas y de los cambios de su estado interior. El comportamiento de
un circuito secuencial sncrono se define a partir del conocimiento de sus seales en instantes
discretos de tiempo. El comportamiento de un circuito secuencial asncrono depende tanto de
las entradas en cualquier instante de tiempo como del orden en que cambian las entradas a lo
largo del tiempo.
La informacin se almacena en los sistemas digitales de muchas maneras, incluso mediante
el empleo de circuitos lgicos. La Figura 6-2(a) muestra un buffer. Este buffer tiene un retardo
de propagacin tpd. Puesto que la informacin presente en el buffer de entrada en un instante de
tiempo t aparece en el buffer de salida en el instante t ! tpd, la informacin se ha almacenado
eficazmente durante un tiempo tpd. Pero, en general, deseamos almacenar la informacin durante un tiempo indefinido tpicamente mayor que el tiempo de retardo de una o incluso muchas
puertas. Este valor almacenado cambiar en determinados momentos en base a las entradas que
se apliquen al circuito y no depender del tiempo de retardo especfico de una puerta.
Suponga que la salida del buffer de la Figura 6-2(a) se conecta a su entrada tal y como
muestran las Figuras 6-2(b) y (c). Adems, suponga que el valor en la entrada del buffer en el
caso (b) ha sido 0 durante por lo menos un tiempo tpd. Entonces la salida producida por el buffer
ser 0 tras un tiempo t ! tpd. Esta salida se aplica a la entrada de modo que la salida volver a
ser 0 en un tiempo t ! 2tpd. Esta relacin entre la entrada y la salida se mantiene para todo t, de

CIRCUITOS SECUENCIALES

229

0
tpd
(b)

tpd

1t
2 pd

(a)

1t
2 pd
(d)

1
tpd
(c)

 FIGURA 6-2
Estructuras lgicas para almacenamiento de informacin

modo que los 0 se almacenarn indefinidamente. Puede emplearse el mismo argumento para
almacenar un 1 en el circuito de la Figura 6-2(c).
El ejemplo del buffer muestra cmo construir un almacenamiento a partir de lgica con retardo conectada en lazo cerrado. Cualquier lazo que produzca dicho almacenamiento deber
compartir con el buffer una propiedad, a saber, que no debe haber ninguna inversin alrededor
del lazo. Normalmente, un buffer se implementa con dos inversores, como se muestra en la Figura 6-2(d). La seal se invierte dos veces, es decir,
X11 % X
no originando ninguna inversin alrededor de todo el lazo. En efecto, este ejemplo ilustra uno
de los mtodos ms populares de implementar el almacenamiento en las memorias del ordenador. (Vase Captulo 9.) Sin embargo, aunque los circuitos de las Figuras 6-2(b) hasta (d)
pueden almacenar informacin, no hay ningn modo para poder variarla. Reemplazando los
inversores por puertas NOR o NAND, la informacin puede cambiarse. Los circuitos de almacenamiento asncronos denominados latches estn realizados de este modo y se discuten en la
prxima seccin.
En general, los circuitos asncronos ms complejos son difciles de disear, puesto que su
comportamiento depende mucho del retardo de propagacin de las puertas y del instante en que
cambian las entradas. As, la mayora de los diseadores optan por circuitos que se ajustan al
modelo sncrono. No obstante, algunas veces se necesitan diseos asncronos. Un caso muy importante es el empleo de latches asncronos como bloques para construir elementos de almacenamiento, denominados flip-flops, que guardan la informacin en circuitos sncronos.
Un circuito secuencial sncrono emplea seales que slo afectan a los elementos de almacenamiento en momentos determinados de tiempo. La sincronizacin se logra mediante un dispositivo de temporizacin denominado generador de reloj que produce un tren peridico de pulsos
de reloj. Los pulsos se distribuyen a lo largo del sistema de tal manera que los elementos de
almacenamiento sncronos slo estn afectados por determinados pulsos. En la prctica, los pulsos del reloj se aplican junto con otras seales que indican cundo deben cambiar los elementos
de almacenamiento. El valor de las salidas de los elementos de almacenamiento slo puede
cambiar en presencia de pulsos de reloj. Los circuitos secuenciales sncronos que emplean pulsos de reloj como entrada a los elementos de almacenamiento se denominan circuitos secuenciales sncronos. Este tipo de circuitos es el ms frecuentemente empleado, puesto que funcionan correctamente a pesar de las grandes diferencias en los retardos del circuito y porque son
relativamente fciles de disear.

230 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Los elementos de almacenamiento empleados en los circuitos secuenciales con entrada de


reloj se denominan flip-flops. Por simplicidad, suponga una nica entrada de seal de reloj por
circuito. Un flip-flop es un dispositivo de almacenamiento binario capaz de guardar un bit de
informacin y que presenta los parmetros temporales que se definirn en la Seccin 6-3. El
diagrama de bloques de un circuito secuencial sncrono se muestra en la Figura 6-3. Los flipflops reciben sus entradas del circuito combinacional y tambin de una seal de reloj con pulsos
de frecuencia fija que ocurren a intervalos fijos de tiempo, tal y como se muestra en el
diagrama de tiempos. Los flip-flops slo pueden cambiar en respuesta a un pulso de reloj. Para
el funcionamiento sncrono, en ausencia de seal de reloj, las salidas del biestable no cambian
aun cuando las salidas del circuito combinacional que controla sus entradas hayan cambiado de
valor. As, el lazo de realimentacin que se aprecia en la figura entre el circuito combinacional
y el flip-flop est roto. Como resultado, la transicin de un estado a otro slo ocurre a intervalos
de tiempo fijos dictados por los pulsos de reloj, dando el funcionamiento sncrono. Las salidas
del circuito secuencial se muestran como las salidas del circuito combinacional. Esto es vlido
incluso cuando algunas salidas del circuito secuencial son realmente las salidas de los biestables. En este caso, la parte del circuito combinacional entre las salidas de los flip-flops y las
salidas del circuito secuencial consiste slo en conexiones.
Un flip-flop tiene una o dos salidas, una para el valor normal del bit almacenado y otra optativa para el valor complementado del bit almacenado. La informacin binaria puede entrar en
un flip-flop de muy variadas maneras, hecho que da lugar a los diferentes tipos de flip-flops.
Nuestro enfoque esta centrado en el flip-flop ms empleado en nuestros das, el flip-flop D.
En la Seccin 6-6, se considerarn otros tipos de flip-flops. Como adelanto al estudio de los
flip-flops y de su funcionamiento, en la prxima seccin se presentan conocimientos bsicos
sobre los latches empleados para construir los flip-flops.

Entradas

Salidas

Circuito
combinacional
Flip-flops
Pulsos de reloj
(a) Diagrama de bloque

(b) Cronograma de los pulsos de reloj

 FIGURA 6-3
Circuito secuencial sncrono con reloj

6-2 LATCHES
Un elemento de almacenamiento puede mantener un estado binario indefinidamente (mientras
no se retire la alimentacin del circuito), hasta que una seal de entrada decida cambiar su estado. La mayor diferencia entre los distintos tipos de latches y flip-flops est en el nmero de
entradas que poseen y en la manera en que las entradas afectan al estado binario. Los elementos
de almacenamiento ms bsicos son los latches con los que normalmente se suelen construir los
flip-flops. Aunque a menudo se emplean latches dentro de los flip-flops, tambin se pueden usar

CIRCUITOS SECUENCIALES

231

mtodos de sincronizacin ms complejos para implementar directamente circuitos secuenciales. Sin embargo, el diseo de dichos circuitos va ms all del alcance del tratamiento bsico
que damos aqu. En esta seccin, el enfoque est en los latches como primitivas bsicas para
construir elementos de almacenamiento.

Latches RS y R1 S1
El biestable o latch RS es un circuito construido de dos puertas NOR contrapuestas. Se obtiene a
partir del elemento de almacenamiento de lazo sencillo de la Figura 6-2(d) sin ms que reemplazar los inversores por puertas NOR, tal y como se muestra en la Figura 6-4(a). Esta modificacin permite que el valor almacenado en el latch pueda cambiar. El latch tiene dos entradas
etiquetadas como S (por set) y R (por reset), y dos estados. Cuando la salida Q % 1 y Q1 % 0, se
dice que el biestable est en el estado SET. Cuando Q % 0 y Q1 % 1, est en el estado RESET.
Las salidas Q y Q1 son normalmente la una el complemento de la otra. Cuando ambas entradas
son iguales a 1 al mismo tiempo, se produce un estado indefinido con ambas salidas igual a 0.
En condiciones normales, las dos entradas del latch permanecen a 0 a menos que deseemos
que el estado cambie. La aplicacin de un 1 en la entrada S lleva al latch a colocarse en el
estado set (1). La entrada S debe volver a 0 antes de que R cambie a 1 para evitar que se llegue
al estado indefinido. Tal y como se aprecia en la tabla de funcionamiento de la Figura 6-4(b),
hay dos condiciones de entrada al circuito que causan el estado set. La condicin inicial es
S % 1, R % 0, que lleva al circuito al estado set. Aplicar un 0 en S con R % 0 coloca al circuito
en el mismo estado set. Despus de que ambas entradas vuelvan a 0, es posible colocar el estado
reset aplicando un 1 a la entrada R. Entonces, podemos retirar el 1 de R, y el circuito permanecer en el estado reset. De este modo, cuando ambas entradas son iguales a 0, el latch puede
estar en set o en reset, dependiendo en qu entrada se coloc ms recientemente un 1.
Si se aplica un 1 en ambas entradas del latch, las dos salidas Q y Q1 son 0. Esto produce un
estado indefinido porque viola el requisito de que las salidas son el complemento la una de la
otra. Cuando ambas entradas devuelven un 0 simultneamente tambin se produce un prximo
estado indeterminado o imprevisible. En el funcionamiento normal, estos problemas se evitan
asegurndonos que no se aplican 1 simultneamente en ambas entradas.
El comportamiento del latch RS descrito en el prrafo anterior se ilustra en la Figura 6-5
mediante el simulador lgico de formas de onda ModelSim. Inicialmente, se desconocen las entradas as como el estado del latch, indicado con un nivel lgico a medio camino entre un nivel
lgico 0 y 1. Cuando R pasa a ser 1 con S a 0, el latch se pone a 0, primero Q se hace 0 y, en
respuesta, Q b (que representa Q1 ) se hace 1. Despus, cuando R cambia a 0, el latch permanece
R (Reset)

Q
S (Set)
(a) Diagrama lgico

S R

Q Q

1 0
0 0

1 0
1 0

Estado Set

0 1
0 0

0 1
0 1

Estado Reset

1 1

0 0

Indefinido

(b) Tabla de funcionamiento

 FIGURA 6-4
Latch SR con puertas NOR

232 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Latch R-S
S
R
Q
Q_b
0

20 ns

40 ns

60 ns

80 ns

 FIGURA 6-5
Simulacin lgica del comportamiento del latch SR

a reset almacenando el valor 0 presente en Q. Cuando S pasa a 1 con R a 0, el latch se coloca en


set, primero Q b se pone a 0 y, en respuesta, despus Q se pone a 1. Los retardos en los cambios de Q y Q b tras un cambio en la entrada estn directamente relacionados con los retardos
de las dos puertas NOR empleadas en la implementacin del latch. Cuando S vuelve a ser 0, el
latch se mantiene en set, almacenando el valor 1 presente en Q. Cuando R pasa a ser 1 con S
igual a 0, el latch se resetea de modo que Q cambia a 0 y Q b responde cambiando a 1. El latch
permanece en reset cuando R vuelve a 0. Cuando S y R pasan a ser ambos 1, Q y Q b toman el
valor 0. Cuando S y R simultneamente retornan 0, Q y Q b toman valores desconocidos. Esta
forma de comportamiento con estados indeterminados para la secuencia de entradas (S1 , R1 ): (1,
1), (0, 0) resulta de suponer cambios simultneos en las entradas y retardos de puerta iguales. El
verdadero comportamiento indeterminado que se produce es debido a los retardos del circuito y
de ligeras diferencias en los tiempos en que cambian S y R en el circuito real. Sin tener en
cuenta los resultados de la simulacin, estos comportamientos indeterminados se ven como indeseables, y se trata de evitar la combinacin de entrada (1, 1). En el general, los cambios de
estado del latch slo responden a cambios en las entradas, permaneciendo inalterado el resto del
tiempo.
La Figura 6-6 muestra el latch S1 R1 con dos puertas NAND contrapuestas. Normalmente funciona con ambas entradas a 1, a menos que el estado del latch tenga que cambiar. La aplicacin
de un 0 en S provoca que la salida Q se coloque a 1, poniendo el latch en el estado set. Cuando
la entrada S se vuelve 1, el circuito permanece en el estado set. Con ambas entradas a 1, el
estado del latch se puede cambiar poniendo un 0 en la entrada R. Esto lleva al circuito al estado
reset permaneciendo as aun despus de que ambas entradas vuelvan a retomar el valor 1. Para
este latch NAND, la condicin indefinida se produce cuando ambas entradas son iguales a 0 al
mismo tiempo, una combinacin de entradas que debe evitarse.

 FIGURA 6-6
Latch S1 R1 con puertas NAND

CIRCUITOS SECUENCIALES

233

Comparando el latch NAND con el NOR, observe que las seales de entrada para el NAND
son las complementarias de las empleadas para el NOR. El latch NAND se denomina S1 R1 porque
exige una seal 0 para cambiar su estado. La barra sobre las letras indica el hecho de que las
entradas deben estar complementadas para actuar sobre el estado del circuito.
El funcionamiento de los latches bsicos NOR y NAND puede modificarse aadiendo una
entrada de control adicional que determina cundo puede cambiar el estado del latch. En la Figura 6-7 se muestra un latch SR con una entrada de control. Consiste en un latch NAND bsico
y dos puertas NAND adicionales. La entrada de control C acta como una seal habilitadora
para las otras dos entradas. Las salidas de las puertas NAND permanecen en el nivel lgico 1
mientras que la entrada de control est a 0. sta es la condicin de mantenimiento del dato para
el latch compuesto por dos puertas NAND. Cuando la entrada de control est a 1, se permite
que la informacin de las entradas S y R afecte al latch. El estado set se alcanza con S % 1,
R % 0, y C % 1. Para cambiar al estado reset, las entradas deben ser S % 0, R % 1 y C % 1. En
cualquier otro caso, cuando C retorna a 0, el circuito permanece en su estado actual. La entrada
de control C % 0 desactiva el circuito para que el estado de las salidas no cambie, sin tener en
cuenta los valores de S y R. Del mismo modo, cuando C % 1 y las entradas S y R son iguales a
0, el estado del circuito no cambia. Estas condiciones se muestran en la tabla de funcionamiento
que acompaa al diagrama.
Cuando las tres entradas son iguales a 1 se produce un estado indefinido. Esta condicin
pone ambas entradas S1 R1 del latch bsico a 0, dando un estado indefinido. Cuando la entrada de
control vuelve a ser 0, no se puede determinar el prximo estado, puesto que el latch ve las
entradas (0, 0) seguidas por (1, 1). El latch SR con entrada de control es un circuito importante
ya que otros latches y flip-flops se construyen en base a l. A veces se denomina flip-flop RS (o
SR) al latch SR con entrada de control: sin embargo, segn nuestra terminologa, no est cualificado como flip-flop, puesto que el circuito no cumple los requisitos de los biestables presentados en la prxima seccin.
C S R

Siguiente estado de Q

0 X X
1 0 0
1 0 1

No cambia
No cambia
Q  0; estado Reset

1 1 0

Q  1; estado Set

1 1 1

Indefinido

S
Q

Q
R
(a) Diagrama lgico

(b) Tabla de funcionamiento

 FIGURA 6-7
Latch SR con entrada de control

Latch D
Una manera de eliminar el estado indefinido no deseable en el latch SR es asegurar que las
entradas S y R nunca sean iguales a 1 al mismo tiempo. Esto se consigue con el latch D de la
Figura 6-8. Este latch slo tiene dos entradas: D (dato) y C (control). El complemento de la
entrada D va directamente a la entrada S1 , y se aplica D a la entrada R1 . Si la entrada de control es
0, el latch tiene ambas entradas a nivel 1, y el circuito no puede cambiar de estado, con independencia del valor de D. La entrada de D se muestrea cuando C % 1. Si D es 1, la salida Q se

234 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

S
Q

C
Q
R
(a) Diagrama lgico
C D

Siguiente estado de Q

0 X
1 0
1 1

No cambia
Q  0; Estado Reset
Q  1; Estado Set

(b) Tabla de funcionamiento

 FIGURA 6-8
Latch D

pone a 1, situando al circuito en el estado set. Si D es 0, la salida Q se pone a 0, llevando al


circuito al estado reset.
El latch D recibe su nombre de su capacidad para retener el dato en su interior. La informacin binaria presente en la entrada de datos del latch D se transfiere a la salida Q cuando se
habilita (1) la entrada de control. La salida sigue a los cambios en la entrada de datos, con tal de
que la entrada de control est habilitada. Cuando se deshabilita la entrada de control (0), la informacin binaria que estaba presente en la entrada de datos en el momento de la transicin se
retiene en la salida Q hasta que la entrada de control vuelva a habilitarse.
En los circuitos VLSI, el latch D se construye a menudo con puertas de transmisin (PTs),
tal y como se muestra en la Figura 6-9. La PT se defini en la Figura 2-35. La entrada C controla dos PTs. Cuando C % 1, la PT conectada a la entrada D conduce, y la PT conectada a la
salida Q est desconectada. Esto crea un camino desde la entrada D, a travs de dos inversores,
hasta la salida Q. As, la salida sigue a la entrada de datos con tal de que C permanezca activo
(1). Cuando C cambia a 0, la primera PT desconecta la entrada D del circuito, y la segundo PT
conecta los dos inversores a la salida en un lazo. De este modo, el valor que estaba presente en
la entrada D en el momento en que C pas de 1 a 0 se retiene en la salida Q por el lazo.
C

PT

PT

 FIGURA 6-9
Latch D con puertas de transmisin

CIRCUITOS SECUENCIALES

235

6-3 FLIP-FLOPS
El estado de un latch en un flip-flop puede cambiar cuando hay un cambio momentneo en el
valor de la entrada de control. Este cambio se denomina trigger o disparo, y habilita el flip-flop.
El latch D con pulsos de reloj en su entrada de control se dispara cada vez que aparece un pulso
de nivel lgico l. Mientras que el pulso permanezca en el nivel activo (1), cualquier cambio en
la entrada de datos cambiar el estado del latch. En este sentido, el latch es transparente, ya que
su valor de entrada puede verse en las salidas.
Como muestra el diagrama de bloques de la Figura 6-3, un circuito secuencial tiene un camino de realimentacin desde las salidas de los flip-flops hacia el circuito combinacional. Como consecuencia, las entradas de datos de los flip-flops se obtienen en parte de las salidas de
los mismos y de otros flip-flops. Cuando los latches se emplean como elementos de almacenamiento aparece un serio problema. Las transiciones de estado de los latches empiezan en cuanto
el pulso de reloj cambia al nivel lgico 1. Un nuevo estado aparece en la salida del latch mientras el pulso todava est activo. Esta salida est conectada a las entradas de algunos otros latches mediante un circuito combinacional. Si las entradas aplicadas a los latches cambian mientras el pulso de reloj todava est en 1 lgico, los latches respondern a los nuevos valores de
estado de los otros latches en lugar de a los valores de estado originales, y aparecern una sucesin de cambios de estado en lugar de uno solo. El resultado es una situacin imprevisible,
puesto que el estado puede seguir cambiando y continuar cambiando hasta que el reloj vuelva al
nivel lgico 0. El estado final depender de cunto tiempo ha estado el pulso del reloj en el
nivel lgico 1. A causa de este funcionamiento inestable, la salida de un latch no puede aplicarse ni directamente ni mediante lgica combinacional a la entrada del mismo u otro latch cuando
todos los latches del sistema se disparan con una nica seal de reloj.
Los flip-flops se disean de manera que funcionen correctamente cuando son parte de un
circuito secuencial con un solo reloj. Observe que el problema del latch es que es transparente:
en cuanto una entrada cambia, un breve instante de tiempo despus, la salida correspondiente
responde cambiando. Esta transparencia es lo que permite que un cambio en la salida del latch
produzca cambios adicionales en las salidas de otros latches mientras el pulso de reloj permanezca a 1. La clave del correcto funcionamiento de los flip-flops est en impedirles ser transparentes. En un flip-flop, antes de que una salida pueda cambiar, el camino de sus entradas hacia
sus salidas ha de romperse. De este modo, un flip-flop no puede ver el cambio de sus salidas
o de las salidas de otros flip-flops conectados en sus entradas, durante un mismo pulso de reloj.
As, el nuevo estado de un flip-flop slo depende del estado inmediatamente anterior, y los flipflops no pasan por mltiples cambios de estado.
Los latches pueden combinarse de dos maneras para formar un flip-flop. Una manera es
combinar dos latches tal que (1) las entradas se presenten al flip-flop cuando haya un pulso de
reloj en su estado de control y (2) el estado del flip-flop cambie slo cuando no est presente un
pulso de reloj. Este circuito se denomina flip-flop maestro-esclavo (master-slave). Otra manera
es crear un flip-flop que se dispare slo durante transicin de 0 a 1 (o de 1 a 0) en el reloj y que
se deshabilite para los restantes instantes, incluyendo el pulso de reloj. Se dice de este circuito
que es un flip-flop disparado por flanco. A continuacin, se presentan aplicaciones de estos dos
enfoques de disparo de flip-flops. Para la aproximacin de disparo maestro-esclavo necesitaremos considerar el flip-flop SR mientras que un sencillo flip-flop D se comportar igual ante
ambos tipos de disparos.

236 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Flip-flop maestro-esclavo
En la Figura 6-10 se muestra un flip-flop SR maestro-esclavo formado por dos latches y un inversor. Los smbolos S, C y R son entradas de control para el latch SR (Figura 6-7) que se denomina como latch SR con entrada de reloj. En la Figura 6-10, el latch SR con entrada de reloj de
la izquierda se denomina maestro, el derecho es el esclavo. Cuando la entrada de reloj C es 0, la
salida del inversor es 1. Entonces, el esclavo se habilita, y su salida Q es igual a la salida principal Y. Mientras, el maestro est deshabilitado porque C es 0. Cuando se aplica un pulso de reloj
con un nivel lgico 1, los valores en S y R controlan el valor Y almacenado en el maestro. El
esclavo, sin embargo, est deshabilitado siempre que el pulso permanezca a 1, porque su entrada C es igual a 0. Cualquier cambio en las entradas externas S y R cambia la salida Y del maestro, pero sin afectar a la salida Q del esclavo. Cuando el pulso vuelve a ser 0, el maestro se
deshabilita y se asla de las entradas S y R. Al mismo tiempo, el esclavo se habilita, y el valor
actual de Y se transfiere a la salida Q del flip-flop.
En la Figura 6-11 una simulacin lgica ModelSim muestra cmo se comporta un flip-flop
SR Maestro-Esclavo. Inicialmente, todos los valores son desconocidos incluso el reloj C. Cuando S y R valgan 0, y el reloj pase de 1 a 0, la salida Y del maestro y la salida Q del esclavo
seguirn siendo desconocidas, puesto que de hecho, el valor anterior se ha almacenando. Cuando S est en 1 con R a 0 el flip-flop est preparado para responder con set en el prximo pulso
de reloj. Cuando C se hace 1, Y se pone a 1. Cuando C retorna a 0, el valor Y del esclavo se
copia en la salida Q, que se pone a 1. Despus de que S vuelva a ser 0, Y y Q permanecen
inalterados, almacenando el valor de 1 a lo largo del prximo periodo de reloj. Ms tarde, R se
vuelve 1. Tras la siguiente transicin del pulso de reloj de 0 a 1, el maestro se pone 0 cambiando Y a 0. El esclavo no resulta afectado, porque su entrada C es 0. Puesto que el maestro es
un circuito interior, su cambio de estado no est presente en la salida Q. Aun cuando las entradas S y R cambian durante este intervalo y el estado del maestro responde cambiando, las salidas del flip-flop permanecen en su anterior estado. Slo cuando el pulso pasa a ser 0, se permite
que la informacin del maestro pase a travs del esclavo. En el ejemplo de la simulacin, el
valor Y % 0 se copia al esclavo haciendo que Q % 0. Observe que estos cambios tienen un retardo respecto de los cambios del pulso debido a los retardos de las puertas. Las entradas externas
S y R tambin pueden cambiar en cualquier momento despus de que el pulso de reloj haya
pasado su transicin negativa. Esto es porque, cuando la entrada C alcanza el 0, el maestro es
deshabilitado, y S y R no tienen efecto hasta el prximo pulso de reloj. La siguiente sucesin de
cambios en la seal muestra el comportamiento de captura de unos del flip-flop SR maestroesclavo. Al comienzo de un pulso de reloj se presenta un estrecho pulso de nivel lgico 1 en la

C
Y

 FIGURA 6-10
Flip-flop maestro-esclavo SR

CIRCUITOS SECUENCIALES

237

C
S
R
Y
Q
0

50 ns

100 ns

150 ns

200 ns

 FIGURA 6-11
Simulacin lgica de un flip-flop SR maestro-esclavo

entrada S. El maestro responde al 1 en S cambiando Y a 1. Entonces S vuelve a 0 mientras un


estrecho pulso de nivel lgico 1 ocurre en R. El maestro responde al 1 en R volviendo atrs y
cambiando Y a 0. Puesto que no hay ms valores de nivel lgico 1 ni en S ni en R, el maestro
contina almacenando el ltimo 0 que se copia al esclavo, cambiando Q a 0, en respuesta al
cambio de transicin del reloj a 0. As, el maestro captur ambos unos en S y en R. Ya que el
ltimo 1 se present en R, la salida Q ha permanecido a 0. En general, se supone que la respuesta correcta es la contestacin a un valor de entrada cuando el reloj pasa a 0. Entonces, en
este caso, la respuesta ha sido la correcta, aunque por accidente debido a los valores cambiantes
en el maestro. Para el prximo pulso de reloj, un estrecho pulso de nivel lgico 1 se presenta en
S que pone la salida Y del maestro a 1. El reloj pasa entonces a 0 y el valor 1 se transfiere al
esclavo apareciendo en Q. En este caso, el valor correcto de Q debera ser 0 puesto que Q era 0
antes del pulso del reloj, y S y R eran 0 justo antes de que el reloj pasase a 0. El flip-flop est en
un estado incorrecto con Q % 1, debido al xito de la captura de 1 en S. Para el ltimo pulso
del reloj, S y R se vuelven 1 antes de que el reloj pase a 0. Esto supone aplicar al maestro una
combinacin invlida que hace que las dos salidas Y e Y1 sean iguales a 1. Cuando el reloj cambia a 0, los biestables internos del maestro ven cmo sus entradas cambian de (0, 0) a (1, 1),
llevando al latch a un estado desconocido que se transfiere inmediatamente a las entradas del
esclavo que tambin entra en un estado desconocido. Esto demuestra que S % 1, R % 1 es una
combinacin de entrada no vlida para el flip-flop SR maestro-esclavo.
Ahora considere un sistema secuencial que contiene muchos flip-flops del tipo maestro-esclavo, con las salidas de algunos conectadas a las entradas de otros. Suponga que el pulso del
reloj de todos los flip-flops est sincronizado y se produce al mismo tiempo. Al principio de
cada pulso del reloj, algunos de los maestros cambian de estado, pero todos los esclavos permanecen en sus estados anteriores. Esto significa que los biestables esclavos todava permanecen
en sus estados originales, mientras que los flip-flops maestros han cambiado hacia estados nuevos. Despus de que los pulsos de reloj vuelvan a 0, algunos de los han cambiado de estado,
pero ninguno de estos nuevos estados afectar a cualquiera de los siguientes maestros hasta el
prximo pulso. De este modo, los estados de los flip-flops en un sistema sncrono pueden cambiar simultneamente para un mismo pulso del reloj, aunque se conecten sus salidas a sus entradas o a las entradas de otros flip-flops. Esto es posible porque las entradas del flip-flop slo
afectan a su estado mientras el pulso del reloj es 1 y el estado nuevo slo aparece en las salidas
despus de que el pulso del reloj ha vuelto a 0, asegurando as que los flip-flops no son transparentes.

238 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Para el funcionamiento fiable del circuito secuencial, todas las seales deben propagarse
desde las salidas de los flip-flops, a travs del circuito combinacional, y realimentar las entradas
del flip-flop maestro-esclavo, mientras el pulso de reloj permanece en el nivel lgico 0. Cualquier cambio que se produzca en las entradas del flip-flop despus de que el pulso del reloj haya
pasado al nivel lgico 1, intencionado o no, afectar al estado del flip-flop y puede producir el
almacenamiento de valores incorrectos. Suponga que el retardo en el circuito combinacional es
tal que S todava est cambiando despus de que el pulso del reloj haya pasado a 1. Tambin
suponga que, como consecuencia, el maestro se pone a 1 por la presencia de S % 1. Finalmente,
cuando S deja de cambiar, est a 0, indicando que el estado del flip-flop no ha cambiado desde
0. As, el valor 1 del maestro que se transferir al esclavo es errneo. De este comportamiento
se derivan dos consecuencias. Primero, el flip-flop maestro-esclavo tambin se denomina flipflop disparado por pulso, puesto que responde a los valores de entrada con un cambio de estado
en cualquier instante durante su pulso del reloj. Segundo, el circuito debe disearse para que los
retardos del circuito combinacional sean bastante cortos a fin de impedir que S y R cambien
durante el pulso del reloj.
Un flip-flop D maestro-esclavo puede construirse a partir de un flip-flop SR maestro-esclavo
sin ms que reemplazar el latch SR maestro por un latch D. El circuito resultante se muestra en
Figura 6-12. El circuito resultante cambia su valor en el flanco negativo del pulso de reloj tal y
como lo hace el flip-flop SR maestro-esclavo. Sin embargo, el flip-flop tipo D no muestra un
comportamiento tpico de disparo por pulso. Ms bien muestra un comportamiento disparado
por flanco, y en este caso en concreto, un comportamiento activo por flanco negativo o de bajada. As, un flip-flop D maestro-esclavo construido tal y como se ha indicado, tambin es un
flip-flop activo por flanco o disparado por flanco.

C
C

 FIGURA 6-12
Flip-flop D disparado por flanco negativo

Flip-flop disparados por flanco


Un flip-flop disparado por flanco ignora el pulso mientras est en un nivel constante y slo se
dispara durante una transicin de la seal de reloj. Algunos flip-flops disparados por flanco se
activan en el flanco positivo (transicin de 0 a 1), mientras que otros se activan en el flanco
negativo (transicin de 1 a 0) como se ha ilustrado en la subseccin anterior. El diagrama lgico
de un flip-flop tipo D disparado por flanco positivo que ser analizado aqu en detalle aparece
en la Figura 6-13. Este flip-flop toma exactamente la forma de un flip-flop maestro-esclavo,
siendo el maestro un latch D y el esclavo un latch SR o un latch D. Tambin, se aade un inversor a la entrada del reloj. Debido a que el maestro es un latch D, los flip-flops muestran un
comportamiento activo por flanco en lugar de maestro-esclavo o activo por pulso. Cuando la

CIRCUITOS SECUENCIALES

239

C
C

 FIGURA 6-13
Flip-flop D disparado por flanco positivo

entrada de reloj es igual a 0, el maestro se habilita y se hace transparente de modo que D sigue
al valor de la entrada. El esclavo es inhabilitado y mantiene el estado anterior del flip-flop fijo.
Cuando se produce un flanco positivo, la entrada de reloj cambia a 1. Esto desactiva al maestro
fijando su valor y habilita al esclavo para que copie el estado del maestro en la salida. El estado
del maestro que se copia en la salida es el estado presente en el flanco positivo del reloj. De esta
manera, el comportamiento parece ser disparado por flanco. Cuando la entrada de reloj es igual
a 1, el maestro es deshabilitado y no puede cambiar, de modo que el estado del maestro y del
esclavo permanezcan inalterados. Finalmente, cuando el reloj cambia de 1 a 0, el maestro se
habilita y comienza siguiendo al valor de D. Pero durante la transicin de 1 a 0, el esclavo se
deshabilita antes de que pueda alcanzar cualquier cambio del maestro. As, el valor almacenado
en el esclavo permanece inalterado durante esta transicin. Al final del captulo, en el Problema 6-3 se da una implementacin alternativa.

Smbolos grficos estndar


En la Figura 6-14 se muestran los smbolos grficos estndar para los diferentes tipos de latches
y flip-flops. Los flip-flops y los latches se designan por un bloque rectangular con las entradas a
la izquierda y las salidas a la derecha. Una de las salidas designa el estado normal del flip-flop,
y la otra, con un crculo, designa la salida complementada. El smbolo grfico para el latch SR o
el flip-flop SR tiene las entradas S y R indicadas dentro del bloque. En el caso del latch S1 R1 , se
aaden unos crculos a las entradas para indicar que el set y el reset son entradas activas por
nivel lgico 0. El smbolo para el latch D o el flip-flop D tiene las entradas D y C indicadas
dentro del bloque.
Debajo de cada smbolo, aparece un ttulo descriptivo que no es parte del smbolo. En los
denota un pulso positivo,
un pulso negativo, un flanco positivo y un flanco
ttulos,
negativo.
En los smbolos de los latches, el disparo por nivel 0 en lugar de por nivel 1 se denota aadiendo un crculo a la entrada de activacin. El maestro-esclavo es un flip-flop disparado por
pulso y se indica como tal con un smbolo en ngulo recto denominado indicador de salida
pospuesto delante de las salidas. Este smbolo muestra que la seal de salida cambia al final del
pulso. Para denotar que el maestro-esclavo responde a un pulso negativo (es decir, un pulso a 0
con el valor del reloj inactivo a 1), se pone un crculo en la entrada de C. Para denotar que el
flip-flop disparado por flanco responde a un flanco, se coloca el smbolo de una punta de flecha
delante de la letra C designando una entrada dinmica. Este smbolo de indicador dinmico
denota el hecho de que el flip-flop responde a transiciones de flancos en los pulsos de reloj de

240 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

SR

D con control
activo alto

SR

D con control
activo bajo

(a) Latches

SR disparado
por pulso alto

SR disparado
por pulso bajo

D disparado
por pulso alto

D disparado
por pulso bajo

(b) Flip-flops maestro-esclavo

D disparado
D disparado
en flanco de subida en flanco de bajada
(c) Flip-flops disparador por flanco

 FIGURA 6-14
Smbolos grficos estndar para latches y flip-flops

entrada. Un crculo fuera del bloque adyacente al indicador dinmico indica que el circuito se
activa con una transicin de flanco negativa. La ausencia de un crculo designa una activacin o
disparo por transicin de flanco positiva.
A menudo, todos los flip-flops empleados en un circuito son del mismo tipo de disparo,
como activos por flanco positivo. Entonces, todos los flip-flops cambiarn respecto al mismo
evento de reloj. Al usar flip-flops con diferentes tipos de disparo en un mismo circuito secuencial, uno puede desear que todas las salidas de los biestables cambien en relacin al mismo
evento. Esos flip-flops que se comportan de una manera contraria a la transicin de polaridad
adoptada pueden cambiarse aadiendo inversores a sus entradas de reloj. Un procedimiento preferido es proporcionar los pulsos positivos y negativos desde el generador de reloj principal cuidadosamente alineados. Nosotros aplicamos los pulsos positivos a los flip-flops disparados por
pulso positivo (maestro-esclavo) y a los flip-flops disparados por flanco negativo y aplicamos
los pulsos negativos a los flip-flops activos por pulso negativo (maestro-esclavo) y a los flipflops activos por flanco positivo. De este modo, todas las salidas de los flip-flops cambiarn al
mismo tiempo. Finalmente, para prevenir problemas concretos de sincronizacin, algunos diseadores usan flip-flops con diferentes disparos (es decir, flip-flops disparados por flanco positivo y flip-flops disparados por flanco negativo) con un solo reloj. En estos casos, se provoca
intencionadamente que las salidas de los biestables cambien en momentos diferentes.

CIRCUITOS SECUENCIALES

241

En este texto, suponemos que todos los flip-flop son disparados por flanco positivo, a menos
que se indique lo contrario. Esto mantiene un smbolo grfico uniforme para los flip-flops y
cronogramas consistentes.
Vase que no hay ninguna entrada al flip-flop D que produzca una condicin de no cambio. Esta condicin puede lograrse desactivando los pulsos de reloj en la entrada C o dejando
los pulsos de reloj y conectando la salida de modo que realimente la entrada D a travs de un
multiplexor cuando el estado del flip-flop deba permanecer igual. La tcnica que desactiva los
pulsos del reloj se denomina gating del reloj. Esta tcnica normalmente necesita menos puertas y disminuye la potencia consumida, pero se evita a menudo porque los pulsos del reloj, al
atravesar las puertas, llegan a los flip-flops con retardos. El retardo, denominado skew provoca que los flip-flops con reloj modificado con puertas y los que acceden directamente al reloj
cambien en momentos diferentes. Esto puede convertir el circuito en inestable, debido a que
las salidas de algunos flip-flops pueden alcanzar a otros mientras sus entradas todava afectan
a su estado.

Entradas asncronas
A menudo, los flip-flop proporcionan entradas especiales asncronas de set y reset (es decir, independientes de la entrada de reloj C). Las entradas que asincrnicamente ponen el flip-flop en
set se denominan set asncrono o preset. Se llaman reset asncrono o clear las entradas que
asncronamente resetean el flip-flop. La aplicacin de un 1 lgico (o un 0 lgico si hay un crculo) en estas entradas afecta a la salida del flip-flop en ausencia de seal de reloj. Cuando se
conecta un sistema digital, los estados de sus flip-flops pueden ser cualquiera. Las entradas directas son tiles para colocar, a priori, los flip-flops de un sistema digital en un estado inicial
normal para el funcionamiento con reloj.
En la Figura 6-15(a) se muestra el smbolo grfico estndard IEEE para un flip-flop D disparado por flanco positivo con entradas directas de set y reset. Las anotaciones, C1 y 1D, ilustran la dependencia del control. Una entrada nombrada como Cn donde n es cualquier nmero,
controla las otras entradas que empiezan con el nmero n. En la figura, C1 controla la entrada
1D. S y R no tienen ningn 1 delante, y por consiguiente, no estn controladas por la entrada de
reloj C1. Las entradas S y R tienen crculos en sus lneas de entrada indicando que son activas a
nivel bajo (es decir, un 0 aplicado producir la accin set o reset).
La tabla de la funcin en la Figura 6-15(b) especifica el funcionamiento del circuito. Las
primeras tres filas de la tabla especifican el funcionamiento de las entradas asncronas S y R.
Estas entradas se comportan como las entradas del latch S1 R1 NAND (vase la Figura 6-6), ope-

S
Q

1D

S R C D

Q Q

0 1 X X
1 0 X X
0 0 X X

1 0
0 1
Indefinido

1 1

0 1

1 1

1 0

S
D

C1
Q
R
(a) Smbolo grfico

(b) Tabla de funcionamiento

C
R
(c) Smbolo simplificado

 FIGURA 6-15
Flip-flop D con entradas asncronas de set y reset

242 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

rando independientemente del reloj. Las ltimas dos filas de la tabla de funcionamiento especifican el funcionamiento sncrono para los valores de D. El reloj C se muestra con una flecha
ascendente para indicar que el flip-flop es disparado por flanco positivo. Los efectos sobre la
entrada D son controlados por el reloj de la manera habitual.
La Figura 6-15(c) muestra un smbolo menos formal para el flip-flop disparado por flanco
positivo con entradas asncronas de set y reset. La posicin de S y R arriba y abajo del smbolo
en lugar de a la izquierda del borde implica que esos cambios de salida resultantes no se controlan por el reloj C.

Tiempos de los flip-flops


Hay parmetros de tiempo asociados con el funcionamiento de los dos flip-flops disparados por
pulso y activos por flanco. Estos parmetros se ilustran para un flip-flop SR maestro-esclavo y
para un flip-flop D disparado por flanco negativo en la Figura 6-16. Los parmetros para el
flip-flop D disparado por flanco positivo son los mismos excepto que son referenciados al flanco positivo del reloj en lugar de al flanco negativo del reloj.
Al emplear los flip-flops, debe tenerse en cuenta el tiempo de respuesta a sus entradas y a la
entrada de reloj C. Para ambos flip-flops, hay un tiempo mnimo llamado tiempo de setup, ts, es
el tiempo anterior a la ocurrencia de la transicin del reloj que provoca un cambio en la salida
durante el cual las entradas S, R o D deben mantener un valor constante. De no ser as, en el
caso de un flip-flop maestro-esclavo, el maestro podra cambiarse errneamente o podra adquirir un valor intermedio en el momento en que lo copiase el esclavo si es un flip-flop disparado
por flanco. De manera similar hay un tiempo mnimo denominado tiempo de mantenimiento
(tiempo de hold), th es el tiempo posterior a la transicin del reloj que causa la salida, durante el
cual las entradas S, R o D no deben cambiar. Si esto no fuera as, el maestro podra responder al
cambio de la entrada y podra estar cambiando en el momento en el que esclavo lo copia. Adems hay un ancho mnimo para el pulso de reloj tw que asegura que el maestro tiene tiempo
suficiente para capturar el valor de entrada correctamente. Entre estos parmetros, la mayora de
los flip-flop disparados por pulsos y activos por flanco difieren en el tiempo de setup tal y como
muestra la Figura 6-16. El flip-flop disparado por pulso tiene un tiempo de setup igual a la anchura de pulso de reloj, considerando que el tiempo del setup para el flip-flop disparado por
flanco puede ser mucho menor que la anchura de pulso de reloj. Como consecuencia, los flipflops activados por flanco tienden a proporcionar los diseos ms rpidos puesto que las entradas pueden cambiar ms tarde con respecto al prximo flanco del reloj activo.
Se definen los tiempos de retardo de propagacin, tPHL, tPLH o tpd de los flip-flops como el
intervalo entre el flanco activo del reloj y la estabilizacin de la salida hacia un nuevo valor.
Estos tiempos se definen del mismo modo que los tiempos de retardo para un inversor slo que
los valores son medidos desde el flanco del reloj activo en lugar de desde la entrada del inversor. En Figura 6-16, todos estos parmetros se designan por tP y se dan los valores mnimos y
mximos. Puesto que los cambios de las salidas de los flip-flops van aparte de las entradas de
control, el tiempo de retardo de propagacin mnimo debe ser ms largo que el tiempo de mantenimiento para el funcionamiento correcto. stos y otros parmetros se especifican en los catlogos que los fabricantes ofrecen para sus productos.
Parmetros temporales similares se pueden definir para los latches y para las entradas asncronas, con retardos de propagacin adicionales necesarios para modelar el comportamiento
transparente de los latches.

CIRCUITOS SECUENCIALES

243

twH  twH, min


twL  twL, min

C
ts

th

SR
tp, min
tp, max
Q
(a) Disparado por pulso (alto)
twH  twH, min
twL  twL, min

C
ts

th

D
tp, min
tp, max
Q
(b) Disparado por flanco (de bajada)

 FIGURA 6-16
Parmetros de tiempo de un flip-flop

6-4 ANLISIS DE CIRCUITOS SECUENCIALES


El comportamiento de un circuito secuencial viene determinado por las entradas, salidas, y por
el estado actual del circuito. Las salidas y el estado futuro son funcin de las entradas y del
estado actual. El anlisis de un circuito secuencial consiste en obtener una descripcin conveniente que demuestre la sucesin en el tiempo de entradas, salidas y estados.
Un diagrama lgico se reconoce como un circuito secuencial sncrono si incluye los flipflop con las entradas del reloj conectadas directamente o indirectamente a una seal de reloj y si
las entradas directas de set y reset permanecen sin usar durante el funcionamiento normal del
circuito. Los flip-flops pueden ser de cualquier tipo, y el diagrama lgico puede o no puede
incluir puertas combinacionales. En esta seccin, se muestra una representacin algebraica para
especificar el diagrama lgico de un circuito secuencial. Se presentan una tabla de estado y el
diagrama de estado que describen el comportamiento del circuito. Se emplearn ejemplos especficos a lo largo de la discusin para ilustrar los diferentes procedimientos.

Ecuaciones de entrada
El diagrama lgico de un circuito secuencial consiste en flip-flops y, normalmente, en puertas
combinacionales. Para dibujar el diagrama lgico del circuito secuencial toda la informacin
que se necesita es conocer el tipo de flip-flops empleados y una lista de funciones booleanas

244 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

para el circuito combinacional. La parte del circuito combinacional que genera las seales para
las entradas de los flip-flops puede describirse por un juego de funciones booleanas denominado
ecuaciones de entrada a los flip-flops. Adoptaremos la convencin de emplear el smbolo de la
entrada al flip-flop para nombrar la variable de la ecuacin de entrada a dicho flip-flop y usaremos el nombre de la salida del flip-flop como el subndice para la variable. A partir de este
ejemplo, es claro que la ecuacin de entrada al flip-flop es la expresin booleana para un circuito combinacional. El smbolo con subndice denota una variable de salida del circuito combinacional. Esta salida siempre se conecta a la entrada del flip-flop de ah el nombre ecuacin de
entrada al flip-flop.
Las ecuaciones de entrada de los flip-flops constituyen una expresin algebraica conveniente para especificar el diagrama lgico de un circuito secuencial. Suponen el tipo de flip-flop a
partir del smbolo de la letra, y especifican totalmente el circuito combinacional que maneja los
flip-flop. El tiempo no est explcitamente incluido en estas ecuaciones, pero est implcito en
el reloj y en la entrada C de los flip-flops. En la Figura 6-17 se muestra un ejemplo de un circuito secuencial. El circuito tiene dos flip-flops tipo D, una entrada X, y una salida Y que puede
especificarse por las siguientes ecuaciones:
DA % AX ! BX
DB % A1 X
Y % (A ! B)X1
Las primeras dos ecuaciones son para las entradas del flip-flop, y la tercera ecuacin especifica
la salida Y. Observe que las ecuaciones de las entradas emplean el smbolo D que es el mismo
que el smbolo de la entrada de los flip-flops. Los subndices A y B designan las respectivas
salidas de los flip-flops.

X
D

A
C

B
C

Clock

 FIGURA 6-17
Ejemplo de un circuito secuencial

CIRCUITOS SECUENCIALES

245

Tabla de estados
Pueden enumerarse las relaciones funcionales entre las entradas, salidas, y los estados de los
flip-flops de un circuito secuencial en una tabla de estados (o transiciones). La tabla de estados
para el circuito de la Figura 6-17 se muestra en la Tabla 6-1. La tabla est formada por cuatro
secciones, etiquetadas como estado actual, entradas, estado futuro, y salida. La seccin del estado actual muestra los estados de los flip-flops A y B en cualquier instante de tiempo t dado. La
seccin de la entrada da cada valor de X para cada posible estado actual. Observe que para cada
posible combinacin de la entrada, cada uno de los estados actuales aparece repetido. La seccin del estado futuro muestra el estado de los flip-flops un periodo de reloj ms tarde, en el
momento t ! 1. La seccin de salida da el valor Y para un instante de tiempo t para cada combinacin de estado actual y entrada.
 TABLA 6-1
Tabla de estados para el circuito de la Figura 6-17
Estado actual

Entrada

Estado futuro

Salida

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
0
1
0
1

0
1
0
1
0
0
0
0

0
0
1
0
1
0
1
0

Obtener una tabla de estado consiste primero en enumerar todas las posibles combinaciones
binarias de estados actuales y entradas. En la Tabla 6-1, hay ocho combinaciones binarias, desde 000 hasta 111. Entonces, se determinan los valores de los estados futuros a partir del diagrama lgico o de las ecuaciones de entrada de los flip-flops. Para un flip-flop D, se mantiene la
relacin A(t ! 1) % DA(t). Esto significa que el estado futuro del flip-flop A es igual al valor
actual en su entrada D. El valor de la entrada D est especificado en la ecuacin de entrada del
flip-flop como una funcin del estado actual de A y B y una entrada X. Adems, el estado futuro
del flip-flop A debe satisfacer la ecuacin
A(t ! 1) % DA % AX ! BX
La seccin del estado futuro en la tabla de estado, debajo de la columna A, tiene tres 1 donde el
estado actual y el valor de la entrada satisfacen las condiciones (A, X) % 11 o (B, X) % 11. De
manera similar, el estado futuro del flip-flop B se obtiene de la ecuacin de entrada
B(t ! 1) % DB % A1 X
y es igual a 1 cuando el estado actual de A es 0 y la entrada X es igual a 1. La columna de salida
se obtiene de la ecuacin de salida
Y % AX1 ! BX1

246 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La tabla de estado de cualquier circuito secuencial con flip-flops del tipo D se obtiene de
esta manera. En general, un circuito secuencial con m flip-flops y n entradas necesita 2m!n filas
en la tabla de estado. Los nmeros binarios desde 0 y hasta 2m!n . 1 se listan combinando las
columnas de entrada y de estado actual. La seccin del estado futuro tiene m columnas, una
para cada flip-flop. Los valores binarios para el estado futuro se obtienen directamente de las
ecuaciones de entrada de cada flip-flop D. La seccin de salida tiene tantas columnas como variables de salida. Sus valores binarios se obtienen del circuito o de las funciones booleanas de la
misma manera que en una tabla de verdad.
La Tabla 6-1 es unidimensional en el sentido de que el estado actual y las combinaciones de
entrada se combinan en una nica columna. Tambin se emplea frecuentemente una tabla de
estado bidimensional en la que el estado actual se coloca en la columna de la izquierda y las
entradas en la fila superior. El estado futuro se coloca en cada celda de la tabla para la combinacin correspondiente del estado actual y de la entrada. Una tabla bidimensional similar
se emplea para las salidas si dependen de las entradas. Esta tabla de estado se muestra en la
Tabla 6-2. Los circuitos secuenciales en los que las salidas dependen de las entradas, as como
de los estados presentes, se denominan Autmatas o Mquinas de Mealy. En cambio, si las salidas slo dependen de los estados actuales, entonces basta con una nica columna unidimensional. En este caso, los circuitos se denominan Autmatas de Moore. Cada modelo se nombra por
su creador.
 TABLA 6-2
Tabla de estados bidimensional para el circuito de la Figura 6-17
Estado futuro
Estado
actual

Salida

X%0

X%1

X%0

X%1

0
0
1
1

0
1
0
1

0
0
0
0

0
0
0
0

0
1
1
1

1
1
0
0

0
1
1
1

0
0
0
0

Como ejemplo de un Autmata de Moore, suponga que queremos obtener el diagrama lgico y la tabla de estado de un circuito secuencial especificado por la siguiente ecuacin de entrada al flip-flop:
DA % A S X S Y
y por la ecuacin de salida:
Z%A
El smbolo DA implica un flip-flop tipo D con la salida designada por la letra A. Las variables X
y Y se toman como las entradas y Z como la salida. En la Figura 6-18 se muestran el diagrama
lgico y la tabla de estados para este circuito. La tabla de estados tiene una columna para el
estado actual y una columna para las entradas. El estado futuro y la salida tambin estn en
columnas simples. El estado futuro se obtiene de la ecuacin de la entrada del flip-flop que
determina una funcin de paridad impar. (Vase la Seccin 2-8.) La columna de la salida simplemente es una copia de la columna para el estado actual A.

CIRCUITOS SECUENCIALES

X
Y

247

Clock
(a)
Estado
actual

Estado
Entradas futuro Salida

X Y

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
1
0
1
0
0
1

0
0
0
0
1
1
1
1

0
1
0
1
0
1
0
1

(b) Tabla de estados

 FIGURA 6-18
Diagrama lgico y tabla de estados para DA % A S X S Y

Diagrama de estados
La informacin disponible en una tabla de estados se puede representar grficamente en forma
de diagrama de estados. En este tipo de diagrama, un estado se representa por un crculo, y las
transiciones entre los estados se indican mediante lneas orientadas que conectan los crculos.
En la Figura 6-19 se dan ejemplos de diagramas de estados. La Figura 6-19(a) muestra el diagrama de estados para el circuito secuencial de la Figura 6-17 y su tabla de estados en la Tabla
6-1. El diagrama de estados proporciona la misma informacin que la tabla de estados y se obtiene directamente de l. El nmero binario dentro de cada crculo identifica el estado de los
flip-flops. En los Autmatas de Mealy, las lneas orientadas se etiquetan con dos nmeros binarios separados por una barra /. El valor de la entrada durante el estado actual precede a la barra,
y el siguiente valor tras la barra es el valor de la salida durante el estado actual aplicando dicha
entrada. Por ejemplo, la lnea orientada que va del estado 00 al 01 se etiqueta 1/0, significando
que cuando el circuito secuencial est en el estado actual 00 y la entrada es 1, la salida es 0.
Despus de la prxima transicin del reloj, el circuito va al siguiente estado, 01. Si la entrada
cambia a 0, entonces la salida se vuelve 1, pero si la entrada permanece a 1, la salida permanece
a 0. Esta informacin se obtiene del diagrama de estados a lo largo de las dos lneas orientadas
que parten del crculo con estado 01. Una lnea orientada que conecta un crculo consigo mismo
indica que no se produce ningn cambio de estados.
El diagrama de estados de la Figura 6-19(b) es para el circuito secuencial de la Figura 6-18.
Aqu, slo se necesita un nico flip-flop con dos estados. Hay dos entradas binarias, y la salida
slo depende del estado del flip-flop. En el Autmata de Moore, la barra no aparece en las

248 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

0/0

1/0

00

01
0/1

0/1

0/1

1/0

01, 10
00, 11

1/0

10

1/0

1/1

0/0
01, 10

11

(a)

00, 11

(b)

 FIGURA 6-19
Diagramas de estados

lneas orientadas puesto que las salidas slo dependen del estado y no de los valores de la entrada. En cambio, dentro del crculo y separada del estado por una barra, s se incluye la salida. En
el diagrama, por cada transicin de estado hay dos condiciones de entrada separadas por una
coma. Cuando hay dos variables de entrada, cada estado puede tener hasta cuatro lneas orientadas partiendo del crculo correspondiente, dependiendo del nmero de estados y del prximo
estado para cada combinacin binaria de los valores de entrada.
No hay ninguna diferencia entre una tabla de estados y un diagrama de estados, salvo su
manera de representarse. La tabla de estados se obtiene fcilmente a partir de un diagrama lgico dado y de las ecuaciones de la entrada. El diagrama de estados sigue directamente a la tabla
de estados. El diagrama de estados muestra una representacin grfica de las transiciones de
estados y es la forma ms apropiada para la interpretacin humana del funcionamiento del
circuito. Por ejemplo, el diagrama de estados de la Figura 6-19(a) muestra claramente que, empezando en el estado 00, la salida es 0 con tal de que la entrada permanezca a 1. La primera
entrada a 0 despus de una serie de 1 da una salida de 1 y enva el circuito hacia atrs, al estado inicial 00. El diagrama de estados de la Figura 6-19(b) muestra cmo el circuito permanece
en un estado dado con tal de que las dos entradas tengan el mismo valor (00 o 11). Slo hay
una transicin de estados entre los dos posibles estados cuando ambas entradas son diferentes
(01 o 10).

Temporizacin del circuito secuencial


Adems de analizar la funcin de un circuito, tambin es importante analizar su comportamiento en trminos de mximo retardo de la entrada hacia la salida y mxima frecuencia de reloj,
fmax a la que puede funcionar. En primer lugar, la frecuencia de reloj es simplemente la inversa
del periodo de reloj tp mostrado en la Figura 6-20. As que, la mxima frecuencia de reloj permitida corresponde al mnimo periodo de reloj aceptable, tp. Para determinar el valor mnimo
permitido para el periodo de reloj, necesitamos determinar el mayor retardo desde el flanco de
disparo del reloj hasta el prximo flanco de disparo de reloj. Estos retardos se miden en todos
los caminos posibles del circuito bajo los cuales se propagan las seales que cambian.
Cada uno de stos retardos tiene tres componentes: (1) un retardo de propagacin del flipflop, tpd, FF, (2) un retardo de la lgica combinacional a travs de la serie de puertas a lo largo
del camino, tpd, COMB, y (3) un tiempo setup del flip-flop, ts. Cuando un cambio en la seal se
propaga a lo largo del camino, se retrasa sucesivamente una cantidad igual a cada uno de estos
retardos. Observe que hemos empleado tpd, en lugar de valores ms concretos, tPLH y tPHL, tanto

CIRCUITOS SECUENCIALES

249

tp
C
tpd,FF

tCOMB

ts

tslack

(a) Disparado por flanco (de subida)


tp
C
tpd,FF

tCOMB

tslack

ts

(b) Disparado por pulso (bajo)

 FIGURA 6-20
Parmetros temporales del circuito secuencial

para los flip-flops como para las puertas lgicas combinacionales para simplificar los clculos
del retardo. La Figura 6-20 resume el grfico del retardo para los flip-flops activos por flanco y
activos por pulso.
Despus de un flanco positivo de reloj, si un flip-flop cambia, su salida cambia un tiempo
tp, FF despus del flanco de reloj. Este cambio entra en la lgica combinacional y se propaga
hacia la entrada de un flip-flop. Se necesita un tiempo adicional, tpd, COMB, para que dicho cambio alcance al segundo flip-flop. Finalmente, antes del prximo flanco positivo del reloj, este
cambio debe mantenerse en la entrada del flip-flop durante un tiempo de setup ts. Este camino,
CFF, FF se muestra junto con otros caminos posibles en la Figura 6-21. En los caminos CIN, FF
conectados a las entradas del primero, el tpd, FF se reemplaza por ti que es el ltimo tiempo que
Lgica
combinacional
PIN,OUT tpd, COMB
PIN, FF tpd, COMB
ti

tpd, COMB

PFF, OUT
PFF, FF

tpd, COMB

Flip-flops
Q
Clock

tpd, FF
C ts

 FIGURA 6-21
Caminos temporales para circuitos secuenciales

to

250 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

la entrada cambia despus del flanco del reloj positivo. Para un camino CFF, OUT conectado a las
salidas primarias, el tiempo ts se reemplazan por to que es el ltimo tiempo que la salida se
permite cambiar antes del prximo flanco del reloj. Finalmente, en el Modelo de Mealy, pueden
aparecer caminos combinacionales desde la entrada a la salida, CIN, OUT que emplean tanto ti
como to. Cada camino tiene un tiempo tslack, es un tiempo extra permitido ms all del periodo
de reloj necesario para el camino. De la Figura 6-21, resulta la siguiente ecuacin para un camino de tipo CFF, FF:
tp % tslack ! (tpd, FF ! tpd, COMB ! ts)
para asegurar que cualquier cambio de valor es capturado por el flip-flop receptor, los tslack deben ser mayores o iguales a cero para todos los caminos. Esto requiere que
tp n max (tpd, FF ! tCOMB ! ts) % tp, min
donde el mximo se toma sobre todos los caminos en los que se propagan las seales de
flip-flop en flip-flop. El prximo ejemplo presenta los clculos representativos para los caminos CFF, FF.
EJEMPLO 6-1 Clculo del periodo y la frecuencia del reloj
Suponga que todos los flip-flops empleados son del mismo tipo y que tienen tpd % 0.2 ns (nanosegundo % 10.9 segundos) y ts % 0.1 ns. Entonces el camino ms largo empezando y acabando
con un flip-flop ser el camino con el tpd, COMB ms grande. Es ms, suponga que el mayor
tpd, COMB es 1.3 ns y que tp se ha fijado a 1.5 ns. De la ecuacin anterior para tp, podemos escribir
1.5 ns % tslack ! 0.2 ! 1.3 ! 0.1 % tslack ! 1.6 ns
Resolviendo, tenemos tslack % .0.1 ns, con lo que este valor de tp es demasiado pequeo. A fin
de que tslack sea mayor o igual a cero para el camino ms largo, tp n tp, min % 1.6 ns. La mxima
frecuencia fmax % 1/1.6 ns % 625 MHz (megahertzio % 106 ciclos por segundo). Observamos
que, si tp es demasiado grande para satisfacer las especificaciones del circuito, o empleamos
clulas lgicas ms rpidas o debemos cambiar el diseo del circuito para acortar los caminos
problemticos del circuito manteniendo siempre la funcin deseada.

Es interesante apreciar cmo el tiempo de mantenimiento del flip-flop no aparece en la
ecuacin del periodo de reloj. Se relaciona con otra ecuacin de tiempos que trata con una o dos
situaciones especficas. En un caso, los cambios de salida llegan demasiado pronto a las entradas de uno o ms flip-flops. En el otro caso, las seales de reloj que alcanzan uno o ms flipflops se retardan de algn modo, una condicin denominada skew del reloj. El skew del reloj
tambin puede afectar a la frecuencia del reloj mxima.

Simulacin
La simulacin del circuito secuencial implica problemas que no se presentan en los circuitos
combinacionales. En primer lugar, en lugar de un conjunto de patrones de entrada para los que
el orden de aplicacin es irrelevante, hay que aplicar los patrones como una secuencia. Esta
secuencia supone la oportuna aplicacin de los patrones y de pulsos del reloj. Segundo, debe
existir alguna forma de colocar al circuito en un estado conocido. En realidad, la inicializacin a

CIRCUITOS SECUENCIALES

251

un estado conocido se lleva a cabo al principio de la simulacin aplicando una subsecuencia de


inicializacin. En el caso ms simple, esta subsecuencia es una seal de reset. Para flip-flops
que carecen de reset (o set), se necesita una sucesin ms larga que consiste normalmente en un
reset inicial seguido por una sucesin de patrones normales de entrada. Un simulador tambin
puede disponer de mecanismos para colocar el estado inicial ms adecuado, evitando as las
largas secuencias que pueden llegar a necesitarse hasta alcanzar dicho estado. Aparte de conseguir situar al circuito en un estado inicial, el tercer problema est en cmo observar el estado
para verificar su exactitud. En algunos circuitos, es necesario aplicar una serie adicional de entradas para determinar el estado del circuito en un punto determinado. La alternativa ms simple
es preparar la simulacin para que el estado del circuito pueda observarse directamente; la aproximacin para hacer esto vara, dependiendo del simulador y de si el circuito tiene o no, jerarqua. Una solucin algo ruda pero que funciona con todos los simuladores es aadir una salida
al circuito con un camino desde cada seal de variable de estados.
Un ltimo problema a debatir con ms detalle es en qu instantes se han de aplicar las entradas y observar las salidas del circuito en relacin al flanco activo del reloj. Inicialmente, discutimos estos tiempos para la simulacin funcional que tiene como objeto determinar o comprobar
la funcin del circuito. En la simulacin funcional, los componentes del circuito no tienen ningn retardo o un retardo muy pequeo. Mucho ms compleja resulta la simulacin temporal en
la que los elementos del circuito tienen retardos reales y cuyo objetivo es comprobar el funcionamiento apropiado del circuito en lo que se refiere a los tiempos.
Por defecto, en la simulacin funcional, algunos simuladores emplean retardos muy pequeos en los componentes de modo que puedan apreciarse las variaciones de las seales con tal de
que la escala de tiempos empleada en el grfico sea suficientemente pequea. Suponga una simulacin para su circuito en la que tanto el retardo del componente como los tiempos de setup
y hold para los flip-flops son todos de 0.1 ns y en la que el mayor retardo entre dos flancos
positivos de reloj consecutivos es de 1.2 ns. Si para su simulacin emplea un periodo de reloj de
1.0 ns, los resultados de la simulacin sern errneos siempre que el resultado dependa del retardo mayor. As, para la simulacin funcional con este simulador, debe escogerse un periodo
de reloj mayor o debe cambiarse el retraso predefinido por el usuario por un valor menor.
Adems del periodo del reloj, tambin es importante el instante en el que se aplican las entradas en relacin al flanco positivo del reloj. Para la simulacin funcional, con un retardo mnimo de componente predefinido, las entradas se deben presentar durante un ciclo de reloj antes
del flanco positivo, siempre lo antes posible y mientras que el reloj todava est a 1. Tambin es

Clock

Reset

Input
1
State

0
1

Output

 FIGURA 6-22
Simulacin temporal

252 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

el momento apropiado para cambiar los valores de las seales reset de modo que nos aseguremos de que la seal reset controla el estado en lugar de hacerlo el flanco del reloj o una combinacin sin sentido de reloj y reset.
El ltimo problema es el instante en el que se examina el resultado de la simulacin funcional. Como muy tarde, las variables de estado y las salidas deben alcanzar sus valores finales
antes del flanco positivo de reloj. Aunque es posible observar los valores en otros instantes, este
momento proporciona un tiempo de observacin seguro para la simulacin funcional.
En la Figura 6-22 simplemente se resumen las ideas presentadas hasta ahora. Los cambios
en las entradas en Reset e Input, encerradas un crculo azul, se producen alrededor del 25% del
ciclo del reloj. Los valores de la seales State y Out, tambin encerradas en un crculo azul, se
observan antes del 100% del ciclo del reloj.

6-5 DISEO DE CIRCUITOS SECUENCIALES


El diseo de circuitos secuenciales sncronos comienza a partir de una serie de especificaciones
y culmina en un diagrama lgico o una lista de funciones booleanas de las que puede obtenerse
el diagrama lgico. Frente a un circuito combinacional que se especifica totalmente por una tabla de verdad, un circuito secuencial necesita de una tabla de estados para su especificacin.
As, el primer paso en el diseo de un circuito secuencial es obtener una tabla de estados o una
representacin equivalente como un diagrama de estados.
Un circuito secuencial sncrono se realiza a partir de flip-flops y de puertas combinacionales. El diseo del circuito consiste en elegir los flip-flops y encontrar una estructura combinacional que, junto con los flip-flops, produzca un circuito que cumpla las especificaciones dadas.
El nmero mnimo de flip-flops viene determinado por el nmero de estados del circuito; n flipflops pueden representar como mucho 2n estados binarios. El circuito combinacional se deriva
de la tabla de estados evaluando las ecuaciones de entrada y de salida de los flip-flops. De hecho, una vez determinado el tipo y el nmero de flip-flops, el proceso del diseo transforma un
problema de circuitos secuenciales en un problema de circuitos combinacionales. De este modo,
pueden aplicarse las tcnicas de diseo de circuitos combinacionales.

Procedimiento del diseo


El siguiente procedimiento para el diseo de circuitos secuenciales es similar al empleado para
los circuitos combinacionales pero con algunos pasos adicionales:
1. Especificacin: escribir una especificacin para el circuito, si an no existe.
2. Formulacin: obtener un diagrama de estados o una tabla de estados a partir de la especificacin del problema.
3. Asignacin de estados: si slo ha sido posible obtener el diagrama de estados, obtener
la tabla de estados. Asignar los cdigos binarios a los estados de la tabla.
4. Determinacin de la ecuacin de entrada al flip-flop: seleccionar el tipo o tipos de
flip-flops. A partir de la tabla de estados, obtener las ecuaciones de entrada de los flipflops de las entradas codificadas del estado futuro.
5. Determinacin de la ecuacin de salida: obtener las ecuaciones de salida a partir de
las salida descritas en la tabla de estados.
6. Optimizacin: optimizar las ecuaciones de entrada y de salida de los flip-flops.

CIRCUITOS SECUENCIALES

253

7.

Mapeado tecnolgico: dibujar un diagrama lgico del circuito empleando flip-flops,


ANDs, ORs, e inversores. Transformar el diagrama lgico en un nuevo diagrama que
emplee los flip-flops y puertas disponibles en la tecnologa.
8. Comprobacin: verificar la correccin del diseo final.

Por conveniencia, usualmente omitiremos el mapeado tecnolgico del paso 7 y utilizaremos slo flip-flops, puertas AND, puertas OR, e inversores en el esquemtico.

Localizacin de los diagramas de estados y las tablas de estados


La especificacin de un circuito a menudo es una descripcin verbal del comportamiento del
circuito. Hay que interpretar esta descripcin para encontrar un diagrama de estados o la tabla
de estados del paso de formulacin en el procedimiento del diseo. A menudo, esta es la parte
ms creativa del diseo, ya que muchos de los otros pasos se realizarn automticamente mediante herramientas de diseo asistido por computadora.
El principio para formular tablas y diagramas de estados es la comprensin intuitiva del
concepto de estado. Un estado se emplea para recordar qu combinaciones de entradas se han
aplicado al circuito en cualquier flanco activo o durante cualquier pulso activo de reloj. En algunos casos, los estados pueden guardar literalmente los valores de la entrada manteniendo una
historia completa de la secuencia que ha ido apareciendo en sus entradas. En la mayora de los
casos, sin embargo, un estado es una abstraccin de la sucesin de combinaciones de la entrada
en los instantes de disparo. Por ejemplo, un determinado estado S1 puede representar el hecho
que entre la secuencia de valores aplicados sobre una entrada X de un nico bit el valor 1
aparezca en X durante los tres ltimos flancos consecutivos de reloj. As, el circuito estara en
estado S1 despus de la serie... 00111 o ... 0101111, pero no estara en S1 despus de la serie...
00011 o ... 011100. Un estado S2 podra representar el hecho que la secuencia de combinaciones
de entrada de 2 bits aplicadas est en orden 00, 01, 11, 10 permitiendo cualquier nmero de
repeticiones consecutivas de cada combinacin y siendo 10 la combinacin ms recientemente
aplicada. El circuito estara en S2 para las siguientes secuencias del ejemplo: 00, 00, 01, 01,
01, 11, 10, 10 o 00, 01, 11, 11, 11, 10. El circuito no estara en el estado S2 para las secuencia:
00, 11, 10, 10 o 00, 00, 01, 01, 11, 11. Para formular el diagrama de estados o la tabla de estados es til anotar la abstraccin que representa cada estado. En algunos casos, es ms fcil describir la abstraccin refirindose a los valores que se han producido tanto en las salidas como en
las entradas. Por ejemplo, el estado S3 podra representar la abstraccin que el bit de salida Z2
es 1 y la combinacin de entrada tiene el bit X2 a 0. En este caso, Z2 igual a 1 podra representar una serie compleja de secuencias pasadas de combinaciones de entrada que seran mucho
ms difciles de describir en detalle.
Cuando se formula una tabla de estados o un diagrama de estados, se aaden nuevos estados. Es posible hacer innecesariamente grande o incluso infinito el tamao de la serie de estados! En lugar de aadir un nuevo estado para cada estado actual y su posible combinacin de
entrada, es esencial que los estados se reutilicen como prximos estados para prevenir el crecimiento desenfrenado de estados tal y como hemos descrito anteriormente. El mecanismo para
realizar esto es conocer la abstraccin que cada estado representa. Para ilustrarlo, considere el
estado S1 definido previamente como una abstraccin el valor 1 ha aparecido a los ltimos tres
flancos de reloj. Si se ha entrado en S1 debido a la sucesin ... 00111 y la prxima entrada es
un 1, dando la sucesin ... 001111 se necesita un nuevo estado o el prximo estado puede ser
S1? Examinando la nueva sucesin, vemos que los ltimos tres valores de la entrada son 1 tal y
como define la abstraccin para el estado S1. As que, el estado S1 se puede emplear como el

254 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

prximo estado para el estado actual S1 y para el valor de entrada 1, evitando la definicin de
un nuevo estado.
Cuando se desconoce el estado de los flip-flops en el instante del encendido del circuito, es
costumbre, por lo menos en algunos de los circuitos proporcionar una seal general de reset
para inicializar el estado de los flip-flops. Esto evita que dichos circuitos arranquen en un estado
desconocido. Tpicamente, la seal general de reset se aplica a las entradas asncronas de los
flip-flops (vase la Figura 6-23) antes de que comience el funcionamiento sncrono. En muchos
casos, los flip-flops son reseteados a 0, pero algunos pueden ponerse a 1, dependiendo de cul
sea su estado inicial deseado. Si hay un elevado nmero de flip-flops, y dependiendo del funcionamiento concreto del circuito, podrn inicializarse slo algunos de ellos.
Cuando se enciende un sistema digital por primera vez se desconoce el estado de los flipflops. Puede aplicarse una secuencia de entradas con el circuito en un estado desconocido con
tal que dicha sucesin coloque al circuito en un estado conocido antes que se esperen salidas
significativas. De hecho, muchos de los circuitos secuenciales que disearemos en los siguientes
captulos sern de este tipo. En este captulo, sin embargo, los circuitos diseados partirn de un
estado inicial conocido, y adems, contarn con un mecanismo hardware que permita colocar al
circuito en dicho estado desde un estado desconocido. Este mecanismo es un reset o seal general de reset. Sin tener en cuenta las restantes entradas aplicadas al circuito, el reset coloca al
circuito en su estado inicial. De hecho, el estado inicial se llama a menudo estado reset. Normalmente, la seal reset se activa automticamente cuando el circuito se enciende. Adems,
puede activarse electrnicamente o pulsando un botn de inicializacin.
El reset puede ser asncrono, teniendo lugar sin necesidad de activar el reloj. En este caso, el
reset se aplica a las entradas asncronas de los flip-flops del circuito. Tal y como se muestra en
la Figura 6-23(a). Este diseo asigna 00...0 al estado inicial de los flip-flops para resetearlos. Si
se desea un estado inicial con un cdigo diferente, entonces la seal Reset puede conectarse
selectivamente a las entradas de set asncronas en lugar de a las entradas de reset asncronas. Es
importante tener en cuenta que estas entradas no deben usarse en el diseo del circuito sncrono
normal. En cambio, estn reservadas para un reset asncrono que devuelve el sistema a un estado inicial. Empleando estas entradas asncronas como una parte del diseo del circuito sncrono
se viola la definicin fundamental de circuito sncrono, ya que se permite a un flip-flop cambiar
asncronamente de estado.
Alternativamente, el reset puede ser sncrono necesitando de un disparo de reloj para que se
produzca. Debemos incorporar el reset en el diseo sncrono del circuito. Una sencilla aproximacin del reset sncrono para flip-flops D, que no incluye el bit de reset en la combinacin de
entrada, es aadir la puerta AND mostrada en la Figura 6-23(b) despus de realizar el diseo
normal del circuito. Este diseo tambin asigna 00...0 al estado inicial. Si se desea un cdigo de
estados inicial diferente, entonces la puerta AND y el inversor para Reset se sustituye por una
puerta OR con la entrada Reset.
Y(t  1)
C

C
R

Y(t  1)
Reset

Reset
(a) Reset asncrono

(b) Reset sncrono

 FIGURA 6-23
Reset asncrono y sncrono para un flip-flop D

CIRCUITOS SECUENCIALES

255

Los siguientes dos ejemplos ilustran el proceso de formulacin, produciendo cada uno de
ellos un estilo diferente de diagrama de estados.

EJEMPLO 6-2 Encontrar un diagrama de estados para un detector de secuencia


El primer ejemplo es un circuito que reconoce una determinada secuencia de bits, dentro de una
secuencia ms larga. Se trata de un detector de secuencia que tiene una entrada X y una salida
Z. Cuenta con un Reset aplicado a las entradas asncronas reset de sus flip-flops para inicializar
el estado del circuito a ceros. El circuito detecta la secuencia de bits 1101 en X haciendo Z igual
a 1 cuando las tres entradas anteriores al circuito sean 110 y la seal de entrada sea 1. En cualquier otro caso, Z ser igual a 0.
El primer paso en el proceso de la formulacin es determinar si el diagrama o la tabla de
estados deben ser Autmatas de Mealy o de Moore. La parte de la especificacin anterior que
dice ... haciendo Z igual a 1 cuando las tres entradas anteriores al circuito son 110 y la seal de
entrada es un 1 implica que la salida es funcin no slo del estado actual, sino tambin de la
seal de alimentacin. En consecuencia, se necesita un modelo de Autmata Mealy en el que la
salida depende tanto del estado como de las entradas.
Tenga presente que el factor principal en la formulacin de cualquier diagrama de estados es
reconocer que se emplean los estados para recordar la historia de las entradas. Por ejemplo,
en la secuencia 1101, para poder generar el valor de salida 1 al mismo tiempo que el 1 del final
de la secuencia, el circuito debe estar en un estado que recuerde que las tres entradas anteriores eran 110. Con este concepto en mente, empezamos a formular el diagrama de estados definiendo un estado inicial arbitrario A como el estado de reset, el estado en el que an no ha
ocurrido ninguna secuencia. Si aparece un 1 en la entrada, este evento ha de recordarse ya
que el 1 es el primer bit de la secuencia, y el estado despus del pulso del reloj no puede ser A.
Entonces, se establece un segundo estado, el B, para representar la ocurrencia del primer 1 en la
sucesin. Adems, se coloca una transicin desde A hasta B que se etiqueta con un 1 para representar la ocurrencia del primer 1 en la secuencia. Puesto que ste no es el ltimo 1 de la secuencia, su salida ser un 0. Esta parte del diagrama de estados se muestra en la Figura 6-24(a).
El siguiente bit en la secuencia es un 1. Cuando se produce este 1 en el estado B, se necesita
un nuevo estado para representar la ocurrencia de dos 1 seguidos en la secuencia de entrada, es
decir, la ocurrencia de un 1 adicional estando en el estado B. Entonces, se aade un estado C y
la transicin asociada, tal y cmo se representa en la Figura 6-24(b). El prximo bit de la secuencia es un 0. Cuando aparece este 0 en el estado C, se necesita un nuevo estado para representar la ocurrencia de los dos 1 seguida por un 0. Por tanto, se aade el estado adicional D con
una transicin que tiene una entrada 0 y una salida 0. Dado que el estado D representa la ocurrencia 110 como los valores de los tres bits de entrada en X, la ocurrencia de un 1 en el estado
D completara la secuencia a reconocer, de modo que la transicin para el valor de entrada 1 del
estado D tendra un valor de salida de 1. En la Figura 6-24(c) se muestra el diagrama de estados
parcial resultante que representa completamente la ocurrencia de la secuencia a detectar.
Observe en la Figura 6-24(c) que, para cada estado, se especifica una nica transicin para
uno slo de los dos posibles valores de entrada. Tampoco se define todava el estado destino de
la transicin D para la entrada 1. Las restantes transiciones se basan en la idea de que el detector de secuencia ha de identificar la sucesin 1101, sin tener en cuenta cundo se produce dentro de una secuencia ms larga. Suponga que se representa una parte inicial de la secuencia
1101 por un estado en el diagrama. Entonces, la transicin de este estado para un valor de entrada que represente el prximo valor en la secuencia debe dirigirse hacia un estado tal que su

256 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

1/0

1/0

(a)

(b)

1/0

1/0

1/0

0/0

1/1

(c)
0/0

1/0

1/0

1/0

0/0

1/1
0/0
0/0
(d)

 FIGURA 6-24
Construccin de un diagrama de estados para el Ejemplo 6.2

salida sea 1 si se aplican los restantes bits de la secuencia a detectar. Por ejemplo, el estado C
representa los primeros dos bits, 11, de la secuencia 1101. Si los prximos valores de entrada
son 0, entonces se entra en un estado, en este caso, el D, que presenta un 1 en la salida si se
aplica el bit restante de la secuencia, el 1.
Luego, evala donde va la transicin desde el estado D para un 1 en la entrada. Puesto que
la entrada de la transicin es un 1, podra ser el primero o el segundo de los bits en la secuencia
a detectar. Pero, dado que el circuito est en el estado D, es evidente que la anterior entrada fue
un 0. Entonces, este 1 de entrada es el primero 1 de la secuencia, ya que no puede estar precedido por otro 1. El estado que representa la ocurrencia del primer 1 en la secuencia es el B, entonces la transicin del estado D para la entrada 1 es B. Esta transicin se representa en el diagrama de la Figura 6-24(d). Examinando el estado C, podemos volver atrs a travs de los estados
B y A para ver cmo la ocurrencia de una entrada 1 en C es, por lo menos, el segundo 1 en la
secuencia. El estado que representa la ocurrencia de dos 1 en la secuencia es el C, de modo que
la nueva transicin es al estado C. Puesto que la combinacin de dos 1 no es la secuencia a
reconocer, la salida para la transicin es 0. Repitiendo este mismo anlisis para las transiciones
perdidas desde los estados B y A, se obtiene el diagrama de estados final de la Figura 6-24(d).
La tabla resultante se da en forma bidimensional en la Tabla 6.3.

Un problema que surge en la formulacin de cualquier diagrama de estados es si, a pesar de
los mayores esfuerzos de diseador, se utilizan un nmero excesivo de estados. ste no es el
caso del ejemplo anterior, puesto que cada estado representa la historia de la entrada, que es
esencial para el reconocimiento de la secuencia formulada. No obstante, si hay excesivos estados, sera deseable combinar los estados en los menos posibles. Esto se puede hacer utilizando
mtodos ad hoc y procedimientos formales de minimizacin de estados. Debido a la complejidad de esto ltimo, particularmente en el caso en el que aparecen condiciones de indiferencia en
la tabla de estados, no se tratan aqu estos procedimientos formales. Para los estudiantes que

CIRCUITOS SECUENCIALES

257

 TABLA 6-3
Tabla de estados para el diagrama de estado de la Figura 6-21
Estado futuro

Salida

Estado
actual

X%0

X%1

X%0

X%1

A
B
C
D

A
A
D
A

B
C
C
B

0
0
0
0

0
0
0
1

estn interesados, los procedimientos de minimizacin de estados se encuentran en las referencias enumeradas al final del captulo. En el siguiente ejemplo se ilustra un mtodo adicional
para evitar estados extras.

EJEMPLO 6-3 Encontrar el diagrama del estado para decodificador BCD a exceso-3
En el Captulo 3, se dise un decodificador BCD a exceso-3. En este ejemplo, la funcin del
circuito es similar slo que las entradas, en lugar de presentarse simultneamente al circuito, se
presentan consecutivamente en ciclos de reloj sucesivos, empezando por el bit menos significativo. En la Tabla 6-4(a), se listan las secuencias de entrada y las secuencias de salida correspondientes comenzando por el bit de menor peso. Por ejemplo, durante cuatro ciclos del reloj
consecutivos, si se aplican 1010 a la entrada, la salida ser 0001. Con el fin de generar cada bit
de salida en el mismo ciclo de reloj que el bit de entrada correspondiente, la salida depender
tanto del valor de entrada actual como del estado. Las especificaciones tambin establecen que
 TABLA 6-4
Tabla de secuencias para el ejemplo del convertidor de cdigo
(a) Secuencias ordenadas
por dgito representado
Entrada BCD

(b) Secuencias ordenadas


por orden de bits iniciales

Salida exceso-3

Entrada BCD

Salida exceso-3

0
1
0
1
0
1
0
1
0
1

0
0
1
1
0
0
1
1
0
0

0
0
0
0
1
1
1
1
0
0

0
0
0
0
0
0
0
0
1
1

1
0
1
0
1
0
1
0
1
0

1
0
0
1
1
0
0
1
1
0

0
1
1
1
1
0
0
0
0
1

0
0
0
0
0
1
1
1
1
1

0
0
0
0
0
1
1
1
1
1

0
0
0
1
1
0
0
0
1
1

0
0
1
0
1
0
0
1
0
1

0
1
0
0
0
0
1
0
0
0

1
1
1
1
1
0
0
0
0
0

1
1
1
0
0
0
0
0
1
1

0
0
1
1
0
1
1
0
1
0

0
1
0
0
1
0
1
1
0
1

258 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

el circuito debe estar listo para recibir una nueva secuencia de 4 bits en cuanto se haya completado la secuencia anterior. La entrada a este circuito se etiqueta con X y la salida se etiqueta con
Z. Con el fin de centrarnos en las combinaciones pasadas de las entradas, las filas de la Tabla
6-4(a) se ordenan segn el valor del primer bit, el valor del segundo bit, y el valor del tercer bit
de la secuencia de entrada. As resulta la Tabla 6-4(b).
El diagrama de estados comienza con un estado inicial representado en la Figura 6-25(a). Al
examinar la primera columna de bits de la Tabla 6-4(b) se aprecia que un 0 produce un salida 1
y un 1 produce una salida 0. Ahora nos preguntamos necesitamos recordar el valor del primer bit? En la Tabla 6-4(b), cuando el primer bit es un 0, un 0 en el segundo bit genera un
1 en la salida y mientras que un 1 en el segundo bit genera un 0 en la salida. Por el contrario, si el
primer bit es un 1, un 0 en el segundo bit origina una salida 0 mientras que un 1 en el segundo bit
genera una salida de 1. Est claro que la salida para el segundo bit no puede determinarse sin
recordar el valor del primer bit. As, la primera entrada igual a 0 y la primera entrada igual a 1
deben ser dos estados diferentes tal y como se refleja en la Figura 6-25(a), donde tambin se
muestran los valores de entrada/salida sobre las lneas de direccin hacia los nuevos estados.
Luego, hay que determinar si las entradas siguientes a los dos nuevos estados necesitan dos
estados para recordar el valor del segundo bit. En las dos primeras columnas de entrada de la
Tabla 6-4(b), la secuencia 00 produce las salidas para el tercer bit siendo 0 para la entrada 0 y 1
para entrada 1. Por otro lado, para la secuencia de entrada 01, la salida para el tercer bit es 1
para la entrada 0 y 0 para la entrada 1. Puesto que son diferentes para los mismos valores de
entrada en el tercer bit, se necesitan estados distintos, tal y como se ilustra en la Figura 6-25(b).
Init
0/1
B1  0

Init
0/1

B1  1

0/1

1/0
B1  1

B1  0

1/0

1/0

0/0 o 1/1

B2  1

B2  0

(a)

B2  X

(b)

Init
0/1

Init
1/0

B1  0

0/1 o 1/1

B1  1

0/0 o 1/1
0/1
B2  0

1/0
B2  1

0/1

0/0 o 1/1
B2  X

1/0

B1  0

0/0 o 1/1
0/1

B1  1
1/0

0/0 o 1/1

B2  1

B2  0
0/0 o 1/1

B3  ?

B3  ?
(c)

B3  X
B3  0

0/1 o 1/1

0/1
0/1

1/0

B2  X
1/0
B3  1

(d)

 FIGURA 6-25
Construccin del diagrama de estados para el Ejemplo 6.3

CIRCUITOS SECUENCIALES

259

Un anlisis similar para las secuencias de entrada 10 y 11 en el que se han examinado las salidas para el tercer y cuarto bit, muestra que el valor del segundo bit no tiene efecto en los valores de salida de dichos bits. Por todo ello, en la Figura 6-25(b) hay un nico estado futuro para
el estado B1 % 1.
A estas alturas, pueden resultar seis potenciales nuevos estados a partir de los tres estados
aadidos. Observe, sin embargo, que estos estados slo necesitan definir las salidas para el cuarto bit puesto que el siguiente estado despus de esto ser Init preparndose para recibir la prxima secuencia de entrada de 4 bits Cuntos estados se necesitarn para especificar las diferentes
posibilidades para el valor de salida del ltimo bit? Mirando la ltima columna, una entrada de
1 siempre produce un 1 de salida mientras que un 0 puede producir un 0 un 1 de salida. De
esta forma, como mucho se requieren dos estados, uno que genera una salida 0 para una entrada
0 y otro que genera una salida 1 para una entrada 0. La salida para la entrada 1 es la misma para
los dos estados. En la Figura 6-25(c) se han aadido estos dos estados. Para que el circuito est
preparado para recibir la siguiente secuencia, el estado siguiente a estos dos estados en Init.
Finalmente falta determinar los arcos azules de la Figura 6-25(d). Los arcos desde cada estado
B2 se han definido en base al tercer bit en la secuencia de entrada/salida. El prximo estado se
puede elegir en funcin de la respuesta a la entrada 0 en el bit cuarto de la secuencia. El estado
B2 alcanza al estado B3 de la izquierda con B3 % 0 o B3 % 1 indicado por B3 % X en la mitad
superior del estado de B3. Los otros dos estados de B2 alcanzan este mismo estado con B3 % 1
como se indica en la mitad inferior del estado. Estos mismos dos estados B2 alcanzan al estado
B3 a la derecha con B3 % 0 tal y como representa la etiqueta en el estado.


Asignacin de estados
Frente a los estados de los ejemplos analizados, en los diagramas que se han construido se han
asignado nombres simblicos para los estados en lugar de cdigos binarios. Es necesario reemplazar estos nombres simblicos con cdigos binarios con el fin de proceder con el diseo. En
el general, si hay m estados, entonces los cdigos deben contener n bits dnde 2n n m, y cada
estado debe asignarse a un nico cdigo. As que, para el circuito de la Tabla 6-3 con cuatro
estados, los cdigos asignados a los estados necesitarn de dos bits.
Comenzamos asignando un cdigo al estado inicial reset. Si las primeras cuatro entradas al
circuito son 1101 despus de Reset % 1, deberan detectarse. Pero si ocurre que la primera secuencia de entrada es 101, 01, o 1, no debera ser detectada. El nico estado que puede proporcionar esta propiedad es el estado A. Entonces, debe asignarse el cdigo 00 al estado A con
ayuda de las entradas asncronas de reset de los flip-flops. Como base para asignar un cdigo a
los estados restantes, existe un extenso trabajo en la asignacin de cdigos a los estados, pero es
demasiado complejo para tratarlo aqu. Estos mtodos se han centrado principalmente en intentar seleccionar los cdigos de tal manera que se minimice la lgica necesaria para implementar
las ecuaciones de entrada y salida de los flip-flops. En nuestro ejemplo, simplemente asignamos
los cdigos de estados siguiendo el orden del Cdigo Gray, empezando con el estado A. El Cdigo Gray se selecciona en este caso para simplificar ms fcilmente el estado futuro y la funcin de salida en el Mapa de Karnaugh. La tabla de estados con los cdigos asignados se muestra en la Tabla 6-5.

Diseando con flip-flops D


El resto del procedimiento para disear el circuito secuencial se muestra con el prximo ejemplo. Queremos disear un circuito secuencial sncrono que funciona segn la Tabla de esta-

260 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 TABLA 6-5
Tabla 6-3 con los nombres reemplazados por cdigos binarios
Estado actual

Estado futuro

Salida

AB

X%0

X%1

X%0

X%1

00
01
11
10

00
00
10
00

01
11
11
01

0
0
0
0

0
0
0
1

dos 6-2, el detector de secuencia de la Tabla 6-5. Esta tabla de estados, con los cdigos binarios
asignados a los estados, especifica cuatro estados, dos valores de entrada, y dos valores de salida. Se necesitan dos flip-flops para representar los cuatro estados. Etiquetamos las salidas de los
flip-flops con las letras A y B, la entrada con X, y la salida con Z.
Para este circuito, ya se han completado los pasos 1, 2 y 3 del procedimiento de diseo.
El paso 4 comienza escogiendo flip-flops tipo D. Para completar el paso 4, se obtienen las
ecuaciones de entrada de los flip-flops a partir de los valores del estado futuro que se listan
en la tabla. En el paso 5 se obtiene la ecuacin de salida a partir de los valores de Z que se listan en la misma tabla. Las ecuaciones de la entrada y de la salida de los flip-flops pueden obtenerse como suma de minitrminos de las variables del estado actual A y B y de la variable de
entrada X:
A(t ! 1) % DA(A, B, X) % Gm(3, 6, 7)
B(t ! 1) % DB(A, B, C) % Gm(1, 3, 5, 7)
Z(A, B, X) % Gm(5)
Las funciones booleanas se simplifican usando los Mapas de Karnaugh trazados en la Figura 6-26. Las funciones simplificadas son
DA % AB ! BX
DB % X
Z % AB1 X
El diagrama lgico del circuito secuencial se muestra en la Figura 6-27.
B

BX
00

01

11

A 1

BX
10

X
DA  AB  BX

00

01

11

A 1

A 1

X
DB  X

BX
10

00

01

11

10

1
X
Z  ABX

 FIGURA 6-26
Mapas de Karnaugh para las ecuaciones de entrada de los flip-flops y para la salida Z

CIRCUITOS SECUENCIALES

261

D
C
R

Z
B

X
Clock

C
R

Reset

 FIGURA 6-27
Diagrama lgico para el circuito secuencial con flip-flops tipo D

Diseando con estados no usados


Un circuito con n flip-flops tiene 2n estados binarios. Sin embargo, la tabla de estados de la que
se deriva originalmente el circuito puede tener cualquier nmero m de estados con tal que
m m 2n. Los estados que no se utilizan en un circuito secuencial concreto no aparecen en la
tabla de estados. Al simplificar las ecuaciones de entrada, los estados sin usar pueden tratarse
como condiciones indiferentes. La tabla de estados de la Tabla 6-6 define tres flip-flops, A, B y
C, y una entrada, X. No hay ninguna columna de salida lo que significa que los flip-flops sirven
como salidas del circuito. Con tres flip-flops es posible especificar hasta ocho estados, pero los
estados listados en la tabla de estados son slo cinco. Hay tres estados sin usar que no se incluyen en la tabla, son: 000, 110 y 111. Cuando se incluye una entrada de 0 o 1 como valor de
estado actual, se obtienen seis combinaciones sin usar para el estado actual y columnas de la
entrada: 0000, 0001, 1100, 1101, 1110 y 1111. Estas seis combinaciones no se listan en la tabla
de estados e incluso pueden tratarse como mini trminos indiferentes.
 TABLA 6-6
Tabla de estados para un diseo con estados no utilizados
Estado actual

Entrada

Estado futuro

0
0
0
0
0
0
1
1
1
1

0
0
1
1
1
1
0
0
0
0

1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1

0
0
0
1
0
1
1
1
0
1

0
1
1
0
0
0
0
0
0
0

1
0
1
0
1
0
1
0
1
0

262 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Las tres ecuaciones de entrada para los flip-flops D se obtienen a partir de los valores del
estado futuro y se simplifican en los Mapas de Karnaugh de la Figura 6-28. Cada mapa tiene
seis minitrminos indiferentes en los cuadrados que corresponden a los binarios de 0, 1, 12, 13,
14 y 15. Las ecuaciones optimizadas son:
DA % AX ! BX ! B1 C1
DB % A1 C1 X1 ! A1 B1 X
DC % X1
El diagrama lgico puede obtenerse directamente de las ecuaciones de entrada y no se dibujar
aqu.
Es posible que una interferencia externa o un funcionamiento defectuoso lleven al circuito a
uno de los estados sin usar. Por tanto, a veces es deseable especificar, totalmente o por lo menos
parcialmente, los prximos valores de estados o de salida para los estados sin usar. Dependiendo de la funcin y de la aplicacin del circuito, pueden aplicarse varias ideas. Primero, pueden
especificarse las salidas para los estados sin usar para que cualquier accin que resulte de la
entrada y de las transiciones entre estados sin usar no sea perjudicial. Segundo, se puede proporcionar una salida adicional o un cdigo de la salida sin usar para indicar que el circuito ha entrado en un estado incorrecto. Tercero, para asegurar que es posible volver al funcionamiento
normal sin tener que resetear el sistema entero, se puede especificar el comportamiento del estado futuro para aquellos estados sin usar. Normalmente, los prximos estados se seleccionan de
modo que se alcanza uno de los estados en unos pocos ciclos del reloj, sin tener en cuenta los
valores de entrada. La decisin acerca de cul de las tres opciones se va a aplicar, individualmente o en combinacin, es funcin de la aplicacin del circuito o de las polticas de cada grupo de diseo.
C

CX
AB
00

00

01

01

11

10
X

C
X

B
11

10

1
B

B
X

A
1

X
DA  AX  BX  BC

X
DB  A C X  A B X

1
X
DC  X

 FIGURA 6-28
Mapas para optimizacin de ecuaciones

Verificacin
Los circuitos secuenciales se pueden verificar demostrando que el circuito produce el diagrama
de estados original o la tabla de estados. En los casos ms sencillos se aplican todas las posibles
combinaciones de entrada con el circuito en cada uno de los estados y se observan las variables
de estados y las salidas. En circuitos pequeos, la comprobacin real se puede realizar a mano.
Lo ms habitual es recurrir a la simulacin. En la simulacin manual, es vlido aplicar cada una

CIRCUITOS SECUENCIALES

263

de las combinaciones estado-entrada y verificar que la salida y el prximo estado son los correctos.
La verificacin mediante la simulacin es menos tediosa, pero usualmente requiere una sucesin de combinaciones de entrada y aplicar una seal de reloj. Con el fin de verificar una
combinacin estado-entrada, primero hay que aplicar una sucesin de combinaciones de entrada
para poner al circuito en el estado deseado. Es muy til encontrar una nica secuencia para probar todas las combinaciones de estados entrada. El diagrama de estados es ideal para generar y
perfeccionar dicha sucesin. Se debe generar una secuencia para aplicar cada combinacin de
entrada en cada estado mientras se observa la salida y el estado que aparece tras el flanco del
reloj positivo. La longitud de la secuencia puede perfeccionarse empleando el diagrama de estados. La seal de reset se emplear como entrada durante esta sucesin. En particular, se utiliza
para resetear el circuito llevndolo a su estado inicial.
En el Ejemplo 6-4, se ilustran tanto la verificacin manual como la verificacin basada en
simulacin.
EJEMPLO 6-4 Verificacin del detector de secuencia
En la Figura 6-24(d) aparece el diagrama de estados para el detector de secuencia y en la Figura 6-27 se muestra el diagrama lgico. Hay cuatro estados y dos combinaciones de entrada, dando un total de ocho combinaciones estado-entrada para verificar. El estado siguiente se presenta
en las salidas de los flip-flops despus del flanco positivo de reloj. Para los flip-flops D, el estado siguiente ser simplemente igual que la entrada D antes del flanco de reloj. Para otros tipos
de flip-flops, las entradas a los flip-flops se emplean para determinar el prximo estado antes
del flanco de reloj. Inicialmente, partiendo con el circuito en un estado desconocido, aplicamos
un 1 a la entrada Reset. Esta entrada va a la entrada asncrona de reset de los dos flip-flops de la
Figura 6-27. Puesto que no hay ningn crculo en estas entradas, el valor 1 resetea ambos flipflops a 0, dando el estado A(0, 0). A continuacin, aplicamos la entrada 0, y mediante simulacin manual en el circuito de la Figura 6-27, encontramos que la salida es 0 y el prximo estado
es A(0, 0) que est de acuerdo con la transicin para la entrada 0 desde el estado A. Continuando con la simulacin, la entrada 1 desde el estado A lleva al prximo estado B(0, 1) con salida
0. Para el estado B, una entrada 0 da salida 0 y un prximo estado A(0, 0), y una entrada 1 da
salida 0 y un siguiente estado C(1, 1). Este mismo proceso puede continuarse para cada una de
las dos combinaciones de la entrada para los estados C y D.
Para verificar mediante simulacin, se genera una secuencia de entradas que aplica todas las
combinaciones estado-entrada y se acompaa por las secuencias de salida y de estados para verificar la salida y valor del estado futuro. La optimizacin requiere que el nmero de periodos
de reloj empleados exceda del nmero de combinaciones estado-entrada (es decir, la repeticin
de combinaciones de pares estado-entrada se debe minimizar). Esto puede interpretarse como
dibujar el camino ms corto a travs del diagrama de estados que atraviesa por lo menos una
vez cada combinacin estado-entrada.
Por conveniencia, en la Figura 6-29(a), se muestran los cdigos para los estados y el camino
a travs del diagrama se denota por una sucesin de nmeros enteros en azul que empiezan en
el 1. Estos enteros corresponden al nmero de flancos positivos de reloj de la Figura 6-29(b),
dnde se desarrolla la sucesin de la comprobacin.
Los valores mostrados para el nmero de flancos de reloj representan los flancos ocurridos
hasta justo antes del flanco positivo del reloj (es decir, durante el intervalo de tiempo de setup).
El flanco de reloj 0 ocurre en t % 0 en la simulacin y produce estados indeterminados en todas
las seales. Se comienza con un valor 1 aplicado a la entrada Reset (1) para colocar al circuito

264 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

2
0/0

5
1/0

3, 9
1/0

A
0, 0

4, 10
1/0

B
0, 1

8
0/0

Reset

C
1, 1
7 1/1

6, 11
0/0

D
1, 0

12 0/0
(a)
Clock
Edge:

10

Input R:

Input X:

State
(A, B):
Output Z:

X,X
X

11 12

0,0* 0,0 0,0 0,1 1,1 1,1 1,0 0,1 0,0 0,1 1,1 1,0
0

13

0,0

(b)

 FIGURA 6-29
Generacin de una secuencia de test para la simulacin del Ejemplo 6.5

en el estado A. Inicialmente se aplica la entrada 0 (2) de modo que el circuito permanece en A,


despus se aplica un 1 (3) comprobando la segunda combinacin para el estado A. Ahora, en el
estado B podemos tanto avanzar a C como volver a A. No est claro cual el la mejor decisin,
de modo que de forma arbitraria se aplica un 1 (4) y se va al estado C. En el estado C se aplica
un 1 (5) de modo que se permanece en C. Despus se aplica un 0 para verificar la ltima entrada en el estado C. Ahora en D, debe decidirse si volver a A o a B. Si se retorna a B aplicando un
1 (7) entonces podemos chequear la transicin de B a A para la entrada 0 (8), Entonces la transicin que falta en el estado D es para la entrada 0. Para llegar al estado D desde A debe aplicarse
la secuencia 1, 1, 0, (9) (10) (11) y despus aplicar un 0 (12) para verificar la transicin de D a
A. Se han verificado 8 transiciones empleando una secuencia formada por un reset ms 11 entradas. Aunque esta secuencia es ptima, el procedimiento empleado no asegura su optimalidad.
Aun as, este procedimiento usualmente obtiene secuencias eficientes.
Para simular el circuito, capturamos el esquemtico de la Figura 6-27 empleando el editor
de esquemas Xilinx ISE 4.2 e introducimos la secuencia de la Figura 6-29(b) como una forma
de onda empleando el Xilinx ISE 4.2 HDL Bencher. Al generar la forma de onda es importante
que la entrada X cambie bastante antes del flanco de reloj. Esto asegura que hay tiempo disponible para visualizar la salida actual y para permitir que los cambios de entrada se propaguen a las
entradas de los flip-flops antes de que comience el tiempo de setup. Esto se ilustra en las formas
de onda de ENTRADA en la Figura 6-30 en las que X cambia un poco despus del flanco positivo de reloj proporcionando una buena fraccin del periodo de reloj para que el cambio se
propague a los flip-flops. El circuito se simula con el simulador ModelSim MTI. Podemos comparar los valores justo antes del flanco positivo de reloj en los cronogramas de ESTADO y
SALIDA de la Figura 6-30 con los valores mostrados en el diagrama de estados para cada
periodo de reloj de la Figura 6-29. En este caso, la comparacin verifica que el funcionamiento
del circuito es correcto.

CIRCUITOS SECUENCIALES

265

Clock
Reset
ENTRADAS
X
ESTADO
A
B
SALIDA
Z
0

100 ns

200 ns

 FIGURA 6-30
Simulacin para el Ejemplo 6.5

300 ns

6-6 OTROS TIPOS DE FLIP-FLOPS


En esta seccin se introducen los flip-flops JK y T y las representaciones de su comportamiento
que se emplean en el anlisis y el diseo.
Debido a su menor importancia en el diseo actual frente a los flip-flops tipo D, en el sitio Web
del texto se dan ejemplos del anlisis y del diseo que ilustran su uso.

Flip-flops JK y T
En la Tabla 6-7 se muestran las caractersticas de cuatro tipos de flip-flops, el SR y el tipo D
referenciados en la Seccin 6-3, y el JK y T introducidos aqu. Con la excepcin del flip-flop SR
que es el maestro-esclavo, se muestra el smbolo para flip-flops activos por flanco positivo.
Tambin se muestra el diagrama lgico para implementar cada uno de los tipos de flip-flops
dados. Un nuevo concepto, la tabla caracterstica, define las propiedades lgicas de funcionamiento del flip-flop en forma tabular. Especficamente, la tabla define el prximo estado como
una funcin del estado actual y de las entradas. Q(t) se refiere al estado actual previo a la aplicacin de un pulso del reloj. Q(t ! 1) representa el estado un periodo de reloj despus (es decir,
es el prximo estado). Observe que el flanco de disparo (o pulso) de la entrada C no se lista en
la tabla caracterstica, pero se supone que ocurre entre el tiempo t y el tiempo t ! 1. Junto a la
tabla caracterstica se muestra la ecuacin caracterstica para cada tipo de flip-flop. Estas ecuaciones definen el prximo estado despus del pulso de reloj para cada uno de los flip-flops como una funcin de las entradas actuales y del estado actual antes del pulso de reloj. La ltima
columna de la tabla consiste en tablas de excitacin para cada tipo de flip-flop. Estas tablas
definen el valor de la entrada o los valores necesarios para obtener cada uno de los valores posibles del prximo estado despus del pulso de reloj, dando el valor de estados actual antes del
pulso de reloj. Pueden emplearse las tablas de excitacin para determinar las ecuaciones de entrada de los flip-flops a partir de la informacin de la tabla de estados.
Histricamente, los flip-flops JK fueron una versin modificada de los flip-flops SR maestro-esclavo. Mientras el flip-flop SR produce salidas indefinidas y un comportamiento indeterminado para S % R % 1, el flip-flop JK genera por su salida el complemento de su valor actual.
La versin del flip-flop JK maestro-esclavo tiene un comportamiento activo por pulso y, ade-

JK

SR

Tipo

S
C
R

Smbolo

Ver Figura 6-10

Ver Figura 6-13

D
C

Diagrama lgico

Q(t)

Q(t)

Q(t1)

Q(t)

1 1
T

1 0

0 1

Q(t)

Q(t1)

J K
0 0

Indefinido

1 1

Complemento

No cambia

Operacin

Complemento

Set

Reset

No cambia

Operacin

Set

Reset

No cambia

1 0

Q(t)

0 0

Operacin

Q(t1)

S R

Reset
Set

Operacin

0 1

0
1

Q(t1)

0
1

Tabla de funcionamiento

Q(t 1)  T(t)  Q(t)

Q(t 1)  J(t)Q(t)K(t)Q(t)

Q(t 1)  S(t)  R(t)Q(t)

Q(t 1)  D(t)

Ecuacin caracterstica

 TABLA 6-7
Flip-flops, su diagrama lgico, tabla y ecuacin caracterstica y tabla de excitacin

Q(t1)

Q(t)

Q(t)

Q(t1)

Q(t)

1
1

Q(t1)

Q(t)

0
1

Q(t1)

Complemento

No cambia

Operacin
T
0

No cambia

Reset

Set

No cambia

Operacin

X 0

X 1

1 X

0 X

J K

No cambia

Reset

0 1
X 0

Set

No cambia

0 X
1 0

Operacin

Reset
Set

Operacin

S R

0
1

Tabla de excitacin

266 
FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

CIRCUITOS SECUENCIALES

267

ms, exhibe una propiedad llamada captacin de 1. Una vez que J % 1 o K % 1, de tal manera que el maestro cambie a su estado opuesto, el maestro no puede volver a su estado anterior
antes que el pulso de reloj finalice, con independencia de los valores de J y K. Esto empeora el
problema del tiempo de setup que ya existe para el flip-flop activo por pulso. Se aplica la misma solucin que para los flip-flops SR (es decir, haciendo que el tiempo de setup, ts, dure un
pulso de disparo completo). Para evitar esta contribucin adicional a la longitud del ciclo del
reloj empleamos slo flip-flops JK disparados por flanco construidos a partir de flip-flops D
tambin disparados por flanco.
En la Tabla 6-7, se muestra el smbolo para un flip-flop JK disparado por flanco positivo as
como su diagrama lgico empleando un flip-flop D activo por flanco positivo. La tabla caracterstica dada describe el comportamiento del flip-flop JK. La entrada J se comporta como la entrada S para poner en set al flip-flop. La entrada K es similar a la entrada R para resetear el
flip-flop. La nica diferencia entre los flip-flops SR y los flip-flops JK es su respuesta cuando
ambas entradas son iguales a 1. Como puede verificarse a partir del diagrama lgico, esta condicin complementa el estado del flip-flop JK. Cuando J % 1 y Q % 0, entonces D % 1, complementando las salidas del flip-flop JK. Cuando K % 1 y Q % 1, entonces D % 0, complementando las salidas del flip-flop JK. Esto demuestra que, sin tener en cuenta el valor de Q, la
condicin J % 1 y K % 1 provoca la complementacin de las salidas del flip-flop en contestacin a un pulso de reloj. El comportamiento del siguiente estado se resume en la columna de la
tabla caracterstica de la Tabla 6-7. La entrada del reloj no se muestra explcitamente, pero se
supone que ha ocurrido un pulso de reloj entre el estado actual y el prximo estado de Q.
El flip-flop T es equivalente al flip-flop JK con J y K unidos para que J % K % T. Con esta
conexin, slo se aplican las combinaciones J % 0, K % 0 y J % 1, K % 1. Si tomamos la ecuacin caracterstica para el flip-flop JK y hacemos esta conexin, la ecuacin se vuelve
Q(t ! 1) % TQ1 ! T1 Q % T S Q
El smbolo para el flip-flop T y su diagrama lgico estn basados en la ecuacin precedente que
se da en la Tabla 6-7. La ecuacin caracterstica para el flip-flop T es simplemente la dada, y la
tabla caracterstica en la Tabla 6-7 muestra que para T % 0, las salidas del flip-flop T permanecen inalteradas, y para T % 1, las salidas se complementan. Puesto que el flip.flop T slo puede mantener su estado inalterado o puede complementar su estado, no hay ninguna manera de
establecer un estado inicial usando nicamente la entrada T sin aadir circuitera externa que
muestree el valor actual de la salida. As, el flip-flop T normalmente se inicializa a un estado
conocido usando un set o un reset asncrono.

6-7 REPRESENTACIN HDL PARA CIRCUITOS


SECUENCIALES.VHDL
En el Captulo 4 se emple VHDL para describir circuitos combinacionales. Del mismo modo
VHDL puede describir elementos de almacenamiento y circuitos secuenciales. En esta seccin,
como ejemplos de empleo de VHDL se ilustran las descripciones de un flip-flop D disparado
por flanco positivo y de un circuito detector de secuencia. Estas descripciones suponen nuevos
conceptos de VHDL, el ms importante de ellos es el proceso. Hasta ahora, mediante sentencias
concurrentes se han descrito combinaciones de condiciones y acciones en VHDL. Una sentencia
concurrente, sin embargo, est limitada en cuanto a la complejidad que puede representar.
Usualmente, los circuitos secuenciales a describir son bastante complejos y dicha descripcin es
muy difcil de plasmar con una sentencia concurrente. Un proceso puede verse como la alterna-

268 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

tiva a una sentencia concurrente con un poder descriptivo considerablemente mayor. Varios procesos se pueden ejecutar concurrentemente, y un proceso se puede ejecutar concurrentemente
con las sentencias concurrentes.
Normalmente, el cuerpo de un proceso implementa un programa secuencial. Sin embargo,
los valores de las seales que se asignan durante el proceso, slo cambian cuando el proceso se
completa. Si la porcin de un proceso ejecutada es
B <= A;
C <= B;

entonces, cuando el proceso se completa, B contendr los contenidos originales de A y C contendr los contenidos originales de B. Por el contrario, despus de la ejecucin de estas dos sentencias en un programa, C contendra los contenidos originales de A. Para conseguir este comportamiento de programa, VHDL emplea otra estructura denominada variable. Frente a una seal
que se evala tras un pequeo retardo, una variable se evala inmediatamente. As, si B es una
variable en la ejecucin de
B := A;
C := B;
B se evaluar instantneamente adquiriendo los contenidos de A y C se evaluar adquiriendo los
nuevos contenidos de B, de modo que C contendr finalmente los valores originales de la variable A. Las variables slo aparecen dentro de los procesos. Vase el empleo de := en lugar de <=
para la asignacin a variable.

EJEMPLO 6-5 VHDL para flip-flop D disparado por flanco positivo con reset
La estructura bsica de un proceso se ilustra con el proceso del ejemplo de la Figura 6-31 que
describe la arquitectura de un flip-flop D activo por flanco positivo. El proceso comienza con la
palabra clave process. Opcionalmente, process puede ir precedido de un nombre de proceso
seguido por dos puntos. A continuacin, dentro del parntesis hay dos seales, CLK y RESET.
Esta es la lista de sensibilidad para el proceso. Si CLK o RESET cambian, entonces el proceso se
ejecuta. En el general, un proceso se ejecuta siempre que cambie una seal o variable de su lista
de sensibilidad. Es importante observar que la lista de sensibilidad no es una lista de parmetros
que contiene todas las entradas y salidas. Por ejemplo, D no aparece, ya que un cambio en su
valor no genera un cambio en el valor de Q. A continuacin de la lista de sensibilidad, el proceso comienza con la palabra clave begin, y termina al final del proceso con la palabra clave
end. La palabra process a continuacin del end es opcional.
Dentro del cuerpo del proceso pueden aparecer estructuras condicionales adicionales de
VHDL. En la Figura 6-31 es notable el ejemplo del if-then-else. La estructura general de un
if-then-else en VHDL es
if condicin then
sucesin de sentencias
{elsif condicion then
sucesin de sentencias}
else
sucesin de sentencias
end if;

CIRCUITOS SECUENCIALES

269

-- Flip-flop activo por flanco de subida con reset:


-- Descripcin de proceso VHDL
library ieee;
use ieee.std_logic_1164.all;
entity dff is
port(CLK, RESET, D : in std_logic;
Q : out std_logic);
end dff;
architecture pet_pr of dff is
-- Implementa un flip-flop disparado por flanco de subida
-- con reset asncrono.
begin
process (CLK, RESET)
begin
if (RESET = '1') then
Q <= '0';
elsif (CLK'event and CLK = '1') then
Q <= D;
end if;
end if;
end process;
end;
 FIGURA 6-31
Descripcin de un flip-flop disparado por flanco de subida con reset empleando un proceso VHDL

Las sentencias dentro de las llaves { } pueden aparecer desde ninguna hasta cualquier nmero
de veces. El if-then-else dentro de un proceso es similar al efecto de la sentencia de asignacin
concurrente when else. Ilustrndolo, tenemos
if A = '1' then
Q <= X;
elsif B = '0' then
Q <= Y;
else
Q <= Z;
end if;

Si A es 1, entonces Q del flip-flop se carga con los contenidos de X. Si A es 0 y B es 0, entonces


Q toma los contenidos de Y. En cualquier otro caso, Q adquiere los contenidos de Z. El resultado
final para las cuatro combinaciones de valores en A y B es
A
A
A
A

=
=
=
=

0,
0,
1,
1,

B
B
B
B

=
=
=
=

0
1
0
1

Q
Q
Q
Q

<=
<=
<=
<=

Y
Z
X
X

270 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La ejecucin de sentencias condicionales ms complejas puede lograrse anidando estructuras if-then-else, como en el siguiente cdigo:
if A = '1' then
if C = '0' then
Q <= W;
else
Q <= X;
end if;
elsif B = '0' then
Q <= Y;
else
Q <= Z;
end if;

El resultado final para las ocho combinaciones de valores en A, B y el C es


A
A
A
A
A
A
A
A

=
=
=
=
=
=
=
=

0,
0,
0,
0,
1,
1,
1,
1,

B
B
B
B
B
B
B
B

=
=
=
=
=
=
=
=

0,
0,
1,
1,
0,
0,
1,
1,

C
C
C
C
C
C
C
C

=
=
=
=
=
=
=
=

0
1
0
1
0
1
0
1

Q
Q
Q
Q
Q
Q
Q
Q

<=
<=
<=
<=
<=
<=
<=
<=

Y
Y
Z
Z
W
X
W
X

Con la informacin presentada hasta ahora ya puede estudiarse el flip-flop D disparado por
flanco positivo de la Figura 6-31. La lista de sensibilidad para el proceso incluye CLK y RESET,
de modo que el proceso se ejecuta si CLK, RESET o ambas cambian de valor. En un flip-flop
activo por flanco positivo, si el valor de D cambia, el valor de Q no cambia por lo que D no
aparece en la lista de sensibilidad. Basado en el if-then-else, si RESET es 1, la salida Q se resetea a 0. Por otra parte, si el reloj cambia de valor, que se representa aadiendo 'event a CLK, y
el nuevo valor del reloj es 1, que se representa por CLK = '1', ha ocurrido un flanco positivo en
CLK. El resultado de que se produzca un flanco positivo es la carga del valor D en el flip-flop
para que aparezca en la salida. Observe que, debido a la estructura del if-then-else, la entrada
RESET igual a 1 domina el comportamiento sincrono del flip-flop D provocando que la salida Q
pase a 0. Pueden emplearse sencillas descripciones similares para representar otros tipos de flipflops y mecanismos de disparo.


EJEMPLO 6-6 VHDL para el detector de secuencia


Un ejemplo ms complejo se presenta en las Figuras 6-32 y 6-33 que representan el detector de
secuencia del diagrama de estados de la Figura 6-24(d). La arquitectura en esta descripcin consiste en tres procesos distintos que se pueden ejecutar simultneamente y pueden interactuar a
travs de seales compartidas. Se introducen nuevos conceptos como son las declaraciones de
tipo para definir los nuevos tipos y sentencias case para manejar las condiciones.

CIRCUITOS SECUENCIALES

271

 FIGURA 6-32
Descripcin VHDL de proceso de un detector de secuencia

La declaracin de tipo permite definir nuevos tipos de manera similar a los tipos existentes
como el stdlogic. Una declaracin de tipo empieza con la palabra clave type seguida por el
nombre del nuevo tipo, la palabra clave is, y, dentro de parntesis, la lista de valores para las
seales del nuevo tipo. Usando el ejemplo de la Figura 6-31, tenemos
type statetype is (A, B, C, D);

272 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

-- Detector de secuencia. Descripcin de proceso VHDL (continuacin)


when C =>
if X = '1' then
next_state <= C;
else
next_state <= D;
end if;
when D =>
if X = '1' then
next_state <= B;
else
next_state <= A;
end if;
end case;
end process;
-- Process 3 - funcin de salida: implementa la salida como
-- una funcin de X y state.
output_func: process (X, state)
begin
case state is
when A =>
Z <= '0';
when B =>
Z <= '0';
when C =>
Z <= '0';
when D =>
if X = '1' then
Z <= '1';
else
Z <= '0';
end if;
end case;
end process;
end;
 FIGURA 6-33
Descripcin VHDL de un detector de secuencia (continuacin)

El nombre del nuevo tipo es statetype y los valores en este caso son los nombres de los
estados de la Figura 6-24(d). Una vez que se ha declarado un type, puede usarse para declarar
seales o variables. En el ejemplo de la Figura 6-31,
signal state, nextstate : statetype;

indica que state y nextstate son seales del tipo state type. As, state y nextstate
pueden tener los valores A, B, C y D.
El if-then-else bsico (sin usar el elsif) toma una bifurcacin basada en si una condicin
es VERDADERA o FALSA. Sin embargo, la sentencia case puede tomar mltiples decisiones

CIRCUITOS SECUENCIALES

273

basndose en que un nmero de sentencias sean VERDADERAS. Una forma simplificada para
la declaracin genrica case es
case expresin is
{when opciones =>
sucesin de sentencias;}
end case;

Las opciones deben ser valores asignables a una seal del tipo empleado en la expresin.
La declaracin case tiene un efecto similar a la sentencia de asignacin concurrente with-select.
En el ejemplo de las Figuras 6-32 y 6-33, Process 2 emplea una sentencia case para definir
el siguiente estado del detector de secuencia. La declaracin case toma una decisin mltiple
basada en el estado actual del circuito: A, B, C o D. La sentencia if-then-else se emplea dentro de
cada una de las alternativas para tomar una decisin binaria basada en si la entrada X es 1 o 0.
Entonces, se emplean sentencias de asignacin concurrentes para asignar el prximo estado en
funcin de las ocho posibles combinaciones de valores de estados y valores de entrada. Por
ejemplo, considere la alternativa when B. Si X es igual a 1, entonces el prximo estado ser C; si
X es igual a 0, entonces el prximo estado ser A. Esto se corresponde con las dos transiciones
del estado B de la Figura 6-24(d). Para circuitos ms complejos, tambin pueden emplearse sentencias case para manejar las condiciones de la entrada.
Con esta breve introduccin a la sentencia case ya podemos estudiar detectores de secuencia
globales. Cada uno de los tres procesos tiene una funcin distinta, pero los procesos interactan
para proporcionar el detector de secuencia global. Process 1 describe el almacenamiento del
estado. Observe que la descripcin est realizada con flip-flops disparados por flanco positivo.
Sin embargo, hay dos diferencias. Las seales involucradas son del tipo statetype en lugar
del tipo stdlogic. Segundo, el estado que resulta de aplicar la seal RESET es el estado A en
lugar del estado 0. Tambin, puesto que estamos usando nombres de estados como A, B y C, el
nmero de variables de estados (es decir, el nmero de flip-flops) no est especificado y desconocemos los cdigos de estados. Process 1 es el nico de los tres procesos que contiene almacenamiento.
Process 2 describe la funcin siguiente estado, discutida anteriormente. En este caso, la
lista de sensibilidad contiene la seal X y los estados. En el general, para describir lgica combinacional, deben aparecer todas las entradas en la lista de sensibilidad, ya que siempre que una
entrada cambie, el proceso tendr que ejecutarse.
Process 3 describe la funcin de salida. Se emplea la misma sentencia case que en el
Process 2 con el estado como expresin de decisin. En lugar de asignar nombres de estados
al siguiente estado, se asignan a Z valores 0 o 1. Si el valor que se asigna es el mismo independientemente del valor de X, no se necesita ningn if-then-else, por lo que slo aparece un
if-then-else para el estado D. Si hay variables de entrada mltiples, como anteriormente, se emplearn combinaciones anidadas de if-then-else o una sentencia case para representar las condiciones de las salidas en funcin de las entradas. Este ejemplo es un Diagrama de estados Mealy
en el que la salida es una funcin de las entradas del circuito. Si fuera un Diagrama de Moore,
con la salida dependiente slo del estado, la entrada X no aparecera en la lista de sensibilidad, y
no habra ninguna estructura if-then-else en la sentencia case.

Hay un peligro habitual cuando se emplea un if-then-else o un case. Durante la sntesis pueden aparecer elementos de almacenamiento indeseados en forma de latches o flip-flops. Para el
sencillo if-then-else utilizado en la Figura 6-31, este peligro se manifiesta obteniendo una especificacin que se sintetiza en un flip-flop. Adems de las dos seales de entrada, RESET y CLK,

274 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

se aade la seal CLK'event , que se obtiene aplicando el atributo predefinido event a la seal
CLK. CLK'event es VERDADERO si el valor de CLK cambia. Todas las posibles combinaciones de
estas seales se representan en la Tabla 6-8. Siempre que RESET es 0 y CLK est fijo a 0 o a 1 o
tiene un flanco negativo, no se especifica ninguna accin. En VHDL, se supone que, para cualquier combinacin de condiciones para la que no se especifica ninguna accin en las sentencias
 TABLA 6-8
Generacin de almacenamiento en VHDL
Entradas

Accin

RESET = 1

CLK = 1

CLKevent

FALSO
FALSO
FALSO
FALSO
VERDADERO

FALSO
FALSO
VERDADERO
VERDADERO

FALSO
VERDADERO
FALSO
VERDADERO

Sin especificar
Sin especificar
Sin especificar
Q <= D
Q <= '0'

if-then-else o case, el lado izquierdo de la sentencia de asignacin permanece inalterado. Esto


es equivalente a Q <= Q, originando un almacenamiento. Entonces, todas las combinaciones de
condiciones deben tener como resultado una accin especfica cuando no exista almacenamiento. Si esta no es una situacin natural, puede usarse others en el if-then-else o en el case. Si
hay valores binarios en la sentencia case, como en la Seccin 4-7, debe recurrirse a others para
manejar las combinaciones incluyendo los siete valores adems del 0 y el 1 permitidos para
stdlogic.
Juntos, los tres procesos empleados para el detector de secuencia describen el almacenamiento del estado, la funcin del estado futuro y la funcin de salida para un circuito secuencial. Puesto que estos son todos los componentes del circuito secuencial a nivel del diagrama de
estados, la descripcin est completa. El empleo de tres procesos distintos para describir el circuito secuencial es solo una metodologa. Pueden combinarse dos procesos o los tres para obtener descripciones ms elegantes. No obstante, la descripcin de tres procesos es ms fcil para
los principiantes en VHDL y adems funciona bien con las herramientas de sntesis.
Para sintetizar el circuito en lgica real se necesita una asignacin de estados adems de una
librera tecnolgica. Muchas herramientas de sntesis harn la asignacin de estados independientemente o en base a una directiva del usuario. El usuario tambin puede especificar explcitamente la asignacin de estados. Esto puede hacerse en VHDL empleando un tipo enumerado.
La codificacin para el diagrama de estados de las Figuras 6-32 y 6-33 se especifica aadiendo
lo siguiente despus de la declaracin del type statetype:
attribute enumencoding: string;
attribute enumencoding of statetype:
type is "00, 01, 10, 11";

Esto no es una construccin normal VHDL, pero es reconocida por muchas herramientas de
sntesis. Otra opcin es no usar una declaracin de tipo para los estados, sino declarar las variables de estados como seales y usar los cdigos reales para los estados. En este caso, si los
estados aparecen en la salida de la simulacin, aparecern como estados codificados.

CIRCUITOS SECUENCIALES

6-8 REPRESENTACIN DE HDL


SECUENCIALES-VERILOG

275

PARA CIRCUITOS

En el Captulo 4, se emple Verilog para describir circuitos combinacionales. Igualmente, Verilog puede describir elementos de almacenamiento y circuitos secuenciales. En esta seccin, para
ilustrar estos usos de Verilog recurriremos a describir un flip-flop D disparado por flanco positivo y un circuito detector de secuencia. Estas descripciones implicarn nuevos conceptos de
Verilog, los ms importantes son: el proceso y el tipo registro.
Hasta ahora se han empleado sentencias de asignacin para describir combinaciones de condiciones y acciones en Verilog. Sin embargo, una sentencia de asignacin continua est limitada
en cuanto a lo que puede describir. Un proceso puede verse como una opcin frente a la sentencia de asignacin continua, con un poder descriptivo considerablemente mayor. Es posible ejecutar concurrentemente varios procesos y un proceso se puede ejecutar concurrentemente con
sentencias de asignacin continuas.
Dentro de un proceso, se emplean sentencias de asignacin procedimentales que no son
asignaciones continuas. Es por ello que los valores asignados deben ser almacenados en el tiempo. Esta retencin de informacin se logra gracias al uso del tipo registro reg en lugar del tipo
wire para los nodos. La palabra clave para el tipo registro es reg. Observe que aunque un nodo
sea de tipo registro esto no significa que un registro real est asociado con su implementacin.
Hay otras condiciones adicionales que se necesitan para que exista un registro real.
Existen dos tipos bsicos de procesos, el proceso initial y el proceso always. El proceso
initial slo se ejecuta una vez, comenzando en t % 0. El proceso always tambin se ejecuta
para t % 0, pero se ejecuta repetidamente despus de t % 0. Para prevenir la ejecucin desenfrenada, descontrolada, se necesita algn control de tiempos en forma de retardo o tiempo de espera basado en algn evento. El operador seguido por un entero se emplea para especificar el
retardo. El operador @ puede verse como espera al evento. Una expresin a continuacin de
@ describe el evento o eventos cuya ocurrencia provocar que el proceso se ejecute.
El cuerpo de un proceso es como un programa secuencial. El proceso comienza con la palabra clave begin y acaba con la palabra clave end. Hay sentencias de asignacin procedimentales que constituyen el cuerpo del proceso. Estas sentencias de asignacin son clasificadas como
blocking o nonblocking. Las asignaciones blocking usan = como operador de la asignacin y las
nonblocking usan <= como operador. Las asignaciones blocking se ejecutan secuencialmente,
como un programa en un lenguaje procedimental como C. Las asignaciones nonblocking evalan el lado derecho, pero no efectan la asignacin hasta que se hayan evaluado todos los lados
derechos. Las asignaciones pueden ilustrarse por el siguiente cuerpo del proceso en el que A, B y
C son de tipo reg:
begin
B = A;
C = B;
end

La primera sentencia transfiere los contenidos de A a B. La segunda sentencia transfiere los nuevos contenidos de B a C. A la finalizacin del proceso, C contiene los contenidos originales de A.
Suponga que el mismo cuerpo del proceso usa asignaciones nonblocking:
begin
B <= A;
C <= B;
end

276 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La primera sentencia transfiere los contenidos de A a B y la segunda sentencia transfiere los


contenidos originales de B a C. A la finalizacin del proceso, C contiene los contenidos originales de B, no los de A. Efectivamente, la dos sentencias se han ejecutado concurrentemente en
lugar de en serie. Se emplean asignaciones nonblocking, excepto en los casos en los que queremos registros (tipo reg) que se evalen secuencialmente.

EJEMPLO 6-7 Verilog para flip-flop D con reset activo por flanco positivo
Estos nuevos conceptos pueden aplicarse ahora a la descripcin verilog de un flip-flop D disparado por flanco positivo dada en la Figura 6-34. Se declara el mdulo y sus entradas y salidas.
Q se declara como tipo reg puesto que guardar la informacin. El proceso comienza con la
palabra clave always. Lo siguiente es @(posedge CLK or posedge RESET). sta es la declaracin del evento de control del proceso que inicia la ejecucin del proceso si ocurre un evento
(es decir, si ocurre un cambio determinado en una seal determinada). Para el flip-flop D, tanto
si CLK o RESET cambian a 1, entonces el proceso se ejecuta. Es importante tener en cuenta que
la declaracin de eventos de control no es una lista de parmetros que contiene todas las entradas. Por ejemplo, la entrada D no aparece, ya que un cambio en su valor no origina un cambio
en el valor de Q. Tras la declaracin de eventos de control, el proceso comienza con la palabra
clave begin, y finaliza con la palabra clave end.
Dentro del cuerpo del proceso, pueden aparecer otras estructuras condicionales adicionales
de Verilog. Es interesante, en el ejemplo de la Figura 6-34, if-else. La estructura general de un
if-else en Verilog es
if (condicin)
begin declaraciones procedimentales end
{else if (condicin)
begin declaraciones procedimentales end}
{else
begin declaraciones procedimentales end}

// Flip-flop activado por flanco de subida con reset:


// descripcin de proceso Verilog
module dff_v(CLK, RESET, D, Q);
input CLK, RESET, D;
output Q;
reg Q;
always @(posedge CLK or posedge RESET)
begin
if (RESET)
Q <= 0;
else
Q <= D;
end
endmodule
 FIGURA 6-34
Descripcin Verilog de proceso de un flip-flop disparado por flanco de subida con reset

CIRCUITOS SECUENCIALES

277

Si hay una sola declaracin procedimental, entonces el begin y end son innecesarios:
if (A == 1)
Q <= X;
else if (el B == 0)
Q <= SI;
else
Q <= Z;

Observe que en las condiciones se emplea un doble igual entre las seales a comparar. Si A es 1,
entonces la Q del flip-flop se carga con el contenido de X. Si A es 0 y B es 0, entonces la Q del
flip-flop se carga con el contenido de Y. En cualquier otro caso, la Q se cargar con los contenidos de Z. El resultado final para las cuatro combinaciones de valores en A y en B es
A
A
A
A

=
=
=
=

0,
0,
1,
1,

B
B
B
B

=
=
=
=

0
1
0
1

Q
Q
Q
Q

<=
<=
<=
<=

Y
Z
X
X

En efecto, el if-else dentro de un proceso es similar al operador condicional de la sentencia


de asignacin continua introducida con anterioridad. El operador condicional puede usarse dentro de un proceso, pero el if-else no puede emplearse en una sentencia de asignacin continua.
Pueden conseguirse unas construcciones ms complejas anidando estructuras del tipo if-else.
Por ejemplo, podramos tener
if (A == 1)
if (C == 0)
Q <= W;
else
Q <= X;
else if (el B == 0)
Q <= Y;
else
Q <= Z;

En este tipo de estructura, un else se asocia con el if anterior ms prximo que no tenga todava un else. El resultado final para las ocho combinaciones de valores en A, B y C es
A
A
A
A
A
A
A
A

=
=
=
=
=
=
=
=

0,
0,
0,
0,
1,
1,
1,
1,

B
B
B
B
B
B
B
B

=
=
=
=
=
=
=
=

0,
0,
1,
1,
0,
0,
1,
1,

C
C
C
C
C
C
C
C

=
=
=
=
=
=
=
=

0
1
0
1
0
1
0
1

Q
Q
Q
Q
Q
Q
Q
Q

<
<
<
<
<
<
<
<

=
=
=
=
=
=
=
=

Y
Y
Z
Z
W
X
W
X

Volviendo al if-else del flip-flop D disparado por flanco positivo de la Figura 6-34, suponiendo que se ha producido un flanco en CLK o en RESET, si RESET es 1, la salida Q del flip-flop
se resetea a 0. En cualquier otro caso, el valor en D se almacena en el flip-flop de modo que Q se
hace igual a D. Debido a la estructura del if-else, RESET igual a 1 domina el comportamiento
sincrono del flip-flop D, lo que provoca que la salida Q sea 0. Descripciones igual de sencillas
pueden utilizarse para representar otros tipos de flip-flops y otros tipos de disparo.


278 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EJEMPLO 6-8 Verilog para el detector de secuencia


En la Figura 6-35 se ilustra un ejemplo ms complejo que representa el diagrama de estados del
detector de secuencia de la Figura 6-24(d). En esta descripcin la arquitectura consiste en tres
procesos distintos que se pueden ejecutar simultneamente y que interactan mediante seales.
Se incluyen nuevos conceptos como son la codificacin de estados y la sentencia case para manejar las condiciones.

 FIGURA 6-35
Descripcin de proceso Verilog del detector de secuencias

CIRCUITOS SECUENCIALES

279

En la Figura 6-35, se declaran el mdulo seqrecv y las variables de entrada y salida CLK,
RESET, X y Z. A continuacin, se declaran los registros state y nextstate. Vase cmo, ya
que nextstate no necesita almacenarse, tambin podra declararse como un wire, pero, puesto que se asigna dentro de un always, debe declararse como un reg. Ambos registros son de
dos bits, con el bit ms significativo (MSB) numerado como 1 y el bit menos significativo
(LSB) numerado como 0.
A continuacin, se da un nombre a cada uno de los estados de state y nextstate, y se
asignan los cdigos binarios para dichos nombres. Esto puede hacerse mediante una declaracin
de parmetros o mediante una directiva define del compilador. Nosotros emplearemos la declaracin de parmetros, ya que la directiva del compilador requiere un inoportuno ' antes de
cada estado a lo largo de la descripcin. A partir del diagrama de la Figura 6-24(d), los estados
que se obtienen son A, B, C y D. Adems, las declaraciones de parmetros permiten asignar, a
la vez, los cdigos de estados a cada uno de dichos estados. La notacin utilizada para definir
los cdigos de estado es 2'b seguido por el cdigo binario. El 2 indica que hay dos bits en el
cdigo y la 'b indica que la base del cdigo a emplear es binaria.
El if-else (sin usar el else if) toma una bifurcacin basndose en si una condicin es VERDADERA o FALSA. Por contra, la sentencia case puede tomar decisiones mltiples en funcin
de que una de varias sentencias sea VERDADERA. Una forma simplificada para la declaracin
genrica case es
case expresin
{case expresin: sentencias}
endcase

en la que las llaves{ } representan una o ms entradas.


La expresin del case debe tener valores que pueden asignarse al tipo de seal empleado
en la expresin. Normalmente, son secuencias de sentencias mltiples. En el ejemplo de la
Figura 6-35, la declaracin del case para la funcin del estado futuro toma una decisin de entre
muchas en base al estado actual del circuito, A, B, C o D. En cada expresin del case, se recurre
a sentencias condicionales de varios tipos para tomar una decisin binaria basndonos en si la
entrada X es 1 o 0. Sentencias de asignacin nonblocking se emplean para asignar el siguiente
estado basado en las ocho combinaciones posibles del valor del estado y del valor de la entrada.
Por ejemplo, considere la expresin B. Si X es igual a 1, entonces el siguiente estado ser C; si X
es igual a 0, entonces el siguiente estado ser A. Esto se corresponde con las dos transiciones
desde el estado B en la Figura 6-24(d).
Con esta breve introduccin a la sentencia case ahora ya podemos entender el detector de
secuencia global. Cada uno de los tres procesos tiene una funcin distinta, pero los procesos
interactan para obtener el detector global de secuencia. El primer proceso describe el registro
de estado para almacenar el estado del detector de secuencia. Observe que la descripcin es
similar a la de un flip-flop disparado por flanco positivo. Existen, sin embargo, dos diferencias.
Primero, el registro de estado tiene dos bits. Segundo, el estado que resulta de aplicar RESET es
el estado A en lugar del estado 0. El primer proceso es el nico de los tres procesos que lleva
implcito un almacenamiento.
El segundo proceso describe la funcin del estado futuro, como se discuti anteriormente.
La declaracin de eventos de control contiene las seales X y los estados. En general, para
describir la lgica combinacional, todas las entradas han de estar presentes en la declaracin de
control de eventos, puesto que siempre que una entrada cambie, el proceso debera ejecutarse.
El ltimo proceso describe la funcin de salida y emplea el mismo cuerpo de sentencias
case que el proceso de la funcin estado futuro. En lugar de asignar los nombres de estado a Z,

280 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

se asignan los valores 0 y 1. Si el valor asignado es el mismo tanto para el valor 0 como para el
valor 1 de X, no se necesita ninguna sentencia condicional y nicamente aparece la sentencia
condicional para el estado D. Si hay mltiples variables de entrada, como se ilustr antes, puede
emplearse una combinacin ms compleja de if-else para representar las condiciones de las salidas sobre las entradas. Este ejemplo es un Diagrama de Mealy en que la salida es funcin de las
entradas del circuito. Si fuera un Diagrama de Moore, con la salida dependiente nicamente del
estado, la entrada X no aparecera en la declaracin de eventos de control y no habra ninguna
estructura condicional dentro de la declaracin del case.

Hay un peligro habitual cuando se emplea un if-else o un case. Durante la sntesis pueden
aparecer elementos de almacenamiento indeseados en forma de latches o flip-flops. Para el sencillo if-else utilizado en la Figura 6-34, este peligro se manifiesta obteniendo una especificacin
que se sintetiza en un flip-flop. Adems de las dos seales de entrada, RESET y CLK, se aaden
los eventos posedge CLK y posedge RESET que son VERDADEROS si el valor de la seal correspondiente cambia de 0 a 1. En la Tabla 6-9 se muestran algunas combinaciones de estas seales.
Cuando RESET no tiene un flanco de subida o RESET es 0 y CLK est fijo a 0 o a 1 o tiene un
flanco de bajada no se especifica ninguna accin. En Verilog se supone que, para cualquier
combinacin de condiciones para la que no se especifica ninguna accin en las sentencias
if-else o case, el lado izquierdo de la sentencia de asignacin permanece inalterado. Esto es
equivalente a Q <= Q, originando un almacenamiento. Entonces, todas las combinaciones de condiciones deben tener como resultado una accin especfica cuando no exista almacenamiento.
Para evitar la aparicin de latches o flip-flops indeseados en un if-else hay que tener cuidado de
incluir un else siempre que no se desee que se genere almacenamiento. Para la construccin
case se debe incluir una sentencia default que defina qu debe hacerse para todos los casos no
declarados explcitamente. En el ejemplo podra ponerse un sentencia default que especificase
que el estado futuro es A.
Juntos, los tres procesos empleados para el detector de secuencia describen el almacenamiento de estados, la funcin de estado futuro y la funcin de salida para el circuito secuencial.
Dado que stos son todos los componentes de un circuito secuencial a nivel del diagrama de
estados, la descripcin est completa. La utilizacin de tres procesos distintos es slo una metodologa para la descripcin del circuito secuencial. Por ejemplo, podran combinarse fcilmente
los procesos de estado futuro y de la salida. No obstante, la descripcin de tres procesos es ms
fcil para los usuarios noveles de Verilog y funciona bien con las herramientas de sntesis.
 TABLA 6-9
Generacin de almacenamiento en Verilog
Entradas
posedge RESET
y RESET = 1

posedge CLK

FALSO
FALSO
VERDADERO
VERDADERO

FALSO
VERDADERO
FALSO
VERDADERO

Accin

Sin especificar
Q <= D
Q <= 0
Q <= 0

CIRCUITOS SECUENCIALES

281

6-9 RESUMEN DEL CAPTULO


Los circuitos secuenciales son la base fundamental en la que se asientan la mayora de los diseos digitales. Los flip-flops son los elementos de almacenamiento bsicos para los circuitos secuenciales sncronos. Los flip-flops se construyen a partir de elementos ms fundamentales llamados latches. Por ellos mismos los latches son transparentes y, en consecuencia, son muy
difciles de usar en circuitos secuenciales sncronos que emplean un solo reloj. Cuando se combinan los latches para formar los flip-flops, se logran elementos de almacenamiento no transparentes muy convenientes para utilizarlos en dichos circuitos. Los flip-flops tienen dos mtodos
de disparo: el maestro-esclavo y activo por flanco. Adems, hay varios tipos de flip-flops, incluyendo el D, SR, JK y T.
Los circuitos secuenciales se obtienen del empleo de estos flip-flops y lgica combinacional. Los circuitos secuenciales se pueden analizar para obtener las tablas de estados y los diagramas de estados que plasman el comportamiento de los circuitos. Tambin puede realizarse el
anlisis mediante el empleo de la simulacin lgica.
Estos mismos diagramas y tablas de estado se pueden formular a partir de las especificaciones verbales de los circuitos digitales. Asignando cdigos binarios a los estados y encontrando
las ecuaciones de entrada de los flip-flops se pueden disear los circuitos secuenciales. El proceso del diseo incluye tambin problemas como encontrar la lgica para las salidas del circuito, resetear el estado en el encendido y controlar el comportamiento del circuito cuando entra en
estados no usados por la especificacin original. Finalmente, la simulacin lgica juega un papel importante verificando que el circuito diseado se ajusta a la especificacin original.
Como alternativa al empleo de diagramas lgicos, de diagramas y tablas de estados, los circuitos secuenciales se pueden definir mediante descripciones en VHDL o Verilog. Estas descripciones, tpicamente a nivel de comportamiento, proporcionan una aproximacin potente y
flexible a la especificacin del circuito secuencial, tanto para la simulacin como para la sntesis automtica del circuito. Estas representaciones implican a los procesos, que proporcionan un
poder descriptivo mayor que las sentencias de asignacin concurrentes de VHDL y las sentencias de asignacin continua de Verilog. Los procesos, que permiten la codificacin del comportamiento de los circuitos de forma similar a un lenguajes de programacin, usan las sentencias
condicionales if-then-else y case, que pueden tambin emplearse para modelar eficazmente lgica combinacional.

REFERENCIAS
1.

MANO, M. M.: Digital Design, 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 2002.

2. ROTH, C. H.: Fundamentals of Logic Design, 4th ed. St. Paul: West, 1992.
3.

WAKERLY, J. F.: Digital Design: Principles and Practices, 3rd ed. Upper Saddle River,
NJ: Prentice Hall, 2000.

4. IEEE Standard VHDL Language Reference Manual. (ANSI/IEEE Std 1076-1993; revision
of IEEE Std 1076-1987). New York: The Institute of Electrical and Electronics Engineers,
1994.
5. PELLERIN, D. and D. TAYLOR: VHDL Made Easy! Upper Saddle River, NJ: Prentice Hall
PTR, 1997.
6. STEFAN, S. and L. LINDH: VHDL for Designers. London: Prentice Hall Europe, 1997.

282 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

7.

IEEE Standard Description Language Based on the Verilog(TM) Hardware Description


Language (IEEE Std 1364-1995). New York: The Institute of Electrical and Electronics
Engineers, 1995.
8. PALNITKAR, S.: Verilog HDL: A Guide to Digital Design and Synthesis. Upper Saddle River, NJ: SunSoft Press (A Prentice Hall Title), 1996.
9. CILETTI, M.: Modeling, Synthesis, and Rapid Prototyping with the Verilog HDL, Upper
Saddle River, NJ: Prentice Hall, 1999.
10. THOMAS, D. E., and P. R. MOORBY: The Verilog Hardware Description Language 4th ed.
Boston: Kluwer Academic Publishers, 1998.

PROBLEMAS
El smbolo (!) indica problemas ms avanzados y el asterisco (*) indica que la solucin se
puede encontrar en el sitio web del libro: http://www.librosite.net/Mano.
6-1. Realice una simulacin lgica manual o por computadora similar a la mostrada en el Figura 6-5 para el latch S1 R1 de la Figura 6-6. Construya la secuencia de entrada, teniendo
presente que los cambios en el estado para este tipo de latch ocurren en respuesta a 0 en
lugar de a 1.
6-2. Realice una simulacin lgica manual o por computadora similar a la dada en la Figura 6-5 para el latch SR con entrada de control C de la Figura 6-7. En particular, examine
el comportamiento del circuito cuando S y R cambian mientras que C tiene el valor 1.
6-3. En la Figura 6-36 se muestra un diseo alternativo muy habitual para un flip-flop D disparado por flanco positivo. Simule el circuito manual o automticamente para determinar
si su comportamiento funcional es idntico al del circuito de la Figura 6-13.

S
Q
C
R

 FIGURA 6-36
Circuito para el Problema 6-3

6-4. En la Figura 6-37 se muestran los cronogramas de las seales aplicadas a los flip-flops SR
y D. Junto a los cronogramas de estos flip-flop se muestran los valores de sus parmetros
temporales.

CIRCUITOS SECUENCIALES

283

Clock

S1,D2
R1,D3

4
S1

8
S

12

16
D2

Clock
C
R1
R
ts  tch  4.0 ns
th  0.0 ns

20
D

Clock
ts  1.0 ns
th  0.5 ns

24

28
D3

32 t(ns)
D

Clock
ts  1.0 ns
th  0.5 ns

 FIGURA 6-37
Cronograma y flip-flops para el Problema 6-4

(a) Indique los instantes del cronograma en los cuales hay violaciones en las combinaciones de entrada o en los parmetros temporales para la seal S1 del flip-flop 1.
(b) Indique las posiciones del cronograma en las cuales hay violaciones en las combinaciones de entrada o en los parmetros temporales para la seal R1 del flip-flop 1.
(c) Enumere los tiempos en los cuales hay violaciones de los parmetros temporales en la
seal D2 del flip-flop 2.
(d) Enumere los tiempos en los cuales hay violaciones de los parmetros temporales en
la seal D3 del flip-flop 3.
Se deben indicar las violaciones aunque el estado del flip-flop sea tal que estas violaciones no afecten al siguiente estado.
6-5. Las siguientes ecuaciones de entrada especifican un circuito secuencial con dos flip-flop,
A y B, de tipo D, dos entradas, X e Y, y una salida Z:
DA % X1 A ! XY

DB % X1 A ! XB

Z % XB

(a) Dibuje el diagrama lgico del circuito.


(b) Obtenga la tabla de estados para el circuito.
(c) Obtenga el diagrama de estados.
6-6. *Un circuito secuencial tiene tres flip-flop D nombrados A, B y C, y una entrada X. El
circuito se describe mediante las siguientes ecuaciones de entrada:
DA % (BC1 ! B1 C)X ! (BC ! B1 C1 )X1
DB % A
DC % B
(a) Obtenga la tabla de estados para el circuito.
(b) Dibuje dos diagramas de estado, uno para X % 0 y el otro para X % 1.

284 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

6-7. Un circuito secuencial tiene un flip-flop Q, dos entradas X e Y, y una salida S. El circuito
consiste en un flip-flop tipo D con una salida S y lgica adicional que implementa la funcin:
D%XSYSS
con D como la entrada al flip-flop D. Obtenga la tabla y el diagrama de estados del circuito secuencial.
6-8. A partir del estado 00 del diagrama de estados de la Figura 6-19(a), determine las transiciones de estado y la secuencia de salida que se obtiene cuando se aplica la secuencia de
entrada 10011011110.
6-9. Dibuje el diagrama de estados del circuito secuencial especificado por la tabla de estados
en la Tabla 6-10.
 TABLA 6-10
Tabla de estados para el circuito del Problema 6-9
Estado actual

Entradas

Estado futuro

Salida

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

0
0
1
1
0
1
1
0
1
1
1
1
0
0
0
0

0
1
0
1
1
0
0
0
1
1
1
0
0
0
0
1

0
0
1
1
1
1
0
0
1
0
1
0
0
1
0
1

6-10. *Un circuito secuencial tiene dos flip-flop SR, una entrada X, y una salida Y. El diagrama lgico del circuito se muestra en la Figura 6-38. Obtenga la tabla y el diagrama de
estados del circuito.
6-11.

En la Figura 6-38 se muestra un circuito secuencial. Los parmetros temporales


para las puertas y los flip-flop son los siguientes:
Inversor: tpd % 0.5 ns
Puerta XOR: tpd % 2.0 ns
Flip-flop: tpd % 2.0 ns, ts % 1.0 ns y th % 0.25 ns

CIRCUITOS SECUENCIALES

285

S
C

C
R

Clock

Y
X

 FIGURA 6-38
Circuito para los Problemas 6-10, 6-11 y 6-12

(a) Encuentre el camino con ms retardo del circuito desde una entrada externa a travs de
puertas hasta una salida del circuito.
(b) Encuentre el camino con ms retardo en el circuito desde una entrada externa hasta
el flanco positivo del reloj.
(c) Encuentre el camino con ms retardo desde el flanco positivo del reloj hasta la salida.
(d) Encuentre el camino con ms retardo entre dos flancos de reloj positivos.
(e) Determine la frecuencia mxima de funcionamiento del circuito en megahercios
(MHz).
6-12. Repita el Problema 6-11 suponiendo que el circuito est formado por dos circuitos idnticos al de la Figura 6-38 con la entrada X del segundo circuito conectada a la entrada Y
del primer circuito.
6-13. En base al circuito secuencial de la Figura 6-17.
(a) Aada la lgica y/o las conexiones necesarias al circuito para proporcionar un reset
asncrono hacia el estado A % 0, B % 1 cuando la seal Reset % 1.
(b) Aada la lgica y/o las conexiones necesarias al circuito para proporcionar un reset
sncrono hacia el estado A % 0, B % 0 cuando Reset % 0.
6-14. *Disee un circuito secuencial con dos flip-flop tipo D denominados A y B y una entrada X. Cuando X % 0, el estado del circuito permanece igual. Cuando X % 1, el circuito
evoluciona a travs de las siguientes transiciones de estado: desde 00 a 10 a 11 a 01, de
nuevo a 00, y entonces se repiten.
6-15. *Se debe disear un complementador a 2 serie. Se presenta en la entrada X del complementador de dos bits un nmero entero binario de longitud arbitraria, el bit menos significativo se presenta en primer lugar. Cuando un bit determinado se presenta en la entrada X, el bit correspondiente aparece durante el mismo ciclo de reloj en la salida Z. Para
indicar que una secuencia ha finalizado y que hay que inicializar el circuito para recibir
otra secuencia, la entrada Y debe colocarse a 1 durante un ciclo de reloj. De lo contrario,
Y es 0.
(a) Encuentre el diagrama de estados para el complementador a 2 serie.
(b) Encuentre la tabla de estados para el complementador serie.
6-16. El enlace USB (Universal Serial Bus) requiere un circuito que produzca la secuencia
00000001. Debe disear un circuito secuencial sncrono que comience produciendo esta
secuencia para la entrada E % 1. Una vez que se comience la secuencia se debe comple-

286 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

tar. Si E % 1 durante la ltima salida de la secuencia, se repite la secuencia. Si no, si


E % 0, la salida permanece constante a 1.
(a) Dibuje el Diagrama de estados de Moore para el circuito.
(b) Encuentre la tabla de estados y realice una asignacin de estados.
(c) Disee el circuito usando flip-flop D y las puertas lgicas necesarias. Se debe incluir
un Reset para colocar al circuito en el estado inicial apropiado en el cual se evale E
para determinar si se debe producir la secuencia o una cadena constante de 1.
6-17. Repita el Problema 6-16 para la secuencia 01111110 que se utiliza en un determinado
protocolo de comunicaciones de red.
6-18. !La secuencia del Problema 6-17 es un flag empleado en las comunicaciones de red y
representa el principio de un mensaje. Este flag ha de ser nico. Por consiguiente, deben
aparecer menos de cinco 1 en cualquier otro lugar dentro del mensaje. Puesto que esto
no es realista en mensajes normales, se recurre a un truco denominado insercin de ceros. El mensaje normal, que puede contener secuencias de ms de cinco 1s, se introduce
en la entrada X de un circuito secuencial de insercin de 0s. El circuito tiene dos salidas
Z y S. Cuando aparece el quinto 1 en X, se inserta un 0 en la secuencia de salida que
aparece en Z al tiempo que la salida S % 1 indica que el circuito de insercin de ceros
est funcionando y que el circuito de entrada debe detenerse, no generando una nueva
entrada durante un ciclo de reloj. Esto es necesario puesto que la insercin de 0 en la
secuencia de salida la hace ser ms larga que la secuencia de entrada sin la parada. Se
ilustra la insercin de ceros mediante las siguientes secuencias de ejemplo:
Secuencia
Secuencia
Secuencia
Secuencia

en
en
en
en

X sin parada:
X con las paradas:
Z:
S:

01111100111111100001011110101
0111111001111111100001011110101
0111110001111101100001011110101
0000001000000010000000000000000

(a) Encuentre el diagrama de estados para el circuito.


(b) Encuentre la tabla de estados para el circuito y realice una asignacin de estados.
(c) Encuentre una implementacin del circuito usando flip-flop D y puertas lgicas.
6-19. En muchos de los sistemas de comunicacin y de redes la seal transmitida por la lnea
de comunicacin emplea un formato de no retorno a cero (NRZ). USB utiliza una versin especfica denominada sin retorno a cero invertido (NRZI). Disee un circuito que
convierta cualquier mensaje formado por una secuencia de 0 y 1 a una secuencia en formato NRZI. El mapeado para dicho circuito es el siguiente:
(a) Si el bit del mensaje es un 0, entonces el mensaje en formato NRZI cambia de inmediato de 1 a 0 o de 0 a 1, dependiendo del valor actual de NRZI.
(b) Si el bit del mensaje es un 1, entonces el mensaje en formato NRZI permanece fijo a
0 o a 1, dependiendo del valor actual de NRZI.
Estos cambios se muestran en el siguiente ejemplo suponiendo que el valor inicial del
mensaje de NRZI es 1:
Mensaje:
Mensaje de NRZI:

10001110011010
10100001000101

(a) Encuentre el Diagrama de estados de Mealy para el circuito.


(b) Encuentre la tabla de estados para el circuito y realice una asignacin de estados.
(c) Encuentre una implementacin del circuito empleando flip-flop D y puertas lgicas.

CIRCUITOS SECUENCIALES

287

6-20. !Repita el Problema 6-19, diseando el circuito secuencial que transforma un mensaje
de NRZI en un mensaje normal. El mapeado para dicho circuito es el siguiente:
(a) Si en el mensaje de NRZI aparece un cambio de 0 a 1 o de 1 a 0 entre bits adyacentes en el mensaje de NRZI, entonces el bit del mensaje es un 0.
(b) Si no se produce ningn cambio entre bits adyacentes del mensaje NRZI, entonces
el bit del mensaje es un 1.
6-21. Se emplean las seales Request (R) y Acknowledge (A) para coordinar transacciones entre una CPU y su sistema de entrada-salida. Usualmente se denomina handshake al
intercambio de estas seales. Son seales sncronas con el reloj y, para una transaccin,
sus transiciones aparecen siempre en el orden que se muestra en la Figura 6-39. Se debe
disear un comprobador de handshake que verificar el orden de las transiciones. El
comprobador tiene dos entradas R y A, una seal de reset asncrona RESET y la salida
CLK
R

 FIGURA 6-39
Cronograma para el Problema 6-21

de Error (E). Si las transiciones estn en orden, E % 0. Si las transiciones no estn


en orden, entonces E se convierte en 1 hasta que se aplique una seal asncrona reset
(RESET % 1) a la CPU.
(a) Encuentre el diagrama de estados para el comprobador de handshake.
(b) Encuentre la tabla de estados para el comprobador de handshake.
6-22. Debe disear un detector serie de 1. En la entrada X se aplica un nmero entero binario
de longitud arbitraria empezando por el bit menos significativo. Cuando un determinado
bit se presenta en la entrada X, aparece en la salida Z, durante el mismo ciclo de reloj, el
bit correspondiente de salida. Mientras que los bits aplicados a X sean 0, Z % 0. Cuando
se aplica a X el primer 1, Z % 1. Para todos los valores de bits aplicados a X despus del
primer 1, Z % 0. Para indicar que la secuencia ha finalizado y que el circuito debe ser
inicializado para recibir otra secuencia, Y ha de ser 1 durante un ciclo de reloj. De lo
contrario, Y es 0.
(a) Encuentre el diagrama de estados para el detector serie de 1.
(b) Encuentre la tabla de estados para el detector serie de 1.
6-23. *Un circuito secuencial tiene dos flip-flops A y B, una entrada X y una salida Y. El diagrama de estados se muestra en la Figura 6-40. Disee el circuito con flip-flops tipo D.

288 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

00/1

11/0

01/0

10/0

 FIGURA 6-40
Diagrama de estados para el Problema 6-23

6-24. *Un flip-flop maestro-esclavo dominante a 1 tiene entradas de set y reset. Se diferencia
de un flip-flop SR maestro-esclavo convencional en que, cuando S y R son iguales a 1,
el flip-flop se pone a 1.
(a) Obtenga la tabla caracterstica del flip-flop dominante a 1.
(b) Encuentre el diagrama de estados para el flip-flop dominante a 1.
(c) Disee el flip-flop empleando un flip-flop SR y puertas lgicas (incluyendo inversores).
6-25. Encuentre el diagrama lgico para el circuito que verifica la tabla de estados dada en la
Tabla 6-5. Utilice flip-flops D.
6-26. !En la Tabla 6-11 se muestra la tabla de estados para un Contador Johnson. Este circuito no tiene ninguna entrada, y sus salidas son las salidas de los flip-flops. Puesto que
no tiene ninguna entrada, siempre que se produzca un pulso de reloj, avanza de estado
en estado.
(a) Disee el circuito empleando flip-flops D y suponga que los estados siguientes a los
no especificados son indiferencias.
(b) Aada la lgica necesaria al circuito para inicializarlo al estado 000 en el reset
inicial.
(c) En la subseccin Diseando con estados no deseados de la Seccin 6-5, se discutieron tres tcnicas para atender las situaciones en las que un circuito entra accidentalmente en un estado no usado. Si el circuito que usted dise en las secciones (a)
y (b) se utiliza en el juguete de un nio, cul de las tres tcnicas empleara? Justifique su respuesta.
(d) De acuerdo con su respuesta en el Apartado (c), reajuste el circuito en caso de necesidad.
(e) Repita el Apartado (c) para el caso en el que el circuito se emplee para controlar los
motores en un avin comercial de pasajeros. Justifique su respuesta.
(f) Repita el Apartado (d) en base a la respuesta del Apartado (e).
6-27. Realice una verificacin manual de la solucin (la suya o la que est el sitio web del
libro) del Problema 6-24. Considere que todas las transiciones de S y R ocurren con el
reloj igual a 0.

CIRCUITOS SECUENCIALES

289

 TABLA 6-11
Tabla de estados para el Problema 6-26
Estado actual

Estado futuro

ABC

ABC

000
100
110
111
011
001

100
100
111
011
001
000

6-28. Realice una verificacin basada en la simulacin lgica de su diseo para el Problema 6-25. La secuencia de entrada empleada en la simulacin debe incluir todas las transiciones de la Tabla 6-6. La salida de la simulacin incluir la entrada X, las variables A, B
y la salida Z.
6-29. *Genere una secuencia de verificacin para el circuito descrito por la tabla de estados de
la Tabla 6-10. Para reducir la longitud de la secuencia de la simulacin, suponga que el
simulador puede manejar entradas X y utilice X siempre que sea posible. Suponga que
se dispone de una entrada reset para inicializar el estado a A % 0, B % 0 y que se deben
ejecutar todas las transiciones del diagrama de estados.
6-30. Disee el circuito especificado por la Tabla 6-10 y utilice la secuencia del Problema 6-29
(la suya o la que se muestra en el sitio web del libro) para realizar una verificacin basada en la simulacin lgica de su diseo.
6-31. *Obtenga un cronograma similar al de la Figura 6-11 para un flip-flop JK disparado por
flanco positivo durante cuatro impulsos de reloj. Muestre la evolucin temporal de las
seales C, J, K, Y y Q. Suponga que la salida Q es inicialmente igual a 1, con J % 0 y
K % 1 para el primer pulso. Entonces, para los pulsos sucesivos, J pasa a 1, seguido por
K que pasa a 0 y entonces J retorna de nuevo a 0. Suponga que cada entrada cambia
cerca del flanco negativo del pulso.
Todos los archivos HDL para circuitos referidos en los restantes problemas estn disponibles en
ASCII para su simulacin y edicin en el sitio web del libro. Para los problemas que piden simulacin se necesita un compilador/simulador de VHDL o Verilog. En cualquier caso, siempre
se pueden escribir las descripciones HDL de muchos problemas sin necesidad de compilar o
simular.
6-32. *Escriba una descripcin VHDL para el multiplexor de la Figura 4-14 empleando un
proceso que contenga una declaracin case adems de sentencias de asignacin continuas tal y cmo se indic en la Seccin 4-7.
6-33. Repita el Problema 6-32 empleando un proceso VHDL con sentencias if-then-else.
6-34. !Escriba una descripcin VHDL para el circuito secuencial que tiene el diagrama de
estados dado en la Figura 6-25(d). Incluya una seal de RESET asncrona para inicializar el circuito al estado Init. Compile su descripcin, aplique una secuencia de entrada
que pase a travs de cada transicin del diagrama de estados por lo menos una vez y

290 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

verifique los estados y la secuencia de salida comparndolos con los del diagrama de
estados dado.
6-35. Escriba una descripcin VHDL para el circuito especificado en el Problema 6-15.
6-36. Escriba una descripcin VHDL para el circuito especificado en el Problema 6-19.
6-37. *Escriba una descripcin VHDL para un flip-flop JK activo por flanco negativo con entrada de reloj CLK. Compile y simule su descripcin. Aplique una secuencia que genere
las ocho posibles combinaciones de las entradas J y K y del valor almacenado Q.
6-38. Escriba una descripcin Verilog para el multiplexor de la Figura 4-14 empleando un
proceso con una declaracin case adems de las sentencias de asignacin continuas tal y
cmo se ilustr en la Seccin 4-8.
6-39. *Repita el Problema 6-38 utilizando un proceso Verilog que contenga sentencias if-else.
6-40. !Escriba una descripcin Verilog para el circuito secuencial dado por el diagrama de
estados de la Figura 6-25(d). Incluya una seal asncrona de RESET para inicializar el
circuito al estado Init. Compile su descripcin, aplique una secuencia de entrada que
pase a travs de cada transicin del diagrama de estados por lo menos una vez y verifique los estados y la secuencia de salida comparndolos con los del diagrama de estados
dado.
6-41. Escriba una descripcin Verilog para el circuito especificado en el Problema 6-15.
6-42. Escriba una descripcin Verilog para el circuito especificado en el Problema 6-19.
6-43. *Escriba una descripcin Verilog para un flip-flop JK activo por flanco negativo con
entrada de reloj CLK. Compile y simule su descripcin. Aplique una secuencia que genere las ocho posibles combinaciones de las entradas J y K y del valor almacenado Q.

CAPTULO

7
REGISTROS Y TRANSFERENCIA
DE REGISTROS

n los Captulos 4 y 5 hemos estudiado los bloques de funciones combinacionales. En el Captulo 6 hemos examinado los circuitos secuenciales. En este captulo traemos ambas ideas juntas y presentamos los bloques de funciones secuenciales, generalmente conocidas como registros y contadores. Los circuitos que
fueron analizados o diseados en el Captulo 6 no tenan ninguna estructura en particular y el nmero de flip-flops fue bastante pequeo. Por contra, los circuitos que aqu
consideramos tienen ms de una estructura, con mltiples etapas o clulas que son
idnticas o casi idnticas. Adems, debido a esta estructura, es fcil aadir ms etapas para crear circuitos con muchos ms flip-flops que en los circuitos descritos en el
Captulo 6. Los registros son particularmente tiles para almacenar informacin durante el procesado de datos y los contadores ayudan en la secuencia de estos procesamientos.
Un sistema digital presenta frecuentemente una ruta de datos y una unidad de
control en el nivel ms alto de la jerarqua de diseo. Una ruta de datos consiste en
una lgica de procesamiento y una coleccin de registros que realizan el procesado
de los datos. Una unidad de control, realizada con lgica, determina la secuencia del
procesado de datos realizada por la ruta de datos. La notacin Transferencia de Registros describe las acciones elementales para el procesado de datos, llamada microoperaciones. La transferencia de registros es el movimiento de informacin entre
registros, entre registros y memoria, a travs de la lgica de procesamiento. El hardware dedicado a transferir datos usando multiplexores y el hardware compartido para
esta transferencia, llamado bus, realizan el movimiento de los datos.
En la computadora genrica del Captulo 1, los registros se usan de forma extensiva para almacenamiento temporal de datos en zonas aparte de la memoria. Este tipo
de registros son, frecuentemente, grandes, con al menos 32 bits. Hay registros especiales, llamados registros de desplazamiento, que se usan con menos frecuencia, que
aparecen principalmente en los bloques de entrada/salida del sistema. Los contadores se usan en varias partes de la computadora para controlar o seguir la pista a las
secuencias de las operaciones. En general, los bloques funcionales secuenciales se
usan ampliamente en la computadora genrica. En particular, tanto la CPU, como la
FPU del procesador contienen gran nmero de registros que estn involucrados en la
transferencia de registros y la ejecucin de las microoperaciones. En la CPU y la FPU
es donde tiene lugar la transferencia de datos, sumas, restas y otras microoperaciones. Finalmente, las conexiones mostradas entre las diversas partes electrnicas de
la computadora son los buses, se discuten por primera vez en este captulo.

292

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

7-1 REGISTROS Y HABILITACIN DE CARGA


Un registro est compuesto por un conjunto de flip-flops. Puesto que cada flip-flop es capaz de
almacenar un bit de informacin, un registro de n bits, compuesto de n flip-flops, es capaz de
almacenar n bits de informacin binaria. Para una definicin ms general, un registro est compuesto de un conjunto de flip-flops, junto con puertas que definen la transicin de sus estados.
Esta definicin tambin incluye a los diversos circuitos secuenciales considerados en el Captulo 6. Ms comnmente, el termino registro se aplica a un conjunto de flip-flops, con la posibilidad de incorporar puertas, que realicen las tareas de procesamiento de datos. Los flip-flops retienen los datos y las puertas determinan el dato nuevo, o transformado, que se transfiere a los
flip-flops.
Un contador es un registro que transita a travs de una determinada secuencia de estados
segn la aplicacin de pulsos de reloj. Las puertas en un contador se conectan de tal forma que
prescribe la secuencia de los estados binarios. Aunque los contadores son un tipo especial de
registros, habitualmente se diferencian de los registros.
Los registros y los contadores son bloques funcionales secuenciales que se usan extensivamente en el diseo de sistemas digitales en general y en el diseo de computadoras en particular. Los registros son tiles para almacenamiento y manipulacin de la informacin; los contadores se emplean en los circuitos que secuencian y controlan las operaciones en un
sistema digital.
El registro ms simple es un registro compuesto solamente por flip-flops sin puertas adicionales. La Figura 7-1(a) muestra un registro construido con cuatro flip-flops de tipo D. El reloj,
comn a los flip-flops, los dispara con el flanco de subida de cada pulso, y la informacin binaria disponible en las entradas D se transfiere a dentro del registro de 4 bits. Las cuatro salidas,
Q, pueden ser muestreadas para obtener la informacin binaria almacenada en el registro. La
entrada Clear va conectada a la entrada R1 de los cuatro flip-flops y se usa para inicializar el
registro con valor 0 antes de operar con el reloj. Esta entrada, se etiqueta Clear en lugar de
Clear, puesto que ha de aplicarse un 0 al reset de los flip-flops asncronamente. La activacin
de las entradas de reset asncrono, R1 , durante el modo sncrono de operacin (con el reloj) puede llevar a diseo de circuitos que son muy dependientes de retardos y pueden, por tanto, funcionar mal con facilidad. As, mantendremos el Clear a un nivel lgico 1 durante el modo normal
de operacin sincronizado, permitiendo que sea un 0 lgico cuando se desea una inicializacin
del sistema. Vase que la posibilidad de poner el registro a 0 es opcional; el que pueda ponerse
un registro a 0 va a depender de si el registro del sistema tiene entrada de inicializacin o no.
La transferencia de nueva informacin en el registro se denomina carga del registro. Si todos los bits del registro se cargan simultneamente con el pulso de reloj comn, decimos que la
carga se realiza en paralelo. Un flanco positivo o de subida aplicado a la entrada Clock de (reloj) del registro de la Figura 7-1(a) carga todas las entradas D de los flip-flops en paralelo.
La Figura 7-1(b) muestra el smbolo que representa el registro de la Figura 7-1(a). Este smbolo permite el uso de un registro en un diseo jerrquico. El smbolo tiene todas las entradas
del circuito a su izquierda y todas las salidas del circuito a la derecha. Las entradas incluyen la
entrada de reloj con el indicador que representa el disparo con el flanco positivo de los flipflops. Vase que el nombre Clear aparece dentro del smbolo con una burbuja en la lnea de la
seal en el exterior del smbolo. Esta notacin indica que la aplicacin de un 0 lgico a esta
seal activa la operacin de puesta a 0 de los flip-flops del registro. Si la lnea de la seal fuese
etiquetada fuera del smbolo, debera aparecer como Clear.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

D0

293

Q0

Clock

Clear

R
REG

D1

Q1

Clear
C
R

D2

Q2

D0

Q0

D1

Q1

D2

Q2

D3

Q3

C
(b) Smbolo
R

D3

Q3

Load
Clock

Entradas C (entradas
de reloj de los flip-flops)
(c) Entrada de control de carga

C
R

(a) Diagrama lgico


Clock

Load
Entradas C
(d) Diagrama de tiempos

FIGURA 7-1
Registro de 4 bits

Registro con carga en paralelo


La mayora de los sistemas digitales tienen un generador de reloj maestro que proporciona un
tren de pulsos continuo. Los pulsos se aplican a todos los flip-flops y registros del sistema. De
hecho, el reloj maestro acta como el corazn que proporciona un pulso constante a todas las
parte del sistema. En el diseo de la Figura 7-1(a), se debe impedir que el reloj acte sobre la
entrada de reloj del circuito si se quiere dejar inalterado el contenido del registro. Para ello, se
usa una seal de control aparte para controlar que los ciclos de reloj afecten al registro. As se
evita que los pulsos de reloj lleguen al registro si su contenido no ha de ser cambiado. Esta
funcin puede realizarse con una entrada de control de carga, Load, combinada con el reloj,
como se muestra en la Figura 7-1(c). La salida de la puerta OR se aplica a las entradas C de los
flip-flops del registro. La ecuacin de la lgica mostrada es
C entradas % Load ! Clock

294

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Si la seal Load es 1, C % Clock, as el registro se sincroniza normalmente y la nueva informacin se transfiere al registro con el flanco de subida del reloj. Si la seal Load es 0, C % 1. Con
esta entrada constante aplicada no hay flancos positivos en las entradas C, as el contenido del
registro permanece sin cambiar. El efecto de la seal Load sobre la seal C de los flip-flops se
muestra en la Figura 7-1(d). Vase que los pulsos de reloj que aparecen en C son pulsos que
transitan a 0 seguidos de un flanco positivo que dispara a los flip-flops. Estos pulsos y flancos
aparecen cuando Load es 1 y cuando Load es 0 se reemplazan por un 1 constante. Para que este
circuito funcione correctamente, Load debe ser constante en su valor seleccionado, tanto 0 como 1, durante el intervalo en que Clock es 0.
Esta situacin ocurre cuando Load procede de un flip-flop que se dispara en el flanco positivo del reloj, circunstancia normal si todos los flip-flops del sistema son activados con el flanco
positivo. A esta tcnica que deja pasar o no la seal de reloj a las entradas C del registro usando
puertas lgicas, se le llama clock gating1.
La insercin de puertas en el camino del reloj produce diferentes retardos de propagacin
entre el Reloj y las entradas de los flip-flops con o sin clock gating. Si la seal de reloj llega a
diferentes flip-flops o registros en diferentes instantes de tiempo, se dice que se produce un
skew de reloj. Pero para tener un sistema sncrono fiable, debemos asegurar que todos los pulsos
de reloj llegan simultneamente a todo el sistema de forma que todos los flip-flops se disparan
al mismo tiempo. Por esta razn, en diseos rutinarios, se aconseja el control de la operacin
del registro sin pasar el reloj por puertas. Por otra parte, los retardos deben controlarse para
conseguir un skew de reloj tan cercano como sea posible. Este concepto es aplicable en diseos
de bajo consumo y de alta velocidad.
En la Figura 7-2(c), se muestra un registro de 4 bits con entrada de control de carga llevada
a cabo mediante puertas y sobre las entradas D de los flip-flops, en lugar de hacerlo sobre las
entradas C. Este registro se basa en una clula de un bit, mostrada en la Figura 7-2(a), que consiste en un multiplexor de 2 a 1 y un flip-flop tipo D. La seal EN selecciona entre la entrada
del bit D de la clula y el valor de Q de la salida de la clula. Para EN % 0, se selecciona Q y la
salida se recarga en el flip-flop, preservando su estado actual. La realimentacin de la salida a
la entrada es necesaria puesto que el flip-flop tipo D, no como otros tipos de flip-flops, no
tiene una condicin de entrada de no cambio. Con cada pulso de reloj, la entrada D determina el siguiente estado de la salida. Para dejar la salida sin modificar es necesario hacer la
entrada D igual al valor presente en la salida. La lgica de la Figura 7-2(a) puede verse como
un nuevo flip-flop tipo D, un flip-flop tipo D con habilitacin, cuyo smbolo se muestra en la
Figura 7-2(b).
El registro se disea colocando cuatro flip-flops con habilitacin en paralelo y conectando la
entrada de carga, Load, a la entrada EN. Cuando Load es 1, el dato colocado en las cuatro entradas se transfiere al registro con el siguiente flanco de subida del reloj. Si Load es 0, el valor
actual del registro permanece en el siguiente flanco de subida del reloj. Vase que los pulsos de
reloj se aplican a las entradas C continuamente. La seal Load determina si el siguiente pulso
acepta la nueva informacin o deja la informacin del registro intacta. La transferencia de informacin de las entradas a registrar se hace simultneamente para los cuatro bits durante una sola
transicin positiva del pulso. Este mtodo de transferencia es preferible, tradicionalmente, frente
al clock gating, puesto que evita el skew de reloj y los posibles fallos de funcionamiento del
circuito.

1 N. del T.: No existe un trmino en espaol para denominar a esta tcnica.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

EN
D
C

D
Flip-flop D con habilitacin

(a)

295

D
EN
C
(b)

D0

D
EN
C

Q0

D1

D
EN
C

Q1

D2

D
EN
C

Q2

D3
Load
Clock

D
EN
C

Q3

(c)

FIGURA 7-2
Registro de 4 bits con carga en paralelo

7-2 TRANSFERENCIA DE REGISTROS


Un sistema digital es un circuito secuencial construido con flip-flops y puertas interconectados.
En el Captulo 6 aprendimos que los circuitos secuenciales pueden especificarse por medio de
tablas de estados. Especificar un sistema digital grande con tablas de estados es muy difcil,
sino imposible, debido al prohibitivo gran nmero de estados. Para vencer esta dificultad, los
sistemas digitales se disean usando esquemas modulares y jerrquicos. El sistema se divide en
subsistemas o mdulos, cada uno de los cuales desarrolla alguna funcin. Los mdulos se construyen jerrquicamente a partir de bloques funcionales como registros, contadores, decodificadores, multiplexores, buses, elementos aritmticos, flip-flops y puertas. Los diversos subsistemas se comunican con seales de datos y de control para formar los sistemas digitales.
En la mayora de los diseos de sistemas digitales, partimos el sistema en dos tipos de mdulos: una ruta de datos, que realiza las operaciones de procesado de datos, y una unidad de
control, que determina la secuencia de estas operaciones. La Figura 7-3 muestra, en general, la
relacin entre una ruta de datos y una unidad de control. Las seales de control son seales
binarias que activan las diversas operaciones para el procesamiento de datos. Para activar la
secuencia de tales operaciones, la unidad de control manda la secuencia adecuada de seales de
control a la ruta de datos. La unidad de control, en cambio, recibe los bits de status que describen aspectos del estado de la ruta de datos. La unidad de control usa los bits de status para
definir la secuencia especfica de operaciones que se van a llevar a cabo. Observe que la ruta de
datos y la unidad de control pueden tambin interactuar con otras partes de un sistema digital,

296

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Seales de control
Entradas
de control

Unidad
de control

Seales de status

Ruta
de datos
Salida
de datos

Salidas
de control

Entradas
de datos

FIGURA 7-3
Interaccin entre la ruta de datos y la unidad de control

como la memoria, lgica de entrada/salida, mediante los datos de entrada, datos de salida, entradas y salidas de control.
Las rutas de datos se definen mediante sus registros y las operaciones realizadas sobre datos
binarios almacenados en los registros. Ejemplos de estas operaciones en registros son: carga,
inicializacin, desplazamiento y cuenta. Se considera que los registros son los componentes bsicos de un sistema digital. Se llama operaciones de transferencia de registros al movimiento
de los datos almacenados en los registros y al procesado realizado sobre los datos. Las operaciones de transferencia de registros de un sistema digital se especifican mediante tres componentes
bsicos siguientes:
1. conjunto de registros del sistema,
2. operaciones que se realizan sobre los datos almacenados en los registros, y
3. el control que supervisa la secuencia de operaciones del sistema.
Un registro tiene la capacidad de realizan una o ms operaciones elementales como carga,
cuenta, suma, resta y desplazamiento. Por ejemplo, un registro de desplazamiento a la derecha
es un registro que puede desplazar un dato a la derecha. Un contador es un registro que incrementa un nmero en uno. Un flip-flop es un registro de 1 bit que puede ser puesto a uno o a
cero sncronamente con una seal de reloj. De hecho, segn esta definicin, a los flip-flops y
puertas asociadas a l, en cualquier circuito secuencial, se le llaman registros.
Una operacin elemental desarrollada sobre los datos almacenados en los registros se le denomina microoperacin. Ejemplos de microoperaciones son: la carga del contenido de un registro en otro, suma del contenido de dos registros e incremento del contenido de un registro. Una
microoperacin normalmente se desarrolla, aunque no siempre, en paralelo sobre un vector de
bits durante un ciclo de reloj. El resultado de la microoperacin puede reemplazar los datos anteriores que haba en el registro. Opcionalmente, el resultado puede ser transferido a otro registro, dejando los datos previos inalterados. Los bloques funcionales secuenciales presentados en
este captulo son registros que realizan una o ms microoperaciones.
La unidad de control proporciona las seales que realizan la secuencia de microoperaciones
de una forma determinada. El resultado de la operacin en curso puede determinar tanto la secuencia de seales de control, como la secuencia de futuras microoperaciones a ser ejecutada.
Vase que el trmino microoperacin, tal como se utiliza aqu, no se refiere a ninguna forma
en particular de generar las seales de control: exactamente hablando, no implica que las seales de control se generan a partir de una unidad de control basada en una tcnica llamada microprogramacin.
Este captulo presenta los registros, su realizacin y la transferencia de registros usando un
sencillo lenguaje de transferencia de registros (RTL) para representar y especificar las operaciones sobre sus contenidos. El lenguaje de transferencia de registros utiliza un conjunto de expre-

REGISTROS Y TRANSFERENCIAS DE REGISTROS

297

siones y sentencias que se parecen a las sentencias usadas en los HDLs y en los lenguajes de
programacin. Esta notacin puede especificar concisamente parte o todo un sistema digital
complejo como es un procesador. La especificacin sirve pues como base para un diseo ms
detallado de un sistema.

7-3 OPERACIONES DE TRANSFERENCIA DE REGISTROS


Designaremos a los registros de un sistema digital mediante letras en maysculas (seguidas a
veces por nmeros) que indican la funcin del registro, por ejemplo, un registro que contiene
una direccin de una memoria se llama, normalmente, como registro de direcciones y se le puede designar como AR (del ingls Address Register). Otras formas de llamar a un registro son:
PC para el contador de programa (del ingls Program Counter), IR para el registro de instrucciones (del ingls Instruction Register), y R2 para el registro nmero 2. Los flip-flops de un
registro de n bits se nombran tpicamente, de forma individual, mediante la secuencia de 0 hasta
n-1, empezando por el 0 para la posicin del bit menos significativo (normalmente el ms a la
derecha) e incrementndose haca el de la posicin ms significativa. Si el bit 0 es el de la derecha, a esta ordenacin se le llama little-endian, de la misma forma como para los bytes del Captulo 1. El orden inverso, con el bit 0 a la izquierda, se le denomina como big-endian. La Figura 7-4 muestra las representaciones de los registros en forma de diagrama de bloques. La forma
ms comn de representar un registro es una caja rectangular con el nombre del registro dentro,
como en la parte (a) de la figura. A cada uno de los bits se le puede identificar como en la parte
(b) de la figura. Otra forma es representando slo los valores de los bits ms a la izquierda y
ms a la derecha encima de la caja del registro, como se ilustra en el registro de 16 bits, R2, en
la parte (c). Un contador de programa de 16 bits, PC, se puede dividir en dos secciones como en
la parte (d) de la figura. En este caso, con el smbolo L (del ingls low-order byte) para designar
los bits de 0 a 7, y el smbolo H (del ingls high-order byte) para los bits de 8 hasta 15. La
etiqueta PC(L), que tambin puede escribirse como PC(7:0), refirindose al byte de menor peso,
y PC(H) o PC(15:8) para hacer referencia al byte de mayor peso.
La forma simblica de representar la transferencia de un dato de un registro a otro se hace
mediante la colocacin del operador (p). As la sentencia
R2 p R1
indica la transferencia del contenido del registro R1 al registro R2. En otras palabras, la sentencia indica la copia del contenido de R1 en R2. El registro R1 es la fuente de la transferencia y el
registro R2 es el destino. Por definicin, el contenido del registro fuente no cambia como resultado de la transferencia; slo el contenido del registro destino, R2, cambia.
R

7 6 5 4 3 2 1 0

(a) Registro R

(b) Bits individuales de un registro de 8 bits

15

0
R2

15

8
PC (H)

(c) Numeracin de un registro de 16 bits

0
PC (L)

(d) Dos partes de un registro de 16 bits

FIGURA 7-4
Diagrama de bloques de registros

298

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Una sentencia que especifica una transferencia de un registro implica que el circuito de la
ruta de datos esta disponible desde las salidas del registro fuente hasta las entradas del registro
destino y que ste tiene la capacidad de realizar una carga paralela. Normalmente, queremos
que una transferencia dada ocurra no para cada pulso de reloj, sino para unos valores especficos de las seales de control. Esto puede definirse como una sentencia condicional, simbolizada
con la expresin if-then.
if (K1 % 1) then (R2 p R1))
donde K1 es una seal de control generada por la unidad de control. De hecho, K1 puede ser
cualquier funcin booleana que se evala a 0 o a 1. Una forma ms concisa de escribir la expresin if-then es
K1: R2 p R1
Esta condicin de control, terminada con dos puntos, simboliza el requisito de que la operacin
de transferencia se ejecuta por el hardware slo si K1 % 1.
Cada sentencia escrita en notacin de transferencia de registros presupone una construccin
hardware para realizar dicha transferencia. La Figura 7-5 muestra un diagrama de bloques que
describe la transferencia del R1 a R2. Las n salidas del registro R1 estn conectadas a las n
entradas del registro R2. La letra n se utiliza para indicar el nmero de bits que hay en el camino de transferencia de R1 a R2. Cuando la anchura del camino es conocido, n se sustituye por
ese nmero. El registro R2 tiene una seal de control de entrada que se activa con la seal K1.
Se supone que la seal est sincronizada con el mismo reloj que el aplicado al registro. Se supone tambin que los flip-flops se disparan con el flanco positivo de este reloj. Como se muestra
en el diagrama de tiempos, K1 se pone a 1 con el flanco de subida del pulso de reloj en el instante t. La siguiente transicin positiva del reloj en el instante t ! 1 encuentra que K1 % 1,
y las entradas de R2 se cargan en el registro de forma paralela. En este caso, K1 vuelve a 0 en el
flanco positivo en el instante t ! 1, de forma que se produce una nica transferencia de R1
a R2.
Vase que el reloj no est incluido como variable en la sentencia de transferencia de registro. Se supone que todas las transferencias ocurren sincronizadamente como respuesta a una
transicin del reloj. Incluso cuando la condicin K1 se activa en el instante t, la transferencia no
ocurre hasta que el registro se dispara por la siguiente transicin positiva del reloj en el instante t ! 1.
Los smbolos bsicos que usamos en la notacin de transferencia de registros se muestran en
la Tabla 7-1. Los registros se designan mediante letras maysculas, seguidas posiblemente por
una o ms letras maysculas y nmeros. Los parntesis se usan para nombrar parte de un regis-

K1

Load

La transferencia ocurre aqu


t

R1

Clock

R2

Clock

K1

FIGURA 7-5
Transferencia de R1 a R2 cuando K1 % 1

t1

REGISTROS Y TRANSFERENCIAS DE REGISTROS

299

TABLA 7-1
Smbolos bsicos para transferencia de registros
Smbolo

Descripcin

Ejemplos

Letras
(y nmeros)
Parntesis
Flecha
Coma
Corchetes

Indica un registro

AR, R2, DR, IR

Indica parte de un registro


Indica transferencia del dato
Separa transferencias simultneas
Especifica una direccin de memoria

R2(1), R2(7:0), AR(L)


R1 p R2
R1 p R2, R2 p R1
DR p M[AR]

tro, especificando el rango de bits del registro o dando un nombre simblico a una porcin del
registro. La flecha apuntando a la izquierda indica una transferencia de datos y la direccin de
la transferencia. Se emplea una coma para separar dos o ms transferencias que se ejecutan al
mismo tiempo. Por ejemplo la sentencia
K3: R2 p R1, R1 p R2
indica una operacin que cambia el contenido de dos registros simultneamente para un flanco
positivo de reloj en el que K3 % 1. Tal cambio es posible con registros hechos con flip-flops
pero presenta dificultades por problemas de temporizacin si los registros estn hechos con latches. Los corchetes se usan juntamente con una transferencia a memoria. La letra M indica una
palabra de memoria y el registro encerrado en los corchetes proporciona la direccin de la palabra de la memoria. Esto se explica con ms detalle en el Captulo 10.

7-4 NOTA PARA USUARIOS DE VHDL

VERILOG

Existen algunas similitudes con el lenguaje de transferencia de registros aqu presentado, tanto
para VHDL como para Verilog. En particular, hay diferentes notaciones para cada uno de los
tres lenguajes. La Tabla 7-2 compara la notacin entre operaciones de transferencias de registros idnticas o similares de los tres lenguajes. Como este tema se estudia en este captulo y en
posteriores, esta tabla le ayudar a relacionar las descripciones en RTL y las correspondientes a
VHDL o Verilog.

7-5 MICROOPERACIONES
Una microoperacin es una operacin bsica realizada sobre los datos almacenados en registros
o en memoria. Las microoperaciones encontradas ms frecuentemente en sistemas digitales son
de 4 tipos:
1.
2.

Microoperaciones
Microoperaciones
gistros.
3. Microoperaciones
gistros.
4. Microoperaciones

de transferencia, transfiere datos en binomio de un registro a otro.


aritmticas, realizan operaciones aritmticas en los datos de los relgicas, realizan manipulacin de los bits de los datos de los rede desplazamiento, desplazan los datos de los registros.

300

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 7-2
Smbolos RTL, VHDL y Verilog para transferencias de registros
Operacin

RTL

VHDL

Verilog

Asignacin combinacional
Transferencia de registro
Suma !
Resta .
Bitwise AND
Bitwise OR
Bitwise XOR
Bitwise NOT
Desplazamiento a la izquierda
(lgico)
Desplazamiento a la derecha
(lgico)
Vectores/registros
Concatenacin

%
p
!
.
p
o
S

a% (concurrente)
a% (concurrente)
!
.
and
or
xor
not

Assign % (nonblocking)
a% (nonblocking)
!
.
&
8
p
V

sl

sll

sr
A(3:0)
9

srl
A(3 downto 0)
&

A
A[3:0]
{,}

N. del T.: Bitwise es una operacin entre dos vectores bit a bit

Una microoperacin dada puede ser de ms de un tipo. Por ejemplo, la operacin de complemento a 1 es una microoperacin tanto aritmtica como lgica.
Las microoperaciones de transferencia se presentaron en las secciones anteriores. Este tipo
de microoperacin no cambia los bits de datos cuando los mueven de un registro fuente a uno
destino. Los otres tres tipos de operaciones pueden producir un dato nuevo en binomio, es decir,
nueva informacin. En los sistemas digitales, los conjuntos de operaciones bsicas se utilizan
para formar secuencias que realizan operaciones ms complicadas. En esta seccin, definimos
un conjunto bsico de microoperaciones, notacin simblica para stas, y las descripciones del
hardware digital que las lleva a cabo.

Microoperaciones aritmticas
En esta seccin definimos las operaciones aritmticas bsicas tales como la suma, resta, incremento, decremento y el complemento. La sentencia
R0 p R1 ! R2
especifica una operacin de suma. Expresa que el contenido del registro R2 se suma al contenido del registro R1 y la suma se transfiere al registro R0. Para realizar esta sentencia con hardware necesitamos tres registros y un componente combinacional que haga la suma, un sumador
paralelo. Las restantes operaciones aritmticas se recogen en la Tabla 7-3. La resta se realiza
frecuentemente mediante la complementacin y la suma. En lugar de utilizar el operador menos, especificamos la resta mediante el complemento a 2 segn la siguiente expresin
R0 p R1 ! R2 ! 1

REGISTROS Y TRANSFERENCIAS DE REGISTROS

301

TABLA 7-3
Microoperaciones aritmticas
Designacin
simblica

Descripcin

R0 p R1 ! R2
R2 p R2
R2 p R2 ! 1
R0 p R1 ! R2 ! 1
R1 p R1 ! 1
R1 p R1 . 1

El contenido de R1 ms el contenido de R2 se transfiere a R0


Complemento del contenido de R2 (complemento a 1)
Complemento a 2 del contenido de R2
R1 ms el complemento a 2 de R2 se transfiere a R0 (resta)
Incrementa el contenido de R1 (cuenta ascendente)
Decrementa el contenido de R1 (cuenta descendente)

donde R2 es el complemento a 1 de R2. Sumando 1 a R2 conseguimos el complemento a 2 de


R2. Finalmente, sumando el complemento a 2 de R2 al contenido de R1 obtenemos el equivalente a R1 . R2.
Las microoperaciones de incremento y decremento se simbolizan con operaciones de ms
uno y menos uno, respectivamente. Estas operaciones se llevan a cabo usando un circuito combinacional especial, un sumador-restador, o un contador binario ascendente-descendente con
carga en paralelo.
La multiplicacin y la divisin no estn en la Tabla 7-3. La multiplicacin se puede representar mediante el smbolo * y la divisin mediante /. Estas dos operaciones no estn incluidas
en el conjunto bsico de microoperaciones aritmticas puesto que se asume que se realizan con
secuencias de microoperaciones bsicas. Por contra, la multiplicacin puede considerarse como
una microoperacin si se realiza con un circuito combinacional como el que se ilustr en la
Seccin 5-4. En tal caso, el resultado se transfiere en el registro destino con el flanco de reloj
despus de que todas las seales se han propagado a travs de todo el circuito combinacional.
X1 K1 : R1 p R1 ! R2
XK1 : R1 p R1 ! R2 ! 1
La variable de control K1 activa una operacin de suma o resta. Si en el mismo instante de
tiempo, la variable de control X es 0, entonces X1 K1 % 1, y el contenido de R2 se suma al contenido de R1. Si X es 1, entonces XK1 % 1 y el contenido de R2 se resta del contenido de R1.
Vase que las 2 condiciones de control son funciones booleanas, cuyo valor es 0 cuando
K1 % 0, condicin que evita la ejecucin de ambas operaciones simultneamente.
En el diagrama de bloques de la Figura 7-6 se muestra la realizacin de las 2 expresiones
anteriores. Un sumador-restador de n bits, similar al mostrado en la Figura 5-8, recibe por sus
entradas los datos de los registros R1 y R2. La suma o resta se aplica a las entradas de R1. La
entrada de seleccin S del sumador-restador elige la operacin del circuito. Cuando S % 0, las
dos entradas se suman, y cuando S % 1, R2 se resta de R1. Aplicando la variable de control X a
la entrada S, se activa la operacin solicitada. La salida del sumador-restador se carga en R1 con
cualquier flanco de subida del reloj si X1 K1 % 1 o XK1 % 1. Esto se pueda simplificar a K1, puesto que
X1 K1 ! XK1 % (X1 ! X)K1 % K1

302

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

R2

n
n

Cn1
Cn

Sumador-restador
Seleccin (S)

R1

Load

K1

FIGURA 7-6
Realizacin de las microoperaciones de suma y resta

As, la variable de control X selecciona la operacin y la variable de control K1 carga el resultado en R1.
Basndonos en la discusin sobre el overflow de la Seccin 5-3, la salida de overflow se
transfiere al flip-flop V, y la salida de acarreo de bit ms significativo del sumador-restador se
transfiere al flip-flop C, como se muestra en la Figura 7-6. Estas transferencias, de C y V, ocurren cuando K1 % 1 y no se han representado en las sentencias de transferencia de registros; si
se desea, podramos indicarlas como transferencias adicionales simultneas.

Microoperaciones lgicas
Las microoperaciones lgicas son tiles para manipular los bits almacenados en un registro. Estas operaciones consideran cada bit de un registro separadamente y los trata como valores binarios. Los smbolos para cada una de las cuatro operaciones lgicas bsicas se muestran en la
Tabla 7-4. La microoperacin NOT, representada por una barra sobre el nombre del registro
fuente, complementa todos los bits y es lo mismo que el complemento a 1. El smbolo p se usa
para designar la microoperacin AND y el smbolo o designa la microoperacin OR. Usando
estos smbolos especiales, es posible distinguir entre la microoperacin suma, representada por
un ! y la microoperacin OR. Aunque el smbolo ! tiene dos significados, se puede distinguir
viendo donde aparecen. Si el ! aparece en una microoperacion, significa una suma. Si el !
aparece en una funcin booleana o de control, significa OR. Para la microoperacin OR se usar
siempre el smbolo o. Por ejemplo en la expresin
(K1 ! K2): R1 p R2 ! R3, R4 p R5 o R6
el ! entre K1 y K2 es una operacin OR entre dos variables en una condicin de control. El !
entre R2 y R3 especifica una microoperacin de suma. La microoperacin OR se indica con el

REGISTROS Y TRANSFERENCIAS DE REGISTROS

303

TABLA 7-4
Microoperaciones lgicas
Designacin
simblica

Descripcin

R0 p R1
R0 p R1 p R2
R0 p R1 o R2
R0 p R1 S R2

Bitwise
Bitwise
Bitwise
Bitwise

lgico
lgico
lgico
lgico

NOT (complemento a 1)
AND (pone a 0 los bits)
OR (pone a 1 los bits)
XOR (complementa bits)

smbolo o entre los registros R5 y R6. Las microoperaciones lgicas pueden realizarse fcilmente con un conjunto de puertas, uno por cada bit. La NOT de un registro de n bits se obtiene con n puertas NOT en paralelo. La microoperacin AND se obtiene usando un grupo de n
puestas AND, cada una de las cuales recibe un par de entradas correspondiente a dos registros
fuente. Las salidas de las puertas AND se aplican a las entradas correspondientes del registro
destino. Las microoperaciones OR y la OR exclusiva necesitan una colocacin similar.
Las microoperaciones pueden cambiar los valores de los bits, poner a cero un grupo de bits,
o insertar un nuevo valor a un bit de un registro. Los siguientes ejemplos muestran cmo los
bits almacenados en un registro, R1, de 16 bits pueden ser cambiados selectivamente usando
una microoperacin y operaciones lgicas, y ser almacenados en un registro, R2, de 16 bits.
La microoperacin AND se puede usar para poner a 0 uno a ms bits de un registro. Las
ecuaciones booleanas X 0 % 0 y X 1 % 1 obligan a que, cuando se hace una operacin AND
con 0, una variable X produce un 0 pero cuando se hace una operacin AND con 1, la variable
permanece sin cambiar. Un bit o grupo de bits dados de un registro pueden ponerse a 0 si se
hace una operacin AND con 0. Considere el siguiente ejemplo:
10101101 10101011

R1

(dato)

00000000 11111111

R2

(mscara)

00000000 10101011

R1 p R1 p R2

El operando de 16 bits de R2 tiene ceros en el byte de mayor peso y unos en el de menor peso.
Realizando la operacin AND del contenido de R2 con el de R1, es posible poner a cero el byte
de mayor peso de R1 y dejar los bits del byte de menor peso inalterados. As, la operacin AND
se puede utilizar para poner a cero los bits de un registro de forma selectiva. A esta operacin se
le suele llamar enmascaramiento de bits, puesto que enmascara o borra todo los unos en el dato
de R1 segn la posicin de los bits que sean 0 en la mscara proporcionada por R2.
La microoperacin OR se usa para poner a 1 uno o ms bits de un registro. Las ecuaciones
booleanas X ! 1 % 1 y X ! 0 % X indican que, cuando se realiza una operacin OR con 1, la
variable binaria X es 1 pero la OR con 0 deja la variable sin cambiar. De esta forma, un determinado bit o grupo de bits de un registro pueden ponerse a 1 si se hace una operacin OR con
1. Considere el siguiente ejemplo:
10101101 10101011

R1

(dato)

11111111 00000000

R2

(mscara)

11111111 10101011

R1 p R1 o R2

304

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

El byte de mayor peso de R1 est todo a 1 al hacer la operacin lgica OR con todos los
unos de R2. El byte de menor peso permanece sin cambiar puesto que se ha hecho la operacin
lgica OR con ceros.
La microoperacin XOR (OR exclusiva) puede usarse para complementar uno o ms bits de
un registro. Las ecuaciones booleanas X S 1 % X1 y X S 0 % X determinan que la operacin
XOR de una variable X con 1 da como resultado el complemento de X pero con 0 la variable
permanece sin cambiar. Haciendo la operacin lgica XOR a un bit o grupo de bits del registro
R1 con 1 en determinadas posiciones de R2, es posible complementar los bits de dichas posiciones de R1. Considere el siguiente ejemplo:
10101101 10101011

R1

(dato)

11111111 00000000

R2

(mscara)

01010010 10101011

R1 p R1 S R2

El byte de mayor peso de R1 se complementa despus de realizar la operacin XOR con R2, y
el byte de menor peso permanece inalterado.

Microoperaciones de desplazamiento
Las microoperaciones de desplazamiento se usan para movimientos laterales de datos. El contenido del registro fuente puede desplazarse tanto a la derecha como a la izquierda. Un desplazamiento a la izquierda es hacia el bit ms significativo, y un desplazamiento a la derecha es hacia
el bit menos significativo. Las microoperaciones de desplazamiento se usan para transferencia
de datos va serie. Tambin se usan para manipular el contenido de registros en operaciones
aritmticas, lgicas y de control. En una microoperacin de desplazamiento, el registro de destino puede ser el mismo o diferente del registro origen. Para representar las microoperaciones
definidas en la Tabla 7-5 usamos una serie de cadenas de caracteres. Por ejemplo:
R0 p sr R0, R1 p sl R2
son dos microoperaciones que especifican un desplazamiento de un bit a la derecha del contenido del registro R0, sr, y la transferencia del contenido de R2 desplazado un bit a la izquierda al
registro R1, sl, respectivamente. El contenido de R2 no se cambia el realizar el desplazamiento.
En una microoperacin de desplazamiento a la izquierda, el bit ms a la derecha decimos
que es el bit entrante. En una microoperacin de desplazamiento a la derecha, definimos al bit
ms a la izquierda como el bit entrante. El bit entrante puede tomar diferentes valores, depen TABLA 7-5
Ejemplos de desplazamientos
Ejemplos de 8 bits

Tipos

Designacin
simblica

Fuente R2

Despus de desplazar:
Destino R1

Desplazamiento a la izquierda
Desplazamiento a la derecha

R1 p sl R2
R1 p sr R2

10011110
11100101

00111100
01110010

REGISTROS Y TRANSFERENCIAS DE REGISTROS

305

diendo del tipo de microoperacin de desplazamiento. Aqu asumimos que para sr y sl el bit
entrante es 0, como se muestra en los ejemplos de la Tabla 7-5. Para una operacin de desplazamiento a la izquierda, el bit saliente es el ms a la izquierda, y para una operacin de desplazamiento a la derecha, es el ms a la derecha. En estos desplazamientos, el bit saliente se desecha.
En el Captulo 11, exploraremos otros tipos de desplazamientos que difieren en el tratamiento
de los bits entrantes y salientes

7-6 MICROOPERACIONES EN UN REGISTRO


Esta seccin cubre la ejecucin de una o ms operaciones sobre un slo registro como destino
de los resultados principales. El registro tambin puede servir como fuente de un operando para
hacer operaciones unarias y binarias. Debido a la relacin tan estrecha en un conjunto de elementos de almacenamiento y las microoperaciones, se supone que la lgica combinacional forma parte del registro y la llamaremos lgica dedicada del registro. Por contra, est la lgica que
se comparte por varios registros destino. En este caso, a esta lgica se le llama lgica compartida por los registros destino.
La lgica combinacional necesaria para realizar las microoperaciones, descrita en secciones
precedentes, puede usar uno o ms bloques funcionales de los Captulos 4 y 5 o se puede disear especialmente para los registros. Inicialmente, se usarn bloques funcionales en combinacin con flip-flops tipo D con o sin habilitacin. Se presenta una tcnica sencilla, usando
multiplexores, que permite seleccionar mltiples microoperaciones en un registro sencillo.
A continuacin, a partir de dicho registro, se disea un registro que puede desplazar y contar.

Transferencias basadas en multiplexores


Hay ocasiones en que un registro recibe datos de 2 o ms fuentes diferentes en distintos instantes de tiempo. Considere la siguiente sentencia condicional que tiene la forma if-then-else:
if (K1 % 1) then (R0 p R1) else if (K2 % 1) then (R0 p R2)
El valor del registro R1 se transfiere al registro R0 cuando la seal de control K1 es igual a 1.
Cuando K1 % 0, el valor del registro R2 se transfiere a R0 si K2 es igual a 1. En el resto de los
casos el contenido de R0 permanece sin alterar. La sentencia condicional puede ser dividida en
dos partes usando las siguientes condiciones de control.
K1: R0 p R1, K1 1K2: R0 p R2
Esto especifica las conexiones hardware de dos registros, R1 y R2 a un registro comn de destino, R0. Adems, la seleccin de los dos registros fuentes debe basarse en los valores de las
variables de control K1 y K2.
En la Figura 7-7(a) se muestra el diagrama de bloques de un circuito, con registros de 4 bits,
que realiza la sentencia condicional de transferencia de registros usando un multiplexor. El multiplexor 2 a 1 selecciona entre dos registros fuente. Para K1 % 1, R1 se carga en R0, independientemente del valor de K2. Para K1 % 1 y K2 % 1, R2 se carga en R0. Si tanto K1 como K2 son
iguales a 0, el multiplexor selecciona a R2 como entrada de R0, pero como la funcin de control, K2 ! K1, conectada a la entrada de carga de R0, LOAD, es igual a 0, el contenido de R0
permanece sin cambiar.

306

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 7-7
Uso de multiplexores entre dos registros

En la Figura 7-7(b) se muestra el diagrama lgico detallado para llevar a cabo el hardware.
El diagrama usa smbolos funcionales, basados en los registros de la Figura 7-2, y un multiplexor, de buses de 4 bits, 2 a 1 del Captulo 4. Vase que, puesto que el diagrama slo representa
parte de un sistema, hay entradas y salidas que an no estn conectadas. El reloj tampoco se
muestra en el diagrama de bloques pero si en el diagrama detallado. Es importante relacionar la
informacin dada en un diagrama de bloques, como el de la Figura 7-7(a), con las conexiones
detalladas del diagrama lgico de la Figura 7-7(b). Con el motivo de ahorrar espacio, frecuentemente omitiremos el diagrama lgico detallado de los diseos. Sin embargo, es posible obtener
un diagrama lgico detallado del conexionado a partir del correspondiente diagrama de bloques
y una biblioteca de bloques funcionales. De hecho, tal procedimiento lo realizan los programas
de computadora para sntesis lgica automatizada.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

K0
Kn1
Lgica
dedicada 0

307

.
.
.
...

4
Codificador
...

.
.
.
Lgica
dedicada k1

.
.
.

4
4

.
.
.

Registros
o lgica
compartida

.
.
.

0 Sm S0
.
.
. MUX
k1
k
.
.
.
n1

Load

4
R0

FIGURA 7-8
Seleccin con multiplexores generalizada para n fuentes

El ejemplo precedente puede generalizarse haciendo que el multiplexor tenga n fuentes y


estas fuentes ser salidas registradas o lgica combinacional que realiza microoperaciones. De
esta generalizacin resulta el diagrama mostrado en la Figura 7-8. El diagrama supone que cada
fuente pueden ser tanto salidas de un registro como lgica combinacional que realiza una o ms
microoperaciones. En los casos en los que las microoperaciones se destinan a los registros, la
lgica dedicada se incluye como parte del registro. En la Figura 7-8, las primeras k fuentes son
de lgica dedicada y las ltimas n . k fuentes pueden ser tanto registros como lgica compartida. Las seales de control que seleccionan un determinado recurso son, o bien una sola variable
de control o la operacin OR de todas las seales correspondientes a las microoperaciones asociadas a los recursos involucrados. Para forzar una carga a R0 para una microoperacin, se realiza una operacin OR de estas seales de control para crear la seal de carga Load. Suponiendo
que slo una de las seales de control es 1 en cualquier instante de tiempo, estas seales deben
ser codificadas para proporcionar los cdigos de seleccin para el multiplexor. Son posibles dos
modificaciones de la estructura dada. Las seales de control podran aplicarse a un circuito
2 # n AND-OR (es decir, un multiplexor con el decodificador eliminado). Alternativamente, las
seales de control podran ya estar codificadas, evitando el uso del cdigo todo a ceros, de forma que la puerta OR genera la seal de carga correctamente.

Registros de desplazamiento
Un registro de desplazamiento es capaz de desplazar sus bits almacenados lateralmente en una o
ambas direcciones. La configuracin lgica de un registro de desplazamiento consiste en una
cadena de flip-flops, con la salida de un flip-flop conectada a la entrada del siguiente flip-flop.
Todos los flip-flops tienen una entrada comn de reloj que activa el desplazamiento.
El registro ms simple slo usa flip-flops, como se muestra en la Figura 7-9(a). La salida se
conecta a la entrada D de los flip-flops a su derecha. El reloj es comn a todos los flip-flops. La
entrada serie, SI, es la entrada al flip-flop ms a la izquierda. La salida serie, SO, se toma de la
salida del flip-flop ms a la derecha. En la Figura 7-9(b) se ofrece un smbolo para representar
al registro de desplazamiento.

308

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Entrada
serie SI

D
C

Salida
serie SO

D
C

Clock
(a) Diagrama lgico
SRG 4

Clock

Sl

SO
(b) Smbolo

FIGURA 7-9
Registro de desplazamiento de 4 bit

A veces es necesario controlar el registro de forma que slo desplace en los flancos positivos deseados del reloj. En el registro de la Figura 7-9, el desplazamiento se puede controlar en
el reloj, usando la lgica mostrada en la Figura 7-1(c), con la seal Shift reemplazando a la de
Load. De nuevo, debido al skew de reloj, no es una solucin deseable. Ms adelante aprenderemos que las operaciones de desplazamiento se pueden controlar mediante las entradas D de los
flip-flops mejor que a travs de las entradas de reloj C.
REGISTRO DE DESPLAZAMIENTO CON CARGA EN PARALELO Si todas las salidas del registro
son accesibles, la informacin introducida va serie, mediante desplazamientos, puede accederse
en paralelo de las salidas de los flip-flops. Si se aade la capacidad de carga en paralelo al registro de desplazamiento, entonces el dato cargado en paralelo puede desplazarse saliendo va
serie. As, un registro con las salidas de los flip-flops accesibles y carga en paralelo puede utilizarse para convertir el dato paralelo que entra en un dato serie que sale y viceversa.
En la Figura 7-10 se muestra el diagrama lgico y el smbolo de un registro de desplazamiento de 4 bits con carga en paralelo. Existen dos entradas de control, una para el desplazamiento y la otra para la carga. Cada etapa del registro se compone de un flip-flop tipo D, una
puerta OR, y tres puertas AND. La primera AND permite la operacin de desplazamiento. La
segunda puerta AND habilita la entrada de datos. La tercera puerta AND repone el contenido
del registro cuando no se solicita ninguna operacin.
En la Tabla 7-6 se especifica la forma de operar de este registro y, adems, se da mediante
transferencia de registros:
Shift: Q p slQ
Shift Load: Q p D
La operacin no cambio est implcita si ninguna de las condiciones de transferencia se satisface. Cuando ambas entradas de control, Shift y Load, son 0, la tercera puerta de cada etapa est
habilitada y la salida de cada flip-flop se aplica a su propia entrada D. Un flanco positivo de
reloj repone el contenido del registro y la salida no cambia. Cuando la entrada Shift es 0 y Load
es 1, la segunda puerta AND de cada etapa est habilitada y la entrada Di se aplica a la entrada
D del flip-flop correspondiente. El siguiente flanco de subida transfiere la entrada paralelo al

REGISTROS Y TRANSFERENCIAS DE REGISTROS

309

Shift
Load
Entrada
serie
D0

Q0

D
C

D1

Q1

D
C

D2

Q2

D
C

SHR 4
Shift
Load
Sl
D0
D1
D2
D3

Q0
Q1
Q2
Q3

(b) Smbolo

D3

Q3

D
C

Clock

FIGURA 7-10
Registro de desplazamiento con carga en paralelo

TABLA 7-6
Tabla de funcionamiento del registro de la Figura 7-10
Desplazamiento

Carga

0
0
1

0
1
#

Operacin
No cambia
Carga paralela de datos
Desplaza de Q0 a Q3

registro. Cuando la entrada Shift es igual a 1, la primera puerta AND de cada etapa se habilita y
las otras dos se deshabilitan. Puesto que la entrada Load esta deshabilitada por la entrada Shift
en la segunda puerta AND, la marcamos con una condicin indiferente en la fila de Shift de la
tabla. Cuando llega un flanco de reloj, la operacin de desplazamiento hace que el dato de la
entrada serie, SI, se transfiera al flip-flop Q0, la salida Q0 se transfiera al flip-flop Q1, y as
sucesivamente. Vase que debido a cmo est dibujado el circuito, la transferencia se realiza
haca abajo. Si rotamos la pgina un cuarto de vuelta en sentido contrario a las agujas de reloj,
el registro desplaza de izquierda a derecha.

310

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Los registros de desplazamiento se usan frecuentemente en interfaces entre sistemas digitales lejanos unos de otros. Por ejemplo, suponga que es necesario transmitir una cantidad de n bit
entre dos puntos. Si la distancia es grande, ser caro utilizar n lneas para transmitir n bits en
paralelo. Puede ser ms econmico usar una nica lnea y transmitir la informacin va serie, un
bit en cada instante. El transmisor carga los n bits en paralelo en el registro de desplazamiento y
luego transmite los datos va serie a lo largo de la lnea comn. El receptor acepta los datos en
serie en un registro de desplazamiento. Cuando los n bit se han acumulado, se pueden coger en
paralelo de la salida del registro. As, el transmisor hace una conversin paralelo-serie de los
datos y el receptor hace una conversin serie-paralelo.
REGISTRO DE DESPLAZAMIENTO BIDIRECCIONAL Un registro capaz de desplazar en una sola
direccin se llama registro de desplazamiento unidireccional. Un registro que puede desplazar
en ambas direcciones se llama registro de desplazamiento bidireccional. Es posible modificar el
circuito de la Figura 7-10 aadiendo una cuarta puerta AND en cada etapa, para desplazar el
dato en direccin ascendente. Examinado el circuito resultante revelar que, las cuatro puertas
AND junto con la puerta OR de cada etapa, constituye un multiplexor con las entradas de seleccin controlando la operacin del registro.
En la Figura 7-11(a) se muestra una etapa de un registro de desplazamiento bidireccional
con carga en paralelo. Cada etapa est compuesta por un flip-flop tipo D y un multiplexor 4 a 1.
Las 2 entradas de seleccin S1 y S0 seleccionan una de las entradas del multiplexor que se aplica
al flip-flop tipo D. Las lneas de seleccin controlan el modo de operacin del registro de acuerdo con la tabla de funcionamiento de la Tabla 7-7 y la siguiente transferencia de registros:
S1 1 S0 % Q p slQ
S1 S1 0 % Q p srQ
S1 S0 % Q p D
TABLA 7-7
Tabla de funcionamiento del registro de la Figura 7-7
Modo de control
S1

S0

0
0
1
1

0
1
0
1

Operaciones
del registro
No cambia
Desplaza hacia abajo
Desplaza hacia arriba
Carga paralela

La operacin no cambia est implcita si ninguna de las condiciones de transferencia se satisface. Si el modo de control es S1S0 % 00, se selecciona la entrada 0. Esto forma un camino desde la salida de cada flip-flop a su propia entrada. En el siguiente flanco de reloj se transfiere el
valor en curso almacenado de nuevo a cada flip-flop y no ocurre cambio de estado. Si
S1S0 % 01, el terminal marcado con 1 en el multiplexor tiene un camino hasta la entrada D de
cada flip-flop. Este camino facilita la operacin de desplazamiento hacia abajo. La entrada serie
se transfiere a la primera etapa y el contenido de la etapa Qi.1 se transfiere a la etapa Qi. Cuando S1S0 % 10, se produce una operacin de desplazamiento hacia arriba sobre una segunda en-

REGISTROS Y TRANSFERENCIAS DE REGISTROS

311

Qi1

D
C

SHR 4

MUX
S1
S0

Clock

S1

Modelo S1

S1

S0

Modelo S0

S0

Entrada serie izquierda


D

0
1

Qi
C

2
Di

Entrada serie derecha

LSI
D0

Q0

D1

Q1

D2

Q2

D3

Q3

RSI
(b) Smbolo

Qi1

D
C
Clock
(a) Diagrama lgico tpico de una etapa

FIGURA 7-11
Registro de desplazamiento bidireccional con carga en paralelo

trada serie que entra en la ltima etapa. Adems, el valor de la etapa Qi!1 se transfiere a la
etapa Qi. Finalmente, si S1S0 % 11, la informacin binaria de cada lnea de entrada paralelo se
transfiere al flip-flop correspondiente, dando lugar a una carga en paralelo.
En la Figura 7-11(b) se muestra el smbolo del registro de desplazamiento bidireccional de
la Figura 7-11(a). Vase que se le aaden tanto una entrada serie izquierda (LSI) como una entrada serie derecha (RSI). Si se desea tener salida serie, Q3 se usa para desplazar a la izquierda y
Q0 para la derecha.

Contador asncrono
A un registro que pasa a travs de una secuencia prescrita de distintos estados, segn se aplica
una secuencia de pulsos de entrada, se le llama contador. Los pulsos de entrada pueden ser pulsos de reloj u originarse desde otra fuente, y pueden darse lugar de forma peridica o no. En
nuestra discusin sobre los contadores, suponemos que se usan pulsos de reloj aunque otras seales pueden sustituir al reloj. La secuencia de estados puede seguir la secuencia natural de los
nmeros binarios u otra secuencia de estados definida. Un contador que sigue la secuencia natural de nmeros binarios se llama contador binario. Un contador binario de n bits est compuesto
de n flip-flops y puede contar en binario desde 0 hasta 2n . 1.
Los contadores se pueden dividir en dos categoras: contadores asncronos (en ingls ripple
counters) y contadores sncronos. En un contador asncrono, las transiciones de las salidas de
los flip-flops sirven como fuente para disparar los cambios en los otros flip-flops. En otras palabras, las entradas C de algunos flip-flops no se disparan por un pulso comn de reloj, sino por

312

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

transiciones que suceden en las salidas de otros flip-flops. En un contador sncrono, las entradas
C de todos los flip-flops reciben un pulso de reloj simultneamente, y el cambio de estado se
determina a partir del estado presente del contador. Los contadores sncronos se discuten en las
siguientes dos subsecciones. Aqu presentamos el contador asncrono y se explica su funcionamiento.
En la Figura 7-12 se presenta el diagrama lgico de un contador asncrono de 4 bits. El
contador se construye a partir de flip-flops tipo D conectados de tal forma que la aplicacin de
un flanco positivo a la entrada C de cada flip-flop hace que se complemente su estado. La salida
complementada de cada flip-flop se conecta a la entrada C del siguiente flip-flop ms significativo. El flip-flop que contiene el bit menos significativo recibe los pulsos que llegan del reloj. El
disparo mediante el flanco positivo hace que cada flip-flop complemente su valor cuando la seal en su entrada C recibe un flanco positivo. Esta transicin positiva ocurre cuando la salida
complementada del flip-flop anterior, que se conecta a la entrada C, bascula de 0 a 1. Un nivel
alto en la seal de Reset, que maneja las entradas R, pone a cero a todos los registros asncronamente.
Para comprender la forma de operar de un contador asncrono vamos a examinar la secuencia de cuenta ascendente dada en la parte izquierda de la Tabla 7-8. La cuenta comienza en 0 y
se incrementa en uno con cada pulso de conteo. Despus de la cuenta 15, el contador regresa a 0
y repite la cuenta. El bit menos significativo (Q0) se complementa con cada pulso de reloj. Cada
vez que Q0 va de 1 a 0, Q0 va de 0 a 1, complementando a Q1. Cada vez que Q1 bascula de 1 a
0, se complementa Q2. Cada vez que Q2 cambia de 1 a 0 se complementa Q3, y as sucesivamente para los bits de mayor peso del contador asncrono. Por ejemplo, considere la transicin
0011 a 0100. Q0 se complementa con el flanco de subida del pulso de cuenta. Puesto que Q0

D
C
R

Pulso de reloj

D
C
R

D
C
R

D
C
R
Reset

FIGURA 7-12
Contador asncrono de 4 bits

REGISTROS Y TRANSFERENCIAS DE REGISTROS

313

TABLA 7-8
Secuencia de cuenta de un contador binario
Secuencia de cuenta ascendente

Secuencia de cuenta descendente

Q3

Q2

Q1

Q0

Q3

Q2

Q1

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0

1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0

1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0

Q0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0

pasa de 1 a 0, dispara a Q1 y se complementa. Como resultado, Q1 bascula de 1 a 0, que complementa a Q2, cambiando de 0 a 1. Q2 no dispara a Q3, puesto que Q2 produce una transicin
negativa y el flip-flop slo responde a transiciones positivas. De esta forma se consigue la cuenta 0011 a 0100, cambiando los bits cada uno en un instante distinto de tiempo. El contador va
de 0011 a 0010 (Q0 de 1 a 0), luego a 0000 (Q1 de 1 a 0) y finalmente a 0100 (Q2 de 0 a 1).
Cada flip-flop cambia en un instante de tiempo distinto en una rpida sucesin como si la seal
se propagase a travs del contador formando una onda de una etapa a la otra.
El contador asncrono que realiza una cuenta descendente sigue la secuencia dada en la parte izquierda de la Tabla 7-8. La cuenta descendente puede generarse conectando la salida no
invertida de cada flip-flop a la entrada C del siguiente.
La ventaja del contador asncrono es su sencillo hardware. Desafortunadamente, hay circuitos asncronos, con lgica aadida que puede dar lugar a circuitos dependientes de retardos y de
funcionamiento no fiable. Esto se cumple particularmente para la lgica que proporciona realimentaciones desde las salidas del contador hasta las entradas del mismo. Adems, debido a la
cantidad de tiempo que se necesita para terminar la onda, los contadores asncronos grandes
pueden ralentizar el circuito. Como consecuencia de todo esto, se favorece el uso de contadores
binarios sncronos en todo tipo de diseo aunque en diseo de bajo consumo tienen una ventaja
(vase el Problema 7-11).

Contadores binarios sncronos


Los contadores sncronos, en contraste con los contadores asncronos, tienen el reloj aplicado a
las entradas C de todos los flip-flops. De esta forma, el reloj dispara a todos los flip-flops simultneamente en vez de uno cada vez, como en un contador asncrono. Un contador sncrono que

314

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Q0
EN
Habilitacin
de cuenta EN

Q0

Q1
C1

Q1

C
Q2
C2
D

Q2

C
Q3
C3
D

Q3

C
Salida
de acarreo CO

Clock
(a) Diagrama lgico con puertas serie

CO
(b) Diagrama lgico con puertas en paralelo

CTR 4
EN

Q0
Q1
Q2
Q3
CO

(c) Smbolo

FIGURA 7-13
Contador sncrono binario de 4 bits

cuenta ascendentemente incrementando de 1 en 1 se puede construir a partir del incrementador


de la Figura 5-12 y un flip-flop tipo D, segn se muestra en la Figura 7-13(a). La salida de
acarreo, CO, se aade sin colocar un valor X sobre la salida C4 antes de la simplificacin del
sumador al incrementador de la Figura 5-12. La salida CO se usa para expandir el contador con
ms etapas.
Tenga en cuenta que los flip-flops se disparan con el flanco de subida del reloj. La polaridad
del reloj no es esencial aqu, como fue en el contador asncrono. El contador sncrono se puede
dispara con el flanco positivo o con el flanco negativo2.
CONTADORES SERIE Y PARALELO Usaremos el contador sncrono de la Figura 7-13 para demostrar dos alternativas de diseo de contadores binarios. En la Figura 7-13(a) se usa una cadena de puertas AND de 2 entradas para llevar la informacin de cada etapa a partir del estado de
las anteriores etapas de contador. Esto es anlogo a llevar la informacin lgica del acarreo l2 N. del T.: En un diseo digital real, generalmente no se encuentran mezclados flip-flops que se disparen con el flanco de
subida con flip-flops que se disparan con el flanco de bajada.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

315

gico de un sumador con acarreo serie. Un contador que usa tal lgica se dice que tiene puertas
en serie y se le denomina contador serie. La analoga con el sumador con acarreo serie sugiere
que pudiera haber un contador anlogo a un sumador con acarro anticipado (en ingles carry
lookahead adder). Tal lgica se puede extraer simplificando un sumador con acarreo anticipado,
con el resultado que se muestra en la Figura 7-13(b). Esta lgica puede reemplazar sencillamente lo que aparece en la caja azul de la Figura 7-13(a) y dar lugar a un contador con puertas
en paralelo, llamado contador en paralelo. La ventaja de las puertas en paralelo es que el paso
del estado 1111 al 0000 slo hay el retardo de una puerta AND en lugar del retardo de cuatro
puertas AND que tiene el contador serie. Esta reduccin del retardo permite a los contadores
operar mucho ms rpido.
Si conectamos 2 contadores de 4 bits juntos uniendo la salida CO de uno a la entrada EN del
otro, el resultado es un contador de 8 bits serie-paralelo. Este contador tiene 2 partes de 4 bits
en paralelo conectados en serie uno con otro. La idea puede extenderse a contadores de cualquier longitud. De nuevo, empleando la analoga con lo sumadores de acarreo anticipado, se
pueden introducir niveles adicionales de puertas lgicas para reemplazar la conexin serie entre
segmentos de 4 bits. La reduccin adicional del retardo es til para construir contadores grandes
y rpidos.
En la Figura 7-13(c) se muestra el smbolo de un contador de 4 bits disparado con flanco
positivo.
CONTADOR BINARIO ASCENDENTE-DESCENDENTE Un contador binario sncrono descendente
pasa por sus estados en orden inverso desde 1111 hasta 0000 y vuelta al estado 1111 para repetir la cuenta. El diagrama lgico de un contador binario descendente es similar al circuito del
contador ascendente, excepto que usa un decrementador en lugar de un incrementador. Las dos
operaciones se pueden combinar para construir un contador que pueda contar tanto ascendente
como descendentemente y al cual se le denomina contador binario ascendente-descendente. Tal
contador se puede disear simplificando el sumador-restador de la Figura 5-8 a un incrementador-decrementador y aadiendo flip-flops tipo D. Cuenta ascendentemente para S % 0 y descendentemente para S % 1.
Alternativamente, se puede disear directamente un contador ascendente-descendente con
habilitacin a partir de un contador. Se necesita una entrada de modo para seleccionar entre las
dos operaciones. Diseamos esta entrada de seleccin de modo mediante S, S % 0 para cuenta
ascendente y S % 1 para cuenta descendente. La variable EN es una entrada de habilitacin de
cuenta, con EN % 1 para contar tanto ascendente como descendentemente, y EN % 0 para deshabilitar ambas cuentas. Un contador ascendente-descendente de 4 bits se puede describir mediante las siguientes ecuaciones de entrada:
DA0 % Q0 S EN
DA1 % Q1 S ((Q0 S1 ! Q1 0 S) EN)
DA2 % Q2 S ((Q0 Q1 S1 ! Q1 0 Q1 1 S) EN)
DA3 % Q3 S ((Q0 Q1 Q2 S1 ! Q1 0 Q1 1 Q1 2 S) EN)
El diagrama lgico del circuito se puede obtener fcilmente de las ecuaciones de entrada, aunque no se incluye aqu. Se debera notar que las ecuaciones, tal y como estn escritas, dan lugar
a puertas en paralelo usando distinta lgica de acarreo para la cuenta ascendente y descendente.
Tambin es posible usar dos cadenas distintas de puertas en serie. Por contra, el contador extrado del incrementador-decrementador slo usa una cadena de acarreo. En general, el coste lgico
es similar.

316

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

CONTADOR BINARIO CON CARGA EN PARALELO Los contadores utilizados en los sistemas digitales necesitan con frecuencia la capacidad de realizar una carga en paralelo para transferir un
nmero inicial al contador antes de contar. Esta funcin se puede realizar mediante un incrementador con habilitacin, ENABLE, n ENABLEs y n puertas OR de 2 entradas, como se
muestra en la Figura 7-14. Los n ENABLEs se usan para habilitar y deshabilitar la carga paralelo del dato de entrada, D, usando la seal Load. Vase que el ENABLE del incrementador se
usa para habilitar o deshabilitar usando la expresin Count Load. Si ambas entradas, Load y
Count, son 0, las salidas no cambian, incluso cuando se aplican pulsos a las entradas C. Si la
entrada de carga se mantiene a nivel 0, la entrada Count controla la operacin del contador, y
las salidas cambian a la siguiente cuenta binaria para cada flanco positivo del reloj. El dato
puesto en las entradas D se carga en los flip-flops si Load es igual a 1, independientemente del
valor de Count puesto que hace una operacin AND con Load y Count. Los contadores con
carga en paralelo son muy tiles en el diseo de procesadores digitales. En siguientes captulos
nos referiremos a ellos como registros con operaciones de carga e incremento.
Load
Count
D0

Q0

D1

Q1

D2

Q2

D3

Q3

Salida
de acarreo CO
Clock

FIGURA 7-14
Contador binario de 4 bits con carga en paralelo

REGISTROS Y TRANSFERENCIAS DE REGISTROS

317

CTR 4
Clock
Load
1

(0 lgico)

Count
D0

Q0

Q0

D1

Q1

Q1

D2

Q2

Q2

D3

Q3

Q3

CO

FIGURA 7-15
Contador BCD

El contador binario con carga en paralelo se puede convertir en un contador BCD sncrono
(sin entrada de carga) conectndole una puerta AND externa, como se muestra en la Figura 7-15.
El contador comienza con todas sus salidas a cero, y la entrada de cuenta est activada siempre.
Mientras la salida de la puerta AND sea 0, cada flanco de subida del reloj incrementa al contador en uno. Cuando las salidas alcancen la cuenta 1001, tanto Q0 como Q3 sern 1, haciendo
que la salida de la puerta AND sea igual a 1. Esta condicin hace que la entrada Load se active,
y as, en el siguiente ciclo de reloj, el contador no cuenta pero se carga con el contenido de sus
cuatro entradas D(3:0), que estn conectadas a un 0 lgico, de esta forma se carga un 0000 despus de la cuenta 1001. As el circuito cuenta de 0000 hasta 1001, siguindole el 0000, como
necesita un contador BCD.

Otros contadores
Un contador se puede disear para que genere cualquier nmero deseado de estados secuencialmente. Un contador dividido por N (tambin conocido como contador mdulo N) es un contador que sigue una secuencia repetitiva de N estados. La secuencia puede seguir la cuenta binaria
natural o cualquier otra secuencia arbitraria. En cualquier caso, el diseo de un contador sigue
el procedimiento presentado en el Captulo 6 para el diseo de circuitos secuenciales sncronos.
Para demostrar este procedimiento, presentaremos el diseo de dos contadores: un contador
BCD y un contador con una secuencia arbitraria de estados.
CONTADOR BCD Como se mostr en la seccin anterior, un contador BCD se puede obtener
a partir de un contador binario con carga paralela. Tambin es posible disear un contador BCD
directamente usando flip-flops y puertas por separado. Suponiendo que usamos flip-flops tipo D
para el contador, presentamos en la Tabla 7-9 sus estados actuales y futuros. Se incluye, adems, una salida Y en la tabla. Esta salida es igual a 1 si el estado actual es 1001, indicando el fin
de la cuenta. De esta forma, la salida Y puede habilitar la cuenta de la siguiente dcada cuando
su propia dcada cambia de 1001 a 0000.
Las ecuaciones para las entradas D se obtienen a partir del estado futuro de los valores listados en la tabla y se pueden simplificar mediante Mapas de Karnaugh. Los estados no utilizados

318

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 7-9
Tabla de estados y entradas de los flip-flops para el contador BCD
Estado actual
Q8

Q4

Q2

Q1

0
0
0
0
0
0
0
0
1
1

0
0
0
0
1
1
1
1
0
0

0
0
1
1
0
0
1
1
0
1

0
1
0
1
0
1
0
1
0
1

Estado futuro

Salida

D8%Q8(t!1) D4%Q4(t!1) D2%Q2(t!1) D1%Q1(t!1)

0
0
0
0
0
0
0
1
1
0

0
0
0
1
1
1
1
0
0
0

0
1
1
0
0
1
1
0
0
0

1
0
1
0
1
0
1
0
1
0

0
0
0
0
0
0
0
0
0
1

correspondientes a los miniterminos comprendidos entre 1010 y 1111, se usan con condiciones
indiferentes. Las ecuaciones simplificadas del contador BCD son
D1 % Q1 1
D2 % Q2 S Q1Q1 8
D4 % Q4 S Q1Q2
D8 % Q8 S (Q1Q8 ! Q1Q2Q4)
Y % Q1Q8
Los contadores BCD sncronos pueden conectarse en cascada para formar contadores para
nmeros decimales de cualquier longitud. Las cascada se hace reemplazando D1 con
D1 % Q1 S Y donde Y procede del contador BCD anterior. Adems, debe realizarse una operacin AND con Y y los productos a la derecha de cada una de las puertas XOR de cada ecuacin
desde D2 hasta D8.
CONTADOR DE SECUENCIA ARBITRARIA Suponga que deseamos disear un contador que tiene
una secuencia de seis estados que se repiten, como se muestra en la Tabla 7-10. En la secuencia,
los flip-flops B y C repiten la cuenta binaria 00, 01, 10, mientras que el flip-flop A alterna entre
0 y 1 cada tres cuentas. As que la secuencia del contador no es binaria natural y, adems, hay
dos estados, 011 y 111, que no estn incluidos en la cuenta. Las ecuaciones de las entradas de
los flip-flop D se pueden simplificar usando 3 miniterminos y 7 condiciones de indiferencia.
Las funciones ya simplificadas son:
DA % A S B
DB % C
DC % B1 C1

REGISTROS Y TRANSFERENCIAS DE REGISTROS

319

TABLA 7-10
Tabla de estados y entradas de los flip-flops para el contador
Estado actual
A

0
0
0
1
1
1

0
0
1
0
0
1

0
1
0
0
1
0

Estado futuro
DA%A(t!1) DB % B(t!1) DC % C(t!1)
0
0
1
1
1
0

0
1
0
0
1
0

1
0
0
1
0
0

En la Figura 7-16(a) se muestra el diagrama lgico del contador. Puesto que hay dos estados
no utilizados, analizamos el circuito para determinar su efecto. El diagrama de estados obtenido
se dibuja en la Figura 7-16(b). Este diagrama indica que, si incluso el circuito va a alguno de
estos estados sin utilizar, el siguiente pulso lo llevar a uno de los estados vlidos y el circuito
seguir contando correctamente.

A
ABC

Reset

000

110

011

001

101

111

010

100
(b)

Clock
Reset
(a)

FIGURA 7-16
Contador con cuenta arbitraria

7-7 DISEO DE CLULAS BSICAS DE UN REGISTRO


En la Seccin 5-1 discutimos los circuitos combinacionales iterativos o modulares que se pueden expandir fcilmente. En este captulo conectamos tales circuitos a flip-flops para formar

320

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

circuitos secuenciales. Una clula de un bit, formada por un mdulo combinacional conectado a
un flip-flop, que hace que la salida sea la de un circuito secuencial con 2 estados, se le llama
clula bsica de un registro. Podemos disear un registro de n bit, con una o ms microoperaciones asociadas, diseando una clula de registro bsica y haciendo n copias de ella. Dependiendo de si la salida del flip-flop es una entrada al circuito de la clula bsica, la clula bsica
puede tener su estado futuro que dependa de su estado actual y de sus entradas o de sus entradas
solamente. Si depende slo de las entradas, se recomienda disear una clula bsica combinacional y conectarla con el flip-flop de la clula secuencial bsica a crear. Sin embargo, si el
estado del flip-flop se realimenta a las entradas de la clula, se pueden seguir los mtodos de
diseo secuencial. En el siguiente ejemplo se disea una clula bsica para cada caso.
EJEMPLO 7-1 Diseo de clulas bsicas de un registro
Un registro A debe realizar las siguientes operaciones de transferencias de registro:
AND: A p A p B
EXOR: A p A S B
OR: A p A o B
Si no se especifica otra cosa, suponemos que
1. Slo una de las variables de control AND, EXOR y OR es igual a 1.
2. Si AND, EXOR y OR son iguales 0, el contenido de A permanece sin cambiar.
Una forma sencilla de diseo de una clula de un registro que cumpla las condiciones 1 y 2
es utilizar el registro con carga paralelo construido con flip-flops tipo D con habilitacin (Enable % Load) de la Figura 7-2. De esta forma, la expresin para la carga, LOAD, es la suma
lgica de todas las seales de control que hacen que la transferencia ocurra. La expresin Di es
una suma de productos. Los trminos que aparecen en cada producto son: una seal de control y
la operacin lgica correspondiente a esa seal de control.
En este ejemplo, las ecuaciones correspondientes para LOAD y Di son:
LOAD % AND ! EXOR ! OR
Di % A(t ! 1)i % AND AiBi ! EXOR (AiB1 i ! A1 iBi) ! OR (Ai ! Bi)
La ecuacin para Di se hace de forma parecida a la utilizada en la parte de seleccin de un
multiplexor en el que el conjunto de bloques de habilitacin estn conectados a una puerta OR.
AND, EXOR y OR son las seales de habilitacin, y la parte restante del producto es la funcin
habilitada.
Usando los flip-flops tipo D para almacenar en el registro y sin utilizar la tcnica de clock
gating, se debe disear un multiplexor para cada clula:
Di, FF % LOAD Di ! LOAD Ai
La ecuacin se da para mostrar la parte escondida dentro de la clula bsica de un registro con
carga en paralelo.
Una solucin ms compleja es disear directamente los flip-flops tipo D usando mtodos de
diseo de circuito secuenciales en lugar de soluciones ad hoc basadas en flip-flops con carga en
paralelo.
Podemos formular una tabla de estados codificada con A como variable de estado y salida, y
AND, EXOR, OR y B como entradas, como se muestra en la Tabla 7-11.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

321

TABLA 7-11
Tabla de estados y entradas de flip-flops para contadores
Estado
actual A

Estado futuro A(t ! 1)


(AND % 0)
(EXOR%0) (OR % 1) (OR % 1) (EXOR % 1) (EXOR % 1) (AND % 1) (AND % 1)
(OR % 0)
(B % 0) (B % 1) (B % 0)
(B % 1)
(B % 0) (B % 1)

0
1

0
1

0
1

1
1

0
1

1
0

0
0

0
1

Formulando la ecuacin para la entrada del flip-flop Di % A(t ! 1)i ,


Di%A(t ! 1)i%AND Ai Bi ! EXOR (Ai B1 i ! A1 i Bi) ! OR (Ai ! Bi)!AND EXOR OR Ai
Debido a la relacin entre el operador OR y los operadores AND y EXOR y utilizando simplificaciones algebraicas, se consigue la siguiente expresin:
A(t ! 1)i % (OR ! AND) Ai Bi ! (OR ! EXOR) (Ai B1 i ! A1 i Bi) ! AND ! EXOR Ai
Los trminos OR ! AND, OR ! EXOR, y AND ! EXOR no dependen de los valores Ai y Bi
asociados a cada una de las clulas. La lgica para estos trminos puede ser compartida por
todas las clulas del registro. Usando C1, C2 y C3 como variables intermedias, resulta el siguiente conjunto de ecuaciones:
C1 % OR ! AND
C2 % OR ! EXOR
C3 % AND ! EXOR
Di % A(t ! 1)i % C1Ai Bi ! C2(Ai B1 i ! A1 i Bi) ! C3 Ai
En la Figura 7-17 se muestra el diseo de la clula bsica del registro y de la lgica compartida por todas las clulas del registro A. Antes de comparar estos resultados con los obtenidos
con el mtodo anterior, podemos aplicar una simplificacin similar y compartir lgica a los resultados del mtodo sencillo:
C1 % OR ! AND
C2 % OR ! EXOR
Di % A(t ! 1)i % C1Ai Bi ! C2(Ai B1 i ! A1 i Bi)
LOAD % C1 ! C2
Di, FF % LOAD Di ! LOAD Ai
Si estas ecuaciones se usan directamente, el coste del mtodo simple es algo ms alto. Sin embargo, si estas ecuaciones se proporcionan a una herramienta de minimizacin en lugar de ser
usadas directamente, resultarn las mismas ecuaciones que en el mtodo complejo. De esta forma, el uso del mtodo ms sencillo no aumenta necesariamente el coste del hardware.

322

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

OR

C1

C2

EXOR

C3

AND
Lgica compartida
C1 C2 C3

Bi

Clock

Ai

Clula i

FIGURA 7-17
Diagrama lgico de la clula bsica del registro diseada en el Ejemplo 7-1

En el ejemplo anterior, no hay conexiones laterales entre clulas adyacentes. Entre las operaciones que requieren conexiones laterales estn los desplazamientos, operaciones aritmticas y
comparaciones. Un mtodo para el diseo de estas estructuras es combinar los diseos combinacionales dados en el Captulo 5 con lgica de seleccin y flip-flops. En la Figura 7-8 se muestra
un mtodo general para hacer registros multifunciones usando flip-flops con carga en paralelo.
Este sencillo mtodo evita el diseo de clulas bsicas de registros pero, si se lleva a cabo directamente, puede dar lugar a un exceso de lgica y demasiadas conexiones laterales. La alternativa es hacer una clula bsica del registro a medida. En tales diseos, un factor crtico es la
definicin de las conexiones laterales necesarias. Las diferentes operaciones pueden ser definidas controlando la entrada de la clula menos significativa de la cascada de clulas. El mtodo
de diseo a medida se ilustra en el siguiente ejemplo diseando una clula bsica de un registro
multifuncin.
EJEMPLO 7-2 Diseo de clulas bsicas de un registro
Un registro A debe realizar las siguientes transferencias de registros:
SHL: A p slA
EXOR: A p A S B
ADD: A p A ! B
Si no se especifica otra cosa, suponemos que:
1. Slo una de las variables de control SHL, EXOR y ADD es igual a 1.
2. Si SHL, EXOR y ADD son iguales 0, el contenido de A permanece sin cambiar.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

323

Un mtodo sencillo de disear una clula bsica de un registro que cumpla las condiciones 1
y 2 es usar un registro con carga en paralelo controlado por LOAD. En este mtodo la expresin
LOAD es la suma lgica de todas las seales de control que hacen que ocurra una transferencia.
La realizacin para Di consiste en una suma de productos, donde cada producto tiene una seal
de control y la lgica para la operacin.
Para este ejemplo, el resultado para las ecuaciones LOAD y Di son:
LOAD % SHL ! EXOR ! ADD
Di % A(t ! 1)i % SHL Ai.1 ! EXOR (Ai S Bi) ! ADD ((Ai S Bi) S Ci)
Ci!1 % (Ai S Bi)Ci ! Ai Bi
Estas ecuaciones pueden usarse sin modificacin o pueden ser optimizadas.
Supongamos ahora que hacemos un diseo a medida suponiendo que todas las clulas del
registro son idnticas. Esto significa que las clulas ms y menos significativas son las mismas
que las clulas del interior de la cadena. Por esto, el valor de C0 debe especificarse y el uso de
Cn, si existe, debe determinarse para cada una de las tres operaciones. Para el desplazamiento a
la izquierda, suponemos que el bit ms a la derecha vacante se rellena con un 0, haciendo
C0 % 0. Puesto que C0 no est involucrado en la operacin EXOR, se puede suponer indiferente.
Finalmente, para la suma, C0 puede suponerse 0 o puede dejarse como variable para permitir el
acarreo de una suma anterior. Suponemos que C0 es igual a 0 para la suma puesto que no se ha
especificado un acarreo adicional en la sentencia de transferencia de registros.
Nuestro primer objetivo es minimizar las conexiones laterales entre clulas. Dos de las tres
operaciones, desplazamiento a izquierda y la suma, necesitan una conexin lateral a la izquierda
(es decir, hacia la clula final ms significativa de la cadena de clulas). Nuestro objetivo es
usar una seal para ambas operaciones, llammosla Ci. Ya existe para la suma pero debe ser
redefinida para efectuar la suma y el desplazamiento a la izquierda. En nuestro diseo a medida
tambin se reemplaza el flip-flop con carga en paralelo por un flip-flop tipo D. Ahora formulamos la tabla de estados para la clula bsica del registro en la Tabla 7-12:
Di%A(t ! 1)i%SHL EXOR ADD Ai ! SHL Ci ! EXOR (Ai S Bi) ! ADD (Ai S Bi S Ci)
Ci!1 % SHL Ai ! ADD ( (Ai S Bi)Ci ! Ai Bi)
El trmino Ai S Bi aparece tanto en el trmino de EXOR como en el trmino ADD. De hecho,
si Ci % 0 durante la seleccin de la operacin EXOR, las funciones para la suma en ADD y para
TABLA 7-12
Tabla de estados y las entradas de los flip-flop para el diseo de la clula del registro
del Ejemplo 7-2
Estado
actual Ai

Entradas
SHL % 0
EXOR % 0
ADD % 0

0
1

Estado futuro Ai(t ! 1)/salida Ci!1


SHL % 1
Bi % 0
Ci % 0

0/X 0/0
1/X 0/1

1
0
1

1
1
0

1
1
1

0/0 1/0 0/0 1/0


0/1 1/1 0/1 1/1

EXOR % 1
Bi % 0

1
1

0/X 1/X
1/X 0/X

ADD % 1
Bi % 0
Ci % 0

1
0
1

1
1
0

1
1
1

0/0 1/0 1/0 0/1


1/0 0/1 0/1 1/1

324

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EXOR pueden ser idnticas. En la ecuacin Ci!1, como SHL y ADD son 0 cuando EXOR es 1,
Ci es 0 para todas las clulas de la cascada excepto para la menos significativa. De esta forma,
los valores de entrada Ci son 0 para todas las clulas en el registro A. As podemos combinar las
operaciones ADD y EXOR como sigue:
Di % A(t ! 1)i % SHL EXOR ADD Ai ! SHL Ci ! (EXOR ! ADD) ((Ai S Bi) S Ci)
Las expresiones SHL EXOR ADD y EXOR ! ADD, que son independientes de Ai, Bi y Ci,
pueden ser compartidas por todas las clulas. Las ecuaciones resultantes son:
E1 % EXOR ! ADD
E2 % E1 ! SHL
Di % E2 Ai ! SHL Ci ! E1 ((Ai S Bi) S Ci)
Ci!1 % SHL Ai ! ADD ((Ai S Bi)Ci ! Ai Bi)
El registro resultante aparece en la Figura 7-18. Comparando este resultado con la clula bsica
del registro del diseo sencillo, notamos dos diferencias:
1.
2.

Slo existe una conexin lateral entre clulas en lugar de dos.


La lgica se ha compartido muy eficientemente para las operaciones de suma y EXOR.

El diseo a medida ha ahorrado conexin y lgica no presentes a nivel de diseo de bloques con
o sin optimizacin.
EXOR
ADD

E1

E2

SHL
Lgica compartida
Bi

E1 E2

SHL ADD
Clula i

Ci 1

Ci
D

Clock

Ai

FIGURA 7-18
Diagrama lgico de la clula bsica del registro diseada en el Ejemplo 7-2

REGISTROS Y TRANSFERENCIAS DE REGISTROS

325

7-8 TRANSFERENCIA DE MLTIPLES REGISTROS BASADA


EN BUSES Y MULTIPLEXORES
Un sistema digital tpico tiene muchos registros. Las rutas deben crearse para transferir datos de
un registro a otro. La cantidad de lgica y el nmero de interconexiones puede ser excesiva si
cada registro tiene su propio conjunto de multiplexores dedicados. Un esquema ms eficiente
para transferir datos entre registros es un sistema que usa un camino de transferencia compartido llamado bus. Un bus se caracteriza por un conjunto de lneas comunes que maneja la lgica
de seleccin. Las seales de control de la lgica seleccionan una sola fuente y uno o ms destinos en varios ciclos de reloj para realizar una transferencia.
En la Seccin 7-4 vimos que los multiplexores y los registros con carga en paralelo se pueden usar para realizar transferencia de mltiples fuentes. En la Figura 7-19(a) se muestra un
diagrama de bloques para dichas transferencias entre tres registros. Hay tres multiplexores, de
buses de n bit, de 2 a 1, cada uno con su seal de seleccin. Cada registro tiene su propia seal
de carga. El mismo sistema basado en un bus se puede llevar a cabo usando un sencillo multiplexor de buses de n bits de 3 a 1 y multiplexores y registros con carga en paralelo. Si se comparte un conjunto de salidas de multiplexores en un camino comn, estas lneas de salida forman un bus. En la Figura 7-19(b) se muestra dicho sistema con un slo bus para las
transferencias a los tres registros. El par de lneas de control, Select, determina el contenido del
registro fuente que aparecer a las salidas del multiplexor (es decir, en el bus). Las entradas de
carga, Load, determinan el registro o registros de destino que se cargan con el dato del bus.
Select
S0 S1 S2
S
MUX
1 2a1
0

Load
L0 L1 L2

Load
L0 L1 L2

n
R0

R0
n

Select

S
MUX
1 2a1
0

SS11 S0

0
R1

1 MUX
3a1
02

Bus

R1

S
MUX
1 2a1
0

n
R2

R2
n

(a) Multiplexores dedicados

(b) Un solo bus

FIGURA 7-19
Bus simple versus multiplexores dedicados

326

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

En la Tabla 7-13 se ilustran las transferencias del diseo de la Figura 7-19(b) realizadas con
un solo bus. La primera transferencia es de R2 a R0. Para Select igual a 10, se selecciona la
entrada R2 del multiplexor. La seal de carga L0 del registro R0 est a 1 y las dems seales de
carga estn a 0, haciendo que el contenido de R2 que est en el bus se cargue en R0 con el
siguiente flanco de subida de reloj. La segunda transferencia de la tabla ilustra la carga del contenido de R1 en R0 y R2. El registro fuente R1 se selecciona puesto que Select es igual a 01. En
este caso, L2 y L0 estn a 1, haciendo que el contenido de R1 en el bus se cargue en los registros R0 y R2. La tercera transferencia es un cambio entre R0 y R1, es imposible realizarla en un
slo ciclo de reloj, ya que se requieren dos fuentes simultneas en un slo bus. Por esto, esta
transferencia necesita dos buses al menos o combinar un bus con un camino dedicado de un
registro a otro. Vase que tal transferencia se puede ejecutar con los multiplexores dedicados de
la Figura 7-19(a). As, en un sistema con un solo bus, las transferencias simultneas con diferentes fuentes son imposibles de realizar en un solo ciclo de reloj, mientras que con multiplexores
dedicados, cualquier transferencia es posible. Por ello, la reduccin de hardware que hay en un
solo bus en lugar de multiplexores dedicados da como resultado limitaciones en las transferencias simultneas.
Si suponemos que solamente se necesitan transferencias que involucran a un slo registro
fuente, entonces podemos usar el circuito de la Figura 7-19 para comparar la complejidad del
hardware dedicado frente a sistemas basados en un solo bus. Primeramente, suponemos que el
diseo de un multiplexor es como el de la Figura 4-16. En la Figura 7-19(a), hay 2n puertas
AND y n puertas OR por multiplexor (sin contar los inversores), que da un total de 9n puertas.
Por contra, en la Figura 7-19(b), el bus multiplexor necesita slo 3n puertas AND y n puertas
OR, que da un total de 4n puertas. Tambin, las conexiones de los datos de entrada a los multiplexores se reducen de 6n a 3n. As, el coste del hardware de seleccin se reduce a la mitad.
TABLA 7-13
Ejemplo de transferencia de registros usando un slo bus
en la Figura 7-19(b)
Seleccin
Transferencia de registro

S1

S0

R0 p R2
R0 p R1, R2 p R1
R0 p R1, R1 p R0

1
0

0
1

Carga
L2
0
1
Imposible

L1 L0
0
0

1
1

Bus triestado
Un bus se puede construir con buffers triestado (en ingls three-state buffers), ya presentados en
la Seccin 2-8, en lugar de multiplexores. Esto tiene la posibilidad de reducir an ms el nmero de conexiones. Por qu usar buffers triestado en lugar de multiplexores, en especial, para
construir buses? La razn es que las salidas de varios buffers triestado pueden ser conectadas
juntas para formar una lnea de un bit de un bus, y as el bus se forma slo con un nivel de
puertas lgicas. Por otra parte, en un multiplexor, tal cantidad de fuentes da lugar a puertas OR
con fan-in altos, necesitndose mltiples niveles de puertas OR, introduciendo ms lgica e incrementando el retardo. Por contra, los buffers triestado proporcionan una forma til de cons-

REGISTROS Y TRANSFERENCIAS DE REGISTROS

327

truir buses rpidos que, con frecuencia, se prefieren usar en tales casos. Ms importante, sin
embargo, es el hecho de que las seales pueden viajar en dos direcciones en buses con tercer
estado. De esta forma, los buses tri-estado pueden usar la misma interconexin para sacar e introducir datos de un circuito lgico. Esta caracterstica, que es la ms importante cuando se cruzan los lmites de los chips, se ilustra en la Figura 7-20(a). La figura muestra un registro con n
lneas que sirven tanto para las entradas como para las salidas que atraviesan el lmite del rea
sombreada. Si los buffers triestado estn habilitados, entonces las lneas son de salida; si los
buffers estn deshabilitados, las lneas pueden ser de entrada. El smbolo para esta estructura se
da tambin en la figura. Vase que las lneas bidireccionales del bus se representan mediante
una flecha de doble punta. Adems, un pequeo triangulo indica que el registro tiene salidas
con tercer estado.
La Figura 7-20(b) y la Figura 7-20(c) muestran la realizacin de un bus con multiplexor y
un bus tri-estado, respectivamente, para su comparacin. El smbolo de la Figura 7-20(a) es un
registro con entrada-salida bidireccional que se usa en la Figura 7-20(c). En contraste con la
situacin de la Figura 7-19, donde los multiplexores dedicados se reemplazaron por un bus, estas dos realizaciones son idnticas en trminos de su capacidad de transferencia de registros.
Vase que, en los buses tri-estado, slo hay tres conexiones de datos a los registros por cada bit
del bus. El bus realizado con el multiplexor tiene seis conexiones de datos por bit del conjunto
de los registros. Esta reduccin en el nmero de conexiones de los datos a la mitad, aparte de la
su facilidad de construccin, hace del bus tri-estado una atractiva alternativa. El uso de tales
lneas bidireccionales es particularmente eficaz entre circuitos lgicos, con lneas de entradasalida, que estn separados fsicamente en diferentes encapsulados.
Load
L0 L1 L2

Load
L2 L1 L0
Enable
E2 E1 E0

Load

LOAD

R0

n Bus

R0

n n

Select
2

En

n
En

MUX
3a1

Bus

R1

R1

Load

En

En

R2

R2
En

(a) Registro con lneas de


entrada-salida bidireccionales
y su smbolo

(b) Bus y multiplexor

FIGURA 7-20
Bus triestado estado versus bus multiplexado

(c) Bus triestado usando


registro con lneas
bidireccionales

328

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

7-9 TRANSFERENCIA SERIE Y MICROOPERACIONES


Un sistema digital se dice que opera en modo serie cuando la informacin del sistema transfiere
o manipula un bit en cada instante de tiempo. La informacin se transfiere bit a bit desplazando
los bits de un registro a otro. Esta forma de transferencia contrasta con la transferencia en paralelo, en la que todos los bits del registro se transfieren simultneamente.
La transferencia serie de informacin de un registro A a otro registro B se hace con registros
de desplazamiento, como se muestra en la Figura 7-21(a). La salida serie del registro A se conecta a la entrada serie del registro B. La entrada serie del registro A recibe ceros mientras el
dato se transfiere al registro B. Tambin es posible que el registro A reciba otra informacin
binaria, o si queremos mantener el dato en el registro A, podemos conectar su salida serie a su
entrada serie, de forma que la informacin vuelva al mismo registro. El contenido inicial del
registro B se extrae desplazndolo hacia afuera a travs de su salida serie y se pierde a no ser
que se transfiera al registro A, o a un tercer registro u otro tipo de memoria. La entrada de control de desplazamiento, Shift, determina cundo y cuntas veces se desplaza el registro. Los registros que usan Shift se controlan mediante la lgica de la Figura 7-2, que permite a los pulsos
de reloj pasar a la entrada de reloj del registro de desplazamiento cuando Shift vale 1.
En la Figura 7-21, cada registro de desplazamiento tiene cuatro etapas. La lgica que supervisa la transferencia debe disearse para habilitar a los registros de desplazamiento, mediante la
seal Shift, durante un nmero fijo de cuatro pulsos de reloj. En la Figura 7-21(b) se muestra el
registro de desplazamiento con habilitacin mediante lgica aplicada a la entrada de reloj. Los
cuatro pulsos encuentran a la seal Shift activada, de forma que a la salida de la lgica conectada a las entradas de reloj, se produce cuatro pulsos: T1, T2, T3 y T4. Cada transicin positiva de
estos pulsos produce un desplazamiento en ambos registros. Despus del cuarto pulso, Shift regresa a 0 y los registros se deshabilitan. Vase de nuevo que, para cada flanco positivo, los
pulsos a la entrada de reloj son 0, y el nivel inactivo cuando no hay pulsos presentes es 1 en
lugar de 0.
Supongamos ahora que el contenido del registro A antes del desplazamiento es 1011 y el del
registro B es 0010, y la entrada SI del registro A esta a 0. Entonces la transferencia serie de A a
B se sucede en cuatro pasos, como se muestra en la Tabla 7-14. Con el primer pulso T1, el bit
Shift
Clock
C
0

Registro A
SRG 4

C
SO

Sl

Registro B
SRG 4

SO

Sl

(a) Diagrama de bloques

Clock
Shift
Entrada C
T1

T2

(b) Cronograma

FIGURA 7-21
Transferencia serie

T3

T4

REGISTROS Y TRANSFERENCIAS DE REGISTROS

329

TABLA 7-14
Ejemplo de una transferencia serie
Temporizacin
de los pulsos

Registro de
desplazamiento A

Registro de
desplazamiento B

Valor inicial
Despus de T1
Despus de T2
Despus de T3
Despus de T4

1
0
0
0
0

0
1
1
0
1

0
1
0
0
0

1
0
1
0
0

1
1
0
1
0

0
0
1
1
0

1
0
0
1
1

0
1
0
0
1

ms a la derecha de A se desplaza al bit ms a la izquierda de B, el bit ms a la izquierda de A


recibe un 0 por la entrada serie, y en el mismo instante, los bits restantes de A y B se desplazan
una posicin a la derecha. Los siguientes tres pulsos llevan a cabo idnticas operaciones, desazando los bits de A a B uno a uno mientras entran ceros en A. Despus del cuarto desplazamiento, la lgica que supervisa la transferencia cambia la seal Shift a 0 y los desplazamientos se
paran. El registro B contiene ahora 1011, que eran los valores anteriores de A y el registro A
contiene ceros.
La diferencia entre el modo serie y paralelo debera estar clara despus de este ejemplo. En
el modo paralelo, la informacin de todos los bits del registro est disponible y todos los bits se
pueden transferir simultneamente en un ciclo de reloj. En el modo serie, los registros tienen
una sola entrada serie y una sola salida serie, y la informacin se transfiere bit a bit.

Suma en serie
Las operaciones en los sistemas digitales se suelen realizar en paralelo puesto que son ms rpidas. Las operaciones en serie son ms lentas pero tienen la ventaja de que requieren menos
hardware. Para probar el modo de operacin serie, mostraremos la forma de operar de un sumador serie. Tambin comparamos el sumador serie con el paralelo que se present en la Seccin
5-2 para ilustrar la relacin espacio-tiempo a la hora de disear.
Los dos nmeros binarios a sumar en modo serie deben almacenarse en sendos registros de
desplazamiento. Cada pareja de bits se suman en diferente instante de tiempo mediante un sumador completo, FA, (del ingles full-adder), como se muestra en la Figura 7-22. El acarreo de
salida del sumador completo se transfiere a un flip-flop tipo D. La salida de este flip-flop de
acarreo se usa como acarreo de entrada para el siguiente par de bits. El bit de suma de la salida
S del sumador completo se transfiere a un tercer registro, en nuestro caso se ha elegido para
transferir el resultado de la suma el registro A, segn el contenido se desplaza hacia el exterior.
La entrada serie del registro B puede, a su vez, recibir un nuevo nmero binario segn su contenido se va desplazando durante la suma.
La forma de operar del sumador serie es como sigue: el registro A mantiene un sumando, el
registro B otro y el flip-flop de acarreo debe haber sido puesto a 0. Las salidas serie de A y de B
proporcionan la pareja de bits a las entradas X y en Y del sumador completo. La salida del flipflop de acarreo proporciona el acarreo a la entrada Z. Cuando la seal Shift se pone a 1, la puerta OR permite que llegue el reloj a ambos registros y al flip-flop. Cada pulso de reloj desplaza
ambos registro a la vez a la derecha, transfiere el bit de suma, S, al flip-flop ms a la izquierda
de A, y transfiere el acarreo de salida al flip-flop de acarreo. La lgica de control del desplaza-

330

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 7-22
Suma serie

miento permite que lleguen a los registros tantos pulsos de reloj como bits hay en los registros
(cuatro en nuestro ejemplo). En cada pulso se transfiere un nuevo bit de la suma a A, un nuevo
acarreo al flip-flop y ambos registros se desplazan una vez a la derecha. Este proceso contina
hasta que la lgica que controla los desplazamientos pone a 0 a la seal Shift. De esta forma se
lleva a cabo la suma, pasando cada par de bits y el acarreo previo a travs del sumador completo y transfiriendo la suma, bit a bit, al registro A.
Al principio podemos inicializar los registros A y B y el flip-flop de acarreo a 0, luego desplazamos el primer nmero en el registro B y posteriormente se suma con el 0 del registro A.
Mientras se desplaza el primer nmero de B y se va sumando, podemos transferir un segundo
nmero en B a travs de su entrada serie. El segundo nmero se puede sumar con el contenido
de A al mismo tiempo que se transfiere un tercer nmero al registro B. La suma en modo serie
se puede repetir para realizar la suma de dos, tres o ms nmeros, cuyas sumas se van acumulando en el registro A.
La comparacin del sumador serie con el sumador paralelo, descrito en la Seccin 5-2, nos
da un ejemplo de la relacin espacio-tiempo. El sumador paralelo tiene n sumadores completos,
tantos como bits tienen los operandos, mientras que el sumador serie necesita slo un sumador
completo. Excluyendo los registros de ambos, el sumador paralelo es un circuito combinacional
mientras que el sumador serie es un circuito secuencial pues incluye el flip-flop de acarreo. El
circuito serie necesita n ciclos de reloj para completar la suma. Circuitos idnticos, como los n
sumadores completos del sumador paralelo, se conectan en cadena constituyendo un ejemplo de
un array de clulas bsicas. Si los valores de los acarreos entre los sumadores completos se
consideran como variables de estado, entonces los estados finales, desde el menos significativo
al ms significativo, son los mismos que los estados que aparecen en la secuencia de salida del
sumador serie. Vase que en los arrays de clulas bsicas, los estados aparecen en el espacio
(paralelamente), pero en el circuito secuencial aparecen en el tiempo (de forma serie). Pasando

REGISTROS Y TRANSFERENCIAS DE REGISTROS

331

de una forma de realizar el circuito a otra podemos hacer una consideracin relativa al espaciotiempo. El sumador paralelo, en espacio (rea) es n veces ms grande que el sumador serie (ignorando el rea de flip-flop de acarreo), pero es n veces ms rpido. El sumador serie, aunque
es n veces ms lento pero es n veces ms pequeo. Esto da al diseador una oportunidad importante de enfatizar su diseo en rea o en velocidad, donde ms rea significa ms coste.

7-10 MODELADO EN HDL

DE REGISTROS
DE DESPLAZAMIENTO Y CONTADORES-VHDL
El ejemplo de un registro de desplazamiento y un contador binario sirven para ilustrar el uso de
VHDL para modelar registros y las operaciones sobre su contenido.
EJEMPLO 7-3 Registro de desplazamiento de 4 bits en VHDL
El cdigo en VHDL de la Figura 7-23 modela, a nivel de comportamiento, un registro de desplazamiento. Una entrada RESET pone el contenido del registro a cero asncronamente. El registro de desplazamiento contiene flip-flops y, por tanto, tiene un proceso que describe algo parecido a un flip-flop tipo D. Los cuatro flip-flops se representan mediante la seal shift, de tipo
stdlogicvector de tamao 4. Q no se puede usar para representar a los flip-flops puesto
que es una salida y las salidas de los flip-flops se usan internamente. El desplazamiento a la
izquierda se consigue aplicado el operador concatenacin & a los tres bits de la derecha de
-- Registro de desplazamiento de 4 bits con reset asncrono
library ieee;
use ieee.std_logic_1164.all;
entity srg_4_r is
port(CLK, RESET, SI : in std_logic;
Q : out std_logic_vector(3 downto 0);
SO : out std_logic);
end srg_4_r;
architecture behavioral of srg_4_r is
signal shift : std_logic_vector(3 downto 0);
begin
process (RESET, CLK)
begin
if (RESET = '1') then
shift <= "0000";
elsif (CLKevent and (CLK = '1')) then
shift <= shift(2 downto 0) & SI;
end if;
end process;
Q <= shift;
SO <= shift(3);
end behavioral;
FIGURA 7-23
Descripcin en VHDL del comportamiento de un registro de desplazamiento a la izquierda de 4 bits

332

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

shift y a la entrada de desplazamiento SI. Esta cantidad se transfiere a shift moviendo el


contenido de un bit a la izquierda y cargando el valor de SI en el bit ms a la derecha. El si-

guiente proceso que ejecuta el desplazamiento tiene dos sentencias, una que asigna el valor de
shift a la salida Q y la otra que define la salida del desplazamiento a la seal SO como el

contenido del bit ms a la izquierda del desplazamiento.

EJEMPLO 7-4 Contador de 4 bits en VHDL


El cdigo VHDL de la Figura 7-24 describe, a nivel de comportamiento, un contador de 4 bits.
Una entrada de RESET pone el contenido del contador a cero asncronamente. El contador tiene
flip-flops y, por tanto, tiene un proceso que describe algo parecido a un flip-flop tipo D. Los
cuatros flip-flops se representan mediante la seal count, de tipo stdlogicvector y de tamao cuatro. Q no se puede usar para representar a los flip-flops puesto que es una salida y las
salidas de los flip-flops se deben usar internamente. La cuenta ascendente se consigue sumando
1, "0001", a count. Como la suma no es una operacin para el tipo stdlogicvector, se
necesita usar un paquete de la librera ieee, stdlogicunsigned.all , que define operaciones sin signo para el tipo stdlogic. Siguiendo el proceso que ejecuta la puesta a 0 y la cuenta, encontramos dos sentencias, una asigna el valor de count a la salida Q, y otra que define la
seal de salida de fin de cuenta CO. Se usa una sentencia when-else que pone CO a 1 cuando se
alcanza el valor mximo de la cuenta cuando EN es igual a 1.
-- Contador binario de 4 bits con reset asncrono
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count_4_r is
port(CLK, RESET, EN : in std_logic;
Q : out std_logic_vector(3 downto 0);
CO : out std_logic);
end count_4_r;
architecture behavioral of count_4_r is
signal count : std_logic_vector(3 downto 0);
begin
process (RESET, CLK)
begin
if (RESET = '1') then
count <= "0000";
elsif (CLKevent and (CLK = '1') and (EN = '1')) then
count <= count + "0001";
end if;
end process;
Q <= count;
CO <= '1' when count = "1111" and EN = '1' else '0';
end behavioral;
FIGURA 7-24
Descripcin en VHDL del comportamiento de un contador binario de 4 bits con reset asncrono

REGISTROS Y TRANSFERENCIAS DE REGISTROS

333

7-11 MODELADO EN HDL

DE REGISTROS
DE DESPLAZAMIENTO Y CONTADORES-VERILOG
El ejemplo de un registro de desplazamiento y un contador binario sirven para ilustrar el uso de
Verilog para modelar registros y las operaciones sobre su contenido.
EJEMPLO 7-5 Cdigo Verilog para un registro de desplazamiento
En la Figura 7-25 se describe, a nivel de comportamiento, un registro de desplazamiento a izquierdas. Una entrada RESET pone el contenido del registro a cero asncronamente. El registro
de desplazamiento contiene flip-flops, de forma que el proceso de descripcin comienza con
always que se asemeja al de un flip-flop de tipo D. Los cuatro flip-flops se representan mediante el vector Q, de tipo reg con sus bits numerados de 3 a 0. El desplazamiento a la izquierda
se consigue aplicando { } para concatenar los tres bits de la derecha de Q y la entrada de desplazamiento SI. Esta cantidad se transfiere a Q moviendo el contenido de un bit de la izquierda y
cargando el valor de SI en el bit ms a la derecha. Antes del proceso que realiza el desplazamiento hay una sentencia de asignacin continua que asigna el contenido del bit ms a la izquierda de Q a la salida de desplazamiento SO.
// Registro de desplazamiento de 4 bits con Reset asncrono
module srg_4_r_v (CLK, RESET, SI, Q,SO);
input CLK, RESET, SI;
output [3:0] Q;
output SO;
reg [3:0] Q;
assign SO = Q[3];
always@(posedge CLK or posedge RESET)
begin
if (RESET)
Q <= 4'b0000;
else
Q <= {Q[2:0], SI};
end
endmodule
FIGURA 7-25
Descripcin Verilog de comportamiento de un registro de desplazamiento a la izquierda de 4 bits
con reset asncrono

EJEMPLO 7-6 Cdigo Verilog para un contador


El Cdigo Verilog de la Figura 7-26 modela, a nivel de comportamiento, un contador binario de
4 bits. Una entrada RESET pone el contenido del registro a cero asncronamente. El contador
contiene flip-flops y, por tanto, la descripcin contiene un proceso que se asemeja a un flip-flop
tipo D. Los cuatro flip-flops se representan por la seal Q de tipo reg de tamao cuatro. La

334

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

cuenta ascendente se consigue sumando 1 a Q. Antes del proceso que realiza la puesta a cero y
la cuenta, hay una sentencia condicional continua que define la salida del fin de cuenta como
CO. CO se pone a 1 cuando se alcanza la cuenta mxima y EN es igual a 1. Ntese que la operacin lgica AND se hace con el operador &&.
// Contador binario de 4 bits con reset asncrono
module count_4_r_v (CLK, RESET, EN, Q, CO);
input CLK, RESET, EN;
output [3:0] Q;
output CO;
reg [3:0] Q;
assign CO = (count == 4'b1111 && EN == 1b1) ? 1 : 0;
always@(posedge CLK or posedge RESET)
begin
if (RESET)
Q <= 4'b0000;
else if (EN)
Q <= Q + 4'b0001;
end
endmodule
FIGURA 7-26
Descripcin Verilog de comportamiento de un contador binario de 4 bits con reset asncrono

7-12 RESUMEN DEL CAPTULO


Los registros son un conjunto de flip-flops, o un conjunto de flip-flops interconectados, y lgica
combinacional. El registro ms simple es un conjunto de flip-flops que se cargan con los nuevos
datos de sus entradas en cada ciclo de reloj. Los ms complejos son los registros que pueden
cargar nuevos datos bajo una seal de control para unos ciclos de reloj concretos. La transferencia de registros es un medio de representar y especificar operaciones elementales de procesado.
La transferencia de registros se puede relacionar con su correspondiente sistema hardware digital, tanto a nivel de bloques como a nivel detallado de la lgica. Las microoperaciones son operaciones elementales que se ejecutan sobre los datos almacenados en registros. Entre las microoperaciones aritmticas se incluyen la suma y la resta, descritas como transferencia de registros y
se realizan con su hardware correspondiente. La microoperaciones lgicas, esto es, aplicaciones
bit a bit de primitivas lgicas tales como la AND, OR y XOR, combinadas con palabra binarias,
que proporcionan una mscara y complementos selectivos en otra palabra binaria. Las microoperaciones de desplazamiento a la izquierda y la derecha mueven los datos lateralmente una o
ms posiciones sincronizadamente.
Los registros de desplazamiento aportan una nueva dimensin a la transferencia de datos, ya
que estn diseadas para mover la informacin lateralmente bit a bit en cada instante de tiempo.
Si se combinan con la posibilidad de cargar datos, se pueden usar para convertir datos en formato paralelo a formato serie. As mismo, si las salidas del registro estn accesibles, un registro de
desplazamiento se puede usar para convertir datos en formato serie a formato paralelo. Este movimiento lateral de datos puede usarse tambin en estructuras hardware que ejecutan operaciones en serie.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

335

Los contadores se usan para conseguir una secuencia determinada de valores, normalmente
como una cuenta ordenada en binario. El contador ms simple no tiene ms entradas que la de
reset asncrono para su inicializacin a cero. Este tipo de contadores simplemente cuentan pulsos de reloj. Versiones ms complejas admiten la carga de datos y tienen seales que lo habilitan para contar.
Los multiplexores seleccionan entre mltiples caminos de transferencia que entran en un registro. Los buses son caminos para transferencias de registros que comparten caminos y ofrecen
la posibilidad de reducir hardware a cambio de limitaciones en casos de transferencias simultneas. Adems de los multiplexores, los buffers tri-estado proporcionan caminos para transferencias bidireccionales y reducen el nmero de conexiones.

REFERENCIAS
1. MANO, M. M.: Digital Design, 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 2002.
2. WAKERLY, J. F.: Digital Design: Principles and Practices, 3rd ed. Upper Saddle River, NJ:
Prentice Hall, 2000.
3. IEEE Standard VHDL Language Reference Manual. (ANSI/IEEE Std 1076-1993; revision
of IEEE Std 1076-1987). New York: The Institute of Electrical and Electronics Engineers,
1994.
4. IEEE Standard Description Language Based on the Verilog(TM) Hardware Description
Language (IEEE Std 1364-1995). New York: The Institute of Electrical and Electronics Engineers, 1995.
5. THOMAS, D. E., AND P. R. MOORBY: The Verilog Hardware Description Language 4th ed.
Boston: Kluwer Academic Publishers, 1998.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que hay una solucin
disponible en la direccin de Internet: http://www.librosite.net/Mano.
7-1. Mediante simulacin manual o por computadora, demuestre que la funcin de habilitacin de reloj de la Figura 7-1(c) funciona correctamente con el registro de la Figura 71(a). Use un flip-flop disparado con flanco de subida con Clock como entrada de reloj
para generar Load. Asegrese de que usa puertas y flip-flops sin retardos.
7-2. !Cambie la puerta OR de la Figura 7-1(c) por una puerta AND y quite el inversor colocado sobre la seal Load.
(a) Haga la misma simulacin que en el Problema 7-1 para demostrar que el nuevo circuito no funciona correctamente. Explique porqu.
(b) Funcionar correctamente el circuito si el flip-flop que genera Load se dispara con
flanco de bajada en lugar del flanco de subida de Clock?
7-3. Suponga que los registros R1 y R2 de la Figura 7-6 contienen dos nmeros sin signo.
Cuando la entrada de seleccin, X, es igual a 1, el circuito sumador-restador ejecuta la
operacin aritmtica R1 ! complemento a 2 de R2. Esta suma y el acarreo de salida Cn
se transfiere a R1 y C cuando K1 % 1 y, adems, se produce un flanco de subida de reloj.
(a) Demuestre que si C % 1, entonces el valor transferido a R1 es igual a R1 . R2, pero
si C % 0, el valor transferido a R1 es el complemento a 2 de R2 . R1.

336

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

(b) Indique cmo se puede usar el valor del bit C para detectar un acarreo (borrow) despus de la resta de dos nmeros sin signo.
7-4. *Realice las lgica bit a bit (bitwise) AND, OR y XOR de los dos operandos de 8 bits
10011001 y 11000011.
7-5. Dado el operando de 16 bits 00001111 10101010 qu operacin se debe realizar y qu
operando se debe usar
(a) Para poner a cero todos los bits en posiciones pares? (Suponga que la posicin de los
bits van de 15 a 0 desde la izquierda a la derecha).
(b) Para cambiar a 1 los 4 bits ms a la izquierda.
(c) Para complementar los 8 bits centrales.
7-6. *Partiendo de un operando de 8 bits 01010011, obtenga los valores despus de cada microoperacin de desplazamiento dadas en la Tabla 7-5.
7-7. *Modifique el registro de la Figura 7-11 de forma que opere de acuerdo con la siguiente
tabla de funcionamiento usando las entradas de modo de seleccin S1 y S0.
S1

S0

Operacin del registro

0
0
1
1

0
1
0
1

No cambia
Pone el registro a 0
Desplazamiento hacia abajo
Carga paralelo de datos

7-8. *Un contador en anillo es un registro, como el de la Figura 7-9, con la salida serie conectada a la entrada serie.
(a) Partiendo de un estado inicial 1000, indique la secuencia de cada estado de los cuatro
flip-flops en cada desplazamiento.
(b) Comenzando en el estado 10.0 cuntos estados hay en la secuencia de un contador
en anillo de n bits?
7-9. Un Contador Johnson usa la salida serie complementada de un registro de desplazamiento
como entrada serie.
(a) Partiendo del estado inicial 0000, indique la secuencia de estados despus de cada
desplazamiento hasta que el registro alcanza de nuevo el estado 0000.
(b) Comenzando por el estado 00.0 Cuntos estados hay en la secuencia de n bit del
Contador Johnson?
7-10. Cuntos valores de los flip-flops de un contador asncrono de 8 bits se complementan al
alcanzar el valor de cuenta siguiente a
(a) 11101111?
(b) 01111111?
7-11. !Para la familia lgica CMOS, el consumo de potencia es proporcional al nmero total
de transiciones de 1 a 0 y 0 a 1 de todas las entradas y salidas de las puertas del circuito.
Cuando se disea un contador de muy bajo consumo, los contadores asncronos se prefieren frente a los sncronos. Cuente cuidadosamente el nmero de cambios en las salidas y
las entradas, incluidas las debidas al reloj, para un ciclo completo de valores de un contador asncrono de 4 bits frente a un contador sncrono de la misma longitud. Basndose en

REGISTROS Y TRANSFERENCIAS DE REGISTROS

337

este examen, explique por qu el contador asncrono es superior en trminos de consumo


de potencia.
7-12. Construya un contador serie-paralelo de 16 bits, usando cuatro contadores de 4 bits. Suponga que toda la lgica empleada son puertas AND y que los cuatro contadores se conectan en serie. Cul es el nmero mximo de puertas encadenadas por las que una seal
se debe propagar a travs del contador de 16 bits?
7-13. !Se desea disear un contador sncrono paralelo de 64 bits.
(a) Dibuje el diagrama lgico de un contador paralelo de 64 bits usando bloques contadores de 8 bits y 2 niveles de conexiones de puertas en paralelo entre los bloques. En
estos bloques, CO no depende de EN.
(b) Cul es la relacin entre la frecuencia de este contador y la del contador serie-paralelo de 64 bits? Suponga que el tiempo de propagacin de un flip-flop tipo D es el
doble que el de una puerta AND y que el tiempo de set-up es igual al retardo de una
puerta AND.
7-14. Uniendo el contador binario de la Figura 7-13 y una puerta AND, construya un contador
que cuente de 0000 hasta 1010. Reptalo para una cuenta de 0000 hasta 1010. Reptalo
para una cuenta de 0000 a 1110. Minimice el nmero de entradas de la puerta AND.
7-15. Usando dos contadores binarios del tipo mostrado en la Figura 7-13 y puertas lgicas,
construya un contador binario que cuente desde 9 hasta 129 en decimal. Aada una entrada al contador que inicialice sncronamente a 9 cuando la seal INIT es 1.
7-16. *Verifique las ecuaciones de entrada de los flip-flops de un contador sncrono BCD especificadas en la Tabla 7-9. Dibuje el diagrama lgico de un contador BCD con entrada de
habilitacin.
7-17. *Use flip-flops tipo D y puertas para disear un contador binario con la siguiente secuencia:
(a) 0, 1, 2
(b) 0, 1, 2, 3, 4, 5
7-18. Utilice flip-flops tipo D y puertas para disear un contador con la siguiente secuencia binaria: 0, 1, 3, 2, 4, 6.
7-19. Use solamente flip-flops tipo D para disear un contador que repita la secuencia binaria:
0, 1, 2, 4, 8.
7-20. Dibuje el diagrama lgico de un registro de 4 bits con entrada de modo de seleccin S1 y
S0. El registro debe operar de acuerdo con la siguiente tabla de funcionamiento:
S1

S0

Operacin del registro

0
0
1
1

0
1
0
1

No cambia
Pone el registro a 0
Desplazamiento hacia abajo
Carga paralelo de datos

7-21. *Muestre el diagrama hardware que permite la siguiente sentencia de transferencia de


registros:
C3 : R2 p R1, R1 p R2

338

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

7-22. Las salidas de los registros R0, R1, R2 y R3 se conectan mediante un multiplexor de 4 a
1 a las entradas del registro R4. Cada registro es de 8 bits. Las transferencias pedidas,
segn indican las variables de control, son:
C0 : R4 p R0
C1 : R4 p R1
C2 : R4 p R2
C3 : R4 p R3
Las variables de control se excluyen mutuamente (es decir, slo una variable puede ser
1 en cualquier instante de tiempo) mientras que las otras tres restantes son iguales a 0.
Adems, no se realiza ninguna transferencia si todas las seales de control son iguales a 0.
(a) Usando registros y multiplexores, dibuje un diagrama lgico detallado del hardware
que permite la transferencia de un solo bit entre estos registros.
(b) Dibuje el diagrama lgico de una lgica sencilla para que, a partir de las variables
de control, se gobiernen las dos variables del multiplexor y las seales de carga de
los registros.
7-23. *Usando dos registros de 4 bits, R1 y R2, puertas AND, OR e inversores, dibuje un diagrama lgico para un solo bit que permita ejecutar las siguientes sentencias:
C0 : R2 p 0

Pone a 0 sncronamente a R2

C1 : R2 p R2

Complemente R2

C2 : R2 p R1

Transfiera R1 a R2

Las variables de control se excluyen mutuamente (es decir, slo una variable puede ser
1 en cualquier instante de tiempo) mientras que las otras dos restantes son iguales a 0.
Adems, no se realiza ninguna transferencia a R2 si todas las variables de control son
iguales a 0.
7-24. Se quiere disear una clula bsica de un registro para formar un registro de 8 bits, A,
que permita realizar las siguientes funciones de transferencia de registros:
C0 : A p A p B
C1 : A p A o B1
7-25. Se quiere disear una clula bsica de un registro para formar un registro de 8 bits, R0,
que permita realizar las siguientes funciones de transferencia de registros:
S1 S0 : R0 p 0
S1 S0 : R0 p R0 o R1
S1 S0 : R0 p R0 S R1
S1 S0 : R0 p R0 p R1
Encuentre la mejor lgica usando puertas AND, OR e inversores para las entradas D del
flip-flop tipo D de la clula.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

339

7-26. Se quiere disear una clula bsica de un registro B, que permita realizar las siguientes
transferencias de registros:
S1 : B p B ! A
S0 : B p B ! 1
Comparta la lgica combinacional entre los dos registros tanto como le sea posible.
7-27. Se disea una lgica para realizar transferencias entre tres registros R0, R1 y R2. Las
variables de control son las dadas en el Problema 7-2. Las transferencias entre registros
son las siguientes:
CA : R1 p R0
CB : R0 p R1, R2 p R0
CC : R1 p R2, R0 p R2
Empleando registros y multiplexores dedicados, dibuje el diagrama lgico detallado del
hardware, para un bit, que permita estas transferencias de registros.
Dibuje el diagrama lgico que convierte las variables de control CA, CB y CC en entradas de seleccin de los multiplexores, SELECT, y seales de carga, LOAD, para los
registros.
7-28. *Se dan dos sentencias de transferencia de registros (de lo contrario, R1 permanece sin
cambiar):
C1 : R1 p R1 ! R2

Suma R2 a R1

C1 1C2 : R1 p R1 ! 1

Incrementa R1

(a) Usando un contador de 4 bits con carga en paralelo, como el de la Figura 7-1, y un
sumador de 4 bits, como el de la Figura 5-5, dibuje el diagrama lgico que ejecuta
estas transferencias de registros.
(b) Repita el apartado (a) usando un sumador de 4 bits como el de la Figura 5-5 ms las
puertas que considere necesarias. Comprelo con lo obtenido en el apartado (a).
7-29. Repita el Problema 7-27 utilizando un bus basado en multiplexores y una conexin directa de un registro a otro en lugar de multiplexores dedicados.
7-30. Dibuje el diagrama lgico de un circuito similar al que se muestra en la Figura 7-7 pero
usando buffers tri-estado y un decodificador en lugar de multiplexores.
7-31. *Un sistema tiene el siguiente conjunto de transferencia de registros y se disea empleando buses:
Ca : R0 p R1
Cb : R3 p R1, R1 p R4, R4 p R0
Cc : R2 p R3, R0 p R2
Cd : R2 p R4, R4 p R2
(a) Para cada registro destino, enumere todos los registros fuentes.
(b) Para cada registro fuente, enumere todos los registros destino.

340

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

(c) Considerando que cada una de las transferencias debe ocurrir simultneamente cul
es el nmero mnimo de buses que se deben usar para realizar el conjunto de transferencias dadas? Suponga que a cada registro le llega un solo bus a su entrada.
(d) Dibuje un diagrama de bloques del sistema que muestre los registros y buses y las
conexiones entre ellos.
7-32. Las siguientes transferencias de registro deben ejecutarse en un mximo de dos ciclos de
reloj:
R0 p R1

R8 p R3

R2 p R1

R9 p R4

R4 p R2

R10 p R4

R6 p R3

R11 p R1

(a) Cul es el nmero mnimo de buses necesarios? Suponga que a la entrada de un


registro slo puede llegar un bus y que cualquier red conectada a un registro se contabiliza como un bus.
(b) Dibuje un diagrama lgico que conecte registros y multiplexores para realizar dichas transferencias.
7-33. Cul es el mnimo nmero de ciclos de reloj necesarios para realizar el siguiente conjunto de transferencia de registros usando 2 buses?
R0 p R1

R7 p R1

R2 p R3

R8 p R4

R5 p R6

R9 p R3

Suponga que slo un bus puede conectarse a la entrada de un registro y que cualquier
red conectada a un registro se contabiliza como un bus.
7-34. *El contenido de un registro de 4 bits es 0000 inicialmente. El registro se desplaza 8
veces a la derecha con la siguiente secuencia en la entrada serie. El bit ms a la izquierda es el que entra primero. Cul es el contenido del registro despus de cada desplazamiento?
7-35. El sumador serie de la Figura 7-22 utiliza 2 registros de 4 bits. El registro A contiene el
nmero binario 0111 y el registro B contiene 0101. El flip-flop de acarreo est inicialmente a 0. Enumere los valores del registro A y del flip-flop de acarreo para cada cuatro
desplazamientos.
Todos los ficheros a los que se hace referencia en los siguientes problemas estn disponibles en
formato ASCII para su simulacin y edicin en la siguiente direccin de Internet: http://
www.librosite.net/Mano. Es necesario disponer de un compilador/simulador de VHDL o Verilog para la simulacin de los problemas o parte de ellos. Los modelos se pueden describir, pero
con dificultad, si no se dispone de estas herramientas de compilacin o simulacin.
7-36. *Escriba una descripcin de comportamiento en VHDL del registro de 4 bits de la Figura 7-1(a). Compile y simule su descripcin para comprobar su correccin.
7-37. Repita el Problema 7-36 para modelar el registro de 4 bits con carga paralelo de la Figura 7-2.

REGISTROS Y TRANSFERENCIAS DE REGISTROS

341

7-38. Escriba una descripcin en VHDL para el contador binario de 4 bits de la Figura 7-13
usando un registro con flip-flops tipo D y las ecuaciones booleanas de la lgica. Compile y simule su descripcin para comprobar su correccin.
7-39. *Escriba una descripcin de comportamiento en Verilog del contador de 4 bits de la Figura 7-1(a). Compile y simule su descripcin para comprobar su correccin.
7-40. Repita el Problema 5-39 del registro de 4 bits con carga paralelo de la Figura 7-2.
7-41. Escriba una descripcin en Verilog del contador binario de 4 bits de la Figura 7-13
usando registros de 4 bits y las ecuaciones booleanas de la lgica. Compile y simule su
descripcin para comprobar su correccin.

CAPTULO

8
SECUENCIAMIENTO Y CONTROL

n el Captulo 7 introducimos el concepto de ruta de datos para el procesado de


datos y el diseo de rutas de datos usando registros y transferencias de registros. En este captulo nos centraremos en la unidad de control, que tambin se
present en el Captulo 7. Los sistemas digitales se pueden clasificar en programables o no programables dependiendo del tipo de unidad de control. Un sistema no
programable tiene entradas pero no tiene un mecanismo para la ejecucin de programas. Los sistemas programables son capaces de ejecutar programas. En este captulo nos centraremos en los sistemas no programados usando como ejemplo un multiplicador. El estudio de los sistemas programables comenzar en el Captulo 10.
El algoritmo de mquina de estados (en ingls the algorithmic state machine
(ASM)) es una versin ms amigable de los diagramas de estado de los circuitos secuenciales que proporciona una representacin del comportamiento de la unidad de
control, as como de las transferencias controladas entre registros. Usando las transferencias de registros en ASM se puede representar el comportamiento combinado
de una unidad de control y una ruta de datos.
En este captulo, la unidad de control representada mediante ASM se lleva a cabo
usando control cableado. Entre las tcnicas empleadas para diseo de control cableado, vamos a considerar dos mtodos que simplifican el diseo de unidades de control
grandes, si los comparamos con el mtodo de diseo de circuitos secuenciales bsicos vistos en el Captulo 6. El diseo de unidades de control usando control microprogramado se tocar muy brevemente.
Los principales temas de este captulo son los algoritmos de mquinas de estado,
control cableado y representacin de algoritmos de mquinas de estados usando
HDLs. Como estas tcnicas de diseo son bastante generales, van a tener impacto
en la mayora de las partes de la computadora genrica presentada a principios del
Captulo 1. Puesto que la CPU y la FPU del procesador contienen importantes controles para la activacin y secuenciacin de las operaciones de transferencia de registros, el material que se presenta en este captulo se va a aplicar en el diseo de dicho
procesador

344

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

8-1 LA UNIDAD DE CONTROL


La informacin almacenada en un procesador digital se puede clasificar en datos y en informacin de control. Como vimos en anteriores captulos, los datos se manipulan en una ruta de datos usando microoperaciones llevadas a cabo mediante transferencias de registros. Estas operaciones se realizan con sumadores-restador, registros de desplazamiento, multiplexores y buses.
La unidad de control proporciona seales que activan las microoperaciones de la ruta de datos
para llevar a cabo tareas concretas. La unidad de control tambin determina la secuencia en la
que se realizan las diversas operaciones. El diseo de un sistema digital se trata, en general,
dividindolo en dos partes bien diferenciadas, los registros y sus transferencias, tema cubierto
en el Captulo 7, y la unidad de control, que se trata en este captulo.
Generalmente, la temporizacin de todos los registros en un sistema digital sncrono se controla mediante un reloj maestro. Los pulsos de reloj se aplican a todos los flip-flops y registros
del sistema, incluyendo los de la unidad de control. Para evitar que cambie el contenido de los
registros en cada pulso de reloj, algunos de ellos llevan una seal de control de carga que habilita o deshabilita la carga de un nuevo dato en dichos registros. Las variables binarias que controlan las entradas de seleccin de los multiplexores, los buses, la lgica de procesamiento y
las entradas de control de carga de los registros se generan, por lo general, en la unidad de
control.
La unidad de control, que genera las seales para la secuenciacin de las microoperaciones,
es un circuito secuencial cuyos estados gobiernan las seales de control del sistema. En cualquier instante, el estado actual de un circuito secuencial activa un determinado conjunto de microoperaciones ya previsto de antemano. Usando las condiciones de estado y las entradas de
control, la unidad de control determina su prximo estado. El circuito digital que acta como
controlador proporciona una secuencia de seales para la activacin de las microoperaciones y,
a su vez, determina su siguiente estado.
En el diseo global de un sistema, podemos distinguir dos tipos distintos de unidades de
control en los sistemas digitales: para sistemas programables y para sistemas no programables.
En un sistema programable, parte de la entrada al procesador est formada por una secuencia de instrucciones. Cada instruccin especifica la operacin que el sistema va a ejecutar, qu
operandos usar, dnde colocar los resultados de la operacin y, en algunos casos, cul va a ser
la siguiente instruccin que se va a ejecutar. En los sistemas programables se suelen almacenar
las instrucciones en una memoria, RAM o ROM. Para ejecutar una secuencia de instrucciones
es necesario proporcionar la direccin de memoria que va a ser ejecutada. Esta direccin parte
de un registro llamado contador de programa, PC, (del ingls program counter). Como su propio nombre indica, el PC posee una lgica que permite su cuenta. Adems, para cambiar la
secuencia de operaciones, basndose en la informacin del estado de la ruta de datos, el PC
necesita tener la posibilidad de realizar una carga en paralelo. As, en el caso de un sistema
programable, la unidad de control contiene un PC con lgica de control as como lgica para
interpretar la instruccin. Ejecutar una instruccin significa la activacin de la secuencia de microoperaciones necesarias en una determinada ruta de datos para desarrollar la operacin especificada por la instruccin.
En un sistema no programable, la unidad de control no es responsable de obtener instrucciones de la memoria ni es responsable de la secuencia de ejecucin de estas instrucciones. No hay
PC ni registro similar en un sistema as. En cambio, la unidad de control determina las operaciones a ejecutar y la secuencia de dichas operaciones, basndose en la informacin de sus entradas y los bits de estado de la ruta de datos.

SECUENCIAMIENTO Y CONTROL

345

Este captulo se centra en el diseo de sistemas no programables. Para su ilustracin se emplea el algoritmo de mquinas de estados (ASM) para el diseo de la unidad de control, adems
de tcnicas especiales para diseo de ASMs. Los sistemas programables se tratan en los Captulos 10 y 12.

8-2 ALGORITMO DE MQUINAS DE ESTADOS


Una tarea de procesamiento se puede definir mediante unas microoperaciones de transferencia
de registros controladas por un mecanismo de secuenciacin. Tal tarea se puede especificar como un algoritmo hardware consistente en un nmero finito de procedimientos que realizan dicha tarea de procesamiento. La parte ms estimulante y creativa del diseo digital es el planteamiento de algoritmos hardware que lleven a conseguir los objetivos requeridos. Un algoritmo
hardware se puede usar como base para disear la ruta de datos y la unidad de control de un
sistema.
Una forma recomendable de especificar los pasos de un procedimiento y los caminos de
decisin de un algoritmo es un diagrama de flujo. Un diagrama de flujo para un algoritmo hardware debe tener unas caractersticas especiales que liguen de cerca el desarrollo hardware de un
algoritmo determinado. Para ello usamos un diagrama de flujo llamado algoritmo de mquinas
de estado (ASM) para definir algoritmos para hardware digital. Por tanto, una mquina de estados es otro trmino para designar a un circuito secuencial.
El diagrama ASM se asemeja a un diagrama de flujo convencional pero se interpreta de diferente forma. Un diagrama de flujo convencional describe los pasos del procedimiento sin establecer una relacin temporal. Por contra, un diagrama ASM proporciona, no slo la secuencia
de eventos, sino que adems describe la relacin temporal entre estados de la unidad de control
y la acciones de la ruta de datos que ocurren en los estados como respuesta a los pulsos de reloj.

Diagrama ASM
El diagrama ASM contiene tres elementos bsicos: la caja de estado, la caja de decisin escalar
y la caja de salida condicional, como se ilustra en la Figura 8-1. Por conveniencia, se ha aadido un cuarto elemento, la caja de decisin vectorial. Este componente adicional simplifica la
representacin de caminos de decisin mltiples y establece una correspondencia entre las representaciones HDLs y los diagramas ASM.
Un estado en la secuencia de control se indica mediante una caja de estado, como se muestra en la Figura 8-1(a). La caja de estado es un rectngulo que contiene una operacin de transferencia de registro o seales de salida que se activan cuando la unidad de control est en un
determinado estado. Implcitamente, la activacin de una seal de salida indica la asignacin de
un 1 a dicha seal. El nombre simblico del estado se coloca en la esquina superior izquierda de
la caja y el cdigo binario del estado, si se le ha asignado, se coloca en la esquina superior
derecha de la caja.
La Figura 8-1(b) muestra un ejemplo concreto de una caja de estado. El estado tiene el nombre simblico IDLE y el cdigo binario asignado es el 000. Dentro de la caja est la transferencia de registro R p 0 y la salida RUN. La transferencia de registro indica la puesta a 0 del registro R en cualquier pulso de reloj que ocurra cuando el control est en el estado IDLE. RUN
indica que la seal de salida es 1 durante el tiempo en que el control est en el estado IDLE.
RUN es 1 para cualquier caja de estado en la que aparezca y es 0 para cualquier caja de estado
en la que no aparezca.

346

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Entrada

Entrada
Cdigo
binario
Estado

IDLE

Entrada
000

R 0
RUN

Operacin
de registro o salida

Condicin
de 1 bit

Salida 0
Salida

Salida

(a) Caja de estado

(b) Ejemplo de caja de estado

Salida 1

(c) Caja de decisin escalar


Entrada

Entrada

Operacin
de registro o salida

Salida 0
Salida 1

...

Condicin
de n bits

...
Salida 2n 1

Salida
(d) Caja de salida condicional

(e) Caja de decisin vectorial

FIGURA 8-1
Elementos del diagrama ASM

La caja de decisin escalar describe el efecto de una entrada en el control. Tiene la forma
de un rombo con dos caminos de salida, como se muestra en la Figura 8-1(c). La condicin de
entrada es una variable binaria de entrada o una expresin booleana que depende solamente de
las entradas. Un camino de los dos existentes se toma si la condicin de entrada es verdadera
(1) y el otro se toma si la condicin de entrada es falsa (0).
El tercer elemento, la caja de salida condicional es exclusiva del diagrama ASM. La forma
ovalada de la caja se muestra en la Figura 8-1(d). Las esquinas redondeadas la diferencian de la
caja de estados. El camino de entrada a una caja de salida condicional, procedente de una caja
de estado, debe pasar a travs de una o ms cajas de decisin. Si la condicin especificada en el
camino, a travs de las cajas de decisin que conducen de una caja de estado a una caja de
salida condicional, se cumple, se activan las transferencias de registros o salidas enumeradas
dentro de la caja de salida condicional.
La caja de decisin vectorial, mostrada en la Figura 8-1(e), describe el efecto de un vector
de entradas en el control. Su forma hexagonal tiene un mximo de 2n caminos posibles para un
vector binario de n elementos. La entrada condicional es un vector de n b 1 variables binarias
de entrada o expresiones booleanas que dependen slo de las entradas. Si el valor del vector
coincide con la etiqueta correspondiente a uno de los caminos existentes, se selecciona dicho
camino.
Un bloque ASM consiste en una caja de estados y todas las cajas de decisin y de salida
condicionales conectadas entre la salida de la caja de estado y los caminos de entrada a la misma caja de estado u otra caja de estado. Un ejemplo de un bloque ASM se muestra en la Figura 8-2. El bloque representa decisiones y acciones de salida que pueden llevarse a cabo en dicho
estado. Cualquier salida, para la que se satisfacen las condiciones del bloque ASM, se activa en
dicho bloque. Cualquier transferencia de registro para la que se satisfacen las condiciones dentro
del bloque ASM ser ejecutada cuando ocurra un evento de reloj. Este mismo evento de reloj
transferir el control al siguiente estado, como se especifica en las decisiones pertenecientes al

SECUENCIAMIENTO Y CONTROL

IDLE

Entrada

347

BLOQUE ASM

AVAIL

Salida

START

Q(1:0)
00

01

11 Salidas

10

MUL0

MUL3

MUL1

MUL2

FIGURA 8-2
Bloque ASM

bloque ASM. El estado del bloque de la Figura 8-2 es IDLE. Durante el estado IDLE la salida
AVAIL es 1. Si START es 1 con el flanco activo de reloj, A se pone a 0 y, dependiendo de los
valores del vector Q(1:0), el siguiente estado ser MUL0, MUL1, MUL2 o MUL3. En la figura,
el camino de entrada y los cinco caminos de salida del bloque ASM se etiquetan en el contorno
de dicho bloque.
El diagrama ASM es una forma real de diagrama de estados para parte del circuito secuencial de la unidad de control. Cada caja de estados es equivalente a un nodo del diagrama de
estados. Las cajas de decisin son equivalentes a los valores de entrada en las lneas que conectan a los nodos del diagrama. La transferencia de registros, las salidas de las cajas de estado y
las cajas de salida condicionales se corresponden a la salida de un circuito secuencial. Las salidas de una caja de estado son las que deberan estar especificadas para el estado de un diagrama
de estados de una mquina de De Moore. Las salidas de una caja de salida condicional se corresponden con los valores de las entradas en las lneas que conectan a los estados en un diagrama de estados. Esta dependencia de las entradas se correspondera con una Mquina de estados
de Mealy. Si todas las dependencias en un ASM se corresponde con las dependencias de tipo
Moore (esto es, si no hay cajas de salidas condicionales), el ASM es una mquina de De Moore.
Si hay una o ms cajas condicionales con dependencia tipo Mealy, el ASM es de tipo Mealy.

Consideraciones temporales
Para clarificar las consideraciones temporales de un ASM, usamos el ejemplo del bloque ASM
de la Figura 8-2. En la Figura 8-3 se ilustra la temporizacin de los eventos relacionados con el

348

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Ciclo de reloj 1

Ciclo de reloj 2

Ciclo de reloj 3

Clock
START
Q1
Q0
Estado

IDLE

MUL 1

0034

0000

AVAIL
A

FIGURA 8-3
Comportamiento temporal en un diagrama ASM

estado IDLE. Para considerar esta temporizacin de eventos, resaltamos que slo usamos flipflops disparados con el flanco de subida. Durante el primer ciclo de reloj, ciclo 1, la unidad de
control est en el estado IDLE y la salida AVAIL es 1 y la entrada START es 0. Basndonos en
el bloque ASM, cuando llega el flanco de subida del reloj, el estado permanece en IDLE y
AVAIL sigue siendo 1. Adems, el contenido del registro A permanece sin cambiar. En el ciclo
2, START es 1. As, cuando llega el flanco de reloj, el registro A se pone a 0. Con START a 1,
se evala Q(1:0) y se encuentra que es 01. Para este valor, cuando ocurre el flanco de reloj, el
siguiente estado pasa a ser MUL1. El nuevo estado MUL1 y el nuevo valor de A aparecen al
comienzo de ciclo de reloj 3. El valor de AVAIL pasa a ser 0 puesto que AVAIL no aparece en
la caja de estado de MUL1. Vase que la salida AVAIL % 1 aparece concurrentemente con la
presencia del estado IDLE pero el resultado de la transferencia del registro A aparece concurrentemente con el siguiente estado MUL1. Esto es as porque las salidas cambian asncronamente en respuesta al estado y al valor de las entradas pero, tanto las transferencias de registro y
los cambios de estados, esperan al siguiente flanco de subida del reloj.

8-3 EJEMPLOS DE DIAGRAMAS ASM


Se usa un multiplicador binario para ilustrar una propuesta de diagrama ASM. El multiplicador
multiplica 2 nmeros enteros de n bits sin signo y dan como resultado un entero de 2n bits.

Multiplicador binario
En este ejemplo presentamos un algoritmo hardware para la multiplicacin binaria, proponiendo
una sencilla ruta de datos y una unidad de control y, posteriormente, describimos sus transferencias de registros y su control mediante el uso de un diagrama ASM. El sistema que se ilustra
multiplica dos nmeros binarios sin signo. En la Seccin 5-5 se present un algoritmo hardware
para realizar la multiplicacin de forma combinacional, sin elementos de memoria, que utilizaba
varios sumadores y puertas AND. Por contra, el algoritmo hardware que se describe ahora, es

SECUENCIAMIENTO Y CONTROL

349

un circuito combinacional que slo usa un sumador y un registro de desplazamiento. Aqu se


ilustra el algoritmo, se propone una estructura de transferencia de registros y se formula un diagrama ASM.
ALGORITMO DE LA MULTIPLICACIN La multiplicacin de dos nmeros binarios sin signo, realizada a mano en papel, se lleva a cabo mediante desplazamientos sucesivos del multiplicando a
la izquierda y una suma. El proceso se describe mejor utilizando un ejemplo. Vamos a multiplicar 2 nmeros binarios: 10111 y 10011, como se muestra en la Figura 8-4. Para realizar la
multiplicacin, observaremos sucesivamente los bits del multiplicador empezando por el menos
significativo. Si el bit del multiplicador es 1, el multiplicando se copia para sumarlo a continuacin. Si es 0, se copian tantos ceros como bits tenga el multiplicando. Los nmeros copiados en
las lneas siguientes se desplazan una posicin a la izquierda, con respecto del nmero anteriormente copiado, para alinearlos con el bit correspondiente del multiplicador que est siendo procesado. Vase que el producto obtenido de multiplicar dos nmeros binarios de n bit puede llegar a tener un mximo de 2n bits, siendo n n 2.
Si se lleva a cabo este procedimiento para multiplicar en hardware digital, es conveniente
realizar unos ligeros cambios. Primero, en lugar de utilizar un circuito digital que sume n nmeros binarios simultneamente, se utilizar un circuito que sume dos nmeros, lo cual es menos
costoso. Cada vez que se copia el multiplicando o ceros, estos se sumarn inmediatamente al
producto parcial. Este producto parcial se almacenar en un registro y quedar preparado para
desplazarse a continuacin. Segundo, en lugar de desplazar las copias del multiplicando a la
izquierda, se desplazar el producto parcial a la derecha. Esto dejar al producto parcial y la
copia del multiplicando en la misma posicin relativa con el desplazamiento a la izquierda que
se hizo del multiplicando. Adems, y ms importante, en lugar de utilizar un sumador de 2n
bits, se usar un sumador de n bits. La suma se realizar siempre con las mismas n posiciones,
en lugar de moverla un bit a la izquierda cada vez. Tercero, si el bit correspondiente al multiplicador es 0, no se necesitar sumar ceros al producto parcial puesto que esto no altera el valor
resultante.
En la Figura 8-5 se repite este ejemplo de multiplicacin con estos cambios. Vase que el
producto parcial inicial es 0. Cada vez que el bit en proceso del multiplicador es 1 se lleva a
cabo una suma con el multiplicando seguida de un desplazamiento a la derecha. Cada vez que
el bit del multiplicador es 0 slo se realiza un desplazamiento a la derecha. Una de estas dos
acciones se realiza por cada bit del multiplicador, es este caso, se ejecutan cinco acciones. En
azul se indica la aparicin de un acarreo durante una de las sumas. Este acarreo no es un problema, sin embargo, el desplazamiento a la derecha que sigue lleva esta informacin adicional al
bit de mayor peso del producto parcial.
23

10111

Multiplicando

19

10011

Multiplicador

10111
10111
00000
00000
10111
437

110110101

Producto

FIGURA 8-4
Ejemplo de multiplicacin a mano

350

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Vase que ocurre un overflow temporalmente

FIGURA 8-5
Ejemplo de una multiplicacin hardware

DIAGRAMA DE BLOQUES DEL MULTIPLICADOR En la Figura 8-6 se muestra el diagrama de bloques del multiplicador binario. La ruta de datos del multiplicador se construye, en un principio,
con componentes vistos en captulos anteriores. Todos, excepto el contador P, se han ampliado
a n bits: el contador necesita log2 n bits para llevar la cuenta del proceso del multiplicador
(x es el nmero entero ms pequeo y mayor o igual que x). Usaremos el sumador en paralelo
de la Figura 5-5, un registro con carga en paralelo, B, similar al de la Figura 7-2, y dos registros
de desplazamiento con carga en paralelo, A y Q, similares a los de la Figura 7-11. El contador P
es una versin del contador con carga en paralelo de la Figura 7-14, con cuenta descendente en
lugar de ascendente, y C es un flip-flop con reset y carga sncronos para almacenar Cout. Los
componentes de esta ruta de datos se muestran en la Figura 8-6.
El multiplicando se carga en el registro B procedente de la entrada IN, el multiplicador se
carga en el registro Q, que tambin viene por la entrada IN, y el producto parcial se forma en el
registro A y se almacena en A y Q. Este doble uso de registro Q es posible porque usamos un
registro de desplazamiento para el multiplicador Q y examinar sucesivamente cada bit del multiplicador que aparezca en Q0. El desplazamiento a la derecha vaca el bit ms significativo del
registro Q. Este espacio liberado acepta al bit menos significativo del producto parcial de A
segn se desplaza. El sumador binario de n bits se usa para sumar B a A. El flip-flop C almacena el acarreo de la suma, Cout, ya sea 0 o 1, y se pone a cero durante el desplazamiento a la
derecha. Para contar el nmero de operaciones suma-desplazamiento que tienen lugar, se utiliza
el contador P. Inicialmente tiene el valor n . 1 y cuenta descendentemente despus de obtenerse cada producto parcial. El valor de P se comprueba justo antes de su decremento. De esta
forma, se realizan n operaciones, una para cada valor de P, desde n . 1 hasta 0. Cada operacin
es una suma y desplazamiento o slo un desplazamiento. Cuando P alcanza el valor 0, el producto final est ya colocado en el doble registro A y Q y se termina el proceso.
La unidad de control permanece en un estado inicial hasta que la seal Inicio, G, cambia
a 1. Entonces el sistema comienza la multiplicacin. La suma de A y B forma los n bits ms
significativos del producto parcial que se transfiere de nuevo a A. La salida Cout de la suma se
transfiere a C. Tanto el producto parcial y el multiplicador almacenado en A y Q se desplazan a

SECUENCIAMIENTO Y CONTROL

351

IN
n
Multiplicando

n1

Contador P

Registro B
n

log2 n
Detecta cero
G (Go)

Cout

Z
Unidad
de control

Sumador en paralelo

n
Multiplicador

Q0
0

Registro de
desplazamiento A

Registro de
desplazamiento Q

Seales de control

Producto
OUT

FIGURA 8-6
Diagrama de bloques para un multiplicador binario

la derecha. El acarreo en C se desplaza al bit ms significativo de A, el bit menos significativo de


A se desplaza al bit ms significativo de Q, y se descarta el bit menos significativo de Q. Despus
de esta operacin de desplazamiento a la derecha, se ha transferido a Q un bit adicional del producto parcial, y los bits del multiplicador se han desplazado una posicin a la derecha, de esta
forma, el bit menos significativo de Q, Q0, contiene siempre el bit del multiplicador que la unidad
de control examina a continuacin. La unidad de control decide si sumar, basndose en el valor
de este bit. Tambin examina la seal Z, que es 1 si P es igual a cero y 0 si P es distinto de cero,
para determinar si se ha terminado la multiplicacin. Q0 y Z son entradas del estado (status) para
la unidad de control y la entrada G es la nica entrada de control externa. Las seales de control
de la unidad de control a la ruta de datos activan las microoperaciones necesarias.
DIAGRAMA ASM DEL MULTIPLICADOR En la Figura 8-7 se muestra la secuencia de operaciones del multiplicador binario mediante un diagrama ASM. Inicialmente, el multiplicando est
en el registro B y el multiplicador en Q. La carga de estos registro no se manipula explcitamente por la unidad de control. Mientras el diagrama est en el estado IDLE y G sea 0, no se
producir ninguna operacin y permanecer en este estado. La multiplicacin comienza cuando
G cambia a 1. Segn el diagrama ASM, para G % 1, se mueve del estado IDLE al estado
MUL0, los registros C y A se ponen a 0 y el contador se carga con el valor n . 1. En el estado
MUL0, se decide en base al valor de Q0, bit menos significativo de Q. Si Q0 es 1, el contenido
de B se suma al de A y el resultado de esta suma se transfiere a A y el acarreo se transfiere a C.
Si Q0 es 0, el registro A y el bit C quedan sin cambiar. En ambos casos el estado futuro es MUL1.
En el estado MUL1 se realiza un desplazamiento a la derecha del contenido de C, A y Q.
Este desplazamiento se puede expresar mediante la siguiente lista de cinco transferencias de registros simultneas:
C p 0, A(n . 1) p C, A p srA, Q(n . 1) p A(0), Q p sr Q

352

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

IDLE

C
P

0, A 0
n1

MUL0

Q0

A
C

AB,
Cout

MUL1
C

0, C || A || Q sr C || A || Q,
P P1

FIGURA 8-7
Diagrama ASM para el multiplicador binario

Para simplificar la representacin de esta operacin, aadimos una notacin de bit usando el
operador 88 para definir un registro compuesto construido a partir de otros registros o partes de
otros registros. Esta operacin, 88, se llama concatenacin. Por ejemplo,
C 88 A 88 Q
representa un registro obtenido a partir de la combinacin de registros C, A y Q, desde el ms
significativo al menos significativo. Podemos usar este registro compuesto para representar el
desplazamiento a la derecha
C 88 A 88 Q p sr C 88 A 88 Q
como se muestra en la Figura 8-7. Recuerde que suponemos que el bit menos significativo del
resultado de un desplazamiento a la derecha toma el valor 0 a no ser que se especifique otra

SECUENCIAMIENTO Y CONTROL

353

cosa, as que C se pone a 0. Esto se representa explcitamente, no obstante, en el diagrama


ASM, ya que C tambin se pone a 0 en otro estado. La lista de operaciones permite que C p 0
se realice usando una seal de control en ambos estados.
El contador P se decrementa en el estado MUL1. El valor de P se comprueba en el estado
MUL1 antes de decrementar P. Esto ilustra una importante diferencia temporal entre un diagrama de flujo estndar y un diagrama ASM. La decisin en Z, que representa que P % 0, sigue a
la sentencia de transferencia de registros que actualiza a P en el diagrama ASM. Puesto que la
decisin sobre P se lleva a cabo asncronamente y la sentencia de transferencia de registros es
sncrona con el siguiente flanco de subida de reloj, la decisin sobre P precede a la actualizacin de P. En el siguiente flanco de reloj, cuando P se actualiza, el resultado de esta actualizacin est disponible para determinar el siguiente estado. En el primer instante n . 1 en el que P
se comprueba, su contenido no es cero, por lo que el bit de status Z permanece a 0 y el bucle
compuesto por los estados MUL0 y MUL1 se ejecuta de nuevo. En el n-simo instante de
tiempo, el contenido de P es cero y, por tanto, Z es 1. Esto indica que la multiplicacin se ha
completado haciendo que el ASM vuelva al estado IDLE. El producto final est disponible en
A 88 Q, donde A contiene los n bits ms significativos y Q los menos significativos del producto. Merece la pena detenerse un momento para revisar el ejemplo de la multiplicacin para
n % 5 de la Figura 8-5, considerando ahora la relacin entre la ruta de datos y el flujo del diagrama ASM.
El tipo de registro seleccionado para la ruta de datos puede realizar las microoperaciones
enumeradas en el diagrama ASM. El registro A es un registro de desplazamiento con carga en
paralelo que guarda el resultado del sumador. Tambin necesita un reset sncrono para poner el
registro a 0. El registro Q es un registro de desplazamiento. El flip-flop C almacena el acarreo
del sumador y necesita ser puesto a 0 sncronamente. El registro B y Q tambin deben permitir
carga en paralelo para cargar el multiplicando y el multiplicador antes de comenzar el proceso
de multiplicacin.
La Figura 8-8 muestra otra versin del diseo del multiplicador que usa una caja de decisin
vectorial en su diagrama ASM. En la parte (a) de la figura, el registro de desplazamiento se ha
sustituido por un desplazador combinacional a la derecha que desplaza un bit en este sentido,
similar al de la Figura 5-13(c), y un registro con habilitacin de carga como el que se muestra
en la Figura 7-2. Esto combina al sumador con un desplazador combinacional a la derecha. Esto
nos permite reducir en un estado al diagrama ASM de la Figura 8-8. Para representar el cambio
en la ruta de datos del multiplicador es necesario escribir una sentencia de transferencia de registros que combine la suma con el desplazamiento. Adems, estos cambios permiten eliminar
el flip-flop C. Suponiendo que el retardo del sumador combinado con el desplazador (el cual
est hecho slo con hilos) no es ms que el del sumador, la reduccin de estados en el bucle de
multiplicacin incrementa la velocidad de operacin de la multiplicacin.
Para ilustrar la caja de decisin vectorial, hemos utilizado la concatenacin para combinar Z
y Q en el vector (Z, Q0), que se indica como Z 88 Q0. La decisin basada en el vector se muestra
en el centro del diagrama ASM de la Figura 8-8(b). Hay cuatro combinaciones posibles de salida. Para la combinacin en la que Z es igual a 1, el siguiente estado es IDLE. Para la combinacin en la que Z % 0, es siguiente estado es MUL. Para la combinacin en la Q0 % 1, la salida
es una suma desplazada a la derecha de los operandos de entrada A y B, y para la combinacin
en la que Q0 % 0, la salida es una suma desplazada a la derecha de los operandos A y 0. Esto se
representa con la transferencia que combina la suma y el desplazamiento en la caja de salida
condicional para las cuatro combinaciones de salida de Z 88 Q0.

354

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

IN
n
Multiplicando

n1

Contador P

Registro B
n

log2 n
Detector de cero
G (Go)

Unidad
de control

Cout

Sumador paralelo
n
Desplazador
a la derecha
n

Z
Qo

n
Multiplicador
Registro de
desplazamiento Q

Registro A

Seales de control
Producto
OUT
(a)
IDLE

G
C
P

0, A 0
n1

MUL
P
A || Q

00
01

A || Q

P1

sr Cout || (A0) || Q

A || Q

Z || Q0

sr Cout || (AB) || Q

sr Cout || (A0) || Q

10
11

A || Q

sr Cout || (AB) || Q

(b)

FIGURA 8-8
Multiplicador binario alternativo

8-4 CONTROL CABLEADO


Al disear la unidad de control deben considerarse dos aspectos distintos: el control de las microoperaciones y la secuenciacin de la unidad de control y las microoperaciones. En pocas palabras, el primero tiene que ver con la parte de control que genera las seales de control, y el

SECUENCIAMIENTO Y CONTROL

355

segundo con la parte de control que determina qu sucede despus. Aqu separaremos estos dos
aspectos dividiendo la especificacin original en dos partes: una tabla que define las seales de
control en trminos de estados y entradas, y un diagrama ASM que solamente representa las
transiciones de un estado a otro. Aunque hemos separado estos dos aspectos pensando en el
diseo, ambos pueden compartir lgica.
Las seales de control se basan en el diagrama ASM. Las seales de control necesarias para
la ruta de datos se enumeran en la Tabla 8-1, donde hemos escogido examinar los registros de la
ruta de datos y clasificar las microoperaciones segn los registros. Basndonos en dicha clasificacin se definen las seales de control. Una de ellas se puede utilizar para activar microoperaciones en ms de un registro. Es este caso es razonable puesto que la ruta de datos se emplea
para una operacin solamente, la multiplicacin. De esta forma, las seales de control no necesitar estar separadas para hacer un sistema verstil que permita aadir otras posibles operaciones. Finalmente, la expresin booleana de cada seal de control se extrae de la ubicacin de las
microoperaciones en el diagrama ASM. Por ejemplo, para el registro A hay tres microoperaciones que se indican en la Tabla 8-1: puesta a 0, suma y carga, y desplazamiento a la derecha.
Como la operacin de puesta a 0 del registro A siempre ocurre en el mismo instante de tiempo
que la puesta a 0 del flip-flop C y la carga del contador P, todas ellas pueden activarse con la
misma seal de control de inicio, llamada Initialize. Aunque C tambin se pone a cero en el
estado MUL1, sin embargo, hemos elegido separar sus seales de control. As, Initialize se usa
para poner a 0 a A y cargar a P. En la ltima columna, para la seal Initialize, est la expresin
booleana para la que Initialize se activa, segn se extrae del diagrama ASM, en funcin del
estado IDLE y la entrada G. Como Initialize se pone a 1 cuando G es 1 en el estado IDLE,
Initialize es el producto lgico de G e IDLE. En este punto, el nombre del estado se trata como
una variable de estado. Dependiendo de cmo se haga, debe haber una seal que represente al
estado o el estado se debe expresar en funcin de variables de estado. La seal de puesta a cero
de C, ClearC, se activa en el estado IDLE cuando G es igual a 1, de la misma forma que en el
TABLA 8-1
Seales de control para el multiplicador binario
Mdulos
del diagrama
de bloques

Microoperaciones

Nombre de
las seales
de control

Expresiones
de control

Registro A:

Ap0
ApA!B
C 88 A 88 Q p sr C 88 A 88 Q

Initialize
Load
Shiftdec

IDLE G
MUL0 Q
MUL1

Registro B

B p IN

LoadB

LOADB

Flip-Flop C:

Cp0
C p Cout

ClearC
Load

IDLE G!MUL1

Registro Q:

Q p IN
C 88 A 88 Q p sr C 88 A 88 Q

LoadQ
Shiftdec

LOADQ

Contador P:

Ppn.1
PpP.1

Initialize
Shiftdec

356

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

estado MUL1. As, se hace el producto lgico de G con IDLE y el resultado se suma (operacin
OR) con MUL1. Las otras dos seales internas de control del multiplicador, Load y ShiftDec,
se definen de forma similar. Las ltimas dos seales, LoadB y LoadQ, cargan el multiplicando y el multiplicador desde fuera del sistema. Estas seales no se considerarn explcitamente
en el resto del diseo.
Eliminando la informacin relativa a las microoperaciones, podemos volver a dibujar el diagrama ASM representando solamente la informacin relativa a la secuenciacin. El diagrama
ASM modificado para el multiplicador binario aparece en la Figura 8-9. Vase que se han eliminado todas las cajas de salidas condicionales. Tambin se han eliminado las cajas de salidas
condicionales que no afectan al siguiente estado, en concreto, en la Figura 8-7, la caja de decisin Q0, que afecta slo a una caja de salida condicional. Una vez que se ha eliminado la caja
de salida condicional, los dos caminos existentes entre la caja de decisin, Q0, van claramente
al mismo estado. Es decir, esta caja de decisin no afecta al siguiente estado y, por tanto, se
elimina.
A partir de diagrama ASM modificado, podemos disear la parte secuencial de la unidad de
control (es decir, la parte que represente el comportamiento del siguiente estado). La divisin
del control en comportamiento del siguiente estado, segn el diagrama ASM modificado, y en
comportamiento de salida, segn la tabla de seales de control, indica como el ASM relaciona
el siguiente estado y la parte de salida del circuito secuencial. La Figura 8-9 se corresponde con
el diagrama de estados de un circuito secuencial sin las salidas especificadas, exceptuando que
la representacin de los estados y las transiciones son distintas. Debido a esta relacin, podemos
tratar el diagrama ASM como un diagrama de estados y crear una tabla para la parte de secuenciacin de la unidad de control. Posteriormente, la unidad de control se puede disear mediante
IDLE

00

MUL0

01

MUL1

10

FIGURA 8-9
Diagrama ASM para la parte de secuenciacin del multiplicador binario

SECUENCIAMIENTO Y CONTROL

357

mtodos de diseo lgico secuencial, como se plante en el Captulo 4. Sin embargo, en muchos casos, es difcil llevar a cabo este mtodo debido al gran nmero de estados que tpicamente tiene una unidad de control. Como consecuencia, usaremos mtodos especficos para el
diseo de unidades de control, que son variaciones de los mtodos clsicos de diseo secuencial. Presentamos e ilustramos a continuacin dos de estos mtodos de diseo.

Registro de secuencia y decodificador


El mtodo de registro de secuencia y decodificador, como su nombre indica, usa un registro de
secuencia para el control de estados y un decodificador que proporciona una seal de salida que
se corresponde con cada estado. Un registro con n flip-flops puede tener hasta 2n estados y un
decodificador n a 2n tiene un mximo de 2n salidas, una para cada uno de los estados. Un registro de secuencia es, esencialmente, n flip-flops juntos con puertas asociadas que afectan a las
transiciones entre sus estados. Puede ser necesario aadir lgica para el control de las seales de
salida.
La parte secuencial de un diagrama ASM para el multiplicador binario tiene tres estados y
dos entradas. Para realizar el diagrama ASM con un registro de secuencia y decodificador hacen
falta dos flip-flops para el registro y un decodificador de 2 a 4 lneas. Al tener tres estados,
solamente se usan tres de la cuatro salidas del decodificador. Aunque este es un ejemplo sencillo, el procedimiento planteado tambin se aplica en situaciones ms complejas.
La tabla de estados para la parte de secuenciacin de la unidad de control se muestra en la
Tabla 8-2. Llamaremos a los dos flip-flops como M1 y M0 y asignaremos los estados binarios
00, 01 y 10 a IDLE, MUL0 y MUL1, respectivamente. Vase que las columnas de las entradas
tiene entradas sin especificar (#) siempre que una variable de entrada no se use para determinar el siguiente estado. Las salidas de la parte de secuenciamiento del control se denominan
mediante el nombre de los estados. El cdigo binario para el estado actual determina la variable
de salida que es igual a 1 en un instante dado. De esta forma, cuando el estado actual es
M1M0 % 00, la salida IDLE es igual a 1 mientras que el resto de las salidas son iguales a 0.
Como las salidas dependen slo del estado actual, se pueden generar con un decodificador de 2
a 4 lneas, que tiene como entradas M1 y M0 y como salidas IDLE, MUL0 y MUL1.
TABLA 8-2
Tabla de estados para el registro de secuencia y el decodificador de la unidad
de control del multiplicador
Estado actual

Entradas

Estado futuro

Salidas del decodificador

Nombre

M1

M0

M1

M0

IDLE

MUL0

MUL1

IDLE

0
0

0
0

0
1

#
#

0
0

0
1

1
1

0
0

0
0

MUL0

MUL1

1
1

0
0

#
#

0
1

0
0

1
0

0
0

0
0

1
1

358

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Como se mencion anteriormente, el circuito secuencial se puede disear a partir de la tabla


de estados usando el mtodo de diseo de circuito secuenciales presentado en el Captulo 4.
Este ejemplo tiene un nmero pequeo de estados y de entradas, y podramos, por tanto, usar
Mapas de Karnaugh para simplificar las funciones booleanas. Sin embargo, en la mayora de
aplicaciones el nmero de estados es mucho mayor. La aplicacin del mtodo convencional requiere un trabajo excesivo para obtener las ecuaciones simplificadas para los flip-flops. Aqu, el
diseo se puede simplificar si tenemos en consideracin el hecho de que las salidas del decodificador estn disponibles para su uso en el diseo. En lugar de usar las salidas de los flip-flops
como las condiciones del estado actual, podramos tambin usar las salidas del decodificador
para obtener esta informacin. Estas salidas proporcionan una sola seal que representa cada
uno de los posibles estados del circuito. Es ms, en lugar de usar los Mapas de Karnaugh para
simplificar las ecuaciones de los flip-flops, las podemos obtener por simple inspeccin de la
tabla de estados. Por ejemplo, a partir de las condiciones del estado futuro de la tabla, encontramos que el estado futuro de M0 es igual a 1 si el estado actual es IDLE y la entrada G es igual a
1 o cuando el estado presente es MUL1 y su entrada Z es igual a 0. De estas condiciones se
deduce que:
DM0 % IDLE G ! MUL1 Z1
para la entrada D del flip-flop M0. De la misma forma, la entrada D del flip-flop M1 es:
DM1 % MUL0
Vase que estas ecuaciones se han extrado directamente de inspeccionar la tabla que utiliza los
nombres de los estados en lugar del nombre de las variables de estado puesto que est el decodificador que proporciona los smbolos de los estados. En algunos casos es posible encontrar
ecuaciones ms simples para las entradas D de los flip-flops usando variables de estado directamente en lugar de los estados. Podemos eliminar redundancia y reducir costes escribiendo las
ecuaciones del decodificador y aplicar una herramienta de simplificacin al conjunto de las
ecuaciones de control.
El diagrama para el control aparece en la Figura 8-10. Est formado por un registro de 2 bits
con los flip-flops M1 y M0 y un decodificador de 2 a 4 lneas. Tres salidas del decodificador
se usan para generar las salidas de control, as como las entradas para la lgica que calcula
el estado futuro. Las salidas Initialize, ClearC, Shiftdec y Load se determinan a partir de la
Tabla 8-1. Initialize y Shiftdec ya estn disponibles como seales y se han aadido como lneas
de salidas etiquetadas. Sin embargo, como se muestra en la figura, tenemos que aadir puertas
lgicas para ClearC y Load. Completamos el diseo del multiplicador binario conectando las
salidas de la unidad de control a las entradas de control de la ruta de datos.

Un flip-flop por estado


Otro posible mtodo de diseo de la lgica de control es usar un flip-flop por estado. Cada flipflop se asigna a un estado y, para cada instante de tiempo, slo uno de los flip-flops estar a uno
y el resto a 0. Cuando un flip-flop asignado a un estado concreto est a 1 el circuito secuencial
est en ese mismo estado. Este nico 1 se propaga de un flip-flop a otro segn la lgica de
decisin del control. Para dicha configuracin, cada flip-flop representa al estado actual slo
cuando ese nico 1 se almacena en dicho flip-flop.
Es evidente que, excepto en algunas tcnicas de deteccin y correccin de errores, este mtodo usa el mximo nmero de flip-flops posibles en un circuito secuencial. Por ejemplo, un

SECUENCIAMIENTO Y CONTROL

359

FIGURA 8-10
Unidad de control para un multiplicador con un registro de secuencia y un decodificador

circuito secuencial con 12 estados, que use un nmero mnimo de variables de estado codificadas, necesita slo cuatro flip-flops. Con un flip-flop por estado, el circuito necesita 12 flip-flops,
uno por estado. A primera vista puede parecer que este mtodo incrementara el coste del sistema puesto que utiliza ms flip-flops. Pero el mtodo ofrece algunas ventajas en este aspecto que
pueden no ser aparentes. Una ventaja es la simplicidad con la que su lgica se puede disear,
simplemente por inspeccin del diagrama ASM o el diagrama de estados. Si se emplean flipflops tipo D, no se necesitan tablas de estados ni de excitacin. Esto da lugar a un ahorro en el
esfuerzo de diseo.
En la Figura 8-11 se muestra las reglas de sustitucin para transformar un diagrama ASM a
un circuito secuencial con un flip-flop por estado. Estas reglas se utilizan con ms facilidad en
un diagrama ASM que slo represente la secuenciacin de informacin, tal y como se muestra
en la Figura 8-9. Cada regla especifica la sustitucin de un componente de un diagrama ASM
con un circuito lgico. Como se muestra en la Figura 8-11(a), la caja de estado se sustituye por
un flip-flop de tipo D etiquetado con el mismo nombre que el estado. La entrada de la caja de
estado se corresponde con la entrada D del flip-flop. La salida de la caja de estado se corresponde con la salida del flip-flop.
En la Figura 8-11(b), la caja de decisin escalar se reemplaza por un demultiplexor de 2
salidas. La seal correspondiente a la entrada de la caja de decisin se manda a una de las dos
lneas existentes, dependiendo del valor de la seal X. Si X es 0, la seal se manda a la lnea de
salida 0; si X es 1, la seal se manda a la lnea de salida 1. De esta forma, en el ejemplo, si hay
un 1 en el circuito que est en la entrada de la caja de decisin, y X es 0, el 1 pasa a la lnea de
salida 0. El demultiplexor acta como un conmutador que lleva el 1 a travs de los caminos del
circuito que se corresponden a los caminos del diagrama ASM.
En la Figura 8-11(c), la caja de decisin vectorial se sustituye por un demultiplexor de n
entradas. La seal correspondiente a la entrada de la caja de decisin se manda a una de las
2n . 1 lneas, dependiendo del valor del vector X % X0, ..., Xn.1. Si X % 0, la seal se enva a la
lnea de salida 0; si X es 9, la seal se enva a la lnea de salida 9. En el ejemplo, si el nico 1

360

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Caja de decisin vectorial

FIGURA 8-11
Reglas de transformacin para la unidad de control con un flip-flop por estado

SECUENCIAMIENTO Y CONTROL

361

del circuito est a la entrada de la caja de decisin y X es 9, el 1 se pasa a la lnea de salida 9. El


demultiplexor acta como un conmutador que direcciona el 1 a travs de los caminos del circuito correspondientes a los caminos del diagrama ASM.
La unin de la Figura 8-11(d) se hace en cualquier punto en el cual dos o ms lneas direccionadas en el diagrama ASM se unen. Si hay en el circuito un 1 en cualquier lnea correspondiente a uno de los caminos de entrada, entonces debe aparecen en la lnea correspondiente al
camino de salida, dando a la lnea el valor 1. Si ninguna de las lneas correspondientes a los
caminos de entrada de la unin tiene un 1, la lnea de salida debe tener el valor 0. Por esto, la
unin se sustituye por una puerta OR.
Con estas cuatro transformaciones, la parte de secuenciamiento del diagrama ASM puede
reemplazarse por un circuito con un flip-flop por estado por simple inspeccin. A la hora de
manejar las salidas, slo es cuestin de conectar las lneas de control al sitio adecuado del circuito o aadiendo lgica a la salida. Las salidas se basan en el diagrama original ASM o en la
tabla de seales de control derivadada del diagrama. La conexin de una lnea de control segn
un diagrama ASM se ilustra mediante la caja de salida condicional de la Figura 8-11(e). La caja
de salida condicional en el diagrama ASM se sustituye simplemente por una conexin al circuito. Pero para hacer que sucedan cambios a la salida, se saca una lnea de control desde la conexin y se etiqueta con la variable de salida. Por claridad, dicha transformacin se muestra en
azul.
Ahora usaremos estas transformaciones para disear la unidad de control con un bit por estado para el multiplicador binario.
EJEMPLO 8-1 Multiplicador binario
El diagrama ASM de la Figura 8-9 se usar para el diseo de la parte de secuenciamiento. Vase que se ignoran los cdigos binaros dados puesto que son del mtodo de diseo anterior. El
diagrama lgico resultante se muestra en la Figura 8-12.
Primero reemplazamos cada una de las tres cajas de estados por flip-flops tipo D etiquetados
con el nombre del estado, como se indica en los crculos con el nmero 1 de la figura. Segundo,
cada una de las cajas de decisin se sustituye por un demultiplexor con la variable de decisin
como entrada de seleccin, segn se indica con los crculos con el nmero 2 de la figura. Tercero, cada unin se reemplaza por una puerta OR, como se indica en los crculos con el nmero 3
de la figura. Finalmente, las conexiones representadas por flechas en el diagrama ASM se aaden desde las salidas a las entradas de los componentes correspondientes.
Para manejar las salidas de control, podemos usar la Tabla 8-1 o el diagrama ASM original
de la Figura 8-7. Partiendo de la tabla, vemos que la funcin booleana para Initialize ya est en
el diagrama lgico, as que simplemente aadimos la salida etiquetada como Initialize. De la
misma forma, se puede aadir la salida Shiftdec. Para las salidas ClearC y Load es necesario
aadir puertas lgicas. Todas las conexiones de salida y la lgica adicional se han indicado con
los crculos con el nmero 4 en la Figura 8-12.
La ltima tarea a realizar en el diseo de la lgica de control con un flip-flop por estado es
la de inicializacin de estados, poniendo un 1 al flip-flop IDLE y 0 a los dems. Esto se puede
realizar mediante una entrada de PRESET asncrono en el flip-flop IDLE y entradas CLEAR
asncronas en los otros flip-flops. Si slo disponemos de flip-flops con entrada de CLEAR asncrono en lugar de tener las dos entradas de CLEAR y PRESET, se puede colocar un inversor a
la entrada D y otro a la salida del flip-flop IDLE. As el flip-flop IDLE contendr un 0 en
el estado IDLE y un 1 es el resto de estados. Esto permite utilizar un CLEAR asncrono para

362

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

3
IDLE

D
C

DEMUX
D0
EN
A0
D1

4
Initialize
3

4
Clear _C

MUL0

Q0

Load

D
C

MUL1

Shift_dec
C

Clock

DEMUX
D0
EN
D1
A0

FIGURA 8-12
Unidad de control con un flip-flop por estado para el multiplicador binario

inicializar los tres flip-flops del circuito. Se debe tener en cuenta que, aparte de para inicializar
el circuito, el uso de las entradas asncronas de los flip-flops para realizar diagramas ASM u
otros circuitos secuenciales es, generalmente, desaconsejable.

Una vez que se ha completado el diseo bsico de la lgica de control, sera deseable refinar
el diseo. Por ejemplo. si hay un nmero de uniones conectadas mediante lneas, las puertas OR
resultantes de la transformacin se pueden combinar. Los demultiplexores puestos es cascada
unos con otros tambin se pueden combinar. Otro tipo de simplificacin o mapeo tecnolgico se
puede aplicar al diseo.

SECUENCIAMIENTO Y CONTROL

363

8-5 REPRESENTACIN HDL DEL MULTIPLICADOR


BINARIO-VHDL
El multiplicador binario estudiado se puede modelar en la etapa de diseo mediante una descripcin de comportamiento VHDL. En las Figuras 8-13 y 8-14 aparece la descripcin de una
versin de 4 bits del multiplicador. Este cdigo VHDL representa al diagrama de bloques de la
Figura 8-6 y al diagrama ASM de la Figura 8-7. El cdigo VHDL est formado por la entidad
binarymultiplier y la arquitectura behavior4. La arquitectura contiene dos sentencias de
asignacin y tres procesos. Los procesos son similares a los usados en detector de secuencia del
Captulo 6. La principal diferencia es que el proceso de la funcin de salida se ha sustituido por
un proceso que describe la transferencia de registros de la ruta de datos. Debido a este cambio,
la representacin VHDL se corresponde ms con la descripcin de la Tabla 8-1 y del diagrama
ASM de la Figura 8-9 que con la del diagrama de la Figura 8-7.
En la entidad se definen las entradas y las salidas del multiplicador. Al comienzo de la arquitectura, una declaracin de tipos define los tres estados. Las seales internas, algunas de las
cuales se generara en los registros, se declaran a continuacin. Entre estas estn state y
nextstate para el control, los registros A, B, P y Q y el flip-flop C. Por conveniencia tambin
se declara la seal Z. A continuacin se hace una asignacin que fuerza Z a 1 siempre que P
tenga el valor 0. Posterior a esto, las salidas concatenadas de los registros A y Q se asignan a la
salida del multiplicador MULTOUT. Esto es necesario, en lugar de hacer a A y a Q salidas del
circuito, para permitir usar A y Q dentro del circuito.
El resto de la descripcin est compuesto por tres procesos. El primer proceso describe el
registro de estados e incluye un RESET y el reloj. El segundo describe la funcin que calcula el
estado futuro a partir de la Figura 8-8. Dese cuenta que, aunque el reloj y el RESET se incluyen
en el registro de estados, no aparecen en la figura. En la lista de sensibilidad se incluyen todas
las seales que pueden afectar al siguiente estado. Por otra parte, este proceso se parece al proceso nextstate del detector de secuencia.
El proceso final de la Figura 8-14 describe la funcin de la ruta de datos. Como las condiciones para llevar a cabo una operacin se definen en funcin de los estados y de las entradas.
Este proceso tambin define implcitamente las seales de control dadas en la Tabla 8-1. Sin
embargo, estas seales de control no aparecen explcitamente. Puesto que la funcin de la ruta
de datos tiene registros como destino de todas las asignaciones, todas las transferencias se controlan con CLK. Como los datos se cargarn siempre en estos registros antes de la multiplicacin, no es necesario que stos tengan una seal de reset. La primera sentencia if controla la
carga del multiplicando en el registro B y la segunda sentencia if controla la carga del multiplicador en el registro Q.
Las transferencias de registros directamente involucrados en la multiplicacin se controlan
mediante una sentencia case que depende de estado del control, la entrada G, y las seales
internas Q(0) y Z. Estas transferencias se plantean en la Figura 8-7 y en la Tabla 8-1. El modelado de la suma en el estado MUL0 requiere algo de esfuerzo. Antes de nada, para llevar a cabo
la suma con vectores stdlogic, aparece una sentencia use justo antes de la declaracin de
entidad para el paquete ieee.stdlogicunsigned.all . Adems, para la suma necesitamos
transferir el acarreo de salida, Cout, de la suma a C. Para conseguirlo, realizamos una suma de
5 bits aadiendo ceros a la izquierda de A y B, y asignando el resultado a una variable de 5 bits,
CA. Una alternativa podra ser escribir C & A como transferencia de destino despus de la sentencia if, pero el uso de la concatenacin, &, en los registros de destino no se permite en VHDL. Al
ser CA una variable, su valor se asigna inmediatamente y est disponible para la asignacin

364

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 8-13
Descripcin VHDL de un multiplicador binario

de C y A despus de la sentencia if. En el estado MUL1, el desplazamiento se realiza usando la


concatenacin, como se hizo en el ejemplo del Captulo 5. P se decrementa restando una constante de 2 bit de valor 1.

SECUENCIAMIENTO Y CONTROL

365

end case;
end process;
datapath_func: process (CLK)
variable CA: std_logic_vector(4 downto 0);
begin
if (CLKevent and CLK = '1') then
if LOADB = '1' then
B <= MULT_IN;
end if;
if LOADQ = '1' then
Q <= MULT_IN;
end if;
case state is
when IDLE =>
if G = '1' then
C <= '0';
A <= "0000";
P <= "11";
end if;
when MUL0 =>
if Q(0) = '1' then
CA := ('0' & A) + ('0' & B);
else
CA := C & A;
end if;
C <= CA(4);
A <= CA(3 downto 0);
when MUL1 =>
C <= '0';
A <= C & A(3 downto 1);
Q <= A(0) & Q(3 downto 1);
P <= P - "01";
end case;
end if;
end process;
end behavior_4;
FIGURA 8-14
Descripcin VHDL de un multiplicador binario (continuacin)

Esta descripcin se puede simular para validarla y sintetizar automticamente para generar
la lgica, si se desea.

8-6 REPRESENTACIN HDL DEL MULTIPLICADOR


BINARIO-VERILOG
El multiplicador estudiado se puede modelar durante la etapa de diseo como una descripcin de comportamiento en Verilog. En las Figuras 8-15 y 8-16 se describe una versin de 4 bits
del multiplicador. Este cdigo en Verilog representa al diagrama de bloques de la Figura 8-6
y al diagrama ASM de la Figura 8-7. Este cdigo est compuesto de un mdulo llamado

366

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 8-15
Descripcin Verilog de un multiplicador binario

binarymultiplier v. La descripcin contiene dos sentencias de asignacin y tres procesos.

Los procesos son similares a los que se usaron para el detector de secuencia del Captulo 6.
La diferencia principal es que el proceso de la funcin de salida se ha sustituido por un proceso

SECUENCIAMIENTO Y CONTROL

367

begin
if (LOADB == 1)
B <= MULT_IN;
if (LOADQ == 1)
Q <= MULT_IN;
case (state)
IDLE:
if (G == 1)
begin
C <= 0;
A <= 4b0000;
P <= 2b11;
end
MUL0:
if (Q[0] == 1)
{C, A} = A + B;
MUL1:
begin
C <= 1b0;
A <= {C, A[3:1]};
Q <= {A[0], Q[3:1]};
P <= P - 2b01;
end
endcase
end
endmodule
FIGURA 8-16
Descripcin Verilog de un multiplicador binario (continuacin)

que describe la transferencia de registros de la ruta de datos. Debido a este cambio, la representacin en Verilog se corresponde ms a la descripcin de la Tabla 8-1 y al diagrama de la Figura 8-9 que al diagrama ASM de la Figura 8-7.
Al comienzo de la descripcin se definen las salidas y las entradas del multiplicador. Una
declaracin de parmetro define los tres estados y sus cdigos binarios. Se definen las seales
de tipo registro. Entre estas estn state y nextstate para el control, los registros A, B, P y Q,
y el flip-flop C. Segn las especificaciones de reloj, casi todos los registros se actualizarn con
el flanco de subida. La excepcin a destacar es nextstate. Tambin se ha declarado por conveniencia la seal intermedia Z de tipo wire. A continuacin se hace una asignacin que fuerza
a Z a ser 1 siempre que P contenga el valor 0. Esta sentencia usa la operacin OR (8) como
operador de reduccin. La reduccin es la aplicacin de un operador a un hilo (wire) o a un
registro que combina bits individualmente. En este caso, la aplicacin de la operacin OR a P
produce la suma lgica de todos los bits de P juntos. Al estar la operacin precedida por V, la
operacin lgica resultante es una NOR. Se pueden aplicar otros operadores como operadores
de reduccin. La segunda sentencia de asignacin asigna las salidas de los registros concatenados A y Q a la salida del multiplicador MULTOUT. Esto se hace por conveniencia para hacer de
la salida una estructura nica.
El resto de la descripcin est compuesta de tres procesos. El primer proceso describe al
registro de estado e incluye un RESET y un reloj. El segundo proceso describe la funcin que
calcula el estado futuro de la Figura 8-9. Tenga en cuenta que, aunque el reloj y el RESET se
incluyen en el registro de estados, stos no aparecen en la figura. En la sentencia de control de

368

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

eventos se incluyen todas las seales que pueden afectar al siguiente estado. Estas son G, Z y
state. Por otra parte, este proceso se parece al proceso que calcula el estado futuro del detector
de secuencia.
El ltimo proceso describe la funcin de la ruta de datos. Como las condiciones para realizar
una operacin se define en funcin de los estados y las entradas, este proceso tambin define
implcitamente las seales de control dadas en la Tabla 8-1. Sin embargo, estas seales de control no aparecen explcitamente. Puesto que la funcin de la ruta de datos tiene registros como
destino de todas las asignaciones, todas las transferencias se controlan con CLK. Como los datos
se cargarn siempre en estos registros antes de la multiplicacin, no es necesario que estos tengan una seal de un reset. La primera sentencia if controla la carga del multiplicando en el
registro B y la segunda sentencia if controla la carga del multiplicador en el registro Q.
Las transferencia de registros directamente involucradas en la multiplicacin se controlan
mediante una sentencia case que depende del estado de control, la entrada G, y las seales
internas Q(0) y Z. Estas transferencias se plantean en la Figura 8-7 y en la Tabla 8-1. La representacin de la suma en el estado MUL0 usa la concatenacin de C y A para obtener el acarreo de
salida, Cout, y cargarlo en C. Verilog permite la suma de dos operando de 4 bits y dar el resultado con 5 bits. En el estado MUL1, el desplazamiento se lleva a cabo usando la concatenacin
como se hizo en el ejemplo del Captulo 5. P se decrementa restando una constante de 2 bits de
valor 1.
Esta descripcin se puede simular para validarla y sintetizar automticamente para generar
la lgica, si se desea.

8-7 CONTROL MICROPROGRAMADO


Un control microprogramado es una unidad de control que tiene almacenados sus valores binarios de control como palabras en una memoria. Cada palabra de la memoria de control contiene
una microinstruccin que especifica una o ms microoperaciones de un sistema. Una secuencia
de microinstrucciones constituyen un microprograma. El microprograma se ajusta durante el diseo del sistema y se almacena en una ROM. La microprogramacin involucra la colocacin en
la ROM de las combinaciones que representan a los valores de las variables de control en palabras. A estas representaciones se accede mediante operaciones de lecturas sucesivas y se usarn
por el resto de la lgica de control. Los valores de una palabra de ROM de una determinada
direccin especifican las operaciones que se llevarn a cabo tanto en la ruta de datos como en la
unidad de control. Un microprograma tambin se puede almacenar en una RAM. Es este caso,
se carga al iniciarse el sistema desde alguna forma de almacenamiento no voltil, por ejemplo,
un disco magntico. La memoria de la unidad de control, ya sea RAM o ROM se llama memoria de control. Si se usa una RAM, la llamaremos memoria de control de escritura.
En la Figura 8-17 se muestra la configuracin general de un control microprogramado. Suponiendo que la memoria de control es una ROM, todos los microprogramas estn almacenados
permanentemente. El registro de direcciones de control (CAR, del ingls control address register) especifica la direccin de la microinstruccin. El registro de datos de control (CDR, del
ingls control data register), que es opcional, puede contener la microinstruccin en curso que
se ejecuta en la ruta de datos y en la unidad de control. Una de las funciones de la palabra de
control es determinar la direccin de la siguiente microinstruccin a ejecutar. Esta microinstruccin puede ser la siguiente de la secuencia o puede estar localizada en algn otro sitio de la
memoria. Por tanto, uno o ms bits de la microinstruccin en curso pueden especificar la forma de determinar la direccin de la siguiente microinstruccin. La siguiente direccin tambin
puede ser funcin del status y de las entradas externas de control. Cuando se ejecuta una mi-

SECUENCIAMIENTO Y CONTROL

369

Entradas Seales de status


de control de la ruta de datos

Generador de la
siguiente direccin
Secuencia
Registro de direcciones
de control
Direcciones de control
Direccin
Memoria
de control
(ROM)
Dato

Registro de dato de control


(opcional)
Microinstruccin
Informacin
de la siguiente
direccin

Salidas
de
control

Seales de control
para la ruta
de datos

FIGURA 8-17
Organizacin de la unidad de control microprogramado

croinstruccin, el generador de la siguiente direccin produce la siguiente instruccin. Esta instruccin se transfiere al CAR en el siguiente pulso de reloj y se utiliza para leer la siguiente
microinstruccin a ejecutar de la ROM. De este modo, las microinstrucciones contienen bits que
activan las microoperaciones de la ruta de datos y los bits que especifican la secuencia de microinstrucciones a ejecutar.
Al generador de la siguiente direccin, en combinacin con el CAR, se le suele denominar
secuenciador de programa ya que determina la secuencia de instrucciones de lectura de la memoria de control. La direccin de la siguiente microinstruccin se puede especificar de varias
formas, dependiendo de las entradas del secuenciador. Las funciones tpicas del secuenciador
del microprograma son: incremento en uno del CAR y carga del CAR. Las posibles fuentes para
la operacin de carga son: una direccin de la memoria de control, una direccin externa y una
direccin inicial para empezar la operacin de la unidad de control.
El CDR contiene la microinstruccin actual mientras que se calcula la siguiente direccin y
se lee la siguiente microinstruccin de la memoria. El CDR reduce los retardos de los caminos
combinacionales que van a travs de la memoria de control y siguen hacia la ruta de datos. Su
presencia permite al sistema operar a mayor frecuencia de reloj y, por tanto, procesar la informacin ms rpidamente. Sin embargo, la inclusin del CDR en un sistema complica la secuenciacin de las microinstrucciones, en especial cuando las decisiones a tomar dependen de los
bits de status. Para simplificar esta breve introduccin, omitiremos el CDR y tomaremos las microinstrucciones directamente de las salidas de la ROM. La ROM funciona como un circuito

370

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

combinacional, con las direcciones como entradas y la correspondiente microinstruccin como


salida. El contenido, la palabra direccionada en la ROM, permanece en las lneas de salida tanto
tiempo como el valor de la direccin est presente en las entradas. No es necesario emplear una
seal de lectura/escritura como sucede si se usa una RAM. Cada pulso de reloj ejecuta las microoperaciones especificadas por la microinstruccin y, adems, se transfiere una nueva direccin al CAR. En este caso, el CAR es el nico componente del control que recibe los pulsos de
reloj y almacena informacin. El generador de la siguiente direccin y la memoria de control
son circuitos combinacionales, es decir, el contenido del CAR proporciona el estado de la unidad de control.
El control microprogramado es una tcnica alternativa muy popular para realizar unidades
de control tanto para sistemas programados como no programados. Sin embargo, segn el sistema se hace ms complejo, as como sus especificaciones, se ha incrementado la necesidad de
secuencias paralelas concurrentes de acciones, y hace a la microprogramacin menos atractiva a
la hora de disear una unidad de control. Adems, las ROM y RAM de gran capacidad son ms
lentas que la lgica combinacional equivalente. Para terminar, los HDLs y las herramientas de
sntesis facilitan el diseo de las unidades de control complejas sin necesidad de utilizar un mtodo de diseo programado. En general, el control microprogramado para disear unidades de
control, particularmente dirigido a control de rutas de datos en CPUs, ha disminuido significativamente. Sin embargo, el control microprogramado ha surgido para utilizar arquitecturas de
computadoras antiguas. Estas arquitecturas tienen un conjunto de instrucciones que no sigue los
principios de las arquitecturas actuales. No obstante, dichas arquitecturas deben desarrollarse
debido a las grandes inversiones en software para ellas. Adems, los principios de las arquitecturas actuales se deben usar en aplicaciones para conseguir los requisitos perseguidos. El control
de estos sistemas es jerrquico, con el control microprogramado situado en el nivel ms alto de
la jerarqua para la ejecucin de instrucciones complejas, y a nivel inferior para llevar a cabo las
instrucciones sencillas y las etapas de las instrucciones complejas muy rpidamente. El sentido
de la microprogramacin se trata en el Captulo 12 en computadoras con conjunto de instrucciones complejo (CISC, del ingls Complex Instruction Set Computer).
Ms informacin sobre el control microprogramado tradicional, extrado de pasadas ediciones
de este texto, est disponible en un suplemento, Control Microprogramado, en la siguiente direccin de Internet: http://www.librosite.net/Mano.

8-8 RESUMEN DEL CAPTULO


En este captulo se ha examinado la interaccin entre las rutas de datos y las unidades de control y la diferencia entre sistemas programados y no programados. El algoritmo de mquinas de
estados (ASM) es un medio para representar y especificar las funciones de control. Se ha usado
un multiplicador binario para ilustrar la formulacin de un diagrama ASM. Se han propuesto
dos mtodos para disear circuitos secuenciales: registro secuenciador con decodificador, y un
flip-flop por estado, aparte del mtodo de diseo bsico del Captulo 4. Se han mostrado modelos en VHDL y Verilog que describen la combinacin de la ruta de datos y el control. Por ltimo, se ha discutido brevemente el control microprogramado.

REFERENCIAS
1.

MANO, M. M.: Computer Engineering: Hardware Design: Englewood Cliffs, NJ: Prentice
Hall, 1988.

SECUENCIAMIENTO Y CONTROL

371

2.

MANO, M. M.: Digital Design, 3rd Ed. Englewood Cliffs, NJ: Prentice Hall, 2002.

3.

IEEE Standard VHDL Language Reference Manual. (ANSI/IEEE Std 1076-1993; revision
of IEEE Std 1076-1987). New York: The Institute of Electrical and Electronics Engineers,
1994.

4.

SMITH, D. J.: HDL Chip Design. Madison, AL: Doone Publications, 1996.

5.

IEEE Standard Description Language Based on the Verilog(TM) Hardware Description


Language (IEEE Std 1364-1995). New York: The Institute of Electrical and Electronics Engineers, 1995.

6.

PALNITKAR, S.: Verilog HDL: A Guide to Digital Design and Synthesis. SunSoft Press
(A Prentice Hall Title), 1996.

7.

THOMAS, D. E., and P. R. MOORBY: The Verilog Hardware Description Language 4th ed.
Boston: Kluwer Academic Publishers, 1998.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que una solucin est
disponible en la direccin de Internet: http://www.librosite.net/Mano.
8-1. *En la Figura 8-18 se muestra un diagrama de estados de un circuito secuencial. Dibuje el
diagrama ASM correspondiente. Minimice su complejidad utilizando cajas de decisin
vectorial y escalar. Las entradas del circuito son X1 y X2 y las salidas son Z1 y Z2.
00, 01
S0
00
10, 11

01, 10

01, 10, 11

S1
01

00

S2
10

00, 11

FIGURA 8-18
Diagrama de estados para el Problema 8-1

8-2. *Calcule la respuesta del diagrama ASM de la Figura 8-9 para la siguiente secuencia de
entradas (suponga que el estado inicial es ST1):
A:

B:

C:

Estado: ST1
Z:

372

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

8-3. En la Figura 8-19 se muestra un diagrama ASM. Halle la tabla de estados para el circuito
secuencial correspondiente.
ST1

A
ST2

ST3
Z
Z

FIGURA 8-19
Diagrama ASM para los Problemas 8-2 y 8-3

8-4. Encuentre el diagrama ASM correspondiente a la siguiente descripcin: hay dos estados,
A y B. Si en el estado A la entrada X es 1, el siguiente estado es A. Si en el estado A la
entrada X es 0, el siguiente estado es B. Si en el estado B la entrada Y es 0, el siguiente
estado es B. Si en el estado B la entrada Y es 1, el siguiente estado es A. La salida Z es
igual a 1 mientras el circuito est en el estado B.
8-5. *Proponga el diagrama ASM para un circuito que detecte un valor diferente de la seal
de entrada X en dos flancos de subida consecutivos de reloj. Si X ha tenido valores diferentes en dos flancos de subida consecutivos de reloj la salida Z es igual a 1 en el siguiente ciclo de reloj, si no la salida Z es 0.
8-6. !Se quiere realizar el diagrama ASM de un circuito sncrono con reloj CK de una lavadora. El circuito tiene tres seales de entrada externas: START, FULL y EMPTY (las cuales estn a uno, como mucho, durante un ciclo de reloj y se excluyen mutuamente), y las
salidas externas son: HOT, COLD, DRAIN y TURN. La ruta de datos para el control se
compone de un contador descendente que tiene tres entradas RESET, DEC y LOAD. El
contador se decrementa sncronamente una vez cada minuto si DEC % 1, pero se puede

SECUENCIAMIENTO Y CONTROL

373

cargar o poner a cero sncronamente en cualquier ciclo de reloj CK. Tiene slo una salida, ZERO, que vale 1 siempre y cuando el contenido del contador sea 0, en el resto de los
casos vale 0.
Durante su funcionamiento, el circuito pasa a travs de cuatro ciclos: WASH, SPIN,
RINSE y SPIN, que se detallan a continuacin:
WASH: suponga que el estado inicial del circuito al arrancar es IDLE. Si START es 1
durante un ciclo de reloj, HOT pasa a 1 y permanece a 1 hasta que FULL % 1, llenando
la lavadora con agua caliente. A continuacin, usando LOAD, el contador descendente se
carga con un valor de un panel que indica cuntos minutos dura el ciclo de lavado. DEC
y TURN pasan a 1 y la lavadora lava su contenido. Cuando ZERO es 1, el lavado se ha
completado y TURN y DEC pasan a valer 0.
SPIN: luego, DRAIN pasa a 1, se vaca de agua la lavadora. Cuando EMPTY pasa a 0 el
contador descendente se carga con el valor 7. DEC y TURN pasan a 1 y el agua restante
se escurre de su contenido. Cuando ZERO pasa a 1, DRAIN, DEC y TURN vuelven a 0.
RINSE: posteriormente, COLD pasa a 1 y permanece a este valor hasta que FULL % 1,
llenando la lavadora con agua fra para enjuagar. A continuacin, empleando LOAD, el
contador descendente se carga con el valor 10. DEC y TURN pasan a 1 y el agua enjuaga
su contenido. Cuando ZERO pasa a 1, el enjuagado se ha completado y TURN y DEC
pasan a 0.
SPIN: luego, DRAIN pasa a 1, sacando el agua del enjuague. Cuando EMPTY es 1 el
contador descendente se carga con 8. DEC y TURN se ponen entonces a 1 y el agua restante del enjuague se escurre de su contenido. Cuando ZERO pasa a 1, DRAIN, DEC y
TURN vuelven a valer 0 y el circuito pasa al estado IDLE.
(a) Halle el diagrama ASM del circuito de la lavadora.
(b) Modifique el diseo de la parte (a) suponiendo que hay dos entradas ms, PAUSE y
STOP. PAUSE hace que el circuito, incluyendo en contador, se detenga y ponga todas las salidas a 0. Cuando START se pulsa, la lavadora reanuda su funcionamiento
en el punto donde se detuvo. Si se pulsa STOP, todas las salidas se ponen a 0 excepto
DRAIN que se pone a 1. Si EMPTY se pone a 1, el estado del circuito vuelve a
IDLE.
8-7. Proponga un diagrama ASM para el controlador de un semforo que funciona de la siguiente manera: la seal de tiempos T es la entrada al controlador. T define el tiempo de
la luz amarilla as como los cambios de rojo a verde. Las salidas a las seales se definen
en la siguiente tabla:
Salida Luz controlada
GN
YN
RN
GE
YE
RE

Luz
Luz
Luz
Luz
Luz
Luz

Verde, Semforo Norte/Sur


Amarilla, Semforo Norte/Sur
Roja, Semforo Norte/Sur
Verde, Semforo Este/Oeste
Amarilla, Semforo Este/Oeste
Roja, Semforo Este/Oeste

374

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Mientras T % 0, la luz verde esta encendida para un semforo y la luz roja para el otro.
Con T % 1, la luz amarilla est encendida para el semforo que fue previamente verde,
y el semforo que estuvo previamente en rojo permanece en rojo. Cuando T es 0, el
semforo que antes estuvo en amarillo pasa a rojo, y el semforo que estuvo previamente en rojo pasa a ser verde. Este patrn de cambios alternados del color contina.
Suponemos que el controlador es sncrono con un reloj que cambia a mucha ms frecuencia que la entrada T.
8-8. *Realice el diagrama ASM de la Figura 8-19 usando un flip-flop por estado.
8-9. *Realice el diagrama ASM de la Figura 8-19 mediante un registro de secuencia y un
decodificador.
8-10. !Realice el diagrama ASM que se deriva del Problema 8-6(a) usando un flip-flop por
estado.
8-11. *Multiplique los dos nmeros binarios sin signo 100110 (multiplicando) y 110101 (multiplicador) usando el mtodo manual y el mtodo hardware.
8-12. Simule manualmente el proceso de multiplicar dos nmeros binarios sin signo 1010
(multiplicando) y 1011 (multiplicador). Enumere el contenido de los registros A, Q, P y
C y el estado del control. Utilice el sistema de la Figura 8-6 con n igual a 4 y con el
control cableado de la Figura 8-12.
8-13. Determine el tiempo que necesita la operacin de multiplicar en el sistema digital descrito en la Figura 8-6 y en la Figura 8-9. Suponga que el registro Q tiene n bits y el
periodo de un ciclo de reloj es de f nanosegundos.
8-14. Compruebe que la multiplicacin de dos nmeros de n bits da un resultado de no ms de
2n bits. Demuestre que esta condicin implica que no puede haber overflow en el resultado final del circuito multiplicador de la Figura 8-6.
8-15. Considere el diagrama de bloques del multiplicador mostrado en la Figura 8-6. Suponga
que el multiplicando y el multiplicador son de 16 bits.
(a) En cuntos bits se puede expresar el resultado y cundo est disponible?
(b) De cuntos bits es el contador P, y qu nmero binario se debe cargar al comienzo?
(c) Disee el circuito combinacional que comprueba que el contador P es cero.
8-16. *Disee un sistema digital con tres registros de 16 bits AR, BR y CR y con datos de
entrada de 16 bits, IN, para realizar las siguientes operaciones, suponiendo que se utiliza
la representacin de complemento a 2 e ignorando el overflow:
(a) Transferir dos nmeros con signo de 16 bits a AR y BR en ciclos consecutivos de
reloj despus de que la seal G se ponga a 1.
(b) Si el nmero en AR es positivo y distinto de cero, multiplique el contenido de BR
por dos y transfiera el resultado al registro CR.
(c) Si el nmero en AR es negativo, multiplique el contenido de AR por dos y transfiera
el resultado al registro CR.
(d) Si el nmero en AR es cero, ponga a 0 el registro CR.
8-17. !Modifique el diseo del multiplicador de la Figura 8-6 y el diagrama ASM de la Figura 8-7 para llevar a cabo la multiplicacin de nmeros con signo en complemento a 2
usando el Algoritmo de Booth, que emplea un sumador-restador. La decisin de sumar o

SECUENCIAMIENTO Y CONTROL

375

restar o de no hacer nada se hace en funcin del bit menos significativo (LSB) del registro Q y del bit previo al LSB de registro Q antes de que Q sea desplazado a la derecha.
De esta forma, se debe aadir un flip-flop para almacenar al bit previo al LSB del registro Q. El valor inicial del bit previo al LSB es 0. La siguiente tabla define las decisiones:
LSB de Q

LSB previo de Q

Accin

0
0
1
1

0
1
0
1

Dejar el producto parcial sin cambiar


Sumar el multiplicando al producto parcial
Restar el multiplicando del producto parcial
Dejar el producto parcial sin cambiar

8-18. !Disee un sistema digital que multiplique dos nmeros binarios sin signo mediante el
mtodo de sumas repetidas. Por ejemplo, para multiplicar 5 por 4, el sistema digital suma el multiplicando cuatro veces: 5 ! 5 ! 5 ! 5 % 20. Mantenga el multiplicando en el
registro BR, el multiplicador en el registro AR y el producto en el registro PR. Un circuito sumador suma el contenido de BR a PR, y AR es un contador descendente. Un circuito que detecta 0, Z, comprueba cundo AR es cero despus de que se decrementa. Disee
el control mediante el mtodo de un flip-flop por estado.
8-19. *Escriba, compile y simule una descripcin en VHDL para el diagrama ASM de la Figura 8-19. Use un conjunto de entradas en la simulacin que haga pasar al diagrama
ASM a travs de todos sus caminos e incluya tanto el estado como la salida Z como
resultados de la simulacin. Corrija y vuelva simular su diseo si es necesario.
8-20. *Escriba, compile y simule una descripcin en Verilog para el diagrama ASM de la Figura 8-19. Use los cdigos 00 para el estado ST1, 01 para el estado ST2 y 10 para el
estado ST3. Use un conjunto de entradas en la simulacin que haga pasar al diagrama
ASM a travs de todos sus caminos e incluya tanto el estado como la salida Z como
resultados de la simulacin. Corrija y vuelva simular su diseo si es necesario.
8-21. Realice el diseo del Problema 8-5 usando Verilog en lugar de un diagrama ASM. Utilice para los estados los nombres S0, S1 y S2, ..., y los cdigos que sean equivalentes a
los enteros del nombre del estado. Compile y simule su diseo usando entradas en la
simulacin que valide completamente el diseo y que incluya tanto el estado como la
salida Z como resultados de la simulacin. Corrija y vuelva simular su diseo si es necesario.
8-22. !Realice el diseo del Problema 8-7 usando VHDL en lugar del diagrama ASM. Compile y simule su diseo haciendo funcionar el semforo dos ciclos completos. Use un
periodo real para T y un reloj lento. Ajuste el periodo de reloj, si es necesario para evitar
simulaciones que lleven mucho tiempo.
8-23. !Realice el diseo del Problema 8-7 en Verilog en lugar del diagrama ASM. Compile y
simule su diseo haciendo funcionar el semforo dos ciclos completos. Use un periodo
real para T y un reloj lento. Ajuste el periodo de reloj, si es necesario para evitar simulaciones que lleven mucho tiempo.

CAPTULO

9
MEMORIAS

a memoria es el componente ms grande en una computadora digital y est presente en un gran porcentaje de los sistemas digitales. Las memorias de acceso
aleatorio (RAM) almacenan datos temporalmente, y las memorias de slo lectura (ROM) almacenan datos permanentemente. Una memoria ROM pertenece a un
tipo de componentes llamados dispositivos lgicos programables (PLDs, del ingls
Programmable Logic Devices) que utilizan la informacin almacenada para definir circuitos lgicos.
Nuestro estudio de las memorias RAM comienza vindolas como un modelo con
entradas, salidas y la temporizacin de sus seales. Usaremos, por tanto, modelos
lgicos equivalentes para comprender el funcionamiento interno de las memorias
RAM de los circuitos integrados. Se estudian las memorias RAM estticas y dinmicas. Tambin se estudian los distintos tipos de memorias RAM dinmicas usadas para el movimiento de datos a altas velocidades entre la CPU y la memoria. Finalmente
juntaremos diversos chips de memoria RAM para construir la memoria de un sistema.
En algunos de los captulos anteriores se utilizaron extensamente estos conceptos
referentes a la computadora genrica al principio de Captulo 1. En este captulo, por
primera vez vamos a ser ms precisos y sealaremos los usos especficos de las memorias y sus componentes asociados. Empezando con el procesador, la cach interna es, bsicamente, una memoria RAM muy rpida. Fuera de la CPU, la cach externa tambin es, bsicamente, una memoria RAM muy rpida. El subsistema de
memoria RAM, como su nombre indica, es un tipo de memoria. En la zona de entrada/salida, encontramos esencialmente memoria para almacenar informacin de la
imagen de la pantalla en la tarjeta de vdeo. La memoria RAM aparece en la cach de
disco en la tarjeta controladora del disco, acelerando los accesos a ste. Aparte del
papel principal que tiene el subsistema de memoria RAM para almacenar datos y programas, encontramos memoria aplicada de varias formas en la mayora de los subsistemas de una computadora genrica.

378

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

9-1 DEFINICIONES
En los sistemas digitales, una memoria es una coleccin de celdas capaces de almacenar informacin binaria. Aparte de estas celdas, una memoria contiene circuitos electrnicos para almacenar y recuperar la informacin. Como se indic en la explicacin de la computadora genrica,
la memoria se usa en diferentes partes de las computadoras modernas, proporcionando almacenamiento temporal o permanente para grandes cantidades de informacin binaria. Para que esta
informacin sea procesada, se enva de la memoria al hardware de procesamiento, que est formado por registros y lgica combinacional. La informacin procesada se devuelve posteriormente a la misma memoria o a otra diferente. Los dispositivos de entrada y salida tambin interactan con la memoria. La informacin de un dispositivo de entrada se coloca en la memoria,
de forma que puede usarse en su procesado. La informacin procesada de salida se coloca en la
memoria, y de all se manda a un dispositivo de salida.
Se utilizan dos tipos de memoria en las diversas partes de una computadora: la memoria de
accesos aleatorio (RAM, del ingls random-access memory) y la memoria de slo lectura
(ROM, del ingls read-only memory). La memoria RAM permite almacenar nueva informacin
que estar disponible para su uso posteriormente. Al proceso de almacenamiento de nueva informacin en la memoria se le llama operacin de escritura en la memoria. Al proceso de transferir la informacin almacenada en la memoria se le llama operacin de lectura de la memoria.
La memoria RAM puede realizar ambas operaciones, mientras que la memoria ROM, presentada en el Captulo 3, slo puede realizar operaciones de lectura. El tamao de la memoria RAM
puede variar entre cientos y millones de bits.

9-2 MEMORIA DE ACCESO ALEATORIO


Una memoria es una coleccin de celdas de almacenamiento binario junto con circuitos adicionales necesarios para transferir informacin de o desde un lugar determinado, con el mismo
tiempo de acceso independientemente de dnde est localizada, de aqu el nombre de memoria
de acceso aleatorio. Por contra, la memoria serie, tal y como se produce en un disco magntico
o en una unidad de cinta, necesita ms o menos tiempo dependiendo de dnde este el dato deseado, puesto que depende de su localizacin fsica en el disco o en la cinta.
La informacin binaria se almacena en la memoria en grupos de bits, a cada grupo de bits se
le llama palabra (del trmino ingls word). Una palabra es una entidad de bits que se mueve a
dentro y a fuera de la memoria como una unidad, un grupo de unos y ceros que representan un
nmero, una instruccin, uno o ms caracteres alfanumricos o cualquier otra informacin codificada. A un grupo de ocho bits se le llama byte. La mayora de las computadora usan palabras
que son mltiplo de ocho bits. As, una palabra de 16 bits contiene dos bytes y una palabra de
32 bits est formada por cuatro bytes. La capacidad de una unidad de memoria se expresa como
el nmero total de bytes que puede almacenar. La comunicacin entre la memoria y su entorno
se consigue mediante: lneas de entradas y de salidas de datos, lneas de seleccin de direccin
y las lneas de control que especifican la direccin de la transferencia de la informacin. En la
Figura 9-1 se muestra un diagrama de bloques de una memoria. Las n lneas de entrada proporcionan la informacin a almacenar en la memoria y las n lneas de salida aportan la informacin
que sale de la memoria. Las k lneas de direccin especifican la palabra escogida de entre las
muchas disponibles. Las dos entradas de control especifican el sentido de la transferencia deseada: la entrada de escritura (Write) provoca que el dato binario se transfiera dentro la memoria, y
la entrada de lectura (Read) hace que el dato binario se transfiera a fuera de la memoria.

MEMORIAS

379

n lneas de entrada de datos


k lneas de direccin
Read (lectura)
Write (escritura)

Unidad de memoria
2k palabras
n bits por palabra
n lneas de salida de datos

FIGURA 9-1
Diagrama de bloques de una memoria

La unidad de memoria se caracteriza por el nmero de palabras que contiene y por el nmero de bits en cada palabra. Las lneas de direccin seleccionan una palabra concreta. A cada
palabra de la memoria se le asigna un nmero de identificacin llamada direccin (en trmino
ingls address). El rango de direcciones va desde 0 hasta 2k . 1, donde k es el nmero de lneas
de direccin. La seleccin de una determinada palabra dentro de la memoria se hace aplicando
la direccin en binario de k bits a las lneas de direccin. Un decodificador toma esta direccin
y abre los caminos necesarios para seleccionar la palabra especificada. La memoria de una computadora puede tener muchos tamaos. Es habitual referirse al nmero de palabras (o bytes) mediante los prefijos K (kilo), M (mega) o G (giga). K es igual a 210, M es igual a 220 y G es igual
a 230. De esta forma, 64 K % 216, 2 M % 221 y 4 G % 232.
Considere, por ejemplo, una memoria con una capacidad de 1 K palabras de 16 bits cada
una. Puesto que 1 K % 1024 % 210, y 16 bits constituyen dos bytes, podemos decir que la memoria puede albergar 2048 o 2 K bytes. La Figura 9-2 muestra el posible contenido de las tres
primeras y tres ltimas palabras de la memoria de este tamao. Cada palabra contiene 16 bits
que se pueden dividir en dos bytes. Las palabras se reconocen por su direccin en decimal, desde 0 hasta 1023. Una direccin equivalente en binario tiene 10 bits. La primera direccin se
especifica con 10 ceros y la ltima con 10 unos. Esto es as porque 1023 en binario es igual a
1111111111. Una palabra de memoria se selecciona mediante su direccin en binario. Cuando
una palabra se lee o se escribe, la memoria funciona con todos los 16 bits como una nica
unidad.
Direcciones de memoria
Binario
0000000000
0000000001
0000000010

1111111101
1111111110
1111111111

Decimal Contenido de memoria


0
1
2
.
.
.
.
.
1021
1022
1023

10110101 01011100
10101011 10001001
00001101 01000110
.
.
.
.
.
10011101 00010101
00001101 00011110
11011110 00100100

FIGURA 9-2
Contenido de una memoria de 1024 # 16

380

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La memoria de 1 K # 16 de la figura tiene 10 bits en las direcciones y 16 bits en cada palabra. Si tuvisemos una memoria de 64 K # 10, sera necesario incluir 16 bits en las direcciones
y cada palabra tendra 10 bits. El nmero de bits necesarios en las direcciones depende del nmero total de palabras que pueden ser almacenadas y es independiente del nmero de bits en
cada palabra. El nmero de bits en la direccin de una palabra se determina mediante la relacin 2k n m, donde m es el nmero total de palabras y k es el nmero mnimo de bits de direcciones que satisface la relacin.

Operaciones de lectura y escritura


Las dos operaciones que puede efectuar una memoria de acceso aleatoria son la escritura (write)
y la lectura (read). Una escritura es una transferencia al interior de la memoria de un nuevo dato para ser almacenado. Una lectura es una transferencia de una copia de una palabra
almacenada al exterior de la memoria. Una seal de escritura (Write) especifica la operacin de entrada, y una seal de lectura (Read) determina la operacin de salida. Aceptando una
de estas seales de control, los circuitos internos de la memoria permiten realizar la funcin
deseada.
Los pasos que se deben realizan para realizar una operacin de escritura son los siguientes:
1. Aplicar la direccin binaria de la palabra elegida a las lneas de direccin.
2. Aplicar los bits de datos que se deben almacenar en la memoria a las lneas de entrada
de datos.
3. Activar la entrada de escritura (Write).
La unidad de memoria tomar los bits de las lneas de entrada de datos y los almacenar en la
palabra especificada en las lneas de direcciones.
Los pasos que se deben seguir para realizar una operacin de lectura son los siguientes:
1. Aplicar la direccin binaria de la palabra elegida a las lneas de direccin.
2. Activar la entrada de lectura (Read)
La memoria tomar los bits de la palabra que ha sido seleccionada por la direccin y los llevar
a las lneas de salida de datos. El contenido de la palabra seleccionada no se cambiar con su
lectura.
La memoria RAM se construye con circuitos integrados (chips) ms circuitos lgicos adicionales. Habitualmente, los chips de memoria RAM tienen dos entradas de control para las
operaciones de lectura y escritura en una configuracin diferente a la descrita anteriormente. En
lugar de tener dos entradas separadas para la lectura y la escritura, la mayora de circuitos tiene,
al menos, una entrada de seleccin de chip (Chip Select) que selecciona el chip que se va a leer
o a escribir, y una entrada de lectura/escritura (Read/Write) que determina la operacin a realizar. Las operaciones de la memoria que resultan de esta configuracin de las seales de control
se muestran en la Tabla 9-1.
La seleccin del chip (en adelante Chip Select) se usa para habilitar uno o varios chips que
forman la RAM y que contienen la palabra a la que se quiere acceder. Si el Chip Select se activa, la entrada Read/Write determina la operacin a realizar. Mientras la seal de Chip Select
accede a los chips, tambin se proporciona una seal que accede a toda la memoria. Llamaremos a esta seal Habilitacin de Memoria (Memory Enable).

MEMORIAS

381

TABLA 9-1
Entradas de control de un chip de memoria
Chip select
CS

Read/Write
R/W1

0
1
1

#
0
1

Operacin de la memoria
Ninguna
Escriba la palabra seleccionada
Lee de la palabra seleccionada

Temporizacin de las formas de onda


El funcionamiento de la unidad de memoria se controla mediante un dispositivo externo, como
por ejemplo, una CPU. La CPU est sincronizada con su seal de reloj. Sin embargo, la memoria no emplea este reloj. En cambio, sus operaciones de lectura y escritura se temporizan mediante cambios en sus entradas de control. El tiempo de acceso de una operacin de lectura es el
tiempo mximo que transcurre desde la aplicacin de la direccin hasta que aparece la informacin en la salida de datos. De forma similar, el tiempo del ciclo de escritura es el tiempo mximo que transcurre desde que se pone la direccin hasta completar todas las operaciones internas
que necesita la memoria para almacenar una palabra. Las escrituras en la memoria se pueden
llevar a cabo una detrs de otra en intervalos de tiempo. La CPU debe proporcionar a la memoria seales de control de tal forma que se sincronizan sus propias operaciones internas, sincronizadas con el reloj, con las operaciones de lectura y escritura de la memoria. Esto significa que
el tiempo de acceso y el tiempo del ciclo de escritura de la memoria deben estar relacionados
con la CPU con un periodo igual a un nmero fijo de ciclos de reloj de la CPU.
Supongamos, como ejemplo, que una CPU funciona con un reloj de 50 MHz de frecuencia,
que tiene un periodo de reloj de 20 ns (1 ns % 10.9 s). Supongamos ahora que la CPU se comunica con una memoria con un tiempo de acceso de 65 ns y un tiempo ciclo de escritura de 75 ns.
El nmero de ciclos de reloj necesarios para una peticin de memoria es un valor entero mayor
o igual que el valor ms grande del tiempo de acceso y del tiempo del ciclo de escritura, dividido por el periodo del reloj. Como el periodo del reloj es de 20 ns y el tiempo mayor entre el
tiempo de acceso y el tiempo del ciclo de escritura es 75 ns, ser necesario emplear, al menos,
cuatro ciclo de reloj para cada peticin a la memoria.
La temporizacin del ciclo de memoria se muestra en la Figura 9-3, para una CPU funcionando a 50 MHz y una memoria con un ciclo de escritura de 75 ns y un tiempo de acceso de 65
ns. El ciclo de lectura de la parte (a) muestra 4 pulsos T1, T2, T3 y T4 con un periodo de 20 ns.
En una operacin de escritura, la CPU debe proporcionar la direccin y el dato de entrada a la
memoria. Se aplica la direccin y la habilitacin de memoria se cambia a 1 en el flanco de
subida del pulso T1. El dato, que es necesario algo ms tarde, se aplica en el flanco de subida de
T2. Las dos lneas que se cruzan una con otra en las forma de ondas de las direcciones y de los
datos indica un posible cambio en el valor de estos buses. Las zonas sombreadas representan
valores sin especificar. Un cambio de la seal Read/Write a 0 en el flanco positivo de T2 indica
la operacin de escritura. Para evitar la destruccin de los datos, en otras palabras de la memoria, es importante que este cambio ocurra despus de que las seales en el bus de direcciones
estn estables y con el valor de la direccin deseada. De lo contrario, una o ms palabras pueden ser direccionadas momentneamente y ser sobrescritas con diferentes datos. La seal debe

382

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

20 ns
Clock

T1

T2

T3

T4

T1

T4

T1

Direccin vlida

Direccin
Habilitacin
de memoria
Read/
Write
Entrada
de datos

Dato vlido
75 ns
(a) Ciclo de escritura
20 ns

Clock

Direccin

T1

T2

T3

Direccin vlida

Habilitacin
de memoria
Read/
Write
Entrada
de datos

Dato vlido
65 ns
(b) Ciclo de lectura

FIGURA 9-3
Formas de onda del ciclo de memoria

la habilitacin de memoria para poder completar la operacin de escritura. Finalmente, la direccin y el dato deben permanecer estables un poco despus de que la seal Read/Write cambie
a 1 de nuevo para evitar destruir los datos en otras palabras de la memoria. Despus del cuarto
pulso de reloj, la operacin de escritura ha terminado con 5 ns de sobra, y la CPU puede poner
la direccin y las seales para hacer otra peticin de memoria en el siguiente pulso T1.
El ciclo de lectura de la Figura 9-3(b) tiene una direccin para la memoria que proporciona
la CPU. La CPU pone la direccin, cambia la habilitacin de memoria a 1 y la seal Read/Write
a 1 para seleccionar la operacin de lectura, todo esto en el flanco de subida de T1. La memoria
coloca el dato de la palabra seleccionada, mediante la direccin en el bus de salida de datos,
dentro de los 65 ns a partir de que se pone la direccin y se activa la habilitacin de la memoria.
Luego, la CPU transfiere el dato a uno de sus registros internos en el flanco de subida del siguiente pulso T1, en el que tambin se puede cambiar la direccin y las seales de control para
la siguiente peticin de memoria.

MEMORIAS

383

Caractersticas de las memorias


Las memorias en los circuitos integrados pueden ser estticas o dinmicas. Las Memorias Estticas (SRAM, del ingls Static RAM) estn formadas con latches internos que almacenan la
informacin binaria. La informacin permanece almacenada correctamente mientras que la memoria RAM est alimentada. Las Memorias Dinmicas (DRAM, del ingls Dynamic RAM)
almacenan la informacin binaria mediante cargas elctricas en condensadores. Estos condensadores se fabrican dentro del chip utilizando transistores MOS de canal n. La carga almacenada
en el condensador tiende a descargarse con el tiempo, por lo que los condensadores deben ser
recargados peridicamente mediante el refresco de la memoria DRAM. Esto se hace cclicamente en todas las palabras cada pocos milisegundos, leyendo y rescribindolos para restablecer
la carga perdida. Las memorias DRAM de los chips son de bajo consumo y de gran capacidad
de almacenamiento pero las memorias SRAM son ms fciles de usar y tienen unos ciclos de
lectura y escritura ms cortos, y adems, no necesitan un ciclo de refresco.
Las unidades de memorias que pierden la informacin cuando se apaga la alimentacin se
dicen que son voltiles. Las RAM de los circuitos integrados, tanto estticas como dinmicas,
pertenecen a esta categora puesto que sus celdas necesitan una fuente de alimentacin externa
para mantener la informacin almacenada. Por el contrario, una memoria no voltil, como son
los discos magnticos, mantienen su informacin despus de desconectar la alimentacin. Esto
es as porque los datos almacenados en soporte magntico se representan mediante la orientacin de la magnetizacin, que no se pierde al desconectar la fuente de alimentacin. Las memorias ROM son tambin memorias no voltiles, como se vio en la Seccin 3-9.

9-3 MEMORIAS INTEGRADAS SRAM


Como se indic anteriormente, las memorias estn compuestas por circuitos integrados con memoria RAM ms lgica adicional. Primero veremos la estructura interna de una memoria integrada RAM y luego estudiaremos las combinaciones de los chips de memoria RAM y la lgica
adicional usada para construir una memoria. La estructura interna de un chip de memoria RAM
de m palabras de n bits por palabra est compuesta de un array de m n celdas de almacenamiento binario y una circuitera asociada. El circuito se construye con un decodificador para
seleccionar la palabra que se va a leer o a escribir, circuitos de lectura, circuitos de escritura y
lgica de salida. La celda de una memoria RAM es la clula de almacenamiento bsica usada
en un chip de una memoria RAM, que se disea tpicamente como un circuito electrnico en
lugar de un circuito lgico. Sin embargo, es posible y conveniente modelar la memoria RAM de
un chip usando un modelo lgico.
Usaremos un chip de memoria RAM esttica como base para nuestra explicacin. Primero
presentamos la lgica de una clula RAM que almacena un solo bit y posteriormente usamos la
clula jerrquicamente para describir un chip de memoria RAM. La Figura 9-4 muestra el modelo lgico de una celda de memoria RAM. La parte de almacenamiento de la celda se modela
con un latch SR. Las entradas del latch se habilitan con la seal de seleccin, Select. Para Select
igual a 0, el valor almacenado se retiene. Para Select igual a 1, el valor almacenado se determina mediante los valores de B y B1 . Las salidas del latch se habilitan con Select, usando una puerta AND, para generar las salidas de la celda C y C1 . Para Select igual 0, ambas salidas son 0 y
para Select igual a 1, C tiene el valor almacenado y C1 tiene su complemento.
Para obtener un diagrama interconectamos un conjunto de celdas de la memoria RAM y los
circuitos de lectura y escritura para construir una tira de un bit de una memoria RAM que

384

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Select

C
Celda RAM

FIGURA 9-4
Celda de una memoria RAM esttica

contiene todos los circuitos asociados con una posicin de un bit de un conjunto de palabras de
la memoria RAM. En la Figura 9-5 se muestra el diagrama lgico de una tira de un bit de memoria RAM. La parte del modelo que representa a cada celda de la memoria RAM se resalta en
azul. La carga del latch de la clula se controla ahora con una entrada de seleccin de palabra,
Word Select. Si sta es 0, S y R son 0 y el contenido del latch de la clula permanece sin variar.
Si la entrada Word Select es 1, entonces el valor a cargar en el latch se controla con las dos
seales B y que parten de la lgica de escritura. Para que cualquiera de estas seales sea 1 y
puedan cambiar el valor almacenado, Read/Write debe ser 0 y la seal Bit Select debe ser 1.
Entonces, el dato de entrada, DataIn, y su complemento se aplica a B y , respectivamente, para
poner a uno o a cero el latch de la celda de la memoria RAM seleccionada. Si DataIn es 1, el
latch se pone a 1 y si es 0 se pone a 0, completando la operacin de escritura.
Solamente se escribe una palabra cada vez. Es decir, slo una lnea Word Select es 1 y todas
las dems son 0. As, slo la celda de la memoria RAM conectada a B y B1 se escribe. La seal
Word Select tambin controla la lectura de las celdas de la memoria RAM usando la lgica
compartida de la escritura. Si Word Select es 0, el valor almacenado en el latch SR se bloquea
mediante las puertas AND para que no alcance a las dos puertas OR de la lgica de lectura.
Pero si Word Select es 1, el valor almacenado pasa a travs de las puertas OR y se captura en el
latch SR de la lgica de lectura. Si la seal Bit Select tambin es 1, el valor capturado tambin
aparece en la lnea Data Out de la tira de un bit de la memoria RAM. Vase que, para el diseo
de esta lgica de lectura en particular, la lectura ocurre independientemente del valor de la seal
Read/Write.
El smbolo de la tira de un bit de una memoria RAM, que se da en la Figura 9-5(b), se
utiliza para representar la estructura interna de un chip de memoria RAM. Cada lnea de seleccin se extiende ms all de la tira de un bit de forma que cuando varias tiras de un bit se
colocan una junto a otra, se conectan las correspondientes lneas de seleccin. Las otras seales
de la parte baja del smbolo se pueden conectar de diversas formas dependiendo de la estructura
del chip de memoria RAM.
En la Figura 9-6 se muestra el smbolo y el diagrama de bloques de un chip de una memoria
RAM de 16 # 1. Ambos tienen 4 entradas de direcciones para las 16 palabras de un bit almacenadas en la memoria RAM. La habilitacin del chip, Chip Select, a nivel del chip se corresponde
con la habilitacin de memoria, Memory Enable, a nivel de la memoria RAM formada por varios
chips. La estructura interna de la RAM est compuesta por una tira de un bit de memoria RAM
que tiene 16 celdas. Como hay 16 lneas de seleccin de palabra que controlar, de forma que una
y solo una tienen un 1 lgico en un instante dado, se utiliza un decodificador de 4 a 16 lneas para
descodificar los cuatro bits de direccin a los 16 bits de la palabra de seleccin.

MEMORIAS

385

FIGURA 9-5
Modelo de una tira de un bit de la memoria RAM

La nica lgica adicional en la figura es un tringulo con una entrada normal, una salida
normal y una segunda entrada debajo del smbolo. Este smbolo es un buffer triestado que permite la construccin de un multiplexor con un nmero arbitrario de entradas. Las salidas triestado se conectan juntas y se controlan adecuadamente usando las entradas de Chip Select. Con el
uso de los buffers tri-estado en las salidas de la memoria RAM, dichas salidas pueden unirse
para sacar la palabra del chip cuando ste se lee de las lneas de salidas conectadas a las salidas
de la RAM. Las seales de habilitacin anteriormente comentadas se corresponden con las entradas de Chip Select de los chips de la memoria RAM. Para leer una palabra un chip de memoria RAM concreto, el valor de Chip Select para ese chip debe ser 1 y para los chips restantes,
que estn conectados a las mismas lneas de salida, el Chip Select deben ser 0. Estas combinaciones que contienen un nico 1 se pueden obtener de un decodificador.

386

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Decodificador Word select


0
4 a 16
A3

A3

23

1
Celda
RAM

2
A2

A2

22

A1

A1

3
4

5
Celda
RAM

6
A0

A0
RAM
16 1

20

7
8
9
10

Data
Output

Data
Input

11
12
13
14
15

Read/
Write

Celda
RAM

Memory
enable

Lgica de
lectura/escritura

(a) Smbolo

Data Input

Data in
Data out
Read/
Write

Data
Output

Bit
Select

Read/Write
Chip Select
(b) Diagrama de bloque

FIGURA 9-6
Chip de memoria RAM de 16 palabras de 1 bit.

Seleccin combinada
Dentro de un chip de memoria RAM, el decodificador de k entradas y 2k salidas necesita 2k
puertas AND con k entradas por puerta si se utiliza un mtodo de diseo directo. Adems, si el
nmero de palabras es grande, y todos los bits correspondientes a una posicin de una palabra
est en una nica tira de un bit de una memoria RAM, el nmero de celdas RAM compartiendo
los circuitos de lectura y escritura tambin es grande. Las caractersticas elctricas resultantes
de estas dos situaciones hacen que los tiempos de acceso de lectura y escritura de la memoria
RAM sean largos, lo que cual es indeseable.

MEMORIAS

387

El nmero total de puertas del decodificador, el nmero de entradas por puerta y el nmero
de celdas de memoria RAM por tira de un bit pueden reducirse empleando dos decodificadores
empleando un mtodo de seleccin combinada. Una posible configuracin es utilizar dos decodificadores de k/2 entradas en lugar de uno de k entradas. Un decodificador controla las lneas
de seleccin de palabra y el otro controla las lneas de seleccin de bit. El resultado es un mtodo de seleccin con una matriz bidimensional. Si el chip de memoria RAM tiene m palabras de
1 bit por palabra, el mtodo selecciona la clula de la memoria que est en la interseccin de la
fila de seleccin de palabra y la columna de seleccin de bit. Como Word Select no selecciona
estrictamente palabras, su nombre se cambia a Row Select (seleccin de fila). A las salidas del
decodificador aadido, que selecciona una o ms tiras de bits se les llamar Column Select (seleccin de columna).
En la Figura 9-7 se muestra el mtodo de seleccin combinada para un chip de memoria RAM. El chip esta formado por cuatro tiras de bits con cuatro bits en cada una y tiene un
Decodificador
de filas
Decodificador
2a4
0
A3

21

A2

20

Celda RAM
0

Celda RAM
1

Celda RAM
2

Celda RAM
3

Celda RAM
4

Celda RAM
5

Celda RAM
6

Celda RAM
7

Celda RAM
8

Celda RAM
9

Celda RAM
10

Celda RAM
11

Celda RAM
12

Celda RAM
13

Celda RAM
14

Celda RAM
15

Lgica de
lectura/escritura

Lgica de
lectura/escritura

Lgica de
lectura/escritura

Lgica de
lectura/escritura

Data In

Data In

Data In

Data In

1
Row
Select
2

Data Out

Data Out
Read/
Write

Read/
Write

Bit
Select

Data Out

Data Out
Read/
Write

Bit
Select

Read/
Write

Bit
Select

Bit
Select

Data Input
Read/Write

Selector de columna
0
Decodificador
de columna

Data
Output

Decodificador 2 a 4
con habilitacin
21

20

A1

A0

Habilitacin

Chip Select

FIGURA 9-7
Diagrama de una memoria RAM de 16 # 1 utilizando un array de 4 # 4 celdas de memoria RAM

388

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

total de 16 celdas de memoria RAM en un array de dos dimensiones. Los dos bits ms significativos del bus de direcciones van al decodificador de 2 a 4 lneas de las filas para seleccionar una
de las cuatro filas del array. Las dos lneas menos significativas del bus de direcciones van al
decodificador de 2 a 4 lneas de las columnas para seleccionar una de las cuatro columnas (tiras
de un bit) del array. El decodificador de las columnas se habilita con la entrada de Chip Select.
Cuando el Chip Select es 0, todas las salidas del decodificador estn a 0 y no se selecciona
ninguna de las celdas. Esto evita la escritura en cualquier celda del array de la memoria RAM.
Cuando Chip Select es 1, se accede a un solo bit de la memoria. Por ejemplo, para la direccin
1001, los dos primeros bits de direcciones se decodifican para seleccionar la fila 10 (210) del
array de celdas de la memoria. Los otros dos bits de direcciones se decodifican para seleccionar
la columna 01 (110) del array. La celda de la memoria a la que se accede, en la fila 2 y columna 1 del array, es la celda 9 (102 012). Una vez seleccionada la fila y la columna, la entrada
Read/Write determina la operacin a realizar en la memoria. Durante la operacin de lectura
(Read/Write % 1), el bit seleccionado de la columna seleccionada pasa por la puerta OR al
buffer triestado. Ntese que la puerta se dibuja de acuerdo con el array lgico presentado en la
Figura 3-22. Como el buffer se habilita con la seal Chip Select, el valor leido aparece en
la salida de datos, Data Output. En la operacin de escritura (Read/Write % 0), el bit disponible
en la lnea de entrada de datos, Data Input, el bit disponible en la lnea de entrada de datos, Data
Input, se transfiere a la celda seleccionada de la memoria. El resto de las celdas no seleccionadas de la memoria estn deshabilitadas y sus valores almacenados permanecen sin cambiar.
El mismo array de celdas se usa en la Figura 9-8 para construir una memoria RAM de 8 # 2
(ocho palabras de 2 bits). La decodificacin de las filas no cambia con respecto de la Figura
9-7; los nicos cambios estn en las columnas y en la lgica de salida. Al tener solo tres bits de
direcciones y utilizar dos de ellos para el decodificador de filas, el decodificador de las columnas utiliza como entradas al bit de direcciones restante y la entrada Chip Select para generar dos
lneas de seleccin de columna. Puesto que se quiere leer o escribir dos bits simultneamente,
las lneas de seleccin de columna van conectadas a los pares de tiras de un bit adyacentes. Las
dos lneas de entrada, Data Input 0 y Data Input 1, van cada una a diferentes bits de cada uno de
los pares. Finalmente, los bits correspondientes de cada par comparten la salida de las puertas
OR y de los buffers triestado, dando lugar a las lneas de salida Data Output 0 y Data Output 1.
La forma de operar de esta estructura se puede ilustrar mediante la aplicacin de la direccin 3
(0112). Los primeros dos bits de la direccin, 01, seleccionan la fila 1 del array. El ltimo bit, 1,
selecciona la columna 1, compuesta por las tiras 2 (102) y 3 (112) de un bit. De esta forma, la
palabra a escribir o a leer est en las celdas 6 y 7 de la memoria (011 02 y 011 12), que contienen a los bits 0 y 1, respectivamente, de la palabra 3.
Podemos demostrar el ahorro de la seleccin combinada considerando una memoria RAM
esttica de un tamao real, 32 K # 8. Esta memoria contiene un total de 256 K bits. Haciendo
el nmero de columnas del array igual al de filas, calculamos la raz cuadrada de 256 K, que da
un resultado de 512 % 29. De esta forma, los primeros nueve bits de direccin se conectan al
decodificador de filas y los seis restantes al decodificador de columnas. Sin seleccin combinada, el nico decodificador tendra 15 entradas y 32.768 salidas. Con seleccin combinada, hay
un decodificador de 9 a 512 lneas y uno de 6 a 64 lneas. El nmero de puertas en el diseo con
un solo decodificador sera de 32 800. En el caso de los dos decodificadores combinados, el
nmero de puertas es 608, reducindose el nmero de puertas por un factor mayor que 50. Adems, aunque parezca que hay 64 veces tantos circuitos de lectura/escritura, la seleccin de columna se puede hacer entre las celdas de la memoria RAM y los circuitos de lectura/escritura,
as que slo se necesitan los ocho circuitos originales. Debido al reducido nmero de celdas de
memoria conectadas a cada circuito de lectura/escritura, los tiempos de acceso del chip tambin
se mejoran.

MEMORIAS

389

FIGURA 9-8
Diagrama de bloques de una memoria RAM de 8 # 21 utilizando un array de 4 # 4 celdas de memoria RAM

9-4 ARRAY DE CIRCUITOS INTEGRADOS DE MEMORIA SRAM


Los circuitos integrados de memoria RAM estn disponibles en diversos tamaos. Si la unidad
de memoria necesaria en una aplicacin determinada es mayor que la capacidad de un chip, es
necesario combinar un nmero de circuitos integrados en un array para construir la memoria
con el tamao requerido. La capacidad de la memoria depende de dos parmetros: el nmero de
palabras y el nmero de bits por palabra. Un incremento en el nmero de palabras obliga a que
incrementemos la longitud de la direccin. Cada bit aadido a la longitud de la direccin dobla
el nmero de palabras en la memoria. Un incremento en el nmero de bits por palabra obliga a
que incrementemos el nmero de lneas de entrada y salida de datos pero la longitud de la direccin permanece constante.
Para mostrar un array de circuitos integrados de memoria RAM vamos a utilizar un chip de
memoria RAM, usando una representacin condensada sus entradas y salidas, segn se muestra
en la Figura 9-9. La capacidad del chip es de 64 K palabras de 8 bits cada una. El integrado

390

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

RAM 64 K 8
Entradas de datos
Direcciones

8
16

DATA

Salida de datos

ADRS

Chip Select

CS

Read/Write

R/W

FIGURA 9-9
Smbolo de una memoria RAM de 64 # 8

necesita, por tanto, 16 lneas de direcciones, 8 lneas para la entrada y 8 lneas para la salida. En
lugar de usar 16 lneas para las direcciones y 8 para la entrada y la salida, cada conjunto de
lneas se mostrar en el diagrama de bloques como una lnea simple. Cada lnea est cruzada
por una lnea inclinada con un nmero que indica el nmero de lneas representadas en cada
bus. La entrada CS (Chip Select) selecciona a un chip concreto de la memoria RAM y la entrada R/W1 (Read/Write) especifica la operacin de lectura o escritura cuando el chip ha sido seleccionado. El tringulo pequeo a la salida es el smbolo estndar para representar las salidas triestado. La entrada CS de la memoria RAM controla el comportamiento de las lneas de salida.
Cuando CS % 0, el chip no ha sido seleccionado y todas las lneas de salida estn en estado de
alta impedancia. Cuando CS % 1, las lneas de salida de datos llevan los ocho bits de la palabra
seleccionada.
Suponga que queremos incrementar el nmero de palabras en la memoria usando dos o ms
chips de memoria RAM. Puesto que por cada bit que se aade a la direccin se dobla el nmero
binario que se puede formar, la forma natural de incrementar el nmero de palabras es por un
factor de dos. Por ejemplo, dos chips de memoria doblarn el nmero de palabras y se aadir
un bit ms para componer la direccin. Cuatro chips de memoria multiplican el nmero de palabras por cuatro y se aaden dos bits ms para componer la direccin.
Considere la posibilidad de construir una memoria RAM de 256 K # 8 con cuatro chips de
memoria RAM de 64 K # 8, como se muestra en la Figura 9-10. Las ocho lneas de datos llegan a todos los chips. Las salidas tri-estado se pueden conectar para formar un bus de salida de
datos comn. Este tipo de conexin de salida slo es posible con salidas tri-estado. En cualquier
instante, solamente se activar una entrada de seleccin de un chip, mientras que los restantes
estarn deshabilitados. Las ocho salidas del chip seleccionado tendrn unos y ceros y las salidas
de los otros tres estarn en estado de alta impedancia, presentndose slo como circuitos abiertos a las seales de salida del circuito seleccionado.
La memoria de 256 K palabras necesita un bus de direcciones de 18 bits. Los 16 bits menos
significativos se conectan a las entradas de direcciones de los cuatro chips. Los dos bits ms
significativos se llevan a las entradas de un decodificador de 2 a 4 lneas. Las cuatro salidas del
decodificador se aplican a las entradas CS de los cuatro chips. La memoria se deshabilita cuando la entrada EN del decodificador, Memory enable, es igual a 0. Las cuatro salidas del decodificador son 0 y ningn chip est siendo seleccionado. Cuando el decodificador est habilitado,
los bits de direcciones 17 y 16 determinan cul de los cuatro chips ha sido seleccionado. Si
estos bits son igual a 00, el chip de memoria seleccionado es el primero. El resto de los 16 bits
de direcciones seleccionan entonces una palabra dentro del chip en el rango de 0 a 65 535. Las
siguientes 65 535 palabras se seleccionan del segundo chip de memoria con una direccin de 18
bits que empieza con 01 seguido de los 16 bits restantes de las lneas comunes del bus de direcciones. El rango de direcciones para cada chip se enumera en decimal debajo de su smbolo.

MEMORIAS

391

Direcciones
Lneas
17
16

Lneas 15-0
16

Memory
Enable

Decodificador
2a4
EN
3

Entrada
de datos
8
RAM 64K 8
DATA
ADRS
CS

Read/
Write

R/W
0-65 535
RAM 64K 8
DATA
ADRS
CS
R/W
65 536-131 071
RAM 64K 8
DATA
ADRS
CS
R/W
131 072-196 607
RAM 64K 8
DATA
ADRS
CS

R/W
196 608-262 143 Salida de datos

FIGURA 9-10
Diagrama de bloques de una memoria RAM de 256 K # 8

Tambin es posible combinar dos chips para formar una memoria compuesta que contenga
el mismo nmero de palabras pero con el doble de bits en cada palabra. En la Figura 9-11 se
muestra la interconexin de dos chips para formar una memoria de 64 K # 16. Las 16 lneas de
entrada y de salida se dividen entre los chips. Ambos reciben los 16 bits de direcciones y las
entradas comunes de control CS y R/W1 .
Las dos tcnicas que se acaban de describir pueden combinarse para montar un array de
chips idnticos para formar una memoria de gran capacidad. La memoria compuesta tendr
un nmero de bits por palabra que ser mltiplo del nmero de bits por palabra de cada chip.

392

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

16 lneas de entrada de datos


8
Direcciones

16
RAM 64K 8
8
16

DATA

RAM 64K 8
8

16

ADRS

DATA
ADRS

Chip Select

CS

CS

Read/Write

R/W

R/W

16 lneas de salida de datos

FIGURA 9-11
Diagrama de bloques de una memoria RAM de 64 K # 16

El nmero total de palabras se incrementar por un factor de dos veces la capacidad de palabras
de un chip. Se necesita utilizar un decodificador externo para seleccionar a los chips individualmente segn los bits adicionales de la memoria compuesta. Para reducir el nmero de pines del
encapsulado del chip, muchos circuitos integrados tienen terminales comunes para la entrada y
salida de datos. En este caso se dice que los terminales son bidireccionales, que quiere decir que
para la operacin de lectura stos actan como salidas y para la operacin de escritura funcionan como entradas. Las lneas bidireccionales se construyen con buffers triestado, que ya
se explicaron en la Seccin 2-8. El uso de seales bidireccionales necesitan el control de los
buffers triestado mediante las seales Chip Select y Read/Write.

9-5 CIRCUITOS INTEGRADOS DE MEMORIA DRAM


Las memorias RAM dinmicas (DRAM) dominan las aplicaciones con memorias de alta capacidad, incluyendo la memoria principal de las computadoras, debido a que proporcionan alta capacidad a bajo coste. Lgicamente, en muchos aspectos la memoria DRAM es similar a la memoria SRAM. Sin embargo, debido a los circuitos electrnicos utilizados para fabricar las
celdas de almacenamiento, su diseo electrnico es considerablemente ms desafiante. Adems,
como el nombre dinmico implica, el almacenamiento de la informacin es inherentemente
temporal. Como consecuencia, la informacin debe refrescarse peridicamente para imitar el
comportamiento del almacenamiento esttico. Esta necesidad de refresco es la principal diferencia lgica en el comportamiento de una memoria DRAM en comparacin con la SRAM. Exploraremos esta diferencia lgica examinando la celda de una memoria RAM dinmica, la lgica
requerida para realizar la operacin de refresco y el impacto de esta operacin en el funcionamiento de la memoria del sistema.

MEMORIAS

393

Celda DRAM
En la Figura 9-12(a) se muestra la celda de una memoria RAM dinmica. Consiste en un condensador C y un transistor T. El condensador se usa para almacenar carga elctrica. Si hay suficiente carga almacenada en el condensador, se puede considerar que hay almacenado un 1 lgico. Si la carga almacenada en el condensador es insuficiente, se puede considerar que hay
almacenado un 0 lgico. El transistor acta de forma muy parecida a un conmutador, de la misma forma que la puerta de transmisin presentada en el Captulo 2. Cuando el conmutador est
abierto, la carga del condensador permanece fija aproximadamente, en otras palabras, est
almacenada. Pero cuando el conmutador est cerrado, la carga puede fluir a dentro y a fuera
del condensador a travs de la lnea externa (B). Este flujo de carga permite escribir en la celda
un 1 o un 0 y ser leda.
Para comprender las operaciones de lectura y escritura de la celda utilizaremos una analoga
hidrulica con agua en lugar de carga, con un pequeo depsito en lugar del condensador y una
vlvula en lugar de un transistor. La lnea B tiene una gran capacidad y se representa por un
depsito grande y una bomba que puede llenar y vaciar el depsito rpidamente. En las Figuras 9-12(b) y 9-12(c) se representa est analoga con la vlvula cerrada. Ntese que en un caso
el depsito pequeo est lleno, representado un 1 y en el otro caso est vaco, representando un
0. Suponga que se va a escribir un 1 en la celda. La vlvula se abre y la bomba llena el depsito
grande. El agua fluye a travs de la vlvula llenando el depsito pequeo, como se muestra en
la Figura 9-12(d). Luego se cierra la vlvula dejando el depsito pequeo lleno, lo cual representa un 1. Se puede escribir un 0 utilizando el mismo tipo de procedimiento con la excepcin
de que la bomba vaca el depsito grande, como se muestra en la Figura 9-12(e).
Suponga ahora que queremos leer un valor almacenado y ese valor es 1, que se corresponde
con un depsito lleno. Con el depsito grande a un nivel conocido intermedio, se abre la vlvula. Puesto que el depsito pequeo est lleno, el agua fluye del depsito pequeo al grande,
incrementando su nivel de agua ligeramente, como se muestra en la Figura 9-12(f). Este incremento en el nivel se observa como la lectura de un 1 del almacenamiento del depsito. CorresSelect
T

A la bomba

C
Celda DRAM
(a)

(b)

(c)

(d)

(e)

(f)

(g)

Select

D
C

C
Modelo de
celda DRAM

(h)

FIGURA 9-12
Celda de memoria RAM dinmica, analoga hidrulica del funcionamiento de la celda
y modelo de la celda

394

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

pondientemente, si el depsito de almacenamiento est inicialmente vaco, habr un leve decremento en el nivel del depsito grande de la Figura 9-12(g), el cual se observa como la lectura de
un 0 del depsito de almacenamiento.
En la operacin de lectura descrita, las Figuras 9-12(f) y 9-12(g) muestran que, independientemente del valor inicial almacenado en el depsito de almacenamiento, contiene ahora un valor
intermedio que no provoca cambio suficiente en el nivel del depsito externo para permitir observar un 0 o un 1. As, la operacin de lectura ha destruido el valor almacenado; a esto le
llamaremos lectura destructiva. Para permitir una lectura del valor original almacenado en un
futuro, debemos restaurar dicho valor (es decir, devolver el depsito de almacenamiento a su
nivel original). Para llevar a cabo el restablecimiento del 1 observado, el depsito grande se
llena con la bomba y el depsito pequeo se llena a travs de la vlvula abierta. Para llevar al
cabo el restablecimiento de un 0 almacenado que se ha observado, el depsito grande se vaca
con la bomba y el depsito pequeo se desagua a travs de la vlvula abierta.
En las celdas de almacenamiento actuales hay otros caminos para el flujo de cargas.
Estos caminos son anlogos a pequeas fugas en un depsito de almacenamiento. Debido a
estas fugas, un depsito pequeo podr desaguarse ocasionalmente hasta un punto en el que
el incremento de nivel del depsito grande en una lectura puede no ser visto como un incremento. De hecho, si el depsito pequeo est a menos de la mitad cuando se lee, es posible que se pueda observar un decremento en el nivel del depsito grande. Para compensar
estas fugas, el depsito pequeo, que almacena un 1, debe llenarse peridicamente. A esto se
llama refresco del contenido de la celda. Cada celda de almacenamiento debe refrescarse antes de que su nivel haya cado a un punto tal que el valor almacenado no se pueda observar
correctamente.
El funcionamiento de la memoria DRAM se ha explicado mediante una analoga hidrulica.
Igual que hicimos con la memoria SRAM, empleamos un modelo lgico para la celda. El modelo se muestra en la Figura 9-12(h) es un latch tipo D. La entrada C al latch tipo D es Select y la
entrada D del latch es B. Para modelar la salida de la celda de la memoria DRAM usamos un
buffer triestado con la seal Select como entrada de control y C como su salida. En el circuito
electrnico original de la celda de memoria DRAM de la Figura 9-12(a), B y C son la misma
seal pero en el modelo lgico estn separadas. Esto es necesario hacerlo en el proceso de modelado para evitar conectar las salidas de las puertas.

Tira de un bit de memoria DRAM


Usando el modelo lgico de la celda de memoria DRAM, vamos a construir el modelo de una
tira de un bit de una memoria DRAM, como se muestra en la Figura 9-13. Este modelo es similar al de la tira de un bit de la memoria DRAM de la Figura 9-5. Es evidente que, aparte de la
estructura de la celda, las dos tiras de un bit de memoria RAM son similares desde el punto de
vista lgico. Sin embargo, desde el punto de vista del coste por bit, hay bastantes diferencias. La
celda de una memoria DRAM est formada por un condensador ms un transistor. La celda de
memoria SRAM est formada tpicamente por seis transistores, dando a la celda una complejidad tres veces superior, aproximadamente, a la de la memoria DRAM. Por tanto, el nmero de
celdas de memoria SRAM, en un chip de un tamao dado, es menor que un tercio del nmero
de celdas en una memoria DRAM. El coste por bit de una memoria DRAM es menor que un
tercio del coste por bit de una memoria SRAM, lo cual justifica el uso de memorias DRAM en
memorias de gran capacidad.

MEMORIAS

Word
Select
0

395

Select

Word
Select
0

Modelo de
celda DRAM

Celda
DRAM
Word
Select
1
Word
Select
2n 1

Celda
DRAM

Select

Word
Select
2n 1

Modelo de
celda DRAM

Celda
DRAM
Lgica de
lectura/escritura
Amplificador
sensor

Data In

Data In
Data Out
Read/ Bit
Write
Select
(b) Smbolo

Lgica
de
escritura
Read/
Write

Bit
Select

Lgica
de lectura

Data Out

(a) Diagrama lgico

FIGURA 9-13
Modelo de la tira de un bit de una memoria DRAM

Queda por discutir el refresco del contenido de la memoria DRAM. Antes de eso, necesitamos desarrollar la estructura tpica usada para manejar el direccionamiento de las memorias
DRAM. Puesto que muchos chips de memoria DRAM se usan para formar una memoria
DRAM, queremos reducir el tamao fsico de los chips de la DRAM. Las memorias DRAM de
gran capacidad necesitan 20 o ms bits de direccin, lo cual supone 20 pines de direccin en
cada chip. Para reducir el nmero de pines, las direcciones de la memoria DRAM se aplican va
serie en dos partes, la primera para la direccin de las filas y la segunda para la direccin de las
columnas. Esto se puede hacer puesto que la direccin de las filas, que realiza la seleccin de
fila, en realidad se necesita un tiempo antes que la direccin de las columnas, que es la que saca
los datos para la lectura de la fila seleccionada. Para mantener las direcciones de la fila durante
el ciclo de lectura o escritura, se almacena en un registro, segn se muestra en la Figura 9-14.
Las direcciones de las columnas tambin se almacenan en un registro. La seal de carga para el

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Controlador
de refresco

Direcciones
de filas

Registro de
direcciones de fila

Lgica de temporizacin de filas

Tira de
memoria
DRAM

Tira de
memoria
DRAM

Tira de
memoria
DRAM

.
.
.

RAS

.
.
.

.
.
.

Contador
de refresco

Descodificador de filas

CAS
R/W
OE
Direcciones
de columnas

Lgica de temporizacin de columnas

Lgica de entrada/salida

Registro de direccin de columna

Descodificador de columnas

.
.
.

396

Data In/
Data Out

FIGURA 9-14
Diagrama de bloques de una memoria DRAM incluida su lgica de refresco

registro de direcciones de las filas es RAS (del ingls Row Adress Strobe) y para el registro de
direcciones de las columnas es CAS (del ingls Column Adress Strobe). Adems de estas seales
de control, los chips de memoria DRAM tambin tienen las seales de control R/W1 (Read/Write) y OE (del ingls Output Enable). Vase que en este diseo usa seales activas a nivel bajo.
En la Figura 9-15(a) aparece la temporizacin de las seales para las operaciones de escritura y lectura. La direccin de la fila se aplica a las entradas de direccin, y la seal RAS cambia
de 1 a 0, cargando la direccin de la fila en el registro de direcciones de las filas. Esta direccin
se aplica al decodificador de las direcciones de las filas y selecciona una fila de celdas de la
memoria DRAM. Mientras tanto, se aplican la direccin de la columna y, luego, la seal CAS
cambia de 1 a 0, cargando la direccin de la columna en el registro de direcciones de las columnas. Esta direccin se aplica al decodificador de direcciones de las columnas, seleccionando un
conjunto de columnas del array de la memoria RAM, de igual tamao que el nmero de bit de
los datos. La entrada de un dato, con Read/Write % 0, se aplica en un intervalo de tiempo similar al de la direccin de la columna. Los bits de datos se llevan a un conjunto de lneas de bits
seleccionadas por el decodificador de direcciones de columnas, para llevar estos valores a las
celdas de la memoria de la columna seleccionada, escribiendo los datos nuevos en las celdas.
Cuando CAS y RAS pasan a valer 1, el ciclo de escritura se ha completado y las celdas de la
memoria almacenan los nuevos datos escritos. Vase que el dato almacenado en el resto de las
celdas de la fila direccionada se ha restaurado.
La temporizacin de las seales en el ciclo de lectura es similar, como se muestra en la
Figura 9-15(b). La temporizacin de las direcciones es el mismo. Sin embargo, no se aplican
datos y Read/Write es 1 en lugar de 0. Los valores del dato en las celdas de la memoria DRAM
de la fila seleccionada se aplican a las lneas y se detectan por amplificadores sensores. El decodificador de direcciones de las columnas selecciona los valores que van a ser enviados a la

MEMORIAS

397

20 ns
Clock

Direcciones

T1

T2

T3

T4

T1

T4

T1

Direccin
de la columna

Direccin
de la fila

RAS

CAS
Output
Enable
Read/
Write
Entrada
de datos

Dato vlido
75 ns
(a) Ciclo de escritura
20 ns

Clock

Direcciones

T1

T2

T3

Direccin
de la columna

Direccin
de la fila

RAS

CAS
Output
Enable
Read/
Write

Salida
de datos

Hi-Z

Dato vlido
65 ns
(b) Ciclo de lectura

FIGURA 9-15
Temporizacin para las operaciones de lectura y escritura de una memoria DRAM

salida de datos, habilitada por OE. Durante la operacin de lectura, todos los valores de la fila
seleccionada se restauran.
Para proporcionar el refresco est la lgica adicional en el diagrama de bloques de la Figura 9-14 (rectngulos coloreados). Hay un contador de refresco y un controlador de refresco.
El contador de refresco se usa para proporcionar la direccin de la fila de las celdas de la me-

398

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

moria DRAM a refrescar. Esto es fundamental en los modos de refresco que necesita la direccin a ser proporcionada desde el interior del chip de la memoria DRAM. El contador de refresco avanza en cada ciclo de refresco. Segn el nmero de bits del contador, cuando alcanza el
valor 2n . 1, donde n es el nmero de filas del array de la memoria, pasa a 0 en el siguiente
ciclo de refresco. Las formas estndar en la que el refresco se efecta y el tipo de refresco correspondiente son los siguientes:
1.

RAS only refresh. La direccin de una columna se coloca en las lneas de direccin y
la seal RAS se pone a 0. En este caso, la direccin a refrescar debe proceder del exterior del chip de memoria DRAM, tpicamente de un circuito integrado llamado controlador de DRAM.
2. CAS before RAS refresh. La seal CAS cambia de 1 a 0 y seguida de un cambio de 1
a 0 en la seal RAS. Se pueden llevar a cabo ciclos de refresco adicionales cambiando
la seal RAS sin cambiar la seal CAS. En este caso, las direcciones de refresco proceden del contador de refresco, que se incrementa despus del refresco para cada ciclo.
3. Hidden refresh. Siguiendo una escritura o lectura normal, la seal CAS se deja a 0 y la
seal RAS se activa cclicamente, efectuando un refresco del tipo CAS before RAS
refresh. Durante un hidden refresh, la salida del dato de la anterior lectura permanece
vlido. De esta forma, el refresco permanece oculto. Desafortunadamente, el tiempo
empleado por el hidden refresh es significativo, de forma que se retrasa la siguiente
operacin de lectura y escritura.

En todos los casos, tenga en cuenta que el inicio del refresco se controla externamente usando las seales RAS y CAS. Cada fila de un chip de memoria DRAM necesita un refresco dentro
de un tiempo de refresco mximo especificado, tpicamente en el rango de 16 a 64 milisegundos
(ms). Los refrescos pueden realizarse en puntos espaciados uniformemente, llamndose entonces refresco en modo distribuido. Alternativamente, todos los refrescos se realizan uno despus
de otro, llamndose refresco en modo rfaga. Por ejemplo, una memoria DRAM de 4 M # 4
tiene un tiempo de refresco de 64 ms y tiene 4096 filas para refrescar. La cantidad de tiempo
para realizar un nico refresco es de 60 ns y el intervalo de refresco en modo distribuido es
64 ms/4096 % 15,6 microsegundos (]s). El tiempo total de refresco de 0.25 ms se saca del
intervalo de 64 ms del intervalo de refresco. Durante los ciclos de refresco no se pueden efectuar operaciones de lectura ni de escritura en la memoria DRAM. Puesto que la rfaga de refresco podra parar la operacin de la computadora durante un periodo bastante largo, el modo de
refresco ms utilizado es el distribuido.

9-6 TIPOS DE MEMORIA DRAM


En las dos ltimas dcadas la capacidad y la velocidad de las memorias DRAM se han incrementado significativamente. La demanda de mayor velocidad ha dado lugar a la evolucin de
varios tipos de memoria DRAM. En la Tabla 9-2 se enumeran algunos tipos de memoria
DRAM junto a una breve descripcin. De los tipos de memoria enumerados, los dos primeros
tipos han sido reemplazados en el mercado por memorias SDRAM y RDRAM ms avanzadas.
Al existir una presentacin sobre cdigos de correccin de errores (ECC) para memorias en la
pgina web del libro, nos centraremos en las memorias DRAM sncronas, memorias DRAM de
doble velocidad (double data rate synchronous DRAM) y memorias DRAM Rambus5. Antes
de considerar estos tres tipos de memoria DRAM se presentaran brevemente algunos conceptos
bsicos.

MEMORIAS

399

TABLA 9-2
Tipos de DRAM
Tipo

Abreviatura

Descripcin

Fast Page
Mode DRAM

FPM DRAM

Toma la ventaja del hecho de que, cuando se accede a una


fila, todos sus valores estn disponibles para leerse. Cambiando la direccin de la columna se pueden leer los datos
de diferentes direcciones sin necesidad de volver a poner
la direccin de la fila y sin tener que esperar por el retardo
asociado con la lectura de la fila de celdas si la porcin de
la fila coincide con las direcciones

Extended Data
Output DRAM

EDO DRAM

Aumenta el tiempo que la DRAM mantiene los valores de


los datos en su salida, permitiendo que la CPU realice
otras tareas durante el acceso puesto que sabe que el dato
estar todava disponible.

Synchronous
DRAM

SDRAM

Funciona con un reloj en lugar de operar asncronamente.


Esto permite una ms estrecha interaccin entre la memoria y la CPU ya que la CPU conoce exactamente cuando
los datos estarn disponibles. La memoria SDRAM usa la
ventaja de la disponibilidad del valor de la fila y divide
la memoria en distintos bancos, permitiendo el acceso solapado.

Double
Data Rate
Synchronous
DRAM

DDR SDRAM

Igual que la memoria SDRAM excepto que la salida de los


datos se proporciona tanto en el flanco de subida como en
el de bajada.

Rambus5
DRAM

RDRAM

Una tecnologa propietaria que proporciona una muy alta


velocidad de acceso usando un bus relativamente estrecho.

Error-Correcting
Code

ECC

Se puede aplicar a la mayora de los anteriores tipos de


memorias DRAM para corregir errores en los datos de un
bit y detectar los errores de dos bits.

Primero, hemos de indicar que estos tres tipos de memoria DRAM funcionan bien debido al
particular entorno en el que trabajan. En los modernos sistemas de alta velocidad, el procesador
interacta con la memoria DRAM dentro de una memoria jerrquica. La mayora de las instrucciones y datos para el procesador se extraen de los dos niveles ms bajos de la jerarqua, las
cachs de primer y segundo nivel (L1 y L2 respectivamente). Estas memorias son, en comparacin, ms pequea que las estructuras de memoria basadas en memorias SRAM, que se tratan
con detalle en el captulo 14. En nuestro estudio, la cuestin clave es que la mayora de las
lecturas de la DRAM no se realizan directamente por la CPU, en su lugar, se realizan lecturas

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

iniciales que llevan los datos y las instrucciones a estas cachs. Las lecturas se efectan sobre
un bloque de direcciones consecutivas cuya informacin se lleva a las cachs. Por ejemplo, realizar una lectura de 16 bytes de las direcciones 000000 a la 00000F. A esto se le llama rfaga de
lectura. En rfagas de lectura el parmetro importante es la velocidad efectiva de lectura de
bytes, que depende de las lecturas de las direcciones consecutivas, ms que el tiempo de acceso.
Segn este parmetro, los tres tipos de memorias presentadas proporcionan un funcionamiento
muy rpido.
Segundo, la efectividad de estos tres tipos de memoria DRAM depende del principio fundamental involucrado en el funcionamiento de las memorias DRAM, la lectura de todos y cada
uno de los bits de una fila en cada operacin de lectura. Este principio implica que todos los bits
de la fila estn disponibles despus de una lectura usando esa fila si estos deben accederse. Con
estos dos conceptos en mente, se puede presentar la memoria DRAM sncrona (SDRAM).

Memoria sncrona DRAM (SDRAM)


El uso de transferencias sincronizadas con el reloj diferencia a la memoria SDRAM de la
DRAM convencional. En la Figura 9-16 aparece el diagrama de bloques de un circuito de memoria SDRAM de 16 megabytes. Las entradas y las salidas difieren en algo de las del diagrama
de bloques de la memoria DRAM de la Figura 9-14 con la excepcin de la presencia del reloj
para sincronizar las operaciones. Internamente, hay ciertas diferencias. Puesto que la memoria
SDRAM tiene una apariencia externa sncrona, tiene registros en las entradas de direccin y en
las entradas y salidas de datos. Adems se le ha incorporado un contador de direcciones de
columna, que es la clave del funcionamiento de la memoria SDRAM. La lgica de control puede parecer similar pero, en este caso, es mucho ms complicada ya que tiene una palabra de
control de modo que se puede cargar del bus de direcciones. Suponiendo una memoria de
16 MB, el array de celdas de la memoria contiene 134 217 728 bits y es casi cuadrada, con

D(7:0)
Array de celdas
de memoria

A(11:0)

Registro de entrada
de datos

Descodificador de filas

Lgica E/S

Descodificador
de columnas
Contador de direccin
de columnas

FIGURA 9-16
Diagrama de bloques de un memoria SDRAM de 16 MB

Registro de salida
de datos

CAS

Latches de direcciones
de fila

Lgica
de control

MUX de direcciones
de fila

CS
WE
RAS

Contador de refresco

CLK

Registro de direcciones

400

MEMORIAS

401

8 192 filas y 16 384 columnas. Tiene 13 bits de direcciones para las filas. Como tiene 8 bits por
byte, el nmero de columnas direccionables es de 16 384 dividido por 8, es decir, 2048, es
decir, hacen falta 11 bits para direccionar las columnas. Vase que 13 ms 11 es igual a 24, que
es el nmero correcto de bits de direcciones para una memoria de 16 MB.
Como en la DRAM normal, la memoria SDRAM aplica primero las direcciones de las filas
seguidas de las direcciones de las columnas. Sin embargo, la temporizacin es algo diferente y
se emplean algunos nuevos trminos. Antes de realizar una operacin de lectura de una determinada fila, todos los 2048 bytes de la fila especificada por la direccin se leen internamente y se
almacenan en la lgica de entrada/salida. Este paso necesita internamente algunos ciclos de reloj. A continuacin, la lectura se realiza con la direccin de la columna aplicada. Despus de un
retardo adicional de algunos ciclos de reloj, los bytes de datos empiezan a aparecer en la salida,
uno por cada ciclo de reloj. El nmero de bytes que aparecen, la longitud de la rfaga, ha sido
cambiado cargando la palabra de control en la lgica de control desde la entrada de direcciones.
En la Figura 9.17 se muestra la temporizacin de un ciclo de lectura de una rfaga de longitud igual a 4. La lectura comienza con la aplicacin de la direccin de la fila y la habilitacin de
la direccin de la fila (row address strobe, RAS), que hace que la direccin de la fila sea capturada en el registro de direccin y que comience la lectura de la fila. Durante los siguientes dos
ciclos de reloj tiene lugar la lectura de la fila. Durante el tercer ciclo de reloj se pone la direccin de las columnas y su habilitacin (column address strobe, CAS), con la direccin de la
columna capturada en el registro de direcciones y la lectura del primer byte iniciada. El byte ya
est disponible para leerse de la memoria SDRAM en el flanco positivo dos ciclos despus. El
segundo, tercer y cuarto byte estn disponibles para su lectura en los siguientes flancos de reloj.
En la Figura 9-17 se puede observar que los bytes se presentan en el orden 1, 2, 3 y 0. Esto es
as porque, en la identificacin de la direccin de la columna, el byte que necesita inmediata-

CLK
tCLK
CS

WE

RAS

CAS

DIRECCIONES

DATOS

FILA

COLUMNA

B1

B2

tRC

FIGURA 9-17
Diagrama de tiempos de una memoria SDRAM

B3

B0

402

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

mente la CPU, los dos ltimos bits son 01. Los siguientes bytes que aparecen dependen de la
cuenta ascendente del mdulo la longitud de la rfaga que realiza el contador de direcciones de
las columnas, dando direcciones que terminan en 01, 10, 11 y 00, permaneciendo el resto de bits
fijos.
Es interesante comparar la velocidad de lectura de los bytes de una memoria SDRAM y de
una memoria bsica DRAM. Suponiendo que el tiempo del ciclo de lectura, tRC, para una memoria DRAM bsica es de 60 ns y que el periodo de reloj, tCLK, es de 7.5 ns. La velocidad de
lectura de una memoria DRAM bsica es de un byte cada 60 ns o 16,67 MB/s. Para la SDRAM
de la Figura 9-17, se necesitan 8.0 ciclos de reloj, es decir, 60 ns, para leer 4 bytes, dando una
velocidad de 66.67 MB/s. Si la rfaga es de ocho en lugar de cuatro, se necesita un tiempo de
ciclo de lectura de 90 ns, dando una velocidad de 88.89 MB/s. Finalmente, si la rfaga comprende los 2048 bytes de la fila de la memoria SDRAM, el tiempo del ciclo de lectura es
60 ! (2048 . 4) # 7.5 % 15.390 ns, dando una tasa de transferencia de 133.07 MB/s, cercano
al lmite de un byte por ciclo de reloj de 7.5 ns.

Memoria SDRAM de doble tasa de transferencia de datos (DDR SDRAM)


El segundo tipo de memoria DRAM es la SDRAM de doble tasa de transferencia de datos (double data rate SDRAM, DDR SDRAM) supera el lmite anteriormente presentado sin tener que
decrementar el periodo de reloj. En cambio puede proporcionar dos bytes de datos por cada
ciclo de reloj usando tanto el flanco de subida como el flanco de bajada. En la Figura 9-17 se
leen cuatro bytes, uno por cada ciclo de reloj. Usando ambos flancos de reloj, se pueden transferir ocho bytes en el mismo tiempo de ciclo de lectura, tRC. Para un periodo de reloj de 7.5 ns, la
tasa de transferencia dobla la del ejemplo dando lugar a 266.24 MB/s.
Se pueden aplicar otras tcnicas bsicas para incrementar la tasa de transferencia de bytes.
Por ejemplo, en lugar de tener un dato de un solo byte se puede tener un chip de memoria
SDRAM con una longitud del dato de entrada/salida de cuatro bytes (32 bits). Esto proporciona
una tasa lmite de transferencia de 1066 GB/s con un reloj con un periodo de 7.5 ns. Con
8 bytes se alcanzara una tasa de 2130 GB/s.
La tasa de transferencia conseguida en los ejemplos son los lmites superiores. Si un acceso
se ha de realizar usando diferentes filas de la RAM, el retardo desde la aplicacin de pulso RAS
a la lectura del primer byte de dato es significativo y lleva a rendimientos bastante por debajo
del lmite. Esto se puede compensar parcialmente dividiendo la memoria en varios bancos donde cada uno realiza la lectura de la columna independientemente. Con tal de que la direccin de
la fila y del banco estn disponibles con bastante antelacin, la lectura de la fila se puede realizar sobre uno o ms bancos mientras el dato de la columna activa se est an transfiriendo.
Cuando la lectura de la columna de la fila activa se completa, el dato puede estar potencialmente disponible inmediatamente de otros bancos, permitiendo un flujo ininterrumpido de datos
de la memoria. Esto permite conseguir unas tasas de transferencia cercanas al lmite. Sin embargo, debido al hecho de que puede ocurrir que se accedan secuencialmente a varias filas del mismo, esta tasa mxima nunca se alcanza.

Memoria RAMBUS5 DRAM (RDRAM)


El ltimo tipo de memoria DRAM que se va a presentar es la memoria RAMBUS DRAM. Los
circuitos integrados RDRAM se han diseado para ser integrados en la memoria de un sistema

MEMORIAS

403

que usa un bus basado en paquetes para la interaccin de los circuitos de memoria RDRAM y el
bus de memoria con el procesador. Los principales componentes del bus son: una ruta de 3 bits
para las direcciones de las filas, una ruta de 5 bits para las direcciones de las columnas y una
ruta de 16 o 18 bits para los datos. El bus es sncrono y efecta transferencias en ambos flancos
de reloj, como en la memoria DDR SDRAM. La informacin en las tres rutas anteriormente
presentadas se transfiere en paquetes durante cuatro ciclos de reloj, es decir, se realizan 8 transferencias de paquetes. El numero de bits por paquete de cada una de las rutas es de 24 bits para
el paquete de direcciones de las filas, 40 bits para los paquetes de direcciones de las columnas y
128 o 144 bits para los paquetes de datos. El paquete ms grande incluye 16 bits de paridad para
realizar cdigos de correccin de errores. Los circuitos RDRAM emplean el concepto de varios
bancos de memoria, como se mencion anteriormente, para proporcionar la posibilidad de realizar accesos concurrentes de diferentes direcciones de filas. La memoria RDRAM utiliza la tcnica habitual de fila activada en la que se lee la fila direccionada de la memoria. A partir de esta
fila de datos, la direccin de la columna se usa para seleccionar las parejas de bytes en el orden
en que deben ser transmitidos en el paquete. En la Figura 9-18 se muestra una temporizacin
tpica de un acceso de lectura de una memoria RDARM. Como consecuencia del sofisticado
diseo electrnico del sistema de memoria RAMBUS, consideramos un periodo de reloj de
1.875 ns. As, el tiempo de transmisin de un paquete es tPACK % 4 # 1.875 % 7.5 ns. El tiempo del ciclo de acceso para un solo paquete de datos de 8 parejas de bytes o 16 bytes es de
266.67 MB/s. Si se accede a cuatro paquetes de un byte de la misma fila, la tasa se incremente a
1.067 GB/s. Para leer todo el contenido de una fila de una memoria RDRAM de 2048 bytes, el
tiempo de acceso se incrementa en 60 ! (2048 . 64) # 1.875/4 % 990 ns o a la tasa lmite de
transferencia de bytes de 2048/(990 # 10.9) % 2.069 MB/s, aproximndose al lmite ideal de
de 4/1.875 ns o 2.133 GB/s.

CLK
tCLK
CS

WE
tPACK
FILA

FILA

COLUMNA

DATO

DATO
tRC

FIGURA 9-18
Diagrama de tiempos de una RDRAM de 16 MB

404

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

9-7 ARRAYS DE CIRCUITOS INTEGRADOS DE MEMORIAS


DINMICAS RAM
Muchos de los principios de diseos utilizados en la Seccin 9-4 para hacer arrays de memorias
SRAM se aplican al diseo de arrays DRAM. Sin embargo existen diversos requerimientos diferentes para controlar y direccionar los arrays de las memorias DRAM. Estos requerimientos
se llevan a cabo mediante un controlador de memorias DRAM. Las funciones realizadas por
dicho controlador son las siguientes:
1. realiza la separacin de las direcciones en direcciones de las filas y las direcciones de
las columnas, proporcionando la temporizacin necesaria,
2. proporciona las seales RAS y CAS con su temporizacin correcta para las operaciones
de lectura, escritura y refresco.
3. lleva a cabo las operaciones de refresco en los intervalos apropiados, y
4. proporciona las seales de status al resto del sistema (por ejemplo, indica cundo la memoria est ocupada realizando su intervalo de refresco).
El controlador de la memoria DRAM es un circuito secuencial complejo sincronizado con el
reloj exterior de la CPU para su funcionamiento.

9-8 RESUMEN DEL CAPTULO


Las memorias son de dos tipos: memorias de acceso aleatorio (RAM) y memorias de slo lectura (ROM). En ambos tipos aplicamos una direccin para leer o escribir un dato. Las operaciones
de lectura y escritura han de cumplir ciertos pasos con sus parmetros temporales, incluyendo el
tiempo de acceso y el tiempo del ciclo de escritura. Las memorias pueden ser estticas o dinmicas y voltiles o no voltiles. Internamente, un circuito de una memoria RAM est formado
por un array de celdas RAM, decodificadores, circuitos de escritura, circuitos de lectura y circuitos de salida. La combinacin de estos circuitos de escritura, lectura y las celdas RAM asociadas se pueden modelar lgicamente como una tira de memoria RAM de un bit. Las tiras de
memoria RAM de un bit se pueden combinar para formar arrays de celdas de dos dimensiones
que, junto con los decodificadores y los circuitos de salida, forman la base para un chip de memoria RAM. Los circuitos de salida utilizan buffers tri-estado para facilitar la conexin de un
array de chips de memoria con una lgica adicional reducida. En las memorias DRAM, debido
a la necesidad de refresco, se debe utilizar circuitera adicional para llevarlo a cabo as como
para utilizar arrays de chips. Como consecuencia de la necesidad de tener memorias con accesos ms rpidos se han desarrollado nuevos tipos de memorias DRAM. Los tipos ms recientes
de memorias de alta velocidad DRAM emplean interfaces sncronas que usan un reloj para el
control de los accesos de la memoria.
Los cdigos de deteccin y correccin de errores, basados frecuentemente en Cdigos Hamming, se usan para detectar o corregir errores de los datos almacenados en las memorias RAM.
Existe material de la primera edicin que cubre este tipo de cdigos disponible en la direccin
de Internet: http://www.librosite.net/Mano.
El materia que cubre las memorias en VHDL y Verilog est disponible en la direccin de Internet: http://www.librosite.net/Mano.

MEMORIAS

405

REFERENCIAS
1.
2.
3.
4.
5.

WESTE, N. H. E., and ESHRAGHIAN, K.: Principles of CMOS VLSI Design: A Systems Perspective, 2nd ed. Reading, MA: Addison-Wesley, 1993.
Micron Technology, Inc. Micron 256 Mb: x4, x8, x16 SDRAM. www.micron.com, 2002.
Micron Technology, Inc. Micron 64 Mb: x32 DDR SDRAM. www.micron.com, 2001.
SOBELMAN, M.: Rambus Technology Basics, Rambus Developer Forum. Rambus, Inc.,
October 2001.
Rambus, Inc. Rambus Direct RDRAM 128/144-Mbit (256x16/18x32s) - Preliminary Information, Documento DL0059 Versin 1.11.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que hay una solucin
disponible en la direccin de Internet: http://www.librosite.net/Mano.
9-1. *Las siguientes memorias se especifican mediante el nmero de palabras y el nmero de
bits por palabra Cuntas lneas de direccin y lneas de entrada/salida de datos se necesitan en cada caso?
(a)
(b)
(c)
(d)

16 K # 8
256 K # 16
64 M # 32
2 G # 8.

9-2. Indique el nmero de bits almacenados en las memorias enumeradas en el Problema 9-1.
9-3. *La palabra nmero (835)10 de la memoria mostrada en la Figura 9-2 contiene el dato
binario equivalente a (15 103)10. Indique la direccin de 10 bits y el contenido de 16 bits
de la palabra.
9-4. Un chip de memoria RAM de 64 K # 16 utiliza una descodificacin coincidente dividiendo el decodificador interno en seleccin de fila y seleccin de columna.
(a) Suponiendo que el array de celdas RAM es cuadrado Cul es el tamao de cada decodificador y cuntas puertas AND se necesitan para la descodificacin de una direccin?
(b) Determine que las lneas de seleccin de fila y de columna estn habilitadas cuando
la direccin de entrada es el valor binario equivalente de (32 000)10.
9-5. Suponga que el decodificador ms grande que se puede usar en un chip de memoria de
m # 1 RAM tiene 13 entradas de direccin y que se emplea descodificacin coincidente.
Para construir chips de memoria RAM que contengan ms de m palabras de 1 bit, se incluyen arrays mltiples de celdas RAM, cada una con su decodificador y circuitos de
lectura/escritura.
(a) Con la restriccin dada del decodificador cuntos arrays de celdas RAM se necesitan para construir un chip de memoria RAM de 512 M # 1?
(b) Muestre qu decodificador es necesario emplear para seleccionar entre los diferentes
arrays de memoria RAM de la memoria y sus conexiones a los bits de direcciones y
los decodificadores de las columnas.

406

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

9-6. Una memoria DRAM tiene 14 pines de direccin y su direccin de columna es de un


bit. Cuntas direcciones en total tiene la memoria DRAM?
9-7. Una memoria DRAM de 256 Mb, que utiliza datos de 4 bits, tiene igual longitud de
direcciones de filas y de columnas. Cuntos pines de direccin tiene dicha memoria?
9-8. Una memoria DRAM tiene un intervalo de refresco de 128 ms y 4096 filas. Cul es la
duracin del intervalo entre refresco en el modo de refresco distribuido? Cul es el nmero mnimo de pines de direccin de la memoria DRAM?
9-9. *(a) Cuntos chips de memoria RAM de 128 # 16 se necesitan para conseguir una
memoria de 1 M bytes de capacidad?
(b) Cuntas lneas de direccin se necesitan para direccional 1 M bytes? Cuntas de
ests lneas estn conectadas a las entradas de direccin de todos los chips?
(c) Cuntas lneas se deben descodificar para generar el chip select? Especifique el
tamao del decodificador.
9-10. Usando el chip de memoria RAM de capacidad 64 K # 8 de la Figura 9-9 ms un decodificador, construya el diagrama de bloques de una memoria RAM de 512 K # 16.
9-11. Explique cmo utiliza la memoria SDRAM la ventaja del array de dos dimensiones para
conseguir altas tasas de transferencia de datos.
9-12. Explique cmo se consigue doblar la tasa de transferencia de una memoria DDRAM en
comparacin con una memoria SDRAM.

CAPTULO

10
FUNDAMENTOS DEL DISEO
DE PROCESADORES

n el Captulo 7 se present la divisin de un diseo en una ruta de datos, que


realiza las microoperaciones, y una unidad de control, que determina la secuencia de las microoperaciones. En este captulo definimos una ruta de datos
de un procesador genrico que realiza las microoperaciones de transferencia de registros y sirve como marco de trabajo para el diseo detallado de la lgica de proceso. El concepto de palabra de control proporciona un nexo entre la ruta de datos y la
unidad de control asociada a ella.
La ruta de datos genrica combinada con la unidad de control y la memoria forma
un sistema programable, en este caso, un sencillo procesador. Se presenta el concepto de una arquitectura con un conjunto de instrucciones (Instruction Set Architecture, ISA) como medio de especificacin de un procesador. Para realizar una arquitectura ISA se combinan una unidad de control y una ruta de datos genrica para
formar una CPU (Central Processing Unit). Adems, como es un sistema programable, tambin se incluyen las memorias para el almacenamiento de programas y datos.
Se consideran dos tipos de procesadores con dos unidades de control diferentes. El
primero tiene dos memorias, una para las instrucciones y otra para los datos, y realiza
todas sus operaciones en un solo ciclo de reloj. El segundo procesador tiene una nica memoria, tanto para las instrucciones como para los datos, y una arquitectura ms
compleja que necesita varios ciclos de reloj para realizar sus operaciones.
En la computadora genrica presentada al principio del Captulo 1, las transferencias de registro, las microoperaciones, los buses, las rutas de datos y sus componentes, y las palabras de control se usan ampliamente. As mismo, las unidades de control aparecen en la mayora de los bloques digitales de un procesador genrico. El
diseo de unidades de procesamiento que presentan unidades de control, que interactan con las rutas de datos, tiene su ms grande repercusin dentro del procesador
genrico, en la CPU y en la FPU del circuito procesador. Estos dos componentes contienen grandes rutas de datos que realizan el procesamiento. La CPU y la FPU llevan
a cabo sumas, restas y las otras operaciones especificadas por el conjunto de instrucciones.

408 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

10-1 INTRODUCCIN
En este captulo se presentan los procesadores y su diseo. La especificacin de un procesador
consiste en una descripcin de su apariencia frente al programador a nivel ms bajo, su arquitectura de conjunto de instrucciones (ISA). A partir de la ISA se formula una descripcin de
alto nivel del hardware del procesador, llamada arquitectura del procesador. Esta arquitectura,
para un procesador sencillo, se divide tpicamente en una ruta de datos y una unidad de control.
La ruta de datos se define mediante tres componentes bsicos:
1.
2.
3.

un conjunto de registros
las microoperaciones que se efectan sobre los datos almacenados en los registros, y
el interfaz de control.

La unidad de control proporciona las seales que controlan las microoperaciones efectuadas
en la ruta de datos y en otros componentes del sistema, como las memorias. Adems, la unidad
de control gobierna su propia operacin, determinando la secuencia de eventos que suceden.
Esta secuencia puede depender de los resultados de la ejecucin de la actual microoperacin y
de las pasadas. En procesadores ms complejos se pueden encontrar varias unidades de control
y varias rutas de datos.
Para encontrar una base inicial para el diseo de procesadores, ampliaremos las ideas del
Captulo 7 para el diseo de las rutas de datos. Concretamente consideramos una ruta de datos
genrica, una que se pueda usar, en algunos casos modificada, en todos los diseos de procesadores considerados en adelante en este texto. Estos futuros diseos muestran cmo una determinada ruta de datos se puede usar para realizar diferentes arquitecturas de conjunto de instrucciones, simplemente combinando la ruta de datos con diferentes unidades de control.

10-2 RUTAS DE DATOS


En lugar de tener un registro concreto que realiza directamente sus microoperaciones, los sistemas del procesador emplean cierto nmero de registro de almacenamiento conjuntamente con
una unidad de operacin compartida llamada unidad aritmtico-lgica, abreviadamente ALU
(del ingls arithmetic-logic unit). Para realizar una microoperacin, el contenido de unos registros fuentes concretos se aplican a las entradas de la ALU que tienen compartida. La ALU realiza una operacin y el resultado de esta operacin se transfiere a un registro destino. Como la
ALU es un circuito combinacional, la totalidad de la operacin de transferencia de registro a
partir de los registros fuentes, a travs de la ALU, hasta los registros de destino se realiza en un
solo ciclo de reloj. Las operaciones de desplazamiento se realizan frecuentemente en una unidad
aparte, aunque algunas veces, este tipo de operaciones tambin se lleva a cabo en la ALU.
Resaltar que la combinacin de un conjunto de registros y una ALU compartida y sus interconexiones forman la ruta de datos de un sistema. El resto de este captulo hace referencia a la
organizacin y diseo de rutas de datos y de las unidades de control utilizadas para realizar un
procesador sencillo. Se llevar a cabo una ALU concreta para mostrar el proceso involucrado en
la realizacin de circuitos combinacionales complejos. Tambin disearemos un desplazador,
combinaremos las seales de control en una palabra de control y, a continuacin, aadiremos
unidades de control para disear dos procesadores diferentes.
La ruta de datos y la unidad de control son dos partes del procesador o CPU de una computadora. Junto con los registros, la ruta de datos contiene la lgica digital necesaria que realiza
diversas microoperaciones. Esta lgica digital est formada por buses, multiplexores, descodifica-

FUNDAMENTOS DEL DISEO DE PROCESADORES

409

dores y dems circuitos de procesamiento. Cuando se incluyen en la ruta de datos un gran nmero de registros, lo ms conveniente es conectarlos mediante uno o ms buses. Los registros
de una ruta de datos interactan mediante transferencias de datos as como en la ejecucin de
varios tipos de microoperaciones. En la Figura 10-10 se muestra una ruta de datos con cuatro
registros, una ALU y un desplazador. Las seales con nombre en azul, relacionadas con la Figura 10-10, se describirn en la Seccin 10-5. Las seales con nombre en negro se usan aqu para
describir los detalles de la Figura 10-1. Cada registro se conecta con dos multiplexores para
formar los buses de entrada A y B a la ALU y al desplazador. Las entradas de seleccin de cada
multiplexor, A select y B select, seleccionan un registro para el bus correspondiente. Para el bus
B hay un multiplexor adicional, MUX B, de manera que se pueden introducir valores constantes
en la ruta de datos desde el exterior utilizando la entrada Constant In. El Bus B tambin est
conectado a la salida Data Out, para mandar datos al exterior de la ruta de datos para otros
componentes del sistema, como memorias o bloques de entrada/salida.
Las microoperaciones aritmticas y lgicas se efectan sobre los operandos de los buses A y
B. Las entrada de seleccin G seleccionan la microoperacin a realizar por la ALU. Las microoperaciones de desplazamiento se llevan a cabo sobre los datos del Bus B por el desplazador. La
entrada de seleccin H pasa el operando del Bus B directamente a travs del desplazador hasta
su salida o selecciona una microoperacin de desplazamiento. El multiplexor MUX F selecciona entre la salida de la ALU y la salida del desplazador. El multiplexor MUX D selecciona
entre la salida del multiplexor MUX F o el dato exterior puesto en la entrada Data In para ser
puesto en el Bus D. Dicho bus se conecta a las entradas de todos los registro. Las entradas de
seleccin de destino determinan qu registro se carga con el dato del Bus D. Al estar descodificadas las entradas de seleccin, slo una seal de carga del registro, Load, se activa en cada
transferencia de datos a los registros desde el Bus D. Un seal de habilitacin de carga, Load
Enable, fuerza a 0 todas las seales de carga, Load, utilizando una puerta AND, se utiliza para
las transferencias en las que no se cambia el contenido de ninguno de los cuatros registros.
Es til tener acceso a cierta informacin basada en los resultados de las operaciones de la
ALU, y que est disponible para ser utilizada por la unidad de control de la CPU para tomar
decisiones. En la Figura 10-1 se muestran cuatro bits de status en la ALU. Los bits de status de
acarreo, C, y de overflow, V, se explicaron juntamente en la Figura 5-9. El bit de status cero, Z,
es 1 si la salida de la ALU tiene todo sus bits a cero, y es 0 en caso contrario. As, Z % 1 si el
resultado de una operacin es cero, y Z % 0 si el resultado es distinto de cero. El bit de status de
signo, N, es el bit ms a la izquierda de la salida de la ALU, que es el bit de signo para el
resultado en representacin de nmero con signo. Adems, tambin se pueden incorporar bits de
status para el desplazador si se desea. La unidad de control para la ruta de datos dirige el flujo
de informacin a travs de los buses, la ALU, el desplazador y los registros mediante seales a
las entradas de seleccin. Por ejemplo, para realizar la microoperacin:
R1 p R2 ! R3
la unidad de control de la ruta de datos debe proporcionar los valores de seleccin binarios para
el siguiente conjunto de entradas de control:
1. A select, para colocar el contenido de R2 en el dato A, aqu, el Bus A.
2. B select, para colocar el contenido de R3 sobre la entrada 0 del MUX B, y MB select, para poner la entrada o del MUX B en el bus B.
3. G select, para realizar la operacin aritmtica A ! B.
4. MF select, para colocar la salida de la ALU a la salida del MUX F.
5. MD select, para colocar la salida del MUX F en el Bus D.

410 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Load enable

A select

Write
Dato D

B select

Direccin A

Direccin B

n
Load

R0
n

Load

R1
0
1
MUX
2
3

n
n
Load

0
1
MUX
2
3

R2
n

Load

R3

0 1 2 3
Descodificador

Dato A

Dato B
del banco
de registros

Direccin D
Constant in

Destination select

MB select

MUX B

Bus A
A
G select
4

V
C
N
Z

Detector de cero
MF select

A
B
S2:0 || Cin
Unidad aritmticolgica (ALU)
G
n
0
1
MUX F
F
n

Address
Out
Data
Out

Bus B

n
H select
2
0

B
S
IR Desplazador IL

H
n
Unidad funcional
n

Data In

0
1
MD select
MUX D
Bus D

 FIGURA 10-1
Diagrama de bloques de una ruta de datos genrica

6.
7.

Destination select, para seleccionar R1 como destino del dato en el Bus D.


Load enable, para habilitar un registro, en este caso, R1, para su carga.

El conjunto de valores se debe generar y debe estar disponible en las lneas de control correspondientes con antelacin en el ciclo de reloj. Los datos en binario de los dos registros fuente se deben propagar a travs de los multiplexores, la ALU, y llegar a la entrada del registro

FUNDAMENTOS DEL DISEO DE PROCESADORES

411

destino, todo durante el tiempo restante del mismo ciclo de reloj. Luego, cuando el siguiente
flanco de subida del reloj llega, se carga el dato que est en el Bus D en el registro destino. Para
conseguir una operacin rpida, la ALU y el desplazador se construyen con lgica combinacional con un nmero limitado de niveles, como un sumador con acarreo anticipado.

10-3 UNIDAD ARITMTICO-LGICA


La ALU es un circuito combinacional que realiza un conjunto de microoperaciones aritmticas
y lgicas bsicas. La ALU tiene unas lneas de seleccin utilizadas para determinar la operacin
a realizar. Las lneas de seleccin son descodificadas dentro de la ALU, de forma que k lneas
de seleccin pueden especificar hasta 2k operaciones distintas.
La Figura 10-2 muestra el smbolo de una ALU tpica de n bits. Las n entradas para el dato
A se combinan con las n entradas de datos de B para generar el resultado en las salidas G. La
entrada de modo de seleccin S2 distingue entre operaciones aritmticas y lgicas. Las dos entradas S1 y S0 y la entrada de acarreo, Cin, especifican las ocho operaciones aritmticas con S2 a
0. Las entradas S0 y Cin especifican las cuatro operaciones lgicas con S2 a 1.
Llevaremos a cabo el diseo de esta ALU en tres etapas. Primero disearemos la parte aritmtica, luego disearemos la parte lgica y, finalmente, combinaremos ambas partes para construir la ALU.
A0
Control A
de datos

A1
G0

An1
B0
Control B
de datos

B1

G1
Unidad
aritmtico/lgica
de n bits
(ALU)

Salida G
de datos

Gn1

Bn1
Acarreo de entrada
Seleccin
de operacin
Seleccin de modo

Cin

Cout

Acarreo de salida

S0
S1
S2

 FIGURA 10-2
Smbolo para una ALU de n bits

Circuito aritmtico
El componente bsico de un circuito aritmtico es un sumador en paralelo construido con un
cierto nmero de sumadores completos conectados en cascada, como se mostr en la Figura 5-5.
Controlando los datos de entrada al sumador en paralelo, es posible obtener diferentes tipos de
operaciones aritmticas. El diagrama de bloques de la Figura 10-3 muestra una determinada
configuracin en la que un conjunto de entradas al sumador en paralelo se controlan mediante
las lneas de seleccin S1 y S0. Es un circuito aritmtico de n bits, con dos entradas A y B y una

412 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Cin

Sumador
paralelo
de n bits

n
Lgica
de entrada B

S0

G  X  Y  Cin

S1

Cout

 FIGURA 10-3
Diagrama de bloques de un circuito aritmtico

salida G. Los n bits de B pasan a travs de una lgica hasta llegar a la entrada Y del sumador en
paralelo. La entrada de acarreo, Cin, va a la entrada de acarreo del sumador completo de la posicin menos significativa. La salida de acarreo, Cout, procede del sumador completo de la posicin ms significativa. La salida del sumador en paralelo se calcula como la suma aritmtica de:
G % X ! Y ! Cin
donde X es el nmero en binario de la entrada A e Y es el nmero binario procedente de la
salida de la lgica de entrada. Cin es la entrada de acarreo, que puede ser 0 o 1. Vase que el
smbolo ! de la ecuacin denota a la suma aritmtica.
La Tabla 10-1 muestra las operaciones aritmticas que se pueden realizar controlando el valor de Y con las dos entradas de seleccin S1 y S0. Si se ignoran las entradas de B y se pone a 0
todas las entradas de Y, la salida es G % A ! 0 ! Cin, es decir, G % A cuando Cin % 0 y
G % A ! 1 cuando Cin % 1. En el primer caso, tenemos una transferencia directa de la entrada
A a la salida G. En el segundo caso, el valor de A se incrementa en uno. Para efectuar una suma
aritmtica es necesario aplicar la entrada B a la entrada Y del sumador paralelo, es decir,
G % A ! B cuando Cin % 0. La substraccin se consigue realizando el complemento de la entra TABLA 10-1
Tabla de las funciones del circuito aritmtico
Seleccin

Entrada

G % A ! Y ! Cin

S1

S0

Cin % 0

Cin % 1

0
0
1
1

0
1
0
1

Todo ceros
B
B1
Todo unos

G % A (transferencia)
G % A ! B (suma)
G % A ! B1
G % A . 1 (decremento)

G % A ! 1 (incremento)
G%A!B!1
G % A ! B1 ! 1 (resta)
G % A (transferencia)

FUNDAMENTOS DEL DISEO DE PROCESADORES

413

da B y aplicndolo a la entrada Y del sumador en paralelo para obtener G % A ! B1 ! 1 cuando


Cin % 1, es decir, A ms el complemento a 2 de B, que es equivalente a la substraccin en complemento a 2. Todos unos es la representacin en complemento a 2 de .1. De esta forma, poniendo todo los bits de la entrada Y a uno y con Cin % 0 se realiza la operacin de decremento
G % A . 1.
La lgica de entrada B de la Figura 10-3 se puede realizar con n multiplexores. Las entradas
de datos para cada multiplexor para una etapa i, para i % 0, 1, ..., n . 1, son 0, Bi, B1 i y 1, correspondientes a los valores de seleccin S1S0: 00, 01, 10 y 11, respectivamente. De esta forma,
se puede construir con n sumadores completos y multiplexores de 4 a 1.
El nmero de puertas de la lgica B se puede reducir si, en lugar de usar multiplexores de 4
a 1, se realiza el diseo lgico de una etapa (un bit) de la lgica de entrada B. Esto se puede
hacer segn se muestra en la Figura 10-4(a). Las entradas son S1, S0 y Bi, y la salida es Yi.
Siguiendo los requerimientos especificados en la Tabla 10-1, hacemos Yi % 0 cuando S1S0 % 00,
y de forma similar asignado los otros tres valores restantes a Yi para cada una de las combinaciones de las variables de seleccin. La salida Yi se simplifica en el mapa de la Figura 10-4(b),
resultando:
Yi % Bi S0 ! B1 i S1
donde S1 y S0 son entradas comunes a todas las n etapas: cada etapa i se asocia con la entrada Bi
y la salida Yi, para i % 0, 1, ..., n . 1. Esta lgica se corresponde con un multiplexor 2 a 1, con
Bi en la entrada de seleccin y S1 y S0 en las entradas de datos.
La Figura 10-5 muestra el diagrama lgico de un circuito aritmtico para n % 4. Los cuatro
circuitos sumadores completos (FA) constituyen el sumador paralelo. El acarreo de la primera
etapa es la entrada de acarreo, Cin. Los restantes acarreos se han conectado internamente desde
una etapa a la siguiente. Las variables de seleccin son S1, S0 y Bi. Las variables S1 y S0 controlan todas las entradas Y de los sumadores completos segn la funcin booleana que se deriva de
la Figura 10-4(b). Siempre que Cin sea 1, A ! Y tiene un 1 sumado. En la Tabla 10-2 se enumeran las ocho operaciones aritmticas del circuito en funcin de S1, S0 y Cin. Es interesante resaltar que la operacin G % A aparece dos veces en la tabla. Esto es una consecuencia inofensiva
de emplear Cin como una de las variables de control cuando se llevan a cabo las instrucciones
de incremento y decremento.

Entradas

Salidas

S1 S0 Bi

Yi

0
0
0
0

0 Yi  0
0
0 Yi  Bi
1
1 Yi  Bi
0
1 Yi  1
1

0
0
1
1

0
1
0
1

1 0
1 0

0
1

1 1
1 1

0
1

(a) Tabla de verdad

S0
00

01

11
1

0
S1 1

10

Bi
(b) Simplificacin:
Yi  Bi S0  Bi S1

 FIGURA 10-4
Etapa de la lgica de entrada B de un circuito aritmtico

414 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Cin
S1
S0
A0
B0

C0
X0
FA

G0

Y0
C1
A1
B1

X1
FA

G1

Y1
C2
A2
B2

X2
FA

G2

Y2
C3
A3
B3

X3
FA

G3

Y3
C4

Cout

 FIGURA 10-5
Diagrama lgico de un circuito lgico de 4 bits

Circuito lgico
Las microoperaciones lgicas manipulan los bits de los operando tratando cada bit de un registro como una variable binaria, dando lugar a operaciones de tipo bitwise. Hay cuatro operaciones comnmente utilizadas, AND, OR, XOR y NOT, a partir de las cuales se pueden obtener
otras funciones.
La Figura 10-6(a) muestra una etapa de un circuito lgico. Consiste en cuatro puertas y un
multiplexor 4 a 1, aunque una simplificacin podra dar lugar a una lgica menos compleja.
Cada una de las cuatro operaciones se genera a travs de una puerta que realiza la lgica requerida. Las salidas de las puertas se aplican a las entradas del multiplexor con las dos variables de
seleccin S1 y S0. Estas escogen una de las entradas de datos del multiplexor y direcciona su
valor a la salida. El diagrama muestra una etapa tpica con el subndice i. Para el circuito lgico
de n bits, el diagrama debe repetirse n veces, para i % 0, 1, ..., n . 1. Las variables de seleccin
se aplican a todas las etapas. En la tabla de funciones de la Figura 10-6(b) se enumeran las
operaciones obtenidas para cada combinacin de los valores de seleccin.

FUNDAMENTOS DEL DISEO DE PROCESADORES

S0

S0

S1

S1

Bi

415

MUX
2a1
Salida

Operacin

G A ^B
^
GA B
GAB
GA

AND
OR
XOR
NOT

S1 S0

Ai

Gi
1

0
0
1
1

0
1
0
1

(b) Tabla de funciones

3
(a) Diagrama lgico

 FIGURA 10-6
Etapa del circuito lgico

Unidad lgico-aritmtica
El circuito lgico se puede combinar con el circuito aritmtico para generar una ALU. Las variables de seleccin S1 y S0 pueden ser comunes en ambos circuitos, con tal de que usemos una
tercera variable para diferenciar los dos circuitos. En la Figura 10-7 se muestra la configuracin
para una etapa de la ALU. Las salidas de los circuitos aritmticos y lgicos de cada etapa se
conectan a un multiplexor 2 a 1 con S2 como variable de seleccin. Si S2 % 0, se selecciona la
salida aritmtica y, cuando S2 % 1, se selecciona la salida lgica. Vase que el diagrama muestra slo una etapa tpica de una ALU; el circuito debe repetirse n veces para una ALU de n bits.
La salida de acarreo Ci!1 y de una determinada etapa aritmtica debe conectarse a la entrada de
acarreo Ci y de la siguiente etapa de la secuencia. La entrada de acarreo de la primera etapa es
la entrada de acarreo Cin, que tambin acta como variable de seleccin para las operaciones
aritmticas.
La ALU especificada en la Figura 10-7 proporciona ocho operaciones aritmticas y cuatro
lgicas. Cada operacin se selecciona a travs de las variables S2, S1, S0 y Cin. En la Tabla 10-2
Ci

Ci

Ai

Ai

Bi

Bi

S0

S0

S1

S1

Ai
Bi
S0

Ci  1
Etapa
del circuito
aritmtico
de 1 bit

MUX
0 2a1
Gi
1

Etapa
del circuito
lgico
de 1 bit

S1
S2

 FIGURA 10-7
Una etapa de la ALU

416 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

 TABLA 10-2
Tabla de funciones de la ALU
Seleccin de la operacin
S2

S1

S0

Cin

0
0
0
0
0
0
0
0
1
1
1
1

0
0
0
0
1
1
1
1
X
X
X
X

0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1

Operacin

Funcin

G%A
G%A!1
G%A!B
G%A!B!1
G % A ! B1
G % A ! B1 ! 1
G%A.1
G%A
G%ApB
G%AoB
G%ASB
G % A1

Transfiere A
Incrementa A
Suma
Suma con acarreo de entrada a 1
A ms el complemento a 1 de B
Resta
Decremento de A
Transfiere A
AND
OR
XOR
NOT (complemento a 1)

se enumeran las 12 operaciones de la ALU. Las ocho primeras son operaciones aritmticas y se
seleccionan con S2 % 0. Las siguientes cuatro son operaciones lgicas y se seleccionan con S2 % 1.
Se dan los cdigos de seleccin usando el menor nmero de bits como sea posible, S0 y Cin se
usan para controlar la seleccin de las operaciones lgicas en lugar de S2 y S1. La entrada de
seleccin S1 no tiene efecto en la seleccin de las operaciones lgicas, por lo que se marca con
una X indicando que su valor puede ser 0 o uno indistintamente. Posteriormente, en el diseo,
se asigna el valor 0 para las operaciones lgicas.
La lgica de la ALU que hemos diseado no es tan simple como se podra hacer y tiene un
nmero bastante alto de niveles de puertas lgicas que contribuyen a elevar el retardo de propagacin del circuito. Con el uso de las herramientas software de simplificacin podemos simplificar esta lgica y reducir el retardo. Por ejemplo, es bastante fcil simplificar la lgica para una
sola etapa de la ALU. Para un valor real de n, un medio posterior de reducir el retardo de propagacin del acarreo de la ALU es utilizar necesariamente el sumador con acarreo anticipado presentado en la Seccin 5-2.

10-4 EL DESPLAZADOR
El desplazador realiza el desplazamiento del valor presente en el Bus B, colocando el resultado
en una entrada del MUX F. El desplazador bsico realiza uno de los tipos de transformacin
sobre los datos: desplazamiento a la derecha y desplazamiento a la izquierda.
Una eleccin, aparentemente obvia de un desplazador, podra ser un registro bidireccional
con carga en paralelo. Los datos del Bus B se pueden transferir al registro en paralelo y luego
desplazarlo a la derecha, o a la izquierda o no desplazarlo. Un pulso de reloj carga la salida del
Bus B en el registro de desplazamiento y en un segundo pulso de reloj se realiza el desplazamiento. Finalmente, en un tercer pulso de reloj se transfiere el dato del registro de desplazamiento al registro de destino seleccionado.

FUNDAMENTOS DEL DISEO DE PROCESADORES

B3

B2

B1

417

B0

Salida
serie L

Salida
serie R
IL

IR
S

0 1 2 M
U
X

0 1 2 M
U
X

0 1 2M
U
X

0 1 2 M
U
X

2
H3

H2

H1

H0

 FIGURA 10-8
Desplazador bsico de 4 bits

Alternativamente, la transferencia de un registro fuente a un registro destino se puede hacer


en un nico pulso de reloj si el desplazador se realiza con un circuito combinacional, como se
hizo en el Captulo 5. Debido a que la operacin ms rpida es con un pulso de reloj, en lugar
de tres, se prefiere utilizar este ltimo mtodo. En un desplazador combinacional, las seales se
propagan a travs de las puertas sin necesidad de un pulso de reloj. Aqu, el nico pulso necesario para un desplazamiento en la ruta de datos es para cargar el dato del Bus H en el registro de
destino seleccionado.
Un desplazador combinacional se puede construir con multiplexores, como se muestra en la
Figura 10-8. La variable de seleccin S se aplica a los cuatro multiplexores para seleccionar el
tipo de operacin en el desplazador. S % 00 provoca que B pase a travs del desplazador sin cambios. S % 01 hace una operacin de desplazamiento a la derecha, y S % 10 produce una operacin
de desplazamiento a la izquierda. El desplazamiento a la derecha llena la posicin en la izquierda con el valor de la entrada serie IR. El desplazamiento a la izquierda llena la posicin a la
derecha con el valor en la entrada seria IL. Las salidas estn disponibles en la salida serie R y la
salida serie L para los desplazamientos a la derecha e izquierda, respectivamente.
El diagrama de la Figura 10-8 muestra slo cuatro etapas del desplazador, el cual tiene n
etapas en un sistema con operandos de n bit. Se pueden aadir variables de seleccin para especificar que entra por IR e IL durante un desplazamiento de una sola posicin. Ntese que para
desplazar un operando m b 1 posiciones, el desplazador debe realizar una serie de m desplazamientos de una posicin, requiriendo m ciclos de reloj.

Barrel Shifter
En las aplicaciones con rutas de datos se deben realizar con frecuencia desplazamientos de ms
de una posicin en un solo ciclo de reloj. Un barrel shifter1 es un circuito combinacional que
desplaza o rota los bits del dato de entrada un cierto nmero de posiciones especificado mediante un valor binario colocado en un conjunto de lneas de seleccin. El desplazamiento que va1 N. del T.: El trmino barrel shifter se podra traducir por desplazador de tonel pero, aparte de no decir mucho, no se suele
utilizar una traduccin de este trmino.

418 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

D3

D2

D1

D0

S0
S1
3

S1 S0

S1 S0

M
U
X

M
U
X

Y3

S1 S0

M
U
X

Y2

Y1

S1 S0
M
U
X

Y0

 FIGURA 10-9
Barrel Shifter de 4 bits

mos a considerar aqu es una rotacin a la izquierda, es decir, el dato en binario se desplaza a la
izquierda, con los bits procedentes de la parte ms significativos del registro yendo a parar a la
parte menos significativa del registro.
En la Figura 10-9 se muestra una versin de cuatro bits de este tipo de registro, barrel shifter. Contiene cuatro multiplexores con las lneas de seleccin en comn S1 y S0. Las variables
de seleccin determinan el nmero de posiciones que el dato de entrada va a ser desplazado a la
izquierda mediante una rotacin. Si S1S0 % 00, no se efecta desplazamiento y el dato de entrada tiene un camino directo a las salidas. Si S1S0 % 01, el dato se rota una posicin, yendo D0 a
Y1, D1 a Y2, D2 a Y3 y D3 a Y0. Si S1S0 % 10, la entrada se rota dos posiciones, y si S1S0 %11 se
rota tres posiciones. En la Tabla 10-3 se da la tabla de funcin de un barrel shifter de 4 bits.
Para cada valor binario de las variables de seleccin, la tabla enumera las entradas que van a la
salida correspondiente. De manera que, para rotar tres posiciones, S1S0 deben se igual a 11, haciendo que D0 vaya a Y3, D1 a Y0, D2 a Y1 y D3 a Y2. Vase que, usando este barrel shifter con
rotacin a la izquierda, tambin se puede generar cualquier rotacin a la derecha que se desee.
Por ejemplo, una rotacin de tres posiciones a la izquierda es lo mismo que una rotacin a la
derecha para un barrel shifter de 4 bits. En general, un barrel shifter de 2n bits, una rotacin de
i posiciones a la izquierda es lo mismo que una rotacin a la derecha de 2n . i.
 TABLA 10-3
Tabla de funcin para un Barrel Shifter de 4 bits
Seleccin

Salidas

S1

S0

Y3

Y2

Y1

Y0

Operacin

0
0
1
1

0
1
0
1

D3
D2
D1
D0

D2
D1
D0
D3

D1
D0
D3
D2

D0
D3
D2
D1

No hay rotacin
Rota una posicin
Rota dos posiciones
Rota tres posiciones

FUNDAMENTOS DEL DISEO DE PROCESADORES

419

Un barrel shifter con 2n lneas de entradas y salida necesita 2n multiplexores, teniendo cada
uno 2n entrada de datos y n entradas de seleccin. El nmero de posiciones que el dato puede
rotar se especifica por el nmero de variables de seleccin, que pueden variar en un rango entre
0 a 2n . 1 posiciones. Para un n grande, el fan-in de las puertas es demasiado alto, de forma
que barrel shifters ms grandes estn formados por capas de multiplexores, como se muestra en
la Seccin 12-3, de estructuras especiales diseadas a nivel transistor.

10-5 REPRESENTACIN DE RUTAS DE DATOS


La ruta de datos de la Figura 10-1 incluye registros, lgica de seleccin para los registros, la
ALU, el desplazador y tres multiplexores adicionales. En una estructura jerrquica podramos
reducir la aparente complejidad de esta ruta de datos. Adems, y como se ilustra en el banco de
registro (en ingls Register File) que se presenta a continuacin, el uso de una jerarqua permite
el diseo donde un mdulo que puede ser reemplazado por otro y, de esta forma, no estar atado
a un determinado diseo de una lgica concreta.
Una ruta de datos tpica tiene ms de cuatro registros. De hecho, es muy frecuente encontrar
procesadores con 32 o ms registros. La construccin del bus de un sistema con un gran nmero
de registros requiere tcnicas diferentes. Un conjunto de registros en los se que realizan microoperaciones comunes pueden estar organizados en un banco. El banco de registros tpico es un
tipo especial de memoria rpida que permite leer y escribir una o ms palabras simultneamente. Funcionalmente, un banco de un solo registro contiene el equivalente a la lgica, mostrada con sombra azul, de la Figura 10-1. Debido a que los bancos de registros tienen la misma
naturaleza que una memoria, las entradas de seleccin A select, B select y Destination select,
funcionan como tres direcciones. Segn se muestra en la Figura 10-1 en azul y en el smbolo
del banco de registros en la Figura 10-10, la direccin A accede a una palabra para leerse en el
bus A , la direccin B accede a una segunda palabra para leerse en el bus B, y la direccin D
accede a otra palabra del bus D para ser escrita. Todos estos accesos tienen lugar en el mismo
ciclo de reloj. Tambin se proporciona la entrada Write, correspondiente a la seal Load Enable. Cuando est a 1, la seal Write permite que los registros sean cargados durante el presente
ciclo de reloj, y cuando est a 0, evita la carga de los registros. El tamao del banco de registros
es 2m # n, donde m es el nmero de bits de direcciones de los registros y n es el nmero de bits
por registro. En la ruta de datos de la Figura 10-1, m % 2, dando lugar a cuatro registros y n est
sin especificar.
Puesto que la ALU y el desplazador son unidades de proceso compartidas con salidas que se
seleccionan con el MUX F, es conveniente agrupar las dos unidades y el MUX para formar una
unidad funcional compartida. El bloque sombreado en gris de la Figura 10-1 resalta dicha unidad funcional, y se representa con el smbolo dado en la Figura 10-10. Las entradas a la unidad
funcional son el Bus A y el Bus B, y la salida de la unidad va a parar al MUX D. La unidad
funcional tambin tiene cuatro bits de status: V, C, N y Z, que son salidas adicionales de dicha
unidad.
En la Figura 10-1 se pueden observar tres conjuntos de entradas de seleccin: G select, H
select y MF select. En la Figura 10-10 hay un solo conjunto de entradas de seleccin etiquetadas como FS (del ingls Function Select). Para especificar completamente el smbolo de la unidad funcional de la figura, todos los cdigos de MF select, G select y H select se deben definir
en trminos de cdigos para FS. En la Tabla 10-4 se definen estas transformaciones de cdigos.
Los cdigos para FS se dan en la columna izquierda. A partir de la Tabla 10-4, es evidente que
MF es 1 para los dos bits ms a la izquierda de FS, ambos iguales a 1. Si F select % 0, enton-

420 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

n
Dato D
Write
m

Direccin D
Banco de registros
2m  n

Direccin A

Direccin B

Dato A
Constant In

Dato B
n

n
n

1
0
MUX B

MB Select

Bus A
Bus B

FS

Address Out
Data Out

V
Unidad
funcional

C
N
Z

F
n

MD select

Data In

0 1
MUX D

 FIGURA 10-10
Diagrama de bloques de una ruta de datos que utiliza un banco de registros una unidad funcional

ces los cdigos de G select determinan la funcin de la salida de la unidad funcional. Si MF


select % 1, entonces los cdigos de H select determinan la funcin de salida de la unidad funcional. Para mostrar esta dependencia, los cdigos que determinan la funcin de la unidad funcional se resaltan en azul en la tabla. A partir de la Tabla 10-4 se pueden realizar las transformaciones de los cdigos utilizando ecuaciones booleanas: MF % F3 F2, G3 % F3, G2 % F2,
G1 % F1, G0 % F0, H1 % F1 y H0 % F0.
Suponemos que los bit de status no tienen sentido cuando se selecciona el desplazador, aunque en un sistema ms complejo, los bits de status se pueden designar para reemplazar a los de
la ALU siempre que se especifique una microoperacin del desplazador. Vase que la forma de
realizar los bits de status dependen de la forma especfica que se ha usado para el circuito aritmtico. Otras formas de realizar el diseo pueden no producir los mismos resultados.

FUNDAMENTOS DEL DISEO DE PROCESADORES

421

 TABLA 10-4
Cdigos de G Select, H Select y MF Select definidos en trminos
de cdigos de FS
FS(3:0)

MF
Select

G
Select(3:0)

H
Select(3:0)

Microoperacin

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110

0
0
0
0
0
0
0
0
0
0
0
0
1
1
1

0000
0001
0010
0011
0100
0101
0110
0111
1X00
1X01
1X10
1X11
XXXX
XXXX
XXXX

XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
00
01
10

F%A
F%A!1
F%A!B
F%A!B!1
F % A ! B1
F % A ! B1 ! 1
F%A.1
F%A
F%ApB
F%AoB
F%ASB
F % A1
F%B
F % sr B
F % sl B

10-6 LA PALABRA DE CONTROL


Las variables de seleccin de la ruta de datos controlan las microoperaciones ejecutadas dentro
de ste en cualquier pulso de reloj. Para la ruta de datos de la Seccin 10-5, las variables de
seleccin controlan las direcciones para la lectura de datos del banco de registros, la funcin a
realizar por la unidad funcional, y la carga de datos en el banco de registros, as como la seleccin de datos externos. Vamos a demostrar cmo estas variables de control seleccionan las microoperaciones de la ruta de datos. Se discutir la eleccin de los valores de las variables de
control para una microoperacin tpica y tambin se mostrar una simulacin de la ruta de datos
a modo ilustrativo.
En la Figura 10-11(a) se muestra una versin especfica de un diagrama de bloques de la
ruta de datos de la Figura 10-10. Contiene un banco de 8 registros, R0 a R7. El banco de registros proporciona las entradas a la unidad funcional mediante los Buses A y B. El multiplexor
MUX B selecciona entre valores constantes de la entrada Constant in y los valores de registros
en B Data. La ALU y la lgica de deteccin de cero dentro de la unidad funcional generan los
datos binarios para los cuatro bits de status: V (overflow), C (acarreo), N (signo) y Z (cero).
MUX D selecciona entre la salida de la unidad funcional y los datos en Data in como entrada
del banco de registro.
Hay 16 entradas de control binarias. La combinacin de sus valores especifica una palabra
de control. En la Figura 10-11(b) se define la palabra de control de 16 bits. Est formada por
siete partes llamadas campos, cada uno designado por un par de letras. Tres campos del registro
tienen tres bits. Los campos restantes tienen un bit o cuatro bits. Los tres bits del campo DA

422 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

RW 0

Dato D

Write

15
DA 14
13

Direccin D
Banco de registros
8n

12
AA 11
10

Direccin A

9
8 BA
7

Direccin B

Dato A
n

Dato B
n
n

Constant In

1 0
MUX B

MB 6
Bus A

n
n

Bus B

Address Out
Data Out

V
C
N
Z

5
4 FS
3
2

Unidad
funcional

Data In

0
1
MUX D

MD 1

Bus D
(a) Diagrama de bloques
15 14 13 12 11 10
DA

AA

9 8
BA

M
B

3
FS

M R
D W

(b) Palabra de control

 FIGURA 10-11
Ruta de datos con variables de control

seleccionan uno de los 8 registros destino para almacenar el resultado de la microoperacin. Los
tres bits de AA seleccionan uno de los ocho registros fuentes para la entrada del Bus A a la
ALU. Los tres bits de BA seleccionan un registro fuente para la entrada 0 del MUX B. El bit
MB determina si el Bus B lleva el contenido del registro fuente seleccionado o un valor constante. El campo de cuatro bits FS controla la operacin de la unidad de control. El campo FS
contiene uno de los 15 cdigos de la Tabla 10-4. El bit de MD selecciona entre la salida de la
unidad funcional y el dato en Data in como entrada al Bus D. El ltimo campo, RW, determina

FUNDAMENTOS DEL DISEO DE PROCESADORES

423

si se escribe en un registro o no. Cuando se aplica a las entradas de control, la palabra de control de 16 bits especifica una microoperacin en particular.
En la Tabla 10-5 se especifican las funciones y sus cdigos de control. A cada uno de los
campos se les da un cdigo binario para cada funcin. El registro seleccionado por cada uno de
los campos DA, AA y BA es el nico con el decimal equivalente igual al nmero binario del
cdigo. MB selecciona tanto el registro seleccionado en el campo BA o una constante externa a
la ruta de datos, Constant in. Las operaciones de la ALU, las operaciones del desplazador y la
seleccin de las salidas de la ALU o del desplazador se especifican todas en el campo FS. El
campo MD controla la informacin a cargarse en el banco de registros. El campo final, RW,
tienen las funciones de No escribir, evitando la escritura en cualquier registro, y Escritura,
que indica la escritura en un registro.
La palabra de control para una microoperacin dada se puede derivar especificando el valor
de cada campo de control. Por ejemplo, una resta dada por la sentencia
R1 p R2 ! R3 ! 1
Especifica R2 para la entrada A de la ALU y R3 para la entrada B de la ALU. Tambin especifica la operacin de la unidad funcional F % A ! B1 ! 1 y la seleccin de la salida de la unidad
funcional para la entrada al banco de registros. Por ltimo, la microoperacin selecciona R1 como registro destino y pone RW a 1 para escribir en R1. La palabra para esta microinstruccin se
especifica mediante sus siete campos, con los valores binarios en sus campos obtenidos de la
codificacin enumerada en la Tabla 10-5. La palabra binaria de control para esta microopera TABLA 10-5
Codificacin de la palabra de control de la ruta de datos
DA, AA, BA

MB

Funcin Cdigo

Funcin Cdigo

Funcin

Registro
Constante

F%A
F%A!1
F%A!B
F%A!B!1
F % A ! B1
F%A!B1 !1
F%A.1
F%A
F%ApB
F%AoB
F%ASB
F % A1
F%B
F % sr B
F % sl B

R0
R1
R2
R3
R4
R5
R6
R7

000
001
010
011
100
101
110
111

FS

0
1

MD
Cdigo
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110

RW

Funcin Cdigo

Funcin

Funcin
Data In

No escribir
Write

0
1

Cdigo
0
1

424 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

cin de substraccin, 0010100110010101, (usamos el signo por conveniencia para


separar los campos) se obtiene como sigue:
Campo:
DA
Simblico: R1
Binario:
001

AA
R2
010

BA
R3
011

MB
Registro
0

FS
F % A ! B1 ! 1
0101

MD
Funcin
0

RW
Escribe
1

La palabra de control para la microoperacin y aquellas otras microoperaciones se dan en la


Tabla 10-6 usando notacin simblica, y en la Tabla 10-7 usando cdigos binarios.
El segundo ejemplo de la Tabla 10-6 es una operacin de desplazamiento dada por la sentencia
R4 p sl R6
Esta sentencia especifica un desplazamiento a la izquierda para el desplazador. El contenido del
registro R6, desplazado a la izquierda, se transfiere al registro R4. Tenga en cuenta que, debido
a que el desplazador se maneja mediante el bus B, la fuente para el desplazamiento se especifica
en el campo BA en lugar del campo AA. Teniendo en cuenta los smbolos de cada campo, la
palabra de control en binario se extrae segn se muestra en la Tabla 10-7. En algunas microoperaciones no se utiliza ni el dato A ni el B del banco de registros. En estos casos, el smbolo del
campo correspondiente se marca con un guin. Puesto que estos valores estn sin especificar,
los valores correspondientes de la Tabla 10-7 son X. Continuando con los tres ltimos ejemplos
de la Tabla 10-6, para tener disponibles los contenidos de los registros para un destino externo
colocaremos los contenidos del registro en la salida de datos B del banco de registro, con
RW % No escribe (0) para evitar que el banco de registros sean escritos. Para colocar una constante de poco valor en un registro o utilizar una constante de poco valor como uno de los operandos, colocaremos la constante en la entrada Constant in, actualizando MB para seleccionar la
constante, y pasar el valor del Bus B a travs de la ALU y el Bus D hasta el registro destino.
Para poner a 0 el registro, el Bus D se pone todo a 0s usando el mismo registro tanto para el
Bus de datos A y el Bus de datos D con la operacin XOR especificada (FS % 1010) y MD % 0.
El campo DA se actualiza con el cdigo del registro destino y RW est con el valor Escribe (1).
Es evidente, a partir de estos ejemplos que, algunas microoperaciones se pueden realizar
mediante la misma ruta de datos. Se pueden realizar secuencias de dichas microoperaciones utilizando una unidad de control que produzca la secuencia apropiada de palabras de control.
 TABLA 10-6
Ejemplo de microoperaciones para la ruta de datos utilizando notacin simblica
Microoperacin

DA

AA

BA

MB

FS

MD

RW

R1 p R2 . R3
R4 p sl R6
R7 p R7 ! 1
R1 p R0 ! 2
Data out p R3
R4 p Data in
R5 p 0

R1
R4
R7
R1

R4
R5

R2

R7
R0

R0

R3
R6

R3

R0

Registro
Registro
Registro
Constante
Registro

Registro

F % A ! B1 ! 1
F % sl B
F%A!1
F%A!B

F%ASB

Funcin
Funcin
Funcin
Funcin

Data in
Funcin

Escribe
Escribe
Escribe
Escribe
No Escribe
Escribe
Escribe

FUNDAMENTOS DEL DISEO DE PROCESADORES

425

 TABLA 10-7
Ejemplo de microoperaciones de la Tabla 10-6 utilizando palabras de control
Microoperacin
R1 p R2 . R3
R4 p sl R6
R7 p R7 ! 1
R1 p R0 ! 2
Data out p R3
R4 p Data in
R5 p 0

DA

AA

BA

001
010
011
100 XXX 110
111
111 XXX
001
000 XXX
XXX XXX 011
100 XXX XXX
101
000
000

MB

FS

MD

RW

0
0
0
1
0
X
0

0101
1110
0001
0010
XXX
XXX
1010

0
0
0
0
X
1
0

1
1
1
1
0
1
1

Para completar esta seccin, realizaremos una simulacin de la ruta de datos de la Figura
10-11. El nmero de bits de cada registro, n, es igual a 8. Se utiliza una representacin decimal
sin signo, por ser la ms conveniente para leer el resultado de la simulacin, para todas las seales con varios bits. Suponemos que las microoperaciones de la Tabla 10-7, se ejecutan secuencialmente, dando las entradas a la ruta de datos, y el contenido inicial de cada registro es su
nmero en decimal (por ejemplo R5 contiene 0000 01012 % (5)10). La Figura 10-12 da el resultado de dicha simulacin. El primer valor dibujado es el reloj con sus ciclos numerados para
Clock

DA 1

AA 2

BA 3

FS 5

14

Constant_in X

5
4

10

MB
Address_out 2

Data_out 3

Data_in

18

18

MD
RW
reg0 0
reg1 1

255

/reg2 2
reg3 3
reg4 4

12

18

reg5 5

reg6 6
reg7 7
Bits de status 2

8
0

 FIGURA 10-12
Simulacin de una secuencia de microoperaciones de la Tabla 10-7

426 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

facilitar su referencia. Las entradas, salidas y el estado de la ruta de datos se dan aproximadamente en el orden del flujo de informacin a travs de la ruta. Las primeras cuatro entradas son
los campos de la palabra de control principal, que especifican las direcciones del registro que
determina las salidas del banco de registros, y la seleccin de la funcin. A continuacin estn
las entradas Constant in y MB, que controlan la entrada al Bus B. Seguidamente estn las salidas Address out y Data out, que son las salidas al Bus A y B, respectivamente. Las tres variables
siguientes: Data in, MD y RW, son las ltimas entradas a la ruta de datos. A continuacin de
stas aparece el contenido de los ochos registros y los bits de status, que se dan como un vector
(V, C, N, Z). El valor inicial del contenido de cada registro es su nmero en decimal. El valor 2
se aplica a Constant in solo en el ciclo 4 donde MB es igual a 1. De otro modo, el valor en
Constant in que es desconocido se indica con una X. Finalmente, Data in tiene el valor 18. En la
simulacin, este valor llega de una memoria que se direcciona mediante Address out y tiene el
valor 18 en la posicin 0 con el resto de valores sin especificar en el resto de posiciones. El
valor resultante, excepto cuando la direccin en Address out es 0, se representa por una lnea a
media altura entre el 0 y el 1, indicando que el valor es desconocido.
Resaltar en los resultados de la simulacin que, los cambios en los registros, como resultado
de una operacin en particular, aparecen en el ciclo de reloj posterior en el que se especifica la
microoperacin. Por ejemplo, los resultados de la sustraccin especificada en el ciclo de reloj 1
aparecen en el registro R1 en el ciclo de reloj 2. Esto es debido a que el resultado se carga en
los flip-flops en el flanco de subida de reloj al final del ciclo de reloj 1. Por otro lado, los valores de los bits de status, Address out y Data out aparecen en el mismo ciclo de reloj segn la
microoperacin los controla, puesto que no dependen de cundo ocurre el flanco de subida de
reloj. Como no se especifican los retardos de la lgica combinacional en la simulacin, estos
valores cambian al mismo tiempo que los valores de los registros. Para terminar, vase que los
ocho ciclos de reloj de la simulacin se usan para realizar siete microoperaciones de forma que
se pueden observar los valores en los registros que resultan de la ltima microoperacin ejecutada. Aunque los bits de status aparecen en todas las microoperaciones, no siempre tienen sentido.
Por ejemplo, para las microoperaciones, R3 % Data out y R4 p Data in, en los ciclos de reloj 5
y 6, respectivamente, el valor de los bits de status no estn relacionados con el resultado ya que
la unidad funcional no se usa en estas operaciones. Finalmente, para R5 p R0 S R0 en el ciclo
de reloj 7, la unidad aritmtica no se utiliza, por eso los valores de V y C de la unidad son
irrelevantes, aunque los valores de N y Z representan el status del resultado con un entero con
signo en complemento a 2.

10-7 ARQUITECTURA DE UN SENCILLO PROCESADOR


Presentamos la arquitectura de un sencillo procesador para obtener una primera comprensin
del diseo de procesadores e ilustrar diseos del control en sistemas programables. En un sistema programable, una parte de la entrada al procesador consiste en una secuencia de instrucciones. Cada instruccin especifica la operacin que se va a realizar en el sistema, qu operandos
utiliza la operacin, dnde colocar los resultados de la operacin y, en algunos casos, qu instruccin se ejecuta a continuacin. En los sistemas programables, las instrucciones se almacenan habitualmente en memoria, que puede ser RAM o ROM. Para ejecutar las instrucciones en
secuencia, es necesario proporcionar la direccin de memoria de la instruccin a ser ejecutada.
En un procesador, esta direccin procede de un registro llamado contador de programa (PC, del
trmino ingls Program Counter). Como su nombre implica, el PC tiene una lgica que le permite contar. Adems, para cambiar la secuencia de operaciones usando decisiones basadas en la

FUNDAMENTOS DEL DISEO DE PROCESADORES

427

informacin de status, el PC necesita la capacidad de carga en paralelo. De esta manera, en el


caso de un sistema programable, la unidad de control contiene un PC y su lgica de decisin
asociada, as como la lgica necesaria para interpretar la instruccin en curso para ejecutarla.
Ejecutar una instruccin significa activar la secuencia necesaria de microoperaciones en la ruta
de datos (y en otras partes) necesarias para realizar la operacin especificada por la instruccin.
En contraste con lo anterior, ntese que, en un sistema no programable, la unidad de control no
es responsable de obtener las instrucciones de la memoria, ni es responsable de la secuenciacin
de la ejecucin de estas instrucciones. No hay PC ni registro similar en dichos sistemas. En su
lugar, la unidad de control determina las operaciones a realizar y su secuencia, basndose solo
en sus entradas y los bits de status.
Demostramos cmo las operaciones especificadas por las instrucciones de un sencillo procesador se pueden realizar mediante microoperaciones en la ruta de datos, ms movimiento de
informacin entre la ruta de datos y la memoria. Tambin mostramos dos estructuras de control
diferentes para realizar las secuencias de operaciones necesarias para controlar la ejecucin del
programa. El propsito aqu es ilustrar los dos mtodos diferentes para el diseo de control y los
efectos que tales mtodos tienen en el diseo de la ruta de datos y el rendimiento del sistema.
Un estudio ms extensivo de los conceptos asociados con los conjuntos de instrucciones para
procesadores digitales se presenta con detalle en el siguiente captulo y se consideran diseos de
CPU ms complejos en el Captulo 12.

Arquitectura de conjunto de instrucciones


El usuario especifica las operaciones a llevar a cabo y su secuencia mediante un programa, que
es una lista de instrucciones que especifican las operaciones, los operandos y la secuencia en la
que ocurre el procesamiento. El procesado de datos desarrollado por un procesador se puede
alterar especificando un nuevo programa con diferentes instrucciones o especificando las mismas instrucciones pero con datos diferentes. Las instrucciones y los datos se almacenan habitualmente juntos en la misma memoria. Segn las tcnicas que se discuten en el Captulo 12,
puede parecer que instrucciones y datos proceden de memorias diferentes. La unidad de control
lee una instruccin de la memoria, la descodifica y la ejecuta usando una secuencia de una o
ms microoperaciones. La habilidad para ejecutar un programa de la memoria es la propiedad
ms importante de un procesador de propsito general. La ejecucin de un programa de la memoria es muy distinta al de la unidad de control del multiplicador no programable, considerado
anteriormente, que ejecuta una sola operacin fija.
Una instruccin es una coleccin de bits que instruye al procesador para realizar una operacin especfica. Llamamos coleccin de instrucciones de un procesador a su conjunto de instrucciones, una descripcin completa del conjunto de instrucciones a su arquitectura de conjunto de instrucciones (ISA, del ingls Instruction Set Architecture). Las arquitecturas con un
conjunto sencillo de instrucciones tienen tres componentes principales: los recursos de almacenamiento, los formatos de la instruccin y las especificaciones de la instruccin.

Recursos de almacenamiento
Los recursos de almacenamiento para un procesador sencillo se representan en el diagrama de la
Figura 10-13. El diagrama esboza la estructura de un procesador, segn se ve por un usuario,
que los programa en un lenguaje que especifica directamente la instruccin a ejecutar. Se dan
los recursos que el usuario ve disponible para el almacenamiento de la informacin. Vase que

428 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Contador de programa
(PC)
Memoria
de instrucciones
o de programa
215  16
Banco de registros
8  16

Memoria
de datos
215  16

 FIGURA 10-13
Diagrama de recursos de almacenamiento de un procesador sencillo

la arquitectura incluye dos memorias, una para almacenamiento de instrucciones y la otra para
el almacenamiento de datos. Esto puede hacerse en diferentes memorias o puede hacerse en la
misma memoria pero vista como si fuesen diferentes desde el punto de vista de la CPU, como
se discute en el Captulo 12. Tambin es visible en el diagrama para el programador, un banco
de registros con 8 registros de 16 bits y un contador de programa de 16 bits.

Formatos de la instruccin
El formato de una instruccin se suele describir mediante una caja rectangular que simboliza los
bits de la instruccin, como aparecen en las palabras de la memoria o en un registro de control.
los bits se dividen en grupos o partes llamadas campos. Cada campo se asigna a un elemento
especfico, como es el cdigo de operaciones, un valor constante o una direccin de un banco de
registros. Los diversos campos especifican diferentes funciones para la instruccin y, cuando se
muestran juntos, constituyen el formato de una instruccin.
El cdigo de operacin de una instruccin, abreviado frecuentemente como opcode, es un
grupo de bits en la instruccin que especifica una operacin, como la suma, la resta, el desplazamiento o el complemento. El nmero de bits necesarios para el opcode de una instruccin es
funcin del nmero total de operaciones del conjunto de instrucciones. Debe estar formado, al
menos, por m bits para un total de hasta 2m operaciones distintas. El diseador asigna una combinacin de bits (un cdigo) para cada operacin. El procesador se disea para que acepte esta
configuracin de bits en el momento adecuado dentro de la secuencia de actividades y proporciona la adecuada secuencia de palabras de control para ejecutar la operacin especificada. Consideremos como ejemplo un procesador con un mximo de 128 operaciones distintas, entre las
que se incluye la operacin de suma. El cdigo de operacin asignado a esta operacin est
formado por 7 bits, 0000010. Cuando la unidad de control detecta este cdigo de operacin, se
aplica una secuencia de palabras de control a la ruta de datos para realizar la suma que se pretende. El cdigo de operacin de una instruccin especifica la operacin que se va a realizar. La
operacin se debe llevar a cabo usando los datos almacenados en los registros del procesador o

FUNDAMENTOS DEL DISEO DE PROCESADORES

429

en la memoria (es decir, en los recursos de almacenamiento). Una instruccin, por tanto, debe
especificar no slo la operacin, sino tambin los registros o las palabras de memoria en la que
se pueden encontrar los operandos y dnde se debe colocar el resultado. Los operandos se pueden especificar en una instruccin de dos formas. Se dice que un operando se especifica explcitamente si la instruccin contiene bits especiales para su identificacin. Por ejemplo, la instruccin que realiza una suma puede contener tres nmeros binarios que especifican los registros
que contienen los dos operandos y el registro que recibe el resultado. Se dice que un operando
se define implcitamente si se incluye como parte de la definicin de la operacin en s misma,
estando representado en el cdigo de operacin en lugar de estarlo en la instruccin. Por ejemplo, en una operacin de Incremento de Registro, uno de los operandos es implcitamente !1.
En la Figura 10-14 se ilustran tres formatos de instruccin para un procesador sencillo. Supongamos que el procesador tiene un banco con ocho registros, R0 a R7. El formato de la instruccin de la Figura 10-14(a) est compuesta por un cdigo de operacin que especifica el uso
de hasta tres registros, segn sea necesario. Uno de los registros se asigna como destino para el
resultado y dos de los registros fuentes para los operandos. Por conveniencia, los nombres de
los campos se han abreviado como: DR, para el Registro de Destino (del ingls Destination
Register), SA para el Registro Fuente A (Source Register A) y SB para el Registro Fuente B
(Source Register B). El nmero de campos para los registros y los registros realmente usados se
determinan mediante un cdigo de operacin especfico. El cdigo de operacin tambin especifica el uso de los registros. Por ejemplo, para una operacin de substraccin, supongamos que
los tres bits en SA son 010, especificando a R2, los tres bits de SB son 011, designando a R3 y
los tres bits de DR son 001, especificando a R1. Luego, el contenido de R3 se restar al contenido de R2, y el resultado se guardar en R1. Como ejemplo adicional, supongamos una operacin
de almacenamiento en la memoria. Suponga adems que los tres bits de SA designan a R4 y que
los tres bits de SB especifican a R5. Para esta operacin en particular se supone que el registro
especificado en SA contiene la direccin donde debe ser almacenado el operando y SB contiene
el operando que se va a almacenar. De esta forma, el valor en R5 se almacena en la posicin de
memoria dada por el valor del registro R4. El campo DR no tiene ningn efecto puesto que la
operacin de almacenamiento evita que se escriba en el banco de registros.
15

6 5
Registro de
destino (DR)

Opcode

3 2
Registro
fuente A (SA)

0
Registro
fuente B (SB)

(a) Registro
15

6 5
Registro de
destino (DR)

Opcode

3 2
Registro
fuente A (SA)

Operando (OP)

(b) Inmediato
15

9
Opcode

6 5

Direccin (AD)
(izquierda)
(c) Salto y bifurcacin

 FIGURA 10-14
Formato de tres instrucciones

3 2
Registro
fuente A (SA)

Direccin (AD)
(derecha)

430 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

El formato de la instruccin de la Figura 10-14(b) tiene un cdigo de operacin, dos campos


para registros y un operando. El operando es una constante que se llama operando inmediato ya
que est inmediatamente disponible en la instruccin. Por ejemplo, para una operacin de suma
inmediata, donde SA especifica R7, DR ndica R2 y como operando OP es igual a 011, el valor
3 se suma al contenido de R7, y el resultado se la suma se coloca en R2. Puesto que el operando
es de slo tres bits en lugar de uno de 16 bits, el resto de los 13 bits se deben rellenar con cero o
hacer una extensin de signo, como se indic en el Captulo 5. En esta ISA, se especifica el
relleno con ceros del operando.
El formato de la instruccin de la Figura 10-14(c), en comparacin con los otros dos formatos, no cambia ningn registro del banco ni el contenido de la memoria. En su lugar, afecta al
orden de acceso de las instrucciones de la memoria. La posicin de una instruccin a la que se
va a acceder se determina mediante el contador de programa, PC. Normalmente, el contador de
programa accede a las instrucciones en direcciones consecutivas de la memoria segn el programa se ejecuta. Pero gran parte de la potencia de un procesador procede de su capacidad de cambiar el orden de ejecucin a partir de los resultados que surgen a lo largo de la ejecucin de las
instrucciones. Estos cambios en el orden de ejecucin de las instrucciones se basan en el uso de
instrucciones llamadas de salto y de bifurcacin.
El ejemplo de formato dado en la Figura 10-14(c) es para instrucciones de salto y bifurcacin, y tienen un cdigo de operacin, un campo para registros, SA, y un campo de direccin
AD. Si ocurre una bifurcacin (basada posiblemente en el contenido del registro especificado),
la nueva direccin se forma sumando el contenido actual del PC y el contenido del campo de
direcciones de 6 bits. Este mtodo de direccionamiento se le llama relativo al Contador de Programa y el campo de direcciones de 6 bits, al que se llama direccin relativa, se trata como un
nmero con signo en complemento a dos. Para conservar la representacin en complemento a
dos, se aplica la extensin de signo a la direccin de 6 bits para formar un desplazamienmto de
16 bits antes de realizar la suma. Si el bit ms a la izquierda del campo de direcciones, AD, es
1, los 10 bits a su izquierda se rellenan con unos para hacer el complemento a dos del desplazamiento. Si el bit ms a la izquierda del campo de direcciones es 0, los restantes 10 bits a su
izquierda se rellenan con ceros para dar un desplazamiento positivo en complemento a dos. El
desplazamiento resultante se suma al contenido del PC para formar la direccin de la siguiente
instruccin a la que se va a acceder. Por ejemplo, con el valor de PC igual a 55, suponemos que
ocurre una bifurcacin en la posicin 35 si el contenido de R6 es igual a cero. El cdigo de
operacin especificara una bifurcacin sobre la condicin de cero, SA debera especificar a R6
y AD debera tener la representacin en complemento a dos del nmero .20 en 6 bits. Si el
contenido de R6 es cero, el contenido del PC pasar a ser 55 ! (.20) % 35, y la siguiente instruccin se accedera de la direccin 35. Por otra parte, si el contenido de R6 es distinto de cero,
el PC contar ascendentemente a 56 y se acceder a la instruccin de esta direccin. Este mtodo de direccionamiento slo proporciona una direccin de bifurcacin dentro de un pequeo
intervalo por debajo y por encima del valor del PC. El salto proporciona un rango ms amplio
de direcciones usando el contenido sin signo de un registro de 16 bits como direccin de salto.
Los tres formatos de la Figura 10-14 utilizados por este sencillo procesador se estudian en
este captulo. En el Captulo 11 se presentan y estudian otros tipos y formatos de instrucciones
ms generales.

Especificacin de las instrucciones


La especificacin de las instrucciones describe cada una de las distintas instrucciones que se
pueden ejecutar en el sistema. Para cada instruccin se da el cdigo de operacin mediante un

FUNDAMENTOS DEL DISEO DE PROCESADORES

431

nombre abreviado, llamado mnemnico, que puede usarse como representacin simblica del
cdigo de operacin. Este mnemnico, junto con la representacin de los campos adicionales de
la instruccin del formato de la instruccin, representa la notacin a utilizar en la especificacin
de todos los campos de la instruccin simblicamente. Esta representacin simblica se convierte posteriormente en una representacin binaria de la instruccin mediante un programa llamado ensamblador. Se da una descripcin de la operacin realizada por la instruccin, incluyendo los bits de status involucrados por dicha instruccin. Esta descripcin puede estar en
un texto o como notacin de transferencia de registros. En la Tabla 10-8 se dan las especificaciones de las instrucciones para el procesador. Se usa, adems, la notacin de transferencia de
registros, introducida en los captulos anteriores, para describir la operacin a realizar, y se indican los bits de status que son vlidos para cada instruccin. Con el fin de ilustrar las instrucciones, supongamos que tenemos una memoria de 16 bits por palabra, con instrucciones que tienen
uno de los formatos mostrados en la Figura 10-14. Las instrucciones y los datos, en binario, se
colocan en la memoria como se muestra en la Tabla 10-9. Esta informacin almacenada representa las cuatro instrucciones que ilustran los distintos formatos. En la direccin 25 tenemos una
instruccin con formato de registro, que especifica una operacin que resta R3 de R2 y carga la
 TABLA 10-8
Especificacin de la instrucciones del procesador

Instruccin

Opcode

Mnemnico Formato

Descripcin

Mueve A
Incrementa
Suma
Substraccin
Decremento
AND
OR
OR Exclusiva
NOT
Mueve B
Desplazamiento
a la derecha
Desplazamiento
a la izquierda
Carga inmediata
Suma inmediata
Carga
Almacena
Bifurcacin
sobre cero
Bifurcacin
sobre negativo
Salto

0000000
0000001
0000010
0000101
0000110
0001000
0001001
0001010
0001011
0001100

MOVA
INC
ADD
SUB
DEC
AND
OR
XOR
NOT
MOVB

RD,
RD,
RD,
RD,
RD,
RD,
RD,
RD,
RD,
RD,

R[DR] p R[SA]
R[DR] p R[SA] ! 1
R[DR] p R[SA] ! R[SB]
R[DR] p R[SA] . R[SB]
R[DR] p R[SA] . 1
R[DR] p R[SA] p R[SB]
R[DR] p R[SA] o R[SB]
R[DR] p R[SA] S R[SB]
R[DR] p R[SA]
R[DR] p R[SB]

0001101

SHR

RD, RB

R[DR] p sr R[SB]

0001110
1001100
1000010
0010000
0100000

SHL
LDI
ADI
LD
ST

RD,
RD,
RD,
RD,
RA,

R[DR] p sl R[SB]
R[DR] p zf OP
R[DR] p R[SA] ! zf OP
R[DR] p M[SA]
M[SA] p R[SB]

1100000

BRZ

RA, AD

if (R[SA] % 0) PC p PC!se AD

1100001
1110000

BRN
JMP

RA, AD
RA

if (R[SA] a 0) PC p PC!se AD
PC p R[SA]

RA
RA
RA,
RA,
RA
RA,
RA,
RA,
RA
RB

RB
RB
RB
RB
RB

RB
OP
RA, OP
RA
RB

Bits
de status
N,
N,
N,
N,
N,
N,
N,
N,
N,

Z
Z
Z
Z
Z
Z
Z
Z
Z

432 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

diferencia en R1. Esta operacin se representa simblicamente en la columna ms a la derecha


de la Tabla 10-9. Vase que el cdigo de operacin de 7 bits para la resta es 0000101, o en
decimal, 5. El resto de los bits de la instruccin especifican los tres registros: 001 especifica a
R1 como registro destino, 010 especifica a R2 como registro fuente A, y 011 especifica a R3
como registro fuente B.
En la posicin de memoria 35 hay una instruccin con formato de registro para almacenar el
contenido de R5 en la posicin de memoria especificada por R4. El cdigo de operacin es
0100000, o 32 en decimal, y se da la operacin simblicamente en la columna ms a la derecha
de la figura. Supongamos que R4 contiene el valor 70 y R5 el valor 80. La ejecucin de esta
instruccin almacenar el valor 80 en la posicin 70 de la memoria, reemplazando el valor originalmente almacenado, en este caso 192.
En la direccin 45 aparece una instruccin con formato inmediato que suma 3 al contenido
de R7 y carga el resultado en R2. El cdigo de operacin es 66 y el operando a sumar es 3 (011)
y est en el campo OP, que son los tres ltimos bits de la instruccin.
En la posicin 55 aparece una instruccin de bifurcacin, como se describi anteriormente.
El cdigo de operacin para esta instruccin es 96, y el registro fuente A especificado es el R6.
Vase que AD (izquierda) contiene 101 y AD (derecha) contiene 100. Colocando estos dos juntos, y aplicando la extensin de signo obtenemos 1111111111101100, que representa el valor
.20 en complemento a dos. Si el registro R6 es cero, el valor .20 se suma al contenido del
 TABLA 10-9
Representacin de las instrucciones y datos de la memoria
Direccin
en decimal

Contenido de la memoria

Opcode
en decimal

Otros campos

Operacin

25

0000101 001 010 011

5 (resta)

DR:1, SA:2, SB:3

R1 p R2 . R3

35

0100000 000 100 101

32 (almacena)

SA:4, SB:5

M[R4] p R5

45

1000010 010 111 011

66 (suma
inmediata)

DR:2, SA:7, OP:3

R2 p R7 ! 3

55

1100000 101 110 100

96 (bifurcacin
sobre cero)

AD: 44, SA:6

If R6 % 0,
PC p PC . 20

70

00000000011000000

Dato % 192. Despus de la ejecucin de la instruccin en la


posicin 35,
Dato % 80.

FUNDAMENTOS DEL DISEO DE PROCESADORES

433

PC dando como resultado 35. Si el contenido del registro R6 es distinto de cero, el nuevo valor
que tomar PC ser 56. Debemos resaltar que hemos supuesto que la suma del contenido del
PC se efecta antes de que el PC se haya incrementado, como debe ser en este sencillo procesador. En los sistemas reales, no obstante, a veces el PC se ha incrementado para apuntar la siguiente instruccin de la memoria. En tal caso, es necesario ajustar el valor almacenado en AD
adecuadamente para obtener la direccin de bifurcacin correcta.
La ubicacin de las instrucciones en la memoria, segn se muestra en la Tabla 10-9 es
bastante arbitraria. En muchos procesadores, la longitud de la palabra est entre 32 y 64 bits, de
forma que las instrucciones pueden contener operandos inmediatos y direcciones mucho ms
largas que las propuestas aqu. Dependiendo de la arquitectura del procesador, algunos formatos
de las instrucciones pueden ocupar dos o ms palabras de memoria consecutivas. Adems, el
nmero de registros es, con frecuencia, mayor, de forma que los campos de la instruccin destinados a los registros deben contener ms bits.
Llegados a este punto, es muy importante reconocer las diferencias entre la operacin de un
procesador y la microoperacin hardware. Una operacin est especificada por una instruccin
que est almacenada en binario en la memoria del procesador. La unidad de control del procesador usa la direccin o direcciones proporcionadas por el contador de programa para recuperar la
instruccin de la memoria. Luego se descodifican los bits del cdigo de operacin y otro tipo de
informacin en la instruccin para realizar las microoperaciones necesarias para la ejecucin de
la instruccin. Por el contrario, una microoperacin se especifica mediante los bits de una palabra de control del hardware, que se decodifica por el hardware del procesador para ejecutar la
microoperacin. La ejecucin de una operacin en el procesador suele necesitar una secuencia o
programa de microoperaciones, en lugar de una nica microoperacin.

10-8 CONTROL CABLEADO DE UN SOLO CICLO


En la Figura 10-15 se muestra el diagrama de bloques de un procesador que tiene una unidad de
control cableada y que trae y ejecuta una instruccin en un solo ciclo de reloj. A este procesador
le llamaremos procesador de un solo ciclo. En la seccin anterior se han presentado los recursos
de almacenamiento, los formatos de las instrucciones y las especificaciones de las instrucciones.
La ruta de datos mostrada es la misma que aparece en la Figura 10-11, con m % 3 y n % 16. La
memoria de datos M est conectada a la ruta de datos mediante los buses Address Out, Data out
y Data in. Tiene una seal de control, MW, que se pone a 1 para escribir en la memoria y a 0 en
el caso contrario.
La unidad de control aparece a la izquierda de la Figura 10-15. Aunque no es habitual que la
memoria de instrucciones sea parte de la unidad de control, junto con sus entradas de direcciones y salidas de instrucciones, por conveniencia se muestra junto con la unidad de control. En
teora, no vamos a escribir en la memoria de instrucciones, que funcionar como un circuito
combinacional en lugar de funcionar como un componente secuencial. Como se estudi anteriormente, el PC proporciona la direccin de las instrucciones para las instrucciones que hacen
uso de la memoria, y la salida de las instrucciones de la memoria de instrucciones va a la lgica
de control, que en este caso es un decodificador de instrucciones. Las salidas de la memoria de
instrucciones tambin va a parar el bloque de Extensin y Relleno de Ceros, que proporcionan
la direccin relativa al PC y a la entrada de constantes, Constant in, de la ruta de datos respectivamente. El bloque Extensin aade a continuacin del bit ms a la izquierda del campo AD
de 6 bits de direccin relativa hasta la izquierda de AD, preservando su representacin en complemento a dos. El bloque de Relleno de Ceros aade 13 ceros a la izquierda del campo del

434 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

V
C
N
Z

Extensin
Control
de bifurcacin
P J B
LBC

IR(8:6) || IR(2:0)

PC

Direccin de salto
Direccin
Memoria de
programa
Instruccin

RW
DA

D
Banco de
registros
A
B

AA
IR(2:0)

Relleno
de ceros

Descodificador de instrucciones

BA

Constant
in
1 0
MUX B

MB
Address out

Bus A
D B A M F M R M P J B
A A A B S D W W L B C

CONTROL

FS

Bus B

Data out

V
Unidad
funcional

C
N

MW

Entrada Direccin
de datos
Memoria
de datos
Salida de datos

F
Data in

MD
Bus D

0 1
MUX D
RUTA DE DATOS

 FIGURA 10-15
Diagrama de bloques de un procesador de un solo ciclo

operando (OP) de la instruccin para formar un operando de 16 bits sin signo, para utilizarlo en
la ruta de datos. Por ejemplo, el valor del operando 110 pasa a ser 0000000000000110 o !6.
El contenido del PC se actualiza en cada ciclo de reloj. El comportamiento del PC, que es
un registro complejo, se determina por el cdigo de operacin, N y Z, ya que C y V no se usan
en el diseo de la unidad de control. Si tiene lugar un salto, el nuevo contenido del PC pasa a
ser el del valor del Bus A. Si se toma una bifurcacin, el nuevo valor del PC es la suma de valor
previo del PC y la extensin de signo de la direccin relativa que, al estar representada en complemento a dos, puede ser positivo o negativo. En el caso contrario, el PC se incrementa en 1.
Un salto se realiza si el bit 13 de la instruccin es igual a 1. Si el bit 13 es igual a 0 se efecta
una bifurcacin condicional. El bit de status que afecta a la condicin se selecciona con el bit 9
de la instruccin. Si el bit 9 es igual a 1, se selecciona el bit de status N, si es 0, se selecciona el Z.
Todas las partes del procesador que son secuenciales se muestran en gris. Vase que no hay
lgica secuencial en la parte de control aparte del PC. As, aparte de la proporcionar las direc-

FUNDAMENTOS DEL DISEO DE PROCESADORES

435

ciones a la memoria de instrucciones, la lgica de control es en este caso combinacional. De


hecho, combinada con la estructura de la ruta de datos y el uso de memorias separadas para
instrucciones y datos, permite al procesador de un solo ciclo obtener y ejecutar una instruccin
de la memoria de programa, todo en un solo ciclo de reloj.

Descodificador de instrucciones
El decodificador de instrucciones es un circuito combinacional que proporciona todas las palabras de control de la ruta de datos, basadas en el contenido de los campos de la instruccin. Un
nmero de campos de la palabra de control se puede obtener directamente de los contenidos de
los campos de la instruccin. Observando la Figura 10-16, vemos que los campos de control
DA, AA y BA son iguales a los de los campos de la instruccin DR, SA y SB, respectivamente.
Adems, el campo de control BC, para la seleccin del bit de status para la condicin de bifurcacin, se toma directamente del ltimo bit del cdigo de operaciones. El resto de los campos
de la palabra de control incluyen los bits de control de la ruta de datos y la memoria de datos,
MB, MD, RW y MW. Adems, hay dos bits para el control del PC, PL y JB. Si va a suceder un
salto o una bifurcacin, PL % 1, cargando el PC. Para PL % 0, el PC se incrementa. Con
PL % 1, si JB % 1 avisa de la ocurrencia de un salto o bifurcacin, y si JB % 0 anuncia una
bifurcacin condicional. Algunos de los campos de la palabra de control de un solo bit necesitan
lgica para su realizacin. En orden a disear esta lgica, dividimos las diversas instrucciones
Instruccin
Opcode
15 14 13 12 11 10

DR

SA

SB

8-6

5-3

2-0

19-17

16-14

13-11

10

9-6

DA

AA

BA

MB

FS

MD RW MW

Palabra de control

 FIGURA 10-16
Diagrama del decodificador de instrucciones

PL

JB

BC

436 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

posibles de un procesador sencillo en diferentes tipos de funcin y, posteriormente, se asignan


los primeros tres bits del cdigo de operacin en los diversos tipos. Estos tipos de instrucciones
segn su funcin se muestran en la Tabla 10-10 se basan en el uso concreto de los recursos
hardware del procesador, tales como el MUX B, la Unidad Funcional, el Banco de registros, la
Memoria de Datos y el PC. Por ejemplo, el primer tipo de funciones utilizan la ALU, cambia
MUX B para usar el Banco de Registros fuente, cambia MUX D para utilizar la salida de la
unidad Funcional y escribir en el Banco de Registros. Otros tipos de instruccin segn su funcin se definen como diversas combinaciones del uso de una entrada constante en lugar de un
registro, lecturas y escrituras de la memoria de datos, y la manipulacin del PC para saltos y
bifurcaciones.
Viendo la relacin entre los tipos de instruccin segn su funcin, y los valores de la palabra de control necesarios para su ejecucin, los bits desde 15 al 13 y el bit 9 se asignaron segn
se muestra en la Tabla 10-10. Esta asignacin intenta minimizar la lgica necesaria para disear
el decodificador. Para llevar a cabo su diseo, los valores para todos los campos de un solo bit
en la palabra de control se determinaron a partir de los tipos de funcin y presentados en la
Tabla 10-10. Vase que hay varias entradas indiferentes, X. Tratando la Tabla 10-10 como una
tabla de verdad y optimizando las funciones lgicas, resulta la lgica para las salidas de un solo
bit del decodificador de instrucciones de la Figura 10-16. En la optimizacin, los cuatro cdigos
no utilizados para los bits 15, 14, 13 y 9 se supusieron que tenan valores X para todos los campos de un solo bit. Esto implica que si uno de estos cdigos aparece en un programa, su efecto
ser desconocido. Un diseo ms conservador especifica RW, MW y PL todos a cero para estos
cuatro cdigos para asegurar que el estado del recurso de almacenamiento permanece sin cambiar para estos cdigos no utilizados. La lgica resultante de esta optimizacin se muestra en la
Figura 10-16 para realizar MB, MD, RW, MW, PL y JB.
 TABLA 10-10
Tabla de verdad para la lgica de decodificador de instrucciones
Bits de la instruccin

Bits de la palabra de control

Instruccin segn su funcin

15

14

13

MB MD RW MW PL JB BC

Operaciones de la unidad
funcional usando registros

Lectura de memoria

Escritura de memoria

Operaciones de la unidad
funcional usando registro
y constante

Bifurcacin condicional
en cero (Z)

Bifurcacin condicional
en negativo (N)

Salto incondicional

FUNDAMENTOS DEL DISEO DE PROCESADORES

437

La lgica restante del decodificador se reparte con el campo FS. Para todas las instrucciones, excepto las instrucciones de salto incondicional y de bifurcacin condicional, los bits desde
el 9 al 12 se ponen directamente para formar el campo FS. Durante las operaciones de bifurcacin condicional, como la de bifurcacin sobre cero, el valor del registro fuente A se debe pasar
a travs de la ALU de forma que los bits de status N y Z se puedan evaluar. Para esto hace falta
que FS % 0000. Sin embargo, el uso del bit 9 para la seleccin de las bifurcaciones condicionales, necesita a veces que dicho bit, que controla el bit ms a la derecha de FS sea 1. La contradiccin entre los valores del bit 9 y FS se resuelve aadiendo una habilitacin al bit 9 que fuerza FS0 a cero siempre y cuando PL % 1, segn se muestra en la Figura 10-16.

Ejemplo de instrucciones y programa


En la Tabla 10-11 se enumeran seis instrucciones para un procesador de un solo ciclo. Los nombres simblicos asociados con las instrucciones son tiles para listar programas en forma simblica mejor que en cdigo binario. Debido a la importancia de la decodificacin de las instrucciones, las seis columnas ms a la derecha de la tabla muestran los valores de las seales crticas
para cada instruccin, basndose en los valores obtenidos, utilizando la lgica de la Figura 10-16.
Ahora supongamos que la primera, Suma Inmediata (ADI), se coloca en la salida de la memoria de instrucciones mostrada en la Figura 10-15. Luego, basndose en los tres primeros bits
del cdigo de operacin, 100, las salidas del decodificador de instrucciones tendrn los valores
MB % 1, MD % 0, RW % 1 y MW % 0. Los ltimos tres bits de la instruccin OP2-0, se extienden a 16 bits aadiendo ceros. Designaremos a esto mediante una sentencia de transferencia de
registro con zf (del ingls zero fill). Como MB es 1, este valor rellenado con ceros se coloca en
el Bus B. Con MD igual a 0, se selecciona la salida de la unidad funcional y, como los ltimos
cuatro bits del cdigo de operacin, 0010, especifican el campo FS, la operacin es A ! B. As
que el valor rellenado con ceros en el Bus B se suma al contenido del registro SA, presentando
el resultado en el Bus D. Como RW % 1, el valor en el Bus D se escribe en el registro DR.
Finalmente, como MW % 0, no se efecta escritura en la memoria. La operacin completa tiene
lugar en un solo ciclo de reloj. Al comienzo de siguiente ciclo, el registro destino se escribe y,
PL % 0, el PC se incrementa para apuntar a la siguiente instruccin.
La segunda instruccin, LD, se carga de la memoria con el cdigo de operacin 0010000.
Los primeros tres bits de este cdigo, 001, dan los valores de control MD % 1, RW % 1 y
MW % 0. Estos valores, ms el campo del registro fuente SA y el registro de destino DR, totalmente especificado en esta instruccin, cargan el contenido de la direccin de memoria especificada por el registro SA en el registro DR. De nuevo, como PL % 0, el PC se incrementan. Vase que los valores JB y BC se ignoran ya que no es ni una instruccin de salto ni de bifurcacin.
La tercera instruccin, ST, almacena el contenido de un registro en la memoria. Los tres bits
primeros del cdigo de operacin, 010, dan a las siguientes seales de control los valores
MB % 0, RW % 0 y MW % 1. Cuando MW % 1 se produce una operacin de escritura en la
memoria, donde la direccin y el dato proceden del banco de registros. Con RW % 0 se evita
que se escriba en el banco de registros. Las direcciones de escritura en la memoria proceden del
registro seleccionado en el campo SA, y el dato a escribir en la memoria procede del registro
seleccionado en SB, ya que MB % 0. El campo DR, aunque est presente, no se usa al no producirse escritura a un registro.
Como este procesador tiene instrucciones de carga y almacenamiento, y no cambian la carga
y almacenamiento de operandos con otras operaciones, se dice que tiene una arquitectura de
carga/almacenamiento. El uso de tal arquitectura simplifica la ejecucin de las instrucciones.

ADI

LD

ST

SL

NOT

BRZ

0010000

0100000

0001110

0001011

1100000

R[DR] p R[SA]!zf I(2:0)

Funcin

Complement
register

Desplaza a la
izquierda

0 0

MB MD RW MW PL JB BC

Si R[SA] % 0,
1
PC p PC ! se AD,
Si R[SA] 0, PC p PC!1

R[DR] p R[SA]

R[DR] p sl R[SB]

Almacena el
M[R[SA]] p R[SB]
contenido de un
registro en memoria

Carga el contenido R[DR] p M[R[SA]]


de memoria
en registro

Suma inmediata
de un operando

Descripcin

Salto/bifurcacin Si R[SA] % 0,
bifurcacin a
PC ! se AD

Registro

Registro

Registro

Registro

Inmediato

Nombre
simblico Formato

1000010

Cdigo
de operacin

 TABLA 10-11
Seis instrucciones para el procesador de un solo ciclo

438 
FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FUNDAMENTOS DEL DISEO DE PROCESADORES

439

Las dos siguientes instrucciones utilizan la unidad funcional y escriben en el banco de registros sin operandos inmediatos. Los ltimos cuatro bits del cdigo de operacin, el valor para el
campo FS de la palabra de control, especifican una operacin de la unidad funcional. En estas
dos instrucciones involucra a un nico registro fuente, R[SA] para la operacin NOT y R[SB]
para el desplazamiento a la izquierda, y un registro destino.
La ltima instruccin es una bifurcacin condicional y manipula el valor de PC. Tiene
PL % 1, haciendo que se cargue el contador de programa en lugar de incrementarse, y JB % 0,
haciendo una bifurcacin condicional en lugar de un salto. Al ser BC % 0, se verifica si el registro R[SA] es cero. Si R[SA] es igual a cero, el contenido PC pasa a ser PC ! se AD, que indica
una extensin de signo. En otro caso, el PC se incrementa. En esta instruccin, los campos DR
y SB pasan a ser el campo de direcciones de 6 bits AD, que utiliza extensin de signo y se suma
al contenido de PC.
Para demostrar cmo instrucciones tales como stas se pueden usar en un sencillo programa,
considere la expresin aritmtica 83 . (2 ! 3). El siguiente programa realiza este clculo, suponiendo que el registro R3 tiene el valor 248, la posicin 248 de la memoria de datos contiene
un 2, la posicin 249 guarda el valor 83 y el resultado se guarda en la posicin 250.
LD

R1, R3

ADI
NOT
INC
INC
LD

R1,
R1,
R1,
R3,
R2,

ADD
INC
ST

R2, R2, R1
R3, R3
R3, R2

R1, 3
R1
R1
R3
R3

Carga a R1 con el contenido de la posicin 248 de la memoria


(R1 % 2)
Suma 3 a R1 (R1 % 5)
Complementa a R1
Incrementa a R1 (R1 % .5)
Incrementa el contenido de R3 (R3 % 249)
Carga a R2 con el contenido de la posicin 249 de la memoria
(R2 % 83)
Suma el contenido de R1 al contenido de R2 (R2 % 78)
Incrementa el contenido de R3 (R3 % 250)
Almacena el contenido de R2 en la posicin 250 de memoria
(M[250] % 78)

En este caso, la substraccin se hace tomando el complemento a 2 de (2 ! 3) y sumndolo a 83;


se podra haber utilizado tambin la operacin de substraccin, SUB. Si el campo de un registro
no se utiliza en la ejecucin de una instruccin, se omite su valor simblico. Los valores simblicos para una instruccin de tipo registro, si es que hay alguno, se colocan en el orden siguiente
DR, SA y SB. En las instrucciones de tipo inmediato, los campos estn en el orden DR, SA
y OP. Para almacenar este programa en la memoria de programa es necesario convertir todo
los nombres simblicos y los nmeros decimales utilizados en sus cdigos binarios correspondientes.

Problemas del procesador de un solo ciclo


Aunque puede haber casos en los que la estrategia de temporizacin y control del procesador de
un solo ciclo es til, presenta ciertas limitaciones. Una limitacin es a la hora de realizar operaciones complejas. Por ejemplo, supongamos que desea tener una instruccin que ejecute la multiplicacin binaria usando un algoritmo de suma y desplazamiento. Con la ruta de datos dada,
esta operacin no se puede realizar mediante una microoperacin que se pueda ejecutar en un

440 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

solo ciclo de reloj. Pare ello se necesita una organizacin del control que proporcione varios
ciclos de reloj para la ejecucin de las instrucciones.
Adems, el procesador de un solo ciclo de reloj tiene dos memorias de 16 bits, una para las
instrucciones y otra para los datos. En un procesador sencillo, con las instrucciones y los datos
en la misma memoria de 16 bits, para ejecutar una instruccin que carga un dato de la memoria
a un registro, se necesita realizar dos accesos de lectura. El primer acceso obtiene la instruccin
y el segundo, caso de que sea necesario, lee o escribe el dato. Puesto que se deben aplicar dos
direcciones diferentes a las entradas de las memorias, se necesitan al menos dos ciclos de reloj
para obtener y ejecutar la instruccin. Esto se puede lograr fcilmente con el control de varios
ciclos de reloj.
Para terminar, el procesador de un solo ciclo de reloj tiene un lmite ms bajo de periodo de
reloj debido al camino con el retardo ms grande. Este camino se muestra en azul en el diagrama simplificado de la Figura 10-17. El retardo total a lo largo del camino es de 17 ns. Esto
limita la frecuencia de reloj a 58.8 MHz, que, aunque pueda ser adecuada para ciertas aplicaciones, es demasiado lenta para una CPU de un procesador moderno. Para conseguir frecuencias de
reloj ms altas, se debe reducir el retardo de los componentes que forman el camino o el nmero de estos. Si los retardos de los componentes no se pueden reducir, la nica alternativa es
reducir el nmero de componentes de la ruta. En el Captulo 12, la tcnica de pipelining permite
reducir el nmero de componentes en la ruta combinacional con el retardo ms largo, permitiendo incrementar la frecuencia de reloj. En el Captulo 12 se presenta una ruta de datos y su control en pipeline, demostrndose el rendimiento que se puede obtener de la CPU.

PC

Memoria
de instruccin

1 ns

4 ns

Banco de
3 ns
registros (lectura)

MUX B

1 ns

Unidad funcional
4 ns
o memoria de datos

MUX D

1 ns

Banco de registros 3 ns
(escritura)

 FIGURA 10-17
Retardo ms largo en un procesador de un solo ciclo

FUNDAMENTOS DEL DISEO DE PROCESADORES

441

10-9 CONTROL CABLEADO MULTICICLO


Para ver el control en varios ciclos vamos a usar la arquitectura de un sencillo procesador pero
con su ruta de datos, memoria y control modificados. El objetivo de las modificaciones es mostrar el uso de una sola memoria, tanto para datos como para instrucciones, y para ver cuan complejas son las instrucciones que se pueden realizar utilizando varios ciclos de reloj por instruccin. El diagrama de bloques de la Figura 10-18 muestra las modificaciones en la ruta de datos,
la memoria y el control.
Los cambios en el procesador de un solo ciclo se pueden observar comparando las Figuras
10-15 y 10-18. La primera modificacin, posible pero no indispensable, con operaciones en varios ciclos de reloj es reemplazar la memoria de programa y de datos de la Figura 10-15, que
est separada, por una nica memoria, M, como se muestra en la Figura 10-18. Para traer las

Extensin
PS

PC

D
RW

4
DR
16

IR
Opcode DR SA SB
7 3 3 3

IL

16 x 16
Banco
de registros
AA
BA
A
B
DA

Lgica de 4
direccin
SA
3 de registros
SB
4
3
4
4
4
AX BX DX
3

Relleno de ceros
1 0
MUX B

Control
de estado
4

Bus B
Bus A

Lgica de control

FS

MM

V
C

Unidad
funcional

N
Z
N P I D A B MF MR MM
S S L X X X B S D WM W

Control de
secuencia

MB

Control de la
ruta de datos
4

CONTROL MICROPROGRAMADO

MD
Bus D

0 1
MUX M
Address
MW
out

Data
out
Entrada Direccin
de datos
Memoria
M
Salida de datos
Data in

0
1
MUX D

RUTA DE DATOS

 FIGURA 10-18
Diagrama de bloques de un procesador de varios ciclos de reloj

442 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

instrucciones, el PC tiene la direccin fuente para la memoria y, para acceder a los datos es el
Bus A el que tiene la direccin fuente. A la entrada de direcciones de la memoria, el multiplexor
MUX M selecciona entre estas dos fuentes de direcciones. El MUX M necesita una seal de
control adicional, MM, que se aade al formato de la palabra de control. Puesto que la unidad
de control necesita las instrucciones de la memoria M, se ha aadido una ruta desde sus salidas
hasta el registro de instrucciones, IR, de la unidad de control.
En la ejecucin de una instruccin mediante varios ciclos de reloj, los datos generados en el
ciclo en curso se necesitan generalmente en el ciclo posterior. Estos datos puedes almacenarse
temporalmente en un registro en el momento en que se generan y mantenerlos hasta el momento
en que se utilizan. Los registros utilizados en dicho almacenamiento temporal son, generalmente, no visibles para el usuario (es decir, no forman parte de los recursos de almacenamiento). La segunda modificacin proporciona estos registros de almacenamiento temporal duplicando el nmero de registros en el banco de registros. Los registros de 0 hasta 7 forman parte de
los recursos de almacenamiento y los registros de 8 hasta 15 son slo para almacenamiento temporal durante la ejecucin de las instrucciones, por tanto, no forman parte de los recursos de
almacenamiento visibles al usuario. El direccionamiento de 16 registros necesita 4 bits y pasa a
ser ms complejo ya que el direccionamiento de los ocho primeros registros se deben controlar
a partir de la instruccin y la unidad de control, y los ocho registros siguientes se controlan
desde la unidad de control. Esto se maneja mediante el registro de direcciones lgicas de la
Figura 10-18 y modificando los campos de la palabra de control DX, AX y BX. Los detalles de
este cambio se discutirn posteriormente cuando se haya definido el control.
El PC es el nico componente de la unidad de control que se mantiene aunque tambin debe
ser modificado. Durante la ejecucin de una instruccin multiciclo, el PC debe mantenerse en
su valor actual durante todos los ciclos excepto uno. Para proporcionar esta capacidad, as como
una operacin de incremento y dos operaciones de carga, el PC se modifica para controlarse
mediante un campo de la palabra de control de 2 bits, PS. Como el PC se controla completamente mediante la palabra de control, la lgica de control de salto condicional, representada
anteriormente mediante BC, se absorbe por el bloque Control Logico de la Figura 10-18. Debido a que el procesador modificado es multiciclo, la instruccin necesita ser guardada en un registro, para utilizarse durante su ejecucin, ya que su valor se necesitar probablemente en ms
de un ciclo y no slo en el primero. El registro utilizado para este propsito es el registro de
instrucciones IR de la Figura 10-18. Ya que el IR se carga solamente cuando una instruccin se
empieza a leer de la memoria, tiene una seal de Load Enable, IL, que se aade a la palabra de
control. Debido a que la operacin necesita varios ciclos, es preciso tener un circuito de control
secuencial, que pueda proporcionar una secuencia de palabras de control para las microoperaciones, para interpretar las instrucciones y reemplazar al decodificador de instrucciones. La unidad secuencial de control est formada por el registro de control de estado y la lgica de control
combinacional. La lgica de control tiene el estado, el cdigo de operacin, y los bits de status
como entradas y produce la palabra de control como salida. Conceptualmente, la palabra de
control se divide en dos partes, una para la secuencia de control, que es el siguiente estado de
toda la unidad de control, y otra para el control de la ruta de datos, que controla las microoperaciones ejecutadas mediante la ruta de datos y la Memoria M, segn se muestra en la Figura
10-18.
La palabra de control modificada de 28 bits se da en la Figura 10-19 y las definiciones de
los campos y palabras de control de la palabra de control se dan en las Tablas 10-12 y 10-13. En
la Tabla 10-12, los campos DX, AX y BX controlan la seleccin de los registros. Si el MSB de
uno de estos campos es 0, entonces el registro correspondiente de direcciones DA, AA o BA es
aquel dado mediante 0 88 DR, 0 88 SA, y 0 88 SB respectivamente. Si el MSB de alguno de estos

FUNDAMENTOS DEL DISEO DE PROCESADORES

27

24 23 22 21 20
NS

I
PS
L

17 16
DX

13 12
AX

9 8 7
BX

M
B

443

4 3 2 1 0
FS

M R MM
D WMW

 FIGURA 10-19
Formato de la palabra de control de un procesador multiciclo

campos es 1, entonces la direccin del registro correspondiente es el contenido de los campos


DX, AX y BX. Este proceso de seleccin se lleva a cabo mediante la lgica del registro de
direcciones, que contiene tres multiplexores, uno por cada DA, AA y BA, controlado por el
MSB de DX, AX y BX respectivamente. En la Tabla 10-12 tambin se dan los valores del cdigo para el campo MM, que determina si Address out o PC sirve como direccin para la memoria M. Los campos restantes de la Tabla 10-12: MB, MD, RW y MW, tienen las mismas funciones que para los procesadores de un solo ciclo de reloj.
En el circuito secuencial de control, el registro de control de estado tiene un conjunto de
estados, como tiene un conjunto de flip-flops de cualquier otro circuito secuencial. En este nivel
de discusin, suponemos que cada estado tiene un nombre abstracto que se puede utilizar como
valor del estado actual y del estado futuro. En el proceso de diseo, se necesita realizar una
asignacin de estados a estos estados abstractos. Segn la Tabla 10-13, el campo NS de la palabra de control indica el siguiente estado del registro de control de estado. Hemos asignado cuatro bits para el cdigo del estado, aunque esto se puede modificar segn sea necesario, dependiendo del nmero de estados necesarios y la sentencia de asignacin utilizada en el diseo.
Este campo en particular, podra considerarse como esencial para el control y el circuito secuencial y como parte de la palabra de control, aunque aparecer en la tabla de estados del control
en cualquier caso. El campo de 2 bits, PS, controla el contador de programa, PC. Para un ciclo
de reloj determinado, el PC contiene su estado (00), incrementa su estado en 1 (01), carga condicionalmente el PC con extensin de signo AD (10), o carga incondicionalmente el contenido
de R[SA] (11). Por ltimo, se carga el registro de instrucciones slo una vez durante la ejecucin de una instruccin. As, en cualquier ciclo, o se carga una nueva instruccin (IL % 1) o la
instruccin permanece sin cambiar (IL % 0).

Diseo del control secuencial


El diseo de un circuito de control secuencial se puede realizan usando las tcnicas presentadas
en los Captulo 6 y 8. Sin embargo, comparado con los ejemplos de esta parte, incluso para este
procesador relativamente sencillo, el control es bastante complicado. Suponiendo que hay cuatro variables, la lgica combinacional del control tiene 15 variables de entrada y 28 variables de
salida. Esto indica que una tabla de estados condensada no es demasiado difcil de hacer, pero
un diseo manual detallado de la lgica es muy complejo, haciendo que el uso de una PLA o de
sntesis lgica sean unas de las opciones ms viables. Por tanto, como consecuencia de esto, nos
centraremos en el desarrollo de tablas de estados en lugar de disear una lgica detallada.
Empezamos desarrollando el diagrama ASM que representa las instrucciones que se pueden
realizar con el mnimo nmero de ciclos de reloj. Las extensiones del diagrama pueden desarrollarse para la realizacin de instrucciones que requieren ms que el nmero mnimo de ciclos de
reloj. Los diagramas ASM proporcionan la informacin detallada para realizar las entradas de la
tabla de estados para disear el conjunto de instrucciones. Las instrucciones que necesitan un
acceso a memoria para los datos y tambin para las mismas instrucciones requieren al menos

R9

R10

R11

R12

R13

R14

R15

R10

R11

R12

R13

R14

R15

R15

R14

R13

R12

R11

R10

R9

1111

1110

1101

1100

1011

1010

1001

1000

R9

R8

1000
1001
1010
1011
1100
1101
1110
1111

F%AoB
F%ASB
F % A1
F%B
F % sr B
F % sl B
Sin usar

0111

F%ApB

Sin usar

0110

0101

F%A.1

0100

F % A ! B1 ! 1

0011

0010

0001

0000

RW

MM

MW

Data In

Escribe PC

Escribe

Unidad
No
Direccin No
funcional escribe de salida escribe

Cdigo MD

Sin usar

Sin usar

F%A!B

F%A!1

F%A

Cdigo FS

Constante 1

MB

R8

Cdigo

R8

BX
Registro

AX

R[DR] R[SA] R[SB] 0XXX

DX

 TABLA 10-12
Informacin de la palabra de control para la ruta de datos

Cdigo

444 
FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FUNDAMENTOS DEL DISEO DE PROCESADORES

445

 TABLA 10-13
Control de la informacin para la secuencia de control
NS
Siguiente estado
Da el siguiente estado
del registro de control
de estado

PS

IL

Accin

Cdigo

Accin

Cdigo

Mantiene el PC
Incrementa el PC
Bifurcacin
Salto

00
01
10
11

No carga
Carga instruccin

0
1

dos ciclos de reloj. Es conveniente separar los ciclos de reloj en un procedimiento en dos pasos:
traer la instruccin y ejecutar la instruccin. Segn esta divisin, en la Figura 10-20 se da el
diagrama ASM para instrucciones de dos ciclos. La lectura de la instruccin ocurre en el estado
INF, arriba del diagrama. El PC contiene la direccin de la instruccin en memoria M. Esta
direccin se aplica a la memoria y la palabra que se lee de la memoria se carga en IR en el
pulso de reloj que termina el estado INF. El mismo pulso de reloj provoca que el nuevo estado
pase a ser EX0. En el estado EX0, la instruccin se descodifica mediante el uso de una gran
caja de decisin vectorial y las microoperaciones ejecutando todo o parte de la instruccin que
aparece en la caja de salida condicional. Si la instruccin se puede completar en el estado EX0,
el siguiente estado en preparar la lectura de la siguiente instruccin es INF. Adems, para las
instrucciones que no cambian el contenido del PC durante su ejecucin, el PC se incrementa.
Si se necesitan estados adicionales para la ejecucin de las instrucciones, el siguiente estado
es EX1. En cada uno de los estados de ejecucin hay 128 combinaciones posibles diferentes,
basadas en el cdigo de operacin. Cuando se utilizan los bits de status, tpicamente uno solo
cada vez, la salida de la caja de decisin vectorial alimenta a una o ms cajas de decisin
escalares, segn se ilustra en la instruccin de salto condicional en la parte baja derecha de la
Figura 10-20.
A continuacin describimos un ejemplo de ejecucin de una instruccin especificada por el
diagrama ASM de la Figura 10-20. El primer cdigo de operaciones es 000000 para la instruccin mover A, (MOVA). Esta instruccin involucra una sencilla transferencia desde el registro fuente A al registro de destino, como se especifica mediante la transferencia de registro mostrada en el estado EX0 para el cdigo de la instruccin. Aunque los bits de estado N y Z son
vlidos, no se usan en la ejecucin de esta instruccin. El PC se incrementa en el flanco de reloj
al terminar el estado EX0, una accin que ocurre para todas las instrucciones excepto para las
instrucciones de saltos incondicionales y saltos condicionales del diagrama ASM.
El tercer cdigo de operacin 0000010 es la instruccin ADD con la transferencia de registro para la suma mostrada. En este caso, los bits de status V, C, N y Z son vlidos, aunque no se
usan. El cdigo undcimo, 0010000, es la instruccin de carga (LD), que utiliza el valor del
registro especificado por SA para las direcciones y las cargas de datos desde la memoria M al
registro especificado por DR. El duodcimo cdigo de operacin, 010000, es para la instruccin
de almacenamiento (ST), que almacena el valor en el registro SB en la posicin de memoria M
especificada por la direccin del registro SA. El dcimo cuarto cdigo de operacin, 1001100,
es la suma inmediata (ADI), que suma el valor rellenado con ceros del campo OP, los tres bits
ms a la derecha de la instruccin, al contenido del registro SA y coloca el resultado en el registro DR.

446 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

INF
PC

PC  1

IR

M[PC]

EX0

R[DR]

R[SA]

R[DR]

R[SA]
+1

R[DR]

R[SA]
+ R[SB]

0000000

0000001
0000010
0000101
0000110
0001000
0001001
0001010
0001011

0001100

Opcode

0010000
0100000
1001100
1000010
1100000
1100001
1110000

R[DR]

R[SA]
1

R[DR]

R[SA]
R[SB]

R[DR]

R[SA]
R[SB]

R[DR]

R[SA]
 R[SB]

M[R[SA]]

R[SB]

zf OP

R[DR]
R[SA]
+ zf OP

0
R[DR]

R[SB]

M[R[SA]]

R[DR]
R[SA]
+ R[SB] +1

R[DR]

R[DR]

A IF
PC
R[DR]

R[SA]

PC
 se AD

PC

R[SA]

 FIGURA 10-20
Diagrama bsico ASM para procesadores multiciclo

El cdigo de operacin dcimo sexto, 1100001, es la instruccin de salto condicional sobre


negativo (BRN). La decodificacin de esta instruccin hace que el valor del registro especificado por SA se pase a travs de la unidad funcional para evaluar el valor de los bits de status N y
Z. Los valores de N y Z, vuelven a entrar en la lgica de control. Segn el valor de N, el salto
condicional se realiza o no sumando la direccin extendida AD desde la instruccin al valor del

FUNDAMENTOS DEL DISEO DE PROCESADORES

447

PC o incrementa el PC, respectivamente. Esto se representa mediante la caja de decisin para


N, mostrada en la Figura 10-20.
A partir de este diagrama ASM, se puede extraer la tabla de estados del circuito de control
secuencial, segn se muestra en la Tabla 10-14. Los estados actuales se dan con nombres abtractos y los opcodes y bits de status sirven de entradas. En el caso de los bits de status, slo se
especifican aquellos utilizados en la instruccin. Usando combinaciones de bits y varios patrones de bits de status, es posible especificar las funciones de los bits de status. Vase que muchas
casillas de la Tabla 10-14 contienen X, simbolizando indiferente. Para estos casos, la entrada
o recurso que no se utiliza en una determinada microoperacin o bits concretos del cdigo que
son X no se utilizan para controlarla. Es un ejercicio conveniente determinar cmo se obtiene
cada una de las entradas de la Tabla 10-14, basndose en las Tablas 10-12, 10-13 y la Figura
10-20.
Es interesante comparar brevemente la temporizacin de la ejecucin de las instrucciones en
esta organizacin con las del procesador de un solo ciclo. Cada instruccin necesita dos ciclos
de reloj para acceder y ejecutarse, comparado con un ciclo de reloj que necesita el procesador
de un solo ciclo. Debido al largusimo retardo de la ruta desde el PC hasta la memoria de instrucciones, decodificador de instruccin, ruta de datos y control de bifurcacin, terminado por el
registro de instrucciones, los periodos de reloj son algo ms cortos. Sin embargo, debido a los
requisitos de tiempo de set-up de los flip-flops del IR y un posible desbalance en los retardos de
algunas rutas a travs del circuito, el tiempo total que se necesita para ejecutan una instruccin
podra se tan largo o ms que en un procesador de un solo ciclo. Entonces cul es la ventaja
de esta organizacin que usa una sola memoria? Las dos siguientes instrucciones tienen la
respuesta.
La primera instruccin a aadir es carga un registro indirecta (LRI), con opcode 0010001.
En esta instruccin, el contenido del registro SA direcciona una palabra de la memoria. La palabra, que se conoce como una direccin indirecta, se usa para direccionar la palabra en la memoria que se carg en el registro DR. Esto se puede representar simblicamente como
R[DR] p M[M[R[SA]]]
El diagrama ASM para la ejecucin de esta instruccin se da en la Figura 10-21. Siguiendo
al acceso de la instruccin, el estado pasa a ser EX0. En este estado, R[SA] direcciona la memoria para obtener la direccin indirecta, que se coloca despus en el registro temporal R8. En el
estado EX1, el siguiente acceso a memoria ocurre con la direccin en R8. El operando obtenido
se coloca en R[DR] para completar la operacin y el PC se incrementa. El ASM vuelve despus
al estado INF para acceder a la siguiente instruccin. La caja de decisin vectorial para el opcode se necesita en todos los estados, ya que estos mismos estados se usan en otras instrucciones
para su ejecucin. Claramente, con dos accesos a la memoria M, esta instruccin podra no ser
ejecutada en un procesador de un solo ciclo o utilizar dos ciclos de reloj en un procesador de
varios ciclos de reloj. Adems, para evitar sobrescribir el contenido de los registros R0 a R7
(excepto para R[SA]), el uso de R8 como registro temporal es fundamental. La instruccin LRI
proporciona una mejora en el tiempo de ejecucin en el ltimo caso.
Las ltimas dos instrucciones a aadir son las de desplazamiento mltiple a la derecha
(SRM) y desplazamiento mltiple a la izquierda (SLM), con opcode 0001101 y 0001110, respectivamente. Estas dos instrucciones pueden compartir la mayor parte de la secuencia de las
microinstruccines que se utilizan. SRM especifica que el contenido del registro SA se tiene
que desplazar a la derecha el nmero de posiciones dadas por los tres bits de campo OP, colocando el resultado en el registro DR. El diagrama ASM para esta operacin (y para SLM) se

XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXX1
XXX0
XX1X
XX0X
XXXX

Opcode

XXXXXX
0000000
0000001
0000010
0000101
0000110
0001000
0001001
0001010
0001011
0001100
0010000
0100000
1001100
1000010
1100000
1100000
1100001
1100001
1110000
EX0
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF
INF

Siguiente
VCNZ estado

Entradas

1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

00
01
01
01
01
01
01
01
01
01
01
01
01
01
01
10
01
10
01
11

IL PS
XXXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
XXXX
0XXX
0XXX
XXXX
XXXX
XXXX
XXXX
XXXX

DX
XXXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX
XXXX
0XXX
0XXX
XXXX
0XXX
0XXX
0XXX
0XXX
0XXX
0XXX

AX
XXXX
XXXX
XXXX
0XXX
0XXX
XXXX
0XXX
0XXX
0XXX
XXXX
0XXX
XXXX
0XXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX

FS
0
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
0
0
0
0

1
X
X
X
X
X
X
X
X
X
X
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0

MD RW MMMW

X XXXX X
X 0000 0
X 0001 0
0 0010 0
0 0101 0
X 0110 0
0 1000 0
0 1001 0
0 1010 0
X 1011 0
0 1100 0
X XXXX 1
0 XXXX X
1 1100 0
1 0010 0
X 0000 X
X 0000 X
X 0000 X
X 0000 X
X 0000 X

MB

Salidas
BX

* Para esta combinacin de estado y entrada, tambin ocurre que PC p PC ! 1.

INF
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0
EX0

Estado

 TABLA 10-14
Tabla de estados para instrucciones de dos ciclos

MOVA
INC
ADD
SUB
DEC
AND
OR
XOR
NOT
MOVB
LD
ST
LDI
ADI
BRZ
BRZ
BRN
BRN
JMP

IR p M[PC]
R[DR] p R[SA]*
R[DR] p R[SA] ! 1*
R[DR] p R[SA] ! R[SB]*
R[DR}pR[SA]!R[SB]!1*
R[DR] p R[SA] ! (.1)*
R[DR] p R[SA] p R[SB]*
R[DR] p R[SA] o R[SB]*
R[DR] p R[SA] S R[SB]*
R[DR] p R[SA]*
R[DR] p R[SB]*
R[DR] p M[R[SA]]*
M[R[SA]] p R[SB]*
R[DR] p zf OP*
R[DR] p R[SA] ! zf OP*
PC p PC ! se AD
PC p PC ! 1
PC p PC ! se AD
PC p PC ! 1
PC p R[SA]

Comentarios

448 
FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FUNDAMENTOS DEL DISEO DE PROCESADORES

449

EX0

EX1
0010001
Opcode

A IF

PC

PC  1

R8

M[R[SA]]

R[DR]

M[R8]

0010001

Opcode

 FIGURA 10-21
Diagrama ASM para la instruccin de registro indirecto

muestra en la Figura 10-22. El registro R9 almacena el nmero de bits restantes a desplazar, y el


desplazamiento se realiza en el registro R8.
Inicialmente, el contenido de R[SA] a desplazar se coloca en R8. Segn se carga en R8, se
comprueba para ver si es 0 y, por tanto, no necesita ser desplazado. As mismo, se comprueba si
la cantidad a desplazar, cargada en el registro R9, es 0, indicando que no es necesario desplazar.
Si se satisface cada caso, se completa la ejecucin de instruccin, y el ASM vuelve al estado
INF, en otro caso, se realiza una operacin de desplazamiento a la derecha del contenido del
registro R8. R9 se decrementa y se comprueba si es cero. Si R9 0, entonces se repiten el decremento y el desplazamiento. Si R9 % 0, entonces el contenido de R8 ya ha sido desplazado el
nmero de posiciones especificadas por OP, y el resultado se transfiere a R[DR] completando la
ejecucin de la instruccin, y el ASM vuelve al estado INF.
Si tanto el operando como la cantidad a desplazar son distintas de cero, SRM, incluyendo su
lectura, necesita 2s ! 4 ciclos de reloj, donde s es el nmero de posiciones desplazadas. El rango de ciclos de reloj necesario, incluyendo el acceso a la instruccin, va de 6 a 18. Si la misma
operacin fuese llevada a cabo mediante un programa utilizando la instruccin de desplazamiento, ms el incremento y la bifurcacin, entonces podran hacer falta 3s ! 3 instrucciones y
6s ! 6 ciclos. La mejora en el nmero de ciclos de reloj necesarios es de 4s ! 2, as se ahorra
entre 6 y 30 ciclos de reloj en un procesador multiciclo para un operando y nmero de desplazamientos distintos de cero. Adems, se necesitan cinco posiciones menos de memoria para el
almacenamiento de una instruccin SRM, en comparacin con la del programa.
En el diagrama ASM de la Figura 10-22, los estados INF y EX0 (y EX1) son los mismos
que los usados en las instrucciones de dos ciclos en el diagrama ASM de la Figura 10-20 para la
instruccin LRI de la Figura 10-21. Adems, la realizacin de la operacin de desplazamiento a
la izquierda se muestra en la Figura 10-22, en la que, basado en el opcode, el desplazamiento a
la izquierda de R8 reemplaza al desplazamiento a la derecha de R8. Como consecuencia, la lgica que define los estados que realizan estas dos instrucciones se pueden compartir. Adems, la
lgica utilizada para la secuenciacin de los estados se puede compartir entre las realizaciones
de las instrucciones SRM y SLM.

450 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

EX0

0001101
R8

Opcode

R[SA]

0001110
0

EX1

0001101

R9

zf OP

Opcode
0001110

EX2

R8

sr R8
EX3

0001101
Opcode
0001110

R8

sl R8

0001101

R9

R9  1

Opcode
0001110

EX4

PC

PC  1

0001101
R[DR]

Opcode

R8

0001110
A INF

 FIGURA 10-22
Diagrama ASM para una instruccin de desplazamiento mltiple a la derecha

La especificacin de la tabla de estados de la Tabla 10-15 se obtiene utilizando la informacin del diagrama ASM de la Figura 10-22 y las Tablas 10-12 y 10-13. Los cdigos se extraen
de la transferencia de registros y la accin de secuenciamiento descrita en los comentarios de la
derecha de la misma forma que se obtuvo la Tabla 10-15.

0001101
0001101
0001101
0001101
0001101
0001101
0001101
0001101

0001110
0001110
0001110
0001110
0001110
0001110
0001110
0001110

EX0
EX0
EX1
EX1
EX2
EX3
EX3
EX4

EX0
EX0
EX1
EX1
EX2
EX3
EX3
EX4

EX1
INF
EX1
INF
EX2
INF
EX3
EX2
EX4
INF
EX1
INF
EX2
INF
EX3
EX2
EX4
INF

XXXX
XXXX

XXX0
XXX1
XXX0
XXX1
XXXX
XXX0
XXX1
XXXX

XXX0
XXX1
XXX0
XXX1
XXXX
XXX0
XXX1
XXXX
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0

0
0

DX

AX

BX

MB

Salidas

00 1000
00 1000
01 1001
01 1001
00 1000
00 1001
00 1001
01 0XXX

00 1000
01 1000
00 1001
01 1001
00 1000
00 1001
00 1001
01 0XXX
0XXX
0XXX
XXXX
XXXX
XXXX
1001
1001
1000

0XXX
0XXX
XXXX
XXXX
XXXX
1001
1001
1000
XXXX
XXXX
XXXX
XXXX
1000
XXXX
XXXX
XXXX

XXXX
XXXX
XXXX
XXXX
1000
XXXX
XXXX
XXXX
X
X
1
1
0
X
X
X

X
X
1
1
0
X
X
X

00 1000 0XXX XXXX X


01 0XXX 1000 XXXX X

IL PS

* Para esta combinacin de estado y entrada, tambin ocurre que PC p PC ! 1.

0010001
0010001

Opcode

Siguiente
VCNZ estado

Entradas

EX0
EX1

Estado

 TABLA 10-15
Tabla de estados para ilustrar las instrucciones de tres ciclos o ms

0000
0000
1100
1100
1110
0110
0110
0000

0000
0000
1100
1100
1101
0110
0110
0000

0000
0000

FS

0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0

1
1

1
1
1
1
1
1
1
1

1
1
1
1
1
1
1
1

1
1

X
X
X
X
X
X
X
X

X
X
X
X
X
X
X
X

X
X

0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0

SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM

SRM
SRM
SRM
SRM
SRM
SRM
SRM
SRM

0 LRI
0 LRI

MD RW MMMW

R8 p R[SA], Z1 : r EX1
R8 p R[SA], Z: r INF*
R9 p zf OP, Z1 : r EX2
R9 p zf OP, Z: r INF*
R8 p sl R8, r EX3
R9 p R9 . 1, Z1 : r EX2
R9 p R9 . 1, Z: r EX4
R[DR] p R8, r IF*

R8 p R[SA], Z1 : r EX1
R8 p R[SA], Z: r INF*
R9 p zf OP, Z1 : r EX2
R9 p zf OP, Z: r INF*
R8 p sr R8, r EX3
R9 p R9 . 1, Z1 : r EX2
R9 p R9 . 1, Z: r EX4
R[DR] p R8, r INF*

R8 p M[R[SA], r EX1
R[DR] p M[R8], r INF*

Comentarios

FUNDAMENTOS DEL DISEO DE PROCESADORES




451

452 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

La realizacin de las instrucciones LRI y SRM ilustra la flexibilidad conseguida utilizando


control multiciclo. La realizacin de instrucciones adicionales se explora en los problemas del
final del captulo.

10-10 RESUMEN DEL CAPTULO


En la primera parte del captulo se present el concepto de ruta de datos para el procesado en
sistemas digitales. Entre los principales componentes de la ruta de datos estn los bancos de
registros, los buses, las unidades aritmtico-lgicas (ALUs) y los desplazadores. Las palabras de
control proporcionan un medio de organizar el control de las microoperaciones realizadas en la
ruta de datos. Estos conceptos se combinaron con el concepto de ruta de datos, que sirve como
base para explorar los procesadores en el resto del texto.
En la segunda parte del captulo, se present el diseo del control en sistemas programados,
examinando dos formas diferentes de unidades bsicas de control para un procesador con una
arquitectura sencilla. Presentamos el concepto de arquitecturas de conjunto de instrucciones y
definimos los formatos de las instrucciones y las operaciones de un procesador sencillo. La primera forma de este procesador es capaz de ejecutar cualquier instruccin en un solo ciclo de
reloj. Aparte de tener un contador de programa y su lgica, la unidad de control de este procesador est compuesta por un circuito decodificador combinacional.
Entre las limitaciones de procesador de un solo ciclo estn la complejidad de las instrucciones que se pueden ejecutar en l, problemas con la interfaz con una sola memoria, y la relativamente baja frecuencia de reloj obtenida. Para solventar las dos primeras limitaciones, examinamos una versin multiciclo de un procesador sencillo en el que se usa una sola memoria y las
instrucciones se llevan a cabo en dos fases distintas: acceso a la instruccin y ejecucin de la
instruccin. El problema que resta por resolver, referente a utilizar muchos ciclos de reloj, se
resolver en el Captulo 12 presentando la rutas de datos y el control en pipeline.

REFERENCIAS
1.

MANO, M. M.: Computer Engineering: Hardware Design: Englewood Cliffs, NJ: Prentice
Hall, 1988.

2.

MANO, M. M.: Computer System Architecture, 3rd Ed. Englewood Cliffs, NY: Prentice
Hall, 1993.

3.

PATTERSON, D. A., and J. L. HENNESSY: Computer Organization and Design: The Hardware/Software Interface, 2nd ed. San Francisco, CA: Morgan Kaufmann, 1998.

4. HENNESSY, J. L., and D. A. PATTERSON: Computer Architecture: A Quantitative Approach,


2nd ed. San Francisco, CA: Morgan Kaufmann, 1996.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que hay una solucin
disponible en la direccin de Internet: http://www.librosite.net/Mano.
10-1. Una ruta de datos similar a la de la Figura 10-1 tiene 128 registros. Cuntas lneas de
seleccin se necesitan para cada grupo de multiplexores y para el decodificador?

FUNDAMENTOS DEL DISEO DE PROCESADORES

453

10-2. *Dada una ALU de 8 bits con salidas F7 a F0 y acarreos disponibles C8 y C7, muestre el
dibujo que genera las seales para los cuatro bits de status N (signo), Z (cero), V (overflow) y C (acarreo).
10-3. *Disee un circuito aritmtico con dos lneas de seleccin S1 y S0 y datos A y B de n
bits. El circuito debe efectuar las ocho siguientes operaciones aritmticas junto con el
acarreo de entrada Cin:
S1

S0

Cin % 0

Cin % 1

0
0
1
1

0
1
0
1

F % A ! B (suma)
F % A1 ! B
F % A . 1 (decremento)
F % A1 (complemento a 1)

F % A ! B1 (resta A . B)
F % A1 ! B (resta B . A)
F % A ! 1 (incremento)
F % A1 ! 1 (complemento a 2)

Dibuje el diagrama lgico para los dos bits menos significativos del circuito lgico.
10-4. *Disee un circuito aritmtico de 4 bits, con dos variables de seleccin S1 y S0, que
efecte las siguientes operaciones aritmticas:
S1

S0

0
0
1
1

0
1
0
1

Cin % 0
F % A ! B (suma)
F % A (transferencia)
F % B1 (complemento)
F % A ! B1

Cin % 1
F%A!B!1
F % A ! 1 (incremento)
F % B1 ! 1 (negacin)
F % A1 ! B1 ! 1 (resta)

Dibuje el diagrama lgico de una etapa de un bit.


10-5. Las entradas Xi e Yi de cada sumador completo de un circuito aritmtico tiene una lgica
digital que est especificada por las funciones booleanas
Xi % A i

Yi % B1 i S ! Bi C1 in

donde S es una variable de seleccin, Cin es la entrada de acarreo, Ai y Bi son las entradas de datos para la etapa i.
(a) Dibuje el diagrama lgico de un circuito de 4 bits, utilizando sumadores completos
y multiplexores.
(b) Determine la operacin aritmtica realizada por cada una de las cuatro combinaciones de S y Cin: 00, 01, 10 y 11.
10-6. *Disee una etapa de un bit de un circuito digital que realiza las cuatro siguientes operaciones: OR exclusiva, NOR exclusiva, NOR y NAND sobre los operandos de los registros A y B y deje el resultado en el registro A. Utilice dos variables de seleccin.
(a) Utilizando un Mapa de Karnaugh, disee la lgica mnima de una etapa, y dibuje el
diagrama lgico.
(b) Repita el apartado (a) probando diferentes asignaciones de los cdigos de seleccin
para las cuatro operaciones para ver si la lgica de las etapas se pueden simplificar
an ms.

454 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

10-7. !Disee una ALU que efecte las siguientes operaciones:


A!B

sl A

A ! B1 ! 1

AoB

B1

ASB

B1 ! 1

ApB

D el resultado de su diseo como un diagrama lgico para una etapa de la ALU. Su


diseo debera tener una entrada de acarreo entre etapas y tres bits de seleccin. Si tiene
acceso a software de simplificacin, aplquelo al diseo para obtener una lgica reducida.
10-8. *Encuentre la salida Y del barrel shifter de la Figura 10-9 para cada uno de los siguientes grupos de bits aplicados a S1, S0, D3, D2, D1 y D0:
(a) 000101
(c) 101010

(b) 010011
(d) 111100

10-9. Especifique la palabra de control de 16 bits que se debe aplicar a la ruta de datos de la
Figura 10-11 para realizar las siguientes microoperaciones:
(a)
(c)
(e)
(g)

R0 p R1 ! R7
R6 p sl R6
R1 p R7 ! 1
R1 p R2 S R3

(b)
(d)
(f)
(h)

R7 p 0
R3 p sr R4
R2 p R4 . Constant in
R5 p Data in

10-10. *Dadas las siguientes palabras de control de 16 bits para la ruta de datos de la Figura
10-11, determine (a) la microoperacin que se ejecuta y (b) el cambio del contenido de
los registros para cada palabra de control. Suponga que los registros son de 8 bits y que,
antes de la ejecucin de una palabra de control, contienen el valor de su nmero (por
ejemplo, el registro R5 contiene 05 en hexadecimal). Suponga que Constant tiene el valor 6 y Data in tiene el valor 1B, ambos en hexadecimal.
(a) 101 100 101 0 1000 0 1
(b) 110 010 100 0 0101 0 1
(c) 101 110 000 0 1100 0 1

(d) 101 000 000 0 0000 0 1


(e) 100 100 000 1 1101 0 1
(f) 011 000 000 0 0000 1 1

10-11. Dada la siguiente secuencia de palabras de control de 16 bits para la ruta de datos de la
Figura 10-11 y los carcteres iniciales ASCII en ocho registros, simule la ruta de datos
para determinar los caracteres alfanumricos en los registros despus de ejecutar la secuencia. El resultado es una palabra cifrada. Cul es?
011
100
101
001
001
110
111
001

011
100
101
001
001
110
111
111

001
001
001
000
000
001
001
000

0
0
0
0
0
0
0
0

0010
1001
1010
1011
0001
0101
0101
0000

0
0
0
0
0
0
0
0

1
1
1
1
1
1
1
1

R0
R1
R2
R3
R4
R5
R6
R7

00000000
00100000
01000100
01000111
01010100
01001100
01000001
01001001

FUNDAMENTOS DEL DISEO DE PROCESADORES

455

10-12. Una ruta de datos tiene cinco componentes principales, nombrados de A a E, conectados
formando un bucle desde el banco de registros a otro banco de registros similar al de la
Figura 10-17. El retardo mximo de cada componente es: A, 2 ns; B, 1 ns; C, 3 ns; D, 4
ns y E, 4 ns.
(a) Cul es la frecuencia mxima de reloj que se puede utilizar en la ruta de datos?
(b) La ruta de datos se ha cambiado a otra en pipeline utilizando tres registros. Cmo
se deberan distribuir los componentes entre las etapas y cul es la frecuencia de
reloj mxima que se podra conseguir?
(c) Repita el apartado (b) para un pipeline de 4 etapas.
10-13. Un procesador tiene instrucciones de 32 bits repartidos en los siguientes campos: opcode, 6 bits; dos campos de registros, 6 bits cada uno; y un operando inmediato o campo
de registro de 14 bits.
(a) Cul es el nmero mximo de operaciones que se pueden especificar?
(b) Cuntos registros se pueden direccionar?
(c) Cul es el rango de los operandos inmediatos sin signo que se pueden utilizar?
(d) Cul es el rango de operandos inmediatos con signo que se pueden utilizar, suponiendo que el bit 13 es el bit de signo?
10-14. *Un procesador tiene una unidad de memoria con 32 instrucciones y un banco de registros con 32 registros. El conjunto de instrucciones est formado por 110 operaciones diferentes. Hay un solo tipo de formato para las instrucciones, con una parte para el opcode, una para la direccin para el banco de registros y otra para un operando inmediato.
Cada instruccin se almacena en una palabra de la memoria.
(a) Cuntos bits son necesarios para la parte del opcode?
(b) Cuntos bits quedan para la parte del operando inmediato de la instruccin?
(c) Si el operando inmediato se utiliza como una direccin de memoria sin signo, cul
es el nmero mximo de palabras de memoria que se pueden direccionar?
(d) Cul es el valor algebraico ms grande y ms pequeo en complemento a 2 que se
puede utilizar como operando inmediato?
10-15. Un procesador tiene instrucciones de 32 bits. Hay varios formatos diferentes y el nmero
de bits de los opcodes varan dependiendo de los bits que necesitan los otros campos. Si
el primer bit del opcode es 0, entonces hay cuatro bits para el opcode. Si el primer bit
del opcode es 0, el opcode tiene 6 bits. Si el primer bit de opcode es 1 y el segundo es 1,
el opcode tiene 8 bits. Cuntos opcodes hay disponibles para el procesador?
10-16. El procesador de la Figura 10-15 ejecuta las cinco instrucciones descritas, mediante
transferencias de registros, en la siguiente tabla:
(a) Complete la tabla dando las salidas del decodificador de instrucciones binario de la
Figura 10-16 durante la ejecucin de cada una de las instrucciones:

456 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Instruccin-transferencia
de registros

DA AA BA MB

FS MD RW MW PL

JB

R[0] p R[7] S R[3]


R[1] p M[R[4]]
R[2] p R[5] ! 2
R[3] p sl R[6]
if (R[4] % 0)
PC p PC ! se PC
else PC p PC ! 1
(b) Complete la siguiente tabla, dando la instruccin en binario para un procesador de
un solo ciclo que ejecuta las transferencias de registros (si algn campo no se utiliza, dle el valor 0):
Instruccin-transferencia
de registros

Opcode

DR

SA SB u operando

R[0] p sr R[7]
R[1] p M[R[6]]
R[2] p R[5] ! 4
R[3] p R[4] S R[3]
R[4] p R[2] . R[1]
10-17. Utilizando la informacin de la tabla de verdad de la Tabla 10-10, verifique que el diseo de las salidas para un solo bit del decodificador de la Figura 10-16 es correcto.
10-18. Simule manualmente el procesador de un solo ciclo de la Figura 10-15 para la siguiente
secuencia de instrucciones, suponiendo que cada registro contiene inicialmente su ndice
como dato (es decir, R0 contiene 0, R1 contiene 1, etc.):
SUB R0, R1, R2
SUB R3, R4, R5
SUB R6, R7, R0
SUB R0, R0, R3
SUB R0, R0, R6
ST R7, R0
LD R7, R6
ADI R0, R6, 0
ADI R3, R6, 3

FUNDAMENTOS DEL DISEO DE PROCESADORES

457

Indique:
(a) El valor binario de la instruccin junto con los resultados en la misma lnea de la
instruccin.
(b) El contenido de cualquier registro que haya sido cambiado por la instruccin, o la
posicin y contenido de la memoria que haya sido cambiado por la instruccin en la
siguiente lnea de la instruccin en curso. Los resultados se colocan de esta forma ya
que los valores nuevos no aparecen en un registro o memoria, debido a la ejecucin
de una instruccin, hasta despus que haya ocurrido un flanco de subida de la seal
de reloj.
10-19. Indique una instruccin para un procesador de un solo ciclo de reloj que ponga a cero el
registro R4 y actualice los bits de status Z y N cuando se transfiera el valor 0 a R4. (Sugerencia: utilice una OR exclusiva.) Examinado la lgica de la ALU, determine los valores de los bits de status V y C.
10-20. Indique las entradas de la tabla de estados de la lgica de control para un procesador
multiciclo (vase la Tabla 10-15) que ejecuta las siguientes sentencias de transferencia
de registro. Suponga que, en todos los casos, el estado actual es EX0 y el cdigo de
operacin es 0010001.
(a)
(b)
(c)
(d)

R3 p R1 . R2, EX1, suponga que DR % 3, SA % 1 y SB % 2.


R8 p sr R8, r INF, suponga que DR % 5 y SB % 5
if (N % 0) then (PC r PC ! se, INF) else (PC r PC ! 1, INF)
R6 p R6, C p 0, r INF, suponga que DR % SA % 6.

10-21. Simule manualmente la instruccin SRM en un procesador multiciclo para el operando


0001001101111000 para OP % 6.
10-22. Se define una nueva instruccin para el procesador multiciclo con opcode 0010001. La
instruccin efecta la transferencia de registro
R[DR] p R[SB] ! M[R[SA]]
Encuentre el diagrama ASM que realice la instruccin, suponiendo que el opcode es
0010001. Haga la parte de la tabla de control de estados que lleva a cabo esta instruccin.
10-23. Repita el Problema 10-22 para las instrucciones: suma y comprueba (add and check) OV
(AOV), descrita mediante la transferencia de registros
R[DR] p R[SA] ! R[SB], V: R8 p 1, V1 : R8 r 0
y bifurcacin sobre overflow (BRV), descrita mediante la transferencia de registros
R8 p R8, V: PC p PC ! se AD, V1 : PC p PC ! 1
El opcode de AOV es 1000101 y, para BRV, es 1000110. Vase que el registro R8 se
utiliza como registro de status que almacena el resultado de overflow de la anterior
operacin. El resto de valores de N, Z, C y V se podran almacenar en R8 dando una
informacin completa de status de la anterior operacin lgica o aritmtica.

458 

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

10-24. !Se define una nueva instruccin para un procesador multiciclo. La instruccin compara dos nmeros enteros sin signo almacenados en los registros R[SA] y R[SB]. Si los
enteros son iguales, entonces el bit 0 de R[DR] se pone a 1. Si R[SA] es mayor que
R[SB], entonces el bit 1 de R[DR] se pone a 1. En el resto de casos, los bits 0 y 1 son 0.
El resto de bits de R[DR] tienen valor 0. Encuentre el diagrama ASM para ejecutar la
instruccin, suponiendo que el opcode es 0010001. Haga la parte de la tabla de control
de estados que lleva a cabo esta instruccin.

CAPTULO

11
ARQUITECTURA DE CONJUNTO
DE INTRUCCIONES

asta este punto, la mayor parte de lo que hemos estudiado est enfocado al
diseo de sistemas digitales, utilizando como ejemplos componentes de procesadores. En este captulo, el material estudiado pasa a ser claramente ms especializado, relacionndose con la arquitectura de conjunto de instrucciones de procesadores de propsito general. Examinaremos las operaciones que realizan las
instrucciones, enfocndonos en particular en cmo se obtienen los operandos y dnde se almacenan los resultados. En nuestro estudio contrastaremos dos tipos de arquitecturas distintas: procesadores de conjunto reducido de instrucciones (RISC, del
ingls Reduced Instruction Set Computers) y los procesadores de conjunto de instrucciones complejo (CISC, del ingls Complex Instruction Set Computers). Clasificaremos las instrucciones bsicas en tres categoras: transferencia de datos, manipulacin de datos y control de programa. En cada una de estas categoras detallaremos
las instrucciones bsicas tpicas.
Para aclarar este cambio de enfoque, se han matizado las partes de propsito general del procesador de genrico presentado al comienzo del Captulo 1, que incluye
la unidad central de procesamiento (CPU) y la unidad de punto flotante (FPU). Adems, como puede estar presente un pequeo microprocesador de propsito general
para controlar un teclado y las funciones de un monitor, hemos matizado estos componentes ligeramente. Aparte del direccionamiento utilizado para acceder a la memoria y a los componentes de entrada/salida (E/S), los conceptos estudiados se aplican
despus a otras reas del procesador. Sin embargo, aparecen con ms frecuencia,
pequeas CPUs en los dispositivos de E/S, dando un cambio en el panorama del papel que juegan las arquitecturas de conjunto de instrucciones de propsito general en
el procesador genrico.

460

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

11-1 CONCEPTOS DE LA ARQUITECTURA DE PROCESADORES


Al lenguaje binario en el que las instrucciones se definen y se almacenan en la memoria se le
llama cdigo mquina. El lenguaje que sustituye a los cdigos de operacin binarios y las direcciones con nombres simblicos y aquello que proporciona otras caractersticas tiles al programador se le llama lenguaje ensamblador. La estructura lgica de los procesadores se describe
normalmente en los manuales de referencia del lenguaje ensamblador. Tales manuales describen
los diversos elementos internos del procesador que son de inters para el programador, como
son los registros del procesador. Los manuales enumeran todas las instrucciones que puede realizar el hardware, especifican los nombres simblicos y el formato del cdigo binario de las
instrucciones y proporcionan una definicin precisa de cada instruccin. En el pasado, esta informacin represent la arquitectura de un procesador. Un procesador estaba compuesto por su
arquitectura, y una implementacin especfica de tal arquitectura. Su diseo estaba separado en
dos partes: la organizacin y el hardware. La organizacin esta formada por estructuras como
las rutas de datos, unidades de control, memoria y los buses que las interconectan. El hardware
hace referencia a la lgica, la tecnologa electrnica empleada y diversos aspectos fsicos del
diseo del procesador. Segn el diseo de procesadores necesitaban ms y ms rendimiento, y
la tendencia de que la mayor parte del procesador estuviese en un solo circuito integrado, la
relacin entre arquitectura, organizacin y hardware lleg a ser tan estrecha que fue necesario
tener un punto de vista ms integrador. De acuerdo con este nuevo punto de vista, la arquitectura anteriormente definida se llama ms estrictamente arquitectura de conjunto de instrucciones
(ISA del ingls Instruction Set Architecture), y el trmino arquitectura se usa para abarcar a
todo el procesador, incluyendo la arquitectura de conjunto de instrucciones, organizacin y el
hardware. Esta visin unificada permite hacer consideraciones en el diseo inteligente que son
evidentes en un proceso de diseo tan fuertemente interrelacionado. Estas consideraciones tienen el potencial de generar mejores diseos de los procesadores. En este captulo, nos centraremos en la arquitectura de conjunto de instrucciones. En el siguiente, veremos dos arquitecturas
de conjunto de instrucciones diferentes, con un enfoque en la realizacin de dos organizaciones
muy diferentes.
Un procesador tiene habitualmente gran variedad de instrucciones y formatos de stas. La
funcin de la unidad de control es descodificar cada instruccin y proporcionar las seales de
control necesarias para ejecutarlas. En la Seccin 10-7 se presentaron ejemplos sencillos de instrucciones y formatos de instrucciones. Extenderemos esa presentacin introduciendo las instrucciones tpicas que se encuentran en los procesadores comerciales de propsito general. Tambin averiguaremos los diversos formatos de instrucciones que se pueden encontrar tpicamente
en un procesador, haciendo nfasis en el direccionamiento de los operandos. El formato de una
instruccin se representa como una caja rectangular simbolizando los bits de la instruccin en
binario. Los bits se dividen en grupos llamados campos. A continuacin se comentan los campos tpicos que se encuentran en los formatos de las instrucciones:
1. Un campo de cdigo de operaciones, que especifica la operacin a realizar.
2. Un campo de direcciones, que proporciona direcciones de la memoria o direcciones
para un registro del procesador.
3. Un campo de modo, que especifica la forma en que se interpreta el campo de direcciones.
En ciertas circunstancias, se emplean a veces campos especiales, por ejemplo, un campo que
especifica el nmero de posiciones de desplazamiento de un dato en una instruccin de desplazamiento, o un campo de operando para las instrucciones de operando inmediato.

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

461

Ciclo de operacin bsico de un procesador


Para entender los diversos conceptos de direccionamiento que se presentan en las dos siguientes
secciones necesitamos comprender el ciclo bsico de un procesador. La unidad de control de un
procesador se disea para ejecutar cada una de las instrucciones de un programa efectuando la
siguiente secuencia de pasos:
1.
2.
3.
4.
5.
6.
7.

Traer la instruccin de la memoria a un registro de control.


Descodificar la instruccin.
Localizar los operandos utilizados por la instruccin.
Traer los operandos de la memoria (si es necesario)
Ejecutar la operacin en los registros del procesador.
Almacenar el resultado en el lugar adecuado
Regresar al paso 1 para traer la siguiente instruccin.

Como se explic en la Seccin 10-7, en el procesador hay un registro que se llama contador
de programa (PC) que sigue la pista de las instrucciones del programa almacenado en la memoria. El PC mantiene la direccin de la instruccin que se va a ejecutar a continuacin y se incrementa en uno cada vez que se lee una palabra del programa almacenado en la memoria. La
descodificacin hecha en el paso 2 determina la operacin a ejecutar y el modo de direccionamiento de la instruccin. En el paso 3, los operandos se localizan segn el modo de direccionamiento y el campo de direcciones de la instruccin. El procesador ejecuta la instruccin, almacena el resultado y regresa al paso 1 para coger la siguiente instruccin de la secuencia.

Conjunto de registros
El conjunto de registros est formado por todos los registros de la CPU accesibles por el programador. Estos registros son, tpicamente, los que se mencionan en los manuales de referencia de
programacin de los lenguajes ensamblador. En las CPUs sencillas, como ya hemos comentado,
el conjunto de registros est formado por una parte accesible del banco de registros y el PC. Las
CPUs tambin pueden tener otros registros, como el registro de instrucciones, registros pertenecientes al banco de registros que slo son accesibles a los microprogramas, y los registros de
pipeline. Sin embargo, estos registros no estn accesibles al programador y, por tanto, no forman parte del conjunto de registros que representan a la informacin almacenada en la CPU a la
que las instrucciones puedan acceder. De esta forma, el conjunto de registros tiene una gran
influencia en la arquitectura del conjunto de instrucciones.
El conjunto de registros para una CPU real puede llegar a ser bastante complejo. Para la
presentacin de este captulo, aadiremos dos registros al conjunto que hemos utilizado con anterioridad: el registro de status de procesador (PSR, del ingls processor status register) y el
puntero de pila (SP, del ingls stack pointer). El registro de status del procesador contiene flipflops que se pueden cambiar individualmente por los valores de status C, N, V y Z de la ALU.
Estos bits de status almacenados se utilizan para tomar decisiones que determinan el flujo del
programa, teniendo en cuenta los resultados de la ALU o en el contenido de los registros. A los
bits almacenados en el registro de status del procesador se les denomina cdigos de condicin o
banderas (en ingls flags). Se vern otros bits del PSR cuando se hayan cubierto los conceptos
asociados a este captulo.

462

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

11-2 DIRECCIONAMIENTO DE LOS OPERANDOS


Consideremos una instruccin como ADD, que especifica la suma de dos operandos y produce
un resultado. Suponga que, en este caso, el resultado de la suma se trata de otro operando. Por
tanto, la instruccin ADD tiene tres operandos, los dos sumandos y el resultado. Un operando,
residente en la memoria, se especifica por su direccin. Un operando en un registro del procesador se especifica por una direccin de registro, que es un cdigo binario de n bits que especifica
uno de los 2n registros del banco de registros. De esta manera, un procesador con 16 registros de
procesador, llammosles de R0 a R15, tiene en su instruccin uno o ms campos de direccin de
registro con cuatro bits. Por ejemplo, el cdigo binario 0101 indica el registro R5.
Sin embargo, algunos operandos no tienen una direccin explicita pues est incluida por el
cdigo de operacin de la instruccin o por una direccin asignada a uno de los otros operando.
En tal caso, diremos que el operando tiene una operacin implcita. Si la direccin es implcita,
entonces no hay necesidad de un campo de direcciones de memoria o de registro para el operando de la instruccin. Por otra parte, si el operando tiene una direccin en la instruccin, diremos
que el operando se direcciona explcitamente o que tiene una direccin explcita.
El nmero de operandos direccionados explcitamente para una operacin de manipulacin
de datos, como en la instruccin ADD, es un factor importante a la hora de definir la arquitectura de conjunto de instrucciones de un procesador. Un factor adicional es el nmero de operandos que se pueden direccionar explcitamente en la memoria mediante una instruccin. Estos
dos factores son tan importantes a la hora de definir la naturaleza de las instrucciones que representan un medio de distinguir las diferentes arquitecturas de conjunto de instrucciones. Adems,
definen la longitud de las instrucciones del procesador.
Empezaremos ilustrando programas sencillos con diferente nmero de operandos direccionados explcitamente por instruccin. Puesto que cada operando direccionado explcitamente
tiene hasta tres direcciones de memoria o de registro por instruccin, etiquetaremos las instrucciones como instrucciones de tres, dos, una o cero direcciones. Vase que, de los tres operandos
necesarios para una instruccin como ADD, las direcciones de todos los operandos que no tienen una direccin en la instruccin estn implcitas.
Para ilustrar cmo afecta el nmero de operando en los programas de procesador, evaluaremos la siguiente sentencia aritmtica:
X % (A ! B)(C ! D)
usando instrucciones de tres, dos, una y cero direcciones. Supondremos que los operandos estn
en las direcciones de memorias representadas por las letras A, B, C y D, y no deben ser cambiados por el programa. El resultado se almacena en memoria, en una posicin con direccin X.
Las operaciones aritmticas que se pueden utilizar son la suma, la substraccin y la multiplicacin, designadas por ADD, SUB y MUL, respectivamente. Adems, las tres operaciones que se
necesitan para transferir los datos durante la ejecucin son mover, cargar y almacenar, designadas por MOVE, LD y ST, respectivamente. LD mueve un operando de la memoria a un registro
y ST de un registro a la memoria. Dependiendo de las direcciones permitidas, MOVE puede
transferir datos entre registros, entre posiciones de memoria, de la memoria a un registro o de
un registro a la memoria.

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

463

Instrucciones de tres direcciones


A continuacin se muestra un programa que calcula X % (A ! B)(C ! D) utilizando instrucciones de tres direcciones (para cada instruccin se muestra una sentencia de transferencia de registro):
ADD T1, A, B

M[T1] p M[A] ! M[B]

ADD T2, C, D

M[T2] p M[C] ! M[D]

MUL X, T1, T2

M[X] p M[T1] # M[T2]

El smbolo M[A] indica el operando almacenado en la memoria en la direccin representada


por A. El smbolo # indica multiplicacin. T1 y T2 son las posiciones de almacenamiento de la
memoria.
El mismo programa puede usar registros como posiciones de almacenamiento temporal:
ADD R1, A, B

R1 p M[A] ! M[B]

ADD R2, C, D

R2 p M[C] ! M[D]

MUL X, R1, R2

M[X] p R1 # R2

El uso de los registros reduce el tiempo de los accesos requeridos entre 5 y 9 veces. Una ventaja
del formato de tres direcciones es que abrevia los programas de evaluacin de expresiones. Una
desventaja es que el cdigo binario de la instruccin necesita ms bits para especificar las tres
direcciones, en particular si hay direcciones de memoria.

Instrucciones de dos direcciones


En las instrucciones de dos direcciones, cada campo de direccin puede especificar una direccin de registro o una direccin de memoria. La primera direccin del operando que aparece en
la instruccin simblica tambin sirve como direccin implcita a la que el resultado de la operacin se transfiere. El programa es como sigue:
MOVE T1, A

M[T1] p M[A]

ADD T1, B

M[T1] p M[T1] ! M[B]

MOVE X, C

M[X] p M[C]

ADD X, D

M[X] p M[X] ! M[D]

MUL X, T1

M[X] p M[X] # M[T1]

Si hay disponible un registro de almacenamiento temporal, R1, se puede reemplazar T1. Vase
que este programa tiene cinco instrucciones en lugar de las tres usadas en el programa con instrucciones de tres direcciones.

Instrucciones de una direccin


Para realizar instrucciones como ADD, un procesador con instrucciones con una sola direccin
utiliza direcciones implcitas, como un registro llamado acumulador, ACC, para obtener uno de

464

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

los operando y como posicin para guardar el resultado. El programa que evala la sentencia
aritmtica es el siguiente:
LD

ACC p M[A]

ADD

ACC p ACC ! M[B]

ST

M[X] p ACC

LD

ACC p M[C]

ADD

ACC p ACC ! M[D]

MUL

ACC p ACC # M[X]

ST

M[X] p ACC

Todas las operaciones se han realizado entre un operando almacenado en el registro ACC y un
operando de la memoria. En este caso, el nmero de instrucciones se ha incrementado a 7 y los
accesos a memoria se elevan tambin a siete.

Instrucciones con cero direcciones


Para realizar una instruccin ADD con cero direcciones, las tres direcciones de la instruccin
deben ser implcitas. Una forma convencional de lograr este objetivo es utilizar estructuras llamadas pilas (stack en ingls), que almacenan informacin de forma que el ltimo elemento almacenado es el primero en recuperarse. Debido a la naturaleza de esta pila, el ltimo en entrar
es el primero en salir, se le llama pila LIFO (del ingls, last in, first out). El funcionamiento de
un procesador con pila es anlogo al de una pila de bandejas o platos en la que la bandeja colocada encima de la pila es la primera que se coge. Las operaciones de manipulacin de datos
como la instruccin ADD se realizan sobre la pila. A la palabra de la parte superior de la fila la
llamaremos TOS (del ingls Top of Stack). A la palabra debajo de sta la llaremos TOS.1.
Cuando se usan uno o ms operandos en una operacin, estos se eliminan de la pila. La palabra
por debajo pasa entonces a ser la nueva TOS. Cuando se genera una palabra como resultado, se
coloca en la pila pasando a ser la nueva TOS. De esta forma, TOS y algunas palabras ubicadas
debajo de ella son las direcciones implcitas de los operandos y TOS es la direccin implcita
del resultado. Por ejemplo, la instruccin que especifica una suma es simplemente
ADD
El resultado de efectuar la transferencia de registros es TOS p TOS ! TOS.1. As vemos que
en las instrucciones de manipulacin de datos en una arquitectura con pila no utilizan ni registros ni direcciones de registros. Sin embargo, el direccionamiento de la memoria se utiliza en
dichas arquitecturas para la transferencia de datos. Por ejemplo, la instruccin
PUSH X
da lugar a una transferencia de una palabra de la direccin X de la memoria a la posicin superior de la pila. La siguiente operacin
POP X

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

465

da lugar a la transferencia de una palabra de la posicin superior de la pila a la direccin X de la


memoria. El programa que evala la sentencia aritmtica para instrucciones de cero direcciones
es el siguiente:
PUSH A

TOS p M[A]

PUSH B

TOS p M[B]

ADD

TOS p TOS ! TOS.1

PUSH C

TOS p M[C]

PUSH D

TOS p M[D]

ADD

TOS p TOS ! TOS.1

MUL

TOS p TOS # TOS.1

POP

M[X] p TOS

Este programa necesita ocho instrucciones, una ms que en el programa anterior. Sin embargo,
utiliza direcciones de posiciones de memoria o registros solo para las instrucciones PUSH y
POP y no para ejecutar instrucciones de manipulacin de los datos involucrados en las instrucciones ADD y MUL.

Arquitecturas de direccionamiento
Los programas que se acaban de presentar cambian si se restringe el nmero de direcciones de
memoria de la instruccin o si las direcciones de memoria se restringen a algunas instrucciones
concretas. Estas restricciones, combinadas con el nmero de operandos direccionados, definen
la arquitectura de direccionamiento. Podemos ilustrar tales arquitecturas evaluando una sentencia aritmtica en una arquitectura de tres direcciones donde todas las instrucciones tienen acceso
a la memoria. A dicho modelo de direccionamiento se le llama arquitectura memoria a memoria. Esta arquitectura solamente tiene registros de control, como el contador de programa de una
CPU. Todos los operandos proceden directamente de la memoria y todos los resultados se mandan directamente a la memoria. Los formatos de las instrucciones de transferencia y manipulacin de los datos contienen entre uno y tres campos de direcciones. En el ejemplo anterior, se
necesitan tres instrucciones, pero si aparece una nueva palabra debe aparecer en la instruccin
para cada direccin de memoria, entonces se necesitan cuatro lecturas de memoria para traer
cada una de las instrucciones. Incluyendo la extraccin de los operandos y el almacenamiento
de los resultados, el programa que realiza la suma podra necesitar 21 accesos a la memoria. Si
los accesos de memoria necesitan ms de un ciclo de reloj, el tiempo de ejecucin podra pasar
de 21 ciclos de reloj. De forma que, aunque el nmero de instrucciones sea bajo, el tiempo de
ejecucin puede ser alto. Adems, dar la posibilidad de que todas las operaciones puedan acceder a la memoria, incrementa la complejidad de las estructuras de control dando como resultado
que el periodo de la seal de reloj tenga que ser ms largo, bajando, por tanto, la frecuencia de
funcionamiento. Por esto, la arquitectura memoria a memoria no se usa, generalmente, en los
diseos actuales.
Por el contrario, las arquitecturas de registro a registros con tres direcciones o arquitecturas carga/almacenamiento, que slo permiten una direccin de memoria y restringe su uso a las
instrucciones de carga y almacenamiento, son tpicas en el diseo de los procesadores moder-

466

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

nos. Dicha arquitectura necesita un banco de registros con un tamao adecuado, ya que todas las
instrucciones de manipulacin de datos utilizan los registros como operandos. Con esta arquitectura, el programa que evala la sentencia aritmtica de ejemplo es el siguiente:
LD

R1, A

R p M[A]

LD

R2, B

R2 p M[B]

ADD

R3, R1, R2

R3 p R1 ! R2

LD

R1, C

R1 p M[C]

LD

R2, D

R2 p M[D]

ADD

R1, R1, R2

R1 p R1 ! R2

MUL

R1, R1, R3

R1 p R1 # R3

ST

X, R1

M[X] p R1

Vase que el nmero de instrucciones pasa a ocho en lugar de las tres que se utilizaron en el
caso de la arquitectura memoria a memoria. Adems, las operaciones son las mismas que las del
caso de la arquitectura con pila, excepto el uso de direcciones para los registros. Con el uso de
los registros, el nmero de accesos a memoria para obtener las instrucciones se reduce de 21 a
18. Si las direcciones se obtienen de los registros en lugar de la memoria, como se estudia en la
siguiente seccin, este nmero se puede reducir an ms.
Otras variantes de las dos arquitectura de direccionamiento anteriores incluyen instrucciones
de tres direcciones e instrucciones de dos direcciones con una o dos direcciones de memoria. La
longitud del programa y el nmero de accesos a memoria tienden a estar en un punto intermedio
de las dos arquitecturas anteriores. Un ejemplo de una instruccin de dos direcciones permitiendo una sola direccin de memoria es:
ADD

R1, A

R1 p R1 ! M[A]

Este tipo de arquitectura se llama arquitectura de memoria-registro y predomina entre las arquitecturas de conjunto de instrucciones habituales, principalmente por dar compatibilidad con programas antiguos que utilizan una arquitectura concreta.
El programa con instrucciones con una direccin, ilustrado anteriormente, tiene una arquitectura de un solo acumulador. Como esta arquitectura no tiene banco de registros, su nica
direccin es para acceder a la memoria. Esto requiere 21 accesos a la memoria para evaluar la
sentencia aritmtica del ejemplo. En programas ms complejos, se suele necesitar un notable
aumento de acceso de memoria. Debido al gran nmero de accesos a la memoria, esta arquitectura resulta ineficiente y, por tanto, se restringe al uso de aplicaciones sencillas y de bajo coste,
que no requieren un alto rendimiento.
El caso de las instrucciones con cero direcciones que utilizan una pila, se mantiene el concepto de arquitectura de pila. Las instrucciones de manipulacin de datos, como ADD, no utilizan direcciones, ya que se realizan utilizando pocos elementos de la pila. Para la transferencia
de datos se utilizaron las operaciones de carga y almacenamiento de una sola direccin de memoria, como se mostr en el programa del ejemplo que evala una sentencia aritmtica. Al estar
gran parte de la pila ubicada en la memoria, puede ser necesario efectuar uno o ms accesos de
memoria ocultos para cada operacin con la pila. Las arquitecturas registro-registro y carga/
almacenamiento han dado lugar a importantes progresos en el rendimiento, el gran nmero de

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

467

accesos a memoria de las arquitecturas basadas en pilas las han hecho poco atractivas. Sin embargo, arquitecturas de pila recientes han comenzado a apropiarse de los avances tecnolgicos
que han surgido en las otras arquitecturas. Estas nuevas arquitecturas almacenan un importante
nmero de posiciones de pila en el procesador y manejan transferencias entre estas posiciones y
la memoria de forma transparente. Las arquitecturas basadas en pilas son particularmente tiles
para la rpida interpretacin de lenguajes de programacin de alto nivel, en los que la representacin intermedia del cdigo utiliza operaciones con la pila. Las arquitecturas con pilas son
compatibles con un mtodo muy eficiente de expresar procesos que usan notacin postfija (en
ingls postfix) en lugar de la notacin tradicional infijo (en ingls infix) a la que estamos acostumbrados. La expresin infijo
(A ! B) # C ! (D # E)
con los operadores entre los operandos se puede escribir como una expresin postfijo
A B!C#D E#!
La notacin postfijo tambin se llama notacin polaca inversa (NPI), nombrada as por el matemtico Jan Lukasiewicz, quien propuso la notacin prefijo (la contraria a la postfijo).
La conversin de (A ! B) # C ! (D # E) a NPI se puede conseguir grficamente, segn se
muestra en la Figura 11-1. Cuando el camino que atraviesa el grfico pasa por una variable, sta
se introduce en la expresin NPI.
Es muy sencillo realizar un programa para evaluar una expresin en NPI. Siempre que se
encuentra una variable se coloca en la pila. Siempre que se encuentra una operacin, sta se
ejecuta usando la direccin implcita TOS, o se direcciona TOS y TOS.1, colocndose el resultado en la nueva TOS. Un ejemplo de programa para una expresin en NPI es:
PUSH
PUSH
ADD
PUSH
MUL
PUSH
PUSH
MUL
ADD

A
B
C
D
E



C D


A


E

FIGURA 11-1
Grfico de ejemplo de conversin de infijo a NPI

468

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

AB

(A  B)  C

AB

DE

(A  B)  C

D
(A  B)  C

(A  B)  C + D  E

(A  B)  C

FIGURA 11-2
Actividad de la pila en la ejecucin del ejemplo del programa

La ejecucin del programa se ilustra en la Figura 11-2, mediante los estados sucesivos de la
pila. Cuando un operando se coloca en la pila, el contenido de la pila se desplaza una posicin
hacia abajo. Cuando se ejecuta una operacin, el operando en la TOP se saca de la pila y se
almacena temporalmente en un registro. Se realiza la operacin sobre el operando almacenado y
el nuevo operando de la TOS, y el resultado reemplaza al operando de la TOS.

11-3 MODOS DE DIRECCIONAMIENTO


El campo de operacin de una instruccin especifica la operacin a ejecutar. Esta operacin
debe ejecutarse sobre el dato almacenado en los registros del procesador o en las palabras de la
memoria. Cmo se seleccionan los operandos durante la ejecucin del programa depende del
modo de direccionamiento de la instruccin. El modo de direccionamiento especifica una regla
para interpretar o modificar el campo de direcciones de la instruccin antes de que se haga realmente referencia al operando. A la direccin del operando generada mediante la aplicacin de
esa regla se le llama direccin efectiva. Los procesadores utilizan tcnicas de modo de direccionamiento para ajustarse a las siguientes caractersticas:
1. Proporcionar flexibilidad al usuario en la programacin mediante punteros a la memoria, contadores para el control de bucles, indexar datos y reubicar programas.
2. Reducir el nmero de bits de los campos de direcciones de la instruccin.
Disponer de varios modos de direccionamientos proporciona al programador experimentado la
posibilidad de escribir programas que requieran pocas instrucciones. Sin embargo, el efecto en
el trasiego de datos y el tiempo de ejecucin debe sopesarse cuidadosamente. Por ejemplo, la
presencia de modos de direccionamiento ms complejos puede, en realidad, dar lugar a un bajo
movimiento de datos y a un tiempo de ejecucin ms largo. Adems, muchos cdigos mquina
de programas se generan por compiladores que, con frecuencia, no utilizan los modos de direccionamientos complejos de forma efectiva.
En algunos procesadores, el modo de direccionamiento de la instruccin se especifica mediante distinto cdigo binario. Otros procesadores utilizan un cdigo binario comn tanto para
operaciones y modos de direccionamiento de la instruccin. Las instrucciones se pueden definir
con variedad de modos de direccionamiento y, a veces, se combinan varios modos de direccionamiento en una instruccin.
En la Figura 11-3 se muestra el formato de una instruccin con un campo de modo de direccionamiento distinto. El cdigo de operacin especifica la operacin a realizar. El campo de
modo se utiliza para localizar los operandos necesarios para la operacin. Puede o no haber un
campo de direccin en la instruccin. Si existe un campo de direccin, puede ser para una direc-

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

Opcode

Modo

469

Direccin u operando

FIGURA 11-3
Formato de una instruccin con campo de modo de direccionamiento

cin de memoria o para un registro del procesador. Adems, segn se estudi en la seccin anterior, la instruccin puede tener ms de un campo de direcciones. En tal caso, cada campo de
direccin se asocia con su modo particular de direccionamiento.

Modo implcito
Aunque la mayora de los modos de direccionamiento modifica el campo de direcciones de la
instruccin, hay un modo que no necesita campo de direcciones: el modo implcito. En este
modo, el operando se especifica implcitamente en el cdigo de operaciones. El modo implcito,
que proporciona la ubicacin para las operaciones con dos operando ms resultado, es donde se
combinan en una instruccin menos de tres direcciones. Por ejemplo, la instruccin complementar el acumulador tiene un modo implcito ya que el operando del registro acumulador
queda implcito en la definicin de la instruccin. De hecho, cualquier instruccin que utiliza el
acumulador sin un segundo operando es una instruccin con modo implcito de direccionamiento. Por ejemplo, las instrucciones de manipulacin de datos en la pila del procesador, como
ADD, son instrucciones con modo implcito, ya que los operandos estn implcitamente en la
posicin superior de la pila.

Modo inmediato
En el modo inmediato, el operando se especifica en la propia instruccin. En otras palabras, una
instruccin de modo inmediato tiene un campo de operando en lugar de un campo de direcciones. El campo de operando contiene el operando a utilizar junto con la operacin que se especifica en la instruccin. Las instrucciones con modo inmediato son muy utilizadas, por ejemplo,
para inicializar registros con un valor constante.

Modos registro y registro indirecto


Anteriormente, se coment que el campo de direcciones de una instruccin puede especificar
tanto una posicin de memoria como un registro del procesador. Cuando el campo de direcciones especifica un registros del procesador, se dice que est en modo registro. En este modo los
operando estn en los registros que estn dentro del procesador. Un registro en particular se
selecciona mediante un campo de direccin de registro dentro del formato de la instruccin.
En el modo registro indirecto las instrucciones definen un registro del procesador que contiene la direccin de memoria donde est el operando. En otras palabras, el registro seleccionado contiene al direccin de memoria donde est almacenado el operando en lugar de tener
almacenado el propio operando. Antes de usar una instruccin con modo de direccionamiento
indirecto de registro, el programador debe asegurarse de que la direccin de memoria est ya
disponible en el registro del procesador. Hacer una referencia al registro es equivalente a especificar una direccin de memoria. La ventaja del modo de registro indirecto es que el campo de

470

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

direcciones de la instruccin utiliza menos bits que los que sera necesarios para especificar una
direccin de memoria directamente.
El modo autoincremento o autodecremento es similar al modo de registro indirecto, con la
excepcin de que el registro incrementa o decrementa despus (o antes) de que su valor, direccin, se utilice para acceder a la memoria. Cuando la direccin almacenada en el registro hace
referencia a un array de datos de la memoria, es conveniente incrementar el contenido del registro despus de cada acceso al array. Esto se puede conseguir mediante una instruccin diferente
de incremento de registro. Sin embargo, puesto que es un requisito frecuente, algunos procesadores incorporan un modo de autoincremento que incrementa el contenido del registro que contiene la direccin despus de que se ha accedido al dato almacenado en la memoria. En la siguiente instruccin, el modo autoincremento se usa para sumar el valor constante 3 a los
elementos de un array direccionado por el registro R1:
ADD

(R1) ! , 3

M[R1] p M[R1] ! 3, R1 p R1 ! 1

R1 se inicializa con la direccin del primer elemento de array. Luego la instruccin ADD se
ejecuta repetidamente hasta que se ha efectuado la suma de 3 a todos los elementos del array.
La sentencia de transferencia de registros que acompaa a la instruccin muestra la suma de 3
al contenido de la posicin de memoria direccionada mediante R1 y el incremento de R1 para
prepararlo para la siguiente ejecucin de ADD en el siguiente elemento de array.

Modo de direccionamiento directo


En el modo de direccionamiento directo el campo de direcciones de la instruccin proporciona
la direccin de memoria donde est almacenado el operando para ejecutar una instruccin de
transferencia de datos o de manipulacin de datos. En la Figura 11-4 se muestra un ejemplo de
una instruccin de transferencia de datos. La instruccin est compuesta por dos palabras de la
memoria. La primera, en la direccin 250, tiene el cdigo de operacin para cargar el ACC y
un campo de modo que especifica una direccin directa. La segunda palabra de la instruccin,
en la posicin 251, contiene el campo de direcciones, simbolizado por ADRS, y que es igual a
Memoria
250
PC = 250

251
252

Opcode

Modo

ADRS
Siguiente instruccin

ACC

Opcode:
Modo:
ADRS:
Operacin:

Carga ACC
Direccin directa
500
ACC 800

Programa
500

800

Datos

FIGURA 11-4
Ejemplo de direccionamiento directo de una instruccin de transferencia de datos

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

471

Memoria
300
PC = 300

Opcode

Modo

301

ADRS

302

Siguiente instruccin

ACC
Programa
Opcode:
Modo:
ADRS:
Operacin:

Bifurcacin si ACC  0
Direccin directa
500
500
PC 500 si ACC  0
PC 302 si ACC  0

Instruccin

Programa

FIGURA 11-5
Ejemplo de direccionamiento directo en una instruccin de salto condicional

500. El PC guarda la direccin de la instruccin, que se lleva de la memoria utilizando dos


accesos a memoria. Simultneamente con el primer acceso o despus de completado ste, el PC
se incrementa a 251. A continuacin se efecta el segundo acceso para obtener ADRS y, de
nuevo, el PC se incrementa. La ejecucin de la operacin da como resultado
ACC p M[ADRS]
Como ADRS % 500 y M[500] % 800, el acumulador recibe el nmero 800. Despus de ejecutarse la instruccin, el PC tiene almacenado el nmero 252, que es la direccin de la siguiente
instruccin del programa.
Consideremos ahora una instruccin de salto condicional, como la que se muestra en la Figura 11-5. Si el contenido de ACC es igual a 0, el control se bifurca a ADRS; en caso contrario,
el programa contina con la siguiente instruccin de la secuencia. Si ACC % 0, la desviacin a
la direccin 500 se lleva a cabo cargando el valor del campo de direcciones ADRS en el PC. El
control contina entonces con la instruccin de la direccin 500. Si ACC 0, no se efecta la
bifurcacin, y el PC, que se ha incrementado dos veces durante el acceso de la instruccin, tiene
la direccin 302, que es la direccin de la siguiente instruccin en la secuencia de instrucciones.
Algunas veces, el valor dado en el campo de direcciones es la direccin del operando, pero
otras veces es una direccin a partir de la cual se calcula la direccin del operando. Para diferenciar entre los diversos modos de direccionamiento es til distinguir entre la parte de direccin de la instruccin, dada en el campo de direcciones, y la direccin utilizada para el control
cuando se ejecuta una instruccin. Recordemos que hemos llamado a esta ltima como direccin efectiva.

Modo de direccionamiento indirecto


En el modo de direccionamiento indirecto, el campo de direcciones de la instruccin proporciona la direccin en la que est guardada la direccin efectiva. La unidad de control trae la
instruccin de la memoria y utiliza la parte de direccin para acceder de nuevo a la memoria
para leer la direccin efectiva. Considere la instruccin carga en el acumulador dada en la

472

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Figura 11-4. Si el modo especifica una direccin indirecta, la direccin efectiva est almacenada en M[ADRS]. Como ADRS % 500 y M[ADRS] % 800, la direccin efectiva es 800. Esto
significa que el operando cargado en el ACC es el que se encuentra en la direccin 800 de la
memoria (no mostrada en la figura).

Modo de direccionamiento relativo


Algunos modos de direccionamiento necesitan que el contenido del campo de la instruccin se
sume al contenido de un registro concreto de la CPU para evaluar la direccin efectiva. El registro que ms frecuentemente se utiliza es el PC. En el modo de direccionamiento, la direccin
efectiva se calcula como sigue:
Direccin efectiva % Parte de direccin de la instruccin ! Contenido del PC
Se considera que la parte de direccin de la instruccin es un nmero con signo que puede ser
positivo o negativo. Cuando este nmero se suma al contenido del PC, el resultado que se genera es una direccin efectiva cuya posicin en la memoria es relativa a la direccin de la siguiente instruccin del programa.
Para clarificar esto con un ejemplo, supongamos que el contenido del PC contiene el nmero 250 y la parte de direccin de la instruccin contiene el nmero 500, como se muestra en la
Figura 11-5, con el campo de modo especificando una direccin relativa. Se lee de la memoria
la instruccin de la posicin 250 en la fase de lectura del ciclo de operacin, y el PC se incrementa en 1 a 251. Como la instruccin tiene una segunda palabra, la unidad de control lee el
campo de direccin de un registro de control, y el PC se incrementa a 252. El clculo de la
direccin efectiva para el modo de direccionamiento indirecto es 252 ! 500 % 752. El resultado
es que el operando asociado a la instruccin se encuentra 500 posiciones ms all, y es relativo
a la ubicacin de la siguiente instruccin.
El direccionamiento relativo se usa frecuentemente en las instrucciones de salto condicional
cuando la direccin de bifurcacin est cercana a la palabra de la instruccin. El direccionamiento relativo genera instrucciones ms compactas, ya que la direccin relativa puede especificarse con menos bits que los que seran necesarios para designar a una direccin completa de
memoria.

Modo de direccionamiento indexado


En el modo de direccionamiento indexado, el contenido de un registro ndice se suma a la parte
de direcciones de la instruccin para obtener la direccin efectiva. El registro ndice puede ser
un registro especial de la CPU o simplemente un registro del banco de registros. Ilustraremos el
banco de registros considerando un array de datos en la memoria. El campo de direcciones de la
instruccin define la direccin de comienzo del array. Cada operando del array se almacena en
la memoria en una direccin relativa al comienzo del array. La distancia entre la direccin de
comienzo y la direccin del operando es el valor del ndice almacenado en el registro. Se puede
acceder a cualquier operando del array con la misma instruccin con tal de que el registro ndice contenga el valor correcto del ndice. El registro ndice se puede incrementar para facilitar el
acceso a operando consecutivos.
Algunos procesadores dedican un registro de la CPU con la funcin exclusiva de ser un registro ndice. Este registro se direcciona implcitamente cuando se utiliza una instruccin con

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

473

modo de direccionamiento indexado. En procesadores con varios registros, cualquiera de stos


se puede usar como registro ndice. En tal caso, el registro ndice que se va a usar debe especificarse en un campo de registro dentro del formato de la instruccin.
Una variante especial del modo indexado de direccionamiento es el modo de registro base.
En este modo, el contenido del registro base se suma a la parte de direccin para obtener la
direccin efectiva. Este modo es similar al direccionamiento indexado, excepto que al registro
se le llama registro base en lugar de registro ndice. La diferencia entre estos dos modos est en
la forma en que se usan estos registros ms que en la forma en que se calcula la direccin: se
supone que un registro ndice contiene un nmero ndice que es relativo al campo de direcciones de la instruccin; se supone tambin que un registro base contiene una direccin base y el
campo de instrucciones de la instruccin proporciona un desplazamiento relativo a la direccin
base.

Resumen de modos de direccionamiento


Para mostrar las diferencias entre los diversos modos, investigaremos el efecto del modo de la
instruccin que se muestra en la Figura 11-6. La instruccin de la direccin 250 y 251 es carga
el ACC, con el campo de direcciones ADRS (o un operando NBR) igual a 500. El PC tiene el
nmero 250 para leer esta instruccin. El contenido del registro de procesador R1 es 400, y el
ACC recibe el resultado despus de ejecutarse la instruccin. En el modo directo, la direccin
efectiva es 500, y el operando que se carga en el ACC es 800. En el modo de direccionamiento
inmediato, el operando 500 se carga en el ACC. En el modo indirecto, la direccin efectiva es
800, y el operando es 300. En el modo relativo, la direccin efectiva 500 ! 252 % 752, y el
operando es 600. En el modo indexado, el operando est en R1, y se carga 400 en el ACC. En el
modo registro indirecto, la direccin efectiva es el contenido de R1 y el operando cargado en
ACC es 700.
En la Tabla 11-1 se enumeran el valor de la direccin efectiva y el operando cargado en
ACC para los siete modos de direccionamiento. La tabla muestra tambin la operacin con una
sentencia de transferencia de registros y una convencin simblica para cada modo de direccionamiento. LDA es el smbolo para el cdigo de operacin de carga al acumulador. En el modo
de direccionamiento directo, usamos el smbolo ADRS para la parte de direccin de la instruc TABLA 11-1
Convencin simblica para cada modo de direccionamiento
Referidos a la Figura 11-6
Modo de
direccionamiento

Convencin
simblica

Transferencia
de registros

Directo
Inmediato
Indirecto
Relativo
Indexado
Registro
Registro Indirecto

LDA
LDA
LDA
LDA
LDA
LDA
LDA

ACC p M[ADRS]
ACC p NBR
ACC p M[M[ADRS]]
ACC p M[ADRS ! PC]
ACC p M[ADRS ! R1]
ACC p R1
ACC p M[R1]

ADRS
NBR
[ADRS]
$ADRS
ADRS (R1)
R1
(R1)

Direccin
efectiva

Contenidos
del ACC

500
251
800
752
900

400

800
500
300
600
200
400
700

474

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Memoria

PC = 250

250

Opcode

Modo

251

ADRS a NBR = 500

252

Siguiente instruccin

400

700

500

800

752

600

800

300

900

200

R1 = 400

ACC

Opcode: carga ACC

FIGURA 11-6
Ejemplos numricos para los modos de direccionamiento

cin. El smbolo precede al operando NBR en el modo inmediato. El smbolo ADRS encerrado en corchetes simboliza una direccin indirecta, la cual es designada por algunos compiladores o ensambladores con el smbolo @. El smbolo $ antes de la direccin hace que la direccin
efectiva sea relativa al PC. Se reconoce una instruccin con modo indexado mediante el smbolo de un registro colocado entre parntesis despus del smbolo de direccin. El modo registro
se indica dando el nombre del registro del procesador a continuacin de LDA. En el modo de
registro indirecto, el nombre del registro que contiene la direccin efectiva est encerrado entre
parntesis.

11-4 ARQUITECTURAS DE CONJUNTO DE INSTRUCCIONES


Los procesadores tienen un conjunto de instrucciones que permiten llevar a cabo labores de clculo. Los conjuntos de instrucciones de diferentes procesadores difieren en diversos aspectos
unos de otros. Por ejemplo, el cdigo binario asignado al campo del cdigo de operacin vara
grandemente entre los diferentes procesadores. Asimismo, aunque existe un estndar (vase Referencia 7), los mnemnicos de las instrucciones varan de entre los diversos procesadores. Sin
embargo, en comparacin con estas diferencias menores, hay dos tipos de arquitecturas de conjunto de instrucciones que diferencian marcadamente la relacin entre el hardware y el software: procesadores de conjunto de instrucciones complejo (CISC, del ingls Complex Instruction

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

475

Set Computers) que proporcionan un soporte hardware para operaciones de lenguajes de alto
nivel y programas compactos; procesadores de conjunto reducido de instrucciones (RISC, del
ingls Reduced Instruction Set Computers) que se caracterizan por tener instrucciones sencillas
y flexibles que, cuando se combinan, proporcionan un rendimiento ms alto y mayor velocidad
de ejecucin. Estas dos arquitecturas se pueden distinguir considerando las propiedades que caracterizan a sus conjuntos de instrucciones.
Una arquitectura RISC tiene las siguientes propiedades:
1.

Los accesos a memora se restingen a las instrucciones de carga y almacenamiento, y las


instrucciones de manipulacin de datos son de registro a registro.
2. Nmero limitado de modos de direccionamientos.
3. Los formatos de todas las instrucciones tienen la misma longitud.
4. Las instrucciones realizan operaciones bsicas.

Los objetivos de una arquitectura RICS son conseguir un alto rendimiento y una alta velocidad
de ejecucin. Para conseguir tales objetivos se evitan los accesos a memoria, que tpicamente
necesitan ms tiempo que otras operaciones elementales, excepto las instrucciones de acceso.
Una consecuencia de este enfoque es la necesidad de un banco de registros relativamente grande. Debido a que las instrucciones tienen una longitud fija, modos de direccionamiento limitado
y operaciones bsicas, la unidad de control de un RISC es relativamente simple y, tpicamente,
est cableada. Adems, la organizacin que subyace es, de forma general, en pipeline, como se
explica en el Captulo 12.
Una arquitectura CISC pura tiene las siguientes propiedades:
1.
2.
3.
4.

Los accesos a memoria ests directamente disponibles en casi todos los tipo de instrucciones.
Mayor nmero de modos de direccionamientos.
Los formatos de las instrucciones son de diferente longitud.
Las instrucciones realizan tanto operaciones elementales como complejas.

El objetivo de la arquitectura CISC es ajustarse de forma ms cercana a las operaciones empleadas en los lenguajes de programacin y proporcionar instrucciones que faciliten realizar programas compactos y conservar memoria. Adems, pueden dar lugar a ejecuciones de operaciones
eficientes mediante la reduccin de los accesos a memoria de las instrucciones. Debido a esta
alta accesibilidad de la memoria, los bancos de registros son ms pequeos que en una arquitectura RICS. Adems, debido a la complejidad de las instrucciones y la diversidad de los formatos
de las instrucciones, se suele utilizar el control microprogramado. En la bsqueda para conseguir mayor velocidad, el control microprogramado en los diseos actuales se realiza, probablemente, controlando una ruta de datos en pipeline. Las instrucciones CISC se convierten en una
secuencia de operaciones de tipo RISC, que se procesan mediante un pipeline de tipo RISC,
como el que se presenta en el Captulo 12.
La gama actual de arquitecturas de conjunto de instrucciones est comprendida entre aquellas que son puramente RISC y aquellas que son puramente CISC. No obstante, hay un conjunto
bsico de operaciones elementales que la mayora de las computadoras incluyen entre sus instrucciones. En este captulo, nos centraremos principalmente en las instrucciones elementales
que incluyen ambas arquitecturas. La mayora de las instrucciones elementales de los procesadores se pueden clasificar en tres categoras principales: (1) instrucciones de transferencia de
datos, (2) instrucciones de manipulacin de datos, y (3) instrucciones de control del programa.
Las instrucciones de transferencia de datos realizan las transferencias de datos desde una
posicin a otra sin cambiar el contenido de la informacin binaria. Las instrucciones de manipu-

476

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

lacin de datos realizan operaciones aritmticas, lgicas y de desplazamiento. Las instrucciones


de control del programa proporcionan la capacidad de tomar decisiones y cambian el camino
tomado por el programa cuando se ejecutan en el procesador. Aparte del conjunto de instrucciones bsicas, un procesador puede tener otras instrucciones que realizan operaciones especiales
en aplicaciones concretas.

11-5 INSTRUCCIONES DE TRANSFERENCIA DE DATOS


Las instrucciones de transferencia de datos mueven un dato de un lugar del procesador a otro
sin cambiar el dato. Las tpicas transferencias son entre memoria y los registros del procesador,
entre los registros de procesador y los registros de E/S, y entre los propios registros de procesador.
La Tabla 11-2 proporciona una lista de las ocho transferencias tpicas utilizadas en muchos
procesadores. A cada instruccin le acompaa su smbolo mnemnico, la abreviatura de lenguaje ensamblador que recomienda el estndar IEEE (Referencia 6). Algunos procesadores, sin embargo, pueden utilizar diferentes mnemnicos para la misma instruccin. La instruccin Load se
usa para indicar una transferencia desde la memoria a un registro del procesador. La instruccin
Store indica una transferencia desde un registro del procesador a una posicin de memoria. La
instruccin Move se utiliza en procesadores con varios registros para indicar una transferencia
desde un registro del procesador a otro. Tambin se utiliza para la transferencia de datos entre
registros y memoria y entre dos posiciones de memoria. La instruccin Exchange realiza el
intercambio de datos entre dos registros, entre un registro y una posicin de memoria, o entre
dos posiciones de memoria. Las instrucciones Push y Pop son para realizar operaciones en la
pila y se describen a continuacin.
TABLA 11-2
Instrucciones tpicas de transferencia de datos
Nombre

Mnemnico

Load
Store
Move
Exchange
Push
Pop
Input
Output

LD
ST
MOVE
XCH
PUSH
POP
IN
OUT

Instrucciones de manejo de pila


La arquitectura basada en pila, que se present anteriormente, posee caractersticas que facilitan
diversos procesados de los datos y control de las tareas. En algunas calculadoras electrnicas y
procesadores se utiliza una pila para evaluar las expresiones aritmticas. Desafortunadamente,
debido a los efectos negativos en el rendimiento de las pilas que residen en la memoria principal, la pila de un procesador se utiliza tpicamente para almacenar informacin relacionada con

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

477

la llamada a procedimientos, vuelta al programa principal e interrupciones, segn se explic en


las Secciones 11-8 y 11-9.
Las instrucciones de pila push y pop transfieren datos entre la memoria de la pila y un registro de procesador o la memoria. La operacin push coloca un nuevo objeto en la posicin ms
alta de la pila. La operacin pop borra un objeto de la pila de forma que el contenido de la pila
sube. Sin embargo, nada se mueve realmente en la pila al realizar estas dos operaciones. Ms
bien, la memoria de la pila es, esencialmente, una porcin del espacio de direcciones de memoria accedida por una direccin que siempre se incrementa o decrementa antes o despus de acceder a ella. El registro que contiene la direccin para manejar la pila se llama puntero de pila
(SP, del ingls Stack Pointer) porque su valor siempre apunta a la posicin TOS, que es el dato
en lo ms alto de la pila. Las operaciones push y pop realizan el incremento y decremento de
puntero de pila.
La Figura 11-7 muestra una parte de una memoria organizada como una pila que crece desde las direcciones ms altas hacia las ms bajas. El puntero de pila, SP, contiene la direccin del
dato que est en ese momento en la posicin superior de la pila. Hay tres datos almacenados en
la pila: A, B y C, en direcciones consecutivas, 103, 102 y 101 respectivamente. El dato C est
arriba de la pila, por tanto SP contiene la direccin 101. Para borrar este dato, la pila se empuja hacia arriba leyendo el dato de la direccin 101 e incrementando el SP. Ahora el dato B est
en la posicin ms alta de la pila ya que SP contiene la direccin 192. Para introducir un nuevo
dato se empuja hacia abajo decrementando primero el SP y escribiendo posteriormente el
nuevo dato en la posicin superior de la pila. Dese cuenta de que el dato C se ha sacado de la
pila pero, en realidad, no se ha borrado fsicamente de ella. Esto no tiene importancia en cuanto
a la forma de operar de la pila puesto que, cuando la pila se carga con un nuevo dato, push, el
que estaba en esa posicin queda sobrescrito. Suponemos que los datos en la pila se comunican
con un registro de datos R1 o con una posicin de memoria X.
Un nuevo dato se coloca en la pila con una operacin push segn se indica a continuacin:
SP p SP . 1
M[SP] p R1
El puntero de pila se decrementa de forma que apunta a la direccin de la siguiente palabra.
Una microoperacin de escritura introduce la palabra procedente de R1 en la posicin ms alta
Memoria
Direcciones
100
SP  101

101

102

103

R1
104

FIGURA 11-7
Memoria de la pila

478

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

de la pila. Vase que SP contiene la direccin de la posicin ms alta de la pila y que M[SP]
designa a la palabra de la memoria especificada por la direccin presente en SP. Un dato se
elimina de la memoria con una operacin pop segn se indica a continuacin:
R1 p M[SP]
SP p SP ! 1
Se lee el dato que est encima de la pila y se lleva a R1. El puntero de pila se incrementa para
apuntar al siguiente dato de la pila, que se ha convertido en la nueva posicin ms alta de la
pila.
Las dos microoperaciones necesarias para las operaciones push y pop son: un acceso a la
memoria mediante SP y una actualizacin de SP. Qu operacin se realiza primero y si SP se
actualiza mediante incremento o decremento, depender de la organizacin de la pila. En la Figura 11-7, la pila crece decrementndose la direccin de memoria. Por el contrario, una pila se
puede construir para que crezca mediante incrementos de las direcciones de memoria. En tal
caso, SP se incrementa en la operacin push y se decrementa en la operacin pop. Tambin se
puede construir una pila de forma que SP apunte a la siguiente posicin vaca por encima de la
pila. En este caso, la secuencia de operaciones deber intercambiarse.
El puntero de pila se carga con un valor inicial, que debe ser la direccin inferior de la pila
asignada en la memoria. A partir de que empiece a funcionar, el SP se incrementa y decrementa
automticamente con cada operacin push o pop. La ventaja de una pila en la memoria es que el
procesador puede referirse a ella sin tener que especificar una direccin concreta, ya que la direccin est siempre disponible y se puede actualizar automticamente en el puntero de pila.
Las dos ltimas instrucciones de transferencia, entrada y salida, dependen del tipo de E/S,
segn se describe a continuacin.

E/S independiente versus E/S ubicada en memoria


Las instrucciones de E/S transfieren datos entre los registros de procesador y los dispositivos de
E/S. Estas instrucciones son similares a las instrucciones de carga y almacenamiento, excepto
que las transferencias se realizan con registros externos en lugar de posiciones de memoria. Se
supone que el procesador tiene un cierto nmero de puertos de E/S, con uno o ms puertos dedicados a comunicaciones con un dispositivo de E/S concreto. Un puerto es, tpicamente, un registro con lneas de entrada y/o salida conectadas a un dispositivo. Un puerto en concreto se
selecciona mediante una direccin, de forma similar a la que se selecciona una palabra de la
memoria. Las instrucciones de entrada y salida incluyen un campo de direcciones en su formato
para especificar el puerto seleccionado para la transferencia de datos.
Las direcciones de los puertos se asignan de dos formas. En los sistemas con E/S independiente, el rango de direcciones asignadas a las memoria y a los puertos de E/S son independientes unas de otras. El procesador tiene instrucciones de entrada y salida diferentes, segn se enumer en la Tabla 11-2, conteniendo un campo de direccin separado que se interpreta por el
control y se utiliza para seleccionar un puerto concreto. El direccionamiento de E/S separa la
seleccin de memoria de la E/S, de forma que el rango de direcciones de memoria no se ve
afectado por la asignacin de las direcciones de los puertos. Por esta razn, a este mtodo tambin se le llama configuracin separada de E/S.
Por el contrario, la E/S ubicada en memoria, asigna un subrango de direcciones de memoria
para direccionar los puertos de E/S. En este caso no existen direcciones separadas para manejar

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

479

las transferencias de entrada y de salida ya que lo puertos de E/S se tratan como posiciones de
memoria en un rango de direcciones comn. Cada puerto de E/S se ve como una posicin de
memoria, similar a una palabra de memoria. Los procesadores que adoptan este mtodo no tienen instrucciones especficas para entrada y salida debido a que se usa una misma instruccin
para manipular tanto los datos de memoria como los de E/S. Por ejemplo, las instrucciones de
carga y almacenamiento utilizadas en la transferencia de memoria tambin se utilizan para las
transferencias de E/S, haciendo que la direccin asociada a la instruccin se asigne a un puerto
E/S y no a una palabra de la memoria. La ventaja de este mtodo es la simplicidad que surge de
tener el mismo conjunto de instrucciones que dan acceso tanto a la memoria como a la E/S.

11-6 INSTRUCCIONES DE MANIPULACIN DE DATOS


Las instrucciones de manipulacin de datos realizan operaciones sobre los datos y proporcionan
los recursos de clculo del procesador. En un procesador tpico, las instrucciones de manipulacin de datos se dividen habitualmente en tres tipos bsicos:
1. Instrucciones aritmticas
2. Instrucciones lgicas y de manipulacin de bits
3. Instrucciones de desplazamiento
Una lista de las instrucciones de manipulacin de datos se parece mucho a la lista de microoperaciones dadas en el Captulo 10. Sin embargo, una instruccin se procesa tpicamente mediante
la ejecucin de una secuencia de una o ms microoperaciones. Una microoperacin es una operacin elemental ejecutada por el hardware del procesador bajo el control de la unidad de control. Por el contrario, una instruccin puede involucrar varias operaciones bsicas como son el
acceso a la instruccin, llevar operandos desde los registros adecuados del procesador, y almacenar resultados en las posiciones especificadas.

Instrucciones aritmticas
Las cuatro instrucciones aritmticas bsicas son la suma, la sustraccin, la multiplicacin y la
divisin. La mayora de los procesadores poseen instrucciones para realizar estas cuatro operaciones. Sin embargo, algunos procesadores pequeos slo tienen instrucciones de suma y resta;
en dichos procesadores, la multiplicacin y la divisin se deben efectuar mediante programas.
Estas cuatro operaciones bsicas son suficientes para solucionar cualquier problema numrico
cuando se utilizan mtodos de anlisis numrico.
En la Tabla 11-3 se da una lista de las instrucciones aritmticas tpicas. La instruccin de
incremento suma uno al valor almacenado en un registro o en una palabra de la memoria. Una
caracterstica comn de la operacin de incremento, cuando se ejecuta en una palabra del procesador, es que el nmero binario con todos sus bits a 1 produce como resultado un nmero con
todos sus bits a 0 cuando se incrementa. La instruccin de decremento resta uno al valor almacenado en un registro del procesador o en una posicin de memoria. Cuando se decrementa un
nmero con todos sus bits a 0 se produce como resultado un nmero con todos sus bits a 1.
Las instrucciones de suma, sustraccin, multiplicacin y divisin pueden estar disponibles
para diferentes tipos de datos. Se supone que el tipo de dato que va a estar en un registro del
procesador durante la ejecucin de estas operaciones aritmticas se incluye en la definicin del
cdigo de operacin. Una operacin aritmtica puede especificar datos enteros con signo o sin

480

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 11-3
Instrucciones aritmticas tpicas
Nombre

Mnemnico

Incremento
Decremento
Suma
Resta
Multiplicacin
Divisin
Suma con acarreo
Resta con acarreo
Resta inversa
Negacin

INC
DEC
ADD
SUB
MUL
DIV
ADDC
SUBB
SUBR
NEG

signo, nmeros decimales o binarios o datos en punto flotante. Las operaciones con enteros en
binario se presentaron en los Captulos 1 y 5. La representacin en punto flotante se utiliza en
clculos cientficos y se presenta en la siguiente seccin.
El nmero de bits de cualquier registro es finito, por tanto, el resultado de las operaciones
aritmticas tiene una precisin finita. La mayora de los procesadores tiene instrucciones especiales que facilitan trabajar con doble precisin aritmtica. Se usa un flip-flop para almacenar la
informacin de acarreo. La instruccin suma con acarreo realiza la operacin de dos operandos ms el valor del acarreo del clculo anterior. De forma similar, la instruccin de resta con
acarreo (borrow) sustrae dos operandos y el acarreo que se gener en la operacin previa. La
instruccin de resta inversa invierte el orden de los operando, realizando la operacin B . A en
lugar de A . B. La instruccin negacin realiza el complemento a 2 de un nmero con signo,
que es equivalente a multiplicar el nmero por .1.

Instrucciones lgicas y de manipulacin de bits


Las instrucciones lgicas realizan operaciones en las palabras almacenadas en registros o en
memoria. Son tiles para la manipulacin individual de bits o de grupos de bits que representan
informacin codificada en binario. Las instrucciones tratan cada bit del operando por separado
como si fuesen variables booleanas. Mediante la aplicacin adecuada de las instrucciones lgicas es posible cambiar los valores de un bit, poner a cero un grupo de bits o introducir un valor
nuevo de un bit en los operandos almacenados en los registros o en la memoria.
En la Tabla 11-4 se enumeran algunas instrucciones lgicas tpicas. La instruccin Clear
hace que el operando especificado sea reemplazado por ceros. La instruccin Set provoca que el
operando sea reemplazado por unos. La instruccin Complemento invierte el valor de todos los
bits del operando. Las instrucciones AND, OR y XOR realizan la operacin lgica correspondiente en los bits del operando individualizadamente. Aunque las instrucciones lgicas realizan
operaciones booleanas, cuando stas se efectan en palabras, se suelen considerar como operaciones de manipulacin de bits. Hay tres operaciones posibles para manipular bits: poner un bit
seleccionado a 0, ponerlo a 1 o complementarlo. Las tres operaciones lgicas se emplean habitualmente para realizar estas operaciones. La instruccin AND se usa para poner un bit o grupo

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

481

TABLA 11-4
Instrucciones lgicas y de manipulacin de bits tpicas
Nombre

Mnemnico

Puesta a 0 (Clear)
Puesta a 1 (Set)
Complemento
AND
OR
OR Exclusiva
Poner a 0 el acarreo (Clear carry)
Poner a 1 el acarreo (Set carry)
Complemento del acarreo

CLR
SET
NOT
AND
OR
XOR
CLRC
SETC
COMC

de bits de un operando a 0. Para cualquier variable booleana X, la expresin X 0 % 0 indica que


una variable binaria multiplicada (AND) por 0 produce un 0; y de forma similar, la expresin
X 1 % X indica que una variable no cambia al ser multiplicada por 1. Por tanto, la instruccin
AND se usa para poner los bits de un operando a 0 de forma selectiva mediante la operacin
AND con una palabra que contenga 0 en las posiciones de los bits que se quieren poner a 0, y el
resto permanecen sin cambiar. A la operacin AND tambin se le llama mscara porque, insertando ceros, enmascara una parte del operando. A la instruccin AND tambin se le denomina
instruccin de bits Clear.
La instruccin OR se usa para poner un bit o un grupo de bits de un operando a 1. Para
cualquier variable X, la expresin X ! 1 % 1 indica que una variable a la que se le aplica la
suma lgica (OR) de 1 produce un 1; de forma similar, la expresin X ! 0 % X, indica que la
variable permanece sin cambiar al aplicar la suma lgica con 0. Por tanto, la instruccin OR se
puede usar para poner selectivamente a 1 los bits de un operando mediante la operacin OR con
una palabra que contenga unos en la posicin de los bits que se quieren poner a 1. A veces, a la
instruccin OR se le llama instruccin de bits Set.
La instruccin XOR se utiliza para complementar selectivamente los bits de un operando.
Esto se debe a la relacin booleana X S 1 % X1 y X S 0 % X. Una variable booleana se complementa cuando se realiza la operacin XOR con 1, pero no cambia cuando se realiza la operacin
XOR con 0. A veces, a la instruccin XOR se le llama instruccin de complemento de bit.
En la Tabla 11.4 se incluyen otras instrucciones de manipulacin de bits, puesta a 0 (Clear),
puesta a 1 (Set) o complemento del bit de acarreo. Se pueden realizar estas mismas operaciones
en los bits de status de manera similar.

Instrucciones de desplazamiento
Existe una serie de instrucciones para desplazar el contenido de un operando de diversas formas. Los desplazamientos son operaciones en las que los bits del operando se mueven a la izquierda o a la derecha. El bit entrante en el desplazamiento de la palabra determina el tipo de
desplazamiento. Aqu hemos aadido otras posibilidades aparte de utilizar un 0 entrante, segn
se hizo en los desplazamientos sl y sr del Captulo 10. Las instrucciones de desplazamiento pueden especificar desplazamientos lgicos, aritmticos u operaciones de rotacin.

482

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

En la Tabla 11-5 se enumeran los cuatro tipos de instrucciones de desplazamiento. El desplazamiento lgico introduce 0 en la posicin del bit entrante despus del desplazamiento. Los
desplazamientos aritmticos se ajustan a las reglas para el desplazamiento de nmeros con signo
en complemento a 2. El desplazamiento aritmtico a la derecha conserva el bit de signo en la
posicin ms a la izquierda. El valor del bit de signo se desplaza hacia la derecha junto con el
resto del nmero pero manteniendo el bit de signo sin cambiar. La instruccin de desplazamiento aritmtico a la izquierda introduce 0 como bit entrante en la posicin ms a la derecha y es
idntica a la instruccin de desplazamiento lgico hacia la izquierda. Sin embargo, las dos instrucciones se pueden distinguir en que en el desplazamiento aritmtico a la izquierda se puede
poner a 1 el bit de status overflow, V, mientras que el desplazamiento lgico a la izquierda no
afecta a V.
TABLA 11-5
Instrucciones de desplazamiento tpicas
Nombre

Mnemnico

Desplazamiento lgico a la derecha


Desplazamiento lgico a la izquierda
Desplazamiento aritmtico a la derecha
Desplazamiento aritmtico a la izquierda
Rotacin a la derecha
Rotacin a la izquierda
Rotacin a la derecha con acarreo
Rotacin a la izquierda con acarreo

SHR
SHL
SHRA
SHLA
ROR
ROL
RORC
ROLC

Las instrucciones de rotacin producen un desplazamiento circular: los valores que salen al
desplazarse por el bit de salida de la palabra no se pierden, como en el desplazamiento lgico,
sino que se introducen por el bit entrante. Las instrucciones de rotacin con acarreo tratan al bit
de acarreo como una extensin del registro cuya palabra esta siendo rotada. De esta forma, una
rotacin a la izquierda con acarreo transfiere el bit de acarreo al bit de entrada a la posicin ms
a la derecha del registro, transfiere el bit saliente desde el bit ms a la izquierda del registro al
acarreo y desplaza el contenido completo del registro a la izquierda. Algunos procesadores tienen un formato con varios campos para la instruccin de desplazamiento. Un campo contiene el
cdigo de operacin y el resto especifica el tipo de desplazamiento y el nmero de posiciones
que el operando se va a desplazar. Una instruccin de desplazamiento puede incluir los siguientes cinco campos:
OP

REG

TYPE

RL

COUNT

OP es el campo del cdigo de operacin para especificar un desplazamiento y REG tiene una
direccin que especifica la localizacin del operando. TYPE es un campo de dos bits que especifica uno de los cuatro tipos de desplazamiento (lgico, aritmtico, rotacin y rotacin con acarreo), y RL es un campo de 1 bit que indica si el desplazamiento es a la derecha o a la izquierda. COUNT es un campo de k bits que indica el nmero de posiciones a desplazar, hasta un
mximo de 2k . 1 posiciones. Con dicho formato, es posible especificar el tipo de desplazamiento, su direccin y el nmero de posiciones que se ha de desplazar el operando, todo ello en
una instruccin.

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

483

11-7 CLCULOS EN PUNTO FLOTANTE


En muchos clculos cientficos, el rango de los nmeros que se utilizan es muy grande. En un
procesador, la forma de expresar tales nmeros es en notacin en punto flotante. Los nmeros
en punto flotante tienen dos partes: una contiene el signo del nmero y una fraccin o mantisa,
y la otra parte indica la posicin del punto de la base y se llama exponente. Por ejemplo, el
nmero decimal !6132.789 se representa en notacin en punto flotante como:
Mantisa

Exponente

!.6132789

!04

El valor del exponente indica que la posicin actual del punto decimal est cuatro posiciones a
la derecha del punto decimal indicado en la mantisa. Esta representacin es equivalente a la
notacin cientfica !1.6132789 # 10!4. Los nmeros decimales en punto flotante se interpretan para representar un nmero de la forma:
F # 10E
donde F es la mantisa y E el exponente. Slo la mantisa y el exponente estn fsicamente representado en los registros del procesador. La base 10 y el punto decimal de la mantisa no se muestran explcitamente. Un nmero binario en punto flotante se representa de forma similar, excepto que se usa la base 2 para el exponente. Por ejemplo, el nmero binario !1001.11 se
representa con 8 bits para la mantisa y 6 bits para el exponente como
Mantisa

Exponente

01001110

000100

La mantisa tiene un 0 en la posicin ms a la izquierda que indica un !. El punto binario de la


mantisa sigue al bit de signo pero no se muestra en el registro. El exponente tiene el nmero
binario equivalente a !4. El nmero en punto flotante es equivalente a:
F # 2E % !(0.1001110)2 # 2!4
Se dice que un nmero en punto flotante est normalizado si el digito ms significativo de la
mantisa es distinto de cero. Por ejemplo, la mantisa decimal 0.350 est normalizada pero 0.0035
no. Los nmeros normalizados proporcionan la mxima precisin de los nmeros en punto flotante. El cero no puede ser normalizado puesto que no tiene dgitos distintos de cero y se representa normalmente en punto flotante con todos sus bits a cero, tanto en la mantisa como en el
exponente.
La representacin en punto flotante incrementa el rango de los nmeros que se pueden ajustar a un determinado registro. Suponga un procesador con registros de 48 bits. Puesto que se
tiene que reservar un bit para el signo, el rango de los enteros con signo ser u(247 . 1), que es
aproximadamente u1014. Los 48 bits se pueden usar para representar un nmero en punto flotante, con un bit de signo, 35 bits para la mantisa y 12 bits para el exponente. Los nmeros
positivos y negativos ms grandes que se pueden representar as son:
u(1 . 2.35) # 2!2047

484

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Este nmero se deriva de una mantisa que contiene 35 unos y un exponente con un bit de signo
y 11 unos. El exponente ms grande es 211 . 1, o 2047. El nmero decimal ms grande que se
puede representar as es equivalente a 10615 aproximadamente. Aunque se represente un rango
mucho mayor, slo hay 48 bits en la representacin. Como consecuencia, se pueden representar
la misma cantidad de nmeros. Por ello, el rango se ajusta segn la precisin de los nmeros,
que se reduce de 48 bits a 35 bits.

Operaciones aritmticas
Las operaciones aritmticas con nmero en punto flotante son ms complicadas que con nmeros enteros, y su ejecucin lleva ms tiempo y requiere un hardware ms complejo. La suma y
la resta de dos nmeros necesitan que se alineen los puntos de la base ya que los exponentes
deben ser iguales antes de sumar o de restar las fracciones. Considere la suma de los siguientes
nmeros en punto flotante:
.5372400 # 102
!.1580000 # 10.1
Es necesario que los dos exponentes sean iguales antes de que se puedan sumar las fracciones.
Podemos desplazar el primer nmero tres posiciones a la izquierda o desplazar el segundo nmero tres posiciones a la derecha. Si las fracciones estn almacenadas en registros, el desplazamiento a la derecha puede provocar la prdida de los dgitos menos significativos. El segundo
mtodo es preferible porque solamente reduce la precisin, mientras que el primer mtodo puede causar un error. El procedimiento habitual de alineamiento es desplazar la mantisa con el
exponente menor a la derecha un nmero de posiciones igual a la diferencia entre los exponentes. Despus de esto, las fracciones se pueden sumar:
.5372400 # 102
!.0001580 # 102
.5373980 # 102
Cuando se suman dos fracciones, la suma puede contener un dgito de overflow. Un overflow se puede corregir desplazando la suma una vez a la derecha e incrementando el exponente.
Cuando se restan dos nmeros, el resultado puede contener ceros en los dgitos ms significativos, como se muestra en el siguiente ejemplo:
.56780 # 105
..56430 # 105
.00350 # 105
Un nmero en punto flotante que tiene un 0 en la posicin ms significativa de la mantisa no es
un nmero normalizado. Para normalizar el nmero es necesario desplazar la mantisa a la izquierda y decrementar el exponente hasta que aparezca un dgito distinto de cero en la primera
posicin. En el ejemplo anterior, es necesario desplazar el resultado dos veces hacia la izquierda
hasta obtener .35000 # 103. En la mayora de los procesadores, el procedimiento de normalizacin se produce despus de cada operacin para asegurar que todos los resultados estn de forma normalizada.

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

485

La multiplicacin y divisin en punto flotante no necesita un alineamiento de las fracciones.


La multiplicacin se puede realizar multiplicando las dos fracciones y sumando los exponentes.
La divisin se puede llevar a cabo dividiendo las fracciones y restando los exponentes. En los
ejemplos mostrados, utilizamos nmeros decimales para mostrar las operaciones aritmticas con
nmeros en punto flotante. El mismo procedimiento se aplica a los nmeros binarios, excepto
que la base del exponente es 2 en lugar de 10.

Exponente sesgado
La parte del signo y la mantisa de un nmero en punto flotante se representan habitualmente en
cdigo signo ms magnitud. La representacin de exponentes empleada en la mayora de los
procesadores se conoce como exponente sesgado (del trmino ingls biased exponent). El sesgo
es un valor fijo en exceso que se suma al exponente de forma que, internamente, todos los exponentes pasan a ser positivos. Como consecuencia, el signo del exponente se elimina y no forma
una entidad separada.
Consideremos, por ejemplo, que el rango de los exponentes decimales est entre .99 y
!99. Esto se representa mediante dos dgitos ms el signo. Si utilizamos como sesgo el valor 99, entonces el exponente sesgado e ser igual a e % E ! 99, donde E es el exponente
actual. Para E % .99, tendremos que e % .99 ! 99 % 0; y para E % !99, tendremos que
e % 99 ! 99 % 198. De esta forma, el exponente sesgado se representa en un registro como un
nmero positivo en el rango de 000 a 198. Los exponentes sesgados positivos tienen un rango
entre 099 y 198. La resta del sesgo, 99, da valores positivos entre 0 y !99. Los exponentes
segados negativos tendrn un rango entre 098 y 000. La resta de 99 da los valores negativos
comprendidos entre .1 y .99.
La ventaja de los exponentes sesgados es que los nmeros en punto flotante que resultan
contienen slo exponentes positivos. Es, por tanto, ms sencillo comparar la magnitud relativa
entre dos nmeros sin tener en cuenta los signos de sus exponentes. Otra ventaja es que el exponente ms negativo se convierte a exponente sesgado con todos los dgitos a 0. La representacin de cero es un cero en la mantisa y un cero en el exponente sesgado, que es el exponente
ms pequeo.

Formato estndar de los operandos


Las instrucciones aritmticas que realizan operaciones con datos en punto flotante utilizan habitualmente el sufijo F. De esta forma, ADDF es una instruccin de suma con nmeros en punto
flotante. Hay dos formatos estndar para la representacin de operandos en punto flotante: datos
en precisin simple, consistente en 32 bits, y datos en doble precisin, consistente en 64 bits.
Cuando estn disponibles los dos tipos de datos, el mnemnico de las instrucciones de precisin
simple utilizan el sufijo FS, y los de doble precisin usan FL (del trmino ingls floating-point
long).
El formato estndar del IEEE (vase Referencia 7) para precisin simple en operando en
punto flotante se muestra en la Figura 11-8. Est compuesto por 32 bits. El bit de signo s indica
el signo de la mantisa. El exponente sesgado, e, tiene 8 bits y utiliza como sesgo el nmero 127.
La mantisa, f, est formada por 23 bits. Se considera que el punto binario est inmediatamente
a la izquierda del bit ms significativo del campo f. Adems, implcitamente se inserta un bit a
la izquierda del punto binario, el cual, expande el nmero a 24 bits, representando un nmero de
valores entre 1.02 a 1.11...12. A la componente del nmero binario en punto flotante, que consiste

486

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

23

FIGURA 11-8
Formato IEEE para los operandos en punto flotante

en un bit primero a la izquierda del punto binario implcito, junto con la mantisa en el campo,
se le llama parte significativa. A continuacin tenemos algunos ejemplos de valores del campo
y su correspondiente parte significativa:
Campo f

Parte significativa

Equivalente decimal

100 . . . 0
010 . . . 0
000 . . . 0

1.100 . . . 0
1.010 . . . 0
1.000 . . . 0*

1.50
1.25
1.00*

* Suponiendo que el exponente es distinto de 00 . . . 0.

Aunque el campo f no est normalizado, la parte significativa est siempre normalizada


porque no tiene un bit distinto de cero en el bit ms significativo. Puesto que los nmeros normalizados deben tener el bit ms significativo distinto de cero, este bit no se incluye en el formato pero se debe introducir por el hardware durante los clculos aritmticos. El componente
utiliza 127 como valor de sesgo para los nmeros normalizados. El rango vlido para los exponentes va desde .126 (representado como 00000001) hasta !127 (representado como)
11111110. El valor mximo (11111111) y mnimo (00000000) del campo e se reservan para
indicar condiciones excepcionales. La Tabla 11-6 muestra los valores de sesgo y actuales de
algunos exponentes.
u TABLA 11-6
Evaluacin de exponentes sesgados
Exponente sesgado e % E ! 127
Exponente E
en decimal

Decimal

.126
.001
000
!001
!126
!127

.126 ! 127 % 1
.001 ! 127 % 126
000 ! 127 % 127
001 ! 127 % 128
126 ! 127 % 253
127 ! 127 % 254

Binario
00000001
01111110
01111111
10000000
11111101
11111110

Los nmeros normalizados son nmeros que se pueden expresar como operandos en punto
flotante en los que en el campo e no estn todos los bits ni a 1 ni a 0. El valor del nmero se
extrae de los tres campos del formato de la Figura 11-8 utilizando la frmula
(.1)s 2e.127 # (1. f)

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

487

El nmero ms positivo normalizado que se puede obtener tiene un 0 en el bit de signo para
indicar el signo positivo, un exponente sesgado igual a 254 y un campo f con 23 unos. Esto da
un exponente E % 254 . 127 % 127. La parte significativa es igual a 1!1 . 2.23 % 2 . 2.23.
El nmero positivo mximo que se puede utilizar es:
!2.127 # (222.23)
El nmero normalizado positivo ms pequeo tiene un exponente sesgado igual a 00000001 y
una mantisa con todos sus bits a 0. El exponente es E % 1 . 127 % .126, y la parte significativa es igual a 1.0. El nmero positivo ms pequeo que se puede usar es !2.126. Los nmeros
negativos correspondientes a los anteriores son los mismos, excepto que el bit de signo es negativo. Como se mencion anteriormente, los exponentes con todos sus bits a 0 o a 1 (en decimal
255) se reservan para las siguientes condiciones especiales:
1.

Cuando e % 255 y f % 0, el nmero representa ms o menos infinito. El signo lo determina el bit de signo s.
2. Cuando e % 255 y f 0, la representacin no se considera como un nmero o NaN (del
ingls Not a Number), ignorando el bit de signo. NaN se utiliza para indicar operaciones no vlidas, como puede ser la multiplicacin de cero por infinito.
3. Cuando e % 0 y f % 0, el nmero es un ms o menos cero.
4. Cuando e % 0 y f 0, se dice que el nmero no est normalizado. Este es el nombre
que se le da a los nmeros cuya magnitud es menor que el valor mnimo que se puede
representar con formato normalizado.

11-8 INSTRUCCIONES DE CONTROL DE PROGRAMA


Las instrucciones de un programa se almacenan en posiciones de memoria consecutivas. Cuando se procesan por la unidad de control, las instrucciones se leen de las posiciones consecutivas
de la memoria y se ejecutan una por una. Cada vez que se extrae una instruccin de la memoria,
el PC se incrementa de forma que contiene la siguiente direccin de la secuencia. Por el contrario, una instruccin de control de programa, cuando se ejecuta, puede cambiar el valor de la
direccin del PC y alterar el flujo de control. El cambio en el PC, como resultado de la ejecucin de una instruccin de control de programa, provoca una ruptura en la secuencia de ejecucin de las instrucciones. Esta es una caracterstica importante en los procesadores digitales ya
que proporciona un control sobre el flujo de ejecucin del programa y la posibilidad de bifurcarse hacia diferentes segmentos del programa, dependiendo de los clculos previos.
En la Tabla 11-7 se enumeran algunas instrucciones de control de programa tpicas. La bifurcacin, o ramificacin, (del trmino ingles branch) y el salto (del trmino ingles jump) se
utilizan, con frecuencia, indistintamente, significando la misma cosa, aunque a veces, se usan
con modos de direccionamiento diferentes. Por ejemplo, el salto puede usar direccionamiento
directo o indirecto, mientras que la bifurcacin utiliza direccionamiento relativo. Estos saltos y
bifurcaciones son, habitualmente, instrucciones con una direccin. Cuando se ejecutan, la bifurcacin realiza la transferencia de la direccin efectiva al PC. Como el PC contiene la direccin
de la instruccin que se va a ejecutar posteriormente, la siguiente instruccin se extraer de la
posicin especificada por la direccin efectiva.
Las instrucciones de salto y ramificacin pueden ser condicionales o incondicionales. Una
instruccin de ramificacin incondicional realiza una bifurcacin a una direccin efectiva sin
ninguna condicin. La instruccin de bifurcacin especifica una condicin que se debe cumplir

488

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 11-7
Instrucciones de control de programa tpicas
Nombre

Mnemnico

Bifurcacin
Salto
Salto implcito (Skip)
Llamada a subrutina
Retorno de subrutina
Comparacin (con substraccin)
Test (mediante AND)

BR
JMP
SKP
CALL
RET
CMP
TEST

para que la ramificacin se produzca, como puede ser que el valor de un registro concreto sea
negativo. Si se cumple la condicin, el PC se carga con la direccin efectiva y la siguiente instruccin a ejecutar se toma de esta direccin. Si la condicin no se cumple, el contenido del PC
no cambia, y la siguiente instruccin se toma de la siguiente posicin de la secuencia.
La instruccin de salto implcito (en ingls skip) no necesita campo de direcciones. Una instruccin de salto implcito condicional saltar a la siguiente instruccin de la secuencia si se
cumple una determinada condicin, quedndose sta sin ejecutar. Esto se realiza mediante el
incremento del PC durante la fase de ejecucin de la instruccin, adems de incrementarla durante la fase de extraccin. Si no se cumple, el control prosigue con la siguiente instruccin de
la secuencia, donde el programador puede insertar una instruccin de ramificacin incondicional. De esta forma, una instruccin de salto implcito seguida de una instruccin de bifurcacin
provoca una ramificacin si la condicin no se cumple. Como este salto involucra la ejecucin
de dos instrucciones, resulta ms lento y usa ms instrucciones de la memoria.
Las instrucciones de llamada y de retorno de subrutina se utilizan para usar subrutinas. Su
funcionamiento se presenta ms tarde en esta seccin.
La instruccin de comparacin realiza una comparacin mediante una resta pero sin almacenar el resultado. En cambio, la comparacin realiza una bifurcacin condicional, cambia el contenido de un registro o pone a 0 o a 1 los bits de status. De forma similar, la instruccin de test
efecta una operacin AND entre dos operando sin almacenar el resultado y ejecuta una de las
acciones enumeradas en la instruccin de comparacin.
Segn las tres acciones posibles, las instrucciones de comparacin y de test se pueden clasificar en tres tipos, dependiendo de la forma en la que se manejen las decisiones condicionales.
El primer tipo ejecuta la decisin en una sola instruccin. Por ejemplo, se puede comparar el
contenido de dos registros y se realiza una bifurcacin o un salto si sus contenidos son iguales.
Al estar involucradas dos direcciones de registro y una direccin de memoria, dicha instruccin
necesita tres direcciones. El segundo tipo de instruccin de comparacin y de test tambin utiliza tres direcciones pero esta vez slo de registros. Considerando el mismo ejemplo, si el contenido de los dos primeros registros es igual, se coloca un 1 en el tercer registro. Si el contenido
no es igual, entonces se coloca un 0 en el tercer registro. Estas instrucciones evitan el uso de los
bits de status. En el primer caso, tales bits no se necesitan, y en el segundo caso, se usa un
registro para simular la presencia de un bit de status. El tercer tipo de comparacin y test, con la
estructura ms compleja, tiene operaciones de comparacin y test que ponen a 1 o a 0 los bits
de status. Las instrucciones de bifurcacin o de salto se utilizan posteriormente para cambiar
condicionalmente la secuencia del programa. Este tercer tipo de instruccin de comparacin y
test centrar la discusin de la siguiente subseccin.

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

489

Instrucciones de bifurcacin condicional


Una instruccin de bifurcacin condicional es una instruccin de ramificacin que puede o no
provocar una transferencia de control, dependiendo de los valores de los bits almacenados en el
PSR. Cada instruccin de bifurcacin condicional comprueba una combinacin diferente de los
bits de status dependiendo de la condicin. Si la condicin es cierta, el control se transfiere a la
direccin efectiva. Si la condicin es falsa, el programa contina con la siguiente instruccin.
En la Tabla 11-8 se da una lista de las instrucciones condicionales que dependen directamente
de los bits de PSR. En la mayora de los casos, el mnemnico se construye con la letra B (de
branch) y una letra que nombra al bit de status involucrado. Se aade la letra N (de not) si el bit
de status involucrado se comprueba para la condicin 0. De esta forma, BC efecta una ramificacin si el acarreo es igual a 1, y BNC hace una ramificacin si el bit de acarreo es igual a 0.
TABLA 11-8
Instrucciones de fifurcacin relacionadas con los bits de status del PSR
Condicin de bifurcacin

Mnemnico

Condicin de test

Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin

BZ
BNZ
BC
BNC
BN
BNN
BV
BNV

Z%1
Z%0
C%1
C%0
N%1
N%0
V%1
V%0

si
si
si
si
si
si
si
si

es cero
no es cero
hay acarreo
no hay acarreo
negativo
positivo
hay overflow
no hay overflow

El bit de status cero, Z, se usa para comprobar si el resultado de una operacin de la ALU es
igual a cero. El bit de acarreo se utiliza para comprobar el acarreo despus de una suma o una
resta de dos operandos en la ALU. Tambin se utiliza junto con las instrucciones de desplazamiento para comprobar el bit saliente. El bit de signo, N, refleja el estado del bit ms a la izquierda de la salida de la ALU. N % 0 indica signo positivo y N % 1 signo negativo. Estas instrucciones se pueden utilizar para comprobar el valor del bit ms a la izquierda, tanto si
representa un signo o no. El bit de overflow, V, se usa junto con operaciones aritmticas con
nmeros con signo.
Como se explic anteriormente, la instruccin de comparacin realiza la resta de dos operandos, supongamos, A . B. El resultado de la operacin no se transfiere a ningn registro, aunque los bits de status resultan afectados. Los bits de status proporcionan informacin sobre la
diferencia entre A y B. Algunos procesadores tienen instrucciones de bifurcacin que se pueden
aplicar despus de la ejecucin de una instruccin de comparacin. Las condiciones concretas
que se comprueban dependen de si los nmeros se consideran con signo o sin signo.
La diferencia entre dos nmeros binarios sin signo A y B se puede determinar mediante la
operacin A . B y comprobando los bits de status C y Z. La mayora de procesadores tienen en
cuenta al bit de status C como bit de acarreo despus de una suma o una resta. Se produce un
acarreo en la substraccin cuando A a B porque la posicin ms significativa debe prestar un
bit para completar la resta. Ese acarreo no ocurre si A n B, ya que A . B es positivo. La condicin de acarreo en la substraccin es la contraria si la resta se hace con el complemento a 2 de
B. Los procesadores que utilizan el bit de status C como acarreo despus de una resta comple-

490

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

mentan la salida de acarreo despus de sumar el complemento a 2 del sustraendo y llama a este
bit bit de borrow. La tcnica se aplica a todas las instrucciones que usan la resta dentro de la
unidad funcional, no slo para la instruccin de resta. Por ejemplo, se aplica para la instruccin
de comparacin.
Las instrucciones de bifurcacin condicional con nmeros sin signo se enumeran en la Tabla
11-9. Se considera que la instruccin anterior ha actualizad los bits de status C y Z despus de la
operacin A . B u otra instruccin similar. Las palabras mayor, menor e igual se usan
para indicar la diferencia entre dos nmeros sin signo. Los dos nmeros son iguales si A % B.
Esto se determina a partir del bit de status Z, que es igual a 1 ya que A . B % 0. A es menor
que B y el acarreo C % 1 cuando A a B. Para que A sea menor o igual que B, (A m B), debemos
tener C % 1 o Z % 1. La relacin A b B es la inversa de A m B y se detecta complementando la
condicin de los bits de status. De forma similar, A n B, es la inversa de A a B, y A B es la
inversa de A % B.
TABLA 11-9
Instrucciones de bifurcacin condicional para nmeros sin signo
Condicin de bifurcacin

Mnemnico

Condicin

Bits de status

Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin

BH
BHE
BL
BLE
BE
BNE

AbB
AnB
AaB
AmB
A%B
AB

C!Z%0
C%0
C%1
C!Z%1
Z%1
Z%0

si
si
si
si
si
si

es mayor
es mayor o igual
es menor
es menor o igual
es igual
no es igual

Las instrucciones de salto condicional para nmeros con signo se enumeran en la Tabla 11-10.
De nuevo se supone que una instruccin anterior ha actualizado los bits de status N, V y Z despus de la operacin A . B, Las palabras ms grande, menos grande e igual se usan para
indicar la diferencia entre dos nmeros con signo. Si N % 0, el signo de la diferencia es positiva
y A debe ser ms grande o igual que B, haciendo V % 0, e indicando que no ha ocurrido overflow. Un overflow produce un cambio de signo, segn se estudi en la Seccin 5-4. Esto significa que si N % 1 y V % 1, hubo un cambio de signo y que el resultado debi haber sido positivo,
lo cual hace A ms grande o igual que B. Adems, la condicin A n B es cierta si N y V son
iguales a 0 o ambos son iguales a 1. Esto es el complemento de la operacin OR exclusiva.
Para que A sea mayor que B pero no igual (A b B), el resultado debe ser positivo y distinto
de cero. Como un resultado igual a cero tiene signo positivo, debemos asegurarnos que el bit Z
TABLA 11-10
Instrucciones de bifurcacin condicional para nmeros con signo
Condicin de bifurcacin

Mnemnico

Condicin

Bits de status

Bifurcacin
Bifurcacin
Bifurcacin
Bifurcacin

BG
BGE
BL
BLE

AbB
AnB
AaB
AmB

(N S V) ! Z % 0
(N S V) % 0
(N S V) % 1
(N S V) ! Z % 1

si
si
si
si

es
es
es
es

mayor
mayor o igual
menor
menor o igual

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

491

es 0 para excluir la posibilidad de que A % B. Vase que la condicin (N S V) ! Z % 0 significa que la operacin OR exclusiva y Z deben ser iguales a 0. Las otras condiciones de la tabla se
pueden derivar de manera similar. Las condiciones BE (bifurcacin si es igual) y BNE (bifurcacin si no es igual) dadas para los nmeros sin signo se aplican tambin a los nmeros con
signo y se pueden determinar a partir de Z % 1 y Z % 0, respectivamente.

Instrucciones de llamada y retorno de subrutinas


Una subrutina es una secuencia autocontenida de instrucciones que realizan una tarea de clculo
concreta. Durante la ejecucin de un programa, se puede llamar a una subrutina varias veces en
diversos puntos de un programa. Cada vez que se llama a la subrutina se realiza una bifurcacin
al comienzo de sta para empezar la ejecucin de su conjunto de instrucciones. Despus de ejecutar la subrutina se realiza una nueva ramificacin para volver al programa principal.
La instruccin que transfiere el control a la subrutina se conoce con diversos nombres: llamadas subrutinas, salto a subrutina, bifurcacin a subrutina, ramificacin o link. Nos referiremos a la rutina que contiene la llamada a una subrutina como llamada a la subrutina. La instruccin de llamada a la subrutina tiene un solo campo de direcciones y realiza dos operaciones.
Primero, almacena el valor del PC, que es la direccin siguiente a la instruccin de llamada a la
subrutina, en una posicin temporal. Esta direccin se llama direccin de retorno, y la instruccin correspondiente es el punto a continuacin de la llamada a la subrutina. Segundo, la direccin en la instruccin de llamada a la subrutina, direccin de la primera instruccin de la subrutina, se carga en el PC. Cuando se accede a la siguiente instruccin, sta procede de la llamada
a la subrutina.
La ltima instruccin de cada subrutina debe ser una instruccin de retorno. La instruccin
de retorno toma la direccin que fue almacenada por la instruccin de llamada a la subrutina y
la coloca en el PC. Esto da lugar a un regreso al programa principal al siguiente punto donde se
hizo la llamada a la subrutina.
Los procesadores utilizan diferentes posiciones temporales para almacenar la direccin de
retorno. Algunos la almacenan en una posicin fija de memoria, otros la almacenan en un registro del procesador, y otros en una pila. La ventaja de utilizar una pila para la direccin de retorno es que, cuando se llaman a una sucesin de subrutinas, la direccin correspondiente de retorno se coloca en la pila. Las instrucciones de retorno sacan la direccin de la posicin ms alta
de la pila y su contenido lo transfieren al PC. De esta forma, un retorno se hace siempre al
programa que llam por ltima vez a la subrutina. Una instruccin de llamada a subrutina que
utiliza una pila se realiza con las siguientes microoperaciones:
SP p SP . 1

Decrementa el puntero de pila

M[SP] p PC

Almacena la direccin de retorno en la pila

PC p Direccin efectiva

Transferencia del control a la subrutina

La instruccin de retorno se lleva a cabo sacando la direccin de retorno de la pila y la


coloca en el PC:
PC p M[SP]

Transfiere la direccin de retorno al PC

SP p SP ! 1

Incrementa el puntero de pila

492

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Usando una pila para gestionar las subrutinas, todas las direcciones de retorno se almacenan automticamente, mediante hardware, en la memoria de pila. De esta forma, el programador no tiene
que tener en consideracin la gestin de las direcciones de retorno de las subrutinas llamadas.

11-9 INTERRUPCIONES
Una interrupcin de programa se usa para manejar diversas situaciones que necesitan una salida
de la secuencia normal del programa. Una interrupcin transfiere el control del programa que se
est ejecutando a otro programa auxiliar, rutina de atencin a la interrupcin, como consecuencia de una peticin generada externa o internamente. El control vuelve al programa original despus de que la rutina de atencin a la interrupcin se ha ejecutado. Bsicamente, las rutinas de
atencin a las interrupciones son similares a las subrutinas vistas anteriormente, excepto en tres
aspectos:
1. La interrupcin se inicia en un punto impredecible del programa por una seal externa o
interna, en lugar de la ejecutarse por una instruccin.
2. La direccin de la rutina de atencin que procesa la peticin de interrupcin se determina por el hardware, en lugar de un campo de direccin de una instruccin.
3. En respuesta a una interrupcin, es necesario almacenar la informacin que contienen
todos o algunos de los registros del procesador, en lugar de almacenar solamente el contador del programa.
Despus de que el procesador ha sido interrumpido y la rutina de atencin a la interrupcin
se ha ejecutado, el procesador debe volver exactamente al mismo estado que tena antes de ser
interrumpido. Slo si ocurre esto, el programa podr seguir ejecutndose como si nada hubiese
sucedido. El estado del procesador al final de la ejecucin de una instruccin se determina a
partir del contenido del conjunto de registros. El PSR, adems de contener informacin de los
bits de status, puede especificar qu interrupciones estn permitidas y si el sistema est en modo
usuario o en modo supervisor. La mayora de los procesadores tienen residente un sistema operativo que controla y supervisa al resto de los programas. Si el procesador est ejecutando un
programa que es parte del sistema operativo, el procesador se coloca en modo supervisor, en el
que ciertas instrucciones tienen privilegios y slo se pueden ejecutar en modo supervisor. El
procesador est en modo usuario cuando se ejecutan programas de usuario, en cuyo caso no se
pueden ejecutar las instrucciones con privilegios. El modo del procesador en un instante dado se
determina a partir de un bit o bits especiales del PSR.
Algunos procesadores slo almacenan el contador de programa cuando responden a una
interrupcin. En dichos procesadores, el programa que realiza el procesado de los datos para dar
servicio a la interrupcin debe incluir instrucciones para almacenar los contenidos importantes
del conjunto de registros. Otros procesadores almacenan el contenido de todos sus registros
automticamente en respuesta a una interrupcin. Algunos procesadores tienen dos conjuntos de
registros, de forma que cuando el programa conmuta del modo usuario al modo supervisor, como respuesta a una interrupcin, no es necesario almacenar el contenido de los registros del
procesador puesto que cada modo utiliza su propio conjunto de registros.
El procedimiento hardware para procesar interrupciones es muy similar a la ejecucin de
una instruccin de llamada a subrutina. El contenido del conjunto de los registros del procesador se almacenan temporalmente en memoria, tpicamente en la memoria de pila, y la direccin
de la primera instruccin de la rutina de atencin a la interrupcin se almacena en el PC. La
direccin de la rutina de atencin a la interrupcin la escoge el hardware. Algunos procesadores

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

493

asignan una posicin de memoria para guardar la direccin de la rutina de atencin a la


interrupcin: la rutina de atencin debe determinar la fuente de interrupcin y proceder a atenderla. Otros procesadores asignan una posicin de memoria aparte para cada una de las posibles
fuentes de interrupcin. A veces, la propia fuente de interrupcin hardware proporciona la direccin de comienzo de la rutina de atencin. En cualquier caso, los procesadores deber tener
algn tipo de procedimiento hardware para seleccionar la direccin de la rutina de atencin.
La mayora de los procesadores no respondern a una interrupcin hasta que la instruccin
que se est ejecutando no se termine de ejecutar. Luego, justo antes de acceder a la siguiente
instruccin, el control comprueba si ha habido alguna seal de interrupcin. Si ha ocurrido, el
control pasa a un ciclo de interrupcin hardware. Durante este ciclo, el contenido de algunos
registros o de todos se colocan en la pila. La direccin de comienzo de una interrupcin concreta se transfiere al PC, y el control accede a la siguiente instruccin, con la que se inicia la rutina
de atencin a esa interrupcin. La ltima instruccin de la rutina es una instruccin de retorno.
Cuando este retorno se ejecuta, se extrae de la pila la direccin de retorno, que se transfiere al
PC, as como el resto de informacin del contenido del conjunto de registro que se haba almacenado, que se repone en los registros correspondientes.

Tipos de interrupciones
Los principales tipos de interrupciones que provocan una ruptura en la ejecucin normal de un
programa son las siguientes:
1.
2.
3.

Interrupciones externas
Interrupciones internas
Interrupciones software

Las interrupciones externas proceden de dispositivos E/S, de dispositivos de temporizacin,


de circuito que monitorizan la fuente de alimentacin o de cualquier fuente externa. Las situaciones que provocan interrupciones son peticiones de dispositivos E/S que solicitan una transferencia de datos, dispositivos externos que acaban una transferencia de datos, la no finalizacin
de un evento (en ingls time- out) o una amenaza de fallo de la alimentacin. La interrupcin de
time- out puede ocurrir cuando hay un bucle sin fin que excede cierto tiempo. Una interrupcin
por fallo de la alimentacin puede tener en su rutina de atencin algunas instrucciones, pocas,
que transfiera la informacin de todos los registros en una memoria no voltil, como un disco
magntico, en pocos milisegundos antes de que caiga la alimentacin.
Las interrupciones internas surgen del uso errneo de una instruccin o dato. A las instrucciones internas tambin se les llama traps. Ejemplos de estas interrupciones causadas por circunstancias internas son: overflow aritmtico, un intento de divisin por cero, un cdigo de operacin no vlido, un overflow de la memoria de pila o una violacin de proteccin. Esta ltima
se produce cuando hay un intento de acceso a un rea de memoria a la que el programa en curso
no puede acceder. Las rutinas de atencin que procesan las interrupciones internas determinan
las medidas correctivas que se deben tomar en cada caso.
Las interrupciones externas e internas son iniciadas por el hardware del procesador. Por el
contrario, una interrupcin software se inicia mediante la ejecucin de una instruccin. La
interrupcin software es una instruccin especial de llamada que se comporta como una interrupcin en lugar de una llamada a subrutina. Se puede utilizar por el programador para iniciar
una interrupcin en un punto concreto del programa. El uso tpico de la interrupcin software
se asocia con una instruccin de llamada del sistema. Esta instruccin proporciona un medio
para cambiar de modo usuario a modo supervisor. Ciertas operaciones dentro del procesador se

494

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

pueden efectuar mediante el sistema operativo slo en modo supervisor. Por ejemplo, una subrutina compleja de entrada o salida se hace en modo supervisor. Por el contrario, un programa
escrito por un usuario debe correr en modo usuario. Cuando hay una peticin de transferencia
de E/S, el programa de usuario provoca una interrupcin software, la cual almacena el contenido del PSR (con el bit de modo puesto en usuario), carga el nuevo contenido del PSR (con el
bit de modo en supervisor), e inicia la ejecucin de un programa del supervisor. La llamada
del programa debe pasar informacin al sistema operativo para especificar la tarea concreta que
se est solicitando.
Otro trmino alternativo para interrupcin es excepcin, que se puede aplicar slo a las
interrupciones internas o a todas las interrupciones, dependiendo del fabricante del procesador.
Como ilustracin del uso de los dos trminos, a lo que un programador llama rutina de manejo
de interrupciones puede llamarse como rutina de manejo de excepciones por otro programador.

Procesamiento de interrupciones externas


Las interrupciones externas pueden tener una o ms lneas de entrada. Si hay en el procesador
ms fuentes de interrupcin que entradas de interrupciones, dos o ms de esas fuentes estn conectadas a una puerta OR para formar una lnea comn. Una seal de interrupcin puede originarse en cualquier momento durante la ejecucin del programa. Para asegurar que no se pierde
informacin, el procesador suele reconocer la interrupcin slo despus de que la instruccin en
curso se ha terminado y slo si el estado del procesador lo autoriza.
En la Figura 11-9 se muestra una configuracin simplificada de una interrupcin externa.
Las cuatro fuentes de interrupciones externas se conectan a una puerta OR para formar una nica seal de interrupcin. Dentro de la CPU hay un flip-flop de habilitacin de interrupciones
(EI) que se puede poner a 0 o a 1 con dos instrucciones del programa: habilita interrupcin
(ENI, del ingls enable interrupt) y deshabilita interrupcin (DSI, del ingls disable interrupt).
Cuando EI es 0, se ignora la seal de interrupcin. Si EI es 1 y la CPU est al final de la ejecucin de una instruccin, el procesador reconoce la interrupcin habilitando la salida de reconocimiento de interrupcin INTACK. La fuente de interrupcin responde a INTACK proporcionando la direccin del vector de interrupcin IVAD a la CPU. El flip-flop controlado por programa,
EI, permite al programador decidir si permite el uso de interrupciones. Si se inserta en el programa la instruccin DSI para poner a cero a EI, quiere decir que el programador no desea que
el programa sea interrumpido. La ejecucin de una instruccin ENI para poner a 1 a EI, ndica
que se permiten las interrupciones mientras el programa est corriendo.
El procesador responde a una seal de peticin de interrupcin si EI % 1 y la ejecucin de la
presente instruccin se ha completado. Las microinstrucciones tpicas que realizan la interrupcin son las siguientes:
SP p SP . 1

Decrementa el puntero de pila

M[SP] p PC

Almacena la direccin de retorno en la pila

SP p SP . 1

Decrementa el puntero de pila

M[SP] p PSR

Almacena el status de procesador en la pila

EI p 0

Pone a 0 el flip-flop

INTACK p 1

Habilita el reconocimiento de la interrupcin

PC p IVAD

Transfiere la direccin del vector de interrupcin al PC


Pasa a la fase de acceso

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

Interrupciones externas

495

Unidad central del proceso (CPU)


Fin de ejecucin
de la instruccin

4
EI

INTACK
Direccin del vector
de interrupcin

IVAD

Flip-flop de habilitacin
Reconocimiento
de interrupciones
de interrupcin

PC

A la pila de
la memoria

FIGURA 11-9
Ejemplo de configuracin de interrupciones externas

La direccin de retorno disponible en el PC se introduce en la pila y el contenido del PSR


tambin. EI se pone a 0 para deshabilitar posteriores interrupciones. El programa que atiende a
la interrupcin puede poner a 1 a EI con una instruccin siempre que se desee habilitar otras
interrupciones. La CPU supone que la fuente externa proporcionar un IVAD como respuesta a
un INTACK. El IVAD se toma como direccin de la primera instruccin de la rutina que atiende
a la interrupcin. Obviamente, se debe escribir un programa para este propsito y almacenarlo
en la memoria.
El retorno de una interrupcin se realiza con una instruccin al final de la rutina de atencin,
que es similar al retorno de una subrutina. La pila se vaca, y la direccin de retorno se transfiere al PC. Como el flip-flop EI se suele incluir en el PSR, el valor original de EI se repone cuando se carga el antiguo valor de PSR. As, el sistema de interrupciones se habilita o deshabilita
en el programa original, segn estuviese antes de ocurrir la interrupcin.

11-10 RESUMEN
En este captulo hemos definido los conceptos de arquitectura de conjunto de instrucciones y los
componentes de una instruccin y hemos explorado los efectos en los programas con el mayor
nmero de direcciones por instruccin, utilizando tanto direcciones de memoria como direcciones de registro. Esto conduce a la definicin de cuatro tipos de arquitecturas de direccionamiento: memoria a memoria, registro a registro, acumulador nico y pila. Los modos de direccionamiento especifican cmo se interpreta la informacin de unas instrucciones para determinar la
direccin efectiva de un operando.
Los procesadores de reducido conjunto de instrucciones (RISC) y de conjunto de instrucciones complejas (CISC) son dos categoras habituales de arquitecturas de conjunto de instrucciones. Un RISC tiene como objetivo alto rendimiento y alta velocidad de ejecucin. Por el contra-

496

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

rio, un CISC intenta acercarse a las operaciones utilizadas en los lenguajes de programacin y
facilitar programas compactos.
Las tres categoras de instrucciones bsicas son transferencia de datos, manipulacin de datos y control de programa. Para elaborar las instrucciones de transferencia de datos aparece el
concepto de memoria de pila. Las transferencias entre la CPU y E/S se direccionan mediante
dos mtodos diferentes: E/S independiente, con espacio de direcciones separado, y E/S ubicada
en memoria, que utiliza parte del espacio de la memoria. Las instrucciones de manipulaciones
de datos se clasifican en tres clases: aritmticas, lgicas y de desplazamiento. El formato en
punto flotante y sus operaciones manejan rangos de valores ms amplios para los operandos de
las operaciones aritmticas.
Las instrucciones de control de programa incluyen la transferencia bsica del control incondicional y condicional, esta ltima puede o no usar cdigos de condicin. Las llamadas a subrutinas y los retornos permiten que se pueda romper la secuencia de los programas para realizar
tareas tiles. La interrupcin de la secuencia normal de ejecucin de un programa se basa en
tres tipos de interrupciones: externas, internas y software. Tambin se les llama excepciones a
las interrupciones que necesitan acciones de procesamiento especiales en la inicializacin de rutinas de atencin para atenderlas y en el retorno de la excepcin de los programas interrumpidos.

REFERENCIAS
1.
2.
3.
4.
5.
6.
7.

MANO, M. M.: Computer Engineering: Hardware Design. Englewood Cliffs, NJ: Prentice
Hall, 1988.
GOODMAN, J., and K. MILLER: A Programmers View of Computer Architecture. Fort
Worth, TX: Saunders College Publishing, 1993.
HENNESSY, J. L., and D. A. PATTERSON: Computer Architecture: A Quantitative Approach,
2nd Ed. San Francisco, CA: Morgan Kaufmann, 1996.
MANO, M. M.: Computer System Architecture, 3rd Ed. Englewood Cliffs, NJ: Prentice Hall,
1993.
PATTERSON, D. A., and J. L. HENNESSY: Computer Organization and Design: The Hardware/Software Interface, 2nd Ed. San Mateo, CA: Morgan Kaufmann, 1998.
IEEE Standard for Microprocessor Assembly Language. (IEEE Std 694- 1985.) New York,
NY: The Institute of Electrical and Electronics Engineers.
IEEE Standard for Binary Floating-Point Arithmetic. (ANSI/IEEE Std 754-1985.) New
York, NY: The Institute of Electrical and Electronics Engineers.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco (*) indica que hay una solucin
disponible en la direccin de Internet: http://www.librosite.net/Mano.
11-1. Basndose en las operaciones ilustradas en la Seccin 11-1, escriba un programa que
evale la expresin aritmtica:
X % (A . B) # (A ! C) # (B . D)
Haga efectivo el uso de los registros para minimizar el nmero de instrucciones MOV y
LD donde sea posible.

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

497

(a) Suponga una arquitectura registro a registro con instrucciones con tres direcciones.
(b) Suponga una arquitectura memoria a memoria con instrucciones con dos direcciones.
(c) Suponga un procesador con un solo acumulador con instrucciones con una direccin.
11-2. *Repita el Problema 11-1 para
Y % (A ! B) # C $ (D . (E # F))
Todos los operando estn inicialmente en la memoria y DIV representa dividir.
11-3. *Se ha escrito un programa para una arquitectura con pila para evaluar la expresin aritmtica
X % (A . B) # (A ! C) # (B . D)
(a) Encuentre la correspondiente expresin en NPI.
(b) Escriba el programa utilizando las instrucciones PUSH, POP, ADD, MUL, SUB y
DIV.
(c) Muestre el contenido de la pila despus de la ejecucin de cada instruccin.
11-4. Repita el Problema 11-3 para la expresin aritmtica
(A ! B) # C $ (D . (E # F))
11-5. Una instruccin de dos palabras est almacenada en la memoria en la direccin designada por el smbolo W. El campo de direcciones de la instruccin (almacenado en W ! 1)
se designa con el smbolo Y. El operando utilizado durante la ejecucin de la instruccin
se almacena en la direccin simbolizada mediante Z. Un registro ndice contiene el valor
X. Exponga cmo se calcula Z a partir de otras direcciones si el modo de direccionamiento de la instruccin es:
(a) Directo.

(b) Indirecto.

(c) Relativo.

(d) Indexado.

11-6. *Una instruccin de bifurcacin de modo relativo de dos palabras se almacena en la posicin 207 y 208 (decimal). La bifurcacin se hace en una direccin equivalente a 195
(decimal). Designe el campo de direccin de la instruccin (almacenado en la direccin
208) como X.
(a) Determine el valor de X en decimal.
(b) Determine el valor de X en binario, usando 16 bits. (Vase que el nmero es negativo y debe estar en complemento a 2 Por qu?)
11-7. Repita el Problema 11-6 para una instruccin de ramificacin en la posicin 143 y 144 y
una direccin de bifurcacin equivalente a 1000. Todos los valores estn en decimal.
11-8. Cuntas veces hace referencia la unidad de control a la memoria cuando accede y ejecuta una instruccin de dos palabras con modo de direccionamiento indirecto si la instruccin es:
(a) Un clculo que requiere un operando de una posicin de memoria que devuelve el
resultado a la misma posicin.
(b) Una bifurcacin

498

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

11-9. Una instruccin est almacenada en la posicin 300 con su campo de direcciones en la
posicin 301. El campo de direcciones tiene el valor 211. Un registro del procesador,
R1, contiene el nmero 189. Evale la direccin efectiva si el modo de direccionamiento
de la instruccin es:
(a)
(b)
(c)
(d)
(e)

Directo.
Inmediato.
Relativo.
Registro indirecto.
Indexado con R1 como registro ndice.

11-10. *Un procesador tiene una palabra de 32 bits de longitud y todas sus instrucciones tienen
una palabra de longitud. El banco de registros del procesador tiene 16 registros.
(a) Para un formato sin campo de modo y con tres direcciones de registro. Cul es el
nmero mximo de cdigos de operacin posibles?
(b) Para un formato con dos campos de direcciones de registros, un campo de memoria
y un mximo de 100 cdigos de operacin. Cul es el nmero mximo de bits de
direcciones de memoria disponible?
11-11. Un procesador, con un banco de registros y sin instrucciones PUSH y POP, se utiliza
para hacer una pila. El procesador tiene los siguientes modos indirectos con registros:
Registro indirecto ! incremento:
LD R2 R1

R2 p M[R1]
R1 p R1 ! 1

ST R2 R1

M[R1] p R2
R1 p R1 ! 1

Decremento ! registro indirecto:


LD R2 R1

R1 p R1 . 1
R2 p M[R1]

ST R2 R1

R1 p R1 . 1
M[R1] p R2

Muestre cmo estas instrucciones se pueden utilizar para efectuar las instrucciones
PUSH y POP y usando el registro R6 como puntero de pila.
11-12. Una instruccin compleja, push registers (PSHR), pone el contenido de todos los registros en una pila. Hay ocho registros, R0 a R7, en la CPU. La instruccin POPR, saca el
contenido de los registros de la pila colocndolos de nuevo en sus registros correspondientes.
(a) Describa una posible transferencia de registros en la ejecucin de PSHR.
(b) Describa una posible transferencia de registros para la ejecucin de POPR.
11-13. Un procesador con sistema independiente de E/S tiene la instruccin de entrada y salida
IN R[DR] ADRS
OUT ADRS R[SB]

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

499

donde ADRS es la direccin de un puerto de E/S con registro. Seale las instrucciones
equivalentes para un procesador con la E/S ubicada en memoria.
11-14. *Suponga un procesador con palabras de 8 bits con suma de precisin mltiple de dos
nmeros de 32 bits sin signo,
1F C6 24 7B ! 00 57 ED 4B
(a) Escriba un programa que ejecute la suma utilizando instrucciones de suma y suma
con acarreo.
(b) Ejecute el programa para los operandos dados. Cada byte se expresa con nmeros de
2 dgitos hexadecimales.
11-15. Realice las operaciones lgicas AND, OR y XOR de los dos bytes 00110101 y
10111001.
11-16. Dado el valor de 16 bits 1010 1001 0111 1100 Qu operacin se debe efectuar y qu
operandos se necesitan para
(a) poner a uno los 8 bits menos significativos?
(b) complementar los bits de las posiciones impares (la ms a la izquierda es la 15 y la
ms a la derecha es la 0)?
(c) poner a cero los bits de las posiciones impares?
11-17. *Un registro de 8 bits contiene el valor 01101001 y el bit de acarreo igual a 1. Realice
las operaciones de desplazamiento dadas mediante las instrucciones enumeradas en la
Tabla 11-5 como una secuencia de operaciones sobre estos registros.
11-18. Muestre cmo los siguientes nmeros en punto flotante se han de sumar para obtener un
resultado normalizado:
(..12345 # 10!3) ! (!.71234 # 10.1)
11-19. *Un nmero de 36 bits en punto flotante tiene 26 bits ms signo para la mantisa y 8 bits
ms signo para el exponente. Cules son las cantidades positivas distintas de cero ms
grandes y ms pequeas para nmeros normalizados?
11-20. *Un exponente de 4 bits utiliza un nmero en exceso a 7 para el sesgo. Enumere los
exponentes sesgados en binario desde 18 hasta 27.
11-21. El estndar IEEE para doble precisin para operandos en punto flotante es de 64 bits. El
signo ocupa un bit, el exponente tiene 11 bits y la mantisa 52 bits. El exponente sesgado
es 1023 y la base es 2. Hay un bit implcito a la derecha del punto binario de la mantisa.
Infinito se representa con el exponente sesgado igual a 2047 y la mantisa igual a 0.
(a) Indique la frmula para encontrar el valor decimal de un nmero normalizado.
(b) Enumere algunos exponentes con sesgo en binario, como se hizo en la Tabla 11-6.
(c) Calcule los nmeros positivos ms grande y ms pequeo que se pueden representar.
11-22. Demuestre que si la igualdad 2x % 10y se cumple, entonces y % 0.3x. Utilizando esta relacin, calcule los nmeros normalizados en punto flotante ms grande y ms pequeo
en decimal que se pueden representar con el formato IEEE de precisin simple.

500

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

11-23. *Se necesita bifurcar a ADRS si el bit menos significativo de un operando en un registro
de 16 bits es 1. Muestre cmo se puede hacer con las instrucciones TEST (Tabla 11-7) y
BNZ (Tabla 11-8).
11-24. Considere los dos nmeros de 8 bits A % 00101101 y B % 01101001.
(a) D el valor decimal equivalente para cada nmero suponiendo que (1) son sin signo
y (2) son con signo en complemento a 2.
(b) Sume los dos nmeros binarios e interprete la suma suponiendo que los nmeros son
(1) sin signo y (2) con signo en complemento a 2.
(c) Determine los valores de C (acarreo), Z (cero), N (signo) y V (overflow) de los bits
de status despus de la suma.
(d) Enumere las instrucciones de bifurcacin condicional de la Tabla 11-8 que tendr
una condicin de verdad (true).
11-25. *Un programa en un procesador compara dos nmeros sin signo A y B realizando la resta A . B y actualizando los bits de status.
Sea A % 01011101 y B % 01011100.
(a) Evale la diferencia e interprete el resultado binario.
(b) Determine los valores de los bits de status C (acarreo) y Z (cero).
(c) Enumere las instrucciones de ramificacin de la Tabla 11-9 que tendrn una condicin true.
11-26. Un programa en un procesador compara dos nmeros en complemento a 2, A y B, realizando la substraccin A . B y actualizando los bits de status.
Sea A % 11011110 y B % 11010110.
(a) Evale la diferencia e interprete el resultado binario.
(b) Determine los valores de los bits de status N (signo), Z (cero) y V (overflow).
(c) Enumere las instrucciones de bifurcacin condicional de la Tabla 11-10 que tendrn
la condicin true.
11-27. *La posicin ms alta de la memoria de pila contiene el valor 30000. El puntero de pila
SP contiene 2000. Una instruccin de llamada a subrutina de dos palabras est ubicada
en la direccin 2000, seguida de un campo de direcciones con el valor 0301 en la posicin 2001. Cul es el valor del PC, SP y la posicin ms alta de la pila
(a) antes acceder a la instruccin de llamada a subrutina de la memoria?
(b) despus de ejecutar la instruccin de llamada a subrutina?
(c) despus de volver de la subrutina?
11-28. Un procesador no tiene pila pero en su lugar utiliza el registro R7 como un registro de
enlace (link), es decir, almacena la direccin de retorno en R7.
(a) Muestre la transferencia de registros para una instruccin de bifurcacin y de link.
(b) Suponiendo que existen otra bifurcacin y otro link en la subrutina invocada Qu
accin debe realizar el software antes de que suceda la bifurcacin y el link?
11-29. Cules son las diferencias bsicas entre una bifurcacin, una llamada a subrutina y una
interrupcin de programa?
11-30. *Indique cinco ejemplos de interrupciones externas y cinco ejemplos de interrupciones
internas. Cul es la diferencia entre una interrupcin hardware y una llamada a subrutina?

ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES

501

11-31. Un procesador responde a una seal de peticin de interrupcin introduciendo en la pila


el contenido del PC y de PSR. El procesador lee despus el nuevo contenido de PSR de
una posicin de memoria dada mediante el vector de direccin (IVAD). La primera direccin de la rutina de atencin a la interrupcin se toma de la posicin IVAD ! 1.
(a) Enumere la secuencia de microoperaciones que realiza la interrupcin.
(b) Enumere la lista de secuencia de microoperaciones que realiza el retorno de la
interrupcin.

CAPTULO

12
UNIDADES CENTRALES
DE PROCESAMIENTO
RISC Y CISC

a Unidad Central de Procesamiento (Central Processing Unit, CPU) es el componente clave de una computadora digital. Su propsito es decodificar las instrucciones recibidas de la memoria y realizar operaciones de transferencia, aritmticas, lgicas y de control con los datos almacenados en los registros internos,
memoria o unidades de interfaz de E/S. Externamente, la CPU tiene uno o ms buses
para la transferencia de instrucciones, datos e informacin de control con los componentes a los que est conectado.
En la computadora genrica al comienzo del Captulo 1, la CPU es una parte del
procesador. Sin embargo, las CPUs pueden aparecen en otros sitios, aparte de los
computadoras. Procesadores pequeos y relativamente sencillos, llamados microcontroladores, se usan en computadoras y en otros sistemas digitales para realizar tareas concretas o especializadas. Por ejemplo, hay un microcontrolador en el teclado y
en el monitor de una computadora genrica. En dichos microcontroladores, las CPUs
pueden ser bastante diferentes de las presentadas en este captulo. Las longitudes de
las palabras pueden ser cortas (por ejemplo, de ocho bits), el nmero de registros pequeo y el conjunto de instrucciones limitado. El rendimiento, relativamente hablando,
es bajo pero adecuado. Lo ms importante es que el coste de estos microcontroladores es muy bajo, haciendo su uso muy atractivo.
El estudio de este capitulo se hace sobre y paralelo al del Captulo 10. Comienza
convirtiendo la ruta de datos del Captulo 10 en una ruta de datos segmentada (en
pipeline). Se aade una unidad de control segmentada para crear un procesador de
conjunto de instrucciones reducido (reduced instruction set computer, RISC) que es
similar a la de un procesador de un solo ciclo. Se presentan los problemas que surgen
debido al uso de la segmentacin y su solucin en el contexto del diseo de RISC.
Despus, se aumenta la unidad de control para tener un procesador de conjunto de
instrucciones complejo (complex instruction set computer, CISC) que es similar al procesador multiciclo. Se presenta una visin global de algunos mtodos utilizados para
mejorar el rendimiento de un procesador segmentado o en pipeline. Para terminar, relacionaremos las ideas discutidas para el diseo de sistemas digitales en general.

504

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

12-1 RUTA DE DATOS SEGMENTADA


La Figura 10-17 se us para ilustrar el camino de mayor retardo presente en un procesador de
un solo ciclo y el lmite de la frecuencia de reloj resultante. Con un enfoque ms cercano, la
Figura 12-1(a) ilustra los valores mximos de los retardos para cada uno de los componentes de
una ruta de datos tpica. Se necesita un mximo de 4 ns (3 ns ! 1 ns) para leer dos operandos
del banco de registros o para leer un operando del banco de registros y obtener una constante
de MUX B. Tambin se necesita un mximo de 4 ns (1 ns ! 3 ns) para escribir el resultado
de nuevo en el banco de registros, incluyendo el retardo de MUX D. Sumando estos retardos,
encontramos que se necesitan 12 ns para realizar una sola microoperacin. La tasa mxima a la
que las microoperaciones se pueden realizar es la inversa de 12 ns (es decir, 83.3 MHz). Esta es
la frecuencia mxima a la que el reloj puede funcionar ya que 12 ns es el periodo de reloj ms
pequeo que permitir que cada microoperacin se complete con certeza. Como se ilustra en la
Figura 10-17, el retardo de los caminos que pasan a travs de la ruta de datos y de la unidad de
control limita la frecuencia de reloj incluso a un valor ms pequeo. Slo para la ruta de datos y
para la combinacin de la ruta de datos y de la unidad de control de un procesador de un solo
ciclo, la ejecucin de una microoperacin constituye la ejecucin de una instruccin. As, la
tasa de ejecucin de instrucciones es igual a la frecuencia de reloj.
Suponga ahora que la tasa de ejecucin de la ruta de datos no es la adecuada para una cierta
aplicacin y que no tenemos componentes ms rpidos con los que reducir los 12 ns necesarios

FIGURA 12-1
Temporizacin de la ruta de datos

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

505

para completar una microoperacin. An as, puede ser posible reducir el periodo del reloj e
incrementar su frecuencia. Esto se puede hacer dividiendo el camino con retardo de 12 ns con
registros. A la ruta de datos resultante, mostrada en la Figura 12-1(b) se le llama ruta de datos
segmentada o ruta de datos en pipeline, o simplemente pipeline.
Los tres conjuntos de registros dividen el retardo de la ruta de datos original en tres partes.
Estos registros se muestran sombreados en azul. El banco de registros contiene el primer conjunto de registros. El sombreado slo cubre la mitad superior del banco de registros ya que la
mitad inferior se considera como la lgica combinacional que selecciona los dos registros que
pueden ser ledos. Los dos registros que almacenan el dato A del banco de registros y la salida
de MUX B forman el segundo conjunto de registros. El tercer conjunto de registros almacena
las entradas de MUX D.
El termino pipeline (en espaol tubera), desafortunadamente, no proporciona la mejor
analoga para la estructura correspondiente de una ruta de datos. Una mejor analoga para la ruta
de datos en pipeline es una lnea de produccin. Un ejemplo habitual de una lnea de produccin es una estacin de lavado automtico de coches en el que los coches pasan a travs de una
serie de puestos en los que se realiza una funcin en particular de lavado:
1.
2.
3.

Lavado - Lavado con agua caliente y jabn,


Enjuague - aclarado con agua tibia y,
Secado - soplado de aire sobre la superficie

En este ejemplo, el procesado de un vehculo a travs del lavado est compuesto por tres pasos
y requiere de una cierta cantidad de tiempo para llevarlos a cabo. Usando esta analoga, el procesado de una instruccin mediante un pipeline est formado por n b 2 pasos y cada paso necesita una cierta cantidad de tiempo para llevarse a cabo. La cantidad de tiempo necesario para
procesar una instruccin se llama tiempo de latencia. Usando la analoga con la estacin de
lavado de coches, el tiempo de latencia es la cantidad de tiempo necesario para que el coche
pase por los tres puestos que realizan los tres pasos del proceso. Este tiempo permanece igual
independientemente de si hay un coche o si hay tres coches en la estacin de lavado al mismo
tiempo.
Continuando esta analoga de la ruta de datos en pipeline con la estacin de lavado Como
sera una ruta de datos sin pipeline? Sera un lavado del coche con los tres pasos disponibles en
una sola estacin, donde los pasos se realizan en serie. Ahora podemos comparar las analogas,
comparando de este modo la ruta de datos en pipeline y sin pipeline. Para una estacin mltiple
de lavado de coches y para una estacin sencilla, la latencia es aproximadamente la misma. Por
tanto, ir a una estacin mltiple no decrementa el tiempo necesario para lavar un coche. Sin
embargo, suponga que tenemos en cuenta la frecuencia a la que los coches ya lavados salen de
los dos tipos de estaciones de lavado. En la estacin sencilla, esta frecuencia es la inversa del
tiempo de latencia. Por el contrario, en la estacin mltiple de lavado, un coche sale ya lavado
con una frecuencia de tres veces la inversa del tiempo de latencia. De esta forma, hay un factor
de mejora de tres en la frecuencia o tasa de salida de coches lavados. Basndose en la analoga
para las rutas de datos en pipeline con n etapas y una ruta de datos sin pipeline, la primera tiene
una tasa de procesamiento o throughput para las instrucciones que es n veces la de la ltima. La
estructura deseada, ruta de datos convencional y sin pipeline descrita en el Captulo 10, se ilustra en la Figura 12-1(b). El acceso del operando (OF) se hace en la etapa 1, la ejecucin (EX) en
la etapa 2 y la escritura (WB) en la etapa 3. Estas etapas se etiquetan al lado con sus abreviaturas correspondientes. En este punto, la analoga se rompe algo ya que el coche se mueve suavemente a travs de la estacin de lavado mientras que el dato en el pipeline se mueve en
sincrona con un reloj que controla el movimiento de una etapa a otra. Esto tiene algunas impli-

506

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

caciones interesantes. Primero, el movimiento del dato a travs del pipeline se hace en pasos
discretos en lugar de hacerlo de forma continua. Segundo, la cantidad de tiempo en cada etapa
debe ser la del periodo del reloj y la misma para todas las etapas. Para tener un mecanismo que
separe las etapas del pipeline, se colocan unos registros entre las etapas del pipeline. Estos registros dan un almacenamiento temporal para los datos que pasan a travs de pipeline, y se les
llama registros del pipeline.
Volviendo a la ruta de datos en pipeline del ejemplo de la Figura 12-1(b), la etapa 1 del
pipeline tiene el retardo necesario para la lectura del banco de registros seguida de la seleccin
de MUX B. Este retardo es de 3 ms 1 ns. La etapa 2 del pipeline tiene 1 ns de retardo del
registro ms 4 ns de la unidad funcional, dando lugar a 5 ns. La etapa 3 tiene 1 ns del registro,
el retardo de la seleccin de MUX D y el retardo de escribir de nuevo en el banco de registros.
Este retardo es 1 ! 1 ! 3, un total de 5 ns. As, todos los retardos de flip-flop a flip-flop son,
como mximo, de 5 ns, permitiendo tener un periodo de reloj mnimo de 5 ns (asumiendo que el
tiempo de setup de los flip-flops es cero) y una frecuencia mxima de reloj de 200 MHz, en
comparacin con los 83.3 MHz de la ruta de datos sencilla. Esta frecuencia de reloj se corresponde con el mximo throughput del pipeline, que es de 200 millones de instrucciones por segundo, en torno a 2.4 veces la de la ruta de dato sin pipeline. Incluso cuando hay tres etapas, el
factor de mejora no es tres. Esto es debido a dos factores: (1) el retardo distribuido con los
registros del pipeline y (2) las diferencias entre el retardo de la lgica asignada a cada etapa. El
periodo de reloj se selecciona segn el retardo ms largo, en lugar del retardo medio asignado a
cualquier etapa.
En la Figura 12-2 aparece un diagrama ms detallado de la ruta de datos segmentada. En
este diagrama, en lugar de mostrar la ruta desde la salida del MUX D a la entrada al banco de
registros, el banco de registros se muestra dos veces, una en la etapa OF, donde se lee, y la otra
en la etapa WB, donde se escribe.
La primera etapa, OF, es la etapa de acceso al operando. El acceso al operando consiste en
la lectura de los valores del registro a utilizar del banco de registro y, para el Bus B, la seleccin
entre un valor del registro o una constante utilizando el MUX B. A continuacin de la etapa OF
est el primer registro del pipeline. Los registros del pipeline almacenan el operando u operandos para utilizarlos en la siguiente etapa en el siguiente ciclo de reloj.
La segunda etapa del pipeline es la etapa de ejecucin, llamada EX. En esta etapa se realiza
una operacin en la unidad funcional en la mayora de las microoperaciones. El resultado producido en esta etapa se captura por el segundo registro del pipeline.
La tercera y ltima etapa del pipeline es la etapa de reescritura, llamada WB. En esta etapa,
se selecciona el resultado almacenado en la etapa EX o el valor de Data in con el MUX D y se
vuelve a rescribir en el banco de registro al final de la etapa. La etapa WB termina la ejecucin
de cada microoperacin que necesita escribir en un registro.
Antes de abandonar la analoga con la estacin de lavado, examinaremos el coste de una
estacin de lavado simple y la de tres etapas. Primero, aunque la estacin de lavado lava los
coches tres veces tan rpido como lo hace la estacin sencilla, cuesta tres veces ms en trminos
de espacio. Adems, tiene un mecanismo que mueve el coche a lo largo de las etapas. De esta
forma parece que no compensa mucho en coste comparado con tener tres estaciones sencillas
ensambladas de tres etapas operando en paralelo. No obstante, desde un punto de vista comercial, se ha demostrado que compensa en trminos de coste. En trminos de coches lavados
Puede imaginar por qu? Por el contrario, para la ruta de datos en pipeline, los registros dividen una ruta de datos en tres partes. De esta forma, en una primera estimacin de incremento de
costes, ste se debe principalmente al uso de los registros del pipeline.

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

507

FIGURA 12-2
Diagrama de bloques de una ruta de datos segmentada

Ejecucin de microoperaciones en Pipeline


Hay hasta tres operaciones en cualquier etapa que lava el coche en un momento dado. Por analoga, debera haber hasta tres microoperaciones en cualquier instante de tiempo en la ruta de
datos segmentada.

508

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Examinemos ahora la ejecucin de esta secuencia de microoperaciones en relacin a las etapas del pipeline de la Figura 12-2. En el ciclo de reloj 1, la microoperacin 1 se realiza en la
etapa OF. En el ciclo de reloj 2, la microoperacin 1 est en la etapa EX y la microoperacin 2
en la etapa OF. En el ciclo de reloj 3, la microoperacin 1 est en la etapa WB, la microoperacin 2 en la etapa EX y la microoperacin 3 en la etapa OF. De esta forma, al final del tercer
ciclo de reloj, la microoperacin 1 se ha completado, la microoperacin 2 se ha completado en
dos terceras partes y de la microoperacin 2 se ha realizado una tercera parte. As que se han
completado 1 ! 2/3 ! 1/3 % 2.0 microoperaciones en tres ciclos de reloj, es decir, en 15 ns. En
una ruta de datos convencional habramos completado solamente la ejecucin de la microoperacin 1. De esto se concluye que el rendimiento de la ruta de datos en pipeline es superior en
este ejemplo.
El procedimiento que hemos utilizado para analizar la secuencia de microoperaciones es,
cuando menos, tedioso. Para terminar el anlisis de la temporizacin de la secuencia utilizaremos un diagrama de patrones de ejecucin del pipeline, como el que se muestra en la Figura 12-3. Cada posicin vertical del diagrama representa la microoperacin a realizar y cada posicin horizontal representa un ciclo de reloj. Una posicin del diagrama representa la etapa de
procesamiento de la microoperacin. Por ejemplo, la etapa de ejecucin (EX) de la microoperacin 4, que suma la constante 2 a R0 tiene lugar en el ciclo de reloj 5. Podemos ver del conjunto
del diagrama que la secuencia de las siete microoperaciones necesita nueve ciclos de reloj para
terminar su ejecucin completamente. El tiempo necesario de ejecucin de 9 # 5 % 45 ns comparado con los 7 # 12 % 84 ns de la ruta de datos convencional. De esta forma, la secuencia de
microoperaciones se ejecuta en torno a 1.9 veces ms rpidamente.
Vamos a examinar el patrn de ejecucin cuidadosamente. En los dos primeros ciclos de
reloj, no estn activadas todas las etapas de pipeline puesto que ste se est llenando. En los
siguientes cinco ciclos de reloj estn activadas todas las etapa del pipeline, segn se indica en
trama, y el pipeline se est utilizando completamente. En los dos ltimos ciclos de reloj no estn activas todas las etapas del pipeline puesto que ste se est vaciando. Si queremos encontrar
la mayor mejora de la ruta de datos segmentada sobre la convencional, compararemos las dos
cuando el pipeline est lleno. En estos cinco ciclos de reloj, del 3 al 7, el pipeline ejecuta
(5 # 3) $ 3 % 5 microoperaciones en 25 ns. En el mismo tiempo, la ruta de datos convencional
ejecuta 25 $ 12 % 2.083 microoperaciones. De esta forma, la ruta de datos segmentada ejecuta,
en el mejor de los casos 25 $ 2.083 % 2.4 veces ms operaciones, en un tiempo dado, que
Ciclo de reloj
R2  R3

R1

R4

sl R6

R7

R7  1

R1

R0  2

Data out
R4

R3

Data in

R5

OF

EX

WB

OF

EX

WB

OF

EX

WB

OF

EX

WB

OF

EX

WB

OF

EX

WB

OF

EX

Microoperacin

FIGURA 12-3
Patrn de ejecucioin del pipeline para una secuencia de microoperaciones

WB

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

509

la ruta de datos convencional. En esta situacin ideal, decimos que el movimiento de datos
(throughput) de la ruta de datos segmentada es 2.4 veces la de la convencional. Dese cuenta de
que la velocidad de llenado y vaciado del pipeline est por debajo del valor mximo 2.4. Otros
temas asociados con los pipelines en particular, proporcionar una unidad de control a la ruta
de datos segmentada y su comportamiento con los conflictos se cubren en las dos secciones
siguientes.

12-2 CONTROL DE LA RUTA DE DATOS SEGMENTADA


En esta seccin, se especifica una unidad de control para realizar una CPU utilizando la ruta de
datos de la seccin anterior. Como las instrucciones se leen de la memoria segn se van ejecutando, aadimos una etapa anlogamente a la utilizada en la estacin de lavado vista anteriormente. Anlogamente al acceso de la instruccin de la memoria de instrucciones, las operaciones en la estacin de lavado de coches se especifican mediante hojas de rdenes, producidas por
un servidor, que permite variar las funciones realizadas en las etapas de la estacin de lavado.
La hoja de rdenes, que es anloga a una instruccin, acompaa al coche segn avanza en la
lnea de lavado.
La Figura 12-4 muestra el diagrama de bloques de un procesador en pipeline basado en un
procesador de un solo ciclo. La ruta de datos es la de la Figura 12-2. El control tiene una etapa
adicional para el acceso a las instrucciones que incluye un PC y una memoria de instrucciones.
Esto sera la etapa 1 del pipeline combinado. El decodificador de instrucciones y la lectura del
banco de registros estn ahora en la etapa 2, la unidad funcional y la lectura y escritura de la
memoria de datos estn en la etapa 3 y la escritura en el banco de registros est en la etapa 4.
Estas etapas se han etiquetado con las abreviaturas adecuadas. En la figura hemos aadido registros de pipeline entre las etapas, segn se necesitan para pasar la informacin decodificada de
las instrucciones a travs del pipeline junto con el dato que est siendo procesado. Estos registros adicionales sirven para pasar a lo largo del pipeline la informacin de las instrucciones,
como la informacin de la orden pasa a lo largo de la estacin de lavado.
La primera etapa aadida es la etapa de acceso a las instrucciones, llamada IF, que est situada completamente en el control. En esta etapa, la instruccin se extrae de la memoria de
instrucciones y se actualiza el valor del PC. Dada la complejidad adicional que supone el manejo de saltos y bifurcaciones en el diseo del pipeline, la actualizacin de PC se restringe aqu a
un incremento, con un tratamiento ms complejo que se proporciona en la siguiente seccin.
Entre la primera y segunda etapa hay un registro de pipeline que juega el papel de registrar la
instruccin, denominado IR.
En la segunda etapa, DOF, para decodificar y acceder al operando, tiene lugar la decodificacin de IR en seales de control. Entre las seales decodificadas, las direcciones del banco de
registros AA y BA y la seal del control del multiplexor se utilizan para el acceso del operando.
El resto de las seales de control decodificadas se pasan al siguiente registro de pipeline para
utilizarlas posteriormente. Siguiendo a la etapa DOF est el segundo registro de pipeline, cuyos
registros almacenan las seales de control que se utilizarn ms tarde. La tercera etapa del pipeline es la etapa de ejecucin, llamada EX. En esta etapa, se ejecuta una operacin de la ALU, de
desplazamiento o de memoria para la mayora de las instrucciones. As, las seales de control
utilizadas en esta etapa son FS y MW. La parte de lectura de la memoria de datos M se considera tambin parte de la etapa. Para una lectura de memoria, el valor de la palabra de lectura
se lee de la salida Data out de la memoria de datos. Todos los resultados generados en esta
etapa, ms las seales de control de la ltima etapa, se capturan en el tercer registro de pipeline.

510

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 12-4
Diagrama de bloques de un procesador en pipeline

La parte de escritura de la memoria de datos M se considera una parte de esta etapa, de forma
que puede realizarse aqu una escritura de memoria. La informacin de control se mantiene al
final del registro de pipeline compuesto por DA, MD y RW, que se usa en la etapa final de
reescritura, WB.
La ubicacin de los registros del pipeline ha balanceado el reparto de los retardos, de forma
que el retardo por etapa no es mayor que 5 ns. Esto da lugar a una posible frecuencia de reloj

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

511

de 200 MHz, en torno a 3.4 veces la del procesador de un solo ciclo. Ntese, sin embargo, que
una instruccin toma 4 # 5 % 20 ns para ejecutarse. Esta latencia es de 20 ns, mientras que para
un procesador de un solo ciclo de reloj es de 17 ns. Slo si se ejecutan las instrucciones una a
una, se ejecutaran menos instrucciones que en un procesador de un solo ciclo de reloj.

Rendimiento y realizacin de un pipeline


Si nuestra hipottica estacin de lavado se amplia a cuatro etapas, habr hasta 4 operaciones en
las etapas en un tiempo dado. Entonces, por analoga, debera ser posible tener cuatro instrucciones en las etapas del pipeline de nuestro procesador en un mismo instante de tiempo. Consideremos un clculo sencillo: cargar las constantes de 1 a 7 en los siete registros, R1 a R7, respectivamente. El programa para hacer esto es como sigue (el nmero a la izquierda es un
nmero que identifica a la instruccin):
1
2
3
4
5
6
7

LDI
LDI
LDI
LDI
LDI
LDI
LDI

R1,
R2,
R3,
R4,
R5,
R6,
R7,

1
2
3
4
5
6
7

Vamos a examinar la ejecucin de este programa con respecto de las etapas del pipeline de la
Figura 12-4. Para ello emplearemos el diagrama de patrones de ejecucin del pipeline de la Figura 12-5. En el ciclo de reloj 1, la instruccin 1 est en la etapa IF del pipeline. En el ciclo de
reloj 2, la instruccin 1 est en la etapa DOF y la instruccin 2 est en la etapa IF. En el ciclo
de reloj 3, la instruccin 1 est en la etapa EX, la instruccin 2 est en la etapa DOF, y la
instruccin 3 est en la etapa IF. En el ciclo de reloj 4, la instruccin 1 est en la etapa WB, la
instruccin 2 est en la etapa EX, la instruccin 3 est en la etapa DOF, y la instruccin 4 est
en la etapa IF. De esta forma, al final de cuarto ciclo de reloj, la instruccin 1 ha completado su
Ciclo de reloj

1
2
3
4
5
6
7

IF

DOF

EX

WB

IF

DOF

EX

WB

IF

DOF

EX

WB

IF

DOF

EX

WB

IF

DOF

EX

WB

IF

DOF

EX

WB

DOF

EX

IF

Instruccin

FIGURA 12-5
Ejecucin del patrn en pipeline del programa del nmero de registros

10

WB

512

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

ejecucin, la instruccin 2 est terminada en tres cuartos, la instruccin 3 est medio terminada,
y la instruccin 4 se ha completado en un cuarto. Es decir, hemos completado 1 ! 3/4
! 1/2 ! 1/4 % 2.5 instrucciones en cuatro periodos de reloj, 20 ns. Podemos ver del diagrama
que completa la ejecucin del programa completo de las siete instrucciones que se necesitan 10
ciclos de reloj para ejecutarlo. Es decir se necesitan 50 ns, mientras que el procesador de un
solo ciclo necesita 119 ns, ejecutndose, por tanto, el programa 2.4 veces ms rpido.
Supongamos ahora que examinamos la ejecucin del patrn del pipeline detenidamente. En
los primeros tres ciclos de reloj no estn activas todas las etapas del pipeline puesto que se est
llenando. En los siguientes cuatro ciclos de reloj, todas las etapas del pipeline estn activas,
como se indica en azul, y, por tanto, el pipeline est siendo utilizado en su totalidad. En los tres
ltimos ciclos de reloj no estn activas todas las etapas del pipeline puesto que se est vaciando el pipeline. Si queremos encontrar la mayor mejora posible del procesador en pipeline
sobre el procesador de un solo ciclo de reloj, comparamos los dos en la situacin en la que el
pipeline est completamente utilizado. Con estos cuatro ciclos, o 20 ns, el pipeline ejecuta
4 # 4 $ 4 % 4.0 instrucciones. En el mismo tiempo, el procesador de un solo ciclo de reloj,
ejecuta 20 $ 17 % 1.18 instrucciones. Es decir, en el mejor de los casos, el procesador en pipeline ejecuta 4 $ 18 % 3.4 veces ms instrucciones, en un tiempo dado, que el procesador de un
solo ciclo. Vase que, aunque el pipeline tiene cuatro etapas, el procesador en pipeline no es
cuatro veces ms rpido que el procesador de un solo ciclo ya que los retardos de este ltimo no
se pueden dividir exactamente en cuatro segmentos iguales y por los retardos aadidos por los
registros del pipeline. Tambin, el llenado y vaciado del pipeline reduce bastante la velocidad
de forma que la velocidad del procesador en pipeline es menor que la velocidad mxima ideal
de 3.4 veces la velocidad del procesador de un solo ciclo de reloj.
El estudio del procesador en pipeline aqu visto, junto con el procesador de un solo ciclo y
el procesador multiciclo del Captulo 10, completa nuestro examen de tres organizaciones de
control de los procesadores. Tanto las rutas de datos segmentadas como los controles que hemos
estudiado aqu se han simplificado y se han eliminado elementos. A continuacin presentamos
dos diseos de CPUs que ilustran la combinacin de las caractersticas arquitecturales del conjunto de instrucciones, la ruta de datos y la unidad de control. Los diseos son top-down, pero
reutilizan los diseos de componentes anteriores, ilustrando la influencia de la arquitectura de
conjunto de instrucciones en la ruta de datos y las unidades de control, y la influencia de la ruta
de datos en la unidad de control. El material hace un uso extensivo de tablas y diagramas. Aunque reutilizamos y modificamos el diseo de componentes del Captulo 10, la informacin de
fondo de este captulo no se repite aqu. Sin embargo, los punteros, se dan en las primeras secciones del libro, donde se puede encontrar informacin detallada. Las dos CPUs que se presentan son para un RISC que utiliza una ruta de datos segmentada con una unidad de control cableada en pipeline y un CISC basado en el RISC, que utiliza una unidad de control auxiliar
microprogramada. Estos dos diseos representan a las dos arquitecturas distintas de conjunto de
instrucciones con arquitecturas que utilizan un ncleo en pipeline comn que contribuye a la
mejora del rendimiento.

12-3 PROCESADOR DE CONJUNTO REDUCIDO


DE INSTRUCCIONES
El diseo que primero vamos a examinar es un procesador de conjunto reducido de instrucciones con una ruta de datos segmentada y una unidad de control. Empezamos describiendo la arquitectura de conjunto de instrucciones RISC, que se caracteriza por los accesos a la memoria

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

513

de carga/almacenamiento, cuatro modos de direccionamiento, un nico formato para las instrucciones con la misma longitud y las instrucciones que utiliza son slo operaciones elementales.
Las operaciones, parecidas a las que se realizan en un procesador de un solo ciclo, se pueden
hacer mediante un solo paso a travs del pipeline. La ruta de datos para realizar la arquitectura
ISA se basa en la ruta de datos de un solo ciclo que se describi en la Figura 10-11 y se convirti en pipeline en la Figura 12-2. A la hora de realizar la arquitectura RISC, se han hecho modificaciones en el banco de registros y en la unidad funcional. Estas modificaciones representan
los efectos de una instruccin de longitud ms larga y el deseo de incluir desplazamientos de
varias posiciones entre las operaciones elementales. La unidad de control se basa en la unidad
de control en pipeline de la Figura 12-4. Las modificaciones incluyen el soporte para instrucciones de 32 bits y una estructura ms extensa del contador de programa para proceder con las
bifurcaciones en el entorno del pipeline. En respuesta a los conflictos de datos y del control
asociados con el diseo de pipelines, los cambios se harn tanto en el control como en la ruta de
datos para mantener la ganancia en el rendimiento conseguido utilizando un pipeline.

Arquitectura de conjunto de instrucciones


La Figura 12-6 muestra los registros de la CPU accesible por el programador en este RISC.
Todos los registros son de 32 bits. El banco de registros tiene 32 registros, de R0 a R31. R0 es
un registro especial que aporta el valor cero cuando se usa como fuente y descarta el resultado
cuando se utiliza como destino. El tamao del banco de registros accesible por el programador
es relativamente grande en el RISC debido a la arquitectura de conjunto de instrucciones de
carga/almacenamiento. Como las operaciones de manipulacin de datos slo pueden utilizar
operandos de los registro, muchos de los operandos activos necesitan estar presentes en el banco
de registros. De otra forma, se necesitaran muchas cargas y almacenamientos para salvar temporalmente los operandos en la memoria de datos entre las operaciones de manipulacin de datos. Adems, en muchos pipelines reales, estas cargas y almacenamientos necesitan ms de un
ciclo de reloj para su ejecucin. Para prevenir este factor de degradacin del rendimiento del
RISC, se necesita un gran banco de registros.
Adems del banco de registros, se proporciona un contador de programa, PC. Si se necesitan operaciones basadas en una pila con punteros o con un registro de status, stas se realizan
mediante una secuencia de instrucciones utilizando los registros.

R0  0
R1
PC
Contador de programa

R31
Banco de registros

FIGURA 12-6
Diagrama del conjunto de registros de la CPU de un RISC

514

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 12-7
Formatos de las instrucciones de la CPU RISC

La Figura 12-7 da los tres formatos de instrucciones para una CPU RISC. Los formatos utilizan una nica palabra de 32 bits. Esta longitud de palabra ms larga es necesaria para contener
valores de direccin ms reales, ya que es difcil acomodar en la CPU RISC instrucciones con
palabras adicionales. El primer formato especifica tres registros. Los dos registros direccionados
por los campos de registros fuentes de 5 bits SA y SB contienen los dos operandos. El tercer
registro, diseccionado por el campo de registro destino de 5 bits, DR, especifica la posicin del
registro para guardar el resultado. Un OPCODE de 7 bits proporciona un mximo de 128 operaciones.
Los dos formatos restantes reemplazan al segundo registro con una constante de 15 bits. En
el formato de dos registros, la constante acta como un operando inmediato, y el formato de
bifurcacin, la constante es una direccin relativa (offset). La direccin absoluta es otro nombre
para la direccin efectiva, particularmente si la direccin se utiliza en una instruccin de bifurcacin. La direccin absoluta se forma sumando la direccin relativa al contenido del PC. De
esta forma, la bifurcacin utiliza un direccionamiento relativo basado en el valor actualizado del
PC. As, para bifurcarse hacia atrs de la posicin actual del PC, el offset, que se utiliza como
un nmero en complemento a 2 con extensin de signo, se suma al PC. La instruccin de bifurcacin especifica el registro fuente SA. La ramificacin o el salto se realiza si el contenido del
registro fuente es cero. El campo DR se utiliza para especificar el registro en el que se almacena
la direccin de retorno de la llamada al procedimiento. Finalmente, los 5 bits de la derecha de la
constante de 15 bits tambin se usan como el nmero de desplazamientos SH para desplazamientos mltiples de bits.
La Tabla 12-1 contiene las 27 operaciones a realizar por las instrucciones. Se dan un mnemnico (un opcode) y una descripcin de la transferencia de registros para cada operacin. Todas las operaciones son elementales y se pueden describir con una sentencia sencilla de transferencia de registros. Las nicas operaciones que pueden acceder a la memoria son la Carga y el
Almacenamiento. Hay un nmero apreciable de instrucciones inmediatas que ayudan a reducir
el nmero de accesos a la memoria de datos y as acelerar la ejecucin cuando se emplean constantes. Puesto que el campo inmediato de la instruccin es de solo 15 bits, los 17 bits ms a la
izquierda se deben rellenar para formar un operando de 32 bits. Adems de utilizar el relleno
de ceros para las operaciones lgicas, se utiliza un segundo mtodo llamado extensin de signo.
El bit ms significativo del operando inmediato, el bit 14 de la instruccin, se toma como
el bit de signo. Para formar un operando de 32 bits en complemento a 2, este bit se copia en

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

515

TABLA 12-1
Instrucciones de operacin RISC
Operacin

Notacin
simblica

Opcode

Accin

No operacin
Mover A
Suma

NOP
MOVA
ADD

0000000
1000000
0000010

Ninguna
R[DR] p R[SA]
R[DR] p R[SA] ! R[SB]

Resta
AND
OR
OR Exclusiva

SUB
AND
OR
XOR

0000101
0001000
0001001
0001010

R[DR] p R[SA] ! R[SB] ! 1


R[DR] p R[SA] p R[SB]
R[DR] p R[SA] o R[SB]
R[DR] p R[SA] S R[SB]

Complemento
Suma inmediata

NOT
ADI

0001011
0100010

R[DR] p R[SA]
R[DR] p R[SA] ! se IM

Resta inmediata
AND inmediata
OR inmediata
OR exclusiva inmediata
Suma inmediata sin signo

SBI
ANI
ORI
XRI
AIU

0100101
0101000
0101001
0101010
1000010

R[DR] p R[SA] ! (se IM) ! 1


R[DR] p R[SA] p (0 88 IM)
R[DR] p R[SA] o (0 88 IM)
R[DR] p R[SA] S (0 88 IM)
R[DR] p R[SA] ! (0 88 IM)

Resta inmediata sin signo


Mover B
Desplazamiento lgico a la
derecha SH bits
Desplazamiento lgico a la
izquierda SH bits
Carga
Almacena
Salto segn registro
Pone a 1 si es menor que
Bifurcacin si es cero
Bifurcacin si no es cero
Salto
Salto y enlaza

SIU
MOVB

1000101
0001100

R[DR] p R[SA] ! (0 88 IM)


R[DR] p R[SB]

LSR

0001101

R[DR] p lsr R[SA] SH bits

LSL
LD
ST
JMR
SLT
BZ
BNZ
JMP
JML

0001110
0010000
0100000
1110000
1100101
1100000
1010000
1101000
0110000

R[DR] p lsl R[SA] SH bits


R[DR] p M[R[SA]]
M[R[SA]] p R[SB]
PC p R[SA]
If R[SA] a R[SB] then R[DR] % 1
If R[SA] % 0, then PC p PC ! 1 ! se IM
If R[SA] 0, then PC p PC ! 1 ! se IM
PC p PC ! 1 ! se IM
PC p PC ! 1 ! se IM, R[DR] p PC ! 1

los 17 bits. En la Tabla 12-1, a la extensin de signo del campo inmediato se le denomina IM.
La misma notacin, se IM (se viene de sign extension), tambin representa la extensin de
signo del campo direccin relativa que se estudio anteriormente.
La ausencia de las versiones almacenadas de los bits de status se maneja con el uso de tres
instrucciones: Salto si es cero (BZ, Branch if Zero), Salto si no es cero (Branch if Nonzero,
BNZ) y Poner a uno si es menor que (Set if Less Than, SLT). BZ y BNZ son instrucciones simples que determinan si un operando de un registro es cero o no y se bifurca consecuentemente.
SLT almacena un valor en un registro R[DR] que acta como un bit de status negativo. o
Si R[SA] es menor que R[SB], se coloca un 1 en el registro R[DR]; si R[SA] es mayor que

516

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

o igual que R[SB], se coloca un cero en R[DR]. El registro R[DR] puede ser examinado mediante la consiguiente instruccin para comprobar si es cero (0) o no cero (1). De esta forma, utilizando dos instrucciones, se pueden determinar los valores relativos de los dos operandos o el
signo de un operando (dejando R[SB] igual a R0).
La instruccin Salto y Enlaza (Jump and Link, JML) proporciona un mecanismo para realizar procedimientos. El valor del PC despus de actualizarse se almacena en el registro R[DR] y
luego se coloca en el PC la suma del PC y la direccin relativa de la instruccin con extensin
de signo. Para el retorno de la llamada al procedimiento se puede usar la instruccin de Salto
segn Registro con SA igual a la DR del procedimiento de llamada. Si se llama a un procedimiento dentro de otro procedimiento, entonces cada procedimiento sucesivo que se llama necesitar su propio registro para almacenar su valor de retorno. Se puede utilizar una pila software
que mueve las direcciones de retorno de R[DR] a la memoria al comienzo del procedimiento
invocado y las repone en R[SA] antes del retorno.

Modos de direccionamiento
Los cuatro modos de direccionamiento en el RISC son registro, registro indirecto, inmediato y
relativo. El modo se especifica con el cdigo de operacin en lugar de hacerlo en campos separados de modo. Como consecuencia, el modo para una determinada operacin es fijo y no se
puede variar. Las instrucciones de manipulacin de datos con tres operandos utiliza el modo de
direccionamiento de registro. El modo de registro indirecto, sin embargo, se aplica slo a las
instrucciones de carga y almacenamiento, la nica instruccin que accede a la memoria de datos. Las instrucciones que usan el formato de dos registros tienen un valor inmediato que reemplaza al registro de direccin SB. El direccionamiento relativo se aplica exclusivamente a las
instrucciones de bifurcacin y de salto y as generar direcciones slo para la memoria de instrucciones.
Cuando los programadores quieren utilizar un modo de direccionamiento no soportado por
la arquitectura de conjunto de instrucciones, como el indexado, deben utilizar una secuencia de
instrucciones RISC. Por ejemplo, para una direccin indexada para una operacin de carga, la
transferencia deseada es:
R15 p M[R5 ! 0 88 I]
Esta transferencia se puede llevar a cabo ejecutando dos instrucciones:
AIU R9, R5, I
LD R15, R9
La primera instruccin, Suma Inmediata sin Signo, forma la direccin aadiendo 17 ceros a la
izquierda de I y suma el resultado a R5. La direccin efectiva resultante se almacena entonces
temporalmente en R9. Luego, la instruccin Carga utiliza el contenido de R9 como direccin a
la que se accede al operando y lo coloca en el registro de destino R5. Como por el direccionamiento indexado, I se toma como un offset positivo en la memoria, es adecuado usar la suma
sin signo. La primera justificacin para tener una suma inmediata sin signo disponible es la secuencia de operaciones para realizar los modos de direccionamiento.

Organizacin de la ruta de datos


La ruta de datos de la Figura 12-2 sirve aqu como base para la ruta de datos, y slo trataremos
las modificaciones. Estas modificaciones afectan al banco de registros, la unidad funcional y las

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

517

estructuras de los buses. El lector tambin debera remitirse a la ruta de datos de la Figura 12-2 y
a la nueva ruta de datos mostrada en la Figura 12-8 para comprender completamente la siguiente
discusin. Trataremos cada modificacin por orden, empezando con el banco de registros.

FIGURA 12-8
CPU RISC en pipeline

518

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

En la Figura 12-2 hay 16 registros de 16 bits y todos los registros tienen idntica funcionalidad. En la nueva ruta de datos hay 32 registros de 32 bits. Adems, la lectura del registro R0 da
un valor constante igual a cero. Si se intenta una escritura en R0 se perder el dato. Estos cambios se realizan en el nuevo banco de registro de la Figura 12-8. Todas las entradas y salidas de
datos son de 32 bits. Hay 5 entradas de direccin para seleccionar los 32 registros. El valor fijo
de 0 en R0 se realiza reemplazando los elementos de memoria de R0 con circuitos abiertos en
las lneas que fueron sus entradas, y poniendo ceros en las lneas que fueron sus salidas.
Otra modificacin importante en la ruta de datos es la sustitucin del desplazador combinacional (en ingls barrel shifter) de una sola posicin por un desplazador combinacional que permite desplazar varias posiciones. Este desplazador puede realizar el desplazamiento lgico a la
derecha o a la izquierda de 0 a 31 posiciones. En la Figura 12-9 aparece el diagrama de bloques
del desplazador combinacional. La entrada de datos es el operando A de 32 bits y la salida es
el resultado G de 32 bits. Una seal de control, left/right, decodificada del OPCODE, selecciona entre el desplazamiento a la izquierda o a la derecha. El campo cantidad a desplazar,
SH % IR(4:0) especifica el nmero de posiciones a desplazar el dato de entrada y toma valores
entre 0 y 31. Un desplazamiento de p bits implica la insercin de p ceros en el resultado. Para
proporcionar estos ceros y simplificar el diseo del desplazador, realizaremos estos desplazamientos a la derecha y a la izquierda utilizando rotaciones a la derecha. La entrada para esta
rotacin ser la entrada de datos A con 32 ceros concatenados a su izquierda. Se hace un desplazamiento a la derecha rotando la entrada p posiciones a la derecha; se realiza el desplazamiento
a la izquierda rotando 64 . p posiciones a la derecha. El nmero de posiciones se puede obtener haciendo el complemento a 2 al valor de los seis bits de 0 88 SH.
Las 63 rotaciones diferentes se pueden obtener utilizando tres niveles de multiplexores de 4
a 1, como se muestra en la Figura 12-9. El primer nivel desplaza 0, 16, 32 o 48 posiciones, el
segundo nivel desplaza 0, 4, 8 o 12 posiciones y el tercer nivel desplaza en 0, 1, 2 o 3 posiciones. El nmero de posiciones para desplazar A, de 0 a 63, se puede realizar representando
0 88 SH como un entero de tres dgitos en base 4. Desde la izquierda a la derecha, los dgitos
tienen los pesos 42 % 16, 41 % 4 y 40 % 1. Los valores de los dgitos en cada posicin son 0, 1,
2 y 3. Cada dgito controla un nivel de multiplexores de 4 a 1, el dgito ms significativo conLeft/right 0
S
2

SH
5

Complemento
a 2 selectivo
2

0 || A
64

2
47 multiplexores 4 a 1 (rota a la derecha 0, 16, 32 o 48 posiciones)
47
35 multiplexores (rota a la derecha 0, 4, 8 o 12 posiciones)
35
32 multiplexores 4 a 1 (rota a la derecha 0, 1, 2 o 3 posiciones)
32
G

FIGURA 12-9
Desplazador combinacional de 32 Bits

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

519

trola el primer nivel y el menos significativo el tercer nivel. Debido a la presencia de los
32 ceros en la entrada de 64 bits, se pueden usar menos de 64 multiplexores en cada nivel. Cada
nivel necesita que el nmero de multiplexores sea 32 ms el nmero de posiciones que sus salidas pueden ser desplazadas por los siguientes niveles. El ltimo nivel no se puede desplazar
ms y por tanto necesita solamente 32 multiplexores.
La unidad funcional, la ALU se amplia a 32 bits, y el desplazador combinacional sustituye
al desplazador de una posicin. La unidad funcional resultante de las modificaciones utiliza los
mismos cdigos de funcin que en el Captulo 10, excepto que los dos cdigos para los desplazamientos se etiquetan ahora como desplazamientos lgicos, y algunos cdigos no se utilizan.
La cantidad de bits a desplazar, SH, es una nueva entrada de cinco bits en la unidad funcional
modificada de la Figura 12-8.
Los restantes cambios de la ruta de datos se muestran en la Figura 12-8. Comenzando en la
parte superior de la ruta de datos, el llenado de ceros se ha reemplazado por una Unidad Constante. La Unidad Constante realiza el llenado de ceros cuando CS % 0 y extensin de signo
cuando CS % 1. MUX A se aade para proporcionar una ruta desde el PC actualizado, PC.1, al
banco de registros para realizar la instruccin JML.
Otro cambio en la figura ayuda a realizar la instruccin SLT. Esta lgica proporciona un 1
para que sea cargado en R[DA] si R[AA] . R[BA] a 0, y un 0 para ser cargado en R[DA] si
R[AA] . R[BA] n 0. Se hace aadiendo una entrada adicional a MUX D. El bit 31 de la entrada
es 0; el bit ms a la derecha es 1 si N es 1 y V es 0 (es decir, si el resultado de la resta es
negativo y no hay overflow). Es tambin 1 si N es 0 y V es 1 (es decir, si el resultado de la resta
en positivo y hay overflow). Estos resultados representan todos los casos en los que R[AA] es
mayor que R[BA] y se puede realizar utilizando una OR exclusiva de N y V.
La ltima diferencia en la ruta de datos es que el banco de registro no se dispara ms con el
flanco y no forma ya parte del registro del pipeline al final de la etapa de reescritura (WB). En
su lugar, el banco de registro utiliza latches y se escriben mucho antes de que llegue el flanco
de subida del reloj. Se proporcionan seales que permiten que el banco de registro se escriba en
la primera mitad del ciclo de reloj y se lea en la ltima parte. A ste se le denomina banco de
registro de lectura despus de escritura, y ambos evitan la complejidad aadida en la lgica
utilizada para manejar los conflictos de datos y reducir el coste del banco de registros.

Organizacin del control


La organizacin del control en el RISC de la Figura 12-4 est modificada. El decodificador de
instrucciones modificado es esencial para manejar el nuevo conjunto de instrucciones. En la Figura 12-8 se ha aadido como un campo IR, tambin se ha puesto un campo CS de un bit al
decodificador de instrucciones y MD se ha ampliado a dos bits. Hay, adems, un nuevo registro
en el pipeline para SH y otro de dos bits para MD.
El resto de las seales de control se han incluido para manejar la nueva lgica de control
para el PC. Esta lgica permite cargar las direcciones en el PC para realizar bifurcaciones y
saltos. MUX C selecciona entre tres fuentes diferentes para el siguiente valor del PC. El PC
actualizado se usa para moverse secuencialmente a travs del programa. La direccin de bifurcacin BrA se forma a partir de la suma del valor actualizado del PC para la instruccin de
bifurcacin y la extensin de signo de la direccin relativa. El valor de R[AA] se usa como registro de salto. La seleccin de estos valores se controla con el campo BS. Los efectos de BS se
resumen en la Tabla 12-2. Si BS0 % 0, entonces se selecciona el PC actualizado con BS1 % 0, y
se selecciona R[AA] con BS1 % 1. Si BS0 % 1 y BS1 % 1, se selecciona BrA incondicional-

520

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 12-2
Definicin de los campos de control BS y PS
Transferencia de registros
PC p PC ! 1
Z: PC p BrA, Z1 : PC p PC ! 1
Z1 : PC p BrA, Z: PC p PC ! 1
PC p R[AA]
PC p BrA

Cdigo BS
00
01
10
11

Cdigo PS Comentario
X
0
1
X
X

Incrementa PC
Bifurcacin si cero
Bifurcacin si es distinto de cero
Salto al contenido de R[AA]
Bifurcacin incondicional

mente. Si BS0 % 1 y BS1 % 0, entonces, para PS % 0 se realiza una bifurcacin a BrA para
Z % 1, y para PS % 1 se hace una bifurcacin a BrA para Z % 0. Esto efecta las dos instrucciones de bifurcacin BZ y BNZ.
Para tener el valor del PC actualizado para las instrucciones de bifurcacin y salto cuando
se ha alcanzado la etapa de ejecucin se han aadido los registros de pipeline, PC.1 y PC.2. El
PC.2 y el valor de la unidad constante son entradas para el sumador dedicado que forma BrA
en la etapa de ejecucin. Obsrvese que MUX C y la lgica conectada estn en la etapa EX,
aunque se muestra encima del PC. La diferencia en el ciclo de reloj relacionado provoca problemas con las instrucciones siguientes de bifurcacin que manejaremos en secciones posteriores.
El corazn de la unidad de control es un decodificador de instrucciones. Este es un circuito
combinacional que convierte el cdigo de operacin de IR en las seales de control necesarias
para la ruta de datos y la unidad de control. En la Tabla 12-3, cada instruccin se identifica por
su mnemnico. Para cada instruccin se da una sentencia de transferencia de registros y el opcode. Los opcodes se seleccionan de tal forma que los cuatro bits menos significativos de los
siete bits coinciden con los bits del campo de control FS cuando se utilizan. Esto conduce a
simplificar la decodificacin. Las direcciones del banco de registros AA, BA y DA vienen directamente de SA, SB y DR, respectivamente, del IR.
De otra forma, para determinar los cdigos de control, la CPU se parece mucho a una CPU
de un solo ciclo de reloj de la Figura 10-15. Los registros de pipeline se pueden ignorar en esta
decisin; sin embargo, es importante examinar cuidadosamente la temporizacin para asegurar
que las diversas partes de la sentencia de transferencia de registros de la operacin tenga lugar
en la etapa correcta del pipeline. Por ejemplo, dese cuenta de que el sumador para el PC est en
la etapa EX. Este sumador est conectado al MUX C y se conecta a la lgica de control y al
incrementador !1 del PC. De esta forma, toda esta lgica est en la etapa EX y la carga del
PC, que comienza en la etapa IF, se controla desde la etapa EX. Igualmente, la entrada R[AA]
est en el mismo bloque combinacional de la lgica y no procede de la salida Dato A del banco
de registros y si del Bus A de la etapa EX, segn se muestra.
La Tabla 12-3 puede servir como base para el diseo del decodificador de instrucciones.
Contiene los valores para todas las seales de control, excepto las del registro de direcciones de
IR. Al contrario que para el decodificador de la Seccin 10-8, la lgica es compleja y se debe
disear preferiblemente con un programa de computadora de sntesis lgica.

Conflictos de datos
En la Seccin 12-1 examinamos un diagrama de ejecucin en pipeline y encontramos que llenando y vaciando el pipeline se reduca el throughput por debajo de nivel mximo alcanzable.

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

521

TABLA 12-3
Palabras de control para las instrucciones
Valores de la palabra de control
Notacin
simblica
NOP
MOVA
ADD
SUB
AND
OR
XOR
NOT
ADI
SBI
ANI
ORI
XRI
AIU
SIU
MOVB
LSR
LSL
LD
ST
JMR
SLT
BZ
BNZ
JMP
JML

Accin

Op Code

RW MD BS PS MW

FS

None
R[DR] p [SA]
R[DR] p R[SA]!R[SB]
R[DR] p R[SA]!R[SB]!1
R[DR] p R[SA] p R[SB]
R[DR] p R[SA] o R[SB]
R[DR] p R[SA] S R[SB]
R[DR] p R[SA]
R[DR] p R[SA]!se IM
R[DR] p R[SA]!(se IM)!1
R[DR] p R[SA] p zf IM
R[DR] p R[SA] o zf IM
R[DR] p R[SA] S zf IM
R[DR] p R[SA]!zf IM
R[DR] p R[SA]!(zf IM) ! 1
R[DR] p R[SB]
R[DR] p lsr R[SA] SH
R[DR] p lsl R[SA] SH
R[DR] p M[R[SA]]
M[R[SA]] p R[SB]
PC p R[SA]
If R[SA] a R[SB] then R[DR] % 1
If R[SA] % 0, then PC p PC!1!se
IM
If R[SA] 0, then PC p PC!1!se
IM
PC p PC!1!se IM
PC p PC!1!se IM, R[DR] p PC!1

0000000
1000000
0000010
0000101
0001000
0001001
0001010
0001011
0100010
0100101
0101000
0101001
0101010
1000010
1000101
0001100
0001101
0001110
0010000
0100000
1110000
1100101

0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1

XX
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
01
XX
XX
10

00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
10
00

X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X

0 XXX X
0 0000 X
0 0010 0
0 0101 0
0 1000 0
0 1001 0
0 1010 0
0 1011 X
0 0010 1
0 0101 1
0 1000 1
0 1001 1
0 1010 1
0 0010 1
0 0101 1
0 1100 0
0 1101 X
0 1110 X
0 XXXX X
1 XXXX X
0 XXXX X
0 0101 0

X
0
0
0
0
0
0
0
0
0
0
0
0
0
0
X
0
0
0
0
0
0

X
X
X
X
X
X
X
X
1
1
0
0
0
0
0
X
X
X
X
X
X
X

1100000

XX 01

1010000
1101000
0110000

0
0
1

XX 01
XX 11
00 11

1
X
X

0 0000 1
0 XXXX 1
0 0000 1

0
X
1

1
1
1

0000

MB MA CS

Desafortunadamente hay otros problemas en la operacin del pipeline que reduce el throughput.
En sta y en la siguiente subseccin examinaremos dos de estos problemas: los conflictos de
datos y el control de conflictos. Los conflictos son problemas de temporizacin que surgen debido a que la ejecucin de una operacin en un pipeline se retrasa en uno o ms ciclos de reloj
despus de que se accedi a la instruccin que contena la operacin. Si la siguiente instruccin intenta utilizar el resultado de la operacin como un operando antes de que el resultado
est disponible, usa el valor antiguo, dando muy probablemente un resultado errneo. Para manejar los conflictos de datos presentamos dos soluciones, una que utiliza software y otra que usa
hardware.

522

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Se ilustran dos conflictos de datos examinando la ejecucin del siguiente programa:


1
2
3

MOVA
ADD
ADD

R1, R5
R2, R1, R6
R3, R1, R2

El diagrama de ejecucin de este programa aparece en la Figura 12-10(a). La instruccin


MOVA coloca el contenido de R5 en R1 en la primera mitad de WB en el ciclo 4. Pero, como
se muestra con la flecha gris, la primera instruccin ADD lee R1 en la ltima mitad de DOF en
el ciclo 3, un ciclo antes de que se escriba. De esta forma, la instruccin ADD utiliza el valor
antiguo que hay en R1. El resultado de esta operacin se coloca en R2 en la primera mitad de
WB en el ciclo 5. Sin embargo, la segunda instruccin ADD lee tanto R1 como R2 en la segunda mitad de DOF en el ciclo 4. En el caso de R1, el valor a leer se escribi en la primera mitad
de WB en el ciclo 4. As que la lectura del valor en la segunda mitad del ciclo 4 es el valor
nuevo. La reescritura de R2 sucede, sin embargo, en la primera mitad del ciclo 5, despus se lee
por la siguiente instruccin durante el ciclo 4. As que R2 no se ha actualizado con el nuevo
valor en el momento que se lee. Esto da lugar a dos conflictos de datos, como se indica con la
flecha grande azul de la figura. Los registros que no se han actualizado convenientemente con
los valores nuevos se resaltan en azul en el programa y en la transferencia de registros de la
figura. En cada uno de los casos, la lectura del registro involucrado ocurre un ciclo de reloj
antes de tiempo con respecto a la escritura de este registro.

MOVA R1, R5

R1

ADD R2, R1, R6

R2

R5

IF

DOF

EX

WB

IF

DOF

EX

WB

IF

DOF

EX

R1  R6
R3

ADD R3, R1, R2

Escribe R1
5
6
Escribe R2

R1  R2

WB

Primera lectura de R1
Segunda lectura de R1
Lectura de R2
(a) Problema de conflicto de datos

Escribe R1
MOVA R1, R5

R1

R5

IF

NOP
ADD R2, R1, R6

R2

DOF

EX

WB

IF

DOF

EX

WB

IF

DOF

EX

IF

DOF

EX

WB

IF

DOF

EX

R1  R6

NOP
ADD R3, R1, R2

R3

R1  R2

Primera lectura de R1
Segunda lectura de R1
Lectura de R2
(b) Solucin basada en programa

FIGURA 12-10
Ejemplo de conflicto de datos

Escribe R2
WB

WB

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

523

Un posible remedio para solventar los conflictos de datos es tener un compilador o programador que genere el cdigo de mquina para retrasar las instrucciones y as tener los valores
nuevos disponibles. El programa se escribe de forma que cualquier escritura pendiente de un
registro ocurre en el mismo ciclo de reloj o en uno anterior a la siguiente lectura del registro.
Para conseguir esto, el programador o compilador necesita tener una informacin detallada de
cmo opera el pipeline. La Figura 12-10(b) muestra una modificacin del programa de tres lneas que resuelve el problema. Se insertan instrucciones de no operacin (NOP) entre la primera y la segunda instruccin y entre la segunda y la tercera para retrasar sus respectivas lecturas, relacionadas con las escrituras, en un ciclo de reloj. El diagrama de ejecucin muestra que,
en el peor de los casos, este mtodo ha escrito y ha ledo apropiadamente en el mismo ciclo de
reloj. Esto se indica en el diagrama con las parejas que consisten en una escritura del registro y
su consiguiente lectura conectada por una flecha negra. Debido a que suponemos una lectura
despus de una escritura del banco de registros, la temporizacin mostrada permite que se ejecute el programa con los operandos correctos.
Este mtodo soluciona el problema pero a qu coste? Primero, el programa es, evidentemente, ms largo, aunque es posible hacer otro con instrucciones que no estn relacionadas en
las posiciones de las instrucciones NOP en lugar de desperdiciarlas. Adems, el programa necesita dos ciclos de reloj ms y reduce el throughput de 0.5 instrucciones por ciclo a 0.375 instrucciones por ciclo con las instrucciones NOP.
La Figura 12-11 muestra una solucin alternativa que pasa por aadir hardware. En lugar de
que el programador o el compilador introduzcan NOPs en el programa, el hardware es el que
inserta NOPs automticamente. Cuando se encuentra un operando en la etapa DOF que an no
se ha escrito, la ejecucin asociada a la escritura se retrasa parando el flujo del pipeline en IF y
en DOF durante un ciclo de reloj. Luego se reanuda el flujo terminando la instruccin cuando el
operando est disponible y se accede a una nueva instruccin, como es habitual. El retraso de un
ciclo de reloj es suficiente para permitir que se escriba el resultado antes de que se lea como un
operando.
Cuando las acciones asociadas a una instruccin, que fluye a travs del pipeline, se evitan
que sucedan en un determinado punto, se dice que el pipeline contiene una burbuja en los siguientes ciclos de reloj y etapas para esa instruccin. En la Figura 12-11, cuando el flujo de la
primera instruccin ADD se evita detrs de la etapa DOF, en los dos siguientes ciclos de reloj
Detectado conflicto de datos
en R2 pipeline parado
y se lanza una burbuja
R1 escribe y lee
MOVA R1, R5
(ADD R2, R1, R6)
ADD R2, R1, R6
(ADD R3, R1, R2)
ADD R3, R1, R2

R1

R5

R2

IF

DOF

EX

WB

IF

DOF

R1  R6
R2

R1  R6
R3

IF

R1  R2
R3

R2 Escribe y lee

DOF

EX

IF

DOF

R1  R2

IF

WB

DOF

Detectado conflicto de datos


en R2 pipeline parado
y se lanza una burbuja

FIGURA 12-11
Ejemplo de una parada por conflicto de datos

EX

WB

524

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

pasa una burbuja a travs de las etapas EX y WB, respectivamente. La retencin del flujo del
pipeline en las etapas IF y DOF retrasa durante un ciclo de reloj las microoperaciones que tienen lugar en estas etapas. En la figura se representa este retardo con dos flechas diagonales grises desde su posicin inicial, en la que se evitan la realizacin de la microoperacin, a la posicin en la que se realiza la microoperacin, un ciclo de reloj ms tarde. Cuando se retiene el
flujo en IF y DOF un ciclo de reloj extra, se dice que el pipeline est parado y si la causa de la
parada es un conflicto de datos, a esta parada se le denomina parada por conflicto de datos.
En la Figura 12-12 se muestra una realizacin hardware para el manejo de conflictos de datos en un RISC segmentado. El hardware modificado o aadido se resalta con reas sombreadas
en gris. Para esta disposicin en concreto de las etapas del pipeline, un conflicto de datos ocurrir en una lectura del banco de registros si hay un registro de destino en la etapa de ejecucin
que hay que sobrescribir en el siguiente ciclo de reloj y se ha de leer en la etapa DOF en curso
as como los dos operandos. As que tenemos que determinar si tal registro existe. Esto se hace
evaluando las Ecuaciones Booleanas:
4

HA % MADOF (DAEX % AADOF) RWEX ; (DAEX)i


i%0
4

HB % MBDOF (DAEX % BADOF) RWEX ; (DAEX)i


i%0

y
DHS % HA ! HB
Los siguientes eventos deben ocurrir para HA, que representa un conflicto para el dato A, igual
a 1:
1. MA en la etapa DOF debe ser 0, significando que el operando A procede del banco de
registros.
2. AA en la etapa DOF es igual a DA en la etapa EX, queriendo decir que hay un posible
registro a leer en la etapa DOF que se va a escribir en el siguiente ciclo de reloj.
3. RW en la etapa EX es 1, significando que el registro DA en la etapa EX se escribir
definitivamente en WB durante el siguiente ciclo de reloj.
4. La OR (G) de todos los bits de DA es 1, indicando que el registro que se escribir no es
R0 y, por tanto, es un registro que se debe escribir antes de que se lea. (R0 tiene siempre
el valor 0 independientemente de cualquier escritura en l).
Si todas estas condiciones se cumplen es que hay una escritura pendiente para un registro en el
siguiente ciclo de reloj, que es el mismo registro que est siendo ledo y utilizado en el Bus A.
As que existe un conflicto de datos para el operando A del banco de registros. HB representa la
misma combinacin de eventos para el dato B. Si los trminos HA o HB son iguales a 1, es que
existe un conflicto de datos y DHS es 1, indicando que hace falta una parada por conflicto de
datos.
La lgica que efecta las anteriores ecuaciones se muestra sombreada en la zona sombreada en el centro de la Figura 12-12. Los bloques marcados como Comp son comparadores
de igualdad que ponen su salida a 1 si y slo si las entradas de 5 bits son iguales. La puerta OR
a la que estn conectados los cinco bits de DA pone un 1 en su salida cuando DA es distinto de
00000 (R0).
DHS se invierte y la seal invertida se usa para iniciar una burbuja en el pipeline para la
instruccin que actualmente est en IR, as como parar el PC e IR para evitar que cambien. La
burbuja, que evita que las acciones ocurran segn la instruccin pasa a travs de las etapas EX

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

525

FIGURA 12-12
RISC en pipeline: parada por conflicto de datos

y WB, se genera utilizando puertas AND para forzar RW y MW a 0. Estos 0 evitan a la instruccin de la escritura en el banco de registros y en la memoria. Las puertas AND fuerzan tambin
BS a 0 haciendo que el PC se incremente en lugar de cargarse durante la etapa EX para salto a
registro o con una instruccin de bifurcacin afectados por un conflicto de datos. Finalmente,
para evitar parar el dato y que contine en los siguientes ciclos de reloj, las puertas AND fuerzan DA a 0 de forma que parece que se ha escrito en R0, dando una condicin que no produce parada. Los registros que permanecen sin cambiar en la parada son PC, PC.1, PC.2 e IR.
Estos registro se sustituyen por registros con seales de control de carga manejados por DHS.
Cuando DHS es 0, solicitando una parada, las seales de carga se ponen a 0 y los registros del
pipeline mantienen sus contenidos sin cambiar en el siguiente ciclo de reloj.

526

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Volviendo a la Figura 12-12, vemos que, en el ciclo 3, se detecta el conflicto de datos de


R1, de forma que DHS pasa a 0 antes del siguiente ciclo de reloj. RW, MW, BS y DA se ponen a
0 y, en el flanco de reloj, se lanza una burbuja a la etapa EX para la instruccin ADD. En el
mismo flanco de reloj, las etapas IF y DOF se paran y as, la informacin en stas se asocian
ahora al ciclo de reloj 4 en lugar de al 3. En el ciclo de reloj 4, puesto que DAEX es 0, no hay
parada, as que la ejecucin de la instruccin ADD parada prosigue. La misma secuencia de
eventos ocurre para la siguiente instruccin ADD. Ntese que el diagrama de ejecucin es idntico al de la Figura 12-10(b), excepto que las instrucciones NOP se han sustituido por instrucciones de parada, mostradas entre parntesis. De esta forma, aunque se evita la necesidad de
programar NOPs en el software, la solucin de parada por conflictos de datos tiene la misma
penalizacin en el throughput como el programa con NOPs.
Una segunda solucin hardware, anticipacin de datos, no tiene esta penalizacin. La anticipacin de datos se basa en las respuestas a las siguientes cuestiones: cundo se detecta un conflicto de datos? Est disponible el resultado en algn otro sitio del pipeline y se puede utilizar
inmediatamente en la operacin que tiene el conflicto de datos? La respuesta es casi. El resultado estar en el Bus D pero no est disponible hasta el siguiente ciclo de reloj. El resultado se
escribe en el registro de destino durante aquel ciclo de reloj. Sin embargo, la informacin necesaria para formar el resultado est disponible en las entradas del registro del pipeline que proporcionan las entradas al MUX D. Todo lo que se necesita para formar el resultado durante el
ciclo de reloj en curso es un multiplexor que seleccione de entre tres valores, justo como lo hace
MUX D. Se aade MUX D para generar el resultado en el Bus D. En la Figura 12-13, en lugar
de leer el operando del banco de registros utilizamos la anticipacin de datos para sustituir el
operando por el valor de Bus D. Esta sustitucin se lleva a cabo mediante una entrada adicional
a MUX A y a MUX B desde el Bus D, segn se muestra. Esencialmente, se utiliza la misma
lgica que antes para detectar el conflicto de datos, excepto que la deteccin con las seales HA
y HB se usan directamente para el dato A y el dato B, respectivamente, as que la sustitucin se
efecta para el operando que tiene el conflicto de datos.
El diagrama de ejecucin para la anticipacin de datos para el ejemplo de tres instrucciones aparece en la Figura 12-14. El conflicto de datos para R1 se detecta en el ciclo 3. Esto
provoca que el valor vaya a R1 en el siguiente ciclo, para anticiparlo de la etapa EX de la primera instruccin en el ciclo 3. El valor correcto de R1 entra en el registro del pipeline de DOF/
EX en el siguiente flanco de reloj, de forma que la ejecucin de la primera instruccin ADD
puede proceder normalmente. El conflicto de datos en R2 se detecta en el ciclo 4, y el valor
correcto se anticipa de la etapa EX de la segunda instruccin en este ciclo. Esto da el valor
correcto a los registro del pipeline DOF/EX necesario para que la segunda instruccin ADD
proceda normalmente. En comparacin con el mtodo de parada de datos en conflicto, la anticipacin de datos no incrementa el nmero de ciclos de reloj necesarios para ejecutar el programa
y, por tanto, no afecta al throughput en trminos del nmero de ciclos de reloj que son necesarios. Sin embargo, aade un retardo combinacional, provocando que el periodo de reloj sea algo
ms largo.
Los conflictos de datos pueden ocurrir tambin en los accesos a memoria, como con los
accesos a registros. No es probable que, para las instrucciones ST y LD, se pueda realizar una
lectura de un dato despus de una escritura en un solo ciclo de reloj. Adems, algunas lecturas
de la memoria pueden llevar ms que un ciclo de reloj, en comparacin con lo que hemos supuesto aqu. De esta forma se puede incrementar la reduccin del throughput en un conflicto de
datos, debido a un retardo ms largo antes de que el dato est disponible.

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

527

FIGURA 12-13
RISC en pipeline: anticipacin de datos.

Control de conflictos
El control de conflictos se asocia con las bifurcaciones en el control del flujo del programa. El
siguiente programa contiene una bifurcacin condicional que ilustra el control de conflictos:
1
2
3
4
20

BZ
MOVA
MOVA
MOVA
MOVA

R1,
R2,
R1,
R4,
R5,

18
R3
R2
R2
R6

528

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

MOVA R1, R5
ADD R2, R1, R6
ADD R3, R1, R2

R1

R5

R2

IF

DOF

EX

IF

DOF

EX

WB

IF

DOF

EX

R1  R6
R3

Conflicto de datos detectado


y el valor R2 anticipado
R1 escribe y lee
4
5
6
Escribe R2
WB

R1  R2

WB

Conflicto de datos detectado


y el valor R2 anticipado

FIGURA 12-14
Ejemplo de anticipacin de datos

En la Figura 12-15(a) se da el diagrama de ejecucin de este programa. Si R1 es cero, se produce


una bifurcacin a la instruccin de la posicin 20 (recuerde que el direccionamiento es relativo al
PC), saltando las instrucciones de las posiciones 2 y 3. Si R1 es distinto de cero, se ejecutan la
secuencia de instrucciones de la posicin 2 y 3. Supongamos que la bifurcacin se toma en la
posicin 20 debido a que R1 es igual a cero. El hecho es que R1 es igual a 0 no se detecta hasta la
etapa EX en el ciclo 3 de la primera instruccin de la Figura 12-15(a). As que el PC se actualiza
con el valor 20 en el flanco de reloj al final del ciclo 3. Pero la instruccin MOVA de las posiciones 2 y 3 estn en las etapas EX y DOF, respectivamente, despus del flanco de reloj. As que, si
no se toma una accin correctora, esta instruccin se terminar de ejecutar, incluso aunque la intencin de programador fuese saltarlas. Esta es una forma de un control de conflictos.
Las instrucciones NOP se pueden utilizar para manejar el control de conflictos como se utiliz en el conflicto de datos. La insercin de NOPs se hace por el programador o por el compilador generando el programa en cdigo mquina. El programa debe escribirse de forma que slo
las operaciones previstas, independientemente de si se realiza la bifurcacin o no, se introduzcan en el pipeline antes de que realmente ocurra la ejecucin de la bifurcacin. La Figura 1215(b) ilustra una modificacin del programa de tres lneas que satisface esta condicin. Se insertan dos NOPs despus de la instruccin BZ. Estos dos NOPs se pueden ejecutar independientemente de si se realiza la bifurcacin en la etapa EX de BZ en el ciclo 3 sin efectos adversos en
la correccin del programa. Cuando el control de conflictos de la CPU se maneja de esta manera por programacin, el conflicto de la bifurcacin se solventa con NOPs, se le llama bifurcacin retardada. En esta CPU se retrasa la ejecucin de la bifurcacin dos ciclos de reloj.
La solucin con NOPs de la Figura 12-15(b) incrementa el tiempo necesario para procesar
este sencillo programa en dos ciclos de reloj, independientemente de si se ejecuta la bifurcacin
o no. Sin embargo, aprecie que estos ciclos desperdiciados pueden evitarse a veces reorganizando el orden de las instrucciones. Suponga que se ejecutan estas instrucciones independientemente de si se lleva a cabo la bifurcacin en las dos posiciones que siguen a la instruccin de
bifurcacin. En esta situacin, la prdida en el throughput se recupera completamente.
Justamente como en el caso de conflictos de datos, se puede utilizar una parada para manejar el
control de conflictos. Pero tambin, como en el caso de conflictos de datos, la reduccin del
throughput ser el mismo que con la insercin de NOPs. A esta solucin se le denomina parada
de conflicto de bifurcacin y no se presentar aqu.
Una segunda solucin hardware es utilizar prediccin de salto. En su forma ms simple, este
mtodo predice qu bifurcaciones no se tomarn nunca. De esta forma, se accedern a las ins-

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

529

R1 = 0 evaluado

1 BZ R1, 18

IF

DOF

EX

IF

DOF

2 MOV R2, R3

PC cambiado a 20
5
6
7
Cambiado en R2
WB
Cambiado en R1
EX
WB
4

IF

3 MOV R1, R2

DOF

EX

WB

IF

DOF

EX

20 MOV R5, R6

WB

La instruccin MOV R5, R6


se accede de la direccin absoluta
(a) Problema de conflictos en la bifurcacin
R1 = 0 evaluado

1 BZ R1, 18

IF

DOF

EX

IF

DOF

2 NOP

IF

3 NOP

PC cambiado a 20
5
6
7
No cambia
WB
No cambia
EX
WB
4

20 MOV R5, R6

DOF

EX

WB

IF

DOF

EX

WB

La instruccin MOV R5, R6


se accede de la direccin absoluta
(b) Solucin basada en programa

FIGURA 12-15
Ejemplo de control de conflictos

trucciones y decodificarn, y se accedern a los operandos en base a la suma de 1 al valor del


PC. Estas acciones ocurren hasta que se conoce si la bifurcacin en cuestin se tomar durante
el ciclo de ejecucin. Si la ejecucin no se efecta, las instrucciones que ya estn en el pipeline
se pueden ejecutar debido a la prediccin. Si la bifurcacin se efecta, han de cancelarse las
instrucciones que siguen a la instruccin de bifurcacin. Habitualmente se hace la cancelacin
insertando burbujas en las etapas de ejecucin y reescritura de estas instrucciones. Esto se ilustra en el programa de 4 lneas de la Figura 12-16. En base a la prediccin de que la bifurcacin
R1 = 0 evaluado

1 BZ R1, 18
2 MOVA R2 R3
3 MOVA R1 R2
20 MOVA R5 R6

IF

DOF

EX

IF

DOF
IF

PC cambiado a 20
5
6
7
No cambia
WB
No cambia
EX
WB
4

DOF
IF

WB
DOF

EX

WB

Bifurcacin detectada
y burbujas lanzadas
La instruccin MOV R5, R6
se accede de la direccin absoluta

FIGURA 12-16
Ejemplo de prediccin de bifurcaciin cuando sta se efecta

530

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

no se realizar, se accede a las dos instrucciones MOVA despus de BZ, la primera se decodifica y se accede a sus operando. Estas acciones tienen lugar en los ciclos 2 y 3. En el ciclo 3, la
condicin sobre la que se basa la bifurcacin ha sido evaluada y se encuentra que R1 % 0. De
esta forma, se realiza la bifurcacin. Al final del ciclo 3, el PC se cambia a 20 y el acceso a la
instruccin en el ciclo 4 se ejecuta usando el valor nuevo del PC. En el ciclo 3, el hecho de que
se proceda con la bifurcacin se ha detectado y se insertan burbujas en el pipeline en las instrucciones 2 y 3. Siguiendo a travs del pipeline, estas burbujas tienen el mismo efecto que las dos
instrucciones NOP. Sin embargo, como las instrucciones no estn presentes en el programa, no
hay retardo o penalizacin en el rendimiento cuando no se realiza la bifurcacin.
En la Figura 12-17 se muestra el hardware de prediccin de bifurcacin. Se determina si se
efecta una bifurcacin mirando en los valores de seleccin a las entradas de MUX C. Si las dos
entradas tienen el valor 01, entonces se hace la bifurcacin condicional. Si las entradas valen
10, se efecta un JMR incondicional. Si valen 11, entonces tiene lugar un JMP incondicional o
JML. Por otra parte, si las entradas valen 00 significa que no se va a realizar la bifurcacin. Es
decir, se realiza una bifurcacin para todas las combinaciones de las entradas distintas de 00
(hay al menos un 1). Lgicamente, esto se corresponde a la OR de las entradas, como se muestra en la figura. La salida de la OR se invierte y luego se hace el producto lgico, AND, con los
campos RW y MW, de forma que las instrucciones siguientes a la instruccin de salto no puedan
escribir en el banco de registros ni en la memoria si se toma la bifurcacin. La salida invertida y
el campo BS van a una puerta AND, de manera que no se ejecuta una bifurcacin en la siguiente instruccin. Para cancelar la segunda instruccin que sigue a la bifurcacin, la salida invertida de la OR va a otras puertas AND junto con las salidas de IR. Esto da lugar a una instruccin
con todos sus bits a 0, para la que se ha definido un OPCODE correspondiente a la instruccin
NOP. Sin embargo, si no se toma la bifurcacin, la salida invertida de la OR es 1 y el IR y los
tres campos de control permanecen sin cambiar, dando lugar a una ejecucin normal de las dos
instrucciones que siguen a la bifurcacin.
La prediccin de bifurcacin tambin se puede hacer bajo la suposicin de que se efecta la
bifurcacin. En este caso, se debe acceder a las instrucciones y a los operandos a la ruta de la
bifurcacin que se est tratando. De esta forma, se debe calcular la direccin de bifurcacin
absoluta y usarse para acceder a la instruccin de la posicin absoluta de la bifurcacin. Sin
embargo, en el caso de que la bifurcacin no tuviese lugar, debe salvarse el valor actualizado
del PC. Como consecuencia, esta solucin necesita un hardware adicional para calcular y almacenar la direccin de bifurcacin final. No obstante, si es ms probable que la bifurcacin
se efecte que no, la prediccin de bifurcacin realizada puede proporcionar una funcin de
coste-rendimiento ms favorable que la prediccin de bifurcacin no realizada.
Por simplicidad de la presentacin, hemos tratado las soluciones hardware para el manejo de
conflictos al mismo tiempo. En una CPU real, estas soluciones necesitan estar combinadas.
Adems, puede ser necesario controlar otros conflictos, como los asociados a las escrituras y
lecturas de posiciones de memoria.

12-4 PROCESADORES DE CONJUNTO DE INSTRUCCIONES


COMPLEJO
Las arquitecturas de conjunto de instrucciones CISC se caracterizan mediante instrucciones
complejas que son, en el peor de los casos, imposibles, y en el mejor, difciles de realizar utilizando un procesador de un solo ciclo o a travs de un pipeline de un solo paso. Una ISA CISC
emplea con frecuencia un nmero determinado de modos de direccionamiento. Adems, la ISA

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

531

FIGURA 12-17
RISC en pipeline: prediccin de bifurcacin

utiliza habitualmente instrucciones de longitud variable. El soporte para hacer una decisin va
bifurcacin condicional es ms sofisticado que el simple concepto de bifurcar sobre el contenido de cero de un registro y poner un bit de un registro a 1 basndose en la comparacin de dos
registros. En esta seccin, se desarrolla una arquitectura bsica para un CISC, con el alto rendi-

532

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

miento de un RISC para instrucciones simples, y con la mayor parte de las caractersticas de
una ISA CISC como la descrita.
Supongamos que tenemos que realizar una arquitectura CISC, pero que estamos interesados
en acercarnos a un throughput de una instruccin por ciclo de reloj pequeo de un RISC para
instrucciones simples y usadas frecuentemente. Para cumplir este objetivo, usamos una ruta de
datos segmentada y una combinacin de un control en pipeline y microprogramado, como se
muestra en la Figura 12-18. Se accede a una instruccin que va al IR y entra en la etapa de
decodificacin y acceso del operando. Si es una instruccin simple que se ejecuta completamente en solo paso a travs de un RISC normal en pipeline, se decodifica y se accede a los
operandos como es habitual. Por otro lado, si la instruccin necesita varias microoperaciones o
varios accesos a la memoria secuencialmente, la etapa de decodificacin genera una direccin
de microcdigo, para la ROM con el microcdigo, y sustituye a las salidas habituales del decodificador con los valores de control de la ROM del microcdigo. La ejecucin de las microinstrucciones de la ROM, seleccionadas por el contador del microprograma, continua hasta que se
completa la ejecucin de la instruccin.
Recuerde que para ejecutar una secuencia de microinstrucciones se necesita normalmente
tener registros temporales en los que almacenar informacin. Una organizacin de este tipo tendr, frecuentemente, registros temporales con el mecanismo necesario para cambiar entre los
registros temporales y los recursos de almacenamiento (registros) accesible por el programador.
La anterior organizacin soporta una arquitectura que combina las propiedades del CISC y del
RISC. Se muestra que los pipelines y los microprogramas pueden ser compatibles y no necesitan ser vistos como mutuamente excluyentes. El uso ms frecuente de dicha arquitectura combinada permite que el software diseado existente para un CISC tome las ventajas de una arquitectura RISC mientras que se preserva la ISA existente. La arquitectura CISC-RISC es una
combinacin de conceptos procedentes del procesador multiciclo del Captulo 10, de la CPU
RISC de la anterior seccin, y de los conceptos de microprogramacin, introducidos brevemente
en el Captulo 10. Esta combinacin de conceptos tiene sentido, ya que la CPU CISC ejecuta las
instrucciones utilizando varios pasos a travs de la ruta de datos segmentada del RISC. Para
secuenciar la ejecucin de las instrucciones en varios pasos, se necesita un control secuencial de
considerable complejidad, de forma que se elige el control microprogramado.
El desarrollo de la arquitectura comienza con algunas modificaciones menores de la ISA
RISC para obtener las capacidades deseables en la ISA CISC. A continuacin, se modifica la
ruta de datos para soportar los cambios de la ISA. Esto incluye modificaciones en la Unidad de

Contador
de microprograma

Acceso a la instruccin
Decodificador
y acceso al operando

ROM de control

Ejecuta

Reescribe

FIGURA 12-18
Organizacin combinada CISC-RISC

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

533

Constantes, aadir un registro de Cdigos de Condiciones, CC, y la eliminacin del hardware


que soporta la instruccin SLT. Adems, se modifica la lgica de direccionamiento de los 16
registros temporales para el uso de los diversos pasos de la ruta de datos con los 16 registros
restantes de los recursos de almacenamiento. Esto es en comparacin con los 32 registros de los
recursos de almacenamiento del RISC. El siguiente paso es adaptar el control del RISC para
trabajar con el control microprogramado para realizar las instrucciones que necesitan varios pasos. Para terminar, se disea el propio control microprogramado y su operacin se ilustra mediante la realizacin de tres instrucciones que caracterizan a la ISA CISC.

Modificaciones de la ISA
La primera modificacin de la ISA RISC es aadir un nuevo formato para las instrucciones de
bifurcacin. En trminos de las instrucciones proporcionadas en el CISC, es deseable tener la
capacidad de comparar los contenidos de los dos registros fuente y de bifurcacin, indicando la
relacin entre el contenido de los dos registros. Para realizar dicha comparacin, es necesario un
formato con dos campos de registros fuente, SA y SB y direccin relativa. Refirindonos a la
Figura 12-7, el aadir el campo SB al formato de la bifurcacin reduce la longitud de la longitud de la direccin relativa de 15 a 10 bits. El formato resultante de bifurcacin 2, aadido para
las instrucciones CISC, se muestra en la Figura 12-19.
La segunda modificacin es la particin del banco de registro para proporcionar un direccionamiento de los 16 registros temporales para el uso en varios pasos de la ruta de datos. Con la
particin quedan solamente 16 registros en los recursos de almacenamiento. En lugar de modificar todos los campos de direccin de registro en los formatos de las instrucciones, simplemente
ignoraremos el bit ms significativo de estos campos. Por ejemplo, slo se usarn los cuatro bits
ms a la derecha del campo DR. Se ignorar DR4.
La tercera modificacin de la ISA RISC es aadir los cdigos de condicin (tambin llamados flags) como se estudi en el Captulo 11. Los cdigos de condicin proporcionados se

FIGURA 12-19
Formato de las instrucciones de la CPU CISC

534

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

disean especficamente para utilizarlos en combinacin con la bifurcacin sobre la condicin


de cero o distinto de cero para realizar estas instrucciones y que proporcionarn un amplio espectro de decisiones, como mayor que, menor que, menor o igual que, etc. Los cdigos son cero
(Z), negativo (N), acarreo (C), overflow (V) y L (menor que). Los cuatro primeros son versiones
almacenadas de las salidas de status de la unidad funcional. El bit menor que (L) es la OR exclusiva de Z y V, til para realizar algunas decisiones. La inclusin del bit L en los cdigos de
condicin elimina la necesidad de tener la instruccin SLT.
Para hacer un uso ms efectivo de estos cdigos de condicin, es til controlar si se han
modificado o no en la ejecucin de una microoperacin concreta de una instruccin. El examen
de los cdigos de las instrucciones RISC de la Tabla 12-1 muestra que el bit 4 (el tercero a
partir de la izquierda) del cdigo de operacin es 0 para las operaciones que hay bajo la instruccin LSL. Este bit se puede utilizar en estas instrucciones para controlar si los cdigos de condicin se han visto afectados por la instruccin. Si el bit es 1, el valor de los cdigos de condicin
ha sido afectado por la ejecucin de la instruccin. Si es 0, entonces los cdigos de condicin no
han sido afectados. Esto permite un uso flexible de los cdigos de condicin en la toma de decisiones tanto a nivel de ISA como a nivel de microcdigo.

Modificaciones en la ruta de datos


Se necesitan hacer varios cambios en la ruta de datos para soportar las modificaciones de la
ISA. Estos cambios se cubrirn comenzando por los componentes de la etapa DOF de la Figura 12-20.
Primero, se hacen modificaciones en la Unidad de Constantes para manejar el cambio en la
longitud de la direccin relativa. La lgica aadida a la Unidad de Constantes obtiene una constante, IMS % IR9:0, de la constante IM. La extensin de signo se aplica a IMS para obtener una
palabra de 32 bits. Tambin, para utilizar comparaciones con los valores de los cdigos de condicin, se proporciona una constante CA del registro de microinstrucciones, MIR, del control
microprogramado. Esta constante tiene todos sus bits a cero para formar una palabra de 32 bits.
El campo de control CS de la Unidad de Constantes se amplia a dos bits para realizar la seleccin entre 4 constantes.
Segundo, se aade la lgica del registro de direcciones del procesador multiciclo del Captulo 10 a las entradas de direcciones del banco de registros. El propsito de este cambio es soportar la modificacin de la ISA que proporciona 16 registros temporales y 16 registros que son
parte de los recursos de almacenamiento. Un modo adicional soporta el uso de DX como direccin fuente para con BX como la direccin de destino del banco de registros. Esto es necesario
para capturar el contenido de R[DR] para utilizarlo en los clculos del modo de direccin de
destino.
Tercero, se hacen varios cambios para permitir la modificacin de aadir los cdigos de
condicin. En la etapa DOF se aade un puerto adicional en el MUX A para proporcionar acceso
a CC, los cdigos de condicin almacenados, para almacenar en los registros temporales o comparar con valores constantes. En la etapa EX, se implementa el bit del cdigo de condicin L (menor
que) y se aade el registro de cdigos de condicin, CC, al registro del pipeline. La nueva seal
de control LC determina si se ha cargado CC para la ejecucin de una microoperacin especfica que utiliza una operacin de la unidad funcional. En la etapa WB, se reemplaza la lgica que
soporta la instruccin SLT por un relleno de ceros del valor de CC, que se pasa al nuevo puerto
del MUX A. Como la nueva estructura de los cdigos de condicin proporciona el soporte para
la misma decisin que haca SLT y para ms, ya no se necesita el soporte para SLT.

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

535

FIGURA 12-20
CPU CISC en pipeline

Modificaciones de la unidad de control


El aadir un control microprogramado a la unidad de control para soportar la realizacin de
instrucciones que utilizan varios pasos a travs del pipeline provoca cambios significativos del
control existente, como se muestra en la Figura 12-20. El control microprogramado es una parte
del hardware de decodificacin de la instrucciones de la etapa DOF pero tambin interacta con
otras partes del control. Por conveniencia se describirn por separado.
Un vistazo rpido de la ejecucin de una instruccin en varios pasos proporciona una perspectiva de los cambios de la unidad de control. El PC apunta a la instruccin de la memoria de
instrucciones. El acceso de la instruccin se realiza en la etapa IF, y en el siguiente flanco
de reloj se carga en IR y se actualiza el PC. La instruccin se identifica como una instruccin de
varios pasos a partir de su opcode. La decodificacin del opcode cambia la seal MI a 1 para
indicar que esta instruccin es para usar el control microprogramado. El decodificador tambin
genera una direccin de comienzo de 8 bits, SA, que identifica el comienzo del microprograma
en la ROM de microcdigo. Como son necesarios varios pasos a travs del pipeline para reali-

536

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

zar la instruccin, se debe prevenir la carga de las siguientes instrucciones en IR y la posterior


actualizacin del PC. La seal MS, que genera la lgica del control microprogramado, se pone
a 1 y detiene el PC y el IR. Esto evita que se incremente el PC, pero permite que PC ! 1 contine por el pipeline hasta PC.1 y PC.2 para utilizarlo en una bifurcacin. Esta parada permanece hasta que la instruccin con varios pasos se haya ejecutado o hasta que haya una accin de
bifurcacin o de salto sobre el PC. Adems, cuando MI % 1, la mayora de los campos de la
instruccin decodificada se reemplazan con los campos de la instruccin en curso, que es una
NOP decodificada. Esta sustitucin de 31 bits del campo, realizada por MUX I, evita que la
misma instruccin provoque cualquier accin directa. Algunos cambios se han hecho en la palabra de control para controlar los recursos de la ruta de datos modificada. Los campos CS y MA
se han ampliado a dos bits cada uno, y se ha aadido el campo LC. En este punto, el control
microprogramado est controlando ahora el pipeline y proporciona una serie de microinstrucciones (palabras de control) para llevar a cabo la ejecucin de la instruccin. El formato de la palabra de control es como el del procesador multiciclo e incluye campos como SH, AX, BX y DX.
Se modifica DX para que cuadre con los cambios del registro de direcciones descrito para la
ruta de datos. Adems, el control microprogramado tiene que interactuar con la ruta de datos
para realizar las decisiones. Esta interaccin incluye la aplicacin de una constante, CA, usa los
cdigos de condicin, CC, y utiliza la seal de deteccin de cero Z.
Para soportar las operaciones que acabamos de presentar, los cambios hechos a la unidad de
control son los siguientes:
1.
2.
3.
4.
5.

aadir la seal de parada MS al PC, PC.1 e IR,


cambiar el decodificador de instrucciones para generar MI y SA,
ampliar los campos CS y MA a dos bits,
aadir MUX I, y
aadir los campos de control AX, BX, DX y LC.

Las definiciones de los campos nuevos y modificados se dan en la Tabla 12-4.


TABLA 12-4
Campos modificados o aadidos a la Palabra de Control (Microinstruccin) para el CISC
Campos de control
MZ
2b

CA
8h

BS P
2b SS

Ver
Tabla
12-3

Siguiente
direccin
o constante

Ver
Tabla
12-2

Campos de registro
Accin

0X
10

1F

DX
Fuente R[DR]
y destino R[SB]
Destino R[DR]
con X 0
R16

R31

MA

Cdigo
Cdigo
Accin
5h
2b

AX, BX
R[SA], R[SB]
R16

R31

CS

00
0X
10

1F

zf IM
se IM
se IMS
zf CA

00
01
10
11

LC

Accin

Cdigo
2b

Dato A
PC.1
0 88 CC

00
01
10

Accin

Cdigo

Retiene CC
Carga CC

0
1

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

537

Esto completa los cambios de la unidad de control, excepto el control microprogramado


aadido que se presenta en la siguiente seccin.

Control microprogramado
En la Figura 12-21 aparece un diagrama de bloques del control microprogramado para las instrucciones. El control se centra en la memoria ROM con el microcdigo, que tiene direcciones
de 8 bits y almacena hasta 256 microinstrucciones de 41 bits. El contador de microprograma,
MC, almacena la direccin correspondiente a la instruccin en curso almacenada en el registro
de microinstrucciones, MIR. Las direcciones de la memoria ROM las proporciona el MUX E,
que selecciona a partir del MC incrementado la direccin de salto obtenida de la microinstruccin, CA, el valor anterior de la direccin de salto, CA.1, y la direccin de comienzo a partir
del decodificador de instrucciones de la unidad de control, SA. La Tabla 12.5 define los 2 bits
de entrada de seleccin, ME, para el multiplexor MUX E y el bit de parada, MS, en trminos
del nuevo campo de control MZ ms otras variables. Esta funcin se lleva a cabo mediante la
lgica de control de las microdirecciones. Para cambiar el contexto del estudio, en la posicin 0
de la memoria ROM, el estado IDLE 0 del control microprogramado contiene una instruccin
que es una NOP con todos sus bits a 0. Esta microinstruccin tiene MZ % 0 y CA % 0. De la
Tabla 12-5, con MI % 0, la direccin del microprograma es CA % 0, que provoca que el control

FIGURA 12-21
CPU CISC en pipeline: control microprogramado

538

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 12-5
Direcciones de control entradas salidas
Inputs

Outputs

MZ.1

MZ

MI

PS

ME1

ME0

MS

11
11
11
11
0X
X0
XX
XX
XX
XX
XX

01
01
01
01
01
01
00
00
10
10
11

X
X
X
X
X
X
0
1
X
X
X

0
0
1
1
X
X
X
X
0
1
X

0
1
0
1
X
X
X
X
X
X
X

0
0
0
0
0
0
1
0
1
1
0

0
1
1
0
0
0
0
1
0
0
0

1
1
1
0
1
1
0
1
0
1
1

Transferencia de registro debido a ME


PS Z: MC p MC ! 1
PS Z: MC p CA.1
PS Z: MC p CA.1
PS Z: MC p MC ! 1
MC p MC ! 1
MC p MC ! 1
MC p CA
MC p SA
PS: MC p CA
PS: MC p CA
MC p MC ! 1

permanezca en este estado hasta que MI % 1. Con MI % 1, la direccin de comienzo, SA, se


aplica para acceder a la primera microinstruccin del microprograma de la instruccin compleja
que est retenida en IR. En la unidad de control, MI % 1 tambin cambia MUX I de la palabra
de control procedente del decodificador a la porcin de 31 bits de MIR, que es una instruccin
NOP. Adems, la salida MS del control de microdirecciones pasa a valer 1, parando PC, PC.1
y el IR del control principal. En el siguiente flanco de reloj se accede a la microinstruccin a
partir de que la direccin de comienzo SA entra en el MIR, y ahora el pipeline se controla con
el microprograma.
En la Figura 12-21 se necesitan dos registros en el pipeline como parte del control microprogramado. Los valores almacenados en el pipeline, MZ.1 y CA.1, hacen falta para la ejecucin
de una microbifurcacin condicional ya que la comprobacin del valor de Z se efecta durante
el ciclo de ejecucin de la instruccin de microbifurcacin, un ciclo de reloj despus de entrar
en el MIR.
Durante la ejecucin del microprograma, la microdireccin se controla mediante MZ,
MZ.1, MI, PS y Z. MZ.1 % 11, MZ % 01 ya que la microinstruccin que sigue a la microbifurcacin condicional debe ser una NOP. Bajo estas condiciones, los valores de ME se controlan mediante PS y Z con MS % 1. Cuando PS y Z tienen valores opuestos, se efecta una bifurcacin condicional a la microdireccin de CA.1. De lo contrario, para MZ.1 % 11 y MZ % 01,
la siguiente microdireccin pasa a ser el valor incrementado de MC.
Para MZ.1 11, MZ, MI y PS controlan las microdirecciones. Para MZ % 00, los valores
de ME y MS se controlan con MI. Para MI % 0, la siguiente microdireccin es CA y MS % 0,
que se corresponden con el estado de espera (IDLE) del control microprogramado. Para MI % 1,
la siguiente microdireccin es SA y MS % 1, que selecciona la siguiente microinstruccin de la
memoria ROM del microcdigo y que detiene los dos primeros registros del pipeline. Para
MZ % 01, la siguiente microdireccin es el valor incrementado de MC, que adelanta la ejecu-

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

539

cin de la siguiente microinstruccin de la secuencia. Para MZ % 10, se realiza un salto incondicional en el control del microcdigo y el valor de MS se controla con PS. PS % 1 hace que
MS % 1, continuando la ejecucin del microprograma. PS % 0 fuerza MS % 0, eliminando la parada y devolviendo el control al pipeline. Esto provoca que MI sea 0 (si la nueva instruccin no
es tampoco una compleja). Si CA % 0, el control microprogramado se queda en el estado IDLE
hasta que MI % 1. Para que esto suceda, la instruccin final del microprograma debe tener
MZ % 10, PS % 0 y CA % 0.

Microprograma para instrucciones complejas


Tres ejemplos ilustran la realizacin de instrucciones complejas utilizando las posibilidades que
el CISC proporciona utilizando el diseo que se complet anteriormente. En la Tabla 12-6 se
dan los microprogramas resultantes.

EJEMPLO 12-1 Instruccin LD con direccionamiento indirecto indexado (LII)


La instruccin LII suma la direccin relativa al contenido de un registro que se utiliza como
registro ndice. En el paso de indireccin, la direccin indexada que se forma se utiliza despus
para acceder a la direccin efectiva de la memoria. Finalmente, la direccin efectiva se utiliza
para acceder al operando de la memoria. El opcode de esta instruccin es 0110001, y la instruccin usa el formato inmediato con el campo de registro SA y una direccin relativa de 15 bits.
Cuando se accede a la instruccin LII y aparece en IR, el decodificador de instrucciones pone
MI a 1 y proporciona la direccin del microcdigo, que se representa simblicamente en la Tabla 12-6 como LII0. La primera microinstruccin a ejecutar es la que aparece en la direccin
IDLE. Esta microoperacin ejecuta una instruccin NOP en la ruta de datos y la memoria, pero
ante la presencia de MI % 1, la direccin de control selecciona SA como la siguiente direccin
de la microinstruccin, dejando, por tanto, el estado IDLE. La microinstruccin forma la direccin indexada e incrementa la direccin de MC para acceder a la siguiente microinstruccin
LII1. Esto provoca que a la microinstruccin NOP de la direccin LII1 se acceda para su ejecucin en el pipeline. Esta NOP se ha insertado puesto que el resultado de la microinstruccin
LII0 no est colocada en R16 hasta la etapa WB. La siguiente instruccin en LII2 accede a la
direccin efectiva de la memoria. A continuacin se necesita una instruccin NOP debido al
retardo en el ciclo de reloj para escribir la direccin efectiva a R17. La microinstruccin en LII4
aplica la direccin efectiva a la memoria para obtener el operando y colocar en el registro destino R[DR]. Ya que esto termina la realizacin de LII, el control microprogramado de MC regresa a IDLE y se accede a la siguiente instruccin a LII de la memoria de instrucciones utilizando
la direccin en el PC.

En la Tabla 12-6, se describe esta secuencia de microinstrucciones en la columna Accin


mediante sentencias de transferencia de registro, y se proporcionan los nombres simblicos para
las direcciones de las microinstrucciones en la memoria ROM con el microcdigo. El resto de
columnas de la tabla proporcionan la codificacin de los campos de la microinstruccin. Estos
cdigos se han seleccionado de las Tablas 10-12, 12-2, 12-3 y 12-5 para realizar las transferencias de registro. Hay que destacar la ocurrencia en la instruccin LII4 de MC % 0, PS % 0 y
CA % IDLE (00) que hace que el control del microprograma regrese al estado IDLE y el control
del programa vuelve al control del pipeline.

540

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

TABLA 12-6
Ejemplo de microprogramas para la arquitectura CISC
Microinstrucciones
Accin

Direccin MZ

CA

R
M
W DX D BS

P
S

M
W FS

L
M
C MA B AX BX CS

0
0

0
0

0
0

0
0

00
00

0
0

00
00

00 00
00 00

0
0
0
0
0

0
0
0
0
0

2
0
0
0
0

0
0
0
0
0

00
00
00
00
00

1
0
0
0
0

00
00
10
00
11

00
00
00
00
00

00
00
00
00
00

00
00
00
00

00
00
11
00

Microinstrucciones compartidas
MI: MC p SA, MI: MC p 00
MC p MC ! 1 (NOP)

IDLE
Arbitrario

00
01

00
XX

0
0

00
00

0
0

00
00

Carga Indirecta Indexada (LII)


R16 p R[SA] ! zf IML
MC p MC ! 1 (NOP)
R17 p M[R16]
MC p MC ! 1 (NOP)
R[DR] p M[R17]

LII0
LII1
LII2
LII3
LII4

01
01
01
01
10

00
00
00
00
IDLE

1
0
1
0
1

10
00
11
00
01

0
0
1
0
1

00
00
00
00
00

Comparacin menor o igual que (BLE)


R[SA] . R[SB],
CC p L 88 Z88 N 88 C 88 V
MC p MC ! 1 (NOP)
R31 p CC p 11 000
MC p MC ! 1 (NOP)
if (R31 0) MC p BLE7
else MC p MC ! 1
MC p MC ! 1 (NOP)
MC p IDLE
PC p (PC.1) ! se IML,
MC p IDLE

BLE0
BLE1
BLE2
BLE3

01
01
01
01

BLE4
BLE5
BLE6
BLE7

00
00
18
00

0
0
1
0

01
00
1F
00

0
0
0
0

00
00
00
00

0
0
0
0

0
0
0
0

5
0
8
0

1
0
0
0

00
00
10
00

0
0
1
0

00
00
00
00

11 BLE7
01
00
00 IDLE

0
0
0

00
00
00

0
0
0

00
00
00

1
0
0

0
0
0

0
0
0

0
0
0

00
00
00

0
0
0

1F 00 00
00 00 00
00 00 00

10

00

11

01

00

00 10

0
0
0
0
0
0
0
0
1
0
0
0

C
0
5
C
2
2
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
1
0
0

00
00
00
00
00
00
00
00
00
00
00
00

0
0
1
0
0
0
0
0
0
0
0
0

00
00
00
00
00
11
12
00
13
10
00
00

00
00
00
11
10
10
00
00
14
00
00
00

IDLE

Mover Bloque de Memoria (MMB)


R16 p R[SB]
MC p MC ! 1 (NOP)
R16 p R16 . 1
R17 p R[DR]
R18 p R[SA] ! R16
R19 p R17 ! R16
R20 p M[R18]
MC p MC ! 1 (NOP)
M[R19] p R20
if (R16 0) MC p MMB2
MC p MC ! 1 (NOP)
MC p IDLE

MMB0
MMB1
MMB2
MMB3
MMB4
MMB5
MMB6
MMB7
MMB8
MMB9
MMB10
MMB11

01
00
1
01
00
0
01
01
1
01
00
1
01
00
1
01
00
1
01
00
1
01
00
0
01
00
0
11 MMB2 0
01
00
0
10 IDLE 0

10
00
10
00
12
13
14
00
00
00
00
00

0
0
0
0
0
0
1
0
0
0
0
0

00
00
00
00
00
00
00
00
00
00
00
00

0
0
0
0
0
0
0
0
0
1
0
0

00
00
11
00
00
00
00
00
00
00
00
00

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

541

EJEMPLO 12-2 Bifurcacin sobre menor o igual que (BLE)


La instruccin BLE compara el contenido de los registros R[SA] y R[SB]. Si R[SA] es menor o
igual que R[SB], entonces el PC se bifurca a PC ! 1 ms la direccin relativa corta con extensin de signo (IMS). En otro caso se utiliza el PC incrementado. El opcode de la instruccin es
1100101.
Las transferencias de registro para la instruccin se dan en la columna Accin de la Tabla
12-6. En la microinstruccin BLE0, se resta R[SB] de R[SA] y se capturan los cdigos de condicin L hasta V en el registro CC. Debido al retardo de un ciclo en la escritura en CC, es
necesaria una instruccin NOP en la microinstruccin BLE1. R[SA] es menor o igual que R[SB]
si (L ! Z) % 1 (en esta expresin el ! es una OR). De esta forma, de los cinco bits del cdigo
de condicin, slo interesan L y Z. As, en la instruccin BLE2, los tres bits menos significativos de CC se enmascaran utilizando la mscara 11 000, haciendo una operacin AND con CC.
El resultado se coloca en el registro R31 y, en BLE3, es necesario utilizar una instruccin NOP
para esperar a que se escriba R31. En BLE4 se produce una bifurcacin si R31 es distinto de
cero. Si R31 es distinto de cero, L ! Z % 1 resultando que R[SA] es menor o igual que R[SB].
En caso contrario, tanto L como Z son cero, indicando que R[SA] no es menor o igual que
R[SB]. Debido a esta microbifurcacin, es necesaria una instruccin NOP en BLE5. La conexin a MUX E necesita una sola NOP despus de la microbifurcacin en lugar de las dos que se
necesitaran en la bifurcacin condicional en el control principal. Si la bifurcacin no se realiza,
se ejecuta la siguiente microinstruccin BLE6, permaneciendo MC en el estado IDLE y reactivando el control del pipeline para ejecutar la siguiente instruccin. Si se realiza la bifurcacin,
se ejecuta la microinstruccin BLE7, colocando en el PC el valor PC ! 1 ! BrA para acceder a
la siguiente instruccin cuando la microinstruccin alcanza la etapa EX. Ntese que tal bifurcacin sobre el valor del PC solamente puede tener lugar despus de que MS sea 0 y se reactive el
pipeline. A este respecto, existe un control de conflictos para esta instruccin en el control principal, por lo que debe seguir una NOP. Los cdigos para los campos de esta microinstruccin
aparecen en la Tabla 12-6.

EJEMPLO 12-3 Mover un bloque de memoria (MMB)


La instruccin MMB copia un bloque de informacin de un conjunto de posiciones contiguas de
la memoria en otro. Su opcode es 0100011 y utiliza el formato del tipo de tres registros. El
registro R[SA] especifica la direccin A, que es la direccin de comienzo del bloque fuente de
la memoria, y el registro R[DR] especifica la direccin B, que es la direccin de comienzo del
bloque de destino. R[SB] da el nmero n de palabras en el bloque.
Las transferencias de registro de la instruccin se dan en la columna Accin de la Tabla 12-6.
En la microinstruccin MMB0 se carga R[SB] en R16. MMB1 contiene una NOP esperando que
se escriba en R16. En MMB2 se decrementa R16, proporcionando un ndice con n valores, desde
n . 1 hasta 0, para usarlo en el direccionamiento que copia las n palabras. Como R[DR] es un
registro de destino, no est normalmente disponible como fuente. Pero para hacer la manipulacin de las direcciones de las posiciones de destino, es necesario que su valor se coloque en un
registro que acte como fuente. As, en MMB3, el valor de R[DR] se copia en el registro R17
utilizando el cdigo de registro DX % 00000, que trata a R[DR] como fuente y al registro especificado en el campo BX, R17, como destino. En las microinstrucciones MMB4 y MMB5, R16 se
suma a R[SA] y a R[SB] para que sirvan como punteros de las direcciones de los bloques. Debido a estas operaciones, las palabras de los bloques se transfieren primero desde las posiciones

542

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

ms altas. En MMB6, la primera palabra se transfiere desde la primera direccin fuente de la


memoria al registro temporal R20. En MMB7 aparece una NOP que permite la escritura del valor de R20 con MMB6 antes de que MMB8 use el valor. En MMB8, se transfiere la primera
palabra desde R20 a la primera direccin de destino de la memoria. En MMB9 se realiza un
salto sobre cero basado en el contenido de R16 para determinar si se han transferido las palabras
del bloque. Si no es as, entonces la siguiente microdireccin en la que comienza la siguiente
transferencia de palabras es MM2. Si R16 es igual a cero, la siguiente microinstruccin es la
NOP colocada en MMB10 debido a la bifurcacin. La microinstruccin de MMB11 pone a MC
en IDLE y devuelve la ejecucin al control del pipeline.
Los cdigos de las microinstrucciones aparecen en la Tabla 12-6. El cdigo est formado
por un solo registro y transferencia de memoria con una sola bifurcacin para proporcionar la
capacidad de realizar un bucle y NOPs para manejar los conflictos de datos y de control.

12-5 MS SOBRE DISEO


Los dos diseos que se han considerado en este captulo representan dos diferentes ISA y dos
organizaciones diferentes que soporta la CPU. La arquitectura RISC cuadra bien con la organizacin del control en pipeline por la simplicidad de las instrucciones. Debido a la necesidad de
tener un rendimiento alto, la moderna arquitectura presentada se construye sobre la base de un
RISC. En esta seccin, manejaremos caractersticas adicionales para acelerar el RISC segmentado de base. Finalmente, relacionaremos las dos organizaciones con un diseo ms general de los
sistemas digitales.

Conceptos de CPU de alto rendimiento


Entre los diversos mtodos utilizados para disear CPUs de alta velocidad estn las unidades
mltiples organizadas en una estructura paralela en pipeline, superpipelines, y las arquitecturas
superescales.
Considere el caso en el que una operacin necesita varios ciclos de reloj para ejecutarse,
pero que las operaciones de acceso a la instruccin y la reescritura se pueden realizar en un solo
ciclo de reloj. Entonces es posible iniciar una instruccin cada ciclo de reloj pero no es posible
completar la ejecucin de una instruccin en cada ciclo. En dicha situacin, el rendimiento de la
CPU puede mejorarse sustancialmente teniendo varias unidades de ejecucin en paralelo. En la
Figura 12-22 se muestra un diagrama de alto nivel de bloques para este tipo de sistemas. El
acceso de la instruccin, decodificacin y acceso del operando se puede hacer en la unidad I del
pipeline. Adems, la unidad I puede manejar bifurcaciones. Cuando la decodificacin de una
instruccin distinta a la de bifurcacin se ha completado, la instruccin y los operandos se mandan a la unidad E adecuada. Cuando la ejecucin de la instruccin se ha completado en la unidad E, se realiza la reescritura en el banco de registros. Si es necesario un acceso a memoria,
entonces se utiliza la unidad D para ejecutar la escritura de la memoria. Si la operacin es un
almacenamiento, va directamente a la unidad D. Vase que las unidades de ejecucin reales
pueden ser microprogramadas y pueden tener tambin pipelines internos.
Suponga que tenemos una secuencia de tres instrucciones por ejemplo, una multiplicacin, un desplazamiento de 16 bits y una suma sin conflictos de datos. Suponga adems que
hay una sola unidad E en pipeline que realiza todas estas operaciones, que necesitan 17, 8 y 2
ciclos de reloj, respectivamente, y que tanto la multiplicacin como el desplazamiento necesitan

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

543

UNIDAD I

UNIDAD E

UNIDAD E

UNIDAD E

UNIDAD D

Banco
de registros

FIGURA 12-22
Organizacin en varias unidades de ejecucin

varios pasos a travs de las partes de la unidad E en pipeline. Esta situacin slo permite un
solapamiento de un ciclo de reloj entre las parejas de las tres instrucciones. De esta forma, lo
ms rpido que se ejecuta la secuencia de operaciones en la unidad E es con 17!8!2.2%25
ciclos de reloj. Pero con una unidad E para cada operacin, stas se pueden ejecutar en el mximo de (17, 1 ! 8, 2 ! 2) ciclos de reloj, que es igual a 17 ciclos de reloj. El 1 y el 2 adicionales
se deben al envo de una instruccin por ciclo de reloj a la unidad E seleccionada. El throughput
resultante de la ejecucin se ha mejorado en un factor de 25/17 % 1.5.
En todos los mtodos considerados hasta ahora, el pico posible en el throughput es de una
instruccin por ciclo de reloj. Con esta limitacin, es deseable maximizar la velocidad de reloj
minimizando el retardo mximo de la etapa segmentada. Si, como consecuencia, se utiliza un
nmero grande de etapas en el pipeline, se dice que la CPU esta supersegmentada (en ingls
superpipelined). Una CPU supersegmentada tendr, generalmente, una frecuencia de reloj muy
alta, en el rango de los GHz. Sin embargo, en dicha organizacin, el manejo efectivo de los
conflictos es crtica, puesto que una parada o reinicializacin del pipeline degrada el rendimiento de la CPU significativamente. Adems, cuantas ms etapas se aaden al pipeline, ms dividida queda la lgica combinacional, y los tiempos de setup y de propagacin de los flip-flops
empiezan a dominar los retardos entre los dos registros que definen una etapa del pipeline y la
velocidad de reloj. La mejora conseguida es menor y, cuando se tienen en cuenta los conflictos,
el rendimiento real puede empeorarse en lugar de mejorarse.

544

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Para ejecuciones rpidas, una alternativa a la supersegmentacin es el uso de una organizacin superescalar. El objetivo de este tipo de organizacin es tener un pico de velocidad en la
inicializacin de las instrucciones que exceda a una instruccin por ciclo de reloj. En la Figura 12-23 se muestra una CPU superescalar que accede simultneamente a parejas de instrucciones usando una ruta de datos para palabras dobles de la memoria. El procesador chequea los
conflictos entre las instrucciones, as como la disponibilidad de las unidades de ejecucin en la
etapa de envo de la instruccin del pipeline. Si hay conflictos o las correspondientes unidades
de ejecucin ocupadas para la primera instruccin, entonces se retienen ambas instrucciones para enviarlas ms tarde. Si la primera instruccin no tiene conflictos y su unidad E est disponible, pero hay un conflicto o no est disponible una unidad E para la segunda instruccin, entonces slo se enva la primera instruccin. En caso contrario, se envan las dos instrucciones en
paralelo. Si una determinada arquitectura superescalar tiene la capacidad de enviar hasta cuatro
instrucciones simultneamente, el pico en la tasa de ejecucin es de cuatro instrucciones por
ciclo de reloj. Si el ciclo de reloj es de 5 ns, la CPU tiene un pico en la tasa de ejecucin de
800 MIPS. Ntese que el chequeo de conflictos para las instrucciones en las etapas de ejecucin
y aquellas que estn en la etapa de envo pasa a ser muy compleja, tanto como se incrementa el
nmero mximo de instrucciones a enviar simultneamente. La complejidad del hardware resultante presenta la posibilidad de incrementar el tiempo del ciclo de reloj, de forma que hay que
examinar muy cuidadosamente el intercambio de informacin en estos diseos.

Acceso a la instruccin

Envo de la instruccin

Decodificacin
y acceso del operando

Decodificacin
y acceso del operando

Ejecucin

Ejecucin 1

Reescritura

Ejecucin 2

Unidad entera E
Ejecucin 3

Reescritura
Unidad E en punto flotante

FIGURA 12-23
Organizacin superescalar

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

545

Cerraremos esta seccin con dos observaciones. Primero, como la bsqueda de un mejor
rendimiento provoca organizaciones con un diseo cada vez ms complejo, los conflictos hacen
que el orden de las instrucciones juegue un papel ms importante en el throughput que se puede
conseguir. Adems, se pueden conseguir mejoras en el rendimiento reduciendo el nmero de
instrucciones que generan conflictos, como las bifurcaciones. Como consecuencia de esto, para
explotar el rendimiento de las capacidades del hardware, el programador de lenguaje ensamblador y de compiladores necesitar tener un amplio conocimiento del comportamiento, no slo de
la arquitectura de conjunto de instrucciones, sino de la organizacin que subyace al hardware
de la CPU.
Cuando hay involucradas varias unidades de ejecucin, con mucha frecuencia, el diseo de
CPUs que hemos estado considerando aqu, pasa a ser realmente el diseo del procesador completo, como se mostr para la computadora genrica. Esto es evidente en la organizacin superescalar de la Figura 12-23, que contiene una unidad de punto flotante (FPU). La FPU, la MMU
y la parte de la cach interna que maneja los datos son, efectivamente, cuatro tipos de unidades
E. La parte de la cach interna que maneja las instrucciones se puede ver como parte de la unidad I que accede a las instrucciones. De esta forma, en la bsqueda de mayor y mayor throughput, el dominio de la CPU pasa al del procesador, como en la computadora genrica.

Recientes innovaciones arquitecturales


Detrs de los conceptos presentados en las secciones anteriores, hay dos tendencias generales
que parecen evidentes en una de las arquitecturas ms recientes de alto rendimiento. La primera
tendencia es el desarrollo de compiladores y de arquitecturas hardware que permitan al compilador identificar explcitamente las instrucciones hardware que se pueden ejecutar en paralelo. En
este mtodo, la identificacin del paralelismo, hecha tpicamente en el hardware de las arquitecturas superescalares, se ha trasladado ahora, en cierto grado, hacia el compilador. Esto descarga
el hardware para otros usos, principalmente ms unidades de ejecucin y bancos de registros
ms grandes. La segunda tendencia es el uso de tcnicas que permiten al procesador evitar que
se hagan esperas en las bifurcaciones y que estn disponibles los valores de los datos. Estudiaremos tres tcnicas que soportan esta tendencia en esta seccin.
En lugar de esperar a que se realice una bifurcacin, el procesador ejecuta las dos posibilidades de la bifurcacin y genera ambos resultados. Cuando los resultados de la bifurcacin estn disponibles, se selecciona el resultado correcto y prosigue su clculo. De esta forma, no hay
retardo de espera en la bifurcacin, mejorando significativamente el rendimiento de los pipelines largos. A este sencillo mtodo se le denomina prediccin y utiliza registros especiales de
1 bit, llamados registros de prediccin, que determinan qu resultado se usa cuando se conoce el
resultado de la bifurcacin.
En lugar de esperar para cargar de datos de la memoria hasta que se conozca qu dato se
necesita, se realiza una carga especulativa del dato de la memoria antes de que se conozca con
seguridad el dato necesario. La razn del uso de esta tcnica es evitar retardos relativamente
largos necesarios para acceder a un operando de la memoria. Si el dato que se accede especulativamente es el dato que se necesita, entonces el dato estar disponible y el clculo puede proseguir inmediatamente sin tener que esperar a un acceso a memoria para conseguir el dato.
En lugar de esperar a que el dato est disponible, la especulacin de datos utiliza mtodos
que predicen los valores de los datos y procede a realizar clculos utilizando estos valores.
Cuando se conoce el valor real y coincide con el valor predicho, entonces el resultado producido a partir del valor predicho se puede usar para seguir avanzando en los clculos. Si el valor

546

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

real y el valor predicho difieren, entonces el resultado basado en el valor predicho se descarta y
se usa el valor real para continuar los clculos. Un ejemplo de especulacin de datos es permitir
que un valor se cargue de la memoria antes de que ocurra pronto un almacenamiento en la misma posicin de memoria en el programa que se est ejecutando. En este caso, se predice que el
almacenamiento no cambiar el valor del dato en la memoria, de forma que el valor cargado
anteriormente ser vlido. Si, al mismo tiempo ocurre el almacenamiento, el valor cargado no
es vlido, el resultado del clculo se descarta.
Todas estas tcnicas realizan operaciones o secuencias de operaciones en las que los resultados se descartan con cierta frecuencia. De esta forma, hay un gasto de clculo. Para poder
hacer grandes cantidades de clculos tiles, as como gasto de clculo, se necesitan ms recursos en paralelo, as como hardware especializado para llevar a cabo estas tcnicas. El beneficio
que se obtiene a cambio del coste de estos recursos es un rendimiento potencialmente ms alto.

Sistemas digitales
Los dos diseos de sistemas digitales que hemos examinado en este captulo son CPUs de propsito general Cmo se puede relacionar su diseo con el de otros sistemas digitales? Antes de
nada, cada sistema digital tiene su arquitectura. Aunque esa arquitectura no tenga que manejar
instrucciones en ningn caso, es probable que, an as, se pueda describir mediante transferencia de registros y, posiblemente, con una o ms mquinas de estados. Por otra parte, puede tener
instrucciones, pero pueden ser muy diferentes de las de una CPU. El sistema puede que no tenga ruta de datos o puede que tenga varias rutas de datos. Probablemente tendr alguna forma de
unidad de control y podr tener varias unidades de control que interacten. El sistema puede
incluir o no memorias. De esta forma, el espectro total de los sistemas digitales tiene un amplio
rango de posibilidades arquitecturales.
Entonces cul es la conexin de un sistema digital general con el contenido de este captulo? Simplemente expone que la conexin son tcnicas de diseo. Como ilustracin, consideremos que hemos mostrado en detalle cmo se puede hacer un sistema con instrucciones utilizando una ruta de datos y una unidad de control. A partir de aqu, es relativamente fcil realizar un
sistema ms simple sin instrucciones. Hemos mostrado qu velocidades se pueden conseguir
utilizando pipelines o unidades de ejecucin en paralelo. De esta forma, si la meta de un sistema
es alta velocidad, la segmentacin, o pipelining, o unidades trabajando en paralelo son tcnicas
que hay que tener en consideracin. Por ejemplo, uno de los autores, en un ejemplo de diseo
de un sistema para hacer una parte de un transmisor USB (vase Seccin 13-4), utiliza una ruta
de datos en pipeline con un control que involucra tanto control en pipeline como un control
convencional. Hemos mostrado cmo se puede utilizar la microprogramacin para realizar controles de funciones complejas llevadas a cabo en un pipeline. Si un sistema tiene una o ms
funciones complejas, ya sea en pipeline, programable o no, el control microprogramado es una
posibilidad a considerar.

12-6 RESUMEN
Este captulo ha cubierto el diseo de dos procesadores uno para un procesador de conjunto
reducido de instrucciones (RISC) y procesador de conjunto de instrucciones complejo (CISC).
Como preludio del diseo de estos procesadores, el captulo comenz con la ilustracin de una
ruta de datos segmentada o en pipeline. El concepto de pipeline posibilita realizar operaciones a
frecuencias de reloj y con un throughput que no son alcanzables con los mismos componentes

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

547

en una ruta de datos convencional. Se present el diagrama de patrones de ejecucin del pipeline para visualizar el comportamiento del pipeline y estimar as su pico de rendimiento. El problema de la baja frecuencia de reloj de un procesador de un solo ciclo se enfoc aadiendo una
unidad de control en pipeline a la ruta de datos.
A continuacin examinamos el diseo de un RISC con la ruta de datos y la unidad de control segmentada. Basndonos en el procesador de un solo ciclo de reloj del Captulo 10, se caracteriz la ISA RISC mediante instrucciones de longitud sencilla, un nmero limitado de instrucciones con slo algunos modos de direccionamiento con accesos de memoria restringidos a
operaciones de carga y almacenamiento. La mayora de las operaciones RISC son sencillas en el
sentido de que, en una arquitectura convencional, se pueden ejecutar utilizando una sola microoperacin.
La ISA RISC se realiza mediante el uso de una versin modificada de la ruta de datos
segmentada de la Figura 12-2. Las modificaciones incluyen un incremento en la longitud de
palabra a 32 bits, doblando el nmero de registros en el banco de registros y reemplazando el
desplazador de la unidad funcional por un barrel shifter. Asimismo, se utiliza la versin modificada de la unidad de control de la Figura 12-4. Los cambios en el control se hicieron para acomodar los cambios de la ruta de datos y para manejar las bifurcaciones y saltos en un entorno
con pipeline. Despus de terminar con las bases del diseo, se dieron consideraciones para los
problemas de conflictos de datos y de control. Examinamos cada tipo de conflicto, as como las
soluciones software y hardware para cada una.
La ISA de un CISC tiene el potencial de realizar muchas operaciones distintas, con accesos
a memoria que soportan varios modos de direccionamiento. El CISC tambin tiene operaciones
que son complejas en el sentido de que requieran muchos ciclos de reloj para su ejecucin. El
CISC permite que muchas instrucciones puedan realizar accesos a la memoria y se caracterizan
por bifurcaciones condicionales complejas soportadas por cdigos de condicin (bits de status).
Aunque, en general, una ISA CISC permite instrucciones de longitud mltiple, esta caracterstica no se proporciona en la arquitectura de ejemplo.
Para proporcionar altos throughput, la arquitectura RISC sirve como corazn para la arquitectura CISC. Las instrucciones sencillas se pueden ejecutar con el throughput de un RISC, con
instrucciones complejas, ejecutadas en varios pasos a travs del RISC en pipeline, reduciendo el
throughput total. La modificacin de la ruta de datos del RISC proporcion un registro para
almacenar operandos temporalmente y cdigos de condicin. Los cambios en la unidad de control fueron necesarios para soportar los cambios en la ruta de datos. La principal modificacin
de la unidad de control fue, sin embargo, aadir el control microprogramado para la ejecucin
de instrucciones complejas. Los cambios aadidos a la unidad de control del RISC fueron necesarias para integrar el control del microprograma en el control del pipeline. Se dieron ejemplos
de microprogramas para tres instrucciones complejas.
Despus de terminar el diseo del CISC y del RISC, tocamos algunos conceptos avanzados,
incluyendo unidades de proceso en paralelo, CPUs supersegmentadas, CPUs superescalares y
tcnicas predictivas y especulativas para conseguir altos rendimientos. Para terminar, hemos relacionado las tcnicas de diseo de este captulo para el diseo de sistemas digitales en general.

REFERENCIAS
1.

MANO, M. M.: Computer System Architecture, 3rd Ed. Englewood Cliffs, NY: Prentice
Hall, 1993.
2. PATTERSON, D. A., and J. L. HENNESSY: Computer Organization and Design: The Hardware/Software Interface, 2nd ed. San Francisco, CA: Morgan Kaufmann, 1998.

548

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

3.
4.
5.
6.
7.
8.
9.

HENNESSY, J. L., and D. A. PATTERSON: Computer Architecture: A Quantitative Approach,


2nd ed. San Francisco, CA: Morgan Kaufmann, 1996.
DIETMEYER, D. L.: Logic Design of Digital Systems, 3rd ed. Boston, MA: Allyn-Bacon,
1988.
KANE, G., And J. HEINRICH: MIPS RISC Architecture. Englewood Cliffs, NJ: Prentice Hall,
1992.
SPARC INTERNATIONAL, INC.: The SPARC Architecture Manual: Version 8. Englewood
Cliffs, NJ: Prentice Hall, 1992.
WEISS, S., And J. E. SMITH: POWER and PowerPC. San Mateo, CA: Morgan Kaufmann,
1994.
WYANT, G., and T. HAMMERSTROM: How Microprocessors Work. Emeryville, CA: ZiffDavis Press, 1994.
HEURING, V., and H. JORDAN: Computer Systems Design and Architecture. Upper Saddle
River, NJ: Prentice-Hall,1997.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco indica que hay una solucin disponible en la direccin de Internet: http://www.librosite.net/Mano.
12-1. Una ruta de datos en pipeline es similar a la de la Figura 12-1(b) pero con los retardos,
desde arriba hasta abajo, sustituidos por los siguientes valores: 1.0 ns, 1.0 ns, 1.0 ns, 0.2
ns y 0.1 ns. Determine (a) la frecuencia mxima de reloj, (b) el tiempo de latencia y (c)
el throughput mximos para esta ruta de datos.
12-2. *Un programa consistente en una secuencia de 12 instrucciones sin instrucciones de bifurcacin ni de salto se ejecuta en un procesador con un pipeline de seis etapas con un
periodo de reloj de 1.25 ns. Determine (a) el tiempo de latencia del pipeline, (b) el
throughput mximo del pipeline y (c) el tiempo necesario para la ejecucin del programa.
12-3. Se accede y se ejecuta la secuencia de siete instrucciones LDI en el programa de nmero
de registro con el patrn de ejecucin del pipeline dado en la Figura 12-5. Simule manualmente la ejecucin dando, por cada ciclo de reloj, los valores en los registros PC,
IR, Data A, Data B, Data F, Data I y en el banco de registros, teniendo sus valores
cambiados para cada ciclo de reloj. Suponga que todo el banco de registro contiene .1
(todo 1s).
12-4. Para cada una de las operaciones RISC de la Tabla 12-1, enumere el modo o modos de
direccionamiento utilizados.
12-5. Simule la operacin del barrel shifter de la Figura 12-8 para cada uno de los siguientes
desplazamientos y A % 7E93C2A116. Enumere los valores en hexadecimal sobre las 47
lneas, 35 lneas y 32 lneas de salida de los tres niveles del desplazador.
(a)

Izquierda, SH % 11

(b) Derecha, SH % 13

(c) Izquierda, SH % 30

12-6. *En la CPU RISC de la Figura 12-9, simule manualmente, en hexadecimal, el proceso
de la instruccin ADI R1 R16 2F01 localizada en PC % 10F. Suponga que R16 contiene

UNIDADES CENTRALES DE PROCESAMIENTO RISC y CISC

549

el valor 0000001F. Muestre el contenido de cada registro del pipeline y del banco de
registros (en este ltimo slo cuando cambie) para cada ciclo de reloj.
12-7. Repita el Problema 12-6 para las instrucciones SLT R31 R10 R16 con R10 conteniendo
0000100F y R16 conteniendo 00001022.
12-8. Repita el Problema 12-6 para la instruccin LSL R1 R16 000F.
12-9. !Utilice un programa de computadora de minimizacin de lgica para disear el decodificador de instrucciones de un RISC a partir de la Tabla 21-3. No se necesita hacer el
campo FS ya que se puede cablear directamente del OPCODE.
12-10. *Para el diseo RISC, dibuje el diagrama de ejecucin del siguiente programa RISC e
indique cualquier conflicto de datos que se presente:
1 MOVA
2 SUB
3 AND

R7, R6
R8, R8, R6
R8, R8, R7

12-11. Para el diseo RISC, dibuje el diagrama de ejecucin del siguiente programa RISC
(con los contenidos de R7 distinto de cero despus de la resta), e indique cualquier conflicto de datos o de control que se presente:
1
2
3
4

SUB
BNZ
AND
OR

R7,
R7,
R8,
R5,

R7, R6
000F
R7, R6
R8, R5

12-12. *Rescriba el programa RISC del Problema 12-10 y el Problema 12-11 utilizando NOPs
para evitar todos los conflictos de datos y de control y dibuje los nuevos diagramas de
ejecucin.
12-13. Dibuje los diagramas de ejecucin del programa del Problema 12-10, suponiendo que:
(a) la CPU RISC con parada de datos dada en la Figura 12-12.
(b) la CPU RISC con anticipacin de datos de la Figura 12-13.
12-14. Simule el procesamiento del programa del Problema 12-11 utilizando la CPU RISC
con parada por conflicto de datos de la Figura 12-12. D el contenido de cada registro del pipeline y del banco de registros (de este ltimo slo cuando ocurra un
cambio) para cada ciclo de reloj. Inicialmente, R6 contiene 0000001016, R7 contiene
0000002016, R8 contiene 0000003016 y el PC contiene 0000000116. Se evita el conflicto de datos?
12-15. *Repita el Problema 12-14 utilizando la CPU RISC con anticipacin de datos de la
Figura 12-13.
12-16. Dibuje el diagrama de ejecucin del programa del Problema 12-11, suponiendo la combinacin de una CPU RISC con prediccin de bifurcacin de la Figura 12-17 y la CPU
RISC con adelantamiento de datos de la Figura 12-13.
12-17. Disee la Unidad de Constantes en la CPU CISC en pipeline utilizando la informacin
dada en la Tabla 12-5 y multiplexores de buses, puertas AND, OR e inversores.

550

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

12-18. *Disee la lgica del registro de direcciones de la CPU CISC utilizando la informacin
dada en los campos de registros de la Tabla 12-5 ms multiplexores de buses, puertas
AND, OR e inversores.
12-19. Disee la Lgica de Control de Direcciones descrita en la Tabla 12-4 utilizando puertas
AND, OR e inversores.
12-20. Escriba el microcdigo para la parte de ejecucin de las siguientes instrucciones CISC.
D la descripcin de las transferencias de registros y las representaciones en binario o
hexadecimal similar a la mostrada en la Tabla 12-6 con el cdigo binario de cada instruccin.
(a) Comparacin mayor que
(b) Bifurcacin si es menor que cero (bit N % 1 del CC)
(c) Bifurcacin si hay overflow (bit V % 1 del CC)
12-21. Repita el Problema 12-20 para las siguientes instrucciones CISC que se especifican
mediante sentencia de transferencias de registro.
(a) Push: R[SA] p R[SA] ! 1 seguida por: M[R[SA]] p R[SB]
(b) Pop: R[DR] p M[R[SA]] seguida por: R[SA] p R[SA] . 1
12-22. *Repita el problema 12-21 para las siguientes instrucciones CISC.
(a) Suma con acarreo: R[DR] p R[SA] ! R[SB] ! C
(b) Resta con acarreo: R[DR] p R[SA] . R[SB] . B
12-23. Repita el Problema 12-21 para las siguientes instrucciones CISC.
(a) Suma con memoria indirecta: R[DR] p R[SA] ! M[M[R[SB]]]
(b) Suma a la memoria: M[R[DR]] p M[R[SA]] ! R[SB]
12-24. *Repita el Problema 12-20 para la instruccin CISC, suma escalar de memoria. Esta
instruccin utiliza el contenido de R[SB] como longitud del vector. Se suman los elementos del vector con su elemento menos significativo de la memoria apuntada por
R[SA] y coloca el resultado en la posicin de memoria apuntada por R[DR].
12-25. Repita el Problema 12-20 para la instruccin CISC, suma vectorial de memoria. Esta
instruccin utiliza el contenido de R[SB] como longitud del vector. Se suma el vector
con su elemento menos significativo en la memoria apuntado por R[SA] al vector con
su elemento menos significativo en la memoria apuntado por R[DR]. El resultado de la
adicin sustituye al vector con su elemento menos significativo apuntado por R[DR].

CAPTULO

13
ENTRADA/SALIDA
Y COMUNICACIONES

n este captulo damos una visin global de algunos aspectos de los procesadores de entrada y salida (E/S) y comunicaciones entre la CPU y los dispositivos
de E/S, interfaces E/S y procesadores de E/S. Debido a la amplia gama de dispositivos de E/S y la demanda en la manipulacin rpida de programas y datos, la
E/S es una de las reas ms complejas del diseo de procesadores. Como consecuencia de esto, estamos en disposicin de presentar algunas partes seleccionadas
de este puzzle. Slo ilustraremos con detalle tres dispositivos: un teclado, un disco
duro y una tarjeta grfica. Posteriormente presentaremos el bus de E/S y las interfaces de E/S que conectan los dispositivos de E/S. Consideraremos como ejemplo las
comunicaciones serie y el uso de la estructura de un teclado. Luego veremos el bus
universal serie (Universal Serial Bus, USB) y una solucin alternativa para el problema del acceso a los dispositivos E/S. Finalmente, estudiaremos los cuatro modos de
realizar transferencias de datos: transferencia controlada por programa, transferencia
iniciada por interrupcin, acceso directo a memoria y el uso de procesadores de E/S.
En trminos de la computadora genrica al comienzo del Captulo 1, es evidente
que la E/S involucra a una gran parte de la computadora. No estn muy involucrados
el procesador, la cach externa y la RAM, aunque stos tambin se usan extensivamente para dirigir y realizar las transferencias de E/S. Incluso la computadora genrica, que tiene menos dispositivos de E/S que la mayora de los PC, tiene varios de
estos dispositivos que necesitan de un hardware digital importante que los realice.

552

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

13-1 PROCESADORES DE E/S


El subsistema de entrada y salida de un procesador proporciona un modo eficiente de comunicacin entre la CPU y el entorno exterior. Los programas y los datos deben introducirse en la
memoria para procesarse y los resultados obtenidos de los clculos deben guardarse o ser mostrados. Entre los dispositivos de entrada y salida que se encuentran comnmente en una computadora estn teclados, monitores, impresoras, discos magnticos y lectores de discos compactos
de solo lectura (CD-ROM). Otros dispositivos de entrada y salida que se encuentran frecuentemente son los mdems u otras interfaces para las comunicaciones, scanners y tarjetas de sonido
con altavoces y micrfonos. Un nmero importante de procesadores, como los usados en automviles, tienen conversores analgico-digitales, conversores digitales-analgicos y otros sistemas de adquisicin de datos y componentes de control.
La interfaz de E/S de un procesador est en funcin de una determinada aplicacin. Esto da
lugar a una amplia gama de dispositivos y sus correspondientes diferencias en las necesidades
para interactuar con ellos. Puesto que cada dispositivo se comporta de forma diferente, se podra
consumir mucho tiempo si nos paramos a ver con detalle las interconexiones necesarias entre el
procesador y cada perifrico. Examinaremos, por tanto, slo tres perifricos que aparecen en la
mayora de las computadoras: el teclado, el disco duro y la tarjeta grfica. Estos representan los
puntos tpicos en el rango de la tasa de transferencia de datos necesaria para los perifricos.
Adems, presentamos algunas de las caractersticas comunes encontradas en los subsistemas de
E/S de los procesadores, as como las diferentes tcnicas para las transferencias de datos tanto
en paralelo, usando varias rutas de trasporte, como en serie, a travs de lneas de comunicacin.

13-2 EJEMPLO DE PERIFRICOS


Los dispositivos controlados directamente por la CPU se dice que estn conectados en lnea.
Estos dispositivos se comunican directamente con la CPU o transfieren la informacin binaria
dentro y fuera de la memoria bajo la direccin de la CPU. A los dispositivos de entrada y salida
conectados en lnea al procesador se les llama perifricos. En esta seccin, estudiaremos tres
dispositivos perifricos: un teclado, un disco duro y una tarjeta grfica. Utilizaremos el teclado
para ilustrar los conceptos de E/S en una seccin posterior. Presentaremos el disco duro para
ver la necesidad del acceso directo a memoria y proporcionar una base para ver el papel que
juega el dispositivo en el Captulo 14 como componente en una memoria jerrquica. Incluimos
la tarjeta grfica para ilustrar el altsimo potencial de los requerimientos de alta tasa de transferencia de datos en las aplicaciones actuales.

Teclado
El teclado es uno de los dispositivos electromecnicos ms sencillos que se conectan tpicamente a una computadora. Puesto que se maneja manualmente, tiene una de las tasas de transferencia de datos ms baja de entre los perifricos.
El teclado est compuesto por un conjunto de teclas que se presionan por el usuario. Es necesario detectar qu tecla se ha pulsado. Para hacerlo se utiliza una matriz de rastreo (en ingls
scan matrix) que yace debajo de las teclas, como se muestra en la Figura 13-1. Esta matriz bidimensional es conceptualmente similar a la matriz utilizada en la memoria RAM. La matriz mostrada en la figura es de 8 # 16, dando lugar a 128 intersecciones, de forma que puede manejar

ENTRADA/SALIDA Y COMUNICACIONES

ific

553

Multiplexor
cod
De

Microcontrolador

ado

FIGURA 13-1
Matriz de rastreo de un teclado

hasta 128 teclas. Un decodificador gobierna las lneas X de la matriz, que son anlogas a las
lneas de palabra de una memoria RAM. Se conecta un multiplexor a las lneas Y de la matriz,
que son anlogas a las lneas de bit de una memoria RAM. El decodificador y el multiplexor se
controlan mediante un microcontrolador, un pequeo procesador que contiene memoria RAM,
ROM, un temporizador y sencillas interfaces de E/S.
El microcontrolador se programa para rastrear peridicamente todas las intersecciones de la
matriz manipulando las entradas de control del decodificador y el multiplexor. Si se pulsa una
tecla de una interseccin, se cierra el camino de una seal desde una salida del decodificador X
hasta una entrada del multiplexor Y. La existencia de este camino se percibe en una de las entradas del microcontrolador. El cdigo de control, de 7 bit, aplicado al decodificador y al multiplexor al mismo tiempo, identifica la tecla. Para permitir el refinamiento en el tecleo, en el que
varias teclas se pulsan antes de que otras se dejen de pulsar, en realidad, el microcontrolador
identifica el pulsado y la liberacin (dejar de pulsar) de las teclas. Si una tecla se pulsa o se
libera, el cdigo de control en el instante del evento se percibe y se traduce por el microcontrolador a un cdigo que llamaremos cdigo scan-K. Cuando se pulsa una tecla, se genera un cdigo de marca; cuando se deja de pulsar, se produce un cdigo de ruptura. De esta forma se crean
dos cdigos para cada tecla, uno para cuando se presiona la tecla y otro para cuando se suelta.
Ntese que el muestreo de todo el teclado ocurre centenares de veces en un segundo, de forma
que no hay peligro de perder ninguna pulsacin ni ninguna liberacin de una tecla.
Despus de presentar varios conceptos de las interfaces de E/S, volveremos a visitar el teclado para ver qu sucede con los cdigos de scan-K antes de que se traduzca definitivamente a
caracteres ASCII.

Disco duro
El disco duro es el principal medio de almacenamiento de escritura, no voltil, de velocidad
intermedia en la mayora de las computadoras. El disco duro almacena la informacin en serie
sobre un disco fijo con algunos o muchos platos, como se ve en la esquina superior derecha de
la computadora genrica del Captulo 1. Cada plato es magnetizable en una o en ambas superficies. Hay una o ms cabezas de lectura/escritura por cada superficie gravable; para el resto de
nuestro estudio supondremos que hay una sola cabeza por superficie. Cada plato se divide en
pistas concntricas, como se ilustra en la Figura 13-2. Al conjunto de pistas que estn a la misma
distancia del centro de disco en todos los platos se les llama cilindro. Cada pista se divide en
sectores que contienen un nmero fijo de bytes. El nmero de bytes por sector vara entre 256

554

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Pista

Sector

Posicionamiento
de la cabeza

FIGURA 13-2
Formato del disco duro

y 5 K. El byte de direccin tpico contiene el nmero del cilindro, el nmero de cabeza, el nmero de sector y el desplazamiento de la palabra dentro del sector. El direccionamiento supone
que el nmero de sectores por pista es fijo. Actualmente, los discos de alta capacidad tienen
ms sectores en las pistas externas, que son ms largas, y menos sectores en las pistas interiores,
que son ms cortas. Adems, se reservan un cierto nmero de sectores que tomarn el lugar de
sectores defectuosos. Como consecuencia de estas elecciones de diseo, la direccin fsica del
sector en uso del disco es, probablemente, diferente de la direccin mandada por el controlador
del disco. La correspondencia de esta direccin con la direccin fsica se lleva a cabo por el
controlador del disco u otro driver electrnico.
Para permitir acceder a la informacin, el conjunto de cabezas se montan sobre un servomotor que mueve las cabezas radialmente sobre el disco, como se muestra en la computadora genrica dibujado. Al tiempo necesario para mover las cabezas desde un cilindro hasta el deseado se
llama tiempo de bsqueda (seek time). Al tiempo necesario para girar el disco desde su posicin
actual hasta la que tiene el sector deseado bajo las cabezas se llama retardo de giro (rotational
delay). Adems, el controlador del disco necesita una cierta cantidad de tiempo para acceder y
sacar la informacin. Este tiempo es el tiempo del controlador (controller time). Al tiempo necesario para localizar una palabra sobre el disco es el tiempo de acceso (access time), que es la
suma del tiempo del controlador, el tiempo de bsqueda y el retador de giro. Para estos cuatros
parmetros se utilizan valores medios. Las palabras se pueden transferir una a una pero, como
se ver en el captulo 14, con frecuencia se acceden a ellas en bloques. La tasa de transferencia
para los bloques de palabras, una vez que el bloque ha sido localizado, es la tasa de transferencia del disco, especificada tpicamente en megabytes/segundo (MB/s). La tasa de transferencia
requerida por el bus CPU-memoria para transferir un sector del disco es el nmero de bytes en
el sector dividido por la cantidad de tiempo tomado para leer un sector del disco. La cantidad de
tiempo necesario para leer un sector es igual a la proporcin del cilindro ocupado por el sector
dividido por la velocidad de rotacin del disco. Por ejemplo, con 63 sectores, 512 Bytes por
sector, una velocidad de rotacin de 5400 rpm, y permitiendo una separacin entre sectores, este
tiempo es de 0.15 ms aproximadamente, dando una tasa de transferencia de 512/0.15 ms % 3.4
MB/s. El controlador almacenar la informacin leda del sector en su memoria. La suma del
tiempo de acceso al disco y la tasa de transferencia de disco multiplicada por el nmero de

ENTRADA/SALIDA Y COMUNICACIONES

555

bytes por sector da una estimacin del tiempo necesario para transferir la informacin en un
sector a o desde el disco duro. Los valores tpicos a mediados de los aos 90 eran un tiempo de
bsqueda de 10 ms, una velocidad de rotacin de 6 ms, un tiempo de transferencia de un sector
de 0.15 ms y un tiempo del controlador despreciable, dando un tiempo de acceso para un sector
aislado de 16.15 ms.

Monitores grficos
Los monitores grficos o displays son los principales dispositivos de salida para el uso interactivo de una computadora. Los displays utilizan diversas tecnologas, la ms corriente es la de
tubo de rayos catdicos (CRT, del ingls cathode-ray tube), como se ilustra en la Figura 13-3.
La mayora de las versiones modernas de los displays CRT se basan en seales analgicas que
se generan en la tarjeta adaptadora grfica. El monitor se define en trminos de dibujos elementales llamados pixels. El monitor de color tiene tres puntos asociados con cada pxel de la pantalla. A estos puntos les corresponden los colores primarios rojo, verde y azul (RGB, del ingls
red, green y blue). En cada punto hay un fsforo coloreado. Un fsforo emite luz de su color
cuando se excita con un haz de electrones. Para excitar a los tres fsforos simultneamente se
utilizan tres caones de electrones, uno para el rojo, uno para el verde y otro para el azul, de
aqu los caones de electrones RGB mostrados en la figura. El color que resulta en un determinado pxel se determina por la intensidad del haz de electrones que golpean los fsforos dentro
de cada pxel.
Los haces de electrones barren la pantalla formando un conjunto de lneas llamadas lneas
de barrido. A este conjunto de lneas se les denomina trama. Las lneas se barren desde arriba
hasta abajo, empezando por la esquina superior izquierda y terminando en la esquina inferior
derecha. Los caones de electrones permanecen con intensidad cero cuando van de la derecha a
la izquierda para preparar el siguiente barrido de lnea. La resolucin de la informacin mostrada se da en trminos de nmero de pixels por lnea de barrido y por el nmero de lneas de
barrido en la trama. Los monitores de alta resolucin (super video graphics array, SVGA) pueden tener unos 1280 pixels por lnea y 1024 lneas por trama. Los haces de electrones barren
toda la trama en 1/60 de segundo.
Cada pxel se controla mediante el adaptador grfico. Un adaptador tpico utiliza un byte
para definir el color de un pxel. Como el byte tiene 8 bits, se pueden definir 256 colores en un

FIGURA 13-3
Monitor CRT

556

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

determinado instante. El byte no se lleva directamente al monitor si no que se selecciona 1 de


los 256 registros del adaptador grfico para definir el color. Cada registro tiene 20 bits o ms,
as que los 256 colores se pueden seleccionar de entre 1 milln de colores definiendo el contenido de los registros.
Tpicamente, los adaptadores grficos tienen una memoria RAM de video que almacena todos los bytes que controlan los pxels del monitor. Para un monitor de alta resolucin con 1280
pixels por lnea y 1024 lneas de barrido, el nmero de pxeles es de 1280 # 1024 % 1 310 720.
De esta forma, una sola pantalla de informacin necesita al menos 1.25 MB de memoria RAM
de vdeo.

Tasas de transferencia de E/S


Como se indic anteriormente, los tres dispositivos principales estudiados en esta seccin dan
una idea del rango de las tasas de transferencias de datos. La tasa de transferencia de datos de
un teclado es menor que 10 bytes/s. En un disco duro, cuando el controlador de disco est capturando datos que llegan rpidamente del disco al buffer del sector, la transferencia de datos
desde el buffer a la memoria principal es imposible. As, en este caso en el que el siguiente
sector se va a leer inmediatamente, todos los datos desde el buffer del sector necesitan ser almacenados en la memoria principal durante el tiempo en el que la separacin entre sectores del
disco pasa debajo de la cabeza del disco. Para 63 sectores y una velocidad de rotacin de 5400
rpm, este tiempo es de 25 ms aproximadamente. De esta forma, el pico de la tasa de transferencia necesaria es de 512B/25 ms % 20 MB/s. En un monitor de 256 colores, si la pantalla se
tiene que cambiar totalmente cada 1/60 de segundo, se ha de mandar 1.25 MB de datos a la
memoria RAM de vdeo desde la CPU en esa cantidad de tiempo. La tasa de transferencia necesaria es 1.25 MB # 60 % 75 MB/s.
Basndonos en lo anterior, podemos concluir que la tasa mxima de transferencia de datos
necesaria para un perifrico en concreto vara dentro de un amplio rango. Las tasas para el disco
duro y el monitor son bastante altas comparadas con la mxima tasa de transferencia en los
buses como para proporcionar un desafo a los diseadores. Los esfuerzos para solventar este
desafo utilizan tcnicas en el controlador de disco duro y el adaptador grfico para reducir las
tasas mximas de transferencia y utilizar diseos de buses rpidos entre los interfaces de los
perifricos y la memoria.

13-3 INTERFACES DE E/S


Los perifricos conectados a un procesador necesitan enlaces especiales de comunicacin como
interfaz entre ellos y la CPU. El propsito de estos enlaces es resolver las diferencias en las
caractersticas de la CPU y la memoria y las caractersticas de cada perifrico. La principales
diferencias son:
1. Los perifricos son con frecuencia dispositivos electromecnicos cuya forma de operar
es diferente a la de la CPU y la memoria, los cuales son dispositivos electromecnicos.
2. La tasa de transferencia de datos de los perifricos es, normalmente, diferente de la velocidad del reloj de la CPU. Como consecuencia, puede ser necesario un mecanismo de
sincronizacin.
3. Los cdigos de los datos y los formatos de los perifricos difieren del formato de las
palabras de la CPU y de la memoria.

ENTRADA/SALIDA Y COMUNICACIONES

4.

557

Los modos de operacin de los perifricos difieren unos de otros y cada uno se debe
controlar de forma que no perturbe la operacin de los otros perifricos conectados a
la CPU.

Para resolver estas diferencias, los sistemas basados en procesador incluyen componentes hardware especiales entre la CPU y los perifricos para supervisar y sincronizar todas las transferencias de entrada y salida. A estos componentes se les llama unidades de interfaz ya que conectan
el bus de la CPU y el dispositivo perifrico. Adems, cada dispositivo tiene su propio controlador para supervisar las operaciones del mecanismo en concreto de cada perifrico. Por ejemplo,
el controlador de una impresora conectada a una computadora controla el movimiento del papel,
el tiempo de la impresin y la seleccin de los caracteres a imprimir.

Unidad interfaz y bus de E/S


Una estructura tpica de comunicacin entre la CPU y los diversos dispositivos se muestra en la
Figura 13-4. Cada perifrico tiene una unidad de interfaz asociada a l. El bus comn de la CPU
se conecta a todas las interfaces de los perifricos. Para comunicarse con un dispositivo en particular, la CPU coloca la direccin de un dispositivo en el bus de direcciones. Cada interfaz
conectada al bus contiene un decodificador de direcciones que monitoriza las lneas de direccin. Cuando una interfaz detecta su propia direccin se activa el camino entre las lneas del bus
y el dispositivo que lo controla. Todos los perifricos con direcciones que no responden a la
direccin del bus estn deshabilitados por su interfaz. Al mismo tiempo que la direccin est
disponible en el bus de direcciones, la CPU proporciona un cdigo de funcin en las lneas de
control. El interfaz seleccionado responde al cdigo de funcin y procede a ejecutarlo. Si se
deben transferir datos, la interfaz se comunica tanto con el dispositivo como con el bus de datos
de la CPU para sincronizar la transferencia.
Adems de comunicarse con los dispositivos de E/S, la CPU de un procesador debe comunicarse con la unidad de memoria a travs de un bus de direcciones y otro de datos. Hay tres
formas en que los buses externos de un procesador comunican la memoria y la E/S. Un mtodo
utiliza buses comunes de datos, direcciones y de control tanto para la memoria como para la
E/S. Nos hemos referido a esta configuracin como E/S ubicada en memoria (en ingls memorymapped I/O). El espacio comn de direcciones se comparte entre las unidades de interfaz y las
Bus de datos

Unidad
central de
proceso
(CPU)

Bus de
direcciones
Control

Interfaz

Interfaz

Interfaz

Interfaz

Teclado

Monitor
CRT

Impresora

Disco
magntico

Dispositivo
de entrada

Dispositivo
de salida

Dispositivo
de salida

Dispositivo de
entrada y salida

FIGURA 13-4
Conexin de los dispositivos de E/S a la CPU

558

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

palabras de la memoria, cada una teniendo diferentes direcciones. Los procesadores que adoptan
este sistema de ubicacin en memoria leen y escriben desde las unidades de interfaz como si
hubiesen sido asignadas a las direcciones de memoria usando las mismas instrucciones que leen
y escriben en la memoria.
La segunda alternativa es compartir un mismo bus de direcciones y un bus de datos pero
utilizar diferentes lneas de control para la memoria y la E/S. Dichos procesadores tienen lneas
separadas de lectura y escritura para la memoria y la E/S. Para leer o escribir en la memoria, la
CPU activa el control de lectura o escritura de la memoria. Para realizar una entrada o una salida de una interfaz, la CPU activa el control de escritura y lectura de E/S usando instrucciones
especiales. De esta forma, las direcciones asignadas a la memoria y a la interfaz de entrada y
salida son independientes unas de otras y se distinguen mediante las lneas de control separadas.
A este mtodo se le denomina como configuracin aislada de E/S.
La tercera alternativa es tener dos conjuntos de buses independientes para datos, direcciones
y de control. Esto es posible en procesadores que incluyen un procesador de E/S en el sistema,
adems de la CPU. La memoria se comunica tanto con la CPU y el procesador de E/S a travs
de un bus de memoria comn. El procesador de E/S se comunica con los dispositivos de E/S a
travs de lneas separadas de control, direcciones y datos. El propsito del procesador de E/S es
proporcionar una ruta independiente para la transferencia de informacin entre los dispositivos
externos y la memoria interna. Al procesador de E/S se le suele llamar canal de datos.

Ejemplo de interfaz de E/S


Una unidad de interfaz de E/S tpica se muestra en el diagrama de bloques de la Figura 13-5.
Consiste en dos registros de datos llamados puertos, un registro de control, un registro de status,
un bus bidireccional y circuitos de control y de temporizacin. La funcin de la interfaz es trasladar las seales entre los buses de la CPU y los dispositivos de entrada y salida y proporcionar
el hardware necesario para satisfacer las restricciones de tiempo de cada uno.
Los datos de E/S procedentes de los dispositivos se pueden transferir al puerto A o B. La
interfaz puede funcionar con un dispositivo de salida, con un dispositivo de entrada o con un
dispositivo que necesita tanto entrada como salida. Si la interfaz se conecta a una impresora,
tendr datos de salida, si sirve a un scanner tendr datos de entrada. Un disco duro transfiere
datos en ambas direcciones pero no al mismo tiempo, de manera que la interfaz slo necesita un
conjunto de lneas bidireccionales de datos de E/S.
El registro de control recibe la informacin de control desde la CPU. Cargando los bits adecuados en este registro, la interfaz y el dispositivo se pueden colocar en diferentes modos de
operacin. Por ejemplo, el puerto A se puede definir como puerto solo de entrada. A una unidad
de cinta se le puede mandar que rebobine la cinta o que empiece a adelantar la cinta. Los bits
del registro de status se utilizan para las condiciones de status y para recoger errores que pueden
ocurrir en la transferencia de datos. Por ejemplo, un bit de status puede indicar que el puerto A
ha recibido un nuevo dato del dispositivo, mientras que otro bit del registro de status puede
indicar que ha ocurrido un error de paridad durante la transferencia.
Los registros de la interfaz se comunican con la CPU a travs de un bus de datos bidireccional. El bus de direcciones selecciona la unidad de interfaz a travs de la entrada de seleccin
de chip (chip select, CS) y las dos entradas de seleccin de registro. Un circuito (normalmente
un decodificador o una puerta) detecta la direccin asignada a los registros de la interfaz. Este
circuito habilita la entrada de seleccin del chip (CS) cuando se selecciona la interfaz mediante
una direccin del bus. Las dos entradas de seleccin de registro, RS1 y RS0, se conectan normalmente a las dos lneas menos significativas del bus de direcciones. Las dos entradas selec-

ENTRADA/SALIDA Y COMUNICACIONES

Bus de datos
bidireccional

Seleccin de chips

CS
RS 1
TemporiRS 0 zacin
y control
RD

Seleccin de registro
Lectura de E/S
Escritura de E/S

Bus interno

Buffers
del bus

Registro del
puesto A

Dato E/S

Registro del
puesto B

Dato E/S

Registro
de control

Registro
de status

WR

559

Lneas
de control

Lneas
de status

Al dispositivo de E/S

A la CPU
CS

RS1

RS0

0
1
1
1
1

x
0
0
1
1

x
0
1
0
1

Registro seleccionado
Ninguno: bus de datos en alta impedancia
Registro puerto A
Registro puerto B
Registro de control
Registro de status

FIGURA 13-5
Ejemplo de una unidad de interfaz de E/S

cionan uno de los cuatro registros del interfaz, segn se especifica en la tabla que acompaa al
diagrama de la Figura 13-5. El contenido del registro seleccionado se transfiere a la CPU a travs del bus de datos cuando la seal de lectura de E/S se habilita. La CPU transfiere informacin binaria en el registro seleccionado a travs del bus de datos cuando se habilita la seal de
escritura de E/S.
La CPU, la interfaz y el dispositivo de E/S tienen, probablemente diferentes relojes que no
estn sincronizados unos con otros. Por esto se dice que estas unidades son asncronas unas con
respecto de las otras. Las transferencias asncronas de datos entre dos unidades independientes necesitan que se transmitan seales de control entre las unidades para indicar el momento
en el que dicho dato se empieza a transmitir. En el caso de la comunicacin de la CPU a la
interfaz, las seales de control deben indicar tambin el momento en el que la direccin es vlida. Veremos dos mtodos para realizar esta sincronizacin: strobing y handshaking. Inicialmente consideraremos casos generales en los que no hay direcciones involucradas, seguidamente aadiremos direccionamiento. A las unidades de comunicacin, para el caso genrico, se
les denominarn como unidad fuente y unidad destino.

Strobing
En la Figura 13-6 se muestra la transferencia de datos utilizando el mtodo de strobing 1. Se
supone que el bus de datos entre las dos unidades se ha hecho bidireccional mediante el uso de
buffers triestado.
1

N. del T.: Strobing podra traducirse aqu como habilitacin o peticin.

560

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

FIGURA 13-6
Transferencia asncrona utilizando Strobing

La transferencia de la Figura 13-6(a) se inicia por la unidad de destino. En la zona sombreada de la seal de datos, el dato no es vlido. Adems, un cambio en la seal Strobe (en la cola
de cada flecha) provoca un cambio en el bus de datos (en la punta de la flecha). La unidad de
destino cambia la seal Strobe de 0 a 1. Cuando el valor 1 de Strobe alcanza la unidad fuente, la
unidad responde reemplazando el dato del bus de datos. La unidad destino espera que el dato
est disponible, en el peor de los casos, una cantidad de tiempo fija desde que Strobe haya pasado a 1. En ese instante, la unidad de captura el dato en un registro y cambia Strobe de 1 a 0. En
respuesta al valor 0 de Strobe, la unidad fuente retira el dato del bus de datos.
La transferencia de la Figura 13-6(b) se inicia por la unidad fuente. En este caso, la unidad
fuente coloca el dato sobre el bus de datos. Despus de un corto espacio de tiempo necesario
para colocar el dato en el bus, la unidad fuente cambia la seal Strobe de 0 a 1. En respuesta a
Strobe igual a 1, la unidad de destino actualiza la transferencia a uno de sus registros. La fuente
cambia luego Strobe de 1 a 0, lo que dispara la transferencia en el registro de destino. Finalmente, despus de un corto periodo, para asegurar que la transferencia al registro se ha efectuado, la fuente quita el dato del bus de datos, completando as la transferencia.
Aunque sencillo, el mtodo de strobing para transferir datos tiene varias desventajas. Primero, cuando la unidad fuente inicia la transferencia, no se le indica a sta que el dato no fue
capturado por la unidad de destino. Es posible que, debido a un fallo en el hardware, la unidad
de destino no haya recibido el cambio en la seal Strobe. Segundo, cuando la unidad de destino
realiza la transferencia, no se le indica a sta que la unidad fuente ha colocado realmente un
dato en el bus. De esta forma, la unidad de destino podra leer valores arbitrarios del bus en
lugar del valor real. Para terminar, la velocidad a la que las diferentes unidades responden pueden variar. Si hay varias unidades, la unidad que inicia la transferencia debe esperar, al menos,
el tiempo de la unidad ms lenta en la comunicacin antes de cambiar la seal Strobe a 0. De
esta forma, el tiempo que se usa en cada transferencia viene determinado por la unidad ms
lenta con la que una determinada unidad inicia las transferencias.

ENTRADA/SALIDA Y COMUNICACIONES

561

Handshaking
El mtodo handshaking 2 utiliza dos seales de control para dirigir la temporizacin de la transferencia. Aparte de la seal desde la que una unidad inicia la transferencia, hay una segunda
seal de control que procede de la otra unidad involucrada en la transferencia.
El principio bsico del procedimiento de handshaking con dos seales para la transferencia
de datos es como sigue. Una lnea de control de la unidad que inicia la comunicacin se usa
para hacer una peticin (request) de respuesta de la otra unidad. La segunda lnea de control de
la otra unidad se utiliza para responder a la unidad que inici la comunicacin que la respuesta
est efectundose. De esta forma, cada unidad informa a la otra de su status y el resultado es
una correcta transferencia a travs del bus.
La Figura 13-7 muestra el procedimiento de transferencia de datos utilizando handshaking.
En la Figura 13-7(a), la transferencia se inicia por la unidad de destino. Las dos lneas del protocolo se llaman Request (peticin) y Reply (respuesta). El estado inicial es cuando tanto Request
como Reply estn deshabilitados y en el estado 00. Los siguientes estados son 10, 11 y 01. La
unidad de destino inicia la transferencia habilitando Request. La unidad fuente responde coloBase de datos
Unidad de destino

Request

Unidad fuente

Reply

Base de datos

Request
Reply
(a) Transferencia iniciada en destino
Base de datos
Unidad fuente

Request

Unidad destino

Reply

Base de datos

Request
Reply
(b) Transferencia iniciada en fuente

FIGURA 13-7
Transferencia asncrona utilizando Handshaking
2

N. del T.: Handshaking podra traducirse aqu como protocolo de dos seales.

562

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

cando el dato en el bus. Despus de un corto periodo de tiempo para mandar los datos por el
bus, la unidad fuente activa Reply para indicar la presencia del dato. Como respuesta a Reply, la
unidad de destino captura el dato en un registro y deshabilita la seal Request. La unidad fuente
deshabilita entonces la seal Reply y el sistema va al estado inicial. La unidad de destino puede
no realizar otra peticin hasta que la unidad fuente haya mostrado su disponibilidad para proporcionar otro dato nuevo deshabilitando Reply. La Figura 13-7(b) representa el protocolo para
la transferencia iniciada por la unidad fuente. En este caso, la fuente controla el intervalo entre
cuando el dato se pone y Request cambia a 1, y entre que Request cambia a 0 y cuando el dato
se quita.
El mtodo de handshaking proporciona un alto grado de flexibilidad y fiabilidad debido a
que la exitosa terminacin de la transferencia cuenta con la participacin activa de ambas unidades. Si una unidad tiene un fallo, la transferencia de datos no se completar. Este tipo de
errores se pueden detectar mediante un mecanismo de time-out, que producen una alarma si la
transferencia no se ha completado dentro de un intervalo de tiempo predeterminado. El time-out
se realiza mediante un reloj interno que comienza la cuenta de tiempo cuando la unidad habilita
una de sus seales de control. Si no se responde a las seales dentro de un periodo de tiempo
determinado, la unidad supone que ha ocurrido un error. La seal de time-out se puede utilizar
para interrumpir a la CPU y ejecutar una rutina de servicio que realice las acciones oportunas
para solucionar el error. Adems, el tiempo se controla en ambas unidades y no slo en la unidad de inicio. Dentro de los lmites del time-out, la respuesta de cada unidad a un cambio en
una seal de control de la otra unidad puede llevar una cantidad arbitraria de tiempo y, aun as,
la transferencia se realizar con xito.
Los ejemplos de transferencias de las Figura 13-6 y 13-7 representan transferencias entre
una interfaz y un dispositivo de E/S y entre una CPU y una interfaz. En el ltimo caso, sin
embargo, podra ser necesario el uso de una direccin para seleccionar la interfaz con la que la
CPU desea comunicarse y un registro dentro de la interfaz. Para asegurar que la CPU direcciona
la interfaz correcta, la direccin se debe enviar al bus de direcciones antes de que las seales de
Strobe o de Request cambien de 0 a 1. Adems, la direccin debe permanecer estable hasta que
el cambio en las seales de Strobe o Request de 1 a 0 haya establecido un 0 en la interfaz lgica. Si se viola alguna de estas condiciones, se puede activar errneamente otra interfaz, provocando una transferencia de datos incorrecta.

13-4 COMUNICACIN SERIE


La transferencia de datos entre dos unidades puede realizarse en serie o en paralelo. En las
transferencias en paralelo, cada bit del mensaje tiene su propio camino y el mensaje completo
se transmite de una vez. Esto quiere decir que un mensaje de n bits se transmite en paralelo
mediante n caminos conductores separados. En una transmisin serie, cada bit del mensaje se
enva en secuencia, de uno en uno. Este mtodo necesita utilizar una o dos lneas para las seales. La transmisin en paralelo es ms rpida pero necesita muchos hilos. Se usa en distancias
cortas y cuando la velocidad es importante. La transmisin serie es ms lenta pero menos cara
puesto que solamente necesita un solo conductor.
Una forma en que las computadora y los terminales que estn alejados unos de otros se conectan es mediante lneas telefnicas. Ya que las lneas telefnicas fueron originalmente diseadas para comunicacin de voz y las computadoras se comunican en base a seales digitales, es
necesaria alguna forma de conversin. Los dispositivos que realizan esta conversin se llaman
mdems (del ingls modulator-demodulators). Un mdem convierte seales digitales en tonos
de audio que se transmiten por las lneas telefnicas y tambin convierten tonos de audio de la

ENTRADA/SALIDA Y COMUNICACIONES

563

lnea telefnica en seales digitales para ser usadas por una computadora. Existen varios mtodos de modulacin, as como diferentes grados en los medios de comunicacin y velocidades de
transmisin. Los datos en serie se pueden transmitir entre dos puntos de tres modos: simplex,
semi-duplex y duplex. Una lnea simplex transporta informacin en una sola direccin. Este modo se utiliza raramente en comunicacin de datos ya que el receptor no se puede comunicar con
el transmisor para indicar si han ocurrido errores en la transmisin. Un ejemplo de transmisin
simplex son las transmisiones de radio y televisin.
Un sistema de transmisin semi-duplex es aquel que es capaz de transmitir en ambas direcciones pero slo en una direccin cada vez. Se necesitan un par de hilos para este modo. Una
situacin frecuente es la de un mdem que acta como transmisor y el otro como receptor.
Cuando se completa la transmisin en una direccin, los papeles de los mdems se cambian
para permitir la transmisin en la direccin contraria. Al tiempo necesario para conmutar una
lnea semi-duplex de una direccin a otra se le llama tiempo de respuesta.
Un sistema de transmisin duplex puede recibir y enviar datos en ambas direcciones simultneamente. Esto se puede conseguir con dos hilos ms una conexin de tierra, con un hilo dedicado
a cada direccin de transmisin. Alternativamente, un circuito de un solo hilo puede soportar comunicaciones duplex si el espectro de frecuencia se subdivide en dos bandas de frecuencias no
solapadas para crear dos canales diferentes para transmitir y recibir en el mismo par de hilos.
La transmisin serie de datos puede ser sncrona o asncrona. En las transmisiones sncronas, las dos unidades comparten una seal de reloj comn y los bits se transmiten continuamente a esa frecuencia. En transmisiones serie de larga distancia, el transmisor y el receptor
estn gobernados por relojes distintos de la misma frecuencia. Se transmiten peridicamente
unas seales de sincronizacin entre las dos unidades para mantener sus frecuencias de reloj en
fase una con otra. En las transmisiones asncronas, la informacin binaria slo se manda cuando est disponible y las lneas estn inactivas si no hay informacin a transmitir. Esto contrasta
con la transmisin sncrona, en la que los bits se deben transmitir continuamente para mantener
las frecuencias de reloj de ambas unidades sincronizadas.

Transmisin asncrona
Una de las aplicaciones ms comunes de la transmisin serie es la comunicacin de una computadora con otro mediante mdems conectados a travs de la red telefnica. Cada carcter est
formado por un cdigo alfanumrico de ocho bits al que se le aaden bits adicionales al comienzo y al final del cdigo. En las transmisiones asncronas, cada carcter est formado por
tres partes: el bit de arranque, los bits del carcter y el bit de parada. El convenio es que el
transmisor mantiene la lnea a 1 cuando no se transmiten caracteres. El primer bit, llamado bit
de arranque es siempre 0 y se usa para indicar el comienzo del carcter. Un ejemplo de este
formato se muestra en la Figura 13-8.
El receptor puede detectar un carcter transmitido aplicando las reglas de transmisin. Cuando
no se enva un carcter la lnea permanece en el estado 1. La inicializacin de la transmisin

1
Bit de
arranque

1 0

Bits de caracteres

FIGURA 13-8
Formato del dato en una transmisin serie asncrona

Bit de
parada

564

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

se detecta mediante el bit de arranque, que es siempre 0. Los bits del carcter siempre siguen al
bit de arranque. Despus de que el ltimo bit del carcter se ha transmitido, se detecta un bit de
parada cuando la lnea vuelve a 1 durante al menos el tiempo necesario para transmitir un bit.
Mediante estas reglas, el receptor puede detectar el bit de arranque cuando la lnea pasa de 1
a 0. Mediante el uso de un reloj, el receptor examina la lnea en los instantes de tiempo adecuados para determinar el valor del bit. El receptor conoce la tasa de transferencia de los bits y el
nmero de caracteres por bit que acepta.
Despus de que los bits del carcter se han transmitido, se mandan uno o dos bits de parada.
Los bits de parada son siempre 1 e indican el final del carcter para sealizar el estado de espera o de inactividad. Estos bits permiten resincronizarse al transmisor y al receptor. La cantidad
de tiempo que la lnea permanece a 1 depende de la cantidad de tiempo necesario para resicronizar a los equipos. Algunos terminales electromecnicos antiguos utilizan dos bits de parada
pero los equipos modernos slo utilizan uno. La lnea permanece a 1 hasta que se transmite otro
carcter. El tiempo de parada asegura que no se transmitir un nuevo carcter durante el tiempo
correspondiente a transmitir uno o dos bits.
Como ejemplo, considere una transmisin serie con una tasa de transferencia de 10 caracteres
por segundo. Suponga que cada carcter transmitido est formado por un bit de arranque, 8 bits
por carcter y 2 bits de parada, es decir, un total de 11 bits. Si los bits se transmite a una velocidad de 10 bits por segundo, cada bit necesita 0.1 segundo para transferirse, como se van a transmitir 11 bits, se deduce que el tiempo de bit es de 9.09 ms. La tasa de baudios se define como el
nmero mximo de cambios por segundo en la seal que esta siendo transmitida. Diez caracteres
por segundo con un formato de 11 bits tienen una tasa de transferencia de 110 baudios.

Transmisin sncrona
La transmisin sncrona no utiliza ni bit de arranque ni bits de parada para delimitar los caracteres. Los mdems empleados en la transmisin asncrona tienen relojes internos que se cambian
a la frecuencia a la que se van a transmitir los bits. Para operar adecuadamente, se necesita que
los relojes del mdem del transmisor y del receptor permanezcan sincronizados todo el tiempo.
Sin embargo, la lnea de comunicacin solo transporta los bits del dato, de cuya informacin se
debe extraer la frecuencia de reloj. La frecuencia de sincronizacin se proporciona al mdem
receptor a partir de las transiciones de la seal del dato que se recibe. Cualquier desplazamiento
en la frecuencia que pueda ocurrir entre los relojes del transmisor y el receptor se ajusta continuamente manteniendo el reloj del receptor a la misma frecuencia de la cadena de bits que llega. De esta forma se mantiene la misma tasa de transferencia tanto en el transmisor como en el
receptor.
Contrariamente a lo que sucede en la transmisin asncrona, en la que cada carcter puede
ser enviado separadamente con sus propios bits de arranque y de parada, la transmisin sncrona
debe mandar un mensaje continuo con el objeto de mantener el sincronismo. El mensaje est
formado por un conjunto de bits que forman un bloque de datos. El bloque completo se transmite con bits de control especiales al comienzo y al final para delimitar el bloque en una unidad de
informacin.

De vuelta al teclado
Hasta este punto hemos cubierto la naturaleza bsica de la interfaz de E/S y la transmisin serie.
Con estos dos conceptos vistos, estamos preparados ahora para continuar con el ejemplo del
teclado y su interfaz, como se muestra en la Figura 13-9. El cdigo de scan-K, producido por el

ENTRADA/SALIDA Y COMUNICACIONES

Escritura de E/S

Interfaz y controlador
de teclado

565

Teclado

Lectura de E/S

CPU

Bus de direcciones

Registro
de entrada

Alimentacin
Reloj del teclado

Bus de datos

Registro
de salida

Datos en serie del teclado


Tierra

Peticin de
interrupcion

Registro
de control

Microcontrolador

Microcontrolador

Registro
de status

FIGURA 13-9
Controlador de teclado y su interfaz

microcontrolador del teclado, se ha de transferir va serie desde el teclado, mediante su cable, al


controlador del teclado de la computadora. La transferencia en la lnea serie de teclado utiliza
un formato como el mostrado para la transferencia asncrona de la Figura 13-8. Sin embargo, en
este caso, tambin se manda una seal de reloj del teclado a travs del cable. De esta forma, la
transmisin es sncrona con la seal de reloj transmitida, en lugar de asncrona. Estas mismas
seales se utilizan para transmitir comandos de control al teclado. En el controlador de teclado,
el microcontrolador convierte el cdigo scan-K a un cdigo de rastreo ms estndar, que se
coloca posteriormente en el Registro de Entrada, a la vez que se manda una seal de interrupcin a la CPU indicando que se ha pulsado una tecla y hay un cdigo disponible. La rutina de
atencin a la interrupcin lee el cdigo de rastreo del registro de entrada y lo lleva a un rea
especial de la memoria. Esta rea se manipula mediante el software almacenado en el Sistema
Bsico de Entrada/Salida (en ingls Basic Input/Output System, BIOS) que puede traducir el
cdigo de rastreo en un cdigo de carcter ASCII para usar en las aplicaciones.
El Registro de Salida de la interfaz recibe los datos de la CPU. Los datos pueden pasarse al
control de teclado, por ejemplo, cambiando la tasa de repeticin cuando una tecla se mantiene
pulsada. El Registro de Control se utiliza para los comandos del controlador del teclado. Finalmente, el Registro de Status da informacin especfica sobre el status del teclado y del controlador del teclado.
Quizs uno de los aspectos ms interesantes de la E/S del teclado es su alta complejidad.
Involucra a dos microcontroladores que ejecutan diferentes programas, ms el procesador principal que ejecuta el software de la BIOS (es decir, hay tres procesadores diferentes que ejecutan
diferentes programas).

Un bus de E/S serie basado en paquetes


La E/S serie, como se describi para el teclado, utiliza un cable serie especficamente dedicado
a la comunicacin entre la computadora y el teclado. Ya sea paralelo o serie, hay conexiones de
E/S externas tpicamente dedicadas. El uso de estas rutas dedicadas necesitan con frecuencia
que la caja de la computadora sea abierta e insertar tarjetas con circuitos electrnicos y conectores especficos para una E/S estndar usada para un dispositivo de E/S.
Por el contrario, la E/S serie basada en paquetes permite que muchos dispositivos de E/S
diferentes utilicen una estructura de comunicacin compartida que se conecta la computadora a

566

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

travs de uno o dos conectores. El tipo de dispositivos soportados incluye a los teclados, ratones, joysticks, impresoras, scanners y altavoces. La entrada serie basada en paquetes concreta
que describiremos aqu es el Bus Serie Universal (Universal Serial Bus, USB), que se est convirtiendo en una eleccin muy popular como forma de conexin para dispositivos de E/S de
baja y media velocidad.
La interconexin de los dispositivos de E/S mediante USB se muestra en la Figura 13-10.
La computadora y los dispositivos conectados a ste se pueden clasificar como hubs (bocas de
conexin), dispositivos o componentes de dispositivos. Un hub proporciona el punto de conexin para los dispositivos USB y para otros hubs. Un hub contiene una interfaz USB para el
manejo del control y status, y un repetidor para transferir informacin a travs del hub.
La computadora contiene un controlador USB y el hub raz (root hub). Otros hubs adicionales pueden formar parte de la estructura de la E/S USB. Si un hub se combina con un dispositivo como el teclado de la Figura 13-10, entonces al teclado se le denomina como dispositivo
componente. Aparte de tales dispositivos componentes, un dispositivo USB slo contiene un
puerto USB para sacar slo su funcin. El escner es un ejemplo de un dispositivo USB habitual. Sin USB, el monitor, teclado, mouse, joystick, micrfono, altavoces, impresora y scanner
mostrados deberan tener conexiones diferentes de E/S directamente conectadas en la computadora. El monitor, impresora, escner, micrfono y los altavoces pueden necesitar tarjetas especiales que se han de insertar en la computadora, segn se discuti anteriormente. Con USB slo
se necesitan dos conexiones.
Los cables USB contienen cuatro hilos: tierra, alimentacin y dos lneas de datos (D! y
D.) utilizadas para sealizacin diferencial. El hilo de alimentacin se utiliza para proporcio-

Ordenador
Hub raz

Monitor

Impresora

Hub

Hub

Teclado
Escner

Hub
Hub

Ratn

Joystick
Micrfono

Altavoz

Altavoz

FIGURA 13-10
Conexin de dispositivos de E/S utilizando el Bus Serie Universal (USB)

ENTRADA/SALIDA Y COMUNICACIONES

567

nar pequeas potencias a dispositivos como los teclados, de forma que no necesitan tener su
propia alimentacin. Para proporcionar inmunidad a las variaciones de la seal y al ruido, los 0
y 1 se transmiten utilizando la diferencia en voltios entre D! y D.. Si la tensin en D! excede la tensin en D. en 200 milivoltios o ms, el valor lgico es 0. Otras relaciones de voltajes
entre D! y D. se utilizan tambin como estados especiales de la seal.
Los valores lgicos utilizados para la sealizacin no son valores lgicos de informacin
que se transmiten. En su lugar, se utiliza una convencin de sealizacin de no retorno a cero
invertida (Non-Return-to-Zero Inverted, NRZI). Un cero del dato transmitido se representa mediante una transicin de 1 a 0 o de 0 a 1, y un uno se representa mediante valores fijos de 1 o 0.
La relacin entre el dato que se transmite y la representacin en NRZI se ilustra en la Figura 13-11. Como es tpico en los dispositivos de E/S, no hay un reloj comn para la computadora
y el dispositivo. La codificacin NRZI proporciona flancos que se pueden usar para mantener la
sincronizacin entre los datos que llegan y el tiempo en el que cada bit se debe muestrear en el
receptor. Si hay un nmero grande de 1s en serie en el dato, no habr transiciones durante algn
tiempo en el cdigo NRZI. Para prevenir la prdida de sincronizacin, se coloca un cero antes
cada posicin sptima de bit en una cadena de 1s antes de codificar a NRZI de forma que no
aparecen ms de seis 1s en la serie. El receptor debe ser capaz de eliminar estos ceros extra
cuando convierta los datos NRZI en datos normales.
La informacin USB se transmite en paquetes. Cada paquete contiene un conjunto especfico de campo dependiendo del tipo de paquete. Las cadenas lgicas de paquetes se usan para
formar las operaciones USB. Por ejemplo, una operacin de salida est formada por un paquete
Salida seguido de un paquete Dato y un paquete de Protocolo. El paquete Salida procede del
controlador USB de la computadora y notifica al dispositivo que est preparado para recibir un
dato. La computadora manda luego el paquete Dato. Si el paquete se recibe sin error, el dispositivo responde con un paquete de Protocolo de reconocimiento (Acknowledge Handshake packet).
Luego detallaremos la informacin contenida en cada uno de estos paquetes. La Figura 13-12(a)
muestra un formato general para los paquetes USB y los formatos para cada uno de los paquetes
involucrados en una transaccin de salida. Ntese que cada paquete comienza con el patrn de
sincronizacin SYNC. Este patrn es 00000001. Debido a la secuencia de ceros, el patrn correspondiente en NRZI contiene siete flancos que proporcionan un patrn para que el reloj de recepcin se pueda sincronizar. Como este patrn se recibe mediante un estado especifico de una seal
de tensin llamada IDLE, el patrn tambin seala el comienzo de un nuevo paquete.
Siguiendo a SYNC, cada uno de los formatos de los paquetes contiene 8 bits denominados identificadores de paquete (PID). En el PID se especifica el tipo de paquete mediante 4 bits, con 4 bits
adicionales que son el complemento de los 4 primeros para proporcionar un chequeo de error de
tipo. Se detectarn una gran variedad de tipos de errores mediante la repeticin del tipo con su
complemento. El tipo va seguido opcionalmente por informacin especfica del paquete,
que vara dependiendo del tipo de paquete. Opcionalmente puede aparecer luego un campo
de CRC. El patrn CRC, formado por 5 o 16 bits, es un patrn de Chequeo de Redundancia

Dato

FIGURA 13-11
Representacin de datos NRZI

568

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

SYNC

PID

Paquete especfico de datos

CRC

EOP

CRC

EOP

CRC

EOP

(a) Formato de paquete general

SYNC
8 bits

Tipo
4 bits
1001

Chequeo
4 bits
0110

Direccin
Direccin de
del dispositivo punto final
7 bits
4 bits

(b) Paquete de salida

SYNC
8 bits

Tipo
4 bits
1100

Chequeo
4 bits
0011

Data
(Up to 1024 bytes)

(c) Paquete de datos (Tipo Data0)

SYNC
8 bits

Tipo
4 bits
0100

Chequeo
4 bits
EOP
1011

(d) Paquete de protocolo (Tipo reconocimiento)

FIGURA 13-12
Formatos de los paquetes USB

Cclica. Este patrn se calcula en la transmisin del paquete a partir de los datos especficos del
paquete. El mismo clculo se realiza cuando se recibe el dato. Si el patrn CRC no coincide con
el patrn nuevamente calculado es que se ha detectado un error. Como respuesta al error, se
puede ignorar el paquete y retransmitirlo. En el ltimo campo del paquete aparece un Fin de
Paquete (End of Packet, EOP). Este est formado por D! y D., ambos a nivel bajo durante
dos tiempos de bit. Como su nombre indica, esta secuencia de seales de estado identifica el fin
del paquete en curso. Se debe notar que en todos los campos se presenta primero el bit menos
significativo.
En referencia a la Figura 13-12(b), en el paquete de salida (Output Packet), los campos Tipo
y Chequeo van seguidos de una direccin de dispositivo (Device Address), una direccin de
punto final (Endpoint Address) y un patrn CRC. La direccin de dispositivo est formada por
siete bits y define el dispositivo de entrada de datos. La direccin de punto final est formada
por cuatro bits y define por qu puerto del dispositivo se recibe la informacin en el siguiente
paquete de datos. Por ejemplo, puede haber un puerto de datos y otro para el control de un
determinado dispositivo.
Para el paquete de datos (Data Packet), sus datos especficos estn formados entre 0 a 1024
bytes de datos. Debido a la longitud del paquete son ms probables los errores compuestos, por
eso se incrementa la longitud del patrn del CRC a 16 bits y mejorar la capacidad de deteccin.
En el paquete de Protocolo (Handshake Packet), el paquete especfico para datos est vaco. La
respuesta a la recepcin del paquete de datos se lleva mediante el PID. El PID 01001011 es un
reconocimiento (ACK) que indica que el paquete se recibi sin detectar ningn error. La ausencia de paquetes de Protocolo cuando debera aparecer normalmente es una indicacin de error.
El PID 01011010 es un No Reconocimiento, indicando que el destino no est disponible temporalmente para aceptar o devolver datos. El PID 01111000 es una parada (STALL), indicando
que el destino no est disponible para terminar la transferencia y que se necesita la intervencin
software para recuperarlo de la condicin de parada.

ENTRADA/SALIDA Y COMUNICACIONES

569

Los anteriores conceptos ilustran los principios generales que subyacen en el bus de E/S
basado en paquetes va serie y que son especficos del USB. USB soporta otro tipo de paquetes
y transacciones de muchos tipos diferentes. Adems, la conexin y desconexin de los dispositivos se detectan y se pueden disparar diversas acciones de tipo software. En general, hay un
software considerable en la computadora que soporta los detalles del control y operacin del
Bus Serie Universal.

13-5 MODOS DE TRANSFERENCIA


La informacin recibida de un dispositivo externo se almacena habitualmente en la memoria
para un posterior procesado. La informacin transferida desde el procesador central a un dispositivo externo tiene su origen en la memoria. La CPU slo ejecuta las instrucciones de E/S y
puede aceptar datos temporalmente, pero la fuente y el destino ltimo es la memoria. La transferencia de datos entre el procesador central y los dispositivos de E/S se puede manejar de varios modos, algunos de los cuales utiliza la CPU como camino intermedio, mientras que otros
transfieren los datos directamente a o desde la memoria. La transferencia de datos a o desde los
perifricos se puede manejar de cuatro modos posibles:
1.
2.
3.
4.

Transferencia
Transferencia
Transferencia
Transferencia

de datos bajo control.


de datos iniciada mediante interrupcin
con acceso directo a memoria
mediante un procesador de E/S

Las operaciones controladas por programa son el resultado de las instrucciones de E/S escritas en el programa del procesador. Cada transferencia de datos se inicia mediante una instruccin del programa. Normalmente, la transferencia es entre un registro de la CPU y la memoria.
La transferencia de datos bajo control de programa necesita monitorizar constantemente el perifrico con la CPU. Una vez que se inicia la transferencia de datos, la CPU necesita monitorizar
la interfaz para ver cundo se hace de nuevo una transferencia. Las instrucciones programadas
se ejecutan en la CPU para mantener una relacin cercana con todo lo que est ocurriendo en la
unidad de interfaz y en el dispositivo externo.
En la transferencia controlada por programa, la CPU permanece en un bucle de espera del
programa hasta que la E/S indica que est preparada para la transferencia de datos. Esto es un
proceso que consume tiempo ya que el procesador est ocupado innecesariamente. El bucle se
puede evitar utilizando interrupciones y comandos especiales para informar a la interfaz que
active una seal de peticin de interrupcin cuando el dato est disponible en el dispositivo.
Esto permite a la CPU ejecutar otros programas. La interfaz se mantiene mientras tanto monitorizando el dispositivo. Cuando la interfaz determina que el dispositivo est preparado para la
transferencia de datos, sta genera una peticin de interrupcin al procesador. Sobre la deteccin de la seal externa de interrupcin, la CPU detiene momentneamente la tarea que est
realizando, se bifurca al programa de servicio para procesar la transferencia de datos y luego
regresa a la tarea original que se interrumpi. Esta transferencia iniciada por interrupcin es el
tipo de transferencia que utiliza el controlador del teclado mostrado en la Figura 13-9.
La transferencia de datos bajo el control del programa se realiza a travs del bus de E/S y
entre la CPU y una unidad de interfaz perifrica. En el acceso directo a memoria (direct memory
access, DMA), la unidad de interfaz transfiere los datos dentro y fuera de la memoria mediante
los buses de la memoria. La CPU inicia la transferencia proporcionando a la interfaz la direccin de comienzo y el nmero de palabras que se quieren transferir y luego seguir realizando

570

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

otras tareas. Cuando la transferencia se hace, la interfaz pide ciclos de memoria usando los buses de la memoria. Cuando se concede la peticin al controlador de la memoria, la interfaz
transfiere los datos directamente a la memoria. La CPU slo retrasa las operaciones con la memoria para permitir la transferencia de E/S directa de la memoria. Como la velocidad de los
perifricos es normalmente ms lenta que la del procesador, las operaciones de transferencias de
E/S de la memoria son infrecuentes comparadas con los accesos del procesador a la memoria.
La transferencia con DMA se discute con ms detalle en la Seccin 13-7.
Muchos procesadores combinan la interfaz con los requisitos para el DMA en una unidad
llamada procesador de E/S (I /O processor, IOP). El IOP puede manejar muchos perifricos mediante la combinacin de DMA e interrupcin. En dichos sistemas se divide al procesador en
tres mdulos diferente: la unidad de memoria, la CPU y el IOP. Los procesadores de E/S se
presentan en la Seccin 13-8

Ejemplo de una transferencia controlada por programa


En la Figura 13-13 se muestra un sencillo ejemplo de transferencia de datos desde un dispositivo de E/S a travs de una interfaz en la CPU. El dispositivo transfiere bytes de datos, de uno en
uno, segn estn disponibles. Cuando un byte est disponible, el dispositivo lo coloca en el bus
de E/S y habilita la seal Ready (preparado). La interfaz acepta el byte en su registro de datos y
habilita la seal Acknowledge (reconocimiento). La interfaz cambia un bit del registro de status,
al que llamaremos bandera o flag. El dispositivo puede deshabilitar Ready ahora pero no se
transferir otro byte hasta que la interfaz deshabilite Acknowledge, de acuerdo con el procedimiento de handshaking establecido en la Seccin 13-3.
Bajo el control del programa, la CPU debe chequear el flag para determinar si hay un nuevo
byte en el registro de datos de la interfaz. Esto se hace leyendo el contenido del registro de
status, llevndolo a un registro de la CPU, y chequear el valor del flag. Si el flag es igual a 1 la
CPU lee el dato del registro de datos. Luego, la CPU o la interfaz ponen el flag a 0, dependiendo de cmo se haya diseado la interfaz del circuito. Una vez que el flag se ha puesto a 0, la
interfaz deshabilita la seal de Acknowledge y el dispositivo puede transferir el siguiente dato.
En la Figura 13-14 se muestra el diagrama de flujo de un programa para realizar la anterior
transferencia. El diagrama de flujo supone que el dispositivo est mandando una secuencia de
bytes que debe almacenarse en la memoria. El programa examina continuamente el status de la
interfaz hasta que el flag se pone a 1. Cada byte se introduce en la CPU y se introduce en la
memoria hasta que todos los datos han sido transferidos.

Bus de datos

Interfaz

Bus E/S

Registro de datos

Ready

Bus de direcciones
CPU

Lectura de E/S
Escritura de E/S

Acknowledge

Registro
de datos
Flag

FIGURA 13-13
Transferencia de datos de un dispositivo de E/S a la CPU

Dispositivo
E/S

ENTRADA/SALIDA Y COMUNICACIONES

571

Lectura del registro de status

Chequeo del flag

Flag

1
Lectura de registro de datos

Transferencia del dato a la memoria

Operacin No
terminada?

S
Contina
el programa

FIGURA 13-14
Diagrama de flujo para el programa de una CPU.

La transferencia de datos controlada por programa se usa slo en sistemas que se dedican a
monitorizar el dispositivo continuamente. La diferencia entre la tasa de transferencia de informacin de la CPU y el dispositivo de E/S hace que este tipo de transferencia sea ineficiente.
Para ver la causa, consideremos un procesador tpico que ejecuta un conjunto de instrucciones
para leer el registro de status y chequear el flag cada 100 ns. Suponga que el dispositivo de
entrada transfiere sus datos con una frecuencia media de 100 bytes por segundo. Esto es equivalente a un byte cada 10 000 ks, es decir, que la CPU chequear el flag cada 100 000 veces entre
cada transferencia. De esta forma, la CPU esta gastando el tiempo en chequear el flag en lugar
de hacer alguna tarea til.

Transferencia iniciada por interrupcin


Una alternativa a la monitorizacin constante del flag por la CPU es dejar que la interfaz informe al procesador cuando haya un dato listo para transferir. Este modo de transferencia utiliza
las interrupciones. Cuando la CPU est ejecutando un programa, ste no chequea el flag. Sin
embargo, cuando el flag se activa, el procesador interrumpe momentneamente el programa que
est ejecutando y se le informa del hecho de que el flag ha sido activado. La CPU deja lo que
estaba haciendo para ocuparse de la transferencia de entrada o de salida. Despus de completar

572

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

la transferencia, el procesador regresa al programa anterior para continuar con lo que estaba
haciendo antes de la interrupcin. La CPU responde a la seal de interrupcin almacenando la
direccin de retorno del contador de programa en una memoria de pila o registro, y el control
salta a la rutina de servicio que procesa la peticin de transferencia de E/S. La forma en la que
el procesado elige la direccin de bifurcacin de la rutina de servicio vara de unas unidades a
otras. En principio, hay dos mtodos para acometer esto: interrupciones vectorizadas y no vectorizadas. En una interrupcin no vectorizada, la direccin de ramificacin se asigna a una posicin fija de la memoria. En una interrupcin vectorizada, la fuente que interrumpe proporciona
la direccin de salto al procesador. A esta direccin se le llama vector de direccin. En algunos
procesadores, el vector de direccin es la primera direccin de la rutina de servicio; en otros
procesadores, el vector de direccin es una direccin que apunta a una posicin de memoria
donde est almacenada la primera direccin de la rutina de servicio. El procedimiento de
interrupcin vectorizada se present en la Seccin 11-9 junto con la Figura 11-9.

13-6

PRIORIDAD EN LAS INTERRUPCIONES


Un procesador tpico tiene conectados un determinado nmero de dispositivo de E/S que son
capaces de originar una peticin de interrupcin. La primera tarea del sistema de interrupcin
es identificar la fuente de interrupcin. Hay tambin la posibilidad de que varias fuentes de
interrupcin soliciten ser atendidas simultneamente. En este caso, el sistema debe decidir a qu
dispositivo atiende primero.
Un sistema de prioridad para las interrupciones establece una prioridad sobre varias fuentes
de interrupcin para determinar qu peticin de interrupcin atiende primero cuando dos o ms
de ellas llegan simultneamente. El sistema puede determinar qu interrupciones tienen permiso
para interrumpir al procesador mientras que otra interrupcin est siendo atendida. Lo niveles
ms altos de prioridad se asignan a las peticiones que, si se retrasan o interrumpen, podran
tener serias consecuencias. Los dispositivos con alta velocidad de transferencia, como los discos
magnticos, tienen dada alta prioridad, y los dispositivos ms lentos, como los teclados, reciben
la prioridad ms baja. Cuando dos dispositivos interrumpen al procesador al mismo tiempo, el
procesador atiende al dispositivo con mayor prioridad primero.
El establecimiento de la prioridad de interrupciones simultneas se puede hacer por software
o por hardware. El software utiliza un procedimiento de interrogacin o sondeo (polling), para
identificar la fuente de interrupcin de mayor prioridad. En este mtodo, hay una direccin comn de salto para todas las interrupciones. El programa atiende a las interrupciones en la direccin de bifurcacin haciendo una secuencia de sondeo a las fuentes de interrupcin. La prioridad de cada fuente de interrupcin determina el orden en que se van a interrogar, es decir, el
orden del sondeo. La fuente con la prioridad ms alta se comprueba primero, y si su seal de
interrupcin est activada, el control salta a la subrutina que atiende a dicha fuente. De otra
manera, la fuente con la siguiente prioridad ms baja se comprueba, y as sucesivamente. De
esta forma, la rutina inicial de servicio para todas las interrupciones est compuesta de un programa que comprueba las fuentes de interrupcin secuencialmente y salta a una de las posibles
rutinas de atencin. La primera rutina de servicio que se realiza pertenece al dispositivo de prioridad ms alta de todos los que pueden interrumpir al procesador. La desventaja del mtodo
software es que si hay muchas interrupciones, el tiempo necesario para sondear a todas las fuentes puede exceder del tiempo disponible para atender a los dispositivos de E/S. En esta situacin
se puede usar una unidad de interrupcin con prioridad hardware para acelerar el funcionamiento del sistema.

ENTRADA/SALIDA Y COMUNICACIONES

573

Una unidad de interrupcin con prioridad hardware funciona como un gestor general para el
entorno de un sistema de interrupciones. La unidad acepta las peticiones de interrupcin de varias fuentes, determina cual de las peticiones entrantes tienen la prioridad ms alta y pasa la
peticin de interrupcin al procesador basndose en esa informacin. Para acelerar el funcionamiento, cada fuente de interrupcin tiene su propio vector de interrupcin para acceder a su
propia rutina directamente. De esta forma, no se necesita hacer un sondeo porque todas las decisiones se han hecho en la unidad de interrupcin con prioridad hardware. La funcin de prioridad hardware se puede establecer tanto para conexiones series o paralelas de las lneas de
interrupcin. La conexin serie es tambin conocida como Daisy Chain.

Prioridad Daisy Chain


El mtodo Daisy Chain de establecimiento de prioridad consiste en una conexin serie de todos
los dispositivos que solicitan una interrupcin. El dispositivo con la prioridad ms alta se coloca
en la primera posicin, seguido de los dems dispositivos en orden descendente de prioridad,
hasta el dispositivo con prioridad ms baja, que se coloca el ltimo de la cadena. Este modo de
conexin entre tres dispositivos y la CPU se muestra en la Figura 13-15. Las lneas de interrupcin de todos los dispositivos se conectan a una puerta OR para formar una lnea de interrupcin, que va conectada a la CPU. Si un dispositivo tiene su peticin de interrupcin a 1, la lnea
de interrupcin cambia a 1 y habilita la lnea de entrada de interrupcin de la CPU. Si no hay
interrupciones pendientes, la lnea de interrupcin permanece a 0 y la CPU no reconoce ninguna
interrupcin. La CPU responde a una peticin de interrupcin habilitando la seal de reconocimiento de interrupcin. La seal que se produce se recibe en el dispositivo 0 en su entrada PI
(entrada de prioridad, priority in). La seal pasa al siguiente dispositivo a travs de la salida PO
(salida de prioridad, priority out) solo si el dispositivo 0 no est solicitando una interrupcin. Si
el dispositivo 0 tiene una interrupcin pendiente, ste bloquea la seal de reconocimiento que
va al siguiente dispositivo colocando un 0 en la salida PO y procede a introducir su direccin de
vector de interrupcin (VAD, del ingls interrupt vector address) en el bus de datos para que la
CPU lo use durante el ciclo de interrupcin.
Un dispositivo que tiene un 0 en su entrada PI genera un 0 en su salida PO, que informa al
siguiente dispositivo con prioridad ms baja que la seal de reconocimiento ha sido bloqueada.
Un dispositivo que est solicitando una interrupcin y tiene un 1 en su entrada PI interceptar la
seal de reconocimiento colocando un 0 en su salida PO. Si el dispositivo no tiene ninguna
Base de datos de la CPU
VAD 0
Dispositivo 0
PI
PO

VAD 1
Dispositivo 1
PI
PO

VAD 2
Dispositivo 2
PI
PO

Al siguiente
dispositivo

Peticin de interrupcin

Reconocimiento de interrupcin

FIGURA 13-15
Mtodo Daisy Chain de prioridad de interrupciones

CPU

574

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

interrupcin pendiente, transmite la seal de reconocimiento al siguiente dispositivo colocando


un 1 en su salida PO. De esta forma, el dispositivo con PI % 1 y PO % 0 es el de mayor prioridad que est solicitando una interrupcin, y este dispositivo es el que coloca su VAD en el bus
de datos. La disposicin de esta cadena, la Daisy Chain, da la mayor prioridad al dispositivo
que recibe la seal de reconocimiento de la CPU. Cuanto ms lejos est el dispositivo de la
primera posicin, menor es su prioridad.
La Figura 13-16 muestra la lgica que se debe incluir dentro de cada dispositivo conectado
en esta cadena. El dispositivo pone su latch RF a 1 cuando solicita una interrupcin a la CPU.
La salida del latch entra en la puerta OR que maneja la lnea de interrupcin. Si PI % 0, tanto
PO como la lnea de habilitacin de VAD son iguales a 0, independientemente del valor de RF.
Si PI % 1 y RF % 0, entonces PO % 0, el vector de direccin est deshabilitado y la seal de
reconocimiento pasa al siguiente dispositivo a travs de PO. El dispositivo est activo si PI % 1
y RF % 1, que coloca un 0 en PO y pone el vector de direccin en el bus de datos. Se supone
que cada dispositivo tiene su propio vector de direccin, diferente unos de otros. El latch RF se
pone a 0 despus de un retardo lo suficientemente grande para asegurar que la CPU ha recibido
el vector de direccin.

Hardware de prioridad paralela


El mtodo de prioridad paralela utiliza un registro con un conjunto de bits que cambian separadamente segn la seal de interrupcin de cada dispositivo. La prioridad se establece de acuerdo
con la posicin de los bits en el registro. Aparte del registro de interrupcin, el circuito puede
incluir un registro de enmascaramiento para controlar el status de cada peticin de interrupcin.
El registro de enmascaramiento se puede programar para deshabilitar las interrupciones de prioridad ms baja mientras que se atiende a un dispositivo de prioridad ms alta. Esto tambin
puede permitir que un dispositivo de alta prioridad interrumpa a la CPU cuando un dispositivo
de prioridad ms baja esta siendo atendido.
La lgica de prioridad de un sistema con cuatro fuentes de interrupcin se muestra en la
Figura 13-17. La lgica est formada por un registro de interrupcin con un conjunto bits que
VAD
PI

Peticin de
interrupcin
del dispositivo

Habilitacin

Entrada de prioridad

Vector de direccin

Salida de prioridad

RF

PO

R
Retardo
PI RF

Peticin de
interrupcin
a la CPU

0
0
1
1

0
1
0
1

FIGURA 13-16
Etapa de una cadena de prioridad Daisy Chain

PO Habilitacin
0
0
1
0

0
0
0
1

ENTRADA/SALIDA Y COMUNICACIONES

575

FIGURA 13-17
Hardware para prioridad paralela

se ponen a 1 individualmente segn ciertas condiciones externas y se ponen a 0 mediante las


instrucciones del programa. La entrada de interrupcin 3 tiene la prioridad ms alta y la entrada
0 la ms baja. El registro de enmascaramiento tiene el mismo nmero de bits que el registro de
interrupciones. Mediante instrucciones de un programa es posible poner a 1 o a 0 cualquier bit
del registro de enmascaramiento. Cada bit de interrupcin y su bit de mscara correspondiente
se aplica a una puerta AND para producir las cuatro entradas de un codificador de prioridad. De
esta forma, se reconoce una interrupcin slo si su bit de mscara correspondiente se ha puesto
a 1 mediante el programa. El codificador de prioridad genera dos bits del vector de direcciones
que se transfieren a la CPU por el bus de datos. La salida V del codificador se pone a 1 si ha
llegado una peticin de interrupcin que no est enmascarada. Esto proporciona la seal de
interrupcin para la CPU.
El codificador de prioridad es un circuito que realiza la funcin de prioridad. La lgica del
codificador de prioridad es tal que, si dos o ms entradas estn activadas al mismo tiempo, la
entrada que tiene la prioridad ms alta tiene preferencia. En la Seccin 4-4 se puede encontrar
un codificador de prioridad de cuatro entradas, y su tabla de verdad se muestra en la Tabla 4-5.
La entrada D3 tiene la prioridad ms alta, as que, independientemente de los valores de las
otras entradas, cuando esta entrada es 1, la salida es A1 A0 % 11. D2 tiene la siguiente prioridad
ms baja. La salida es 10 si D2 % 1, con tal de que D3 % 0, independientemente de los valores
de las dos entradas de prioridad ms baja. La salida es 01 cuando D1 % 1, siempre y cuando las
dos entradas de prioridad ms alta sean iguales a 0, y as sucesivamente bajando los niveles de
prioridad. La salida de interrupcin V es igual a 1 cuando una o ms entradas son iguales a 1. Si
todas las entradas son 0, V es 0, y las otras dos salidas del codificador no se utilizan. Esto es as
porque el vector de direccin no se transfiere a la CPU cuando V % 0.
La salida del codificador con prioridad se utiliza para formar parte del vector de direccin
de la fuente de interrupcin. Los otros bits del vector de direccin pueden tener asignado cual-

576

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

quier valor. Por ejemplo, el vector de direccin se puede completar aadiendo seis ceros a las
salidas del codificador. De esta forma, los vectores de interrupcin de los cuatro dispositivos de
E/S se asignan a los nmeros de 8 bits equivalentes a 0, 1, 2 y 3.

13-7

ACCESO DIRECTO A MEMORIA


La transferencia de bloques de informacin entre un dispositivo rpido de almacenamiento, como
un disco magntico, y una CPU puede ocupar a la CPU y permitirle hacer poco, si acaso, puede
completar otra tarea. Eliminando la CPU de la ruta y dejando que el perifrico gestione los buses de la memoria directamente, podemos relevar a la CPU de muchas operaciones de E/S y
permitirle que prosiga con otras tareas. En esta tcnica de transferencia, llamada acceso directo
a memoria (direct memory access, DMA), el controlador de DMA se hace con los buses para
gestionar la transferencia directa de informacin entre el dispositivo de E/S y la memoria.
Como consecuencia, se priva temporalmente a la CPU del acceso a la memoria y del control de
los buses de la memoria.
El DMA puede capturar los buses de diferentes formas. Un mtodo usado comnmente en
los microprocesadores es deshabilitar los buses mediante seales de control especiales. La Figura 13-18 muestra dos seales de control de la CPU que facilita la transferencia de DMA. El
controlador de DMA utiliza la seal de peticin de bus (bus request, BR) para pedir a la CPU
que ceda el control de los buses. Cuando la entrada BR se activa, la CPU coloca el bus de direcciones, el bus de datos y las lneas de lectura y escritura en estado de alta impedancia. Despus
de hacer esto, la CPU activa la seal de salida de bus concedido (bus granted, BG) para informar al DMA externo que puede tomar el control de los buses.
En todo el tiempo que la lnea BG se mantiene activada, la CPU no tiene permiso para efectuar operaciones que necesiten acceder a los buses. Cuando la entrada de peticin de bus est
deshabilitada por el DMA, la CPU vuelve a su operacin normal, deshabilita la seal de salida
BG y toma el control de los buses.
Cuando la lnea BG se habilita, el controlador externo de DMA toma el control de los buses
del sistema para comunicarse directamente con la memoria. Se puede hacer una transferencia de
palabras de memoria por bloques enteros, suspendiendo la operacin de la CPU hasta que el
bloque entero se transfiere, proceso que se denomina rfaga de transferencia. O la transferencia
se puede hacer palabra a palabra entre ejecuciones de instrucciones de la CPU, proceso llamado
transferencia de un solo ciclo o robo de ciclo. La CPU tan slo retrasa sus operaciones de bus
un ciclo de memoria para permitir a la transferencia directa memoria-E/S robar un ciclo de memoria.

El controlador de DMA
El controlador de DMA necesita el habitual circuito de interfaz para comunicar la CPU y el
dispositivo de E/S. Adems necesita un registro de direcciones, un registro de cuenta de direcBus pedido

BR

AB

Bus de direcciones

DB

Bus de datos

RD

Lectura

WR

Escritura

CPU
Bus cedido

BG

FIGURA 13-18
Seales de control del bus de la CPU.

Alta impedancia
(deshabilitada)
si BG 1

ENTRADA/SALIDA Y COMUNICACIONES

577

ciones y un conjunto de lneas de direccin. El registro de direccin y las lneas de direccin se


usan para dirigir la comunicacin con la memoria. El registro de cuenta de direcciones especifica el nmero de palabras que se deben transferir. La transferencia de datos se puede hacer directamente entre el dispositivo y la memoria bajo el control del DMA.
La Figura 13-19 muestra el diagrama de bloques de un controlador de DMA tpico. La unidad que se comunica con la CPU mediante el bus de datos y las lneas de control. La CPU
selecciona los registros del DMA mediante el bus de direcciones, habilitando las entradas DS
(DMA select) y RS (Register select). Las entradas RD (lectura) y WR (escritura) son bidireccionales. Cuando la entrada BG (bus cedido) es 0, la CPU se puede comunicar con los registros del
DMA a travs del bus de datos para leer o escribir en estos registros. Cuando BG % 1, la CPU
ha cedido los buses y el DMA se puede comunicar directamente con la memoria especificando
una direccin en el bus de direcciones y activando la lnea de control RD o WR. El DMA se
comunica con el perifrico externo a travs de las lneas de peticin de DMA (DMA request) y
de reconocimiento de DMA (DMA acknowledge), como se describi en el procedimiento de
handshaking.
El controlador de DMA tiene tres registros: un registro de direccin, un registro de cuenta
de palabras y un registro de control. El registro de direccin contiene una direccin para especificar la posicin deseada de una palabra de la memoria. Los bits de direcciones van a travs de
los buffers del bus sobre el bus de direcciones. El registro de direccin se incrementa despus
de cada palabra que se ha transferido a la memoria. El registro de cuenta de palabras contiene el
nmero de palabras a transferir. Este registro se decrementa en uno cada vez que se transfiere
una palabra y se comprueba internamente si su contenido es cero. El registro de control especifica el modo de transferencia. Todos los registros en el DMA son para la CPU como registros
de una interfaz de E/S. De esta forma, la CPU puede leer de o escribir en los registros del DMA
bajo control de programa va el bus de datos.
Despus de la inicializacin por la CPU, el DMA comienza y contina transfiriendo datos
entre la memoria y la unidad perifrica hasta que el bloque entero se ha transferido. El proceso
de inicializacin es, esencialmente, un programa formado por instrucciones de E/S que incluyen

Bus de direcciones
Buffers del
bus de datos

Seleccin de DMA

DS

Seleccin de registro

RS

Lectura

RD

Escritura
Bus pedido

WR Lgico
de control
BR

Bus cedido

BG

Interrupcin

Buffers del bus


de direcciones

Bus interno

Bus de datos

Registro de direcciones

Registro de cuenta de palabras

Registro de control
Peticin de DMA
Reconocimiento de DMA

Al dispositivo E/S

FIGURA 13-19
Diagrama de bloques de un controlador de DMA

578

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

la direccin de un registro concreto del DMA. La CPU inicializa el DMA mandando la siguiente informacin por el bus de datos:
1.

La direccin de comienzo del bloque de memoria en el que los datos estn disponibles
(para lectura) o van a ser almacenados (con escritura).
2. La cuenta de palabras, que es el nmero de palabras en el bloque de memoria.
3. Un bit de control que especifica el modo de transferencia, como lectura o escritura
4. Un bit de control para comenzar la transferencia de DMA
La direccin de comienzo se almacena en el registro de direccin, la cuenta de palabras en el
registro de cuenta de palabras y la informacin de control en el registro de control. Una vez que
el DMA se inicializa, la CPU detiene la comunicacin con el DMA a menos que la CPU reciba
una seal de interrupcin o necesite chequear cuntas palabras se han transferido.

Transferencia de DMA
En la Figura 13-20 se ilustra la posicin del controlador de DMA entre los otros componentes
de un sistema con procesador. La CPU se comunica con el DMA a travs del bus de direcciones
y de datos como con cualquier unidad de interfaz. El DMA tiene su propia direccin que activa
las lneas DS y RS. La CPU inicializa el DMA a travs del bus de datos. Una vez que el DMA
recibe el bit de control de inicio, puede comenzar a transferir datos entre el dispositivo perifrico y la memoria. Cuando el perifrico manda una peticin de DMA, el controlador de DMA
activa la lnea BR informando a la CPU que est cediendo los buses. La CPU responde con su
lnea BG, informando al DMA de que los buses estn deshabilitados. Entonces el DMA pone el

Interrupcin
BG

CPU

Memoria

BR
RD

RD WR Direccin Dato

WR Direccin Dato
Control
de lectura

Control de escritura
Bus de direcciones
Bus de datos

Recodificador
de direcciones
RD

WR Direccin Dato

DS
RS
BR

Peticin de DMA

Controlador
DMA

Dispositivo
perifrico
Reconocimiento de DMA
E/S

BG
Interrupcin

FIGURA 13-20
Transferencia de DMA en un sistema con procesador

ENTRADA/SALIDA Y COMUNICACIONES

579

valor actual de su registro de direcciones en el bus de direcciones, inicializando las seales RD


y WR y manda un reconocimiento de DMA al perifrico.
Cuando el perifrico recibe el reconocimiento del DMA pone una palabra en el bus de datos
(para escribir) o recibe una palabra del bus de datos (para leer). As, el DMA controla la operacin de lectura o escritura y aporta la direccin de memoria. La unidad perifrica puede entonces comunicarse con la memoria a travs del bus de datos para hacer una transferencia directa
de datos entre las dos unidades, mientras que el acceso de la CPU al bus de datos est momentneamente deshabilitado.
Para cada palabra que se transfiere, el DMA incrementa su registro de direcciones y decrementa su registro de cuenta de palabras. Si la cuenta de palabras no ha alcanzado el cero, el
DMA comprueba la lnea de peticin procedente del perifrico. En un dispositivo de alta velocidad, la lnea se activar tan pronto como su anterior transferencia se haya terminado. Luego se
inicia una segunda transferencia y el proceso contina hasta que todo el bloque se haya transferido. Si la velocidad del perifrico es baja, la lnea de peticin del DMA se puede activar algo
ms tarde. En este caso, el DMA deshabilita la lnea de peticin del bus de forma que la CPU
puede continuar ejecutando su programa. Cuando el perifrico solicita una transferencia, el
DMA solicita los buses de nuevo.
Si el contador de palabras llega a cero, el DMA para cualquier transferencia posterior y elimina su peticin de bus. Adems informa a la CPU del fin de la transferencia mediante una
interrupcin. Cuando la CPU responde a la interrupcin, lee el contenido del registro de cuenta
de palabras. Si el valor es cero, esto indica que todas las palabras se han transferido con xito.
La CPU puede leer el registro de cuenta de palabras en cualquier momento, as como comprobar el nmero de palabras que ya se ha transferido.
Un controlador de DMA puede tener ms de un canal. En este caso, cada canal tiene su
pareja de seales de control de peticin y reconocimiento, que se conectan a diferentes perifricos. Cada canal tambin tiene su propio registro de direcciones y su registro de cuenta de palabras y los canales con mayor prioridad se atienden antes que los canales de menor prioridad.
La transferencia de DMA es muy til en muchas aplicaciones, incluyendo las transferencias
rpidas entre discos magnticos y la memoria y entre las tarjetas grficas y la memoria.

13-8

PROCESADODES DE E/S
En lugar de tener cada interfaz comunicndose con la CPU, un procesador puede incorporar uno
o ms procesadores externos y asignarles luego la tarea de comunicarse directamente con todos
los dispositivos de E/S. Un procesador de entrada/salida (IOP, del ingls Input-Output Processor) se puede clasificar como un procesador con capacidad de acceso directo a memoria que se
comunica con los dispositivos de E/S. Con esta configuracin, un sistema basado en procesador
se puede dividir en una unidad de memoria y un nmero de procesadores compuestos por una
CPU y uno o ms IOPs. Cada IOP se encarga de las tareas de entrada y salida, relevando a
la CPU de los quehaceres domsticos involucrados en las transferencias de E/S. A un procesador que se comunica con su unidad remota por telfono u otros medios de comunicacin va
serie se le llama procesador de comunicacin de datos (DCP, del ingls Data Communication
Processor). El beneficio derivado del uso de los procesadores de E/S es la mejora en el rendimiento del sistema, proporcionado mediante el relevo de la CPU de ciertas tareas relacionadas
con la E/S y asignndoles los procesadores de E/S adecuados.
Un IOP es similar a una CPU, excepto que se disea para manejar los detalles del procesamiento de la E/S. Al contrario que el controlador de DMA, que debe configurarse enteramente

580

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

por la CPU, el IOP puede acceder y ejecutar sus propias instrucciones. Las instrucciones del
IOP se han diseado especficamente para facilitar las transferencias de E/S. Adems, el IOP
puede realizar otras tareas de procesamiento como son aritmticas, lgicas, de bifurcacin y traduccin de cdigo.
En la Figura 13-21 se muestra el diagrama de bloques de un sistema con dos procesadores.
La memoria ocupa la posicin central y puede comunicarse con cada procesador mediante
DMA. La CPU es responsable del procesado necesario de datos para solucionar las tareas computacionales. El IOP proporciona un camino para la transferencia de datos entre varios perifricos y la memoria. La CPU tiene normalmente la tarea de iniciar el programa de E/S. Desde su
puesta en marcha, el IOP opera independientemente de la CPU y continua con la transferencia
de datos entre los dispositivos internos y la memoria. El formato de los datos de los dispositivos
perifricos difiere frecuentemente de los de la memoria y la CPU. El IOP debe estructurar las
palabras de los datos procedentes de las diferentes fuentes. Por ejemplo, puede ser necesario
coger cuatro bytes de un dispositivo de entrada y empaquetarlos en una palabra de 32 bits antes
de transferirlos a la memoria. Los datos se recogen en el IOP a una cierta velocidad y en una
determinada cantidad mientras que la CPU ejecuta su propio programa. Despus de ensamblarlos en una palabra de memoria, los datos se transfieren desde el IOP directamente a la memoria
robando un ciclo de memoria a la CPU. De forma similar, una palabra de la memoria transferida al IOP se manda del IOP al dispositivo de salida a una cierta velocidad y cantidad.
La comunicacin entre el IOP y los dispositivos conectados es similar al mtodo de transferencia controlado por programa. La comunicacin con la memoria es similar al mtodo de
DMA. La forma en que la CPU y el IOP se comunican con los otros depende del nivel de sofisticacin del sistema. En sistemas de muy alta escala, cada procesador es independiente del resto, y cualquier procesador puede iniciar una operacin. En la mayora de los sistemas basados
en procesador, la CPU es el procesador maestro y el IOP es el procesador esclavo. La CPU
tiene asignada la tarea de inicializar todas las operaciones pero las instrucciones de E/S se ejecutan en el IOP. Las instrucciones de la CPU proporcionan las operaciones para empezar una
transferencia de E/S y tambin comprobar las condiciones de status de E/S necesarias para tomar decisiones en las diversas actividades de E/S. La IOP, en cambio, tpicamente realiza solicitudes a la CPU mediante interrupciones. Tambin responde a las peticiones de la CPU colocando una palabra de status en una posicin concreta de la memoria, para ser examinada
posteriormente por la CPU. Cuando se desea realizar una operacin de I/O, la CPU informa al
IOP dnde encontrar el programa de E/S y luego deja los detalles de la transferencia al IOP.
A las instrucciones que lee el IOP de la memoria se suelen llamar comandos, para distinguirlos de las instrucciones que lee la CPU. Una instruccin y un comando tienen funciones

Unidad de memoria

Bus de memoria

Dispositivos perifricos
PD

Unidad central de
procesamiento (CPU)

Procesador E/S
(IOP)

PD

PD

Bus E/S

FIGURA 13-21
Diagrama de bloques de un sistema con procesadores de E/S

PD

ENTRADA/SALIDA Y COMUNICACIONES

581

similares. Las palabras de los comandos constituyen el programa del IOP. La CPU informa al
IOP donde puede encontrar los comandos en la memoria cuando es el momento de ejecutar el
programa de E/S.
La comunicacin entre la CPU y el IOP puede realizarse de diferentes formas, dependiendo
del procesador en concreto que se utilice. En la mayora de los casos, la memoria acta como
centro de mensajes, donde cada procesador deja informacin para los otros. Para apreciar la
operacin de un IOP tpico, ilustraremos el mtodo mediante el cual la CPU y el IOP se comunican uno con el otro. Este ejemplo simplificado omite algunos detalles para proporcionar una
visin de los conceptos bsicos.
La secuencia de operaciones se puede realizar segn se muestra en el diagrama de flujo de
la Figura 13-22. La CPU manda una instruccin para comprobar la ruta del IOP. El IOP responde insertando una palabra de status en la memoria de la CPU para su chequeo. Los bits de la

FIGURA 13-22
Comunicacin CPU-IOP

582

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

palabra de status indican el estado del IOP y del dispositivo de E/S, como por ejemplo estado
de sobrecarga del IOP, dispositivo ocupado con otra transferencia o dispositivo listo para
transferencia de E/S. La CPU consulta la palabra de status de la memoria para decidir qu es
lo siguiente. Si todo est en orden, la CPU manda la instruccin para comenzar la transferencia
de E/S. La direccin de memoria recibida con esta instruccin le dice al IOP donde encontrar su
programa.
Ahora la CPU puede continuar con otro programa mientras el IOP est ocupado con el programa de E/S. Ambos programas consultan la memoria mediante transferencias por DMA.
Cuando el IOP termina la ejecucin de su programa, manda una peticin de interrupcin a la
CPU. La CPU responde enviando una instruccin para leer el status del IOP. Entonces, el IOP
responde colocando el contenido de su informe de status en una posicin concreta de la memoria. La palabra de status indica si la transferencia se ha terminado o si ha ocurrido algn error
durante la transferencia. Por inspeccin de los bits de la palabra de status, la CPU determina si
la operacin de E/S se ha terminado satisfactoriamente, sin errores.
El IOP cuida de que todas las transferencias de datos entre las diversas unidades de E/S y la
memoria mientras la CPU procesa otro programa. El IOP y la CPU compiten por el uso de la
memoria, de forma que el nmero de dispositivos que pueden estar operando est limitado por
el tiempo de acceso de la memoria. En la mayora de los sistemas, no es posible que los dispositivos de E/S saturen la memoria pues la velocidad de la mayor parte de los dispositivos es mucho menor que la de la CPU. Sin embargo, varios dispositivos rpidos, como discos magnticos
o tarjetas grficas, pueden utilizar un nmero apreciable de ciclos de memoria. En este caso, la
velocidad de la CPU puede deteriorarse puesto que la CPU debe esperar con frecuencia a que el
IOP proceda con las transferencias de memoria.

13-9

RESUMEN DEL CAPTULO


En este captulo hemos presentado los dispositivos de E/S, llamados tpicamente perifricos, y
las estructuras digitales asociadas que les dan soporte, incluyendo buses de E/S, interfaces y
controladores. Hemos estudiado la estructura de un teclado, un disco duro y una tarjeta grfica.
Hemos visto un ejemplo de una interfaz genrica de E/S y examinado la interfaz y el controlador de E/S de un teclado. Hemos presentado el USB como una solucin alternativa para conectar varios dispositivos de E/S. Hemos considerado los problemas de tiempo entre sistemas con
diferentes relojes y la transmisin de informacin va serie y paralela.
Tambin hemos visto los modos de transferir informacin y vimos cmo funcionan los modos ms complejos, principalmente para relevar a la CPU de transferencias extensas, manejo de
ejecucin-robo. Las transferencias iniciadas mediante interrupcin con varias interfaces de E/S
llevan a un medio de establecer prioridades entre las fuentes de interrupcin. La prioridad se
puede manejar mediante software, lgica en una daisy chain serie o lgica de prioridad de
interrupciones en paralelo. Los accesos directos a memoria logran hacer la transferencia de datos directamente entre la interfaz E/S y la memoria, con una pequea participacin de la CPU.
Para terminar, los procesadores proporcionan una mayor independencia de la CPU del manejo
de la E/S.

REFERENCIAS
1.

PATTERSON, D. A., and J. L. HENNESSY: Computer Organization and Design: The Hardware/
Software Interface. San Francisco, CA: Morgan Kaufmann, 1998.

ENTRADA/SALIDA Y COMUNICACIONES

583

2. VAN GILLUWE, F.: The Undocumented PC. Reading, MA: Addison-Wesley, 1994.
3. MESSMER, H. P.: The Indispensable PC Hardware Book. 2nd ed. Reading, MA: AddisonWesley, 1995.
4. MindShare, Inc. (Don Anderson): Universal Serial Bus System Architecture. Reading, MA:
Addison-Wesley Developers Press, 1997.

PROBLEMAS
El signo (!) indica problemas ms avanzados y el asterisco indica que hay una solucin disponible en la direccin de Internet: http://www.librosite.net/Mano.
13-1. *Encuentre la capacidad formateada de los discos duros descritos en la siguiente tabla:
Disco

Cabezas

Cilindros

Sectores/Pista

Bytes/Sector

A
B
C

1
4
16

1023
8191
16 383

63
63
63

512
512
512

13-2. Estime el tiempo necesario para transferir un bloque de 1 MB (220 B) del disco a la
memoria dada con los siguiente parmetros: tiempo de bsqueda, 8.5 ms; retardo de giro, 4.17 ms; tiempo del controlador, despreciable; tasa de transferencia, 100 MB/s.
13-3. Las direcciones asignadas a los cuatro registros de la interfaz de E/S de la Figura 13-5
son iguales a los equivalentes en binario de 240, 241, 242 y 243. Muestre el circuito
externo que se debe conectar entre una direccin de 8 bits de E/S de la CPU y las entradas CS, RS0 y RS1 de la interfaz.
13-4. *Cuntas unidades de interfaz del tipo mostrado en la Figura 13.5 se pueden direccionar utilizando direcciones de 16 bits suponiendo
(a)

que cada lnea de seleccin de chip (CS) se conecta a una lnea de direccin diferente?
(b) que los bits de direcciones estn completamente decodificados para formar las entradas de seleccin del chip?
13-5. Se conectan seis unidades de interfaz, del tipo mostrado en la Figura 13-5, a la CPU que
utiliza direcciones de E/S de ocho bits. Cada una de las seis entradas de seleccin de
chip (CS) se conecta a una lnea diferente de direccin. En concreto, la lnea de direccin 0 se conecta a la entrada CS de la primera unidad de interfaz y la lnea 5 se conecta
a la entrada CS de la sexta unidad de interfaz. Las lneas de direccin 7 y 6 se conectan
a las entradas RS1 y RS0 respectivamente, de todas las unidades de interfaz. Determine
las direcciones de 8 bits de cada registro en cada interfaz (un total de 24 direcciones).
13-6. *Un tipo diferente de E/S no tiene entradas RS1 y RS0. Se pueden direccionar hasta dos
registros utilizando seales separadas de E/S para lectura y escritura para cada direccin
disponible. Suponga que el 50% de los registros de la interfaz con la CPU son slo de
lectura, el 25% de los registros son slo de escritura y el 25% restante de los registros

584

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

son de lectura y escritura (bidireccionales) Cuntos registros se pueden direccionar si la


direccin contiene cuatro bits?
13-7. Una unidad de interfaz comercial utiliza nombres diferentes a los que aparecen en este
texto para las lneas de handshake asociadas con la transferencia de datos desde el dispositivo de E/S a la unidad de interfaz. La lnea de entrada de handshake a la interfaz se
etiqueta como STB (strobe) la lnea de salida de handshake de la interfaz se etiqueta
como IBF (input buffer full, buffer de entrada lleno). Una seal activa a nivel bajo en
STB carga el dato del bus de E/S al registro de datos de la interfaz. Un nivel alto en la
seal IBF indica que la interfaz ha aceptado el dato. IBF pasa a nivel bajo despus de
una seal de lectura de E/S de la CPU cuando sta lee el contenido del registro de datos.
(a)

Dibuje un diagrama de bloques que muestre la CPU, la interfaz y el dispositivo de


E/S con las interconexiones pertinentes entre las tres unidades.
(b) Dibuje un diagrama de tiempos para dicha transferencia.
13-8. *Suponga que las transferencias con strobing mostradas en la Figura 13-6 se realizan
entre la CPU de la izquierda y una interfaz de E/S a la derecha. Hay una direccin procedente de la CPU para cada una de las transferencias, ambas se han iniciado por la
CPU.
(a)

Dibuje un diagrama de bloques que muestre las interconexiones para realizar las
transferencias.
(b) Dibuje los diagramas de tiempos para las dos transferencias, suponga que la direccin se debe aplicar un tiempo antes de que el strobe se ponga a 1 y se quita un
tiempo despus de que el strobe se ponga a 0.
13-9. Suponga que las transferencias con handshaking mostradas en la Figura 13-7 se efectan
entre la CPU de la izquierda y la interfaz E/S de la derecha. Hay una direccin procedente de la CPU para cada una de las transferencias, ambas iniciadas por la CPU.
(a)

Dibuje los diagramas de bloques que muestren las interconexiones para realizar las
transferencias.
(b) Dibuje los diagramas de tiempos suponiendo que la direccin se debe aplicar un
tiempo antes de que la peticin se ponga a 1 y se quite un tiempo despus de que la
peticin se ponga a 0.
13-10. *Cuntos caracteres por segundo se pueden transmitir en una lnea de 57.600 baudios
en cada uno de los siguientes modos? (Suponga caracteres de 8 bits).
(a) Transmisin asncrona serie con dos bits de parada.
(b) Transmisin asncrona serie con un bit de parada.
(c) Repita los apartados a y b para una lnea de 115.200 baudios.
13-11. Esboce el diagrama de tiempos de 11 bits (similar a la Figura 13-8) que se transmite
por una lnea de comunicacin asncrona serie cuando se transmite el cdigo ASCII de
la letra E con paridad par. Suponga que el cdigo ASCII del carcter se transmite empezando por el bit menos significativo, con el bit de paridad a continuacin del cdigo
del carcter.
13-12. Cul es la diferencia entre la transferencia de informacin serie sncrona y asncrona?

ENTRADA/SALIDA Y COMUNICACIONES

585

13-13. *Esboce la forma de ondas para el patrn de SYNC utilizado en USB y la correspondiente forma de onda NRZI. Explique por qu el patrn seleccionado es una buena
eleccin para conseguir la sincronizacin.
13-14. La siguiente cadena de datos se transmite mediante USB:
01111111001000001111110111111101
(a) Suponiendo que no se utiliza el bit de relleno, esboce la forma de onda NRZI.
(b) Modifique la cadena aplicando el bit de relleno.
(c) Esboce la forma de onda NRZI para el resultado del apartado b.
13-15. *La palabra Bye, codificada en ASCII de 8 bits, se transmite a una direccin del
dispositivo (device address) 39 y una direccin de punto final (endpoint address) 2.
Enumere los paquetes de salida y de Dato 0 y el paquete de Handshake para una parada antes de la codificacin NRZI.
13-16. Repita el problema 13-15 para la palabra Hlo y un paquete de Handshake de tipo No
Acknowledge.
13-17. Cul es la ventaja bsica de utilizar una transferencia de datos iniciada por interrupcin sobre una transferencia bajo control de programa sin interrupcin?
13-18. *Qu sucede en la daisy chain con prioridad mostrada en la Figura 13-15 cuando el
dispositivo 0 solicita una interrupcin despus de que el dispositivo 2 ha mandado su
peticin de interrupcin a la CPU pero antes de que la CPU responda con un reconocimiento de interrupcin?
13-19. Considere un procesador sin hardware de interrupcin con prioridad. Cualquier fuente
puede interrumpir al procesador, y cualquier peticin de interrupcin da lugar al almacenamiento de la direccin de retorno y a la bifurcacin a una rutina de servicio a la
interrupcin comn. Explique cmo se puede establecer una prioridad en el programa
de servicio a las interrupciones.
13-20. *Qu cambios se necesitan hacer en la Figura 13-17 para tener cuatro valores de direccin de vector de interrupcin (VAD) iguales a los binarios equivalentes de 024,
025, 026 y 027?
13-21. Repita el Problema 13-20 para los valores VAD de 224, 225, 226 y 227.
13-22. *Disee el hardware de interrupcin con prioridad en paralelo para un sistema con seis
fuentes de interrupcin.
13-23. Una estructura con prioridad se disea de forma que proporcione direcciones de vectores.
(a) Obtenga la tabla de verdad condensada de un codificador con prioridad de 16#4.
(b) Las cuatro salidas w, x, y, z del codificador con prioridad se utilizan para proporcionar una direccin de vector de 8 bits de la forma 10wxyz01. Enumere las 16
direcciones, empezando por la de mayor prioridad.
13-24. *Por qu las lneas de controlador de DMA son bidireccionales? Bajo qu condiciones y para qu propsito se usan como salidas?

586

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

13-25. Es necesario transferir 1024 palabras de un disco magntico a una parte de la memoria
que comienza en la direccin 2048. La transferencia se efecta mediante DMA, segn
se muestra en la Figura 13-20.
(a) Indique los valores iniciales que debe transferir la CPU al controlador de DMA.
(b) Indique paso a paso la cantidad de acciones que se realizan durante la introduccin de las dos primeras palabras.

CAPTULO

14
SISTEMAS DE MEMORIA

n el Captulo 9 discutimos la tecnologa RAM, incluyendo SRAM y DRAM, para


la implementacin de sistemas de memoria. En este captulo profundizaremos
ms en lo que constituye el sistema de memoria de una computadora real. Comenzaremos partiendo de la premisa de que lo deseable es disponer de una memoria
rpida y grande y despus demostraremos cmo la implementacin directa de esa
memoria, para una computadora tpica, es demasiado costosa y lenta. Como consecuencia, estudiaremos una solucin ms elegante en la que la mayora de los accesos a memoria son rpidos (aunque alguno pueda ser lento) y la memoria aparenta
ser grande. Esta solucin se basa en dos conceptos: memoria cach1 y memoria virtual. Una memoria cach es una memoria pequea y rpida, dotada de mecanismos
hardware de control especiales que permiten que pueda hacerse cargo de la mayora
de los accesos a memoria ordenados por la CPU, con un tiempo de acceso del orden
de un periodo de reloj de la CPU. La memoria virtual, implementada mediante hardware y software, emplea una memoria principal intermedia de tamao medio (usualmente DRAM) y se comporta como una memoria principal de tamao mayor, pero
conserva los tiempos de acceso de la memoria intermedia para la gran mayora de los
accesos. El medio de almacenamiento real para la mayor parte del cdigo y datos en
la memoria virtual es un disco duro. Dado que existe una progresin de componentes
en el sistema de memoria, siendo estos componentes de capacidad creciente, pero
de tiempos de acceso cada vez menores (cach, memoria principal y disco duro), se
dice que existe una jerarqua de memoria.
En el diagrama de una computadora genrica al principio del Captulo 1 existe una
cantidad de componentes relacionados estrechamente con la jerarqua de memoria.
Dentro del procesador est la unidad de manejo de memoria (MMU, Memory Management Unit), que es hardware dedicado a soportar la memoria virtual. Tambin en el
procesador dispone de su propia cach interna. Puesto que esta cach es demasiado
pequea para desarrollar plenamente la funcin de la cach existe una memoria cach externa conectada al bus de la CPU. Por supuesto, la RAM y, debido a la presencia de memoria virtual, el disco duro, el interfaz del bus y el controlador de disco forman parte del sistema de memoria.

1 N. del T.: El trmino ingls cach no suele ser traducido al espaol.

588

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

14-1 JERARQUA DE MEMORIA


En la Figura 14-1 se muestra el diagrama de bloques genrico de una jerarqua de memoria. El
nivel ms bajo de la jerarqua es una memoria pequea, pero rpida, denominada cach. Para
que el funcionamiento de la jerarqua de memoria completa sea adecuado es necesario que una
fraccin grande de los accesos a instrucciones y datos realizados por la CPU sean atendidos por
la cach. En el siguiente nivel superior de esta jerarqua se encuentra la memoria principal. La
memoria principal sirve directamente una parte de los accesos de la CPU no satisfechos por la
cach. Adems la cach busca todos sus datos, algunos de los cuales pasan a la CPU, de la
memoria principal. En el nivel superior de la jerarqua se encuentra el disco duro, que nicamente es accedido en el caso poco frecuente de que el dato o instruccin buscado no se encuentre en la memoria principal.
En esta jerarqua de memoria, dado que la CPU encuentra la mayor parte de las instrucciones y los operandos en la cach ve una memoria rpida la mayor parte del tiempo. Ocasionalmente, cuando una palabra debe ser leda de la memoria principal, la operacin de bsqueda
lleva un tiempo algo mayor. Muy raramente alguna palabra debe ser buscada en el disco duro,
bsqueda que consume un tiempo muy largo. En este ltimo caso la CPU, mediante una
interrupcin, pase el control a un programa capaz de leer un bloque de palabras desde el disco
duro. En media la situacin suele ser satisfactoria, arrojando un tiempo de acceso promedio similar al de la cach. Adems la CPU ve un espacio de direcciones de memoria considerablemente mayor que el de la memoria principal.
Manteniendo en mente esta nocin de la jerarqua de memoria vamos a considerar un ejemplo que ilustra el potencial de esta jerarqua. De todos modos debemos clarificar primero un
asunto: en la mayora de los juegos de instrucciones el objeto menor que se puede direccionar es
un byte, no una palabra. Para una determinada operacin de lectura o escritura se suele especificar si el dato a acceder es un byte o una palabra mediante el cdigo de operacin (opcode). El
direccionamiento de bytes trae a colacin algunos aspectos y detalles del hardware importantes,
pero que si se expusiesen en este punto del texto lo complicaran de forma innecesaria. De este
modo, y por simplicidad, hemos considerado hasta ahora que las direcciones de memoria almacenan una palabra. Por contra, tal y como es prctica habitual, en este captulo supondremos que
los datos almacenados en una direccin son bytes. Aun as y para evitar liosas explicaciones
sobre el manejo de los bytes, seguiremos suponiendo que los datos se mueven alrededor de la
CPU en forma de palabras o grupos de palabras. Esta forma de proceder oculta algunos detalles

Memoria
principal

FIGURA 14-1
Jerarqua de memoria

Disco
duro

SISTEMAS DE MEMORIA

589

del hardware que pueden distraernos del objetivo principal del discurso, pero que en cualquier
caso deben ser conocidos por el diseador del hardware. Para llevar a cabo esta simplificacin,
si existen bytes en una palabra ignoraremos los b bits de menor pero de la direccin. Dado que
estos bits no se necesitan para acceder a la direccin mostraremos su valor siempre a cero. Para
los ejemplos que aparecern b siempre ser 2, con lo que siempre aparacern dos ceros.
En la Seccin 12-3 la CPU segmentada2 trabaja con direcciones de memoria de 32 bits y es
capaz, en caso necesario, de acceder a una instruccin y a un dato en sendos ciclos de 1 ns de
duracin del reloj. Adems supusimos que las instrucciones y los datos se buscaban en dos memorias distintas. Para dar soporte a estas suposiciones en este captulo partiremos de que la memoria est dividida en dos partes, una mitad para instrucciones y la otra mitad para datos. Cada
una de estas mitades debe presentar un tiempo de acceso de 1 ns. Adems, si empleamos todos
los 32 bits de las direcciones, la memoria debe contener bytes (4 GB) de informacin. As el
objetivo es disponer de dos memorias de 2 GB, cada una con un tiempo de acceso de 1 ns.
Es esta memoria realista en trminos de la presente (2003) tecnologa de computadoras? La
memoria habitual se construye a partir de mdulos de DRA; de tamao comprendido entre 16 y
64 MB. El tiempo de acceso tpico es de alrededor de 10 ns. De este modo, nuestras dos memorias de 2 GB tendran un tiempo de acceso algo mayor que 10 ns. Este tipo de memoria es
demasiado cara y trabaja a la dcima parte de la velocidad deseada. Por ello nuestro objetivo
debe ser alcanzado por otro camino, lo que nos llevar a explorar la jerarqua de memoria.
Comenzaremos suponiendo una jerarqua con dos cachs, una para instrucciones y otra para
datos, como se ve en la Figura 14-2. El uso de dos cachs permitir, si estas cachs son suficientemente rpidas, que una instruccin y un operando puedan ser ledos, o una instruccin
leda y un resultado almacenado en un nico ciclo de reloj. En trminos de la computadora genrica, supondremos que estas cachs son internas, por lo que podrn trabajar a velocidades
comparables a la de la CPU. As, la bsqueda en la cach de instrucciones y la bsqueda o el
almacenamiento en la cach de datos pueden realizarse en 2 ns. De este modo la mayor parte de
las bsquedas y almacenamientos se realizan sobre estas cachs y necesitarn 2 ciclos de reloj
de la CPU para llevarse a cabo. Supongamos adems que es suficiente con que el 95 % de los
accesos se realicen empleando esos 2 ns y que el 5 % restante de los accesos a memoria necesitan 10 ns para efectuarse. Entonces el tiempo de acceso medio es:
0.95 # 2 ! 0.05 # 10 % 2.4 ns

Cach de
instrucciones
Cach
de datos

Memoria
principal

Disco
duro

FIGURA 14-2
Ejemplo de jerarqua de memoria
2 N. del T.: Se ha empleado el trmino segmentado para designar la expresin inglesa pipelined.

590

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Esto significa que, en 19 de cada 20 accesos a memoria, la CPU trabaja a su mxima velocidad,
mientras que la CPU debe esperar durante 10 ciclos de reloj en uno de cada 20 accesos a memoria. Esta espera puede realizarse deteniendo la segmentacin de la CPU. De esta forma hemos
satisfecho nuestro objetivo de que la mayora de los accesos a memoria necesiten 2 ns. Pero
an tenemos el problema del coste de una memoria grande.
Supngase ahora que, adems de la poco frecuente espera para un dato de la memoria principal que necesitar mas de 10 ns, tambin debemos aceptar el caso extremadamente poco frecuente de un acceso al disco duro que necesite 13 ms % 1.3 # 107 ns. Supongamos adems que
disponemos de informacin que nos indica que alrededor del 95% de los accesos se hacen sobre
la cach y que el 4.999995% se realizan sobre la memoria principal. Con esta informacin podemos estimar el tiempo de acceso medio como:
0.95 # 2 ! 0.04999995 # 10 ! 5 # 10.8 # 1.3 # 107 % 3.05 ns
De este modo un acceso requiere en promedio 3 ciclos del reloj de 1 ns de la CPU, pero este es
aproximadamente un tercio del tiempo de acceso de la memoria principal y, de nuevo, 19 de
cada 20 accesos a memoria se realizan en 2 ns. As hemos alcanzado un tiempo de acceso medio de 3.05 ns para una estructura de memoria con una capacidad de 232 bytes, no lejos del
objetivo de partida. Aun ms, el coste de esta jerarqua de memoria es decenas de veces menor
que el del enfoque basado en una memoria grande y rpida.
As parece que el objetivo original de disponer de una memoria rpida y grande se ha aproximado mediante una jerarqua de memoria a un precio razonable. Pero durante este desarrollo
se han hecho algunas suposiciones, que en el 95% de los casos la palabra buscada est en lo que
denominamos cach y que el 99.999995% del tiempo las palabras estn en la cach o en la
memoria principal, estando en los casos restantes en el disco duro. En lo que queda de captulo
estudiaremos qu presunciones como sta son usualmente vlidas y exploraremos el hardware y
software asociado necesarios para alcanzar los objetivos de la jerarqua de memoria.

14-2 LOCALIDAD DE REFERENCIA


En la seccin anterior indicamos que el xito de la jerarqua de memoria se basaba en suposiciones que eran crticas para alcanzar la apariencia de una memoria grande y rpida. Ahora nos
ocuparemos de los fundamentos que nos permiten realizar esas suposiciones y que se denomina
localidad de referencia. Aqu referencia significa referencia a la memoria para acceder a las
instrucciones o para leer o escribir operandos. El trmino localidad se refiere a los instantes
relativos en los que se accede a las instrucciones o los datos (localidad temporal) y las posiciones relativas en las que stos residen en memoria (localidad espacial).
Primeramente consideraremos la naturaleza tpica de un programa. Un programa frecuentemente contiene muchos bucles. En un bucle una secuencia de instrucciones es ejecutada muchas
veces antes de que el programa salga del bucle y se mueva a otro bucle o a cdigo lnea a lnea
sin bucles. An ms, los bucles estn muchas veces anidados en una jerarqua en la que existen
bucles que contienen bucles y as sucesivamente. Supongamos que tenemos un bucle de 8 instrucciones que debe ser ejecutado 100 veces. Entonces durante 800 ejecuciones todas las bsquedas de instruccin ocurrirn en solamente ocho direcciones de memoria. As cada una de
estas 8 direcciones es visitada 100 veces durante el tiempo en el que el bucle es ejecutado. Este
es un ejemplo de localidad temporal, en el sentido de que si una direccin es accedida es probable que sea accedida ms veces en un futuro prximo. De igual forma, es tambin razonable que
las direcciones de instrucciones sucesivas estn en orden secuencial. As si una direccin es

SISTEMAS DE MEMORIA

591

accedida por una instruccin, las direcciones prximas sern posiblemente direccionadas durante la ejecucin del bucle. Este es un ejemplo de localidad espacial.
Para el caso de acceso a operandos tambin tienen sentido la localidad espacial y temporal.
Por ejemplo en un clculo sobre un arreglo de nmeros existirn mltiples accesos a las posiciones de muchos de los operandos, lo que da lugar a localidad temporal. Adems, segn se desarrolle el calcul, cuando una direccin de un determinado nmero sea accedida es probable que
las direcciones secuenciales a ella sean tambin accedidas para otros nmeros del arreglo, lo
que da lugar a localidad espacial.
De la discusin anterior podemos conjeturar que en los programas de computadora existe
una significativa localidad de las referencias. Para verificar esto definitivamente es necesario
estudiar patrones de ejecucin de programas reales. Estos estudios han demostrado la presencia
de una localidad espacial y temporal muy significativa y juegan un papel importante en el diseo de cachs y sistemas de memoria virtual.
La siguiente cuestin a responder es: cul es la relacin entre localidad de referencia y jerarqua de memoria? Para examinar esta cuestin consideraremos de nuevo la bsqueda de una
instruccin dentro de un bucle y nos centraremos en la relacin entre la cach y la memoria
principal. Inicialmente supondremos que las instrucciones estn presentes nicamente en la memoria principal y que la cach est vaca. Cuando la CPU busca la primera instruccin de un
bucle, la obtiene de la memoria principal. Pero la instruccin y una porcin de su direccin,
denominada etiqueta de direccin, son almacenadas en la cach. Qu ocurre para las siguientes
99 ejecuciones de esta instruccin? La respuesta es que cada instruccin puede ser buscada en
la cach, lo que da lugar a unos tiempos de acceso mucho ms rpidos. Aqu est trabajando la
localidad temporal. La instruccin que fue buscada una vez tender a ser usada de nuevo, pero
ahora est presente en la cach y su acceso ser ms rpido.
Adicionalmente, cuando la CPU busca una instruccin de la memoria principal, la cach
almacena instrucciones prximas en su SRAM. Ahora supongamos que estas instrucciones prximas incluyen el bucle entero de 8 instrucciones de este ejemplo. Entonces todas las instrucciones estn en la cach. Trayendo este bloque de instrucciones la cach puede ahora explotar la
localidad espacial. La cach aprovecha el hecho de que la ejecucin de la primera instruccin
implica la ejecucin de instrucciones de direcciones prximas haciendo que las instrucciones
prximas estn disponibles para su rpido acceso.
En nuestro ejemplo, cada instruccin es buscada en la memoria principal exactamente una
vez para las 100 ejecuciones del bucle. Todas las dems bsquedas tienen lugar sobre la cache.
As, en este ejemplo concreto, al menos el 99% de las instrucciones a ejecutar son buscadas en
la cach, de modo que la velocidad de ejecucin de estas instrucciones est gobernada casi exclusivamente por el tiempo de acceso de la cach y por la velocidad de la CPU, y en mucha
menor medida por el tiempo de acceso de la memoria principal. Sin localidad temporal ocurriran muchos ms accesos a la memoria principal, ralentizando el sistema.
Una relacin similar a la que existe entre cach y memoria principal existe entre memoria
principal y disco duro. De nuevo son de inters tanto la localidad espacial como la temporal,
aunque en este caso a una escala mucho mayor. Los programas y los datos son buscados en el
disco duro y los datos son escritos en el disco duro en bloques que pueden ser de k-palabras o
M-palabras. Idealmente, una vez que el cdigo y los datos de partida de un programa residen en
la memoria principal, no es necesario que el disco vuelva a ser accedido hasta que sea necesario
almacenar los resultados finales del programa. Pero esto solo ser cierto si todo el cdigo y
datos del programa, incluyendo los datos intermedios, residen completamente en la memoria
principal. Sino, entonces ser necesario traer cdigo desde el disco duro y leer y escribir datos
en el disco durante la ejecucin del programa. Las palabras son escritas y ledas en el disco duro

592

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

en bloques denominados pginas. Si el movimiento de pginas entre la memoria principal y el


disco es transparente al programador, entonces parecer que la memoria principal es suficientemente grande como para almacenar el programa completo y todos sus datos. Por ello este funcionamiento automtico es denominado memoria virtual. Durante la ejecucin de un programa,
si una instruccin no se encuentra en la memoria principal, el flujo del programa se desva para
traer a la memoria principal la pgina que contiene la instruccin. Entonces la instruccin puede
moverse a la memoria principal y ejecutada. Los detalles de esta operacin y el hardware y
software involucrados sern descritos en la Seccin 14-4.
En suma, la localidad de las referencias es clave para el xito de los conceptos de memoria
cach y memoria virtual. En la mayora de los programas, la localidad de las referencias est
presente en gran medida. Pero ocasionalmente uno puede encontrar un programa que, por ejemplo, debe acceder frecuentemente a una cantidad de datos que no puede ser almacenada en memoria. En este caso la computadora consume la mayor parte del tiempo moviendo informacin
entre la memoria principal y el disco duro, sin prcticamente realizar ningn clculo. Un sntoma de este problema es un sonido continuo, proveniente del disco duro y producido por el movimiento constante entre pistas de las cabezas, denominado thrashing3.

14-3 MEMORIA CACH


Para ilustrar el concepto de memoria cach supondremos el caso de una cach muy pequea de
8 palabras de 32 bits y una memoria principal pequea de 1 KB (256 palabras), como se muestra en la Figura 14-3. Ambas son demasiado pequeas para ilustrar una situacin real, pero sus
tamaos permitirn ilustrar los conceptos ms fcilmente. Las direcciones en la cach son de 3
bits. las de memoria 10. De las 256 palabras de la memoria principal solo 8 al mismo tiempo
pueden almacenarse en la cach. Para que la CPU pueda direccionar una palabra de la cach, es
necesario que sta almacene alguna informacin que permita identificar la direccin de la palabra en la memoria principal. Si considaremos el ejemplo del bucle en la seccin anterior, parece
claro que lo deseable es mantener el bucle completo en la cach, de forma que todas las instrucciones puedan ser buscadas en la cach mientras el programa ejecuta las diversas pasadas del
bucle. Las instrucciones en el bucle ocupan direcciones de palabra consecutivas. Por ello es deseable que la cach almacene palabras de direcciones consecutivas de la memoria principal.
Una forma sencilla de alcanzar este objetivo es hacer que los bits 2 a 4 de las direcciones de la
memoria principal sean la direccin en la cach. Nos referiremos a estos bits como el ndice (index), como se ve en la Figura 14-3. Note que el dato de la direccin 0000001100 de la memoria
principal debe almacenarse en la direccin de la cach 011. Los 5 bits ms significativos de la
direccin de la memoria principal, denominados la etiqueta (tag), se almacenan en la cach junto
con el dato. Continuando con el ejemplo, encontramos que para la direccin de la memoria principal 0000001100 la etiqueta es 00000. La etiqueta y el ndice (o direccin en la cach) y el 00
correspondiente al campo de byte identifican una direccin de la memoria principal.
Supongamos que la CPU busca la instruccin en la direccin 000001100 de la memoria principal. Esta instruccin podr provenir de la cach o de la memoria principal. La cach separa la
etiqueta 0000 de la direccin en la cach 011, internamente busca la etiqueta y la palabra almacenada en la posicin 011 de la cach y compara la etiqueta almacenada con la porcin de la
direccin generada por la CPU correspondiente a la etiqueta. Si la etiqueta encontrada es 00000

3 N. del T.: El trmino ingls thrashing a veces se traduce, algo informalmente, por rascado.

SISTEMAS DE MEMORIA
Direccin
Etiqueta

593

Dato

ndice

(a) Direccin de memoria


ndice

Etiqueta

Dato

Cach

Memoria principal
(b) Mapeado de Cach

FIGURA 14-3
Cach mapeado directo

ocurre un acierto (match) y la palabra almacenada, leda de la memoria cache, es la instruccin


deseada. As, el control de la cach coloca esta palabra en el bus de la CPU, completando la
operacin de bsqueda. Este caso en el que la palabra buscada en la memoria se encuentra en la
cach se denomina cache hit. Si la etiqueta almacenada en la memoria cach no es 00000, existe un desacuerdo de la etiqueta y el control de la memoria cach indica a la memoria principal
que debe aportar la palabra buscada, que no est alojada en la cache. Esta situacin se denomina
cache miss4. Para que una cach sea efectiva es necesario evitar al mximo los accesos, lentos,
a la memoria principal, de modo que haya muchos ms cache hits que cache miss.
Cuando ocurre un cache miss en una operacin de bsqueda, la palabra leda de la memoria
principal no slo se coloca en el bus de la CPU. La cach tambin lee esta palabra y su etiqueta y la almacena para futuros accesos. En nuestro ejemplo, la etiqueta 00000 y la palabra de
la memoria se escribirn en la posicin 011, en previsin de futuros accesos a la misma direccin de memoria. El manejo de las escrituras en memoria ser tratado ms adelante en este
captulo.

4 N. del T.: Las expresiones inglesas cache hit y cache miss no suelen traducirse al espaol, aunque a veces se emplean las
expresiones acierto de cach y fallo de cach para designarlas.

594

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Mapeado de la cach
El ejemplo recin descrito emplea una asociacin determinada entre las direcciones de la
memoria principal y las de la cach, concretamente que los 3 ltimos bits de la direccin de
palabra en la memoria principal son la direccin en la memoria cach. Adems slo hay una
posicin en la cach para las 25 posiciones de memoria principal que tienen sus 3 ltimos bits
en comn. Este mapeado, mostrado en la Figura 14-3 en el que slo una posicin determinada
de la cach puede contener la palabra de una direccin particular de la memoria principal se
denomina mapeado directo.
Este mapeado directo no siempre produce los mejores resultados. En el ejemplo de bsqueda de una instruccin de un bucle supngase que instrucciones y datos se almacenan en la misma y que el dato de la posicin 1111101100 se usa frecuentemente. Entonces, cuando se busca
la instruccin 0000001100 lo normal es que la posicin 011 de la cach contenga el dato de
1111101100, con etiqueta 11111. Ocurre un cache miss y entonces la etiqueta 11111 es reemplazada por 00000 y el dato reemplazado por la instruccin. Pero la prxima vez que se necesite
el dato volver a ocurrir un cache miss, dado que la posicin de la cach est ahora ocupada por
la instruccin. Durante la ejecucin del bucle las bsquedas del dato y de la instruccin ocasionarn gran cantidad de cache misses, lo que disminuir fuertemente la velocidad de procesado.
Para resolver este problema exploraremos mapeados alternativos de la cach.
En el mapeado directo 25 direcciones de la memoria principal se mapean a una nica direccin de la cach con la que comparten los 3 bits menos significativos. Estas posiciones estn
destacadas en gris en la Figura 14-3 para el ndice 001. Tal como se ve, en un determinado
instante del tiempo, slo una de las 25 direcciones puede tener la palabra almacenada en la direccin 001 de la cach. Por el contrario, supngase que es posible que las posiciones de la
memoria principal puedan ser mapeadas en posiciones arbitrarias de la cach. Entonces cualquier posicin de la memoria principal se puede mapear a cualquiera de las 8 posiciones de la
cach. Esto significa que la etiqueta ser ahora la direccin completa de la palabra en la memoria principal. Examinaremos ahora el funcionamiento de esta cach de la Figura 14-4 que ahora
presenta un mapeado completamente asociativo. Note que ahora hay 2 direcciones de la memoria principal, 0000010000 y 111111000, con los bits 2 a 4 iguales a 100, entre las etiquetas de la
cach. Estas 2 direcciones no pueden estar presentes simultneamente en una cach con mapeado directo, ya que las 2 ocuparan la direccin de cach 100. De esta forma, ahora se evita la
sucesin de cache misses producida por la bsqueda alternativa del dato y de la instruccin con
igual ndice, puesto que ahora los 2 pueden estar almacenados en la cach.
Supngase ahora que la CPU debe buscar una instruccin de la posicin 0000010000 de la
memoria principal. Esta instruccin puede ser entregada por la cach o por la memoria principal. Puesto que puede estar en la cach sta debe comparar 00000100 con cada una de las 8
etiquetas que almacena. Una forma de hacer esto es leer sucesivamente las etiquetas y palabras
asociadas de la memoria cach y comparar las etiquetas con 00000100, Si alguna comparacin
es satisfactoria, como ocurrir para la direccin dada en la posicin 000 de la Figura 14-4, entonces se produce un cache hit. El control de la cach colocar entonces la palabra en el bus de
la CPU, completando la operacin de bsqueda. Si la etiqueta almacenada en la cach no es
00000100 entonces hay un desacuerdo de las etiquetas y el control de la cach busca las siguientes etiqueta y palabra almacenada. En el peor de los casos, un acuerdo de etiquetas en la
posicin 111, requiere 8 bsquedas en la cach hasta que se produzca el cache hit. A razn de 2
ns cada bsqueda esto requiere al menos 16 ns, aproximadamente la mitad del tiempo necesario
para obtener la instruccin desde la memoria principal. De este modo, la lectura sucesiva de
etiquetas y palabras de la cach hasta que se produzca un acierto no parece un enfoque demasiado

SISTEMAS DE MEMORIA
Direccin

595

Dato

Etiqueta
(a) Direccin de memoria
Etiqueta

Dato

Cach

Memoria principal
(b) Mapeado de cach

FIGURA 14-4
Cach completamente asociativo

interesante. En su lugar se emplea una estructura denominada memoria asociativa que implementa la parte de comparacin de etiquetas de la memoria cach.
La Figura 14-5 muestra una memoria asociativa para una cach con etiquetas de 4 bits. El
mecanismo para escribir etiquetas en la memoria es el habitual. De la misma forma, las etiquetas pueden ser ledas mediante una operacin de lectura convencional. De este modo la memoria asociativa puede usar el slice RAM presentado en el Captulo 9. Se aade a cada fila de
almacenamiento de etiquetas una lgica de comparacin. La implementacin de esta lgica y su
conexin a las clulas de la RAM se muestra en la figura. La lgica de comparacin realiza una
comparacin de igualdad entre la etiqueta E y la direccin D aplicada por la CPU. La lgica de
comparacin est formada por una puerta XOR por cada bit y una puerta NOR que combina las
salidas de todas las XOR. Si todos los bits de la etiqueta y de la direccin son iguales, todas las
salidas de las XOR valen 0 y la salida de la NOR 1, indicando que hay una coincidencia. Si
existe alguna diferencia en cualquiera de los bits de la etiqueta y de la direccin, entonces al
menos una de las XOR entregar un 1 y la NOR entregar un 0, indicando el desacuerdo.
Puesto que todas las etiquetas son distintas slo existen dos situaciones posibles en la memoria asociativa: o existe un acierto y hay un 1 en la salida de comparacin de una etiqueta y 0
en las dems o todas las salidas de comparacin son 0. En una memoria asociativa que almacene las etiquetas de la cach las salidas de la lgica de comparacin atacan las lneas de palabra

596

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Lgica de
comparacin

Seleccin
de palabra
0

Seleccin
de palabra
1

Clula
de RAM

Clula
de RAM

Clula
de RAM

Clula
de RAM

Lgica de comparacin

Clula
de RAM

Clula
de RAM

Clula
de RAM

Clula
de RAM

Lgica de comparacin
Seleccin
de palabra
Clula
de RAM

Clula
de RAM

Clula
de RAM

Clula
de RAM

Lgica de comparacin
Lgica de
lectura/escritura

Lgica de
lectura/escritura

Lgica de
lectura/escritura

Lgica de
lectura/escritura

FIGURA 14-5
Memoria asociativa para etiquetas de 4 bit

de la memoria de palabras a leer. Una seal debe indicar si ha ocurrido un cache hit o un cache
miss. Si esta seal vale 1 para un cache hit y 0 para un cache miss puede ser generada como una
OR de las salidas de comparacin. En caso de un cache hit un 1 en Hit/ miss coloca la palabra
en el bus de memoria de la CPU, mientras que en caso de cache miss un 0 en Hit/ miss indica a
la memoria principal que debe entregar la palabra direccionada.
Como en el caso de la cach con mapeado directo discutido antes, la cach completamente
asociativa debe capturar la palabra y su etiqueta y almacenarlas para futuros accesos. Pero ahora
surge un nuevo problema: en qu posicin de la cach se almacenan la etiqueta y el dato?
Adems de seleccionar el tipo de mapeado el diseador de la cach debe seleccionar la estrategia a emplear para determinar la direccin en la que se almacenarn nuevas etiquetas y datos.
Una posibilidad es elegir la posicin de forma aleatoria. La direccin de 3 bits puede ser leda

SISTEMAS DE MEMORIA

597

de una estructura hardware sencilla que genere un nmero que satisfaga algunas propiedades de
los nmeros aleatorios. Una estrategia algo ms elaborada sera: primero en entrar, primero en
salir (First In, First Out, FIFO). En este caso la posicin seleccionada para ser reemplazada
sera la que lleve ocupada ms tiempo, basndonos en la nocin de que la entrada ms antigua
es la que, con mayor probabilidad, haya dejado de ser usada. Otro enfoque para resolver este
problema de forma aun ms directa es el denominado usado menos recientemente (Least Recently Used, LRU). En este enfoque la entrada que se reemplaza es la que lleve sin usarse ms
tiempo. La razn de ser de este enfoque es que la entrada de la cach que lleve ms tiempo si
usarse es la que menos probabilidades tiene de ser usada en el futuro. Aunque el enfoque LRU
arroja mejores prestaciones para las cachs, la diferencia entre este y otros enfoques no es demasiado grande, pero su implementacin es costosa. Por ello el enfoque LRU es a menudo slo
aproximado, si es que llega a usarse en algn caso.
Existen adems algunos aspectos de coste y prestaciones a considerar en la cach completamente asociativo. Aunque sta presenta la mayor flexibilidad y mejores prestaciones, no est
claro que su coste est justificado. De hecho, existe un mapeado alternativo, que es un compromiso entre al mapeado directo y el completamente asociativo, que presenta mejores prestaciones
y elimina el coste de la mayora de la lgica de comparacin. En este mapeado los bits bajos de
la direccin funcionan como en el mapeado directo; pero para cada combinacin de estos bits
bajos, en vez de existir una nica posicin en la cach existe un conjunto de posiciones. Como
ocurre en el mapeado directo las etiquetas y palabras se leen de las posiciones de la memoria de
la cach direccionadas por los bits de menor peso de la direccin. Por ejemplo, si el tamao del
conjunto es 2, entonces se leen dos etiquetas y dos palabras simultneamente. Estas etiquetas se
comparan simultneamente con la direccin entregada por la CPU mediante slo dos circuitos
de comparacin. Si una de las etiquetas se compara satisfactoriamente con la direccin entonces
la palabra asociada se entrega a la CPU a travs del bus de memoria. Si ninguna de las etiquetas
casa con la direccin entonces se enva una seal de cache miss a la CPU y a la memoria principal. Dado que existen conjuntos de posiciones y la asociatividad se aplica sobre estos conjuntos,
esta tcnica se denomina mapeado asociativo por conjuntos (set-associative mapping). Este
mapeado con tamao de conjuntos s se denomina mapeado asociativo por conjuntos de s vas
(s-way set-associative mapping).
La Figura 14-6 muestra una cach asociativa por conjuntos de 2 vas. Existen 8 posiciones
en la cach distribuidas en 4 filas de dos posiciones cada una. Las filas se direccionan mediante
un ndice de 2 bits y contienen etiquetas formadas por los restantes 6 bits de la direccin de la
memoria principal. La entrada en la cach para una direccin de la memoria principal debe localizarse en una fila concreta de la cach, pero puede estar en cualquiera de las dos columnas.
El la figura las direcciones son las mismas que en la cach completamente asociativa de la Figura 14-4. Note que no se muestra ningn mapeado para la direccin de memoria principal
1111100000, dado que las dos clulas de la cach en el conjunto 00 estn ocupadas por las direcciones 00000100000 y 1111110000. Para poder albergar la direccin 1111100000 el tamao
de los conjuntos debiera ser al menos 3. Este ejemplo ilustra el caso en el que la menor flexibilidad de la cach asociativa por conjuntos, comparada con la cach completamente asociativa,
tiene impacto sobre las prestaciones del circuito. Este impacto es menor segn se aumenta el
tamao de los conjuntos.
La Figura 14-7 es una seccin del diagrama de bloques de la cach asociativa por conjuntos
de la Figura 14-6. El ndice se usa para direccionar cada fila de la memoria de la cach. Las dos
etiquetas ledas de la memoria de etiquetas son comparadas con la parte de la etiqueta de la
direccin en el bus de la CPU. Si ocurre un acierto el buffer de tres estados de la memoria
de datos correspondiente se activa, colocando los datos en el bus de la CPU. Adems, la seal

598

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS


Direccin

Dato

Etiqueta
ndice
(a) Direccin de memoria

ndice
Etiqueta

Dato

Etiqueta

Cach

Dato

Cach

Memoria principal
(b) Mapeado de cach

FIGURA 14-6
Cach asociativa por conjuntos de 2 vas
Bus de direccin

Memoria principal

Eti- ndice
queta

Memoria de Memoria de Memoria de Memoria de


etiquetas 1 etiquetas 0 datos 1
datos 0

Lgica de
comparacin

Lgica de
comparacin

Bus de datos

Memoria principal

FIGURA 14-7
Diagrama de bloques parcial del hardware de una cach asociativa por conjuntos

de acierto origina que la salida de la puerta OR Hit/miss se ponga a 1, indicando un cache hit.
Si no ocurre el acierto entonces Hit/miss es 0, informando a la memoria principal que debe
entregar la palabra a la CPU e informando a la CPU de que la palabra se retrasar.

SISTEMAS DE MEMORIA

599

Tamao de lnea
Hasta ahora hemos supuesto que cada entrada en la cach consiste en una etiqueta y una nica
palabra. En las cachs reales debe explotarse la localidad espacial, con lo que en cada entrada
de la cach se incluyen adems palabras cercanas a la direccionada. Entonces, cada vez que
ocurre un cache miss, en vez de traerse de la memoria principal una nica palabra se trae un
bloque de l palabras denominado lnea. El nmero de palabras en una lnea es una potencia
entera de 2 y las palabras estn convenientemente alineadas. Por ejemplo, si las lneas estn
formadas por 4 palabras entonces las direcciones de las palabras de una lnea slo difieren en
los bits 2 y 3. El uso de bloques de palabras cambia la forma en que la cach divide las direcciones en campos. La nueva estructura de campos se muestra en la Figura 14-8(a). Los bits 2 y
3, el campo de palabra, se emplean para direccionar la palabra dentro de la lnea. En este caso
se emplean dos bits, puesto que hay 4 palabras por lnea. El siguiente campo, ndice, identifica
el conjunto. Aqu hay 2 bits, de modo que hay 4 conjuntos de etiquetas y lneas. Los bits restantes de la direccin de la palabra son el campo de etiqueta, que contiene los restantes 4 bits de la
direccin de 10 bits.
La estructura resultante para la cach se muestra en la Figura 14-8(b). La memoria de etiquetas tiene 8 entradas, dos en cada uno de los 4 conjuntos. Para cada entrada de etiqueta existe
una lnea de 4 palabras de datos. Para asegurar un funcionamiento rpido el ndice se aplica a la

Etiqueta

ndice Palabra

(a) Direccin de memoria

ndice

Etiqueta 1

Dato 1

Palabra

Etiqueta 0

Dato 0

Palabra

Cach
(b) Mapeado de cach

FIGURA 14-8
Cach asociativa por conjuntos con lneas de 4 palabras

Memoria principal

600

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

memoria de etiquetas para leer simultneamente dos etiquetas, una para cada conjunto de entradas. A la vez, el ndice y la direccin de palabra se aplican para leer dos palabras de la memoria
cach de datos que se corresponden con las etiquetas. Una lgica de comparacin para cada
conjunto compara las etiquetas con la direccin aportada por la CPU. Si ocurre un acierto la
palabra de datos correspondiente, ya leda, es colocada en el bus de memoria de la CPU. En
caso contrario se seala un cache miss y la palabra buscada es entregada por la memoria principal a la CPU. La lnea conteniendo la palabra y su etiqueta es tambin cargada en la cach. Para
facilitar la carga de lneas completas la anchura del bus de memoria entre la cach y la memoria
principal, y tambin el camino de datos de la cach, tiene una anchura mayor que una palabra.
Idealmente, para nuestro ejemplo, el camino tendra una anchura de 4 32 % 128 bits. Esto permite que una lnea completa pueda ser colocada en la cach en un nico ciclo de lectura de la
memoria principal. Si el camino es ms estrecho entonces se necesitara una secuencia de varias
lecturas de la memoria principal.
Otra decisin que el diseador de la cach debe tomar es el tamao de la lnea. Un bus ancho puede afectar al coste y a las prestaciones y uno estrecho puede ralentizar la transferencia
de una lnea a la cach. Estas circunstancias aconsejan emplear un tamao de lnea pequeo,
pero la localidad espacial aconseja lo contrario. En los sistemas actuales, basados en DRAM
sncrona, es fcil leer o escribir lneas grandes sin los problemas de coste y prestaciones comentados. Las rpidas operaciones de lectura y escritura en memoria de palabras consecutivas conseguidas por la memoria DRAM sncrona casan bien con la necesidad de transferir largas lneas
de cach.

Carga de la cach
Antes de que cualquier etiqueta o palabra haya sido cargada en la cach todas sus posiciones
contienen informacin invlida. Si en este tiempo se produce un cache hit entonces la palabra
buscada y enviada a la CPU no provendr de la memoria principal y ser invlida. Segn se van
buscando lneas en la memoria principal y van siendo cargadas en la cach las entradas de la
cach van siendo vlidas, pero no existe ningn mecanismo que permita determinar qu entradas son vlidas y cuales no. Para solventar este problema se aade a cada entrada de la cach,
junto con la etiqueta, un bit de validez. El bit de validez indica que la lnea asociada de la cach
es vlida (1) o invlida (0). Es ledo junto con la etiqueta. Si el bit de validez es 0, entonces se
produce un cache miss, incluso cuando la etiqueta coincida con la direccin entregada por la
CPU, de forma que el dato ser ledo desde la memoria principal.

Mtodos de escritura
Hasta ahora nos hemos centrado en la lectura de instrucciones y datos de la cach. Qu sucede
cuando ocurre una escritura? Recordemos que, hasta ahora, las palabras en la cach han sido
simplemente copias de las palabras de la memoria principal que se leen de la memoria cach
para conseguir accesos ms rpidos. Pero ahora, que estamos considerando la escritura de resultados, este punto de vista debe cambiar. Las 3 posibles acciones a realizar cuando se desea realizar una escritura son:
1.
2.
3.

Escribir el resultado en memoria principal


Escribir el resultado en la cach
Escribir el resultado en la cach y en la memoria principal

SISTEMAS DE MEMORIA

601

Los mtodos empleados en la prctica realizan una o varias de estas acciones. Estos mtodos se pueden dividir en 2 categoras principales: write-through y write-back 5.
En write-through el resultado se escribe siempre en la memoria principal. Esto necesita el
tiempo de acceso a la memoria principal y puede ralentizar el procesamiento. Esta ralentizacin
puede ser paliada en cierta medida mediante el mecanismo de buffering, una tcnica en la que
el dato a escribir y su direccin son almacenados por la CPU en registros especiales, denominados buffers de escritura, de forma que la CPU pueda continuar el procesado durante la operacin de escritura en memoria principal. En la mayora de los diseos de cachs el resultado
tambin se escribe en la cach si la palabra ya estaba all es decir, si se produce un cache hit.
En el mtodo write-back, tambin llamado copy-back, la CPU realiza la escritura en la cach slo cuando se produce un cache hit. Si hay un cache miss, la CPU realiza la escritura en la
memoria principal. Existen dos posibles diseos para el caso de que se produzca un cache miss.
Uno consiste en leer la lnea que contiene la palabra a escribir en la memoria principal en la
cach, con la nueva palabra escrita tanto en la cach como en la memoria principal. Esto se
denomina write-allocate. Esto se hace en la esperanza de que se realicen nuevas escrituras sobre
el mismo bloque, lo que dar lugar a cache hits, evitando ulteriores escrituras en la memoria
principal. En lo que sigue supondremos que se emplea write-allocate.
El objetivo de una cach write-back es ser capaz de escribir a la velocidad de la cach cuando se produce un cache hit. Esto evitar que todas las escrituras se realicen a la velocidad, lenta,
de la memoria principal. Adems se reducir el nmero de accesos a la memoria principal, hacindola ms accesible a DMA, a un procesador de entrada/salida o a otra CPU del sistema.
Una desventaja del mtodo write-back es que las entradas de la memoria principal correspondientes a palabras de la cach que han sido escritas son invlidas. Desgraciadamente esto puede
causar un problema con los procesadores de entrada/salida u otras CPUs que estn accediendo a
la misma memoria principal debido a datos caducados (stale) en la memoria principal.
La implementacin del concepto write-back requiere una operacin de escritura pospuesta
(write-back) de la posicin de la memoria cach que vaya a servir para almacenar una nueva
lnea de la memoria principal cuando se produce un cache miss en lectura. Si la posicin en la
cach contiene una palabra que haya sido escrita, entonces toda la lnea de la cach debe ser
escrita en la memoria principal para as liberar esa posicin para una nueva lnea. Esta escritura
necesita un tiempo adicional cuando se produce un cache miss en lectura. Para evitar que se
produzca esta operacin de escritura en cada cache miss de lectura se aade un nuevo bit a cada
entrada de la cach. Este bit, denominado dirty bit 6, que est a 1 si la lnea de la cach ha sido
escrita y a 0 en caso contrario. La operacin de escritura de la lnea de la cach en la memoria
principal slo se efecta si el dirty bit vale 1. Si se emplea write-allocate en una cach writeback entonces la operacin de escritura de la lnea de la cach en la memoria principal tambin
deber efectuarse cuando se produzca un cache miss de escritura.
Existen otros muchos aspectos a considerar a la hora de elegir los parmetros de diseo de
una cach, especialmente para cachs que van a trabajar en sistemas en los que la memoria principal puede ser leda o escrita por dispositivos distintos a la CPU a la que sirve la cach.

Integracin de conceptos
Ahora integraremos todos los conceptos examinados para obtener el diagrama de bloques de
una cach asociativa por conjuntos, de 2 vas, write-through de 256 kB. Las direcciones de me5 N. del T.: Las expresiones inglesas write-through y write-back no suelen ser traducidas al espaol.
6 N. del T.: A veces se emplea en espaol la expresin bit sucio.

602

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

moria mostradas en la Figura 14-9(a) son de 32 bits y emplean direccionamiento de bytes, siendo la longitud de lnea l % 16 bytes. El ndice contiene 12 bits. Dado que se emplean 4 bits para
direccionar palabras y bytes y 13 bits para el ndice, la etiqueta contiene los 15 bits restantes de
la direccin. Cada entrada de la cach contiene 16 bytes de datos, una etiqueta de 15 bits y un
bit de validez. La estrategia de reemplazo es aleatoria.
La Figura 14-9(b) presenta el diagrama de bloques de la cach. Puesto que la cach es de 2
vas existen 2 memorias de datos y otras 2 de etiquetas. Cada una de estas memorias contienen
213 % 8192 entradas. Cada entrada en la memoria de datos contiene 16 bytes. Puesto que se
emplean palabras de 32 bits hay 4 palabras en cada entrada de datos de la cach. De este modo,
cada memoria de datos consiste en 8192 32 memorias en paralelo con el ndice como bus de
direcciones. Con el fin de leer una nica palabra de estas 4 memorias cuando se produce un
cache hit, un multiplexor 4 a 1 que emplea las salidas de 3 estados de las memorias selecciona
la palabra en base a los 2 bits del campo de palabra de la direccin. Las dos memorias de etiquetas son de 8192 15, y adems hay un bit de validez asociado a cada entrada de la cach.
Estos bits son almacenados en una memoria de 8192 2 y ledos durante cada acceso a la cach
junto con los datos y las etiquetas. Note que el camino de datos entre la cach y la memoria
principal es de 128 bits. Esto nos permite presumir que una lnea entera podr ser leda de la
memoria principal en un nico ciclo de lectura, una suposicin que no tiene por qu ser cierta
en la prctica. Para comprender los elementos de la cach y cmo trabajan en conjunto estudiaremos los 2 posibles casos de lectura y escritura. Para cada uno de estos casos supondremos que
la direccin de la CPU es 0F3F402416. Esto da etiqueta % 0000111100111112 % 079F16, ndice % 10100000000102 % 140216 y palabra % 012.

Etiqueta

ndice

Palabra

(a) Direccin de memoria


Bus de direcciones

Controlador
de cach

ndice

Etiqueta

Memoria
principal
Memoria
principal

Bus de datos de la cach

Memoria de
etiquetas 1

Memoria de Memoria Memoria


etiquetas 1 de datos 1 de datos 1

Bit valid 1
Bit valid 0
Lgica de
comparacin

Lgica de
comparacin

Bus de datos
de la CPU
(b) Diagrama de cach

FIGURA 14-9
Diagrama de bloques detallado de una cach de 256 K

Palabra

SISTEMAS DE MEMORIA

603

Primero supondremos un cache hit de lectura, una operacin de lectura en la que la palabra
est en una entrada de la cach, como en la Figura 14-10. La cach emplea el campo de ndice
para leer dos etiquetas de la posicin 140216 de las memorias de etiquetas 1 y 0. La lgica de
comparacin compara las etiquetas de las entradas y en este caso supondremos que la etiqueta 0
casa, haciendo que Match 0 valga 1. Esto no implica necesariamente que haya un cache hit,
puesto que la entrada puede ser invlida. Entonces se hace la AND de Match 0 con el bit Valid
0 de la posicin 140216. Adems el dato puede ser colocado en el bus de la CPU slo cuando la
operacin es una lectura. Por ello se hace la AND de Read con el bit Match 0 con el bit Valid 0
para obtener la seal de control de buffer de 3 estados 0. En este caso la seal de control para el
buffer 0 es 1. Las memorias de datos han empleado el campo ndice para leer ocho palabras de
la posicin 140616 a la vez que se lean las etiquetas. El campo de palabra selecciona las 2 de
estas 8 con palabra % 012 para colocarlas en el bus de datos que lleva a los buffer de 3 estados 1
y 0. Finalmente, al estar activado el buffer de tres estados 0, la palabra direccionada es colocada
en el bus de datos de la CPU. Adems la seal enva un 1 a la CPU y a la memoria principal
para notificar que ha habido un cache hit.
En el segundo caso, tambin mostrado en la Figura 14-10, suponemos que se produce un
cache miss de lectura una operacin de lectura en la que la palabra no se encuentra en la
cach. Como antes, el campo de ndice sirve para leer las etiquetas y los bits de validez, se
efectan dos comparaciones y se chequean dos bits de validez. Para estas 2 entradas ocurre un
cache miss que es sealizado por Hit/miss a 0. Esto significa que la palabra debe ser leda de la
memoria principal. Por ello, el controlador de cach selecciona la entrada de la cach que ser
reemplazada y 4 palabras ledas de la memoria principal se aplican simultneamente al bus de
datos de la cach y escritas en la entrada de la cach. A la vez, el multiplexor 4 a 1 selecciona
la palabra direccionada por el campo de palabra y la coloca en el bus de datos de la CPU empleando el buffer de 3 estados 3.
En el tercer caso de la Figura 14-10 suponemos una operacin de escritura. La palabra de
la CPU simplemente es copiada en las 4 posiciones de memoria del bus de datos de 128 bits
Bus de direcciones

Controlador
de la cach

ndice

Etiqueta

Memoria
principal

Bus de datos de la cach

Memoria de
etiquetas 1

Memoria Memoria
de datos 1 de datos 0

Bit valid 1
Bit valid 0
Lgica de
comparacin

Lgica de
comparacin

FIGURA 14-10
Cach de 256 K: operaciones de lectura y escritura

Palabra

604

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

de la memoria principal. La direccin en la que debe escribirse esta palabra se aplica al bus de
direcciones de la memoria principal para que sea escrita en la posicin de la palabra direccionada. Si la direccin causa un cache hit entonces el dato es tambin copiado en la cach.

Cachs de instrucciones y datos


En la mayora de los diseos de los captulos anteriores hemos supuesto que era posible buscar
una instruccin y leer un operando o escribir un resultado en un slo ciclo de reloj. Para hacer
esto necesitamos una cach que pueda acceder a dos direcciones distintas en un slo ciclo de
reloj. Para responder a esta necesidad discutimos en una subseccin anterior el uso de una cach
para instrucciones y otra para datos. Esto, adems de permitir de forma sencilla el acceso simultneo a varias direcciones permite que las cachs puedan tener distintos parmetros de diseo.
Los parmetros de diseo de cada cach se pueden elegir de forma que se adapten a las caractersticas del acceso para bsqueda de instrucciones o para lectura y escritura de datos. Puesto que
los requerimientos para estas cachs son usualmente menos estrictos que los de una nica cach
es posible que puedan ser empleados diseos ms simples. Por ejemplo, una nica cach puede
requerir mapeado selectivo por conjuntos de cuatro vas, mientras que una cach de instrucciones puede necesitar un simple mapeado directo y un cach de datos puede necesitar una estructura asociativa por conjuntos de dos vas.
En otros casos podr emplearse una nica cach para instrucciones y datos. El tamao de
esta cach unificada es usualmente el tamao combinado de las cachs de instrucciones y datos.
La cach unificada permite que sus entradas sean usadas indistintamente para instrucciones y
para datos. De este modo, en un instante del tiempo habr ms entradas ocupadas por instrucciones y en otro instante habr ms ocupadas por datos. Esta flexibilidad posibilita el que haya
un nmero mayor de cache hits. Este mayor nmero de cache hits puede ser engaoso, puesto
que ahora la cach slo puede manejar un acceso en cada ciclo de reloj, mientras que las cachs
separadas permiten dos accesos simultneos, siempre que uno sea para instrucciones y el otro
para datos.

Cachs de mltiples niveles


Es posible extender la profundidad de la jerarqua de memoria aadiendo niveles adicionales de
cach. A menudo se emplean dos niveles de cach, referidos como L1 y L2, con L1 el ms
prximo a la CPU. Para satisfacer las demandas de la CPU de instrucciones y datos se necesita
un cach L1 muy rpido. Para alcanzar la velocidad requerida el retardo que se produce al salir
de circuito integrado es intolerable. Por ello, el cach L1 se integra, junto con la CPU, en un
nico circuito integrado, y se denomina cach interna, como en el procesador genrico. Pero el
rea disponible en un circuito integrado es limitada, de forma que la cach L1 es usualmente
pequea e inadecuada si es la nica cach en el sistema. Por ello se aade una cach mayor L2
fuera del circuito integrado del procesador.
El diseo de una cach de dos niveles es ms complicado que el de una cach de un slo
nivel. Deben especificarse dos juegos de parmetros. La cach L1 se puede disear para unos
requerimientos concretos de acceso de la CPU, incluyendo la posibilidad de que haya dos cachs separadas para instrucciones y datos. Adems se eliminan las limitaciones en cuanto a pines externos entre la CPU y la cach L1. Adems, para permitir lecturas ms rpidas el camino
entre la CPU y la cach L1 puede ser muy ancho, lo que permitir la bsqueda simultnea de
varias instrucciones. Por otro lado, la cach L2 ocupa el lugar de una cach externa. Sin embar-

SISTEMAS DE MEMORIA

605

go, difiere de una cach tpica en que en vez de proveer datos e instrucciones a la CPU lo hace
a la cach de primer nivel L1. Dado que la cach L2 slo es accedida cuando se produce un
cache miss en L1 sus patrones de acceso son considerablemente distintos de los generados por
la CPU, con lo que sus parmetros de diseo tambin lo son.

14-4 MEMORIA VIRTUAL


En nuestra bsqueda de una memoria grande y rpida, hemos conseguido la apariencia de una
memoria rpida y de tamao medio mediante el uso de una cach. Con el fin de conseguir la
apariencia de una memoria grande exploraremos ahora la relacin entre la memoria principal y
el disco duro. Dada la complejidad del manejo de las transferencias entre estos dos medios su
control requerir el uso de estructuras de datos y programas. Inicialmente discutiremos las estructuras de datos bsicas involucradas y el hardware y software necesarios. Posteriormente nos
ocuparemos del hardware especfico necesario para efectuar algunas operaciones crticas en
cuanto a su velocidad.
Con respecto al tamao de la memoria, no slo queremos que el espacio de direcciones virtual parezca que es la memoria principal, sino que en la mayora de los casos tambin queremos
que este espacio parezca accesible a cada programa que se est ejecutando. As cada programa
ver un tamao de memoria igual a la totalidad de espacio de direcciones virtual. Igualmente
importante es para el programador el hecho de que el espacio de direcciones real en la memoria
principal y las direcciones reales en el disco son reemplazados por un nico espacio de direcciones que no tienen ninguna restriccin en su uso. Con esta disposicin la memoria virtual no slo
sirve para dar la apariencia de una memoria grande, sino que adems libera al programador de
la necesidad de considerar las ubicaciones reales de los datos en la memoria principal y en el
disco duro. El trabajo del software y del hardware que implementan la memoria virtual es mapear cada direccin virtual, para cada programa, en direcciones fsicas en la memoria principal.
Adems, con un espacio de direcciones virtual para cada programa, que dos direcciones virtuales distintas de dos programas distintos apunten a la misma direccin fsica. Esto permite compartir datos entre varios programas, reduciendo de esta forma los requerimientos en cuanto a
tamao de memoria principal y tamao del disco.
Para permitir al software mapear direcciones virtuales en direcciones fsicas y para facilitar
la transferencia de informacin entre la memoria principal y el disco duro, el espacio de direcciones virtual se divide en bloques de direcciones, normalmente de tamao fijo. Estos bloques,
denominados pginas, son mayores que las lneas de una cach, pero anlogos a ellas. El espacio de direcciones fsicas se divide en bloques denominados marcos de pgina (page frames)
que son del mismo tamao que las pginas. Cuando una pgina est presente en el espacio de
direcciones fsicas lo est ocupando un marco de pgina. A modo de ejemplo supondremos que
una pgina est formada por 4 K bytes (1 K palabras de 32 bits). Adems supondremos que las
direcciones virtuales son de 32 bits. Existe un mximo de 220 pginas en el espacio de direcciones virtuales y, suponiendo una memoria principal de 16 M bytes, existen 212 marcos de pgina
en la memoria principal. La Figura 14-11 muestra los campos de una direccin virtual y una
fsica. La porcin de la direccin virtual empleada para direcciones palabras o bytes en una pgina es el desplazamiento de pgina (page offset), y es la nica parte de la direccin compartida
entre las direcciones virtuales y las fsicas. Note que se supone que las palabras estn alineadas
con respecto a las direcciones de byte, de modo que la direccin de una palabra siempre termina, en binario, en 00. De la misma forma, las pginas se supone que estn alineadas con respecto a las direcciones de byte, de modo que el desplazamiento de pgina del primer byte de una

606

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Desplazamiento
de pgina

Nmero de pgina virtual

Direccin virtual

Nmero de
marco fsico

Desplazamiento
de pgina

Direccin fsica
Pgina virtual
Marco fsico

Memoria principal

FIGURA 14-11
Campos de direcciones virtuales y fsicas y mapeado

pgina es 00016 y el desplazamiento de pgina del ltimo byte de un pgina es FFF16. Los 20
bits de la direccin virtual empleados para seleccionar pginas en el espacio de direcciones virtuales se denominan nmero de pgina virtual. Los 12 bits de la direccin fsica empleados para
seleccionar pginas de la memoria principal se denominan nmero de marco de pgina. la figura muestra un mapeado hipottico del espacio de direcciones virtuales en el espacio de direcciones fsicas. Los nmeros de pginas virtuales y fsicas se dan en hexadecimal. Una pgina virtual puede ser mapeada a cualquier marco de pgina. Se muestran 6 mapeados de pginas de
memoria virtual a memoria fsica. Estas pginas constituyen un total de 24 K bytes. Note que no
existen pginas virtuales mapeadas a los marcos de pgina FFC ni FFE. As, cualquier dato presente en estas pginas es invlido.

Tablas de pginas
En general existirn un nmero muy elevado de pginas virtuales, cada una de las cuales debe
ser mapeada a memoria principal o al disco duro. Este mapeado es almacenado en una estructura

SISTEMAS DE MEMORIA

607

de datos denominada la tabla de pginas. Existen muchas formas de construir la tabla de pginas y de acceder a ella; nosotros asumiremos que esta tabla se almacena en pginas. Suponiendo
que una palabra puede representar el mapeado de una pgina, una pgina de 4 KB puede almacenar 210, o 1 K, mapeados. As el mapeado concreto para el espacio de direcciones de un programa de 222 bytes (4 MB) puede ser almacenado en una pgina de 4 KB. Una tabla especial
para cada programa, denominada la pgina directorio, contiene el mapeado para ubicar las tablas de pginas de 4 KB.
En la Figura 14-12 se muestra un formato sencillo para una entrada de la tabla de pginas.
Doce bits se emplean para designar el marco de pgina en el que se encuentra ubicada la pgina
en memoria principal. Adems existen tres campos de un nico bit cada uno. Valid, Dirty y
Used. Si Valid es 1 entonces el marco de pgina es vlido, siendo invlido en caso contrario. Si
Dirty es 1 entonces ha ocurrido al menos una escritura en la pgina desde que fue colocada en
la memoria principal, no habiendo existido escrituras en caso contrario. Note que los bits Valid
y Dirty se corresponden con los homnimos de la cach write-back. Cuando es necesario eliminar una pgina de la memoria principal y su bit Dirty es 1 entonces la pgina debe ser copiada
en el disco duro. Si el bit Dirty es 0 entonces la nueva pgina que va a ocupar el marco de
pgina es simplemente copiada sobre la pgina existente. Esto puede hacerse puesto que la versin existente en el disco de la pgina que va a sobrescribirse sigue siendo correcta. Esto puede
hacerse porque el software toma nota en algn sitio de la localizacin de la pgina en el disco
cuando carga la pgina en la memoria principal. El bit Used sirve para implementar una aproximacin burda del mecanismo de reemplazo LRU. Algunos otros bits de la entrada de la tabla de
pginas pueden reservarse para almacenar flags usados por el sistema operativo. Por ejemplo,
algunos flags pueden indicar protecciones de lectura y escritura de la pgina cuando sta es
accedida en modo usuario o en modo supervisor.
La estructura de la tabla de pginas que acabamos de describir se muestra en la Figura 14-13.
El puntero a la pgina directorio es un registro que apunta a la posicin de la pgina directorio
en memoria principal. la pgina directorio contienen la posicin de hasta 1 K tablas de pgina
asociadas al programa que se est ejecutando. Estas tablas de pgina pueden estar en la memoria principal o en el disco duro. La tabla de pginas a acceder se obtiene de los 10 MSBs del
nmero de pgina virtual, que se denominan desplazamiento de directorio (directory offset). Suponiendo que la tabla de pginas seleccionada est en memoria principal, sta puede ser accedida por su nmero de pgina. Los 10 LSBs del nmero de pgina virtual, que llamaremos desplazamiento de tabla de pgina (page table offset) pueden emplearse para acceder a la entrada de
la pgina que desea alcanzarse. Si la pgina se encuentra en memoria principal, el desplazamiento de pgina se emplea para localizar la direccin fsica de la palabra o byte buscado. Si la
tabla de pginas o la pgina buscada no se encuentran en memoria principal entonces debe ser
buscada por el software en el disco duro y colocada en memoria principal antes de que pueda
ser accedida. Compruebe que la combinacin de desplazamientos con registros o con entradas
de las tablas se hace simplemente mediante yuxtaposicin, en vez de mediante sumas. Esto no
requiere retardos, mientras que la suma originara retardos importantes.
Bit validity
Bit dirty
Bit used
Nmero de marco fsico

FIGURA 14-12
Formato de las entradas en la tabla de pginas

608

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

Nmero de pgina virtual


Desplazamiento
de directorio
Puntero a la pgina
de directorio

Desplazamiento
de tabla de pgina

Directorio

Desplazamiento
de pgina
Tabla de pginas

Pginas

Nmero
de pgina
de la
tabla de
pginas

Nmero
pgina
de marco

FIGURA 14-13
Ejemplo de estructura de la tabla de pginas

Translation Lookaside Buffer7


De la discusin precedente notamos qua la memoria virtual supone una importante merma en
las prestaciones del sistema, incluso en el caso ideal de que el directorio, la tabla de pginas y la
pgina a acceder se encuentren en memoria principal. Para el enfoque supuesto se necesitan tres
accesos sucesivos a la meoria principal para acceder a un slo operando o instruccin:
1. Acceder a la entrada en el directorio
2. Acceder a la entrada de la tabla de pginas
3. Acceder al operando o instruccin
Vase que estos accesos se realizan automticamente por el hardware que es parte de la
MMU de la computadora genrica. As, para conseguir que la memoria virtual sea factible es
necesario reducir drsticamente los accesos a memoria principal. Si dispusisemos de una cach
y si todas las entradas estuviesen en la cach entonces el tiempo de cada acceso se reducira.
Aun as seran necesarios 3 accesos a esta cache. Para reducir el nmero de accesos emplearemos una cach ms dedicada a traducir las direcciones virtuales en direcciones fsicas. Esta cach se denomina translation lookaside buffer (TLB). Contiene las posiciones de las pginas accedidas ms recientemente para as acelerar el acceso a la cach o a la memoria principal. la
Figura 14-14 muestra en ejemplo de un TLB, que normalmente es completamente asociativo o
asociativo por conjuntos, puesto que necesario comparar el nmero de pgina virtual de la CPU
7 N. del T.: Esta expresin no suele traducirse al espaol.

SISTEMAS DE MEMORIA

609

Direccin virtual de la CPU


Nmero de pgina virtual

Entrada de nmero de pgina


Bit valid
Bit dirty

Desplazamiento
de pgina

Cach completamente asociativa


o asociativa por consumos
Dato

Etiqueta

Nmero de pgina virtual

Nmero de marco fsico

Salida de nmero de marco


Nmero de marco

Desplazamiento
de pgina

FIGURA 14-14
Ejemplo de Translation Lookaside Buffer

con varias etiquetas de nmeros de pginas virtuales. Adems de esto, cada entrada de la cach
incluye el nmero de pgina fsica para aquellas pginas que se encuentran en la memoria principal y un bit de validez. Si la pgina se encuentra en memoria principal tambin se incluye un
bit Dirty. El bit Dirty es anlogo para una pgina en memoria principal que el discutido previamente para una lnea de la cache.
Estudiaremos brevemente un acceso a memoria empleando el TLB de la Figura 14-14. El
nmero de pgina virtual se aplica a la entrada de nmeros de pgina de la cache. Dentro de la
cach este nmero de pgina se compara simultneamente con todas las etiquetas de nmeros
de pgina virtuales. Si alguna comparacin es positiva y el bit Valid est a 1, entonces ha ocurrido un TLB hit y el nmero de marco de pgina aparece en la salida de nmero de pgina de la
cach. Esta operacin puede realizarse muy rpidamente y genera la direccin fsica necesaria
para acceder a la memoria o a la cach. Por otro lado, si hay un TLB miss, entonces ser necesario acceder a la memoria principal para leer la entrada en el directorio y en la tabla de pginas.
Si la pgina fsica est en la memoria principal entonces la entrada en la tabla de pginas se
introduce en el TLB reemplazando alguna de las entradas existentes. En total se necesitan 3
accesos a memoria, incluyendo el acceso al operando. Si la pgina fsica no se encuentra en la
memoria principal entonces ocurre un fallo de pgina (page fault). En este caso el software se
encarga de traer la pgina desde el disco duro a la memoria principal. Durante el tiempo necesario para realizar esta operacin la CPU puede ejecutar un programa diferente, mejor que esperar
a que la pgina sea almacenada en la memoria principal.
Considerando la jerarqua previa de acciones, basada en la presentacin de una direccin
virtual, vemos que la efectividad de la memoria virtual depende en la localidad espacial y tem-

610

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

poral. La respuesta ms rpida ocurre cuando el nmero de pgina virtual se encuentra en el


TLB. Si el hardware es suficientemente rpido y hay un cache hit el operando puede estar disponible en tan slo 1 o 2 ciclos de reloj de la CPU. Esto ser tanto ms frecuente si a lo largo
del tiempo se tiende a acceder a las mismas pginas virtuales. Debido al tamao de las pginas,
si un operando de una pgina es accedido entonces, debido a la localidad espacial, es probable
que otros operandos de la misma pgina tambin lo sean. Debido a la capacidad limitada del
TLB, la siguiente accin ms rpida requiere 3 accesos a la memoria principal y ralentiza el
procesado considerablemente. En la peor de las situaciones la tabla de pginas y la pgina a
acceder no se encuentran en la memoria principal. Entonces se requiere la lenta transferencia
de 2 pginas la tabla de pginas y la pgina desde el disco duro.
Vase que el hardware bsico para implementar la memoria virtual, el TLB, y otras caractersticas opcionales para el acceso a memoria se incluyen en la MMU de la computadora genrica. Entre estas caractersticas se encuentra el soporte hardware para un nivel adicional de direccionamiento virtual, denominado segmentacin, y mecanismos de proteccin que permitan el
adecuado aislamiento y comparticin de programas y datos.

Memoria virtual y cach


Aunque hemos considerado la cach y la memoria virtual separadamente, en un sistema real los
ms probable es que las dos estn presentes. En este caso, la direccin virtual es convertida en
una direccin fsica, y sta es aplicada a la cache. Suponiendo que el TLB emplea un ciclo de
reloj y la cach otro, en el mejor de los casos la bsqueda de una instruccin o de un dato requiere dos ciclos de reloj de la CPU. En consecuencia, en muchos diseos de CPUs segmentadas se permiten 2 o ms ciclos de reloj para la bsqueda de operandos. Dado que las direcciones
de bsqueda de instrucciones son mucho ms predecibles que las de datos, es posible modificar
la segmentacin de la CPU y considerar el TLB y la cach como otro segmento de dos etapas,
de modo que la bsqueda de una instruccin aparenta consumir un nico ciclo de reloj.

14-5

RESUMEN DEL CAPTULO


En este captulo hemos examinado los componentes de la jerarqua de memoria. Dos conceptos
fundamentales de esta jerarqua con la memoria cach y la memoria virtual.
Basndose en el concepto de localidad de referencias, una cach en una memoria pequea y
rpida que almacena los operandos e instrucciones que, con mayor probabilidad, van a ser usados por la CPU. Normalmente una cach aparenta ser una memoria del tamao de la memoria
principal pero con la velocidad prxima a la de la cach. Una cach trabaja comparando la porcin de la etiqueta de la direccin de la CPU con las etiquetas de las direcciones de los datos en
la cach. Si una comparacin es satisfactoria, y se verifican otros requisitos, entonces ocurre un
cache hit y el dato puede ser obtenido de la cach. Si ocurre un cache miss entonces el dato
debe ser obtenido de la memoria principal, ms lenta. El diseador de la cach debe determinar
los valores de un nmero de parmetros, incluyendo el mapeado de las direcciones de memoria
principal a direcciones de la cach, la seleccin de la lnea de la cach a ser reemplazada cuando se aade una nueva lnea, el tamao de la cach, el tamao de las lneas y el mtodo para
efectuar escrituras en memoria. Puede haber ms de una cach en la jerarqua de memoria, e
instrucciones y datos pueden tener cachs separadas.
La memoria virtual se emplea para aparentar una memoria grande mucho ms grande que
la memoria principal con una velocidad que es, en media, parecida a la de la memoria princi-

SISTEMAS DE MEMORIA

611

pal. La mayora del espacio de memoria virtual se encuentra, en realidad, en el disco duro. Para
facilitar el movimiento de informacin entre la memoria y el disco, ambos se encuentran divididos en bloques de direcciones de tamao fijo, denominados marcos de pgina y pginas respectivamente. Cuando una pgina se carga en la memoria principal, su direccin virtual debe traducirse a una direccin fsica. La traduccin se realiza empleando una o ms tablas de pginas.
Con el fin de efectuar la traduccin en cada acceso a memoria sin generar una gran prdida de
prestaciones se recurre a hardware especial. Este hardware, denominado Translation Lookaside
Buffer (TLB), es una cach especial que forma parte de la unidad de manejo de memoria (Memory Management Unit, MMU) de la computadora.
Juntos la memoria principal, la cach y el TLB producen la ilusin de que se dispone de una
memoria rpida y grande, cuando lo que se tiene es, de hecho, una jerarqua de memorias de
distintas capacidades, velocidades y tecnologas, con hardware y software encargado de realizar
automticamente las transferencias entre los distintos niveles.

REFERENCIAS
1.

MANO, M. M.: Computer Engineering: Hardware Design. Englewood Cliffs, NJ: Prentice
Hall, 1988.

2.

HENNESSY, J. L., and D. A. PATTERSON: Computer Architecture: A Quantitative


Approach. San Francisco, CA: Morgan Kaufmann, 1996.

3.

BARON, R. J., and L. HIGBIE: Computer Architecture. Reading, MA: Addison-Wesley,


1992.

4. HANDY, J.: Cache Memory Book. San Diego: Academic Press, 1993.
5. MANO, M. M.: Computer System Architecture, 3rd Ed. Englewood Cliffs, NJ: Prentice Hall,
1993.
6.

PATTERSON, D. A., and J. L. HENNESSY: Computer Organization and Design: The Hardware/Software Interface. San Francisco, CA: Morgan Kaufmann, 1998.

7. WYANT, G., and T. HAMMERSTROM: How Microprocessors Work. Emeryville, CA: ZiffDavis Press, 1994.
8. MESSMER, H. P.: The Indispensable PC Hardware Book, 2nd ed. Wokingham, U.K.: Addison-Wesley, 1995.

PROBLEMAS
El smbolo (!) indica problemas ms avanzados y el asterisco (*) indica que la solucin se
puede encontrar en el sitio web del libro: http://www.librosite.net/Mano.
14-1. *Una CPU genera la siguiente secuencia de direcciones de lectura en hexadecimal:
54, 58, 104, 5C, 108, 60, F0, 64, 54, 58, 10C, 5C, 110, 60, F0, 64
Suponiendo que al comienzo la cach est vaca y que se utiliza un esquema de reemplazo LRU, determine si cada direccin produce un cache hit o miss para cada uno de
los siguientes casos: (a) cach de mapeado directo de la Figura 14-3, (b) cach completamente asociativa de la Figura 14-4 y (c) cach asociativa por conjuntos de 2 vas de la
Figura 14-6.

612

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

14-2. Repita el Problema 14-1 para la siguiente secuencia de direcciones de lectura:


0, 4, 8, 12, 14, 1A, 1C, 26, 28, 2E, 30, 36, 38, 3E, 40, 46, 48, 4E, 50, 56, 58, 5E
14-3. Repita el Problema 14-1 para la siguiente secuencia de direcciones de lectura:
20, 04, 28, 60, 20, 04, 28, 4C, 10, 6C, 70, 10, 60, 70
14-4. *Una computadora tiene un espacio de direcciones de 32 bits y una cach de mapeado
d
i
recto. Se realiza direccionamiento a nivel de byte. La cach tiene una capacidad de
1 K byte y emplea lneas de 32 bytes. Emplea write-through y, por tanto, no requiere
dirty bit.
(a) Cuntos bits tienen los ndices de la cach?
(b) Cuntos bits tienen las etiquetas de la cach?
(c) Cul es el nmero total de bits almacenados en la cach, incluyendo los bit de
validez, las etiquetas y las lneas?
14-5. Una cach asociativa por conjuntos de 2 vas de un sistema con direcciones de 24 bits
tiene 2 palabras de 4 bytes en cada lnea y una capacidad de 512 K byte. Se realiza
direccionamiento a nivel de byte.
(a) Cuantos bits hay en el ndice y en la etiqueta?
(b) Indique el valor del ndice (en hexadecimal) para las entradas en la cach correspondientes a las direcciones de memoria (en hexadecimal): 82AF82, 14AC89,
48CF0F y 3ACF01.
(c) Pueden estar simultneamente en la cach todas las entradas de la parte (b).
14-6. *Discuta las ventajas y desventajas de:
(a) Cach separada para instrucciones y datos frente a cach unificada para ambos.
(b) Una cach write-back frente a una write-through.
14-7. D un ejemplo de una secuencia de acceso de instrucciones y datos que arroje una tasa
elevada de cache hits para cachs separadas de instrucciones y datos y una tasa baja
para una cach unificada. Suponga cachs de mapeado directo con los parmetros de la
Figura 14-3. Tanto las instrucciones como los datos son palabras de 32 bits y la resolucin del direccionamiento es de bytes.
14-8. D un ejemplo de una secuencia de acceso de instrucciones y datos que arroje una tasa
elevada de cache hits para una cach unificada y una tasa baja para cachs separadas de
instrucciones y datos. Suponga que las cachs de instrucciones y datos son asociativas
por conjuntos de 2 vas y que la cach unificada en una asociativa por conjuntos de 4
vas, ambas con los parmetros de la Figura 14-6. Tanto las instrucciones como los datos son palabras de 32 bits y la resolucin del direccionamiento es de bytes.
14-9. Explique por qu write-allocate no se emplea normalmente en las cach write-through.
14-10. Una estacin de trabajo de alta velocidad tiene palabras de 64 bits y direcciones de
64 bits con capacidad de direccionar bytes.
(a) Cuntas palabras caben en el espacio de direcciones de la estacin?
(b) Suponiendo una cach de mapeado directo con 8192 lneas de 32 bytes cuntos bits hay en cada uno de los siguientes campos de las direcciones en la cach:
(1) Byte, (2) ndice y (3) etiqueta?

SISTEMAS DE MEMORIA

613

14-11. *Una cach tiene un tiempo de acceso desde la CPU de 4 ns, y la memoria principal lo
tiene de 40 ns. Cul es el tiempo de acceso efectivo para la jerarqua cach-memoria
principal si la fraccin de cache hits es: (a) 0.91, (b) 0.82 y (c) 0.96?
14-12. Redisee la cach de la Figura 14-17 de modo que mantenga la misma capacidad, pero
tenga 4 vas en vez de 2.
14-13. !Se quiere redisear la cach de la Figura 14-9 de forma que sea write-back con write-allocate en vez de write-through. Realice las siguientes tareas asegurando que considera todos los posibles problemas relacionados con la operacin write-back.
(a) Dibuje un nuevo diagrama de bloques.
(b) Explique la secuencia de acciones que propone cuando se produce un cache miss
de lectura y otro de escritura.
14-14. *Un sistema de memoria virtual emplea pginas de 4 K byte, palabras de 64 bits y
direcciones virtuales de 48 bits. Un programa concreto y sus datos necesitan 4263 pginas.
(a) Cul es el nmero mnimo de tablas de pgina necesarias?
(b) Cul es el nmero mnimo de entradas necesarias en la pgina directorio?
(c) A la vista de las respuestas dadas en (a) y (b) cuntas entradas habr en la ltima
tabla de pginas?
14-15. Un pequeo TLB tiene las siguientes entradas para un nmero de pginas virtual de
20 bits de longitud, un nmero de pgina fsica de 12 bits y un desplazamiento de pgina de 12 bits

Bit Valid Bit Dirty


1
0
0
1
1
0

1
0
0
0
0
1

Etiqueta (nmero
de pgina virtual)

Dato (nmero
de pgina fsica)

01AF4
0E45F
012FF
01A37
02BB4
03CA0

FFF
E03
2F0
788
45C
657

Los nmeros de pgina y los desplazamientos estn en hexadecimal. Para cada direccin virtual listada indique si ocurre un TLB hit y, en caso afirmativo, indique la
direccin fsica: (a) 02BB4A65, (b) 0E45FB32, (c) 0D34E9DC y (d) 03CA0777.
14-16. Una computadora dispone de un mximo de 384 M byte de memoria principal. Trabaja
con palabras de 32 bit, direcciones virtuales de 32 bit y emplea pginas de 4 K byte. El
TLB contiene entradas que almacenan los bits Valid, Dirty y Used, el nmero de pgina virtual y el nmero de pgina fsica. Suponiendo que el TLB es completamente asociativo y que tiene 32 entradas responda a las siguientes cuestiones:
(a) Cuntos bits de memoria asociativa necesita el TLB?
(b) Cuntos bits de SRAM necesita el TLB?

614

FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS

14-17. Cuatro programas se ejecutan concurrentemente en una computadora multitarea con


pginas de memoria virtual de 4 K byte. Cada entrada en la tabla de pginas es de 32
bit. Cul es el nmero mnimo de bytes de memoria principal ocupados por las pginas directorio y las tablas de pginas para los 4 programas, si el nmero de pginas de
cada programa, en decimal, es de 6321, 7777, 9602 y 3853?
14-18. *En las cach se pueden usar los enfoques write-through y write-back para manejar las
escrituras. Pero para el caso de memoria virtual slo se emplea un enfoque similar al
write-back. Explique por qu.
14-19. Explique claramente por qu los conceptos de memoria cach y memoria virtual no
seran tiles si no se verificase la localidad de referencia en los patrones de direccionamiento de las memorias.

NDICE

Nmeros
Complemento a 1, 200
Complemento a 2,198, 200
AOI 2-1, 68
AOI 3-2-2, 69

A
Acceso directo a memoria (DMA). Vase tambin DMA,
569, 576-579
Cesin de bus, 576
Controlador, 576-578
Peticin, 578-579
Peticin de bus, 576-577
Rfaga de transferencia, 576
Reconocimiento, 579
Robo de ciclo, 576
Transferencia, 578-579
Transferencia en un solo ciclo, 576
Adicin de ceros, 12
lgebra Booleana, 28, 31-38
Identidades bsicas, 33-35
Principio de dualidad, 37
Algoritmo de mquinas de estados, 345-349
Consideraciones temporales, 347
Diagrama, 345-348
Ejemplos, 348-354
Disear, 353
Almacenamiento
Asncrono, 229
Elementos, 229
Recursos, 427-428

Almacenar en FIFO. Vase almacenar First-in, first-out


Almacenar First-in, first-out (FIFO), 597
ALU. Vase unidad aritmtico-lgica
Amplitud relativa, 95
AND-OR-INVERT (AOI), 68
Anticipacin de datos, 526-528
AO. Vase AND-OR,
AOI. Vase AND-OR-INVERT,
Arquitectura, 460
Carga/almacenamiento, 437, 465
CISC, 474
Conjunto de instrucciones, 427, 460, 474-476
Direccionamiento, 465-469
Memoria a memoria, 465-467
Memoria-registro, 466
Pila, 467
Recientes innovaciones, 545-546
Registro a registro, 465-467
RISC, 475, 513
Un solo acumulador, 466
Varias unidades de ejecucin, 542
Arquitectura CISC, 474, 495
Arquitectura de conjunto de instrucciones, 408, 427, 439,
474-476
RISC, 513-517
Arquitectura de la CPU:
Segmentada, 509-542
Superescalar, 542, 544
Supersegmentada, 543
Arquitectura RISC, 475, 495
Array de lgica programable (PAL), 119
Dispositivos, 122-124
Implementacin de circuito combinacional, 159-161
Array lgico iterativo, 190

616

NDICE

Array lgico programable (PLA), 119, 121-122


Arrays de puertas programables en campo, 124, 164
ASM. Vase Algoritmo de mquinas de estados

B
Banco de registros, 419
Banco de test, 88
Banderas. Vase cdigos de condicin
Barrel shifter, 417-419, 518
Basado en puertas de transmisin, 73-74
Base, 8
Base 8, 7
BCD, 17-19, 24
Bifurcacin retardada, 528
Big-endian, 297
Binario, 4
Multiplicacin, 13
Resta, 13, 197-202
Suma, 12, 190-197
Bit, 5
Bit de entrada, 304
Bit de paridad, 19-24
Bit saliente, 305
Bit vlido, 600
Bloque ASM, 346
Bloque funcional, 85
Bloque reutilizable, 85
Bloques, 83
Bloques predefinidos, 84-85
Bloques primitivos, 84, 86
Boole, George, 28
Bottom-up design, 86
Bucle de espera, 569
Buffer, 66
Buffering, 601
Burbuja, 66, 523
Bus, 325-328
Basado en multiplexor, 325-328
Triestado, 326-328
Bus de entrada/salida (E/S), 7
Bus multiplexor, 325-327
Bus universal serie (USB), 566
Byte, 22, 378

C
Cabeza, 553
Cach, 591-605
Cach de datos, 604
Cach de instrucciones, 604
Cach externa, 6, 604

Cach interna, 6
Cach unificada, 604
CAD. Vase Diseo asistido por computadora
Caja de decisin escalar, 346
Caja de decisin, 346
Caja de salida condicional, 346
Caja de vector de decisin, 346
Canal de datos, 558
Captura de esquemticos, 85-87
Caracteres de control de comunicacin, 22
Carga, 292
Carga especulativa, 545
Celda:
Dinmica, 393, 396-403
Sncrona, 398-402
Direcciones de las columnas, 395
Direcciones de las filas, 495
Doble Tasa de Transferencia de Datos, 402-403
Esttica, 383-392
Lectura destructiva, 394
Posicin de forma aleatoria, 596
RAMBUS (RDRAM), 398, 402-404
Restaurar, 394
Temporizacin, 395-398
Tipos, 398-403
Chequeo de Redundancia Cclica (CRC), 568
Chip. Vase Circuitos integrados
Ciclo de diseo, 97-103
Cilindro, 553
Circuito aritmtico, 411-415
Circuito con dos niveles, 43
Criterio de coste, 45-46
Mapa de cuatro variables, 51-54
Mapa de dos variables, 46-47
Mapa de tres variables, 47-51
Optimizacin, 44-54
Circuito secuencial, 227-290
Circuito secuencial asncrono, 228
Circuito secuencial mquina de mealy, 246
Circuito secuencial mquina de Moore, 246
Circuito secuencial sncrono, 228
Asignacin de estados, 259-261
Asncronos, 228
Definiciones, 228-230
Diagrama de estados, 247-248, 253-260
Diseo con flip-flops D, 259
Diseo, 252-267
Estado actual, 245
Estado futuro, 245
Estados sin utilizar, 261-262
Modelo de Mealy, 246
Modelo de Moore, 246
Procedimiento de anlisis, 243-252
Procedimiento de diseo, 252
Sncronos, 228, 229

NDICE

Tabla de estados, 245-247


Temporizacin, 248-250
Circuitos CMOS (Suplemento), 69
Circuitos combinacionales, 82, 134
Circuitos digitales, 27
Circuitos integrados RAM, 405-411, 415-421
Circuitos integrados, 28, 91-92
Circuitos lgicos combinacionales, 27-79
Definidos, 32
Circuitos lgicos, 82, 414
Circuitos, integrados, 27, 86, 90-92
Clear, 241
Codificacin, 143-147
Codificadores, 143-147
Expansin, 146-147
Prioridad, 145-147
Cdigo ASCII, 22-23, 24
Caracteres de control, 22-23
Cdig Gray, 19-21, 24, 47
Binario reflectado, 21
Cdigo binario de n bits, 17, 139
Cdigo binario, 17
Cdigo de condicin, 461
Cdigo de marca, 553
Cdigo de ruptura, 553
Cdigo estandarizado americano para intercambio de informacin. Vase ASCII
Cdigo exceso-3, 98
Cdigo Gray binario reflectado, 21
Cdigo scan, 565
Cdigos alfanumricos, 21-23
Cdigos de scan-K, 553
Cdigos Hamming, 404
Collapsing, 62
Complememto a 1, 200
Complememto a la base, 200
Complemento a 2, 198, 200
Complemento a la base menos 1, 200
Complemento, de una funcin, 37-38
Complementos, 200-202
Resta con, 200-202
Comunicacin:
Full-duplex, 563
Semi-duplex, 563
Serie, 562-569
Simples, 563
Tiempo de respuesta, 563
Concadenacin, 352
Condiciones de indiferencia, 59-60
Configuracin separada de E/S, 578, 558
Conflicto de datos, 524-528
Conjunto de instrucciones, 427
Conjunto de registros, 461
Contador, 317-319
Contador asncrono, 311-315

Contador de programa (PC), 344, 426


Contadores, 292, 311-320
Ascendente-descedente, 315
Asncrono, 311-315
BCD, 317-318
Binario, 311-317
Con carga paralela, 316-317
Con puertas en paralelo, 315
Con puertas en serie, 315
Dividido por N, 317
Mdulo N, 317
Paralelo, 314
Secuencia arbitraria, 318-320
Serie, 315
Serie-paralelo, 315
Sncrono, 314-320
Contadores binarios, 311-318
Contraccin de lgica, 209, 210-215
Control:
Cableado, 354-363
CISC, 530-542
Microprogramado, 368-371, 537-543
RISC, 519-520
Segmentado, 509-512
nico ciclo, 433-441
Varios ciclos, 441-452
Control de conflictos, 527-530
Control microprogramado, 368, 537-542
Organizacin, 370
Control segmentado, 509-512
Conflicto de datos, 320-528
Control de conflictos, 527-530
Diagrama de ejecucin de patrones, 508
Parada, 524
Relleno, 508-509
Vaciado, 509
Controlador de disco, 7, 554
Controlador de DRAM, 404
Conversin:
Base r a decimal, 8-10
Binario a decimal, 9
Binario a hexadecimal, 10
Binario a octal, 10-12
Decimal a base r,15
Decimal a binario,15-16
Decimal a octal, 15
Fracciones decimal a binario, 16
Fracciones decimales a octal, 16-18
Lgica positiva a lgica negativa, 95-96
Octal a hexadecimal, 12
Conversin de nmeros. Vase Conversin
Conversor de cdigo BCD a exceso-3, 98-100
Conversores de cdigo, 98
Copy-back, 601
Bit de validez, 600

617

618

NDICE

Carga, 600
Dato, 604
Dirty bit, 601
Etiqueta, 592
Externa, 587, 604
Hit, 593
ndice, 592
Instruccin, 604
Interna, 604
L1, 604-605
L2, 604-605
Lnea, 597
Mapeado, 594-598
Mecanismo de buffering, 601
Mtodos de escritura, 600-601
Miss, 594
Mltiples niveles, 604-605
Tamao de conjuntos, 597
Tamao de lnea, 599-601
Unificada, 604
Write-allocate, 601
Write-back, 601
Write-through, 600-601
Coste por literal, 45
CPU de alto rendimiento, conceptos, 542-545
CPU super segmentada, 543
CPU. Vase unidad central de proceso (CPU)
CRC. Vase chequeo de redundancia cclica
Cuadrados adyacentes, 47-51
Cuadrados, 46-47

D
Decimal codificado en binario. Vase BCD
Decimal:
Aritmtica, 215
Cdigos, 17-20
Decodificacin, 139-144
Implementacin de circuitos combinacionales, 151
Decodificador, 139
Decodificador BCD a siete segmentos, 101-104
Decodificador de n a m lneas, 139
Decremento, 213-214
Demultiplexor, 143
Descomposicin, 62
Descripcin estructural, 87
Desplazadores, 416-419
Combinacional, 417-419, 518
Desplazamiento de directorio, 607
Desplazamiento, 304
Bit entrante, 304
Bit saliente, 305
Deteccin de error:
Paridad, 19-20
Y cdigos de correccin (suplemento), 404

Diagrama de tiempos, 30
Diagrama del circuito, 32
Dgito ms significativo, 8
Dgito menos significativo (lsd), 8
Direccin, 379
Absoluta, 514
Efectiva, 468
Etiqueta, 590
Explicita, 462
FOCET, 430
Implcita, 462
Direccin fsica, 605
Direccin indirecta, 447
Direccin relativa, 514
Direccin vectorizada, 572
Direccin virtual, 605
Direccionamiento de bytes, 588
Direccionamiento del operando, 462-468
Direccionamiento, de bytes, 588
Disco duro, 5-7, 553-555
Formato, 554
Retardo de giro, 554
Tasa de transferencia del disco, 554
Tiempo de acceso, 554
Tiempo de bsqueda, 554
Diseo asistido por computadora, 86-87
Diseo de logica combinacional, 80-131
Diseo jerrquico, 83-86
Diseo Top-down, 81, 82, 86
Diseo VLSI:
Arrays de puertas, 104
Clulas estndar, 104
Full-custom, 104
Disipacin de potencia, 92
Display de 7 segmentos, 101
Dispositivo PAL. Vase array lgico programable
Dispositivos:
Alta escala de integracin (LSI), 91
Media escala de integracin (MSI), 86, 91
Muy gran escala de integracin, 91
Pequea escala de integracin, 91
Dispositivos de alta escala de integracin (LSI), 91
Dispositivos de mediana escala de integracin (MSI),
91
Dispositivos de muy alta escala de integracin (VLSI),
91, 124
Dispositivos de pequea escala de integracin (SSI), 91
Distancia dos, uso del trmino, 70
Distribucin, 143
Divisin por una constante, 213
DMA. Vase acceso directo a memoria
DRAM. Vase RAM. Dinmica
Dual:
De una ecuacin, 36
De una expresin algebraica, 33

NDICE

E
E2PROM (borrable elctricamente, ROM programable),
121
E/S. Vase Entrada/salida
Bus, 7
Serie, 565-569
Comandos, 580-581
Entradas de seleccin de registro, 558
Procesadores, 570, 579-582
Puertos, 478, 558
Registro de control, 558-559
Tasa de trasnferencia, 556
Unidades de interfaz, 556-562
E/S ubicada en memoria, 557
Efectos de formato, 22
Eliminacin, 62
Ensamblador, 431
Entrada/salida, 7
Asncrono, 558-559
Independiente, 478
Interfaces, 556-562
Procesadores, 558, 570, 579-582
Puerto, 478, 558
Separada, 478
Ubicada en memoria, 478
Entradas de seleccin de registro, 558
Entradas directas, 241
EPROM (borrable, ROM programable, 120-121
Equivalencia. Vase NOR exclusiva
Espacio-tiempo, 330
Especulacin de datos, 545
Esquemtico, 83
Estado, 228, 245
Caja, 345
Diagrama, 247-248
Mquina, 345
Tabla, 245-247
Entrada, 245
Estado actual, 245
Estado futuro, 245
Salida, 245
Estado actual, 245
Estado de alta impedancia, 71
Estado Hi-Z. Vase Estado de alta impedancia
Estndar:
Carga, 93
Formas, 39-44
Estados sin utilizar, 261-262
Excepcin, 494
Expansin, 140-143
Exponente, 483
Sesgado, 485-486
Expresin Booleanas, 31, 37

Extensin, 214
De signo, 215, 430, 514
Extraccin, 62

F
Factorizacin, 62
Algebraica, 62
Factorizacin algebraica, 62
Fan-in, 92
Fan-out, 91, 93-95
Circuito libre, 111
Puntos, 113
Flanco, 92-94
Flattening, 62
Flip-flop, 229, 230, 234-244, 264-268
Caractersticas:
Ecuacin, 265
Tabla, 265
Clear, 241
Disparado por flanco, 235, 238
Disparado por pulso, 238
Ecuaciones de entrada de los Flip-flop, 243
Ecuaciones de entrada, 243-244
Indicador de salida pospuesto, 239
Indicador dinmico, 240
JK, 265-267
Maestro-esclavo, 235-238
No transparente, 235
Preset, 241
Reset asncrono, 241
Set asncrono, 241
Smbolos Grficos Standard, 239-242
T, 265-267
Tabla de excitacin, 265
Tiempo de hola, 242
Tiempo de setup, 242
Tiempos de los Flip-Flops, 242-244
Tiempos de retardo de propagacin, 241
Trigger, 235
Flip-flop disparado por flanco, 235, 238
Flip-flop JK, 265-267
Flip-flop maestro-esclavo, 236-238
Flip-flop T, 265-267
Flip-flop tipo D, 238-240
Con habilitacin, 294
FPLA, 122
FPU. Vase Unidad en punto flotante (FPU)
Fraccin, 483
Frecuencia, reloj, 248
Funcin Booleana, 31
Incompletamente especificada, 59
Salida mltiple, 31
nica salida, 31

619

620

NDICE

Funcin de generacin, 196


Grupo, 197
Funcin impar, 70-71
Funcin par, 70-72
Funcin propagacin, 196
Grupo, 197
Funciones de varios bits, 135-137
Funciones especificadas incompletamente, 59
Funciones lgicas bsicas, 134-139

G
G (Giga), 9

H
Habilitacin, 137-139
Handshaking, 561-562
HDL:
Anlisis, 88
Descripcin estructural, 87
Elaboracin, 88
Inicializacin, 88
Representacin del multiplicador, 363-365
Simulacin, 88
Testbench, 88

I
IC. Vase Circuitos integrados (IC)
IC RAM, array de, 389-392, 404
Identidades, 68
Identificador de paquete (PID), 567-568
Implementacin de funciones combinacionales:
Empleando Decodificadores, 152-155
Empleando Memorias de Slo Lectura, 157-159
Empleando multiplexores, 154-156
Empleando Tablas de Bsqueda, 163-165
Usando Arrays de Lgica Programable, 171-174
Usando Arrays Lgicos Programables, 159-161
Implicante, 54
Implicante primo esencial, 54-57
Implicante primo no esencial, 56
Implicantes primos, 55-57
Esencial, 54-56
No esencial, 56
Regla de seleccin, 56
Incremento, 211-212
Indicador de negacin, 66
Indicador de polaridad, 96
Indicador de salida postpuesta, 239
Instancia, 85

Instanciacin, 55
Instruccin, 344, 426-427
Accesos, 443
Campos, 421, 426
Cdigo de operacin, 428
Ejecucin, 427, 445
Formatos, 428-431
Registro, 442-443
Instrucciones:
Aritmtica, 479, 484-485
Bifurcacin condicional, 488-491
Bifurcacin y salto, 487
Cero direcciones, 464-466
Control de programa, 487-495
Desplazamiento, 481-482
Dos direcciones, 463
Llamada y retorno de subrutina, 488-491
Manipulacin de datos, 479-482
Manipulacin lgica y de bit, 480-482
Pila, 476-478
Punto flotante, 483-487
Transferencia de datos, 476-479
Tres direcciones, 462-464
Una direccin, 463-465
Instrucciones de cero direcciones, 464-466
Integracin, niveles de, 92
Interfaz de bus, 7
Interrupcin, 493-495
Daisy chain, 573-574
Externa, 493-495
Interna, 493
No vectorizada, 572
Paralela, 574-576
Prioridad, 572-576
Procesamiento de externas, 494-495
Sectorizada, 572
Software, 493-494
Interrupcin de programa, 492-495
Interrupcin no vectorizadad, 572
Interrupcin vectorizada, 572
Inversor 33. Vase tambin puerta NOT
Invertida, 135
Iterativo:
Array lgico, 190, 330
Circuitos combinacionales, 190-191

J
Jerarqua, 83

K
K (Kilo), 9

NDICE

L
Latch D, 233-235
Latches, 230-234
D con puertas de transmisin, 234
D, 233-234
Estado RESET, 231
Estado SET, 231
Smbolos grficos estndar, 239-241
S1 R1 , 231-233
Con entrada de control, 233
Transparente, 235
Lectura destructiva, 394
Lenguaje ensamblador, 460
Lenguaje mquina, 460
Leyes asociativas, 33
Leyes conmutativas, 33
Leyes distributivas, 34
Librera, 104
Librera de clulas, 104-105
LIFO. Vase Pila Last-in, first-out (LIFO)
Lnea, 599
Lneas de barrido, 555
Literal, 36-37
Little-endian, 297
Localidad de Referencia, 590-592
Espacial, 590
Temporal, 590
Localidad espacial, 590
Localidad temporal, 590
Lgica binaria, 28-29
Lgica compartida, 305
Lgica dedicada, 305
Lgica negativa, 95-97
Indicador de polaridad, 96
Lgica positiva, 95-97
LRU. Vase usado menos recientemente (LRU)
LSI. Vase Dispositivos, alta escala de
LUT. Vase tabla de bsqueda (LUT)

M
M (Mega), 9
Manipulacin algebraica, 35-38
Mantisa. Vase fraccin o significando
Mapa, 44-60
Cuatro variables, 51-54
Dos variables, 46-47
Manipulacin, 54-60
Tres variables, 47-51
Mapa de fusibles, 118
Mapa de Karnaugh. Vase Mapa
Mapa K. Vase Mapa

621

Mapeado asociativo por conjuntos, 597


Mapeado completamente asociativo, 594-594
Mapeado de la cach, 594-599
Asociativo por conjuntos, 597
Completamente asociativo, 594-595
Directo, 594-595
Mapeo:
Asociativo por conjuntos de s vas, 597
Completamente Asociativo, 593-594
Directo, 593-594
Mapeo directo, 593-594
Mapeo tecnolgico, 89, 104-113
Margen de ruido, 92
Matriz de muestro, 552
Maxitrmino, 39-43
Memoria, 7, 379-406
Asociativa, 595
Definiciones, 378
Dinmica, 383
Esttica, 383
No voltil, 383
Virtual, 605-610
Voltil, 383
Memoria asociativa, 595
Memoria Cach. Vase tambin Cach, 592
Memoria de acceso aleatorio (RAM), 7, 377, 378-383
Memoria de control, 368
De escritura, 368
Memoria de slo lectura (ROM), 119-121, 378
Borrable elctricamente, programable (EEPROM),
121
Borrable, programable (EPROM), 120-121
Implementando un Circuito Combinacional, 158-159
programable (PROM), 118-120
Memoria programable de slo lectura (PROM), 118-120
Memoria virtual, 592, 605-610
Memorias flash, 118
Microinstruccin, 368
Microoperaciones, 296-297, 299-305
Aritmticas, 299, 300-302
Desplazamiento, 299, 304-305
Lgicas, 299, 301-305
Transferencias, 299
Microprograma, 368, 539-542
Minitrmino, 39-43
MMU. Vase unidad de manejo de memoria (MMU)
Modem, 562
Modos de direccionamiento, 468-474
Directo, 470-471
Implcito, 469
Indexado, 472-473
Indirecto, 471
Inmediato, 469

622

NDICE

Registro base, 473


Registro indirecto, 469-470
Registro, 469-470
Relativo, 472
RISC, 516
MSI. Vase Dispositivos, mediana escala de integracin
Multiplexor, 147-150
Expansin, 149-150
Puerta de transmisin, 151
Triestado, 151
Multiplicacin:
Algoritmo, 349-350
Binaria, 13, 208-209
Octal, 14
Por una constante, 213
Multiplicadores, 208-209, 349-363
Control, 358-362
Control con Registro de Secuencia y Descodificador,
357-359
Representacin en Verilog, 365-368
Representacin en VHDL, 363-365
Ruta de datos, 350
Un flip-flop por estado
MUX, 149

N
NaN. Vase No es un nmero,
Netlist, 87
No es un nmero, 481
No retorno a cero invertida (NRZI), 567
NOR exclusiva, 69
Notacin polaca inversa (NPI), 467
Notacin posfija. Vase notacin polaca inversa
NRZI. Vase No retorno a cero invertida
Nmero de pgina virtual, 606
Nmero normalizado en punto flotante, 483
Nmeros:
Binario, 9-10
Binario con signo, 203-205
Punto flotante normalizado, 483
Nmeros binarios con signo, 203-205
Nmeros binarios, 9-11
Complemento a 1, 200
Complemento a 2, 198, 200
Con signo, 203-205
Signo y complememto, 204
Signo y magnitud, 203
Sin signo, 198, 200-202
Nmeros hexadecimales, 10-12, 24
Suma, 13-14
Nmeros octales, 10-12, 24
Multiplicacin, 14

O
OA. Vase OR-AND
OAI. Vere OR-AND-INVERT
Op code. Vase cdigo de operacin
Operacin:
Cdigo, 428
Mnemnico, 431
Operacin AND, 28, 104
Operacin de complemento, 28
Operacin de escritura, 378, 380
Operacin de lectura, 378, 380
Operacin NOT, 28
Operacin OR, 28, 66
Operaciones aritmticas, 12-18, 24
Conversin de decimal a otras bases, 15-17
Operaciones de transferencia de registro, 295, 297-299
Operaciones elementales, 296
Operaciones en punto flotante, 6, 483
Operaciones lgicas, 28
Operando inmediato, 430
Optimizacin de circuitos multinivel, 61-65
Optimizacin de producto de sumas, 57-58
Optimizacin del mapa, 44-60
OR - exclusiva, 67, 69-72
Or exclusiva, 74
OR-AND (OA), 69
OR-AND-INVERT (OAI), 69
Ordenador genrico, 5-8
Organizacin del procesador, 460
Organizacin super-escalar, 542, 544
Overflow, 206-208

P
Pgina, 591, 605
Desplazamiento, 605
Fallo, 609
Marcos, 605
Nmero de marco, 606
Nmero de pgina, 607
Tabla, 606-607
Desplazamiento, 607
Pgina directorio, 606-608
Palabra, 378
Palabra de control, 422-426
Parada de conflicto de bifurcacin, 528
Parada por conflicto de datos, 524
Parte Significativa, 486
Patrn de sincronizacin (SYNC), 567
Pila Last-in, first-out (LIFO), 464
Pila, 464
Arquitectura, 466

NDICE

Instrucciones, 464, 468


Puntero (SP), 461
Pista, 553
PLA programable en campo (FPLA), 122
PLA. Vase Array lgico programable, 121-122.
Posicin de Cach:
Aleatorio, 596
FIFO, 597
Usado menos recientemente (LRU), 597
Potencia de dos, 9
Predicacin, 545
Prediccin de bifurcacin, 529
Preset, 241
Principio de dualidad, 37
Procesador de comunicacin de datos, 579
Procesador de conjunto de instrucciones complejo, 474,
530-543
Procesador de conjunto de instrucciones reducido, 475
Procesador, 6
Arquitectura, 408, 468
Ciclo bsico, 461
CISC. Vase procesador, complejo
Comunicacin de datos, 579
Conjunto de instrucciones
Conjunto de instrucciones complejo, 474, 530-543
Diseo, 3, 407-458
E/S, 579
Estructura, 5
Microprogramado, 537
Registro de status, 461
Retardo en el peor caso, 439-440
Segmentado, 508-513
nico ciclo, 433-440
Varios ciclos, 441-452
Procesadores digitales, 3-5, 6
Producto de maxitrminos, 41
Producto de sumas, 44
Programa, 427
Programacin de PLD
Antifusible, 117
Borrable elctricamente, 118
Borrable, 118
Fusible, 117
Mscara, 117
PROM. Vase Memoria programable de solo lectura
(PROM)
Proteccin de violacin, 493
Puerta, 29-31, 65-69
Compleja, 66, 68
Coste por entrada, 45-46
Primitiva, 66-67
Tipos, 65-69
Transmisin, 73-74
Universal, 66
Puerta NAND, 66, 68, 104

623

Puerta NOR, 66
Puerta universal, 66
Puertas compuestas, 66, 68
Puertas de transmisin, 73-74
Puertas lgicas, 28, 29-31, 65-69
Smbolos, 67
Puertas primitivas, 66-67
Puntero a la pgina directorio, 607
Punto de la base, 8
Punto flotante, 483-487
Exponente sesgado, 485-486
Formato estndar de los operandos, 485-487
Nmeros, 482, 483
Operaciones aritmticas, 484-485
Puntos, fan-out, 113

R
RAM. Vase Memoria de acceso aleatorio
Rango de los nmeros, 12
Realizacin del control:
Registro de Secuencia y Descodificador, 357-359
Un Flip-flop por Estado, 358-363
Rectngulos, 48-50
Rendimiento, pipeline, 511-513
Redondeo del acarreo, 201
Refresco, 396-398
Contador, 397
Controlador, 397
Iniciacin, 396-398
Operacin, 398
Temporizacin, 396
Tipos, 398
Refresco de la memoria DRAM, 383, 398
Regiones de transicin, 30
Registro, 292
Carga paralelo, 293
Carga, 292
Clula, 319
Desplazamiento, 307-311
Diseo de una clula, 319-325
Registro compuesto, 352
Registro de control de datos, 368
Registro de control de direccin, 368
Registro de secuencia y decodificador, 357-359
Registros de desplazamiento, 307-311
Bidireccional, 310-311
Con carga paralela, 308-310
Unidireccional, 310
Regla de seleccin, 56
Relleno, ceros, 214-215
Relleno de ceros, 213-215
Reloj:
Anchura, 242-244

624

NDICE

Circuitos secuenciales sncronos, 229-230


Frecuencia, 248
Gating, 241, 294
Generador, 229
Periodo, 248
Pulso, 229
Skew, 241, 250
Transicin, 238
Reset asncrono, 241
Resta:
Binaria, 13
Con signo utilizando complementos, 204
Sin signo utilizando complementos, 201
Restaurar, 394
Retardo de giro, 554
Retardo de propagacin, 91-95, 96
Retardo de transporte, 93
Retardo inercial, 93
Retardo: Delay:
Inercial, 93
Reduccin de retardo, transformacin para, 65
Transporte, 93
ROM. Vase Memoria de solo lectura
Ruta de datos, 6, 291, 395, 408-411
RISC, 516-519
Segmentada, 504-512
Simulacin, 425

S
Salidas en alta impedandia, 71-74
Sector, 553-554
Secuenciador, 369
Secuenciamiento y control, 344-375
Segmentacin, 610
Seleccin, 147-152
Seleccin combinada, 387
Seleccin de bit, 384
Seleccin de columna, 387
Seleccin de fila, 387
Seleccin de palabra, 384
Selector de datos, 149
Semisumador, 191
Sentencia condicional:
Forma, 298
Forma, 305
Seal de control, 295
Seales, 4, 215
Separadores de informacin, 22
Serie:
Contadores, 314
E/S basada en paquetes, 565-569
Memoria, 378
Suma, 329-332

Transferencia, 328-332
Set asncrono, 241
Siguiente estado, 245
Smbolo AND, 28-29
Smbolo OR, 29
Smbolos grficos: -:
Flip-flop, 239-242
Latch, 239
Puertas, 30, 65-69
Simplex, 563
Simulacin, 250-252
Funcional, 251
Temporal, 251
Simulacin lgica:
Flip-flop maestro-esclavo, 236
Latch SR, 232
Simulador lgico, 86
Sntesis lgica, 88-90
Sintetizadores lgicos, 87
Sistema no programable, 344-345
Sistema programable, 344
Sistemas de memorias, 587-614
Sistemas de numeracin, 8-12
Sistemas digitales, 4
Relacin con el diseo de la CPU, 546-547
Skew, reloj, 241, 250
Soporte, 164
SRAM. Vase Memoria esttica de acceso aleatorio
SSI. Vase Dispositivos, pequea escala de integracin
Strobing, 559-560
Suma, 18-19
BCD, 17-19
Binaria con signo, 204
Binaria, 12
Hexadecimal, 13-14
Serie, 329-332
Suma de miniterminos, 40
Suma de productos, 42-44
Optimizacin, 42, 45, 51, 54, 56-58, 62, 74
Suma de trminos, 39-40
Sumador:
Con acarreo anticipado,194-197
Con acarreo serie,193
Sumador binario con acarreo serie, 193-194
Sumador binario, 190-197
Sumador completo, 191, 192-197
Sumador con acarreo anticipado, 194-197
Sumador con acarreo serie, 193
Sumador-restador,202-208
Sustitucin, 62

T
Tabla de bsqueda (LUT), 118, 164

NDICE

Tabla de verdad, 29
AND, 29
Condensada, 138, 145
Funcin, 31-32
NOT, 29
Operacin, 29
OR, 29
Tamao de lnea, 599-601
Tamao del conjunto, 597
Tarjeta grfica, 555-556
Tasa de baudios, 564
Tasa de transferencia del disco, 554
Teclado, 7, 552-553, 564-566
Tecnologa flash, 118
Temporizacin de la memoria, 381-382, 396
Teorema de consenso, 37-38
Teorema de DeMorgan, 34-35, 37-38, 67
General, 34
Trmino producto, 39
Trminos de una expresin, 31
Thrashing, 592
Throughput, 505
Tiempo de acceso, 554
Tiempo de bsqueda, 554
Tiempo de ciclo de escritura, 381
Tiempo de hold, flip-flop disparado por flanco, 242
Tiempo de latencia, 505
Tiempo de propagacin de alto a bajo, 92-93
Tiempo de propagacin de bajo a alto, 92
Tiempo de rechazo, 93
Tiempo de respuesta, 563
Tiempo de setup, disparado por flanco
Flip-flop, 242
Tiempo del controlador, 554
Tiempos de retardos de propagacin:
Flip-flops, 242
Puertas, 91-95
Tipos de memoria, 383
Tira de un bit:
Dinmica, 394-398
Esttica, 383
TLB. Vase Translation lookaside buffer (TLB)
Tpdv. Vase retardo de propagacin
tPHL. Vase tiempo de propagacin de alto a bajo
tPLH. Vase tiempo de propagacin de bajo a alto
Trama, 555
Transferencia, 135
Basada en multiplexores, 325-327
Basada en triestado, 326-327
Controlada por programa, 570-572
Iniciada por interrupcin, 571
Modos, 569-571
Serie, 328-332
Varios registros, 325-327
Transferencia de Bus, 325-328

625

Transferencia de regsitro, 295-297


Destino, 297
Fuente, 297
Transiciones, 30
Transistor, 4
Translation lookaside buffer (TLB), 608-610
Transmisin:
Asncrona, 563
Sncrona, 563, 564
Tasa en baudios, 564
Transparente, 235
Trap, 493
Triestado, 66-73
Buffers, 71-73
Bus, 326-327
Trigger, 235
U
Un flip-flop por estado, 358-362
Unicode (suplemento), 22
Unidad aritmtico-lgica, 408, 411-417
Unidad Central de Proceso (CPU), 6, 7, 503-550
Unidad de control, 6, 291, 295, 344-345
Unidad de manejo de memoria (MMU), 6, 7, 608
Unidad en punto flotante (FPU), 6, 7, 459
Usado menos recientemente (LRU), 597
USB. Vase Bus universal serie

V
Valor constante, 135
Variables binarias, 28
Varias unidades de ejecucin en paralelo, 542
Verificacin, 113-116
Verilog, 87, 172-178, 218-221, 275-281, 333-335, 365368, 404
Asignacin de bloques, 275
Asignacin non-blocking, 275
assign, 176
case, 278
Circuitos secuenciales, 275-281
Comentarios, 173
Concatenacin, 219-221
Control de eventos, 276
Default, 280
Descripcin de comportamiento, 218-220
Descripcin de flujo de datos, 176
Descripcin estructural, 174
Directivas de compilador, define, 279
if-else, 276
input, 173
Modelado de un multiplicador, 365
Modelado de un registro de desplazamiento, 331-333
module, 173
Operador @, 275

626

NDICE

output, 173-174
process:
always, 275
initial, 275
register, 275
Representacin de cdigos binarios, 279
Representacin de un circuito secuencial, 279
Representacin de un contador, 333-335
Smbolos de transferencia de registros, 299
Temporizacin y reset, 275
vectors, 175
wire, 174
VHDL, 87, 165-173, 215-219, 268-274, 332-334, 363365, 404
Arquitectura de una entidad, 167
Asignacin de estados, 274
attribute, 274
begin, 168
case, 270, 273-274
Codificacin de estados, 274
Comentario, 166
Componente, 168
Concatenacin, 217-218
Declaracin de entidad, 167
Descripcin de comportamiento, 217-219
Descripcin de flujo de datos, 170
Descripcin estructural, 167
end, 168
Generacin de almacenamiento, 267
if-then-else, 268-270
library, 167
Lista de sensivilidad, 268
Lgica estndar, 167
Modelado de un contador, 332
Modelado de un multiplicador binario, 363-365

Modelado de un registro de desplazamiento, 331


others, 171, 273
package, 167
Peligro, 273
Peligro, 273
port:
Declaracin, 167
map, 168
process, 267-269
Puertas, 174
Representacin de un circuito secuencial, 270
Sentencia when-else, 170
Seales, 168
Smbolos de trasferencia de registros, 300
stdlogic, 167
stdlogicvectors, 168-170
Tiempo delta, 168
type, 271
use, 167
variable, 268
with-select, 170
VLSI. Vase dispositivos, muy alta escala de integracin
Voltaje de entrada, 4
Voltaje de salida, 4

W
Write-back, 601
Write-through, 601

X
XOR. Vase OR exclusiva

También podría gustarte