Fundamentos de Diseno Logico y de Computadoras
Fundamentos de Diseno Logico y de Computadoras
Fundamentos de Diseno Logico y de Computadoras
Incluye:
IIIIIIIIIIIIIIIIIIII
IIIII
IIIIIIIIIIIIIIIIIIII
IIIII
IIII
IIIIIIII
IIIIIIII
IIIII
net
IIII
it
IIIII
.li b r o s
e.
IIII
ww
/mano
IIIII
3 edicin
Morris
Kime
3 ed.
M. Morris Mano
Charles R. Kime
www.pearsoneducacion.com
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
Revisin tcnica
Jos Antonio Herrera Camacho
Profesor Titular de Escuela Universitaria
Universidad Politcnica de Madrid
Madrid
Pginas: 648
CONTENIDO
Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 1
xv
3
4
5
5
6
8
9
10
12
12
15
17
18
19
19
21
24
24
24
27
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
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
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
407
408
408
411
411
414
415
416
417
419
421
426
CONTENIDO
10-8
10-9
10-10
Captulo 11
xi
427
427
428
430
433
435
437
439
441
443
452
452
452
459
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
503
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
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
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
FUNDAMENTOS DE DISEO
LGICO Y DE COMPUTADORAS
CAPTULO
1
COMPUTADORAS DIGITALES
E INFORMACIN
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
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.
Memoria
CPU
Unidad
de control
Ruta
de datos
Entrada/Salida
FIGURA 1-2
(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.
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).
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
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
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
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.
% (1110100110.11)2
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
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
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.
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.
15
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
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
17
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
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
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
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.
20
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
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
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.
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
24
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?
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
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
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
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
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
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
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
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
(AND) X Y
XY
(OR)
(NOT) X
ZX
FIGURA 2-1
Puertas lgicas digitales
A
B
C
F ABC
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.
32
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
33
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
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
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
FIGURA 2-4
Implementacin de funciones booleanas con puertas
36
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
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.
38
39
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
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
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
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
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
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
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
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
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.
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
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.
YZ
X
00
11
01
10
m0
m1
m3
m2
m4
m5
m7
m6
(a)
(b)
FIGURA 2-10
Mapa de tres variables
48
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
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
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
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
FIGURA 2-14
Mapas para el Ejemplo 2-4
51
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
52
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
53
FIGURA 2-18
Mapa de cuatro variables: Plano y toro para mostrar las vecindades
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
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
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
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.
57
CD
AB
00
01
00
01
11
10
B
11
A
10
D
1
FIGURA 2-23
Mapa para el Ejemplo 2-9
58
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)
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
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)
61
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
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
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
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.
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.
66
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
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
NOT X
XX
69
XY XY
AND
Y
X
XY X Y
OR
Y
FIGURA 2-30
Operaciones lgicas con puertas NAND
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
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.
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
72
EN IN OUT
OUT
IN
0
1
1
EN
(a) Smbolo lgico
X
0
1
Hi-Z
0
1
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)
(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
FIGURA 2-34
Buffers de tres estados formando una lnea multiplexada OL
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
FIGURA 2-36
Puerta de transmisin OR exclusiva
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.
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
(b)
(c)
(d)
(e)
(A ! B)(A1 ! B1 )
ABC ! A1 C
BC ! B(AD ! C1 D)
(B ! C1 ! BC1 )(BC ! AB1 ! AC)
(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
77
78
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
n entradas
Circuito
combinacional
m salidas
FIGURA 3-1
Diagrama de bloques de un circuito 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
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
BO
A2
(c) Generador de paridad impar de
3 entradas como interconexin
de bloques XOR
FIGURA 3-2
Ejemplo de diseo jerrquico y reutilizacin de bloques
ZO
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
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.
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.
88
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
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
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.
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
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
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
FIGURA 3-6
Tiempo de propagacin para un inversor
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)
10
12
14
16 Tiempo (ns)
FIGURA 3-7
Ejemplo de comportamiento de retardos de transporte e inerciales
94
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
95
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
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
0 0
0
0 1
0
1 0
0
1 1
1
(c) Tabla de verdad
en lgica positiva
X Y
X
Y
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
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
4.
5.
98
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
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
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
101
b
g
d
(a) Designacin de segmentos
FIGURA 3-12
Display de 7 segmentos
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
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.
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
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).
105
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
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
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.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(b) Mapeado a puertas NOR
.
.
.
.
.
.
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).
109
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
110
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:
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
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.
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.
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.
114
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)
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
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.
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
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.
FIGURA 3-22
Smbolos convencional y de array lgico de una puerta OR
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
Entradas
Conexiones
programables
Plano AND
programable
(b) Array de lgica programable
Entradas
Conexiones
programables
Plano AND
programable
Conexiones
programables
FIGURA 3-23
Configuracin bsica de tres PLDs
120
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
121
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
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.
123
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
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.
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.
125
4.
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
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
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
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.
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
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
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
134
Entradas
Circuito
combinacional
Estado
futuro
Elementos de
almacenamiento
Estado
actual
FIGURA 4-1
Diagrama de bloques de un circuito secuencial
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
136
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.
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
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
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
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
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.
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.
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
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
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.
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
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
145
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
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.
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
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
S0
0
0
1
1
0
1
0
1
I0
I1
I2
I3
149
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
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.
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
152
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
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
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
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
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
155
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
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
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
158
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
FIGURA 4-23
Implementacin con ROM del Ejemplo 4-10
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.
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
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
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.
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
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
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
163
164
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
165
166
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
167
168
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.
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
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.
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
-------------------
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
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.
173
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
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
175
FIGURA 4-33
Descripcin estructural en Verilog de un multiplexor 4 a 1
176
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.
FIGURA 4-35
Descripcin de flujo de datos Verilog de un multiplexor 4 a 1 usando una ecuacin booleana
177
FIGURA 4-36
Descripcin Verilog de flujo de datos condicional de un multiplexor 4 a 1 usando combinaciones
178
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
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
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.
181
182
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.
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
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
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
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.
187
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
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
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
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
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
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
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
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
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
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
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.
198
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
10011110
01100100
.10010110
11001110
199
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
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.
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.
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.
202
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
204
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
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
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
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
207
208
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
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.
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
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
211
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
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.
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.
214
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).
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.
216
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
217
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
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.
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
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.
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.
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
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
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
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-
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
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
Entradas
Salidas
Circuito
combinacional
Flip-flops
Pulsos de reloj
(a) Diagrama de bloque
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
FIGURA 6-4
Latch SR con puertas NOR
232
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
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
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
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
FIGURA 6-8
Latch D
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
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
238
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
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.
240
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
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
C
R
(c) Smbolo simplificado
FIGURA 6-15
Flip-flop D con entradas asncronas de set y reset
242
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.
CIRCUITOS SECUENCIALES
243
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
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
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
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
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
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).
CIRCUITOS SECUENCIALES
249
tp
C
tpd,FF
tCOMB
ts
tslack
tCOMB
tslack
ts
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
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
Clock
Reset
Input
1
State
0
1
Output
FIGURA 6-22
Simulacin temporal
252
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.
CIRCUITOS SECUENCIALES
253
7.
Por conveniencia, usualmente omitiremos el mapeado tecnolgico del paso 7 y utilizaremos slo flip-flops, puertas AND, puertas OR, e inversores en el esquemtico.
254
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
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.
256
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
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
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.
260
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
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
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
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
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
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
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
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.
268
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
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;
=
=
=
=
0,
0,
1,
1,
B
B
B
B
=
=
=
=
0
1
0
1
Q
Q
Q
Q
<=
<=
<=
<=
Y
Z
X
X
270
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;
=
=
=
=
=
=
=
=
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.
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
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
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'
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
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
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}
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 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
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
280
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
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
7.
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
284
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.
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
en
en
en
en
X sin parada:
X con las paradas:
Z:
S:
01111100111111100001011110101
0111111001111111100001011110101
0111110001111101100001011110101
0000001000000010000000000000000
10001110011010
10100001000101
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
288
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
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
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
Load
Entradas C
(d) Diagrama de tiempos
FIGURA 7-1
Registro de 4 bits
294
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.
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
296
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-
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 6 5 4 3 2 1 0
(a) Registro R
15
0
R2
15
8
PC (H)
0
PC (L)
FIGURA 7-4
Diagrama de bloques de registros
298
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
R1
Clock
R2
Clock
K1
FIGURA 7-5
Transferencia de R1 a R2 cuando K1 % 1
t1
299
TABLA 7-1
Smbolos bsicos para transferencia de registros
Smbolo
Descripcin
Ejemplos
Letras
(y nmeros)
Parntesis
Flecha
Coma
Corchetes
Indica un registro
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.
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
300
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
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
302
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
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
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
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
306
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.
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
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
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
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
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-
311
Qi1
D
C
SHR 4
MUX
S1
S0
Clock
S1
Modelo S1
S1
S0
Modelo S0
S0
0
1
Qi
C
2
Di
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
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
313
TABLA 7-8
Secuencia de cuenta de un contador binario
Secuencia de cuenta ascendente
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).
314
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
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
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
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
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
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
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
320
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.
321
TABLA 7-11
Tabla de estados y entradas de flip-flops para contadores
Estado
actual A
0
1
0
1
0
1
1
1
0
1
1
0
0
0
0
1
322
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.
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
0/X 0/0
1/X 0/1
1
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
324
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.
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
325
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
FIGURA 7-19
Bus simple versus multiplexores dedicados
326
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-
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
FIGURA 7-20
Bus triestado estado versus bus multiplexado
328
Registro A
SRG 4
C
SO
Sl
Registro B
SRG 4
SO
Sl
Clock
Shift
Entrada C
T1
T2
(b) Cronograma
FIGURA 7-21
Transferencia serie
T3
T4
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
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
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
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.
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
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
333
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
334
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
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
(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
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
337
S0
0
0
1
1
0
1
0
1
No cambia
Pone el registro a 0
Desplazamiento hacia abajo
Carga paralelo de datos
338
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.
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
(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
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.
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
344
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.
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
Entrada
Entrada
Cdigo
binario
Estado
IDLE
Entrada
000
R 0
RUN
Operacin
de registro o salida
Condicin
de 1 bit
Salida 0
Salida
Salida
Salida 1
Entrada
Operacin
de registro o salida
Salida 0
Salida 1
...
Condicin
de n bits
...
Salida 2n 1
Salida
(d) Caja de salida condicional
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
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.
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
10111
Multiplicando
19
10011
Multiplicador
10111
10111
00000
00000
10111
437
110110101
Producto
FIGURA 8-4
Ejemplo de multiplicacin a mano
350
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
352
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
354
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
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
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.
Entradas
Estado futuro
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
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
FIGURA 8-11
Reglas de transformacin para la unidad de control con un flip-flop por estado
SECUENCIAMIENTO Y CONTROL
361
362
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
364
FIGURA 8-13
Descripcin VHDL de un multiplicador binario
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.
366
FIGURA 8-15
Descripcin Verilog de un multiplicador binario
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
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.
SECUENCIAMIENTO Y CONTROL
369
Generador de la
siguiente direccin
Secuencia
Registro de direcciones
de control
Direcciones de control
Direccin
Memoria
de control
(ROM)
Dato
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
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.
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
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
374
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
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
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.
MEMORIAS
379
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
10110101 01011100
10101011 10001001
00001101 01000110
.
.
.
.
.
10011101 00010101
00001101 00011110
11011110 00100100
FIGURA 9-2
Contenido de una memoria de 1024 # 16
380
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.
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
382
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
384
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
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
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
390
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
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
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.
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
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.
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
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
Controlador
de refresco
Direcciones
de filas
Registro de
direcciones de fila
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 entrada/salida
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
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.
MEMORIAS
399
TABLA 9-2
Tipos de DRAM
Tipo
Abreviatura
Descripcin
Fast Page
Mode DRAM
FPM DRAM
Extended Data
Output DRAM
EDO DRAM
Synchronous
DRAM
SDRAM
Double
Data Rate
Synchronous
DRAM
DDR SDRAM
Rambus5
DRAM
RDRAM
Error-Correcting
Code
ECC
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
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).
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
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.
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
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
CAPTULO
10
FUNDAMENTOS DEL DISEO
DE PROCESADORES
408
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.
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
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.
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
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.
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
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)
413
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
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
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.
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
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
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.
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
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
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
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.
420
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
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
422
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
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
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
AA
R2
010
BA
R3
011
MB
Registro
0
FS
F % A ! B1 ! 1
0101
MD
Funcin
0
RW
Escribe
1
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
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
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.
427
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
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
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
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
Contenido de la memoria
Opcode
en decimal
Otros campos
Operacin
25
5 (resta)
R1 p R2 . R3
35
32 (almacena)
SA:4, SB:5
M[R4] p R5
45
66 (suma
inmediata)
R2 p R7 ! 3
55
96 (bifurcacin
sobre cero)
If R6 % 0,
PC p PC . 20
70
00000000011000000
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.
434
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-
435
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
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
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.
ADI
LD
ST
SL
NOT
BRZ
0010000
0100000
0001110
0001011
1100000
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
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
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
440
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
441
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
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
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
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
DX
TABLA 10-12
Informacin de la palabra de control para la ruta de datos
Cdigo
444
FUNDAMENTOS DEL DISEO LGICO Y DE COMPUTADORAS
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
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
447
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
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
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
450
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
IL PS
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
451
452
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.
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?
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)
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
sl A
A ! B1 ! 1
AoB
B1
ASB
B1 ! 1
ApB
(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
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
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
Instruccin-transferencia
de registros
DA AA BA MB
FS MD RW MW PL
JB
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
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)
458
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
461
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
463
ADD T2, C, D
MUL X, T1, T2
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.
M[T1] p M[A]
ADD T1, B
MOVE X, C
M[X] p M[C]
ADD X, D
MUL X, 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.
464
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
ST
M[X] p ACC
LD
ACC p M[C]
ADD
MUL
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.
465
TOS p M[A]
PUSH B
TOS p M[B]
ADD
PUSH C
TOS p M[C]
PUSH D
TOS p M[D]
ADD
MUL
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
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
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
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.
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.
470
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.
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
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
472
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).
473
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
Memoria
PC = 250
250
Opcode
Modo
251
252
Siguiente instruccin
400
700
500
800
752
600
800
300
900
200
R1 = 400
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.
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 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
Mnemnico
Load
Store
Move
Exchange
Push
Pop
Input
Output
LD
ST
MOVE
XCH
PUSH
POP
IN
OUT
477
101
102
103
R1
104
FIGURA 11-7
Memoria de la pila
478
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.
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.
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
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.
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
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
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
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.
483
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
484
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.
485
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.
486
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*
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)
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.
488
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.
489
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
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
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.
M[SP] p PC
PC p Direccin efectiva
SP p SP ! 1
492
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
493
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
494
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.
M[SP] p PC
SP p SP . 1
M[SP] p PSR
EI p 0
Pone a 0 el flip-flop
INTACK p 1
PC p IVAD
Interrupciones externas
495
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
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
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.
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
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
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]
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
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?
501
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
FIGURA 12-1
Temporizacin de la ruta de datos
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.
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
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.
507
FIGURA 12-2
Diagrama de bloques de una ruta de datos segmentada
508
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
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.
510
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
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.
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
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.
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.
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
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
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
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
SIU
MOVB
1000101
0001100
LSR
0001101
LSL
LD
ST
JMR
SLT
BZ
BNZ
JMP
JML
0001110
0010000
0100000
1110000
1100101
1100000
1010000
1101000
0110000
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
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.
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
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
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.
520
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.
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
MOVA
ADD
ADD
R1, R5
R2, R1, R6
R3, R1, R2
MOVA R1, R5
R1
R2
R5
IF
DOF
EX
WB
IF
DOF
EX
WB
IF
DOF
EX
R1 R6
R3
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
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
FIGURA 12-11
Ejemplo de una parada por conflicto de datos
EX
WB
524
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
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
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
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
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
R1 R2
WB
FIGURA 12-14
Ejemplo de anticipacin de datos
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
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
FIGURA 12-15
Ejemplo de control de conflictos
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
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.
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
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
533
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
535
FIGURA 12-20
CPU CISC en pipeline
536
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
537
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
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
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.
540
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
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
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
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
541
542
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
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
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.
546
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
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
3.
4.
5.
6.
7.
8.
9.
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
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
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
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
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
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
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
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.
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
560
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
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.
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
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
Peticin de
interrupcion
Registro
de control
Microcontrolador
Microcontrolador
Registro
de status
FIGURA 13-9
Controlador de teclado y su interfaz
566
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
SYNC
PID
CRC
EOP
CRC
EOP
CRC
EOP
SYNC
8 bits
Tipo
4 bits
1001
Chequeo
4 bits
0110
Direccin
Direccin de
del dispositivo punto final
7 bits
4 bits
SYNC
8 bits
Tipo
4 bits
1100
Chequeo
4 bits
0011
Data
(Up to 1024 bytes)
SYNC
8 bits
Tipo
4 bits
0100
Chequeo
4 bits
EOP
1011
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.
Transferencia
Transferencia
Transferencia
Transferencia
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
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
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
Flag
1
Lectura de registro de datos
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.
572
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
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.
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
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
576
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
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
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
Bus interno
Bus de datos
Registro de direcciones
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
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
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
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
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
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
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
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
588
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
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.
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
3 N. del T.: El trmino ingls thrashing a veces se traduce, algo informalmente, por rascado.
SISTEMAS DE MEMORIA
Direccin
Etiqueta
593
Dato
ndice
Etiqueta
Dato
Cach
Memoria principal
(b) Mapeado de Cach
FIGURA 14-3
Cach mapeado directo
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
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
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
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
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
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
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.
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
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
Controlador
de cach
ndice
Etiqueta
Memoria
principal
Memoria
principal
Memoria de
etiquetas 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
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
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.
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.
606
Desplazamiento
de pgina
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
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
SISTEMAS DE MEMORIA
609
Desplazamiento
de pgina
Etiqueta
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
14-5
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.
3.
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
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
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
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
616
NDICE
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
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
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
622
NDICE
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
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
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
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
W
Write-back, 601
Write-through, 601
X
XOR. Vase OR exclusiva