Está en la página 1de 471

© Del documento, de los autores. Digitalización realizada por ULPGC.

Biblioteca Universitaria, 2011


Principios
de diseño digital

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
CONSULTORES EDITORIALES:

SEBASTIÁN DORMIDO BENCOMO


Departamento de Infonnática y Automática
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

LUIS JOYANES AGUILAR


Departamento de Lenguajes, Sistemas Infonnáticos e Ingeniero del Software
UNIVERSIDAD PONTIFICIA DE SALAMANCA en Madrid

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Principios
de diseño digital

Daniel D. Gajski

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Traducción:
Carlos García Puntonet
Julio Ortega Lopera
Francisco José Pelayo Valle
Beatriz Prieto Campos
Departamento de Electrónica y Tecnología de Computadores
Universidad de Granada

Coordinación de la traducción:
Alberto Prieto Espinosa
Catedrático de Arquitectura y Tecnología de Computadores
Universidad de Granada

Revisión técnica:
Mateo Valero Cortés
Antonio González Colás
Departamento de Arquitectura y Tecnología de Computadores
Universidad Politécnica de Cataluñ"

PRENTICE HALL
Madrid. • México· Santafé de Bogotá· Buenos Aires. Caracas· Lima· Montevideo
San Juan· San José· Santiago· Sao PauIo • White Plains
/ Datos de catalogación bibliográfica

DANIEL D. GAJSKI
Principios de diseño digital
PRENTICE HALL IBERIA. Madrid. 1997

ISBN: 84-8322-004-0
MATERIA:
Infonnática 631

Fonnato 195 x 250 Páginas 488

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
DANIEL D. GAJSKI
Principios de diseño digital

No está permitida la reproducción total o parcial de esta obra


ni su trasmisión o tratamiento por cualquier medio o método
sin autorización escrita de la Editorial

DERECHOS RESERVADOS
© 1997 respecto a la primera edición en español por:
PEARSON EDUCACIÓN, S. A.
el Núñez de Balboa, 120
28006 Madrid

ISBN: 84-8322-004-0
Depósito Legal: TO.- 1103-2000
2. a reimpresión: 2000
Traducido de:
PRlNCIPLES OF DIGITAL DESIGN
PRENTICE HALL, INC. - Simon & Schuster International Group
A Viacom Company
Copyright © MCMXCVIl
ISBN: 0-13-301144-5

Edición en español:
Editor: Andrés Otero
Diseño de cubierta: DIGRAF
Composición: REPROGRÁFICAS MALPE, S.A.
Impreso por: GRAFILLES

IMPRESO EN ESPAÑA - PRINTED IN SPAIN

Este libro ha sido impreso con papel y tintas ecológicas


© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Este libro está dedicado a mi esposa
ANA
por su paciencia y su apoyo incondicional
tanto en los momentos fáciles como en los difíciles
durante este proyecto.
Contenido

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
PRÓLOGO XIll

AGRADECIMIENTOS XIX

1. INTRODUCCiÓN 2

1.1. Representaciones del diseño 4


1.2. Niveles de abstracción 10
1.3. Proceso de diseño 12
1.3.1. Especificaciones del diseño 12
1.3.2. Desarrollo de una biblioteca de componentes 13
1.3.3. Síntesis del diseño 14
1.3.4. Análisis del diseño 14
1.3.5. Documentación 15
1.3.6. Fabricación 16
1.4. Herramientas CAD 16
1.4.1. Captura y modelado del diseño 16
1.4.2. Herramientas de síntesis 17
1.4.3. Verificación y simulación 18
1.4.4. Diseño físico 19
1.4.5. Test 19
1.5. Proceso típico de diseño 20
1.6. Organización del libro 21
1.7. Resumen del capítulo 23
1.8. Lecturas adicionales 24

vii
viii Principios de diseño digital

1.9. Problemas 2S

2. TIPOS DE DATOS Y REPRESENTACIONES 28

2.1. Sistemas numéricos posicionales 30


2.2. Números hexadecimales y octales 31
2.3. Conversiones entre sistemas numéricos 33
2.4. Suma y resta de números binarios 36

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
2.5. Representación de números negativos 39
2.5.1. Representación en signo y magnitud 39
2.5.2. Sistema numérico en complemento 41
2.6. Suma y resta en complemento a dos 43
2.6.1. Reglas para sumar 44
2.6.2. Reglas para restar 45
2.7. Multiplicación binaria 47
2.8. División binaria 50
2.9. Números en coma flotante 51
2.10. Códigos binarios para números decimales 54
2.11. Códigos de caracteres 56
2.12. Códigos para detección y corrección de errores 57
2.12.1. Códigos de detección de errores 59
2.12.2. Códigos de corrección de errores 61
2.13. Códigos Hamming 62
2.14. Resumen del capítulo 6S
2.15. Lecturas adicionales 66
2.16. Problemas 67

3. ÁLGEBRA BOOLEANA Y DISEÑO LÓGICO 70

3.1. Propiedades algebraicas 72


3.2. Definición axiomática del álgebra booleana 73
3.3. Teoremas básicos del álgebra booleana 76
3.4. Funciones booleanas 79
3.4.1. Complemento de una función 80
3.4.2. Manipulaciones algebraicas 81
3.5. Formas canónicas 83
3.6. Formas normalizadas 89
3.7. Otras operaciones lógicas 92
3.8. Puertas lógicas digitales 94
3.9. Ampliación a varias entradas y varios operadores 99
3.10. Implementaciones de puertas 103
3. lO.\. Niveles lógicos 104
3.10.2. Márgenes de ruido 105
Contenido ix

3.10.3. Conectividad de salida 107


3.10.4. Disipación de potencia 109
3.10.5. Retardo de propagación 109
3.10.6. Familias lógicas bipolares III
3.10.7. Familias lógicas MOS 114
3.11. Tecnología VLSI 117
3.12. Resumen del capítulo 125
3.13. Lecturas adicionales 126
3.14. Problemas 127

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
4. SIMPLIFICACiÓN DE FUNCIONES BOOLEANAS 130

4.1. Representación con mapas 133


4.2. Método de simplificación con mapas 143
4.3. Condiciones de indiferencia 147
4.4. Método de tabulación ISO
4.4.1. Generación de implicantes primos ISO
4.4.2. Generación de la cobertura mínima 153
4.5. Traslación a la tecnología de arrays de puertas 157
4.6. Traslación a la tecnología de bibliotecas específicas 166
4.7. Diseño libre de riesgos 170
4.8. Resumen del capítulo 174
4.9. Lecturas adicionales 175
4.\ O. Problemas 175

5. COMPONENTES COMBINACIONALES \78

5.1. S umadores con acarreo en cascada 180


5.2. Sumadores con acarreo anticipado \82
5.3. S limadores/restadores 187
5.4. Unidad lógica 188
5.5. Unidad aritmético- lógica 189
5.6. Decodificadores 193
5.7. Selectores \95
5.8. Buses 199
5.9. Codificadores de prioridad 200
5.10. Comparadores de magnitud 203
5.11. Rotadores y desplazadores 206
5. 12. Memorias de sólo lectura 209
5.13. Arrays lógicos programables 212
5.14. Resumen del capítulo 214
5.15. Lecturas adicionales 216
5.16. Problemas 216
x Principios de diseño digital

6. LÓGICA SECUENCIAL 220

6.1. Latch SR 223


6.2. Latch SR sincronizado 226
6.3. Latch D sincronizado 227
6.4. Biestables 229
6.5. Tipos de biestables 235
6.6. Análisis lógico secuencial 240
6.7. Modelo de máquina de estados finitos 247

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
6.8. Síntesis lógica secuencial 249
6.9. Reproducción del modelo FSM 252
6.10. Minimización de estados 254
6.11. Codificación de estados 258
6.12. Elección de los elementos de memoria 265
6.13. Optimización y temporización 268
6.14. Resumen del capítulo 270
6.15. Lecturas adicionales 271
6.16. Problemas 271

7. COMPONENTES DE MEMORIZACiÓN 276

7.1. Registros 278


7.2. Registros de desplazamiento 281
7.3. Contadores 283
7.4. Contador BCD 286
7.5. Contador asíncrono 287
7.6. Bancos de registros 290
7.7. Memorias de acceso aleatorio 293
7.8. Pilas de inserción/extracción 302
7.9. Colas primero en entrar, primero en salir 306
7.10. Caminos de datos sencillos 311
7.11. Caminos de datos generales 318
7.12. Diseño de la unidad de control 322
7.13. Resumen del capítulo 324
7.14. Lecturas adicionales 325
7.15. Problemas 325

8. DISEÑO DE TRANSFERENCIA ENTRE REGISTROS 328

8.1. Modelo de diseño 330


8.2. Definición FSMD 332
8.3. Esquema de la máquina algorítmica de estados 338
8.4. Esquema de síntesis ASM 346
Contenido xi

8.5. Compartición de registro (asociación de variables) 353


8.6. Compartición de la unidad funcional (asociación de operadores) 361
8.7. Compartición de bus (asoc iaci ón de conexiones) 370
8.8. Asociación de registros 373
8.9. Encadenamiento y multiciclo 376
8. 10. Segmentación de la unidad funcional 379
8. 11. Segmentación del camino de datos 382
8. 12. Segmentación de control 386
8.13. Planificación 389

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
8.14. Resumen del capítulo 399
8. 15. Lecturas adi cionales 400
8. 16. Problemas 400

9. DISEÑO DEL PROCESADOR 404

9.1. Conjuntos de instrucciones 407


9.2. Modos de direccionamiento 412
9.3. Diseño del procesador 416
9.4. Diseño del conjunto de instrucciones 417
9.5. Diseño CISC 42 1
9.6. Conjunto reducido de instrucciones 430
9.7. Diseño RISC 434
9.8. Avance de datos 438
9.9. Predicción de saltos 442
9. 10. Resumen del capítulo 446
9.1 1. Lecturas adicionales 446
9.12. Problemas 447

APÉNDICE: EXPERIMENTOS DE LABORATORIO 449

íNDICE 461
Prólogo

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Situación actual del diseño digital

Con los avances de la tecnología VLSI, se pueden fabricar microchips que con-
tienen cada uno varios millones de transistores. Como el diseño a mano de estos
microchips es casi imposible, ha surgido la industria CAD para proporcionar
herramientas software con objeto de diseñar estos complejos microchips. Por con-
siguiente, la mayoría de las técnicas de diseño digital que se enseñaban, están
ahora encapsuladas en herramientas CAD, y en la actualidad los diseñadores pue-
den concentrarse en el proceso de diseño global, como un todo, desde la defini-
ción del producto hasta su fabricación. Por todo esto, los diseñadores tienen que
dominar varias técnicas de análisis de requisitos, especificaciones de reproduc-
ción, modelado del diseño, co-diseño software/hardware, síntesis del microchip,
verificación, simulación, y tests. En este sentido, se ha introducido la noción de
diseño experto, dando un vuelco desde un conocimiento exhaustivo de las posi-
bles técnicas de diseño, hacia el conocimiento de los principios, y la capacidad de
usar herramientas CAD para explorar las diversas alternativas de diseño y técni-
cas de implementación.

Objetivos del texto

Principios de diseño. Este libro está concebido para proporcionar una compren-
sión detallada de los principios fundamentales del diseño sin exigir a los estu-
diantes la memorización de muchos detalles tecnológicos potencialmente confu-
sos. Hemos conseguido esta simplificación introduciendo bibliotecas de compo-

xüi
xiv Principios de diseño digital

nentes genéricos que reflejan restricciones prácticas de diseño, tales como coste y
retardo. Esta biblioteca genérica se usa para explicar todos los conceptos que se
presentan y para implementar todos los ejemplos que están resueltos en el texto.
Proceso de diseño. Tomado como un todo, este libro está estructurado en
torno al proceso de diseño global en vez de dirigirse particularmente a las técni-
cas de diseño relevantes dentro de una fase concreta del mismo. Por esta razón,
explicamos el proceso de diseño digital tanto al principio como a lo largo del
libro, enfatizando el papel de cada tarea dentro del contexto de los amplios pro-
cesos de diseño.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Relación entre teoría y práctica. Desgraciadamente, muchos textos sobre
diseño digital tienden a destacar los principios básicos, o. inversamente, a discu-
tir con gran detalle teorías que raramente se usan. Para contrarrestar estas defi-
ciencias se ha planificado este libro de forma que desde el principio haya una rela-
ción clara entre los principios y el diseño práctico. Los fundamentos teóricos se
introducen sólo cuando ayudan a simplificar ciertas explicaciones o técnicas de
diseño.
Ejemplos detallados. En cada Capítulo se presentan varios ejemplos claros
que muestran cada paso del proceso de diseño. Creemos que los ejemplos deta-
llados son la mejor forma de aprendizaje, ya que los estudiantes pueden deducir
todos los pasos del diseño, evaluar las alternativas y cuestionarse las razones que
hay tras todas las decisiones. Los estudiantes también prefieren ejemplos detalla-
dos a lo largo del texto, ya que a través de ellos pueden comprender fácilmente el
significado de los nuevos conceptos. De esta manera, se evitan los errores en la
definición de conceptos que se encuentran frecuentemente en los ejemplos trivia-
les; sin embargo, los ejemplos detallados dejan al estudiante combinar los con-
ceptos del proceso de diseño y deducir por qué y cómo ir de un paso a otro del
diseño.
Diseño de transferencia entre registros. Además de los fines generales indi-
cados, el libro tiene una meta más específica, el aprendizaje de la metodología de
diseño, más allá de los niveles secuencial y lógico, abordando las técnicas de dise-
ño de transferencia entre registros como método general de diseño y también de
procesadores y microchips de aplicación específica. La finalidad de la exposición
del diseño de transferencia entre registros, es mostrar el vínculo perdido entre el
diseño lógico y secuencial, que se ve en el primer año de diseño de computadores
y la organización de computadores, usualmente contemplada en un segundo curso
de diseño de computadores. Esta materia se omite en mucho libros de texto,
dejando al estudiante que adivine cómo se usan los sumadores, contadores y
memorias en el diseño de los procesadores y otros microchips.

Temas destacados

Proceso moderno de diseño. En el primer capítulo se introduce la disciplina de


diseño de sistemas, definiendo el proceso de diseño y sus tareas principales. Este
capítulo sirve como base de exposiciones posteriores más detalladas así como
Prólogo xv

para proporcionar un esquema de la organización de todo el libro. También se dis-


cute la tecnología de un diseño moderno y las herramientas CAD que facilitan su
uso. Se presenta una breve visión del proceso de fabricación y se discute la rela-
ción entre diseño y fabricación. El objetivo del Capítulo I es motivar al estudian-
te a comprender el diseño de sistemas dándole una visión amplia del papel de la
ciencia del diseño en el mundo real.
Números binarios y representaciones de datos. En el Capítulo 2 se presen-
tan modelos de datos usados por los sistemas digitales. Como es crucial una repre-
sentación binaria inteligible para comprender cómo funcionan los sistemas digi-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
tales. se explican minuciosamente los números binarios (tanto en punto flotante
como fijo) así como varios algoritmos para implementar operaciones aritméticas.
que se usarán en capítulos posteriores. También se explican varios tipos de mode-
los de datos y cómo usarlos eficientemente.
Impacto de la tecnología VLSI. Las técnicas de diseño siempre deben poder
adaptarse a ciertos compromisos entre los requisitos de un sistema dado y la tec-
nología disponible para su implementación. Por esta razón se introducen muy
pronto los principios y restricciones de la tecnología VLSI y se discute en casi
cada capítulo su impacto sobre varias técnicas de diseño. Sin embargo, este libro
no requiere un conocimiento de electrónica, ni trata de circuitos eléctricos. En su
lugar, se usan componentes que representan operadores aritméticos y booleanos
estándar así como estructuras de datos tanto sencillas como complejas. El libro no
utiliza bibliotecas de componentes concretas como TTL o bibliotecas CMOS
comercialmente disponibles, porque el libro se ha escrito bajo la suposición de
que comprender los principios de varios componentes y conocer cómo usarlos es
más importante que saber los nombres exactos y tipos de encapsulados de todos
los circuitos comercialmente disponibles. Por este motivo se usan componentes
genéricos independientes de cualquier tecnología patentada.
Enfoque actual del diseño lógico y secuencial. Las bibliotecas de diseño
actuales intentan ser pequeñas para simplificar tanto su mantenimiento como los
algoritmos de diseño y las herramientas CAD. A través de este libro, se usa una
sencilla biblioteca de puertas y se construyen todos los componentes de alto nivel
que se necesitan a partir de esta biblioteca básica. Los Capítulos 5 y 7, por ejem-
plo, introducen todos los componentes secuenciales y combinacionales que se
necesitan para el diseño de procesadores y circuitos integrados de aplicación
específica. Al mismo tiempo, creo que el hecho de que existan herramientas CAD
adecuadas, no debe hacer pasar por alto que estas también pueden aliviar a los
diseñadores de la necesidad de tratar con técnicas de optimización manual com-
plejas. Por esta razón, se enfatizan los fines básicos y principios de optimización
y se muestra el proceso de diseño moderno.
Enfoque formal al diseño de transferencia entre registros. En el pasado,
las técnicas de diseño por encima del nivel de síntesis secuencial se han conside-
rado un arte y han ocupado muy poco espacio en los textos de diseño. Para cubrir
este hueco, en el Capítulo 8 se introduce el concepto de máquina de estados fini-
tos con un camino de datos. Una vez definido este concepto, se muestra cómo
materializar los algoritmos arbitrarios, expresados en términos de un diagrama de
xvi Principios de diseño digital

flujo O de diagramas de transferencia entre registros, en un hardware constituido


por un camino de datos y una unidad de control, formados por componentes
secuenciales y combinacionales detenninados, definidos en los Capítulos S y 7.
Diseño del procesador. En el Capítulo 9 se muestra cómo se puede diseñar
una CPU usando el formalismo y los métodos de diseño del nivel de registros que
se introdujeron en el Capítulo 8. Además, este capítulo ofrece una introducción a
los conjuntos de instrucciones, la arquitectura del computador, y la metodología
de diseño del procesador. Para mostrar estos conceptos, en el Capítulo 9 se carac-
teriza el diseño de procesadores CISC de 16 bits y RISC de 32 bits con avance de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
datos y predicción de saltos.

Características editoriales

Esquema de organización del libro. Para orientar al estudiante, se utilizan dia-


gramas de bloques típicos que resumen los temas presentados en el libro y que
definen sus interconexiones. Cada capítulo comienza con un párrafo introducto-
rio que resume los objetivos del capítulo y los temas que cubre. Esta visión ayu-
dará al estudiante a relacionar los conceptos presentados en capítulos anteriores
con los nuevos conceptos que se van introduciendo.
Procedimientos de diseño. Cada técnica de diseño se presenta paso a paso,
resumida en forma de diagrama de flujo. El diagrama de flujo permite al estudian-
te resolver problemas de fonna ordenada, así como sugerir cómo ampliar una téc-
nica determinada a nuevos problemas o a tecnologías que aparezcan en el futuro.
Ejemplos comprensibles. El libro incluye ejemplos resueltos para ilustrar
principios y procedimientos de diseño que son relevantes en ciertas aplicaciones.
En cada capítulo se utiliza un pequeño número de estos ejemplos comprensibles
para mostrar varias alternativas de diseño, guiando al lector a través de todos los
pasos necesarios del diseño, desde la definición hasta el esquema final.
Manual del profesor y transparencias para clases. Se ha desarrollado un
manual de soluciones que contiene los resultados de cada problema del final de
cada capítulo. El manual también incluye problemas originales para comodidad
del profesor. También se ofrecen transparencias de las clases dadas por el autor
cuando usa el libro. El manual y el conjunto de transparencias estarán disponibles
para los profesores que usen este libro como texto en sus clases.

Opciones del curso

Basándonos en su organización, este libro debería ser igualmente efectivo en dos


tipos de cursos. En un curso introductorio al diseño lógico, por ejemplo, el libro
se puede usar para enfatizar el diseño secuencial y combinacional tradicional,
cubierto en los estudios de ciencia e ingeniería informática tanto en Estados
Unidos como fuera. La materia para estos cursos corresponde a los Capítulos del
I al 7. Además, se incluye materia sobre diseño de transferencia entre registros,

~-~_ .. ~~~
Prólogo xvii

para sistemas de uso general y para procesadores de aplicación específica, usual-


mente cubiertos en un segundo curso de diseño digital o en un curso de introduc-
ción a la arquitectura de computadores.
En este curso, el estudiante aprendería primero los componentes básicos de
transferencia entre registros: componentes combinacionales en el Capítulo 5 y
secuenciales en el Capítulo 7. La mayor parte del curso consistiría en el aprendi-
zaje de técnicas de diseño a nivel de registro y procesos de diseño para síntesis de
procesadores específicos de aplicación arbitraria, que están en el Capítulo 8.
Finalmente, en el Capítulo 9, el estudiante aprendería el diseño de conjuntos de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
instrucciones modernos y de procesadores RISC y CISC de uso general.
En cualquier caso, se sugiere complementar las clases con prácticas en las que
los estudiantes trabajarían con problemas reales de diseño usando herramientas
CAD modernas para reproducción del diseño, modelado, simulación, verifica-
ción. síntesis, análisis del tiempo. planteamientos de base, diseño ñsico y otros
aspectos del proceso de diseño. En nuestra experiencia, las prácticas han tenido
mucho éxito entre los estudiantes, ya que les permite relacionar los conceptos
aprendidos, con los diseños prácticos en un entorno de trabajo real. Se describen,
para ayuda del profesor. varios montajes de laboratorio y se dan varios ejemplos
de experimentos en el Apéndice.

Daniel Gajski
lrvine. California
Agradecimientos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Primero, me gustaría agradecer a todos los estudiantes que han seguido mis cIa-
ses y preguntado cientos de cuestiones. haci endo que me diera cuenta del proce-
so de aprendizaje y forzándome a experim entar con varios métodos para replan-
tear el conocimiento sobre la ciencia del diseño.
Me gustaría agradecer a Nikil Dutt, Alex Orailoglu , Fadi Kurdahi , Youn-Long
Steve Lin, y a Allen C. H. Wu. que han probado en clase una primera versión de
este li bro proporcionándome muchas sugerencias útiles sobre como mej orar el
contexto y la presentación de los temas . También aprecio mucho las útiles suge-
rendas de revisore. anónimos sobre el material selecc ionado y la calidad de la
presentación .
Me gustaría también mostrar mi agradecimiento a las personas que me han
ayudado en la producción del libro. Jon Kleinsmith hizo las figuras, mecanogra-
fió y formateó el texto. Sin su paciencia y dedicaci ón este libro nunca hubiera ll e-
gado al editor. También estoy agradecido a Sarah Wilde por la edición deli cada y
minuciosa del manuscrito. Gracias también a los miembros del CAD LAB que me
ayudaron con las correcciones y lecturas de prueba de la vers ión final del texto:
Tedd Hadley. Jie Gong, Hsiao-Ping Juan. SOlita Bakshi. Alfred Thordarson,
David Kolson. Pradip Jha, Preeti Panda, Jianwen Zhu , Min Xu, Laurent Choura-
ki. Marie-Li se Flottes, Nong Fan, Joanna Kang, Wnwei Pan. Viraphol Chaiyakul.
y Poonan Agrawal. Tambi én estoy muy agradecido a Gen'y Johnson y Don
Fowley de Pre ntice Hall , que me convencieron de que escribir este libro sería un
reto adecuado e interesante en este momento de mi vida. Me gustaría también
agradecer a Tom Robbins, Barbara Cappucio, lrwin Zucker, y al personal de
Prentice Hall su gran profesionalidad en la producción del libro.

xix
Principios
de diseño digital

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
e
A
PUL
o

Introducción

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Diseñar no es sólo IIn conjunto de técllicas o cómo hacer una receta, es un
proceso en el que contribuyen muchas personas ell los diferentes aspectos
que dall lugar al produclo filial. Cada 1/110 de eslas personas ve el produc-
to desde WI punto de vista distinto, tiene WICl experiencia diferente, y usa
herramientas distintas. Juntos, convierten tul concepto en un producto real.
4 Principios de diseño digital

En cualquier producto, el proceso de diseño abarca desde la manera de concebir


su funcionamiento hasta el desarrollo de un esquema de fabricación, Muchas per-
sonas están implicadas en este proceso, desempeñando cada uno una tarea espe-
cífica,
El departamento de ventas, por ejemplo, estudia las necesidades de mercado
y determina los requisitos de un nuevo producto, Los tecnólogos seleccionan la
tecnología, y los proveedores los posibles componentes, mientras un grupo dc
apoyo adquiere o de sarrolla herramientas software que puedan facilitar el diseño
del producto y de cada una de sus partes, Los di señadores del producto convier-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ten los requi sitos del producto en esquemas para la fabricación, Los ingenieros de
tests desarrollan estrategias de test para verificar la corrección del diseño y prue-
ban los productos fabricados por si no funcionan , mientras que los ingenieros de
fabricación desarrollan planes de construcción y producción,

1.1. REPRESENTACIONES DEL DISEÑO


En la definición del producto, en el diseño y en el proceso de fabricación, cada
persona ve el producto desde un punto de vista ligeramente diferente y necesita
información específica para realizar su trabajo, Por este motivo, cada producto. y
consecuentemente cada di seño, requiere varias representaci on¡,s o puntos de vista
diferentes, que difieren en el tipo de información que se ctes:raca, Además. la
misma representación requiere a menudo distintos niveles de detalle en las distin-
tas fases del diseño o del ciclo de fabricación, Los tres tipos de representaciones
más comunes que se usan son las representaciones de comportamiento, estructu-
ral y física.
Una representación de comportamiento o funcional ve el diseño como una
caja negra y se centra en especificar su comportamiento en función de los valores
de entrada y restricciones de tiempo, En otras palabras, una representación de
comportamiento describe el funcionamiento pero no la implementación de un
diseño dado, definiendo la re,s puesta de la caja negra para cualquier combinación
de valores de entrada, pero sin describir la forma de diseñar o construir la caja
negra con unos componentes dados,
Una representación estructural, por el contrario. es aquella en la que se defi -
ne la caja negra como un conjunto de componentes y sus conexiones, A diferencia
de una representac ión de comportamiento, se especifica la implementación del
producto sin hacer referencia ex plícita a su funcionamiento. En algunos casos. por
supuesto, el funcionamiento se puede deducir a partir de sus componentes interco-
nectados. Sin embargo, es difícil deducir el funcionamiento de un diseño de esta
forma y es propenso a errores, ya que las funciones de algunos componentes puede
que no se usen con todo su potencial, o pueden ser modificadas codificando las
entradas y salidas de los componentes, Además, en casos en los que el número de
componentes es muy grande, digamos unos 10.000, sería imposible descubrir su
funcionamiento, especialmente porque la tecnología de hoy permite fabricar
microchips excesivamente complejos, con varios millones de componentes,
Introducción S

Finalmente, una representación física es aquella que especifica las caracte-


rísticas físicas de la caja negra. dando las dimensiones y situación de cada com-
ponente y las conexiones contenidas en la descripción estructural. Obsérvese que
mientras la representación estructural proporciona la conecti vidad del diseño,
sólamente la representación física describe las conexiones espaciales concretas
entre vari os componentes. En otras palabras. la representación física se usa para
describir el di seño después de haber sido fabricado, especificando su peso, tama-
¡io, disipación de calor, consumo de energía, y la posición de cada conector de
entrada o salida.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
EJEMPLO 1. 1 Reloj despertador
PROBLEMA

Desarroll ar las re presentaciones dI! comportamie nto, estruc tural y física del diseño de un
reloj despertador senci llo.
SOLUCIÓN

Un reloj despertador senci llo consla de un visualizador de crislal líquido (LCD. Liquid
C,ysral Displ"r) que visualiza los segundos. minulos y horas, y cinco conmutadores difc-
renles para ajuslar la hom (S,), la alarma (S2)' el ava nce de los minulos (S3)' el avance de la
hora (S) . y la conexión de la alarma (S,). Cuando S, eSlá acuvado (cerrado), se puede aj us-
lar elliempo presionando S3 Ó S•. Cada vez que se pulsa S3 ó S•. el ajusle de los minutos o
la hora avanza 1 y el cambio en los minutos o la hora aparece en el visualizador del reloj .
Cuando S2 eSlá activado, se puede ajuslar la alarma de manera similar, pulsando S3 ó S. para
avanzar los minulos o la hora. Siempre que se eSlá ajuslando la alamla. la hora y los minu-
lOS aparecen en el LCD. Fi nalmenle, cuando el conmulador S5 eSlá activado (cerrado), la
alarma está habilitada, y se genera un sonido que dura 5 segundos cuando e l reloj ll ega al
inSlanlC de alamla.
El comportamiento de esle reloj desperlador se puede represenlar median le lres lareas o
procesos concurre nte s: re loj . aju ste . y alarma . Cada uno de estos procesos, a su vez, se
puede describir mediante un diagrama de flujo sencillo. que consisle en cajas en forma de
penlágono para indicar pregunlas y cajas rectangulares para inrucar cálculos. En las Figuras
1.1 a 1.3 se mueSlran los diagramas de Ilujo que represenlan el componamienlo de cada uno
de eslOs tres procesos.
Como se puede ver Cilla Figura 1. 1. el proceso del reloj tiene una señal de entrada. Pulso.
y seis variables inlemas: Segulldos, Millufos. Horas, Spalltalla, Mpalltalla y Hpallfalla . La
señal Pulso. que se usa para contar los segundos en la alamla, dura 1 segundo. siendo 1 la
primera milad del segundo y O el reSlO. Tres de las variables inlemas (Segul/dos. Mil/lilaS y
Horas) se usan para contabilizar los segundos. minutos y horas. Los Segundos y Minutos se·
conlabili zan en módulo 60 ( es decir. se pone a O siempre despué de que la cuenla alcance
59). Las Horas se conlabilizan en módulo 12, empezando por 1 y volviendo a 1 después de
llegar a 12. En fun cionamienlo. los Segulldos se incrementan en 1 siempre que la señal Pulso
pase de O al , lo que se indica en el diagrama de Ilujo con una flecha hacia an·iba. l . De
forma similar, siempre que los Se[.! lfIlllos alcancen 0, los Mifllllos se incrementan en l . y
siempre que los Mil/lItos llegan a O. las Horas se incrementan en l .
Las olras lres variables inlernas (Sp(lIIwll", Mpclllfalla y Hpal/falla ) se usan para visua-
li zar los segundos. minulos y horas. Hay que deslacar que cada una de es las variables de
6 Principios de diseño di gital

visuali zación se actualizan indi vidualmente siempre que hay un cambio en las correspon-
d ientes variables de reloj (es decir, en Seg undos. Min utos y Horas).

0
Pulso = t "
r-('-___ .:..._/"
sí - I Segwlllos = Selllmdos
. I Spcmtalla '" Seg/l"tlo,~
o
+ 1 I
t
I
r --!n!2o<~~;::~>~ >!..i._11I M/'.\1ill/uos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
-<" ¿Seglllldo.{ O? I 11= M
p Ul! a (/
ini/tos
'l'
= /.'
+ I
//I I/tos

t I
r<¿Mi","OS - O') si Huras = Horas +
Hpt/lllrll/(/ = H oras

I
1

I
I
I
I
FIGURA 1.1 Repres entación del comportamiento del reloj des pertador: proceso del reloj.

A d ife rencia del proceso del reloj . el proceso de ajuste (Figura 1.2) describe como aj us-
tar la hora del reloj o de la alarm a, como se desee. Se usan dos vari ables internas adiciona-
les. Ma/arl/w y Ha/arllla, para almacenar los minutos y la hora de la alarm a. Acti vando los
conmutadores S, y S4' se pueden incrementar los minutos y la hora de la alarma, que están
almace nados en Mala rllla y Ha/arillO respecti vamente . Entonces, se ajusta el tiempo correc-
to primero acti vando el conmutador S , Ó S2' según se qu.iera aj ustar la hora de l reloj o de la
alarma, y después se pulsan repetidamente los conmutadores S3 y S4' Obsérvese que no se
pueden accionar S, y S2 a la vez. Obsérvese también que la hora q ue se aj usta accionando
S3 Ó S4 se visualiza inmediatamente en el visualizador del reloj .
El úl timo de los tres procesos, el proceso de la alarma, (Figura 1.3). se ha diseñado para
ac ti var la alarma poniendo la variabl e de sal ida, Pirido, a I en el momento en el que la hora
del reloj se iguale a la de la alarma. suponiendo que el conmutador de alarma, S" está acti-
vado. En otras palabras, siempre que M inuros = Ma/a rllla. Horas = Ha/arma , y S, esté ac ti-
vado. Pitido tomará el valor l .
Para una descripción del comportamiento del reloj despertador como la que acabamos de
realizar, podría haber vari as descripciones estructurales ya que un a descripción de l compor-
tamiento no determina una estructura exacta. Sin embargo, especifica una serie de vari ables
internas que se pueden usar para almacenar datos y una seri e de declaraciones de asignacio-
nes utilizadas para transformac ión de datos. A partir de esta información, se pueden conver-
tir las variables en componentes de memoria y deducir los componentes aritméticos adecua-
dos para realizar las transformaciones de datos especificadas en las declarac iones de as igna-
ción. Esta conversión da lugar a la representación más obvia. aunque no óptima. qu e se
mues tra en la Figura l A.
Obsérvese que, según la Figura l A, el reloj despertador lo dirige el oscilador. qu e pro-
du ce una o nda senoidal con una frecuencia de un ciclo por segundo, como se ve en la Figura
1.5(a). El generador de pulsos convie rte la onda senoidal en un tren de pulsos. ver Figura
Introducción 7

1.5(h), de la misma frecuencia que el seno, pero toma sólo dos valores : O y 1. Esta señal.
con sólo dos valores posibles. se denomina señal digital, y a culaquier sistema que proce-
sa señales digitales se le denomina sistema digital.

1
no~ (,S¡ actI vado" ~i
¡ ¡
)-!!.........~
00

' >lf<
¿S2 act,\'udo? c.S2 actIvado?

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
+ r< +
. ~
no / ¿53 activado? ).& ¿53 actIvado? +
+
I M alanllo = M llla rnw + I
Mpamolla = M alanllo
I I MiIlIlIOS::: MilJlltQS
Mpamalla :: M i/lUtos
+ I
I
1
).á
! ,1
~
00
¿54 activado? ¿54 activado?
¡ +
I Ha/amm = H a/anllo + I
Hpalllllllll = H,lIan/w
I I H oras "" H oras + I
=
Hpatlwlfa H ora.f
I
I
I
l

FIGURA 1.2 Representación del comportamiento del reloj despertador: proceso de ajuste.

no
¿Mil/l/tos = Ma/arma ?

00
¿Horas ::: H{//a rma ?

00
¡ 55 (lcril'ado?

FIGURA 1.3 Representación del comportamiento del reloj despertador: proceso de a larma.
8 Principios ue di seflo digital

qJ / s, (ajuste de la hora)

L--L

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Visualizador
de segundos
Visualizador
de minutos S;!
Visualizador ;:~~:::¡:======I----------'
deho~ S'~+--1~___-r_+-____________~
"-

Pitido
~
Ss (alarma
activada)

FIGURA 1.4 Representación estructural de l reloj despertador.

1 seg un do

I I l b) Tre )1 lit! pl bp~


(l L _ _ _ _--L.._ _ _ _--'-_ _ __ --L.._ _

FIGURA 1.5 Generadores de ondas.

Volviendo a la Figura 1.4, puede verse que el resto ue la especificación estructur31 del
reloj despertador contiene tres con tadores. un contador de segundos. un contador ele l11inu ~
tos y un contador de horas. que contabili zan segundos. minutos y horas. y Jos comron e ll ~
tes de memoria de una palabra. un registro de minutos y un regi stro de horas. usado5 para
almacenar el minuto y hora de alarma. El visualizador muestra los segundos, minutos y hora
tanto de l reloj como de la alarma. dependi endo de la posición del co nmutador S~.. En el COI1l ~
In troducción 9

parador de minutos, se comparan los minutos del reloj y de la alarma. Si son iguales, el
valor I pasa al comparador de horas. De forma similar. el com parador de horas pone su sali -
da a I siempre que la hom de l reloj y de la alarma sean iguales y la enu'ada del comparador
de minutos sea l . Suponiendo que el conmutador S5 esté activado cuando la salida del com-
parador de horas se hace l. la señal PiTie/o pasa a l . El generador de sonido se usa para con-
vertir el cambio de O a 1 de la señal Pitido en un tono de 5 seg undos. que controla el minial-
tavoz del reloj.
Categorizando los componentes de la representación estructural del reloj despertador, e l
osci lador y e l al tavoz se consideran componentes analógicos. ya que su entrada y salidas
pueden tomar cualquier va lor de nt ro de un rango dado. Por ejemplo. durante cada segundo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
el oscilador genera C0 l110 salida todos los valores comprendidos entre - 1.5 y +1.5 voltios.
El generador de pulsos es lo que denominamos un conversor analógico-digital (AIO). ya
que a partir de una entrada analógica ge nera una salida digital. In ve rsamente. el generador
de sonido es un conversor digital-analógico (D/A) ya que está diseñado para convertir
señales digitales en anal6gicas. El resto del sistema. contenido en la zona sombreada de la
Figura 1.4. es un sistema digital compuesto por componentes digitales. El contenido de este
libro trata exclusivamente úe técnicas de diseño de sistemas di gitales.
En la Figura 1.6 se muestra una representación física del re loj despertador. dando los
tamaños y posiciones de los componentes reales como se montarían en una tarjeta de cir-
cuito impreso (PCE. Primed Cicuir Bo{//yl) dentro del chasis del re loj despertador. Obsér-
vese que esta pes contiene varios microchips : el oscilador. el ge nerador de pulsos. el gene-
rador de sonidos. y todas las palles digitales del re loj despertador. También contiene el
visuali zador, los conmutadores. la caja para la batería. así como las tiras de metal que
conectan todos los componentes.

G~· ncr.w.lllr Gc:ne r.ltl,--"


.:1.. ptl l .. o- Ik 'I'\f\IUo

Vi,u ~ I I /:¡,klf
1.Ie cri,tal
11 1 líqU idO

1-1 CnmnUl.wo.
dt·.:l'o':Ulo,clk'
111 1111110' Cnnll1ul~dor
tilo' :l\";\IlCC di:
1-ICJoI'¡h 00,-,.
= A I:u-I1 \:1 'líC l11 po
=
0 11 0 11
C\1l1 lP~ r1 iltle nUI
¡Je ¡)1 1:1~
Cl1 l1l1lu t ~dor

• de pU<';\oI~ en

• • hN:l. ~ d ~
.,I:lrill:l

~======A=J=I~=I:lr=I,=m==~A=',="=ml====~~
(a) Vi ~la de frente (b) Tarjeta de circuito impreso

FIGURA 1.6 Representación física del reloj despertador.

Como se ha indicado e n e l Ejem p lo 1.1 , e l proceso de diseño de productos


e lectrónicos en ge ne ral , y de sistemas digitales e n particular, siempre consta de al
menos tres fases, centradas en tomo a tres representaciones principales con los
siguientes objetivos:
10 Principios de diseño digital

1. Proporcionar la representación del comportamiento para definir el fun-


cionamiento del producto.
2. Convertirla en una representación estructural formada por componentes
de una biblioteca dada de componentes.
3. Producir una representación física que especifique cómo se monta y se
fabrica el producto.
Cualquier diseño digital puede pasar por estas tres fases en di stintos niveles
de abstracción, como se verá en la siguiente. sección.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1.2. NIVELES DE ABSTRACCiÓN
En la Sección l.l se describían las representaciones de comportamiento. estruc-
tural y física. En el proceso de diseño de sistemas electrónicos, cualquiera de estas
tres representaciones se puede usar en di stintos niveles de abstracción o granula-
ridad, en la que los niveles se definen por el tipo de objetos que usan. En general,
se pueden identificar cuatro tipos diferentes de objetos en un sistema electrónico:
transistores, puertas, registros y componentes del procesador. Estos niveles de
abstracción se resumen en la Tabla 1.1. Como indica la tabla, la mayoría de los
componentes en el nivel de transistor son transistores. resistencias, y condensa-
dores, que se combinan para formar circuitos analógicos y digitales que pueden
dar una determinada funcionalidad. Esta funcionalidad normalmente se describe
mediante un conjunto de ecuaciones diferenciales o mediante algún tipo de rela-
ción corriente/tensión. La representación física de estos circuitos analógicos y
~igitales, denominados celdas. está fonnada por componentes a ni vel de transis-
tor y los cables que los conectan.
En general, una celda se define en términos del trazado del transistor, forma-
do por un conjunto de rectángulos, usualmente dibujados con diferentes colores,
que representan áreas rectangulares de las distintas capas de material de un micro-
chip.
A partir de estos trazados se generan máscaras para el proceso litográfico, que
es el primer paso a dar dentro de la fabricación de microchips. En este proceso
una máscara sirve para exponer fotográficamente ciertas áreas de la superficie de
silicio de forma que puedan ser químicamente alteradas, y crear así varias capas
de materiales distintos. Al final , la combinación adecuada de materiales crea el
efecto transistor, de fomla que una corriente eléctrica puede fluir entre do capas
de materiales diferentes siempre que se le aplique una tensión adecuada en sus
extremos.
Como se indica en la Tabla 1.1 , los componentes principales del nivel de
puerta son puertas lógicas y biestables (jlip-fiops ). Las puertas lógicas son cir-
cuitos especiales que realizan operaciones booleanas que son simi lares a conjun-
ciones tales como "o" e "y" (en inglés "or" y "and"). Un biestable es un elemen-
to de memoria básico que es capaz de almacenar un bit de información que puede
tomar uno de dos valores: O (falso, no) ó I (verdadero, sí).
hm-oducció n 11

TA BLA 1.1 Representaciones del diseño y niveles de abstracción

NIVE L DESCRIPCiÓN DEL COMPONENTES OBJETOS


COMPORTAMIENTO ESTRUCTU RALES FfslCOS

Transistor Ecuaciones diferenciales, Transistores. Celdus analógicas y


diagramas corriente- resistencias, digitales
tensión condensadores
Puerta Ecuaciones booleanas, Puertas, biestables Módulos, unidades
máquinas de estados

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
finitos
Registro Algoritmos, diagramas de Sumadores. Microchips
flujo, conjuntos de comparadores,
instrucciones. FSM registros. contadores,
generalizado bancos de registro.
pilas, caminos de datos
Procesador Especificación ejecutable, Procesadores, Tarjetas de circuito
programas controladores, impreso, módul os
memorias, ASlC multichip

Las puertas y los biestables son celdas digitales típicas que tienen entradas y
sa lidas en sus extremos. Estas celdas se pueden agrupar y situar en una superficie
de silicio para formar módulos o unidades aritméticas y de almacenamiento que
. e usan como componentes básicos en el nivel de regi stro. Estas unidades se des-
criben según su comportamiento en términos de ecuaciones booleanas y diagra-
mas de máquinas de estados finitos (FSM, Finife Stafe Machine).
En la Tabla 1.1 puede verse también que los componentes principales del
nivel de registro son unidades aritméticas y de almacenamiento, tales como
sumadores. c.omparadores. multiplicadores, contadores, registros. ficheros regis-
tro, pilas y caminos de datos. Cada uno de estos componentes registro es un
módulo o unidad que tiene unas dimensiones fijas, un tiempo de propagación fijo,
y un comportamiento determinado. fijado por sus entradas y salidas de intercone-
xión con otros módulos. Estos componentes regi stro se pueden montar e interco-
nectar en microchips, que se usan como componentes básicos del siguiente nivel
superior de abstracción. En general. estos microchips se describen mediante dia-
gramas de flujo. c.onjuntos de instrucciones, diagramas FSM generalizados, o
tablas de estados.
El nivel más alto de abstracción presentado en la Tabla 1. 1 se denomina nivel
de procesador. ya que los componentes básicos de este ni vel son los procesado-
res. memorias. controladores, e interfaces, además de los Hmicrochips a medida"
(c lIstom Inicrochips) denominados circuitos integrados de aplicación específica
(AS IC, Application Specific lnfegrafed Circuits). Generalmente, uno o más de
estos componentes se colocan en una tarjeta de circuito impreso y se conectan con
tiras conductoras que están impresas en la tarjeta. En muchos casos se pueden
reducir las dimensiones de la tarjeta usando un sustrato de silicio, en vez de una
U Principios de diselio digi tal

taljeta de circ uito impreso, para conectar los microchips. en cuyo caso el conjun-
to se denomina módulo multichip. El comportamiento de un sistema que está
compuesto por estos componentes se describe usualmente mediante lenguaje
natural, o una especificación ejecutable en un lenguaje de descripción hardware,
o un algoritmo o un programa escrito en un lenguaje de programación .
Durante el proceso de diseño de un sistema electrónico digital , cualquiera de
los niveles de abstracción se puede usar una o más veces, dependiendo de cuan-
tos objeti vos, tecno logías, componentes, bibliotecas y alternativas de di seiio
diferentes se quieran exp lorar. Como esta exploración se podría ll evar a cabo

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
potencialmente de diferentes maneras, debemos escoger cuidadosamente una
metodología de diseño efic iente que determine el subconjunto adecuado de
niveles de abstracción, tareas de síntes is, el orden en q ue han de se r ejecutadas y
el tipo de herramientas CAD a usar durante la ejecución de cada tarea en el pro-
ceso de diseño.
La metodología más usual consiste en la construcción de una biblioteca o catá-
logo para un cierto nivel de abstracción, usando la síntesis para converti r una des-
cripción de compOlt amiento en otra estructural que pueda implementarse con los
componentes de esta biblioteca. En los últimos 20 alias, las bibliotecas más com u-
nes han consistido en componentes a nivel de puerta, aunque recientemente las
bibliotecas de registros han ganado popularidad. En este libro también se sigue esta
metodología, definiendo primero una biblioteca a nivel de puerta que puede usarse
para construir una biblioteca a nivel de registro que se usará para la síntesis de trans-
ferencia entre registros de uso general y procesadores de aplicación específica.

1.3. PROCESO DE DISEÑO


En términos muy generales, se puede definir el proceso de di seño como la secuen-
cia de pasos que llevan desde el concepto de un producto hasta los esquemas de
fabricación que describen cómo hacer dicho producto. En la práctica, por supues-
to. este proceso está muy influenciado por el producto que se está diseñando, por
cuándo debe ser introducido en el mercado, por la tecnología particular que se usa
en su fabricación, e incluso por factores tales como la estructura organi zativa de
la compañía, la experiencia del eq uipo de diseño, la disponibilidad de herramien-
tas CAD, y la adecuación de la financiación. En este sentido, el proceso de di se-
ño siempre varía de una empresa a otra, e incluso de un producto a otro dentro de
cada empresa. A pesar de estas variaciones, podemos, sin embargo, asumir sin
riesgos que los sig uientes pasos básicos siempre están presentes. de una fo rma u
otra, en cada proceso de diseño.

1.3.1. Especificaciones de diseño

Una vez anali zados los requisitos del mercado, el arquitecto jefe escribi rá la
especificación del producto que define el fu ncionam iento de dicho producto y
Introducción 13

las interfaces con el entorno en que va a funcionar el producto. En muchas oca-


siones, este proceso de especificaciones incluye un diseño esquemático de la
arqu itectura del producto, que usualmente se da en forma de diagrama de blo-
ques de alto nivel. En el diagrama, cada bloque tendrá una función clara que
se puede especificar con una fórmula o algoritmo matemático, o simplemente
en leguaje natural. Tal diagrama de bloques puede también especificar el tipo
y formato de los datos que se transfieren entre los bloques y puertos de entra-
da/salida.
En general, este tipo de especificaciones tiende a ser vaga en ciertos lugares,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
y quizás incluso incompleta, debido a que el producto no ha sido aún diseñado y
evaluado. Esto no es necesariamente un problema, ya que la especificación sirve
fundamentalmente corno punto de partida para el equipo de diseño y normalmen-
te se modifica y redefine con el avance del diseño. En la mayoría de los casos la
especificación se escribe en lenguaje natural, como españolo inglés, a pesar de
que las especificaciones de tipo ejecutable han ganado fama ya que se pueden
verificar, analizar y sintetizar más fácilmente.

1.3.2. Desarrollo con una biblioteca de componentes

Una vez que se ha desarrollado el diagrama de bloques de alto nivel en la fase de


especificación, se debe redefinir iterativamente o descomponer en componentes
menores. La finalidad de este proceso es asegurar que el producto no contenga
más que los componentes predefinidos en la biblioteca de componentes que se
ha caracterizado para una tecnología de fabricación concreta. En algunos casos
estas bibliotecas contienen componentes de uno o más niveles de abstracción. Por
ejemplo. no es inusual encontrar algunos componentes del nivel de registro inclui-
dos entre los componentes del nivel de puerta.
Los componentes de la biblioteca deben estar, por tanto, diseñados, probados
y completamente documentados para que los diseñadores puedan usarlos sin tener
que analizar su estructura. La información de caracterización debería incluir lo
siguiente:
1. La función de los componentes, los nombres de las entradas y salidas y su
aplicación típica
2. Las dimensiones físicas de los componentes, la posición de sus entradas
y salidas, e información sobre su encapsulado
3. Las restricciones eléctricas, los requisitos de la fuente de alimentación,
las rangos de corriente y tensión permitidos para las entradas y salidas y
la disipación de calor
4. Las formas de onda de las tensiones de entrada y de salida, la rela-
ción en el tiempo entre ellas, y los retardos críticos entre entradas y
salidas
5. Los modelos de componentes usados por las herramientas CAD para
simulación, síntesis. diseño físico y verificación
14 Principios de diseño digital

1.3.3. Síntesis del diseño

En el proceso de diseño, la síntesis es el procedimiento mediante el cual se con-


vierte una especificación o descripción del comportamiento de un componente en
una descripción estructura l usando componentes de los ni veles de abstracción más
bajos que se incluyen en una biblioteca dada. En aquellos casos donde se necesi-
tan componentes que no están contenidos en esa biblioteca, se necesi taría ll evar a
cabo una síntesis complementaria.
La síntesis se puede entender normalmente como un proceso de redefinición

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
de la descripción de comportamiento, en el que se añaden más detalles estructu-
rales en cada paso. En la práctica, esto normalmente significa que la descripción
de comportamiento se divide en varios bloques y se reescribe para reflejar el
resultado de la divi sión. Esta nueva descripción redefinida contiene una desclip-
ción estructural de los bloques divididos y sus conexiones junto con las descrip-
ciones de comportamiento de cada bloque. Este proceso sigue hasta que cada blo-
que represente uno de los componentes de la biblioteca elegida.
Siguiendo los niveles de abstracción desc ritos en la Tabla 1.1, se pueden iden-
tificar diferentes tareas de síntesis:
1. La síntesis del sistema convierte una especificación en una estructura de com-
ponentes a nivel de procesador, tales como proce adores, memorias, y ASIC.
2. La síntesis de la arquitectura convierte algoritmos, diagramas de !lujo.
o conjuntos de instrucciones en componentes a nivel de registro, tales
como contadores, registros, pilas, colas, sumadores y multiplicadores.
3. La síntesis secuencial transforma la descripción de una máquina de e. ta-
dos finitos en puertas y biestables.
4. La síntesis lógica transforma expresiones booleana en componentes a
nivel de puerta.
Por debajo del nivel del puerta, las técnicas de síntesi s se dividen de acuerdo
con áreas de aplicación específica, a causa de la diversidad de estilos en el dise-
ño de circuitos. Por ejemplo, se necesitan distintas técnicas para sintetizar circui-
tos para distintos dominios, tales como conversión A/D, filtrado. procesamiento
de audio, o realzado de imágenes. Es importante destacar que cada uno de los
pasos de síntesis descritos en esta subsección pueden dividirse en varios subpasos
o problemas, que se tratan a través del resto del libro.

1.3.4. Análisis del diseño

Una vez se ha sintetizado un diseño. el siguiente paso es eva luar dicho diselio.
verificando que satisface Jos requisitos de la especificación. o en algunos casos.
verificando que el di seño desarrollado es realmente el mejor dentro de las di s-
tintas alternativas de di seño. Cuando se evalúa un diseño, nos concentramos,
normalmente en una de entre diferentes medidas de calidad, tales como coste,
prestaciones o testeabilidad. Una de las medidas más importante es, por ejem-
Introducción 1S

pi o, el coste de fabricación del producto concreto. Esta medida usualmente se


aproxima con el tamaño o medida del área, ya que el área de un microchip o de
una PCB es proporcional al coste de su fabricación. El número de conectores de
entrada y salida es otra medida importante del coste, ya que el coste de encap-
sulam iento es proporcional al número de conectores de entrada/salida.
Recientemente, el consumo de energía se ha vuelto una medida muy importan-
te debido al uso exte ndido de equipos portátiles como las computadoras portá-
tiles o '"Iaptop" y los teléfonos móviles. Como el consumo de energía determi-
na el tamaño de las baterías, aquel tiene también una gran influencia en e l peso

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
del producto.
La otra medida importante que concierne al proceso de diseño son las pres-
taciones del producto, que se pueden medir de varias formas. Las medidas
más usuales de las prestaciones son ( 1) el retardo entrada/salida, (2) el periodo
del reloj y (3) e l tiempo necesario para que se complete la ejecución de un pro-
grama, algoritmo, diagrama de flujo o una instrucción. En general, se conside-
ra que los componentes con menos retardos , los diseños con ciclos de re loj más
cortos y los productos con menores tiempos de ejecución, tienen mejores pres-
taciones.
Finalmente, el índice de testeabilidad se define en función del número de
fallos de fabricación detectables y del número de patrones de test que se necesi-
tan para detectar todos esos fallos. Cada patrón o vector de test contiene un con-
junto de valores de entrada al que corresponde un conjunto de valores de salida
esperados para obtener un funcionamiento libre de fallos. En general, el número
de fa ll os potenciales es proporcional al número de patrones de test que se necesi-
tan. que a su vez es proporcional al tiempo necesario para verificar el producto
fabricado.

1.3.5. Documentación

El paso final del proceso de diseño consiste en preparar la documentación del


microchip o sistema fabri cado. Esta documentación generalmente incluye tanto
la representaci ón física como de comportamiento del producto, pero omite las
representaciones estructurales detalladas. que se consideran información confi-
dencial del fabricante que será utili zada sólo por las divisiones de fabricación
de la empresa. La información sobre el comportamiento se da usualmente en
forma de un diagrama de bloques tosco acompañado por un diagrama de
flujo que describe el comportamiento del sistema completo o de alguna de sus
partes. Además, esta documentación sobre el comportamiento presenta proto-
colos de comunicación, y se suele dar en forma de diagramas de tiempo para
una o varias entradas y salidas. La representación física , por otra parte, cont ie-
ne e l tamaño, la información de encapsulado y los nombres y posiciones de
todos los conectores. Finalmente, esta documentación también espec ifica los
rangos mínimo, normal y máximo de corriente, tensión , potencia, temperatura y
tiempos de retardo.
16 Principios de diseño digital

1.3.6. Fabricación

La fabricación no es realmente una parte del proceso de diseño: sin embargo. es


su meta, en el sentido de que el proceso de fabricación convierte los dibujos fina-
les del di seño en un microchip o una tatjeta de circuito impreso montando todas
las partes y conectándolas adecuadamente. Después de la fabricación, normal-
mente se llevan a cabo más tests para separar cualquier producto defectuoso de
los que son funcionalmente correctos. Este test se puede realizar a velocidad de
ejecución normal o a velocidades menores de las que se va a operar normalmen-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
te. En el caso de productos de altas prestaciones, es muy difícil hacer los tests a
ve locidad normal ya que los verificadores tendrían que ser mucho más rápidos
que la velocidad normal del producto que se está verificando.

1.4. HERRAMIENTAS CAD


En la Sección 1.3, vimos los pasos básicos del proceso de diseño, y en esta sec-
ción vere mos brevemente las herramientas de diseño con ayuda de una computa-
dora (CA D, Computer Aided Design) que usan los diseñadores en las dist intas eta-
pas del proceso de diseño. Estas herramientas CAD se pueden dividir en cinco
categorías diferentes, según la forma de usarlas en el proceso de diseño.
1. Captura y modelado
2. Síntesis
3. Verificación y simulación
4. Ubicación e interconexionado
5. Generación de tests
Estas cinco categorías corresponden gros so modo a las áreas de especializa-
ción de investigación y desarrollo de hen'amientas CAD.

1.4.1. Captura y modelado del diseño

Llega un momento, en todo proceso de diseño, donde se necesita transformar una


representación de comportamiento en un representación estructural compuesta
por varios elementos de una biblioteca bien caracterizada. En este momento, se
podrían especificar textualmente todos los componentes y sus interconexiones,
aunque esto puede ser un procedimiento tedioso y propenso a errores. Por otra
parte, también se puede capturar la representación estructural de forma más fácil
y precisa, usando una herramienta de captura. Básicamente, esta herramienta per-
nute al diseñador seleccionar un componente de un menú, situarlo en la pantalla,
y conectarlo a otros componentes mediante líneas que representan cables. Este
tipo de representación estructural de captura se denomina esquemática, y las
herramientas que frecuentemente se usan para su captura se conocen como helTa-
mientas de captura de esquemas.
Introducción 17

Altel11ativamente, con un lenguaje de descripción hardware, como el están-


dar YHDL del IEEE, se puede llevar a cabo la captura de esq uemas. Sin embar-
go. además de la captura de esquemas estos lenguajes de descripción hard ware
también permiten capturar representaciones de comportam iento, así que se puede
describir el di eño como una combinación de su comportamiento y de su estruc-
tura. La descripción del producto a diseñar normalmente empieza con una des-
cripción del com portamiento de cada bl oq ue con un diagrama de bloques estruc-
tural de alto ni vel. A medida que el proceso de diseño progresa, cada uno de estos
comportam ientos ti ene que descomponerse recursi vamente en una estructura de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
bloques dc niveles inferiores hasta que el diseño se convierta en una jerarqu ía de
bloques. en donde el nivel más bajo represente componentes específicos de la
biblioteca dada. Entonces, cada diseilo se habrá descrito con diferentes niveles de
abstracción. conteni endo cada nivel un tipo y una cantidad de detalles diferente.
Este conjunto jerárquico de descripciones es necesario para que se puedan erifi-
car distintas propiedades del diseilo y para que el diseño esté de acuerdo con las
restricciones impuestas. Además, este procedi miento simplifica la gestión del pro-
yecto de diseño, acelera la comunicación entre los diseñadores, permite una inte-
gración del diseño 'sencilla, reduce los errores de diseño y admite la evolución y
mantenimiento del diseño. Cada una de estas descripciones se denomina modelo
del diseño real. ya que proporciona pane de. pero no toda, la información sobre
el diseño manual. Los diseñadores, o herramientas CAD. pueden usar la infonlla-
ción de diseño que proporciona cada model o para analizarla posteriormente o eva-
luar la calidad del di seño, o incluso para su síntesis posterior. El proceso de desa-
rrollo de estos modelos se denomina modelado, y la guía que proporciona ins-
trucciones para escribir los modelos incluyendo la infonnación requerida para que
los modelos puedan ser usados por otras herramientas se denomi na guía de
modelado.

1.4.2. Herramientas de síntesis

Las téc nicas de síntesis se usan siempre que se necesita convertir una descripción
de comportamiento en una descripción estructural que contenga componentes de
una biblioteca dada. Por ejemplo, las herramientas de diseño lógico permiten con-
vertir ex presiones booleanas en estructuras a nivel de puerta, además minimizan
el número de puertas, el retardo de propagación. o el consumo de energía. Las
herramientas de síntesis lógica son muy útiles cuando se diseñan circuitos com-
binacionales tales como operadores aritméticos, comparadores de datos, codifica-
dores, decodificadores, y lógica de control.
Las herramientas de síntesis secuencial son necesarias para sintetizar estruc-
turas que contengan elementos de memoria. Estas herramientas de síntesis están
concebidas para minimizar el número de elementos de memoria a usar en el cir-
cuito, para generar una codificación de los estados y entradas que reduzca sus cos-
tes, para minimi zar el retardo entrada /sa lida, y para si mplificar las expresiones
booleanas que se requerirán en su implementación.
18 Principios de diseño digital

Las herramientas de síntesis de alto nivel ode comportamiento se usan para


convertir expresiones aritméticas, conjuntos de instrucciones, o descripc iones
algorítmicas en estructuras a nivel de registro, en las que se minimizan tanto el
tamaño del microchip como el tiempo de ejecución. La síntesi s de comporta-
miento es muy útil en el diseño de circuitos de interfaz, aceleradores de uso espe-
cífico, y algoritmos para señales digitales . Las técnicas y principios de síntesis se
describen en los Capítulos 4, 6, 8 y 9.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1.4.3. Verificación y simulación

Una vez que se ha capturado el diseño mediante una herramienta de captura de


esquemas o que se ha especitic.ado con una descripción HDL, se necesi ta verifi-
car si el diseño funciona como se esperaba. Esto es difícil de llevar a cabo. ya que
no conocemos la definición del funcionamiento deseado si ésta no fue capturada
de una u otra forma . Por otra parte, lo que se puede verificar, por comparación de
la descripción estructural y de la descripción de comportamiento. es el hecho de
que su estructura se ha sintetizado correctamente. Usando computación simbóli -
ca, demostrando teoremas, o con manipulación algebraica, se puede probar que
dos representaciones diferentes del mismo diseño son iguales para todos los con-
juntos posibles de valores de entrada. Además de probar la equivalencia de repre-
sentaciones, los verificadores temporales pueden generar todos los caminos críti-
cos de una representación estructural o de comportamiento, y garantizar que
incluso los retardos más largos satisfarán los requisitos. Como los verificadores
de equivalencia deben probar la equivalencia entre dos diseños para cada con-
junto de valores de entrada, y los verificadores temporales deben probar que se
satisfacen las restricciones para cada camino de entrada/salida del di seño. ambos
consumen mucho tiempo. Por esta razón, el tipo de verificación mús común es el
de simulación del di seño. en el que se prueba el diseño sólo para un conjunto
dado de valores de entrada, generando un conjunto de valores de salida a partir de
una descripción estructural, y se compara con un conjunto dado de vrlores de sali-
da esperados, deducidos a partir de la descripción de comportalr ie'lto.
Dada una descripción estructural compuesta por componente s de mode los
conocidos, un simulador opera de la siguiente forma. Primero ca;cula los va lores
de salida de los componentes cuyas entradas están conectadas a los puertos de
entrada correspondientes a las entradas de estos que hayan sI do facilitadas.
Después, una vez calcu lados dichos valores de salida, proporciona el ti empo de
propagación obtenido a partir de los modelos de los componentes concretos utili-
zados. A continuación se selecciona el siguiente conjunto de componentes. cuyos
valores de entrada se conocen ahora, y se calcu lan sus valores de sal ida a partir de
estos nuevos valores de entrada, obteniendo el tiempo de propagac ión igual que
antes. Este paso se repite hasta que se simule la fOfma de actuar de todos los com-
ponentes o hasta que no haya ningún cambio en ningún \ alor de salida.
Finalmente, el valor de salida generado se compara con el valor esperado y el
retardo de propagación entrada/salida con la restricción especificada del retardo.
Introducción 19

De esta forma, un simulador puede verificar la exactitud del funcionamiento y de


la temporización, aunque esta verificación sólo sea válida para un conjunto parti-
cular de datos de entrada. Por este motivo, un diseñador que usa un simulador
debe intentar desarrollar conjuntos de entradas y valores de salida esperados de
forma que se prueben todos los caminos posibles del interior del diseño. Este
desarrollo puede no ser una tarea fácil en el caso de diseños que contengan un
millón de puertas o transistores.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1.4.4. Diseño físico

Las herramientas CAD di sponibles para el diseño físico son las herramientas de
ubicación (p/acel1lent too /s) que permiten optimizar la situación de los compo-
nentes en una tarjeta de circuito impreso o de las celdas y módulos en un micro-
chip. Teniendo en cuenta el tamaño, la relación de dimensiones y las posiciones
de los terminales de entrada/salida de cada componente, estas herramientas de
ubicación permiten posicionar cada componente en la representación estructural
de forma que se minimi ce el área ocupada por todos los componentes. Una vez
que se ha determinado la posición de cada componente. se usan las herramien-
tas de encaminamiento (routing l OO/S) para determinar la posición de cada cable
que conecta dichos componentes, de forma que se reduzca al máximo la longitud
del cable, la suma de las longitudes de todos los cables, y se optimice el uso de
todas las capas de conexión en una tarjeta de circuito impreso o en un microchip.
Aplicando estas herramientas de ubicación, hay que tratar especialmente los
cables de suministro de energía, que deben poder llegar a cada componente y
sumini strar corriente suficiente. Igualmente, hay que tener en cuenta los cables
que forman parte del reloj , ya que una longitud excesiva puede generar retardos
en la señal del reloj, lo que puede ser una fuente intermitente o permanente de
fallos .

1.4.5. Test

Los tests se realizan después de que el producto haya sido fabricado, con objeto
de separar las unidades correctas de las defectuosas. En general, el proceso de
verificación consiste en aplicar ciertos patrones de te t a la unidad que se va a pro-
bar y comparar las salidas de dicha unidad con las respuestas esperadas de esta
unidad funcionando correctamente. Dentro de este proceso de verificación, las
herram ientas CAD se usan para la generación de patrones de tests y para la deter-
minación del perfil de detección de faltas. La finalidad de las herramientas de
generación de patrones de test es ayudarnos a generar el conjunto de patrones
de test que compruebe tantos caminos en el diseño como sea posible. Es muy difí-
cil, sin embargo, crear un conjunto de patrones de test que abarque todas las fal-
tas potenciales en cualquier diseño. Por este motivo, usualmente se complemen-
tan las herramientas de generac ión de test con herramientas para determinar el
20 Principios de diseño digital

perfil de faltas (test grading), que nos permitan generar una lista de todas las fal-
. tas cubiertas por un conjunto particular de patrones de test.

1.5. PROCESO TíPICO DE DISEÑO


El proceso típico de diseño. tal como se hace en entornos industriales desde los
últimos 20 años, se inicia con un análisis de mercado y una definición de los
requisitos del producto. A partir de estos requisitos el arquitecto jefe planifica un

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
estudio de viabilidad para determinar la tecnología, la arquitectura, y las aplica-
ciones típicas del producto. En esta etapa, se desarrolla un diagrama de bloques
preliminar y se redactan las especificaciones del producto. El equipo de diseño
reconsidera este diagrama de bloques preliminar y lo refina a nivel de sistema, de
registro y finalmente a nivel de estructura de puertas. Después , esta estructura a
nivel de puerta normalmente se captura con una herramienta de captura de esque-
mas y se simula para verificar su funcionamiento y su temporización. Si en este
momento se encuentra que no se ha tenido en cuenta alguna restricción del di se-
ño o que alguna medida de calidad no es satisfactoria, deben modificarse los
requisitos del diseño. las especificaciones y la arquitectura, y debe repetirse el
proceso completo. Una vez que se logra un resultado satisfactorio. el siguiente
paso es el diseño físico que define la ubicación e interconexionado de la estructu-
ra del diseño. En el caso de una implementación con microchips , cada compo-
nente lógico o de almacenamiento, tiene que estar trazado antes de su ubicación e
interconexionado. Finalmente, después de terminar el diseño físico , el grupo de
tests genera los patrones de test adecuados a usar durante la fabricación, esc ri-
biendo también la documentación sobre el producto.
En el pasado, la mayoría de estas tareas de diseño tenían que hacerse manual-
mente. ya que sólo una pequeña parte del proceso de diseño estaba automatizado. Sin
embargo, esto empezó a cambiar, con la disponibilidad de herramientas CAD para el
diseño físico, que se desarrollaron para ayudar a los di señadores en la ubicación e
interconexionado de los componentes. Posteriormente, se desarrollaron herramientas
adicionales para la captura de esquemas a nivel de puerta y también para simulación
a nivel de puerta, que hicieron posible automatizar más el proceso de diseño.
Más recientemente, en los 90. ha avanzado significativamente la automatiza-
ción del proceso de diseño, introduciendo lenguajes de descripción hardware
estándares y herramientas de síntesis. Con los lenguajes de descripción hardware
se pueden generar ahora descripciones de comportamiento que se simulan fácil-
mente, y con las nuevas herramientas de síntesis se ha hecho mucho más fácil
pasar de una representación estructural a una de compoltamiento.
Debido a este reciente desarrollo, ha surgido un nuevo proceso de diseño que
depende enormemente de la descripción del comportamiento en ni veles de abs-
tracción superiores y de refinado o síntesis de la descripción del comportamiento.
Este rápido éxito de las nuevas herramientas de síntesis ha generado una deman-
da en la automatización del proceso de diseño en incluso los niveles supeliores, y
eventualmente en el desarrollo de técnicas de síntesis de sistemas completos a
Introd ucción 21

parti r de especificaciones ejecutables. En este libro seguimo este nuevo proceso


de diseño, con la excepción de la síntesis de sistemas, que queda fuera del alcan-
ce de este texto.

1.6. ORGANIZACiÓN DEL LIBRO


En este li bro, nos hemos ocupado ante todo de las técnicas de di seño di gital que
se requieren en el diseño de computadoras. En su más extenso alcance, el diseño

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
de un computador podría dec irse que empieza con la física del estado sólido y con
el proceso de fabricación de circuitos integrados, que determinan los tipos y pro-
piedades de los componentes electrónicos más básicos, tales como transistores,
resistencias y condensadores. Con estos componentes se pueden diseñar tanto cir-
cuitos analógicos como di gitales, siguiendo las leyes básicas de la electrónica.
Los circuitos digitales procesan señales que pueden tomar sólo un pequeño núme-
ro de valores fijos, normalmente dos, que hacen que sean muy robu stos y fáciles
de diseñar. Debido a estas dos características, todos los cálculos y el procesa-
miento de la información se hacen con circuitos digitales.
Por otra parte, los circuitos analógicos procesan señales que pueden tomar
cualquier valor dentro de un rango dado. La mayoría de las señales que se gene-
ran o que los humanos reconocen, como texto, voz, y vídeo, son señales analóg i-
cas. Como todo el procesamiento se hace digitalmente, los sistemas electróni cos
generales deben convertir estas señales analógicas, generadas por humanos, en
señales digitales, y después realizar las operaciones, transformaciones y comuni -
cac iones totalmente en el domin io digital, convirtiendo los resultados en señales
analógicas con el tin de que el ser humano las utilice.
El análisis y síntesis de circuitos analógicos y digitales se presenta en cursos
introductorios en la mayoría de las ingenierías y se ha omitido en este libro. No
se requieren tampoco conocimientos de electrónica o de diseño de circuitos para
entender el contenido de este libro. Teniendo en cuenta esto, la exploración de un
computador comienza con puertas lógicas y biestables, que son circuitos digitales
especíticos que trabajan sólo con dos valores y presentan sólo dos estados. Por
conveniencia, suponemos que nuestra biblioteca de componentes lógicos la ha
defini do un hipotético fabricante de circuitos integrados. De esta forma no nece-
sitamos implicarnos en la fabricación y di seño de ci rcuitos. Esta situ ación se pare-
ce a lo que ocurre actualmente en la industria, en la que los fabri cantes de chi ps
también proporcionan a sus clientes bibliotecas lógicas. Por tanto. los diseñado-
res de sistemas trabajan con bibliotecas y dan la descripción del sistema en fun-
ción de los componentes de la biblioteca, mientras que en las fábricas de circui-
tos integrados se introduce el trazado de cada componente antes de su t'abl; cación.
En este libro se usa una estrategia de abajo a arriba en los principios de dise-
ño di gital. Como vemos en la Figura 1.7, comenzamos presentando en el Capítul o
2 el sistema de numeración binari o y las representaciones de datos que se usan en
todos los sistemas digitales y productos basados en computadores. Todos los com-
ponentes de almacenamiento y aritméticos que se usan se basan en la representa-
22 Principios de diseño digital

clOn binaria de números y alfabetos. Sin embargo, antes de embarcamos en el


diseño de componentes concretos, en el Capítulo 3 se introduce el fundamento
teórico del diseño digital, que se denomina álgebra de Boole. En el mi smo capí-
tulo se introduce nuestra biblioteca lógica, que es básicamente una implementa-
ción de los operadores de este álgebra de Boole. En el Capítulo 4 se cubren las
técnicas de diseño lógico más básicas que se usan en la síntesis y optimización de
funciones booleanas arbitrarias . Luego, en el Capítulo 5, se emplean estas técni-
cas para construir componentes lógicos y aritméticos, incluyendo sumadores,
comparadores, selectores, codificadores y decodificadores que constituyen una

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
biblioteca combinacional par? diseños de transferencia entre registros.

Tm IlSI S l~"
res !~ l encins r
co ndel1~adore •


DIse ño de
l
I
Ir
E leC lrón ica 0""'0 d,,;rro;',<
cIrcuitos uigilale.-. analógicos
I I
1 ~
3

l
3
Á l gcbr~ de Boo lo:
r- Pucr1as 1 6gic;\~
y bies la bles
Componcnl<·s
ana lógico,

!
6
~
r-,'!áq uin a

L
de c~ llldos
linilos
.... Téc nicas de
4
Técnicas de di seño
6

I I
dist!Ílo lógico Diseño VLSJ
s.ec ucncial
'-+
SiSlemn binario 2
y rt'Jl!'t'scnlación I
de dmos
1 1 1 .¡
Co mponentes
, 7
Comp!mcnlcs de
Co mpo nclllc s
combinacionales mem orizaci ón de mterfaz

1
~ l
Máljuina de ",lados
8 Diseño de
tran sferencia entre
S 11
fin itos gcncrali7.!1da registros

l
Componcnl es 9
del
proces~dor
Mat.eria cubierta en esle libro

.1
I Diseño dd

I
Dise ño e ingcnicria Co nlpu lil¡Jor
soft ware
I I
Diseño de
Codisciln h~rdwart:. :.iSlc nms
SQ flw are y
mecánico I embchidos

FIGURA 1.7 Estructura del libro.


Introducción 23

En el Capítulo 6 se introduce el modelo de máquina de estados finitos, que se


necesi ta en el di seño de componentes de almacenamiento tales como registros,
contadores y memorias. Estos componentes de memorización se suelen denomi-
nar componentes secuenciales porque su comportamiento depende de una secuen-
cia de valores de entrada en lugar del valor exacto de la entrada actual. Además
del modelo de máquina de estados finitos, en el Capítulo 6 se introducen algunas
de las técnicas de diseño secuencial que se usan en el Capítulo 7 cuando se cons-
truyen componentes secuenciales básicos como registros, contadores, memorias.
pilas. colas y caminos de datos.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Una vez diseñadas las bibliotecas combinacionales y secuenciales, se puede
acceder al siguiente nivel de abstracción. En el Capítulo 8 se introduce el mode-
lo de máquina de estados finitos generalizada y se presentan las técnicas de dise-
ño que se usan en la síntesis de componentes del procesador, cuyo comporta-
miento se suele describir mediante algoritmos, diagramas de flujo , o programas,
o en el caso de procesadores, con conjuntos de instrucciones. Finalmente, en el
Capítulo 9 se usan estas técnicas para diseñar procesadores con conjuntos de ins-
trucciones tanto reducidos como complejos.
Los componentes de procesadores estándar y a medida, presentados en los
Capítulos 8 y 9. junto con los componentes de intetfaz y con dispositivos electro-
mecáni cos tales como di scos, cintas y teclados, se usan en el diseño de muchos
tipos de computadoras. incluyendo computadoras personales, estaciones de traba-
jo, servidores de ficheros y controladores de comunicación. El diseño de compu-
tadoras se estudia en los cursos de arquitectura de computadoras y su contenido
se sale del alcance de este libro. Por supuesto, en el caso de computadoras el hard-
ware básico se complementaría con varias capas de programas software, inclu-
yendo ensambladores, compiladores e intetfaces gráficas de usuario. Esto se estu-
dia en cursos de diseño e ingeniería del software. Las computadoras se usan en el
diseño de sistemas embebidos más complejos, adecuados para aplicaciones tales
como procesamiento de señales, mecatrónica, robótica, comunicaciones, trans-
portes , procesamiento de imágenes, instrumentación médica y multimedia entre
otras. Sin embargo, en general las técnicas y aplicaciones de sistemas embebidos
se estudia sólo en cursos de arquitectura y sistemas avanzados, cuyo contenido
queda fuera del alcance del libro.

1.7. RESUMEN DEL CAPíTULO


En este capítulo hemos introducido las representaciones básicas de diseño, cono-
cidas como representaciones de comp0I1amiento, estructural y física. Hemos des-
crito cuatro niveles de abstracción diferentes: los niveles de transistor, puerta.
registro y procesador. También hemos explorado las relaciones entre las repre-
sentaciones de un diseño y los niveles de abstracción describiendo el proceso de
diseño de un sistema digital electrónico, comenzando por una especificación y
terminando con la fabricación del producto. Hemos descrito muy brevemente
algunos conceptos sobre herramientas CAD usadas en el proceso de diseño.
24 Principios de diseño digital

En e l resto del libro estudi aremos aque llos princ ipi os y técnicas que se usan
en el diseño digital e n los niveles de pueJ1a, regi stro y procesador. Esto nos per-
mitirá con ve rtir una especificación d e un di seño o una descripció n de su compor-
tamie nto e n un a estructura de componentes se leccionados de una biblio teca basa-
da e n las bibliotecas indu striales ac tuales. Podríamos introducir antes el proceso
de diseño, pero previamente neces itamos conocer los principios de lo s s istemas
binarios y del álgebra lógica.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1.8. LECTURAS ADICIONALES
Alamasi, G. s.. aud A. GOlllieb. Highly Paral/el CUIIIIJ//lill!i. 2nd ed. Redwood City, CA:
Benjamin-Cummings. 1994.
Una visión del procesamiento paralelo que relata apl icac iones paralelas y modelos
computacionales paralelos de software y arquitectura!\.
Dasgupta. S. COlllpuler ArchilecllIre: A M odem SVlllhesis. Vol. l . Ncw York : Wi lcy. 1989
Una exp licación bien escrita y clara del proceso de diseño. centrándose en el ni vel de
abstracción arquitectural. Es un texto avanzado, más adecuado para estudi antes con
algunos conoc imien tos sobre arqui tectura de computadores,
Gajski . D. D., F. Vahid . S. Narayan. and J. Gong. Specificalillll {/I/{I Desigll (JI EIII/Jedded
Syslellls. Englewood Cliffs. NJ: Prentice Hall , 1994.
Una introducción al pro blema y resolución del diseño de si stemas embebi dos. hacien-
do é nfasis en modelado, exploración y refinamiento del diseño.
Geiger, R. L., P.E. Allen. and N. R. Strader. IfLSI Design Tecltl/ iq/l /'sjo r AII(¡/(lg al/(l Digiwl
Circuils. New York : MacGraw-Hill, 1990.
Una visión excelente de la tcoría de circuitos analógicos y digitales y de las técnicas de
diseño. con una introducción al diseño fís ico y fabri cación de circuitos integrados
VLSJ. Requiere conocimientos básicos de electrónica.
Hayes, J. P. 111II'Oducliol/ 1(1 Digi/al Desigl/. Reading. MA : Addison- Wesley, 1993.
Una int rod ucción minuciosa al diseño digital. relacionando la electrónica y la lógica :l
tra vés de un conjunto de modelos sencillos y f,íciles de comprender.
Hennesey. J. L. and D. A, Patterson. Compurer Architecture: A Q ue11l1itatil'e Apl>/"O(/C/¡, San
Mateo, CA: Margan Kaufmann , 1990.
Una introducc ión al diseiio de computadoras, re laci onando aplicaciones e implementa-
ciones, escrito por dos pioneros en el campo de la tecnología RISC.
Lauther, U. II/ /mdu eliol/ lO 5)·l/ lhe5is. Chapter 1: "The synthes is approach to di gital system
design." Boston: Klu we r, 1992 .
Una introducción mu y legible sobre las representaciones y el proceso de di sel10.
Maly, W. A lias oI I C Techllolog ies: AII Inlrodu Glioll /0 IfLSI Proasses. Menla Park. CA:
Benjamin-Cummi ngs, 1987.
Una visión ilustrada excelente para inexpertos del proceso de fabricación.
McCluskey, E. J. Log ic Desigll Prill ciples. Englewood Cliffs. NJ : Premice Hall , 1986.
Uno de los pioneros del diseño digital explica los métodos básicos del di seño digital.
con una visión mu y buena sobre los problemas de test y su solución.
Introducció n 2S

Sapiro. S .. Hnd R. J. Smith 11. Halldbook of Design AIIIOlllatioll. Englewood C liffs, NJ:
Prentice Hall. 1986.
Un Lratamiento introductoJio que proporci ona una descripción concisa del proceso de
diseño. sus tareas básicas y el papel de las herramientas CAD en él. Requiere algunos
conoci mientos básicos de di sei'io di gital.
Wolf. W. Modem VLS¡ Desigl/ : A Systellls Ap¡)ltwch. Englewood C liffs. NJ: Prcntice Hall .
1994.
Un tex to fácil de leer explicando los principios del diseño VLSI y cubri endo varias
fases del diseño digital. desde el trazado de máscaras a la arquitectura.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1.9. PROBLEMAS
1.1. (Representac ión de l diseño) Desc riba sem áforos de scriro co m o sigue
las diferencias entre las representacio- C uatro scm~í roros están orientados en
nes de comportamiento. estructural y cuatro direcciones. identil1cadas por
física tle un producto electrónico. las letras N . S. W y E. Cada luz sigue
la siguiente secuencia : ve rde (45
1.2. (Representac ión de l diseño) Añada
segund os). naranja ( 15 segundos). y
una llueva característica al reloj des-
rojo (60 seg und os). Además, los
pel1Hdor descrito en la Secció n 1.1 de
se máfo ros N y S están siempre del
forma que si se mantiene presionado
mismo color. a l igual que E y W. y los
durante 4 segundos el botón de avan-
semáforos N y S nunca están en ve rd e
ce ue los minutos o las horas, el tiem-
o amarill o al mi smo ti empo que los E
po comience a avanzar a la velocidad
tic 1 minuto o 1 hora elida 0 . 1 segun-
yw.
dos. Modi ficar, para refl ejar este 1.5. (Proceso de diseño) Describir la dife-
c3m hio en las especificacione s. las rencia entre:
re prese ntaciones (a) de comporta- (a) Una especificación y una espe-
mient o. (b) estructural. y (c) física. cificación ej ecutable
1.3. (Representación de l diseño) Añada (b ) Una biblioteca a medida y una
una nueva construcción a la repre sen- biblio teca estánd ar
tación de compo rtamiento del reloj (e) Síntesis y refinami ento
despertador. de forma que la señal (d ) Representac ión y abs tracción
Pirido lome el valor 1 sólo 5 seg lln ~ (e) Patro nes de test y medidas de
dos después de que el reloj alcance la testeabi I idad
hora y minuto de la alarm a. (f) Doc umentació n y desc ripción
Obsérvese que en dicha descripció n. HDL
la señal Pitido tendrá el valor I
1.6. (He rrami entas CAD ) Desc ribe las
duran te un minuto entero (es decir,
di fere ncias entre:
hasta que el cOl/fador de m il/1I10S
(a) Captura de esquemas y modela-
haya ava nzado 1 y e l valor del cOIIIll -
do
dor de minutos deje de ser igual que
(b) Diagrama de bloques y espec ifi-
el valor del regisfm de minutos) .
cación
1.4. (Representación del diselio) Haga las (e) Vcrilicación y s imulación
represen taciones de comportam iento (d) Optimi zación y traslación (lIla-
y estructural de un co ntrolador de peudo) a la tecnología
26 Principios de di seño di g ital

(e) Ubicación y planificación de l ASIC. mientras el proceso de diseño


espacio comienza con una especificación eje-
(r) Determinación de l pertil de fal- cutabl e y termine con la fabricación
tas y generación de patrones de de MCM.
test
1.8. (Di seño físico) Dada un a es tru ctura
1.7. (Proceso de diseño) Definir un a de seis microchips, como se muestra
metodo logía en la que la bibli oteca en la Figura P I.8(a), ubicarl os en un
contenga procesadores, memorias. y MCM de 3 x 3 y conectar los micro-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
o,
"
" ----4-~~_+----_r~_r---t~

(a) Representación estructural

(b) MCM

FIGURA Pl.8
Introducción 27

chips usando las trayectorias de tras que las conexiones horizontales


encaminamiento sugeridas con las están en la segunda capa de metal.
líneas de puntos de la Figura Obsérvese también que cada micro-
PI. 8(b). Después conectar 1" L" O, Y chip tiene dos puertos a cada lado y
O, a los puertos MeM . Obsérvese que no se puede reasignar cualquier
qüe las conexiones verticales están conexión de estos puertos a otros
en la primera capa de metal, mien- puertos.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Tipos y
L

de datos
o

representaciones

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
Álgebra booleana Puertas lógicas
y biestables

6
I
Máquina de
'+
estados finitos
Técnicas de
4 e. Técnicas de
6
diseño lógico -+ diseño digital

Sistema binario 2
y representación
de datos
t t
5 7
Componentes Componenles de
combinacionales alm3cenamienJ,g.
I -- 1
Máquinas de 8 Diseño de 8
estados finitos transferencia entre
generalizadas registros

1
9
Componentes
del procesador

Como es fácil construir circuitos digitales que reconozcan y mallip/llen


sólo ceros y unos, nuestro objetivo en el diseño de sistemas es realizar
todas las operaciol/es de /111 compllfador usando sólo estos dos s{mbolos.
En consecuencia, todos los números y datos de un computador tienen que
representarse en esta fomla binaria. En este capítulo veremos cómo repre·
senta,. mlmeros y caracteres en fonna binaria y cómo realizar operaciones
aritméticas COII esta de los datos.
30 Principios de diseño digital

En este capítulo se introducen los tipos de datos más comunes que se pueden
encontrar en sistemas digitales y después se muestra cómo se pueden representar
con un código binario. Los datos que podemos encontrar en sistemas digitales se
pueden clasificar en tres categorías generales que incluyen: (1) números que se
usan en operaciones aritméticas, (2) letras del alfabeto que se usan en procesa-
miento de datos y (3) una serie de símbolos discretos para diversos usos. Estos
tres tipos de datos se representan en computadoras en un código binario, que es la
forma más natural de diseñar dichas computadoras, sencillamente porque es fácil
construir circuitos electrónicos que posean dos situaciones alternativas que se

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
puedan interpretar según convenga como los valores O ó I de un dígito binario.
Aunque toda la información de los sistemas digitales se representa con estos dígi-
tos binarios, siempre que esta información sea para uso humano debe reconver-
tirse en dígitos decimales y letras de alfabeto.

2.1. SISTEMAS POSICIONALES DE NUMERACiÓN


Para comprender el sistema de numeración binario usado en el diseño de compu-
tadoras, necesitamos reconocer que el sistema de numeración que usamos a dia-
rio es un sistema de numeración posicional. En este sistema se puede represen-
tar cualquier número mediante una cadena de dígitos en la que la posición de cada
dígito tiene un peso asociado. Así, el valor de un número dado equivale a la suma
ponderada de todos sus dígitos, como por ejemplo:
1234 = I . 1000 + 2 . lOO + 3 . lO + 4 . 1
Obsérvese que en este ejemplo, cada peso es una potencia de lO que es igual
a 10i, donde i corresponde a la posición del dígito contando desde la derecha. Un
punto decimal nos permite usar potencias de 10 tanto negativas como positivas en
la representación numérica. Por ejemplo:
1234,56= l· 1000+2·100+3·10+4· I +5·0, 1+6·0,01
En general, cualquier número decimal D de la forma d l dQd_l d_2 vale:
D = di . JOI + do . JOO + d_1 . 10- 1 + ('-2 . 10- 2
Aquí a 10 se le denomina base (radix) del sistema numérico. En un sistema
numérico posicional general, la base debe ser cualquier entero r, y un dígito en la
posición i tendrá entonces el peso ,J. Por consiguiente, podríamos describir la
forma general de un número en tal sistema como:
dm_ l d m_2 .. . d l dQ,d_l d_2 •• •d_n
donde hay m dígitos a la izquierda de la coma, conocida como coma fracciona-
ria, y n dígitos a su derecha. Obsérvese que si no hay coma fraccionaria debe-
ríamos suponer que está a la derecha del dígito que esté más a la derecha. El valor
de este número es la suma de los productos de cada dígito multiplicado por la
correspondiente potencia de la base:
Tipos y representaciones de datos 31

111 - 1
D= L d¡. /
"=-11
En un sistema numérico posicional la representación dc cada número es única
una vez eliminados los posi bles ceros del comienzo o del final. Obsérvese que el
dígito que está más a la izquierda se denomina en este sistema numérico dígito
más significativo (MS D. MOSl SigllijicclIIl Digil). y el que está más a la derecha
es el dígito menos significativo (LSD, Leasl Sigllificalll Digir). Puesto que los

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
sistemas digitales usan dígitos binarios, sc usa una base binaria para representar
cualq uier número en un sistema digital. La forma general de tal número binari o
es

y su valor equi vale a


II/ - J
B= L b¡.2'
1=-1/

De forma similar a la coma decimal en un número decimal, a la coma frac-


cionaria en un númcro binario se le denomina coma binaria. Usualmente, siem-
pre que se trabaja con números binarios u otros no decimales se usa un subíndice
para indicar la base de cada número, aunque la base suele estar sufi cientemente
clara por el contexto. A continuación hay algunos ejemplos de números binarios
y sus equ ivalentes decimales:
10101 2 = 1 · 16+0·8+ 1 ·4+0 ·2 + 1·1 =2 110
110 10 12 = 1 . 32 + I . 16 + O . 8 + 1 . 4 + O . 2 + 1 . 1 = 53 10
10, 101 2 = 1 · 2+0· 1 + 1 ·0.5+0·0.25+ 1· 0, 125=2,625[0
,1111 2 = 1 ·0,5 + 1·0,25 + 1 ·0, 125 + 1 · 0,0625 = 0,9375[0

2.2. NÚMEROS OCTALES Y HEXADECIMALES


Después de la discusión sobre los sistemas numéricos posicionales. se puede reco-
nocer fác ilmente la importancia de la base 10. que se usa conmumnente, y de la
base 2, que se usa en sistemas digitales para procesar números. Sin embargo, ex is-
ten también dos bases adicionales que son importantes para nuestros objetivos. ya
que la base 8 y especialmente la base 16 se usan a menudo para hacer las repre-
sentaciones de números binarios más cortas, reduciendo la necesidad de cadenas
largas indescifrables.
El sistema de numeración octal u~a como base el 8, mientras que el sistema
de numeración hexadecimal lisa como base el 16. Como el siste ma octal posee
ocho valores diferentes , se usan los dígi tos de l O al 7 del sistema decimal. El sis-
tema hexadecimal , sin embargo, necesita representar 16 va lores diferentes, así que
suplementa los dígi tos decimales con las letras de la A a la F. En la Tabla 2. 1 se
32 Princi pios de di seilo digit al

muestran los e nte ros hinarios del O a l 10001 con sus eq ui valentes en octal. dec i-
mal y hex adec imal. Obsérvese que los díg itos octale s pueden represe nt arse co n
tre s dígitos binarios. mientras que los díg itos hexadec imal es y dec imal es puede n
representarse eon cuatro dígitos binarios. La Tabla 2.2 Illuestra los e nteros bina-
rios del O al 10001 y sus equivalentes octal. decimal y hexadecimal codifi cados
e n o ctal.

TABLA 2.1 Diferentes representaciones de TABLA 2.2 Represen taciones codificadas

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
los números del o al 21 en binario

HEJ<A. HEXA·
BINARIO OCTAL DECIMAL OCTAL DECIMAL
DECIMAL DECIMAL
BINARIO CODIFICADO CODIFICADO
CODIFICADO
EN BINARIO EN BINARIO
(J O n O EN BINARIO
I I I I
10 2 2 1 (1 000 DOOO 0000
11 3 3 3 I 00 1 000 1 0001
10 0 10 00 10
100
101 "5 4
5 "5 11
100
01 1
I(KI
00 11
0 100
(lO" '
00 11
olon
li D Ó 6 6
111 7 7 7 10 1 101 010 1 (1 1111
1000 10 8 8 11O 110 01 10 0 110
111 11 1 0 11I 0 111
1001 11 9 9
10011 110 1 ono 1000 11100
1010 12 lO A
11101 I XII nOI 1110 1 IIlOI
101 1 13 11 B 1(11 0 00 1 0 10 ()(X) 1 IKXIO 10 10
11(JO 14 12 e 10 11 (101011 mo 1 IXX II 10 11
1101 15 13 D 11 00 (JO 1 100 000 1 ()(l 1o 11 !lo
11 1() 16 14 E 11 01 (XII 10 1 (XKI! 110 11 11 111
1111 17 15 F 1110 UOI 11 0 O! XJ! () I(XI 11 10
10000 10 16 10 1111 001 11I OO!J! o 10 1 1111
1000 1 11 17 11 I(XIOO 01 0000 OliO 1 010 1 OliO 1 tKJOO
1000 1 0 10 001 0011 1 11 111 OliO 1 t100 I

Es Illuy fácil conve rtir un número binariu en octal. Empeza ndo por el punt o
binario y operando hacia la izqui erda. sencill amente se separan los bits en g rupos
de :1 y se sustitu ye cada g rupo po r el correspo ndiente díg ito octal co nll) se ve e n
el sig uiente ej e mplo:
IÜIOOIII002 = OOI olnoll 100 = 12:14 s
La conve rsión de binario a hexadec imal es igual. excepto que se to man gru -
pos de 4 bits:
lüIOOIIIOO, = 00101001 1100 = 29C 'I'
Obsérvese en estos eje mplos que se añaden ceros por la izqui erda si hace falta
que el número total de bits sea múltipl o de 3 Ó 4 .
Tipos y representaciones de d a lOS 33

Las partes fraccionarias se pasan a octal o hexadec imal empezando en la coma


binari a y agrupando los dígitos binarios que quedan a la derecha. De nuevo tene-
mos que añad ir ceros al grupo que está más a la derecha para conseguir múltiplos
de 3 ó 4 bits. como se ve en el siguiente ejemplo.

, 10 111 2 = , 10111 0 = ,56 8


= , 10 11 1000=,B8] 6
Convertir en sentido opuesto, de octal o deci mal a binario. es tambi én bastan-
te senci llo. Sustituimos cada díg ito octal o deci mal por la correspondiente cadena

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
binaria de 3 ó 4 bits siguiendo la Tabla 2. l. Por ejemplo:

765 8 = 11111 0 10 12
765 ,432 8 = 11111 010 1,1 000 1101 0 2
FEO]6 = 1111111 0 11 0 1"
FEO,CBA = III I I I 10 11 0 1.11 00 101 I 10102

A pesar de que el sistema octal no se usa mucho hoy en día, el siste ma hexa-
dec imal es bastante popu lar, ya que se puede pasar fác ilmente de o a binario, y
porque los datos normali zados de 8. 16. 32. y 64 bits se pueden expresar efi cien-
temente con 2.4. 8. y 16 dígitos hexadecimales.

2.3. CONVERSIONES ENTRE SISTEMAS NUMÉRICOS


Como regla ge nera l. no podemos pasar de la representación de un número en una
base a la representación en otra base sencillamente sustituyendo lo números de
una base po r los eq ui valentes de la otra: esto es correcto sólo cuando ambas bases
son potencias enteras de l mi smo número. Cuando no es este caso. se deben seg uir
procedimientos de conversión más complejos q ue requieren operaciones aritmé-
ticas. En esta secc ión se muestra cómo conve rtir un número en cualquier base a
baoe 10. y viceversa. usando una aritméti ca en base 10.
Co mo se indicó en la Sección 2. 1, el va lor de un número en cualquier base se
puede represe ntar medi ante la fórm ula
/11 - 1
D= ¿ d;!" (2. 1)
1=-- 11

donde r es la base del número, 111 indica el núme ro de dígitos a la izquierda del
punto. y n indica el número de dígitos a la derecha. Entonces. el valor decimal de
un número en cualquier base se determina conv irti endo cada dígi to del número en
su equ iva lente en base 10. y luego se aplica la fórmu la usando aritmética en base
10. A continuación , e muestran dos ejemp los:

12EF](¡ = 1 . 16 3 + 2. 16" + 14 · 16 ] + 15.160 =4847 10


436.5. = 4 . 82 + 3 ·8] + 6 .80 + 5 ·8- ] = 286,625] 0
34 Principios de diseño digital

Por otra parte, como alternativa al uso de esta fórmula , se puede seguir un sen-
cillo procedimiento para pasar números de una base a base 10 reescribiendo la
parte entera de la Ecuación (2. 1) así tenemos:
D = «(. .. «d",_llr + d"'_2)r + ... )1' + d l)r + do (2 .2)
A partir de la Ecuación (2.2) podemos idear un proced imi ento iterati vo que
examine el número desde el MSD al LSD y lo vaya acumulando a una suma deci-
mal , S. Como se muestra en la Figura 2. 1, este procedimiento asigna primero O a
S, y luego en cada paso del procedimiento, comenzando por el dígito más signiti-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
cativo, se multiplica S por la base 1', y el siguiente dígito menos significati vo (el
siguiente por la derecha) se suma al producto. Este paso se repite para cada dígi-
to hasta que se haya sumado a S el dígito menos sign ificati vo, que representa el
equivalente dec imal del número en base r.
La Ecuación (2 .2) es también un punto de comienzo útil para convellir un
número decimal D en un número en base r. Si dividimos el número D de la
Ecuación (2 .2) por 1', la parte entre paréntesis de la Ecuación (2 .2) representa el
cociente
Q = ( ... «d",_I)r + d",_2)r .. . )1' + di (2.3)
mientras lo que queda es el resto
R = do

5'=0

;= m -I
,

--=r
~

FIGURA 2.1 Procedimiento para pasar números en base r a números decimales.


Tipos y representaciones de datos 35

En otras palabras. do se obtiene como el resto de una división entera de D entre r.


Más aún , como el cociente Q de la Ecuación (2 .3) tiene la misma forma que el
número original , sabemos que las divisiones sucesivas por r dan dígitos sucesivos
de D de derecha a izquierda hasta que se hayan obtenido todos los dígitos de D.
En el siguiente ejemplo se ven varias aplicaciones de este procedimiento, que se
resume en la Fig ura 2.2.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
S=D

2
i=U

3
Divide S entre ,.

s = cociente
d, "" resto

FIGURA 2.2 Procedimiento para pasar números en base r a números decimales.

EJEMPLO 2. 1 Conversión binaria


PROBLEMA

Convertir (a) 179 a binario, (b) 467 a octal, y (e) 34 17 a hexadecimal.


SOLUCIÓN

(a) 179 + 2 = 89 resto 1 (LSD)


89 + 2 = 44 resto 1
44 + 2 = 22 resto O
22 + 2 = 11 resto O
11 + 2=5 resto 1
36 Principios de diseño digital

5+ 2= 2 resto 1
2+ 2= 1 reSto 1
1 ->- 2 = O resto 1 (MSD)
Por tanto. 179 10 = 10110011 2 ,
(b) 467 ->- 8 = 58 resto 3 (LSD)
58 + 8 = 7 resto 2
7 + 8 = O resto 7 (MSD)
Por tanto, 467 10 = 723 8,
(e) 3417+ 16= 213 resto 9 (LSD)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
213 + 16 = 13 resto 5
13 + 16 = O resto 13 (MSD)
Por tanto. 34 17,tI = D59' 6'

2.4. SUMA Y RESTA DE NÚMEROS BINARIOS


Sumar y restar números binarios a mano es un procedimiento sencillo ya que se
usan técnicas conocidas que se aplican también a los números decimales; de
hecho. la única diferencia es que con números binarios las tablas de suma y resta
contienen sólo unos y ceros en lugar de dígitos decimales.
Como el lector sabe, se suman dos números decimales sumando un par de
dígitos a la vez. empezando por el menos significativo de cada número. Si la
suma de un par dado es mayor que 10, nos llevamos e l exceso a la suma del
siguiente par de dígitos más significativos. Sumando dos números binarios,
x = x"'.t ...,ro e Y = Y",. t ...Yo, por ejemp lo, se sigue básicamente el mismo proce-
dimiento, sumando los bits menos significativos . .ro e Yo, con un acarreo (ca rry )
inicial , co, igual a O, que produce e l bit de acarreo de salida, e" y el bit de suma
so' como se indica en la Tabla 2.3 , en la que se muestra la suma, S;, y el bit de
acarreo, c;+ t. para cada posible combinación de X i' y¡, Y C¡. Se sigue este proce-
so para cada par de bits, de derecha a izquierda, y se incluye el acarreo de sali-
da de cada columna e n la suma de la columna siguiente más significativa. La
suma completa se resume en la Figura 2.3. Ilustramos este procedimiento e n el
siguiente ejemplo.

EJEMPLO 2.2 Suma binaria

PROBLEMA
Sumar los eq uivalentes binarios de los números decimales 987 y 123.
SOLUCiÓN
En la Figura 2.4 se muestran las representaciones binarias de los números 987 y 123.
Obsérvese que 123 se completa con ceros por la izquierda durante la suma.
Tipos y re presemaciones de dato s 37

5 12 ~ 5 (1 !~S (,. J~ 1(, H


• 2
,,
1) 1) ,,
,
,

1) ,,
,

,,-------'
:\ l';I I Tl.'(l~ 11 ,,,
,,,
\ + l' 1) 11 1) 1) 11 , 1)
'------
'. ", ,- ,'o '.
1 :11
" " " '"

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
FIGURA 2.4 Ejemplo de suma binaria cuando se suman dos números binarios, x(987) e
y( 123) .

Primero se s uman .ro = I e Yo = l . da ndu e l acarreo (" 1 = 1 Y la su ma


So = O. co mo se indica en el polígono punteado de la Figura 2.4. Luego, :-.e .'m lllall x I = J,
= I Y ("1 = J. ohtcniéndosc el aCarreo (" ~ = I Y la suma SI = l. como se ve en la zuna SOIll-
.'" 1
breada de la Pigura 2.-4. Es te proce:-.o sigue hasta que se genera .\" HI = 1 Y e l acarreo
el l = 0,

La resta binaria se rea li za de forma similar. restando un par de bits a la vez,


aunqu e sc va obtenie ndo e n cada paso un bit dc ade udo (b¡. horroll ' ) en vcz de
un bit de acarreo. y un bit de resta e n lugar de un bit dc suma . La Tabla 2,4
muestra la diferencia d ; y e l adeuuo h ;+ 1 para toda s la ~ posibles combinaciones
de x ;. r ; y h ;. A part e de estas diferencias. e l proccdimiento para restar números
binarios qu e se muestra en la Figura 2.5 es e l mismo q ue e l usado en la s uma
binaria: se comienza por los bits menos s ig ni ficati vos , se ge neran e l bit de
adeudo h l y e l bit de resta do. Y se s igu e de derec ha a izquierda hasta q ue se
ge neran el hit de adeudo más s ig nifi ca ti vo. 17 m , Y e l hi t de resta más s ign ifi ca-
ti vo . d l ll . l .

TABLA 2.3 Suma de dígitos binarios TABLA 2.4 Resta de díg itos binarios

x; + YI + CI Ci+1 SI x, y, C, b i+1 d,

11 O () O O O O () O O
O O I O I O O I I I
O I O O I O I O I I
O I I I O O I I I O
I O O O I I () () O I
I O I I O I O I O O
I O I O I I () O O
I I I I I I
38 Principios de diseño digital

¡ :",el

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
FIGURA 2.3 Procedimiento para sumar dos números binarios.

FIGURA 2.5 Procedimiento para restar dos números binarios.


Tipos y representaciones de datos 39

EJEMPLO 2.3 Resta binaria


PROBLEMA

Reali zar la resla binaria 987 menos 123.


SOLUCIÓN
Como en la suma. primero completamos la represe ntación de l 123 con ceros. Luego se res ta
cada par de dígitos binarios empezando por los bits menos signi fi cativos y se obtie nen los
resullados de acuerdo con la Tabla 2A. La reSla de Yo Y Xo genera el bi l de resla d" = O Y el
bil de adeudo b , = O. que se iluslra dentro de las líneas punleadas de la Figura " .6. De ronna

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
~ imilar. la resta de x I menos YI y "1 genera di = O Y b:!. :;::. O. C0l110 se ve en el área som-
breada de la figura. El proceso sigue hasla que se genere "9'
5 12 256 12!l 64 ~2 lb 8 .¡ 2
,,
,
(1 O
,,,
Y O ,,,
r----..I
,,
Adeudo!:> U O O O O O O
, ,,
\'+ y O 1) O 1) O ,, O
L _____

d, d~ d, ¡/h dd~ d, el; d~


", ,/¡)

FIGURA 2.6 Ejemplo de una resta decimal y binaria.

También se pueden desalToJlar tablas de suma y resta para dígitos octa les o
hexadecimales o cualq ui er otra base deseada: sin embargo. la mayoría de los inge-
nieros encuentra que es más fácil pasar los números a dec imal, obtener los resu l-
tados y luego volver a pasarlos a su forma orig inal.

2.5. REPRESENTACiÓN DE NÚMEROS NEGATIVOS


En las secc iones anteriores se ha trabajado sólo con números positivos. Los núme-
ros negativos se pueden representar de muchas formas diferentes. Diariamente,
por ejemplo, el sistema que se usa es el sistema de signo y magnitud . Sin embar-
go. la mayoría de los ordenadores utili zan el sistema numérico complemento, para
simplificar la implementación de los ci rcuitos aritméticos.

2.5.1. Representación en signo y magnitud

En el sistema de signo y magnitud un número está formado por dos partes, la


magn itud y el signo. que puede ser + ó - e indi ca el valor posit ivo o negativo de
la magnitud. Como el lector sabe , se supone que el signo es " +" cuando no se
e cribe ningún signo. Dentro de este sistema hay dos posibles represen taciones
del cero. "+0" y "--0", y ambos tienen el mismo valor.
40 Principios de diseño di gital

Cuando se usa el sistema de signo y magnitud con números binarios, el signo


se representa mediante un úni co bit adicional: cuando este bit de signo es igual a
O suponemos que el número es positi vo. mi entras que un I significa un número
negati vo . En gene ral , el bit más signifi cativo (MSB ) de la re presentación de un
número se usa como bit de signo. y los bits restantes indi can la magnitud. Así.
+1 23 y - 123 se dife rencian en su bit más significati vo. de la sigui ente forma:
01111011 2 = +123 10
11111 0 11 2 = - 123 10

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Obsérvese que el siste ma de signo y magnitud ti ene el mi smo número de ente-
ros positi vos que de negati vos. C ualquie r entero e n signo y magnitud con Il. bit s
está dentro del rango que va de _(2"- 1 - 1) a +(2,,- 1 - 1), teniendo e n c uenta que
hay dos posibles representaci ones del cero.

FIGURA 2.7 Procedimiento para restar dos números binarios.


Tipos y representaciones de datos 41

Como muestra la Figura 2.7, la aritmética en signo y magnitud requiere que se


comparen tanto los signos como las magnitudes de los operandos. Supongamos.
por ejemplo, que queremos sumar dos números en signo y magnitud. DI = <SI ' IIl I>
Y D 2 = <52' 11/2> que generan el resultado D,. =<s,., 11l,>. Si el signo de ambos núme-
ros es el mi smo, simplemente se suman sus magnitudes y el resultado hereda el
signo de los operandos. Si en cambio los signos son diferentes. hay que comparar
las magnitudes: cuando las magnitudes son iguales, el resultado es O : cuando las
magnitudes son distintas, restamos a la magnitud mayor la más pequeña, y el resul-
tado hereda el signo de la magnitud mayor. Como se muestra en la Figura 2.7 , una

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
resta se lleva a cabo sumando después de cambiar el signo del sustraendo.
Para llevar a cabo operaciones de multiplicación o di visión, todo lo que tene-
mos que hacer es multiplicar o di vidir las magnitudes y hacer el resultado positi-
vo cuando ambos operandos tengan el mismo signo y negativo en caso contrario.
Cuando el resultado es cero, se pone signo positivo.
Como la multiplicación y la di visión se pueden llevar a cabo normalmente
mediante sumas y restas iterativas , los únicos circuitos aritméticos que necesita-
ríamos son sumadores y restadores . Por el contrario, como la suma y resta de
números en signo y magnitud requiere la comparación de signos y magnitudes, los
sumadores y restadores en signo y magnitud tienden a ser más lentos que sus aná-
logos que utilizan el sistema de numeración en complemento, ya que estos no
requieren tal comparación.

2.5.2. Sistema de numeración en complemento

El sistema de numeración en complemento se inventó para hacer sumas y restas


más rápidas y más fáciles de implementar omitiendo la necesidad de comparacio-
nes entre signos y magnitudes. En su lugar se realiza la complementación. que se
puede llevar a cabo de modo muy eficiente con números binarios. A lo largo de
este libro se utiliza el siste ma de numeración en complemento normalizado, que
se describe a continuación, denominado sistema en complemento a la base.
Aunque explicamos este sistema sólo para enteros, también se puede aplicar fácil-
mente a todos los números reales utilizando la forma en punto flotante.
Como se mencionaba más arriba, cualquier entero se puede representar como
D = I,;:~i d/. En esta definición suponemos que el número de dígitos es 111 , y si
cualquier operación fuera a generar un resultado con más de 111 dígitos, nos que-
daríamos sólo con los 111. dígitos de menor orden . En el sistema en complemento a
la base. el complemento D de un número, D, con m dígitos. se obtiene restando
ese nÚlnero a rl/:
D = rl/l_D (2.4)
Por ejemp lo, el comp lemento a la base de los números de tres dígitos 987 y
l23 se puede obtener restándolos a 103 = 1000. Así, el complemento a la base o
complemento a 10 en este caso de 987 es 13 y el complemento a 10 de 123 es 877.
En general, cuando D es di stinto de 1 y de 1'" - 1, esta resta en complemento a la
42 Principios de diseño digital

base genera otro número que se encuentra entre I y 1'" - l. Si por el contrario D
es O, el resultado de la complementación será 1"', que tiene un total de m + I dígi-
tos, es decir, el dígito I seguido de m ceros . Como guardamos sólo los m dígitos
menos significativos, el número O se representa de forma única. mediante una
cadena de m ceros.
Alternativamente. podemos obtener el complemento a la base D, descrito en
la Ecuación (2.4), si n restar, reescribiendo la ecuación del siguiente modo:

D = r'" - D= «I'''' -I) - D )+ I (2.5)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
El número 1'" - I de la Ecuación (2.5) consta de 111 dígitos iguales cuyos valo-
res son l' - l. Si definimos el dígito complemento como d' = (1' - 1) - d. entonces

(1'''' - 1) - D = «1' -1)(1' - 1) .. . (r - 1) - (d", _ld", _Z" .do)


=« r - 1) - d",_, )«1' -1) - d", _2l ... «1' - 1) - do)
1, d' '1'
=(,111 - 1 111 - 2 " ' ( 0

Además, si detinimos
/11 - 1
D'= 'L>':
i=()

podemos reescribir la Ecuación (2.4) de la siguiente forma

D = D' + 1 (26)
de acuerdo con esta ecuación el complemento a la base de un número D se obtie-
ne complementando los dígitos de ese número individualmente y luego añadien-
do uno. Por ejemplo, se obtiene que el complemento a 10 de 987 es 012 + l. es
decir, 13, y el complemento a 10 de 123 es 876 + 1, es decir, 877 . En la Tabla 2.5
se incluyen los dígitos complementarios de dígitos binarios, octales, decimales y
hexadecimales.
En comparación con la representación en signo y magnitud, la ventaja del sis-
tema en complemento a la base es que los nÚI~eros negativo~ se pueden repre-
sentar sencillamente mediante el complemento D, ya que D + D = O cuando guar-
damos sólo los 111 dígitos menos significativos. Ahora vamos a ilustrar esta venta-
ja en relación con los números binarios.
El complemento a la base con números binarios se denomina complemento a
2, y la representación numérica que resulta de esta transformación se denomina
representación en complemento a 2. Con números binarios el signo se representa
con el MSB, que es O para números positivos y I para números negativos.
Entonces un número negativo se obtiene a partir de un número positivo comp le-
mentando cada dígito binario, incluyendo el bit de signo. y luego sumando I (es
decir, cambiamos todos los O por 1 y los I por O y luego sumamos uno). El aca-
rreo resultante del MSB se descarta. Por consiguiente si estamos complementan-
do O y e l acarreo del MSB se descarta obtenemos O en complemento a 2. Entonces
podemos concluir que en el sistema en complemento a 2. O ti ene una única repre-
Tipos y representaciones de datos 43

sentación y representa su propio complemento. Además, como O es un número


positivo habrá una cantidad menor de números positivos distintos de O que de
números negativos. Por tanto el rango de números representables en complemen-
to a 2 va desde _(2",-1) a + (2",- 1 - 1) . Por ejemplo, el rango de los números de 4
bits va desde _2 3 = -8 hasta 2 3 - I = 7. En la Tabla 2.6 mostramos tanto las repre-
sentaciones en complemento a 2 como en signo y magnitud de todos los enteros
de 4 bits.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
TABLA 2.5 Complementos de dígitos

HEXA-
DíGITO BINARIO OCTAL DECIMAL
DECIMAL

O I 7 9 F
I O 6 8 E
2 5 7 D
3 4 6 e
4 3 5 B
5 2 4 A
6 I 3 9
7 o 2 8
8 I 7
9 o 6
A 5
B 4
e 3
D 2
E I
F o

A veces, mientras se realizan operaciones aritméticas es nece sario pasar de


números de II! bits a números de n bits. En estos casos primero se determina si
11 > 111 : si lo es, se agregan n - 111 ceros después del bit de signo en cada número
positivo. Por la definición de complemento, en los números negativos agregamos
11 - 111 unos detrás del bit de signo. Como se han inseItado bits que son iguales al
bit de signo, este añadido se denomina extensión del signo. Alternativamente
siempre que 11 < 111 se hace un truncamiento del signo, descartando los m - n bits
que siguen al bit de signo. Sin embargo, este número truncado es válido solamente
cuando todos los bits descaItados son iguales al bit de signo.

2.6. SUMA Y RESTA EN COMPLEMENTO A 2


Como mencionamos antes , la representación en complemento a 2 se ideó para
hacer más sencilla la suma y resta de números binarios haciendo innecesario el
tratamiento aparte de los bits de signo. En otras palabras, usar este sistema nos
44 Principios de diseño digital

permite sumar y restar enteros tanto con signo como sin signo con el mi smo cir-
cuito lógico. Como indicaba la Tabla 2.6 se puede obtener cua lquier número entre
el menor (-8) y el mayor (+7) simplemente sumando I al número anterior e igno-
rando cualquier acarreo producido por los bits de signo.

2_6_1_ Reglas para sumar

Para sumar dos números en complemento a 2 se usan las reglas de la aritmética

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
binaria que mostramos en la Figura 2.3, y se ignora cualquier acarreo del bit de
signo. Mientras que el rango del sistema numérico no se supere. el resultado de
esta suma será siempre correcto incluyendo el signo. Por ejemplo, la suma de dos
números positivos da lugar al resultado positivo correcto:
0010 (+2)
+ 0100 (+4)
01 10 (+6)
Igualmente , sumando dos números negativos siempre se obtendrá una suma
negativa correcta mientras se ignore el acarreo del bit de signo:
1110 (-2)
+ 1100 (-4)
acarreo ignorado = I 1010 (-6)
Sin embargo, hay casos en los que una operación produce un resultado que
excede el rango del sistema numérico, dando lugar a una situación conocida como
desbordamiento (overflow). Como norma, la suma de dos números con distinto
signo nunca produce un desbordamiento. Sin embargo cuando sumamos dos
números con el mismo signo que dan una suma mayor que el mayor número
representable. se puede obtener un resultado incorrecto, como por ejemplo el caso
de un número en complemento a 2 de 4 bits.
0100 (+4)
+ 0101 (+5)
1001 (-7)
De forma similar,
lIIO H)
+ 1011 (-5)
acarreo ignorado = I 0111 (+7)
Como sugieren estos ejemplos, es posible estab lecer una regla sencilla para
detectar si hay desbordamiento en las sumas: en efecto, un desbordamiento en la
suma ocurre siempre que el signo de la suma sea diferente a los signos de ambos
sumandos. Los diseñadores de computadores usan una regla ligeramente diferen-
te en el di seño de circuitos sumadores en complemento a 2. Si ambos operandos
Tipos y representaciones de datos 45

son positi vos, hay desbordamiento siempre que haya acarreo hacia el bit de signo.
En este caso no hay acarreo del bit de signo ya que ambos signos son Q. Por otra
parte. si ambos operandos son negati vos. hay desbordamiento siempre que no
haya acarreo hacia el bit de signo. ya que los números negati vos grandes tienen
co mplementos pequeños. En este caso debería haber aCatTeO del bit de signo. Así,
podemos defi nir la reg la de desbordamiento de la siguiente manera: Hay desbor-
dami ento en la suma siempre que el acarreo que va hac ia el bit de signo sea dife-
rente del acarreo que produce el bit de signo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
TABLA 2.6 Represe ntaciones en comple-
mento a 2 y en signo y magnitud

DIGITO COMPLEMENTO SIGNO Y


AOOS MAGNITUD

-8 1000
-7 100 1 11 11
-6 1010 111 0
-5 101 1 11 01
-4 1lOO I 100
-3 110 1 10 11
-2 111 0 10 10
-1 1111 100 1
O 0000 1000 Ó 0000
I 0001 000 1
2 00 10 00 10
3 00 1I 00 11
4 0100 0 100
5 0101 0101
6 0 110 011 0
7 0111 0111

2.6.2. Reglas para restar

Usando el procedimiento descrito en la Figura 2.5 se restan dos nú meros en com-


plemenlo a dos como si fueran números binari os naturales, sin signo. en cuyo caso
las reglas para detectar desbordamiento en la resta son las mismas que las que se
usan para detectar desbordami ento en la suma. Sin embargo, la mayoría de los cir-
cuitos que restan en compl emento a dos no ll evan a cabo directamenle la resta,
sino que niegan el (o invierten los bits del) sustraendo tomando su comp lemento
a dos y después lo suman al minuendo usando las reglas normales para sumar.
Afortunadamente. el tomar el complemento a dos del sustraendo y añad irlo al
minuendo se puede conseguir usando sólo un complementador de bi ts seguido de
un ci rcuito sumador: el complementador complementa los bits del sustraendo,
luego el sumador suma al complemento el minuendo y adicionalmente suma l .
46 Principios de diseño digital

para completar el complemento a dos. La suma de I se hace poniendo el acarreo


de entrada (co) del sumador a 1 en lugar de a O.
Para demostrar la diferencia entre la resta directa y la suma en complemento
a dos, consideremos la resta de dos números pequeños. Por ejemplo, podemos res-
tar +4 directamente a +2 y obtener -2:
0010 (+2)
0100 - (+4)
1100 adeudos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
adeudo ignorado = 1 1110 (- 2)

Alternativamente, podemos obtener el mi smo resultado complementando el


sustraendo (+4) y sumándolo al minuendo (+2):
0010 (+2)
+ 1100 complemento a dos de (+4)
000 acarreos
1110 (-2)

Como el segundo caso de resta se realiza sumando el complemento a dos,


podemos aplicar las mismas reglas para la detección del desbordamiento : es
decir, hay desbordamiento en la resta siempre que el signo de la diferencia sea di s-
tinto de los signos del minuendo y del sustraendo complementado. La regla del
acarreo queda igual que antes.
El lector debería darse cuenta de que el número más negati va dentro del
rango, -2"" ], no tendrá complemento y que calcular su complemento a dos da
lugar a un desbordamiento. Sin embargo, su complemento a dos aún se puede usar
en sumas y restas siempre que el resultado final no exceda el rango de los núme-
ros. Por ejemplo, cuando restamos -8 a -4, obtenemos el resultado correcto de +4,
aunque el complemento a dos de -8 se sale del rango:
1100 (-4)
+ 1000 complemento a dos de (- 8)
acarreo ignorado = 1 0000 acarreos
0100 (+4)

En este ejemplo primero hemos obtenido el comp lemento de -8 invirtiendo


cada bit, y cambiando el primer bit de acarreo al, creando, por consiguiente, el
complemento a dos de -8. Luego, llevamos a cabo la suma binaria y desechamos
el acarreo del bit de signo.
Como los números en complemento a dos se suman y se restan sigui endo el
mi smo procedimiento que el usado con números sin signo de la misma longitud.
se puede usar el mismo circuito sumador/restador para ambas operaciones, como
se ilustra en la Figura 2.8, en donde dos números binarios, B] y B2 , se suman o se
restan para obtener el resultado B,. La resta se lleva a cabo según la Figura 2.8
sumando el complemento a dos de B2 , que es igual a B' 2 + l. Obsérvese que aun-
Tipos y representaciones de datos 47

que se puede usar el mismo circuito para números con o sin signo. se tienen que
usar reglas distintas para la detección del desbordamiento en cada caso.

2.7. MULTIPLICACiÓN BINARIA


El método más común para multiplicar dos números consiste en sumar los pro-
ductos parciales desplazados que resultan de multiplicar el multiplicando por cada
uno de los dígitos del multiplicador. Por ejemplo. cuando se multiplica 14 por 1J.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
se multiplica 14 x 3 y se le suma el producto 14 x 1 desplazado:

14 multiplicando
x --.!l multiplicador
42 3 x multiplicando
14 1 x multiplicando
182 producto

Se puede usar el mi smo método de suma y desplazamiento para obtener el


producto de dos números binarios sin signo:
111 0 multiplicando (14)
x ..!.!Q.!. multiplicador ( 13)
1110
0000
1110
10 II O110 producto ( 182)
Como se puede ver, hacer los productos desplazados en una multiplicac ión es
una operación trivial , ya que los únicos valores posibles de los dígitos multiplica-
dores son O y l. En otras palabras, cada producto desplazado resulta ser el multi -
plicando o una cadena de ceros.

FIGURA 2.8 Procedimiento para sumar y restar números en complemento a la base.


48 Principios de diseño digital

Muchos computadores emplean algoritmos más eficientes para realizar esta


multiplicación: en lugar de obtener todos los multiplicandos despl azados y luego
sumarlos juntos de una vez, se puede senci llamente crear un prod ucto parc ial e ir
sumando los multiplicandos despl azados uno a uno. Inicialmente, este prod ucto
parcial se pone a O. Luego, se mira el LSB del multiplicador y si es 1, se suma el
multiplicando al prod ucto parcial : si el LSB es 0, no se hace nada. Después, se
repite este paso con el bit sigui ente más signi ficati vo, despl azando el multipli -
cando un bit a la izqui erda. y se siguen sumando estos multiplicandos desplaza-
dos hasta que se hayan agotado todos los bits del multiplicador. Con este método

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
hacen falta cuatro sumas y cuatro prod uctos parciales para multiplicar los dos
números de4 bits, I4y 13:

1110 multiplicando ( 14)


x J..!.Ql multi plicador ( 13)
0000 primer prod ucto parci al
+ J..!.!.Q multiplicando desplazado
I 110 segundo producto parcial
+ 0000 ceros desplazados
OIII O tercer producto parcial
+ 1110 mu ltipl icando desplazado
1000 II O cuarto producto parcial
+ II 10 multi plicando despl azado
10 110111 producto ( 182)

En la Figura 2.9 se muestra una generalización de este procedi miento para


multiplicar un multi plicando de 11 bits MD por un multiplicador de /11 bits MR. que
se representa mediante b",_\b",_2.. ·b \bo· El producto se obtiene desplazando el
multiplicando i bits a la izquierda y sumándolo al producto parcial PP siempre
que el bit multiplicador correspondiente, b;, no sea igual a cero. El desplazamien-
to de i bits a la izqui erda se obtiene multiplicando el multiplicando por 2'. Como
se puede ver, PP es ig ual al producto fin al después de que hayamos considerado
el dígito más signi fic ati vo b",_\.
En general. multipli car un número de n bits por un número de 1/1 bits. da lugar
a un producto de IZ + 1/1 bits. Inicialmente, el producto parcial sólo tiene 11 bits sig-
nificati vos, pero gana un bit significati vo cada vez que sumamos el multiplican-
do desplazado. Como el multiplicando despl azado se suma m veces. el producto
gana hasta 111 bi ts adicionales.
Para multipl icar dos números con signo, sencillamente se multiplican sus
magnitudes, haciendo el producto positi vo si los operandos tienen el mi smo signo
y negati vo si los signos son di stintos . En el sistema de signo y magnitud esto es
muy fác il de hacer, ya que los signos y magnitudes están separados. Trabajar con
representac iones en complemento a dos es más difícil , ya que obtener la magni-
tud de un número negati vo y si es necesari u hacer el producto negati vo. requi ere
la complementación, y luego sumar. Por ello, generalmente se multi plican dos
Tipos y representaciones de datos 49

números en complemento a dos usando la suma en complemento a dos con la lige-


ra moditlcación que explicamos a continuación.

f1I' : o
j= ()

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
FIGURA 2.9 Procedimiento para multiplicar números binarios sin signo.

Como el lector recordará, hemos visto que en la multiplicación binaria de


números con signo, el número de desplazamientos del multiplicando es igual al
peso de los correspondientes bits multiplicadores. Por ello, como los bits en repre-
sentación en complemento a dos de un número positivo tienen el mismo peso que
los bits en un número negativo, la multiplicación en complemento a dos se puede
hacer mediante una secuencia de sumas en complemento a dos, sumando los mul-
tiplicandos desplazados como en el caso de los números sin signo. La única
excepción de este procedimiento es el bit de signo de un multiplicador negativo:
como el bit de signo tiene un peso de _2"'- 1, hay que negar el (invertir los bits del)
multiplicando antes de que se le pueda sumar al producto parcial.
Cuando hay acarreo en la multiplicación en complemento a dos, tenemos que
recordar que hay que extender el signo antes de su mar un multiplicando despla-
zado a un producto parcial, ya que cada nuevo producto parcial tendrá un bit
extra de precisión. Igual que antes, ignoraremos cualquier acarreo del MSB
50 Principios de diseño digital

durante la suma. En el siguiente ejemplo se muestra la multiplicación en com-


plemento a dos.

EJEMPLO 2.4 Multiplicación binaria


PROBL EMA
Rea lizar la multiplicación binaria - 14 por - 13.
SOLUCIÓN

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
10010 multiplicando (- 14)
X 10011 multiplicador (- 13)
000000 producto parcial ampliado
+ 110010 multiplicando ampliado
1110010 producto parc ial ampliado
+ 110010 multiplicando desplazado ampliado
Ignorar acarreo 11010110 producto parcial ampliado
+ 000000 todo ceros
111010110 producto parcial ampliado
+ 000000 todo ceros
1111010110 producto parcial ampliado
+ 001 110 multiplicando ampliado, desplazado y
negado
Ignorar acarreo 0010 110110 producto ( 182)

En este ejemplo de multiplicación hay que observar que los acarreos del MSB se han
ignorado en los productos parciales tercero y quinto, antes de la extensión del signo.
Obsérvese también que el último multiplicando desplazado fue negado antes de la suma.
Como el lector puede ver. el producto generado tiene 10 bits de precisión. aunque sólo se
necesitan 9 bits para expresar 182. Para obtener una precisión de 9 bits necesitamos trun-
car el signo.

2.8. DIVISiÓN BINARIA


Como en la multiplicación, el algoritmo para la división binaria utiliza el método
desplazar-restar. En este algoritmo se resta primero el múltiplo mayor posible del
divisor para determinar el primer dígito del cociente. Luego realizamos esta tarea
de nuevo con el dividendo disminuido y el divisor desplazado. Cuando dividimos
186 entre 14, por ejemplo, seleccionamos primero 14 como el múltiplo mayor de
14 menor de 18. Esta operación da 1, que ponemos como primer dígito del cocien-
te. Después seleccionamos 42 como el múltiplo mayor de 14 que sea menor que
46, lo que nos da un cociente de 13 y un resto de 4.
Tipos y representaciones de datos SI

13 cociente
14)186 dividendo
14 desplazado (divisor X 1)
46 dividendo reducido
42 desplazado (divisor x 3)
4 resto
Cuando trabajamos con números binarios utili zamos un procedimiento simi-
lar. Sin embargo, con números binarios puede haber sólo dos opciones para el

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mayor múltiplo del divisor: cero y el divisor mismo. Consideremos, por ejemplo,
la divi sión binaria de 186 entre 14:
1101 cociente (13)
1110) 10 111010 dividendo (\ 86)
1110 divisor desplazado
1001010 dividendo reducido
II 10 divisor desplazado
10010 dividendo reducido
00000 divi sor desplazado
10010 dividendo reducido
1110 divi sor desplazado
100 resto (4)
Como podemos ver, una división binaria es similar a una multiplicación bina-
ria, excepto en el tamaño de los operandos y el resultado, ya que un dividendo de
(11 + 111) bits y un divisor de Il bits dan lugar a un cociente de 1/1. bits, y un resto de
11 bits. Siempre que el divisor es cero, o el cociente necesita más de 111 bits, puede
producirse un desbordamiento en la división.
Para dividir números con signo se dividen sus magnitudes y luego se hace el
cociente positivo si los operandos tienen el mismo signo y negativo si es distinto.
Si hay resto, este mantiene el signo del dividendo.
También se puede hacer la división directamente con números en comple-
mento a dos. Sin embargo estas técnicas , que usualmente llevan a cabo computa-
dores de altas prestaciones, están más allá del objetivo de este libro.

2.9. NÚMEROS EN COMA FLOTANTE


Hasta ahora en este capítulo hemos cenb'ado nuestra discusión en representacio-
nes de números en coma fija, lo que supone que la coma fraccionaria tiene una
posición fija . En el caso de enteros, por ejemplo, sabemos que la coma fracciona-
ria está a la derecha del dígito menos significativo. Así podemos representar
números del O al 9999 con solo 4 dígitos decimales . Sin embargo, no podemos
representar 99000 con la misma representación incluso aunque sólo haya dos dígi-
52 Principios de diseño digital

tos decimales di stintos de cero. En este caso dec imos que 99000 no está dentro
del rango de una representación con 4 dígitos enteros.
En términos generales, el rango de un sistema numérico se puede definir
como el intervalo de todos los números representables entre el mayor y el menor.
En la representac ión con 4 dígitos, por ejemplo. el tamaño del rango e,~ aproxi-
madamente 104 . Desgraciadamente, muchos cálculos cientíncos necesitan un
rango mucho más amplio que el que ofrece este tipo de representac ión en coma
fija. Para ampliar este rango, utilizamos lo que se denomina números en coma
flotante , que tienen la forma

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mantisa x (base y .\pnl1t'lIff'

Podemos dec ir que un número en coma fl otante es como un número en coma


tija, dado por la mantisa, cuya posición de la coma fraccionaria se espec ifica
mediante el exponente.
Como la base de un número en punto fl otante está implíci ta. sólo la manti sa y
el exponente han de representarse explícitamente. Por ejemplo, uno de los forma-
tos fl otantes para una representación de número en coma flotant e de cuatro dígi-
tos podría usar enteros de dos dígitos entre O y 99 para el exponente y la manti sa.
Así el número más pequeño representable es O x 10°. mientras que el mayor
número representable es 99 x 1099 . Como el lector puede ver. el tamaño del rango
de esta representac ión de un número en coma flotante de cuatro dígitos es 10 10 1•
que es 1097 veces mayor que el tamaño de un rango en coma fija .
Sin embargo. al mi smo tiempo el mayor tamaño de este rango en coma flotante
se ha obtenido a costa de reducir el número de dígitos signiticati vos que determina
la precisión de los números en coma flotante. En otras palabras, dentro de un subran-
go dado bay menos números en coma flotante que números en coma fij a. Consi-
deremos por ejemplo el subrango entre 1000 Y2000 en representación de cuatro dígi-
tos. Usando números en coma fija podemos representar 1001 números en este
subrango, a saber, 1000, 1001 , 1002, 1003...., 1999,2000. Por el contrario, usando
números en coma flotante podemos representar sólo 11 númcros distintos: 1000.
1100, 1200, 1300, ... , 1900,2000, que se representan 10 x 10 2, 11 X 102, 12 X 102•
13 X 102• ... , 19 x 102, 20 X 102 Consecuentemente, como todos lOs computadores
trabajan con un número fijo de bits, la representación en coma flotante siempre pre-
senta un rango mayor y menor precisión que la representación en coma fij a.
De forma más genera l. un número en coma flotante ti ene una manti sa con
signo y un exponente. de forma que se pueden representar entcros positivos. nega-
tivos y fracciones . Como se muestra en la Figura 2.1 Ora) . el signo de la mantisa
va seguido del exponente con signo. y finalmente de la magnitud de la mantisa .
El exponente se suele codificar con un formato de código en exceso denominado
característica, que se obtiene sumándole un sesgo al exponente. Con este forma-
to, e l sesgo es igual a la mitad del entero más grande representable en el campo
del exponente cuando se decrementa en l. Por tanto,
1 ,
sesgo = - base - 1
:2
Tipos y representaciones de datos 53

donde s es igual al número de bits del campo del exponente. Por este motivo, este
exponente es siempre un número positivo.

Signo de la Exponente Magnitud


mantisa con signo de la mantisa

(a) Formato ge neral

O 9 31
Característica Fracción
Signo

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
exceso 127 normali zada

Punto binario implicado


(h) Normalización de 32 bits

o 63
Característica Fracción
Signo
con sesgo 1032 nOffimlizada

Punto binario implicado

(e ) Nonnali zac ión de M bits

FIGURA 2.1 0 Representación en punto flotante .

Sin embargo, la mantisa normalmente es una fracción , en la que se supone que


la coma está a la izquierda del bit más significativo. La fracción se normaliza
siempre, en el sentido de que la fracción siempre empieza con un bit distinto de
O. Como el único bit distinto de O es 1, se suele omitir frecuentemente como suce-
de en la representación en coma tlotante estándar que usan los computadores de
hoy. El estándar de coma tlotante de 32 bits, mostrado en la Figura 2.10(b) , tiene
I bit de signo, 8 bits de característica con sesgo 127 y una fracción normalizada
de 23 bits, que en realidad ti ene 24 bits, ya que el bit más significativo de la man-
tisa es siempre l. De forma similar, el formato de 64 bits mosU'ado en la Figura
2. 10(c) consta de I bit de signo, I I bits de característica con sesgo 1023 y una
parte fraccionaria de 52 bits.
La suma y resta de números en coma tlotante se puede lle var a cabo de
acuerdo con las reglas algebra icas estándar. Sin embargo, como tanto la suma
como la resta requieren qu e los exponentes de los dos operandos sean iguales,
tenemos que igualarlos des plazando hacia la derecha la mantisa del menor ope-
rando e incrementando su exponente proporcionalmente hasta que sea igual al
exponente del número mayor. Después de este ajuste, se pueden sumar o restar
las dos mantisas y luego convertir, el resultado con el exponente común a coma
flotante.
En la realización de la suma, ex iste la posibilidad de que el resultado desbor-
de el campo de la mantisa, en cuyo caso se debe corregir desplazando la manti sa
un lugar a la derecha e incrementando el exponente en l. Si el exponente se des-
borda durante el incremento, se tiene que detectar este desbordamiento en coma
tlotante ya que no se puede corregir. Además. en la realización de la resta, hay la
54 Principios de diseño digital

posibilidad de que el resultado tenga uno o más ceros de cabecera en su manti sa.
en cuyo caso se debe normalizar desplazando la mantisa a la izquierda y decre-
mentando el exponente proporcionalmente. El desplazamiento m¡íximo que se
puede necesitar es siempre menor que el número de bits de la mantisa. Si el expo-
nente se desborda a O durante el decremento, este desbordamiento a O tambi én
debe detectarse.
Conceptualmente, la multiplicación de números en coma flotante es más fácil
que la suma y la resta, debido a que no es necesario alinear los exponentes. En
otras palabras, las mantisas se pueden multiplicar como si fueran enteros en coma

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
fija , y los exponentes senci llamente se suman. Sin embargo. si esta suma de expo-
nentes produce un desbordamiento a infinito (olle/flow) ( o a cero (ullde/:f/OII")).
se tiene que detectar el desbordamiento (a infinito o a cero) en coma flotante .
La manti sa resultante podría tener como mucho un cero de cabecera, lo que
requiere un único desplazamiento a la izquierda y la correspondiente reducción
del exponente en l. Si el exponente desborda a cero tras esta reducción en 1, el
desbordamiento a cero en punto flotante se tiene que detectar. En cambio, si cua l-
quiera de los operandos es cero, se tiene que generar un cero en coma flotante.
La división en coma flotante requiere que se dividan las mantisas y que se
reste al exponente del dividendo el exponente del divisor. Siempre que el di vi-
dendo sea mayor que el divisor, el cociente será mayor que l. en cuyo caso hay
que desplazar la mantisa una so la posición a la derecha mientras que su exponen-
te se incrementará en l. Si el exponente se desborda (a infinito o a cero), se debe
detectar el desbordamiento Ca infinito o a cero) en coma tlotante . En aquell os
casos en los que el dividendo es cero. hay que generar un cero en coma tlotante.
Por otra parte, si el divisor es cero. se debe detectar el desbordami ento en coma
flotante. Finalmente, si tanto el dividendo como el divisor son cero. el resultado
se identifica como número desconocido.
Para acelerar esta aritmética en coma flotante, las computadoras y las estacio-
nes de trabajo de altas prestaciones tienen ace leradores de coma tlotante. que son
ASIC especiales que incorporan algoritmos rápidos para la aritmética en coma
flotante que se implementa directamente en hardware.

2.10. CÓDIGOS BINARIOS PARA NÚMEROS DECIMALES


Como las computadoras procesan y alm acenan toda la información en forma de
dígitos o bits binarios, en un sistema digital un número decimal se representa con
una cadena de bits. Por ejemplo, podemos usar 4 bits para representar dígitos
decimales usando una codificación muy natural. que asigna el 0000 al dígito deci-
malO, 000 l al 1, 0010 al 2, y así hasta asignar el 1001 al 9. Entonces, el número
decimal de tres dígitos 123 se representa con la cadena de 12 bits 0001001000 11 .
En general, cualquier conjunto de objetos se puede representar mediante una
serie de cadenas de bits en las que las diferentes combinaciones de bits represen-
tan distintos objetos. Este conjunto de combinaciones de bits se denomina códi-
go. y una cadena de bits particular dentro del conjunto se denomina palabra códi-
Tipos y representaciones de datos 55

go. La asignación de las palabras del código a los objetos se hace mediante una
expresión algebraica o una tabla. Sin embargo, el lector debería observar que
cuando la asignación se hace de forma tabular, puede no haber una explicación
lógica de cómo están relacionadas las palabras código con los objetos. Obsérvese
también que no necesariamente se tienen que usar todas las cadenas de bits como
palabras código.
Como se indicó antes, se necesitan al menos 4 bits para representar dígitos
decimales. Sin embargo, hay (:3) = 16!/ 10!6' fOlmas diferentes de escoger 10
palabras código específicas a partir de 16 posibles cadenas de 4 bits y lO' formas

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
di stintas de asignar cada elección a 10 dígitos decimales. Entonces hay
16' 10!/I0!6! = 16!/6! = 29, 059, 430, 400 códigos decimales de 4 bits diferentes.
Además, sólo unos pocos de ellos se usan actualmente, donde los más comunes
se listan en la Tabla 2.7.
El código decimal más frecuentemente usado es el código de dígitos deci-
males codificados en binario (BCD, BilZa/y Coded Decimal), que asigna una
representación binaria sin signo de 4 bits a cada dígito entre O y 9, no usándose
las palabras del código entre 1010 y 1111. La conversión entre las representacio-
nes BCD y decimal se puede llevar a cabo simplemente sustituyendo 4 dígitos
BCD por cada dígito decimal y viceversa. Sin embargo, en la práctica se suelen
agrupar dos dígitos BCD en un byte de 8 bits, que por tanto puede representar
cualquier valor comprendido entre O y 99.
Los números en BCD negativos se pueden expresar de varias fonnas, incluyen-
do las representaciones en signo y magnitud y en complemento a 10. En cada una de
estas representaciones el signo se sitúa en un dígito extra. En BCD con signo y mag-
nitud' los signos + y - se pueden representar con cualquier cadena de 4 bits, en repre-
sentación en complemento a 10 el signo + se representa con 0000 y el - con 1001.

TABLA 2.7 Códigos decimales usuales

DíGITO BIQUI·
BCD 2421 EXCESQ.3
DECIMAL NARIO

O 0000 0000 0011 0100001


I 0001 0001 0100 0100010
2 0010 0010 0101 0100100
3 0011 0011 0110 OlOlOOO
4 0100 0100 0111 0110000
5 0101 1011 IODO 1000001
6 0110 1100 1001 1000010
7 0111 1101 1010 1000100
8 1000 1110 1011 1001000
9 1001 1111 1100 1010000

La suma de dos pares de números BCD se realiza dígito a dígito, empezando


por el dígito menos significativo. La suma de dos dígitos BCD es igual que la
56 Principios de diseño digital

suma de dos números binarios sin signo de 4 bits, con una excepción: Si la suma
de estos dos dígitos BCD está entre 10 Y 19, debe cOITegirse restando 10 Y gene-
rando el acarreo adecuado para el siguiente dígito. En realidad , esto se puede rea-
lizar sencillamente sumando 6 al dígito desbordado. ya que para los números
binarios de 4 bits, sumar 6 es equivalente a restar 10. Más aún , sumar 6 produce
automáticamente el acarreo adecuado. Obsérvese que también se puede generar el
acarreo adecuado para el sigui ente dígito sumando dos dígitos BCD cuya suma
sea igualo mayor que 16.
BCD es lo que denominamos un código ponderado, ya que el valor de cada

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
dígito decimal es igual a la suma de todos los productos de los valores binarios de
cada bit por su peso asociado. Los pesos del código BCD son 8, 4, 2 Y 1, respec-
tivamente: por esta razón, el código se denomina a veces código 8421. Alterna-
tivamente, los pesos 2, 4, 2, I se usan para generar el código 2421 que se mues-
tran en la Tabla 2.7. Este código literal se denomina autocomplementado, ya que
para todo dígito entre O y 9, se puede obtener la palabra código del complemento
a 9 complementando cada bit de la palabra código del dígito.
También mostramos otro código autocomplementado en la Tabla 2.7, el códi-
go de 3 en exceso. Este código no es un código ponderado pero se genera a par-
tir del código BCD sumando 0011 (3 en binario) a cada palabra del código.
Los códigos decimales pueden tener también más de 4 bits. Por ejemplo, el
código biquinario mostrado en la Tabla 2.7 usa 7 bits. En este código el primer
bit de una palabra del código se usa para indicar si el dígito decimal se encuentra
en el rango entre 5 y 9, mientras que el segundo bit indica el rango de O a 4. Los
últimos 5 bits de cada palabra código se usan para seleccionar uno de cinco núme-
ros dentro del rango, en el que cada bit corresponde a un número del rango.
Como se puede ver a partir de la tabla, el código biquinario requiere 7 bits
para representar la misma cantidad de información que los otros tres códigos de
la tabla, representados con 4 bits. Sin embargo, la ventaja de este código biqui-
narío yace en su facilidad para detectar errores en un sólo bit, ya que todas las
palabras del código tienen la misma propiedad: todas tienen dos unos, uno entre
los dos bits más significativos y otro entre los cinco bits menos significativos.
Dada esta propiedad, cualquier cambio accidental de cualquier bit en cualquier
palabra código, da una palabra no codificada permitiéndonos detectar si una
palabra código es errónea. Trataremos estos tipos de códigos con más detalle en
la Sección 2. 12.

2.11. CÓDIGOS DE CARACTERES


En general, una cadena dada de bits puede representar cualquier carácter, numé-
rico o no. Dado que la mayoría de los procesadores de datos incluyen texto, lo,
caracteres que se usan más frecuentemente forman parte de un alfabeto, que se
representa en el computador con una cadena de bits particular.
El código de caracteres más comúnmente usado es el ASen (American Standard
Cacle for Inforll/ation Interchallge, código estándar americano para intercambio de
Tipos y representac iones de datos 57

info rmaci ón). en el que cada carácter sc representa con una cadena de 7 bits. Este
código codifica 128 caractcrcs diferentes. incl uycndo mayúsculas y minúsculas.
números. algunos signos de puntuación. y una selic dc caracteres de control. Las 128
palabras de este código se muestran en la Tabla 2.g. que nos dice. por ejemplo. que
la pa labra "DESIGN" se representa con las siguientes sei s palabras código:
1000 100 1000 101 10 1001 1 100100 1 1000 111 1001110

TABL A 2.8 Código estandar americano para intercambio de información

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
b.bsb.
b3 b"b,bo 000 001 010 011 100 101 110 111

(1000 NUL DLE SP O @ P P


oDa 1 SOH DCI 1 A Q a q
00 10 STX DC~ 2 B R b
no 11 ETX DC3 # 3 e s e s
0100 EOT DC4 $ 4 D T el t
0101 ENQ NAK % 5 E U e 1I
0 11 0 ACK SY N & 6 F V f v
0 11 1 BEL ETB 7 G W g w
1000 BS CAN 8 H X h x
100 1 HT EM 9 1 Y Y
10 10 LF SUB ,. ] Z J z
101 1 VT ESC + K I k (
1100 FF FS < L \ 1 1
CR GS M )
11 0 1
1110 SO RS
=
> N ,I m
n
1111 SI US / ? O o DEL
Abrl' \'iatura:.: tIL' h )~ ~óui g m. dc (' (ll1 l m !:
'UL. ccro: SO H, l'Wll iell 1.U de c lhcl'cra: STX , l'()nlienl.O de tex lO: ETX, fin <.Id h.'x to : EOT. fi n dI.' t/";'II1 "
misión: E ~Q , preg.unta: AC K, rc\.'ono\.'i mk'n to: BEL. pitido: BS, h;UTiI c:"paciadura: HT. tabubdor hori ~
Illma l: LF. ;\ \';111(:1.' lit.' línea: VT. tahulador \'e rt ical: FE ¡lVanCC I.k p,ígina: e R. retorno al in ic io dI.' 1;'1 línca:
SO. lk.spb /:lr :-.lI i<l:,: SI. dl'spl al.ar I.'n trada: sr, e:- paci o; OLE. salir del cnlacL' dI.' uaws: DC L L'ontro l ud
dispm. iti \,l) 1: DC 2. L'ontrol dd di spositivo 2: De J. l"ontrol dl'1 dis pn "itivu J; De-lo l:( )l1t["ol ul'l dispos itivo
~: ;\I A K. rCW I1(lL"iI11ic nto negativu: SYN. sinL'ron il.ilr: ETB. fin;, 1 dl' Iransmi:. il;n ele hlllqUl' : CAN, L'arll'l'-
lar: 1: \1 . fin del rnl:'dio : SUB. :-;ustituir: ESe. :-,liir: FS, separador dc t i dlL' ro ~: CiS. :':I.'paraclor (k' grupo: RS.
' l.'I>ar:ldm de regi"tro: UN . "epar,nIQr de unidad: DEL. horrar o rebohinar.

Cada una de estas palabras del códi go ASC II se suele almacenar cn un oyte.
4u e incluye un bit de paridad extra que se usa para detecci ón de errores .

2.12. CÓDIGOS PARA DETECCiÓN Y CORRECCiÓN


DE ERRORES
En un sistema dig ital. se puede produc ir un error a ca usa de rallos físicos pe nna-
nentes o temporales que se traducen en diferencias e ntre los datos transmitidos y
58 Principios de diseño digital

los recibidos . Por ejemplo. una radiación cósm ica podría producir un fa llo tem-
poral en un circuito de memoria cambiando el valor de una única ce lda de memo-
ria . Por otra parte, una temperatura alta en el encapsulado podría producir una
desconexión permanente de los pequeños cables del interior de un microchip.
Para detectar tales errores, necesitamos asegurar los datos con la ayuda de códi -
gos de detecc ión de errores. Sin embargo, para comprender estos códigos de
detección de errores primero neces itamos introducir el concepto de distancia boo-
leana, lo que requiere la definición de n-cubo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
o (a)
o o

10
o
11
o

IbJ

o
00 01
o

101
o
JJI
o

1 ~4~/ '"

O
/~~O~I o
1100 010

11 10 11 11

IOl4~~/o (d)

O-~-.
I / I JOI
/ , )()O
/
0 -- - - 0
/
1000 10\.1[

0 11 ') 0111

FIGURA 2.11 n-cubos, con n = 1, 2, 3 Y 4.


Tipos y representaciones de datos 59

Cualquier cadena de n bits se puede visualizar como uno de los vértices de un


n-cubo binario, que es un cubo con un total de 2" vértices, en el que cada uno de
ellos corresponde a una cadena particular de 11 bits. En este cubo, dos vértices
están unidos por una arista si y sólo si las cadenas correspondientes difieren en un
solo bit. En las Figuras de la 2.11 (a) a la (d), mostramos cuatro n-cubos , con n =
1,2, 3. Y 4, respectivamente. Los cubos mayores de n son más difíciles de visua-
lizar. aunque podrían ser útiles en nuestra explicación de los procedimientos de
codificación y minimización que se describen en el Capítulo 4.
En un n-cubo, puede haber un número de lIl-subcubos, con 11 - ni bits con el

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mismo valor en cada vértice, y el resto de los m bits tomando todas las 2'" com-
binaciones de los valores O y l. Por ejemplo, en la Figura 2.11 (c), los vértices 000,
001 , O1O, O11 forman un cubo de orden 2 dentro del cubo del orden 3. A partir de
la definición anterior de subcubo, sabemos que cada subcubo se caracteriza por
los /1. - 111 bits que son iguales para cada vértice dentro de ese subcubo. Tal subcu-
bo puede especificarse por tanto con una cadena de n bits, que contiene sus n - 111
valores binarios característicos y usando X en el resto de las m posiciones, para
indicar que son bits indiferentes. En otras palabras, cualquier valor binario en un
lugar de un bit indiferente, producirá cadenas que peltenecen a este m-subcubo.
En este nivel conceptual, el n-cubo es útil puesto que proporciona una interpreta-
ción geométrica del concepto de distancia, a veces denominada distancia
Harnrning. La distancia entre dos vértices cualesquiera es igual al camino más
corto entre ellos, que a su vez, es igual al número de bits que tienen distintos valo-
res binarios. En otras palabras, dos vértices adyacentes cualesquiera tienen siem-
pre distancia l. Además. dos véI1ices cualesquiera no adyacentes dentro de cual-
quier 2-subcubo siempre están a una distancia igual a 2. Por ejemplo, en la Figura
2.II(c), los véI1ices 000 y 011 distan 2; de forma similar, los vértices 001 y 010
en el OXX-subcubo siempre distan 2. Este concepto de distancia es esencial para
la comprensión de los códigos de detección de elTores.

2.12.1. Códigos de detección de errores

Cualquier código de 11 bits se puede considerar como un subconjunto de todas las


posibles cadenas de n bits. Las cadenas incluidas en este subconjunto particular
se denominan palabras código, mientras las cadenas que no están incluidas se
denominan palabras que no son del código. Un código se dice que es un código
de detección de errores si tiene la propiedad de que ciertos tipos de errores pue-
den transformar palabras del código en palabras que no son del código. Entonces,
suponiendo que se usan sólo palabras del código para comunicación de datos,
cualquier error introducido durante la transmisión se pondrá de manifiesto inme-
diatamente puesto que cambiará palabras del código en palabras que no son del
código. Es decir, si la cadena recibida es una palabra del código, los datos son
COlTectos: si no es una palabra del código, los datos deben ser elTóneos.
Para detectar un error en un bit (es decir, detectar que se ha cambiado un
único bit de O a 1 o de 1 a O) es esencial que la distancia entre dos palabras cua-
60 Principios de diseño digital

lesquiera del código sea <:: 2. En otras palabras, debemos escoger palabras del
código de tal forma que ningún par de vértices que representen palabras del códi-
go sean adyacentes en su correspondiente n-cubo. En la Figura 2.12(a), por ejem-
plo, se muestra un código de 3 bits que consta de cuatro palabras código: 000,
011 , 100 Y 110. Como un error en un so lo bit podría cambiar la palabra del códi-
go 100 por las palabras del código 000 y 110, este código no puede detectar erro-
res de un sólo bit. Sin embargo, si omitimos 100 del código, y añadimos 101 en
su lugar, se puede crear un código con la ventaja de detectar errores en un solo
bit. Como se muestra en la Figura 2.1 2(b). en este cubo un error en un solo bit

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
no puede transformar una palabra del código por otra, ya que todas la palabras
del código distan 2.
En general, para mantener la distancia 2 en un cód igo arbitrario, es necesario
que el número de palabras del código sea igual al de las que no son del código.
Entonces, para lograr este objetivo para cualquier dato de n bits, usualmente deno-
minados bits de información, se pueden usar palabras código de (11 + 1) bits aña-
diendo un bit comúnmente denominado bit de paridad. El valor de este bit de
paridad puede tomar un valor de forma que el número de unos de la palabra del
código sea par para todas las palabras del código e impar para todas las palabras
que. no sean del código, o viceversa. Cuando cada palabra válida del código de
(11 + 1) bits tiene un número par de unos, el código se denomina código de pari-
dad par. Por otra parte, un código en el que e l número total de unos de una pala-
bra válida del código de (11 + 1) bits es impar, se denomina código de paridad
impar. En tales casos, estos códigos se denominan códigos de paridad de I bit
para enfatizar el hecho de que cada uno usa un único bit de paridad. Como ejem-
plo, la Figura 2. I 2(b) muestra un código de paridad par de 11 bits. que consiste en
cuatro palabras: 000, 01 1, 101, 110. Como se puede ver, cada palabra del códi go
contiene ninguno o dos unos, mientras que cada palabra que no pertenece al códi-
go contiene uno o tres unos. Obsérvese que en este código, los dos bits más sig-
nificativos son los bits de información , mientras que e l bit menos signiticati vo es
el bit de paridad. Por el contrario, también podríamos ddinir un código de pari-
dad impar de 3 bits como se ve en la Figura 2. 12(c). Obsérvese que este código
también contiene cuatro palabras código, aunque en este caso cada palabra del
código tendrá uno o tres unos.
Como el lector puede imaginar, estos códigos de paridad de I bit no pueden
detectar errores en 2 bits, ya que un cambio de dos bits cualesquiera de O a I o
de I a O no afecta a la paridad. Sin embargo. pueden detectarse errores que suce-
dan cuando cambien 3 bits en una palabra del código. En general, un código de
paridad de I bit puede detectar cambios que han ocurrido en un número impar de
bits, pero no detecta cambios que impliquen un número par de bits. Por tanto,
estos códigos de paridad de I bit sólo se pueden usar par detectar errores en un
solo bit. Estos códigos de paridad se usan frecuentemente en comunicaciones
locales y globales en los que se añade un bit de paridad a cada código ASCII de
7 bits.
Siempre que se reciba un byte con una paridad incorrecta. hay que retransmi-
til' el byte recibido, o a veces el mensaje entero.
Tipos y representaciones de datos 61

10 1 11 1

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
«.1) Código usual

101 11 1 111 1 111

'"'4 °, /

/~170

~ '
nou 010

(b) Código de- paridad par (c) Código de parid.uJ impar

FIGURA 2. 12 Tres códigos distintos.

2.12.2. Códigos de corrección de errores

Realmente, para corregir un error en un solo bit se necesita más de un bit de pari-
dad. ya que este único bit sólo puede indicar si una palabra del código es global-
mente correcta o incorrecta. Para obtener una información más precisa necesita-
mos IOg2" bits de paridad extras por cada 11 bits de información , y de esta form a
podremos determinar qué bit de información es el incorrecto. Una vez identifica-
do. el bit incorrecto puede corregirse cambiando su va lor de O a I ó de I a O.
Para ilustrar un código de con'ección de errores. supongamos que sólo se va a
transmitir un único bit de información, y que el O se va a codificar 000 y el l . 111 .
Como se ve en el cubo de orden 3 de la Figura 2. 13. este código tiene una di stan-
cia mínima de 3. Entonces, si se produce un error en un sólo bit durante la trans-
misión de una palabra del código, cambia esa palabra del cód igo por una palabra
que no es del código, como en el caso que tratamos antes con los códigos de I bit.
En este caso, sin embargo, la palabra recibida que no es del código debería di star
I de la palabra del código originalmente transmitida. Como se puede ver en la
Figura 2.13, si por ejemplo se transmite la palabra 000, un solo bit de error puede
cambiarla a 100, OIO o 001. De esta forma , si recibimos una palabra que no está
en el código, con un uno, lo corregimos a 000. Por otro lado, si recibimos una
palabra que no está en el código, con dos unos en ell a. la corregimos a 111.
62 Principios de diselio digi tal

101 Jl1

'o ·4~/

/:'170~ ' •
I KXl 010

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
FIGURA 2.13 Ejemplo de código corrector de errores.

Obsérvese que el códi go descrito anteri ormente también puede detec tar.
pero no correg ir, casos e n los que hay dos errores de un solo bi t. Por ejemplo.
si se transmite 000 y se rec ibe 0 11. 10 1 Ó 11 0, es obvio que ha ocurrido un error.
Sin embargn, no es pos ibl e correg ir este error ya que no está cl aro si lo trans-
mitido origi nalmente era 000 y han ca mbi ado dos bi ts , o era 11I y ha cambiado
un so lo bit. Por esta razón, usaríamos este código ya sea para detec tar y corre-
g ir un so lo bi t o para detectar hasta dos errores, pero no para ambas funciones
a la vez.
Sin embargo, hay códigos que permiten simul táneamente detectar y cOITegi r
errores, y se denominan códigos correctores de errores. En general , un código
necesita una distancia mínima de 2.r + 1 para que pueda corregir hasta x errores
de un solo bit. En el sencillo ejemplo mostrado antes, x era igual a l . Por otro lado.
podríamos usar un cód igo con una distancia mínima de 2r + y + l . para corregir
hasta x errores de un so lo bit y detectar hasta y errores ad icio nales. La fun ción de
descubri r qué palabras de l código se transmitieron orig inalmente se denomin a
decodificación, y el hard ware que lleva a cabo esta función se denomina decodi-
ficador corrector de errores.

2.13. CÓDIGOS DE HAMMING


En 1950, R. W. Hamming propuso un método general para construir códigos de
corrección de errores usando una distancia mínima de 3. De acuerdo con este
método, por cada entero 111 . hay un código de Harnrning de (2'" - 1) bits que con-
tiene 111 bits de paridad y 2'" - 1 - m bits de info rmac ión. En este código de
Hamming, los bits de paridad están entremezclados con los bits de información
del sigui ente modo: Si numeramos las pos iciones de los bits desde I hasta 2'" - 1,
los bits e n la posici ón 2k , donde O 5: k 5: m - 1, son los bits de pari dad, y los bits
de las restantes posiciones son los bits de información. Así. los bits de paridad
están siempre en las posicio nes 1, 2. 4. 8, ... hasta 2"'- 1. En general. el valor de
cada bit de paridad se escoge de modo que el número total de unos en un grupo
específico de bits sea par, y estos grupos se escogen de modo que ni ngún bit de
informac ión se c ubra con la mi sma combinación de bits de paridad. Es esto lo que
Tipos y representaciones de dalaS 63

da al código su capacidad de correcci ón. Prec isando más. a cada bit de paridad en
la posici ón 2k• su grupo de bits de informaci ón conespondiente incluye todos esos
bits en la posición cuya representación binaria tenga un I en la posición 2k •
Para mostrar los grupos de paridad, empezamos con el código Hamming de
7 bits mostrado en la Figura 2. 14, que contiene bits de información en las posi-
ciones 7, 6, 5 Y 3, y los bits de paridad en las posiciones 4. 2, y l. Como indican
los cuadros sombreados, en este código cada bit se usa en el cálc ul o de uno o más
valores de paridad. Como III es la representac ión binaria de 7, por ejemplo, el
bit de información en la posición 7, se usa para calcular el va lor de los tres bits

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
de paridad. Por otra parte, el bit de información en la posición 6, cuya represen-
tación binaria es 110, se usa sólamente para calcu lar el va lor de los bits de pari-
dad de las posiciones 4 y 2, mientras que e l bit de información de la posición 5,
se usa para calcular los valores de los bit s de paridad de las posiciones 4 y l .
Finalmente, el bit de información 3 se usa para calcu lar el bit de paridad de las
posiciones 2 y l .

7 6 5 4 3 2 Posición de los bi ts
GnJpo de paridad p:lra
el bit de paridad 4
Grupo de p:u'tdad para
el bit de parid::.d 2
Grupo de parid:td para
11111111 el hit de paridad 1

t t t
Bits de paridad

FIGURA 2. 14 Cálculo de paridades en un código Hamming de 7 bits.

De acuerdo con estos grupos de paridad, el valor del bit de paridad de la posi-
ción I tiene que elegirse de modo que el número de unos en las posiciones 7. 5, 3
y I sea par, mientras que el valor del bit de paridad en la posición 2 hace el núme-
ro de unos par en las posiciones 7. 6, 3 y 2, y el valor del bit de paridad en la posi-
ción 4. hace el número de unos par en las posiciones 7, 6, 5 y 4. En la Tabla 2.9
mostramos todas las palabras código para estos códigos de Haml1ling de 7 bits.
Partiendo de la información de esta tabl a, es fácil ver que la distancia mínima
de un códi go de Hamming ti ene que ser 3, ya que esto significa que para otras dos
palabras cualesquiera del código tenemos que hacer al menos tres cambios de un
bit para convertir una palabra del código en otra. Podemos probar esto intuitiva-
mente, demostrando que un cambio de I o 2 bits sólo produce palabras que no
pertenecen al código, que no tienen valores cOlTectos en los bits de paridad. Para
probar que un cambio de I bit siempre generará una palabra que no sea del códi-
go, hemos de ver que un cambio de I bit en una palabra del código afecta al
menos a un bit de paridad , ya que cada bit de una palabra del código se incluye
en al menos un grupo de paridad. De este modo, un cambio de I bit siempre debe-
ría provocar al menos un bit de paridad incorrecto.
64 Principios de diseño digita l

TABLA 2. 9 Palabras del código con 4 bits


de información en código Ham-
ming de distancia mínima 3 y 4

CÓDIGO CON DISTANCIA CÓDIGO CON DISTANCIA


MíNIMA 3 MíNIMA 4

BITSDE BITSDE BITS DE BITS DE


INFORMACiÓN PARIDAD INFORMACiÓN PARIDAD

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
0000 000 0000 0000
0001 0 1I 0001 01 I I
00 10 101 0010 10 1I
00 1I 110 001 I 1100
0100 110 0 100 110 1
0101 101 0 101 10 10
01 10 01 1 01 10 0110
01 I I 000 01 I I 0001
1000 III 1000 1110
100 1 100 100 1 1001
1010 010 10 10 010 1
101 I 001 1011 0010
1100 00 1 1100 001 I
I JOI 010 110 1 0100
1110 100 11 10 1000
IIII I II IIII IIII

Por otra parte, un cambio de 2 bits en una palabra de l código no cambia el


valor del bit de paridad si ambos bits pertenecen al mismo grupo de paridad. Sin
embargo no es posib le ya que para dos posiciones cualesquiera de una pa labra del
código siempre hay un grupo de paridad que no incluye ambas posiciones. En
otras palabras, como dos bits cualesquiera deben estar en distintas posiciones , sus
números binarios deben diferir en al menos un bit. así que siempre hayal menos
un grupo de paridad con un solo bit cambiado, lo cual da lugar a una palabra que
no pertenece al código con al menos un valor de paridad incorrecto. Por consi-
guiente, debemos concluir que los códigos de Hamm ing tienen una di stancia de
tres o más.
Partiendo de esta explicación no es difícil ver cómo cOITeg ir errores de un solo
bit c uando se están recibiendo palabras código erróneas. Para corregir un error en
un bit necesitamos calcular la paridad de cada grupo de paridad. Luego añadimos
las posiciones de todos estos bits de paridad cuyos grupos tienen paridad impar.
Esta suma indicará la posición del bit erróneo. En la Figura 2. 15 ilustramos este
procedimiento con un ejemplo, suponiendo que se ha transmitido la palabra códi-
go correcta 1010101 , pero tiene un error en el bit 6 producido durante la transmi-
sión, cambiándose la palabra código 10 10 1O1 a la palabra que no pertenece al
código 11 10 1Ol . Cuando contamos el número de unos que hay en los bits 7, 6, 5
y 4 de la palabra del código rec ibida, encontramos que este número es impar. De
forma simi lar, encontramos que los bits 7, 6, 3 y 2 contienen un número impar de
Tipos y representaciones dc da lOS 65

unos. Por tanto sabemos que tiene que haber un error en los bi ts de paridad -1 y 2.
Como la suma de los números en esas posiciones es 6. sabemos que el error se ha
producido en el sex to bit.
Este código Hanuning de di stancia 3 se podría convcnir fácilmc nle en un
código de distancia 4 sumando un bit de paridad m3. , e u. o va lor se clige de
modo que el número de unos en todos los bits. inc luyendo e l nuevo, sea par. En
la Tabla 2.9 se muestran todas las pa labra, códi go de este código de di stan cia -'
modiflcado. Como en el caso del código de paridad par de un bit, este bit adi -
c iona l asegura que se puede detectar un número impar de errores en un so lo bit

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
si se produjese n. En particular. cualquier error de tres bit s es detectab le co n este
código.
Los cód igos Ham ming de di stanci a 3 y 4 se usan hab itu almente para detec-
ción y corrección de errores en las memorias de la computadoras . Como estos
componentes de memoria representan la pa rte más importante de cualquier
computador. los códi gos Ham min g nos proporcionan una relación coste-efi-
ciente que mejora la fi abilidad del istema, ya que el número de bits de paridad
usados para la corrección de memoria crece sólo logarítmica mente con e l tama-
ño de palabra.

7 6 5 .¡ .1 , J>o~ ici one~


de los bils
I
I I I
[) I O
In I I
Palabra c6digo
correcta
Pos iciol\c~
7 6 5 .¡ J 1 de los hils
I
I I I O O
I II Palabra código
incorre¡;13

t
Rol
t
Pürid:ld
t t
Paridad Paridad
im:om:clo errónea errónea COrrí:c l:1

FIGURA 2.15 Procedimiento de corrección para un código Hamming de distancia 3.

2.14. RESU M ENDELCAP~ULO


En este capítulo hemos tratado los di stintos tipos de datos que se usan en sistemas
di gitales y el modo en que se representan de form a binaria. En concreto, hemos
descrito los tipos de datos usados en cálculo aritmético (números en punto flotan -
te y en punto fij o) y los procedimientos para llevar a cabo operaciones aritmét i-
cas básicas: suma, resta, muliiplicación y división . Estos procedimientos se utili-
zarán en capítulos posteri ores como especificac iones iniciales en el diseño de
componentes aritméticos.
También hemos presentado distintos tipos de códigos, especialmente los códi-
gos usados para detección de errores (cód igos de paridad) y corrección de errores
66 Principios de diseño digital

(códigos de Harnrning). Estos códigos se utilizan siempre que se necesite trans-


mitir datos de un procesador a otro por canales ruidosos o cuando es probable que
surjan eITores debidos a las condiciones inestables del entorno. Como tales códi -
gos requieren un hardware especial de codificación y decodificac ión. que incre-
menta el coste y disminuye las prestaciones del sistema di gital, fuerzan a los di se-
ñadores que utilizan estos códigos a sustituir coste y prestaciones por seguridad
en los datos.
Este capítulo pretende ser introductorio; lo visto aquí se volverá a analizar en
el resto del libro. En el capítulo siguiente presentamos componentes digitales

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
básicos así como reglas para combinar estos componentes para hacer circuitos
capaces de ll evar a cabo aritmética binaria y otras funcione s digitales.

2.15. LECTURAS ADICIONALES


Knuth. D. E. The Art 01 Computer Pmg rammillg: SemillHmerical AlgoritlllllJ. Read ing,
MA : Addison-Wesley, 1969.
U n tra baj o clásico con un tratam iento en profundidad de números en punt o lijo y en
punto flotante así co mo de los algoritmos util izados en su manipulación,

Peterson. W. w.. and E. J. Welden . En vr-Correclillg Codeso 2nd ed. Boston: MIT Press.
1972.
Un te xto clásico con un tratamiento formal de los códigos de detección y corrección de
errores. Se recomienda sólo para lectores con inclinaciones teóricas.
Schmid, H. Decimal Computalioll . New York: Wiley. 1974.
Una colección, un catálogo y una revista de las técnicas de cálculo BC D. Describe
cómo se implementan de varias formas cada una de las operaciones trascendentales y
aritméticas más comunes.
Sean, N. R. Computer NlImbe r Systems olld Arithmetic. Englewood Cli ffs. NJ : Prenti ce
Hall. 1985.
Un tex to introductorio mu y legible sobre sistemas de numeración y su apl icación a cir-
cuitos digitales.
Steill , M. L. , and R. W. D. Munro. III/",d/lClioll /O Machille Arilhlllelic. Readin g. MA :
Addison-Wesley, 197 1.
Explica los algoritmos bás icos en aritmética de computadoras usando un punto de vista
matemático más que de in geniería. Sin embargo. e l lector no necesita tener muchos
conocimientos matemáti cos para entender el contenido.
Sterbellz, P. H. Floalillg- Poill/ COlllputalion. Englewood Cliffs, NJ: Premiee Hall , 1974.
Un tratamiento formal del cálculo en punto flotante y del amíli sis de errores. Se des-
cribe lo que ocurre realmente durante la ejecución de los programas cuando se utiliza
la aritmética de punto fl otante.
Wakerl y. J. F. Error-Delecling CodesoSelFCheckillg CirclIits. alld ApplicaliulIs. Nc\V York:
North-Hollalld. 1978.
Una introducción excelente a distintos códigos usados en computado .... s y su imple-
mentación en muchas aplicac iones prác ticas.
Tipos y representaciones de datos 67

Waser, S. and M. J. Flynn . Il11rot!uct;oll lO Arithmeric fn ,. Dig ita l Syslem De:"';gllers. New
York: Hall, Rinehart and Winston. 1982.
Un tratamiento más detallado de la aritmética de computadores dirigido il aquellos que
diseñan c.ircuitos aritméticos.

2.16. PROBLEMAS
2.1. (Representación binaria) Ex prese los (a) 606
sigui entes números dec imales en (b) 123

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
binario. (e) 6650
(a) 129 (d) 345.6
(b) 5 11
2.8. (Conversión de números) Pase los
(e) 1000
(d) 2048
siguiente números de la base dada a
las bases indicadas.
2.2. (Representación binaria). ¡,cuál es el (a ) El decimal 11 2 '0 a binario. octal
número mayor que se puede re pre- y base 9.
scntar con: (a) 9: (b) 10: (e) 15: y (d) (b) El hexadecimal I AB2 ,. a deci -
16 bits') mal, binario y base 7
(e) El binario 10110110l z a octal.
2.3. (Representación binaria) Liste todos
decimal. y base 12
los dígitos y sus representaciones en
(d ) 12AB'1 en base I~ a binario.
base 13. base 6 y base 7.
2.4. (Conversión de números) Pase los 2.9. (Conversión de números) Formul e un
siguientes dígitos binari os a notación procedimiento para pasar un número
hexadecimal. de base 3 a base 9.
la) 1010101010
(b) I 000000 I 2.10. (Conversió n de números) Calcule e l
(e) 11111111111 valor de x si 23,. ~ 111100010 2,
(d ) 10011001 1001
2.11. (Reg las para sumar ) Sume los
2.5. (Convers ión de números) Dé los siguientes números sin pasarlos a su
equivalentes binaríos de los siguien- representación decimal.
tes números hexadecimales. (a) 01l102 y ll00ll z
(a) 123.45 (b) 98A" Y 234"
(b) 1000.50 (e) ABC'6 y A 78' 6
(e) BAD.CAB
2.12. (A ritmé ti ca binaria) Eva lúe las
(d ) DA 7.35C
siguientes expresiones usando arit-
2.6. (Conversió n de números ) Pase los mética binaria.
siguientes números decimales a base 6. (a) 1101101 + 11101 )2
la) 131 (b) (100 101 + 101101)(100 10 1 -
(b) 208 101101 )
(e) 1001 (e) ( 111 O11 + 1010 I )/( 11 O111 -
ld ) 5050 101101 )

2.7. (Conversió n de números) Ca lcu le los 2.13. (Complementar números) Ca lcule el


equivalentes decimales de los complemento a 10 de los siguientes
siguientes números en base 7. números decimales.
68 Principios de diseño digital

(a) 123456 (e) 1010101/10111


(b) 987654 (d) 11001100/10011
(e) 900900
(d) 000000 2.20. (Algoritmos para dividir) Defina el
procedimiento y dibuje un diagrama
2.14. (Complementar números) Calcule el de flujo para dividir:
complemento a 2 de los siguientes (a) Números binarios no negaLi-
números binarios. vos
(a) 1010101 (b) Números binarios en comple-
(b) 111101111 mento a dos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(e) 0000001 (e) Números binarios en signo y
(d) 100000 magnitud
(e) 000000
2.21. (A lgoritmos en punto flotante)
2.15. (Reglas para restar ) Realice la resta Defina un procedimiento para (a)
lamando el complemento a 10 del sumar. (b) restar. (e) multiplicar. y (d)
sustraendo. dividir números en punto Ootante.
(a) 3421 - 1567
(b) 1682 - 2682 2.22. (Cód igo BCD) Represente los
(e) 1000 - I siguie ntes números decimales en
(d) 3003 _. 2002 BCD.
(a) 13675
2.16. (Reglas para restar) Realice la resta (b) 23567
binaria tomand o el complemento a 2 (e) 33441
del sustraendo. (d) 9753
(a) 10 11 10 - 10001
(b) IIIIII - 11110 2.23. (Códigos binarios) Determine el
(e) 111 10 - 1001 código binario para cada uno de los
(d) 100001 - 10001 10 dígitos decimales lIsando códigos
ponderados de pesos 7. 4. 2. Y l .
2.17. (A ritmética BCD) Pase los siguientes
números decimales a binario. y luego 2.24. (Códigos binarios) Represente e l
realice las siguientes multiplicaciones número decimal 9876 en
binarias. (a) Código 8421
(a) 15 x 16 (b) Código 242 1
(b) 120 x 2 1 (e) Cód igo de 3 en exceso
(e) 17xl3 (d) Código biquinario
(d) 2 1 x lOO
2.25. (Códigos de detección de errores)
2.18. (Reglas para multiplicar) Realice la Haga lIn código de detección de eITO-
multiplicación binaria con los res BCD añadiendo (a) un bit de pari-
siguientes números en compl emen to dad par. y (b) un bit de paridad impar
a dos. en la posición del bit menos sign ifica-
(a) O11 OI1 x 00 I1 tiv o.
(b) 111101 xOO l1
(e) 010101 x 1001 2.26. (Códigos de caracteres) Esc riba el
(d) 111101 x 100 I título de este libro en ASCII.

2.19. (Reg las para dividir) Divida los 2.27. (Códi gos de caracteres) Decodifique
siguientes números binarios. el siguiente código ASCII:
(a) 11011/1001 1000010 1001111 1010010
(b) 11111/1111 1001001 1001110 1000111
Tipos y representaciones de datos 69

2.28. (Códigos de detección de errores) 2.29. (Códigos de detección de errores)


Determine cuántos subcubos distintos ¿Cuántos errores se pueden detectar
de los siguientes tamaños habría en en un código con di stancia mínima d?
cualquier n-cubo.
2.30. (Códigos de detección de errores)
(a) 11 - 1 Defina un código Hamming de dis-
(b) /11 tancia 3 con 1I bits de información.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
./
L

Algebra
o

booleana y
diseño lógico

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
ÁJgebra booleana Puertas lógicas
y biestables

Máquina de
6
1•
estados finitos -.. 4 ~
6
Técnicns de Técnicas de
diseño lógico 4- di seño digital

Sistema bi nario 2
y representación f f
de dalOS
5 7
Componentes Componentes de
combinacionales

T -- almacenamiento

I
Máquinas de 8 Diseño de 8
esl'ados finitos transferencia entre
generalizadas registros

J
9
Componenles
del procesad~

En el capítulo 2 aprendimos las reglas para realizar operaciones en arit-


mética binaria. En este capítulo se enseña a dise;;ar circuitos que imple-
mentan esas regLas. En general, cada circuito digital se implementa con
componentes lógicos básicos similares, conocidos como puertas y biesta-
bles. Como cada puerta implemema IlIIa o más operaciol/es del álgebra
booleana, tellemos que entender sus propiedades antes de abordtJr el dise-
lio de circuitos lógicos. UI/a vez vista el álgebra boolealla, podremos des-
cribir y diseíiar circuitos lógicos usando una biblioteca de componentes
dada. Para ello, crearemos I/I/eslra propia biblioteca gel/érica de compo-
lIentes lógicos y describiremos las distintas tecl/ologías dispol/ibles para
fabricar sistemas digitales.
72 Principios de diseño digital

El éxito de la tecnología de computadoras se basa principalmente en la sencillez


de los circuitos lógicos que se diseñan y en la facilidad de su fabricación. Los cir-
cuitos digitales se componen de elementos básicos de procesamiento. denomina-
dos puertas, y elementos básicos de memori zac ión, conocidos como biestabl es.
La sencillez del diseño de circuitos digitales se debe al hecho de que las seña-
les de entrada y salida de cada puerta o biestable pueden tomar sólo dos valores.
O y 1, Y a que el cambio de los valores de las señales está regido por el álgebra
booleana. El hecho de que el álgebra booleana sea finita y n1<ís rica en propieda-
des que el álgebra corriente conduce a téc nicas de optimización sencillas para la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
implementación de fun ciones booleanas con puertas y biestables. Para presentar
las técnicas de diseño de circuitos digitales. cuyo conjunto usualmente se deno-
mina diseño lógico, tencmos que entender primero las propiedades del álgebra
booleana.

3.1. PROPIEDADES ALGEBRAICAS


El álgebra booleana se puede definir con un conjunto de elementos. un conjunto
de operaciones y una serie de axiomas que se suponen ciertos si n necesidad de
demostrarlos. En general, un conjunto de elementos se defi ne como cualquier
colección de objetos que tengan una propiedad en común. Si S es un conjunto y x
un objeto, entonces x E S denota que x es un miembro de S. y.r 11' S denota que x
no es un elemento de S. Un conjunto con un número finito de elementos se puede
determinar, li stando en tre dos ll aves todos sus elementos. Por ejemplo.
A = ( 1, 2, 3. 4) denota el conjunto A. cuyos elementos son los números 1. 2. 3. Y
4. Un operador binario definido dentro del conjunto S es una regla que asigna a
cada par de elementos de S un único elemento que pencnece también a S.
Lo que queremos decir con el término axioma de cualquier álgebra son las
suposiciones básicas a panir de las que se pueden deducir por medio de teoremas
todas las demás propiedades del sistema. A continuación se li stan los axiomas
más comúnmente usados en la definición de una estructura algebraica.
CIERRE. Un conjunto S es cerrado con respecto a un operador binario. si y sólo
si para cada x, y E S. X • Y E S. Por ejemplo. el conjunto de números naturales
N = { 1, 2, 3, 4, oo.} cs ccrrado respecto,! la suma, ya que para todo a. b E N. se
puede obtener un único número e tal que a + b = e con e E N. Por otra parte, el
conjunto de los números naturales no es cerrado respecto a la resta, porque los
números negativos no pertenecen a N.
ASOCIATlVIDAD. Un operador binario. definido en un conjunto S se dice que
es asociativo si y sólo . i para todo x. y, Z E S.
(x • y) • Z = x • (v • z)
ELEMENTO IDENTIDAD. Se dice que un conjunto S contiene un elemento iden -
tidad con respecto a un operador binario concreto, . , siempre que exista un ele-
mento e E S tal que para cada x E S,
Álgebra booleana y dise ño lógico 73

e • .r = x . e = x
Por ejempl o, O es un elemento identidad respecto a la suma en el conjunto de
los enteros
1 = ( .. ., - 3,- 2, - 1. 0, 1. 2. 3.... )
puesto q ue para cada x E 1,

-<+0=0 + -< = -<


CONMUTATlVIDA D. Un operado r binari o, . , definid o en conjulllo S se d ice q ue

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
es conmutati vo si y sólo si para todo x, v E S.
x _y = y _.r
ELEMEN TO INVERSO. Un conj unto S que contiene un eleme lllo identidad e
respecto a un operador binario, •. se d ice que tiene elemento in verso si y sólo si
para cada x E S, ex iste un elemento y E S tal que
x . v = t!
Por ejemplo, con respec to a la suma, el in verso de cada x E 1 es (- x) ya que
x + (-x) = O.
DIS TRIB UTI VA . Si. Y '1 son dos operadores binarios de un conjunto S, se d ice
que . es di stributi va sobre I si para todo x. v. Z E S,
x • (y t ' ~) = (x • y) J (x • z)

3.2. DEFINICiÓN AXIOMÁTICA DEL ÁLGEBRA BOOLEANA


En 1854, George Boole introdujo el fo rmalismo que se usa en el tratamiento siste-
mático de la lógica, que ahora se denomina álgebra booleana. En 1938, C. E. Shan-
non aplicó este álgebra panicular para demostrar que las propiedades de los circui-
tos de conmutación eléctricos se podían representar con un álgebra booleana bi va-
luada. que se denominó álgebra de conmutación. La definición formal de álgebra
booleana que se da a continuación fue formulada en 1904 por E. V. Huntington.
En el ni ve l más general , el álgebra booleana es una estructura algebraica defi-
nida sobre un conj unto de e lementos B con dos operadores binarios, + y '. que
sati sfacen los sigui entes axiomas.

Axioma 1 (Prop iedad de clausura). (a) B es cerrado respecto al operador +; (b) B tam-
hién es cerrado respecto al operador '.
Axioma 2 (Elemento identidad). (a) B tiene un elemento identidad con respecto a "
denominado 1; (b) B también tiene un elemento ide ntidad respecto a +, denominado O.
Axioma 3 (Propiedad conmutati va). (a) B es conmutati vo respecto a +; (b) B es ta m-
bién conmutativo respecto a "
Axioma 4 (Propiedad di stri buti va). (a) El operador · es distributi vo con respecto a + ;
(b) igualmente. el operador + es distri buti vo con respecto a '.
74 Principios de diseño di gital

Axioma 5 (Elemento complementario). Para cada x E B. existe un elemento x' E B


tal que (a) x + x' = 1 Y (b) x . x' = O. El segundo elemento, x', se denomina comple-
mento de x.
Axioma 6 (Cardinalidad acotada). Hayal menos dos elementos x. y E B tales que x '" y.

Como puede verse, surgen varias diferencias cuando se compara el álgebra


boole,ma con un álgebra coniente. Obsérvese , por ejemplo, que:
1. En un álgebra corriente, + no es di stributiva sobre '.
2. El álgebra booleana no tiene inverso respecto a + ya·; por consiguiente,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
no hay operaciones de resta ni de división en el álgebra booleana.
3. Hay complementos en el álgebra booleana pero no en e l álgebra
corriente.
4. El álgebra booleana se aplica a un conjunto finito de elementos, mientras
que el álgebra corriente se aplica a un conjunto infinito de números reales.
5. La definición de Huntington del álgebra booleana no incluye la asociati-
vidad , ya que se puede deri var de los axiomas.
A pesar de estas diferencias, el álgebra booleana se parece al álgebra corrien-
te en muchos aspectos. Usando los símbolos familiares + y " por ejemplo, se faci-
lita el uso del álgebra booleana. Sin embargo, el diseñador lógico principiante
tiene que tener cuidado con no usar las reglas del álgebra corriente cuando no
deba aplicarlas.
Según esta definición, debería quedar claro que para formular un álgebra boo-
leana, necesitamos (a) definir un conjunto de elementos B, eb) definir dos opera-
dores binarios en B y (c) verificar que el conjunto B junto con los dos operadores
satisfacen los seis axiomas de Huntington. Sin embargo, siguiendo este procedi-
miento podríamos formu lar varias álgebras booleanas diferentes senci llamente
porque se puede definir el conjunto B y los dos operadores de varias formas dis-
tintas. En el resto del libro trabajaremos con el álgebra booleana bivaluada defi-
nida por Shannon, es decir, un álgebra en la que el conjunto B tiene sólo dos ele-
mentos. Este álgebra booleana constituye la base de la lógica matemática, en la
que los dos elementos son "falso" y "verdadero", y del diseño lógico, en el que
esos dos elementos son O y l.
El álgebra booleana bivaluada se define en un conjunto formado por dos
elementos, B = {O, l}, con dos operadores binarios OR e+) y ANO (-) según se
definen en las Tablas 3.1 y 3.2. Como puede verse en estas tablas, los axiomas de
Huntington son válidos en el álgebra booleana definida anteriormente.

Axioma 1. La clausura es evidente a partir de las Tablas 3. 1 y 3.2, ya que el resulta-


do de cada operación es un elemento de B.
Axioma 2. Los elementos identidad de este álgebra son el O para el operador + y el 1
para el operador '. A partir de las Tablas 3.1 y 3.2. por ejemplo, tenemos que
(a) O + O = O, Y O + 1 = 1 + O = 1
(b) 1·1=I , y l·O=O·I=O
lo que demuestra que O y 1 son. ambos, elementos identidad.
Á 1gebra booleana y diseño lógico 75

TABLA 3.1 Operador ANO TABLA 3.2 Operador OR

x y x ·y x y x +y

O (j O O O O
O I () () I I
O O O I
I

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Axioma J. La ley conmutativa se deduce de la simetría en las tablas de los operadores .
Axioma 4. La distributiv idad de este úlgebra se puede. c!t:most rar probando en al11bo ~
sen tidos de la ec uac ión.r· (y + :::) == (x ' y) + (x· :::) para cada va lor posible de las va ria-
b les. Afirmar la distributiv idad equi vale a probar que para cua lqui e r valor de las
variables bina ri as.r, y. y:,.r' (y +::: ) tiene el mismo valor que (x ' y ) + t.r · :). La Tabla
3.3 lo demues tra. Oc forma s imilar. la le y d istributi va de + con respec to a . se
demuestra ele igual forma, C0 l11 0 se ve e n la Tabla 3 .4.

TABLA 3.3 Prueba de la distributividad del operador

x y z y+z x(y+ z) xy xz (xy) + (xz)

O O O O O O O O
O O I I O O O O
O I O I O O O O
O I I I O O O O
O O O O O O O
O I I O I I
1 O I 1 O 1
I

TABLA 3.4

x y z yz x + (yz) x +y x+z (x+ y)(x+ z)

O O O O O O O O
O O I O O O 1 O
O I O O O I O O
O I I I I
O O O I
O I O 1
1 O O 1
1 1 1
76 Principios de diseño di gi tal

Obsérvese que en el álgebra booleana bivaluada. las demostraciones se hacen


a menudo, como aquí, con tablas que demuestran la validez para cada va lor posi-
ble de las variables.

Axioma S. O y I so n complementos e l uno del otro. ya que O + O' = O + I = I Y


I + l' = I + O = 1; más aún, O . O' = O . I = O Y I . l ' = I . O = O.
Axioma 6. La card inalidad del ax io ma se satisface, ya qu e este álgebra booleana biva-
*
luada ti ene dos elementos distintos. I y O. con I O.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
TABLA 3.5 Operador
NOT

x y'

O I
I O

Hablando en general. este álgebra boo leana se establece dentro de un conjun-


to de dos elementos. I y O. y dos operadores binari os. ANO y ORo Sin embargo,
como el Axioma 5. establece un operador complemento. NOT (mostrado en la
Tabla 3.5), este álgebra booleana bivaluada se detine en términos de tres opera-
dores : ANO, OR Y NOT. Esta definición es cómoda ya que estos tres operadores
corresponden claramente a las puertas ANO, OR Y NOT que más frecu entemen-
te se usan en diseño lógico. Como mencionamos anteriormente. los ingenieros de
diseño denominan tambi én a este álgebra booleana biva luada álgebra de con-
mutación . Por brevedad, dejaremos de usar el adjetivo bivaluada en el resto del
libro, y nos referiremos a este álgebra sencillamente como álgebra booleana.

3.3. TEOREMAS BÁSICOS DEL ÁLGEBRA BOOLEANA


Además de los axiomas dados en la definici ón del álgebra booleana. también se
pueden deri var leyes adicionales. denominadas teoremas del álgebra booleana.
Estos teoremas son espec ialmente útil es cuando se rea li zan manipulaci ones alge-
braicas con expresiones booleanas en el proceso de optimi zación de un di seño
lógico. En la Tabla 3.6 aparecen seis teoremas básicos del álgebra booleana. En
esta tabla se ha simplificado la notación omitiendo el operador ANO siempre que
no lleve a confusión. Como los axiomas, estos teoremas se han li stado por pare-
jas, indicando que se pueden obtener unos a partir de otros mediante el principio
de dualidad .
Como mencionamos antes. los ax iomas se enuncian y no neces itan probarse.
Sin embargo, los teoremas hay que demostrarlos. ya sea a partir de los axiomas
o de otros teoremas ya demostrados. En otras palabras. hay que justificar cada
paso de la demostraci ón con la apli cación de un ax ioma o de otro teorema. Como
ejemplo. demostraremos los Teoremas I (a) y l (b).
Álgebra booleana y diseño lógico 77

TABLA 3.6 Teoremas básicos de álgebra booleana

Teorema J (a) x+x = x


(idempotencia) (b) .lA = x
Teorema 2 (a) x+l=l
(b) x · O= O
Teorema 3 <a) yx + x = x
(absorción) (b) (y + x)x = x
Teorema 4 (x)' = x
(involución)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Teorema 5 (a) (x + y) + z = x + (y + z)
(asocialividad) (b) x(yz) = (xy)z
Teorema 6 (a) (x + y)' = xi
(ley de De Margan) (b) (.ty)' = .r' + y'

TEOREMA 1(a) (Idempotencia) x + x = x


DEMOSTRACiÓN:
.r + x = (x + x) . por la identidad [Axioma 2(b)]
= (x + xlix + x') por el complemento [Axioma 5(a) [
=x+xx' por la propiedad distributiva [Axioma 4(b)]
=x+O por la identidad rAxioma 5(b)]
=x por el complemento [Axioma 2(a)]

El Teorema 1(h) dua l se puede obtener repitiendo la demostración del


Teorema 1(a). intercambiando + por ',0 por 1 y (a) por (b) en cada línea de la
demostración . Para ilustrar la dualidad, mostramos a continuación la demostra-
ción completa de l Teorema 1(b).

TEOREMA 1(b) (Idempotencia) x . x = x .


DEMOSTRACiÓN:
x-x=x.:r +1 por la identidad [Axioma 2(a)]
=xx+ xx' por el complemento [Axioma 5(b)]
= xix + x') por la propiedad distributiva [Axioma 4(a)]
=x· J por la identidad [Axioma 5(a)]
=x por el complemento [Axioma 2(b)]

Las demostraciones del resto de los teoremas de la Tabla 3.6 se proponen


como ejercicios al final del capítulo.
Como el álgebra booleana bivaluada tiene sólo dos elementos, podemos pro-
bar también la validez de estos teoremas usando tablas de verdad. Para hacer esto.
se construye una tabla de verdad para cada lado de la ec uación que representa el
teorema. Luego, se comprueban ambos miembros de la ecuación para ver si dan
resultados iguales para todas las posibles combinaciones de valores de las varia-
78 Principios de diseño digital

bIes. Por ejemplo. en la Tabla 3.7 se demuestra el primer teorema de De Morgan:


(x + y)' = xy'. En la base de esta tabla de verdad podemos ver que las columnas
encabezadas por (x + y)' y x'y' dan resultados idénticos para todas las combina-
ciones de valores de x e y. Entonces. ahora podemos afirmar que el teorema es
cierto.
Los axiomas de Huntington dados en la Sección 3.2 y los teoremas básicos
descritos anteriormente se listan generalmente por parejas. Uno de cada pareja de
axiomas se puede obtener a partir del otro usando una propiedad importante del
álgebra booleana denominada principio de dualidad . Este principio establ ece

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
que cualquier igualdad algebraica derivada de estos axiomas será válida siempre
que los operadores OR y AND. Y los elementos identidad O y l. se hayan inter-
cambiado. En otras palabras. el dual de cualquier igualdad al gebraica se puede
obtener cambiando cada OR por AND. cada AND por OR ocada I por O y cada O
por l.

TA BLA 3.7 Demostración del primer teorema de De


Morgan

~ x y x+y (x + y). x· y' x'y'

O O O l l l I
O I I O I O O
I O I O O I O
I I I O O O O

El principio de dualidad es muy útil ya que podemos usarlo para probar cual-
quier declaración del álgebra booleana cuya dual sabemos que es cierta. Por ejem-
plo. la demostración completa del Teorema I(b) que presentamos antes procede
de aplicar el principio de dualidad al Teorema I (a). Más aún . podemos usar el
principio de dualidad para probar que cada expresión booleana y su dual con las
variables complementadas son complementarias una de otra. Más concretamente.
si E(x l • x 2 • ..•• x,,) es una expresión booleana de n variables, y E,¡(x x 2• . •• ".r,,) es
J

su expresión dual . entonces


(3. 1)
Usando esta propiedad del álgebra booleana. podemos generali zar la ley de De
Morgan dada en el Teorema 6 a más de dos variables de la siguiente forma:
(XI + x2 + o •• + x,l = x ,x'2", x'" (3 .2)
(X[I x2 , ,." x,J =x' , + X ' 2 + 0'_ + x'" (3.3)
Álgebra booleana y diseño lógico 79

3.4. FUNCIONES BOOLEANAS


En general las funciones se pueden definir como expresiones algebraicas forma-
das por variables, operadores, paréntesis, y el signo igual. Más concretamente, las
expresiones booleanas se forman a partir de variables y los operadores boolea-
nos ANO, OR Y NOT.
Cuando calculamos los valores de las expresiones booleanas, tenemos que
seguir un orden de cálculo: a saber, (1) paréntesis, (2) NOT, (3 ) ANO, Y (4) ORo
En otras palabras, primero hay que evaluar la expresión entre paréntesis, y si no

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
hay paréntesi s, NOT se evalúa antes que AND, y AND antes que ORo Las varia-
bles binarias de estas expresiones pueden tomar sólo dos valores , O y l. Entonces,
para un valor dado de las variables, el valor de una función puede ser O ó l.
Consideremos , por ejemplo, la función booleana

F¡ = xy + xy'z + x'yz (3.4)

Esta función es igual a l si x = I e y = 1, ó si x = 1, Y = O Y z = 1, ó si x = O,


Y = 1, Y z = I ; sino, F I = O.
La expresión booleana definida por FI se puede caracterizar por tener un tér-
mino OR y tres términos ANO. El primer término ANO contiene dos literales,
mientras que el segundo y el tercero tienen tres literales cada uno, donde un lite-
ral indica una variable o su complemento. El número de términos y literales se
usa normalmente para medir la complejidad de las expresiones y frecuentemente
para medir el coste de su implementación.
El ejemplo anterior muestra cómo definir una función booleana con una
expresión algebraica. Sin embargo, cualquier función booleana se puede definir
también con una tabla de verdad, que lista el valor de la función para cada com-
binación de los valores de sus variables. Por ejemplo, en la Tabla 3.8 se definen
dos funciones booleanas de tres variables . Como evidencia la tabla, hay ocho for-
mas distintas de asignar los valores O o 1 a las tres variables. Las columnas rotu-
ladas con FI y F 1' contienen el valor de la función para todas las posibles combi-
naciones de los valores de las variables. Entonces, a partir de esta tabla vemos que
FI es igual a 1 para cuatro combinaciones de los valores de las variables:

(a) x = O, Y = 1, z = l',
(b) x= 1, .y =O , z = 1,.
(e) x= 1, y= 1, z = O;
(d) x= l , y = l , z = 1,.
Por otra parte, para el resto de las combinaciones de los valores de las varia-
bles, FI es igual a O.
Como regla general, la tabla de verdad de cualquier función booleana de n
variables tiene 2" filas , que representan cada combinación posible de los valores
de las variables, de forma que el valor indicado en la columna función de cada fila
es el valor de la función para esa combinación particular de valores de las varia-
bles. Obsérvese que las filas de cualquier tabla se puede numerar de O a 2" - 1,
80 Principios de diseño di gital

TABLA 3.8 Tabla de verdad de F, = xy + xy'z + xyz y su


complemento F', = (x' + y')(x' + y + z')(x + y' + z')

VALORES DE LAS VALORES DE LA


VARIABLES FUNCiÓN
NÚMERO
DE FILA x y z F, F'1

O O O O O
I O O I O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
2 O I O O I
3 O I I I O
4 J O O O I
5 O J O
6 I O O
7 J O

correspondiendo a los números decimales representados por los valores binarios


de las variables .

3.4.1. Complemento de una función

El complemento de cualquier función Fes F , y su valor se puede obtener inter-


cambiando los ceros por unos y los unos por ceros en el valor de F. Para deter-
minar la expresión algebraica del complemento de una func ión. aplicamos la
forma generalizada del teorema de De Morgan dado por las Ecuac iones (3.2) y
(3 .3) tantas veces como sea necesario. Por ejemplo, la expresión algebraica de F' 1
se obtiene a partir de la expresión de F¡ como sigue:

F' ¡ = (xy + xy' z + x'yz)' por la definición de F


= (..ty )'(.>y'z)'(x'yz )' por el teorema de De Morgan
= (x' + y' )(x ' + y + l )(x + y' + : ') por el teorema de De Morgan

En este ejemplo vemos que en la expresión final de F' l ' se han intercambiado
todos los AND y OR, todas la variables no complementadas sc han complemen-
tado y todas las variables complementadas se han descomplementado .
Una fonna más senci lla de obtener el complemento de una función sería usar
una dual con variables complementadas como se especificaba en la Ecuación
(3.1). Entonces, el complemento de una expresión se puede obtener también sen-
cillamente intercambiando los operadores AND y OR Y complementando cada
literal, ya se haya definido antes como una variable no complementada o com-
plementada. Entonces, la expresión de F' ¡ obtenida directamente de la expresión
de F¡ dada en la Ecuación (3.4) es:
Álgebra booleana y diseño lógico 81

F' I = (xy + xy' z + x'yz)'


= (x' + y')(x' + y + z')(x + v' + z') (3 .5)

3.4.2. Manipulaciones algebraicas

Además de las expresiones algebraicas descritas antes, una función booleana se


puede representar gráficamente conectando operadores ANO, OR Y NOT, como
especifica la expresión algebraica que se ha usado para definir la función. Por

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ejemplo, la función F I, que se definió con la Ecuación (3.1 ), podría representarse
con cinco operadores ANO. dos OR y dos NOT, como se muestra en la Figura
3.1 (a) . Sin embargo, F' l' que se definió en la Ecuación (3 .5 ), necesitaría cinco
operadores OR, dos ANO, y tres NOT, como muestra la Figura 3.I (b). FI también
se podría obtener a pal1ir de F'I usando un operador NOT adicional como se ve
en la Figura 3.I (b). Obsérvese que esta segunda implementación de F requiere
dos operadores NOT más.
Este ejemplo demuestra que se puede especificar la misma función con dos o
más formas de expresiones algebraicas diferentes. Sin embargo, antes de poder
usar una expresión en lugar de la otra, tenemos que probar que estas dos expre-
siones algebraicas definen la misma función , lo que podría hacerse tanto compa-
rando las tablas de verdad como con una manipulación algebraica. En el primer
método, las dos expresiones algebraicas de 11 vaI·iables binarias se dice que son
iguales si y sólo si tienen los mismos valores para las 2" combinaciones posibles
de las 11 variables. En el segundo método, hay que transformar una de las dos
expresiones, usando los axiomas y teoremas del álgebra booleana hasta que
ambas expresiones sean idénticas. Consideremos. por ejemplo, dos de las expre-
siones algebraicas que definen la función F I:
FI = xy + xy'Z + X'Yl
(3 .6)
FI = Ay + xz + y:
Para demostrar que estas dos expresiones son iguales, podemos red ucir la pri-
mera expres ión a la segunda de la siguiente forma:
xy + xy'z + X'Y l =xy + xyz + xy'z + x'yz por absorción
= xy + x(y + y')z + x'yz por la propiedad distributiva
=xy +xl z +x'yz por el complemento
= xy + xz + x'yz por la identidad
= xy + xvz + xz + .\J yz por absorción
= xy + x: + (x + x')yz por la propiedad distributiva
=xy +xz + 1)': por el complemento
= AY + x z + yz por la identidad
Una vez que hemos probado la equivalencia de las dos expresiones, podemos
usar la más sencilla, que requiere menos operadores. A partir de la representación
gráfica o simplemente contando los operadores, podemos ver fácilmente que
82 Principios de diseño digital

xy + xz + yz necesita sólo tres operadores ANO y dos OR en vez de los cinco ope-
radores ANO, dos OR, y dos NOT que requería la expresión xy + xy'z + x'-"z.
Entonces, como la segunda expresión requiere menos operadores, nos induce a
especular que también requerirá menos hardware cuando se implemente como cir-
cuito lógico.

)' x ,.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I-+-+-...J
o ¡
+

+ l-~+ F

F r
(a) Expres ión AND-OR (b) E x pl'~ s ¡ ú n OR-AND

FIGURA 3.1 Representación gráfica de dos expresiones de F,.

Como se puede deducir del ejemplo, es una regla general que el número de ope-
radores ANO y OR en una expresión sea igual al número de literales menos l. La
primera expresión, por ejemplo, tiene ocho literales y necesita cinco operadores
ANO y dos OR, lo que hace un total de siete; la segunda expresión. que tiene sólo
seis literales, necesita tres operadores ANO y dos OR, lo que hace IIn total de ci nco.
Entonces, sabemos que una reducción en el número de literales se:'{¡ equi valente a
una reducción en el número de operadores, así que se puede disminr.i : el número de
operadores ANO y OR reduciendo el número de literales en una expresión.
Como muestra el ejemplo visto, el número de operadores de ur a funci ón boo-
leana se puede minimizar generalmente por medio de manipulación algebraica.
Aunque desgraciadamente no hemos establecido un procedimiento a seguir que
garantice un número mínimo de operadores o literales en la expres ión. Como
resultado, los diseñadores usualmente utilizan una técnica de tanteo (ensayo-
error), empleando los di stintos axiomas, los teoremas básicos y cualquier otra
regla de manipulación que desarrollan a partir de su experi enc ia. En las secciones
siguientes, introduciremos una forma única para especificar funciones booleanas
y mostraremos cómo usarlas como punto de inicio para encontrar expresiones
funcionales más sencillas.
Álgebra booleana y diseño lógico 83

3.5. FORMAS CANÓNICAS


En la Sección 3.4 hemos mostrado cómo se podían definir funciones bool eanas
con tablas de ve rdad. En esta sección mostraremos cómo se pueden convertir estas
tablas en expresiones algebrai cas . Como el lector sabe, para una fun ción de 11
vari ables, cada fila de la tabla de verdad representa un a asignación concreta de
unos valores binarios a estas 11 variabl es. Podemos definir un a función booleana.
usualmente denominada minterm , que es igual a 1 en una sola fi la de su tabla de
verdad y O en el resto de las fi las . Como hay 2" fi las diferentes en la tabla de ver-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
dad , hay también 2" mintenns para cada 11 variables. Cada uno de estos mintenns,
denotado mi' se puede expresar como producto , o término ANO. de n literales en
los que cada variable se compl ementa si el valor asignado es O, y no se comple-
menta si el valor es l . Más fonn ahnente, esto signi fica que cada minterm /1/ i se
puede definir como sigue.
Sea i = b".I ... bo un número binario entre O y 2" - 1, que represe nta una asig-
nación de valores binarios a las 11 variables binarias"r. ta les que x . = b . para todo i
donde O 5, j 5, 11 - 1. En este caso un mintenn de 11 ~ariables x"~I' X,,~2' ... , x O' s~
puede representar como:
111¡(.\"11_ 11 . 00' xo) = ).'11 - 1 . .. Yo
donde para todo k tal que O 5, J.: 5, 11 - 1,

.r¡ si b¡ =I
, -{
.v -
..\ ¡
"
si bk =O

TABLA 3.9 Minterms para tres variables binarias

x y z MINTERMS NOTACiÓN

O O O x'y'z' mo
O () I x'y'z m,
O I O x'yz 111 2
O I I x'yz 1113
O O xy'z' nl4
O I xy'z 1115
O xyz "'6
I xyz 1117

En la Tabla 3.9 mostramos todos los mintenn s de tres variables bi nari as . .Y, y, :.
En general , la expresión algebraica única para cualquier función bool eana se
puede obtener a paltir de su tabla de verdad usando un operador OR para combi-
nar todos los minterms para los que la función vale l. Estos minterms , se deno-
minan minterms 1, Y los otros minterms se denominan minterms O. Por ejemplo,
84 Principios de di seño di git:_i1

la expresión de la función F I de la Tabla 3.8 se pouría obtener aplieanuo la fun -


ción OR a todm los mintenns 1:
F¡ = /JI J + 111 5 + /JI
6
+ /JI 7 = x'y::: + xy':: + xy:::' +.\"y:: 1.'-7)

TABLA 3.8 Tab la de verdad de F, = xy + xy'z + x 'y z y su


complemento F', = (x ' + y')( x ' + y + z ')(x + y ' + z ' )

VALORES DE LAS VALORES DE LA

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
VARIABLES FUNCiÓN
NÚMERO
'DE FILA x y z F, F'1

() () O () 11 1
1 (1 () 1 O 1
2 () 1 () f) 1
3 O 1 1 I U
~ 1 O () O 1
5 1 O 1 1 O
6 O I f)
7 1 I 1)

De forma similar. pode mos obtener el complemento de FI aplicanuo la fun-


ción OR a todos los minterms O:
F' I = '" n + 111 I + 111 .2 + /JI -1- = -r',,'
. ,.-' + .r',,'-
. , . + . r',,-'
. '. + . \"\.
• '_1
. (3.Rl
Estos ejemplos ilustran una propi edau importante del ál gebra booleana:
Cualquier función booleana se puede expresar como suma de sus min -
te rms 1.
Con la aplicación de la función OR nos referimos aquí. a una suma debiuo a
s u parecido con la suma.
A veces. es mús conveniente describir la fo rma de la s uma de mintenm¡ con
la siguiente notación corta:

F(lista de variables ) = L (lista de índices de mintcnn s 1)

Con esta notación, el símbolo de sumatoria L se refiere a la aplicación ue OR


a los mintenns cuyos índices se incluyen entre los paréntesis. Las variahles lista-
das entre los paréntesis que acompañan a la F son las mi smas variahl es prcscnta-
ua ~ cn el mismo o rden en que estaban cuando el minte rm se expre saban en tér-
minos ANO. Por tanto. la forma abre viada de FI' por ejemplo, es FILr. .". ~ ) =
L (3. 5. 6 . 7 ) Y para F' I es F'I (X, y, ~ ) = L (O. 1. 2. -+ ).
Cualquier expresión booleana se puede transformar en suma de mintcnns
primero expandiendo la expre sión dada en suma de términos ANO. Luego . hay
que expandir cada término que no contenga toda s la variable s. aplicanuo la fun -
c ión ANO al té rmino con expres ión COI11O.\ + x'. donde .\ es una de las variahks
Álge bra booleana y diseño lógico 85

que faltan . Demostraremos este procedimiento de ex pansión en el siguiente


ejemplo.

EJEMPLO 3.1 Expansión de una suma de minterms


PROBLEMA
Exprese la fUIl ci6n boolean F = x + y: como suma de minterm s.

SOLUCiÓN

Esta fun ción tiene tre ~ vari ables: x, y, : . Al prim er términ o. x, le faltan dos variabl es. mien-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Lrn s que al segundo término. y:::. le falta una. Entonces. necesitamos expandir el primer tér-
mino apli ca ndo la operación AND con (y + /)(::; + ;::'). y ex pand ir el seg undo co n (x + Xl).
En otras palabras.
r .'
F=x + y:.
; xl\' + v') (: + : ') + (x + x')y:
= xy: + xy'::; + xy.::' + .\)1';:' + xy::: + x /y::
Después de el iminar los duplicados. de ac uerd o con el Teorema 1, Y reo rdenando los
min tenn s en orden ascendente. obtenemos fin almente
F ;: .(v.:: + xy':::' + xy'::: + xy:::' + .\)':
= I1IJ + 1114 + 1115 + 1116 + 1117
; 1:(3. 4, 5. 6. 7)

Hay también un procedimi ento alternativo para obtener una ex preslOn de


suma de minterms, que requi ere convertir la expresión algebraica dada en una
tabla de verdad y luego captar los mintenns de la tabla de verdad. Este procedi -
miento se muestra en el ejempl o siguiente.

EJEMPLO 3.2 Conversión a una suma de mintenns


PROBLEMA
Convertir la funció n booleana F = x + y.:: en suma de minlerms usando una tabla de verdad.
SOLUCiÓN
La tab la de verdad mostrada en la Tabla 3. 10 se deriva direc tamente de la ex presió n alge-
bruica. teni end o en cuenta qu e F ::: I para todas las combinac io nes de los valores de las
variables para las qu e x ; I Ó xy ; 11 . A partir de la tabla de ve rd ad es fác il ide nti ficar los
cinco milltenns que hace n que F ::: I : 111 3' 11/ 4, 111 5 , 11/ 6 , Y 1117' Entonces. como antes. la sum a
de minterms será

Si a un término AND de 11 literales se le denomina minterm, de forma similar.


a un término OR de 11 literales se le denomina maxterm . Igual que la definici ón
de minterm, un maxtenn se puede definir como una funci ón booleana que vale O
en una sola fila si su tabla de verdad vale O y en el resto de las fil as l . Cada max-
86 Principios de diseño digital

term, M;, se puede expresar como una suma, o término OR, de n literales en la que
cada variable no estaría complementada si el valor asignado es 0, y estaría com-
plementada si su valor es 1. En la Tabla 3.11 hay una lista de ocho maxterms para
tres variables, junto con su notación simbólica. Para cualquier número de varia-
bles, los maxterms se pueden determinar de manera similar. Obsérvese que cada
maxterm es el complemento de su correspondiente minterm, y viceversa, así que
11'1/:::: Mi y M¡' = nl¡

Obsérvese también que si hacemos el complemento de la expresión F I dada

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
en la Ecuación (3.7), obtenemos la siguiente función FI':
(F I )' = (x'yz + xy'z + xy;:' + xyz)'
= (x + y' + z')(x' + y + z')(x' + y' + z)(x' + y' + z')
= M3M SM 6M 7
De forma similar, complementando la expresión dada en la Ecuación (3.8),
obtenemos la siguiente función F I :
FI = (F'I)'
:::: (x'y'z' + x'y'z + x'yz' + xyzT
= (x + y + z)(x + y + z')(x + y' + z)(x' + v' + z)
= MoMIM2M 4

TABLA 3.10 Tabla de verdad de TABLA 3.11 Maxterms para tres variables binarias
F ; x+ yz

Considerados conjuntamente, estos ejemplos ilustran que la expresión única


algebraica de cualquier función booleana se puede obtener a partir de su tabla de
verdad usando un operador ANO para combinar todos los maxterms que hacen
que la función valga O. Estos maxterms se denominan maxterms O y son los
opuestos a los maxterms 1, para los que la función vale l. Teniendo esto en cuen-
ta, podemos expresar la segunda propiedad del álgebra booleana, como sigue:
Cualquier función booleana se puede expresar como producto de sus
maxterms O.
Álg~bra booleana y diseño lógico 87

La aplicación de AND a los maxterms se denomina producto por su parecido


a la multiplicación. Sin embargo, a menudo es más conveniente expresar el pro-
ducto de maxterms de la siguiente forma:
F(lista de variables) = TI (lista de índices de los maxterms O)
El símbolo del producto, n, denota la aplicación de la operación AND a los
maxterm s cuyos índices están contenidos entre los paréntes is. Cualquier fun-
ción.booleana que se exprese como suma de mintenns o como producto de max-
tenns se di ce que está en forma canónica. A partir de las definiciones de ambas

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
formas canónicas, podemos dar un procedimiento general que sería como sigue:
Para pasar de una forma canónica a otra, se intercambian los símbolos L
y n, y se listan los números que estaban excluidos de la forma original.
Los ténninos que faltan se pueden encontrar fácilmente, ya que cada función boo-
leana de 11 variables tendrá 2" mintenns y 2" maxtenns, numerados del O al 2" - l.
Como regla, cualquier expresión booleana de n variables binarias se puede
convertir en un producto de maxtenns. Para ello, primero hay que convertir la
expresión booleana en una forma que use ténninos OR, lo que se hace usando la
ley di stributiva, x + yz = (x + y)(x + z) . En este momento, cualquier término OR
al que le falte una variable, como x, se expande aplicando la función OR con xx'.
por ejemplo. Este procedimiento se clarifica con el siguiente ejemplo.

EJEMPLO 3.3 Expansión a un producto de maxtenns


PROBLEMA

Obtener en forma de prod ucto de maxtenns la función booleana F = x'y' + x:.


SOLUCIÓN
Primero, necesitamos conveltir la función en productos de términos OR usando la ley dis-
tributiva así:
F ;;;; X'y' + xz
= (x'y' + x)(x'v' + z)
= (x' + xlV + x)(x' + z)V + :)
= (x + y')(x' + ~)()" + z)
En este momento, a cada tém'¡no OR de la expresión le falta una variable, así que aña-
dimos Z~' al primer término, e.vi y xx' al segundo y al tercero, respecti vamente. Entonces.
cada térm ino se expande en dos maxterms:
+ y' + zz' = (x + y' + z)(x + y' + z')
x + y' ;;;; x
.r' + = x' + Z + yi = (x' + y + ¿)(x' + y' + z)
Z
y' + z = y' + z + XXi = (x + y' + z)(x' + .v' + z)
Finalmente. combinando todos esos términos y eliminando aquellos que aparecen más
de una vez, obtenemos la ex presión siguiente :
F = (x + y' + z)(x + y' + z')(x' + y + z)(x' + y' + :)
= M2M3M4M6 = f1 (2, 3, 4, 6)
88 Principios de d iseño dig ital

En el Ejemp lo 3 .3 hemos convertido la expres ión algeb raica dada en un


producto de términos OR an tes de expandirlo en produc to de maxterms. De
forma alternat iva, podemos generar primero la tab la de verdad y luego deri-
var las fo rmas ca nónicas a partir de ell a . El sigu ien te ejemp lo ilustra es te
enfoque.

EJEMPLO 3.4 Conversión a un producto de maxterms

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
PROBLEMA

Transformar la función booleana


F::; ,(v'+x.::
a la forma de producto de maxterms.
SOLUCiÓN
Primero, obtenemos la tabla de verdad a partir de la ex presión algebraica. C0l110 mu es-
tra la Tabla 3. 12. Obsérvese que el valor de la func ió n F = 1 aparece en todas las filas
en las que las variables xy = 00 Ó x.:: = I l. Por tanto, los min termS para la fu nción de la
Tabla 3. 12 son. 111 0, 111 l' 111 5 Y In ]' Entonces, la func ión definida como suma de minterms
es
F(x, \". ~) = DO. l . 5. 7)
Como tiene que haber un total de ocho min terms en una función de tres varjahles, pode-
mos determinar ahora que los mintcnns q ue faltan SOI1 111"2' JJl 3 , 111 4 , Y 111 6" Por consiguiente.
la función expresada en forma de prod ucto de maxterms sería
F (.\". y. :) = fI Cl . 3. 4, 6)

Obsérvese que se obtiene la misma respues ta que en el Ejemplo 3.3 en e l qu e se usó la


expansión de términos.

TABLA 3. 12 Tabla de verdad de


F ;:;x'y'+ xz

x y z F

O O O I
O O 1 I
O 1 O O
O 1 1 O
1 O O O
O 1 1
1 O O
1 1 1
Álgebra booleana y diseño lógico 89

3.6. FORMAS NORMALIZADAS


Las dos formas canónicas descritas en la Sección 3.5 proporcionan expresiones
únicas para cualquier función booleana definida por su tabla de verdad. Sin
embargo, estas formas son raramente las que tienen un menor número de opera-
dores, ya que, por definición, cada minterm o maxtenn requiere Il - I operadores
ANO u ORo
Sin embargo. como alternativa, podemos definir también las funciones boo-
leunas de forma estándar, en las que cada término puede requerir menos de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
/1 - I operaciones. Hay dos tipos de formas estándar, la suma de productos y el
producto de sumas. Como antes. la suma de productos se podría definir como
una expresión booleana que contiene términos ANO, denominados términos pro-
ducto o implican tes, incluyendo uno o más literales. La suma denota la aplica-
ción dcl operador OR a esos términos. Un ejemplo de una función expresada
como suma de productos es
F I = xy + x'yz + xy'z
Obsérvese que esta expresión tiene tres términos producto, conteniendo cada
uno de ellos dos o tres litera les.
Por otra parle, una expresión de. producto de sumas es una expresión ANO
que contiene términos OR, denominados términos suma o implicados, donde el
producto denota la aplicación del operador ANO a esos términos. Cada término
de la suma puede tcncr cualquier número de literales , y el producto puede tener
cualquier número de términos suma. Un eje mplo de una función expresada como
producto de sumas es
F' I = (.\"' + y') . (x + y' + z') . (..r' + y + z')
Obsérvese que la expresión tiene tres términos suma con dos o tres literales
cada uno.
Estas formas de su ma de productos y productos de sumas normalizadas no son
únicas. en el sentido de que puede haber varias sumas de productos y productos
de sumas distintas para una función dada. Sin embargo, aunque estas fonnas nor-
malizadas no son únicas, son útiles porque contienen menos operadores que las
formas canónicas. Estas formas nonnalizadas se obtienen de las formas canlÍni-
caso combi nando los términos que difieren en un literal, usando los axiomas del
álgebra booleana.
Por ejemplo, la expresión xyz + XK' podría reducirse a xy de la siguiente
forma:

.\:V~ + xyz' = xy(z + ~') por la distributiva [Axioma 4(a)]


= xy· I por el complemento IAxioma 5(a) I
= xy por la identidad [Axioma 2(a)]
De forma similar, la ex presión xyz + xyz' + xy' z + xy'z' se podría reducir a x
aplicando el procedimiento anterior dos veces:
90 Principios de diseño digital

-'yz + -,yz' + xy'z + .\)"z' = .ry(z + z') + .\)"(2 + z')


= .t'"y + xy'
= x(y + y')
=x
También podemos obtener una fonna normalizada con pocos operadores apli-
cando este procedimiento varias veces a distintos grupos de términos, como mani-
fiesta el siguiente ejemplo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
EJEMPLO 3.5 Fonna normalizada
PROBLEMA
Obtener una fonna nomlalizada con un número reducido de operadores para la función
Fl = XYZ + xyz' + xy'z + x'yz.
SOLUCIÓN

Como puede ver el lector, el ténnino .x)'z se puede combinar con los témlinos segundo. ter-
cero y cuarto de esta expresión. Por tanto lo podemos replicar dos veces antes de combi-
narlo con otros términos:
F I = .xyz + xy¡' + xy'z + x'yz
= .9'2 + xyz' + .\)'z + .\)" z + .\)': +x'y:
= .\)'(Z + Z') + x(y + y')Z + (x + x')yz
= -'y + xz + yz

En general, podemos combinar ténninos y eliminar literales en fonna norma-


lizada hasta que no se puedan reducir más. En este caso, cada ténnino producto
en forma de suma de productos se denomina implicante primo y un término suma
en forma de producto de sumas, implicado primo.
Cada implicante primo representa uno o más minterms l . Obsérvese que cada
minterm l puede estar incluido en varios implicantes primos. Si un minterm 1está
incluido en un solo implicante primo denominamos a este impUcante, implican-
te primo esencial ya que no se puede omitir de la fonna normalizada sin que cam-
bie la función dada. De forma sim ilar, podemos definir implicados primos esen-
ciales para la forma normaUzada de producto de sumas. En el Capítulo 4 tratare-
mos de procedimientos sistemáticos para obtener una forma normalizada forma-
da por implicantes primos.
A pesar de que estas fomIas nonnalizadas requieran menos operadores que las
fonnas canónicas, estas expresiones todavía puede que no contengan un número de
operadores del todo mínimo. Por otra parte, factorizando los literales, podemos expre-
sar una función booleana dada de fonna no nonnaUzada que a veces puede requerir
incluso menos operadores. Por ejemplo. el número de operadores de la expresión
.\)' + .\)"z + .\)"w se puede reducir más aún si factorizamos la variable x y luego la y':
xy + xy'z + xy'w = x(y + y'z + y' w)
= x(y + y'(z + w»
Álgebra booleana y diseño lógico 91

Como puede verse, esta forma no es ni una suma de productos ni un produc-


to de sumas, a pesar de que se puede pasar a una forma normalizada usando la ley
di stributiva para quitar los paréntesis.

EJEMPLO 3,6 Formas no normalizadas


PROBLEMA

Reducir el número de operadores de la forma normalizada de la función F, = xy + Xl + yz

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
SOLUCIÓN

Hay tres fomlas no normalizadas de la función F , que requieran menos operadores: cada
una de ellas requiere dos AND y dos OR, en comparación con las tres AND y las dos OR
de la forma nonnali zHda.
F, = -\)' + xz + yz
= x)' + (x + y)z
=x(v+ z)+Y<
=xz + y(x + z)

Expresión algebraica

...
Expandir u una tabla
de verdad

~ Tabla de verdad
Generar una forma canónica

¡ Forma canóni ca

Encontrar subcubos
funcionales

i Forma nonnalizada

Fac(orizar subcxpresiones

Forma no normalizada

FIGURA 3.2 Estrategia para minimizar operadores en expresiones booleanas.

Como hemos mostrado en esta sección, podemos usar varias estrategias para
reducir el número de operadores de la expresión booleana, y todos ellos se pue-
den combinar constituyendo la estrategia de diseño mostrada en la Figura 3.2.
92 Principios de diseño digital

Siguiendo esta estralegia, primero convertimos cada ex presión algebraica en una


tabla de verdad. Segundo, generamos una forma canónica. Luego reducimos el
número de operadores creando subcubos y convirtiendo la forma canónica en una
forma normalizada. Finalmente, podríamos reducir este número aún m,ís factori-
zando todas las subexpresiones comunes y creando una forma no normalizada.

3.7. OTRAS OPERACIONES LÓGICAS

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Anteriormente, hemos tratado sólo con dos funciones booleanas de dos variables.
AND y ORo Sin embargo, como mostramos en la Sección 3.6, hay 2 2" funciones
booleanas para n variables binarias cualesquiera, lo que significa que habrá un
total de 16 funciones booleanas para dos variables. Puesto que las funciones AND
y OR son sólo dos de las 16 funciones booleanas posibles. en esta secc ión defini-
remos las otras 14 funcione s de dos variables.
En la Tabla 3.13 se dan las 16 funciones de dos variables binarias. .r e V. Cada
fila de esta tabla representa una función posible de estas dos variables. y los nom-
bres de estas funciones se dan en la primera columna de la tabla. Las tablas de ver-
dad de las 16 funciones se presentan en la tercera columna de la tabla . Como cada
una de estas funciones se puede expresar también algebraicamente, damos las
correspondientes expresiones booleanas en la cuarta columna de la tabla.
Obsérvese que cada función se ha denominado F¡, donde i es el equivalente deci-
mal que se puede obtener interpretando como números binarios los valores de la
función que aparecen en la tercera columna.
Como el lector sabe, cada una de estas funciones se. puede dar en forma nor-
malizada usando los operadores AND. OR Y NOT. Como no hay moti vos por los
que no podamos asignar un símbolo espec ial de operador a cada función, cada
función se puede representar también mediante el símbolo del operador que se
li sta en la segunda columna de la tabla. Sin embargo. como regla. con la excep-
ción del símbolo XOR, estos símbolos no los usan normalmente los di se ñadores.
Finalmente, la última columna contiene la descripción en español que explica
cada una de las 16 funciones.
Como puede deducirse a partir de los comentarios. las 16 funciones listadas
se pueden subdividir en tres categorías de acuerdo con el número de variables que
en ese momento influyan en el valor de la función :
1. Hay dos funciones que generan constantes: cero y 11110 . Para cada combi-
nación de los valores de las variables, la función cero dará O. mientras que
la funci ón UtlO dará l.
2, Hay cuatro funciones de una variable que indican operaciones de CO/ II-
plemento y transferencia. Concretamente. la función cOIII/J/elllellto pro-
ducirá el complemento de una de las variables binarias. La función trans-
feren cia, sin embargo, reproduce una de las variables binarias en la sali-
da, así que la variable atraviesa la lógica (o se transtiere a la salida) sin
cambiar su valor.
Á lgeb ra booleana y di ~eño lógico 93

TABLA 3.13 Expresiones booleanas de las 16 funciones de dos va ri ables

VALORES DE LA
SíMBOLO DEL FUNCiÓN PARA EXPRESiÓN
NOMBRE COMENTAR IO
OPERADOR x, y = ALGEBRAICA
00 01 10 11

Cero O O lJ U 1'0 = O Constante: binaria ()


AND .r. y () O O I FI =xy xey
Inhibi ción xlr O O I O F, = xy' x pero no y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Transfe renc ia () O I I F~ = .r r
Inhibi ción y/x O O O F~ = x/r y pero no .:r
Transfe renc ia () () I F" = Y r
XOR xEBy O I O F~ = xy' + x'y .r Ó y pero no ambas
OR x + \" O I I I F7 = x + y xóy
NOR x .l.) I O O O F ",, =(x+y)' OR no
Equivalencia xOy O O I Fl) = xy + x'y' x igual a y
Co mplemento y' O I O F IO= )"' y no
Impli cac ión xey O I I FI 1= x+y' si y, entonces x
Complemento .r' O O FI ~ = .r' x no
Impli cac ió n X =:J \' O I Fu = x' + y si x, ento nces .r
NAN O x ji· O 1'" = (xyl' ANO no
Uno I 1'" = I Constante binaria J

3. Hay 10 funcione s que definen ocho operadores binarios específic os:


AND. Inhibición. XOR. OR. NO R. Equi valencia, Implicación y NAND.
Oc estos ocho operadores binarios, Inhibición e Implica ción no se usan nunca
en diseI'io de computadoras. concretamente porque son difíciles de imple mentar
eomo componentes indi vidual es pero se pueden imp lementar fácilm ente usando
operadores AND u OR junto con un operador NOT en una de las entradas. Sin
embargo. como reg la general. los di señadores prefieren los operadores NO R y
NAN D a los operadores OR y AND . sencillamente porque NOR y NAND se pue-
den imp lementar con menos transistores .
Básicamente. la fun c i<Ín NO R es e l complemento de la funei<Ín Ol? : de hecho.
su nombre es un a abrev iac i6n de no-OR. De forma s imilar, NAND es el comple -
mento de AND. y su nombre una abreviación de no-AND. XOR. que e s la abre-
viación de exclus ive -OR. es similar a OR excepto que exclu ye el resultado I s icm-
pre que.r c .'" se an igu ales a l. El operador equi valencia produce una sal ida I siem-
pre que ambas variab les binarias tengan el mi smo va lor (es dec ir. c uando ambas
sean igua les a O ó al). Dadas estas propiedades. resulta obvio quc las fun c iones
XO R y eq ui valencia son compleme ntos la una de la otra. como puede verifi carse
comparando las tablas de ve rdad de F r, y F" dadas en la Tabla 3.13. Debido a esta
comp lcme ntariedad . la funei<Ín eq ui va lencia se suele denominar exc lusi ve-NO/?
o XNOR.
De las 16 funciones de fin idas e n la Tab la 3. 13. se puede ver que só lo 12 son
úni cas. ya que cuatro de cstas fun c iones están repetidas dos veces. Cero y UII O se
94 Principios de diseño digital

implementan de forma particularmente fácil, conectando las líneas de alimenta-


ción, y no requiere ningún circu ito. Dos de estas funciones . !I/hibición e
Implicación, son ambas conmutativas pero no asociativas, lo que es un inconve-
niente para usarlas en diseño lógico. Sin embargo, las otras ocho se pueden imple-
mentar fácilmente con puertas normalizadas y por consiguiente se usan frec uen-
temente en diseño lógico.

3.8. PUERTAS LÓGICAS DIGITALES

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En las secciones an teri ores se ha descrito cómo representar funciones booleanas
y cómo obtener expresiones para calcu lar valores de func iones. Para implemen-
tar una de estas expresiones booleanas, construimos una red lógica o circuito
lógico en el que se usan las variables de la expresión como entradas a la red
lógica, que contiene una o más puertas lógicas. Cada puerta lógica rea li za una
o más operaciones booleanas que hemos definido en secciones anteriores. La
colección de puertas lógicas que usamos para construir redes lógicas se deno-
mina bibljoteca de puertas, y las puertas de biblioteca se denominan puertas
normalizadas. Aunque cada operador booleano se puede implementar con una
puerta lógica e incluirse en la biblioteca de puertas, las bibliotecas de puertas
modernas rara vez incluyen más de una docena de puertas distintas para dismi-
nuir el costo del mantenimiento de la biblioteca y simplifi car el desarrollo de
herramientas CAD para diseño lógico. Antes de seleccionar qué operadores se
vao a incluir en la biblioteca de puertas, generalmente consideramos los
siguientes criteri os:
l. La frecuencia de su uso en diseños lógicos típicos, definida como su capa-
cidad para implementar una serie de funciones booleanas junto con otras
pueltas.
2. La ampliabilidad del operador a más de dos variables, lo que requiere que
sea conm utati vo y asociativo.
3. La sencillez de construcción definida por el número de transistores que se
necesitan para su construcción y el tiempo que se necesita para que el
cambio de la señal se propague a través de la puerta.
En base a este criterio, generalmente se seleccionan ocho operadores que se
van a utilizar en la implementación como puertas normalizadas. que son , los ope-
radores Complemel/to, Transferencia , AND, OR, NAND , NOR, XOR , Y XNOR.
Los diseñadores de lógica frecuentemente denominan al operador Complemento.
operador Inversor o NOT, y al operador Transferencia, Adaptador (driver) ya que
se usa para excitar grandes cargas y líneas de conexión largas.
En la Tabla 3.14, mostramos los símbolos gráficos y expresiones booleanas de
cada una de estas ocho puertas. Obsérvese que cada puerta tiene una o dos entra-
das binarias, designadas por x y/ó y, y una salida binaria, denominada F. Como el
lector puede ver, la Tabla 3.14 también muestra el costo de cada puerta en función
del número de transistores que se necesitarían para su construcción con tecnolo-
Álgebra booleana y di seño lógico 95

gía CMOS y el retardo normalizado de propagación de la seña l al atravesar una


puerta concreta.
Como la función de l inversor es complementar el valor lógico de sus entradas,
se coloca un pequeño círculo en la salida del símbolo gráfico para indicar esta
Complementación lógica. También se usa un triángulo como símbolo para indicar
un circ uito Adaptador, que implementa la función de Transferen cia replicando el
valor de entrada a la salida. En general, un Adaptador equivale a dos Inversores
conectados e n cascada, de forma que la salida de l primer Inversor sirva de e ntra-
da del segundo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Como mencionamos anteriormente, las puertas ANO y OR se usan para
implementar los operadores binarios ANO y OR, mientras que las puertas NANO
y NOR se usan para implementar las func iones complemento de ANO y OR o
Como puede verse, hay un pequeño círculo en cada una de estas sa lidas que indi-
ca su complemento . Entre los diseñadores de lógica, estas puertas NANO y NOR
se usan ampli amente y son más comunes que las puertas ANO y OR, sencilla-
mente porque su implementación requiere sólo cuatro transistores, en compara-
ción con las puertas ANO y OR q ue req ui eren seis transistores. Además, como
utilizan menos transistores , las pueltas NANO y OR son más rápidas que las
correspondientes pueltas ANO y ORo

TABLA 3.14 Biblioteca lógica básica

SfMBOLO EXPRESiÓN COSTE (NÚMERO RETARDO DE


NOMBRE GRÁFICO FUNCIONAL DE TRANSISTORES) PUERTA (ns)

Inversor X--{>o-F F;:: x' 2

Adaplador X-{>-F F=x 4 2

AND
: jJ-F F= X)' 6 2,4

OR :=f)--F F=x+ y 6 2,4

NAND
:---C>-F F= (.'y)' 4 lA

NOR
::=L>-F F= (x + y)' 4 1,4

XOR
;. ~D-F F= xEB y 14 4,2

XNOR
; ~D-F F=xGy 12 3,2
96 Principios de diseño digital

Como se indica en la Tabla 3. 14. el símbolo gráfico de la puerta XOR es casi


el mismo que el de la puerta ORo excepto que tiene una línea curva adicional en
la entrada. Obsérvese que la puerta XNOR es el complemento de la puerta XOR.
como indica el pequeño círculo en su línea de salida.
Cuando implementamos funciones booleanas con esta biblioteca de puertas
básica, normalmente intentamos encontrar la expresión booleana que sati sfará
mejor un conj unto dado de requisitos del diseño . Generalmente, estos requisitos
implican restricciones en el coste, lo que se puede traducir en términos de núme-
ro de transi stores. y/o retardo de la señal a través de la red lógica. que normal-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mente se especitica en nanosegundos (ns). Muy frecuentemente , nuestro principal
objetivo será encontrar el diseño menos caro. Debido a su naturaleza. estos dos
objeti vos tienden a estar en contlicto, ya que un diseño más rápido normalmente
evalúa subexpresiones en paralelo, lo que significa que requerirá más puertas que
un diseño con un costo menor en el que las expresiones se factor izan y ejecutan
en sene.
En el siguiente ejemplo, mostraremos varios de los distintos compromisos de
diseño en la realización de un sumador completo.

EJEMPLO 3.7 Diseño de un sumador completo


PROBLEMA
Diseñar un sumador completo basándose en las especifi caciones dadas en la Tabla 2.3. y
utili zando la biblioteca básica que se dio en la Tabla 3. 14. El principal objetivo es minimi-
zar el retardo de propagación de c ¡ a ci+ 1' mientras que el objetivo secundario es usar e l
menor nlllnero posible de transistores,
SOLUCIÓN
Primero obtenemos una expresión que contiene un número mínimo de operadores. L;.l
expresión para -', se puede reducir a dos puertas XOR:
s, = x'¡y'¡c¡ + x',y¡c'¡ + .:t.', y',c', + x, y¡cí
= (.e ¡y; + x,y')c',. + (x',.v', + .r¡y¡)c¡
= (x, Ei1 y¡)e',. + (X,. 0 -,,¡)e,
= (X,. EB ,vi)e', + (x, (El y;>'c.',
= (x; Ell .') Ell c;
Como vimos en el Ejemplo 3.5. la expresión de la funci ón de acarreo (',+1 podría redu-
cirse a x/Y¡ + c¡(x i + y¡), Sin embargo, si la pasamos a otra forma . podremos usar la subex-
presión x Ei1 y, que también forma parte de la expresión de s"
CI+ I = x,)',c', + x,y,c, + J\J,Y,c r + X)"¡l:i
= x ,y¡(e'¡ + e¡) + c¡(x '¡ y, + x,."'j)
:: x i ."¡ + ('¡(x ¡ €El Yi)

De esta forma podemos c mpat1i r las subexpresiones comunes de las expresiones de s,


y C;+ I' lo que nos permite imple mentar el sumador completo con cinco puertas. como se ve
en la Fi gura 3.3(a) , Obsérvese que esta implementación requiere 46 transistores y tiene un
Álgebra booleana y diseIlo lógico 97

retardo de 4. 8 ns de (¡ a Ci+ 1, La implementaci ón lisa puenas ANO, OR Y XOR. que sOlll1lás


lentas que las correspondi entes puertas NAND, NOR y XNOR. Sin elllhargo, si modifica-
mos las ex pres ione s de s, y " i+ I tendremos las \' entajas oc la rapide z y mejor prec io de la s
puertas NAN D y ;\jORo Para e llo. primero tran sformamos la ex pre sió n de ('1+ 1 co mO sigue.
aplicando los teore mas de De Mnrgan:

e, + I = x/, + t)x,- + y)
:;: ((.\'í.\ )'((I\ + y¡Jr)'

De forma simi lar. tran sformam os la ex presió n de s, así:

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
s, = (Xi tB _,)(" , + (x¡O-,,¡)L'¡
= C\} ::)y)'e'¡ + (x¡0 Y¡)C j

= (\ 0 .' ) OC,
Además. w1llhi é n pode mos imp le mentar \ 0 .", con Jo s puertas NAN O y una OR:

\ 0 .", = \ \ + .\"'/',
= ((.\",..,-/(.r',."' ;)')'
= ((x,y )'C\ + y , ))'
U~ <l11(jn es ta s exp res io nes. pudc mu s implementar un s umador co mpleto m ás rúpi-
du C0l110 SL: ve e n la Fi g urJ 3.3(c) . Ohsér\'e se que es te s umador tarda só lo ::!. 8 Il S de
el a e H 1, e ll co mpara ción CO Il los 4.8 n s del diseño anterior. La imp lcme nta c ión se ría
tam hién mc nu s carel. ya que usa só lo 36 tran sis torcs e n lug ar de lu s -l 8 que' nec e s ita
e l o tro.

A pa rtir dcl Ej e mplo 3.7. pocle mos generalizar y dec ir que inlc nlar mlnlml -
la r el nllmero de operadores no da neces ariamcnl e e l di sc fío más rápido ni lam-
poco clme nos caro . pero s i inlcnlamo s cnconlrar la ex pre s ión que use las pucr-
la.s m.b rúpidas o mc nos cara s de la bibliOlec a. puede qu e co nsig amos los objc-
ti ' ·os.

TA BLA 2.3 Suma de dígitos btnarios

x, + Y, + el Ci+ l s,

() O O il ()
() U I O I
() I O () I
O I I 1 O
I () O O I
I O I ()
I () ()
I I I
98 Principios de diseño di gital

ENTRADNSALlDA RETARDOS
PATH (ns)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
\--t--.---- 'i
4.8
el a el + I
, ,
c a .\' .1.2
XI'}' a cl -t I 9.0
\. Y, a si X..l

l a) D i ~~ ii(leull ul1l1l'une!"ll rh) R<.'lardll~ l ~lIIrada¡Sahda p'II~ll'I di"l.:iio


l11il1i l11u de o ~r<ldur~ ~ dd apanado \.1)

1+-+-----,- (o¡

ENTRADNSALlDA RETARDOS
PATH (ns)
CI a e, -t I 2"~
e, as ,. 3.8
.\ .,.", a c,-t I 5.2
xl"."1 a.\ 7.2

(L' ) D is~iiú 1.:011 puerta:-. (d) R l' l a rd u~ El1lrada/ S"hda p;lr;¡ d dl"l.:iill
NAN]) y 01< dd <tp;lrladu k)

FIGURA 3.3 Diseño de un sumador comp leto.


Álgebra booleana y diseño lógico 99

3.9. AMPLIACiÓN A VARIAS ENTRADAS Y VARIOS


OPERADORES
Además . hay otras formas para disminuir e l coste y el retardo de una implemen-
tación, una de ellas implica ampliar la biblioteca construyendo puertas que tengan
más de dos entradas. Como regla general. cualquier puelta se puede ampliar para
tener más entradas ya que la operación binaria que se implementa es conmutativa
y asociati va, y garanti za que las variables se pueden conectar a las entradas de la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
puerta en cualquier orden. Como las operaciones ANO y OR poseen estas dos
propiedades por definición de álgebra booleana, son muy fáci les de ampli ar.
Sin embargo, las funciones NANO y NOR son conmutativas pero no asocia-
tivas. Pero es posible pensar en funciones NANO y NOR de vari as entradas como
complementos de las funciones múltiples ANO y OR respectivamente. Así las
funcione s NANO y NOR múltiples se definen de la fomla siguiente:
NANO(x. y, z, ... ) = (xyz .. .)' >'x ¡y i z i ...
NOR(x. y, z• ... ) = (x + y + z + ... )' >' x J, y J, : J, ...
Como las puertas XOR y XNOR son ambas conmutati vas y asociati vas. se
pueden ampliar a más de dos entradas. En otras palabras, cualquier puerta de la
Tabla 3.14, excepto el inversor y el adaptador, se pueden ampliar a más de dos
entradas.
Por otra parte, usualmente no se hacen puertas XOR y XNOR de varias entra-
das ya que la mayoría de las funciones lógicas en diseño digital, con la excepción
de las funciones de paridad, se pueden diseñar usando puertas XOR y XNOR de
sólo dos entradas. Además, incluso estas puertas XOR y XNOR de dos entradas
se construyen a partir de puertas NANO, NOR y NOT para simplificar la biblio-
teca de puertas.
Por tanto, las bibliotecas más amplias deberían tener puertas NANO, NOR,
AND y OR de 3 o 4 entradas cada una. Se pueden construir puertas con un
número mayor de entradas, pero son más difíciles de hacer y como se usan
menos. el coste de la bibli oteca y del mantenimiento de las herramientas CAD
tiende a considerarse más re levante que su limitado uso. Por estos moti vos se
han incluido sólo puertas de 3 y 4 entradas en nuestra amp liación de la biblio-
teca. Los símbolos gráficos de estas puertas ANO, OR , NANO , Y NOR de 3 y
4 entradas se muestran en la Tabla 3.15, con sus correspondientes expresiones
de costo y retardo.
Hay otra forma de mejorar las prestaciones y el coste de la implementación de
funciones booleanas, pero implica ampliar la biblioteca para incluir puertas que
puedan realizar más de una operación booleana. Ya que en muchos casos las fun-
ciones booleanas, se implementan usando la forma normalizada de suma de pro-
ductos o producto de sumas, es por ejemplo beneficioso tener puertas nOrnlaliza-
das que puedan implementar estas formas efic ientemente. Como se muestra en la
Tabla 3. 16, estas puertas de varios operadores se denominan INVERSORES
ANO-OR (AOI) y puert.as fNVERSORAS OR-ANO (OAD. Usando estas puer-
100 Principios de diseño digita l

taso podemos construir implementaciones e n la forma normali zada que son de


menor coste y con menores retardos que cuando se impl ementan con puertas con
operadores únicos. Por eje mpl o, un AOI con 2 ni veles y 3 entradas que imple-
menta la suma de dos productos con tres lite rales cada uno requiere 12 transisto-
res e introduce un retardo de 2.2 ns, mie ntras que se necesitan 20 transistores y
4,2 ns para la misma suma de productos c uando se implementa con dos puertas
AN D de 3 entradas y una puerta NOR de 2 entradas.

TABLA 3. 15 Puertas lógicas normalizadas de varias entradas

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
COSTE (NÚMERO
NOMBRE SíMBOLO EXPRESiÓN RETARDO DE
DE PUERTA (ns)
GRÁFICO FUNCIONAL TRANSISTORES)

AND de 3 entradas
'=C)-
~. F
F = xy.<: 8 2,8

AND de 4 entradas
f I
}-F F = xy;:w 10 3,2

OR de 3 entradas '::::::1)-
~. F F=x+y+ z 8 2.8

OR de 4 entradas ~. J )-F F=x+y+ .<: +w 10 3.2

NAND de 3 entradas ~ =C)- F F = Cryz)' 8 1.8

NAND de 4 entradas I ~ }-F


1\'----1
F= (.\)'211')' 10 2.2

NOR de 3 entradas
~ ) ?-F F = (x+ y +:J' 8 1,8

r===# ?-F
NOR de 4 entradas F = (x + y + : + 11')' JO 2,2

Las puertas que tienen varias entradas y pueden reali zar varias operaciones se
denominan frecuenteme nte puertas complejas. En los sig ui entes dos eje mplos
mostraremos su utilidad .

EJEMPLO 3.8 Implementación con puertas de varias entradas


PROBLEMA

Implementar el sumador compl eto del Ejemplo 3.7 usando las puertas adecuadas de varias
entradas mostradas en la Tabla 3. 15 .
Á lge bra booleana y di se ño lóg ico 101

SOLUCIÓN
Para lIsar pue rta s de va ria s e ntradas. necesitamos partir de In forma normali zada. concreta-
ment e de un a con e l menor número pos ible de operadores. que nos perm ita minimi zar el
cos te . Ade más, inte ntarem os usar las puertas más rápidas de la biblioteca, para o btene r el
menor re ta rdo posible. Usualme nte. las puert as más ráp idas de. la biblioteca son las pucI1as
NAN D y NO R, así que pa ra usarlas a plicare mos los teore mas de De Morgan hasta que
hayamos convertido la fo rm a normali zada selecc ionada e n un a ex presión co n operadores
NAN D o NOR .
En e l caso de l sum ador co mpl eto . modificamos la ex pres ión de ('''+ 1 y Si de la sigui e nte

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
forma:

(;+1 =·\ Y¡ + L',r, + e,J;


; « x;.')'(c,x,)'(c;l',)')'

TABLA 3.16 Puertas lógicas normalizadas de varios operadores

COSTE
SíMBOLO EXPRESiÓN (NÚMERO DE RETARDO DE
NOMBRE
GRÁFICO FUNCIONAL TRANSISTORES) PUERTA (ns)

AO I
2 de ancho
2 ent radas "B=>-
x
y
z
F F; ( II'X + y:l' 8 2.0
102 Principios de di seño digital

y
:" ¡ = X'¡yl¡C¡ + x'¡y¡c'¡ + xii¡e'¡ + X¡Y¡C ¡
= «x'¡y'¡c;Y(..r' ¡YiC' yex¡.Y't' )'(x¡y¡c¡))'
En la Figura 3.4(a) ilustramos una implementación obtenida a partir de estas ex presio-
nes modificadas. Como se puede ver, el retardo de cualquier salida Si es sólo 5,0 ns, y de
ci• I es sólo 3,2 ns. Sin embargo, desgrac iadamente. el diseño requiere 56 transistores para
su implementación lo que probablemente se reduciría usando puertas de varios operadores .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ENTRADA/SALIDA RETARDOS
PATH Ins)
e¡ a C¡ + 1 3,2
el a Si 5,0
Xi' Yi a e¡ + I 4,2
Xi' Yi a Si 5.0

(al Di seño con pucnas de varios operadores (b) Retardos Entrada/Sal ida para el diseño
del aparlado (a)

FIGURA 3.4 Diseño del sumador completo con puertas de varias entradas.

EJEMPLO 3.9 Implementación con puertas de varios operadores


PROBLEMA

Implementar el sumador completo usando las puertas apropiadas de varios operadores que
se muestran en la Tabla 3. l 6.
SOLUCiÓN
Cuando se usan puertas de varios operadores podemos empezar transformando las expre-
siones funcionales en subexpresiones AOl y OlA. Como la expresión de la suma si tiene
cuatro términos AND de tres literales cada uno, la mejor elección para su implementación
sería una puerta AOI de 3 entradas y 4 ni veles. Sin embargo, como no tenemos este tipo de
puerta en nuestra biblioteca, podemos implementar mejor el sumador usando dos puertas
AOI de 3 entradas y 2 ni veles junto con una puel1a NAND, como se muestra a continua-
ción:

Si = J,.J¡Y'/"j + x'¡y/;'¡ + x¡y'F'¡ + _\ Y,c¡


= «x'¡y'¡e¡ + x'¡y/-"/(x¡y'¡c'¡ + x¡y¡c¡)')'

Para usar una única puerta AOI de 2 entradas y 3 ni veles en la implementación de la


función de acarreo, debemos generar la expresión de su complemento:
Álgebra booleana y diseño lógico 103

ej. r = x/Y,. + ('¡x, + c¡Y¡


=«.\y,)'(c,x,)'lc,y,Y)'
l
= (t.e; + y'(){c ¡ + ~ei) (cl,. + .r',»'
= (X'/y',. + (,'¡x'; + e/ji)'
El res ullado se muestra e l1 la Fig ura 3.5(b). O bsérvese que el retardo entre c, y es c,.,
de 3,4 I1 S. que es sólo 0.2 I1S mayor que el de la implementac ión que usaba puertas de varias
entrudas. Por Olra pan e, el retard o entre e¡ y Si es de sólo 4.6 ns. q ue es 0.4 ns menor q ue el
de la implementac ió n q ue usaba puertas de vari as entradas . Además. el uso de puertas de
varios operadores ha reducido e l coste de 56 a 46 transistores.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En los Ejemplos 3.7. 3.8 Y 3.9. hemos ilustrado la manipulación algebraica de
expresiones boo leanas para implementarl as con vari os tipos de puertas. Como
hemos visto, en un principio no es obvio qué tipos de puett as darán el mejor dise-
ño. Normalmente. hay que probar disti ntas alternati vas hasta encontrar la mejor
solución. En el Capítulo 4. veremos procedimientos sistemáticos para implemen-
tar funciones booleanas y optimi zar esas implementaciones para disti ntas biblio-
tecas.

ENTRADA/SALIDA RETARDOS
PATH Ins)
C;a ej + I 3,4
c¡ a Si 4,4
X¡'Yi a ej. I 3,4
x¡.y¡as¡ 4,4

Si

lu) Oiseiio con puertas uc vados operadores (b) Retardos Enlrada/Salidü para el diseño
de l apartado (a)

FIGURA 3.5 Diseño del sumador completo con puertas de varios operadores.

3.10. IMPLEMENTACIONES DE PUERTAS


En las Secciones 3.8 y 3.9 introdujimos distintos tipos de puertas que rea li zan una
o vari as operaciones booleanas. Estas puertas son circuitos electrónicos com-
puestos por res istencias, di odos, y transistores que se pueden conectar de di stin-
tas formas para realizar distintas operaciones booleanas . Las primeras puertas se
construían princi palmente con resistencias y diodos ya que los transistores eran
104 Principi os de diseño digiwl

caros. Sin embargo. con los avances de la tecno logía de sem icond uctores. la fabri-
cación de transistores se volv ió sencilla y barata. así que las puertas actuales se
constru yen exc lusi vamente con tran sistores.
La forma de conectar los tran sistores ca racte ri za cada familia lógica o hihlio-
teca y le da un nombre es pecífico. Antes de d iscutir las bases de las famili as lóg i-
cas básicas definiremos varias medidas que se pueden usar para comparar las dis-
tin tas famil ias.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3.10.1. Niveles lógicos

Las impl ementacio nes de puertas son ci rcuitos e lectrónicos cuyo comportamicnto
se puede ex pli cur muy hien en térmi nos de ni vel es de tensión. medidos en vo lt ios
(Y). y no necesariamentc en términos de los va lores booleanos () y l . Sin e mbar-
go. para adaptarse a estos valores booleanos. los ci rcu itos de puertas se di seiian de
forma que sólo se pueden dar dos ni ve les de tensión. alto (lf) y bajo (L). para un
estado concreto de las entradas y salidas. Por consiguiente. la función booleana
realizada por tal ci rc uito de pucl1a depende de la interpretac ión de los ni "e les de
tensión H y L. o en otras palahras. de la correspondencia ent re O y I Y los ni veles
de tensión H y L. Esta correspondencia se puede reali zar de dos formas diferentes.
dando lugar a dos sistemas lógicos diferen tes: pos iti vo y negativo.

ENTRADAS SALIDAS ENTRADAS SALIDAS ENTRADAS SALIDAS


LL H 00 I I {I
LH H 01 lO O
HL H ID I 01 (1
HH L I I O (JO 1

(a) CUJ11¡:lIJ rlami l'llln de la pUl'lta I h, ~AND l '!)" lú!-'II:¡¡ PP'I II V.1 fl.:) :"!()I{ "nn Itl~h." l lll' gllll\,'

FIGURA 3.6 Interpretación del circui to cuya salida es L sólo cuando ambas entradas son H.

ENTRADAS SALIDAS ENTRADAS SALIDAS ENTRADAS SALI DAS


LL H (JO 1 1 I O
LH L 0 1 O lO I
HL L lO O 0 1 I
HH L I I U 00
!,I) C'1lIllp(lll :mm: 1l1\l dc la plh: rl a I hl NOR l'fHl lúgica PII,itl va IC) N,;-\;\ n ('Oll l ú~k:1 Ill.!gat i\':1

FIGURA 3.7 Interpretación del circuito cuya sal ida es L siempre que una de las entradas es H

En el sistema lógico positivo, O se asigna a L y I a H. mientras que en e l sis-


tema lógico negativo lo as ignamos al revés: L represcnta I y H representa O.
Entonccs. cada circui to de puerta rea liza diferentes funciones booleanas segú n se
Álgebra booleana y diseño lógico 105

considere en el sistema lógico positivo o en el sistema lógico negativo . Por ejem-


plo, el circuito de puerta cuya salida es L sólo cuando ambas entradas son H
[Figura 3.6(a)] realiza la operación NAND en lógica positiva [Figura 3.6(b)] y la
operación NOR en lógica negativa [Figura 3.6(c}].
De forma similar, un circuito de puerta cuya salida es L siempre que una de
las entradas sea H [Figura 3.7(a)1 se puede usar para realizar la operación NOR
con lógica positi va [Figura 3.7(b)) o la operación NAND con lógica negativa
[Figura 3.7(c)].
Para di sti nguir los sistemas de lógica positiva y negativa usamos un pequeño

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
triángulo como indicador de polaridad de lógica negativa en las líneas de señal de
entrada o de salida con·espondientes. La presencia de este indicador de polaridad
significa que se ha supuesto lógica negativa para los valores de tensión de una
señal concreta. Usando los indicadores de polaridad, podemos mezclar valores de
lógica positi va y negativa como se muestra en la Tabla 3.7.
La mezcla de ni veles lógicos se hacía frecuentemente en el pasado cuando los
diseñadores mezclaban puertas de distintas familias lógicas en la misma tarjeta.
Desde que aproximadamente a partir de la década pasada, todos los lC (Il/regrared
Circuirs, circuitos integrados) nuevos se hacen con la familia lógica CMOS, que
usa lógica positi va. la lógica negativa ha perdido el apoyo de los diseñadores. así
que las herramientas CAD modernas usan predominantemente la lógica positi va.
Por este motivo sólo usaremos lógica positiva a lo largo del libro.

TABLA 3.17 Ejemplos de simbo-


los de lógica positi-
va y negativa

LóGICA POSITIVA LóGICA NEGATIVA

3.10.2. Márgenes de ruido


Los circuitos se construyen para admitir variaciones en los niveles de tensión de
las entradas y de las salidas. Estas variaciones se deben usualmente a varios Fac-
tores diferentes. Por ejemplo, las baterías envejecen y pierden su potencia cau-
sando una disminución de la tensión de la fuente de alimentación. De forma simi-
106 Principios de di seño digi¡., ¡

lar, operar a temperaturas altas puede causar una deriva en la tensión y en la


corriente del transistor. Por otra parte. los cambios bruscos de con'iente proce-
dentes de líneas de alimentación vecinas, pueden introducir pulsos espúreos en las
líneas de señal. El conjunto de todas estas variaciones indeseables en la tensión.
que se superponen a los niveles de tensión normales de funcionamiento , se deno-
mina ruido.
Todas las puertas se diseñan para to lerar una cierta cantidad de ruido en sus
puertos de entrada y sa lida. El máximo nivel de tensión de ruido que una puerta
tolera se denomina margen de ruido. El margen de ruido se puede obtener a par-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
tir de la tensión característica de entrada/salida que se mide bajo di stintas condi-
ciones de operatividad y se da en la documentación de la puerta. Esta caracterís-
tica de entrada/salida se muestra en la Figura 3.8 para la famj lia lógica transistor-
transistor, en donde se representa la tensión de salida Vo frente a la tens ión de
entrada VI'

~ .O

3.5 - .,
3.0 ~ "
,.0
~ 2.5
1--
'\.
:;!
~ r -I~ ,
~ 2.0 I

:, ,
.~ 1.5 I
~

1.0
\
0.5
:
I
1
, 1-- ... - .. - - -
I
0.5 1.0 1.5 2.0 2.5 ~.O 3.5 -l .O

Tensión de entrada vI

FIGURA 3.8 Característica de entrada/salida típica de las puertas en la familia 16gica transis-
tor·translstor.

Como las características de entrada/sa lida varían bajo di stintas condiciones de


operatividad, mostramos también el rango de variación con el área sombreada de
la Figura 3.8. A partir de la figura podemos ver que la puerta dada, opera en tres
modos diferentes: salida alta, transic ión y salida baja. En el primer modo. cuando
VI está entre O y 0.8 Y, la tensión de sa lida Vo es mayor de 2.4 Y Y menor que la
tensión de alimentación Vec ' que usualmente es 5 V. En el modo de transición,
cuando Y 1 está entre 0.8 y 2.0 Y, la puerta conmuta de H a L. Finalmente. en el
tercer modo, cuando V, es mayor de 2.0 Y, la tensión de salida Vo es mayor que O
y menor que 0.4 V.
Álgebra booleana y diseño lógico 107

Para determinar los márgenes de ruido, debemos comparar la salida y los ran-
gos de tensión de salida de las puertas de la misma familia, como se muestra en
la Figura 3.9, en la que vemos el rango de tensión de salida de una puerta excita-
dora, en la parte izquierda, y el rango de tensión de entrada de las puertas excita-
das, en la parte derecha.
Cualquier tensión entre VOH y Vcc se considera H y cualquier tensión entre O
y V OL se considera L. De forma similar, cualqui er tensión entre V'H y Vce se con-
sidera H y cualquier tensión entre O y VIL se considera L.
La diferencia de tensión V OH - V'H se denontina margen de ruido del nivel alto.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ya que cualquier tensión de ruido menor de V OH - V'H será tolerada y no cambia-
rá el valor de salida de la puerta excitada. Con el mismo razonamiento, la dife-
rencia de tensión VIL - V OL se denomina margen de ruido del nivel bajo. En el
ejemplo de la lógica transistor-transistor, V OH = 2.4, V'H = 2.0, VIL = 0.8 Y
VOL = 0.4, Y ambos márgenes de ruido, alto y bajo, son iguales a 0.4 V. En otras
palabras. cualquier ruido menor de 0.4 V no influirá en el funcionamiento de la
puelta. Tajes márgenes de ruido, que no se dan en circuitos analógicos , hacen los
diseños digitales más fiables que los analógicos.

H H

:::,eode
rui aI!o

M.u¡endc
ruido bo,jo

L L

GND fOl GND(Q I


Rango de RanQO de
tensión de tensiÓn de
salida entrada

FIGURA 3.9 Margenes de ruido alto y bajo.

3.10.3. Conectividad de salida

Como mencionamos en las subsecciones previas , cada puerta puede conectarse a


otras puertas. El número de puertas que cada puerta puede hacer func ionar, mien-
tras se le proporcionen niveles de tensión dentro del rango garantizado, se deno-
mina carga normalizada o conectividad de salida (jan-out).
La conectividad de salida realmente depende de la cantidad de cOlTiente eléc-
trica que una puerta pueda dar o recibir mientras esté excitando a otras puertas.
Como podemos ver a partir de la Figura 3.10, cuando la salida de la puerta es H,
la puerta se comporta como una fuente de corriente ya que la corriente ¡ OH fluye
108 Principios de diseño digital

desde la puerta excitadora hacia el conjunto de puertas excitadas. La corriente 10 11


es igual a la suma de todas las corrientes de entrada, denominada 1111 en la fi gura,
que fluye hacia las pucrtas conectadas. Por otra parte, cuando la salida de la puer-
ta es L , la puerta se comporta como un sumidero de corriente. ya que la corriente
I OL fluye desde las puertas excitadas hacia la puerta. La corriente 10 L es de nuevo
igual a la suma de todas la corrientes de entrada I/ L que tluyen de todas las pucr-
tas exc itada .
Como todas la puertas de una familia lógica se construyen de forma que cada
puerta requiera la misma 1111 y la mi sma I n . podemos calcular la conectividad de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
salida de la siguiente forma:
Conectividad de salida = max (/0 11"/11' I OL "/L)

Por ejemplo. la corriente de entrada y salida de esta familia lógica transislOr-


transi stor es la siguiente:
I ON = 400 pA
I OL = 16pA
1m =40pA
IIL = 1.6 pA

A OIras puertas A ol ra~ pueI1:t:.


(a) Puerta como fuente de corrien te (h ) Puerl:1 como SUllllde ro de ccm;cnte

FIGURA 3.10 Flujo de corriente en un circuito lógico típico.

Por tanto, la conectividad de salida es igual a max (400/40. 16/1.6) = 10. Esto
significa que cada pUet1a puede excitar a otras 10 puertas de la mi sma familia sin
salirse del rango de garantía de funcionamiento. En el caso en que estén conecta-
das más de 10 puertas a la salida de una sola puerta, los ni veles de tensión de sali-
da se degradarán y la puerta irá más despacio.
Las familia s lógicas modernas metal-óxido-semiconductor (MOS ) tienen una
conectividad de salida de alrededor de 50. ya que cada puerta debe dar o rec ibir
cOlTi ente sólo durante la transición de H a L ó de L a H .
Álgebra booleana y diseño lógico 109

3.10.4. Disipación de potencia

Cada puerta está conectada a la fuente de alimentación Vcc y utiliza cierta canti-
dad de corriente durante su funcionamiento. Como cada puerta puede estar en
estado alto, en transici ón o en estado bajo, podemos distinguir tres corrientes dis-
tintas proporcionadas por la fuen te de alimentación: l CCH' I ccTY l ea' En las anti-
guas familias lógicas como TIL, la transición de corriente l cer es despreciable en
comparación con ' CCH e ' ecL" Suponiendo que la puerta permanece un tiempo
aproltimadamente igual en los estados alto y bajo, y no está apenas en el estado

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
de transición , y la corriente media es igual a (lCCN + ' ca)/2. Se puede calcu lar la
disipación de potencia media como el producto de la corriente media por la ten-
sión de la fuente de alimentación. En otras palabras,
Pmedia = Vce x (1cc + ' cCL)/2

La disipación de potencia se mide en mili vatios (mW) y para la familia lógi-


ca TIL este valor es aproximadamente de 10m W.
En tecnologías modernas como la familia CMOS. las corrientes en estado
estacionario'ceH e ' CCL SOI1 despreciables en comparación con'CCT y la disipa-
ción de potencia media es
Pmedia = VCC x l eer
donde ' eer incluye sólo la corriente media durante el periodo de transición. Como
la corri ente es relativamente pequeña, la disipaci ón de potencia típica de las puer-
tas CMOS es más pequeña. Obviamente, la disipación de potencia aumenta con
la frecuencia de cambio de la salida.
La disipación de potencia es una medida importante por dos razone.. Primero,
la cantidad de corriente y la potencia disponible en una fuen te es casi constante.
Entonces, la disipación de potencia de un ci rcuito o de un producto determina la
vida de la batería o pila.
Segundo, la disipación de potencia es proporcional al calor generado por el
mi crochip o dispositivo. Una disipación de calor excesiva puede incrementar la
temperatura de funcionamiento y causar que la circuitería del sistema se salga de
su rango normal de operación, lo que causaría que las puertas generen valores de
salida incorrectos. Por ambas razones, debemos mantener la disipación de poten-
cia lo más baja posible en cualquier implementación de una puerta.

3.10.5. Retardo de propagación

El retardo de propagación de cada puerta de las Tablas 3.12 a 3.1 4 se define como
el tiempo medio necesario para que el cambio de la entrada se propague a la sal i-
da. Este retardo de propagación se mide usualmente en nanosegundos (n5) que es
igual a 10- 9 segundos. Este retardo de propagación se puede obtener a partir de las
formas de onda de sali da y entrada de la puerta, como se ilustra en la Figura 3.1 1.
A partir de la figura se puede observar lo siguiente:
110 Principios de diseño digital

1. Las señales de entrada, y consecuentemente las de salida, no conmutan


sus valores instantáneamente.
2. Los cambios de H a L y de L a H pueden retardarse en distintas cantida-
des de tiempo.
Como los valores de la señal no cambian instantáneamente, podemos definir el
tiempo de subida como el retardo de la señal para conmutar del 10% al 90% de su
valor nolTÚnal. De forma similar, podemos definir el tiempo de caída como el tiem-
po que tarda una señal en conmutar del 90% al 10% de su valor nolTÚnal. Como las
transiciones de Ha L y de L a H no van retardadas de igual forma, podemos definir

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
el retardo de propagación de Ha L, tPHL Y el retardo de propagación de L a H. (PUl'
El (PHL es el tiempo necesario para que la señal de salida alcance el 50% de su valor
nominal en transición de H a L después de que la señal de entrada alcance el 50%
de su valor nominal. El t pLH se define de forma similar. El retardo de propagación,
(p' se puede definir como el valor medio de t pHL y t pLH ' Por tanto

tp = (t pHL + t pLH )/2

TIempo Tiempo
de subida de bajada

~;

. ..

Entrada :

.,r--:--:-:--:-:--:-.,....;,...,.
. ...,." "". . . . . . . 90%

Salida
---- 50%

10%

tPHL
¡ 1( • •

FIGURA 3.11 Retardo de propagación .

Como ejemplo, la puerta NAND de 2 entradas típica de la familia TIL tiene


un I pHL = 7 ns y t pLH = 11 ns para un valor nominal t p = (7 + 11 )/2 = 9 ns. La fami-
lia lógica CMOS tiene un t p = 1 ns. Como los fabricantes de IC no pueden garan-
tizar el mismo valor nOlTÚnal en cada puerta que fabrican, también dan valores de
retardo máximos que garantizan que no serán superados por ninguna puerta.
Álgebra booleana y diseño lógico 111

Por ejemplo, los retardos de propagación máxjmos para las puertas NAND de
2 entradas en la farnjlia TIL son t pHL = 22 ns y IpLH = 15 ns, con un retardo medio
t p = 18.5 ns. En el pasado, estos valores de retardo máximo se usaban en el dise-
ño, ya que las distintas puertas procedian de distintos fabricantes y no había
garantías de que todas las puertas lentas no aparecieran en el mismo camino crí-
tico de la entrada a la salida. Actualmente, todas las puertas se fabrican a la vez
en un microchip, así que las variaciones de fabricación se aplican por igual a todas
ellas. En este caso, cada retardo de entrada a salida cambia proporcionalmente y
todo el IC va más rápido o más lento dependiendo de las variaciones en la fabri-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
cación. Los IC más lentos se venden a menor precio y los rápidos a mayor precio.
Por este motivo, los diseñadores de hoy día usan el retardo nominal en vez de los
retardos máximos.

3.10.6. Familias lógicas bipolares


En la Sección 3.9 hemos presentado distintos tipos de puertas que realizaban una
o más operaciones booleanas. Estas puertas se pueden construir usando dos tec-
nologías de transistor distintas: bipolar y metal-óxido-semiconductor.
Un transistor bipolar se puede modelar mediante un conmutador controlado
por tensión de tres terminales: emisor, colector y base. Como se muestra en la
Figura 3.12, el conmutador entre el emisor y el colector está abierto cuando la ten-
sión en su base es baja y está cerrado cuando la tensión es alta. En tecnología
bipolar cada puerta se construye con resistencias, diodos y transistores. Las resis-
tencias se fabrican como los transistores pero sin la base, y con los conmutadores
siempre cerrados, y los diodos se fabrican como transistores pero sin colector lo
que permite que la corriente vaya sólo en una dirección.
Todas la puertas de una familia lógica concreta se construyen de la misma
forma, mostrando ciertas características que los distinguen y que dan nombre a
todas las puertas de la familia. Una primera familia que se usaba en los años 60
era la lógica resistencia-transistor (RTL), en la que se utilizaba una resistencia
y un transistor en cada entrada de la puerta. Esta familia lógica surgió en una
época en la que la fabricación de transistores era cara y el objetivo de los diseña-
dores era minimizar el número de transistores que se usaban en el diseño. La lógi-
ca RTL se usaba antes de que se inventaran los circuitos integrados, y en esa
época las puertas lógicas se construían a partir de componentes discretos fabrica-
dos por separado. Después de la invención de los circuitos integrados, la fabrica-
ción de transistores se hizo menos cara, así que las resistencias de entrada de los
circuitos de puerta fueron sustituidas por diodos y se les puso de nombre lógica
transistor-diodo (DTL). Las puertas normalizadas de la familia DTL tenían tiem-
pos de subida y bajada menores, pero requerían más componentes.
Con la invención de los transistores multiemisor, los diodos de entrada se
sustituyeron por transistores multiemjsor, dando lugar a la popular familia lógi-
ca transistor-transistor (TIL) , que dominó los diseños digitales en los años 70
y 80.
112 Principios de diseño digital

ColCClor Colector

Base Base
L H --===---i

Emisor Emisor

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) Tensión baja en la base (b) Tensión alta en la base

FIGURA 3.12 Modelo de transistor bipolar.

Como se muestra en la Figura 3.13, una puerta TIL típica consta de tres paJtcs:
la lógica de puerta, un divisor de fase y una etapa de salida con una disposición
denominada totem-pole. La lógica de entrada realiza la función booleana que se
necesite, mientras que el divisor de fase proporciona dos señales de polaridad
opuesta para excitar los dos transistores de salida, que no están ni abiertos ni cerra-
dos a la vez, excepto durante las transiciones. Estos dos transistores, usualmente
denominados transistores de subida (plIll-up) y de bajada (pl/II-dow/l). alternan
sus estados cerrándose alternativamente. Cuando el transi stor de subida está cerra-
do el de bajada está abierto, la salida de la puelta sube a H y la puerta cede la
corriente 1H" Por otra parte, cuando el transistor de subida está abierto y el de baja-
da está cerrado, la salida de puerta baja a L y la puerta capta la corriente 1L"

Etapa
de
salida
Lógica Divisor
Enlradas de la Sulída
de fase
pucna

GND

FIGURA 3.13 Implementación de una puerta TIL.

Además de la salida totem-pole. la familia lógica TIL también dispone de


puertas con otros dos tipos de salida: salidas en colector abierto y tri-estado. El tipo
de salida en colector abierto (OC, Open Collector) se obtiene omitiendo el tran-
sistor de subida y su resistencia asociada. Este tipo se hizo para obtener funciones
más complejas. tales como un INVERSOR-AND-OR, sin usar puertas AO!.
Usando puertas OC, podemos unir sus salidas y conectarlas a una fuente de ali-
Álgebra booleana y diseño lógi co 113

mcntac ión a través de una resistencia de subida a parte, como se muestra en la


Figura 3. 14(a). En este caso, la salida cOnectada es H sólo si cada puerta OC está
H. y L siempre que una de las salidas OC esté L. Oc esta forma se obtiene una fUn-
ción ANO conectando salidas OC sin usar puertas adicionales. Como nO se usa una
puerta física, esta función ANO se denomina puerta AND cableada. y su símbo-
lo se muestra en la Figura 3.14(b). Como puede verse a partir de la figura, la sali-
da de la función booleana obtenida de esta fonna es igual a una puerta AOI ya que
F = (wx)'(yz)' = (wx + yz)'

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
R
u' _ r -........

F F = (wx+y 7.)'

(al Diseño del circuito (bl Símbolo gráfi co

FIGURA 3.14 ADN cableada de dos puertas de colector abierto en la familia lógica TTL.

La salida tri-estado o 3-estados se usa para controlar buses. En este caso, el


divisor de fase de la Figura 3.13 se hace más complejo para proporcionar tres esta-
dos posibles en las salidas de los controladores: estado alto (H), bajo (L), y de alta
impedancia (Z).

TABLA 3.18 Caracteristicas de una NAND de 2 entradas en distintas familias lógicas

FAMIUA
NúMERO N\Ja) NúMERo MARGeN CONECTI- DISIPACIÓN
RETARDO
DE DE DE DE VIDAD DE
LÓGICA (ns)
RESISTENCIAS DIODOS TRANSISTORES RUIDO DESAUDA POTENCIA

RTL 3 2 0,4 5 20 25
DTL 4 3 2 1,0 8 12 30
TTL 4 1 5 0,4 10 10 9
Schottky TTL 5 2 7 0,4 10 19 3
ECL 8 2 6 0, 15 25 25 2
CMOS 4 0,5 30-50 0,1-0,3 1

En los estados alto y bajo, la salida totem-pole actúa como antes, mientras
que en el estado de alta impedancia ambos transistores están abiertos y la salida
de la puerta se desconecta eléctricamente del bus. La salida tri-estado se necesi-
ta para controlar buses grandes con muchos controladores ya que las puertas
ANO cableadas sólo se pueden usar con buses pequeños en los que pocas puer-
114 Principios de diseño digital

tas controlan el bus. La puerta AND cableada está limitada a buses pequeños
debido a la falta de corriente a través del transistor de bajada cuando está abier-
to. Si hay demasiadas puertas cableadas juntas, la suma de todas las pérdidas de
corriente puede ser suficientemente grande como para disminuir H en el bus
hasta un rango inaceptable.
Como la lógica TIL fue la familia lógica dominante en los 70 y 80, se comer-
cializaron muchas variaciones de la familia básica para aplicaciones de baja
potencia y alta velocidad. En las versiones de baja potencia, el consumo de poten-
cia se redujo a expensas de la velocidad, y en las variantes de altas prestaciones,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
el retardo se redujo a base de incrementar la disipación de potencia. Una de las
versiones TIL fue la Schottky TIL, que usaba transistores especiales denomina-
dos como uno de los inventores del transistor (Schottky).
Para aplicaciones de velocidad realmente alta, tales como supercomputadores
y comunicaciones, los diseñadores usaban una familia bipolar denominada lógica
de emisor acoplado (ECL, emitter-collpled-logic) . La familia ECL ofreCÍa la
mayor velocidad de todas las familias, reduciendo el tiempo de conmutación de
los transistores de H a L, y viceversa. En la Tabla 3.18 se comparan los principa-
les parámetros lógicos de las distintas familias lógicas.

3.10.7. Familias lógicas MOS

La segunda familia lógica, que surgió como competidora de la tecnología bipolar


en 1980, debido a su reducido consumo de potencia y que ha llegado a ser la tec-
nología dominante en el diseño de IC es la lógica metal-óxido-semiconductor
(MOS). Un transistor MOS se construye a partir de una capa de metal sobre una
capa de semiconductor con una capa de dióxido de silicio entre eUas que sirve
como aislante. Como se muestra en la Figura 3.15, un transi stor MOS también se
puede modelar como un conmutador controlado por tensión con tres termi nales:
fuente, puerta y drenador.
En tecnología MOS es posible fabricar dos transistores complementarios: un
transistor P y un transistor N. Como se muestra en la Figura 3.15(a), el transistor P
está cerrado cuando la tensión de puerta es alta y está abierto cuando la tensión de
puerta es baja. Por otra parte, como muestra la Figura 3.l5(b), el transistor N está
cerrado cuando la tensión de puerta es baja y está abierto cuando es alta. Esta natu-
raleza complementaria de los transistores MOS se puede usar en el diseño de etapas
de salida en circuitos de puerta usando el transistor N para subida y el transistor P
para bajada. Como estos dos transistores son complementarios, pueden ser contro-
lados por la misma señal sin requerir el divisor de fase que se necesita en la familia
lógica TIL. Además, como los transistores MOS no dan o reciben ninguna conien-
te de puerta excepto durante la transición, podemos combinar la lógica de puerta y
la etapa de salida y reducir el número de transistores. La familia lógica basada en
estas ideas, que se conoce como lógica MOS complementaria (CMOS), se usa en
los 90 exclusivamente para el diseño de le. Su popularidad se debe a su baja disi-
pación de potencia, alta conectividad de salida y sencillez de fabricación.
Álgebra booleana y diseño lógico 115

Los esquemas de las puertas lógicas básicas de la familia CMOS se muestran


en la Figura 3.16. El circuito inversor mostrado en la Figura 3.16(a) consta sólo
de dos transistores. Como se puede ver a partir de la tabla de verdad de la Figura
3.16(b), cuando la señal de entrada x es L , el transistor de subida TI está cerrado
y el transistor de bajada está abierto. Como el transistor subida está cerrado, la
salida F vale 5.0 Y, que representa el nivel alto, H. Por otra parte, cuando x es H,
el transistor de subida TI está abierto, el de bajada T2 está cerrado, y la salida vale
O Y (GND, tierra), que representa el nivel de tensión bajo, L.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Drcnador Drenador

Puerta Puerta

FuenlC Fuente

(a) Transistor P (b) Transistor N

FIGURA 3.15 Modelos de transistor MOS.

Las puertas más complejas funcionan de la misma forma, a pesar de que


sus transistores de subida y de bajada constan de más de un transistor. Como se
muestra en la Figura 3.IO(c), una puerta NAND tiene una sección de subida que
consta de dos transistores TI y T2 conectados en paralelo y una sección de bajada
que consta de dos transistores T3 y T4 conectados en serie. Como muestra la tabla
de verdad de la Figura 3.16(d), cuando al menos una de las señales de entrada x Ó
y es L , al menos uno de los transistores TI o T 2 estará cerrado, uno de los transis-
tores T3 y T4 estará abierto y la salida F valdrá H. Por otra parte, cuando ambas
señales x e y sean H, los transistores T I y T 2 estarán abiertos, T3 y T 4 cerrados y
la salida F será L.
La puerta NOR se construye de forma simétrica y opuesta. Como puede verse
a partir de la Figura 3.16(e), la sección de subida consta de dos transistores TI y
T2 conectados en serie, mientras que la sección de bajada tiene dos transistores T3
y T4 conectados en paralelo. En este caso la puerta funciona como muestra la tabla
de verdad de la Figura 3.16(f). Cuando ambas entradas x e y son L, los transisto-
res de subida TI ó T 2 están cerrados, las transistores de bajada T3 y T4 están abier-
tos, y la salida Fes H. Caso de que una de las señales x ó y sea H, al menos uno
de los transistores de subida estará abierto, uno de los transistores de bajada esta-
rá cerrado, y la salida F será L.
Como podemos ver a partir de la discusión anterior, la implementación de una
puerta CMOS es muy senciUa, lo que da a la lógica CMOS ventajas enormes sobre
la lógica bipolar. Como los CMOS requieren el menor número de transistores por
116 Principios de diseño di gita l

x T, T, F
F
L on off H
H off 0 11 L

(a ) II1\'er~or Ihl Tah la de \'erJad tiLo l

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
In \CNlr

\ ' (!{I = +.'i V

T,
x y T, T, T3 T4 F

L L on Oll off off }-f


L H on off off on H
-, _ _L-{~ H L off on on off 1-1
H H off off 011 on L

-:- GND

il") Puerta NAND

x y T, T, T3 T4 F

L L on on off off If
L H 0 11 off off 0 11 L
If L off on on ofT L
H H off off On on L

-:- G~IJ

k) Puer1a NOR

FIGURA 3_16 Esquemas de puertas básicas en tecno log ía CMOS .

pUCJ1a. es la famili a lógica con mayo r dcn sidad. que se mide cn númcro de puer-
tas por árca de sili c io . Además. como e l dióxido de s ilicio es mu y !-luen ai slante.
e l terminal de puerta está mu y bi e n aislado de la fu cntc y de l drcnador y pur tanto
los trans istores CMOS dan corriente só lo durante la transición de H a L y la reci-
Álgebra booleana y diseño lógico 117

ben durante la transición de L a H. Como no hay corriente en estado estacionario,


la lógica CMOS no tiene disipación de potencia estática, aunque tiene una peque-
ña disipación de potencia dinámica, que se mide en microvatios por megahercio
(fl W/MH z). Para una frecuencia de 100 MHz esta disipación de potencia dinámi-
ca se encuentra entre 0.1 y 0.3 fl W. Además, como sólo se necesita una pequeña
cantidad de corriente durante la transición, una puerta CMOS tiene un alto grado
de conectividad de salida, aproximadamente de 30 a SO. La única debilidad que
presentó la lógica CMOS a principios de los 80 fue un retardo de propagación
mayor que el retardo que mostraba la lógica bipolar. Sin embargo, con los avan-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ces en las técnicas de fabricación, hoy se pueden fabricar transistores CMOS de
aproximadamente l micra (micrómetro) de ancho, con retardos inferiores a I ns.
La lóg ica CMOS, con estos transistores pequeños, también sobrepasa a la lógica
bipolar en velocidad. como se puede ver en la Tabla 3.18. Por estos motivos, la
CMOS se ha convertido en la familia lógica dominante de los 90 y con las reduc-
ciones en los tamaños del transistor en el rango de las submicras, es probable que
no tenga competidores en un futuro próximo.

3.11. TECNOLOGíA VLSI


En el nivel más básico. los diseños digitales se implementan con circuitos inte-
grados. o le. que se hacen en cristales pequeños de si licio, o chips. La superticie
de cada chip contiene una serie de transistores que se producen en un proceso de
fabricación que altera la superficie del chip químicamente. Los transistores están
interconectados para formar varios tipos de puertas , y las puertas se pueden usar
para formar componentes mayores, tales como memorias y procesadores. Cada
chip de si licio se monta en un contenedor de cerámica o plástico como el que se
muestra en la Figura 3.17 y se conecta a los conectores de salida externos que
sobresa len del encapsu lado, formándose así un circuito integrado. El número de
conectores de cada chip va desde 14 en los encapsu lados IC más pequeños hasta
varios cientos en los encapsulados más grandes. Independientemente del número
de conectores, cada encapsu lado le es muy pequeño, tan pequeño que un micro-
procesador completo se podría incluir en un encapsu lado IC de 40 conectores de
dimensiones 2.0xO.6xO.2 pulgadas. Cuando esto sucede, a cada IC se le asigna un
número que se rotula en su superficie con objeto de identificarlo. Además. los
vendedores de IC publican catálogos que contienen toda la información impor-
tante sobre las propiedades eléctricas y mecánicas de estos IC, incluyendo des-
cripciones funcionales. diagramas de tlujo del funcionamiento y diagramas de
tiempo de las seña les de entrada y salida.
Frecuentemente, los IC digitales se clasifican según el número de transistores
o puertas lógicas contenidas en un único encapsulado. y estas categorías se sue-
len denominar dispositivos a escala de integración pequeña, mediana. grande y
mu y grande. Los dispositivos a escala de integración pequeña (SS!) contienen
hasta 10 puertas independientes en un solo encapsulado. Como las entradas y sali-
das de estas puertas están conectadas directamente a los conectores del encapsu-
118 Principios de diseño digilal

lado, el número de puertas está limitado por el número de conectores disponibles


en el le. En la Figura 3. 18 mostramos seis dispositivos SSI típicos de la serie
7400 de la familia lógica TTL.

0.785

@@)@@@®®

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
,,0.280.
.020 -+11-'--
~
0,070 Pl cclIHndo
de CrIStal

f~~ Plano de
Asentanucnto
l"~ ~KIW\Mr
t-lI .¡ r- CI,I}30

0.13r----r U-,Espaci ado crllre 0.1 00


conectores

FIGURA 3.17 EnCapsulado de cerámica con 14 coneclores (ladas las dimensiones lineales se
dan en pulgadas) .

Los dispositivos a escala de integración mediana (MSI) tienen una comple-


jidad entre 10 y 100 puertas en un único encapsulado. Estos dispositivos contie-
nen usualmente varios trozos de módulos de memorias digitales normalizadas o
componentes aritméticos como registros, contadores, bancos de registro, sumado-
res, multiplexores, y generadores de paridad. La Figura 3. 19 muestra, por ejem-
plo, un generador de paridad par/impar de 9 bits TIL en un encapsu lado de 14
conectores. Introduciremos estos componentes en los Capítu los del 5 al 7.
Los dispositivos a escala de integración grande (LSI) contienen entre lOO y
varios miles de puertas en un solo encapsulado. Esta categoría de di spositivos
incluye componentes digitales como controladores. caminos de datos. chips de
memoria y componentes lógicos progTamables. Describiremos algunos de estos
componentes en los Capítu los 7 y 8.
Finalmente. los di spositivos a escala de integración muy grande (VLSI )
contienen cientos de miles de puertas en un solo encapsulado. Ejemplos de estos
dispositivos son memorias grandes y microprocesadores, chips microcomputado-
res, y subfunciones de sistemas, tales como controladores gráficos y aceleraelores
en punto flotante. El pequeño tamaño y el bajo coste ele los chips VLSI ha revo-
lucionado la tecnología de diseño, ya que proporciona a los diseñadores una opor-
tunidad sin precedentes de crear IC de uso específico (ASIC) a bajo coste y con
Álgebra booleana y diseño lógico 119

altas prestaciones que pueden realizar una sola tarea de forma muy eficiente y
adaptarla para ciertas aplicaciones. Actualmente, los componentes VLSI son los
únicos componentes en uso, ya que los componentes SSI, MSI y LSI que predo-
minaron en los años 70 y 80, hoy en día sólo están disponibles para reemplazar
piezas de equipos antiguos.

14 Ver

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
a
:-B
(iND ru~
7~______~~~
s
(a) 7400 (b) 7404

[JJ==s(~--TII]
4 "cc
2

GND ~ __________ ~
(iND 12.l_ _.!::::=:::!.!.I
(¡;) 7420 (d) 7430

(iND l...C.J______--==~ (iND ~ru~________~~


(e) 745 1 (1) 7454

FIGURA 3.18 Encapsulados TTL básicos de la serie 7400.

El advenimiento de la tecnología VLSI ha supuesto un importante cambio en


la forma de evaluar el coste. Por ejemplo, el coste de hardware de un producto dise-
ñado con componentes SSI, MSI o LSI suele medirse con el número total de IC de
una tarjeta de circ uito impreso (PC B). Sin embargo. con la nueva tecnología el
coste de hardware de un chip VLSI se mide por su área de silicio. Como este área
es proporcional al número de transistores o puertas en un esquema lógico o al
120 Principios de diseño digital

número de bits de almacenamiento en un diseño de una memoria, hace que los


diseñadores intenten implementar estos diseños con el mínimo número de puertas
y con la memoria más pequeña posible, que les permita minimizar así el coste.

A ~~
B .J2l.)

C~
Elltrada
p'"
D l!.!l..¡

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Entrada
de datos

~ ~:i~)~ Entrada
impar

G-+kh
HJ3l...¡
Entrada (4)
impar ~~----------------~
Entrada -,-,
(3"-
) _ _ _ _ _ _ _ _ _ _ _ _--'
p'"

FIGURA 3.19 Encapsulado de cerámica con 14 conectores (todas las dimensiones lineales se
dan en pulgadas).

Los chips VLSI que se usan en la mayoría de los diseños son de tres tipos:
diseños a medida, casi a medida o programables. En la aproximación a medida
(clIstom approach), los chips VLSI, o algunas de sus partes se diseñan a mano. así
que cada transistor y cada cable se definen individualmente mediante un conjun-
to de polígonos que se usan para generar las máscaras fotográficas necesarias en
el proceso de fabricación. Como el diseño a mano es muy tedioso, se han desa-
!Tallado metodologías de diseño de celdas para acortar el tiempo de diseño per-
mitiendo el uso de celdas estándar (standa rd cells) o componentes prediseñados,
como bloques de construcción, a partir de los que se pueden construir circuitos
muy grandes.
Como regla general, cada celda estándar contiene una única puerta de uno de
los tipos mostrados en las Tablas 3.14, 3.15 Y 3.16. Todas estas celdas son de la
misma altura, pero de distinta anchura y tienen sus entradas y salidas en la parte
superior o inferior de la celda. Por tanto, las celdas estándar se pueden situar por
filas y conectarse con cables que se sitúan en los canales que hay entre las fi las.
Las tiras horizontales y verticales generalmente se fabrican en dos capas diferen-
tes que se sitúan encima de las celdas estándar como se muestra en la Figu ra 3.20.
Las celdas estándar se pueden reunir en bibliotecas de ce ldas estándar que
usan los diseñadores a lo largo del proceso de diseño. El proceso de diseño de cel-
das estándar consta de varias tareas : identificación, capturación, simulación, ubi-
cación, e interconexión. En la primera tarea debe capturarse el di seño con edito-
res de esquemas, que permiten a los diseñadores trabajar en la pantalla de un com-
putador ubicando y conectando los símbolos gráficos de las puertas que se van a
usar. Luego, para verificar las funciones lóg icas que se han capturado y el retardo
Álgebra booleana y di. elio lógico 121

entre la entrada y la salida. el diseñador simula el esquema capturado con un


simulador lógico, que genera los valores lógicos y su evolución en el tiempo para
cada señalo cada conexión. Después de que la simulación haya confirmado la
validez del esquema, se ubican las celdas estándar en una superficie de silicio.
Para este fin, el diseñador usa herramientas estándar CAD de ubicación (p/ace-
melll 100/5), que definen la fila adecuada de cada celda y su posición dentro de
ella. El objetivo de la ubicación es minimizar el área de ocupación total de las cel-
das usando un número mínimo de pistas en cada canal. Finalmente, después de
terminar la ubicación, el diseñador usa una herramienta de interconellión (rouling

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
100/) para conectar todas las celdas. El objetivo de la interconexión es conectar
todas las redes con líneas metálicas de longitud mínima.

~ Celdas estándar

-+-- Canal de
interconexionado
~;:t:::;:L-r4-r--.l-,

FIGURA 3.20 Aproximación de una celda estándar.

En la Figura 3.2 1, mostramos la implementación de las funciones de suma y


acarreo de un sumador completo con celdas estándar. Obsérvese que la ubicación
de las celdas en la figura requiere cuatro pistas horizontales para interconectar el
canal superior. y cinco pistas para el canal inferior.
En contraste con la aproximación a medida, en la aproximación casi a medi-
da (semiwslom approac:h) de un diseño lógico se emplea un IC que está parcial-
mente prefabricado y que se conoce como array de puertas (gafe array) ya que
incorpora un gran número de puertas idénticas que se encuentran en una matriz
bidimensional regular. En la tecnología de hoy, el número de puertas de un chip
dado se encuentra entre 100.000 Y 1.000.000. Estas puertas suelen ser de tipo
NANO o NOR de 3 ó 4 entradas. Como todas estas puertas están prefabricadas,
hay que añadir las interconexiones. Más aún. como la fabricación de estas interco-
nexiones requiere sólo deposición de metal. el costo de fabricaci ón de los arrays de
puertas es sustancialmente menor que la aproximación a medida. Por otra pane, la
122 Principios de diseño digital

densidad del array de puertas es mucho me nor que la de los chips a medida. ya que
un array de puertas del mismo tamaño que un chip a medida contiene entre la cuar-
ta y la décima parte del número de puertas que el correspond iente chip a medida.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
FIGURA 3.21 Implementación de un sumador completo con celdas están dar.

El proceso de di seño de un array de puertas es simi lar al que se usa en el di se-


iio a medida. excepto que necesita rea li zar un paso ad icional de optimización.
denominado mapeado a la tecnología. después de la captura y simulaci ón elel
esquema. La final idad del mapeaelo a la tecno logía es convertir todos los compo-
nentes ele! esquema capturado e n un único tipo ele puerta que esté di sponible e n el
array de puertas se leccionado. Por ejemplo. s i un alTay ele pucrtas contienc puer-
tas NAN O de 3 entradas. todas las func iones bool eanas del esque ma se imple-
men tan con puel1a. NAN O de 3 entradas. C uando esta tras lación o mapeaelo a la
tec nología se ha terminado. se reali zan la ubicaci ón e interconcxionado con las
mi smas herramientas CA O que usamos en el di seño de ce ldas cSlií ndar.
Como ejemplo de este tipo de di seño casi a medida, consideremos la impl e-
mentación de las func iones suma y acarreo de un sumador completo con un array
de puertas de puertas NANO de 3 entradas . Primero . hay que convert ir las ex pre-
s iones de suma y acarreo en impl ementacioncs con puel1as NANO de 3 en tradas
usando los teoremas de Oe Morgan :
c.1+ 1 = xv- + -"e.J + xc.I
= « .rr')'(r
,- I
.c.)'(x.c.)')'
- I I I I

s.I =.r' /-,v' I.(' I. +.r' /-.\,.("


I
. + X/./- I.C/ I. + \ /-\'C
I I I
= (XI 1-,VI /,C{. + ..\"' ,-'
,\'.("
I
. + x /-.v',c'
/ I I
.) + X)'c I.
= «.r' /-.v' I.c I. + ,r' /..,..e'
I I
. + x /.,.'
. I
.e'.)'(x
I
.I·.c)')'
/. I I
= « «x' /-.r ' ".c.)'(x' /-.),I.e' I.)'(x /-.),' I.c' I.)')'J'(x./-I'.e
I /
.J'J'
Álgebra booleana y diseño lógico 123

(x,y¡c,r

" -¡------m--Ir-It:-~
x',

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
FIGURA 3.22 Implementación del sumador completo con tecnologia de array de puertas.

En la Figura 3.22 pueue verse la implementación de un sumador completo que


usa un array de puertas NAND. Obsérvese que el acarreo se ha implementado con
4 puertas. que es e l número mínimo de puertas requeridas por esta función . Por
otra parte. la función de suma necesita 7 puertas. ya que la NAND de 4 entradas
requiere 3 puertas cuando se impl ementa con puertas NAND de 3 entradas.
La tercera aprox imación para diseliar. conocida como aproximación progra-
mable in situ (fie/d prograllllllab/e approach). permite un compromiso entre coste
y ti empo para conseguir pequeñas densidades de puertas en dispositivos programa-
bles in situ. que son arrays de componentes lógicos cuya conectividad se establece
si mplemente cargando los datos de con f1 guración adecuados en una memoria inter-
na del di spositivo. Como estos dispositivos programables in situ se pueden repro-
gramar cualquier número de veces. son adecuados para usarlos en diseños nuevos
en los que las especificaciones de e1iselio evolucionan. o en aquell os diseños en los
que el hardware debe ser a medida dc los usuarios. Además. los dispositi vos pro-
gramabks in SilU son idea les para hacer prototipos y también ofrecen una solución
con coste adecuado para producciones de pequeño volumen. Desgraciadamente. la
densidad y velocidad de estos d ispositi vos tiende a ser menor que las de los dispo-
si ti vos disponibles en las aproximacioncs a medida o casi a medida.
Como se muestra en la Figura 3.23('1). una array de puertas programabl e in
si tu (FPGA. Fie /d-Progralll lllab/e Ga/e Arrar) cont iene una matriz de bloques
lógicos programables (PLB. Programmab/e Logic B/ocles) rodeada de intercone-
xiones programables y varios bloques de E/S situados en e l perímetro e1el chip,
que se usan para controlar otros componentes sit uados fuera e1el chip. Cada PLB
124 Principios de diseño digital

consta de dos bloques lógicos de cuatro variables y dos elementos de memoria de


un bit, como se indica en la Figura 3,23(b) , O bsérvese que cada bloq ue lógico se
puede programar para implementar cualqu ier func ión booleana de cuatro varia-
bles, y el valor funcional que genera puede pasar inmediatamente a otro PLB, o
alternativamente, puede almacenarse para su uso posterior en un e leme nto de
memoria de un bit.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) ESlrllctura del ¡!rray

Memoria
8, de un bit
Func ión GQ
8,
booleana
8, de cuatro
variables G
8,

¡"

¡" Función HQ
booleana
¡"
de cuatro
¡" variahl es H

(b I Bloque l úgic o~ programables ( t) I'll ll1l1 de i nlt'rCOIlL'xió l1

FIGURA 3.23 Array de puertas programable in situ (FPGA).

En una FPGA, .las interconexiones programab les co ntienen un conjunto de


líneas metálicas horizontales y vertica les que pueden interconecta rse a tra vés de
una matriz de conmutación (SM , Swilchillg Mulrix ). En cada SM 1/ x /l. habrá
111 $ 1/ X n puntos de i nterconexión que se pueden usar para co nectar las líneas
Álgebra booleana y diseli o lógico 125

horizontales con las vertica les de di stintas fo rmas. Como se muestra en la Fi gura
3.23(c). cada puerto de interconex ión contiene seis conmutadores, que se pueden
programar para que están abiertos o cerrados. Dependiendo de qué conmutadores
estén cerrados. podremos se lecc ionar una de las 64 conexiones diferentes entre las
líneas superior. inferi or, de la izqui erda o de la derecha . Los puntos de intercone-
xión se usan también para conectar un PLB a las líneas hori zontales y verticales
como se muestra en la Fi gura 3.23 (a) .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
.1: 1 ~, ,~ \ g~ G GQ
Sin usur ~,
X U U O O
X U O I U G
8,
X U I O O e,. ¡
X O I I I
S, X I O O <1
X I <1 I I
. g~
X I I O I
X I I 1 I

h, h, ,, ~ h, h, 11
- O O O X U
,, ~
O U 1 X 1 HQ
U I X U 1
O I X 1 <1
h,
1 U X <1 1 H
1 U X 1 O
Si n u ~rt r h,
1 I n X <1
1 I 1 X 1

FIGURA 3.24 Implementación del sumador com pleto con un PLB .

Co mo se ve e n la Fig ura 3.24. la tec no log ía FPGA permite im ple menta r


e l sum ador co mpleto co n un PLB . en el qu e las fun cio nes de sum a y ac arreo
se impl ementan cada un a co n un bloqu e lógico. Obsérvese q ue co mo la sum a
y el acarn:o so n func io nes de tres variab le s. no se usa un a entrada de cada
bloq ue .

3.1 2. RESUMEN DEL CAPíTULO


Empezamos este capítulo con un a defini ción ax iomática de l álgebra booleana.
que es la base formal del diseño lógico. Ta mbién hemos presentado los principa-
les teoremas del álge bra boo leana. ya que estos teoremas son impresc ind ibles para
la manipul ac ión correcta de ex presiones booleanas.
Además. he mos introduc ido e l co ncepto de fun c io nes boo leanas y he mos
mostrado como de finirl as en té rmin os de tablas de ve rdad y có mo obte ner las
126 Principios de diseño di gital

expres iones booleanas correspondi entes. Como hemos indicado, estas expre -
siones booleanas se pueden dar de tres maneras , usando las formas canónica,
normalizada o no normali zada. Aunque la forma canónica tiene la ventaja de
ser única, no usa necesaria mente e l mínimo número de operadores en una fun -
ción booleana dada. En comparación con esta forma canónica , la forma nor-
malizada tiende a usar menos operadores, y la forma no normali zada preten-
de utili zar el menor número de las tres. Cualquiera de las dos formas puede
obtenerse a partir de la forma canónica con manipul ac ión algebraica. Sin
embargo , es importante recordar que las forma s normali zada y no normali za-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
da no son únicas , lo que quiere dec ir que para cada func ión booleana pu ede
haber varias ex presiones normali zadas o no normali zadas di stintas. Una de las
principales tareas de di seño es encontrar la ex presión , entre las posibl es for-
mas no normali zadas, que tenga e l menor número de operadores. En este capí-
tulo hemos trabajado con varios ejempl os que ilustran cómo esta expres ión se
puede encontrar manipul ándola algebrai camente , pero no hemos presentado
ninguna técni ca sistemática que pueda ga ranti zar la minimi zac ión o cas i mini-
mi zación.
También hemos introducido las puertas lógicas más sencill as que se usan
para implementar operadores booleanos. as í como puertas más compleja que
pueden implementar varios operadores booleanos a la vez. Estas puertas se nci -
llas y complejas constituyen las bibliotecas lógicas normali zadas usadas por los
diseñadores en diseño lógico. Hemos introducido también la tecnolog ía VLSl y
varias formas de fabricar microchips usando tecnologías a medida, cas i a medi -
da, y programable. Como cabe esperar, cada tecnología, para impl ementar fun-
ciones booleanas, usa su propi a biblioteca y requ iere sus propias técn icas de opti-
mi zac ión.
En resumen, podemos decir que el principal probl ema del di seño lóg ico es
lograr encontrar la impleme ntac ión de una función boo leana que mejor sati sfa-
ga los requi sitos de coste y retardo, que normalmente se manifi esta con altas
prestaci ones (retardo mínimo) y coste mínimo . En el Capítul o 4. di scut iremos
algunas de las técnicas sistemáticas para resol ver este problema. Como estas
técnicas difieren según la tecnología y la biblioteca dadas, también ce ntraremos
nuestra atención en los compromisos de diseño y en la ex ploración del diseño
lóg ico.

3.13. LECTURAS ADICIONALES


Boole, G. An III\'est igatioll 01 lil e Laws (~r Thou ghl. New York: Dovel". 1954.
Presenta el trabajo original sobre álgebra booleana.
Fried man, A. D. and P. R. Menan . Tlleo ..v alld Desigll of SlI'i/cll il1g Circui/.'. Rockv ille.
MD: Computer Science Prcss. 1975.
Uno de los primeros libros de tex to sobre diseño lógico y circui tos de conmutación.
Proporciona un tratamiento minucioso de la materia y de los resultados de in ve sti ga-
ción de los 60 y principios de los 70.
Álgebra booleana y diseño lógico 127

Hayes, J. P. Introduction 10 Digital Logic Design. Reading, MA: Addison-Wesley, 1993.


Un texto comprensible sobre diseño lógico introductorio que relata bien la tecnología
VLSI sin requeri r conoci mientos previos ni de diseño ni de teoría de circuitos.
Huntington, E. V. "Sets of índependent postulates for the algebra of logicl!. Transactio1/s of
lile American Malilemalical Saciely. Vol. 5 ( 1904), pp. 288-209 .
El artículo que introdujo la formulación ax iomática del álgebra booleana presentada en
este libro .
Shannon, C. E. !fA symboli c analysis of relay and switching circuits.'l Trcl1Isactiolls of rile
AlEE. Vol. 57 (1938). pp. 713-723 .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
El primer artículo mostrando cómo se puede aplicar el álgebra booleana al di sello de
circuitos lógicos que se implementan con relés electromecánicos.

Weste. N .. and K. Eshragian . Principies ot CMOS VLSI Design. 2nd ed. Reading, MA:
Addison-Wesley. 1993.
Combina la tecnología vLSI y el diseño lógico, haciendo énfasis en la metodología de
diseño a med ida. Recomendado a estudiantes de ingeniería con algunos conoc imi entos
sobre teoría y práctica de circuitos.

3.14. PROBLEMAS
3.1. (Teoremas del álgebra booleana) (e) F(x. y, :) = (x + :)'
Pruebe los siguien tes teoremas. (d ) F(x. v. :) = (x + :)'(x + y')
(a) Teorema 2(a) y (b)
(b) Teorema 3(a) y (b) 3.5. (Funciones booleanas) Obtenga los
(e) Teorema 4(a) y (b) complementos de las funcione s del
(d) Teorema 5(a) y (b) Problema 3.3, usando la ley de De
(e) Teorema 6(a) y (b) Ma rgan.

3.2. (Teoremas y de mostrac iones) Usando 3.6. (Funciones booleanas) Pruebe me-
tablas de ve rdad, probar la validez de diante manipulación algebraica que
las siguientes identidades. las siguientes expresiones son equi-
(a) (xv:)' = x' + r' + :' valentes.
(b) xy' + x\ = (xy + x'y')' (a) _(v' + xy = (xy' + x'y)'
(e) xy + x': + y: = xy + x':: (b) x';:: + xy = .(v';: + y::: + xy
(d ) (x + v + :)' = x'v' :' (e) xy':::' + x' + ..\'.";:" = x' + :::'
(d) x + xr + v = x + y
3.3. (Teoremas y demostraciones) Pruebe
algebraicamente esta s ampliaciones 3.7. (Formas canón icas) Obtenga las fol"
del teorema de De Morgan. mas canónicas de la suma de min-
(a) (x)':)' = x' + y' + :' terms y del pmducto de maxterms de
(b) (x + v + :)' = x'v':' las siguientes fu nc ion es booleanas.
(a) F = x El) y El) :
3.4. (Funciones boolenanas). Obtener las (b) F = :w' + xv' 11" + xy':
tablas de verdad de las sigui entes fun-
ciones booleanas: 3.8. (For mas canónicas) Obtenga lo s
la) F(x, y, z, w) ;;;; x.:: + yw + xz' complementos de las funciones boo-
(b) F(x. y. :::, w) = x'y':' + x'z' w' + leanas presentadas en el Problema
XZ \ V' + ~\y'\V 3.6.
128 Principios de diseño digital

3.9. (Formas nommlizadas) Obtenga para completo que se especifica en la


las funciones booleanas especificadas siguiente tabla:
en el Problema 3.6 las formas norma-
lizadas de suma de productos y pro- Xi y, bi b41 di
ducto de sumas, usando el mínimo
O O O O O
número de operadores.
O O 1 1 1
3.10. (Manipulación algebraica) Minimice O J O 1 1
e l número de operadores de las O 1 1 1 O
siguientes expresiones booleanas. 1 O O O 1
J O 1 O O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) x'y' + .\)' + xy'
1 1 O O O
(b ) (x + y)(x + y')
1 1 1
(e) .(v ' + x\ + x:
(d) y'ZI + ~ey' + "jz + .'1:::,1
Encontrar la implementación que
3.ll. CManipulación algebraica) Explique tenga:
la diferencia entre reducir el número Ca) El menor coste
de operadores y reducir el número de (b) El menor retardo
literales.
3.17. (Bibliotecas lógicas) Rehaga e l
3.12. (Funciones booleanas) Pruebe si se Problema 3.15 usando sólo las pue.1as
verifica o no la conmutatividad de las que se dan en las Tablas 3. 14 y 3.15.
siguientes operaciones.
3.18. ( Bibliotecas lógicas) Rehaga el
(a) Inhibición
Problema 3. 15 usando sólo las puer-
(b) Equivalencia
tas lógicas normalizadas que se dan
(e) Implicación
en las Tablas 3. 14. 3.15 y3. 16.
(d) Exclusive-or
3.19. (Arrays de pue.1as) Sin usar nada
3.13. (Funciones booleanas) Pruebe si se
salvo puertas NANO de tres entradas.
verifica o no la asociatividad de los
obtener el esquema lógico de un :
operadores dados en el Problema
<a) Sumador completo
3. 12.
(b) Restador completo
3.14. (Implementaciones booleanas) Im-
3.20. (A rrays de puertas) Usando un a
plemente la [unción XOR en térmi-
implementación con NAN O de 3
nos de:
entradas del (a) sumador completo. y
(a) Sólo puertas NANO
(b) restador completo. determine la
(b) Sólo puertas NOR
posición de cada puerta en un array
(e) Puertas ANO, OR Y NOT
de puertas 4 x 4 de forma que ningún
3.15. (lmplementacione booleanas) Imple- canal de interconex ión horizontal o
mente x ES y ES z usando los compo- vertical tenga más de cuatro pistas.
nentes de la biblioteca lógica básica
3.21. (An'ays de puertas programables in
presentada en la Tabla 3, 12. Encontrar
situ) Programe una celda PLB para
la implementación que tenga:
que siempre que la entrada de control
Ca) El menor coste
valga 1, actúe C0l110 un sumador
(b) El menor retardo
completo. mi entras que si la entrada
(e) El menor producto coste-retardo
vale O se convierta en U11 rcst<ldor
3.16. (Bibliotecas lógicas) Usando la hi- completo. Suponer que las señales de
blioteca lógica b¡ísica presentada en acarreo y adeudo comparten la
la Tabla 3. 12. implementar el restador misma entrada.
booleanas
de funciones
Simplificación

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
Álgebra booleana Pucnas lógicas
y biestables

Máquina de
6
I

estados finitos 4 L,. 6
Técnicas de Técnicas de
diseño lógico
7- diseño digital

Si stema binario 2
y representación + t
de datos
5 7
Componentes Componentes de
combinaciona~ a1macenamie~

I 1
Máquinas de g Diseño de g
estados finitos transferencia entre
generalizadas registros

I
9
Componentes
del procesad~

Hasta ahora se han eSludiado los principios básicos del álgebra de Boole
y se ha tratado de implememar funciones booleanas con diferemes puertas
lógicas. Puesto que eslas puertas presentan diferentes costes, tamaños y
retardos, también los tienen las implementaciones de funciones booleallas
construidas a partir de dichas puertas. Como el coste, /(Imaño y retardo de
las implementaciones depende en gran medida de la forma de la expresión
booleana y del tipo de puertas utilizadas, necesitamos conocer cómo obte-
ner la expresión correcta y seleccionar los tipos adecuados de pue,1as que
plvporciollen un mínimo coste, tamaño o retardo para una implementa-
ción. En eSle capítulo. pues, se estudian algunas de las técnicas de diseño
que nos ayudan a optimizar los diseños lógicos COI! respecto al coste y al
retardo. Además, veremos cómo estas técnicas pueden ser aplicadas {/ dife-
rentes tecnologías.
132 Principios de diseño digital

En el Capítulo 3 se mostró con varios ejempl os cómo implementar funci ones boo-
leanas con puertas lógicas. También se indicó que el coste y retardo de una imple-
mentación dada depende de la forma de la expresión booleana y de la biblioteca
lógica utilizada en su realización. Por ejemplo, se mostró que una función boole-
ana puede especificarse en la forma de una tabla de verdad, sobre la

o
0----0

lal ll = I

o o

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
00 01

o o
lO 11

lb) n '" 2

OJO OJ I

(K~4~/O

o
/~(~~II o
100 10 1

lel 11 = 3
00 10 1I0J I
o o

0000/ 0001/
0 - o

o(~ t_o
/ / Oll(
/
OIOU e - · - - - o
/
0 101

1000 100 1

Id ) 11 =4

FIGURA 4. 1 Cubos booleanos para n = 1, 2, 3 Y 4.


Simplificación de funciones booleanas 133

base de que así se pueden definir las formas canónica, estándar y no estándar de
una expresión booleana para esa función. Como se indicó en el Capítulo 3, estos
tres tipos de formas tienen diferentes propiedades. Aunque la forma canónica es
única, generalmente contiene demasiados operadores como para servir de base a
una implementación eficiente. Por otra parte, una forma estándar, que general-
mente contiene pocos ope radores, no es única. De igual manera, una forma no
estándar, que tiene a su vez menos operadores que una forma estándar, no es tam-
poco única. Ya que estas fonnas no son únicas, es necesario un procedimiento que
pennita obtener una forma no estándar que tenga el mínimo número de operado-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
res, ya que las expresiones booleanas con menos operadores requerirán menos
puertas y menos entradas por puerta, facilitándonos así la realización de imple-
mentaciones menos costosas.
Al mismo tiempo. sin embargo, mientras que la minimización del número de
operadores permite realizar implementaciones menos costosas, tales implementa-
ciones presentan a menudo retardos mayores, ya que la señal de entrada ha de pro-
pagarse a través de más puertas como consecuencia de expresiones muy factoriza-
das. Así pues. para minimizar este retardo es necesario concentrarse en la reduc-
ción del número de operadores en cada camino crítico desde la entrada a la salida.
Además, debe asegurarse que los tipos de operadores en esos caminos críticos pue-
dan ser implementados con las puertas más rápidas de la biblioteca de puertas.
En el Capítu lo 3 se mostró cómo se podía minimizar el número de operadores
en una expresión por medio de ciertos tipos de manipulaciones algebráicas. En
este capítulo se describen técnicas sistemáticas que permiten, primero, minimizar
el número de operadores en formas estándar y no estándar, y después implemen-
tar estos operadores con puertas de una biblioteca dada.

4.1. REPRESENTACiÓN CON MAPAS


El método del mapa es un procedimiento senci ll o y directo para minimizar el
número de operadores en expresiones en forma estándar. Para generar una fonna
estándar comenzamos con una representación cómoda de tabla de verdad llama-
da mapa, que fue propuesta por Veitch y después modificada por Karnaugh. El
mapa está diseñado para ayudarnos a identificar el número más pequeño posible
de subcubos que define una función booleana dada. Cada subcubo representa un
producto en una forma estándar de suma de productos.
En el Capítulo 2 se presentaron los ,,·cubos booleanos, que proporcionan la
base para estos mapas. La Figura 4.1, por ejemplo. muestra los cubos booleanos
para 11 = 1, 2, 3 y 4. Como se ha mencionado anterionnente, cada vértice en un 11-
cubo representa un minterm de una función booleana de 11 variables. Así cada fun-
ción booleana podrá ser representada visualmente en la forma de un I~cubo mar-
cando aquellos vértices en los que el valor de esa función es 1, Ydejando sin mar-
car los vértices para los que el valor de la función es O. Cada representación en el
cubo es equivalente a la representación en la tabla de verdad de esa misma fun-
ción, dado que hay una cOlTespondencia exacta entre cada fila de la tabla de ver-
134 Principios de diseño digital

dad y cada vértice del n-cubo booleano. En la Figura 4_2, por ejemplo, se muestra
la tabla de verdad y las con-espondientes representaciones con cubos de las cono-
cidas funciones de acarreo y suma, utilizadas ampliamente como ejemplos en el
Capítulo 3.
Para obtener la fonna estándar de una función que contenga el número míni-
mo de operadores, utilizamos el concepto de subcubo booleano. En general, un 111-
subcubo de un ,,·cubo puede definirse como el conjunto de 2'" vértices en los que
n-m variables tendrán el mismo valor en cada vértice, mientras que las m varia-
bles restantes tomarán las 2'" posibles combinaciones de valores O y l. Así cada

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
subcubo puede caracterizarse por los valores de las 11 - m variables que son los
mismos para cada vértice del subcubo. Por ejemplo, si una función booleana toma
valor I en cada vértice delm-subcubo, los 2'" minterms que hacen 1 a la función
en ese subcubo podrían expresarse con un único término de 11 - m literales, que
representa los valores de las variables que son iguales para cada vértice del sub-
cubo. Para demostrar este hecho, sean XI' x2' ... , x"_,,, las variables cuyos valores
son iguales en cada vértice del n-cubo, y sean Ii' 12' ... ,1"_,,, los literales tales que
li = Xi siempre que Xi = 1, Y li = X'i siempre que Xi = O. Entonces el valor de la fun -
ción del m-subcubo es igual a

o..
l/l -m~re 11- 11/+ IX l l/- m+ 2 o.,
x' 11 +x' 11 - 111+ 1. e, ' 11- 111+ 2 o..
x11

Obsérvese que la expresión entre paréntesis representa la suma de todos los


posibles minterms de m variables, que será siempre equivalente a l.
Sobre la base de esta demostración, sabemos que cualquier función booleana
puede ser descrita en una fonna de suma de productos estándar, en la que cada tér-
mino será un subcubo de mintenns que hacen 1 a la función y cada uno de éstos
estará en, al menos , un subcubo. Para minimizar el número de operadores OR de
esta manera, hay que elegir el menor número posible de subcubos que cubran los
mintenns que hacen 1 a la función, y para minimizar el número de operadores
AND hay que elegir los mayores subcubos posibles, que son denominados impli-
cantes primos.
En general, un implicante primo (PI, Prime Implicant) se define como un
subcubo que no está contenido en ningún otro subcubo, y un implicante primo
esencial (EPI, Eselltial Prime Implicallt) es el subcubo que incluye un mintenn
que hace 1 a la función y que no está incluido en ningún otro subcubo. Estos
implicantes primos pueden ser detenninados y seleccionados visualmente en una
representación en cubo, o podemos obtenerlos a partir de una representación bidi-
mensional de este cubo, llamada mapa de Karnaugh o, abreviadamente, mapa.
El mapa es una matriz de celdas organizada en filas y columnas. Las variables
están divididas en variables de fila y de columna, representando cada fila una
asignación particular de ceros (O) y unos (1) para las variables de fila y represen-
tando cada columna una asignación similar para las variables de columna.
En otras palabras, cada celda corresponde a un vértice del cubo, es decir, a un
rninterm de la función booleana. Si el minterm hace 1 a la función se colocará un
Simplificación de funciones booleanas 135

l en la celda, mientras que si la celda está vacía indicará un minterm de valor O


(O-minterm).
En la Figura 4.3 se observa que hay una correspondencia directa entre cubos
booleanos y mapas de Kam augh. En otras palabras, estos mapas son simpleme n-
te representaciones bidimensionales de cubos booleanos. Son más utilizados que
las tablas de verdad simplemente porque pueden identificarse las adyacencias y
pueden , por consigui ente, ayudar a la determinación de los subcubos.

010 0 11

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
c, X, y, c", s,

O O O O O 100 10 1

O O l O l (b) Función de acarreo C'd


O l O O l
O l l ¡ O
0\0 0 11
O O O 1
O l O
1 O O
¡ ¡ l

ta) Tabla de verdad

100 JOl

(e) Función de suma S I

FIGURA 4.2 Representación de las funciones de suma y acarreo con cubos booleanos.

La Figura 4.3(a), por ejemplo, es un mapa de una sola variable compuesto por
dos celdas que indican x = O Y x = l . Este mapa podría ser utili zado para repre-
sentar las cuatro funciones de una sola variable: O, x, x' y 1. Sin embargo, como
las expresiones para estas funciones son fáciles de recordar, este mapa se usa rara-
mente. Un mapa más utilizado es el de la versión con dos variables mostrado en
la Figura 4.4(a). Este mapa conti ene cuatro celdas, que representan los cuatro
minterms de una función booleana de dos variables, a saber, x'y', x'y, AY ', xy . El
subcubo más grande en un mapa de dos variables es un I-cubo. que representa una
variable o su complemento. Por ejemplo, la Figura 4.4(b) muestra tres de estos
subeubos de tamaño l. Un mapa de dos variables podría utili zarse para represen-
tar cada una de las funcione s de dos variables. Como ejemplo, las funciones boo-
leanas ANO, OR Y XOR se muestran en la tabla de verdad de la Figura 4.5(a) y,
también, en los mapas de la Figura 4.5(b), (e) y (d).
En la Figura 4.6(a) se presenta un mapa de tres variables que contie ne ocho
celdas, correspondientes a los ocho minterms de una función booleana de tres
136 Principios de diseño digital

variables. A partir del mapa puede verse que los subl:ubos mayores tienen tama-
ño 2 y que estos subcubos pueden expresarse con un solo literal. En la Figura
4.6(b) se muestran tres de los seis posibles subcubos de tamaño 2. y en la Figura
4.6(c) se indican varios subcubos de tamaño 1.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
lal 11: 1
,.
., o 1
1110 mi
O

1
I1I J 1113

(b) 11: 2

\
- ()() 01 11 10
1110 111 , 11/ I11 J
)
1... ~
1
L ~
11/ "'j 111 _
m"
(el 11=3

.\y
-
-\1' 00
n
01
n
II
n
10
n
00
l 11/ 111 , 11/ 111: iJ
ol e m(¡ ~
11I.J 11/ 11/
5

I
lo
" '-
" 13 m¡ m I.J iJ
o
1... 11ls m,) 111 11 m I(! P
J U U U
(d) 11=4

FIGURA 4.3 Cubos booleanos y mapas de Karnaugh correspondientes, para n = 1, 2, 3 Y 4.

Como ejemplo de representación de mapa, en la Figura 4.7 se han presentado


la tabla de verdad y los mapas de las funciones de acarreo y suma definidas en el
Simplificación de funcione s booleanas 137

Capítulo 2 Y utilizadas como ejemplos en el Capítulo 3. Téngase en cuenta que la


función de acarreo podría expresarse como la suma de tres subcubos de tamaño 1:
x ,-.)'I.. ex·
I I
y c /-.vI.. Como puede observarse en el mapa. los tres subcubos son impli-
cantes primos esenciales. ya que cada subcubo contiene un minterm que no está
incluido en ninguno d~ los demás subcubos. Por otra parte, la funci ón suma no
puede simp lificarse ya que no tiene subcubos con dos o más minterms en su repre-
sentación de mapa. En otras palabras. la función suma no presenta una forma
estándar que difiera de su forma canónica.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
\. y
o x o
o ",," -,,' x\ () ~S uhc u bo x'

:S ubcubo y

xy xy ~S u bc ubo x

( a) Orgunización con mapa (b) Ejemplo de s uocubos de (amafio 1

FIGURA 4.4 Mapa de dos variables.

, " o 1

II

1 I

(b) ANO: .\) '

.< o 1

X Y AN D OR XOR () I

O O O O O
1 I I
O I O I
O O I
I I O (c ) OR: x + )'

(a) Tabla tic verdad


II 1

O I

1 I

(d) XOR: x'), + xy'

FIGURA 4.5 Representación con mapas de tres funciones booleanas de dos variables.
138 Principios de diseño digital

y.:
x ()() DI 11 ID

O
X'Y ' l ' x 'y'z x ' )'.: X l)'.: '

xy ' ;: ' .\)".;: xy.: xy:: '

(al Organización del mapa

,
,,--
()() DI 11 lO

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
x

O
-- - - - ,- - - :

-V- :
, - - '1-
,r -'- - - - - , x

- -- -- --
I
-_ - I

(bl Ejemplo de subcubos de tamaño 2

y:
()() 01 11 10

O • _ 1

,
'1
I ~ .r.:'

(e) Ejemplo de subcubos de tamaño I

FIGURA 4.6 Mapa de tres variables.

En la Figura 4.8(a) se muestra un ma pa de cuatro var iables, que contiene 16


celdas, correspondientes a los 16 mi nterms de una función de cuatro variab les.
Cada celda del mapa es adyacente a otras cuatro celdas que difieren en el valor de
una variable, incluyendo las celdas de los extremos del mapa, En el caso de las
celdas de los extremos, recordamos que el mapa representa un 4-cubo y que una
celda en la fi la superior y la celda en la fila inferior de la misma columna son
adyacentes entre sí, como lo son una celda en la columna de la izquierda y la celda
en la columna de la derecha de la misma fi la, Teniendo 'esto en cuenta, en la
Figura 4.8(b) y (e) se muestran algunos ejemplos de 2-subcubos y de 3-subcubos
en un mapa de cuatro variables.
Como ejemplo de función de cuatro variables, considérese un comparador de
dos bits que compara los números binarios de dos bits x = xlxO' y = y¡'Yo' cuyos
valores pueden ser O, 1, 2 ó 3. En este comparador la func ión mayor que, G. es
igual a I siempre que x> y, mientras que la función menor que, l, es igual a I
siempre que x < y. La fu nción de igualdad, E, que indica x = y, puede obtenerse a
Simplificación de funciones booleanas 139

partir de Gy L , ya que E= (G + L)', En la Figura 4.9(a) se presenta la tabla de ver-


dad de G. Ey L, mientras que en las Figuras 4.9(b) y (c) pueden verse las repre-
sentaciones de mapa de las funciones G y L. Obsérvese que las funciones G y L
son simétricas con respecto a la diagonal principal, y que cada una puede descri-
birse como la suma de un 2-subcubo y dos I-subcubos. Téngase en cuenta tam-
bién que cada uno de estos subcubos es un implicante primo esencial.

",
, 00 01 11 10

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
O 1 ,
,
el XI YI CÍ+ l s¡ 1 1 1
-~
1

O O O O O
O O l O 1
O l O O I
O I I I O X,Y,.
I O O O I e, 00 01 11 10

I O 1 I O
O 1 1
I I O I O
I I I I I
1 1 1
(a) Tabla de verdad

le ) Func ión suma:

FIGURA 4.7 Representación con mapas de las funciones acarreo y suma.

Desafortunadamente. los mapas que se utilizan para representar fun ciones de


cinco y seis variables no son tan útiles como los mapas de dos, tres y cuatro varia-
bles, simplemente porque, a este nivel de complejidad, la adyacencia es más difí-
cil de visuali zar. Por ejemplo. en el mapa de cuatro variables cada celda era adya-
cente a otras cuatro celdas: por arriba, abajo, izquierda y derecha. Para mostrar
estas adyacencias en un mapa de cinco variables, si n embargo, es necesario uti-
li zar dos mapas de cuatro variables colocados uno junto al otro, como se indica en
la Figura 4. \O(a). En esta representación se supone que el segundo mapa se super-
pone sobre el primero como si se crease un objeto tridimensional. Con esta idea,
cada celda puede verse adyacente a otras cuatro en su propio mapa. así como a las
celdas que están en la mi sma fila y columna del otro mapa.
En la Figura 4. \O(b) se muestran varios ejemplos de 3-subcubos y 4-subcubos
dentro de este mapa de cinco variables. Los subcubos que abarcan ambos mapas
se reconocen fácilmente ya que contienen dos mitades que ocupan el mi smo lugar
en ambos mapas. En otras palabras, un ",·subcubo podría representarse por dos
(m - l )-subcubos idénticos, uno en cada mapa, o por un único I/!·subcubo conte-
nido en sólo uno de los mapas.
140 Principios de diseño digital

Pueden obtenerse concl usiones simil ares para los mapas de seis variables
como el mostrado en la Figura 4.11 (a) . En este mapa se puede observar que un II~
subcubo podría contener ( 1) cuatro (111 - 2)-subcubos que ocupan la mi sma pos i-
ción en los cuatro mapas, (2) dos (nI - I)-subcubos que aparecen en la mi sma
posición en dos mapas adyacentes, ó (3) un único n~ s ubcubo que aparece en sólo
uno de los mapas. En la Figura 4.ll (b) se muestran varios ejemplos de estos 4-
subcubos.

~ \\ '

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
'! 00 01 11 10

_I"~";:' II" .(\".:'11' \ '\" ;::11' \J \~; II '


00

11 1 ,\Jy;:'w' x'y;:'lI' .(\';;11' .<)'':11''

11 .\~\·;::' h" .1.)'.:'11' X'I'':II ' .n';:!!"

lO .\)':',,! ')'.:'11' .,,/~u · .\)":11 '

(a) Organización cI\!l mapa

;:w
.,'y 00 01 11 10

00

11 1
-~
11
-~
10

(b) Ejemplos de 2 sulx:ubos 4

':1\'

'Y 00 01 11 111

00

01 "
-z.-
11
,
111
-
(e) Ejemplos de J ·subcubos

FIGURA 4.8 Mapa de cuatro variables.


Silllpliticación de funciones booleanas 141

,I'/."¡)

XI x. ()() 01 11 10

00

111 1'
X, "'o y, Yo G E L
-
O O O O O I O 11 1 1 1
O O O I O O I
O O I O O O I

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
O O 1 I O O I 10 1 1 ,

O I O O I O O
Cb) FunC ión "mayor que":
O I O I O I O
O I I O O O I
e == x IY') + XI ~\" IYtl + x l x'f~r'lI

O I I I O O I y/ro
I O O O I O O IlO 111 11 10
.1' 1.\'{J
,
I O
O
O
I O
1
O
I O
I
O
O 00 ,, =,í
'~ _.J
,
O I I O O I ,
, ,
I
I
O
O
O
I
I
I
O
O
O
O 11 1 ', , ,'
I I O I O O
- - -
I I O I O 11

(a) Tabla de verdad


10
,-
,
(e) Función "menor que":
L = xl .Y I + x'l x' U.)!I) + .t' o.\" Ir 'U

FIGURA 4.9 Representación de las funciones "mayor que" y "menor que" en los mapas.

,' = o 1' ::: I

,
.,y 00 01 11 10 00 111 11 111

00 m, m, mJ7
111 1 111: 11I /1j m i" 111 ' .1(

111 m~ /11 , m· m~ 111


10 11/1/ 1II
1J 111 ~]

11 m,; m i' m ,~ m l.~


m" II/ }II I1l J¡ 111 '/1

10 m" m~ m il 111 1" f11].J 111 ,:5 mn 1tI ]f¡

(a) Organizaci6n del mapa

FIGURA 4.10 Mapa de cinco variables.


142 Principios de diseño digital

1' "" O l' = I

-
X) 00 01 II 10 00 01 II JO

00
,- -- - - - - - - - -,- -
, , ,
~
- - - - . ---- ---
,-.- ,
- -
x'
, , 7-

,, ,, , , , ,: ~
, , ,,
01
, , ,, , ,,
- -- - - -- , •, ,1- ,, ,
II ,- - - . - ,, ,,, ,, ,.- - - - ", ,,
, , ,
.- , I 'IV
,,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
, ,
,

.. ,, ,
,

, , , , , , , ,
,
-.,- .
, ,
10
-.- -
I ,
I

-
- ', ' J.
- -- -
- •
-
x ~'
_. - - - - - ':... ----------, - I
-
(b) Ejemplo de subcubos de tamaños 8 y 16

FIGURA 4.10 Continuación.

1' = 0 l' = I

- 00 01 II 10 01
X) 00 II 10

00
111 0 "' 1 111 ./ 111 ] "' ", 111 / 7 m 'li 111 / 8

01 m, /II
j 111 7 m, II/ :!u 111 1/ 111 n 111 ]1

11= 0
II 111 / 1 m 1.1 111 /5 m ,.J 111 18 m 1\1 "' .11 '" ./11

10 m, m. m il 111 / 0 m:u 111 1$ m !j 11/


1fl

00
1/1 J1 '" J J '" J 5 111 ) .J 1II .¡;oJ III.JII
"'5' 11/ jll

OI 111 .i7 111 ) 11 111 5: 111 5J nl J5 111 54


Tn j " '" j S
11 = J

II
'" .¡~ m '¡J 111 .0 111 46 /I/ (¡(} 111 ",/ 111 6J 111 6.":

10 11140 1Il .J1 m .1) tt1"z 111 56 m 57 111 51¡ 111 J,~

(a) Organización del mapa

FIGURA 4.11 Mapa de seis variables.


Simplificación de funciones booleanas 143

I' = o 1' = 1

<)'
- 00 01 11 10 00 01 11 10

00
--
o

o I
o o
oo
..
o lo I
01 o I · 1- - - _. - - - ~-

u=o o I
o
11 o - ,...- r---L-- XI'

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
o o

o o o o o
10 -'_..i. _____ • • . - j ..
o~
--- e· -
-t-
oo
- - _.J "

r-~_r----r_--._--_. ' o
-~
o rol. __ .. ___ _
• _
..
• I
.1 t

I oo
o,
"r- - - -
I

,...- r---z- x::


o
o
e· - -- e
o

. ---
o

(b) Ejemplo de subcubos de tamaño 16

FIGURA 4.11 Continuación .

4.2. MÉTODO DE SIMPLIFICACiÓN CON MAPAS


Como se ha mencionado anterionnente, el propósito fundamental de estas repre-
sentaciones con mapas es ayudar a simplificar formas estándar reduciendo el
número de operadores que contienen. Como se indica en la Figura 4. 12, el proce-
dimiento para la reducción de operadores, llamado usualmente método del mapa,
consta de cuatro pasos básicos.
GENERACIÓN DEL MAPA. El primer paso consiste en convertir cualquier otra
representación de una función booleana dada en una representación con mapa.
Una tabla de verdad, por ejemplo, se convierte en un mapa colocando un I en las
celdas correspondientes a los minterms que implican a la función. De igual
modo, una forma canónica se convierte en un mapa insertando un I para cada
minterm en dicha forma. Una forma estándar puede, bien expandirse en una
forma canónica primero, o puede convertirse directamente insertando (n - m)
unos en cada (n - m)-subcubo del mapa para cada término de m literales en la
forma estándar.
144 Principios de diseño digital

GENERACIÓN DE IMPLlCANTES PRIMOS. En el segundo paso. se desarro-


lla una lista de implicantes primos inspeccionando cada l-mintenn, obten iendo el
mayor subcubo posible de l-minterms que incluya el minterm en cuestión , yaña-
diendo ese subcubo a la li sta de implicantes primos. Si se encuenh"<m dos o más
subcubos diferentes. se añadirán todos a la lista. Por otra parte, si vo lvemos a
encontrar un subcubo que ya está en la li sta, no se añadirá por segunda vez.
SELECCIÓN DE IMPLlCANTES ESENCIALES. En el tercer paso, buscamos
todos los l-minterm que estén incluidos en sólo un implicante primo, ya que este
implicante es un implicante primo esencial y será añadido automáticamente a la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
lista de cobertura, que se expli ca a continuación.
CREACIÓN DE LA COBERTURA MíNIMA. El propósito de este paso es gene-
rar una lista de cobertura que contenga el menor número posible de implicantes
primos, que se se leccionarán de manera tal que cada l-minterm esté contenido en,
al menos, un implicante primo. Hay varias forma s de crear esta lista, siendo la
más sencilla la denominada manera codiciosa, que se explica a continuación. En
este método se obtiene el implicante primo que contiene el mayor número de 1-
minterms no cubiertos, y se traslada de la li sta de implicantes primos a la li sta de
cobertura. Si aparecen dos implicantes primos que incluyen a la vez el mi smo
número de mintenns no cubiertos, se elige uno aleatoriamente. Este procedi-
miento se repite hasta que todos los minterms hayan sido cubiertos. El ejemplo
siguiente muestra una aplicación de este método.

EJEMPLO 4.1 Método del mapa


PROBLEMA
Uti li zando el método del mapa. simpli ficar la [unción booleana F= IV'V': ' + IV: + xy: + 11'\' .

SOLUCIÓN
Siguiendo el procedimiento descrito en la Figura 4.1 2. primeramente se genera un mapa a par-
tir de la expresión algebráica dada, insertando unos en todos los subcubos que se dan en la
expresión. En este caso, estos suhcubos son w'y ': ', wz, xy:.: y w 'y. como se muestra en la
Figura 4.l3(a) . Obsérvese que el ténninoxyz es redundante ya que sus minterms x'v:1I' y .1'.1': 11'
están incluidos en los subcubos w;::: y w 'y, respectivamente.
Una vez desarrollado el mapa de cuatro variables. se determinan todos los implicantes
primos y se genera un a li sta PI. como se muestra en la Figura 4.13 (bl y (e). Para generar
la lista PI. se inspecciona cada l-minterm y se añaden a la lista todos los implicantes pri-
mos que contengan a ese minterm. Como se mencionó anteriormente, si se encuentra un
implicante que ya está en la lista. no se duplica.
En nuestro caso se empieza con el minterm 11l{J el cual está contenido en el implicante
primo w 'z '. El rn.interm 11~ está contenido en dos implicantes primos, w'y y \V'':: . Ahora. sin
embargo, sólo se añade \V 'y a la lista, ya que lV'Z ' ya está en ella . De igual forma, el min-
term 1113 está contenido en y.:: y HI 'y, pero sólo yz se añade a la li sta. Los millterms 11l4 , 111 6 Y
1117 no proporcionan ningún nuevo implicante primo a la li sta. Sin embargo. el minterm 1119
añade HlZ a la lista. Como ninguno de los restantes minterms añade nuevos im plicantes pri-
mos a la li sta, sabemos que la lista PI completa contiene cuatro implicantes primos, eOl11o
se indica en la Figura 4. 13(e).
Simplificación de funciones booleanas 145

Tabla de verdad, fonn a canónica


o fomla c.sul.ndar

Generación del mupa

Dctenninación de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
implic:lnlCS primos

Sclccó ón de implicanlcs
primos cscnci:llcs

Obtención de la cobcrtur...
mínilllll

Forma estándar

FIGURA 4.12 Método del mapa para simplificación booleana.

,.. ,..
.'
·X (KI 01 11 10 ,',\- {)(I 01 11 10
"
I~I 1 I I I I I
, ,
01
I I I , I , I , I
'.
,
..
"

11
1- --- -
I I ,I I

, , ,
10 I I ,I , I(
I I
~ ~ ~ ~ 11 11 ~ ~
11//:' 11" )' w'.:;' w;: y:: lI"y

(<1) Representaci6n con mapa (b) Implicanles primos en el mnpu


lisIa PI: w'z'. 11'::. y:, lI" y
Lista EPI: IV'::', 11';:
Listas de cobcrtuT:I : ( 1) w';:', 11':" y: ( 1) F=w';:' +II':: +y::
(2) 11";:', 11'::, \1".1' (2) F=II" ::' +w:+ \\"y

(e) PI. EPI Y liSIas de cobcnura (d) Dos expresiones de la función

FIGURA 4.13 Simplificación booleana.


146 Principios de diseño digital

En este punto se puede realizar el tercer paso seleccionando los implicantes primos
esenciales. Como puede verse, los minterms 1110 y 11/
4
están cubiertos únicamente por el
implicante primo \V'z' , mientras que los minterms y 11113 están cubiertos sólo por el
1119
implicante primo wz. Por tanto, la lista de implicantes primos, o lista EPI, contiene los dos
implicantes primos w': ' y WZ, como muestra la Figura 4.l3(c).
Finalmente, es necesario obtener el minimo número de implicantes primos que cubran
a los restantes minterms 11/
3
y 1I!7' En el mapa de la Figura 4.l3(b) se observa que ambos
mintenns están cubiertos por y.: y por w'y. Como ambos imp licantes primos tienen el
mismo tamaño. cualesquiera de ellos puede elegirse como cobertura final. Por este motivo,
la Figura 4.l3(c) muestra dos listas de cobertura diferentes y la Figura 4.l3(d) muestra dos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
expresiones simpl ificadas, teniendo cada una de ellas el mismo número de operadores.
Observe que cada una de estas expresiones simplificadas requiere tres operadores ANO y
dos operadores ORo en contraste con los seis operadores ANO y los tres operadores OR que
requería la expresión original. En otras palabras, nuestro procedirn.iento de simplificación
ha obtenido una reducción en el número de operadores ANO del 50%, y en el número de
operadores OR una reducción del 33 %.

Aunque el procedimiento descrito anterionnente ha sido efectivo en el caso


considerado, no siempre esta estrategia conduce a la obtención del número míni-
mo de implicantes primos. En algunos casos, por ejemplo, el tamaño de la cober-
tura final se ve afectado por el orden en el que los implicantes primos hayan sido
seleccionados, como puede verse en el siguiente ejemplo.

EJEMPLO 4.2 Selección de implicantes primos


PROBLEMA
Simplificar la función booleana F= w'x 'y;: ' + w'.xy + wxz + wx 'y' + w'x'y ';:'.
SOLUCIÓN
En la Figura 4.l4(a) presentamos el mapa generado a partir de la expresión anterior. Como
puede verse, este mapa muestra que hay ocho implicantes primos pero no esenciales para
esta función . Además, la Figura 4.14(b) muestra que se pueden obtener dos coberturas com-
pletamente diferentes para esta función , requiriendo ambas el mismo número de operado-
res.
Obsérvese que seleccionar los implicantes primos para cada cobertura es una tarea ( ji i-
cil ya que se está obligado a seleccionar implicantes primos aleatoriamente. una vez o ue
todos los implicantes primos tienen el mismo tamaño. Sin embargo, si primero se seleccio-
na el implicante primo w 'x 'z ' y después el implicante primo xy::::, son necesarios tres impli-
cantes primos más para completar la cobertura. En otras palabras, se necesita un implican-
te primo más que los utilizados en cada una de las dos coberturas mostradas en la Figura
4.14. cada una de las cuales requería sólo cuatro implicantes primos. Téngase presente tam-
bién que estas dos coberturas mÍnjmas son djsjuntas. ya que no tienen implicantes primos
en común.

En el Ejemplo 4.2 se ha demostrado que el orden en el que se seleccionan


implicantes primos puede ser extremadamente importante y que el procedimien-
Simplificación de funciones booleanas 147

to heurístico descrito en la Figura 4.2 no siempre será suficiente para obtener las
coberturas mínimas. En la Sección 4.4 introduciremos un procedimiento alterna-
ti vo que puede ser seguro a la hora de obtener todas las coberturas mínimas de una
función booleana dada.

1"
"
WJ 00 01 11 10

00
,
,-- ,, 'i ,r
~

_1 ,
-- -- 1_' __
,-,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
r

01 1 ,
L. _ •
1, '
IL _1_
, , T --" ,
r -, , ,
11
"" JI,-, <
-1"
___- i t

,- 1- - ¡' - 111,
- - ,-- ..:-'
10

(a) Represe ntación con mapa

lisia PI: w/x';:', lI" xy. IVX¿ II'X')", .r'y'z', w)":. xy.:. w'y:;:'
lisia EPI: vacía
LiSias de cobertura: (1) w'x'.:' , w ',l}'. II'X:. Il'x'y'
(2) x')t:.', wy'::. xyz. w')'r

(b) PI. EPI Y liSIas de cobertura

FIGURA 4. 14 Ejemplo de simplificación booleana.

4.3. INDIFERENCIAS
En secciones previas hemos considerado solamente aquellas funciones booleanas

°
que están completamente especificadas, es decir, hemos asumido que una fun-
ción toma el valor ó I para cada combinación de los valores de las variables.
Bajo esta hipótesis, se podría definir cada función booleana en términos de un
conjunto de O-minterms y de un conjunto de I-minterms. Sin embargo, en la prác-
tica se especifica sólo el conjunto de I-minterms y se supone que todos los min-
terms que no están en ese conjunto son O-minterms. No obstante, en muchas apli-
caciones una función booleana no está especificada para ciertas combinaciones de
los valores de las variables, ya que dichas combinaciones nunca se presentan. Por
ejemplo, el código BCD para dígitos decimales utiliza sólo 10 de las 16 posibles
combinaciones para especificar los dígitos decimales al 9. En otras palabras,
seis de esas combinaciones, que representan los números 10, 11 , 12, 13, 14 y 15
°
nunca se utilizan. Por este motivo, cualquier función booleana que use el código
BCD como entrada tendrá que ser considerada no especificada para las combina-
ciones que representan los números 10, 11 , 12, 13, 14 Y 15. Una función boolea-
na de este lipo, que tiene salidas no especificadas para algunas de las combina-
ciones de entrada, se denomina función incompletamente especificada, y los
148 Principios de diseño digital

minterms para los que la función no está especificada se denominan minterms


indiferentes (d-mimerllls, don '( care lIlinterllls) O indiferencias.
Las indiferencias pueden utilizarse para si mplificar más la expresión boolea-
na de una función incompletamente espec ificada. Ya que estos mintenns con indi -
ferencias nunca se presentan, podemos asignarles un valor funcional de O o I de
manera que se creen subcubos de implicantes primos mayores y, por tanto, se
obtengan expresiones funciona les más pequeñas. Dentro del propio mapa distin-
guimos estas indiferencias de los valores O y I colocando una Xen la celda corres-
pondiente, lo que indica intuiti vamente que es indiferente el valor O ó I asignado

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
al minterm concreto.
Cuando se utilizan mapas con indiferencias, durante la generación de impli-
cantes primos, se inspecciona cada I-minterm, buscando el subcubo mayor posi-
ble de I-minterms y, en este caso, de mintenns con indi ferencias que incluyan al
minterm en cuestión y después se añade este subcubo a la li sta de implicantes pri-
mos, si no está ya incluido. En otras palabras, implícitamente asignamos un valor
funcional de I a todos aquellos minterms que estén incluidos en al menos un
implicante primo y asignamos el valor O a los restantes. Se desc ribe este procedi-
miento en el siguiente ejemplo.

EJEMPLO 4.3 Simplificación con indiferencias


PROBLEMA

Obtenga expresiones booleanas para el complemento a nueve de un dígito BCD.


SOLUCIÓN

Sabemos, de la Sección 2.5 , que el complemento de un número decimal es igual a su com-


plemento a nueve incrementado en l. Además. se sabe que el complemento a nueve de un
número decimal puede obtenerse restando de 9 cada uno de sus dígitos. Por consiguiente.
los complementos a nueve de los dígitos O. 1,2.3,4,5,6,7,8 Y 9 son 9, 8, 7, 6, 5, 4,3,2,
l Y O, como se muestra en la Figura 4. 15(a). Si suponemos el código BCD, cada uno de
estos dígitos está representado por el número binario de 4 bits x 3.\'"..-,xO' y su complemento
a nueve por otro número binario de 4 bits YJY2YIYO' como se inctica en la misma figura .
Como puede verse. las combinaciones 1010, 1011 , 1100, 1101 , 1 l \O Y 11 l l nunca se utili-
zan para codificar el complemento a nueve de los dígitos decimales. Estas combinaciones
representan las indiferencias de las cuatro funciones booleanas que definen la codificación
del complemento a nueve. A partir de la tabla de dígitos decimales y de su complemento a
nueve mostrada en la Figura 4. 15(a). podemos obtener las representaciones de mapa mos-
tradas en la Figura 4. 15(b). Obsérvese que las seis combinaciones de indiferencias han sido
indicadas con el símbolo x en cada uno de estos mapas.
Para reducir el número de témlinos en la expresión booleana y el número de literales en
cada término, se deben asignar los valores apropiados a las indiferencias en cada mapa. Por
ejemplo, al simplificar la expresión de .1'3 asumimos que todas las indiferencias tienen el
valor O, lo que hace. que -"3 = x' / >-,,' ,.
Alternativamente. la expresión para y, se simplifica asumiendo que sólo dos de los min-
term s indiferentes. 1'11'14 y mi S' tienen valor O mientras que todos los demás tienen valor l .
De igual forma. cuando se simplifica la expresión de Y ,. se supone que los minterms indi-
Simplificación de funciones booleanas 149

ferentes 11/. 10 ' 111 1 p l1l 14 Y m 15 ti enen el va lor 1. y en la expresión de Yo' qu e los minterms 1Il~.
111
11
Y f1l 14 son iguales a l.
Si no se utilizaran estas indiferencias, se obtendría un literal extra por término en las
expresiones para Y 2' YI' Yo' además de un ténnino extra en la expresión para yO" Es innecesa-
rio decir qu e estos minlerms indiferentes pueden utili zarse de manera similar para simpliti-
caciones en fann a de producto de sumas O en otras formas no estándar, indistintamente.

DIGITOS COMPLEMENTOS A NUEVE


DECIMAL BCD DECIMAL BCD

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
X3X2X1 Xo Y:¡Y2Y,YO

O 0000 9 100 1
0001 8 1000
2 0010 7 01 1 I
3 00 I 1 6 01 10
4 0100 5 O1O1
5 O 10 I 4 0100
6 01 10 3 00 I I
7 O1 1 1 2 O O 10
8 1000 I 0001
9 100 1 O 0000

(a) Tabla de complementos a llueve

1" 1"

,, , " 00
¡' o
01 11 [(1
,,.,
•1'. 00 01 11 10

(K) I I 00 I I

01 01 I 1,

11 X X X X 11 X X X X

10 X X 10 X X

,,
,, "'"" O( ., ,, , " no
'. '" 11 10
.'
I
01 11 10

I
00 I I 00

01 I I 01 I I

11 X X X X 11 X X X X

10 X X 10 I X , X

(b) Representación con mapa

FIGURA 4.15 Simplificación de funciones de complemento a nueve.


150 Principios de diseño digital

El ejemplo anterior ha mostrado que, en un mapa dado, los minterms indife-


rentes pueden utilizarse para nuestro beneficio, ya que podemos elegir un valor
funcional O o I como asignación a esos minterms indiferentes, dependiendo de sus
posiciones en el mapa. Una vez realizada esta elección, la función incompleta-
mente especificada se transformará en una completamente especiticada, cuya
expresión ya no indicará qué elección fue hecha al asignar O ó 1 a los minterms
indiferentes.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
4.4. MÉTODO TABULAR DE SIMPLIFICACIÓN
Como se desprende de la Sección 4.3, el método del mapa es esencialmente un
procedirrilento de tanteo ya que requiere que una persona reconozca patrones de
subcubo en el mapa. Cuando el número de variables es mayor que seis, se hace
muy difícil reconocer subcubos y seleccionar un conjunto mínimo de implicantes
primos.
En contraposición, el método tabular no tiene estas desventajas ya que no
depende del reconocimiento de patrones. Claro que este método de tabulación es
algo más tedioso para los diseñadores, que son propensos a cometer errores con
este largo y monótono proceso. Sin embargo, es conveniente para su realización
en un computador ya que busca casi exhaustivamente los implicantes primos y
obtiene eventualmente todas las posibles coberturas. Muchas herramientas CAD
modernas utilizan variantes de este método, que ini cialmente fue propuesto por
Quine y más tarde mejorado por McCluskey, por lo que es conocido frecuente-
mente como método de Quine-McCluskey.
Este método tabular de simplificación booleana empieza con la forma canó-
nica de suma de productos y consta de dos pasos. En el primer paso, se obtienen
todos los implican tes primos de una función booleana dada. En el segundo paso,
se identifican los implicantes primos esenciales y se utilizan para obtener todas las
coberturas mínimas.

4.4.1. Generación de implicantes primos


Para determinar todos los implicantes primos, el método de tabulación requiere,
en primer lugar, comparar cada minterm en forma canónica con todos los demás
rrilnterrns y obtener todos los subcubos de dimensión l o I-subcubos. En otras
palabras, se intenta obtener todas las parejas de dos minterms que difieren en el
valor de una sola variable. Este proceso de comparación se suele acelerar, prime-
ro, agrupando aquellos minterms que tienen el rrilsmo número de variables cuyos
valores son iguales al, lo que se denorrilna número de unos, y entonces se orde-
nan estos grupos en orden ascendente por su número de unos. Agrupando y orde-
nando de esta manera, se obtienen cualesquiera dos minterms que difieren exac-
tamente en una variable, comparando los minterms de un grupo con los rrilnterms
del siguiente grupo únicamente. Por medio de esta comparación, se genera un
Simplificación de funciones booleanas 151

número de l-subcubos que pueden ser agrupados y ordenados de acuerdo con su


propio número de unos. Después, se comparan los nlintenns de los dos grupos de
l-subcubos, cuyo número de unos difiere en uno, y se generan los 2-subcubos.
Este proceso puede repetirse tantas veces como sea necesario hasta que no se
generen nuevos subcubos, o hasta que todos los nlintenns se hayan agrupado en
un n-subcubo, lo que significaría que la función es igual a l. En el siguiente ejem-
plo utilizamos la función booleana presentada en el Ejemplo 4.1 para describir
este pr..0cedinliento.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
EJEMPLO 4.4 Generación de implican tes primos
PROBLEMA

Generar todos los implicantes primos para la función F definida originalmente en el mapa
de la Figura 4.13(a), y que se vuelve a mostrar en la Figura 4. I 6(a).
SOLUCIÓN

De acuerdo con este mapa, la forma canónica de esta función contiene diez I-minterms que
pueden agruparse en cinco grupos: G o' G" G2 , G 3 Y G4 . Cada grupo G" donde O ~ i ~ 4,
contiene aquellos mintenns cuyo número de unos es igual a i. Por ejemplo, el primer grupo,
G Ol contiene sólo el minterm mo ya que este mintenn representa la combinación wxyz =
0000, y su número de unos es igual a O. De igual forma, el grupo G, contiene los rninterms
111, y 111 4, ya que estos minterms representan las combinaciones w.1yz = 0010 Y wxyz = 0100,
cuyo número de unos es igual a l. Se pueden definir los demás grupos del mismo modo.
Cada grupo contiene minterms que pueden ser considerados como O-subcubos, como se
muestra en la lista de O-subcubos de la Figura 4.16(b).
Como puede verse en esta lista, cada elemento (fila) contiene cuatro campos: el nom-
bre del grupo, G" los índices de los minterms incluidos en el subcubo concreto, los valo-
res de las variables del subcubo y una etiqueta que indica si ese subcubo está cubierto o no
por un subcubo mayor. La etiqueta se pondrá a " SI' o " no" después de haber generado la
lista de posteriores subcubos mayores_ Obsérvese que, al contener la forma canónica 10
minterms, esta lista de O-subcubos contendrá 10 elementos que ocuparán cada uno de ellos
una fila.
Para generar una lista de l-subcubos, necesitamos comparar cada uno de los minterms
del grupo G, con cada uno de los mimerms del grupo G,+,. y generar un I-subcubo por
grupo G, en la lista de I-subcubos si estos minterms difieren en una variable. Por ejemplo,
de acuerdo con la Figura 4.16(b), el minterm /lb puede combinarse con el minterm 111, para
generar un l-subcubo que contenga a "ú y n~ y tenga los valores en la variables wxyz =
00-0. Este I-subcubo puede representarse por IV 'x'z' . De igual forma. el minterm /lb puede
también combinarse con el minteml m4, generando un l -subcubo cuyos valores en la varia-
bles son wxyz = 0-00, y que se representa por IV 'y'~ '. Hasta ahora, pues. se ha completado
la generación de I-subcubos para el grupo Go' ya que no hay más parejas de minterms cuyo
primer minterm esté en el grupo Go y cuyo segundo esté en el grupo GI' Utilizando esta
misma técnica, se pueden generar el resto de I -subcubos para los grupos G" G, y G, .
Téngase en cuenta que, como cada mintenn en la lista de O-subcubos ha sido utilizado en
al menos un I-subcubo, se ha insertado un "sr' en cada fila de la cuarta columna de la
Figura 4.16(b).
152 Principios de diseño digital

,-,
VALOR DEL
1\'\ (JO 01 II 10
lDENTI FICAC ~ MINTERMS SUBCUBO SUBCUBO
(JI) t I t DE GRUPO DELSUBCUBO w X y z CUBIERTO

Gn (O) O O O O sí
(JI t t t G, (2) O O 1 O sí
(4) O 1 O O sí
II t I G, (3 ) O O I 1 sí
(6) O 1 1 () sí

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(9) 1 () O I sí
111 t I
G, (7) O 1 I :-.í
( 11 ) O I sí
(al l{ ~preselllacion con mapa (13) 1 O sí
G, ( 15 ) sí

lb) Li~I;1 JI.' () -~ utx:uho~

VALOR DEL
IDENTIFICACION MINTERMS SUBCUBO SUBCUBO
DE GRUPO DELSUBCUBO w X y z CUBIERTO

Gn (0, 2) O O - O sí
(0,4) O - O () sí
G, (2. 3) O O 1 - sí
(2,6) O - 1 O sí
(4,6) () 1 - O sí
G, 0.7) O sí
(3. 11) - O 1 sí
(6. 7) O 1 1 - sí
(9, 11 ) 1 O - sí
(9. 13) 1 - O sí
G, (7. 15 ) - 1 1 ) sí
(1 1. 15) - 1 1 sí
( 13. 151 - 1 sí

VALOR DEL
IDENTIFK:ACION MINTERMS SUBCUBO SUBCUBO
DE GRUPO DEL SUBCUBO w X y z CUBIERTO

Ga (0, 2. ~. 6) O - - O no
GI (2. 3. 6. 7) O - I - no
C, (3.7, 11.1 5) - - no
(9. 11. 13. 15) 1 no

FIGURA 4.16 Generación de implicantes primos.


Simplificación de funciones booleanas 153

Una vez obtenida una li sta completa de I-subcubos, se puede generar una lista de 2-sub-
cubos, como se indica en la Figura 4. 16(d). Como puede observarse, cada uno de los 2-sub-
cubos en esta lista contiene cuatro mintenns y pueden describirse por un término de dos
literales. De nuevo, estos 2-subcubos se han generado comparando los I-subcubos de dos
glll pos anteriores de la listu de I-subcubos y combinándolos en 2-subcubos si difieren en
una variab le exactamente: es decir, se genera un 2-subcubo siempre y cuando haya una
variable en ambos l -subcubos que tenga un valor O en uno de ellos y un valor I en el otro.
Obsérvese que «- » no es una indicación del valor de la variable sino que es un a indiferen-
cia para una variable que ya ha sido e liminada de la expresió n. Como se observa en la
expresión 4. 16(d}, compara ndo todas las parejas de I-subcubos de la Figura 4 .1 6(c) se

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
obtendría un total de cuatro 2-subcubos. Téngase presente tam bién que, como cada I-sub-
cubo ha sido utili zado para ge nerar un 2-subcubo, se ha insellado un «sí» en cada fi la de la
cuarta columna de la Figura 4.16(c).
Ahora, se inlentan cOmbinar 2-subcubos de la lista para formar 3-subcubos, pero en este
CllSO no se obtiene ninguno. Por consiguiente, todos los 2-subcubos que aparecen en la li sta
de la Figura 4. 16(d) son los implicantes primos. En otras palllbras, los cuatro implicantes
primos de la fu nción que se especifica en la Figura 4.16(a) son 'I"~ '. '1' 'v, y: y ' V~. Obsérvese
que nin gú n I-subcubo o O-subcubo es un implicante primo, ya que cada un o de ellos está
cubi erto por, al menos, un 2-subcubo.

4.4.2. Generación de la cobertura mínima


Para determinar la cobertura mínima de una función , hay que determinar los impli -
cantes primos esenciales que deben ser incluidos en cada cobettura, ya que los
implicantes primos esenciales son los implicantes que contienen aquellos mintenns
cubiertos una sola vez. aunque un implicante primo esencial pueda contener tam-
bién otros mintemls. El mejor modo de obtener implicantes primos esenc iales es
construir una tabla de selección en la que cada fila representa un implicante primo
esencial y cada columna representa un minteml. En la tabla se marca con x una
intersección entre fila y columna si y sólo si elmintenn representado en esa colum-
na est,í incluido en el implicante primo correspondiente a esa fila. Después de relle-
nar la tabla sabremos que las columnas que contienen sólo una x representan aque-
llos mintenns que han sido cubiertos sólo una vez. Entonces, la x se rodea de un
círculo y el correspondiente implicante primo se incluye en la lista de impli cantes
primos esenciales. Este procedimiento se detalla en el Ejemplo 4 .5.

EJEMPLO 4,5 Selección de implicantes primos esenciales


PROBLEMA

Obtener lodas las cobel1uras mínimas de la función cuyos il1lplicantes primos se determi-
naron en el Ejemplo .. .4.
SOLUCIÓN
En el Ejemplo 4.4 se identificaron cuatro implicantes primos: IV'Z', "'Y, y: Y IVZ. Así pues,
se construye la tabla de selección de implicantes primos esenciales como se muestra en la
154 Principios de diseño digital

Figura 4.17(a). indicando en cada fila el nombre, expresión y los índices del mintenn de uno
de los implicantes primos, y asignando una columna a cada I-minterm. Entonces. se intro-
duce una X dond e un mintenn dado sea cubierto por un implicante primo. Por eje mplo,
empezando por la primera fila, se introduce una X en las columnas O. 2. 4 Y 6 ya que el impli-
cante PI contiene los mintenns mo' m 2, 1114 y 1n6 ,
Tras introducir todas las X necesari as en todas las filas. se indicarán aque llas columnas
que tengan únicamente una x. rodeando dicha X con un círculo. Como se observa e n la
tabla, las columnas O, 4, 9 y 13 ti e ne n sólo una X cada una. Así pues. P, y p. son impli-
cantes primos esenciales ya que son los únicos implicantes primos que cubren a los min-
terms lila . 111 4 , 1119 Y m lJ , Afortunadamente, PI y P4 también cubren a los mintenns 111 2 , f1I (j'

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mil y nl 15, lo que significa que los únicos mintenns no cubiertos. ni por PI ni por P4' son
los mintenns 111, y 111, . Ya que ambos minterms podrían es tar c ubi ertos por P, O P y se
obtienen dos pos ibles coberturas: como se muestra en la Figura 4 . 17(b). una cobe rtura con-
tendría P" P, Y p. mientras que la seg unda contendría a P" P, Y p •. En la Figura 4. 17(c)
se muestran dos ex presiones mínimas en forma de suma de productos correspondientes a
estas dos coberturas.

NOIIlfEJB. EXPIfSIÓNIlEI.. MIN1EIt.tS DE LA FUNCIÓN


lIf'IDN1E JIIII.K'IME lINlEIIIS
PIlIlO PIllO ~ O 2 3 4 6 7 9 11 13 15

P, w'z' (0, 2,4,6) ® X ® X


P, w'y (2, 3, 6, 7) X x x X
P, Y2 (3,7,11,15) x x X X
P4 wz (9. 11, 13. 15) ® x ® x

Minlcrms cubien os por EPI : O 2 .. 6 9 1I 13 15


Mintcrms no cubiertos: 3 7

(a) Tabla de selección de EPI

lisia PI: 11";:', \I"y, y.:. 11';:


lisIa EPI : IV':;:', 11'::
Listas de cobenuf3: ( 1) IV'::', 11'::, w'"
(2) 1\1'':', w::,y::

(b) Listas PI. EPI Y de cobertura

(I) F = IV'::' + 11':: + I\"y


(2) F = \V'::' + IV:: + y::

(e) Expresiones de mínima cobertu ra

FIGURA 4.17 Selección de implicantes primos del Ejemplo 4.5.

En el Ejemplo 4.5 se identificaron dos implicantes primos esenciales que podrí-


an cubrir ocho de los diez minterms, lo que significaba que obtener una cobcltura
mínima era una tarea relativamente sencilla. Sin embargo, en muchos casos la tarea
de seleccionar el resto de implicantes primos para completar la cobertura mínima
Simplificación de funciones booleanas 155

puede no ser tan fácil como la de seleccionar los implicantes primos esenciales.
Muy frecuentemente, se tiene un gran número de implicantes primos para escoger,
lo que complica de modo significativo la selección. Una manera de obtener todas
estas posibles coberturas es generar, primero, un producto de sumas en el que cada
suma representa un conjunto de implicantes primos que cubren un minterm en con-
creto que no ha sido cubierto por ningún implicante primo esencial. Después, se
realiza la multiplicación en la forma de producto de sumas hasta obtener una forma
de suma de productos en la que cada producto, junto con todos los implicantes pri-
mos esenciales, representa una de las posibles coberturas. De entre todas las cober-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
turas, aquéllas que tengan el menor número de implicantes primos serán las cober-
turas mínimas. Este procedimiento se describe en el siguiente ejemplo.

EJEMPLO 4.6 Generación de una cobertura mínima


PROBLEMA

Obtener todas las posibles coberturas mínimas para la función booleana dada en el mapa de
la Figura 4.18(a).
SOLUCiÓN

La generación de implicantes primos se muestra en la Figura 4.18(b) y (e), la tabla de selec-


ción de implicantes primos esenciales en la Figura 4.18(d) y la lista de todos los implican-
tes primos en la Figura 4.18(e). En la tabla de selección se obtiene que existen dos impli-
cantes primos esenciales, PI y Pz. que cubren a los minterms m2, 111 6, m8 y 111 9 ,
Sin embargo, existen tres minterms que han quedado sin cubrir por PI y P2 : 1117' II1 IJ Y
/11 15' Dentro de este grupo, el minterm n~ podría estar cubierto por P, o P s' m l3 podría estar
cubierto por P4 o P6 y /11 IS podría estar cubierto por P s o Po' lo cual puede expresarse en tér-
minos del siguiente producto de sumas de estos implicantes primos:
(P 3 + Ps) (P4 + P6 ) (Ps + P6)
Multiplicando la segunda y la tercera sumas se obtiene la siguiente expresión:
(P3 + Ps) (P4PS + P SP6 + P4P6 + P6 )
Como P6 cubre los mismos minterms que PSP6 y tiene menos implicantes primos, se
puede suprimir el producto PSP6 de la expresión. Por el mismo motivo. también se puede
suprimir el producto P4 P6 , lo que reduce la expresión de cobertura a
(P 3 + P s) (P4PS + P6 )
Desarrollando esta expresión. se obtiene la siguiente más reducida:
P3P4Ps + P4Ps + P' P6 + PSP6
Como P3• P4 Y Ps no constitu yen el conjunto más pequeño de implicantes primos. se
puede prescindir de dicho conjunto. Así pues, de ac uerdo con la expresión obtenida se
pueden cubrir los minterms /11.,. 1/13 Y 1/1s utilizando P4 y P s' o P3 y P6 , o P s Y P6 .
Finalmente, combinando estas tres opciones con los implicantes primos esenciales defi-
nidos anteriormente. se obtienen las tres coberturas mínimas diferentes mostradas en la
Figura 4. 18(e) .
156 Princi pios de diseño digital

"
VAlOR DEL SUBCUBO
1\".1 no ni II 10
IDENnFlCACKíN MltiTERMS SUBCUBO CUBIERTO
,~) I DE GRUPO DELSUBCUBO w X y z POR I·SUBCUBO
G, (2) O O I () :-oí
01 I I (8) I O U () sí
G, (6) U I I O sí
II
(9) O () sí
I I
G, (7) () I sí

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
( 13) I O sí
10 I 1
G, ( 15) sí

l b) Lb[ a Je .ld~al·e I H':] '\ '" de llf"tlL'll O.

L ]~ ( a PI : 11"":-'. \ ' , ":'. 11" \ \',


II'.\ ':-,.\ y :', uy::: VALOR DEL SUBCUBC
I.i !lola EPI:
Li ... t.IS de \:ohcn ura: t i) 11"'y:;'. \ " "::. \\ '\ '\: ,\ \";:: IDENTIFICACIÓN MltiTERMS SUBCUBO CUBIERTO
t:!lu 'y:-', .\ 'y'.::. 11 '\\', 11 .' ; : DEGRUPO DELSUBCUBO w X y z POR 2·SUBCUBO
(:n "-'.":-'. ''.1"':. 'y:. II" \";
GJ (2. 6) () - I O no
( l') PI , EPI Y Ih (a~ de concI1ura (8. 9) - O O 1 110

G, (6.7) ()I no
(9. 13) I O no
G, (7. 15) - 1 I 11 0
(13 , 1S) - 1 no
(e ) Ll~la de adyace m.: ia... tlL' urden l.

NOMBRE DEL EXPRESIÓN DEL MltiTERMS DE LA FUNCKíN


IMPlICANTE IMPUCAtiTE MltiTERMS
PRIMO PRIMO IMPLICAtiTES 2 6 7 8 9 13 15

P, \1" .\':' (2,6) ® X

P, .\"')": IX, 9) ® X

P, )\I'.\y (6 , 7) X X

P, W):': (9. (3 ) X X

P, xy.: (7 . 15 ) X X

P" 11'.": ( 1.1. 15) X X

Mint'-'rtll!'o l'ubiertu~ pllr EPI: 2 6 X 'J


~ I i nle n n;, 110 l'ubit'r!o": 7 J.\ 15

(d) Tahla de "l'kl"l" IÚn tk EPI

FIGURA 4.18 Generación de implicantes primos y selección de la cobertura para el Ejemplo 4.6.
Simplificación de funciones booleanas 157

Como se ha comprobado en estos ejemplos, este método de tabulación resul-


ta adecuado para funciones booleanas que tienen relativamente pocos impli cantes
primos. Desafortunadamente , no obstante, cuando el número de variabl es crece
por encima de 10 Y el número de implicantes supera los 100, este método de tabu-
lación se hace ineficiente, inclu so con herramientas CAD utili zadas en estaciones
de trabajo de altas prestac iones. Por este motivo, la mayoría de las herramientas
CAD rápidas utili zan diversas heurísticas orientadas a satisfacer un conjunto
específico de fines o a determinadas aplicaciones. bibliotecas y tecnologías.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
4.5. TRASLACiÓN A LA TECNOLOGíA DE ARRAYS DE PUERTAS
En la Sección 4.4 se presentaron ciertas técnicas utilizadas para obtener las formas
estándar y factorizadas de funciones booleanas con 1/ variables. Cada una de estas
formas utiliza los operadores booleanos estándar ANO. OR Y NOT, y pueden
implementarse fácilmente con puel1as ANO, OR Y NOT con más de n entradas.
Para reducir el coste y el tiempo de diseño, muchos sistemas se están fabrican-
do actualmente con tecnología de arrays de puertas. Como se ha descrito en la
Sección 3. 11 , un aITay de pueltas es una matriz bidimensional de celdas en la que
cada celda contiene una única puerta con un número fijo de entradas. Estas puertas
intemas a las celdas son nOnTIalmente puertas NANO (NOR) de lII.entradas, o más
frecuentemente, puertas NANO (NOR) de 3 entradas. Para utilizar estos arrays de
puertas, pues, se necesita convertir una expresión o circuito con pueltas ANO, OR
Y NOT en otro que tenga únicamente puertas NANO (NOR) de m entradas.
Este proceso de conversión, llamado traslación a la tecnología (del inglés
technologv mapping), incluye diversas y di stintas tareas que se describen en esta
sección. Primero, se muestra una técnica para convertir un circuito con varias
puertas ANO , OR Y NOT en otro fonnado sólo por puertas NANO (NOR). Esta
tarea conlleva dos partes diferenciadas, conversión y optimización. Durante la
conversión, se sustituye cada puerta ANO y OR con una puerta equivalente
NANO (NOR), mientras que durante la optimización se eliminan los inversores
dobles que se han introducido durante la fase de conversión. Tras explicar la con-
versión y la optimización, se mostrará cómo una puel1a ANO (OR) de 11 entradas
puede descomponerse en una puerta ANO (OR) de m entradas. Finalmente, se
mostrará cómo esta técnica de descomposición puede utilizarse para minimizar el
retardo en un circuito con puertas NANO (NOR).
Las reglas de conversión están basadas en el teorema de involución y en las
Leyes de De Morgan , y pueden resumirse como sigue:
Regla 1: xy = «xy)')'
Regla 2: x + y= «x+ y)')' = (x 'y')'
Regla 3: Ay = ((xy)')' = (x' + ir
Regla 4: x+ y = (x + y)')'
Las Reglas l y 2 se usan, generalmente, para la convers ión a circuitos NANO,
mientras que las Reglas 3 y 4 se utilizan , generalmente, para la conversión a cir-
158 Principios de diseño digital

cuitos NOR. Todas estas reglas, se muestran gráficamente en la Figura 4.19(a).


También se utiliza una regla sencilla de optimización, que establece que todo
inversor doble puede eliminarse, ya que (l) ' = x de acuerdo con el teorema de
involución. Esta regla se muestra gráficamente en la Figura 4.19(b). Obsérvese
que, en la práctica, los inversores se implementan con puertas NANO (NOR) que
tienen todas sus entradas unidas. En esta exposición, utilizaremos el símbolo del
inversor en vez del símbolo de las puertas NANO (NOR) ya que los inversores
pueden distinguirse más fácilmente de las puertas NAND (NOR).

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
..... L
O-Di>
.. ~
D-
"lo O ...
...... 4: D ... [>t>
(a) Reglas de converSi6n

(b) Regla de optim ización

FIGURA 4.19 Reglas de conversión y optimización.

En ténninos sencillos, el procedimiento para convertir circuitos ANO-OR en


circuitos NANO (NOR) puede establecerse como sigue:
Sustituir puertas AND y OR por puertas NAND (NOR) utilizando las
Reglas 1 y 2 (3 Y4), Yeliminar los inversores dobles siempre que sea posible.
Como se indica en la Tabla 4. 1, este procedimiento de conversión puede apli-
carse fácilmente a fonnas estándar de suma de productos y producto de sumas. En
esta tabla, por ejemplo, puede verse que una forma de suma de productos puede
convertirse en una implementación NANO simplemente reemplazando cada puer-
ta por una puerta NAND. Por otra parte, una fonna de suma de productos puede
convertirse en un circuito NOR sustituyendo cada puerta por una puerta NOR e
insertando un inversor en cada tenninal de entrada y de salida. También puede
verse que el recíproco es cierto siempre y cuando se realice la conversión de una
fonna de producto de sumas a implementaciones NANO o NOR . Sin embargo,
debido a los inversores adicionales, raramente se utilizará una forma de producto
de sumas para obtener una implementación con puertas NANO, o una forma de
suma de productos para obtener una implementación con puertas NOR.
Simplificación tle funcione s booleanas 159

TABLA 4.1 Conversión de suma de productos y producto de sumas a circuitos NANO y NOR

IMPLEMENTACiÓN
IMPLEMENTACiÓN IMPLEMENTACiÓN
CLASE DE FORMA EN FORMA
NANO NOR
ESTÁNDAR

Suma de productos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Producto de sumas

EJEMPLO 4.7 Conversión a puertas NANO (NO R).


PROBLEMA
Obtenga las implementaciones NANO y NOR tic la función de acarreo definida anterior-
mente en la Tabla 2.3 y reprod ucida en forma de mapa en la Figura -L20(a).
SOLUCiÓN
En la Figura -l.20(h) se muestran las fomlas estándar de suma de productos y producto de
sum as. y e n la parte izqui e rda de la Figura 4.20(c) y (d) se muest ran las representaciones
se ncillas de c s ta~ formas con puertas AND y ORo
Al conve rtir la impl em~ nta c ión dc suma de productos e n la implementación NANO
most rada en la Figura 4.20(c), se ncillamente se reempla za cada puerta ANO por una puer-
ta NANO seg uida de un in verso r (Regla 1). y se ree mpla za cada puerta OR por una puerta
NANO con inversore s en sus en tradas (Regla 2). Tras eliminar los in versores dobles. se
ohtendrá la imple me ntación NANO que se muest ra en la pal1e derecha de la Figura -l.20(c).
De manera similar se podrían utili zar las Reglas .3 y -l para co nve rtir la impl emen tació n
de producto de sumas en una impl eme ntación NOR. Tras la e liminación de in ve rso res
dohles. se ohliene la implementación NOR mostrada a la derec ha de la Figura -l .20(d ).
En estas figuras y. a partir de los datos presentados en la Tabla 3. 14. pueden verse las
mej ore s prestacio nes de es tas implementac iones NANO y :"JOR. que presentan un retardo
de sólo .1 .2 ns desde cualquier entrada hacia la salida. en contraste con las impleme ntacio-
nes ANO-OR y OR-ANO. que requieren 5.2 ns. Además. es sabido que estas implementa-
ciones NANO y NOR tienen tambié n un menor coste, ya que requieren 16 transistores e n
co mparaci ón co n los 24 transistores utili zados en las impleme ntaciones Af\;D-OR y OR-
ANO .

En el Ejemplo 4.7 se ha visto cómo convertir puertas ANO y OR en puertas


NANO (NOR). Sin embargo. si se tienen que utili zar puertas NANO (NOR) di s-
ponibles en una matriz de puertas se necesitará tener en cuenta que las puertas en
dicha matri z tienen sólo 111 entradas . mientras que los términos ANO y OR pue-
160 Principios de diseño digi tal

den tener hasta n entradas, siendo 11 mucho mayor que /1/ . Para poder utili zar puer-
tas NANO (NOR) de mentradas, se debe saber cómo descomponer estos mayores
términos ANO y OR en puertas ANO y OR de /l/ entradas.

\ l'
"
, o 01 11 10

o 1

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1 1 1 1

(a ) Defi niciól1 e u mapa de la fUIlc i6 n acarreo

t ,.1 = .\ ~,
l ' +.\ e +\· c
I I . I I
c,. I=(.' ,+)",)(-", H ) (y, + C, )

(b) Formas estándar

X, --+1-'--/
Y,
'", ---':1--.----..

(e) Impk ml'nluc:i6n NAN D

."
"./
X,

Y,
e, --':L1'"---" e,

(d) Imp lementación NOR

FIGURA 4.20 Implementaciones NAND y NOR de la función de acarreo.

En este procedimiento, llamado a veces descomposición de términos, cada


puerta ANO (OR) de /1 entradas se descompone en un árbol de puertas ANO (OR)
de 11 entradas. Este árbol tiene fl og",/1l ni veles y f(1I - 1)/(/11 - I)l puerlas de 111
entradas, asumiendo que el símbolo fxl indica el menor entero mayor o igual que
x, y que el signo Ld indica el mayor entero menor o igual que x. En el primer
ni vel de este árbol, hay Ln/mJ puertas; las salidas de estas puertas, junto con las
restantes (/1 - Ln/n,J) entradas del primer ni vel, sirven como entradas a las puel1as
del seoundo ni vel. Este procedimiento puede repetirse para cada uno de los
fl og",ni ni veles. En el siguiente ej emplo se detalla este procedimiento de des-
composición.
S implific ación de funcione s hooleanas 16 ]

EJEMPLO 4.8 Descomposición de pucnas


----------------- -
PROBLEMA

Descom po ne r t'lt c: nnino AN D de 10 va riab les x.,.rlt\ 7x6x5x-lxJx~r lxO e n un {¡rbo l de pu e rtas
AND de tres cntrildas.

SOLUCIÓN
Para un té rmin o ele lO va riable s. te nc m os r l og ~ I Ol = .3 ni ve les d e pue rta s en cl úrho! y se
r(
requi e ren I () - I )/(} - 1)1 = S pue rtas . Co m o es te Ül'ho l N A ND tiene 10 e ntradas. req ui e -
re Llo/.3J ;;;; .3 puertas e n e l prim er ni ve l. E n e l seg und o ni vel tie ne

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 + (10 - }IL IOI3J)¡ =.¡ e ntradas y. por tanto. requ ie re L413J = I puerta. y e n el terce r ni ve l
tielle I + (-1. - 3(L..V3J));;;;:2 entradas y I puc rta, Es tos cá lcu los. qu e determinan e l mílllero
~H,k C llíl du de puertas en cada ni ve l. e S I ~'¡n resumidos en la Figu ra ..L2 1(a),

NÚMERO NÚMERO
NÚMERO DE ENTRADAS
DE NIVEL DE PUERTAS

10 L IO/3J = 3
2 3 + ( 10 - 3(L I013J)) = 4 L4/3J =1
3 I + 14 - 3([A13J)) = 2 L2I3J = I

FIGURA 4.21 Descomposición de una puerta ANO de 10 en1radas en puertas ANO de 3 entradas.

LJ na ve/.. que se ha det e rminado el llLímcro de pu e rta s e n cada ni ve l. se neces ita aún
th!te rmin ar CtÍ lll O d ebe n co necta rse las en tradas a las puertas de l primer ni ve l. y có m o las
sa li das de las pu e rta s dc UIl ni vel debe n co nec ta rse i.l las e ntradas de las puertas del s igu ien-
te ni\'c l. Esto pu ede rea li zarse de va rias man e ra s. cada un a de las c ua les proporcionará ull a
combi nac ió n di fere nte de retardos en tre las e ntradas y la salida, En las Figuras ..L 2 1(b ) Y (e )
:-.c presen ta n dos po s ibles descom posic io nes que pe rmit e n im pleme nt ar la pucrta AND de
10 entradas con ci nco puertas AND d e J e ntradas. Ob:-.érvese qu e estas dos pos ib le:, dc:-.-
co mpos iciones di fie ren úni ca mente en e l re tardo de pro pagac ió n d e a lg ul1 ca min o de e nt ra-
da/sa lida, En la Fi g ura ..L2 1Cb ). po r ej e mplo. el retardo de propagació n a la sali d a de sde
162 Principios de diseño digital

todas las entradas excepto la situada más a la derecha es de 8,4 ns, y el retardo de propaga-
ción desde la entrada situada más a la derecha a la salida es sólo de 2,8 ns. Sin embargo, en
la Figura 4.21 (e), el retardo de propagación desde las tres entradas de la izquierda a la sali-
da es de 5,6 ns, mientras que el retardo de propagación de las demás entradas a la salida es
de 8,4 ns.

Como regla, la descomposición de puertas AND y OR debe preceder a la tarea


de conversión siempre y cuando el número de literales en un término producto o
suma dados supere lit En otras palabras, la conversión a puertas NANO (NOR) y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
la eliminación de inversores dobles puede realizarse sólo después de la descom-
posición, como demuestra el siguiente ejemplo.

EJEMPLO 4.9 Traslación a la tecnología de arrays de puertas.


PROBLEMA

Implementar la función suma del sumador completo, utilizando puertas NANO de 3 entra-
das.
SOLUCiÓN

La función suma, definida inicialmente en la Tabla 2.3, se representa en el mapa mostrado


en la Figura 4.22(a). Como se sabe hasta ahora, su forma de suma de productos, que se obtu-
vo en la Figura 4.7(c), puede escibirse de la siguiente manera:

A partir de esta forma estándar, se puede obtener la implementación AND-OR mostra-


da en la Figura 4.22(bl.
Ya que la puerta OR en este circuito tiene cuatro entradas, se necesita descomponerlo
en dos puertas OR con no más de tres entradas cada una, como indica la Figura 4.22(c).
Después de esta decomposición, se puede utilizar ahora la primera de las dos reglas de
inversión para convertir cada puerta en una puerta NAND de tres entradas, lo que llevará al
circuito mostrado en la Figura 4.22(d). Finalmente, pueden eliminarse los inversores dobles
para obtener el circuito NANO optimizado que se muestra en la Figura 4.22(e).

Como se ha mostrado en el Ejemplo 4.8 , la descomposición de una puerta


puede producir una red de árboles NANO (NOR) en los que diferentes caminos
en la red pueden tener distintos retardos. Este hecho puede ser provechoso cuan-
do se optimizan las prestaciones de una red lógica dada.
Esta tarea de optimización de las prestaciones. llamada retemporización (del
inglés retiming), se realiza, generalmente, después de la descomposición, conver-
sión y eliminación de inversores, una vez que los diversos retardos a través del
circuito pueden calcularse con preci sión, Durante la retemporización, los caminos
con los menores retardos en la red se asignan a las señales con el mayor retardo a
través de toda la red lógica, Después de la retemporización, usualmente tienen que
repetirse los procedimientos de conversión y e liminación una vez más. En el
siguiente ejemplo se muestra este proceso de retiming.
Simplificación de funciones booleanas 163

, o 01
" 'o
,
"
, 1 1

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(d) Conversión a red NANO (e) Red NAND optimizada

FIGURA 4.22 Implementación de la función suma con puertas NAND de 3 entradas.

EJEMPLO 4.10 Retemporización de un diseño


PROBLEMA

Implementar la función de acarreo anticipado c4 utilizando puerta, NAND de 3 entradas.


SOLUCIÓN

La funci ón de acarreo de salida del ¡'ésimo bit puede definirse por la siguiente ecuación,
donde g¡ = x¡Y¡ y Pi ;;; Xi + Yi:

Por consiguiente, para representar los primeros cuatro acarreos pueden obtenerse las
siguientes ecuaciones:
c, =80 + Poco
cz = g, +p, c,
C3 = 82 + P 2c 2
C4 = 83 + P 3C3
164 Principios de diseño digital

Substituyendo. se puede expresar (,4 más directamente en términos de cm g¡ y PI ' donde


0$ i $ 3:

C..¡ = g3 + Pj g 2 + P3P2g 1 + P3P2Plg0 + P3 P2P1POL'O


Esta función se denomina función de acarreo anticipado de 4 bits, ya que el acarreo de
~a lida (.'4
no depende de los acan-eos intermedios ('1' c 2 y c y En la Figura 4.:!3(a) se Illu es-
tra una implementación AND-OR senci lla basada en esta expresión. En la Figura 4.23(b)
se presenta una posible descomposición de esta implementación en 3 puel1as AND y OR
de 3 entradas. Posteriormente. convirtiendo a puertas NAND y eliminando inversores
dob les se obtiene el circuito NAND de la Figura 4.23(c). Como puede observarse en la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Figura 4.23(c). el má ximo retardo de entrada/salida para esta red de acarreo anticipado es
de 8.2 ns.

<, ----------------------,

g~ ~"':..==':[)----------,

( :1) Implementación AND-OR

'.' - - - - - - - - - - - - , x,

1' ,
~2 1.4

" .' fI ,

1', 1', fl"J


1', P,

1'3
·~i¡
JI, " Retardu
1',
/I~
P, "1 máximo = 8,2 ns
1°(,
f'" CfI
"I!
(b) Descomposición del di seño (a) (c) Implementación NAN D del diselio (b )

!I,I - - - - - - - - - - - - - - , .' , ------{)o--------,

IP¡'., ~~~
fI ] 1' .

t'J p, "
1', - ~ lA
Retardo
máximo = 6.4 ns

l·" !.'~"~==========~L-)-----~ e" - "~'"~============~~


~d) Descomposici ón con prestaciones optimizadas (e) Implementación NANO con prestaciones opt imi zadas

FIGURA 4.23 Dos implementaciones NAND de la función de acarreo anticipado de 4 bits.


Simplificación de funciones booleanas 165

Sin embargo, es posible que una descomposición alternati va de la puel1a OR propor-


cione un retardo inferi or. Esta descomposición alternati va asigna los cami nos más cortos a
través de la puerta OR a los términos P~ P2 PlgU y Pj P2PICO' produciendo así la llueva des-
com posición de la funci ó n de acarreo anticipado que se muestra en la Figura 4.23(d). con
la que se obtienen prestaciones optimizadas. Después. tras la conversión a puertas NAND
y la eliminación de inversores dobles. se obtiene la red NAND mostrada en la Figura
4.23(e). Obsérvese que el máximo retardo de esta red NAND es sólo de 6,4 ns, lo cual
representa una reducción impresionante. del 30 % . en el retardo del ca mino crít ico.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En la Figura 4.24 se presenta un diagrama de fluj o del procedimient0 de con-
versión utili zado para los arrays de puertas en el que las redes multini ve l ANO-OR
van a ser convertidas en redes de puertas NANO de III entradas. Como se demos-
tró en el Ejemplo 4. 10, este procedimiento consta de cuat.ro pasos: descomposi-
ción, conversión, eliminación y rete mporización. En la tarea de descomposición se
dividen las puertas ANO y OR mayores en árboles de puertas AND y OR de m
entradas . En el paso de conversión, se reemplaza cada una de estas puertas AND-
OR por una combinación equivalente de puertas NAND (NOR) y NOT. Después,
en la fase de eliminaci ón se suprimen los inversores dobles innecesarios. A conti -
nuación, se calculan los retardos de entrada/salida para todos los caminos de entra-
da/salida. y los caminos que tienen mayor retardo se etiquetan para un examen más
minucioso. Si es pos ible, estos retardos en los caminos críti cos se reducen por
retemporización, que puede repetirse tantas veces como sea necesario hasta que se
llegue a un punto en que no pueda reducirse más el retardo del camino crítico.

FIGURA 4.24 Procedimiento de traslación a la tecn ología de arrays de puertas.


166 Principios de diseño digital

4.6. TRASLACiÓN A LA TECNOLOGíA DE BIBLIOTECAS A


MEDIDA
En secciones anteriores se trató sobre la tarea de conversión de un circuito con
puertas AND, OR Y NOT en un circuito NAND o NOR en el que cada puerta
NAND o NOR dispone sólo de mentradas. Como han mostrado los ejemplos, la
conversión puede ser bastante senci lla en este contexto ya que, una vez que la
expresión original o circuito ha sido descompuesto en puertas AND y OR de 111
entradas, la conversión consiste básicamente en reemplazar cada puerta AND o

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
OR de ti! entradas por la única combinación de una puerta NAND o NOR . Sin
embargo, cuando se trabaja con bibliotecas a medida este procedimiento de con-
versión resulta más complejo, preci samente porque estas bibliotecas contienen
puertas complejas tales como puertas AO! y OAI, lo que significa que cada puer-
ta en el circuito original podría ser sustituida por más de una puerta en la biblio-
teca. Además, esto también significa que cada puerta en la biblioteca podria reem-
plazar a varias puertas en el circuito original. Por este motivo, la traslación a la
tecnología de bibliotecas a medida requiere que se agrupen las puertas en el cir-
cuito original de manera tal que cada grupo represente a una de las puertas de la
biblioteca, mientras que, al mismo tiempo, el circui to obtenido debe tener el
mínimo retardo o coste de implementación.
La tarea de agrupar las puertas en el circuito original puede considerarse como
un proceso de cobertura del circuito original con puertas de biblioteca. Así pues,
minimizando el retardo se seleccionará aquella cobertura para la que el máximo
retardo desde cualqui er entrada a la salida sea mínimo. De igual fonna, minimi-
zando el coste, se seleccionará la cobertura para la que el coste sea mínimo.
Aunque a veces es posible minimi zar el retardo y el coste al mi smo tiempo,
generalmente la minimización del retardo y del coste ocasiona dos objetivos con-
tradictorios. Por ejemplo, para minimi zar el retardo las señales de entrada deberí-
an pasar por el menor número de puertas posible. Por este motivo, los circuitos
con retardo optimizado tienden a utilizar una fonna e tándar de suma de produc-
tos (producto de sumas), que requieren sólo dos ni veles de puertas. aunque estas
formas pueden necesitar más puertas y, también, puertas con un mayor número de
entradas que las forma s no estándar. Sin embargo, para minimizar el coste se veri-
fica lo contrario ya que la implementación del circuito debe tener el menor núme-
ro de puertas posible. y cada puerta debe tener el menor número de entradas posi-
ble. Por esta razón, los circuitos con coste optimizado suelen utili zar formas no
estándar factorizadas al máximo, con más de dos niveles de puertas, lo que requie-
re menor número de puertas y puertas con menos entradas que con las formas
estándar. Después de lo dicho, puede observarse que la minimización del coste
puede ser vista como un incremento del retardo al introducir niveles adicionales
de puertas, mientras que la minimización del retardo tiende a incrementar el coste
al incrementarse el número de puertas y el número de entradas en cada puerta.
Sin embargo, en muchos casos estos dos objetivos pueden si ncronizarse
mientras se lleva a cabo la traslación a la tecnología. Como el objetivo de la
Simplificación de funciones booleanas 167

mlnlmi ZaC lOn del retardo es reducir el retardo del camino más largo de entra-
da/salida, denominado camino crítico, no hay razón por la que todos los cami-
nos no críticos no puedan minimizarse en coste, en la medida en que el retardo
de los caminos no críticos no exceda el retardo del camino crítico. Por consi-
guiente , cuando se lleva a cabo la traslación a la tecnología siempre se comien-
za minimizando el retardo del camino crítico y, después. se procede a minimizar
el coste de los caminos no críticos. Para determinar el camino crítico, general-
mente se convierte el circuito dado en un circuito NAND o NOR, ya que las
puertas NAND y NOR son usualmente las más rápidas en cualqui er biblioteca.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En el siguiente ejemplo se detalla esta tarea de ap li cación a la tecnología de una
biblioteca a medida.

EJEMPLO 4.11 Traslación a la tecnología de bibliotecas a medida


PROBLEMA

Convertir la ex presión w'z ' + z(w+ y) en un circuito lógico utili zando cualesquiera puertas
de la biblioteca definida en las Tablas 3.14, 3.15 Y 3.16.
SOLUCIÓN

Como se mueslra en la Figura 4.25(3). la expresión IV': ' + :(IV + v) puede implementarse
fácilmente con puel1as ANO, OR Y NOT obtenidas en esta bibliioteca. Sumando los relar-
dos de cada puerta individual. que se indican en el interior del símbolo de cada puerta, se
observa que el mayor retardo va desde la entrada yola entrada IV hacia la salida F. y es igual
a 7,2 ns. Además, sabiendo que cada puerta ANO o OR de 2 entradas requiere seis transis-
tores, y qu e cada inversor contiene dos transistores, se puede ver que el coste total de esta
implementación es igual a 28 transistores.
Por otra parte, si este circuito se convierte a puertas NAND siguiendo el procedimien-
to descrito en la Sección 4.5. se obtiene el circuito mostrado en la Figura 4.25(b), cuyo
retardo en el camino crítico es de sólo 5.2 ns y cuyo coste total es de 22 transistores. Como
se observa en la Figura 4.2S(c), este circuito permite dos posibles conversiones en relación
al camino crítico desde yo whacia F, que se muestran aquí como alternativas Ay B. Si se
implemellla la alternativa A. se reemplazan tres puertas por una puerta AO! de 2 entradas
y 2 ni ve les y un in versor. como se muestra en la Figura 4.25(d). Desafortunadamente, esta
substitución incrementa en 0,2 ns el retardo en el camino crítico, si bien reduce el coste total
a 20 transistores. Por el contrario, si se implementa la alternativa B, reemplazando tres puer-
tas por una puerta OAI de 2 entradas y 2 niveles, como se indica en la Figura 4.25(e). se
puede reducir a 3,4 ns el retardo del camino crítico y reducir el coste a 20 transistores. Sin
embargo. al mismo tiempo se puede introducir un nuevo camino crítico desde las entradas
11' y : hacia la salida F. que tendrá un retardo de 3,8 ns.
Ya que se ha generado un nuevo camino crítico, es necesario volver a prestar atención
en la reducción de su retardo. Sin embargo, para este camino crítico no se puede aplicar
reducción alguna, aunque puede obtenerse una ligera reducción de coste reemplazando la
agrupación formada por los dos inversores y la puerta NANO de 2 entradas de la Figura
4.25(e) por una puerta NOR de 2 entradas y un inversor. El resultado final. mostrado en la
Figura 4.25(f), tiene un retardo en e l camino crítico de 3,8 ns y un coste total de 18 tran-
sistores.
168 Principios de diseño digital

y ----~-1::-:-

~. y~ F
(a) Imp lementación AND-O R (relardo = 7.2 ns: coste = 281

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(b) Implement ación NANO (retardo = 5.2 ns: coste = 211

-------
B

F
... --------I'-I!>I.--J'-i-:-~

(e) Dos pos ibles conversiones

(d) Allcm;ni\'u A (retardo = 5.4 ns: coste = ~Ül

I~~
O_~
_ 1,4,
1.4 F

"
---- /

(e) Alternat iva B (retardo = 3.8 Il S : coste = 20)

,.

(1) Al ternativa B opt imizada en coste (retardo =3.8 ns: coste = 1S)

FIGURA 4.25 Ejemplo de tareas en las técnicas de traslación.


Simplificación de funciones booleanas 169

Como regla, el procedimiento de conversión mostrado en el Ejemplo 4.10,


que se resume en el diagrama de tlujo de la Figura 4.26, puede aplicarse a cual-
quier circuito y a cualquier biblioteca. Para empezar, se convierte el circuito dado
en una implementación NANO o NOR, ya que esto permitirá estimar con preci-
sión sus retardos de entrada/salida. Después, se clasifican todos sus caminos de
acuerdo con el valor de sus retardos . Una vez determinado el camino con mayor
retardo, se intenta sustituir una puerta del camino crítico por una de las puertas de
la biblioteca. En cada intento, se anota la ganancia en prestaciones y en coste con

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Seleccionar un camino

Seleccionar puena

¿Crlfl~ideraJo; "O
1(Jdoo;Irlj:
l'rnpon~nle,1

si

¡,ConIHlerad35 "0
uxL.Js las
putn~~~

lOllIHlerao.kls no
ludo> los
rlmioos'.'

E)
FIGURA 4.26 Procedimiento de conversión para bibliotecas a medida.
170 Principios de diseño digital

el objetivo de obtener una cobertura de única puerta que consiga la mayor ganan-
cia. Este procedimiento se repite hasta que todas las puertas del camino crítico
hayan sido cubiertas por, al menos, una de las puertas de la biblioteca. A conti-
nuación. se selecciona la alternativa de mayor provecho y se recalculan los retar-
dos en el resto de los caminos utilizando los mismos procedimientos para cubrir
el más largo de los caminos no cubiertos. Finalmente, cuando todos los caminos
del circuito hayan sido cubiertos, terminará el procedimiento de conversión y se
podrá proceder con la eliminación de inversores y a la retemporización. como se
ha descrito en la Figu ra 4.24.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
4.7. DISEÑO LIBRE DE RIESGOS
Cuando se diseñan circuitos combinaciona les se debe estar seguro de que el cir-
cuito opera adecuadamente bajo todas las posibles condiciones. Una condición que
puede originar un mal funcionamiento del circuito se denom ina riesgo. Los riesgos
generan pequeños pulsos espúreos indeseables que aparecen en las salidas a causa
de los diferentes retardos de propagación en caminos diferentes, pero convergen-
tes, a lo largo del circuito. Concretamente, un pulso espurio es un cambio de corta
duración en el valor de la salida cuando no debería aparecer cambio alguno.
El concepto de riesgo se muestra en el ejemplo de la Figura 4.27. en la que se
expone la representación de mapa y el circui to lógico correspondiente a la función
booleana F = xy' + yz.
A partir del circuito de la Figura 4.27(b) puede verse que hay dos caminos
diferentes, etiquetados como a y b. desde la entrada y hasta la salida F. con dos
retardos de propagación diferentes. El retardo en el camino a, que va desde y hasta
F a través del inversor, una puerta ANO y una puerta OR, es de 5.8 ns. mientras
que el retardo en el camino b, que sólo atraviesa una puerta ANO y una puerta OR
es de 4,8 ns. En el caso en que x = Z = 1, v = 1, la sa lida Fvaldrá 1 debido al cami-
no b. De igual modo, cuando x = Z = 1, v = O. la salida Fvaldrá l debido al cami-
no a. Por consiguiente, en un diseño ideal donde el retardo de las puertas es O. la
salida F debería permanecer a l cuando y cambia de l a O, ya que a se hace igual
a l al tiempo que b se hace igual a O. Sin embargo, en realidad a necesita 3,4 ns
para llegar a valer 1, mientras que bse iguala a O en 2.4 ns, forzando F a O duran-
te l ns. Esta situación se muestra en la Figura 4.27 (c). en la que y cambia a O en
'o seguida por un cambio de ba O en to+ 2.4 ns y por un cambio en a al valor 1 en
'o+ 3,4 ns.
'1
Ya que F es igual al valor de ao al valor de b. Fcambia a O en = 'o+ 4.8 ns ,
y vuelve a valer l en 12 = 'o+ 5.8 ns. Este pulso espurio de l ns es debido a que
existe un riesgo estático al uno al implementar la función booleana F. Más con-
cretamente, se dice que un ci rcuito lógico tiene un riesgo estático al uno si hay dos
implicantes que difieren en sólo una variable que no están cubiertos por un tér-
mino producto común en la implementación de suma de productos. De igual
forma, se puede definir un riesgo estático al cero como una condición en la que,
en una implementación de producto de sumas, hay dos minterms que hacen O a la
Simplificación de funciones booleanas 171

función no cubiertos por un término de suma común. Por ejemplo, si se implemen-


ta la función F en la Figura 4.27 utilizando el producto de sumas (x + y )(y' + z), se
observa un pulso espúreo positivo de l ns cuando y cambia de O a 1 siendo
x = Z = O.
La defmición de riesgo sugiere la técnica para diseñar circuitos libres de riesgos.
A partir de la definición de riesgo, se sabe que existe un riesgo al uno porque se utili-
zan dos términos producto distintos adyacentes para cubrir dos minterms que hacen 1
a la función. Así pues, para eliminar un riesgo debe incluirse un implicante primo adi-
cional que cubra a los dos minterms adyacentes que hacen 1 a la función en la expre-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
sión de suma de productos. Este implicante primo adicional es redundante ya que, con
o sin él, la expresión de suma de productos define la misma función booleana.

)'
x o 01 11 111
"
.
o I

I
-I - . - I- , I
--
F"'-D"+Y::
(a) Representac ión de mapa

x ----r~

y F

(b) Esquema lógico

'11----
,
a -..., 3.4
l-
,
b
-' ,
,
,
1,4
1-
F ~:+- ..j..8 ---+~~

(el Diagrama de tie mpos

FIGURA 4.27 Diseño con un riesgo estático al uno.


172 Principios de diseño digital

En la Figura 4.28 se muestra la eliminación del riesgo del ejemplo presentado


en la Figura 4.27. Como se ha visto en la Figura 4.27, la expres ión mínima de suma
de productos contiene dos implicantes primos esenciales: Ay" e yz. En la Figura
4.28(a) se incluyen dos minterms adyacentes. 1115 y 1117' que están cubi el10s por dos
implicantes primos diferentes. Estos dos minterms introducen el pulso espurio
cuando la variable y cambia de 1 a O. como se muestra en la Figura 4.27(c). Para
evitar este pul so espurio se debe añadir el implicante primo x~ a la suma de pro-
ductos. Este implicante primo introducirá una puelta adicional cuya salida se ha
rotulado con e en el circuito lógico de la Figura 4.28(b). Como se muestra en el

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
diagrama de tiempos de la Figura 4.28(c). esta puelta redundante ev ita la aparición
de un pulso espurio ya que el valor de e = xz es igual a 1 durante el cambio en el
valor de y mientras x = ~ = l . Para el di seño de circuitos libres de riesgos puede
aplicar e una técni ca simi lar a la form a de producto de sumas. en la que se añaden
implicantes primos redundantes para evitar los riesgos estáticos al cero.
y:
x 01 10

o
Ú
" I

I I I I

(al Rcprcscntadon de mapa

.• ----'-"-C\

~ b) E:.qucrna lógico

'If-----

" ---..! 3.4 1..--

h ~: 2.-l LI+-
_____ _

F ---~-------------

(e) Diagrama de tiempos

FIGURA 4.28 Diseño libre de riesgos.


Simplificación de funciones booleanas 173

En general. los riesgos estáticos se originan a causa de dos seña les comple-
mentarias (tales como ye y ' ), que se hacen iguales por cortos períodos de tiempo
debido a los diferentes retardos en caminos di stintos a través del circuito. Si ade-
más dos señales que tienen siempre el mismo valor se hacen diferentes por un
corto período de tiempo, se dice que el di seño presenta un riesgo dinámico. Esta
situación se produce cuando el mismo valor de la variable se propaga a través del
diseño por dos caminos diferentes con distintos retardos. Un riesgo dinámico oca-
siona un pulso espurio en la salida des pués de una transición de O a I ó de I a O.
Como ejemplo, considérese el diseño de la Figura 4.29, que fue obtenido aña-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
diendo una puerta AND y otra OR al diseño con un riesgo estático al uno de la
Figura 4.27(b). Como se muestra en el diagrama de tiempos de la Figura 4.29(b),
la señal c genera un pulso espuri o a los lO + 4,8 ns después de que y cambi e de 1
'1
a O en lo' Por otra parte, la señal e/cambia de O a 1 en = lo + 3,4 ns. Como en ese
'2 '1
instante ees igual a 1, la salida Fcambianí a 1 en = + 2,4 ns. Sin embargo, el
'2
pulso espurio en la señal eaparecerá a la salida en + 1,4 ns y desaparecerá 1 ns
después en 12 + 2,4 ns.

... - - - - - - - / . : : . /
(a) Esquema lógi¡,;o

x-----------

"If-----
'" - - , - - - - - - - - - -

1'- 4.8 ~""--


.'
d
,
~: 3.4 I~
r--T'----
,
:,
F _ _:--_;-~

'o
(b) Diagrama de tiempos

FIGURA 4.29 Riesgo dinámico.


174 Principios de diseño digital

Este riesgo dinámico puede eliminarse del diseño de varias formas distintas.
Una de ellas, es eliminar el riesgo estático introduciendo un implicante primo
redundante, como se ha expuesto anteriormente. Otra manera consiste en retrasar
el cambio en dhasta 12, insertando en dotra puerta con un retraso de 2,4 ns o más,
entre la puerta OR y la puerta AND de salida. Este retardo adicional retrasará el
cambio en d de O a l hasta 12, y el cambio en F de O a l hasta 12 + 2,4 ns, cuando
el pulso espurio ya haya desaparecido.
Hasta ahora se ha mostrado que los riesgos estáticos y dinámicos causan un
funcionamiento erróneo del circuito durante cambios en una variable. La detec-
ción y eliminación de riesgos con cambios en múltiples variables es más difícil, y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
se encuentra fuera del alcance de este libro.
Como conclusión, los riesgos en lógica combinacional no son tan críticos ya
que las salidas alcanzan su valor estable tras algún tiempo. Por otra parte, los ries-
gos en circuitos secuenciales son críticos ya que los pulsos espúrios pueden con-
fundirse con pulsos de señales válidas y llevar a un componente secuencial a un
estado incorrecto, sin la posibilidad de recuperarlo de este malfuncionamiento.

4.8. RESUMEN DEL CAPíTULO


En este capítulo se han introducido dos métodos para la simplificación de expre-
siones de funciones booleanas. El primer método se basa en la representación con
mapa de una función booleana, que es muy conveniente para la identificación
visual de implican tes primos. A pesar de que el método con mapa es muy utiliza-
do en esta identificación, no proporciona un procedimiento sistemático para la
selección de los implicantes adecuados que se incluyen en la cobertura mínima.
Por otra parte, el método tabular proporciona un procedimiento sistemático para
obtener todos los implicantes primos, seleccionar los implicantes primos esencia-
les y obtener todas las coberturas mínimas que serán utilizadas para la implemen-
tación de una función booleana. Aunque el método tabular garantiza la obtención
de todas las coberturas mínimas, no es práctico desde el punto de vista computa-
cional para funciones booleanas con un gran número de variables, ya que precisa
de mucho tiempo para obtener todas las coberturas mínimas. Por este motivo, la
mayoría de las herramientas CAD para la síntesis lógica utilizan distintas heurís-
ticas para acortar el tiempo de cómputo de los algoritmos de síntesis.
Incluyendo los métodos del mapa y de tabulación, la mayoría de los métodos
de simplificación de funciones booleanas minimizan el número de operadores en
la expresión utilizada para la implementación de la función. Ya que estas imple-
mentaciones se construyen con puertas de diferentes bibliotecas, se necesita apli-
car, después del proceso de simplificación, un procedimiento para la traslación a
la tecnología que transforme los operadores de una expresión booleana en puertas
de la biblioteca dada. En este capítulo se han introducido dos métodos para la tras-
lación a la tecnología. El primer método se diseña para arrays de puertas, en los
que la biblioteca completa contiene puertas NAND o NOR sencillas con un núme-
ro de entradas fijo. En este método, primeramente se descomponen las puertas
Simplificación de funciones booleanas 175

grandes en puertas más pequeñas con el mismo número de entradas que las puer-
tas NANO o NOR de la biblioteca, y después cada puerta se convierte en puertas
de la biblioteca utili zando las reglas de conversión dadas. Tras la conversión de
las puertas, se procede a la eliminación de inversores para reducir el coste, y a una
retemporización para reducir el retardo de propagación en los caminos críticos.
El segundo método presentado está pensado para bibliotecas a medida, que
incluyen puertas complejas que pueden realizar varias operaciones booleanas
diferentes concurrentemente. En este método, primero se implementa una función
booleana con puertas NANO y NOR para estimar con precisión el retardo de pro-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
pagación y para obtener los caminos críticos en las implementaciones. Después de
estimar el retardo, primero se intenta reducir el coste de los caminos críticos y, a
continuación, se procura reducir el coste de los caminos no críticos. De este modo
se pueden satisfacer los dos requisitos contrapuestos de coste y optimización de
prestaciones.

4.9. LECTURAS ADICIONALES


Devadas. S. , A. Ghosh y K. Keutzer. Logic Sy"thesis, New York: McGraw-Hill , 1994.
Una exposición matemática muy detallada de los algoritmos utili zados en las herra-
mientas CAD para síntesis lógica. Recomendado para estudiantes interesados en algo-
ritmos de síntesis lógica y herramientas CAD.
Karnaugh. M. "A map method fol' synthesis of combinatorial logic circuits". Trallsactiolls
of the AlEE, Commllllicatiolls and Electronics, Vol. 72, Part 1 (Noviembre 1953), pp.
593-599.
El artíc ulo que introdujo el método del mapa.
McCluskey, E. Logic Design Principies. Englewood Cliffs, NJ : Prentice-Hall, 1986.
Un libro de introducción al diseño lógico escrito por uno de los pioneros en la materia.
Incluye una buena visión panorámica de los principios del diseño, diseño libre de ries-
gos y métodos de test, así como la formulación original de McCluskey del método de
tabu lación.
Quine. W. "The problem of simplifyi ng truth functions. " American Math ematical Monthly.
Vol. 59 (Octubre 1952), pp. 52 1-531.
El artículo que introdujo el método tabular.

4.10. PROBLEMAS
4.1. (Representación de cubos) Especi- (d) F = x'y'z' + wy'z + xyz' + w'yz'
ficar las representaciones de cubo e
identificar todos los subcubos para 4.2. (Representación con mapa) Ge ne rar
las siguientes funcio nes booleanas. las representaciones con mapa para
(a) F = i,io + xoY' , + x,i, + x,xo + las siguientes fu nciones booleanas.
x¡y'o (a) F = \V'x + xy + wi + \vx
(b) F;;;; w'z' + wz + w) (b) F = x ,x'o + x,Yo + y ,yo + x,y, +
(e) F = \V'~" + ~y + \Vi X oY,
176 Principios de diseño digital

(e) F = w'z' + \Vz + w'y + yz 4.8. (Método tabular) Utilizando el méto-


(d) F = w'x'z' + w'..\Y + WX~ + wx'y do tabular, obtener todos los implican-
+ w'yz' tes primos esenciales y coberturas
mínimas para las siguientes expresio-
4.3. (Formas estándar) Utilizando el méto-
nes booleanas.
do del mapa, obtener la forma están-
(a) F= L(O, 1,2. 3,5.6.7. 10, 11 , 15)
dar de suma de productos para las
(h) F = L(O, 1, 2,3,6.7, 8.9.12,13.
siguientes funciones booleanas.
14. 15)
(a) F= y' ,(y'o+xo) + x ,(Y' , + xo + y'o)
(e) F = L(O, 2.4.5. 10,11, 13. 15)
(b) F;;;; x' ¡x' 0-)1' ¡y'o + x' ¡-rci ¡Yo + (d) F = L(I , 2, 3, 6, 7. 8, 9, 12. 14)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
X¡XcV'¡Yo + X1..\.1oY¡io
(e) F = \V/z' + yz + w.: 4.9. (Método tabular) Utilizando el méto-
(d) F = Wl/Z ' + xy'z + lVyZ + x'y~' do tabular, obtener todas las cobertu-
ras mínimas para las siguientes fun-
4.4. (Mé todo del mapa) Utilizando el
ciones booleanas.
método del mapa, determinar los
(a) F = wx + x'y' + w'y
implicantes primos de las siguientes
(h) F::; w'y'z' + xy'z + wy.: + wx'y +
funciones booleanas.
w'x'.:'
(a) F = X'¡KO + YIYo + x'r\"c/ ¡Yo +
(e) F::; wx'y'z' + wxz' + x'y';:: + \V'y
x'¡xoY¡JI'o + x¡x'oY ¡/o
(h) F = w/x' + w'xy + wx'y' + HiX (d) F = x' ,x'aYo + x IV, + x,x'~)',Yn
(e) F = w'y'z' + ..\)1'Z + wyz + x'yz' 4.10. (Traslación a arrays de puertas)
(d) F;;;; w/y + w'x'z + xyz' + wx'y' + Convertir la función wx'y' + yw'z' +
wy'z.' yxz + y..\"lV a:
(a) puertas NANO de 2 entradas
4.5. (Método del mapa) Obtener todos los
(h) puertas NANO de 3 entradas
implicantes primos esenciales para las
(e) puertas NANO de 4 entradas
siguientes funciones booleanas.
(a) F=y',(y'II+xl1+x,)+x,(xo+ y'o) 4.11. (Traslación a arrays de puertas)
(b) F = ,t',x'IIy',y'O + x'r'aY', yo + Convertir las siguientes funciones a
x¡xoY¡Yo + x¡x'oY li o puertas NOR de 3 entradas.
(e) F;::: w/x/z/ + w'x1y + wxz + wx'y' (a) F::; wX'y' + xyz + w'yz' + wxy
(d) F = y'z + wyz + w'(v' + z') (h) F = wx'v' + y(lV'Z' + xC: + IV))
(e) F::; H'X'y' + \V'y.:: + xz(w + y)
4.6. (Método del mapa) Obtener todas las
(d) F = IV'(y:' + xy) + lV(X'y' + xz)
coberturas mínimas para las siguien-
tes funciones booleanas. 4.12. (Traslación a arrays de puertas )
(a) F = lV'X' + w'xy + wx + w.r y' + xy Suponer que las siguientes expresio-
(b) F = yz + lV'Z' + wiz nes han de implementarse con puertas
(c.) F = x'y'z' + \Viz + xyz + w'yz' NOR de 2 entradas y realizar la des-
(d) F = \Vy':' + lVX'y' + w'y + w'x'y'z composición de puertas que minimice
+ wxy.:' su retardo.
(a) F;;: w'xy.:' + w'y';::' + ~vy'z + y..: +
4.7. (Método tabular) Utilizando el méto-
H,':ey::'
do tabular, obtener todos los implican-
(h) F::; w'y + WZ + w';:'
tes primos para las siguientes expre-
(e) F = HI'X' + W..\" + w'x.v + IV),';::' +
siones booleanas.
wx'y'z
(a) F=~0,4,5 , 8 , 9.10, 12.13, 14, 15)
(d) F::; wi + xy + w'x + \iVxy;:
(b) F=L(O, 1,2.4, 5, 6,9, 11 , 13, 15)
(e) F = L(I , 2. 3. 6, 7, 8. 9.12, 14) 4.13. (Traslación a la tecnología) Utilizando
(d) F = L(O, 2. 4. 5. 10, 11 , 13, 15) la biblioteca detlnida en las Tablas 3. 14,
Simplificación de funciones booleanas 177

3.15 Y3,16, realice la traslación a la tec- (e) La biblioteca a medida definida


nología y minimice el retardo para las en las Tablas 3,14, 3. 15 Y 3,16,
siguientes funciones booleanas.
4.17. (Traslación a la tecnología) Obtenga
(a) F; y',Vo +x,, +x,)+x,(x,, + y'o)
una implementación con retardo míni-
(b) F; IV'{X'Z' + x)') + w{xz + x'y')
mo para la función de acarreo antici-
(e) F = w'x ¿ + w'xy + \Vxz + wx'y'
l

(d) F; IVX'y' + y(w'z' + x(z + w» pado c4 ; g3 + P3g2 + P3P2g , + P3P2!',g"


+ P3P2!',Poco que utilice:
4.14. (Traslación a la tecnología) Rehacer el (a) La biblioteca a medida defmida
problema 4,13 utilizando sólo la en la Tabla 3,14.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
biblioteca definida en la Tabla 3,14, (b) La biblioteca a medida definida
en las Tablas 3,14 y 3, 15,
4.15. (Traslación a la tecnología) Rehacer el
(e) La biblioteca a medida defini -
problema 4,13 utilizando sólo la
da en las Tablas 3.14, 3,15 Y
biblioteca definida en la Tabla 3,16,
3,16,
4.16. (Traslación a la tecnología) Comen-
4.18. (Diseño libre de riesgos) Detectar y
zando con el sumador completo defi-
corregir todos los riesgos estáticos
nido en la tabla del Problema 3,15,
para la solución propuesta en el
di señar una implementación con retar-
Ejemplo 4, 1,
do mínimo que utilice:
(a) La biblioteca a medida definida 4.19. (Diseño libre de riesgos) Diseñar uoa
en la Tabla 3,14, implementación libre de riesgos para
(b) La biblioteca a medida definida la función booleana dada en el
en las Tablas 3,14 Y 3,15. Ejemplo 4,2.
180 Principios de diseño digital

En este capítulo se di señan los componentes combinacionales básicos que se uti-


lizan en el diseño digital a nivel de registro. Estos componentes combinacionales,
junto con una variedad de componentes de almacenamiento, completan la micro-
arquitectura de todos los procesadores estándar y circuitos integrados de aplica-
ción específica a medida. Los componentes combinacionales pueden utilizarse
para transformar datos, para interconexiones y para control. Más concretamente,
los componentes para transformación de datos realizan operaciones aritméticas
(suma, resta, multiplicación y división), operaciones lógicas (ANO, OR, XOR y
complementación), operaciones de comparación (mayor que, igual que y menor

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
que) y operaciones de tratamiento de bits (desplazamiento, rotación, extracción e
inserción). Los componentes de interconexión, que comprenden selectores y
buses, se utilizan para conectar componentes aritméticos y de almacenamiento.
Los componentes de conversión tales como decodificadores y codificadores se
usan para realizar conversiones entre diferentes códigos. Finalmente, los compo-
nentes universales como memorias de sólo lectura (ROM, Read Oll/y Mem ol)') y
arrays lógicos programables (PLA) se utilizan principalmente en el diseño de uni-
dades de control.
En las secciones siguientes se describen lodos estos componentes y se mues-
tra cómo pueden construirse a partir de puertas estándar. Para simplificar las
explicaciones. se utilizan sólo puertas genéricas ANO, ORo XOR y NOT, y no se
intenta optimizar cada diseño para una tecnología o biblioteca particu lar.

5.1. SUMADORES CON ACARREO EN CASCADA O PROPAGADO


En esta sección se describen los componentes aritméticos utilizados para reali zar
la suma binaria. Como se explicó en el Capítul o 2, para sumar dos números bina-
rios.x = X,, _I"'XO e Y = y,,- I"'Yo se suman cada par de bits X; e y;, así como el bit de
acarreo c;, el cual se propaga desde la posición del bit anterior. Sumando estos bits
para cada posición i, entre O y 11 - 1, se produce el bit de suma s; y un bit de aca-
rreo de salida c ;+ l' Este procedimiento para la suma de un bit se describió en la
tabla de verdad de la Tabla 2.3 y se repite en la Figura 5.1 (a).
Para obtener el circui to lógico de este sumador binario, se necesita convenir
la tabla de verdad de la Figura 5.1 (a) en la representación con mapa de la Figura
5. 1(b). A partir de esta representación se pueden conseguir expresiones booleanas
que tienen un oúnimo número de literales, necesarios para el diseño de un suma-
dor de un bit. Como este sumador realiza la suma de dos bits X i e y;, y del bit de
acarreo c;, generalmente se le denomina sumador completo (FA , Full Adder).
Como se recordará, este sumador completo se utilizó ampliamente en el Capítulo
3 como ejemplo de cómo implementar una función booleana dada con diferentes
bibliotecas (Ejemplos 3.7 y 3.8) y tecnologías (Figuras 3.2 1. 3.22 y 3.24). En la
Figura 5.I(c) se muestra el circuito lógico para este FA , que contiene cinco puer-
tas genéricas.
Como regla, cualquier sumador binario puede implementarse como una cone-
xión serie de FA, dispuesta de manera que el acarreo de salida de cada FA sirve
Componentes combinacionales 181

de acarreo de entrada para el siguiente FA más signjficativo. Por ejemplo, un


sumador de 8 bits consta de ocho FA conectados de acuerdo con el circuito de la
Figura 5.I(d). En general, cualquier sumador de n bits, cuyo símbolo gráfico se
muestra en la Figura 5.1(e), podría construirse de este modo. Como puede verse,
el mayor retardo en el sumador sería desde el acarreo de entrada co, o bits menos
significativos xoe Yo, al acarreo de salida cout ' Es decir, cualquier cambio en co, Xo
o Yo tiene que propagarse o difundirse por todos los FA, por lo que a este suma-
dor se le denomina sumador de acarreo propagado (ripple-can y adder).

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
y, XI' x i yi
XI C¡ Ci+l SI
,
¡· í

, o 01 ti 10 e O 01 11 10
O O O O O
O O I O I o 1 I O I
O I O O I
O I I I O
I O O O I I I I 1 I I I
I O I I O
I I O I O
I I I I I S=
, .t , $\'$c
. , I c:,. , =X¡Y, +", (x, $)',)

(a) Tabl:¡ de \'crdad del sumador (h) Representación con mapa


completo
Xi

x y

Co ut Sumador
f.-J==-C]::l......!-c,
FA n
'-----.:¡:. s
s,
(e ) Circu ito lógico del sumador completo (e) Símbolo gráfico

~
'- '- '- '- '- '- '-
e, e, e. e, e,
~
0,
t· FA 1-'- FA ¡...-.:: I'A ~ FA ~ FA ¡...-.:: FA FA ~ FA

'- , '-, '-,- ... , '-, '-,- - ,.- '-,

", " '1 -'o


(d) Unidad de suma de ocho bits

FIGURA 5. 1 Sumador de acarreo en cascada.


182 Principios de diseño digital

5.2. SUMADORES CON ACARREO ANTICIPADO


Sin embargo, es posible reducir el retardo del acarreo en cascada en este tipo de
sumador de acarreo propagado utilizando lo que se denomina la técnica de aca-
rreo anticipado. Esta técnica es ventajosa debido a que la mayor parte de las
expresiones de cada acarreo en la cadena pueden ser precalculadas. Para explicar
este concepto, primeramente trataremos de precalcular los acarreos de un suma-
dor modular de 4 bits, que sumaxi+ :¡Xi+zXi+IXi' Yi+3Yi+2Yi+IYi y el acarreo de entrada
e i . En este sumador modular, si se define la función generación de acarreo 8i = xiYi

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
y la función propagación de acarreo Pi = Xi El) Yi' los cuatro acarreos ei+I, .. ·,ei+4
pueden .expresarse como sigue:

C;+ I = g¡ + Pie,. (5. 1)
Cj+2 = gi+l + Pi+l Ci+l (5.2)
Ci+3 = 8;+2 + Pi+2C ¡'+2 (5.3)
Ci+4 = 8;+3 + P i+3Ci+3 (5.4)

Además, tras sustituir términos, se puede expresar cada uno de estos acarreos
en términos de ei , como en las siguientes expresiones:

Cj + 1 = g¡ + Pie,. (5.5)
ei+2 = 8i+1 + P i+18i + Pi+tPiei (5.6)
ei+3 = 8i+2 + Pi+28i+1 + Pi+2Pi+18i + Pi+2Pi+1Pi e i (5.7)
Ci+4 = g;+3 + Pi+3gi+2 + Pi+3Pi+2Ei+1
+ Pi+3Pi+2Pi+lg¡ + P i+3Pi+2Pi+tP ¡C¡ (5.8)
Las ecuaciones (5.5)-(5.8) muestran que los acarreos e i+1 ' e i+2' ei+3 Ye i+4 pue-
den calcularse directamente a partir de los bits de entrada y del acarreo de entra-
da ei sin el efecto cascada. En otras palabras, ninguna de las Ecuaciones (5.5)-
(5.8) depende de ei+1 ' e i+2' e i+3 o ei+4' sin embargo, esta técnica no puede ampliar-
se fácilmente a módulos de n-bits, siendo n mayor que cuatro, a causa de las limi-
taciones en la conectividad de entrada y salida. Como se observa en la Ecuaciones
(5.5)-(5.8), el número de términos producto y el número de literales en cada tér-
mino producto se incrementa en uno en cada ecuación sucesiva, necesitando ade-
más puertas con n+ 1 entradas para un módulo de n bits. Si la biblioteca disponi-
ble contiene puertas con conectividad de salida mucho más pequeña, estas puer-
tas deben implementarse con múltiples niveles de puertas, como se ha visto en el
Ejemplo 4.10. Una implementación con múltiples puertas introduce mayores
retardos, lo que contradice el objetivo de mejorar la velocidad de propagación del
acarreo.
De forma similar, al incrementarse el número y tamaño de los términos en las
Ecuaciones (5.5)-(5.8), puede observarse un incremento en la aparición de varia-
bles en esos términos. Concretamente, cada variable Pi+k' O S; k S; n - 1, aparece
(k + l)(n - k) veces en las ecuaciones del acarreo. Por ejemplo, Pi aparece cuatro
veces YPi+1' Pi+2 YPi+3 aparecen 6, 6 y 4 veces, respectivamente. Con un número
mayor de aparición de variables, debe incrementarse la conectividad de salida de
Componentes combinacionales 183

.sus adaptadores, lo que implica incrementar el tamaño y el retardo de la imple-


mentación completa. Por estas razones prácticas, n se limita usualmente a 4.
La Ecuación (5.8) puede ser también reescrita como
(5.9)
donde
g(i,i+3) = gi+3 + Pi+3gi+2 + Pi+3Pi+2gi+l
+ Pi+3Pi+2Pi+lg¡ (5.10)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
P U.i+3) = Pi+3Pi+'1Pi+iPi (5.11)
En las Ecuaciones (5.5)-(5.11) se ha definido el componente combinacional,
denominado generador de acarreo anticipado (CLA) (carry-Iook-ahead gene-
ra/or). En las Ecuaciones (5.10) y (5.11), específicamente, se han definido las
funciones generación de acarreo y propagación de acarreo para un módulo de 4
bits, que pueden utilizarse por los CLA de mayor orden en la generación de aca-
rreos en módulos mayores de 4 bits.
Este generador CLA puede utilizarse para reemplazar la cadena de acarreo de
4 bits que calcula ci+l' ci+2' ci+3 Y Ci+4 haciendo, así, más rápido el sumador.
Considérese, por ejemplo, la comparación entre un sumador con acarreo anticipa-
do y un sumador en cascada. Como se observa en la Figura 5.2(a), la cadena de
acarreo de 4 bits en el sumador en cascada contiene una puerta AND y una puer-
ta OR, utilizadas para calcular Ci+l = gi + PiCio
Sin embargo, si reemplazáramos esta cadena de acarreo por el generador CLA
mostrado en la Figura 5.2(b) obtendríamos el sumador CLA mostrado en la Figura
5.2(c). En esta versión del sumador, el generador CLA produciría cuatro acarreos
con menos retardo que la cadena de acarreo propagado. Los retardos de entra-
da/salida para el sumador de acarreo propagado de la Figura 5.2(a) y el sumador
CLA de la Figura 5.2(c) se resumen en la Tabla 5.1. Como puede observarse en
la tabla, el generador CLA tarda sólo 8.8 ns en generar Ci+4' lo que es significati-
vamente menor que los 19,2 ns que requiere la cadena de acarreo propagado. De
igual forma, el retardo desde Xi o Yi hasta Ci+4 es de 13,0 ns para el sumador CLA,
a diferencia de los 23,4 ns del sumador de acarreo propagado. De esta compara-
ción, pues, se deduce que el generador CLA de 4 bits originará un sumador de 4
bits más rápido, y que conectando varios sumadores de 4 bits como éstos se podría
mejorar también sustancialmente la velocidad de sumadores mayores. En la
Figura 5.3(a) se muestra un sumador de 16 bits que contiene cuatro sumadores
con acarreo anticipado de 4 bits. El sumador se ha realizado de forma tal que los
acarreos en cada sumador de 4 bits se calculan con un generador CLA, mientras
que los 4 bits de acarreo C4' c8' c12 Y c16 se propagan en cascada a través de los
módulos de 4 bits, de manera que el acarreo de salida desde un generador servirá
como entrada de acarreo al siguiente generador más significativo.
Este tipo de sumador, en el que los generadores CLA se han utilizado para
aumentar la velocidad de los acarreos en módulos de 4 bits, mientras que los aca-
rreos entre los generadores se propagan en cascada a través del sumador, se
denomina sumador CLA de un nivel. También se puede hacer más rápida la
184 Principios de diseño digital

generación de los 4 bits de acarreo C4' Cs, C12 Y cI6 utilizando un generador CLA
adicional.

,,.,
r--- ----- -1 r--- f-¡==;--j-I r--- H==;--j·-' r---¡":¡=:::,i -'

(", ' ~

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) Módulo de 4 bits de un sumador con acarreo en cascada

(b) Circuito lógico de acarreo anticipado


.f, .1 Y"I

~ ~
r--~----'~'·~'--+---LL----·~'·~'--~~-L--~~-1--~~--~2-,~
Gm,",doc e LA "

(e) Sumador de 4 bits con generador de acarreo anticipado

FIGURA 5.2 Generador de acarreo anticipado.

Utilizando la Ecuación (5 .9), los acarreos C4' CS' C l 2 Y cI6 pueden expresarse
como:
C4 = g (O.3)+ P(O,3)cO (5.12)
Cs = g(4,7) + P(4,7 )c4 (5.13)
C12 = g(s.l l ) + P (8, II)c8 (5 .14)
cl6 = g(12,15) + P ( 12.15¡C1 2 (5.15)
Componentes combinacionales 185

TABLA 5. 1 Retardos en cascada y con acarreo anticipado


para un sumador modular de 4 bits a

RETARDO ACARREO
CADENA DE ACARREO RETARDO CASCADA
ANTICIPADO

c¡(x¡. Yi) a Ci+1 4,8 (9,0) 4,8 (9,0)


c ¡(x¡. y¡) a ej+2 9,6 (13,8) 5,6 (9.8)
C¡(X¡. y¡) a Cl+3 14,4 ( 18,6) 6,4 ( 10,6)
c,{x¡, y,.) a Ci+4 19,2 (23,4) 4,8 ( 13,0)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
c¡(x¡. Yi) a g l;,;+3) No aplicable 6,4 ( 10.6)
c¡(x¡. Yi} a PW+3) No aplicable 3,2 (7,4)

~ Los valorc ~ entre parénteSIS son retardos desde x, o y"

Ya que las Ecuaciones (5.12)-(5.15 ) tienen la misma forma que las Ecuaciones
(5.1 )-(5.4), puede utilizarse un generador CLA para generar los acarreos C4' CM' Cl 2
y C l 6 como indica la Figura 5.3(b). Observe que, en este diseño a dos niveles, el
acarreo no se propaga en cascada a través de los generadores CLA: por el contra-
rio. el segundo nivel genera estos acarreos para los generadores CLA del primer
nivel. En este diseño, pues, los acarreos de salida e", e8' cl 2 Y C l 6 desde el primer
nivel de generadores no se utilizan. En su lugar, se utilizan las salidas g (I.;+3) y
P U.;+3) desde los generadores del primer nivel para generar estos acarreos en el
generador CLA del segundo nivel.

'11 '11 ' ltI 1 , ,, " , ' "" " l. l_ l. ' .. 'b '~ " t, ' 1

(a) Generador C LA de un ni vel

(b) Generador CLA de dos niveles

FIGURA 5.3 Sumador de 16 bits con acarreo anticipado.


186 Principios de diseño digital

Igual que en la Ecuación (5.9), se puede definir el acarreo Cl6 en términos del
acarreo de entrada Co con la siguiente ecuación:
(5.16)
Las funciones de 16 bits de generación de acarreo y propagación de acarreo,
Y P(O.IS ) tienen la misma forma que las dadas por las Ecuaciones (5.10) y
g (o. IS )
(5.11), Y pueden utilizarse para la generación de acarreos de mayor orden C16, c32 ,
c48 Y c64 en un sumador de 64 bits con tres niveles de generadores CLA.
En general, en un sumador de n bits se pueden utilizar Ilog 4nl niveles de gene-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
radores CLA. En la Tabla 5.2 se han comparado los retardos de los sumadores de
16 bits de las Figuras 5.3(a) y (b), que disponen de generadores CLA de uno y dos
niveles, con el sumador de 16 bits de acarreo propagado.

TABLA 5.2 Retardos de acarreos en cadena para el sumador de 16 bits'

I CADENA DE ACARREO RETARDO CASCADA Clf DE UN NIVEL CLA DE DOS NIVELES


Co(Xo, )'0)
co(xo, )'0)
a c,
a c,
19.2 (23.4)
38.4 (42.6)
4.8 (13.0)
9.6 (17.8)
4.8 (13.2)
5.6 (16.2)
co(xo, Yo) a c 12 57.6 (61.8) 14.4 (22.6) 6.4 (17.0)
co(xo, Yo) a Cl6 76.8 (81.0) 19.2 (27.4) 4.8 (19.4)

a Los valores entre paréntesis son retardos desde xI) o Yo.

En la tabla se observa que el sumador de 16 bits con dos niveles de genera-


dores CLA es, aproximadamente, un 30 por ciento más rápido que un sumador
que utilice sólo un nivel de generadores CLA y, además, es cuatro veces , apro-
ximadamente, más rápido que un sumador de acarreo propagado. La razón de
esta diferencia en el retardo está en la realización de las cadenas de acarreo en
los sumadores de acarreo propagado y con acarreo anticipado. Para comparar
estos retardos, asumiremos que cada puerta tiene idéntico retardo. Bajo esta
hipótesis, un sumador con acarreo propagado de 11 bits tiene 2/1 retardos de puer-
ta, como puede apreciarse en la Figura 5.2(a). Por otra parte, el sumador de /1 bits
con Ilog411 l ni veles de generador CLA requiere C2l10g~ l) retardos de puerta para
generar los acarreos del nivel más alto y otros 2(1 log4/1 H) niveles de puerta para
generar acarreos por cada bit, como se ha mostrado en la Figura 5.3(b). Así pues,
el retardo de puerta total crece 10garítmicamente con el número de bits en un
sumador CLA, mientras que crece linealmente en un sumador de acarreo propa-
gado.
Por comodidad, se utilizará la técnica de acarreo propagado a lo largo de este
libro, aunque debe tenerse en cuenta que, en la práctica, la técnica CLA se utiliza
más frecuentemente en diseños de altas prestaciones.
Componentes combinacionales 187

5.3. SUMADORES I RESTADORES


Como regla, la substracción binaria se realiza sumando al minuendo el comple-
mento a dos del substraendo. El complemento a dos se obtiene complementando
cada bit del sustraendo y sumando 1. Esta adición del 1 se lleva a cabo poniendo
el acarreo de entrada ca a I mientras se suma el minuendo al complemento del
substraendo. Es decir, en general la resta se realiza a partir de la suma y, por este
motivo, usualmente es más conveniente construir una unidad funcional que reali-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ce tanto la suma como la resta.
En general, este sumador/restador tendrá dos entradas A = a,,_I ···aO Y
B = b,,_I ...bO Y una salida F = I,,- I .. fo , así como una señal de selección, S. Siempre
\ que S = O, el sumador/restador realizará la suma, y cuando S = 1 realizará la resta.
La tabla funcional para el sumador/restador se muestra en la Figura S.4(a), y su
símbolo gráfico se indica en la Figura S.4(b). Finalmente, como ejemplo, en la
Figura S.4(c) se muestra un sumador/restador de 8 bits. Obsérvese que esta figu-
ra representa un diseño de acarreo propagado, si bien podría también utilizarse
una implementación de acarreo anticipado (CLA) como la expuesta en la Sección
S.2. En esta implementación, el complemento de la entrada B se obtiene realizan-
do una operación XOR entre S y B.

A 8

s
Sumador/restador
o A+B Suma
1 A+B'+1 Resta
(a) Tabl a de verdad
F
(b) Símbolo gráfico

(e) Circ uito lógico

FIGURA 5.4 Sumador/restador en complemento a 2.

I
188 Principios de diseño digital

5.4. UNIDAD LÓGICA


En el sentido más amplio de la palabra, una unidad lógica permite reali zar una
entre varias funciones booleanas con dos operandos X = x" .. ]...xo e Y = y".. ]...Yo' Es
decir, siempre que la función /¡ se selecc ione, la unidad lógica generará el resul-
tado S = lj(X, Y) = /¡(x" .. ], y".. ]) .. Jj(xo, Yo)'
Ya que una unidad lógica que realice las 16 funciones booleanas de dos varia-
bles no es demasiado compleja, utilizaremos esta unidad para demostrar los pro-
ced imientos generales que se utilizan para diseñar cualquier unidad lógica dada.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En la Figura 5.5(a) se muestran las 16 func iones booleanas de dos variables.
Como son 16 funciones, deben utili zarse cuatro variables de selección S), S~, S] y
So para permitir elegir cualquiera de estas funciones. La codificac ión de estas
variables de selección para una función dada es tal que la variable de selección Si'
para O $ i $ 3, es igual a 1 si y sólo si el minterm m ¡ = I para esa función. Por
ejemplo, la función OR es/]4 = m ) + IIZz + m], así que los valores de las variables
de selección son S)S2S]So = 1110. Obsérvese que. cuando el valor de las variables
de selección S)S2S]SO se interpreta como un número binario, será igual al índice
de la función que selecciona. En otras palabras, en el caso de la función 1]4. el
valor de S3S2S]SOes igual a 111 0, que es también la representación binaria del
número entero 14.

", )',

X, y¡ fa f, f2 fa f. f. f. f7 f. f, '10 "1 '12 "3 "4"5


'" mo O O O 1 O 1 O 1 O 1 O 1 O O 1 O So
" m] O 1 O O 1 1 O O I I O O 1 I O O I S]
" S,
.~~
'''2 I O O O O O 1 1 I 1 O O O O 1 1 I
11/.3 1 1 O O O O O O O O I I I I I S,
(a) Funciones booleanas de dos variables
Componentes combinacionales 189

Como cada variable de selección controlará un mintenn , se puede escribir una


expresión para un módu lo de l bit de la unidad lógica (LU , Logic Unir) de la
siguiente manera:
S¡ = So'"0 + SIIIII + S2/1/2 + S3111 3
= S¡y:',y', + Slx ' ¡y¡ + S2x¡y ' ¡ + S3x¡y¡
El diagrama lógico de un módulo de l bit de la unidad lógica se muestra en la
Figura 5.5(b), y el símbolo gráfico de una unidad lógica de n bits se indica en la
Figura 5.5(c). En general, cualquier unidad lógica de 11 bits contendrá n módulos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
funcionando concurrentemente, como en el caso de la unidad lógica de 8 bits mos-
trada en la Figura 5.5(d).


5.5. UNIDAD ARITMÉTICO-LÓGICA
Una unidad a ritmético-lógica (ALU, Arirhllletic-Logic Unit) realiza las opera-
ciones aritméticas y lógicas básicas de un microprocesador. Estas operaciones
aritméticas incluyen, por ejemplo, la suma. resta, incrementar y decrementar, y
sus operaciones lógicas incluyen la ANO. OR, identidad y operaciones de com-
plemento. Como todas las operaciones aritméticas están basadas en la suma, se
puede di señar una ALU simplemente modificando las entradas de un sumador de
acarreo propagado o de acarreo anticipado (eLA). La lóg ica de modificación uti-
lizada en las operaciones aritméticas se denomina, a veces, un ampliador arit-
mético (AE, Arit/unetic Extender), y la lógica de modificación utili zada para las
operaciones lógicas se denomina un ampliador lógico (LE, Logic Extender) .
Cada uno o ambos ampliadores se conectan a la entrada del sumador, como se
indica por las líneas discontinuas de la Figura 5.6. Ahora, mostraremos cómo
diseñar estos ampliadores de uno en uno.

r -"'Ir ~-, r -' , r --l


I l' , I 11 1
" El,
IL E')A I " 1
JL.. _E!
_L _EiiA "
--" - 1---

X,
. >", Ye,
e,
X ·( 1 .tu
J y" )'2
e, -e,
FA FA FA FA
-~ en

+
J, •
1, •
Jo

FIGURA 5.6 Sumador de 4 bits con ampliadores aritméticos (A E) y lógicos (LE).


190 Principios de di seño digital

Como la ALU en cuestión realiza cuatro operaciones aritméticas y cuatro ope-


raciones lógicas, es necesario introducir una variable de control de modo, M, que
seleccionará operaciones aritméticas o lógicas de manera tal que siempre que
M = 1, la ALU realizará operaciones aritméticas y cuando M = O realizará opera-
ciones lógicas. También es necesario utilizar dos variables de selección, SI y So'
que habilitarán la selección de las cuatro operaciones aritméticas o de las cuatro
operaciones lógicas. Los valores asignados a SI y So para cada operación aritmé-
tica se resumen en la tabla funcional de la Figura 5.7(a).
Como se observa, la tabla también muestra el valor de la salida F de la ALU,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
así como los valores de las entradas del sumador X, Y Y Co necesarios para gene-
rar ese valor de F. Obsérvese que, de acuerdo con esta tabla, la entrada X del
sumador requiere siempre el valor de A, mientras que la entrada Y puede disponer
de todo unos, B, B' o todo ceros. Estos valores para la entrada Y serán generados
por el AE, cuya tabla de verdad se muestra en la Figura 5.7(b). Esta tabla se ha
obtenido a partir de la tabla funcional de la Figura 5.7(a) simplemente expan-
diendo la columna Yen las columnas b¡ e y¡. En la Figura 5.7(c) se muestra la
representación en forma de mapa del AE, a partir de la cual se obtiene su expre-
sión booleana:
y¡ = MS' lb¡ + MS'ob'¡
Finalmente, el circuito lógico de este AE se muestra en la Figura 5.7(d).

M S. ~ NOIIIIE DE lA RIOlN F X Y q,
O O Decremento A- l A Todo unos (1) O
O I Suma A+B A B O
• I O Resta A + B' +I A B' I
I I Incremento A + I A Todo ceros (O) I
(a) Tabla funcional
b,

MS.~b, y, "10 00
b; 01 11 10 'o
O
O
O O I
O I I
- --, ,- - ,\' ,

O 1 I 1 M
- --,
I
O I O O ,--
O I I I
I O O I ,, __-1-
r - -,
1 1
I
I
O I O - -- -•
O O
I I O
y¡=MS ¡b,+MS'¡jJ',
(b) Tabla de verdad .v,
(e ) Representación con mapa td) Esquema lógico

FIGURA 5. 7 Ampliador aritmético.


Componentes combinacionales 191

Una vez descrito el procedimiento de diseño de un AE, se puede volver al


diseño de un LE, tal como el que se inicia con la tabla funcional de sus opera-
ciones que se muestra en la Figura 5.8(a). En esta tabla puede verse que las entra-
das Y y Co siempre están a valor O para operaciones lógicas, mientras que la entra-
da X requiere diferentes expresiones booleanas para cada una de estas operacio-
nes. Basándose en esta tabla funcional, se puede desarrollar la tabla de verdad
para el LE, que se muestra en la Figura 5.8(b), y su representación en forma de
mapa, presentada en la Figura 5.8(c). A partir del mapa se puede obtener la
siguiente expresión booleana para decribir al LE:

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
x; = M'S'¡S'¡¡a'; + M'SISob; + Soa;b; + Sla; + Ma;
Una vez obtenida esta expresión, se procede a la construcción del circuito
lógico del LE, mostrado en la Figura 5.8(d).

M S, So toIBRE DE LA FUt.C1ÓN F X Y MS,So XI

O O O Complemento A' A' O '"


O O O O
O O 1
a' ,·
a¡b¡
O O l AND AANDB AANDB O O
O l O Identidad A A O O O l O al
O 1 1 OR A ORB A ORB O O O l l a¡+ b¡
l X X al
(a) Tabla funcional
(b) Tabla de verdad

M,.D M.1

J]SU S,
00 01 11 10 00 01 11 10
(I,b,
S,
00 ,' I ',
, ,
..,
M
, ,
01 ,' 1 ,' -,

~l ~ -
• '. ¿
.-, r -r , - - - -r----' ----, .
11
r -
J' : 1 J .' ~ 1,
l'

10
,, 1,
, , 1
1 1
l •• _
- -- -1 "
~,
UI
.x;~I'S 15'0'" I + M'S ¡Sub, + S¡p ,b¡+S 1aI + Ma,
",
(e) Representación con mapa (d) Circuito lógico

FIGURA 5.8 Ampliador lógico.

Hasta ahora, se han obtenido los circuitos lógicos para el AE y el LE, y la


siguiente tarea es conectarlos con un sumador para formar una unidad aritméti-
co-lógica completa, como la ALU de 4 bits mostrada en la Figura 5.9(a).
Obsérvese que, en la ALU, las operaciones lógicas se realizan en el ampliador
lógico y los sumadores completos (FA) se utilizan para pasar los resultados del
192 Principios de diseño digital

LE sin cambiarlos. En otras palabras, los FA se util izan como conexiones con
retardo fijo.
Obsérvese, también, que el acarreo de salida del bit más significativo repre-
senta un desbordamiento en el caso de aritmética sin signo y que la EX-OR de los
acarreos de salida de los dos bits más significativos representa el desbordamiento
en el caso de ari tméti ca en complemento a 2. Si es necesario, la ALU de 4 bits
mostrada en la Figura 5.9(a) puede ampl iarse a una ALU de 11 bits utilizando un
sumador de 11 bi ts conjuntamente con 11 AE Y n LE. El símbolo gráfico para esta
ALU se muestra en la Figura 5.9(b). En la industri a, muchas ALU utili zadas en

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
productos reales se construyen de esta manera, con la excepción de que pueden
diferir en el número y tipo de sus operac iones aritméticas y lógicas, y en la imple-
mentación de sus cadenas de acarreos.

11, (lu 110


{I ,
- -
So
s,
Mi - 1--
¡- r-- - r-'- r- ¡-'- r- r-'-

LE AE LE AE LE AE LE AE

-r '-L-r-"-r '-L-r-"-r
---yo- ---yo-

T
x) Y3 .1:
2 .\", x, -"1 "0 Yo
e,
~
e3 e2
FA FA FA FA

Ir',=
~ ~ ~ ~ ~
Desbordamiento (, J, Jo
(a) ALU de 4 bits

A B

~ ---r--~--~---'
S, Unidad lógi ca
M

Desbordamiento F

(h) Símbolo gráfico

FIGURA 5.9 Diseño final de la ALU .


Componentes combinacionales 193

5.6. DECODIFICADORES
Los decodificadores (a veces llamados también demultiplexores) se incorporan
frecuentemente en grandes unidades para su utili zación siempre que se neces ite

°
acti var o habilitar sólo uno de /1. subcomponentes . En ta l caso, a cada subcompo-
nente se le puede asignar un índi ce entre y 11- 1 que representa una direcc ión
binaria A. Para acti var un subcomponente concreto en un ti empo dado, esta direc-
ción A se decodifi ca en n líneas de habilitación, de las cuales sólo una es igual a
1. En general , un decodificador de 11/ a n tiene 11/ = log211 líneas de entrada,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
A",_I".A O' y 11 líneas de salida, C,,_I "'CO' as í como una entrada de contro l, E. Esta
entrada de contro l habilita las salidas del siguiente modo: siempre que E = O todas
las salidas son 0, y siempre que E = I sólo la salida C, será 1, siendo i el entero
cuyo valor es igual al valor binario de las entradas A ",_I" .A O'
Como ejemplo, la Fi gura 5. I O muestra un decodificador de I a 2, y el símbo-
lo gráfi co y la tabla de verdad se dan en las Figuras 5. 1OCa) y 5. IO(b). Como puede
verse, el decodificador tiene una línea de dirección, Ao, y una línea de habilita-
ción, E, con dos líneas de salida C o y CI ' Mientras E valga 1, Co = I siempre que
Ao = 0, y C I = I siempre que Ao = l . Las expresiones booleanas de las salidas C I
y Co se muestran en la Figura 5. IO(c) , mientras que su implementación con puer-
tas se presenta en la Figura 5.IO(d).

A"

E Ao C, Ca
Decodificador
J O O J
J J 1 O
O X O O
eI e" (b) Tabla de verdad
(a) Símbolo gráfico

E Au

e, Co
(e) Expresi6n booleana (d) Diagrama lógico

FIGURA 5.10 Decodificador de 1 a 2.


194 Principios de diseño digi tal

Si es necesario, este decodificador de l a 2 puede ampliarse a un decoditica-


dor de 2 a 4, como muestra la Figura 5.11. Obsérvese que, ahora, el decodificador
tiene dos líneas de dirección, A t Y Aa, la línea de habilitación, E, y cuatro líneas
de salida, C 3, Cl> C I y Ca. Como se ha explicado anteriormente, este decodifica-
dor de 2 a 4 se utiliza para decodificar el número binario representado por A I Y
Ao, es decir, para asignar un l a la línea de salida cuyo índice es igual al número
binario.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
A, Ao

Decodificador
E A, Aa C:! c.. e, c"
E
3 2 I a J O O O O O 1
1 O J O O J O
1 1 O O 1 O O
eJ e2 el Cu 1 1 1 1 O O O
O X X O O O O
(a) Símbolo gráfico
(b) Tabla de verdad

Co= EA ' JA 'O

e,= EA' JAU


C~= EA ,A'o
eJ = EA tAO
(e) Expresión booleana (d) Diagrama lógico

FIGURA 5. 11 Decodificador de 2 a 4.

También es posible construir decodificadores mayores de "m a /1" a pru1ir de


decodificadores de l a 2 y de 2 a 4. Por ejemplo, si se utilizan decodificadores de
l a 2 en la construcción, el decodificador dema l1 tendrá log2/1 niveles de deco-
dificadores de l a 2, cada uno de los cuales decodificará un bit de dirección. En
otras palabras, el bit de dirección más significativo será decodificado por un deco-
dificador, el siguiente bit más significativo por dos decodificadores, y así sucesi-
vamente hasta que el bit menos significativo sea decodificado por /1/2 decodifica-
dores. La salida de cada decodificador de un nivel particular habilitará a uno de
los decodificadores del siguiente nivel, de modo que el número de decodificado-
Componentes combinacionales 195

res en cada nivel sucesivo se duplicará con la distancia al primer decodificador.


En la Figura 5.12, por ejemplo, se muestra un decodificador de 3 a 8 realizado a
partir de decodificadores de 1 a 2. Su tabla de verdad se muestra en la Figura
5.12(a) y su implementación en la Figura 5.12(b). Se aplican los mismos princi-
pios cuando se utilizan decodificadores de 2 a 4, excepto que un decodificador de
2 a 4 puede decodificar 2 bits al mismo tiempo, ya que un decodificador de m a IZ
construido con decodificadores de 2 a 4 necesita sólo la mitad de niveles y la
mitad de decodificadores que uno realizado con decodificadores de 1 a 2, como
claramente se muestra en la Figura 5.12(c).

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
E Aa.-A, A., C, Gt es c.. Ca Ca t; Co
1 O O O O O O O O O O 1
1 O O 1 O O O O O O 1 O
1 O 1 O O O O O O 1 O O
1 O 1 1 O O O O 1 O O O
1 1 O O O O O 1 O O O O
1 1 O 1 O O 1 O O O O O
1 1 1 O O 1 O O O O O O
1 1 1 1 1 O O O O O O O
O X X X O O O O O O O O

(a) Tabla de verdad

• •
• • • •
••••
(b) Implementación con decodificadores de I a 2 (e) Implementación con decodificadores de 2 a 4

FIGURA 5.12 Decodificador de 3 a 8.

5.7. SELECTORES
En muchos diseños se encuentran componentes que necesitan utilizar datos de
fuentes distintas en tiempos distintos. Para tales diseños es necesario un selector
196 Principios de diseño digital

o multiplexor (MUX), que es un componente combinacional que permite selec-


cionar una o varias fu entes como operandos de una ALU, para almacenarlos en
una memoria o para transmitirlos a un bus. En general, un selector tendrá 11 entra-
das, una salida y log2/l señales de selección que selecc ionarán datos desde cua-
lesquiera de las Il entradas y las llevarán a la salida. Aunque se podría constru ir
cualquier selector de 11 a l , en la práctica la mayoría de las bibliotecas lógicas sue-
len incluir sólo selectores de 2 a I y de 4 a l , simplemente porque los se lectores
con un número mayor de entradas pueden realizarse fác ilmente a partir de selec-
tores de 2 a l y de 4 a 1.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En la Figura 5.1 3 se muestra un selector de 2 al , cuyo símbolo gráfi co se pre-
senta en la Figura 5. 13(a) y su tabla de verdad en la Figura 5. 13(b). Como puede
verse, este selector de 2 a I di spone de dos entradas, D, y Do, Y una salida, Y, ade-
más de una señal de selecc ión, S, que selecciona una de las entradas del sigui en-
te modo: siempre que S = O la salida Y = Do, mientras que siempre que S = I la
salida Y = D" La ex presión booleana para la salida Y se indi ca en la Figura 5. l 3(c)
y el di agrama lógico completo de este selector de 2 a I se presenta en la Figura
5.1 3(d).

Ji
y
s
O Do
I D,
l' (b) Tabla de verdad
(a) Símbolo gráfico

l'

(C) Exprcsiun booleana (d) Diagrama lógico

FIGURA 5.13 Selector de 2 a t .

En contraposición, la Figura 5. 14 muestra un selector de 4 a l , que seleccio-


na cualesquiera de las cuatro líneas que indiquen las dos señales de selección S,
Y So· En esta figura puede verse el símbolo gráfico, la tabla de verdad, la expre-
sión booleana de salida y el diagrama lógico de este selector de 4 a l .
Componentes combinacionales 197

Si es necesario, los selectores de mayor tamaño pueden construirse a partir de


un número de selectores de 2 a l. Por ejemplo, para un selector de /1 a l , donde /1
es una potencia de 2. se util izarán log2/1 señales de selección y log2" nive les de
selectores de 2 a l . Cada señal de selección servirá para controlar uno de los nive-
les de sel ectores. En el primer nivel , cada selector seleccionará entre dos fuentes
de datos, mientras que en el segundo nivel cada selector seleccionará entre las dos
salidas del selector del primer nivel. Es decir, en cada nivel superior al primero,
cada selector se utili za para seleccionar una de las dos sa lidas producidas por los
selectores de l ni vel anterior. Como ejemplo de selectores de mayor tamaño, la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Figura 5.15 muestra un selector de 8 a l, cuya tabla de verdad se· indica en la
Figura 5. l 5(a), mientras que en la Figura 5.l5(b) se muestra una implementación
que utiliza selectores de 2 a l.

DJ D ~ D I DI)

S, S, So y
So
O O Do
O 1 D,
l O D,
y
1 1 D3
Ca) Símbolo grMico (b) Tab l:1 de verdad

0 3 O, O, O" S. Su

Y=S. 'S oDo+S.'SoD.


+S !·f)'.P~ +S ,SoDJ

(e) Expresión booleana (d) Diagrama lógico

FIGURA 5.14 Selector de 4 a 1.

Es posible implementar el m1Srño selector de 8 a 1 uti lizando puertas lógicas,


como se muestra en la Figura 5.16. En este caso. como puede verse, se utiliza un
decodificador de 3 a 8 para decodificar las señales de control. Aunque esta repre-
sentación con puertas parece bastante sencilla, presenta el inconveniente de que
no es fáci lmente escalable o ampliable. En otras palabras, el número y el tamaño
de las puertas del decodificador, así como el tamaño de la puerta OR de salida,
198 Principios de diseño digital

tendrían que crecer con el número de entradas de manera que las puertas de mayor
tamaño tendrían que implementarse como árboles de puertas, lo que incrementa-
ría significativamente el coste y el retardo del selector. Por este motivo, general-
mente se utiliza esta implementación con puertas sólo para pequeños valores de
n, mientras que los selectores para valores mayores de n se construyen con el
método descrito anteriormente, utilizando varios niveles de selectores de 2 a l y
de 4 a 1.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
s, s, So y
O O O Do
O O I DI
O I O D2
O I I D,
I O O D.
I O I D,
I I O D.
I 1 I D,
(a) Tabla de verdad

y
l b) Imple ment ación con selectores de 2 al

FIGURA 5.15 Selector de 8 a 1.

s, s, So y So
SI
O O O DO 52
O O I DI
O I O D?
O I I D;
I O O D.
I O I D,
I I O D.
I I I D,
(a) Tabla de verdad

(b) impleme ntac ió n con un decodificado r

FIGURA 5.16 Selector de 8 a 1 alternativo.


Componentes combinacionales 199

5.8. BUSES
Aunque los selectores descritos en secciones anteriores se utilizan habitualmente,
aquéllos que tienen un mayor número de entradas son difíciles de fabricar, ya que
requieren reunir muchas conexiones centralizadas, donde se sitúa el selector.
Afortunadamente, existe una solución elegante a este problema, que se denomina
bus, que puede estar situado fácilmente alrededor de otros objetos en un micro-
chip o en una tarjeta PCB. Para realizar un bus se utiliza un componente denomi-
nado adaptador triestado, cuya salida proporciona tres valores diferentes, O, l YZ.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
El valor Z representa un estado de alta impedancia, que puede considerarse como
una desconexión eléctrica del bus a efectos prácticos.

(a) Símbolo del adaptador triestado


Lffi1
O
1
Z
D
(b) Tabla de "erdad para un adaptador triestado

s --.1[;»--..,

Do -+-----1 ':>---1
y
D, -------1 o Do
1 DI
(e) Bus de 2 entradas (d) Tabla de verdad para el bus de 2 cntr3das

Do --+++---1
(

D, _-++_--1 ~>---I
y
s, ~ y
D, -+---r,::>---~
O O DO
D, _ _ _ _ ---1 O l DI
1 O D2
l i D,
(e) Bus de 4 en tradas (f) Tabla de verdad para el bus de 4 entradas

FIGURA 5.17 Implementación con bus.


200 Principios de diseño digital

Como puede apreciarse en la Figura 5.17(a) y (b), un adaptador triestado tiene


una línea de datos, D, una línea de habilitación, E, y una línea de salida, Y. Siempre
que E = I la salida Y seguirá a la línea de datos de entrada, D. En caso contrario,
siempre que E valga O, el valor de la salida será igual a Z. Cada bus contiene un con-
junto de adaptadores triestado de modo que se utiliza un adaptador para cada fuen-
te de infonnación de datos que se conecta al bus. Como sólo se pennite que una
fuente de datos se conecte al bus en un instante dado, las líneas de habilitación de
los distintos adaptadores pueden codificarse como direcciones de fuente para que el
almacenamiento y transmisión de estas direcciones sea más eficiente.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Un bus, en su funcionamiento, es equivalente a un selector ya que puede tener
n entradas de datos, pero proporciona sólo un dato al bus en un instante dado. Por
ejemplo, el bus de 2 entradas mostrado en la Figura 5.17(c) tiene dos líneas de
datos, DI y Do, Y una línea de dirección, S, tal que cuando S = O, Y es igual a Do,
y cuando S = I entonces Yes igual a DI' Obsérvese que la tabla de verdad de este
bus de 2 entradas, mostrada en la Figura 5.17(d), es equivalente a la tabla de ver-
dad de un selector de 2 a l. Utilizando los mismos principios, se pueden construir
buses que tengan más entradas, tales como el bus de 4 entradas mostrado en la
Figura 5.17(e), que corresponde a la tabla de verdad de la Figura 5.17(f). Como
puede verse, este bus incorpora un decodificador de 2 a 4, que convertirá las dos
líneas de dirección SI y So en las cuatro líneas de habilitación necesarias para que
los cuatro adaptadores triestado se conecten al bus Y.
En general, los buses son muy fáciles de fabricar y muy sencillos de modifi-
car si se necesita añadir nuevas fuentes o eliminar antiguas. Por este motivo, los
buses son usuales en redes locales donde hay muchas fuentes de información que
han de conectarse en la misma sala o en el mismo edificio.

5.9. CODIFICADORES DE PRIORIDAD


Un codificador de prioridad es casi el complemento de un decodificador, en el
sentido de que un codificador de prioridad conectado a las salidas de un decodi-
ficador produce una función identidad, es decir, la salida del codificador de prio-
ridad es igual a la entrada al decodificador. Por otra parte, un decodificador conec-
tado a las salidas de un codificador no produce una función identidad porque un
codificador de prioridad se diseña para codificar la posición de la entrada con
valor uno más significativa, prescindiendo de los valores del resto de entradas en
posiciones menos significativas. Por este motivo, los valores de entrada del codi-
ficador no pueden reproducirse a las salidas del decodificador conectado a él.
En ténninos generales, un codificador de prioridad tiene 11 entradas,
D,,_I, ... ,Do, siendo n = 2m para algún m. También tiene 10gz/1 = m salidas,
A",_ I , ... ,Ao, así como una salida adicional llamada Cualquiera, que será I siempre
que alguna de las entradas tenga algún valor distinto de O. Las salidas Am-l>"',Ao
representan el índice del bit de entrada D; más significativo que sea l.
El más sencillo de todos los posibles codificadores es el codificador de prio-
ridad de 2 a I mostrado en la Figura 5.18. Su símbolo gráfico se muestra en la
Componentes combinacionales 201

Figura 5.18(a) y su tabla de verdad en la Figura 5.18(b) . Como puede verse, el


codificador de prioridad de 2 a I tiene dos entradas, D I y Do. Y una salida, Ao, ade-
más de la salida Cllalquiera descrita anteriormente. En este codificador, siempre
que DI = O y D o= I entonces Ao = O e, inversamente, siempre que D I = I Y Do sea
indiferente entonces Ao = l . Las expresions booleanas de la salida pueden obte-
nerse fácilmente a partir de la tabla de verdad, y se muestran en la Figura 5. 18(c).
Finalmente, en la Figura 5.18(d) se muestra el circuito lógico de este codificador
de prioridad de 2 a 1.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
D, Do Aa CUALQUIERA

O O O O
O l O l
IXI l

e Ua/I/II;a An
(b) Tabl:t de verdad
(a) Símbolo gráfico

Clla/qllie,. A I¡

(e) Expresión booleana (d) Diagrama lógico

FIGURA 5.18 Codificador de prioridad de 2 a 1.

Sin embargo, un codificador de prioridad más utilizado que el de 2 a l es el


de 4 a 2 que se muestra en la Figura 5. 19, que consta de cuatro entradas, D3 , Dz,
DI Y Do, Y dos salidas de dirección, A I Y Ao, además de la salida Cualquier. Su
símbolo gráfico se muestra en la Figura 5.19(a) y su tabla de verdad en la Figura
5.19(b). Como antes, puede usarse ahora el método del mapa para obtener las
expresiones booleanas de salida, mostradas en la Figura 5.19(c), dando éstas lugar
al circuito lógi co presentado en la Figura 5.19(d).
La impOltancia de los codificadores de 2 a I y de 4 a I reside en que combi-
nándolos con selectores se pueden construir codificadores de prioridad con mayor
número de entradas. Cuando se util.izan codificadores de 2 a I para diseñar e·stos
componentes mayores, se agrupan las entradas por parejas, de manera que cada
grupo de dos se codifica por uno de los codificadores de prioridad de 2 a 1.
Procediendo de esta forma. en el primer nivel se utilizan un total de /1/2 codifica-
202 Principios de diseño digital

dores de 2 al, que generarán n/2 candidatos para la dirección de bit menos sig-
nificativa, Aa. Uno de estos candidatos será seleccionado por un selector de (n/2)
a 1. Para producir la siguiente dirección más significativa, A 1> habrá que codificar
n/2 salidas Cualquiera de los n/2 codificadores de primer nivel, agrupándolos una
vez más por parejas. En este segundo nivel de codificación, se utilizan n/4 codi-
ficadores de prioridad y un selector de (n/4) a l que selecciona el bit A] . Además.
estos n/4 codificadores generan n/4 salidas Cualquiera, que pueden codificarse
para producir la dirección de bit más sign ifI cativa, A 2 . Este procedimiento se repi-
te hasta que sólo quede una salida Cualquiera.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
DJ D~ DI Do

J 2 ] a
Os o. D, Do A, Aa CUALQUIERA

O O O O O O O
Codificador
O O O 1 O O l
O O l X O l l
O 1 X X 1 O 1
Cualquier A, Ao 1 X X X 1 1 1

(a) Símbolo gráfico (a) Tabla de verdad

Aa= DID';! +D)


A I = D2+D )
Cualquier = 0 0+DI+D2+D.1

CUlIlquier Al Au

(CJ Expresión booleana (d) Diagrama lógico

FIGURA 5.19 Codificador de prioridad de 4 a 2.

En cada nivel del codificador se usan selectores de 2 a l para seleccionar el


bit de dirección adecuado . Cada selector de 2 a 1 selecciona una de las salidas de
un grupo de dos codificadores, utilizando la codificación de sus salidas
Cualquiera como líneas de control en esta selección. Como ejemplo, en la Figura
5.20(b) se muestra una implementación de un codificador de prioridad de 8 a 3
que utiliza codificadores de 2 a l y selectores de 2 a l . La tabla de verdad de este
codificador aparece en la Figura 5.20(a). De manera alternativa, el mismo codifi-
cador de 8 a 3 podría implementarse utilizando codificadores de 4 a 2, un codifi-
cador de 2 a 1 y dos selectores de 2 a 1, como se muestra en la Figura 5.20(c).
Componentes combinaci onales 203

o, De De D. Da Da o, Do A:. A, Aa ANl'I
O O O O O O O O O O O O
O O O O O O O 1 O O O 1
O O O O O O 1 X O O 1 1
O O O O O 1 X X O 1 O 1
O O O O 1 X X X O 1 1 1
O O O 1 X X X X 1 O O 1
O O 1 X X X X X 1 O 1 1
O 1 X X X X X X 1 1 O 1
1 X X X X X X X 1 1 1 1

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) Tabla de verdad

Cllu/quitra A:!

(b) Impleme ntación con codificadores y selectores de 2 a I (e) Implementación utilizando codificadores de 4 a 2

FIGURA 5.20 Codificador de prioridad de B a 3.

5.10. COMPARADORES DE MAGNITUD


Muchos lenguajes de programación incluyen operadores relacionales que permi -
ten evaluar ciertas condiciones y detenninar en qué momento tomar ciertas accio-
nes . En estos lenguajes, estas condiciones se expresan, generalmente, en términos
de relaciones entre dos entidades X e Y, que pueden representar constantes,. varia-
bles o expresiones aritméticas. Estas expresiones relacionales utilizan tres opera-
dores básicos, "mayor que" (X> Y), "igual que" (X = Y) y "menor que" eX < Y) .
Además, cada uno de estos operadores tiene su complemento: el operador "mayor
o igual que" (X 2: Y) es el complemento de "menor que", "menor o igual que"
eX $ Y) es el complemento de "mayor que", y "no igual que" (X Y) es, obvia- *
mente, el complemento de "igual que". El resu ltado de estas operaciones relacio-
nales es una variable binaria, que puede tomar valor O ó l.
Como regla, estas operaciones de relación son realizadas por unidades llama-
das comparadores. Es posible construir un comparador para cada operador rela-
204 Principios de diseño digital

cional, pero en esta sección se describirá cómo diseñar un comparador universal


que puede utilizarse para evaluar cualesquiera de los operadores relacionales. En
términos generales. un comparador universal compara dos enteros positivos
X = X,,_I"'XOe y = )'''- 1'' ')'0 Y genera dos resultados booleanos e y L como salidas,
de la forma siguiente: cuando la salida e = 1, entonces X > Y, Y cuando e = 0,
entonces X $ Y; al mismo tiempo, cuando L = 1, entonces X < Y, Y cuando L =0,
entonces X $ Y. Así pues, se sabe que X .. Y siempre que e = I o L = 1, e inver-
samente, que X = Y siempre que e = y L = O.°
Para determinar estos resultados para enteros X e Y de 11 bits, el comparador
inicia su comparación con los bits menos significativos xoe Yo, calcu lando ei y L i

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
para cada sufijo de X e Y, donde los sufijos i de X e Y se definen como los ente-
ros x¡Xi_I"'xOe YiYi-l"'YU tales que i $ 11 - l. Por tanto, para el sufijo i de X e Y. e
x,
es igual a I si es mayor que Yi o si xi = Yi Y si el sutijo (i- I ) de X es mayor que
el sufijo (i-I ) de Y. Igualmente, L es igual a I si Xi es menor que Yi o si xi = Yi Y si
el sufijo (i-I) de X es menor que el sufijo (i-I) de Y. Estos valores pueden resu-
mirse en las expresiones siguientes:
ei = (Xi> y¡) Ó «Xi = Y¡) y (e¡_1> L i_ l ))
Li = (Xi < Yi) ó «Xi =y¡) y (e i_1 < L ¡_I»)
Como puede verse, se ha reducido la comparación completa a una compara-
ción de números de 2 bits x¡Gi-l e y¡L¡_I' Ahora, pues, se puede diseñar un com-
parador básico de 2 bits que puede comparar los números de 2 bits {l1~ Y b1bo, Y
utili zarlo para constru ir comparadores de un número mayor n de bits.
En la Figura 5.2 1(a) se muestra una tabla de verdad para un comparador de 2
bits cuyas entradas son los dos enteros de 2 bits a l{lo Y blbo• y las salidas son e y
L. La representación con mapa de este comparador, con las expresiones boolea-
nas para e y L, se muestra en la Figura 5.21 (b), y su circuito lógico en la Figura
5.21 (e).
Como se ha mencionado, el comparador de 2 bits puede utilizarse en imple-
mentaciones serie y paralelo de comparadores de 11 bits que pueden comparar cua-
lesquiera enteros sin signo X e Y. Por ejemplo. en una implementación serie se uti-
liza un comparador de 2 bits para cada pareja de bits, representada por x¡ e Yi' Para
cada comparador de 2 bits, los valores de entrada Xi e Yi se conectan a sus entra-
das al Y b l , mientras que los valores eH y L¡_I obtenidos de la comparación del
sufijo (i- I) se conectan a las entradas (lo y bo.
De este modo. cada comparador de 2 bits produce las salidas e y L, que repre-
sentan las funciones e¡ y L¡. En la Figura 5.22(a) se muestra una implementación
de un comparador de magnitud de 8 bits. Como puede apreciarse, este compara-
dor de 8 bits necesita só lo siete comparadores de 2 bits, ya que se ha utilizado sólo
un comparador de 2 bits para comparar XIXO e YIYO'
Como regla general, la comparación de cualesq uiera dos enteros de Il bits
siempre requiere (11- 1) comparadores de 2 bits, independientemente de si se utili-
za una implementación en serie o en paralelo.
Sin embargo, la implementación serie descrita anterionnente presenta un gran
inconveniente, debido a que el retardo del comparador de 11 bits será igual ti (11- 1)
Componentes combinacionales 205

veces el retardo de un único comparador de 2 bits. Por el contrario, en una imple-


mentación en paralelo este retardo puede reducirse a r log2n1, porque la implemen-
tación en paralelo divide la comparación de n bits en comparaciones de dos bits en
el primer nivel. Así, el resultado de estas comparaciones de dos bits se comparan en
el siguiente nivel, obteniéndose comparaciones de 4 bits, que son comparadas en el
siguiente nivel, dando com¡>araciones de 8 bits, y así sucesivamente. Procediendo
de este modo, se necesitan IIog2nl niveles para obtener una comparación de 11 bits.
Como ejemplo de este tipo de comparación en paralelo, la Figura 5.22(b) muestra
una implementación para el comparador de magnitud de 8 bits. Observe que esta

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
implementación en paralelo aún requiere (11-1) comparadores de 2 bits, pero su
retardo es sólo rlog2n1veces el retardo de un único comparador de 2 bits.

a, b, Bo /lo G L
O O O O O O
O O O 1 O 1
O
O
O
O
I
I
O
1
1
O
O
O
G u.
O I O O O 1
O 1 O I O 1
O 1 I O O 1
O I I I O 1
I O O O I O
1 O O I 1 O
I O I O 1 O L
I O I I J O bu
J I O O O O
J I O I O 1
1 I 1 O 1 O
1 I I I O O
(a) Tabla de verdad (e) Esquema lógico

ah • 00
u "
a ,b, 00 01 11 10 ,b, 01 11 10

00 I 00 1

01 01 1 1 1 1

11 1 11 I

10 1 1 1 I 10

(b) Represenlación con mapa

FIGURA 5.21 Comparador de magnitud de 2 bits.


206 Principios de diseño digital

rI \'
- I

(/ , b l
G, Gs G, G, G, G,
G7 G G G G G G G IIO

L, LS L, LJ 1-, LI
L, L L L L L L L bO

(a) Im plementaci ón serie

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Xc, X5 X
-,-) x.., Y,:: .r 1 ,- .ru .1'11
-"7
"
-7 Y, Y, -"4
" J - I

G L

(b) Implemen taci ón paralelo

FIGURA 5.22 Comparador de magnitud de 8 bits.

5.11. DESPLAZADORES Y ROTADORES


En diseño digital se utili zan frecuentemente operaciones de desplazamiento y
rotación para empaquetar y desempaquetar dígitos y caracteres, para ex tracción e
inserción de campos y para operaciones aritméticas en coma tlotante. Por ejem-
plo, cada procesador tiene al menos varias instrucciones para despl azar a derecha
e izquierda, y rotar a izquierda y derecha, 1 bit. La operación de des plazamien to
puede realizarse en modo lógico o aritmético. Durante una operación de despla-
zamiento lógico, una palabra es desplazada m posiciones de bit a izquierda o dere-
cha. Como resultado de esta operación, se han desplazado fuera de la palabra III
bits, y ni nuevos bits se han desplazado al interior. Durante una operación de des-
plazamiento aritmético, la palabra que se va a desplazar ha de ser un número tal
que el desplazamiento de m bits a la derecha represente una di visión por 2'" y el
desplazami ento de m bits a la izquierda represente una multiplicación por 2'''. Si
el número desplazado es un número en complemento a 2, hay que desplazar 111
copias del signo durante el desplazamiento aritmético a la derecha. y m ceros
Componentes combinacionales 207

durante el desplazamiento aritmético a la izquierda. Además, el bit más significa-


tivo debe ser un duplicado del bit de signo después del desplazamiento aritméti-
co a la izquierda. Por otra parte, durante una operac ión de rotación no se pierden
bits. ya que los bits desplazados fuera en un lado son simultáneamente desplaza-
dos hacia el interior en el otro lado de la palabra.
Los desplazadores y rotadores que se usan para estas operaciones se imple-
mentan con selectores. Por ejemplo, el desplazador/rotador universal mostrado en
la Figura 5.23. que puede realizar desplazamiento lógico o rotar una posición de
bit a la izquierda o a la derecha, tiene una entrada de datos. D = d". .. do, una sali-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
da. Y = Y". ..v(), y tres líneas de se lección , 52' S, Y So' que determinan la operación
a realizar. De acuerdo con la tabla funcional de la Figura 5.23(a), cuando 52 = O
los datos de entrada pasarán sin modificarse a la salida, mientras que cuando 52 = I
se realizará una operación de desplazamiento o rotación. El hecho de que estas
operaciones muevan a la izquierda o a la derecha depende del valor de S,: esto es,
S, = O indica que el movimiento de datos será a la izquierda, mientras que S, = I
indica que el movimiento será a la derecha. Finalmente, So se utiliza para distin-
guir entre operaciones de desplazamiento y de rotación, tal que si So = O el des-
plazador/rotador desplazará, y si So = 1 rotará.

S. $, So y COMENTARIO

O O X D No desplaza
O I X No usado
l () O shl(D) Desplaza izquierda
I O I rtl(D) Rota izquierda
1 1 O shr(D) Desplaza derecha
1 1 1 rtr(D) Rota derecha
(a) Tabla funcional

En lnld:l
11 ,krccha

Enlnlu..
:1i'l.'IU!i:rd;¡

s"

s,
\1'~S'kJ~trutJrrillkl~;]rri1k,,~Jrri1I"'O~:'~'~~
32 10 3210
f----1
321 ()
f----1

i
32 10
----, ----,
32 1 0
f----1
321 0 32 10 32 1 0

l l I I I I I
s,
.
-,. 1-
',o ",
,- -
" "
(b) Desplazador implementado con selectores de 4 a J
'"

FIGURA 5.23 Desplazador de B bits,


208 Principios de diseño digital

En la Figura 5.23(b) se muestra una implementación de un desplazador/rota-


dor de 8 bits. Esta unidad puede desplazar o rotar un bit a la izquierda o a la dere-
cha, y puede dejar pasar los datos sin modificarlos. Como puede observarse, este
desplazador/rotador se ha implementado con un selector de 4 a l para cada bit.
dispuesto de manera que cada selector puede elegir entre el bit de entrada posi-
cionado a la izquierda, el bit posicionado a la derecha o el bit que está en su
misma posición. Además, este desplazador tiene dos selectores de 2 a 1 adiciona-
les, que pueden elegir entre el bit más a la izquierda o más a la derecha durante
una operación de desplazamiento o de rotación.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
oS.! S, ~ ~ Ya Ya Y. Y. Y2 y, Yo
O O O d, d6 ds d4 d, d2 dI do
O O I do d, d6 ds d4 d, d2 dI
O I O dI do d, d6 ds d. d, d2
O I I d, dI do d, d6 ds d4 d,
I O O d3 d2 dI do d, d6 ds d.
I O I d4 d, d, dI do d, d6 ds
I I O ds d4 d, d, dI do d, d6
I I I d6 ds d. d; d2 dI do d,
(a) Tabla de verdad

(b) Rolador implemenludo con se lectores de 2 a I

FIGURA 5.24 Rotador a la derecha de tambor de 8 bits.


Componentes combinacionales 209

Como se ha mencionado anteriormente, este desplazador es capaz de despla-


zar o rotar un bit a la izquierda o a la derecha lo que significa que, siempre que se
necesite un desplazamiento en más de una posición, habrá que pasar los datos a
través del desplazador varias veces. Es decir, este tipo de desplazador realiza la
tarea de desplazar o rotar datos un número arbitrario de posiciones muy lenta-
mente. Para evitar este retardo innecesario, los diseños de altas prestaciones utili-
zan un desplazador en bloques (barrel shifter), diseñado para desplazar cual-
quier número de posiciones en un tiempo dado. En este tipo de desplazador/rota-
dor de n bits, donde n. = 2m, se utilizan m = log2n. niveles de selectores de 2 a I

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
dispuestos de forma tal que el nivel i-ésimo de selectores (O ~ i ~ m- I) desplaza
2¡ posiciones cuando su línea de selección S¡ = 1, o pasa sin modificar los datos
cuando la línea Si = O. En otras palabras, si se quiere desplazar B posiciones los
datos, siendo B un número binario bm_I ... bo, se coloca el valor de la línea de selec-
ción Si del desplazador a b¡, para todo i tal que O ~ i ~ m-l.
En la Figura 5.24 se muestra un posible diseño para un desplazador en bloques
en el que, por simplificación, se ha limitado el desplazador a una función, la rota-
ción a la derecha. Como puede verse, este desplazador en bloques de 8 bits se ha
implementado con tres niveles de selectores de 2 al, controlados por las líneas de
selección So' SI Y S2 del siguiente modo: cuando So = 1, el primer nivel rota un
bit; cuando SI = 1, el segundo nivel rota dos bits, y cuando S2 = 1, el tercer nivel
rota cuatro bits.
En general, el coste de este rotador en bloques de 8 bits será de nlog2n veces
el coste de un único selector de 2 al, Y su retardo desde cualquier entrada a cual-
quier salida será aproximadamente log2n veces el retardo de un selector de 2 a 1.
Para construir un desplazador/rotador más complejo capaz de realizar un amplio
número de operaciones se utilizan, fundamentalmente, los mismos conceptos y un
número mayor de selectores de 2 a l.

5.12. MEMORIAS DE SÓLO LECTURA


Una memoria de sólo lectura (ROM) puede considerarse como un elemento
lógico universal que permite implementar concurrentemente varias funciones
booleanas diferentes definidas con las mismas variables. En términos generales,
cada ROM contiene n. palabras de m bits cada una y, usualmente, se referencia
como una ROM de n. x m. También incluye log2n líneas de dirección que se utili-
zan para direccionar cada una de sus n palabras. Así pues, cada ROM de 11 x 111
permite implementar m funciones booleanas cualesquiera de log2n variables.
Para explicar el circuito de esta ROM es necesario introducir dos nuevos sím-
bolos, que representan versiones programables de la noción de puertas AND y
ORo Como puede verse en la Tabla 5.3, se han reemplazado todas las entradas de
las puertas por una única línea de puerta interseccionada por varias líneas de
entrada. En cada intersección de una línea de entrada y una línea de puerta se usa
un cuadrado para indicar una conexión entre la entrada y la puerta. Estas cone-
xiones pueden realizarse de una de dos maneras durante la fabricación, conectan-
210 Principios de di seño digital

do físicamente dos líneas siempre que se desee una conexión o in Silu , fund iendo
el fusible entre una línea de entrada y una línea de puerta siempre que no se quie-
ra una conex ión. Tales memorias ROM con fusibles, llamadas también ROM
programables (PROM, Programlllab/e Read OI1 /y Memorv). son muy prácticas
ya que pueden fabricarse en grandes cantidades y personalizarse, posteriormente,
in silu. Además, a menudo son preferibles a las ROM porque son fáci les de mejo-
rar o de sustituir si el contenido de la PROM neces ita moditicarse. De hecho. las
PROM pueden considerarse como un caso particular de arrays lógicos programa-
bles in silu (FPGA , Fie/d Programll1able Gale Array) , descritas en la Sección

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3.10: dado su parecido funci ona l, estas memorias PROM pueden verse como pre-
de.cesoras de las FPGA, que requieren una organizac ión interna más comp leja.
Por ejemplo, en la Figura 3.23 se vió que cada PLB se implementaba con una
PROM de 16 x 2.

TABLA 5.3 Símbolos programables


de AND y DR

SíMBOLO SíMBOLO
COMPUTACIONAL

.AB..CD·D
PROGRAMABLE

--

Como se ha mencionado anteriormente, una ROM de Il X l1l típica, o PROM,


tiene k = log2/1 líneas de dirección Ak_1, ... ,Ao, así como m líneas de salida
F"'_I,... ,Fo' Contiene un decodificador de direcciones de k a 11 y un array OR pro-
gramable. Como ejemplo, la Figura 5.25 muestra una ROM de 16 x 4 en la que
se utili za un decodificador de 4 a 16 para se leccionar cua lesq uiera de las 16 pala-
bras de la ROM. En el array O R programable, el valor de cada bit en cada pala-
bra se determina por la presencia o ausencia de una conex ión entre las líneas hori -
zontales y verticales, ya que un cuadrado negro en una intersección indica una
conexión que, además, denota que se ha escri to un valor 1 en una posi ción de bit
determinada.
En la Figura 5.26(a) se utiliza esta ROM de 16 x 4 para la implementac ión del
sumador/restador modular presentado, anteriormente, en la Fig ura 5.4. Con10
puede observarse, este módulo tiene una línea de selección, S, que selecci ona la
realización de una suma o una resta sobre los dos bits C/; Y b;, con el acarreo c;
obtenido de la etapa anterior. Este módulo tiene dos salidas : Ji, que representan el
bit de suma o diferencia, y el acarreo de salida C;+ l' que se propaga a la siguiente
Componenles cOlllbinllCioll<l!c:S 211

etapa. La tabla de verdad para la función de este módulo se muestra en la Figura


5.26(h). y en la Figura 5.26(c) se muestra su illlplementaciún con ROM.
Obsérvese que. en esta imp lementación. cada 1 en la columna de salida de la tabla
de ve nJad se ha transformado en una conexión apropiada del array OR de la
ROM. En el caso de una implementación con ROM. pues . las líneas de entrada S.
(/ 1' h¡ Y ('1 se corresponden con las líneas de dirección A~. ;\ 2' A I Y Ao. mientras que

la s lín eas de salida <",., Y.!; se corresponden con F, y Fil'

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Arruy OR
11
1
2
.'
-

;
- [kClld¡¡ iL' ;ldllt ro
.1. -
lk -1 a Ih
,
7

')
.1 - 111
11

,.
12
1.1

15

) I

FIGURA 5.25 ROM de 16 · 4.

También C-~ importante observar. en esta implcmcntaci6n , quc las palahra:-. de


la ROM con direccione s () y 1() no son neccsarias. Desafortunadamentc. Ulla
imp le m c ntaL'j()!l ROM dcrrocharü palahras cOmo éstas sicmprc que los va lorc:-.
ele tod a." la ~ :-.a liJa~ de una palabra concreta sea n (J. A causa de estc dcsapro vc-
L'hamiento de palabras. las impl eme ntaciones con ROM de funcione s que só lo
tienell PO C()~ \"í.dorc~ I son mu y caras. Por otra parte. las RO!\.1 son excelcntc :-.
para a lmacc nar datos fijo s. porque ti enen una alta densidad de hit s en compara-
c ión con las memorias de escritura. Por c.1 mi s mo motivo. se utili zan mu y fre-
c uentelllente en la:-- unidade s de control de procesadorcs est<Índar y en coproce -
:-.ad()rc ~ de aplicación específica que gelleran valores de se ilales de co ntrol.
Además. las ROM so n no vo látil es . es decir. no pierden el contenido memoriza-
do dc s pLlé~ de que ~c de~ c() Jlcctc la alimentación. Por es ta razún se utilizan para
almacenar programas y datos con el fin de iniciali zar computadoras cuando SL'
co necta la alimentación.
212 Principios de diseño digital

Aa Ao A, Ao F3 F2 F, Fo
(S) (a~ (b,) (cJ (c~,) (I¡)
a, b,
O O O O X X O O
s O O O I X X O I

~ O O I O X X O I
O O I I X X I O
O 1 O O X X O I

D O
O
I
I
O
1
I
O
X
X
X
X
I
I
O
O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
O I I I X X I I
eH 1 e, I O O O X X O I
FA
I O O I X X I O
-r- I O 1 O X X O O
J I
I
O
I O
I I
O
X
X
X
X
O
I
I
O
I I O I X X I I
I I 1 O X X O I
I I I I X X I O
(a) Módulo sumador/ reslador (b) Tabla de verdad

1IIny0lt
o
1
2
3
Ao - 4
5
A, - Decodificador 6
de 4 a 16 7
A, - 8
9
A, - 10
11
12
13
14
15

IC] (J CJIJ.
I I I I
FJ F~ FI Fo

(e) Programa en ROM

FIGURA 5.26 ROM de 16 x 4 programada como un módulo sumador/restador.

5.13. ARRAYS LÓGICOS PROGRAMABLES


En la Sección 5.12 se indicó que las memorias ROM no son muy eficientes cuan-
do se usan para implementar pocas funciones con, únicamente, un pequeño núme-
Componentes combinacionales 213

ro de unos ya que, en estos casos, muchas palabras de la ROM tendrán valor 0, lo


que significa desperdicio de área de silicio. Los arrays lógicos programables
(pLA, Programmable Logie Array) se desarrollaron para minimizar este desapro-
vechamiento. Básicamente, la PLA difiere de la ROM en su implementación del
decodificador de direcciones: en vez de utilizar un decodificador completo, como
la ROM. una PLA utiliza un decodificador programable, llamado an'ay AND, que
puede programarse para decodificar sólo aquellas palabras que tienen contenido
distinto de cero. Más aún, además de este decodificador programable, una PLA
puede tener una array de salida programable para utilizarse siempre que se nece-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
site complementar los valores de salida. Esta array de salida puede mejorar la efi-
ciencia de la PLA permitiendo un mayor grado de flexibilidad al implementar
cada función. Por ejemplo, si una función dada tiene sólo unos cuantos ceros. los
arrays ANO y OR pueden programarse para implementar el complemento de esa
función . lo que requerirá menos palabras y. así, complementar este complemento
de la función otra vez en el array de salida.
Como regla, cada PLA se caracteriza por su número de palabras, designado
por /l , y por su número de salidas, definido como m. Por otra parte, como el núme-
ro de líneas de dirección no será igual a log2/l, se necesita especificar el número
de entradas o líneas de dirección de la PLA, lo que se designa como k. Así, se sabe
que una PLA de k x /l X In tendrá A k_, , ... ,Ao líneas de dirección además de las /l
palabras. donde cada palabra representa un minterm de las direcciones de las
entradas. y m salidas, denominadas F m_ , , .... F u. También se sabe que la PLA puede
implementar m funciones booleanas cualesquiera de k variables cada una, siem-
pre que el número total de términos diferentes en las In funciones no sobrepase el
valor de 11.
En la Figura 5.27 se muestra la estructura de una PLA de 4 x 8 x 4. Como
puede apreciarse, tiene las cuatro entradas AJ , A 2, A, Y Ao, las cuatro salidas F ),
F2, F, Y Fo Y 8 términos ANO de palabras. A partir de esta definición se sabe que
cada término ANO puede contener más de cuatro literales, que cada función de
salida tiene más de ocho términos ANO y que cada salida puede obtenerse con o
si n complementar.
En la Figura 5.28 se utiliza esta PLA de 4 x 8 x 4 para implementar las fun-
ciones ei+' YSi del sumador completo, que se definió en la Figura 5.1. Téngase en
cuenta que no se podría utilizar esta PLA para implementar el sumador/restador
modular que se presentó en la Figura 5.26 porque tal módulo necesita ocho tér-
minos para las funciones Ji y cinco términos más para la función el+ " es decir, un
total de 13 términos diferentes que sobrepasaría el límite de ocho términos dispo-
nibles en la PLA.
Para implementar este sumador completo. se asignan XI' YI Y cI a las líneas de
dirección A,. A, YAa. y las salidas CI+' YSI a las salidas F, y Fo de la PLA. La tabla
de verdad y las representaciones con mapa para esta implementación se han mos-
trado en la Figura 5.28(a) y (b). y el circuito lógico de la PLA. indicando todas
sus conexiones. se ha presentado en la Figura 5.28(c).
Las PLA tienden a ser no menos flexibles que las ROM y tienen la ventaja
adicional de ser más eficientes en la implementación de lógica aleatoria.
214 Principi os de diseño di gital

Consecuentemente, se utili zan más a menudo para la implementación de lógicas


de control , mientras que las ROM se utilizan más frecuentemente para tablas de
coefi cientes, programas de arranque. vectores de test y otros datos di versos.

ArrayOR

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ArrayAND

ot
Am)'de
salida

FIGURA 5.27 Estructura de PLA.

5.14. RESUMEN DEL CAPíTULO


En este capítulo se han enumerado y di señado los componentes combinac ional es
básicos que se utili zan para implementar transformaciones entre datos en proce-
sadores y en otros microchips a medida. Estos componentes. generalmente deno-
minados componentes a ni vel de registro, se diseñan para tratamiento de números
binarios completos, no sólo a nivel de bit. Para empezar. se han di señado unida-
des funcionales que reali zan operaciones aritméticas y lóg icas, tales como suma-
dores, unidades lógicas de suma/resta y ALU. En la di sc usión de este tipo de uni -
dad . se ha mostrado có mo incrementar la velocidad de la cadena de acarreo por
Componentes combinacionales 215

. .-
, 00 01 11 10

As A2 A, F2 o I I
Aa F, F, Fo
x, y, e, s, Ci+l
I I I
X O O O X X O O
X O O I X X O I
X O I O X X O I
X O I I X X I O .\".-
\'

X I O O X X O I , DO 01 11 111

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
X I O I X X I O
X I I O X X I O O I
X I I 1 X X 1 1

(a) Tabla de verdad I I I I

(b) Representación con mapa

(.\',) (Y, ) (e,)


11 ) A~ Al A (I

~7 ;, r; ~7 1 ro- Array OR

'(j"" r;Y' Pi
~ x'¡yf',
--G
r,. .l ll¡
~
L....
¡=:.,
X~fi

c.....
¡=:.,
XiY¡

¿.. 'P,
;::;;; Y,e¡
r,;
L...:.J

AITayAND
~
UULl
QDOQF , f·- ,
OI
Array de
salida

(No usado) ( s, ) (e,.I)

(c) Imp lementación de la PLA

FIGURA 5.28 Implementación con PLA del sumador comp leto.


216 Principios de diseño digital

medio de técnicas de acalTeo anticipado. A continuación, se han introducido com-


ponentes que pueden decodificar direcciones binarias, utilizadas frecuentemente
en el diseño de memorias, y componentes que pueden codificar líneas de priori-
dad, que se utilizan a menudo para arbitrar el acceso a buses. Después, se han
introducido los selectores y los buses, utilizados para conectar componentes en un
microchip o PCB. Además, se han diseñado componentes combinacionales que se
usan para calcular operadores relacionales tales como comparadores, y compo-
nentes que se utilizan para tratamiento de bits, tales como desplazadores y rota-
dores. Finalmente, se han descrito componentes programables, tales como memo-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
rias ROM y PLA, frecuentemente empleados en la implementación de tablas,
lógica de control y otras funciones lógicas diversas. En muchos casos se han di se-
ñado estos componentes a partir de sus tablas funcionales, convirtiéndolas en
tablas de verdad e implementándolas con puertas un.iversales, mientras se recurría
a técnicas de síntesis lógica estudiadas en capítulos anteriores.

5.15. LECTURAS ADICIONALES


Ercegnovac, M. Y T. Lang. Digital Systems and Hardware/Firmware Algorithms. New
York: Wiley, 1985.
Una introducción excelente y precisa a la construcción de componentes com binaci ona-
les y arrays iterativos.
Hayes, J.P. Compute/' Architecture and Organizatiol1. New York: McGraw-Hill, 1988.
Un libro de introducción a la arquitectura que describe muchos componentes combina-
cionales a nivel de registro y su utilización en el diseño del procesador.
Nei!. H. y K. Eshraghiam. Principies of CMOS VLSI Desigl1. Reading, MA: Addison-
Wesley, 1993.
Explica a los lectores que poseen conocimientos de di seño de circuitos y técnjcas de
trazado, el diseño de componentes combinacionales a ni vel de circuito e ilu stra cómo
realizar el trazado de transistores para muchos de los componentes.

5.16. PF:¡OBLEMAS
5.1. (Sumadores) Di señe un sumador 5.3. (Restadores) Defina y diseñe una fun-
modular de 2 bits que combine las ción de adeudo anticipado (bo rro\\'-
funciones de dos FA. Utilizando la !ook-a!Jead) y muestre cómo podría
biblioteca presentada en la Tabla utilizarse en un restador de magnitud.
3.14, compare el retardo de su diseño
5.4. (Generadores de acarreo anticipado)
con el del diseño mostrado en la
Utilizando las bibliotecas dadas en las
Figura 5.1.
tablas que se indican a continuación,
5.2. (Restadores) Defina y diseñe un res- rediseñe el generador CLA mostrado
tador completo, que podría ser equi- en la Figura 5.2(c).
valente a un sumador completo. y uti- (a) Tabla 3.14
lícelo para diseñar un restador de (b) Tablas 3.14 y 3.15
adeudo propagado (ripple-borrow ). (e) Tablas 3.14,3.15 Y 3.16
Componentes combinacionales 217

En cada diseño, compare los retardos pueda comparar los siguientes tipos
al generar los siguientes acarreos: C4. de representación numérica:
Cs _ C)2 y C 16' (a) Signo y magnitud
(b) Complemento a dos
S.S. (Generadores de acarreo anticipado)
(e) Punto flotante
Diseñe un sumador CLA de 64 bits
utilizando: 5.14. (Comparadores) Diseñe comparado-
(a) Un nivel de CLA res que puedan evaluar las siguientes
(b) Dos niveles de CLA relaciones:
(e) Tres niveles de CLA (a) X> Y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(b) X = Y
5.6. (Generadores de acarreo anticipado)
(e) X < Y
Diseñe el sumador CLA más rápido
(d) X :2! Y
posible de:
(e) X 5, Y
(a) 16 bits
(b) 32 bits 5.15. (Comparadores) Rediseñe el compa-
(e) 64 bits rador de 2 bits que compara X = x,xo
5.7. (Unidades lógicas) Diseñe una unidad con y = Y,YO, con la condición de que
Xo e Yo no pueden ser 1 al mismo tiem-
lógica que mejore las siguientes com-
po. ¿Cúantos transistores ahorrará si
binaciones de operaciones:
utiliza este comparador de 2 bits en la
(a) NAND, NOR, transferencia y
implementación serie del comparador
complemento
de 8 bits de la Figura 5.22(a)?
(b) XOR y XNOR
(e) AND, OR Y NOT 5.16. (Comparadores) Rediseñe el compa-
rador de 2 bits que compara X = x IXO
5.8. (ALU) Diseñe una ALU que pueda
con y = Y,YO, con la condición de que
realizar las operaciones de suma!
resta, NAND y NOR. x, e Y, o Xo e Yo o ambos no pueden ser
1 al mismo tiempo. ¿ Cúantos transis-
5.9. (ALU) Diseñe un ampliador lógico tores ahorrará si utiliza este compara-
que realice las operaciones AND, dor de 2 bits en la implementación
NAND, OR , NOR, XOR. XNOR, paralelo del comparador de 8 bits de
identidad y complemento. la Figura 5.22(b)?
5.10. (Decodificadores) Di señe un decodi- 5.17. (Desplazadores) Diseñe un registro
ficador de 4 a 16 utilizando: de 8 bits que:
(a) decodificadores de 1 a 2 (a) rote a la izquierda
(b) decodificadores de 2 a 4 (b) desplace a la izquierda
(e) puertas lógicas AND, OR Y NOT (e) desplace a la izquierda y a la
derecha
5.11. (Codificadores) Diseñe un codifica-
(d) desplace y rote a la izquierda y
dor de (a) 2 al, (b) 4 a 2, (e) 8 a 3 y
a la derecha
(d) 16 a 4. que sea un verdadero com-
plemento de un decodificador. 5.18. (Desplazadores) Defina las operacio-
nes de un desplazamiento aritmético a
5.12. (Selectores) Obtenga un algoritmo
la izquierda (multiplicación por 2) y
para la construcción de selectores de
uno a la derecha (división por 2) para
11 a 1 a partir de selectores de 2 a 1
los números en signo y magnitud y
para cualquier entero dado 11.
complemento a 2. Diseñe un despla-
5.13. (Comparadores) Diseñe las versiones zador aritmético de 1 bit para:
serie y paralelo de un comparador que (a) Números en signo y magnitud
218 Principios de diseño di gital

(b) Números en complemento a 2 2 bits que genere las fun cio nes
(e) Ambos tipos de números "mayor que", "menor que" (' "igua l
que".
5.19. (Des plazadores) Di señe de nuevo el
desplazador uni versal presentado en 5.22. (PLA) Uti lizando el tipo de PLA indi-
la Figura 5.23 añad iendo la capacidad cado entre paréntesis. implemente las
de dos desplazadores aritméticos en siguientes funciones:
complemento a :! a Su conjunto de (a) Un módulo sumador/restador
operaciones. (conPLAde4x 16 x 4)
(b) Un comparador de magnitud

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
5.20. (ROM ) Compare el coste y el retardo (con PLA de 4 x 8 x 4)
de las siguientes imple mentaciones (e) Un generador de CLA (co n PLA
de funciones booleanas cualesquiera: de 9 x 8 x 6)
(a) A PROM
(b ) A PLA 5.23. (PLA) Utilizando una PLA de 4 x 8 x 4.
(e) A FPGA añada e l modo de bit M al slImador
(d) Lógica diversa presentado en la Figura 5.28(a) tal que.
si M = O la salida.l"; =x;, y si M = 1, la
5.21. (ROM ) Utilizando una PROM de PLA realice la función del sumador
16 x 4, implemente un comparador de completo.
Lógica
secuencial

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
Álgebra booleana Puertas lógicas
y biestable.:.-

6
J
Máquina de
estados finitos l! 4
Técnicas de
6
Técnicas de
I dise ño lógico di seño digital

Sislcma bi nario 2
y representación
de datos
f +
5 7
Compone,ntes Componentes de
combinacionales almacenamiento
I I
Máquinas de 8 Diseño de 8
estados finitos transferencia entre
generaHzadas registros

1
9
Componentes
del procesador

Hasla aqu( se ha esnuJiada cómo definir y disellar componenles combina-


cionales para codificación. selección. lraIamienlo y lranS/omlllCión de
da/os. En esle cap(tulo se ensellard a detenninar y disellar circuilos
secuenciales que cOI/tienen memoria, y que pueden recordar /os cambios
de /os sellales de entrada que ocurrieron en el pasada. Se esnuJia cómo
modelar /os camponenles secuencia/es ulili:umdo el modelo de máquina de
esladas finilos y a utili1.llrlo en el análisis y s(nlesis de lógica secuencia/o
222 Principios de diseño digital

En los cinco capítulos anteriores se ha descrito el procedimiento de diseño de


componentes combinacionales. La característica principal de todos los compo-
nentes combinacionales es el hecho de que sus valores de salida se calculan exclu-
sivamente a partir de sus valores actuales en las entradas. Para cualquier cambio
en los valores de entrada, los valores de salida aparecen en los terminales de sali-
da con el retardo /; necesario para calcular los valores de salida. Los componen-
tes secuenciales difieren debido a que contienen elementos de memoria, mientras
que los combinacionales no. Como resultado. los valores de salida de los compo-
nentes secuenciales se calculan utilizando tanto los valores de entrada actuales

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
como los anteriores.
Esta dependencia, en los circuitos sec uenciales, de los valores de entrada ante-
riores hace necesaria la presencia de elementos de memoria. Los valores almace-
nados en elementos de memoria definen el estado de un componente secuencial.
Así pues, cualquier cambio en los valores de entrada en el instante t i modificará
el estado del componente secuencial en el instante ti + /; 1 Y los valores de salida
en el instante t i + /;2·
Como ejemplo de circuito secuencial, considércse el contador de tonos en un
contestador automático, que cuenta el número de tonos y conecta el grabador de
mensajes después de cuatro tonos. Como el contador de tonos cuentra hasta cua-
tro, la memoria del contador debe pennitir el almacenamiento de cuatro dígitos:
O, 1,2 Y 3. Cuando el número O está almacenado en memoria, se dice que el con-
testador está en el estado O, esperando el primer tono. En los estados l. 2 Y 3 el
contestador habrá recibido uno, dos o tres tonos, respectivamente. Cuando el con-
tador esté en el estado 3 y Uegue el cuarto tono, el grabador se activará. En este
momento, los tonos posteriores serán ignorados y el contador volverá al estado O.
En este ejemplo puede verse que la salida del contador de tonos depende no sólo
de un tono, sino de una secuencia de tonos que se suceden antes de que llegue el
cuarto tono.
Generalmente, esto es verdad en todos los circuitos secuenciales. Sus sa lidas
dependen de la secuencia de valores de entrada presentados durante un período de
tiempo. De hecho, el témúno secuencial se debe a esta dependencia con la secuen-
cia de valores de entrada en lugar de depender sólo del valor de entrada actual.
Como se ha visto, la secuencia de valores de entrada, o algo relacionado con ella,
se almacena en la memoria. Debido a que esta memoria siempre es finita , el tama-
ño de la secuencia debe ser finito, lo que significa que la lógica secuencial conten-
drá sólo un número finito de estados, aunque éste sea bastante elevado.
En general, los circuitos secuenciales pueden ser asíncronos o síncronos. Los
circuitos secuenciales asíncronos cambian su estado y los valores de sa lida siem-
pre que hay un cambio en los valores de entrada, mientras que los circuitos
secuenciales síncronos cambian sus estados y los valores de salida en instantes
fijos de tiempo, determinados por el flanco de subida o bajada de una señal exter-
na de reloj (clk, de c/ock). En la Figura 6.1 se muestra el diagrama de tiempos y
la nomenclatura de una señal típica de reloj . En este diagrama puede verse que el
período de reloj es el tiempo entre transiciones sucesivas en la mi sma dirección.
es decir. entre dos flancos de subida o dos flancos de bajada. El invcrso del perí-
Lógica secuencial 223

odo de reloj se denomina frecuencia de reloj . Normalmente, el período de reloj


se mide en nanosegundos (ns) y la frec uencia se mide en megahertzios (MHz) . El
ancho del pulso de reloj es el tiempo d urante el c ual el valor de la señal de reloj
es igual a l . El cociente e ntre el ancho del pulso de reloj y el período de reloj sc
denomina rendimiento de ciclo (du/y cye/e) . Se di ce que una señal de reloj está
activa en alta si el cambio de estado se produce e n el fla nco de sub ida de reloj o
durante el ancho de l pul so de reloj. En caso contrario, se dice que la señal de reloj
está activa en baja.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
~ .
P('riodo del reloj
.;

J.) ·1 (I¡-----'l;
Ancho del pulso Flanco de subi'd a Flanco de bajada
de reloj

F/GURA 6.1 Señal de reloj.

En este capínl lo se utili za esta nomenclatura para el est udio de la lógica


secuencial síncrona. Primero, se introducen los elementos básicos de almacena-
miento que memori zan un bit de información , que son los la/ches y los biestab les
(jlip~f7ops). Después, se da el procedi mie nto de análi sis para la lógica sec uencia l
y se establece el modelo de máquina de estados fini tos que se utili za para el mode-
lado de la lógica secuencial. También se trata el procedimiento de síntesis para
convertir descripciones de máquinas de estados finitos en circuito lóg icos
secuenciales. A lo largo de esta presentación, los procedimientos de análi sis y sín-
tesis se describirán con varios ejemplos prácticos.

6.1. LATCH SR
El elemento de memoria más simple en un diseño digital es e ll atch SR, que cons-
ta de dos pueltas NOR conectadas de forma cruzada. Como puede verse en la
Figura 6.2(a) , el latch SR tiene dos señales de entrada: la señal de puesta a l , S
(Set). y la señal de puesta a O. R (Rese/); también tiene dos señales de salida. Q y
Q': finalmente, tiene dos estados: un estado de puesta a uno (o set) cuando
Q = I (Q' = O) Y un estado de puesta a cero (o reset) cua ndo Q = O (Q' = 1).
Mi entras las señales S y R sean igua les a O, el late h SR permanece en el mi smo
estado. Por ejemplo. si Q = I la salida de la puelta NOR superior será ig ual a 0,
lo que hará que la salida de la puelta NOR inferior sea igual a O. Igualmente, si
Q = O. la salida de la puerta NOR superior será igual a l . lo que hará que la sali-
da de la puerta NOR inferior sea igual a O.
224 Principios de diseño digital

s Q' S R Q Q (sigufenlB) Q' (sigu/enIB)

O O O O l
O O I 1 O
O I X O I
R Q I O X 1 O
1 I X O O
(al Circuito lógico (e) Tabla de verdad

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
S

Q -+ 2.8r- - - ' L.+-_--'-_ __--=',2~::J


I 'A , ~~
:: 8 ~"___----;-_ _ _ _ _-;-:--'
nbIdofiJLldo)
i----.

.!4.
Q'
- t= tm
'" " "
(b) Diagr3 m¡} de tiempos

FIGURA 6.2 Latch SR (implementación NOR).

Sin embargo, si la entrada S (entrada R) se hace 1, ellatch SR irá al estado de


puesta a uno (puesta a cero), Esto se describe en el diagrama de tiempos de la
Figura 6.2(c), Por ejemplo, cuando S vale 1 en lo' la salida Q' vale Oen lO + 1,4
ns, lo que fuerza a Q a valer I en lO + 2.8 ns. Téngase en cuenta que. cuando S
baj a a Oen /" el latch SR permanece en el estado de puesta a uno. De igual forma ,
el latch SR puede ponerse a O manteniendo la señal de reset R mientras se pone S
a valor O. Por ejemplo. cuando R vale I en 12, la salida Q vale Oen 12 + 1.4 ns, for-
zando a Q' a valer l en 1, + 2.8 ns. Obsérvese también que después de que R vuel-
va a valor Oen I}, el lateh permanecerá en el estado de puesta a cero.
Si las señales de entrada S y R valen ambas 1, las salidas Q y Q' deben ser igua-
les a O. Si una de las señales de entrada cambi a antes que la otra, el latch puede
finalizar en un estado forzado por la señal que cambie después. Esta situación se
describe en la Figura 6.2(b) en el momento, 14' en que S vale l. Como puede verse.
ellatch funcionará normalmente y entrará en el estado de puesta a uno en 14 + 2,8
ns. Además, cuando R cambie en /s. la salida Q valdrá Oen Is + 1,4 ns. Téngase en
cuenta que. mientras que S y R valgan 1, ambas salidas Q y Q' estarán a O. Sin
embargo. cuando S cambie en 16, el latch entrará en el e tado de puesta a cero en
16 + 1,4 ns y permanecerá en este estado hasta que S o R cambien otra vez.
Un problema inherente al latch SR es el hecho de que si S y R cambian al
mi smo tiempo. no se puede predecir la salida. En el caso de que las puertas ten-
Lógica secuencial 225

gan el mismo retardo, ambas valdrán l al mi smo tiempo y, después , valdrán O al


mismo tiempo y así sucesivamente, oscilando siempre como se indica en la Figura
6.2(b). Por ejemplo, cuando las dos señales de entrada se ponen a cero en 11 0'
ambas puertas NOR toman valor l en IJO + 1.4 ns. Como una de las entradas a
cada puerta NOR vale ahora 1, ambas puertas se pondrán a O en IJO + 2,8 ns. Esta
oscilación, llamada usualmente carrera crítica (crilical race), continuará con las
salidas de ambas puertas a I en 110 + 1,4 x (2n + 1) Y a O en 110 + 1,4 X (211), para
cualquier entero no negativo 11 . Cuando las puertas NOR no tienen exactamente
el mismo retardo, una de ellas puede ser ligeramente más rápida que la otra. En

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
tal caso. la puerta NOR más rápida prevalecerá y establecerá su salida al, for-
zando la salida del otro latch a O en I JO + 2,8 ns. Así pues, cuando las señales de
entrada se restablecen al mismo tiempo, el estado siguiente del latch es indefini-
do, ya que no se sabe que condición ocurrirá.
Para eliminar este funcionamiento indeterminista, se debe asegurar que las
señales S y R no se restablezcan al mismo tiempo.
Desafortunadamente, esta regla es difícil de imponer al no conocer los retar-
dos de los circuitos lógicos que generan los valores de S y R. Como consecuen-
cia, cuando se diseña con latches SR debe seguirse una regla más estricta; hay que
asegurarse de que las señales S y R nunca cambien al mismo tiempo.

S R O O (siguiente) O' (siguiente)


S --;:::=G~I- Q
O O X 1 I
O I X I ()
I O X O I
R -==G~-L- Q' I
1
I
I
O
1
O
1
I
O
(a) Circuito lógico (e) Tabla de verdad

R
'-----11
Q -+\ 1~4 -+ 2.81..-
Q' -+1 2,8 1~ -+, I~ I.4 -+ 1'l:l f l.4
1.4
-+,
~::::JI
. -- I

1"
" " '.>
(h) Diagrama de tiempos

FIGURA 6.3 Latch SR (implementación NAND) ,


226 Principios de diseño digital

A partir de l aná lisi s de l modo de operación de l lateh SR. se puede construir la


tabl a de verdad de l fun cionamiento dell ateh. que se muestra en la Fig ura 6.2(e).
Como indica esta tabl a, para cada instante l i' Q(s iguieme) y Q'(sigui entc) indican
el valor de la salida Q e n e l instante l i + f!,. . donde f!,. es igual o mayor que 2.8 ns.
La tabla proporc iona los valores de salida para cada combinaci ón de los valores
de entrada y de l estado de l latch SR.
El latch SR puede imple me ntarse tambi én con puertas NA ND. S in embargo.
en este caso las entradas S y R están normalmente a l . Acti vando S o R a Ose esta-
blecerá o pondrá a O e l lateh, respecti vame nte. que es justame nte lo o puesto a la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
imple me ntació n NOR e n la que acti vando S o R a I se causaba la puesta a uno o
a cero de ll atch, respecti vamente. Finalmente, la implementación NAN D se mues-
tra en las Figuras 6. 3(a). (b) y (e).

6.2. LATCH SR SINCRONIZADO


Ellatch SR sincronizado (galed SR laleh) es simil ar al latc h SR , con una excep-
c ión. Como se muestra en la Figura 6.4. este latc h tiene una tercera entrada de
control. C. que habilita o deshabilita la operación de llatch SR. En la prácti ca, esto
s ignifica que cuando e
es igual a l. e l latch SR s inc ro nizado fun ciona como un
e
latch SR. Sin embargo. cuando = O se deshabilitan la puesta a uno y la puesta a
cero, y e l c ircuito pe rs iste en el estado anterior. Cons idérese, por ej emplo. e l dia-
grama de ti empos de la Fi gura 6.4(d). que describe este fun cionami ento y mues-
tra que, aunque e llatch esté e n e l estado de puesta a Oe n lO' no se pone a uno cuan-
do S vale l . Sin embargo, obsérvese que la puesta a uno de l latch se permite en 1 1,
una vez que e ha cambiado: la sa lida Q' vale O en 1I + 2,0 ns y Q vale I en 1I +
e
4,0 ns. Una vez que se desactiva de nue vo en 1" los cambios en los val ores de
las señales de entrada S y R, en 13 y 14' no puedeñ afectar al estado del latch. Sin
e
embargo. cuando cambi a de nuevo a l . e n l S' e l val or de las señales de entrada
se propaga a través del latch. Por lo tanto, e llatch se pone a cero en 1; + 2.0 ns.
En gene ra l. puede decirse que e l latc h s igue los cambios de las señales de
e e
entrada mi entras que vale l. Por ej e mplo, cuando vale I en Iy. S es igual a l .
y el latch pasa al estado de puesta a uno (Q = 1) e n 19 + 4 .0 ns. C uando S se pone
a cero e n 110 y R se pone a I e n 111 , e l latch pasa al estado de puesta a cero
(Q = O) en 1II + 2.0 ns.
Es fundamenta l tomar precauc iones cuando se trabaj a con e l latch S R sincro-
nizado: e l di señador de be estar seguro de que las señales de entrada no cambian
durante e l intervalo de ti e mpo de l fl anco de bajada de la entrada de control C. Este
interval o e mpi eza en e l ti e mpo de establ ec imiento (selllp). 1" ", ' ante ri o r al flan -
e
co de bajada de y te rmina en el tie mpo de mantenimi ento (deting lés holcl) . I hold '
poste rior al n aneo de baj ada de C. Po r ej e mplo . en la Figura 6.4(d) deben cum-
plirse las s iguientes condic iones para e l tercer pulso de control :
112. - 111 > 1
- sctup
II J - 112 ~ I hold
R

ti
e

R {l'
~

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
f:l) Símbolo grnJ1r.:o lb) Circui to lógk o

E.~ladu rc.<,ct

('

~
"
(! -+ 4+- __ 1-"0
'. " " '. "
(d) Diagrama de tiem po",

FIGURA 6.4 Latch SR sincronizado.

Pueden escribirse desigualdades similares para otros flancos de bajada de la


señal de control de la Figura 6.4(d). En la mayoría de los diseños digitales la
entrada de control se conecta a la señal de reloj del sistema. Por este moti vo, el
latch SR sincroni zado se denomina latch SR sincronizado (c/oeked SR lateh ).

6.3. LATCH D SINCRONIZADO


Como se ha indicado en la Sección 6.2, los diseñadores que trabajan con biesta-
bles básicos SR deben asegurarse de que las entradas S y R no va lgan I al mismo
tiempo. Este inconveniente puede ev itarse util izando biestables bási cos D, que
disponen únicamente de una entrada D. El latch D si ncr onizado (gated D late/¡ )
se realiza a partir del latch SR sincro ni zado. conectando la entrada D a la entrada
S. y D' a la entrada R del latch SR, como indica la Figura 6.5(b). Conectando D y
D' a las entradas S y R se asegura que S y R no estarán a I al mi smo tiempo. Un
latch D también tiene una entrada e que lo habilita. del mismo modo que se hacía
en el latch SR sincroni zado descrito anteriormente. Cuando e es igual al , la sali-
da Q tomará el mi smo valor que la entrada D, después de un corto período de
228 Principios de diseño di g ital

tiempo. Por el contrario, si C es igual a O, la salida Q mantendrá el último va lor


de D estab lecido antes del fl anco de bajada del reloj .
El funcionamiento de un latch D sincronizado se describe en e l diagrama de
tiempos de la Figura 6.5(d). Obsérvese que, cuando C alcance e l valor 1 en Q '1'
será igual a D en 1I + 4,0 ns. De igual forma , cuando C alcance el valor 1 cn l.¡. Q
será igual a D e n 14 + 2,0 ns. Téngase en cuenta, también, que si D cambi a duran-
te e l ancho del pulso de reloj , Q seguirá los cambios de la entrada D siempre que
los cambios sucedan antes de Isctu p y después de I hold ' Éstos, t " tu p y 'huld' son los
tie mpos antenor y postenor, respectI vamente, al flanco de bajada de la señal Cen

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
los que la entrada D debe pe rmanecer estable. El intervalo de tiempo entre ' sctup y
I hold se muestra e n la Figura 6.5 (d) sombreado. Por ejempl o. en la figura , Q será
igual a 1 en 17 + 4.0 ns, ya que D valía 1 c uando C = l . Por otra parte. cuando D
cambie a O en 18, Q le segu irá en 18 + 3,0 ns siempre que 19 - 18 ~ ' setu . En gene-
ral, es fác il trabajar con e llatch D sincronizado, porque la señal de en t~ada D y la
señal de salida Q, ligerame nte retardada, tienen e l mismo va lor durante e l perío-
do de tiempo en el que se considera C.

D¡-{:»----;===D
o Q
Q
e o Q Q (siguiente)

~ .O/3.0 e O X O O
e Q' O X ¡ 1
Q' l O X O
l l X l
(a) Símbo lo gráfico (b) Circuito lógico (el T,;.bl:l de verdad

Estado re Sd Estad" ~el E ~ tado resC' 1


,---,
e

Q
_ I~·o -~______
'.,
I~ ,
"
_________

'.
~_o_~~~l-_~_______

1.,.,IUjl I II"W

td) Diagrama de ti empos

FIGURA 6.5 Latch D sincronizado.

Como se ha expuesto en e l párrafo anterior, la salida Q está retrasada 4,0 ns


en la transición L a H , y 3,0 ns en la transic ión H a L, lo que se indica por 4,0/3,0
en e l símbolo gráfico utilizado en circ uitos de mayor tamaño.
Lógica ~ec uencial 229

6.4. BIESTABLES
Como se ha explicado anteriormente, los latches con puertas son elementos sen-
cillos de memoria que se habilitan durante todo el intervalo de tiempo en el que
la señal de control e es igual a l. Frecuentemente, estos late hes se denominan
latches sensibles al nivel porque están habilitados siempre que la señal de con-
trol esté al nivel 1. En cualquier instante de ese tiempo los latches serán transpa-
rentes, en el sentido de que cualquier cambio en las entradas se propagará a la sal i-
da con un pequeño retardo. Estos biestables básicos funcionan como elementos de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
memoria sólo después del flan co de bajada de la señal de control, cuando man-
tienen el estado establecido por el último valor de la entrada anterior al flanco de
bajada de la señal de control.
Basándose en esta descripción, se comprende que los diseñadores deban tener
cuidado cuando utilizan estos latches ya que. cuando el latch es transparente, los
largos intervalos de tiempo pueden, a veces, permitir que se introduzca informa-
ción no deseada. Como ejemplo, considérese un registro de desplazamiento de 3
bits formado por tres latches D. como se indica en la Figura 6.6(a). En este ejem-
plo. la señal de entrada X se conecta a la entrada D del primer latch, su salida Q,
se conecta a la entrada D del segundo, y su salida Q2 se conecta a la entrada D del
tercero. La entrada de control C se conecta al reloj del sistema, C/k, que sincroni-
za la operación de todos los biestables. Teóricamente, este registro de desplaza-
mi ento dehe trabajar de la siguiente manera: Durante sucesivos anchos del pulso
de reloj, el valor X entrará al primer latch, el valor del primer latch se transferirá
al segundo latch, y el segundo valor pasará al tercer latch.
Sin embargo, como puede observarse en el diagrama de ti empos detallado de
la Figura 6.6(b). el desplazamiento de la información que resulta no es el desea-
do. Por ejemplo, supóngase que todos los latches están en el estado de puesta a
cero (Q, =Q2 =Q3 =O) y que la señal de entrada X tiene el valor I durante el pri-
mer pulso de reloj y posteriormente el valor O. En otras palabras, el registro de
desplazamiento debería comenzar con el contenido 000 y con los valores 100, OIO
Y 001 después del primer, segundo y tercer pulsos de reloj. Sin embargo, si el
registro de desplazamiento empieza con el contenido 000, le seguirán los valores
111 , 000 Y 000 después del primer, segundo y tercer pulsos de reloj. En otras pala-
bras, el registro de desplazamiento funciona como un único latch que almacena el
valor de la señal de entrada X en cada ciclo de reloj.
Observe este funcionamiento , aún con mayor detalle, suponiendo que el ancho
del pulso de reloj es 1", = 15 ns y que la señal de entrada X vale [ en 'o' Cuando la
señal de reloj habilite ellatch en 1" el primer latch cambiará al estado de puesta a
uno (Q, = 1) en 1, + 4,0 ns. Sin embargo, como la señal de reloj mantiene su valor
otros II ns, el segundo latch cambiará al estado de puesta a uno en 1, + 8.0 ns , así
como el tercero, que conmutará en t, + 12,0 ns. Entonces , tras el primer flanco de
bajada en 1" el contenido del registro de desplazamiento será igual a [11. Habrá
un funcionamiento similar cuando el segundo pulso de reloj, y los sucesivos, habi-
liten los restantes latches del registro de desplazantiento.
230 Principios de diseño di gital

x l'
D Q' D Q' D Q;
".UI3.0 4.0/3 .0 4,0/3 .0
e e e

e /k

(a) Esquema lógico

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
elk 1..- 15 '1
L - -_ _- - - '

Q'
~~~.-------.---------------------------
~: ~I.-~
)·_o________________________ ______

~ ~.---------------------------
'r, " 1,
" 1-

(b) Diagrama dc lIempos

FIGURA 6.6 Desplazamiento erróneo con latches D.

Un posibl e método para rectiticar este funci onami ento erróneo es di sminuir el
ancho del pul so de reloj a un retardo de propagación. No obstante. la di ficultad de
esta solución radi ca en que los retardos no son los mi smos al poner a uno o cero
los latches. lo que significa que un ancho del pul so de reloj que ponga a un o el
lateh puede no servir para ponerlo a cero. y viceversa. Además, si el ancho del
pul so de reloj se limita a un tiempo menor que el retardo del latch. éste no tendrá
tiempo de captar el valor de entrada. En cualquier caso, el fabricante de l latch no
puede garantizar realmente valores exactos de retardo, sencillamente a causa de
los márgenes de error en el proceso de fabricaci ón. En este sentido. debe tenerse
en cuenta que la puesta a uno y a cero que se utili zan son sólo valores de retardo
esperados . mientras que los valores de retardo reales se di stribuyen según un a di s-
tribución normal alrededor de estos valores esperados.
Una vez ex puestas estas restri cci ones, hay dos pos ibl es solu ciones al proble-
ma: los bi estables maestro-esclavo y los biestables disparados por llaneo. Los
biestables maestro-esclavo (nwster-slave .fJip-.fJop ) se implementan utili zando
dos latches. denominados maestro y esclavo. Como muestra la Fi gura 6.7(a ). )a
Llig ica :-'l'L'lIclll,.:i al 23 1

entrada al lateh maestro e, la entraua al biestable , mi entras que la elll raua al lateh
escla \o es la salida del lateh maestro, La salida ud lateh ese la"o eS la sa lida uel
biestable c","pleto. En el hie stable, los latches mae , tro ) esclavo e.stán guiad,,,
por la mi sma señal de reloj, C/k, con la dii'crencia importante de quc d latch maeS-
tro ,e habi lit an; cuando la ,e lial de re loj sea igua l a 0, y cllatch e,clan) cuando la
selial de reloj sea igua l a l .
La ve ntaja de ut il izar estos biestables es clara: c",no los latches maestro y
csclavo 110 se habilitan nunca al mi ~ mo ticmpo. d bi c!'>wbk lll<Lcstro -t::-.c la\'o
nunca e, transparcllle. Por ejemp lo, cuando la ,c li al de rd oj c, () , ólo el latch

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
maestro cstú habilit ado y su v'(lI11enido sc trans fiere al latch esela\ o sólo despu~,
de qu e la .se lla I vil' reluj \ alga l. Obsérvcse que, cuando la selial de reloj cs igual
al, el la teh maestro se de shabil it a y su cOlllcnido no cambia,

Latch maeslro Latch eSclaV{l


/) ---~~/J;---QQj
" /J IJ

-I,(ln,O .. ,01',0

e
('J¡ _ _ - ' -_ _ _ _--'

e/l..

V" --+ .. (I I+- ~ 5,' II+- --+ -1 ,1) l=.-


--+ 4.11 1__

f, 'lo 1- !, "1
(hl Ula~ra l11 a d~ !ll'IIIJlO~

FIGURA 6.7 Biestable maestro'esclavo.

Esto ,c inuica con mús deta ll e en el uiagrama de tiempos de la Figura 6,7(h),


quc muestra tre s pu lsos de la sCli a l de reloj C/k, C uanuo la entrada O vale I en 111"
d biestab le n",c,tru sig uc e l cambio de la cntrada cs tab lec icnuo Q", = I en l o + -U)
232 Principios de diseño digital

ns, debido a que su entrada de control, e, es igual a 1. Este cambio no se propa-


ga a través del biestable esclavo hasta que e /k sea igual a 1 en '1' estableciendo
Q s = 1 en '1 + 4,0 ns. Cuando, de nuevo, D vale O en 1)' el latch maestro le sigue
en /3 + 3,0 ns pero el cambio no se propaga al latch esclavo hasta /4 + 3,0 ns.
Cuando Dcambia a l en /5' el cambio no se acepta por el latch maestro hasta que
e/k sea igual a O en /6 ' Entonces Qm es igual a 1 en 16 + 5,0 ns. Obsérvese que se
ha añadido un retardo adicional de 1 ns debido al inversor asociado a la entrada
edel latch maestro. Además, cuando ellatch esclavo se habilita en /7' Q" es igual
a 1 en 17 + 4,0 ns. Un cambio simi lar de la entrada D a O, en /8' no se considera

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
por el latch maestro hasta 19 + 4,0 ns, y no se propaga al lateh esclavo hasta que
la señal de reloj vuelva a ser igual a l .
Como se ha indicado en la Figura 6.7, el valor de la entrada D se capta en el
latch maestro antes del flanco de subida de la señal de reloj, y se transfiere al latch
esclavo inmediatamente después del mismo flanco de subida. Prácticamente puede
decirse que el valor de D se ha captado en el flanco de subida de la señal de reloj.
Si se reconstruye el registro de desplazamiento tratado anteriormente utili-
zando biestables maestro-esclavo, se obtiene el circuito lógico de la Figura 6.8(a),
que corresponde al diagrama de tiempos mostrado en la Figura 6.8(b). Este nuevo
diagrama de tiempos muestra la misma señal e/k y las señales de entrada que la
Figura 6.6(b), pero se ha modificado de modo que para cada biestable se indican
dos formas de onda: las salidas de los biestables maestro y esclavo. Q¡m y Q ¡S'
donde 1 ~ i ~ 3.
Como indica el diagrama, después de que la señal de entrada X cambie a 1 en
lo' sólo ellatch maestro del primer biestable se pondrá a 1 (Qlm = 1) en '0 + 4,0
ns. Entonces, cuando la señal de reloj cambie a l en / l' el latch esclavo se pondrá
a 1 en /1 + 4,0 ns. Un poco después. después de que la señal de reloj vuelva a O
en /2 ' el lateh maestro del segundo biestable se pondrá a 1 (Q2m = 1) en /2 + 5.0
ns. Nótese que, cuando la señal de entrada X vuelva a O en /)' el latch maestro del
primer biestable se pondrá a O (Qlm = O). Tras el siguiente flanco de subida del
reloj, QI S retomará a Oen / J + 3,0 ns y Q 2s se pondrá a 1 en /4 + 4,0 ns. Igua lmente.
al tercer flanco de subida del reloj Q2, se pondrá a O y Q3., se pondrá a l .
Como puede observarse, los registros de desplazamiento realizados con bies-
tables maestro-esclavo desplazan su contenido una posición a la derecha en cada
flanco de subida de la señal de reloj. Por consiguiente, cada ciclo de reloj corres-
ponde a un estado del registro de desplazamiento que, para la secuencia de valo-
res de la señal de entrada mostrada en la Figura 6.8(b), va desde el estado 000 a
los estados 100, O10 y 001 Y vue lve, finalmente, a 000.
Como indica la Figura 6.9(a), un biestable disparado por flanco (edge /rig-
gered flip-j7op) se implementa con tres biestables básicos SR de puesta a uno, de
puesta a cero y de salida interconectados. El latch de puesta a uno sigue los cam-
bios en la señal C/k si D es igual a 1 en el flanco de subida de la señal e/k, mien-
tras que el latch de puesta a cero sigue a la señal de reloj si D es igual a O en el
flanco de subida de la señal de reloj. En otras palabras, las señales Ay Bregistran
los cambios en D mientras e/k es igual a O. El funcionamiento detallado del bies-
table disparado por flanco se ilustra en el diagrama de tiempos de la Figura 6.9(b).
X
_.
D Q,. _
I l it ....
D 0,, 1- D O,. D O, i-
...
Lógica secuencial

D O,.
I
D
I

Q j ,;
233

-2
4,0/3,0 4,0/3,0 4,013,0 4,0/3.0 4.013,0 4,013.0
- e r- e
r e r- e r- e r- e
l'> ~ I L~

e/k

(a) Esquema lógico

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Q,. -,.o F- _ : ~1.-_
3._0~________________________________

~Q~,,____-___4,o~l .- - '1
3O
IL._-. _____________________________

~O"''' '---_________-___5_.oJF - ;'O IL____________________


.- _

~Q"~,______~__________~____- __,_"
.() r.- -. ~14_3-._0 _ __ __ __ __

~Q::,.,______•_______________________-___5_.0.. JI+- -. 4,0 ~

Q" --+- 4·° 1.....


'11 '1 " "
,-
(b) Diagrama de tiempos

FIGURA 6.8 Desplazamiento con biestables maestro-esclavo.

Mientras e /k es igua l a O, las señales S y R valen 1, manteniendo el latch de


sa lid a su estado actual. C uando D cambi a en lo' B cambi a a O en lo + 1,4 ns y A
cambia a 1 en lO + 2,8 ns. La salida Q permanece sin cambi o hasta que e/k sea
igua l a I en 11, forzando a S a l valor O e n ' 1 + 1,4 ns y a Q al valor l e n 11 + 2,8
ns. Cuando e /k vue lve a O e n 12, S vue lve a I e n 12 + 1,4 ns, dejando Q a l .
Cuando D va le O en ' J' B to ma valor l en IJ + 1,4 ns y A se pone a O e n 13 + 2,8
ns.
Tras el flanco de subida de la señal e /k en 14 , R cambia a O en 14 + 1,4 ns y Q
'4
a O en + 4,2 ns. El cam bio en e l valor de D en no se registra hasta el fl anco '5
de bajada de la señal e/k e n ' 6' cuando R vue lve a 1 en ' 6 + 1,4 ns, B vale O en
23.. Prilll'ipios de diseiio digital

1" + 2,8 ns y A vale I e n 1" + ·t2 ns. En 17 + 2.8 ns. Q se eslabkee a I Iras el nan -
eo ue s ubida ue C/k e n 17 y la bajada de S en 17 + 1...1 ns .

Latch de puesta a uno

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Latch de salida

B
/! ---jt===~~
Lutch de puesta a cero

CIJ. I I
/l
'---_---'1 1'--_ _
----.. :2.:-: rl. -----------1 '4- ----.. -t.~ lr..------- - - . 1..- ~:-,

Ii

11
----.. : ! .~ 1-..-
1____- --'j -
,,(J_ __ --
_~-
/: /,
-- 4.:2
1- -- 2.' 1_
'.
/"
"
/,
"
/"
'"

FIGURA 6.9 Biestable disparado por flanco.

Ob:-.érvcsc. de nue\'o. que el camhio posterior Jc f) en Ix IlO :-.e propag.a a la


sa liua Q pero es caplauo c uando H vak I en I ~ + 1.4 ns y ¡\ \'ak () cn 1" + 2.X ns.
El valor ue Q scrá ig ual a () en el siguienle llaneo de subida ue la ,ciial Clk .s i f)
no ca mbi a después de IX' S i () cam hia uepués ue I ~ y anlcs del s iguie llle naneo uc
Lógica secuencial 235

subida. los valores de las señales A y B captarán este cambio y lo propagarán a la


salida Q en el siguiente flanco de subida de la señal Clk.
Como los biestables maestro-esclavo y los biestables disparados por flanco
cambian de estado só lo durante transiciones positivas de reloj , como se ha mos-
trado en las Figuras 6.7 y 6.9. un estado en un circuito secuencial con biestables
puede detinirse como su situación en un intervalo de tiempo entre dos llaneos de
subida de la seña l de reloj. El valor del circu ito secuencial en cada uno dc sus esta-
dos está determinado por el contenido de todos sus biestables.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
6.5. TIPOS DE BIESTABLES
En la Sección 6.4 se indicó cómo realizar un biestable maestro-esclavo y un bies-
table disparado por flanco. Aunque hay varias y diferentes maneras de realizar
biestables, todas presentan las siguientes dos características: primero, un biesta-
ble cambia de estado sólo en el flanco positivo o negativo de la señal de reloj y.
segundo. sus entradas de datos no deben cambiar después del tiempo I' <IU ante-
rior, ni antes del tiempo I ho1d posterior. al flanco de disparo de la señal de 1~loj.
Todos los biestables pueden dividirse e n cuatro categorías básicas: SR. JK . O
Y T. Se diferencian e n el número de entradas y en la respuesta que proporcionan
a valores diferentes de las señales de entrada. Las cuatro clases de biestables se
indican en la Tabla 6. 1. Cada uno de estos biestables puede caracterizarse por su
símbo lo gráfico. por su tab la característi ca y su ecuación característica o por su
tabla de excitación. Los símbolos gráticos indican el número y el tipo de entradas
y salidas. Todos los biestables tienen señales de salida Q y Q'. También todos ello.
disponen de en trada de señal de reloj. El pequeño triángulo en la entrada de reloj
indica que el biestable se dispara por el tlanco de subida de la señal dc reloj . Por
el contrario, un círcu lo junto al triángulo indicará que se trata de un biestable dis-
parado por llaneo de bajada de la señal de reloj.
Para hacerlo más sencillo, a lo largo de este libro se utilizarán sólo biestables
disparados por flanco de subida. Cada biestable tiene una o dos entradas de datos
que caracterizan al biestable y le dan nombre. como se ha descrito anteriormente.
El biestable SR tiene dos entradas, S (se/) y R(reser), que ponen a l ó a Oel bies-
table cuando se act ivan. En concreto, cuando S = I Y R = O la salida Q del biesta-
ble se pone a I y cuando S = Oy R = I la salida se pone a O. E l biestable JK. simi-
lar al SR. dispone de dos entradas, J y K, que realizan la puesta a I ó a Odel bies-
table cuando se activan. Además, cuando ambas e ntradas J y K están ac tivas al
mismo tiempo. el biestable JK cambia de estado . Como se ha mencionado ante-
rionncnte. el biestable D tiene una entrada D (datos) que pone a I e l biestable
cuando D = I Y lo pone a O cuando D = O. El biestable T ti ene una entrada T(log-
g/e) que fuerza al biestable a cambiar de estado cuando T es igual a l .
En la segunda columna de la Tabla 6.1 puede verse la tabla característica,
una versión reducida de la tabla de verdad que proporciona. para cada conjunto de
valores de entrada del biestable y dado su estado anterior al flanco de subida. su
correspondiente estado posterior al flanco de subida de la señal de re loj. En la
236 Plincipios de diseño digital

tabla, Q y Q(siguiente) denotan el estado del biestable antes y después del flanco
de subida del reloj , respectivamente. La tabla característica se utili za en el análi-
sis de circuitos secuenciales, cuando se conoce el valor de las entradas del biesta-
ble y se desea obtener el valor de la salida Q del biestable después del flanco de
subida de la señal de reloj. Como en cualquier otra tabla de verdad, se puede uti-
lizar el método del mapa para obtener una ecuación característica para cada
biestable, como se muestra en la tercera columna de la Tabla 6.1.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
TABLA 6.1 Tipos de biestables

NOMBRE DEL SIMBOLO DEL TABLA ECUACIÓN TABLA DE


BIESTABLE BIESTABLE CAAACTERISTlCA CAAACTERISTlCA EXCITACIÓN

S R Q (siguiente) j Q Q (siguiente) S R

SR

El
R a
O
O
I
I
O
l
O
1
Q
O
I
NA
Q(siglliellle) =S + R'Q
SR =O
O
O
I
I
O
1
O
I
O X
1 O
O I
X O

J K Q (siguiente) Q Q (siguiente) J K

JK

fl
K a
O
O
1
1
O
I
O
1
Q
O
1
Q'
Q(siglliellle) =lQ' + K'Q
O
O
1
I
O
I
O
I
O X
I X
X 1
X O

ta:t
Q Q (siguiente) D
D Q (siguiente) O O O
D Q(siglliellle) =D O I I
O O 1 O O
1 1 1 1 1

Q Q (siguiente) T

ti
T Q (siguiente) O O O
T el.! QIsiglliente) =TQ' + rQ O 1 1
O Q 1 O 1
(! 1 Q' I 1 O

En la cuarta columna de la tabla se muestra la tabla de excitación, utilizada


para la síntesis de circuitos secuenciales. La tabla de excitación se obtiene de la
tabla característica cambiando las columnas de las entradas y salidas. Proporciona
Lógica s~c ut'.llcijJ l 237

el va lor de las cntradas de los bi estables que se neccsitan para camhiar dc estado
despm's del flanco de s ubida ue la señal de reloj.
°
Aucmás de los símbo los gráticos, tablas ecuaciones, los biestab les pueden
ca racte ri zarse también con di agramas ele estados o gra fo s de estados, en cuyo L'asn
cada cstado se rep rese nta por un círcul o. y una tran sic ión entre e~tadlls sc indi ca
por un a fle cha. Por ejemp lo, en la Tabla 6,2 se describen con este método los cua-
tro tipos ue biestables , O bsérvese que caua !lecha se marca con Ins va lores de la,
sc ilalcs de cn trada, que originan una transición oc un estado a otru. Adc lll i.ís . un
mi slllo estado puede ser orige n y destino uc la transición. Comu las tran siciones

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ocurre n e n e l flan co de reloj, cada estadn puede consi derarse comn un intervalo
ue ti empo entre dos Ilancos de subida s ucesivos de la seiia l de reloj .

TABLA 6.2 Diagrama de estados para distintos biestables

NOMBRE DIAGRAMA DEESTADOS

S.N:.::. !'II

,1",/(d l. 1

J~

J,A'=O.I n 1.1

1)

T=!

Puede versL' L'n la tahl a qu e los uiagramas de es tados ue los cuatro hi estables
tiL:I1Cll el mi :-tlllo número u(' estados y u~ transiciones: caua bicstahle esti.Í en el
estauo ue estahkcim iento () puesta a I (sel) c uanuo Q = I Y en e l estauo tk ini -
cia li /ación o puesta a O (I"esel) cuanuo Q = O. Además, caua bi estable puetk pasar
uc un estauo a otro o \'oll'er al mi smo estauo, La única uifere nc ia en tre lo, cuatro
238 Principios de diseño digital

tipos de biestables reside en los valores de las señales de entrada que originan las
transiciones. Un diagrama de estados es un método muy conveniente de visuali-
zar el funcionamiento de un biestable o, incluso, de gran número de componentes
secuenciales. En la Sección 6.7 se generalizan estos diagramas de estados al defi-
nir el modelo de máquina de estados finitos utilizado en el diseño de lógica
secuencial.
Cada biestable está disponible, normalmente, con o sin entradas asíncronas,
que se utilizan para poner a 1 (preset) o poner a O (clear) los biestables indepen-
dientemente de las restantes entradas. Estas entradas se utilizan para poner los

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
biestables en un estado inicial antes de su funcionamiento normal. Por ejemplo,
tras conectar la fuente de alimentación, el estado de cada biestable no es predeci-
ble y deben utilizarse las entradas asíncronas para poner los biestables al valor
adecuado antes del comienzo de su funcionamiento síncrono. Las entradas de
puesta a uno y cero se denominan asíncronas debido a que no dependen de la señal
de reloj y, por tanto, tienen prioridad sobre todas las operaciones síncronas. En

CLR
D
Q

C PRS
D Q
Q' C Q'
CLR
PRS

(a) Latch D (b) Símbolo gráfico

C/k

Q'
PRS
D Q
D C/k Q'
CL R

(e) Biestable D disparado por fl anco (d) Símbolo gráfico

FIGURA 6.10 Elementos de memoria con entradas asíncronas.


Lógica secuencial 239

olras palabras, cuando las entradas asíncronas están activas los valores de las
demás entradas del biestable se ignoran. Esto puede deducirse, también, de los cir-
cuitos lógicos con entradas asíncronas de un latch D y de un biestable maestro-
esclavo D con entradas asíncronas mostrados en la Figura 6.10.
Como muestra la Figura 6.1 Ora), el latch D con puertas y enlradas asíncronas
es el mismo de la Figura 6.5 con dos entradas adicionales: PRS y CLR. Cuando la
entrada de puesta a uno (PRS) es igual al , la salida Q' es igual a O y Q a l .
Contrariamente, cuando la entrada de borrado (CLR) es igual al, la salida Q es
igual a O. Mientras que una de las entradas PRS o CLR sea 1, el biestable perma-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
necerá en los estados impuestos por las enlradas asíncronas. El símbolo gráfico de
un latch D con entradas asíncronas se muestra en la Figura 6.1 O(b).

TABLA 6.3 Símbolos gráfi-


cos para biesta-
bles con entra-
das asíncronas

NOMBRE SIMBOLO
OS BIESTABlE DEL BIESTABlE

! f>u.c:.o.llllll

1- S Q-
SR 1- >Clk
I- R (l -
r Pue~tu a O

Ál'IIOIa a'
1- J Q-
JK 1- >CI1c
1- K a-
TPuest:! a O
.l PuC-S(;I 3 I

I- D ,, 1-
O 1- ~at
1: a 1-
yPuesta ~ O
.l Pucnl al
I- r a l-
T 1- ~at
te (l 1-
TPuesta a O
240 Principios de diseiio digital

En contraposición al latch D, el biestable di sparado por flanco de la F igura


6. 10(c) se pone a 1 con la señal PRS cuando ésta vale O. y se borra con la señal
CLR cuando ésta va le O. El hecho de que sea un valor bajo de las se ñales aSÍn-
cronas el que afecte a los biestables se indica con los círcu los pequeños del sÍm-
bolo gráfico mostrado en la Figura 6.1 O(d). Obsérvese que las señales asíncronas
de puesta a uno y puesta a cero obligan a todos los late hes de la Figura 6. 10(c) a
tomar los estados adecuados que corresponden con Q = I Y Q = O, respecti va-
mente. Como las señales de puesta a uno y puesta a cero activas en baja se impl e-
mentan más fácilmente en la práctica, a lo largo de este libro se supondrá que

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
todas las entradas asíncronas son activas en baja. En la Tabla 6.3 se muestran los
símbolos gráficos de todos los tipos de biestables con entradas asíncronas acti vas
en baja.

6.6. ANÁLISIS DE LÓGICA SECUENCIAL


Normalmente, la lógica secuencia l se implementa con circuitos lógicos que incor-
poran los biestables dados en la Tabla 6. 1 y las puertas dadas en las Tablas 3. 14 ,
3. 15 Y 3. 16. Mientras que un circuito lóg ico de este tipo puede representar clara-
mente la estructura de la lógica secuencial , desgraciadamente no revela de mane-
ra fácil su funcionamiento. lo que representa un problema para el diseñador. Por
ejemplo, cuando se redi seña un producto los di señadores quieren, normalmente,
modificar el funcionamiento del mi smo con el fin de añadir nuevas característi -
cas, o inversamente, pueden pretender la utili zac ión de nuevos componentes y
necesitar comprobar que la sustitución de los componentes no ha modifi cado el
funcionamiento del producto. En cualquier caso. los di señadores necesitarán obte-
ner el comportamiento del circuito lógico secuencial.
Este proceso, denominado análisis, requiere que el diseñador genere una o
más descripciones funcionales, utilizando diagramas de estado. tablas de estado y
de salida y ecuaciones booleanas de entrada y salida . Una vez obtenida la des-
cripción funcional , los di señadores pueden desarrollar diagramas de tiempo que
les permitan contrastar sus predicc iones con los resultados de simulación. A con-
tinuación se expone el procedimiento completo de análisis con varios ejemplos.

EJEMPLO 6.1 Contador módulo 4.


PROBLEMA

Obtenga la tabl a de estados y el diagrama de estados del circuito secuencial representado


en el esquema de la Figura 6. 11 (a).

SOLUCiÓN

El primer paso en el análisis es obtener las expresiones booleanas de las entradas a cada
biestable del circuito en términos de la entrada externa C ll t y de las sal idas del biestable
QI y Q(). Como hay dos biestables D en el ejemplo. se obtie nen dos ex presiones para DI
y Do:
Lógica secuencial 241

Do = CI/t Ef) Qo = Cl/rQo + CI/t Q'o (6. 1)


D, = Cl/rQ, + Cl/tQ',Q" + CIlIQ,Q'O (6.2)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
e nl= !

el! _--=====::1-----'
( a) Circuito lógico

D,) = Cm I$t OH'" CI1I'Qu + CIltO'" (e) Diagramas en estado


D I = C/II'QI + CmQ' IQO+ CIIIQ IQ'u
(b) ECll llción de excitación Ciclo de reloj 1 e ic!u .le reluJ ! Cid o de rl'loj 3 Cic!u!.le rdoj ~

QJ~iglliellle) = Do'" Cm'Ou + CI1IO'1I


Q1l.1'iguieme) = D I '" CIII'Q I + CIIIQ'I QII + CmQIQ'1 1
,,-
CI< ---,nL-------,nL-------,n.L-------,rL
(e) Ecuac iones de estado siguiente

ESTADO ACTUAL ESTADO SIGUIENTE

0,0, O,(siguiente) O,(siguiente) Q, ' 1


• =---'-- - - - - - '
Cnt=O Cnt=l
oO OO O I
:1 : L-I_ - - - '
O I O I I O
I O I O I I
I I I I OO
'" " "
(d) T,Lbla de estado siguiente (f) Diagrama de tiempos

FIGURA 6. 11 Análisis de un circuito secuencial.

Estas expresiones booleanas se denominan ecuaciones de excitación, ya que repre-


sentan las entradas de los biestables que, además, determinarán el estado del circuito
secuencial en el sigu iente ciclo de reloj. Después de obtener las ecuac iones de excitación,
pueden obtenerse las ecuaciones de estado siguiente transformando estas ecuaciones de
exc itación en ecuaciones características del biestable. En el caso de biestables D,
Q(siguiel/te) = D . Así pues, las ecuaciones de estado siguiente se igualan a las ecuaciones
de excitación:
Q/,'iiguielUe ) = Cnt'Qo + Cn /Q'u (6.3)
Q,,(¡.·iguiente) = Cnt'Q, + Cl/tQ',Q" + CntQ,Q'o (6.4)
242 Principios de diseño digital

Ahora se transforman las ecuaciones de estado siguiente a una forma tabular. o tabla de
estados siguientes. en la que cada fila corresponde a un estado del circuito secuencial y
cada columna representa un conjunto de valores de entrada. En general, cada estado de un
circuito secuencial se define por los valores binarios almacenados en su biestable. En este
caso, pues, como sólo hay dos biestables. el número de posibles estados es de cuatro. es
decir, Q I Qo puede ser igual a 00, 01, lO ó l l . Estos valores se muestran como estados actua-
les en la Figura 6. l l (d).
En la parte de la tabla correspondiente a los estados siguientes, cada entrada define el valor
del circuito secuencial en el siguiente ciclo de reloj tras el flanco de subida de C/k. Como este
valor depende del estado actual y del valor de las señales de entrada. la tabla de estados

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
siguientes contendrá una columna para cada asignación de valores binarios de las señales de
entrada. En el ejemplo. como hay sólo una señal de entrada, Cm, la tabla de estados siguien-
tes mostrada en la Figura 6. l l (d) tendrá sólo dos columnas, correspondientes a CIII = O Y CIII
= l . Obsérvese que cada fila en la tabla de estados siguientes indica el valor de los biestables
en el siguiente estado si su valor de estado actual es el que se indica en la cabecera de la fila
y los valores de entrada son los mostrados en la cabecera de la columna. Cada uno de los valo-
res de los estados siguientes se ha calculado a partir de las ecuaciones de estado siguiente (6.3)
y (6.4).
Sin embargo, para representar el comportamiento de un circuito secuencial se podría
utili zar un diagrama de estados en lugar de una tabla de estados siguientes. Un diagrama
de estados es, básicamente, una representación gráfica de la tabla de estados siguientes.
Para cada estado presente de la tabla de estados siguientes hay exactamente un nodo, iden-
tificado por un círculo. También hay un arco directo saliendo de cada estado para cada
entrada de la tabla. Cada arco se etiqueta con los valores de las señales de entrada que cau-
san la transición desde el estado presente (origen del arco) al siguiente estado (destino del
arco),
En general , el número de estados en una tabla de estados siguientes o diagrama de esta-
dos será igual a 2"', donde 111 es el número de biestables; de manera similar, el número de
arcos será igual a 2'" x 2', donde k es el número de señales binarias de entrada. En el dia-
grama de estados de la Figura 6. ll (e), debe haber cuatro estados y ocho transiciones .
Siguiendo estos arcos de transición, puede verse que mientras Cm = l el circuito secuen-
cial recorre los estados en la siguiente secuencia: O, 1, 2, 3, O, 1, 2... . Por otra parte, cuan-
do Cm = O el circuito permanece en su estado actual hasta que Cnt cambie al, en cuyo
caso la cuenta continúa. Como esta secuencia es típica de la cuenta en módulo 4, se puede
concluir que el circuito secuencial representado en la Figura 6.11 (a) es un contador módu-
lo 4 con una señal de control, CIl!, que habilita la cuenta cuando C III = 1 Y la deshabilita
cuando Cn! = O.
En la Figura 6.11 (f) se muestra un diagrama de tiempos que representa cuatro ciclos
de reloj y que permite observar el fun cionamiento del contador con ma yo r detalle. En
este diagrama de tiempos se supone que CIlI se habilita en el ciclo de reloj O, en 'o' y se
deshabilita en el ciclo de reloj 3, en 14' También se supone que el contador está en el esta-
do QIQO = 00 en el ciclo de reloj O. Obsérvese que en el flanco de subida del reloj, en / 1,
el contador irá al estado QIQO= 01 con un cierto retardo de propagación ; en el ciclo 2,
después de 12, irá a QIQO= 10; y en el ciclo 3, tras 13' irá a QIQO= 11. Como Cnt vale O
en 14, se sabe que el contador permanecerá en el estado QIQO= II en el siguiente ciclo
de reloj. Para verificar completamente el funcionamiento de un circuito secuencial, se
deben construir diagramas de tiempo para todas las posibles secuencias de los valores de
entrada.
Lógica secuencial 243

En el Ejemplo 6. 1 se ha expuesto el análisis de un circuito secuencial que no


tiene salidas, desarrollando una tabla de estados siguientes y un diagrama de esta-
dos que describen sólo los estados y las transiciones de un estado al siguiente. En
el siguiente ejemplo se complica el análisis añadiendo señales de salida, lo que
signitica que se debe remodelar la tabla de estados siguientes y el diagrama de
estados para incluir el valor de las señales de salida en cada estado. Normalmente,
un circuito secuencial en el que los valores de salida dependen sólo de su estado
presente se denomina circuito secuencial basado en estados (state-based) o cir-
cuito secuencial tipo Moore.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
EJEMPLO 6.2 Contador módulo 4 basado en estados
PROBLEMA
Obtenga el estado siguiente, las tablas de salida y el diagrama de estados del circuito
secuencial mostrado en el esquema de la Figura 6. 12(a).
SOLUCIÓN
En la figura, la lógicn combinacional de entrada es la misma que en el Ejemplo 6.1 , por
tanto las ecuaciones de excitación y de estado siguiente serán las mismas que en el Ejemplo
6.1. Para resumir. se han mostrado estas ecuaciones en la Figura 6.12(b) y (e). No obstan-
te. también se ha calculado la ecuación de salida,
(6.5)
Como muestra esta ecuación, la salida Y será igual a I cuando el contador esté en el
estado Q,Q,, ; 11. Y permanecerá a I mientras el contador se mantenga en ese estado. Como
la salida Ydepende s610 del estado actual del circuito secuencial. puede añadirse una colum-
na adicional a la tabla de estados para transformarla en tabla de estados-siguientes/salidas.
Se utiliza la Ecuación (6.5) para determinar los valores que se colocarán en la columna de
salida, como indica la Figura 6.12(d). En general, para convertir una tabla de estados
siguientes en una tabla de estados-siguientes/salidas se añade una columna para incluir las
señales de salida.
En la Figura 6.12(e) se muestra cómo puede añadirse el valor de la señal de salida a cada
estado en el diagrama de estados. y en la Figura 6. 12(f) cómo añadir la salida Yal diagra-
ma de tiempos. Obsérvese que, en la Figura 6.12(f), el contador alcanzará el estado Q , Q" ;
II sólo en el tercer ciclo de reloj, y la salida Y será igual a I después de que Qo cambie a 1.
Como el contador queda deshabilitado en el tercer ciclo de reloj , permanecerá en el estado
Q,Q,, ; 11 e Ypermanecerá activa en los sucesivos ciclos de reloj hasta que el contador sea
habilitado de nuevo.

En el Ejemplo 6.2 se ha analizado la lógica secuencial de un circuito basado


en estados, en el que los valores de la señal de salida dependían del estado de los
circuitos secuenciales pero no de los valores de la señal de entrada. Sin embargo,
en el caso de un circuito secuencial basado en entradas (inpu t-based) o circui-
to secuencial tipo Mealy los valores de salida dependen de los valores de entra-
da y del estado del circuito. Analizando este circuito, las tablas de estados y de
salidas deben modificarse para describir este circuito secuencial basado en entra-
244 Princ ipios de diseflO digital

das. lo que s ig nifi ca que cada en trada en la labia de estados s i g lli c n t c~ represe n-
tará, separados por e l s ig no /. al estado s ig uiclHe y al va lo r dc sali da,

e 1/:

11 ti f-l-----r-...

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
l'

/". ,

,¡¡ ---'====::::::1- --'


l a ) C ll"C U i l ~) 10g ll"1l

!Jo '"' CIIT \11 (Jo '" CII/'IJ,, '" ( mlJ'"


n = CIII'(J ... CIIIQ ' (J" -t Cm{! 'J',

n n n
!h ) Fcu;.¡ción de e \c ila\:lú"

{J,,! " 1: 11II' /JI t' ¡ =o IJ" '" ( m 1,)" .. ( "m (..I "
{} 1'/ 1:111011,' /= {) '" Cm 'U .. ("!l IIJ ' (J,, " ( 't!I (llJ "
. -1

I"Ld",k rd"I! 1 1.1" d 11':"1 ' 1 l.:" ,1.- ~d"l 1


íL
C'I.I "'¡"IC'l,,' 1
) ,.., () (J,.
(e) Eutacio11l'!i de e~ I ; ld o ~I~\l i (·nll.! ~ dI.' ~a l i d il

ESTADO SAliDAS
PRESENTE
ESTADO SIGUIENTE
-,-
0 _ __ J
0,0, O,(siguiente) o,(siguienle) Y
Cm = () Cllt = I
- - - -- -------- ---
L--_J
O O OO O I O
O
I
I
()
O I
I O
I O
I I
O
() I
I I I I () O I

FIGURA 6.12 Aná lisis de un co ntador módulo 4 basado en estados.

En un diagrama de estadus para e ste tipu c ircuito sec ue ncial. la sa lida no ue


se asocia con e l estado si no con e l arco de tran si ción" En este caso. cada arcu \c
marca con los valores de e ntruua. que ll evan al circu ito desde e l estad" actu al al
estado s ig uiente . y con los valo res tic saliua. que corres ponde n a los va lores de la
señal de ent rada e n el estado actual.
Esta modifIcació n se ilustra con e l s ig ui ente ejemplo.
Lógica secuencial 245

EJEMPLO 6.3 Contador módulo 4 basado en entradas


PROBLEMA

Obtenga la tabla de estados/salidas y el diagrama de estados del circuito secuencial moS-


lrado en el esquema de la Figura 6. 13(a).
SOLUCiÓN

Como se observa en la Figura 6.13. esle circuito difiere del c ircuito del Ejemplo 6.2 sólo en
la expresión de su salida. que ahora depende de l valor de la selial de entrada CIlI. Del cir-
cuito se observa que e l valor Yes igual a 1 cuando el contador está en e l estado Q,Qo = 11

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Y Cm = l . Por lo Wn to
(6.6)
Dad" esta ecuación de salida . la tabla de estados del Ejemplo 6.1 debe modificarse de
manera que cada entrada represente los valores de estados siguientes y de salida. Es decir,
el valor del es tado siguiente debe calcu larse a partir de las ec uaciones de es tado siguien -
te. y los valores de sa lida debe n calcu larse a partir de las ecuaciones de salida, como
mueslra la Figura 6. 13(c). Esta tabla de estados/salidas modificada se indica en la Figura
6.13(d).
El diagrama de estados de este circuito basado en entradas tendrá cuatro estados , C0111 0
antes. Sin embargo, a diferencia del diagrama del circuito basado en estados. ahora se mar-
cará cada arco con los valores de entrada y salida en la forma X/Y. La marca X/l' se inter-
preta como sigue: si el valor de la señal de entrada en el siguiente llaneo positi vo de la señal
de reloj es igual a X. entonce s el circuito cambiará al estado apun tado por el arco en el
siguiente ciclo de re loj. AdcnHÍs. durante el ciclo act ual de reloj su salida sení igual a Y
mientras que el valor de la se,'al de entrada sea igual a X. Por ejemplo. en la Figura 6. 13(e).
el arco entre los estados Q,Qo = 01 Y Q,Q" = 10 se ha marcado con Cm = l/Y = O. signifi -
cando que si Cm = 1 en el cic lo en que Q, Q" = O1. la sa lida del contador será Y=O en el ciclo
ac tual de reloj, y en el siguient.e cic lo de reluj el contador estará en el estado Q,Qo = 10.
Esta situación se ilustra en el ciclo 1 de reloj del diagrama de ti empos presentado en la
Figura 6. 13(1).
Por lo tanto. e l contador alcanzará el estado Q, Qo = lOen el ciclo 2 de reloj, cuando la
sellal de salida Y = O. En el ciclo 3 de re loj. el contador estará en e l estado
Q1 QO :; II Y la seiial de sal ida Yserá igual al, Sin embargo. en 1-lla salida Ysení igual a O
debido a que la sc¡ial de entrada Cm ahora v:l lc 0, a pesar de que el contador está aún en el
estado Q,Q" = 11. En c011lraposición. obsérvese que la salida Yen el Ejemplo 6.2 mantenía
su valor 1 en e l ciclo 3 de reloj. debido a que su valor dependía exclusivamente de l estado
del comador. que no h:lbía cambiado.

Sobre la base del procedimiento aplicado en los Ejemplos 6. 1 a 6.3. se habrá


obtenido una idea general de los diferentes pasos a reali zar para el análi sis de cir-
cuitos sec uenciales. Como indica la Figura 6. 14, se empieza con un circu ito lógi-
co obteniendo las ecuaciones de excitación para cada entrada de cada biestable.
Después. para obtener las ecuaciones de estado siguiente, se insertan las ecuacio-
nes de excitaci ón en las ecuaciones característi cas. Las ecuaciones de sa lida pue-
den obtenerse. también . del circuito y. una vez que se tienen las salidas y las ecua-
ciones de estado siguiente. se pueden generar las tablas de estados siguientes y de
246 Principios de diseño digital

salidas, así como los diagramas de estados. Cuando se alcanza esta etapa, se uti-
lizan las tablas o los diagramas de estados para desarrollar un diagrama de tiem-
pos, que puede verificarse por simulación. Pueden obtenerse formas de onda
mediante simulación a dos niveles distintos. A nivel físico, puede describirse el
ci rcuito lógico en un lenguaje de simulación y realizar la simulación para cada
estado y valores de entrada utili zando una biblioteca de modelos de puertas y
biestables. A nivel funcional, pueden describirse diagramas de estados o tablas de
estados siguientes/salidas en un lenguaje de simulación y realizar la simulación.
En este caso, se puede verificar el funcionamiento del circuito secuencial pero no

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
sus retardos reales, ya que el diagrama de estados y las tablas no contienen infor-
mación sobre la implementación del circu ito.

Cm

Cm~ I II'",1

er,
C;¡k _~=====f--------.l
(a) Circuito lógico

Do '" Cm E9 Q() '" e l/rQo + CIIIQ'O (e) Diagramas de estado


D I =CnrQ, + e n'IQI Qn + CI1IQ ¡Q'1)
(b) Ecuación de excitación

Qo(siguiem e} = D I! = CIII'Q!) + CIIIQ'u


=D I '" CnrQ, + CntQ'IQu + CII/QIQ'II
Q I(sig lliente)
y ", CII/QI º O
=
CII- - -----lnL---~n
Cid" de retoJ I • Ciclo de re loj 2
n Cido d~ r¡'loj 3
IL
Cklo (le r~lo14

(e) Ecuaciones de estado siguiente y de salida

'ESTADO PRESENTE ESTAllO SIGUIENTE!


SALIDAS
I
Q, :1
I 0,0, a,(~ Cl,(sig1ierid¡ly.

Cnt = O Cnt= l Q" 1


----------------
OO
O1
1O
1 1
O O / O O l/O
O l/O
l O/O
I 1/ O
1 O/ O
1 l/O
0011
J'
n
,~

'" " " " "


(d) Tabla de estados siguientes y de salida (f) Diagrama de tiempos

FIGURA 6.13 Análisis de un contador módulo 4 basado en entradas.


Lógica secuencial 247

Esquema lógico

~
Obtener ecudones de
excitación 1

~
Obtener ecucioncs de
estado siguiente y de salida 2

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Generar tablas de estado
siguiente y de salida 3

i
Gcncrar diagrlllnas
de estado 4

~
Desarrollar diagrama
de tiempos 5

!
Simu lar el circuito
lógico 6

+
FIGURA 6.14 Procedimiento de análisis para circuitos secuenciales.

6.7. MODELO DE MÁQUINAS DE ESTADOS FINITOS


Hasta ahora se han analizado diversos circuitos secuenciales, que se han descrito
por medio de ecuaciones booleanas de estado siguiente y de salida, tablas de esta-
dos y de sal idas, y diagramas de estados, quedando así totalmente caracterizado
cualquier circuito secuencial. Todas estas descripciones se basan en el modelo de
máquina de estados fin itos. que se describe en esta sección.
La máquina de estados finitos (FS M, Finile-Stafe Machine) se define teórica-
mente como una qu íntupla
<s, /, O,!, h >
donde S, 1 Y O representan el conjunto de estados (states), entradas (inpllts) y sali-
das (O l/ fpllfS), y fy h representan las funciones de estado siguiente y de salida, res-
pectivamente. La función de estado sigu iente f se define matemáticamente como
una aplicación S x Y -7 S. En otras palabras,fasigna un estado a cada pareja for-
mada por estado y entrada. El modelo FSM supone que el tiempo se divide en
intervalos uniformes y que las transiciones de un estado a otro ocurren sólo al
principio de cada intervalo de tiempo. Así pues, la función de estado siguiente f
248 Principios de diseño digital

define en qué estado estará la máquina FS M en el siguiente interva lo de tiempo,


una vez dados el estado y los valores de entradas en el intervalo prese nte.
La fun ción de sali da h determina los valores de salida en el estado presente.
Hay dos tipos di ferentes de máquina de estados finitos, con'espondicntcs a las dos
defini ciones distintas de la fun ción de sa lida h. Un tipo es la FSM basada en
estados o FSM tipo Moore. en la que /¡ se define como una aplicación S ~ O.
Es decir, se as igna una salida a cada estado de la FS M. El otro tipo es una FSM
basada en entradas o FSM tipo Mealy , en la que h se define como la apli cac ión
S x I ~ O. En este caso, la salida en cada estado queda deti nida por el estado y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
las entradas.
De acuerdo con esta definición, cada conjunto S, I Y O puede tener cualquier
número de símbolos. Sin embargo. en la práctica se trata sólo con variables bina-
rias, operadores y elementos de memoria. Por lo tanto, S, I Y O dehen impl emen-
tarse como un producto vectorial de señales binari as o elementos de memori a.
mi entras que las fun ciones f y h se defi nen como ex presiones booleanas que se
implementarán con puertas lógicas.
Así pues. la máquina de estados fi nitos puede modelar cualquier circuito
secuencial con k señales de entrada A p ... ,Ak' 111 hiestables Qp .... Q'" y n señales de
salida Y I , ... , YII , como se muestra en la Figura 6. 15. En este circuito secuencial, S.
I y O son el producto cartesiano de biestables o señales de la siguiente forma:
S = Q I X QoL X ... x Q11/
I= A l xA 2 x ... x Ak
0= YI X YoL x ... x Y11
Por consiguiente, cada elemento de S, I Y O se representa con una cadena de
unos y ceros.


Q (), ...• O",

e /k

FIGURA 6. 15 Modelo FSM de un circuito secuencial general.

La señal de reloj define los intervalos de tiempo o ciclos de reloj. Si se adopta


la definición anterior, se puede modelar el contador módulo 4 del Ejemplo 6.2 como
una FSM basada en estados, donde S = (so' SI' S2 ' s3), 1 = (ia' i l ), O = {0O' 01 }. sien-
do f y h los mostrados en la tabl a de la Figura 6. 16.
De igual manera, se puede modelar el contador módulo 4 del Ejempl o 6.3
como una FSM basada en entradas, donde S, l. O se defi nen como antes y f y /¡ se
dan en la tabla de la Figura 6. 17.
Cada modelo de FSM puede implementarse con biestables y puertas lógicas.
El contenido de los biestables define el estado de la FSM, mientras que f y h se
Lógica secuencial 249

implemcntan ~n lógica combinacional. Los diagramas de bloque lóg icos gcnera-


les para las FSM basadas en estados y basadas e n el1lradas se muestran cn la
Figura 6. 18. Estos diagramas de bloques se utilizarán en seccionl!s sig uientes para
la síntesis Jc lóg ica sec uenc ial.

ESTADO ESTADO SIGUIENTE(5x 1--> ó)


SALIDAS (5 --> O¡
PRESENTE ;,
~

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
So So s , (Jo
S, S , S , o"
"sJ
52
.\'J
SJ
.\'()
I 0,"
o

FIGURA 6. 16 Modelo FSM de contador módulo 4 del Ejempl o 6.2.

ESTADO ESTADO SIGUIENTE (5 x 1--> ó) 1SALIDAS (5 x 1--> O¡


PRESENTE ;,

s,/o" 5[/°0
s /oo S-/°o
s/o() S/Oo
sioo s,(o,

FIGURA 6.17 Modelo FSM de contador módulo 4 del Ejemplo 6.3.

6.8. SíNTESIS DE LÓGICA SECUENCIAL


En :-.cccionc:-. anteriores se ha de scrito cómo analizar di ve rso ~ ci rcuitos :-.ecucn-
ciales. En esta sección se aborda e l procedimiento de síntesis. inverso a la tarca
de análisis. en la medida en que el análisis parte de la impl e mentación y obtiene
la func ión o comportamie nto del circuito secuencial. mie ntras que la síntes is se
in ici a con una uescripc ió n funciona l y genera una implementac ió n.
En la Figura 6.19 se muestra una dcsc ripción gcneral de l proccuimi cnto sc sín-
tcs is. Como puede verse, el proceso comienza con un a descripción en lcnguaj e
natural a la que a veces se le mladen uno o más diagramas de ticmpos. o a veces.
con una descripción más formal expresada en un lenguaje de descripc ión de hard-
wa re. como puede ser el YHDL. estándar de IEEE. Con esta uesc ripción. el pri-
mcr paso en e l procedimiento de síntesis consiste e n uesarrollar el diagrama de
estauos y convertirlo en tablas de estauos siguientcs y de saliclas. Despu¿s. se
ime nta reduc ir e l número de estados e liminando los estados redundantes e ide nti-
fic ando los estados equ iva lentes. ya que un número menor de estados implicará la
reducción de biestables. ¡':inalmente. como cada estado puedc expresarse como
250 Principios de diseño digital

una n-upla de valores en los bi estables, es necesario asignar distintas n-uplas a los
di versos estados. Este procedimiento, que se denomina codi fi cación, simpli fica rá
la lógica de entrada y de salida si se realiza adecuadamente. Tras la codificación.
se genera la forma binaria de las ecuaciones de estados siguientes y de salidas.

Se ñ:lle~ •.le entrad"

...

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
D, Q,
FF I

f- 1>
r,
D, Q, I : J':. Señale .. de
salida
FF2
f: SX¡ ..... S
f- 1>
11:5· ..... 0 f---+

,-.. D. Q",

FF,~

' - 1>

(a) Basada en estados

Señales de c ntrJdil

D, Q,
d 1
FF.
1-- ~
l'
D:. Q, I : r; Señales de
sal id:.!
FF!
f Sx¡ + S
1-1>
J¡ "SXJ + O f---+

,---+ D. Qm
FF.
L-- ~
.,0.

(h) Basada en entradas


.- Sciiak ~
de cSI¡tdo

FIGURA 6. 18 Implementaciones de máquinas de estados finitos.


Lógica secuencial 251

Descripción del diseño


o diagrama de tiempos

~
Desarrollo diagrama
de eStados

~
Generar tablas de estados
siguientes y de salida

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
!
Minimizar estados

!
Codificar entradas.
estados y salidas

!
Obtener et'uaciones
de estados siguientes
y de salida
¡
Elegir e\eme~tos de
mcmorta

!
Obtener ecuaciones
de exci tación

¡
Optimizar la
implementación
de la lógica

!
Obtener esquema
lógico y diagramas
de tiemPos

!
Simular el esquema
lógico

¡
Verificar
funcionamiento y
tempori zac ión

FIGURA 6.19 Procedimiento de sfntesis de los modelos de FSM .

El siguiente paso en la síntesis consiste en elegir el tipo de biestables. tenien-


do en consideración el hecho de que cada tipo requ iere diferente cantidad de lógi-
ca para implementar las funciones de estado siguiente. Una vez elegido el tipo de
252 Principios de diseño digital

biestable, se pueden obtener las ecuaciones de exci tación para cada entrada del
biestable, procediéndose a opt imizar la implementación lógica de las ecuac iones
de excitación y de salida, dibujando un circuito lógico que sirva de base a la gene-
ración de un diagrama de tiempos.
La última tarea cons iste en simul ar el ci rcuito lógico, comparando la sa lida
del diagrama de tiempos obten ido y veri ficando si la simul ación se correspon-
de ahora con el com portamiento que se deseaba obtener. En las secciones
siguientes se describirá en detalle este procedimiento de síntesis con un eje m-
plo completo .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
6.9. CAPTURA DEL MODELO FSM
El diseño de lógica secuencial se ini cia con la gene ración de un diagrama de esta-
dos y/o las tabl as de estados siguien tes y de salidas. Ini cia lmente. estos diagra-
mas y tablas deben obtenerse a partir de una descripción en lenguaje natural de l
comportami ento del circu ito secuencial. Desafortunadamente , las descripciones
en lenguaje natural son. a veces, ambiguas e incompletas en muchos casos. debi-
do a que prestan atención excl usivamente a la función principal del circ uito
secuencial. sin enumerar todas las situac iones de su posib le comportamiento. Por
este motivo, las descripciones en lenguaje natural se complementan. a veces . con
diagramas de tiempos. Sin embargo, incluso estos diagramas tle tiempos pueden
resultar incompletos ya que no muestran las respuestas del circ ui to a toclas las
posibles sec uencias de entrada sino só lo las más importantes. Así pues. en
muchos casos es mejor sustitu ir la descripción en lenguaje natural por un a más
preci sa. basada en un lenguaje de descripción de hardware como VHDL , o por
una forma gráfica. como un diagrama de flujo o un diagrama ASM. que se intro-
ducirán en los Capítulos 7 y 8. No obstante. independientcmente del método quc
se utilice, la construcción del modelo FSM es una parte muy creativa del proce-
so de di seño, requiriendo espec iali zación y experienc ia. En esta sección se des-
cribe la construcción del diagrama de estados y de la tabla de estados con un
ejemp lo sencillo.

EJEMPLO 6.4 Contador ascendente/descendente módulo :>


PROBLEMA
Oblcnga el diag rama de eSlados de un eOnlador asee ndenle/desccndc nle módulo 3. El
contador liene dos enlradas: habililación de euenl" (C) y direcc ión de c uenl a (O).
C uanuQ e ::; 1, el circuit o contará en la dirección indicada por D , y parará cuando
C = O. Conlará asce ndentemcnlc cuando O = O, Y descendenleme nle cuando 0= l . El
contador ti ene una sal ida Y. que se activará cuando el con tador alcance el valor '2 ascell-
dente menle. o el valor O si lo hace dcscendentemente. El símbolo del contador se mues-
tra en la Figura 6.20(a).
Lógica secuencial 253

SOLUCIÓN
A panir de es ta descripc ió n. se concluye qu e el contador requi ere a l menoS dos biestables.
ya que debe memori zar los códigos de tres dígitos: O. I y 2. Además. como el contador es
hidireccional , se necesitan dos sec uencias: un a asce ndente y otra desce nden te. La sec uen-
cia ascendente conti ene tres estados: 110 , 11 1 Y 112' avanzando desde 110 a 11 J Y 11 2: y volviendo
a 110 mientras CD = 10. De igual fo rma, cuando la cuenta es descendent e pasa por tres esta-
dos que. en este caso. son d u- di y d:!.. Sin embargo. en la secuencia desce ndente el co nt ador
avanza desde do a ti, y d , Y vuelve a do mi entras CD = 11 . Las secuencias ascendente y des -
ce ndent e se mu estran en la Figura 6. 20( b).

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
A l desarrollar el diagrama de estados del comador, debe tenerse en cuenta la posibili -
dad de que el cont ador cambie de direcc ió n du rante la cuent a. es dec ir. debe permitirse la
posibil idad de que el va lor de la entrada O cambie mientras C = l. Aunque este caso no se
ha mencionado en la descri pción dada anteri o rmente. se puede resolver esta posibilidad
suponi endo qu e e l contado r seg ui rá co ntando en una llueva dirección desde el mismo esta-
do de la otra sec uencia, es decir. si D cambia de O a l , el co ntador iní desde 11; hasta
dv+ " "'oo" para i = O. I ó '2. Este caso ha sido añadido al di ag rama de estados de la Figura
620(c)

CD=1I!

I ,.--... C{)= IO r::---, C/)= IO ~


~---+j.~
· c.:Y
/) -----0-1---1-- ,.
Clm!.wQr
~..,_(_'J_
)=_'_' -18. ('0=11

c -_'~ I "~,,,,k,, ,d"',," ",,,,,,,·


ClL 1IlloUul(l-" L CD= I I

(á} Sfmbulu del co ntadllr Ih) Diagrama de estados parcial


(l'Ul'nt a ¡Iscendcnl (.' y Jcsc:c mlCnIC }
CD= IO

CD=OX CD=OX CJ)=ox

('1)= 10

CD=-OX CD=IIX
CD=I I

(c) Di tlgr.uua de e s t a do~ par¡;iaJ (d ) Diagrama de c~lados fin al


(camhiando la dirección I

FIGURA 6.20 Diagrama de estados de un contador módu to 3.


254 Principios de diseño digital

Sin embargo, el diagrama de estados no estará totalmente completo hasta que se


haya considerado lo que ocurre cuando el contador esté deshabilitado por un cambio en
e desde I hasta O. En este caso. se supone que el contador permanecerá en ese estado
hasta que e valga I de nuevo. Este caso se ha añadido al diagrama de estados de la
Figura 6.20(d), que considera. ahora, todos los posibles modos de funcionamiento del
contador.

Aunque el diagrama de estados obtenido en el Ejemplo 6.4 es completo. es


importante observar que el diagrama no contiene el número mínimo de estados.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Por supuesto, esto es fácil de entender ya que los distintos modos de operación se
distinguen claramente y son fácilmente visibles en el diagrama de estados. Sin
embargo, en diseño digital la claridad no es, usualmente, el objetivo prioritario;
por el contrario, a menudo los factores más importantes son el coste y las presta-
ciones y, desde esta perspectiva, es necesario considerar la minimización del
número de estados como parte del proceso de diseño.

6.10. MINIMIZACiÓN DE ESTADOS


El objetivo de la minimización de estados es la red ucción del número de esta-
dos en un circuito secue ncial de modo que el circui to requiera menos biestables,
lo que reduc irá, además , el coste de la implementación. Sin embargo, una reduc-
ción de estados no reducirá el número de biestables necesarios a no ser que el
número de estados se reduzca por debajo del actual nivel de potencia de 2. Por
ejemplo, para un circuito secuencial con m estados se necesitan r IOp2ml biesta-
bles. Como reduciendo el número de estados en /'" se req ui eren I logo(m- /',,) l
biestables, /'" debe ser un número tal que rlogom.l sea mayor que r logo(IIi'-/',,)l en
al menos l. - -
Por ejemplo, considérese un circui to con seis estados. Reduciendo el número
de estados a cinco no se reducirá el número de biestables, porque r log26l =
r log2Sl = 3. Por otra parte, reduciendo el número de estados a cuatro se reducirá
el número de biestables en 1, porque r log o4l = 2.
Una segunda ventaja de la reducción-de estados es que se puede reducir el
número de puertas y el número de entradas por puerta necesarias para implemen-
tar las funciones de estados siguientes y de salida. La ventaja de tal reducción
radica en el hecho de que las puertas con menos entradas son más rápidas; decre-
ciendo el retardo del circuito secuencial, se puede mejorar la frecuencia de reloj
del circuito y, por tanto, mejorar sus prestaciones globales.
En genera l, la minimización de estados se basa en el concepto de equivalen-
cia funcional de máquinas de estados finitos y, por extensión , en el de equiva-
lencia de sus estados . Por ejemplo, se dirá que dos máquinas de estados finitos son
equivalentes si producen la misma secuencia de símbolos de salida para cada
secuencia de símbolos de entrada. En algunos casos, máquinas de estados tinitos
equivalentes pueden tener di stinto número de estados y pueden, también, realizar
transiciones por diferentes secuencias de estados para cada secuencia de entrada;
Lógica secuencial 255

no obstante, se consideran funcionalmente equivalentes mientras que produzcan


la misma secuencia de salidas.
De lo dicho anteriormente, puede concluirse que una máquina de estados fini-
tos con gran número de estados tendrá algunos estados equivalentes. En casos
como éste, pues, se podrá reducir el número de estados de la máquina asociando
aquellos estados que sean equivalentes.
La equivalencia de estados puede definirse sobre la base de los valores de las
salidas de los estados y de los estados siguientes. Más fonna lmen te, dos estados
s . y Sk en una máquina de estados finitos son equivalentes, s · '" sk' si y sólo si las

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
, . d' . . 1
sigUIentes con IClones son Ciertas:
l. Ambos estados s. y Sk producen el mismo símbolo de salida para cada
símbolo de entrada i: es decir, h(s .,i) = h(Sk,i).
2. Ambos estados tienen estados "ig1uientes equivalentes para cada símbolo
de entrada i: es decir,fCs/) "' .f(sk,i) .
De esta definición de equ ivalencia de estados se deduce un procedimiento
sencillo para obtener una máquina de estados tinitos con el mínimo númcro de
estados. El procedimiento requiere particionar todos los estados de una FSM en
clases de eq ui valencia y construir la FSM con mínimos estados, en la que cada
estado represente una clase de equi valencia.
En la práctica, este procedimiento consta de dos pasos. En el primero, se· com-
paran los símbolos de salida para cada estado y para cada símbolo de entrada. El
objetivo de esta comparación es combinar estados en grupos, de manera que todos
los estados del mi mo grupo generen e l mismo símbolo de salida para cada sím-
bolo de entrada. En el segundo paso, se detennina el siguiente estado para cada
estado del grupo y para cada símbolo de entrada . Así, se pueden particionar los
grupos en subgrupos de modo que todos los estados de un subgrupo tengan sus
estados siguientes en el mi smo grupo para cada símbolo de entrada.
En algunos casos. todos los estados que están en el mi smo subgrupo después
de la partición no tienen sus estados siguientes en el mi smo subgrupo, aunque sí
en el mismo grupo. En tales casos, el segundo paso debe repetirse hasta que no
sean necesarias particiones adicionales. Así pues. en teoría, cada subgrupo repre-
sentará una clase de eq ui valencia idéntica a un estado de la máquina mínima de
estados fini tos. En el siguiente ejemplo se describe este procedimiento con el con-
tador módulo 3 del Ejemplo 6.4.

EJEMPLO 6.5 Reducción de estados


PROBLEMA

Oblenga la I11Ciq uina de eSlados finilos mínima para el comador módulo 3.


SOLUCIÓN
Como se mucslra en la Figura 6.20(c), el conlador módulo 3 tiene seis estados. En la Figura
6.2 1(a) se ha converl ido eSle diagrama de eswdos en una tabla de eSlados·siguientes/sali·
das. Con la infonnación proporcionada por eSla labia. se puede aplicar ahora el procedi-
256 Princ ipi os de di se ño digita l

miento de sc rito anteriormente al co njunto de estados de la Figura 6.21(b). Oh~ é rv(' s e quc
s~ e mpieza (un el (o njul1t o de todo s 10:-' es tados y se (ktermini.tn los val ore s de salida para
cada co mbinac ión dc los va lores de en trada. Para los \'a lores de entrada CD :;:OX. 10, 11. se
, abe que el valor de la señal de sa lida ser" Y = O. O. I ó (). D. O ó O. l. O. Ahura. se pueden
crea r los tre s grupos siguientes: G n :;: {IIO'''o}' G l :;: {II I,di} Y C 2 :;: { 1/ 2,d2 }, De spués. s\.' de he
dete rm inar e l e stado siguiente para \.' ad ~l estado de l grupo y pa ra cada conjunlO de \'a lort.'s
de cn triJda. C omo puede ve rse, para cada \ ',11 0 1' de las sl! ña le s de e ntrada. los e stados
sigu ie nt es a cada estado del grupo pe rt e nece n al mismo grupo, Por lo tanto, no es nCCL'sa-
rio seg uir parti c ionando, COIll O cada grupo represe nta una clase de estados equi va lcnt\.'s, se
pueden renombrar los gru pos G{). G I Y G , CO IllO estados so' SI y.\') e n la máquina de es tad os

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
finitos mínima . La tahla de es tado s siguientes/salidas para esta FSM mínima se prese nta e n
la Figura 6.21(c).

ESTADO ESTADO SIGUIHlTE


ACTUAL CD=OX CD = 10 CO= 11

liD ",lO ",/O d ,/1


",
1/,
11/0
1I.,/0
1/,/0
1/;/ 1
{r¡jO
d, /lJ
(~ ,r;¡o I/,JO ,"'1
d, d,lO 11,/0 (r.¡O
d1 d,/O I/;¡ I d,lO
la ) Tabla d\,; c~tado:-. inicial

( l/o ' lIl' 11 ~. do· di' d, )


Valorc...
CD = OX O O O O O O
de !<latida
10 O O I O () I
II I O O I O O

(XII
I
GI) :;:' (1I",d,,}
()(XI

+
G ! :;:. (1I I, d ; )
0 10 \

G~:::: (11 .. ti . )

CD = OX G()G{l GoGo GflGO E ... l;IU("


10 G,G, G,G, G,G, ~ig u il'J\ I l':-'
II G2G2 G].G 2 G'lG 2

ESTADO ESTADO SIGUIENTE


ACTUAL CD=OX CD= 10 CD= 11

·\'0 .IJO s,lO s ~/ l


.\', .\"/0 s,/O s;/O
.\' ~ s,/O s;;/I s,lO

FIGURA 6.2 1 Reducción de estados para el contado r módulo 3.


Lógica secuencial 257

Las clases de equivalencia de una máq uina de estados fini tos pueden ubtener-
se también construyendo una tabla de implicación. que permite eliminar estados
no equivalentes e indicar los estados equivale ntes. Como muestra la Figura 6.22.
una tabla de implicación es una tabla triangular en la que cada celda representa un
par de estados concreto. Obsérvese que las filas han sido marcadas con todos los
estados salvo el primero, mientras que las columnas se han etiquetado con todos
los estados salvo el último. De esta manera. se asegura que cada pareja de estados
tendrá asignada una celda en la tabla.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
x
X < S;:.5(,>
<S ) 'SJ>
<SII' S,¡ >

'\'0
I
FIGURA 6.22 Tabla de implicación ,

El procedintiento para obtener clases de equivalencia se obtiene de la defini-


ción de equivalencia. En el primer paso se introduce una x para cada par de esta-
dos que difieran en sus valores de salida en, al menos, un valor de entrada. De este
modo, una pareja de estados que no sean equivalentes pueden eliminarse por esta
causa, como ocurre con las parejas <S I,s3> y <SO,S4> en la Figura 6.22. Para las
parejas de estados restantes. se introduce en cada entrada la pareja de estados
siguientes que podrían ser equivalentes si la pareja de estados representada en la
entrada también puede serlo. En general, se dice que la equivalencia de l par de
estados siguientes es implicada, lo que da nombre a la tabla de implicación. Por
ejemplo, la equivalencia de la pareja <S1,s5> de la Figura 6.22 implica la equiva-
lencia de <SJ,S4>' Iguahnente. la equivalencia de la pareja <s3, s5> implica la equi-
valencia de <s2,s6> y <SO,S4> de ac uerdo con la condición 2 de la definición de
equivalencia.
En el segundo paso se puede inspeccionar la tabla desde arriba hacia abajo de
celda en celda, y de izquierda a derec ha de columna en columna, y se intTOduce
una x en aquellas celdas que tengan, al menos. una pareja de estados no equiva-
lentes. Este segundo paso puede repetirse varias veces. ya que la no equivalencia
de un par de estados puede originar la no equivalencia de otro par de estados. y
así sucesivamente. Si no se introducen nuevas x al reinspeccionar completamen-
258 Principios de diseño digital

te la tabla, se habrán obtenido ya todas las parejas de estados no equivalentes, lo


que significará que todas las celdas no marcadas serán parejas equivalentes.
En el tercer paso, se forman las clases de equivalencia utili:¡:aodo la propiedad
transitiva de la relación de equivalencia, que establece que si s; '" s y s . '" sk' enton-
ces s; '" sk' Así pues, examinando la tabla se pueden agrupar t¿do/ los estados
equivalentes en clases. En el siguiente ejemplo se describe este procedimiento.

EJEMPLO 6.6 Reducción de estados con una tabla de implicación

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
PROBLEMA

Obtenga e l mínimo número de estados para la máquina de e stados finitos descrita por la
tabla de la Figura 6.23(al. [Obsérvese que esta tabla es una ligera modificación de la tabla
de la Figura 6.21 (al .]
SOLUCiÓN

Primero, es necesario crear la tabla de implicación, como indica la Figura 6.23(bl. Después.
se tachan todas las celdas que representan parejas de estados con diferente salida en. al
menos, un conj unto de va lores de e ntrada , Eso deja, como únicas parejas para examen pos-
terior de equiva lencia entre estados siguientes, a </lo,do>' <lIl'd]> y < u 2,d2>. La pareja
<uo,do> tiene los mismos estados siguientes para cualquier conj unto de valores de entrada.
Por lo tanto. son equivalentes y no implican la equivalencia de ningún e stado siguiente. La
pareja <l/l'd 1> requiere que los estados l/o y d 2 sean equivalentes, así que se introduce
</tO'd2> e n la celda que represc-nta a <ll],d]>. Los estados u2 y d.1. son equivalentes. ya que
tienen los mi smos estados siguientes para cada conjunto de valores de entrada.
Posteriormente, se inspecciona la tabla y se inserta una x en la celda que representa a
</l1,d]>. ya que 1/0 y d no son equ ivalentes. lo que implica que 11 y d] lampoco lo sean .
2 1
Con esto tlnaliza el segundo paso del procedimiento .
En e l terce r paso es necesario agrupar todos los estado s equivalentes en clases de equi-
valencia. En el ejemplo. sólo Uo y do, Y 1/ 2 Y d 2 son equ ivalentes.
Así pues. la máquina de es tados finitos mínima llega a tener cuatro estad os. representa-
dos por las cuatro clases de equivalencia siguientes: {"o,do), {",}. {", }. {" ,.d, }.

6.11. CODIFICACiÓN DE ESTADOS


En cualquier máquina de estados finitos , el coste y el retardo inherentes a la lógi -
ca de entrada y salida será mayor en función de qué valores booleanos se asignen
a los estados simbóli cos. Por ejemplo, una FSM con cuatro estados, so' sI' s2 Y s3
puede implementarse con dos biestables que contengan los valores 00, al , la ó
11. En la práctica, hay normalmente más de n' codificaciones para ti estados dife-
rentes, ya que se pueden utilizar más de logryll bits para codificar 11 estados. Por
este motivo, el recuento manual de todas estas codificac iones, así como la esti-
mación del coste y del retardo de las lógicas de entrada y salida, puede ser tedio-
so incluso con un número pequeño de estados. Para ev itar este problema, los dise-
ñadores utilizan diversas estrategias y heurísticas en la asignación de estados. En
L ógica secuencial 259

el resto de esta sección se exponen las tres estrategias más comúnmente utili za-
das : mínimo cambio de bits, prioridad de adyacenci a y cod ifi cac ión del uno
caliente.

ESTADO ESTADO SIGUIENTElSALlDA


ACTUAL co=ox co: 10 co: 11
d,1I
,f;/O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
,('10
d.,l l
cr;;0
0,/0
(a) Tabla de estado!> siguientes y de salidas

(b) Tabla de ímplicación

FIGURA 6.23 Reducción de estados con tabla de implicación.

La estrategia mínimo cambio de bits (minimulIl bit change) asigna valores


booleanos a los estados, de forma que el número total de cambios de bits en todas
las transiciones se minimi za. En otras palabras, si cada arco en el diagrama de
estados tiene un peso igual al número de bits distintos entre las codi ficaciones de
origen y destino, la codificación óptima será aquélla que minimice la suma de
todos estos pesos.
En la Figura 6.24(a) y (b) se muestran dos codificac iones para el mi smo dia-
grama de estados. La codificación directa para este contador binario tendrá dos
arcos con peso 1 y dos arcos con peso 2, con un peso total de 6. Por otra pal1e, en
la cod ificación de mínimo cambio de bits. los cuatro arcos tendrán peso lo En la
segunda codificación, el peso total es mínimo, ya que la codificación entre dos
estados difiere sólo en un bit. Esta estrategia de minimo cambio de bits se basa en
la premisa de que en una implementación a dos ni veles se necesitan, al menos ,
una puel1a AND adicional y una entrada más a la puerta OR para establecer o
poner a cero el biestable en cada cambio de bit.
260 Principios de diseño digital

TABLA 6.4 Veinticuatro codificadores de


cuatro estados

NÚMERO DE
CODIFICACiÓN s" 5, S, S,

00 01 10 11
2 00 01 11 10
3 00 10 01 1I
4 00 10 11 01

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
5 00 11 00 10
6 00 1I 10 01
7 01 00 10 I1
8 01 00 11 10
9 01 10 00 I1
10 01 10 1I 00
11 01 I1 00 10
12 01 11 00 10
13 10 00 01 11
14 10 00 11 01
15 10 01 00 11
16 10 01 11 00
17 10 11 00 01
18 10 11 01 00
19 11 00 01 10
20 11 00 10 01
21 11 01 00 ID
22 11 01 10 00
23 11 10 00 01
24 I1 10 01 00

00

11

la) CoJilk:Ki ón directa (h ) Codilit:lI:ioll de mínimo c:.unhl O dc bit

FIGURA 6.24 Dos codificaciones distintas para un contador binario de 2 bits.

La segunda estrategia de asignación de estados, la estrategia de prioridad en


adyacencia. cons iste en asignar codificaciones adyacentes, que sólo dificran en
un bit. a todos los estados que tengan una fuente, destino o salida comunes. En
este procedimiento se da la mayor prioridad a los estados q ue tiencn el mismo
estado siguiente para un valor dado de entrada. La razón de esta prioridad deriva
Lógica secuencial 261

del hecho de que durante la minimización lógica aparecerá la misma codificación


de estado siguiente en dos celdas adyacentes del mapa de Karnaugh, en cuyo caso
esta estrategia llevará a una reducc ión de un literal por cada l en la codificación
del estado siguiente. La segunda prioridad se da a los estados siguientes del
mi smo estado, basándose en el hecho de que también aparecen adyacentes en el
mapa de Karnaugh durante la minimi zación . Obsérvese que esto ocurrirá sólo si
los valores de entrada que originan la transición difi eren s6lo en un bit.
Finalmente, la tercera prioridad se da a los estados que tienen el mismo valor de
salida para los mismos va lores de entrada, en base a que codificaciones adyacen-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
tes de estados crearán un l-cubo en el mapa de Karnaugh durante la minimización
l6gica de las se ñales de sa lida.
La Figura 6.25(a) muestra un diagrama de cuatro estados. Obsérvese que los
estados s I y S2 sati sfacen la condición de la primera prioridad; esto es. la entrada
O lleva a ambos estados a 53' Además, sati sfacen la condición de la segunda prio-
ridad, ya que ambos son estados siguientes de so' En relación a la tercera priori-
dad, los estados So y SI tienen e l mi smo valor de salida, O, para el mi smo valor de
entrada, O, y los estados 52 y 53 satisfacen idéntica condición. Estas prioridades se
li stan en la Figura 6.25(b). y la Figura 6.25(c) muestra una posible codificación
que sati sface las di stintas prioridades de adyacencia.

Prioridad 1: Cf¡.s2' ~0
Priorid"d 2: el',"f 1)
Pri o ridad~ : ('\·o"\', ).(Sl,,I, ) OI .~
1 ~
~
oo~
(a) Diagrama ue CSlados inid ,,1 In) Prioridad en las adyacenci as (el Posible. coditk....cI6n

FIGURA 6.25 Codificaciones basadas en fa prioridad en adyacencia.

La tercera estrategia para la asignación de estados, codificación del uno


caliente (hOI one encoding). utili za codificación redundante, de manera que a
cada estado se le asigna un biestable. En otras palabras, cada estado se di stingue
por su propio biestable, que tendrá valor 1 mientras que los demás tendrán valor
O. En la práctica. esto significa que un biestable se pondrá al, Y otro a O. en cada
transición de estado a estado. El nombre de esta codifi cación de debe a que el
valor 1 recuerda a una patata caliente que pasa de una mano a otra. La limitación
obvia de la codi fi caci6n del uno caliente es que funciona s6lo en una máquina de
estados l'initos con un pequeño número de estados, ya que el número de biestables
resulta excesivo a medida que el número de estados crece.
En general, la mejor estrategia para coditicar estados es determinar las posi-
ble, opciones y, después. esti mar el coste y el retardo de la lógica de entrada y
262 Principios de diseño digital

salida para cada tipo de codificación. En el resto de esta sección, se describe este
procedimiento uti]jzando el ejemplo del contador módulo 3.

EJEMPLO 6.7 Codificación de estados en el contador módulo 3.


PROBLEMA
Dado el contador ascendente/descendente módulo 3 definido en la tabla ITÚnima de estados
siguientes/salidas de la Figura 6.21 (c), obtenga la codificación que minimice el coste y el

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
retardo de la lógica del contador.
SOLUCiÓN
Como puede verse en la tabla de estados siguientes/salidas, este contador tiene sólo tres
estados, lo que significa que cualquier codificación produce dos parejas de estados con
codificaciones adyacentes y un par de estados cuyas codificaciones difieren en dos bits.
Además, como se pueden codificar cuatro estados con dos variables, Q, y Qo' existe una
combinación de valores redundante. Por lo tanto, puede omitirse la combinación Q,Qo; 11 ,
ya que esto permitiría reducir el número de unos durante la minimización de la lógica. Así
pues, una posible codificación es la A, mostrada en la Figura 6.26. Es la codificación que
se obtiene si se sigue la estrategia de mínimo cambio de bit.

ESTADOS
CODIFICACIÓN A CODIFICACIÓN B CODIFICACIÓN el
0,00 0,00 0.0,00
oo o1 oo 1
o1 oo 010
1 o 1 o 1 oo

FIGURA 6.26 Posibles codificaciones de estados para el contador módulo 3.

Si se utiliza la estrategia de prioridad en adyacencia, se llega a que no hay parejas de


estados que satisfagan ni la primera ni la segunda reglas de prioridad. De acuerdo con la ter-
cera regla de prioridad, se obtiene que los estados So y s" Y s, Y52' tendrían codificaciones
adyacentes. una opción ya satisfecha con la codificación A. En este sencillo problema se
podría utilizar. también. una estrategia que simplifique la decodificación de estados, asig-
nando las combinaciones Q,Qo ; 01 Y Q,Qo ; 10 a los estados So y s2' que son los únicos
con Y;l. Esta opción, codificación B, se muestra en la Figura 6.26. Su ventaja principal es
que reduce el número de entradas a la puerta ANO en la implementación de la lógica de
salida. Finalmente, una tercera estrategia es utilizar la codificación del uno caliente, que
proporciona la codificación C de la Figura 6.26.
Hasta ahora, las codificaciones A. B y C son posibles codificaciones candidatas. Para
evaluar las ventajas de cada una de ellas, se debe estimar el coste y el retardo de sus res-
pectivas implementaciones lógicas de entrada y salida. Con este fin, es necesario obtener
ecuaciones de excitación y de salida y estimar el coste y el retardo de su implementación
con dos ni veles de puertas ANO. Para simplificar esta estimación, se supone que los valo-
res de cada variable y sus complementos están disponibles sin coste ni retardo. Esta supo-
sición se satisface siempre para las variables de los biestables y, también, es cierta para las
Lógica secuencial 263

variables de. entrada ya que se requieren inversores dobles para incrementar su conectivi-
dad como señales de entrada. Los inversores dob les en la entrada añaden un coste y un
retardo constantes a la estimación, por lo que pueden omitirse, ya que no afectan a la COI11-
paración entre las dos implementaciones alternativas.
En la Figura 6.27 se muestra la estimación del coste y el retardo de la coditicación A.
En primer lugar, en las Figuras 6.27(a) y 6.27(b) se presentan los mapas de Karnaugh para
las func iones de estado siguiente y de salida, mientras que las ecuaciones de excitación y
de salida obtenidas de los mapas de Karnaugh se dan en la Figura 6.27(c). Finlmente. cada
una de estas ecuaciones se ha implementado con redes lógicas de dos ni veles de puertas
NAND. Como puede verse, el coste lOtal será igual a coste(QI) + coste(Q2) + coste(Y) ; 24

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
+ 24 + 18 ; 66, Yel máximo retardo de entrada será igual a 4.0 ns, mientras que e l retardo
de salida será igual a 3.6 ns.

CD CD
Q,Qu 00 01 11 10 Q,Qu 00 01 11 10
,
(lO O O O O t O
-
o . I 00 O o t o
01 O I O I O O I O 01 O O O O
,
11 !x X X X X x ,' 'x X 11 X X X X
" ,
10 t O I O O t O O 10 O O O I
--
QI(slguiente). Q,} s ig uicnte) )'

(a) Mapü de" estados sigu ientes eh) Mapa de salida

Qr(siguiente) = Qle + º oCD' +Q' IQ'uCD


Q()\ sigu ientc} = QO<~" + Ql e D + Q' IQ'oCD'
y= Q ,CD' + Q',Q'oCD

le) Ecuaciones de excitación y salida

>
,8 y
1.4
2,2

C OMe (Q.) = 24 COSfe lQo) =U COSII! (Y) = 18


Rt'lfInloI Q I ) ='¡'O Rewnlo(Qo)=.J,O Re,(lrd()~Y) = 3.6

ld) Estimación de coste y retardo

FIGURA 6.27 Estimación de coste y retardo para la codificación A.

En la Figura 6.28 se obtiene una estimación similar con la codificaci ón B. Corno se


esperaba de esta codificación. el coste y el retardo de la lógica de salida se ha mejorado lige-
ramente, ya que el coste total es coste(QI) + cOSle(Q,) + coste( Y); 24 + 24 + 16; 64, Y el
máxi mo retardo de la lógica de entrada es de 4,0 ns, mientras que el retardo de salida es de
3,2 ns.
264 Principios de dise ño di gital

CD CD
QtQo 00 01 11 10 QtQo 00 01 11 10
(Xl O O O O O 1 1 O 00 O O O O

01 () 1 O 1 1 O () () 01 O O 1 O

11 X X XX X X X X 11 X X X X

10 1 O 1 O O O O 1 10 O O O 1
Q I (S lg UI Cllh!)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) Mapa de eSlados sig lllc llIcs tb) Mapa de salida

QI( siguien tc ) = Ole' + QuCD+Q' Iº \ ¡ClJ'


Qo(siguicnle) = Q()C' + Oleo' + Q' IQ'neD
1' =Q(,cD+ QleD'

(e) Ecuaciones de excitación y salida

~
.8 Y
t.4
1.8

CO.l'/e(QI )= 24 C().~ I(I tQ(I) '" 2-1 Cm /e ( )') = 16


Relllrdo (01) = 4.0 RIf/(ml" (Qo) =4.0 Retlln/o (n = 3. 1
(d) Estimación de coste )' retardo

FIGURA 6.28 Estimación de coste y retardo para la codificación B.

La estimación de la codificación C se muestra en la Figura 6.29. Obsérvese que el coste


y el retardo de cada ecuación de excitación se han redu cido, pero el coste total es mu cho
mayor qu e an tes. principalmente po rque la implementación tiene tres biestables en lugar de
dos. Como resultado, e l coste total es igual a coste(Qo) + coste(Qt) + coste(Q2) + coste(Y)
= 22 + 22 + 22 + 16 = 82. aunque el máximo retardo lógico de entrada es de sólo 3.6 ns y
e l retardo de salida es idéntico al de la codificación B.
La co nclusión que se obt iene de esta comparación es que la codificación e ge nera la
implementación más rápida y costosa, mientras que la codilicac ión B genera una imple-
mentación que es la menos costosa de las tres alternati vas pero. también, más Icnt a qu e In
codili cación C. Finalmente . la codHicación A ge nera una implementación mu y similar. y
sólo insig nifi cantemente inferior, a la codifi cación B.

En general , es muy difícil estimar el impacto de cada codificación, salvo si se


hace como en el Ejemplo 6.7, generando una implementación para cada codifica-
ción y comparándolas en coste, retardo y otros parámetros. En el resto de este
capítulo se utili zará la codificac ión A para la implementación de l contador módu-
lo 3, ya que es la más común y fácil de entender.
Lógica secuencial 265

CD el)
Q, Q,Q
"
00 0 1 I I 10 Q, Q,Q)" 00 ni II lO
1)(JO X X X X X X X X X X X X 000 X X X X

()() I (1 (1 I (1 (1 I I O (1 O I O 00 I o o 1 (1

OII X X X X X X X X X X X X oII X X X X

)10 (1 1 (1 O I O (1 O I I O O OlO () () o (1

()() I (1 O I O O (1 I (1 O (1 1 100 o (1 o 1

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
01 X X X X X X X X X X X X 101 X X X X

II X X X X X X X X X X X X I II X X X X

lO X X X X X X X X X X X X 110 X X X X

)'

(al Tabla de (,· ...Iados ~¡guie nl c~ (bl Tabla de ..al ida

Q~ ( s ig ll¡ l..'nte) = º :.C + º (lCD + ºleD'


Q,(siguicnlc ) =- Q,e' + Q: CD + Ql. :/)'
QIl(~ i f!. u icntc) = Que' + Q ~Cf)' + Q,eD
)' = QuCO + Q2CIJ'

(e) Ec uadonc:. dI.' c.-:ci taci6n r s.. licJ:.

~
Q.,:I ~ igLLiclltc I .8
(1 ¡(sigu icIlIC ) 1,4 )'
Qo(siguicntc) 1.8

Cn,I'/e lOu' =- Cm/(' (Q,) = Coste I Q::) = 22 Costl.' ( Y) = 16


RetflnllJ { Qo) = Ni'lardo (Q., =- Retardo (Ql' =- 3.6 Rf'wrdo ( Yl =- 3.2

(d) Esti n1:lción de coste y retardo

FIGURA 6.29 Estimación de coste y retardo para la codificación C.

6.12. ELECCiÓN DE LOS ELEMENTOS DE MEMORIA


Después de haber completado el proceso de mjnimización y codificac ión de esta-
dos, se debe elegir el tipo adecuado de biestable para la implementaci ón de la
máquina de estados fi nitos. Como ind ican las Tablas 6. 1 y 6.2, existen cuatro tipos
de biestables. En general. los biestables T son una excelente elección para ci rcui-
tos secuenc iales tipo contador. donde los biestables deben conmutar de O a l y
volver a hacerlo de l a O con gran frecuencia. Los biestables D deben utilizarse,
nOIlllalmente. en aplicaciones donde la información de entrada debe almacenarse
durante algún tiempo para su uso posterior. En este sentido, los biestables D se
266 Principios de diseño digital

conciben para almacenamiento temporal o para accesos a la infonnac ión desde


terminales de entrada/salida externos. El biestable SR se utili za más en situacio-
nes donde diversas señales ponen a 1 o O los biestables. Fi nalmente. el biestable
JK, que es el más complejo, se utili za siempre que sea necesario combinar las
prestaciones de un biestable T y un biestable SR.
De lo dicho ante ri ormente, se deduce que los bi estables SR y JK deberían
utilizarse más. Sin embargo, aunque tienden a reducir el coste de la lógica de
entrada, requ ieren el doble de conexiones en sus entradas que los bi estab les T
y D. En general, como los biestabl es T y D prec isan de un menor número de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
conexiones, se adaptan mejor a las implementaciones VLSI. Para co mparar la
eficiencia total de los diferente s biestables , se puede obtener la lógica de
entrada para e l contador módulo 3 utili zando cada uno de los cuatro tipos de
biestables.

EJEMPLO 6.8
PROBLEMA
Dado el contador módul o 3 con la cod ificac ión A, como se describe e n la Figura 6.26,
seleccione el tipo de biestable que minimice el coste y/o el reta rdo de la lógica de
entrada.
SOLUCIÓN
Para realizar el problema, se comienza con la tabla de estados siguientes mostrada en la
Figura 6. 27(a), que se ha repetido e n la Figura 6.30(a). Después. para obtener las ecua -
ciones de excitación de los distintos tipos de biestables, se utili zan las tablas de exci l"-
ción de los cuatro biestables que se muestran en la Figura 6.30(b). A continuación. 'c
tomará cada pareja de eslados presente y siguiente del mapa de estados siguientes y se
sustituirán sus valores de estado siguiente por los valores de entrada requeridos en la tabla
de excitación. De esta forma, se pueden crear mapas de entrada para los biestables SR,
JK, T Y D. que se muestran en las Figuras 6.30(c), (d). (e) y (l), respecti va mente.
Obsérvese que. realmente. los mapas de entrada combinan cuatro mapas en el caso de
biestables SR y JK, Y dos mapas en el caso de biestables T y D. A partir de estos mapas
de entrada se pueden obtener expresiones mínimas para cada entrada del biestable. como
se indica en la parte inferior de cada mapa. con el coste y retardo estimados para cada
expresión. La estimación del coste y el retardo no incluye los inversores de entrada. ni el
coste ni el retardo de los biestables.
De estas estimaciones se deduce que una implementación con biestables JK tiene míni-
mo coste y bajo retardo, principalmente porque, en este caso, se puede utili zar una puerta
AOI para la implementación de la lógica de entrada de JI y Jo' en lugar de dos ni veles de
puertas NAND. No obstante, en muchos casos en los que hay que implementar circuitos
secuenciales con muchos estados, los biestables JK no presentan grandes ventajas sobre
otros tipos de biestables. Se puede ver en este ejemplo que los biestables T, D Y SR gene·
ran implementaciones con costes y retardos similares.
Lóg ica sec uencial 267

el)
l" no 111 11 111
(~I 11 11 11 11 1 11 11 1

01 (J 1 (J 1 11 11 1 11

11 X X X X X !\ )( X

111 1 (J 1 (J (J 1 11 11

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
la ) Tanl.l de e, taJ \l~ ,igUI~' llll' " para
1:1~·uJ i fi c :Il'j¡in.-\

Q (presente) Q (siguiente) S R J K T O

() O O X O X O O
O I I O I X I I
1 () O I X I I ()
I I X [) X O O I

('Il

IIU UI 11 lO
"
UO (J X o X Il X Il X l Il (J X o X l 11

01 11 X X 1) 11 X X 11 11 X o l l o o l

11 X X X X X X X X X X X X X X X X

111 X (J o x x (J ox (J l l 11 tl l o X

s, = QoClJ' + Q' ,Q"IC/J [COS IC = 18. n:tardo = 3,6 1


RI =Q,l = l Q ' 1 + e l' !l'U" IC = .... Tcl:lrd o = 1.41
SII= Q ¡CD + (!'IQ'IICD' !coste= IS,n:tanlo=J,6]
RII = Quc = (Q'o + C)' ll'lJ~tc = 4, reta rd o = 1.4 J

fe) Imp1cmental' 1l1ll con bic ), l ah l c ~ SR

FIGURA 6.30 Implementación del contador módulo 3 con varios tipos de biestables.
268 Principios de diseño digital

CD
n[) 01 11 lO
"(JO X X X 1 X o 1 X
" " " " X X
" X

01 O X X 11

X X X X
"
X
X

X
X

X X
" "xX X X X
X 1

X
1 X

X
X

X X
1

" X o 11 X 1
I LI X O
" X X I X X 1 11 X

JI =QoCO' + Q'IJCD + le + QIP + Q'oO' )' l2. rI!lfl rdl l=2AI

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1C\ , ~t ('=

K¡ =c ((,OSIl.'=n, rClard o = 01
J I = OICD' + Q'leD' = re' + O ID ' + OID')' IC(l~ IC = 11. n:tard o =2.-t1

""II=C [co~te '" O, retardo =0 1

(d) lrn pll'1ll1!1llac i61l con bic:aahh:s JK

CD CD
Q,Q, 00
O O
'" 11 10
"
00 01 11 111

O
" O I

11
O
" 1 nI) 11 11

O ,
O

O 1
" I O O 1

01
" " O I 1 1 01
" 11 1
"
X X X X X X X X I XX X X
"10 11 O 1 1 I
" X X

1 () 1 1
X X

"" O lO
" " 1 O
"
TI =Q:e + Q'oCD + QlrlJ' [tll~\(: =22. retardo =3.61 D I '"" Qle + QflCO' + Q'I Q'iICO Ico~ ll' =1..1. retard o = -I.(l ]
1;1 =QpC + Q/'O + Q' ¡C/J' (coste ", 21. re ta rdo =3.nl 1)11 =Qll e' + QICD + Q' IQ'n eD' I CO~ I C =24, rCl ard lJ =H )l
(e) Irnpkmcntaciólll..:on bi estables T (O Implemen tación COn bi c :, lab l c~ O

FIGURA 6.30 Continuación.

6.13. OPTIMIZACiÓN Y TEMPORIZACiÓN


El siguiente y último paso en una síntesis lógica secuenc ial debe consistir en di . e-
ñar la lógica de entrada y salida con los componentes de una biblioteca dada. En
el caso del contador módulo 3, ya se han uti lizado puertas AOI al ca lcu lar el retar-
do y el coste de la implementac ión con bie stables JK.
Una vez que la traslación a la tecnología se ha reali zado, se puede dibujar el
esquema para visualizar todas las puertas y conexiones del contador. Como eje m-
plo, en la Figura 6.3 1 se muestra el esq uema lógico del contador módulo 3 con la
implementación JK. (La lóg ica de salida se ha obtenido en la Figu ra 6.27 (c). ) En
esta figura se observa que se utili zan inversores dobles en la entrada para sumi-
nistrar más corriente, lo que decre menta el retardo causado por la carga y descar-
ga de las capacidades de las líneas. Obsérvese que este esque ma lóg ico se imple-
mentará realmente, por lo que tendrá que transformarse en una li sta de compo-
Lógica secuencial 269

nentes expresados en un lenguaje de descripción hardware antes de que sea uti li-
zado por un programa software de simulación y test.
El paso tinal en el proceso de síntes is secuencial consiste en obtener un dia-
grama de tiempos del circuito, y los retardos de las puertas y biestables. El dia-
grama de tiempos del contador módulo 3 se muestra en la Figura 6.32. Los retar-
dos en el diagrama de tiempos corresponden a los retardos dados en la Figura
6.3 1(b). En la Figura 6.32 se habili ta el contador módulo 3 en lo' pero no cambia
de estado hasta el flanco de subida de la señal C/k. Alcanza el estado SI (Q 1Qo = 0 1)
en 11 + 4.0 ns. Tras el segundo flanco de subida, alcanza el estado siQIQo = 10)
en 1, + 4,0 ns . La señal de salida Y vale I en 1, + 7,6 ns , ya que Y debe valer I en

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
s? si CD = 10. Cuando, en el siguiente flanco de subida, el contador módulo 3
alcanza el estado SO(QIQO = 00). la salida Yvuelve a O en 13 + 7,6 ns. Cuando D
se desactiva en /4' la salida Y vale I de nuevo en /4 + 5,6 ns, ya que la salida Y
dcbe ser I en el estado '\'0 si CD = 11 . Después, el contador módulo 3 alcanza el
estado s2(QI Qo = 10) en 15 + 4,0 ns e Yv uelve a O en 15 + 7,6 ns, ya que Y debe ser
O en s2 si CD = 11. Finalmen!e, después de 16 + 4,0 ns el contador módulo 3 alcan-
za el estado sl(Q IQO= 0 1). Este es el último estado que se indica en el diagrama
de tiempos .

e f)

~ 17 ~ 17
Q' ,
~f ~r7 Q,
---.,

L~ :>J' 4.0
Q, e-

K , Q' , -1-

1.8

I
-g2.2
1.4 y

-~
L RETARDO DE ENTRADNSAUDA
Jo Qo - 1- CAIANO
r > 4.0
e,D a e/k 4,4
Q'o
Ko Q'o - e/k a Y 7,6
Qo
e, D a Y 5,6
CIk a e /k 6,4
C'Ik

(a) Esquema lógico (h) Tabla de retardos

FIGURA 6.31 Circuito contador módulo 3.


270 Principios de diseño digital

Éste y otros diagramas de tiempos se utilizarán para veriticar el comporta-


miento de entrada y salida del circuito sintetizado, y para generar señales de entra-
da y salida para simulación. Dadas las ondas de entradas, el simulador generará
las ondas de las salidas, que podrán compararse con las señales esperadas en las
salidas obtenidas en el circuito, o en las especificaciones de circuito o en la des-
cripción funcional. Estas señales de las entrada y salida se denominan , a veces,
vectores de test, ya que pueden utilizarse para testear el circuito después de que
éste se haya fabricado.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Clk

, ,
Q, ---"':4.01·
, -:4
, .o
b ~.o¡:
,
Qo , ---.!4.01_
, ~4,, ob
,
y ~I ~ I~L______, _______
/0 /, /, /) /,

FIGURA 6.32 Diagrama de tiempos de un contador módulo 3 para una secuencia de valo/es
de entrada.

6.14. RESUMEN DEL CAPíTULO


En este capítulo se ha expuesto cómo construir los elementos básicos de memo-
ria utilizados en el diseño de lógica secuencial. Con este fin , se han introducido
diferentes tipos de latches y biestables, y se han descrito con ecuaciones caracte-
rísticas, tablas características y diagramas de estados. También se ha introducido
el concepto de lógica secuencial, así como el modelo de máquina de estados fini-
tos, utilizado para representar la lógica secuencial durante la fa se de diseño. Se
han proporcionado, paso a paso, procedimientos para el análisis y síntesis de lógi-
ca secuencial, y se han descrito estos procedimientos con ejemplos de contadores
módulo 4 y módulo 3. En el Capítulo 7 se utilizan estos procedimientos para ana-
lizar y sintetizar componentes secuenciales.
Lógica secuencial 271

6.15. LECTURAS ADICIONALES


DeMicheli. G. SYllthesis alld OptimiZa/ioll oJ Digital CirclIits. New York: McGraw-Hill ,
1994.
Descri be los conceptos de síntesis lógica y secuencial, y algoritmos en detalle.
Requiere un conocimiento de experto en diseño y en desarrollo de herramientas CAD.
Katz. R.H. COlltempormy Logic Desigll . Redwood C ity. CA: Benjamin-Cummings, 1994.
Texto introductorio al diseño lógico, con explicaciones de cómo utili zar las herra-
mientas CAD UC-Berkeley en el proceso de diseño.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Kohavi. Z. SwiTChillg alld Alllomatic TheO/y . 2nd. ed. New York: McGraw-Hill , 1978.
Tratamiento teórico completo de máquinas de estados fini tos y lógica secuencial.
McCluskey. E. Logic Desigll Prillciples. Englewood Cliffs, NJ: Prentice-Hall, 1986.
Proporciona explicaciones detalladas de los conceptos básicos en el anál isis,
síntesis y test lógico secuencial.

6.16. PROBLEMAS
6.1. (Señal de reloj ) Calcule la frecuencia 6.4. (Latch D sincronizado) Diseñe un
de reloj y e l rendimiento de ciclo para lateh O utilizando sólo (a) puertas
una señal de reloj con un ancho y NAND y (b) puertas NOR, y calcule
período de: los retardos D a Q y C/k a Q para tran-
(a) 5 ns y 20 ns siciones de salida positivas y negati-
(b) IOns y lOOns vas.
(e) 100 ns y l nS
6.5. (Biestables) Diseñe un biestable
6.2. (Latch SR) Dibuje el diagrama de maestro-esclavo (a) SR, (b) JK, (e) D
tiempos de salida de una implementa- y (d) T, utilizando latches SR sincro-
ción (a) NOR y (b) NAND de un latch nizados y puertas ANO, OR e
SR para las señales de entrada mostra- INVERSORES.
das en la Figura P6.2.
6.6. (Biestables JK) Obtenga las formas de
onda de salida de un biestable JK
s maestro esclavo para las formas de
onda de entrada dibujadas en la Figura
P6.6.

Clk

FIGURA P6.2 L
6.3. (Latch SR) Obtenga una implementa-
ción para un latch SR sincronizado K L
utilizando sólo:
FIGURA P6.6
(a) puertas NOR
(b) puertas N ANO 6.7. (Biestables) Utili zando mapas de
(e) puertas ANO, OR e INVERSO- Karnaugh. obtenga las ecuaciones
RES características a partir de las tablas
272 Principios de diseño digital

característícas de los cuatro biestables 6. 12. (Minimización de estados) Obtenga la


mostrados en la Tabla 6.1. FSM con mínimos estados a partir de
la tabla de estados/salidas mostrada en
6.8. (Biestables) Implemente biestables
la Figura P6. l 2.
SR. JK. D Y T uti lizando s6lo puertas
AND, OR e INVERSORES. y biesta-
bles:
(a) SR
ESTADO ESTADO SIGUIENTE
(b) JK
(e) D ACTUAL x=O x=1
(d) T

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
so sJl s,lO
6.9. (Análisis secuencial) Obtenga (a) una s , sJO siD
tabla de estados y (b) un diagrama de .\'2 s,lO s,lO
estados para el circuito secuencial
s3 s,lO s,lO
s, s,lO sil
mostrado en la Figura P6.9 s, s;1O s6/1
s6 s;1O s,fl
s , s310 s, /I

FIGURA P6.12

FIGURA P6.9 6.13. (Minimización de estados) Minimice


los estados de la FSM dada en la
6.10. (Análisis secuencial) Obtenga (a) la Figura P6. l 3 uti li zando:
tabla de estados/salidas y (b) la repre- (a) Particionamiento de estados
sentación FSM del circuito mostrado (b) Una tabla de implicación
en la Figura P6. l O. ¿ Cuál es la fu nción
de este circuito secuencial?

ESTADO ESTADO SIGUIENTElSALlDA


x ACTUAL AB =DO AB =01 AB = 10

sil
s,/O
s;/1
FIGURA P6.10 s"IO
s;[O
6.11. (Análisis secuencial) Obtenga (a) las s2/O
ecuaciones de exc itación, (b) una
ecuación de estado siguiente. (e) una FIGURA P6. 13
tabla de estados/salidas y (d) un dia-
grama de estados para el circuito mos- 6.14. (Codilicación de estados) En el dia-
trado en la Figura P6.ll. grama de estados mostrado en la
Figura P6. l4, obtenga las codificacio-
nes de estado utili zando:
(a) La heurística del mín imo cambio
de bit
(b) La heurística de prioridad en
adyacencia
FIGURA P6.11 (e) Codificación del uno caliente
Lógica secuencial 273

te tres ciclos de reloj después de que la


señal Reset se haya desacti vado. Para
este circuito:
%
(a) Realice el diagrama de estados
(b) Minimice el número de estados
l/O O/O
(e) Codifiq ue los estados para mini-
O/O l/O mizar la lógica combinac ional
l/O
6,20, (Síntesis secuencial) Repita el Problema
1/1
6. 19 diset1ando un circuito que reconoz-
O/O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
1/1 ca todas las secuencias de entrada que
tengan tres o más unos consecutivos. o
tres o más ceros consecutivos.
FIGURA P6.14
6,21. (Síntesis secuencial) lmplemente un
6.15. (Codi ficac ión de estados) Obtenga la
circuito secuencial que complemente
codi ficaci ón de estados que minimice
un número de 16 bits en complemento
la lógica de salida de un contador que
a dos. X = xI5""14"'"" IXO' El circuito
genera la siguiente secuencia:O. l . 3,
t.iene una entrada. X que tiene valor Xi
6. 10. 15, O, ...
en el ciclo de re loj i. y otra entrada
6,16, (Síntesis secuencial) Diseñe un conta- Reser. que iniciali za el ci rcuito a un
dor que genere la secuencia O, 1, 3, 6. estado inic ial después de 16 ciclos de
10. 15. utilizando cuatro biestables (a) reloj. La salida Yserá el complemento
D. (b) SR, (e) JK y (d) T. como ele- a dos de X En el estado inicial. se
mentos de memoria y codifi cación en establecerá a O un indicador. El c ircui -
binario natural. to debe actuar como sigue: Para cada
Xi' O ::; i ::; 15. si indi cador = 0, enton-
6.17. (S íntesis secuencial) Diset1e un conta-
ce s Yi = Xi Y indicador = Xi: en caso
dor que genere la secuencia O. l . 2, 3.
contrario. Yi = X'i' Desarroll e un di a-
4. 5,6.7,8,9, O,... , utilizando codifica-
grama de estados y un circuito lógico
ción en binario natura] y biestables D.
utilizando biestables D.
6.18. (Síntesis secuencial) Diset1e un detec-
6,22, (Síntesis secuencial ) Diset1e un con-
tor de paridad que cuente el número
trolador de sem<Íforos simpl ifi cado
de unos en una cadena de entrad a.
que conmute las luces en un cruce
Este detector acti va su salida Ysi reci-
cuando una calle norte-sur (NS) se
be un número impar de unos en la
cruce con una calle este-oeste (EW).
entrada X Una señal asíncrona Reset
La entrada de l cont ro lador es el botón
debe poner al detector de paridad en
PASAR pulsado por los peatones cuan-
su estado inicial. Utilice como ele-
do quieren atravesar la ca lle . Las sali-
mentos de memoria sólo biestables (a)
das son dos set1ales NS y EW que con-
D, (b) JK Y (c) T.
trolan los semáforos en las direccio-
6.19, (S ínlesis secuenc ial) Di set1c un circui- nes NS y E W. Cuando NS o EW son O,
to que reconozca una secuencia de se enciende la luz roj a. y cuando son
entrada que tenga. al menos. tres unos. 1, se enciende la luz verde. Si no hay
El circuito ti ene una única entrada X y peatones. NS ; O Y EW; 1 durante 1
ulla única salida Y.además de una minuto. y des pués NS; 1 Y EW ; O
señal asíncrona Reser. El circuito esta- duranie otro minuto. y así sucesiva-
blece la salida Y a 1 si la señal de me nte. Cuando se pul sa el botón
entrada X es igual a I al menos duran- PA SAR. NS y E W se ponen a 1 duran-
274 Principios de diseño digital

le I minuto, siempre que el minuto (a) Desarrolle un diagrama de esta-


actual haya concluido. Después de dos y una tabla de estados/sali-
esto. las señales NS y EW continúan das.
al ternándose. Para este controlador de (b) Codifique los estados
semáforos: (e) Obtenga un circuito lógico.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
e

de
A P
í

. .
,/
Componentes

memorlzaClon

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
Álgl'bra booleana P UCllaSlógicas
y biestables

6
J
Máquina de
estados fi nitos .... 4 6
Técn icas de
diseño lógico '"'
'-+
Técnicas de
diseño digi tal

Sistema binario 2
y representación
de dalos
t -+ ,
5 7
Componentes Componentes de
combInacionales almacenamiento
T -- T
Máquinas de 8 Diseño de 8
estados finitos transferencia entre
generalizadas registros

1
9
Componentes
del procesador

En el Capítulo 6 introdujimos y estudiamos distintas técnicas para el dise-


ño de /6gica secuencial, caracteriZJUfa por el uso de biestables. Utilizando
estas técnicas de lógica secuencial, en este cap(tulo diseñamos algurws
componentes de almacenamiento básicos que, junto con componentes com-
binacionales, forman la microarquitectura de microprocesadores estándar
y de chips de aplicación específica.
278 Principios de diseño digital

El objetivo fundamental de los componentes de memorización es almacenar datos


y realizar transformaciones sencillas de datos, tales como conteo y desplazamien-
to. En este capítulo se definen y di señan varios tipos de componentes de memori -
zación, tales como registros. contadores. memorias, pil as, y colas. Además, defi -
nimos di versos tipos de caminos de datos (datapaths) y controladores que consti -
tuyen las unidades de cómputo de muchos chips. Para simplificar la descripción
de estos componentes. utili zamos sólo puertas genéricas y biestabl es, sin intentar
optimizar el di seño para una tecnología o una biblioteca de celdas parti cular.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
7.1. REGISTROS
El componente de memori zación más sencillo es un registro, que puede conside-
rarse como un biestable ampliado a múltiples bits. Cada registro consta de 11 bies-
tables acti vados por una señal de reloj común . En otras palabras, cada biestable del
registro almacena su propio dato en cada fl anco ascendente de la señal de reloj. Así
pues un registro básico posee 11 entradas y 11 salidas además de la señal de reloj.
En la Figura 7. l se muestra un ejemplo de registro de 4 bits. Su símbolo grá-
fi co, que utilizaremos a lo largo del libro, se muestra en la Figura 7. l (a). Como se
indica en la Figura 7. l (b) el registro consta de cuatro bi establ es D conectados en
paralelo.

C/k

(a) Símbolo gráfico

" '"

- D, Q, - - D, Q, - ~
D, Q, 1- - D" Q" r-
.- f> - f> .- f> r- >

e lk

Q, Q, Q,

(b) Esquema del registro

FIGURA 7. 1 Registro de 4 bits.


Componentes de memorización 279

La func ionalidad de l registro básico de la Figura 7. 1 puede mejorarse aña-


diendo diferentes seña les de control. Por ejemplo. si el registro debe ponerse a
uno o a cero independientemente de la selial de reloj , bien cuando se conecta la
al imentación o bien en respuesta a algún evento especial, podemos añad irle seña-
les asíncronas de puesta a uno (p resef) y de puesta a cero (e/ea r ). Esta mejora
se consigue reemplazando los biestables indicados en la Figura 7. 1 por otros con
puesta a uno y a cero como se muestra en la Figura 7.2.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Pre,H!/ /; /, l. fu
R I'.'g ISlnl

(a) Símbolo grMico

1, /. /"

¿, ¿, b b

- /J , Q, r- - /J, Q, r- " - /J, Q, t-- " - /Ji' V" -


r- > r - 1> - 1> ,--- >

y y y
( 'Icm"

Clk

Q. Q. Q"
Ih) Esquema do.!! reg istro

FIGURA 7.2 Registro de 4 bits con puesta a uno (prese~ y puesta a eero (elear) asíncronas.

Como puede ve rse en la Fig ura 7.2(b). el contenido del regi stro puede hacer-
se todo ceros poniendo a O la selial C!l!or durante un corto período de tiempo. De
forma simi lar. un contenido ele todo unos podría introducirse poniendo a cero la
selial Presel . Obsérvese que estas seJiales de puesta a cero y puesta a uno son inde-
pend ientes de la seña l de reloj y tienen prioridad sobre ell a, lo que significa que
si están a cero durante el tlanco ascendente de la señal de re loj. se ig nora la ent ra-
da I y el regi stro es puesto a cero o a todo unos .
En lo que resta del libro supondremos que todos los registros y contadores
pueden di sponer de entradas asíncronas de puesta a cero. a uno , o ambas. En gene-
ral. no lo indicaremos explícitamente salvo cuando sea esencial para expli car el
func ionamiento de l componen te.
Tanto en el registro de la Figura 7.1 como en el de la 7.2 automáticamente se
alm acena un nuevo dato por cada tl anco ascendente de la selial de reloj. Sin
280 Principios de diseño digital

embargo, en la mayoría de los sistemas digitales un dato se memoriza durante


varios ciclos de reloj antes de modificarlo. Por este motivo es útil poder controlar
cuándo ha de introducirse el dato en el regi stro. Esto se consigue con el uso de
una señal de control, normalmente denominada carga (load) o habilitación (el/a -
h/e), que permite cargar un dato en el registro. El regi stro resultante se conoce con
el nombre de registro con carga en paralelo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ESTADO
ESTADO SIGUIENTE
ACTUAL
LO/ld
Load
°3 °2 0,

o No cambia
I
" "
(a) Símbo lo gráfico

/. /,

, O
I , I (J , I
O , I
(J

5 S S S

Ú}ml 1 Se lectur
I Selector
I Selector
I Seketor

"- O, Q, 1- "- /\ Q, - ~
O, (i, r- '--
IJ" U"
-
- > - t> - > - t>
Clk

r, 1'.' l' , r,
(e) Esq uema de l reg istro

FIGURA 7.3 Registro con carga en paralelo.

En la Figura 7.3 se muestra un registro con dicha señal de control. Obsérvese


que el di seño del regi stro contiene un selector de 2 al, que se lecciona entre el
dato de entrada o el existente en el regi stro. La seña l de carga Load contro la el
selector, de tal manera que si Load es I se introduce un nuevo dato en el registro.
En caso contrario, si Load es 0, con cada flanco ascendente de la seña l de reloj se
recarga el mismo dato contenido en el registro.
Componentes de memorización 281

7.2. REGISTROS DE DESPLAZAMIENTO


En la Secc ión 7. 1 hemos mostrado cómo puede colocarse un selector delante de
los bi estab les para posibil itar la carga controlada de un registro. También podría-
mos utili zar un selector que permitiera desplazar el dato memori zado en el reg is-
tro . El registro resultante, denominado registro de despla zamiento, ~es pl aza su
contenido en un bit, en una dirección específica, cuando la señal desplazar (Slúft)
es 1. Como ejemplo, la Figura 7.4 presenta un registro de desplazamiento de 4
bits. La ent rada seri e 1L se utiliza para introd ucir el nuevo dato de 1 bi t en el bies-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
tab le más a la izqui erda del registro . Un registro como el de la Figura 7.4 se podría
utili zar para convertir una secuencia de datos seri e en otra de datos paralelo. Por
este moti vo se le denomi na a veces reg istro de desplazami ento de entrada-
serie/salida-paralelo.

ESTADO
ESTADO SIGUIENTE
ACTUAL
/,
Rcgi~!ro

f)('~plll=lII'
d(' lk~p hl /nll1 i ('n to

Q, Q. QI Qo
Desplazar
°3 °2 0,
°0
O No cambia
I IL Q3 Q, Q,
(a ) Símbolú gráfico
(b) Tab la de opcrac]()n

/,

, OI , OI , OI , I (1


Sd~c lor

¡- Selector
¡- Selector

I
Sckct\.r

- D, C!, - - fJ ~ (l, - - D, 0 , C- L- [J..


0" '-
r- 1> - 1> -

,.
" (e) Esquema de l regIstro
.',
FIGURA 7.4 Registro de desplazamiento a la derecha con entrada-serie/salida-paralelo.

Para aumentar la versatilidad de un regi stro podríamos también usar un se lec-


tor de 4 a 1 q ue nos permit a combinar las funciones de des plazamiento y de carga.
Por eje mplo, el registro de la Figura 7.5 podría o bien desplazar su contenido o
282 Principios de di seño digi tal

cargar en parale lo un nuevo dato. Adetmls, podría desplazar e n un bit su con ten i-
do a la izquierda o ti la derec ha, introduciendo por la derecha o por la izquierda e l
bit de dato di spo nible en las e ntradas serie ' R o I L respecti vamente. La Figu ras
7.5(a) y (b) mu estran el s ímbolo gráfico y la tabla de operac ión, y la Figu ra 7.5 (c)
muestra e l esquema de este regi stro multifunc ió n.

ESTADO ACTUAL ESTADO SIGUtENTE


OPERACiÓN

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
S, S. O, O2 O, O.

S" '1 " /, 11 111 ' 11 O O ~ocam bia Q, Q, Q, Qo


SI
Ro.:gi q ro
de dCl'phLi'U miclltu O I C~g.,",rnda 1; 1,- 1, lo
Ql (1! (J ¡ (!" I (1 Despl"" ala izquierda Q2 (j, Q" IN
I I Despl~M' la derecha IL QJ Q, Q,
la) Simbolu gráfico

1, 1,

1,
I I I I I I I j
3 2 1 O 3 2 , O .\ 2 I O :1 2 1 1)

rr=
I
S.. kt'wr
Ir Sclccwr
rr
l
Sdc~' lur

rr
St'1cl.' h\r

' - /J , Q, - - fJ , (1~ '-- ' - /J, Q, r- '- /) V, r-


- > r- ~ - -

e/k

,', ,., ", ,.


Ic) E...quc l11a ele l rcgl ...l r0

FIGURA 7.5 Regislro de desplazamiento de 4 bits con carga en paralelo.

Obsérvese que e n e l esque ma del reg istro de desplazam iento, como en el de


la ALU, podemos d isting uir las secc io nes del bi t más significativo, las centra les,
y la del me nos sig ni ficati vo. Cada una de cstas secciones de bits (hil slices) debe
d iseñarse por separado ya q ue sus fun e io ncs son ligeramente diferentes. Ya q ue
las secc io nes centrales son más fáciles de entender, no rm alment e se di seilan pri-
mero. Como eje m plo, de la tabla de o perac ión se pueden obtener las sigu icntes
ccuac iones de entrada de los bi estab les para las distintas secc iones del regi stro de
la Fig ura 7.5 :
Componentes de memorización 283

Do = S', S'oQo + 5',50 / 0 + S'S'O/R + S,SOQ,


D; = S', S'oQ; + 5', 50 /; + S ,S'oQ;_, + S ,SoQ;+1' 1 ::; i ::; 2
D) = S' ,S'oQ) + 5' ,50 / ) + S,S'OQ2 + S,SO/L
El reg istro de desplazamiento con carga en paralelo puede uti lizarse para con-
vertir una secuencia de datos serie a paralelo o una secuencia de datos parale lo a
serie, con la opción de sacar el primero el bit más significativo (MSB) o el menos
signiticati vo (LSB ). Estos registros suelen utili zarse en la conversión de datos del
co mputador para comunicaciones serie, y para captar datos tran smitidos en serie

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
a fin de tratarl os en un procesador.

7.3. CONTADORES
Un contador es un tipo especia l de reg istro que incorpora un incrementador, que
permite contar de forma ascendente o descendente. En la Figura 7.6 se muestra un
ejemplo de contador ascendente que tiene dos señales de control: una señal E de
habi litación (El/a!Jle) , que cuando vale I habi lita la cuenta: y una seña l Clea r para
la puesta a cero del comador. El símbolo gráfico de este contador binario ascen-
dente de 4 bits se muestra en la Figura 7.6(a) y su tabla de operación en la Figura

01 C¡ C¡+1 D,

E OPERACIONES O O O O
O I O I
"
>
( ',ljll:ullll
O No cambia I O O I
( 'h ." e e e IJ" 1 Cuenta I 1 I O

la ) SítnboJu ~r;Hi ,-,u (h) Tuh la de 0 p~'ra'-'lón (e) Tabla de verdilU de] HA

e, c•
c., ( [ e,
.rr e, .(T

8 8 8
11 ·\ 11 \ 11 1\ HA r=J
n /j I r-- n. v: f-- " (1 1 t-- D" l,J,, ¡-
r- r r

el,'/u

),I/,d,1
e e,
.I¡",m/l"
(d i Esquema del COntador

FIGURA 7.6 Contador binario de 4 bits .


284 Principio~ de diseño digital

7.6(b). En la Figura 7.6(c) puede verse que el incrementador con,w de una se rie
de semi-sumadores (HA) dispuestos de manera que e l HA en la pos ición ue bit;
tenga sus dos entradas conectadas a la salida del ;-ésimo bi estable Q, y al aca rreo
C; de l HA en la posición ;- 1. Obsérvese que el nuevo va lor del biestable D; será
1 si Q I. ó C I . pero no ambas . son l . Por el contrario. la salida C.1+ 1 será 1 s610 si Q I
Y C; son ambas l. La tabla de verdad ue un HA se da en la Figura ó.7(c¡. dc la
cual podemos derivar las s iguientes expresiones booleanas para D, y C,.I:
D; = Q, EB C;

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Ce. 1 = Q¡C¡

/l
~.
C"Ill.ltlnr
.1"'CII,kn ldu"",,-"'lld"II W
E o OPERACIONES
0".11
O X No cambia
O Cuenta ascendente
I C uenta dcsccndenl~
(n) Simbolo grMico
(b J Tabla dl.' lJ l>C l'aI.' UlIl

E O Q; C; C;"l O;

O O O O O
O O I O I
O I O O I
O I I I ()
----------------------------- . ----
O O O O
O I I I
I O O I
l l O O
(e) Tabla dI! verdad del HA S

J
E

c-eS n
'---"CJ
c.~ c'-U 1- h "I
• l A!'> { II MI It \s ¡lA.'" l

1> ~, D, IJ: n. U, J' U


> r-~ r~ ~
(J', U. ~. U.
H"",¡

,0.,"'1,<1"
11,' ",un,.,'
Q, ~.

(d ) E sqUl'I1l:\ IÓglCll

FIGURA 7.7 Contador binario ascendente/descendente de 4 bits.


Componentes de memori zación 285

Mi entras la señal E sea l . este contado r rea li zará un a cuenta ascendente módu -
lo 16. sumado I a su conte nido por cada llanca de subida del reloj .
Este contador ascendente básico puede tambié n ampli arse como contador
ascendente/descendente sustituyendo el semi-sumador por un semi-sumador/
restador (HAS), que pucda inc reme ntar o decreme ntar bajo el control de una señal
de dirección . Por ejemplo, en la Fi g ura 7.7 se muestra un contador ascendente/
descendente que se parece bastante al contador ascende nte de la Figu ra 7.6.
excepto en que ti ene una te rcera entrada de control. D. Como ind ica la tabla de
operación de la Figura 7.7(b), el objetivo de esta e ntrada adicional es permitir

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
contar de forma ascenden te cuando su valor es O y de manera descende nte c uan-
do es 1. La tabla de verdad de un HAS se muestra en la Figura 7.7(<:). de la que
es fác iI de rivar expresiones booleanas para Di y C¡+1:
D ,. = Q, ®C,
C,+I = D 'QIC, + DQ'¡C;

D LOAD E D OPERACIONES
1, Contaij"r
> ;):....... lllk nlc/uc"l·l·nUe' Ite () O X No cambia
I..,(md (J , O (! Q. O I O Cuenta ascendente
O I I Cuenl3 descendente
(a) Símholo gráfico
I X X Carga la entrada
(h) Tnh la de I)per:lc ión

/, /, 1, 1"

D
,
I
I I 1 I

UAS
- HAS - HA S
¡-
HAS
=J
I I I

Ll!illl
r
1
Selector
O

Ir
1 11
Sckctur
I
r
[ s,,,,,,,,
"1 r "1
St"lcclor

c- D , Q, c- D. O. c- /) o, c- J)"
(J"

-
Q',
r- >
Q',
- F>
Q',
- F> (l'
"
cu-

SIIII/I" l' , }'; ,


l'
,1I'(w,I/'/I'o
(e ) EsquCIll:¡ 16gico

FIGURA 7,8 Contador ascendente/descendente de 4 bits con ca rga en paralelo.


286 Principios de diseño digital

En el esquema lógico de la Figura 7.7(d) puede verse que cada HAS consta de
una puerta XOR conectada a las entrada de los biestables, así como dos puertas
ANO y una OR que se utilizan para propagar el acarreo.
Es importante observar que el contador ascendente/descendente de la Figura
7.7 siempre comienza a contar desde cero. En muchas ocasiones es si n embargo
más conveniente poner inicialmente el contador a un valor diferente para después
contar de forma descendente o ascendente hasta que alcanza el valor O. Para ello
sólo se necesita una puerta NOR que detecte cuándo se alcanza el valor de cuen-
ta O. Para construir un contador con inicialización de este tipo, combinamos un

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
incrementador/decrementador con un registro con carga en paralelo. Como mues-
tra la Figura 7.8(a), este contador tiene tres señales de control: E, D, Y Load. La
señal E habilita la cuenta en la dirección especificada por la señal D, y la señal
Load cargará una nueva entrada e inhabilitará la cuenta siempre que su valor sea
l. Por otra parte, mientras la seña l Load sea O, el contador se comportará exacta-
mente igual que el ascendente/descendente de la Figura 7.7. La tabla de operación
y el esquema lógico de este contador con inicialización aparecen en las Figuras
7.8(b) y (c).

7.4. CONTADOR BCD


. El contador con inicialización descrito en la Sección 7.3 puede utili zarse para
construir otros contadores. Una posibl e aplicación es el diseño de contadores
BCD que cuentan siguiendo la secuencia O. 1, 2, 3. 4, 5, 6, 7, 8, 9, O... Como se
muestra en la Figura 7.9(a), podemos construir un contador BCD detectando
cuándo éste alcanza la cuenta de 9 y cargando O en lugar de lO en el siguiente
ciclo de reloj. La detección se realiza mediante una puerta ANO cuya salida sea
l si el contenido del contador es 100 l. La salida de la puerta ANO se conecta a la
entrada de carga Load del contador, lo que permite que el contador cargue O al lle-
gar el siguiente flanco ascendente de la señal de reloj.
"1001" "0 0 00"

D 'J 1, I1 In
E Contador D 1, 1, , ) lO!
> ascendente/desce ndente E Contador -
Load Q3 Q~ al ºI) > ascendente/descendente
Load Q, Q ~ QI Q"

la.) Contador BCD ascendente lh) Contador BCD asce ndente/descendente

FIGURA 7.9 Contadores BCD.


Componenles de memorización 287

De forma similar podemos construir contadores BCD ascendentes/descenden-


tes. En la dirección de cuenta ascendente debemos cargar O en el contador cuan-
do alcanza el valor 9, mientras que en la direcc ión descendente debemos cargar 9
cuando el contador alcanza la cuenta O. Como muestra la Fi gura 7.9(b), necesita-
mos un selector que decida entre cargar O o 9 cuando el contador debe reiniciali -
zarse, así como una puerta AND-OR que actúe sobre la entrada Load cuando el
contador alcance una cuenta de O o de 9.
De manera similar, podemos construir contadores que comiencen en cualquier
punto y cuenten en casi cualquier secuencia. Obsérvese no obstante que cada salto

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
en la secuenc ia de sa lida req uiere una puerta adicional para la detección y una
entrada adicional en el selector para la carga.

7.5. CONTADOR AsíNCRONO


En secciones anteriores hemos descrito diversas variantes de un contador binario,
todas ellas hac iendo uso de un incrementador, de un decrementador, o de ambos .
En ocasiones, sin embargo, se puede disminuir el coste del contador construyén-
dolo sin el incrementador o el decrementador. Dicho contador se denomi na con-
tador asíncrono, ya que sus biestables no están todos s incroni zados por la misma
señal.
La cuenta sin incrementador/dec rementador se consigue haciendo que cada
biestabl e cambie de estado a la mitad de frecuencia que el precedente. En otras
palabras. el biestable que está en la posición i cambi ará de estado sólo la mitad de
las veces que lo hace el que está en la posic.ión i- I , o di cho de otra manera, el
biestabl e en la posición i cambiará de estado cuando el de la pos ición i- I pasa de
I a O pero no cuando pasa de O a l .
Hechas estas observaciones general es, podríamos construir un contador as ín-
crono conectando la salida complementada del biestable en la posición i-I a la
entrada de reloj del biestable en la posición i, mientras que el resto de las entra-
das de los biestables se coneClan de manera que estos cambien de estado por cada
transición de O a I en su entrada de reloj. Un biestable T es muy conveniente para
este diseño asíncrono porque el va lor I en su entrada hará que el biestable cam-
bi e su estado con el flan co de subida de la señal de reloj. En la Figura 7. LO se
muestra un contador de 4 bi ts basado en biestables tipo T. Obsérvese que ti ene dos
señales de cont rol, la señal de habilitació n E, que habil ita la cuenta, y la señal
Clear, que pone a O el contador. El esquema lógico del contador se muestra en la
Figura 7. 1O(b). donde puede verse cómo la salida co mplementada de cada biesta-
ble se ha conectado a la entrada de re loj del biestable en la pos ición siguiente más
signi ticati va. Como resultado, la señal de rel oj e /k se utili za sólo para sincronizar
el biestable de la posición menos significativa. El funci onamiento del contador
asíncrono de cuatro bits se ilustra en la Figura 7.1 0(c), que muestra las formas de
onda en las salidas de los distintos biestables. Como puede verse, el biestable de
la posición menos significati va (FFol cambiará su estado con un retardo ~ tras
cada ll aneo de subida del reloj (es decir en los instantes lo + A ... , 17 + ~) . Sin
288 Principios de diseño digital

embargo. el biestable de la siguiente posición más significativa. FFI' cambiará de


estado sólo cuando el FFo pase de l a O (es decir, en los instantes /1 + 26. /3 + 26.

Contador
> asíncrono

(a) Símbolo gráfico

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
E

L- T, Q, L- T, Q, 1-- '-- T, Q, 1-- '- TOI Q" f -


FF , FF, FF, FF"
r- 1>- r- 1>- r- 1>- r- 1>-
Q', Q', Q', Q' 1-
"
Clt'lIr
Y Y Y Y

e/k

Q, Q, Q, Q"
lb) Esquema lógico

O ~
C/k

Q,
-+ .t. F
Q, -+ 3t.1-- -+ 3t. ~
Q, - 2t.1- -+ 2t.b-
Q" -t.~-4--
t" t, t, t, t, t" t.

(e) Di agrama de tiempos

FIGURA 7. 10 Contador ascendente asíncrono de 4 bíts.


Componentes de memorización 289

'5 '7
+ 2~, Y + 2~). Obsérvese que el retardo se ha incre mentado a 2~, ya que la
transición ha tenido que propagarse a través de dos biestables. De forma simi lar,
el siguiente biestable, FF2 , sólo cambiará cuando pasen de I a O tanto FFo como
FF] (es deci r, e n los instantes de tiempo 13 + ~3 Y 17 + ~3) . Por último, el biesta-
ble más signi ficati vo, FF3' cambiará de estado sólo cuando pasen de I a O FF2•
FF ], y FFo (es decir, en t7 + 4~).
Del análi sis precedente podemos concluir que el retardo de la salida de l
i-és imo biestable respecto del reloj es de i~, y en consecuencia que el contador
asíncrono puede contar a una frecuencia máxima de I/11~ . En cambi o, la frecuen-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
cia máx ima de cuenta de un contador síncrono de 11 bits estará sólo limitada por
la propagación de acarreo en el increme ntador. En otras palabras, dado que la pro-
pagac ión del acarreo (retardo desde la entrada de acarreo a la sali da de acarreo) a
través de la serie de HAs es mucho más rá pida que la propagación del cambio de
estado (retardo de la salida Q respecto de la entrada de reloj) a través de un núme-
ro igual de biestables, el contador asíncrono descrito seria más lento que uno sín-
crono, incluso sin hacer uso de técnicas de anticipación de acarreo para acelerar
la propagación del mi smo.

r-- E E
Contador Contador
>
11r ~/,m
asíncrono rlsíncrono
Q, Q, O, Q" Clellr Q, Q, Q, Q"
Clk
CJ¡:ar

í!
\

(a) Contador síncrono con secciones asíncronas de " bib

I
- E Contador
r-- >
E
Conl:ldor

r
síncrono síncrono
O, Q, Q, Q" e/ear Q, Q, Q, Q"
Clear
Clk
('fea,.

~
"\

(b) Contador asíncrono con secciones síncronas de 4 bits

FIGURA 7. 11 Contador ascendente de modo mixto, de 8 bits.


290 Principios de diseño digital

Para que un contador asíncrono sea más rápido podemos hacerlo parcialmen-
te síncrono. Para ello, un contador grande lo dividiríamos en secc iones de Il bits
de manera que el funcionamiento interno de cada sección sea asíncrono, mientras
que la propagación entre secciones sea síncrona, o viceversa. Como ejemplo de
esta técnica podemos considerar los contadores de modo mixto de 8 bits mos-
trados en la Figura 7.11. En la Figura 7.11 (a) hemos construido un contador sín-
crono con secciones asíncronas de 4 bits. Obsérvese que en un contador de este
tipo, todas las secciones se activarían por la mi sma señal de reloj , pero la sección
más significativa estará habilitada sólo cuando la sección menos signifi cativa esté

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
en su estado 111 l. En la Figura 7. II (b) , por el contrario, hemos construido un
contador asíncrono con secciones síncronas de 4 bits. En esta versión del conta-
dor, todos los biestables que forman cada sección están activados por la mi sma
señal de reloj , pero la sección más significativa utilizará como reloj una señal que
indica cuándo la sección menos signiticativa está saliendo del estado 11 I l. En
otras palabras, siempre que la sección menos significati va pase de I I I I a 0000, la
señal de reloj de la secc ión más signiticativa efectuará una transici ón de O a l.
haciendo que esta sección incremente en uno su cuenta.

7.6. BANCOS DE REGISTROS


En las secc iones anteriores se han descrito diferentes tipos de reg istros y conta-
dores, cada uno de ellos consistente en un número 11/ de biestables y alguna lógi -
ca combinacional adicional en sus entradas. Tambi én es posible combinar biesta-
bles formando un array bidimensional que constaría de 2" filas con 111 biestables
cada una. En esta estructura bidimensional, denominada banco de registros, cada
fila de biestables puede considerarse como un registro. En general , un banco de
regi stros memorizaría la mi sma cantidad de información que 2" registros de 111 bits
cada uno. Pero la ventaja principal de utili zar un banco de registros es que. dada
su regularidad, requiere menos cableado en su di seño final. Además, cada biesta-
ble de un banco de regi stros puede implementarse con muchos menos transisto-
res, ya que se accede en cada instante sólo a un registro en cada columna.
En un nivel de más grado de. detalle , un banco de reg istros cons iste en un array
bidimensional de celdas de banco de registros (RFC, Register-File Cel/s) , deco-
dificadores de lectura y de esc ritura , y una lógica de adaptación de las salidas.
Como se muestra e n la Figura 7.12(a), una RFC típica puede representarse
mediante un biestabl e O y dos puertas. Obsérvese que. además de la señal de reloj .
la celda tiene tres e ntradas y una salida: señales de Selecciól/ de escritura. de
Selecciól/ de lectura. de Entrada, y de Salida. En la celda. el biestable O memo-
rizaría el va lor de la señal Elltrada siem pre que SelecciólI de escritura valga 1: y
cuando la se ñal Seleccióll de lectura sea 1, e l biestable pasará a la sa lida, a través
de un adaptador triestado, el valor que almacena.
En la Figura 7. 12(b) presentamos el símbolo gráfico de un banco de registros
de 2" x /1/, y en la Figura 7.12(c). como ejemplo, la estructu ra de un banco de
regi stros de 4 x 4. e n el que po r claridad se ha omitido la señal de reloj. Como
Componentes de memorización 291

puede verse en estas figuras. un banco de registros de 2" x 111 tiene 111 entradas ,
/ "" ' .... ,/0.111 salidas, 0"'._1..... 00. y 2" fil as de biestables. El decodificador de escri-
tura sirve para seleccionar una de las fil as y memorizar los valores de entrada coin-
cidiendo con el fl anco de subida de la señal de reloj. Las entradas al decodificador
de escritura son n líneas de direcciones. WA,,_I' .... WA o' y la señal de habi litación de
escritu ra WE. Cuando WE es O, los valores de entrada no se memo rizan.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
S.. /.-, 1 ¡IIII dI' n '/TI/llra
'"

IJ Q Sil/Mil
"
m1 --+---+ .,. " RA
)+--+-
PJ. --==:::::::::::::"'---1> 11'1:' -------+ ~. - /1/ )+--- Rf.

RFe Clk - - - >

'"
~ a) Celda lid 1i,:hcJ'Q de rc-gblros jb l Símbolo "
~ I':ifi l.'ó

l l oo

(1 De('" d if¡c:llh' r
dI.' k(' IUra
de ~ .I.t

1---+---F==I:f=~==*:t==:!==j:j::==:===H (1
HA

HA "

Hl~

[Jl.'cn¡]ifi cauo r
de c'l'rllura
de .2 1, ~

(1 , n. (J ..

(el Esqui.'ma I(igko

FIGURA 7. 12 Banco de registros con un puerto de escritura y uno de lectura.


292 Principios de di seilo digital

De forma similar al decodifi cador de escritura. e l de lectura se lecc ionará la


rila cuyos va lores almacenados aparecerán e n las sali das del baneo de registros .
El decodil~cador de lectura ti ene 11 líneas de direcc ión de lectura. RA" ,..... Rr\,. y
la señal de habilitac ión de lcctura RE. Cuando RE es l. después de un pequeño
retardo. los valores memorizados e n la fila seleccionada aparecerán en las salidas.
Por otra parte. cuando RE es O. todas las seI1al es de sa lida tendrán un valor de alta
impedancia.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
'"

F:/IImdil -+---r~-J.

RFC
> - - (JuIII

(}1II1I
\V.-I

WI, - - .

'" - - - >
-- RF

2 ", ,,,
--
+--f-

--
"
RAA

NI:. \

NAII

Nt./I

Sdt" n,i/. Sf'i,-u ¡"" '"


¡/.' ¡"dliro d, - I,',IUI''¡
(/111,-/,/,,-1 / (pll<' /,/,.8 1

la l Ce lda dd fidlem de re g i ,.tro~ (h) Síl11holn grMko

l . 1" RAII RAI/" N. Efl R:\:I , RAI" Uf:..!

ol-+---,--+---r--+-- ,---t-----, DCl'.... h li-


, adnr
de k c tur;¡ de lec tura
.1,' 2;, 4 d ~ 2.! 4

"

D<,('udili -
~ ad(!r
dC' ("~l'ntLlm
de:2 a 4

// , A , IJ, ti 1/, A JJ" A"

FIGURA 7.13 Banco de registros con un puerto de escritura y dos de lectu ra.
Componentes de memorización 293

La limitación principal de un banco de registros es que sólo permite un acce-


so lim itado a los reg istros que lo form an. es dec ir. en un in stante dado. sólo se
pueden escribir datos en uno de los reg istros (un a fil a) y lecr datos de ólo un
registro (una fil a). Esta situac ión puede remedi arse en pall e construyendo ban-
cos de registros con más de un puerto de lectura o de escri tura. Desafortu-
nadamente. el costo de l registro se incrementará en proporción a su nú mero de
puertos . Por esta razón, los bancos de reg istro. más usual es ti enen uno o dos
puertos de escritura y dos de lec tura. La justificac ión principa l de los dos puer-
tos de lectura es que la mayoría de las operac iones aritméticas y lóg icas requie-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ren del uso de dos operadores al mi smo tiempo. Con dos puert os de lectura es
posible captar estos dos operandos y memori zar el resultado en el mi smo banco
de reg istros en un ciclo de rel oj . Por otra parte. la justifi cac ión del uso de dos
puertos de escritura radica en la ve loc idad a la que se utili zan operandos: en cada
ciclo hacemos uso de dos operandos para producir un res ultado. En consecuen-
cia, si se va a reali zar una operación en cada c iclo de reloj , debemos poder dar
un nuevo operando al banco de reg istros y a la vez memorizar el resultado de la
operac ión.
En la Figura 7. 13 se muestra un ejemplo de banco ele registros con un puerto
de escritura y dos de lectura. Como se observa en la Figura 7.I3(a), la RFC ha
sido modifi cada para albergar los dos puertos de lectura. y el símbolo gráfico de
la Figura 7. 13(b) retlcj a el puerto añadido. La Figura 7 . 13(c) muestra la estructu-
ra completa de l banco de registros de 4 x 4. Obsérvese que este di agrama es simi-
lar a la estructura del banco de registros de la Figura 7. 12(c), exce pto que esta ver-
sióntiene un decodi ficador de lectura más, que añade a su vez un cable más a cada
fila y cada columna para la lectura del dato a través del segundo puerto.
Los bancos de registros son por lo general muy rápidos porque cada celda
incl uye un latch o bi estable completos. Sin embargo son caros porque cada latch
o biestable requiere medi a docena de transistores en su diseño. Por este moti vo.
los fi cheros de registros se emplean normalmente para cantidades limi tadas de
memoria temporal en aplicaciones de alta ve loc idad y en microprocesadores.

7.7. MEMORIAS DE ACCESO ALEATORIO


En la Sección 7.6 hemos descrito los bancos de registros, que son de tamaño redu-
cido. rápidos, y apropi ados para la memori zac ión temporal durante los cálculos.
Por otra parte. las memorias de acceso aleatorio (RAM : Randolll Access
Melllories). son grandes y lentas, pero mu y apropiadas para memori zación a largo
plazo de programas y de los datos utili zados en los cálculos. Al igual que los
tichcros de registros. las memorias están organizadas como arrays de 2" ti las con
111 bits almacenados en cada fil a. Por lo general, n suele estar comprendido entre
16 y 32. mi entras que 111 es normalmente 1,4, 8, 16, o 32. Una memoria típica se
ilustra en la Figura 7. 14(a). Al tener 2" fil as, se necesitan n líneas de direcciones
para identificar cada fil a de fo rma unívoca. Además de las n líneas de direcc iones.
se necesita también una línea de selección de chip (eS) que se emplea cuando se
294 Principios de diseño digital

quieren construir memorias grandes multi-chip. Cuando es es 1 la memoria del


chip opera normalmente.

DIRECCIÓN DE MEMORIA CONTENIDO ENMEMORIA

Binario Decimal
0 .. .000 o 011...0100
0 . .. 00 1 I 011 ... 0100
0 ... 010 2 101. .. 1100

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
0 .. .01 1 3 101. .. 0001
0 ... 100 4 011.. .0 101
0 .. . 101 5 0 10 ... 0 10 1
0 ... 110 6 110 . .. 0011
0 ... 111 7 10 1. .. 0001

1... 11 0
l. .. lll

.. ni bits
.
(a) Direcciones de memoria y contenidos

1", . I ... I 1 In

- A,, _I

- A, RAM 2" X m - A, RAM 2"x m


- AO - Ao

- es - es
- R\VS - RWS

O"' ~ I . 0 1 0 1,) 11°111 _ I ' l/DI 1/00

...

(b) Símbolo gráfico


! !!
FIGURA 7. 14 Memoria de acceso aleatorio.

Sin embargo, cuando es es Ose inhabilita el funcionamiento de la memoria del


chip. Obsérvese también que cada chip de memoria tiene una línea de control,
selección de lectura/escritura (RWS) , que selecciona el modo de operación de la
memoria. Cuando RWS es O, la memoria leerá el contenido de la posición indica-
Componentes de me mori zación 295

da por las líneas de direcciones y lo hará disponible en su puerto de salida. Por otro
lado. cuando RWS sea l . la memori a escribirá el contenido presente en su puel10
de entrada en la posición de memoria indicada por las líneas de direcc iones.
Cada chip de memori a también dispondrá de 111 puertos de entrada y mde sali -
da. Para valores pequeños de 111 (I o 4). el chip de memori a puede iener puertos
de entrada y de salida separados. No obstante. normalmente los puertos de entra-
da y de salida están combinados para reducir e l núm ero de patill as del encapsula-
do del chip de memoria. Por lo general, el número de patill as determin a el tama-
ño del encapsul ado y por lo tanto la cantidad de área de tarjeta de circuito impre-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
so ocupada por los chips de memoria. El símbolo gráfico para ambos tipos de
encapsulados se muestra en la Figura 7 . 14(b) .
En un ni vel de mayor grado de detalle. un a RAM está organi zada como un
array de celdas de memoria j unto con un decoditlcador de direcc iones y adapta-
dores de entrada/sa lida (l/O). Como se muestra en la Fi gura 7. 15(a), una celda de
memoria (MC, Memory Cell ) puede representarse simbóli camente medi ante un
latch D sincroni zado, una puerta AND, y un adaptador de sali da. Cuando la señal
Selección de fila es 1, el bit memorizado en el latch aparece en la salida. Si la
señal Habilitaciól/ de escritura es también 1, el valor de la EI/trada se memori -
zaría en el latch . La señal Habilitación de escritura actúa como señal de reloj del
latch .
Aunque la MC se ha representado mediante un latch y do puertas. como es
de imagin ar en realidad se implementa con bastantes menos transistores.
Depend iendo de la forma de implementación de la MC las memori as RAM se cla-
sifican en estáticas o dinámicas. En el caso de la RAM estática (SRAM , Static
RAM) , la celda de memori a se construye con entre cuatro y seis transistores,
empleando dos in versores interconectados formando un latch, e implementando
con un transistor la puerta AND de entrada y con otro el adaptador de salida. Este
tipo de celda de memori a SRAM retendrá su contenido indefin idamente en tanto
no se reescriba y se mantenga conectada la alimentación. Sin embargo, en el caso
de la RAM dinámica (DRAM, Dynamic RAM), las celdas de memoria se imple-
mentan con sólo un transistor. El inconveniente de la DRAM es que el contenido
de la celda se pierde con cada operación de lectura, tras la cual habrá que reescri-
birlo. Además ocurre que. debido a imperfecciones de fabri cación, el contenido
de la celda se pierde transcurrido un tiempo. Para contrarrestar este problema cada
posición de memori a debe accederse con cierta frecuencia, o alternativamente, el
contenido debe reescribirse o refrescarse periódicamente. Durante el refresco
todas las demás operaciones de lectura o escritura deben suspenderse, lo cual
puede resultar molesto. A pesar de ello, la mayor densidad y coste reducido de las
DRAM las hace muy populares para el diseño de productos electrónicos. Las
SRAM, por otro lado, aunque más costosas, son más rápidas y por lo tanto apro-
piadas para tiradas más pequeñas y en los casos en que se requiera un acceso a
memoria más rápido.
Tanto las SRAM como las DRAM son memorias volátiles, ya que su conte-
nido se pierde al desconectar la fuente de alimentación. Por este moti vo equipos
tales como teléfonos y contestadores automáticos incluyen baterías que evitan la
296 Principios de diseño digital

pérdida de datos en memoria por un corte temporal del suministro eléctrico. Por
el contrario, las ROM y las PROM son memorias no volátiles ya que preservan
su contenido aunque se corte de la alimentac ión. No obstante el contenido de estas
memorias no se puede leer hasta que se restablezca la alimentación.

En/mda --+-----1 [) Q > - - Salir/a

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
e
Me

H,,/Jilililóón de escritura

(a ) Cel da de memoria

()

A , .....- - . . . ,

.1 1-+-+--,.--+-+--.----++-~--+-+--
Decod ifi -
cador de
di rcco.: i ul1c~
de 2 a-l

es

¡n o /O ,

l b) Esquema de la memoria

FIGURA 7.15 Estructura de una RAM.


Componentes de memorización 297

En la Figura 7.15(b) se muestra un ejemplo de memoria de 4 x 4 que consta


de 16 Me. En cada acceso a memoria, el decodi fi cador de direcc iones decodifica
la dirección y selecciona una de las tilas. En ese momento, si R WS y es son
ambas 1, se escribirá el nuevo contenido en todas las celdas de la fila selecciona-
da. Aunque el contenido de las celdas de dicha fil a estén disponibles en las líne-
as de salida, los adaptadores de salida estarán inhabilitados para permitir que se
escriba el nuevo dato de entrada. Sin embargo, si RWS = O Y es = l. el dato de la
fil a seleccionada pasará a los terminales 10 de entrada/salida.
La organi zación de la RAM impone restri cci ones de temporización de las

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
entradas y salidas para las operaciones de lectura y escritura . Por ejemplo, ya que
el camino crítico desde la entrada hasta la salida pasa a través del decodificador
de direcciones, las líneas de direcciones deben tener valores estables antes que
cualquier otra señal. Esto significa que durante el cic lo de lectura mostrado en la
Figura 7.1 6(a), las líneas de direcci ones se fij arán en lo' y con posteri oridad, en 11'
actu ará la señal CS. El tiempo de retardo 12 - lo se denomina tiempo de acceso a
memoria, ya que se tarda 12 - lo IlS en obtener el dato de la memori a. El tiempo
de retardo 12 - I I se denomina tiempo de habilitación de la salida. ya que repre-
senta el retardo necesari o para habilitar los adaptadores de sal ida. Obsérvese que
después de que las líneas de direcciones hayan cambiado en 13' el dato válido
seguirá di sponible hasta 15' Este interva lo de tiempo 15 - 13 se denomina tiempo
de retención de la salida. Por último, la diferencia de tiempo 1; - 14 reci be el
nombre de tiempo de inhabilitación de la salida. ya que representa el retardo
necesario para inhabilitar el dato de salida. Ya que el camino de retardo desde las
Ifneas de direcciones hasta las salidas es más largo que el cam ino desde es hasta
la sa lida, el tiempo de acceso determina la di sponibilidad del dato cuando la direc-
ción y es se fij an al mi smo ti empo. Por otra parte, si la dirección y es se desac-
tivan al mismo tiempo, el tiempo de inhab ilitaci ón de la salida determ ina el fin de
la di sponi bi lidad del dato.
En la Figura 7. 16(b) pueden verse otras restri cciones de temporizac ión que
deben también satisfacerse durante una operación de escritura en la RAM. En este
diseño hemos supuesto que es y RWS se han acti vado al mismo tiempo. 11, Ya que
el retardo desde las líneas de direcc iones hasta la salida es mayor que el retardo
desde es o RWS. las líneas de direcciones deben fij arse algún ti empo antes, en lO'
El retardo 11 - lO se denomina tiempo de establecimiento de la dirección. Ya que
cada MC es un latcb D sincronizado, en donde es está actuando como señal de
reloj. el valor del dato en el fl anco de bajada de es (e n 13) será memorizado en el
latch. Sin embargo, como sabemos de di scusiones anteriores sobre el funciona-
miento de un latch, para un fu ncionamiento correcto, el dato de entrada debe estar
estable algún tiempo antes y después del fl anco de bajada del reloj. Como puede
verse en la Figura 7.16(b), estos tiempos se denomi nan tiempo de estableci-
miento del dato y tiempo de retención del dato, y están definid os por los inter-
valos de tiempo 13 - 12 Y 14 - 13 respectivamente.
También sabemos, del Capítulo 6. qu e la anchu ra del pulso de re loj debe ser
de una cierta duración para que se memorice el dato correctamente. La mi sma res-
tri cción se impone a las señales es y RWS, que deben acti varse durante un tiem-
298 Principios de diseño digital

po igualo mayor que la anchura del pulso de escritura, definida por el interva-
lo 13 - 11, Además, la dirección debe permanecer estable por algún tiempo después
del flanco de bajada de es o RWS, Este tiempo, denominado tiempo de retención
de la dirección, está definido por el intervalo 15 - 13,
RII'S - - - - - - - - - - - - - - - - - - - - - - - - - - -

es

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Direcciól/ _ _ _ ~X\. ____ 0_irc_c_c_i6_n_V_n_1id_a_ _ ~X\. __________
Dato
Tiempo de
habilitación
< 0",0 válido

Tiempo de
»).---
de la salida inhabiJjlación
.. .. de la salida
... J
Tiempo de re(e nrión
Tiempo,de acceso ( de la salida ..
.. ..
t, t,
t"
" "
(a) Temporización de un ciclo de lectura

RWS

es

~
Dirección
~ X: '-----------,--~ Dirección válida

Dmo ----~,--------«\.____O_"_to_v_á_li_dO_ ' ____


I Tiempo de

d tablccimicnto Tiempo de
»----
Tiempo de
retención tic
de la dirección establecimiento del dato I la dirección
I.... 11 .. ( ..
I I Tiempo de
I retención
, Anchurjl de l pulso de escritura .. .. del dat')

" " "


(h') Temporización de un ciclo de escritura

FIGURA 7.16 Temporización de una RAM,

Como se ha mencionado con anterioridad, los componentes de memoria se


fabrican siempre con tamaños de 2" x 1/1 , en donde 11 y m pueden variar en un
Componentes de memorización 299

amplio rango de valores. En general , no obstante, el producto 2/1 X m será cons-


tante para una tecnología dada y un año de fabricación concreto. Debido a esta cir-
cun stancia, cuando se necesiten memorias mas grandes deben construirse a partir
de chips de memorias más pequeñas disponibles en ese momento. En lo que queda
de esta sección describiremos como construir memorias para palabras más largas
y memorias con mayor capacidad, mostrando cómo ampliar In y 11 más allá de la
capacidad ofrecida por un solo chip.
Para obtener mayor longitud en bits (palabras más largas) podemos conectar
en paralelo varios chips de memoria. Este proceso se ilustra en la Figura 7.17, en

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
donde se obtiene una memoria RAM de 16K x 32 conectando en paralelo cuatro
RAM de 16K x 8: M ), M z' MI ' Y Mo' En este caso, las líneas de direcciones, A,
así como las señales es y RWS, se conectan a todos los chips de memoria.
Obsérvese cómo los buses de datos de entrada y de salida están partidos en cua-
tro bytes, desde el menos al más significativo, y que cada byte conecta a su corres-
pondiente memoria. Con este procedimiento podríamos construir una memoria
para datos de cualquier longitud en bits.

Bus de t'nlrada

J2

8 8 -8 - 8
/4
A ,
I I I I
- A - A - A
- A

r - es M1 r - es r - es M, M r•
M:
r - es
RWS R\VS RIVS r RWS
O o o o
es
RIVS
8 8 ' 8 ,
J2

Bu:. de salida

FIGURA 7. 17 Diseño de una RAM de 16K x 32 con RAM de 16K x 8.

Para obtener una memoria más grande necesitaríamos sin embargo conectar
varios chips de memoria en serie, de tal manera que cada chip almacene una parte
de las palabras de memoria. Este procedimiento se ilustra en la Figura 7. 18, en
donde se ha construido una RAM de 64K x 8 conectando en serie cuatro RAM s
de 16K x 8, M o' MI' M 2, Y M ). En este caso todas las RAM comparten los mis-
mos buses de entrada y salida, así como la señal de control común RWS. Durante
el acceso a memoria, la señal de selección de chip es se utiliza para distinguir qué
300 Principios de diseño digital

A RIt'S Bu ~ de CIUr:lda

h 14

Decodificador

.1 ,
de 2 34
1 O
I
I
A

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
es M I!

RlrS
o
I
I
I
A

es M,

HU/S
o
I
I
I
ti

es M~

RWS
o
I
I
I
ti

es M,

RIVS
o
I

Bus de salida

FIGURA 7.18 Diseño de una RAM de 64K )( 8 con RAM de 16K )( 8.


Componentes de memorización 301

chip de memoria es el que contiene el dato en cuestión. Supongamos que Mo debe


contener los datos con direcciones O a 2 14_1, MI los de direcciones 2 14 a 2 15 _ 1, en
~ desde 2 15 a la 2 15 +2 14_1, y en ~desde 2 15+2 14 hasta 2 16_ 1. El bus de direc-
ciones de 16 bits se divide en dos partes, de manera que los dos bits más signifi -
cativos se emplean para seleccionar el chip apropiado y los 14 bits menos signi-
ficativos se utilizan para seleccionar una posición concreta en ese chip de memo-

45

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ClIhecera 34

Cabecera - I 23

C(lbl!cera - 2 vacía

C(lbecera - 3 vacía

(a) Contenido
de la pi la
antes de insenar 45

45

34

23

vacía

(b) Contenido
de la pila
tras Insertar 45

45

t
34

23

vacía

vacía

(e) Contenido
de la pila después
de extraer 45

FIGURA 7.19 Operaciones con una pila de inserción/extracción.


302 Principios de diseño digilal

ria. Para ello, los 14 bits menos significativos del bus de direcciones se han conec-
lado a las entradas de direcciones de todos los chips de memoria, y los dos bits
más significativos se han conectado a un decodificador de 2 a 4, que determina
cuál de los cuatro chips se seleccionará para la correspondiente operación de lec-
tura o escritura. Esta selección se implementa, como indica la Figura 7.18, conec-
tando cada salida del decoditicador a la entrada CS del chip apropiado .

7.8. PILAS DE INSERCiÓN/EXTRACCiÓN

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Las pilas de inserción/extracción son de uso frecuente en diseiios software y hard-
ware. Por definición , una pila de inserción/extracción es un componente de
memoria con un acceso limitado. A diferencia de la RAM. en la que cualquier
dato almacenado puede ser accedido en cualqui er momento. a los datos memori-
zados en una pila de inserción/extracción sólo se puede acceder a través de una
posición concreta: la cabecera de la pila. En otras palabras, cuando se inserta un
dato en la pila, éste se memoriza en la cabecera y todos los demás datos se dcs-
plazan una posición hacia el interior de la pila (inserción). Por e l contrario. cuan-
do se extrae un dato de la pila, es eliminado de la cabecera y todos los demás datos
se trasladan una posición hacia arriba (extracción). En el ejemplo de pila de inscr-
ción/extracción de 4 palabras mostrado en la Figura 7.19.la pila comienc inicial-
mente dos números: 34 en la posición Cabecera y 23 en la posi ción Cabecera -
1. En la Figura 7.l9(bl puede verse que la inserción en la pila del número 45
requiere que los números 34 y 23 se desplacen hacia abajo. a las posic iones
Cabecera - 1 Y Cabecera - 2. Por otra parte, como muestra la Figura 7.l 9(c). al
extraer e l45 de la cabecera de la pila, el 34 y el 23 son de nuevo desplazados hacia
arriba para volver a ocupar las posiciones Cabecera y Cabecera - 1. Por supucs-
to, en este caso concreto, no podemos insertar más de cuatro números en la pila
sin llenarla. La inserción de cada número adicional provoca la pérdida del situa-
do en la base de la pila.
Cuando se diseña una pila de inserción/extracción, el punto más importante a
tener en cuenta es que los datos almacenados se desplazan en una posición des-
cendente o ascendente en las operaciones de inserción y extracción. respecti va-
mente. Esta observación nos lleva a utilizar registros de desplazamicnto para su
implementación, así como un contador ascendente/descendente para detectar
cuándo está llena o vacía la pila. Estos componentes se emplean en el di seño de
la pila de 4 palabras de m bits que se muestra en la Figura 7.20. Observe que esta
pila tiene l1l líneas de entrada IN; y m líneas de salida OUT;, en donde O ~ i ~ 111- 1.
También dispone de tres señales de control: Inserción/extracción (PlIsh/popl.
Habilitación (Enable), y puesta a cero (Resel) .
La señal PlIsh/pop controla la inserción y extracción de manera que, cuando
es O, se inserta un dato en la pila, y cuando es 1 se el imina el dato de la cabecera
de la pila. La señal Enable habilita el funcionamiento de la pila, y la señal Resel
anula, cuando toma el va lor O, el contenido de los registros de desplazamiento y
del contador. Las operaciones síncronas de la pila se indican en la tabla de opera-
Componentes de memorización 303

ción de la Figura 7.20(a). Observe que la pila tiene dos señales de salida. Vacía y
Llella, que indican el estado de la pila de la siguiente manera: Cuando \klcía toma
el valor I indica que la pila está vacía; por otro lado, cuando Llena es l . la pila
está llena.
En la Figura 7.20rd) puede verse que la implementación de la pila incluye un
regi stro de desplazamiento con carga en paralelo (RDconCP) por cada pareja
entrada/salida (en total la pila contiene 111 registros de desplazamiento). Estos
registros desp lazarán a la derecha cuando se pida una operación de inserción y a
la izquierda cuando sea necesaria una de extracción. Cada nuevo dato se inserta

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
en la pila a través de la entrada 1L del registro de desplazamiento, siendo memo-
rizado en la salida Q3' que representa la cabecera de la pila. Ya que el contador
contiene el número de entradas a la pila, por cada flanco de subida del reloj, como
sabemos. o bien el registro desplazará a la derecha con la cuenta ascendente del
contador (si PlI sh/pop = O Y Enable = 1), o desplazará a la izquierda con la cuen-
ta descendente del contador (s i PlIsh/pop = I Y Enable = 1).
Los valores de las señales de control para los registros de desplazam iento y el
contador pueden derivarse de la tabla de control de la Figura 7.20(b). De esta tabla
podemos tambié n deducir las siguientes ecuaciones booleanas para las di stintas
señales de control:
S¡ = Enable
So = (PlIsh/pop) 'Enable
D = (Push/pop)Enable
E = Enable
La implementaci ón de estas ecuaciones constituye la lógi ca de control de la
pila de inserción/extracc ión.
Según la tabla de salida de la Figura 7.20(c), la lógica de salida decoditicará
los estados 000 y 100 del contador. La señal Vacía se pondrá I cuando el conte-
nido del contador sea O. y será O en cualquier otro instante. Por otra parte. cuan-
do el contenido del contador sea 4, el valor de la señal Llella será 1, siendo O el
resto del tiempo. Por tanto se pueden deducir las siguientes ec uaciones booleanas
para la lógica de salida:
Vacía = Q2' Q¡ 'Qo '
Llena = Q2 Q ¡ 'Qo'
La principal desventaja de la implementación con registros de desplazamiento es
el número elevado de registros caros que se necesitan cuando se requiere una pila
grande. Por esta razón. las pilas de inserción/extracci ón grandes se implementan
normalmente con RAM. Además, ya que las RAM no son capaces de desplazar
su contenido. las operaciones de inserción y extracción en estas pilas deben imple-
mentarse de una manera ligeramente diferente: cambiando la posición de la cabe-
cera de la pila. En otras palabras , al insertar datos en dicha pila, la dirección de la
cabecera se incrementará por cada inserció n, y, por el contrario. se decrementará
en cada extracción . Considérese, por ejemplo, una pila que está vacía: La cabece-
ra está en la dirección O. Entonces, a medida que se van escribiendo datos en la
304 Principios de diseño digital

PUSH/POP ENAStE OPERACIONES

x O No cambia
O inserción
Extracción

(a) Tahla de opcr:¡ción

CONmOLES SALIDAS DEL


DE LOS CONTADOR

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
REGISTROS DE CONmOLES
DESPlAZAMlENTC DEL CONTADOR
°2 0, °0 VAcfA LLENA

PUSH/POP ENABLE S, So O E O O O I O
O O I O O
X O O O X O O I O O O
O I I I O I O I I O O
I I I O I I I O () O I

(b) Tabla de control (e ) Tah la de s alid a

"O"
I 1
r--< R e St' l 1, 1,
SI RDconCP
SI> Q, Q, Q, Q"

I I
IN", I

I "1"
!---< Reset 1, 1,
s, RDcol/ CP
S(I Q, Q, Q, QII

Pll shlpop .. fVj ~


I I OUT", I

~-L)
I f--< R e.\'el
D
E
Contador
ascendente/descendente
El w h le
f-- Ser Q, Q, Q, QI'
Lógica de control
I I
Lógica
1 ... Llena
Rt'set
de salida

(d) ESqUCrll á de la pi la

FIGURA 7,20 Pila de inserción/extracción de 4 palabras.


Componentes de memorización JOS

cabecera de la pila, la dirección de dicha cabecera se incrementa con cada opera-


ción de inserción, de manera que la cabecera de la pila es siempre una posición
vacía en la que se escribirá el nuevo dato en respuesta a la siguiente operación de
inserción solicitada. Por otra parte, cuando se solicite una operación de extrac-
ción, se leerá el dato de la posición justo debajo de la cabecera, cuya dirección es
uno menos que la de la cabecera. Con esta forma de proceder, sabemos que, para
una RAM de 2" palabras. la pila estará vacía cuando la cabecera esté en la posi-
ción O. y llena cuando esté en la posición 2"- 1. Obsérvese que la posición 2"-1
nunca se usa para almacenar datos, sino sólo para determinar si la pila está llena.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
A pesar de que estamos con ello sacrificando una de las 2" palabras de la RAM ,
se simplifica con ello la lógica de salida.
En la Figura 7.21 se muestra este tipo de implementación de la pila, con una
memoria RAM de I K y dos contadores que apuntan a la posición de la cabecera
y a la inmediatamente inferior. Obsérvese que las señales de entrada y de salida
y las operaciones de la pila son las mismas que en la Figura 7.20, y que, por con-
veniencia, se ha reproducido en la Figura 7 .21(b) la tabla de operación de la
Figura 7.20(a). Como puede verse, esta pila tiene dos contadores de 10 bits, un
selector de 10 bits, una RAM de l K, una lógica de control y otra lógica de sali-
da. Los dos contadores, denominados Cabecera y Cabecera-l. contienen res-
pectivamente la dirección de la cabecera (que representa la posición más baja sin
utilizar) y de la posición inmediatamente debajo de la cabecera (que representa
el dato insertado más recientemente en la pila). Como es de esperar, los conteni-
dos de los contadores Cabecera y Cabecera-I difieren en 1, ambos se incre-
mentarán durante una operación de inserción, y se decrementarán en una opera-
ción de ex tracción. Cuando se ordena una operación de inserción , se selecciona-
rá el contenido del contador Cabecera como dirección de la RAM, mientras que
para una operación de extracción será seleccionado como dirección el contenido
de Cabecera-1.
A partir de la descripción anterior hemos construido la tabla de control mos-
trada en la Figura 7.21 (c), que especifica los valores de todas las señales de con-
trol de los contadores, del selector, y de la RAM , para las operaciones de inser-
ción y de extracción. De esta tabla podemos deducir las siguientes ecuaciones
para la lógica de control:
E = CS = Enable
S = RWS = (PIIS/¡/POP)' Enable
D = (PlIsh/Pop)Enable
La lóg ica de salida consta de dos puertas que indican si la pila esta vacía
o ll ena . Ya que la pila está vaCÍa cuando es cero el contenido del contador
Cabecera, se ha e mpleado una puerta NOR de 10 entradas conectadas a la
salida de dicho contador para detectar el estado de pila vaCÍa. De forma simi-
lar. decimos que la pila está llena cuando el contenido del contador Cabecera
es todo unos , lo que se detecta con una puerta AND de 10 entradas cuando su
salida se hace 1. En la Figura 7.21(d) se muestra el esquema completo de la
pila.
306 Principios de diseIio di gital

Il timo
I dalO ~ CtIIJl'ca{/ - II PUSH·POP ENABLE OPERACIONES
2
I"aci" ...--1 ClIl",c l'f1l I
x () No ca mbia
O I Inse rc ión
102 1 HIere, I I Extracc ión
1022 \ ' //("1( 1

IUn 1'(l tlÚ lb) Tahla el!: lllJ!..TW.: ióll

(a) Di seño simbólico

CONTROL CONTROLES CONTROLESDEL

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
DEL SELECTOR DE LA MEMORIA CONTADOR

PUSHlPOP ENABLE S es RWS o E

X o x o o x o
o I I I I o I
I I o I o I I
(e) Tahla de control

r- D L
'-- E
D

r;"
E e/llnTe,." CI/I"'l,' m I
r- R e.\',,[

Re.H'¡
I ->
I
I I
PII.\'/JlpOp
1\

I
Sc!c-c(ur Il I
I P-J-
""'1 I A
1{f\ ~ 1 de I K

('.\

HWS
1.J;gim
dt' CrJlllml
Il u, d~ [JO

V Jgicl/
d,',mNda tg \ ,. rUl

LI, '11<1

(dl Esquema dc la pil a

FIGURA 7.21 Pila de inserción/extracción implementada con una RAM de 1K.

7.9. COLAS PRIMERO EN ENTRAR, PRIMERO EN SALIR


Las colas primero en entrar, primero en salir (FIFO. F irSI-/n-FirSI-Out). se
empl ean con frecuencia para «suavizar ráfagas» en las peticiones de servici o.
Considérese por ejemp lo la gente que hace co la para sacar entradas de cinc. para
Componentes de memorización 307

entrar en un autobús, o para disfrutar de un viaje en un parque de atracciones, que


debe esperar en fila hasta que les llegue el turno para recibir un servicio.
Situaciones similares pueden surgir con diferentes procesadores, ASIC, o cuales-
quiera elementos que intercambien datos entre si, en el sentido de que cuando la
producción de datos exceda momentáneamente su consumo, debemos intercalar
una cola PIPO entre el productor de datos y el consumidor de los mismos. En tales

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Cabecera
vacía

Caf'f'ara - I vacía

Cllbea m - 2 34
Cabecem - 3 23

(a) Contenido de la coja


antes de lllcmorizar
el mímcro 45

vacía

45

34

23

(b) Contenido de la cola


tras memori zar 45

vacía

vacía

45

34

23
(e) Contenido de la wla
después de leer 23

FIGURA 7.22 Funcionamiento de una cola FIFO.


308 Principios de diseño digital

casos, por supuesto, la velocidad de producción no puede exceder indefinida-


mente a la de consumo, ya que se requeriría una cola infinita. Por el contrario,
ambas velocidades deben ser en media iguales. Sin embargo, ocasionalmente apa-
recerán ráfagas de producción y de consumo, y el tamaño de la cola determinará
la longitud de ráfaga que se puede tolerar.
El objetivo de una cola FIFO es memorizar los datos en exceso, que serán
eventualmente leídos de la cola en el mismo orden en el que fueron escritos. Así
pues el primer dato memorizado es leído el primero, y así sucesivamente, como
ilustra la Figura 7.22. En la Figura 7.22(a) se muestra el contenido de la cola tras

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
introducir los números 23 y 34 pero antes de que llegue el 45. En la Figura 7.22(b)
puede verse el contenido de la cola después de introducir el número 45. Obsérvese
que cuando se lee de la cola, el número 23 sale y es descartado, haciendo que el
contenido de la cola sea desplazado en una posición hacia abajo. La Figura
7.22(c) muestra el contenido de la cola tras el desplazamiento.
En general , una cola tiene m líneas de entrada IN¡, y m líneas de salida OUT¡,
con O ~ i ~ m-1. Dispone también de tres señales de control: Lectura/escritura,
habilitación (EnabLe), y puesta a cero (Reset). Cuando la señal Lectura/escritura
es O, la cola dará como salida el dato que ha estado memorizado por más tiempo,
tomándolo del principio de la cola. En consecuencia, cuando la señal Leclural
escritura sea 1, se añadirá otro dato al final de la cola.
Las FIFO normalmente también disponen de dos salidas de control que se
emplean para controlar los circuitos productor y consumidor. Por ejemplo, cuando
la cola esté llena, la señal Llena tomará el valor 1, avisando al productor que puede
perderse cualquier dato adicional que envíe. Cuando la cola está vacía, la señal
Vacía se hace 1, avisando al consumidor que no han llegado aún nuevos datos.
Ya que la cola preserva el orden de llegada de los datos, podemos construir la
cola utilizando registros de desplazamiento junto con un contador que contabili-
ce el número de datos que contiene. Esta implementación de la cola se muestra en
la Figura 7.23, y su tabla de operación en la Figura 7.23 (a). Cuando se introduce
un dato en la cola, los registros de desplazamiento desplazan su contenido a la
derecha y se incrementa el contador. Por otra parte, cuando se lee un dato, éste se
toma del principio de la cola mediante el selector, y el contador se decrementa.
Obsérvese que el dato no se descarta en ese instante, sino que, en su lugar, se inva-
lida al decrementar el contador. En la Figura 7.23 (b) hemos trasladado la tabla de
operación de la Figura 7.23(a) a una tabla de control, que muestra los valores de
las distintas señales de control de los elementos de la cola. En una operación de
lectura, el contenido del registro de desplazamiento no cambia y el contador dis-
minuye en 1 su contenido. En una escritura, por el contrario, el registro desplaza
en una posición a la derecha y en contador incrementa en I su contenido. El con-
tador también controla la selección del dato apropiado durante la operación de
lectura. Como regla, el contador se pondrá a IIII durante la inicialización, de
manera que su contenido sea cero cuando se introduzca el primer dato en la cola.
Este sesgo negativo de l en la cuenta es necesario para un control adecuado del
selector, que requiere uno de los valores 00, 01, 10 o 11 para seleccionar una de
las salidas del desplazador.
Componentes de memorización 309

Las ec uaciones booleanas de las señales de control , deducidas de la tabla de


control. son las siguientes:
So = SI = (LecllIra/EscriIUra )Enable
D = (LecluralEscrilura ) ' Ellable
E = Ellable

LECTURAlESCRITURA ENABLE Of'ERAClOI€S LECTURAlESCRfTURA ENABLE 5, S. D E

x O No cambia x O O O X O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
O 1 Lecwra O O O 1 1
1 1 Escritura 1 O 1
(a ) Tabl:¡ de opcr;Jc ló n eh ) Tabla de control

IN,
I
r--< R t'Jrt 1, 1,
S,
• L
RDronCP
S" Q. Q, Q Q,

I I
• • l
e
e
• ] OUT~
N

• -.
~~
~

'J!~
IN" (
I •
1•• 'll/Irall',\'( ' rllUr" r---< S,RON " RDconCP "
IL •
I~
-LJ L •
.~~¡ Q. Q, Q, Q" ~
Q)------ I I o
I
Erwhl". o. u
~ O{.'T..
~

'--- -.

1)
E
Con l.Ldllf
a."I:~nJe n [e/d"'~('c lld('n l e
'í L:..r-
S..t Q. (!~ (1, Q,

LÓj! IC,1 \,k 1:I1Iltru!


I Urll (/

Lógica
de ~ :Jl ida
~ l í,¡ 1Il

(eJ Esque mu de];I cola

FIGURA 7.23 Cola FIFO de cuatro palabras.

El objeti vo de la lóg ica de salida es especificar el valor de las se ñales Vacía y


L1el/(I , indicando que la cola está vacía cuando el contenido del contado r es todo
unos. y que está ll ena cuando dicho contenido es O11. Podemos decir po r tan to
que :
310 Principios de diseño digital

Llena = Q2'Q¡QO
Vacía = Q2Q ¡QO
La Figura 7.23(c) muestra el esquema completo de la cola FIFO de 4 palabras.
Como ocun'e con las pilas de inserci ón/extracción. colas más grandes se
implementan normalmente con una RAM en lugar de con registros de desplaza-
miento, e incorporan dos contadores que apuntan al principio y final de la cola.
Esta implementación se conoce con el nombre de cola circular y se muestra sim -
bólicamente en la Figura 7.24(a). Obsérvese que se emplea una RAM de l K Ydos
contadores designados Inicio y Final. El contador Inicio contiene la dirección del

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
primer dato escrito. Cuando se solicita una operación de lectura. se transfiere al
bus de entrada/salida (l/O) el dato de la posición direccionada por el contador
Inicio, y el contenido del contador se decrementa. El contador Filial contiene la
dirección de la primera posición vaCÍa de la cola, y cuando se solicita una opera-
ción de escritura, el dato se escribe en la posición direccionada por este contador.
que en ese momento se incrementa. Si se leen datos de la cola con mayor fre-
cuencia de la que se escriben, el contador Inicio apuntará a la misma posic ión que
el Final, indicando que la cola está vacía. Por otra parte. si se están escribiendo
datos en la cola con mayor frecuencia de la que se leen. el contador Final. que está
siendo incrementado en la forma módulo 1024, apuntará eventualmente a la
misma posición que el l/licio, aunque en este caso significará que la cola está
llena. Para evitar esta ambigüedad se pueden emplear contadores de II bits
(módulo 2048), que indiquen si la cola está vacía cuando ambos tengan el mismo
contenido, y que está llena cuando sus contenidos difieran en sólo el bit más sig-
nificati va.

o vacía
¡ llato ....--1 Inicio
2 dato
, ,¡,
, LECTURAlESCRfTURA ENABLE OPERACIONES
't'
dMo x o No cambia
102 ¡ \'{jera ....--1 Filial O Leclttra
1022
I Escritura
1023
(a) Diseño sim bólico (ni Tabla d~ operac ilin

E E
LECTURAlESCRfTURA ENABLE S es RWS (Inicio) (FinaQ

X O X O X O O
O I I I O I O
O I O I
(e) Tabla de control

FIGURA 7.24 Cola FI FO implementada con una RAM de 1K.


Componentes de memorización 31 1

R t' I'f'1

E E
R,'s!'1 R,' ,',,¡
~ 111/, '10 '-----< FlIlIIl

1> 1>
I 1 10 I 10

I
I ~S I

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I
COlnparador
I < = >
Sdector \1

I I RAMd(' IK

Ellllh/" r?---J A
es
1.i'nll"(¡}"It'rilllrll L¡¡ HIVS

t 1 Bus de 110

\'tIC';'

~ L/CIIU

Id) Esquema

FIGURA 7.24 Continuación.

En la Figura 7.24 se muestra una implementación de cola que utiliza dos con -
tadores y una memoria de 1K. Esta cola emp lea un selector para elegir el conte-
nido del contador Inicio O del Final, así como un comparador para contrastar sus
contenidos. La Figura 7.:~4(b) muestra su tabla de operación, la Figura 7.24(c)
indica su tabla de control, y por último, el esquema completo de esta implemen-
tación se muestra en la Figura 7.24(d) .

7.10. CAMINOS DE DATOS SENCILLOS


Los caminos de datos (datapaths) se emplean en todas las implementaciones de
procesadores estándar y de AS IC para realizar cálculos numéricos complejos y
manipular datos . Un camino de datos consta de elementos de memoria temporal,
además de unidades aritmét icas, lógicas, y de desplazamiento. Consieleremos, por
ejemplo. cómo se podría realizar la suma ele 100 números:

I(KI

suma = L. x,
' '''' I

Este cúlculo podría realizarse iterativamente, declarando sl/II/a como variable


te mporal. inicialmente puesta a O. y ejecutando el siguiente bucle:
312 Principios de diseño digital

suma = O
bucle:
para i = I a lOO
suma = suma + Xi
fin de bucle
Este bucle podría ejecutarse en un camino de datos de 32 bits fonnado por un
registro (denominado acumulador) y una ALU. La variable suma se almacenaría
en el acumulador, y en cada ciclo de reloj se sumaría a suma, mediante la ALU,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
el nuevo Xi' de manera que pueda almacenarse de nuevo en el acumulador el
nuevo valor de suma.
Por regla general, la mayoría de los diseños digitales trabajan de la misma
manera. Los valores de variables y constantes se memorizan en registros o memo-
rias, son captados de los componentes de memoria tras el flanco de subida de la
señal de reloj, transfonnados mediante los componentes combinacionales duran-
te el tiempo entre dos flancos de subida del reloj, y los resultados se vuelven a
almacenar en los componentes de memoria en el siguiente flanco ascendente de
la señal de reloj.
La Figura 7.25 muestra un ejemplo de camino de datos sencillo que podría
realizar la suma anterior. Contiene un selector, para seleccionar como operando de
la izquierda para la ALU o bien O o bien un dato del exterior. El operando de la
derecha será siempre el contenido del acumulador, que también puede obtenerse
a través de un adaptador triestado. El acumulador es un registro de desplaza-
miento con carga en paralelo. La Figura 7.25(a) muestra el esquema de este cami-
no de datos, y en la Figura 7.25(b) aparece la palabra de control de 9 bits que espe-
cifica los valores de las señales que controlan el selector, la ALU , el acumulador,
y los adaptadores de salida. Todos los componentes del camino de datos son de
32 bits.
En cada ciclo de reloj, una palabra de control definirá la operación del cami-
no de datos. Para calcular la suma de los 100 números, necesitaríamos 102 ciclos.
En este caso las palabras de control para todos los ciclos de reloj son iguales,
salvo la primera y la última. En el primer ciclo debe ponerse a O el acumulador,
en cada uno de los 100 ciclos siguientes se añade un nuevo dato a la suma del acu-
mulador; y finalmente , en el último ciclo, se extrae la suma acumulada.
El camino de datos anterior sería útil para expresiones aritméticas sencillas;
para expresiones más complejas se requerirá utilizar varias variables temporales
así como un camino de datos más elaborado, que necesita de un banco de regis-
tros en lugar de un solo acumulador. En la Figura 7.26(a) se muestra un ejemplo
de camino de datos más complejo, consistente en un selector, un banco de regis-
tros con 3 puertos, una ALU, un desplazador, y adaptadores triestado. En este caso
es el banco de registros el que suministra los dos operandos, además de memori-
zar el resultado en cada ciclo de reloj . Para una descripción más completa, en las
Figuras 7.26(b) y (c) se incluyen las tablas de operación de la ALU y del despla-
zador, y en la Figura 7.26(d) la palabra de control. El camino de datos se contro-
la por una palabra de 20 bits que determina todos los destinos, fuentes, y opera-
Componentes de memorización 313

ciones del camino de datos. Para una mejor comprensión del funcionamiento del
camino de datos, a continuación mostramos su uso para implementar el algoritmo
del contador de unos .
EntraJa
o
o
8 Selector

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
7 M A 8
6 S, ALU
5 S"

4
J

S, /, /,
2
I Acumu lador
CIk >

0 _------\

(a ) Esquema del camino de dalas

8 7 6 5 3 2 1)

Selección Controles Valores para Controles del Habilitación


de entrada de la ALU desplazamiento acumulador de salida

(b) Palabra de cOlllro l

FIGURA 7.25 Camino de datos sencillo con un acumulador.

EJEMPLO 7.1 Implementación del contador de unos


PROBLEMA
Utilizando un camino de datos co n un banco de registros de 3 puertos, di se ñe un contador
de un os que c uente el número de unoS de una palabra de datos de entrada y devuel va al final
el res ultado.
SOLUCIÓN
Para reso lve r es te proble ma suponemos que la palabra de datos se sumi nistra desde el ex te-
ri o r y está di sponible como entrada al cami no de datos. Para desc ribir el algoritmo utili za-
mos las variables Dato. Cuenta. Máscara, y Temp. La va riable Datn aJmacenará la palabra
314 Principios de diseño digital

de dato. que constará de ceros y unos. El algoritmo recorrerá Dato. desde el LSB a l MSB.
y sumará I a Cuenta por cada I que e ncuentre en Dalo. Máscara contiene la conslanle l. y
Temp se empleará para memori za r te mpora lmente el LSB de Dato. Tras la inic ialización. el
.""un

"
Is
I
l
SCICl: IOr
•I
O M S, So OPERACIONES DE LA ALU

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
O O O Complementar A
O O I AND
O I O EX-OR
O I I OR
16- 18
3
, W4
I O O Decremen tar A
5 I\'E
B ¡IOCO O I Sumar
de rcgblros I O Restar
CI k > de,'ii X III I I Incrementar A
4
3
, RAA
RAB ~ lb , Opl'rae iullc", dl' la A LU
l REA REB ~
R- I O 3
, I
7

BusA Bus B

NI A B
(,
5 S, ALU OPERACIONES DEL
S2 S, So DESPLAZADOR
4 S"

..O'. O O O Pasar
"0"
O O I Pasar
I I O
O
I
I
O
I
No usada
No us¡¡da
S. 1, 1H
,3 S, Ol's"lll:adllr
I O () Dcsplaz¡¡r a la izquierda
l S"
() I ROlar a la izquierda
I O Desplazar a la dercrha
I ROlar a la derecha
Bus de resuJlado
Il' ) 0Pl' r:Il"Lllrl C., dl" dc\plilLadnr

'\
11

OUl po rt

(<1) Esquema del ca mino dI! dato ...

1') [8 J7 16 15 14 U 12 11 10 C) 8 7 6 ::; ~ 2 ()

Dirección Dirección Di rección Operación I Operación I I


lE de escritura
I de lectura A
I de lectura B
I de la ALU Idel desplazado~ QE

Id) Palahra tic control

FIGURA 7.26 Camino de datos con un banco de registros de tres puertos.


Componentes de memori zaci ó n 315

algori tm o aislará el LSB de Dato. lo almacenará en Temp, sumará Temp a Cuenta, y final-
mente. desplazará Dala una posició n a la derecha. Esta secuencia se repet iría hasta qu e
D o l O contenga sólo ceros. Con ello. este algoritmo repetiría la secuencia de operaciones
desc rita un número distinto de veces para palabras de datos diferentes .
En la Figura 7.27(a) se muestra el algoritmo básico para contar el número de unos de la
palabra de datos. Las sentencias 1, 2, Y 3 se utili zan para inicializar las variables, mientras en
las sentencias 4 y 5 se suma uno a CI/ellla siempre qu e el LSB de Dato sea igual al, Y des-
pués, en la sentencia 6 se desplaza Dala en una posición a la derecha, introduciendo un O en el
MSB de dicha valiable. La sentencia 7 se utiliza para obtener como salida la Cuenta. Obsérvese
que se están empleando los símbolos » y « para especificar desplazamiento de datos a la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
derecha o a la izquierda. indicando a la derecha del símbolo el número de desplazamientos.

l. Dato: = Inporr R 1: Dmo


2. CI/t!n/tl : =0
3. Mr1.l'c(/m ; = I
wh ile Dato : i:- O repeat R.: Máscarn
4. 7clI1{J: = Dmo A ND IvllÍsr;am
5. CI/nl/a: : Cl/l'l1I{/ + Ti'lI1f1 R, : C/U!1I111
6. Da/o: = Dmo » I
l'nd whilc
7. Ol/ I/IV!"/ : = Cuen/a
(a) Algori tmo b~¡ s ieo para la c ue nta de linos (bl Asignación de regislros

PAlABRAS lE rnREccKiN DIRECCIÓN DIRECCIÓN OPERACKiN OPERACIÓN DEL OE


DECONTAOL (Ha~il. entrada) DEESCRITURA DElECTURAA DE LECTURAS DElAALU DESPLAZADOR (HabiIiI. saida)

1 I R, X X X X O
2 O R3 O O Sumar Pasar O
3 O R, O X Incrementar Pasar O
4 O R, R, R2 AND Pasar O
Repetir
5
6
O
O
R3
R,
R3
R,
R4
O
Sumar
Sumar
Pasar
~ alI M
O
O
) mientras
DlIto~O

7 O Ninguna R3 O Sumar Pasar 1

(e) Palabras de con trol para e l contador de unos

FIGURA 7.27 Algo ritmo contador de unos.

Al implementar este algo ritmo debemos en primer lugar asignar las variab les a registros
del banco de regi stros. Como indi ca la Fi gura 7.27(b). las variabl es Dalo. Máscara, e l/ f ilfa,
y Tel1lp se han asi g nado a los registros R 1, R2 , Ry Y R..¡, respectiva mente. Una vez qu e
hemos as ig nado estas variables a los registros, estamos en disposición de deduc ir las pala-
bras de control adecuadas para cada sentencia. mostradas en la Figu ra 7.'27( c). donde se
emp lean nemotécni cos en los distintos campos de control para indicar las operac iones y las
direcciones de los registros de operandos y res ultados. Para controlar el camino de datos
supo nemos que el contado r de UIlOS es un módu lo separado, qu e comenzará la cuenta de
un os siempre qu e una señal Inicia sea 1, Y que pondrá la se ñal Hecho a I tan pronto como
esté di sponible el resultado.
316 Principios de diseño digital

Como puede verse en la Figura 7.28. la representación FSM del contador de unos cons-
tarfa de ocho estados. Observe que el contador permanecerá en el estado So hasta que la
señal I/licio se ponga al. Y después. en los siete estados siguientes. s" ...•s7. ejecutará el
algoritmo de la Figura 7.27(a). Finalmente, en el estado S7' se obtendrá el resultado. ponien-
do la señal Hecho al . Y retomando al estado original so'
El controlador del contador de unos tiene dos señales de entrada. Inicio y Dato O, Y *
una señal de salida. Hecho. Inicio y Hecho se utilizan para comunicar al resto del sistema
*
los instantes de comienzo y de terminación . La señal Dato O es básicamente una señal de
estado proporcionada por el camino de datos. En cada ciclo de reloj. el controlador debe
también suministrar 20 señales en la palabra de control. Para implementar los ocho estados

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
se necesitan tres biestables D. que denominamos Q2' QI' y Q()' En las figuras 7.29(a), (b),
y (e) se muestran las correspondientes tablas de estado siguiente. mapas. y ecuaciones de
estado siguiente.

Inicio :::: O

Dalo ;: ¡lIporr

ClIell1(l = O

Mdscara :::: I

Temp = Dato AND Máscara

Cuenta = C/lel!ta ... Temp

Dmu :::: Da/o> > 1 (desplazamiento a derecha)

OIll/JOrl = Cllema

FIGURA 7.28 Representación FSM del contador de unos.


Compo nentes de memorizació n 317

La lógica de salida de este contador puede deducirse de las palabras de co ntro l de I~


Figura 7.27(c). En la Figura 7.30(a) se muestra una tabla para la lógica de salida, obtenida
a partir de la Figura 7.27(c) sustituyendo los valores binarios apropiados para los distintos
nemotécnicos. Las expresiones mínimas para las distintas señales de control podrían haber-
se obtenido de la tabla de la Figura 7.29(a) utili zando algun a técnica de minimización lógi-
ca. Las ec uaciones de control se dan en la Figura 7.30(b). Por último. en la Figura 7.3 1 se
muestra el esquema de l contador de un os empleando e l camino de datos introd ucido en la
Figura 7.26.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Inicio, (Dato = O)

ESTADOS
°2 0, °0 00 01 10 11

So O O O 000 000 00 1 00 1
s, O O I 010 010 O J O 010
S2 O I O OI 1 01 I O J J 01 J
S3 O I I 1 00 1 00 1 O O 1 00
$. I O O I Ol I Ol 1 01 101
s5 I O I I 10 I 10 l J O I 10
S6 I I O 100 I I I 1 00 I I I
s7 I I I 000 000 000 000

(a) Tabla de eSlado siguiente

Q, Qu Q, =O Q, =I
00 01 11 10 00 01 11 10
" ricio (Da ro = O)

00 000 010 1 O O 01 1 1 O 1 I 10 000 100

01 000 010 100 01 1 I O 1 1 10 000 1I1

11 001 010 100 01 1 10 1 1 1 O 000 111

10 001 010 100 O 1 1 I O 1 1 10 000 lOO

Q,. Q,.Q"
(b) Mapa de Karnaug h

Qz{.figuieme) = Q '1 Q ,QO + QlQ ', + Q2Q '\I


Q¡(sigll ienle) = Q', QU+ Q'2Q,Q'O + (Dato = O) Q IQ 'j¡
Qo(siguiellle ) = Q' ~ Q , Q 'H + Q~ Q ' , Q' () + Inicio Q' ,Q'n + (Da ro = 0)Q2Q '0

le) Ecuaciones de estado siguiente

FIGURA 7.29 Lógica de estado siguiente para el controlador del contador de unos.
318 Princip io!-. tic disciio digi tal

DIRECCIÓN DE ESCRITURA DIRECCKlN DE LECTURA A DIRECCIÓN DElECTURA B Of'ERACIONES OPERACIONES DE


DE LA AlU DESPlAZAMlEtiTO
ESTAlIC 0, 0, 0, lE WA, WA, WA, WE RAA,RAA,RAA,REA RAB, RAB, RAB, REB M S, S, S, S, S, DE

'\'0 O O () () X X X O X X X O X X X O X X X X X X n
.\'1 () () I I O O I I X X X O X X X O X X X X X X O
s~ O I O () O I I I X X X O X X X O I O I O O O O
,\'J O I I O O I () I X X X O X X X () I I I O 11 IJ 1)
.\'4 I () O () I O O I n O I I () I O I O O I O O O O

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
'\'5 I O I O O I I I () I I I I O O I I O I O () (1 (j
Sf, I I O O () O I I O O I I X X X O I 11 I I I () ()
S7 I I I O X X X O O I I I X X X O I () I () O () I

la) Tahla tl l' la lógic:! dl' "alirla

It: = Q':U ' !QII RA" , = () I~A /J ~ = Q1I .\/ :=- {]+{)"
1\:.\: = Q ' jQ'u «.-lA ] = O" R" IJ ¡ = Q'II 1 =Q':Q,
I\j\ ¡ = Q~ Q(. + Q '~ Q I RAAu = I RA/JI( = () 1
11
= 1
\\'A I • = O ' ]Q" + OjO'q REA = Q: R E/I = Q~ {)' ! \ , = I ¡ = Q ,(J I(J '"
IVI:~ = O ~ Q ' ] + O 'cQI! + QIQ'II 11 , = /l

fU; = (! ~ (! (JI!

FIGURA 7.30 Lógica de salida para el co ntro lador del contad or de unos .

7.11. CAMINOS DE DATOS GENERALES


En la Secci ón 7. 10 se han desc rito algun os caminos de daLOS senci llos. No obstan-
te. para muchas apli cac iones de a lta velocidad. estos ca minos de datos si mples pro-
bablemente resu ltarían de masiado lentos. Para mej orar sus prestac iones tendría-
mos que redisciíarlos a fin de que puedan reali zarse varias operac iones concurren-
te mente. Estos caminos de datos se denominan caminos de datos para lelos.
La mane ra ob via de para le li zar un cam ino de datos se ría increme nta r e l nLÍJ1lc-
ro de puertos de l ban co de reg istros y utili zar varias un idade s fun c ionales. como
se ha hec ho en e l camin o de datos para le lo de la Figura 7.32. Este cami no de dalos
tiene un banco de registros de 6 puertos (con cu atro pu ertos de lectura y dns de
escrilura ). se is bu ses (cuatro bu ses de operandos y dos de resu ltadu.' ). y c uatro
unidades funcionale s (una AL U. un desp lazador. un multip lieador y un di visorl .
Este camino de datos podría rea li zar dos operaciones e n para le lo. una en la ALU
o e n e l desplazador. y la otra e n e l multipli cador o en e l di visor.
No obs tante. este camino de datos no podría reali zar do, s umas o dos multi -
pli cac iones en paralelo. En este se nt ido. e l ca mino de datos ele la Fig ura 7.32 pro-
porciona só lo un paral e li smo parc ial. En otras palabras. si e l a lgoritmo que e,té
procesando no requi ere el tipo de paral elismo que prese nta. este camino de datos
Componentes de memorización 319

fu ici" Lógica de e stado


siguiente

L~ f-
r-> Q',
L-- ~

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Lt- .---
~
D , Q,

r- > Q'I
'----

~ J
L t- Du Ql)

Clk Q '(I
u-
Y ¡
L--
11I1/O/"'
IJl/fo=O
H('cI/f1
/){/fo"# O
-(] Bus de resultadu

fE
\\'A ::
Jr \VA l
~

~ \VA 11

\..-.
yu IVE

O RAA ::
RAA I
I R;\¡\ o
Cam ino
dc datus
Rt.A
Unidad
de control RAIJ .
RAB I
O R;\/lu
REIJ
M

1 Sil

I
s,
s,
U Sil

01;
I I Lógica de salida OUlport

Q, Q', Q, Q', Qo Q'o ¡


FIGURA 7.31 Esquema del contador de unos.
320 Principios de diseño digital

no duplicaría las prestaciones del camino sencillo como sería de esperar. Además,
los componentes de este camino de datos no están totalmente conectados, lo que
implica que no se pueden explotar algunos tipos de paralelismo. Por ejemplo, no
podría ejecutar en paralelo operaciones de multiplicación y división, o realizar en
paralelo operaciones de suma y de desplazamiento, aunque puede disponerse de
ellas en el algoritmo. Como puede verse, el problema de este camino de datos es
que el multiplicador y el divisor, así como la ALU y el desplazador, deben usar
los mismos buses para sus operandos y resultados, lo que limita su capacidad para
realizar operaciones en paralelo.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Entrada1 Entrada2
Bus de resultado ¡ Bu s de resultado ,

I
Selector
II I I Selector
I
I
I I
Banco
de regisrros

BlI s~

7 Bu s~

Bus.¡

I ALU I I Desplazador I IMultlpltcador I I Divisor 1

L--..,--------- I
~ V _,g.L-__~"",7 _ _--,

FIGURA 7.32 Camino de datos paralelo.

De la discusión precedente podemos concluir que la ganancia en prestacio-


nes de un carnino de datos paralelo dependerá no sólo del número y tipo de uni-
dades que incluya, sino también de su conectividad y de la cantidad de parale-
lismo de que disponga el algoritmo que se ejecute en el camino de datos . Dicho
de otra manera, para obtener la mejor relación prestaciones/coste, los tipos de
unidades y su conectividad deben casar con el paralelismo del algoritmo. Hay
que tener también en cuenta el hecho de que un algoritmo dado no presenta siem-
pre el mismo grado de paralelismo, ya que la cantidad de paralelismo variará
durante su ejecución.
En general, para conseguir el mejor apareamiento entre un algori tmo y un
camino de datos "a medida", se debiera utili zar un número diferente de contado-
Componentes de memorización 321

res, registros, bancos de registros, y memorias, con un número variado de puertos


que se conecten con diversos buses. Estos buses pueden uti lizarse tanto para pro-
porcionar operandos a las unidades funcionales como para entregar los resu ltados
a las unidades de memoria. También es posible para las unidades funcionales
obtener operandos de varios buses, aunque esto exigiría uti lizar selectores en las
correspondientes entradas. También es posible que cada unidad disponga de lat-
ches de entrada y de salida, utilizados para memorizar temporalmente operandos
de entrada o resultados. Este tipo de retención temporal puede acortar significati-
vamente el tiempo de uso de los buses para transferencias de operandos y de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
resultados, permitiendo pues incrementar el tráfico en dichos buses.
Por otra parte, el uso de latches de entrada y de salida requiere una unidad de
control más compleja, ya que cada operación necesita más de un ciclo de re loj
para ejecutarse. Se requiere al menos un ciclo de reloj para captar los operandos
de los registros, de los bancos de registros, o de memorias, y almacenarlos en los
latches de entrada; al menos otro ciclo para realizar la operación y memorizar un
resultado en un latch de salida, y al menos un ciclo para memorizar el resultado
de un latch de salida en un registro o en memoria.

I Se lector
I
I
I Selector
J
I 1 1 1
1 Se lector
1 I 1
I Banco de
M emori a

I Contador
11 Registro
I registros

Bus1 ,'7 ,
Bus2 , 'i'
Bus) , ,'7 ,
Bus" 7 , ~
~
I
1 Se lector I 1 Latch

I
11
Latch

I
I Se lector J

ALU¡
I ALU 2
I I Latch
11 Latch

1
J
I
I Latch
1 l Multiplicador I
I I

FIGURA 7.33 Ejemplo de camino de datos a medida.


322 Principios de diseño digital

En la Figura 7.33 se muestra un ejemplo de camino de datos a medida.


Obsérvese que tiene un contador, un registro, un banco de registros de 3 puertos,
y una memoria bi-puerto. Dispone también de cuatro buses y tres unidades fun-
cionales: dos ALU y un multiplicador. Como puede verse. ALU 1 no dispone de
latches, mientras que ALU, los tiene tanto en las entradas como en las sal idas. El
multiplicador sólo los tiene en las entradas. Con esta disposición, ALU 1 puede
recibir su operando izquierdo de los buses 2 y 3, mientras que el multiplicador
puede recibir su operando derecho de los buses 1 y 4. De manera similar, las uni-
dades de memorización pueden también recibir datos de varios buses. Este tipo de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
caminos de datos a medida se emplean con frecuencia en diseños de aplicación
específica para obtener la mejor relación prestaciones/coste.

7.12. DISEÑO DE LA UNIDAD DE CONTROL


En secciones anteriores hemos supuesto que el diseño de una unidad de control
sigue el modelo FSM , que consta de la lógica de estado siguiente. un registro de
estado, y una lógica de salida. En la Figura 7.34(a) se muestra un ejemplo en el
que el registro de estado está formado por biestables O, y las lógicas de estado
siguiente y de salida tienen una implementación o bien con dos niveles ANO-OR
o con redes lógicas multinivel. Este tipo de unidad de control se utilizó en el
Ejemplo 7.1. En algunos casos no obstante, una unidad de control puede tener
miles de estados y cientos de señales de entrada. salida, y de control, en cuyo caso
la forma directa de implementación antes sugerida sería demasiado compleja. Por
este motivo. en esta sección describimos varios esti los de diseño alternativos que
ayudan a simplificar la implementación de unidades de control complejas.
Para empezar, como muestra la Figura 7.34(b), la implementación de las lógi-
cas de estado siguiente y de sa lida se puede simplificar utilizando un registro de
estado y un decodificador. En este diseño, cada estado se identifica mediante una
señal, que valga I cuando el registro de estado esté en un estado particular. y O en
el resto. El decodificador adicional simplifica la implementación de las lógicas de
estado siguiente y de salida al simplificar las expresiones booleanas para las ent ra-
das del registro de estado, las seña les de con trol del camino de datos. y para las
salidas de control. En aquellos casos en los que estas señales s6lo dependan de los
valores del registro de estado, podrían implementarse con puertas OR de 11 entra-
das, siendo n el número de estados que activan las correspondientes sCl1ales.
Alternativamente, cuando estas señales dependan también de las señales de con-
dición o de entrada, podrían implementarse con una lógica ANO-OR en la que las
puertas ANO tendrían normalmente sólo dos entradas, una de ellas la señal de
estado y la otra un bit de condición o una señal de entrada, como muestra la Figura
7.34(bl.
Podemos reducir el tamaño de la lógica de estado siguiente teniendo en cuenta
que la mayoría de las FSM presentan secuencias incondicionales de estados en las
que cada estado tiene sólo un sucesor. Además, si los estados de dicha secuencia se
codifican de manera que el código de cada estado pueda obtenerse incrementado el
Componenle de memorización 323

c6digo de su predecesor, el registro de estado se sustituiría por un contador. Esta


forma de diseño alternativa se muestra en la Figura 7.34(c). En este caso se añaden
dos señales más a la 16gica de estado siguiente, una señal de cargar/contar. y otra de
control del selector. La señal de cargar/contar puede incrementar el conteniuo del
contador o cargar un cieno estado para saltar fuera de la secuencia normal.

"'~¡¡JI..,
d..· ,''',Hh,'I'~1 "'~1l.!"· ,

F?n-J ' 1<-"'1\<1""'1\

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
~t
~k~ tk ~"~J,,
~ l gU1L·IIl,·

"',-ñ..k·, <k',"rllf"¡
~
oJd L."IlIr.., .k ,L'Ii"
., fI..Y
'>..¡... ¡..,
.k ....ll h ' j
t'
~
¿ "d ..,mll O.'
,lo:dU''''
t "J!'('!
,1.: L
',I.,".) Rt"~iqn', t::t,-'1.
"li"" 'lIh.' .Ie e~lndo ......., S.,h"."
d~ n,m ",1
Lógu.. ~ ¡l<; ~nll~, J
l:t} Modelo de unidad d... control ( 1"1) Unidad de cuntrol con rcgi!.lro de c,lado y tkcod iril.:aJor

'di:,k, "'I-Ml~,

de ""llu"·,,m .Io:.",.II,,'I.!!!

¿ I... ,¡:,."
Ikc,\."I ..
~ "~U I ~"I<'

S~~ .l\~' ~ ;; ,,'iI;'¡c, d~ ''''' 1,,1


1II1,'\'[h'

~
J,' "mlh,1
,Id '",11 \111",".:11.110], U LId "",,,,,,,.1,, .1.,, .. ,
y
~
S.llh' _
,'\1,'"", = S .•IHt 1 ,~, (."~
,·~ I ,· rn. 1 ..... .... 1,,1.,

"~ IIJ ....


"Jh.I",
.Ic ,,"lInll
de """lrul

(1,;) Un idad de control con un contador (el) Un idad de conl rol eón rcgi stn.l de c:-iludo y pi la
de insereic'mkx tnu:ción

So.-;wl,·,
.J.: <·' ''I(h<· ~~l

1(0 \\
:-'c".'¡'" ,¡.. .... "W"I
<Id ,'alllUlO de eI,u".
1'ltO\1

DnCCClU1I
~,\ICt n~

".,h.l" ,
,k,,~llroj

(d) Uni d:!d de control con registro de estado. RO M, y pi la de inscrción!c."< tr¡\('rJ(Í1l

FIGURA 7.34 Formas de imptementación de unidades de control.


324 Principios de diseño digital

En este último caso, el valor del estado al que se salta puede suministrarlo
internamente la lógica de estado, o puede darse externamente por medio de las
entradas de control. El valor apropiado del estado de salto se elige mediante el
selector.
Otra forma de implementar un control modular es codificando como subruti-
nas tareas usadas con frecuencia. Por ejemplo, en lugar de repetir la misma
secuencia muchas veces, podríamos sustituirla por una llamada a subrutina y
retomar de ella cuando haya terminado. Para ello necesitamos una pila de inser-
ción/extracción que preserve el estado que sigue a la llamada a la subrutina. Este

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
diseño se muestra en la Figura 7.34(d). Como puede verse, la pila memoriza el
sucesor del estado actual, que se cargará en el registro de estado cuando termine
la subrutina. Obsérvese que hemos añadido también una nueva señal a la lógica
de estado siguiente, diseñada para controlar la inserción y extracción en la piJa.
Una última estrategia para simplificar el diseño de unidades de control requie-
re que sustituyamos la lógica de estado siguiente por una memoria de control, nor-
malmente implementada con una ROM o una PROM. Cuando utilizamos esta
estrategia, el registro de estado actúa como registro de direcciones para la memo-
ria de control. Esta forma de diseño se ilustra en la Figura 7.34(e), y en ella es
importante que limitemos el número de señales de control y de condición utiliza-
das para seleccionar el estado siguiente, ya que el coste de la memoria de control
se duplica por cada entrada de controlo señal de condición adicional. Por este
motivo se uti]jza sólo una señal de entrada o de condición para seleccionar el esta-
do siguiente, lo que ]jmita la capacidad de salto a sólo bifurcaciones. En otras
palabras, la dirección siguiente puede ser solamente o la dirección actual incre-
mentada o una de las direcciones de salto. La bifurcación se implementa median-
te dos selectores de direcciones en serie, e introduciendo un selector de condición,
que elige una de las entradas de controlo las señales de condición para utilizarla
en la selección de la dirección siguiente. La dirección siguiente se elige de entre
la dirección actual incrementada y la dirección de salto aportada por la ROM, por
la pila de inserción/extracción, o por el entorno externo. La alternati va de control
de la Figura 7.34(e) suele conocerse con el nombre de control microprograma-
do, y al proceso de convertir cartas ASM en palabras de ROM se denomina a
veces microprogramación. Los estilos de diseño más populares para el control
son el de implementación directa mostrado en la Figura 7.34(a), utilizado en dise-
ños a medida de aplicación específica y procesadores sencillos, y el control micro-
programado, empleado con frecuencia en procesadores complejos.

7.13. RESUMEN DEL CAPíTULO


En este capítulo se han definido y diseñado algunos de los componentes secuencia-
les básicos empleados en el diseño de microprocesadores y ASIC. En primer lugar
describimos los diferentes tipos de registros empleados para memorización y des-
plazamiento de datos. También definimos varios tipos de contadores y presentamos
algunas reglas para construir contadores mayores a partir de otros más pequeños.
Componentes de memorización 325

A continuación se han descrito algunos componentes de memorización cOn


estructura en array utilizados para el almacenamiento temporal y permanente de
datos. Como hemos mostrado, los bancos de registros son rápidos pero también
más costosos en comparación cOn las memorias. Posteriormente se ha definido
componentes de memoria específicos tales como las pilas y las colas, empleados
en muchos diseños por su eficiencia para implementar funciones de memoriza-
ción bien conocidas. Para las pilas y las colas se han descrito también posibles
implementaciones con registros de desplazamiento y con RAM.
Finalmente hemos introducido el concepto de camino de datos y hemos mos-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
trado como utilizarlo para implementar algoritmos específicos, centrándonos en
el ejemplo del contador de unos. También se han discutido brevemente los cami-
nos de datos empleados en microprocesadores y en otros ASIC de altas presta-
ciones. También se han explicado brevemente distintos estilos de implementación
de unidades de control. En el siguiente capítulo formalizaremos el concepto de
camino de datos a medida y sus unidades de control, y presentaremos técnicas
actuales para la síntesis de diseño en el nivel de transferencia entre registros.

7.14. LECTURAS ADICIONALES


Mick, J. and S. Brick. Bil-Slice Microprocessor Desigl/ . New York: McGraw-HiII. 1980.
Libro profesional que explica en detalle conceptos de caminos de datos y de unidades
de control, enseñando además cómo construir un microprocesador a partir de compo-
nentes del nivel de transferencia entre registros. Requiere un buena comprensión de los
principios de diseño de computadores.
AII 2900 Family Data Book. Sunnyvalle, CA: Advanced Microdevices, 1985.
Libro guía para el primer camino de datos de 4 bits y los componentes de soporte aso-
ciados.

7.15. PROBLEMAS
7.1. (Registros) Partiendo de las fomlas 7.2. (Registros) Diseñe un regi stro con
de onda mostradas en la Figura P7 .1. dos señales de carga que habiliten la
dibuje la form a de onda de salida de carga de datos desde dos fuentes dife-
un biestable D con puesta a 1 (Sel) y rentes.
puesta a O (Reset).
7.3. (Registros) Explique la diferencia
entre la puesta a cero mediante un
resel y la carga de una entrada de todo
ceros en un registro.
Dm~ L
Sel
u LJ 7.4. (Registros) Diseñe un registro de 16
bits que pueda cargar nuevos datos y
rotar o desplazar su contenido a dere-
cha y a .izquierda.
326 Principios de diseño digital

7.5. (Registros de desplazamiento) Utili- 7.14. (Contadores asíncronos) Di scl1c un


zando un registro de desplazamiento contador decimal, asíncrono. módulo
de 4 bits. construya un registro de 4 IDO.
bits que pueda rotar su contenido en
7.15. (Bancos de registros) Di seiie un
una posición a derecha o a izquierda.
banco de registros de 8 x 4 con:
7.6. (Registros de desplazamiento) Diseñe (a) Un puerto de escrit ura y dos de
un regi sn"o que pueda realizar dos leclUra
operaciones: (1) cargar un nuevo dato (b) Dos puertos de escritura y uno
y (2) intercambiar los bytes menos y de lectura

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
más signi ficati vo. (e) Dos puertos de escritura y dos
de lectura
7.7. (Registros de desplazamiento) Di se-
tie. empleando registros de despla za- 7.16. (Memorias) Di se ñe:
miento de 16 bits. un comparador (a) Una RAM de 256K x 8 utili zan-
serie que compare dos números de 16 do chips de RAM de 256K x I
bits tras cargarlos en los registros de (b) Una RAM de 64K x 32 utili zan-
desplazamiento . El comparador serie do chips de 64K x 8
debiera tener tres salidas que indi- (e) Una RAM de I M x I utili zando
quen si el prim er número es mayor. chips de 256K x I
igual, o menor que el segu ndo. (d ) Una RAM de 256K x 8 utilizan-
do chips de 64K x 8
7.8. (Con tado res) Diseñe dos contadores
binarios con cuenta ascendente de: 7.17. (Pilas) Diseñe una pila de inser-
(a) Sólo números pares (O. 2, 4, 6. ción/extracción con una RAM de I K.
8, ...) que use rodas (las 1024) palabras de
(b) Sólo números impares ( 1. 3. 5. la RAM.
7,9, ... )
7.18. (Colas) Di setie. Co n una RAM de
7.9. (Contadores) Di señe un circuito lógi- I K. L1na cola FIFO que esté vacía
co que detecte cuándo ha alcanzado cuando los contadores de Il11elO y
un contador de 4 bits el valor de: final apunten a la mi sma posición. y
(a) 7 ll ena cuando ambos contadores
(b) 14 difi eran en l.
(c) 15
7.19. (Caminos de datos) Di señe un camino
(d) O
de datos sencillo que pueda calcular
7.10. (Contadores) Di se ñe contadores las expresiones:
módulo (a) 15, (b) 17 , (c) , 3 1, Y (d) (a)
módulo 32.
(b)
7.11. (Contadores) Di se tie un contador
decimal que cuente módulo 1000. (e) ¿ " x-, +x + ('
,,,, 1' , ,

7.12. (Contadores) Diseñe un contador que


7.20. (Caminos de datos) Desarrolle. para el
cuente según la secuencia: l. 5. 9, 11 .
cmui llo de datos de la Figura 7.'26. un
13. 15 , 1.5, ...
algoritmo de inserción de campo y las
7.13. (Contadores asíncronos) Construya palabras de control para lodas las sen-
un contador asíncrono de 4 bits utili- tencias. Suponga que el camino de
zando: datos es de 8 bits y que el algoritmo
(a) Biestables D inserta los cuatro bits menos signil1ca-
(b) Biestables J-K ti vos de la palabra fuente en la mitad de
Componentes de me mori zación 327

la palabra destino: por ejemplo. el 7.22. (Caminos de datos) Desan·olle. utili -


algoritmo de inserción de campo toma- zando el camino de datos de la Figura
ría las palabras A = 1I7" 6" j "4(l3{1 2(f1(f" Y 7.26, un algoritmo que su me dos
B = b/)(\bjb'/)3b2blbo y generaría como números enteros positi vos de 8 bits y
resultado la paJabra C= h7"6a~,al'laJJJbO' genere el resultado de 9 bits. Obtenga
sustituyendo "sb.,tbiJ2 por a 3(l-:l/l{11r la palabra de control para cada sen-
tencia del algoritmo.
7.21. (Cam inos de datos) Hacie ndo uso del
algoritmo de ¡'nserció n ue campo 7.23. (Caminos de datos) Defina e imple-
desarrollado en el Problema 7.20. mente el controlador para un cam ino
defina e implemente un controlador de datos que pudiera ejecutar el algo-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
para un cami no de datos que lo pueda ritmo desarrollado en el Problema
ejecutar. 7.22 .
e
A

entre registros
Diseño al nivel
de transferencias

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
Álgcbr<l boolean:l Pucllas lógicas
y biCSl ahlcs

Máquina de
6
1
cSlados finitos L,. 4 6
L,.
Técnicas de Técnicas de
diseño lógico 4 diseño digital

Sistema binario '2


y representación t t
de dalos
5 7
Componentes Componentes de
combinaciona~ almacenamiento
I 1
•Diseño"f de S
Máquinas de S
estados fi nitos transrerencia entre
genera lizadas registros

J
9
Componentes
del procesador

EII los capítulos anteriores se hall estudiado los componellles combinacio-


nales y de almacellamielllo del nivel de transferencia entre registros. EII
este capítulo se gelleraliza el modelo de máquina de estados finitos y en
base a este modelo. se enseñará a describir, diseñar. y optimizar la imple-
mentaci6n a nivel de transferencias entre registros de un algoritmo dada.
330 Principios de diseiio digital

En el Capítu lo 7 se diseñaron componentes de almacenamiento tales como regi s-


tros, contadores, memorias, pilas, y colas: en el Capítu lo 5 los componentes com-
binacionales tales como ALU, comparadores, desplazadores, selectores, buses,
ROM, y PLA. En el ámbito del diseño de circu itos integrados de aplicación espe-
cífica (ASIC, Application-Specific Integrated Circuits) y procesadores estándar,
esos componentes constituyen las unidades de contro l y los caminos de datos
(datapaths ), Cada ASIC o procesador consta de al menos, una unidad de control
y un camino de datos, aunque muchos ASIC incluyen varias unidades de control
y cam inos de datos, Para sintet izar di seños al nivel de transferencia s entre regi s-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
tros se introduce el modelo FSM (Finit e-State-Ma chin e, Máquina de estados fini-
tos) con camino de datos (FSMD, FSM .... ith a Datapath), y presentamos diversas
formas de especificar los diseños a este nivel de descripción , inclu yendo los popu-
lare s diagramas de máquina de estado algorítmica (diag ram as ASM, de
Algorithlll-State-Machine), Después se explicarán las técnicas para convertir los
diagramas ASM en una implementación del di seño constituida por una unidad de
control y un camino de datos, También se describen las técnicas de diseño para
optimizar estas implementaciones en costo y prestaciones, Mi entras que este capí-
tulo se centra en el diseño al nivel de transferencia s entre registros, el diseño de
procesadores estándar se cubre en el Capítulo 9 como caso especia l de diseño de
transferencia entre registros, Puesto que el repertori o de instrucciones del proce-
sador se puede describir mediante un tipo restringido de diagramas AS M, la arqui -
tectura del procesador también puede contemplarse como un caso especial del
modelo FSMD,

8.1. MODELO DE DISEÑO


En el Ejemplo 7,1 se implementó el algoritmo de cuenta de unos con un camino de
datos estándar y una unidad de control específica, La unidad de control tenía ocho
estados, dos señales de entrada, y 14 seña les de sal ida, Las señales de entrada eran
la señal externa Inicio y una seiial de estado del camino de datos (Dato = O), Las
señales de sa lida eran la señal Final (' Hecho ') y las se ñales de contro l del cami-
no de datos, El camino de datos estaba constituida por un banco de regi stros, una
ALU. y una unidad de desplazamiento, y tenía un puerto de entrada y un puerto
de salida, El operando de 16 bits Dato se introducía en el cam ino de datos a tra-
vés del puerto de entrada al comienzo de la operación. y el resultado CI/el/ tal
(cuenta de unos) se proporcionaba al final , a través del puerto de sa lida,
De forma similar al contador de unos, un diseño digital consta de una unidad
de control y un camino de datos, Como muestra la Figura 8, l (a), el camino de
datos incluye dos tipos de puertos de E/S, Un tipo de puertos de E/S son los puer-
tos de datos, que son utilizados por el entorno exterior para enviar y recibir datos
a y desde el circuito integrado. Los datos pueden ser de tipo entero, punto flotan-
te, o carácter, y usualmente ocupan una o más palabras, Normalmente, los puer-
tos de datos tienen una capacidad para 8, 16, 32, o 64 bits. El otro tipo de puenos
de E/S son los puertos de control , utili zados por la unidad de control para ordenar
Diseño al nivl? l de transferencias entre registros 331

las operacio nes realizadas en el camino de datos y rec ibir info rmac ión acerca del
e, tado de los reg istros del ca mino de datos que han sido seleccionados,
Elll r;\ua:.
E ll l f ;\c!;I" lid énnu l10
ue ':U!llro! de dato:.

~ Señale:. de
con trol ~
L'TlI(kuJ Señale .. dI.' C :UllIlllldl'
Uf.' l'üntrul c:.l:ldo d¡lIn.,;

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
t
Sahda.-,
t
S,t lida!!
(le cont rol dcll'.IITl ¡no
de datu:.
l a ) Diagrama uc bloqm' s de nito n¡vel
i:.n t r¡¡d;t~
(.11.' 1 C;¡mUllO
de d!l.to,

Señak.' de
c011lrol

Bus
Bus,
--»-

Lógkade
c$t:ldo RI'.!;I, trtl Lógica de
SIgui ente d~' ""1:111,, salida

Comino
de dutos
Unidad de control

S alida~
d ... S,llId" cid
contro l ~.IHllll" ¡le
dm",

fb) Diagl'¡lIlla de bloq ul.'s a l1I" cI de lransft.!rt.!ncia enl re rt.!gisl ru~

FIGURA 8,1 Modelo de diseño,

Como muestra la Figura 8. 1(b). el camino de datos contiene unidades de alma-


cenamiento tales como registros. bancos de registros y memorias, y circuitos com-
binacionales como ALU . multiplicadores. desplazadores. y comparadores. Estas
unidades están conectadas a los puertos de entrada y salida mediante bu ses. El cami-
no de datos toma los operandos de las unidades de almacenamiento. realiza los cál-
culos en los ci rcuitos combi nacionales. y devuelve los resultados a las unidades de
almacenamiento en el tiempo con'espondiente a cada estado, que normalmente es
igual a un ciclo de reloj . La unidad de control reali za la selección de operandos. de
332 Principios de diseño digital

operaciones, y de destino para el resultado mediante la asignación de valores apro-


piados a las señales de control del camino de datos. El carnino de datos también
indica, mediante sus señales de estado, cuando un valor concreto debe guardarse en
una unidad de almacenamiento concreta, o cuando se satisface una relación deter-
minada entre los valores de dos datos almacenados en el camino de datos.
Igual que el camino de datos, la unidad de control tiene un conj unto de seña-
les de entrada y de salida. Cada señal es una variable booleana que puede tomar
el valor O ó l . Hay dos tipos de señales de entrada: las señales externas y las seña-
les de estado. Las señales externas representan las condiciones del entorno exte-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
rior a las que el ASIC debe responder. La señal Inicio del Ejemplo 7. 1. que indi-
ca el comienzo de la cuenta de unos, es un ejemplo de estas señales de entrada.
Por otra parte, las señales de estado representan el estado del camino de datos. Su
valor se obtiene al comparar los valores almacenados en el camino de datos
correspondientes a ciertas variables. Por ejemplo, Dato = O en el Ejemplo 7.1 era
una señal cuyo valor es igual a I cuando el valor de Dalo es igual a O y O cuando
Dato es distinto de O.
Hay además dos tipos de señales de salida: las señales externas y las señales
de control del camino de datos. Las señales externas informan al entorno que el
ASIC ha llegado a cierto estado o ha finalizado un cálculo determinado. Las seña-
les de control del camino de datos seleccionan la forma de actuar de los compo-
nentes del camino de datos.
La implementación de un ASIC se ajusta a esta arquitectura general. aunque dos
ASICs puedan diferir en el número de unidades de control y caminos de datos en el
número de componentes y conexiones en el número de estados de la unidad de con-
trol , y en el número de puertos de FJS. Para realizar un diseño, en primer lugar hemos
de conocer la forma de definir su arquitectura y especificar su comportamiento.

8.2. DEFINICiÓN DE FSMD


En la Sección 8.1 presentamos, en términos generales, la arquitectura y el mode-
lo de implementación de un diseño digital. En esta sección se describirá como
especificar su funcionamiento. Con este propósito se modifica el estilo y el for-
mato utilizado para especificar el contador de unos del Ejemplo 7.1 .
El contador de unos se especificó mediante una FSM, describiendo la unidad
de control y una serie de asignaciones a las variables que representan los cambios
en el camino de datos. Por comodidad, estas especificaciones se repiten en la
Figura 8.2.
La FSM tiene ocho estados y pasa de un estado a otro bajo el control de la
señal externa Inicio y de la señal de estado (Dato = O). En cada estado, la FSM
asigna valores al conjunto de señales de control del camino de datos que especi-
fican completamente el comportamiento de dicho camino de datos. Sin embargo.
cuando hay demasiadas señales de control es difícil darse cuenta de lo que hace
el camino de datos y de cómo lo hace . Para mejorar la comprensión de este tipo
de especificación. en el Ejemplo 7.1 hemos usado sentencias de asignación de
Diseño al nivel de transferencias entre registros 333

variables que indican los cambios en los valores de las variables almacenados en
el camino de datos.
Una sentencia de asignación de variable proporciona la expresión a utilizar
para el cálculo del nuevo valor de la variable. En cada estado. y para cada varia-
ble de asignación asociada a dicho estado. el camino de datos evalúa la expresión
del lado derecho de la sentencia de asignac ión y, en el siguiente tlanco de subida
de la señal de reloj . carga el resultado en e l registro que almacena la variable indi-
cada en el lado izquierdo de la sentencia. Es importante resaltar que aunque la
ev aluaci ón de la expres ión se hace en un estado, el nuevo valor de la variable no

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
puede utili zarse hasta el estado sigui ente, como muy pronto. Generali zando a par-
tir de la especificaci ón del contador de unos. podemos decir que un modelo FSM
con sentencias de asignación añadidas a cada estado, normalmente designado
como FSM con camino de datos, o FSMD, permite especificar completamente
el comportamiento de un diseño digital arbitrario.
In icio=O

F;nol=O; Daw=l lIpurf

Fillul=O: Clle/lwl=O

Fil/lI/=Ü: MásCtlm= 1

Film/=!): Temp=VlItu AND /I1l1:,'CUrtl

Filltl{=O: Cuel1ll1/=Cl/enllll + Tel/!fI


D(I(/I"l-O

Fi/lIlI=O: DarQ=DlItu> > I

Fillal= 1: OWport=Ctu!flW I

FIGURA 8.2 Especificación del contador de unos.


334 Principios de diseño digital
,
Para definir formalmente una FSMD debemos ampliar la definición de lIna
FSM introduciendo conjuntos de variables , entradas, y salidas del cam ino de
datos que complementen los conjuntos de estados, entradas, y salidas de la FSM ,
En el Capítulo 6 se definió una FSM como una quíntupla
<S,I,O,fh>
donde Ses el conjunto de los estados, ly Oson los conjuntos de símbolos de entra-
da y salida, y fy h son las funciones que indican el estado siguiente y la salida de
la FSM. Más fonnalmente,fy h se definieron como las aplicaciones

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
f:Sxl-tS
h:Sxl-tO
Normalmente se especifican mediante una tabla que proporciona los símbolos
de estado siguiente y la salida para cada símbolo de estado y de entrada. Cada
símbolo de estado, entrada, y salida se define mediante el producto cartesiano de
variables booleanas. Más concretamente,
I=AI xA 2 x ... xA k
S = QI X Q,_ x ... x Qm
O = Y I X Y, x ... X Y
- "
donde A ;, I S i S k, es una señal de entrada, Q¡, J S i S m, es la salida de un bies-
table, e Y;, I S i S n, es una señal de salida.
Para incluir el camino de datos debemos ampliar la definición anterior aña-
diendo el conjunto de variables, entradas, y salidas del camino de datos. Más for-
mahnente, se define un conjunto de variables
V = VI X V, X ... X V
- 1/
que definen el estado del camino de datos a partir del valor que tomen dichas
variables de estado. De la misma forma, el conjunto de entradas a la FSMD está
constituido por el conjunto de entradas a la FSM, l e y el conjunto de entradas al
camino de datos, ID' Así
1=lcx l D
donde l e = Al x A z x ... X Ak como antes, e 'D = BI X B2 x ... x BI"
De igual forma, el conjunto de salida consta de las salidas de la FSM, Oc y
las salidas del camino de datos, OD' En otras palabras,
0= 0 ex 0D
donde O e = YI X Y2 X ... X Yk como antes, y OD = 2 1 X 2z x ... x 2,.. No obstante,
hay que tener en cuenta que A;, Qj' e Yk representan a variables booleanas, mien-
tras que B;, V; Y 2; con'esponden a vectores booleanos, que pueden representar a
su vez a números enteros, en punto flotante, y caracteres. Por ejemplo, en un
camino de datos de 16 bits, B;, V; Y 2¡ tendrán un tamaño de 16 bits, y si son ente-
ros positivos, podrán asumir valores entre O y 2 16_1 .
Diseño al nivel de transferencias entre registros 335

Excepto en casos muy triviales, el tamaño de las variables y los puertos del
camino de datos hace muy difícil la especificación de las funcionesfy" en forma
tanular. Para poder especiticar los valores de las vari ables de forma eficiente y
comprensible al definir una FSMD, utili zaremos expresiones aritméticas.
Se define el conjunto de todas las posibles expres iones, Expr, sobre el con-
junto de variables V, como el conjunto constituido por todas las constantes K del
mi smo tipo tomadas como variables en V, el propio conj unto de variables V, y
todas las expresiones obtenidas combinando dos expres iones mediante operado-
res aritméticos , lógicos , o de reordenación. Más formalmente,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Erpr(V) =K u Vu {(e¡ :::J e) I e" ej
E Exp/; O es un operador aceptable}
Mediante Exp r (V), podemos definir los valores de las seña les de estado así
como las transformaciones en el camino de datos. Sea 5TAT = (slal k = e¡ ~ 7 le¡,
e· E Etpr(V), ~ E {::;, <. =. *.
> . <! }} el conjunto de todas las señales de estado
descritas como relaciones entre variables o como expresiones de variables.
Ejemplos de señales de estado son DOlo = O, (a-b) > (x+y), y (conlador =0) AND
(x> 1O~ Las relaciones que detinen las señales de estado pueden ser ciertas (Irue) .
en cuyo caso la señal de estado tiene el valor 1, o falsas (jo /se), tomando enton-
ces el valor O.
Mediante la definición formal de las expresiones y las relaciones sobre un
conj unto de variables, es posible simpli ficar la funciónf: (5 x V) x I-? 5 x V divi-
diéndola en dos partes: f e y fo' La función f e define el estado siguiente de la uni-
dad de contro l,
f e: 5 x l ex 5TAT -? 5
en tanto que la función j~ define los valores de las variables del camino de datos
en el estado siguiente,
f o : 5 x V X ID -? V
En otras palabras, para cada estado s¡ E 5 se calcula un nuevo valor para cada
variable V E V del camino de datos mediante la evaluación de una expresión
e. E Expr(V) . De esta forma, la función j~ se representa mediante un conj unto de
funciones más simples, en el que cada función de l conjunto define los valores de
las variables para cada estado si:
j~ : = {(Di: V x ID -? V :
{\j = eJ IVj E V, ej E Expr(V x ID))}
En otras palabras, la función f D se descompone en un conjunto de funciones
.fO¡, donde cadafo¡ asigna una expresión e k a cada variable del camino de datos Ij
en el estado si' Por consiguiente, los nuevos valores para las variables del cam ino
de datos se determinan evaluando las expresiones e, para todo} tal que 1 ::;}::; q.
Análogamente, se puede descomponer la funci6n de salida h : 5 x V x I -? O
en dos funciones diferentes: he y ho' donde he define las salidas de control exter-
336 Principios de diseño digital

nas Oc igual que en la definición de una FSM y hD define las salidas externas del
camino de datos. Por lo tanto,
he : Sx lex STAT -,;0c
ho : Sx Vxl o -,;°
0

Obsérvese nuevamente que las variables de O e son variables booleanas y que


las variables de 01) son vectores booleanos.
Una FSMD puede especificarse de forma tabular como muestra la Figura
8.3(a) para el caso del contador de unos que se definió en la Figura 8.2. Las tres

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
primeras columnas definen respectivamente el estado presente, e l estado siguien-
te. y las salidas de control externas, mientras que las s iguientes dos columnas dell-
nen las salidas y los valores de las variables del camino de datos. Como es usual.
el símbolo X se utiliza para las indiferencias (don '/ care cOl1ditiol1s). A partir de la
tabla de la Figura 8.3(a) vemos que en cada estado existen nuevos valores para las
salidas de control, variables y salidas del camino de datos.
Sabemos que un camino de datos real puede almacenar cientos de variables
diferentes y que muchas de esas variables raramente cambian sus va lores. Por
tanto, sería más eficiente asumir que las variables mantienen sus valores a no ser
que se especifique uno nuevo en un estado determinado. Así, la cuarta columna
de la Figura 8.3(a) se podría reescribir mediante un conjunto de sentencias de
asignación, recordando líneas de código típicas de un le nguaje de programac ión,
tal y como muestra la Figura 8.3(b).
También se puede utilizar el mismo formato en la columna de estado siguiente
de la Figura 8.3(b). En este caso, no tenemos que especificar el estado siguiente para
todas las posibles entradas de control y señales de estado sino sólo para aquellas que
afecten a la selección del estado siguiente. Por tanto, es posi ble simplificar la colum-
na de estado siguiente especificando en cada estado sólo la condición y el estado
siguiente al que pasará la unidad de control si dicha condición se verifica.
Igual que para representar las asignaciones de variables, es posible utili zar
sentencias de asignación para los pueltos de sa lida de la unidad de control y del
camino de datos. No obstante, a diferencia de las variables del camino de datos,
los puertos de salida no mantienen sus valores más allá del estado presente pues-
to que los valores no están almacenados en registros o en memoria. Así. la unidad
de controlo el camino de datos deben proporcionar e l último valor asignado a los
puertos de salida en cada estado, aunque no se especifique explícitamente e n la
tabla. Teniendo esto en cuenta, podemos obtener una tabla reducida, llamada nor-
malmente tabla de estado-acción, que contiene sólo tres columnas. Como antes.
la primera columna especifica e l conjunto de estados actuales, y la segunda espe-
cifica los estados siguientes y las condiciones bajo las que la unidad de control
pasará a dichos estados. La tercera columna especifica las asignaciones de nuevos
valores a las variables correspondientes del camino de datos y las condiciones
bajo las que se producen dichas asignaciones. Las asignaciones a los puertos de
salida también se incluyen en esta columna.
Como ejemplo, en la Figura 8.3(c) se muestra la tabla de estado-acción para
el contador de unos. Esta tabla es fácil de comprender y proporciona toda la infor-
DiscÍlo al ni ve l oc trans ferencias entre registros 337

ESTADO ESTADO SIGUIENTE SALIDA DE SALIDA DEL


PRESENTE (Inicio, Dalo: O) CONTROL CAMINO DE DATOS VARIABLES DEL CAMINO DE DATOS

00 01 10 11 Final Ou/port Dalo Cuenlaf Temp MáSCEra

'\'0 So '\'11 ., , SI
() Z X X X X
.,, .\'1 s~ s, s, O Z II/port X X X
.'i
1 '\'3 s.\ s3 s,, () Z Dl/IO O X X
JI JJ .\ , .', .\'..¡ O Z Dato Cut'llta I X I
SI sf. s5 s5 ,\'; O Z DalO C/lema I Dato A D M lÍs('(/J'{/ A/tÍscara

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
"'50 s(, " 11 ,"(, S¡, () Z OC/lO Ctll'lI/rI I + Tl'mp X Mú.\'('lIJ'{/
'\'h SJ '\ 7 S..¡ "'"7
(J Z Dato» I CtwllIa I X Músl"lIl"lf
s7 '\'o So '\'0 ~'o I C/lema I Dato C Uf!Il llf I X X

ESTADO ESTADO SIGUIENTE SALIDA DE SALIDA DEL


PRESENTE (Inicio. Dalo: O) CONTROL CAMINO DE DATOS VARIABLES DEL CAMINO DE DATOS

00 01 10 11 Final Ou/por/

'\'o ~'o '\"0 s, s, O Z


\ , ,\' , S, S, ,~' ! O Z JJato =- II/pon
.\'! s,> s,, sJ ,\',\ O 7. CtU'1I1a I =O
s~ sJ s-I '\'-1 ,\'-1 O Z Mds('(/n/ = J

s" Ss s5 .'i ~ '\'5 O Z Te/llfJ = D(/{o ANO lvlcí,\'('(lra


-'"; sr, -"(, s(, se, n z Cllental = e //nl1l/l + TelJ1/1
sr, s , .\"7 ,\'-1 S7 O Z Dato = Daro» J
-'"7 "'O .\ () '\'o So I CI/enta I

ESTADO SIGUIENTE ACCIONES EN LA UNIDAD DE CONTROL YDEL CAMINO DE DATOS


ESTADO
PRESENTE
CONDICiÓN, ESTADO CONDICiÓN, ACCIONES

[ Inicio = O. /'il/al : () J
S (I
IlIicin 1, =
,\'u ]
,\' ,
[ Out/mt =Z
", '\'1 Dato = IlIport
.\"., ,\',\ 01('11((1 l=-O
S,I S', Máscara :;: : I
.\'..¡ .,'~ T('I1I/1O :;::: Dmo AND ¡\I!t1scarC/
.\':; '\'h CIII1 /I/(I I =- Cuen ta I + T('lIIjJ
[ Dalo;#. O, .\, J Da/() :;::: Darn » 1
."
\
Dato:;::: O, '\'7

s7 So [ Filial = I
OfllfJlIf =- el/ellla I
]

FIGURA 8.3 Especificación FSMD para el conlador de unos.


338 Principios de diseño digital

mación necesaria pata implementar la unidad de control y el camino de datos. Se


puede utilizar pata construir el diagrama de estados de la unidad de control, sinte-
tizar la lógica de estado siguiente y de salida, y definir los componentes del cami-
no de datos y su interconexión, como explicaremos más adelante en este capítulo.

8.3. DIAGRAMAS DE MÁQUINA DE ESTADOS ALGORíTMICA


(ASM)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En la Sección 8.2, hemos detinido el modelo FSMD y se ha explicado como obte-
ner una tabla de estado-acción para especificar FSMD. En esta sección presenta-
mos una forma gnífica alternativa para especificar un FSMD. que se denomina
diagrama de máquina de estados algorítmica, o diagrama ASM. En general,
un diagrama ASM es totalmente equivalente a las tablas de acción-estado descri-
tas anteriormente: es decir, para cada tabla de acción-estado, existe al menos un
diagrama ASM que describe el mismo comportamiento. No obstante, en muchos
casos los diagramas ASM presentan una cierta ventaja desde el punto de vista del
ser humano puesto que muestran explícitamente los caminos desde un estado a
otro, que son menos visibles en una tabla de estado-acción. La siguiente defini-
ción pone de manifiesto estas ventajas.
Como muestra la Tabla 8.1, un diagrama ASM representa una FSMD en tér-
minos de cuatro componentes básicos: la caja o bloque de estado, la caja de deci-
sión, la caja de salida condicional, y el bloque ASM. Cada estado en un diagrama
ASM se indica mediante una caja de estado, que contiene el conjunto de asigna-
ciones incondicionales a las variables y puertos de salida del camino de datos.
Cada caja de estado tiene un nombre que se sitúa en la parte superior izquierda de
la caja. Si se conoce, el código asignado al estado se sitúa en la parte superior
derecha. No obstante, usualmente no se conoce el código del estado en el momen-
to en que el diagrama ASM se dibuja por primera vez, y debe añadÍJ·se durante el
proceso de asignación de estados descrito en el Capítulo 6.
La caja de decisión describe la condición bajo la que la FSMD llevará a cabo
acciones especíticas en el camino de datos y seleccionará el e: t'ldo siguiente.
Estas condiciones pueden referirse tanto a las entradas de control ~xternas como
a las señales de estado.
Obsérvese que cada caja de decisión tiene dos salidas posibles, una se toma
cuando la condición indicada dentro de la caja es cierta, y la otra cuando es fal sa.
Estas dos salidas se indican usualmente con un I para el caso de condición cier-
ta, y con un O para la falsa.
La caja de salida condicional describe las asignaciones de variables o sal i-
das que se realizan cuando se verifican las condiciones espec ificadas por una o
más cajas de decisión. Los bordes redondeados de una caja de salida condicional
permite diferenciarla de una caja de estado.
Por último, el bloque ASM es una estructura compleja que incorpora una caja
de estado y una red de cajas de decisión y cajas de salida condicional organizadas
Diseño al ni ve l de transferencias entre registros 339

en serie y/o en paralelo. El bloque ASM se representa usualmente destacándolo


mediante un sombreado. Como se puede ver en la Tabla 8.1 , tiene una sóla entra-
da aunque puede tener cualquier número de salidas, que son generadas por la red
concreta de cajas de dec isión.

TABLA 8.1 Simbolos ASM

NOMBRE DEFINICiÓN EJEMPLO

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Nombre Código de! 0 11
del e~lado estado

Asignación
Caja de l'slado inco ndic iona l de Te/IJ!/=7f.'II/{J AN O MlI.IClIT{/
variahles y salidas

Caja de decI sión


o
Duto=O
o
Condición

Asignación
Caja dl cond ic ión conditional CIII'IIIl1I = CIlf:'1I1lI 1 + I
de va riables

Fi/J(/! =O

o
Bloq ue AS~\'I

( )
340 Principios de diseño digital

En general, un diagrama ASM estará constituido por uno o más bloques


ASM conectados, organizados de forma que cada salida de un bloque esté conec-
tada a una única caja de estado . Cada bloque ASM desc ribe las operaciones que
se ejecutan en un estado. En otras palabras, cada bloque es equ iva lente a una fila
de una tabla de estado-acción de las descritas e n la Secc ión 8.2. siendo la forma
de presentar sus condiciones la única diferencia: En una tabla de estado-acción.
las condiciones para se lecc ionar el estado sigui ente y para ejecutar las operacio-
nes del camino de datos estaban separadas, mientras que en un bloque ASM se
combinan en un árbol binario de cajas de decisión y condición.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Bloque ASM

o
>-~,+-< CVIli! 1


s,

(al Estado siguiente 110 defin ido

BloqueASM SI ~

o
COlld 1 . / " _.....

s,

(h ¡ Camino de sali da no de finido

FIGURA 8.4 Diagramas ASM incorrectos.


Diseño al ni ve l de transferencias entre regislros 341

C uando se describe una FSMD mediante un diagrama ASM, hay que segui r
dos regl as:
1. El diagrama de be definir un único estado sigui ente para cada estado pre-
sente y conjunto de condiciones,
2. Todo camino definido por la red de cajas de condición debe conduc ir a
otro estado.
En la Figura 8.4, se muestran dos ejemplos de diagramas ASM incorrectos
que violan las reglas anterio res. En concreto, el diagrama de la Figura 8.4(a) viola

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
la primera regla, puesto que cuando COl/d2 es cierta. tanto 52 como 5} están espe-
cificados como estados sigu ientes. De igual manera, puede verse como el diagra-
ma de la Figura 8.4(b) vio la la segunda reg la ya que el cam ino definido cuando
COl/d I es cierta y C0l1d2 es fal sa forma un bucle que no lleva a ningún estado .

000

FIGURA 8.5 Diagrama ASM para el con tador de unos.


342 Principios de diseño digital

La Figura 8.5 muestra un diagrama ASM correctamente definido que es equi-


valente a la tabla de estado-acción del contador de unos de la Figura 8.3(c). Como
puede comprobarse, este diagrama especifica claramente todos los estados. las
transiciones a los estados siguientes, y las acciones del camino de datos (asigna-
ciones de variables) que estaban representadas en la tabla de estado-acción.
Nótese también que este diagrama ASM muestra claramente los bucles, que eran
menos visibles en la tabla de estado-acción, además de describir todos los cami-
nos condicionales como un árbol, en lugar de especificar cada camino mediante
una expresión condicional. Por supuesto, podría ocurrir que un diagrama ASM

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
llegue a ser demasiado voluminoso cuando la FSMD en cuestión tuviese un
número elevado de estados y condiciones.
Para entender el papel de los diagramas ASM y las tablas de estado-acción en
el proceso de diseño, volveremos al contador de unos del Ejemplo 7.1, Y lo redi-
señaremos utilizando un camino de datos específico o a medida (clIstom) en lugar
de utilizar uno estándar. En comparación con un camino de datos estándar. un
camino de datos específico se di seña de forma que se ajuste al algoritmo particu-
lar de que se trate y por tanto necesita menos componentes e interconexiones.
Puesto que utiliza menos componentes, el camino de datos específico también
puede proporcionar mejores prestaciones. Por estas razones, se utili zan caminos
de datos específicos en el diseño de ASIC.

EJEMPLO 8.1 Contactor de unos: diseño específico.


PROBLEMA
Rediseñar el contador de unos descrito en el Ejemplo 7.1 utilizando un camino de datos a
medida.
SOLUCiÓN
En el caso del contador de unos, realmente s610 necesitamos dos variables: Dato, que alma-
cena el dato entrante, y Cu.enta / , que almacena el número de unos que se han contabili za-
do en ese dato. Bé:Ísicamente, el algoritmo analiza e l valor del bit menos significativo del
dato, Dat0/..SB (LSB, Least Significant Bit), y se suma uno a Cl/elllal cuando Dot0I.SB = l.
En ese momento, Dato se desplaza una posición a la derecha y se repite la misma secuen-
cia mientras que Dato ':t: O. Como antes, el contador de linos espera que Inicio pase a ser I
para introducir el dato desde el puerto de entrada Inport. Cuando Dato = O. el contador de
unos indicará que ha terminado la cuenta de unos poniendo la señal Final a uno y mostran-
do el valor de Cllental a través del puerto de salida OUlpon durante un ciclo de reloj.
Para diseñar un camino de datos específico, en primer lugar hay que obtener el diagra-
ma ASM para este contador de unos. En la Figura 8.6 se muestran dos versiones del mi smo
contador de unos. modelado como una FSMD basada en estados (Moore) [Figura 8.6(al] y
como una FSMO basada en entradas (Mealy) [Figura 8.6(b)]. Obsérvese que la versión
basada en estados de la FSMD tiene seis estados puesto que todas las asignaciones a las
variables deben ejecutarse de forma incondicional y sólo los estados siguientes se seleccio-
nan de forma condicional. En el modelo basado en entradas, por contra, el número de esta-
dos se ha reducido a cuatro, puesto que las asignaciones a las variables se ejecutan condi-
cionalmente junto con la selección condicional de los estados siguientes.
Diseño al ni ve l de transfere ncias entre reg istros 343

C ualquiera de eStos di agramas ASM puede co nve rtirse fác ilmente en un a tabla de esta-
do-acción qu e nos permita obtener las ecuaciones booleanas para la lógica de estado
sigui ent e y de salida de la unidad de co ntrol. En la Figura 8.7( a ) y (b). se muestran las tablas
de estado-acció n correspond ientes a la ~ versiones del contador de unos basadas en es tados
yen entradas. respectivamente.
La im plcment ac ión de este mismo contador de unos se da en la Figura 8.8. O bsé rvese
q ue el camin o de dutos es igual para ambas ve rsio nes pucsto q ue ambos contado res só lo
almace nan dos va ri ables y rea li zan úni camente dos operac iones. Es dec ir. ambas ve rsiones
despl azan el val or almace nado en Dato e incrementan e l valor de la variable Cuenta / .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Cuel/ta / = Cllef//a / + I

Fillal=}
O ll t{Jllf= Ole/l/al

\al Diagrama para FSMD basada ib) Diagrama pm·;. rSMD has¡u.la
en cSlados (Moorl' ) en entradas (Mcaly)

FIGURA 8.6 Diagramas ASM para el contador de unos (diseño de propósito especifico).

Dados es tos dos opcfJd ores. e l camino de datos sólo necesita un reg istro de des plaza-
miento co n ca rga para le la. qu e tome los ,dat os desde el puerto !lIpo rl. y un co ntado r ascen-
dcnte/descendent e CO n carga paralela q ue se haga O al comienzo de la cuenta de linos e
incremente su cont enido cuand o DalO¡..,Su sea igual a l .
344 Principios de diseño digital

La unidad de conlrol de este contador de un os consta de un registro de estado y de la


lógica de estado siguiente y salida. Para la versión basada en estados . necesitaremos un
reg istro de es tado de tres bits, mientras que para la versión basada en elllradas se prec isa rá
un regi stro de dos bits. La codifi cación de los estados tamhién se proporciona en las tablas
de es tado-acción. utili zando una cot!il1cación binaria natural pa ra simpl ifi car la compren-
sión del esquema de la lógica de con trol.

ESTADO ACTUAL ESTADD SIGUIENTE ACCIONES EN EL CAMINO DE DATOS

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
0, 0, °0NOMBRE CONDICiÓN, ESTADO CONDICiÓN, OPERACIONES

O O O So
[ I"icio = O,
IlIicio = l .
So]
.vJ
Filial = O
[ Daw ::: JI/lwr, ]
O O I ,~' I sl C/(('I//(I/ ::: O
O I O ·'i2
[D(I{OL'iB = 1,
D(l((JUiB = 0,
s, ]
.\'4
(j I I .'1'3 S.I CUfllflll = Cut!ll/a I + I
I O O .\'4
[Dato '* O.
/Ja/o = 0, ,.s,, ] Dato = Daro» I
[ Filial ::: I ]
I O I s, -\'0
OUlpl/f :; el/naO I

(a) Tahla ba~¡lda e n C1>tados

ESTADO ACTUAL ESTADO SIGUIENTE ACCIONES ENEL CAMINO DE DATOS

0, °0 NOMBRE CONDICiÓN, ESTADO CONDICIÓN, OPERACIONES

s,'o ]
[ I/licio :; O.
O () So Inicio :; l.
Filial =O
[ {Ja!O = II/porr ]
O ,1 S , s:!
Cllel/wl :; O

~~~ ]
[ Daw '1= O, [DawLSB :; 1, CIIl'ntal :; CtwII1aJ + 1]
I O .\'2
/JalO =(j. Daw'l= O Daro = Daro» 1
I I [ Filwl= I ]
s:,l So Ourpl/l :; Cue1lta I

FIGURA 8,7 Tablas de Estado-acción para el con tador de unos.

Al implemen tar la lóg ica de contro l. podríamos reducir el nlimero y tamaño de las puer-
tas s i considera mos que en la versión basada en estados, los estados ,\'2. ' s" s4 y Ss se puede n
defi nir de forma un ívoca media nte Q ,Q'f)' Q ,Qn' Q, Q'n y Q , Qf)' Ten iendo eslO en cncnta.
podemos obtener las ec uac io nes de estado siguiente para la vers ión basada en estados de la
Figura 8.8(a) directamente a partir de la tabla de estado-acci6n.
D, = Ql"igllielll e)="'po/(J ''-'11 +s,
+,' j Dato=O) = Q, Q ',p% '1..\'/1+ Q , Q" + Q, Q 'n( DolII=O)
D,=Q ,(siglliell/e )=.1', +s, Da/o¡s'l+si D,t/ootO)=Q' ,Q' ,Q,,+Q, Q ',paIOL<tJ+Q, Q 'o! DowotO )
Diseño al ni vel de transferencias entre registros 345

Do:. Qof siguiellfl' ) = ,\·/";cio+s~ D(lf0 Lm+.'ii DalO;O ); Q 'l Q ' IQ '(ll l1icio+Q 1Q 'ODllIO LSIl +
Q,Q '<I( DlI l,,=Oj
I"in,. I"por,

s,
8v'D,Q,- ~JD
~
Sil
SRwPL

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Q', - Dato LSs
'------'
Daw74J
<} "o"
9D-~ - I
Conwdor
~ "0" - /)
E a..;cc nclcntt·/
~
Q' =l de,,'endet1lc
=LJ C(II"}.:(/

Habilitación de salida ,- 7
-$v"
-
LógiCi/ de eSf(ulo sigl/i~",~
Lóg;Cl/
(le ~'(djtl(,
ClImi"o
lle d(/to~'
~
Fillol Ol f /POlI

(,1) Vc rslún hasada en cS I;IIJu~

I"po/"

L;::fJ.
,
r
- B>-- v;¡;;-'- ~
S

Su
SR\\ PL

(J ' -
----2. J)(/tl}¡.5S

Dma#)
-(}
J.:Rr>-~ Cllfll:tdlll"
.....r "0" - /)

~
E a,ú'm.lenld
dc~cenJl'nlc
~ --, CWl;O

L6.r: iCI1 Camillo


~
Lógicl I ,le eSlmlo .figllieme dt' slIlida

Filial
de dlllos


GIIII'f}/'1

(h l Vcrs iün haloada e n c n lrad:l ~

FIGURA 8.8 Esquema lógico para el contador de unos,


346 Principios de diseño digital

Igualmente, podemos obtener las ecuaciones para la lógica de salida si recordamos. de


la Sección 7.3, que SISO = 01 carga el dato y S]Sll = 11 lo desplaza a la derecha:
S] = S4 = Q, Q'U
SO = s] + s, = Q' , Q']QO + Q2Q 'O
E = s3 = Q]Qo
Cargar = s] = Q', Q ' ]Qo
Final = Salida habilitada = Ss = Q, Qo
Para la versión basada en entradas del contador de unos, el mismo procedimiento per-
mite generar las siguientes ecuaciones de estado siguiente:

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
D] = Q](siglliellfe) = s ] + S2 = Q\Qo + Q]Q'o
Do = QoCsiglliellfe) = sofnicio + s,(DalO",D)'=
= Q ' ]Q 'ofllicio + Q]Q 'oCDalOo'D)'
Obsérvese que para la versión basada en entradas. la lógica de salida es más compleja
puesto que incluye la ejecución condicional de las operaciones del camino de datos:
S] = siDatoo'D) = Q]Q'oIDato>"O)
So = s] + s2(Dato>"O) = Q ']Qo + Q]Q'o(Dato>"O)
E = S2DatoLSB = Q]Q'oDaIO LSB
Cargar = s] = Q']Qo
Final = Habilitación de salida = s3 = Q]Qo
Como se puede ver en la Figura 8,8, mientras que los caminos de datos son los mismos
en los dos casos, el registro de estado en la versión basada en estados tiene más bits pues-
to que esta versión utiliza más estados. De igual forma, la lógica de estado siguiente de la
versión basada en estados es más compleja. La lógica de salida, por otra pane, es más si m-
ple puesto que depende sólo del estado presente. Por contra. la versión basada en entradas
tiene menos estados pero una lógica de salida más compleja que incluye las condiciones
internas y externas.

8.4. SíNTESIS A PARTIR DE DIAGRAMAS ASM


En secciones previas se ha definido el modelo FSMD y se han explicado los dia-
gramas ASM utilizados para su descripción. Además, tal como se muestra en el
Ejemplo 8.1, un diagrama ASM también puede utilizarse para obtener una imple-
mentación a nivel de transferencias entre registros (RT) que funcione según el
comportamiento especificado por el diagrama. Sin embargo, hasta ahora no se han
intentado optimizar estas implementaciones RT en el marco de alguna métrica de
diseño. En las tres secciones siguientes se describen varias técnicas utilizadas para
optimizar las implementaciones que se obtienen a partir de diagramas ASM .
Puesto que cada implementación RT define una unidad de control y un cami-
no de datos, podemos abordar la optimización de estas unidades de forma separa-
da. En el Capítulo 6, por ejemplo, se discutieron técnicas específi cas para mini-
mizar las unidades de control, mostrándose primero cómo se puede reducir el
número de estados agrupándolos en estados equivalentes, y luego cómo se puede
reducir el tamaño de la lógica de estado siguiente y de salida mediante una codi-
Diseño al nivel de transferencias entre registros 347

ficación apropiada de estos estados. Además, se muestra que es posible reducir el


tamaño de la unidad de control mediante la minimi zación booleana y las técni cas
de mapeado a la tecnología descritas en el capítulo 4.
Para minimizar el camino de datos hay tres técnicas generales basadas en los
tres tipos principales de componentes utilizados en un camino de datos : compo-
nentes de almacenamiento, unidades funcionales, y buses. En un modelo FSMD,
el cami no de datos queda definido por la asignación de variables en cada uno de
sus estados. En cada estado, se asignan nuevos valores a ciertas variables median-
te operaciones aritméticas, lógicas, y de desplazamiento que ejecutan las unida-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
des funcionales. Por tanto, para ejecutar cada sentencia de asignación a una varia-
ble, el camino de datos debe tomar los datos de los componentes de almacena-
miento donde se encuentran las variables que aparecen en el lado derecho de la
sentencia de as ignación, pasarlos a través de las unidades funcionales que calcu-
lan el nuevo valor, y después devolver el resultado al componente que almacena
la variable del lado izquierdo de la sentencia. De este comportamiento se deduce
que es posible abordar la optimización del camino de datos minimizando los com-
ponentes de almacenamiento, las unidades funcionales , y los buses que interco-
nectan estos componentes.
Centrándonos en los componentes de almacenamiento, por ejemplo, observa-
mos que las variables del camino de datos pueden estar almacenadas en registros,
bancos de registros, o memorias. Sin embargo, puesto que no todas las variables
están vivas al mi smo tiempo, es posible que ciertas variables puedan compartir el
mi smo registro, o la misma posición en el banco de registros o en memoria. En
otras palabras, podemos agrupar las variables del camino de datos de forma que
se reduzca el número de posiciones de almacenamiento necesarias. Es más, inclu-
so si ciertas variables están vivas al mismo tiempo, posiblemente no se acceda a
ellas a la vez. lo que significa que podríamos almacenarlas en un mismo banco de
registros o en memoria para que puedan compartir los mismos puertos del banco
de registros o de memoria. De esta forma, al combinar posiciones de almacena-
miento se minimiza el número de puertos en el camino de datos y con ello se redu-
ce el número de conexiones necesarias.
Por otra parte, ciertas técnicas de optimización se centran en minimizar el
número de unidades funcionales del camino de datos. Como se mencionó antes,
en cada estado se asignan nuevos valores a ciertas variables a través de operacio-
nes aritméticas, lógicas, o de desplazamiento, que pueden implementarse en uni-
dades funcionales distintas. No obstante, puesto que la mayoría de estas opera-
ciones se ejecutan en estados di stintos, podrían compartir la misma unidad fun-
cional. En otras palabras, es posible reducir el número de unidades funcionales en
el camino de datos agrupando operaciones, y asignando cada uno de esos grupos
de operaciones a una única unidad funcional.
La tercera técnica básica de optimización se centra en la conectividad del
camino de datos. Como se ha mencionado, la ejecución de una sentencia de asig-
nación precisa que el dato pase desde un componente de almacenamiento a la uni-
dad funcional que calcula el nuevo valor, que a su vez retorna después a un com-
ponente de almacenamiento. En otras palabras, el dato se transfiere entre el alma-
348 Principios de diseño digital

cenamiento y las unidades fun cional es a través de unas conex iones. Sin embargo,
puesto que en diferentes estados se utili zarán conexiones di stintas, dichas cone-
xiones se pueden agrupar en buses, permitiendo así reducir el número de líneas en
el camino de datos.
Estas tres técnicas se muestran para caso del ejemplo de AS lC de la Figura
8.9, que implementa una aproximación a la raíz cuadrada (S RA. Sqllare-Roo/
Aproximation) de dos enteros con signo, a y b, mediante la siguiente fórmul a:
;-, -,
va- +b- ~ f//ax«0 ,875x+0,5y),x)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
donde x = l/Iax(la l, Ibl), e y = mill (lal, Ibl ). Según la Figura 8.9(a), este ASlC tiene
dos puertos de entrada, 111 1 e 1"2' que son utili zados por los números enteros a y
b, Y un puerto de salida Out. Como puede verse en el diagrama ASM de la Figura
8.9(b), el ASlC lee los puertos de entrada y comienza el cálculo cuando la entra-
da de control Inicio se hace igual a l . En el estado s l ' se calculan los valores abso-
lutos de a y b, Y en " 2 se asigna el máximo de esos dos valores a x y el mínimo él
y. En el estado s3 se desplaza el valor de x tres posiciones a la derecha para obte-
ner O.125x y se desplaza y una posición a la derecha para obtener 0.5)'. El ASIC
calcula 0.875x restando 0.125.1' de x en el estado S4' En el estado .1'5 se suman
0.875x y O.5y, mientras que en el estado s7 se determina el máximo de x y la
expres ión 0.875x+0.5y. En el estado S7' el AS IC genera el resultado y lo muestra
a través de Out durante un ciclo de reloj. Al mi smo ti empo, pone a I la señal ue
control Fillal, para indicar que el dato que ha aparecido en 0 /1/ es un res ultado
válido.
Para detenninar los recursos que se precisan a partir de este diagrama ASM ,
es necesario generar las tablas de uso de vari ables y operaciones que se muestran
en las Figuras 8.1 O(a) y 8. 1O(b). En la tabl a de uso de variables, cada tila corres-
ponde a una de las variables que aparecen en el diagrama ASM y cada col umn a
representa un estado. Entonces, para cada vari able se asigna una x en la(s) co lum-
na(s) correspondiente(s) al (a los) estado(s) donde la variable está viva. Una vari a-
ble se considera viva en el primer estado tras el tlanco de subida de la señal de
reloj que le asigna su nuevo va lor y tamb ién en todos los estados. desde el primero
al último inclusive, en los que se utili za su nuevo valor. En la Figura 8. 1O(a ), por
ejemplo, se asignan los valores a las variables a y b en el fl anco de subida de la
señal de reloj que indica el comienzo del estado SI ' pero no se util izan en ningún
otro estado. Por consiguiente, sólo están vivas en el estado .1' l' En ca mbi o, la varia-
bl e x recibe su valor al comienzo del estados" pero como este valor de x también
se utili za en los estados .1'4 Y .1'6' la variable xestá viva en los estados .1') • .1'4 ' .1'5' y.l'6'
A partir de esta tabla, podemos ver las variables que están vivas cn cada estauo.
Más importante aún, la Figura 8. 10(a) también muestra el número máximo de
variables vivas en un estado. Así, en los estados s~ y .1'5 hay tres variables vivas.
Podríamos concluir que se necesitan al menos tres regi súos en el cami no de datos
de esta implementación de la SRA. En consecuencia, debemos combinar las
variables de la Figura 8.1 OCa) en tres gru pos de manera que cada uno de ellos con-
tenga variables que 11 0 están vivas al mi smo ti empo y se puedan almace nar en el
Diseño al nivel de Iransferencias enlre regislros 349

mi smo registro. A partir de este ejemplo podemos ver que una de las principales
tareas de la síntesis RT consiste en la agrupación de varia bles Vll elg illg o grOll-
ping variables) y en la asignación de estos grupos a los registros o posic iones de
memori a de forma que se minimice el número de componentes de almacena-
miento o alguna otra métrica asociada al di seño, como las prestaciones. la poten-
cia disipada. o la testeabi lidad. Puesto que cada grupo de variables comparte un
registro o una posición de memoria, frecuentemente esta tarea rec ibe el nombre
de compartición de registros/memoria (regisleJ!lIIeIlIlJl:1' sharillg~

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
In icio {II ¡ /1/1
Cfmtml

Filial Dllf

¡ ¡
(a) Diagrama de bloque'

(b l Diagrama ASM

FIGURA 8.9 Aproximación de la raíz cuadrada.


350 Princi pios de disefio digital

5, 52 53 54 55 5. S,

a x
b x
X
"
1, X
x x X X X
Y X
1) X

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
X X

"'" x
," ><
X
"
Número de 2 2 2 3 3 2
variables vivas
(;11 L'"" Je \"ariahk ...

5, S, 53 54 55 5. S, NÚMERO MÁXIMO
DE UNIDADES

(lbs
111 i 11
2
"
IIl11X
» 2 2

Número de 2 2
operaciones

(111 L',p d~ Upo:ral'lonc,

FIGURA 8.10 Uso de los recursos en la aprox Imación de la raiz cuadrada.

De ig ual forma . podríamos dete rminar el mínimo nlllllcro ¡Je uni¡Ja¡Jes nece-
sarias para ej ecutar todas las o perac io nes ¡Je l diagrama ASM . Para ello usaríamos
la tabl a de la Fi g ura 8. IOlb ). en la que las fi las representan los di sti ntos tipos ¡Je
ope rador que aparecen en e l d iag rama ASM y las columnas , ig ual qu e antes.
correspon¡Jen a los estados . A partir de esta tabla ll egamos a la conclu silÍ n de qu e
son necesarias ¡Jos unidades qu e puedan ca lcular los val o res abso lu tos (indica¡Jos
mediante 11 en el di ag rama ASM¡ y desplazar datos (operac ión in¡Ji cada con » en
e l diagrama ASM ). y una unidad que pueda rea lizar las o perac io nes mux. milI. +.
y - . A partir de estos requisitos. e l enfoque más ¡Jireeto para di sciiar e l cami no de
dalOs para la SRA consiste en utili zar dos unidades para el cálc ul o de los va lo res
absolutos, dos desplazadores. una unidad para la dctenn inación de l máx imo y nt ra
para la del mínimo, un sumador. y un restador. A partir ¡Je la Figura 8. 11 , que
muestra el di seño de cada unidad, podemos ver que esta implemen tació n direc ta
Diseño al nivel de transferenci as entre registros 351

necesita un sumador, cinco restadores, cuatro selectores, y varias puertas.


Obsérvese que los dos desplazadores no requieren ningún circuito lógico porque
se implementan mediante una reordenación de las líneas.
Sin embargo, el problema de esta implementación directa está en que no nece-
sariamente hace falta una unidad funcional por operación: puesto que no todos los
estados utilizan todas estas operaciones simultáneamente, la implementación
mediante una unidad fun cional por operac ión implicará la existencia de unidades
funcionales que estarán ociosas la mayor parte del tiempo. De hecho, como no se
necesitan más de dos operaciones en ninguno de los estados, es más efi ciente

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
construir unidades funcionale s que puedan realizar más de una operación, puesto
que esto pennitiría un ahorro sustancial en hardware.
Por ejemplo, en la descripci ón de la SRA, la suma y la resta nunca se rea li zan
al mismo tiempo, lo que signitica que se pueden agrupar estas dos operaciones en
una única unidad funcional llamada sumador/restador. En este caso se gana un
sumador y un complementador a expensas de una puerta lógica EX-OR, como
muestra la Figura 8.11 (k). Por otra parte, agrupar el desplazador de I bit y el de 3
bits no supone un ahorro de hardware y prec isa un selector adicional , como mues-
tra la Figura 8.11 (h). A partir de estos ejemplos, se ve como podemos reali zar la
segunda tarea en importancia para la síntesis RT, que consiste en la agrupación
de operadores ({lzergillg o grollping op eralors) y en el diseño de la unidad fun-
cional para cada grupo, minimizando una métrica de diseño dada como puede ser
el área, el número de puertas o transistores, o el número de unidades funcionales
en el camino de datos. Esta tarea también recibe el nombre de compartición (o
uso compartido) de unidades funcionales (jullctional unit slzaring).
Si nuestro primer objetivo fuese minimizar el número de líneas, también con-
sideraríamos la agrupación de líneas en buses puesto que cada conexión entre dos
unidades se utiliza en muy pocos estados y permanecería inacti va gran parte del
tiempo . Por ejemplo, consideremos las conexiones del camino de datos para la
SRA que utiliza un registro por variable y una unidad funcional para cada opera-
ción . Las conexiones para este camino de datos se dan en la tabla de conectividad
de la Figura 8.12, en la que cada fila corresponde a una unidad funcional y cada
columna representa un registro. Para rellenar la tabla, utilizamos una 1 para cada
conexión entre un registro y la entrada a una unidad funcional , y para cada cone-
xión entre la salida de una unidad funcional y un registro, utilizamos la letra o.
Como puede verse en la Figura 8. 12, la unidad para la SRA neces itaría 14 cone-
xiones de entrada y 9 conex iones de salida, es decir un total de 23 conexiones.
No obstante, cada estado usa muy pocas de estas 23 conexiones. De hecho, a
partir del diagrama ASM sabemos que el máximo número de conexiones se utili-
za en el estado s" donde se necesitan cuatro conexiones de entrada, que comuni-
can los regi stros-que almacenan las variables 1] y ' 2 con las unidades min y max,
y dos conexiones de salida comunicando las unidades min y lIlax con los registros
que almacenan las variables x e y . En otras palabras, el número máximo de cone-
xiones que se usan al mismo tiempo es seis.
A partir de este ejemplo se puede ver que entre las tareas principales de la sín-
tesis RT, la tercera es la agrupación de conexiones Vllelging o grollping COllllec-
354 Principios de diseño digital

prioridad se asigna aleatoriamente. Cuando se han ordenado todas las variables,


el algoritmo considera un nuevo registro, le asigna la variable que está al princi-
pio de la lista, y explora la li sta de arriba abajo, asignando al mismo registro las
variables que no se solapen según vayan apareciendo. Cuando el algoritmo no
encuentre más variables no solapadas, termina la asignación de variables al regis-
tro considerado. Si en ese momento la li sta de prioridad no está vacía, el algorit-
mo toma un nuevo registro y repite el procedimiento entero de asignación hasta
que no haya má variables en la lista de prioridad.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Determi nar los lict11[los
de vida de [as variahles

!
Ordenar las variables
segú n estado de eSCritura
y valor del tiempo de vida

t
Tomar un nuevo registro

!
Asignar al registro todas
las variables no SOlapádá.~
empezando por la
C<lbcccra de la lisia

+
Eliminar de la lista 1m.

,.¿
variables asignadas

¿,LiMa "acía"

FIGURA 8.13 Algoritmo de lado izquierdo.

Para clarificar el compOltamiento del algoritmo de lado-izquierdo, lo utiliza-


remos para agrupar variab les y asignarlas a los registros del camino dc datos para
la SRA. En primer lugar, se han ordenado todas las variables según su s estados de
escritura y tiempos de vida como muestra la Figura 8. 14(a). Después se lOma el
registro RI y le asignamos la variable {I , así como la siguiente variable que no se
Diseíio al ni ve l de transferencias entre registros 355

solapa con e ll a ' l ya continuac ión x Y 'r En este momento. puesto que no ex isten
más variables no solapadas e n la li sta, se e liminan las variables ya asignadas al
registro R l' A continuac ión. se toma e l reg istro R 2• y. de igua l manera. se le asig-
nan las variables b. 12 " " 1-1' Y ' 6' Fi na lme nte. as ignamos las variables restantes. t,
y 1,. al reg istro R " como indi ca la Figu ra 8. 14(b) . Utilizando estas asignaciones ,
es 'pos ihle disei'i¡ú' un cam ino de datos para la S RA que neces ita tres regi stros.
como aparece en la Fi g ura 8. 14(c ).

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
So s, 52 53 54 Ss 56 s.,
a X
b x
X
"
'2
x
X
X X X X
Y X

'.' 3 X
X
X

X
"
'. X
X
"
( a) LiSIa de variahlcs ordenadas

R ¡ ~ lo, 1 , \',1, 1
1
R ~ = Ih, I~ , .1'. ' J ' 1,,1
R ~ = \1 1' '~ I

(b) Asignal'lÓn Je registro!>

/" j /11 2

I ----, I 1, ,
I Selector I I Se lector I I Se lcclOr I
I I I
I R, I I R, I I R, I
I , , ,
I I , I I I I I I I I
~
'--l
I 1(/ 1
l' 11>1 I mili I
L- '--l
I//l/X

I
II + 11 -
. 1
11 »1 , , » ) ,

I L.

OIll¡J/f1

(1.:") Esquema del carni no dI: dato!>

FIGURA 8.14 Registros compartidos después de aplicar el algoritmo de lado izqu ierdo.
356 Principios de diselio digilal

¡ ¡¡
IlIiáv 11/ 1 111 .
COllfml

Filial 01//

1;1J Diagn.l.ma d\.' hl()(luc:-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(h) Diagram:¡ t\S ~

FIGURA 8.9 Aproximación de la raíz cuadrada.

Como demuestra la Figura 8.1 OCa), no podemos reducir el número de regislros


en e l camino de dalos a menos de tres. No obstante, puesto que hay muchos dise-
ños posibles de camin os de datos con tres regi stros. es cuestión de seleccionar uno
que minimizase una segunda mé trica de diseño. tal corno es el costo de conecti-
vidad. Por ejemplo, el costo de conectar pue rtos de E/S. regi stros. y unidades fun -
c iona les se puede medir a partir del número de entradas en los selecto res. asu-
Di seño al nivel de lransferencias entre registros 357

miendo un coste constante para todas las entradas de un selector. En el caso del
camino de datos de la SRA mostrada en la Fi gura 8. 14(c). el número de entradas
a los selectores es 10.
Para desarrollar un algoritmo que minimice el número de registros junto con
el costo de conecti vidad , se da prioridad a la combinación de ciertas variables . La
mayor prio ridad corresponde a dos variables que se utili cen como operandos a la
izquierda o a la derecha del mismo tipo de operador y a las variables cuyo valor
es generado por el mi smo tipo de o perador, debido a que la agmpac ión de tales
variables puede suponer el ahorro de una entrada a un selector. Este concepto se

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
muestra en la Figura 8. 15(a) para el caso de dos sumas (x = a + b e y = e + d)
reali zadas en diferentes estados, con operandos distintos y asignadas a variables
distintas. Si se asume que ambas sumas pueden ejecutarse en la misma unidad
funcional. la agrupación de operandos y resultados puede ocasionar un ahorro de
entradas a se lectores. Por ejemplo. si se asigna cada variable a un registro distin-
to. se obtendría el di seño de la Figura 8. 15(b), que necesi ta 10 entradas a se lecto-
res. Sin embargo. si se agrupan las variables a y e, b y d, Y x e .Y, y se as igna cada
par al mismo registro. se. reduce en tres el número de entradas a selectores, como
muestra la Figura 8. 15(c).

x = lI+h

y=c +d

t
(al Diagr:lI11a ASM pun: i¡¡1 (b) Camino de ualos si n rcgi¡'ITO!> (e) C l!Oi no de datos con regi stro:.
compart idos compartidos

FIGURA 8.15 Agrupación de variables con fue ntes y destinos comunes.

En genera l, dadas 11 variables utili zadas como fuente o destino del mi smo ope-
rador o unidad funcional, hay un ahorro potencial de 11- 1 entradas a selectores si
esas 11 variables co mparten el mismo registro . Para tener en cuenta el ahorro
potencial de la agrupaci ón de variables. se presenta un nuevo algoritmo que esta-
blece una partición en un grafo de compat ibilidad de variables. Este grafo de
compatibilidad (colllparibiliry graph ) está constituido por nodos y arcos tales que
cada nodo represe nta una variab le y cada arco entre dos nodos representa la com-
patibilidad o incompatibilidad para la agrupación de las variables representadas
por estos dos nodos. Hay dos tipos de arcos en el grafo: un arco de incompati-
bilidad (representado por una línea di scontinua) entre dos nodos indica variables
con ti empos de vida solapados, mientras que un arco prioritario entre dos nodos
indica variables con tiempos de vida no solapados que sirven como fuente o des-
358 Principios de diseño digital

tino de las mismas unidades funcionales. Cada arco prioritario tiene un peso de
prioridad que indica el número de entradas a selectores que pueden ahonarse. El
peso de prioridad tiene la forma sld, donde ses igual al número de unidades fun-
cionales que utilizan ambos nodos como operandos a la derecha o a la izquierda,
y des igual al número de unidades funcionales diferentes que generan resultados
para ambos nodos.
A continuación describimos un algoritmo de partición de grafos que agrupa
nodos compatibles en supernodos hasta que todos los nodos del grafo son incom-
patibles. Más concretamente, el algoritmo siempre agrupa dos nodos que están

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
conectados por arcos de prioridad con el peso mayor y crea un supernodo con
ellos. A continuación, se borran todos los arcos dentro del supernodo y se crean
nuevos arcos entre el supernodo y los otros nodos. Por ejemplo, se crea un arco
de incompatibilidad a cada uno de los nodos que son incompatibles con alguno de
los nodos del supernodo, y de igual forma, se crea un arco prioritario a cualquier
nodo que se utilice como fuente o destino común con al menos un nodo del super-
nodo y es compatible con todos los nodos del supernodo. El peso del nuevo arco
de prioridad se calcula como antes. Este procedimiento se resume en la Figura
8.16.

Crear el gra fo de
compatibil idad

Agrupar los nodos de


pri o ridad mas alta

Actua li zar el grafo de


compati bilidad

¿Todos
no sí
los nodos
incompatibles?

( Fin )
FIGURA 8.16 Algoritmo de partición de grafos .

Si aplicamos este algoritmo al ejemplo del camino de datos para la SRA, obte-
nemos una agrupación de variables que es ligeramente diferente de la agrupación
obtenida con el algoritmo de lado-i zquierdo. En primer lugar, necesitamos crear
Diseño al nivel de lransferencias entre registros 359

un grafo de compatibilidad. como muestra la Figura 8.17(a) . Obsérvese que todas


las variables que tienen tiempos de vida solapados se han conectado con una línea
discontinua, que significa que no pueden agruparse. Para crear los arcos de prio-
ridad que indican compatibilidad asumimos la biblioteca de componentes básicos
de la Figura 8.1 0. que incluye unidades para calcul ar el valor absoluto. el míni-
mo, el máximo, el desplazamiento, la suma, y la resta, además de las unidades
funcionales que permiten la combin ación de operaciones. tal es como un suma-
dor/restador. una unidad min/max, o un desplazador de dos vias. Si se supone que
el di seño final estará constituido por componentes de esta biblioteca, existirán

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
arcos prioritarios entre las variables 11, 12, Y x. Y 11, 12, Y 16 puesto que todas ellas
son entradas a la misma unidad l1Iax : hay arcos prioritarios entre las variables x.
y. y '7 porque son destinos posibles de una unidad min/max: y hay arcos priorita-
rios entre 13 y 15 Y 15 Y16 porque son entradas y salidas posibles de un sumador/res-
tador.

(a) Grafo de compati bil idad ini cial (b) Grafo de compatibi lidad despuc.!s dc agmpar 'l ' 15 Y1"

o
le) Grafo de compatibilidad después de agrupar 11, .r Y', (d) Grafo dc compatibilidad después de agrupar'2 e )'

(el Grafo dc compat ibilidad tin al

FIGURA 8.17 Algoritmo de partición de grafos para la SRA.

Tras crear este grafo de incompatibilidad, podemos empezar la agrupación de


vari ables y la creación de supernodos. En este caso todos los arcos prioritarios tie-
nen el mismo peso, así que primero se seleccionan aquellos nodos cuya agrupa-
ción no elimine ningún arco prioritario del grafo de compatibilidad. En otras pala-
360 Principios de di seIio digilal

bras , agrupamos las variables / 3' /5' Y /6 con una posib le di sminución de dos entra-
das a selectores, y creando con e llo e l supernodo I/ J , /s' /6 1que muestra la Figura
8.17(b). A contin uac ión, se selecciona e l nodo con e l máximo número de arcos de
prioridad. concretamente el., y lo agrupamos con / 7 y luego con /1 como indica la
Figura 8. 17(c ). Obsérvese que al agrupar .r, / 7' y / , se han e liminado dos arcos
prioritarios del grafo de compatibilidad, entre y y 17 Y entre 1, y.r. Ahora se puede
agrupar / 2 y luego v ean el s upernodo 1/3' 15,16 ], como muestra la Figura 8. 17(d ).
Fina lmente, podemos asignar aleatoriamente la variable a al supcrnodo 1/,. .r. 171
y b al supernodo [1 2 , r. /3' /S' 161 para reducir más e l número de reg istros necesa-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
rios, de forma que e l supernodo [a. 1" x. 171 pueda asignarse al registro R,. e l
Ib, 12• y, IJ' /s' 16l a l registro R 2 • y el [141 al registro R j'
Para comparar el costo de conectividad de las soluciones generadas por los
a lgoritmos de lado-izquierdo y de palt ición de grafos. utili zamos las mi smas ocho
unidades funciona les que se usan en la Figura 8.14(c). donde Se ha di señado e l
camino dc datos con la asignación de regi stros generada por el algoritmo de lado-
izqu ierdo. A partir de l cam ino de datos mostrado en la Figura 8.18. construido con
la asignación de regi stros obte nida mediante el algoritmo de partición de grafos.
vemos que el número de entradas a selectores es 9. una menos que en la Figura
8. 14(c). La diferencia pod ría haber sido mayor si se hubiesen ut il izado unidades
mu ltifunciollales para el disefio de la Figura 8.18 en lugar de unidades para una
sóla función. puesto que al haber menos unidades habría menos conexiones. La
observación anterior sugiere que se deberían combinar ope rac iones en unidades
multifuncionales pru'a conseguir una mayor minimi zac ión del costo de los recursos
de l camino de datos y de las conexiones, ta l y como se discute en la Sección 8.6.
RI :o (n , ' 1' .1.1_1
R, = [ (I, f ,o y. ' l ' t~ . I¡, I
R~ '" [r~ l -
(a) A sig rKIL'jc1Jl de regislro!-

I ,--, I II[
I Selector I I Selec tor I
I I
I R, I I R, I I R, I

I I [
[ I
I I I I I I I I I I I
[ 101 [[ I!JI [ I lIIi/l 1I /1111.\ II + I r - ,, », II ».1 I
, L- --.J I
LJ I I
lb) E~quema del cam ino de dalos

FIGURA 8.18 Asignación de registros generada por el algoritmo de partición de grafos.


Di seiio al ni vel de transferencias entre registros 361

8.6. USO COMPARTIDO DE UNIDADES FUNCIONALES


(AGRUPACiÓN DE OPERADORES)
La principal finalidad que hay tras el uso compartido de unidades funcional es o
agrupación de operadores es la minimi zación del número de unidades funcionales
en el camino de datos. 19ual que en el uso compartido de registros. el uso compar-
tido de unidades funcional es es posible porque el camino de datos no ejecuta cual -
quier operac ión en cua lqui er estado. De esta forma , se pueden agrupar los o pera-
dores similares en una única unidad multifuncional , que así se usarú con mayor fre-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
cuencia, incrementandose su utilización . Por supuesto, en algunos casos la agru -
pación de operaciones de esta forma no reduce el coste del camino de datos; debi-
do a que a menudo ocurre que operadores di stintos requieren diseiios estructural-
mente diferentes y su agrupación no produce mejoras sino incluso costos mayores.
En muchos casos. no obstante, la asociación de operaciones puedc producir reduc-
ciones no despreciables en el costo. como se muestra en la Figura 8. 19.

", tI
l = If + 11

" t ~~
~ ~
y=c - cI

( a) Diagrama A SM parcin l l b) Camino de d;,¡!Os ~ in rcgh.lros (e) Camino de dU IOS con r('g iMro~
l:Ompartidos compartido!>

FIGURA 8.19 Compartición de unidades funcionales.

En este ejemplo hemos asumi do que el camino de datos realiza dos operacio-
nes diferentes, la suma y la resta. con operandos diferentes en estados distintos.
como indica la Figura 8.1 9(a). Si implementamos el diagrama ASM utili zando
unidades unifuneionales. se obtendría el diseño de la Figura 8. 19(b), en el que el
camino de datos necesita tanto un sumador como un restador. Sin embargo, se
podría conseguir la mi sma funcionalidad mediante un sumadorlrestador y dos
se lectores, como muestra la Figura 8.1 9(c). Obviamente, el segundo diseño es'
preferible cuando el costo del sumadorlrestador y los dos selectores sea menor
que el de un sumador y un restador por separado. Es en estos casos en los que
compartir unidades funci onales podría se r ventajoso. De esta forma sería cuesti ón
de desalTollar un algoritmo que combinase operadores en unidades funci onales de
forma que el costo total de todas las unidades multifuncionales y los se lectores
necesarios sea mínimo . Para e llo podemos utili zar el algoritmo de partici ón de
grafos presentado en la Sección 8.5. Ahora se muestra el algoritmo para la agru-
pación de operadores en el ejemplo del cam ino de datos para la SRA dado en el
diagrama ASM de la Figura 8.9. Para este ejemplo suponemos que están di sponi-
362 Principi os de diseño digital

bies las bibliotecas de componentes simples y complejos de las Figuras 8. 11 y


8.20. Obsérvese que la biblioteca de componentes complejos de la Figura 8.20
incl uye vari as unidades mu lti funcionales cada una de las cuales pueden computar
tres o más de las siguientes operac iones: valor absoluto. mínimo, máx imo. suma.
y resta. Cada una de estas unidades utili za un sumador, uno o dos selectores, puer-
tas lógicas AN D y/o EX-OR, y algunas puertas de control. No obstante . por sim-
plicidad, hemos omitido las puertas de contro l en el cálculo del costo.
b (j ¡,
"

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
f-
" ~
c, o OPERACIÓN
~
C C, Co OPERACiÓN
r--

O l Yalor Absoluto !Ji¡ de M!!OO I S U lllador ~ O O Suma


O Mínimo O l Mínimo
I Máximo
"
lSf'>--i J
S~kdQr
n I l O Resta
~ l l Máximo
'"
,,, J
Sclc':lur
o I
I
ta l U nidad para calcular el m íni mo. (h) Un idad para calcular la suma. la resta.
el máximo y el valor absoluto ,d mí nimo. y el máx imo

" b
t-

eJ ~ "oC, OPERACiÓN
mI dl' signo Sumador

R' I . 1Sumador ~ 1 O Suma 00 1 Suma


11 {e Signo ---.r::::: O I ValorAbsoluto I kelcl'l~r I l OO Yalor Absoluto
I ~ektl~r I.__t _ 1...LR_,_sta_ __ 1 0 1 Resta
I
I
(e) Unidad para calcular la suma.
,
"
---
~
~
r-t idccl~r I
I
r-
I 1 0 Mínimo
I l I Máximo
1:\ resta. y el valor absoluto
(d) Unidad para ..:ulcular la suma. la resta.
el mínimo. el máx imo y el valor absol uto

FIGURA 8.20 Elementos complejos de la biblioteca de componentes.

Para asociar los operadores indicados en el diagrama ASM, primero hay que
construir un grafo de compatibilidad que indique los operadores que pueden com-
binarse. Cada nodo del grafo de compatibi lidad representa un tipo de operador del
diagrama ASM, aunque cada grafo puede tener varios nodos para cada tipo de
operador. Como norma, el número de nodos deberá ser igual al máxi mo número
de apariciones de cualquier tipo de operador en alguno de los estados. Para ind i-
car la compatibilidad de los distintos operadores, es preciso conectar los nodos del
grafo medi ante arcos prioritarios o arcos de incompatibilidad. Como era de espe-
rar, un arco de incompatibil idad indica que los operadores que conecta no pueden
agruparse bajo ninguna circunstancia puesto que se usan concurrentemente en el
mi smo estado. Por contra, los arcos pri oritarios indican preferencias para estable-
cer agrupaciones, debido a las similitudes de los operadores en cuanto a su cons-
trucción o por la sustancial reducc ión en el costo de conexiones del camino de
Diseño al ni vel de transferencias entre registros 363

datos que producen. En la siguiente explicación de la agrupación de operadores,


se consideran ambos tipos de métricas.
Para crear el grafo de compatibilidad mostrado en la Figura 8.2 l (a), exclui-
mos los operadores de desplazamiento puesto que su costo es cero y su agrupa-
ción con otros operadores sólo podría incrementar el costo del camino de datos
para la SRA. Como puede verse, incluimos dos operadores de valor absoluto en
el grafo, puesto que los valores absolutos de a y b se calculan simultáneamente en
el estado sI' Al incluir los operadores restantes, se obtiene un grafo con seis nodos
y dos arcos de incompatibilidad: uno conecta los dos operadores de valor absolu-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
to que se utilizan en el mi smo estado, mientras que el segundo arco conecta los
operadores máximo y mínimo que son incompatibles por la misma razón .
Si utili zamos unidades unifuncionales, entonces la implementación del cami-
no de datos para la SRA precisa dos unidades de valor absoluto y una ullidad para
cada una de las operaciones de máximo, mínimo, suma, y resta . Como se mues-
tra en la Figura 8. 12(b). el costo total de estas unidades es de cinco inversores
lógicos, seis sumadores, y cuatro selectores.
Al agrupar los operadores en el grafo de compatibilidad podemos reducir el
costo del camino de datos de diferentes formas. Dos de estas formas se muestran
en las Figuras 8.21 (e) y (e), con los correspondientes costos del camino de datos
en las Figuras 8.21(d) y (f). Obsérvese que las dos alternativas precisarán dos
puertas lógicas AND, un inversor lógico, una puerta lóg ica EX-OR. dos sumado-
res y dos selectores, con un costo total mucho menor que el de la implementación
original con unidades unifuncionales. Las conexiones del camino de datos para
estas dos alternativas se muestran en las Figuras 8.22(a) y 8.22(b). En estas figu-
ras se puede ver que cada diseño necesita nueve entradas a selectores. como ocu-
rría en el camino de datos de la Figura 8.18(b). Por otra parte, los diseños de la
Figura 8.22 tienen un costo de unidades funcionales mucho menor, lo que signi-
fica que globalmente el diseño es más eficiente en cuanto a su costo.
Además es posible reducir más el costo del camino de datos minimizando el
costo de conecti vidad al agrupar operadores. Para conseguirlo debemos utili zar
los arcos prioritarios del grafo de compatibilidad como se hi zo en el caso de la
agrupación de variab les. Aquí también, el peso de estos arcos prioritarios se basa
en el número de fuentes y destinos comunes.
Para ilustrar el cálculo de los pesos de prioridad, se considera como ejemplo
el diagrama ASM parcial de la Figura 8.23(a), en el que una operación de suma y
otra de resta se completan en estados distintos con diferentes conju ntos de ope-
randos, asignándose sus resultados a variables di stintas. Además. si las vari ables
a y e, b y d, Y x e y comparten los mismos registros, un diseño de camino de datos
con un sumador y un restador separados precisaría cuatro selectores de dos entra-
das y un selector de 3 entradas, con un total de l l entradas a se lectores, como
muestra la Figura 8.23(b). Por otro lado, un camino de datos que utilice un sumu-
dor/restador sólo preci saría dos selectores de tres entradas y un se lector de dos
entradas. con un total de 8 entradas a selectores, como muestra la Figura 8.23(c).
En otras palabras. la asociación de un sumador y un restador en un circuito suma-
dor/restador proporciona un ahorro de tres entradas a selectores puesto que el
364 Principios de diseño digital

0---8 ~
UNIDAD

la 1
PUERTAS liNERSORES PUERTAS
ANO LÓG~ EX-OR
SUMAIJOfIES SELECTORES

Ibl

8--------8 111 /1/


múx
+

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
O O Total 5 6 4

(a) (irato de nllllpali bil idad I h) Tah la de n ):-.Ill

0--G
8--------8 ~
UNIDAD

[lal/mÍn [
PUERTAS INVERSORES PUERTAS
ANO LÓG~ EX-OR
SUMAIJOfIES SELECTORES

~
[Ibl/máx/+I-[ 1

O O Total 2 2 2

re )Alternat i\'a de agrupaci(ín Id) Tabla de l'O~ tll

0--G
8--------8 ~ UN~AD
PUERTAS INVERSORES PUERTAS
ANO LÓG~OS EX-OR
SUMAIJOfIES SELECTORES

Ilal/mÍn/+1 1

o O
[Ibl/máx/- J

Total 2 2
2
2

(e) A lteJ'l l;¡l i\'<l Je agrupal'ilín (f) Tahla JI.' c o~ to

FIGURA 8.2 1 Ag ru pación de operadores para la implementación de la SRA.


Diseño al ni vel de transferencias entre registros 365

sumador y el restador tienen dos fuentes comunes y un destino común. Podemos


extraer como reg la que la agrupación de operadores que ti enen 11 fu entes comunes
como operandos a la izqui erda (derecha) permite ahorrar 11- 1entradas a se lecto-
res. Igualme nte, agrupando los operadores q ue tienen n destinos en común se aho-
rrarán 11- 1 entradas a selectores. Con estas reglas e n mente. la agrupación de ope-
rado res puede minimi zar el número de entradas a selectores si se asigna mayor
prioridad a los nodos conectados mediante un arco prioritario y con el mayor
número de fu entes y destinos comunes .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I Selector

I
I
R, I I
I
I Selector

R. I
n
I R, I
1

1
I I
I 1I
1
Sdl-'Clor I
I 1 » 1 11 », 1

~'7 I ra¡)s/mil/ j I 1 IlIbs/lluí.\:I+/- 1 -'


I L
(a ) E ~quc ll1 a del camino d.: dalO~ para la nt.ignaci6n Ul' unidad!!....
de la ligura S,lH¡:)

iI

I
Selector

N, I
I Selector I

I R, I
n
I R, I
1

I
I I Selector
I 1 »1 11 »3 1

~'7 I [ob,,'III/I"/+ 1
I [alJ.\/l/uíxl-1
I I L
(b) Esquema del camino de dalo:" parJ la asignación de unidadc!>
de la fig ura 8.2 1{e)

FIGURA 8.22 Conectividad del camino de datos.

Volviendo al grafo de compatibilidad de la Figura 8.2 1(a). ahora se añaden los


arcos prioritarios y se rediseña el camino de datos para la SRA de forma que se
366 Principios de diseño digital

reduzca el número de entradas a selectores al agrupar operadores. Por ejemplo, en la


Figura 8.24(a), hemos marcado cada arco prioritario con un peso sld, en el que s indi-
ca el número de fuentes comunes y d el número de destinos comunes. Como puede
verse, el arco entre los operadores + y - está marcado con 111 puesto que dos varia-
bles fuente (operandos a la derecha), 1, y I s' y dos variables destino, 15 y 16, compar-
ten el registro Ro' Igualmente, el arco entre los operadores min y - está marcado con
2/1 puesto que ,ñin y - tienen dos fuentes comunes y un destino común. Es decir, los
operandos a la izquierda, 11 Yx, comparten el registro R l' los operandos a la derecha,
I z y 13, comparten el registro R2, y los resultados, y y 15' comparten el registro R~.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I/licio {III 11/ 2
Control
Filial 0111

¡ ¡
(a) Diagrama de bloques

Inicio
o

(b) Diagrama ASM

FIGURA 8.9 Aproximación de la raíz cuadrada.


Diseño al ni vel de transferencias entre registros 367

x_ <l+b

" ~ Se lector Selector


I y_c _ d

~ cili cili

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(al Diagrama ASM parcial lb) Di seño s in ulli dadcs agruplldas lel Diseño con unidades agrupadas

FIGURA 8.23 Prioridades para la agrupación de unidades.

(al Grafo dc compatibilidad lb) Gmfo de compatibilidad tras


agru par + y -

88

(e) Grafo de compatibil idad tras (d) Particiones fmale s del gr:lfo
agrupar m(n. +. y -

FIGURA 8.24- Partición del grafo asociado al camino de datos para la SRA con R, = [a, t,. x, t,l,
R, = lb, t" y, t" t5 , t61, Y R, = [t,].
Ahora podemos utilizar el algoritmo de partición de grafos presentado en la
Figura 8. 16 para agrupar estos operadores en las unidades funcionales apropiadas.
Según este algoritmo, primero se intentan agrupar aquellos operadores que ti enen
una estructura de di seño similar, tal como la suma y la resta, los operadores min
y /1/ax, y el desplazamiento a izquierda y a derecha. En general , esta forma de
agrupación de operadores similares producirá una mayor reducción del costo. En
368 Principios de diseño digi tal

el caso del algoritmo para la SRA, por ejemplo, podríamos agrupar los operado-
res + y - en un único supernodo y después redibuj ar el grafo de compatibilidad
como muestra la Figura 8.24(b). A continuación , añadimos el operador min a este
supernodo puesto que de todos los nodos del grafo es el que tiene mayor número
de fuente s comunes (dos) y destinos com unes (uno). La nueva disposición del
grafo de compatibi lidad se muestra en la Figura 8.24(c). Fina lmente, añadimos a
este supernodo el operador valor absoluto de la variable a Así se llega a la parti-
ción del grafo de la Figura 8.24(d), que no se puede reducir más.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
JI/ido /n. /"'!
Control
Filial 0111

(a) Diagrama de bloques

¡"icio
o

(b) Diagrama ASM

FIGURA 8.9 Aproximación de la raíz cuadrada.


Diseño al nivel de transferencias entre registros 369

Como puede verse a partir de esta partición del grafo, se podría construir un
camino de datos para el algoritmo de la SRA util izando tres registros y cuatro uni -
dade, funcionales. La asignación final de variables y operadores a reg istros y uni-
dades funciona les se da en la Figura 8.25(a), y el esquema del camino de datos se
muestra en la Figura 8.25(b). Obsérvese que este diseño del camino de datos sólo
neces ita siete entradas a selectores, en comparación con las nueve entradas a
selectores necesarias en la, soluciones de diseño previas, que no tenían en cuenta
las prioridades de agrupación.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Inicio In l In'!.
Control
Final Om

l l
(a) Diagrama de bloques

(b) Diagrama A$M

FIGURA 8.9 Aproximación de la raíz cuad rada.


370 Principios de diseño digital

RI = la, t¡,x, 171 AV 1 = IIh!lm/ll/ +/- ]


R~:= lb, 11 , y, 1 1, f j' 110 1 AV, = [1(lVII/l/x1
R, = [I~ I SH1- = [» 11
SH! = 1»3 1

(a) Asignación de registros)' un idades (ulll' iouah;s

I Selector Selector
I I 11

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I N, I I R, I I R, I
I
I I

I I
Selector I
I I »
I
1 II
II
»)

"7 I [Clh,\YmlÍ.I'1
I [ab.l'l mtll/+/- ] 1
I L
(bl Esqu\!lll:J del camino de dato"

FIGURA 8.25 Camino de datos para la SRA utilizando partición prioritaria.

8.7. USO COMPARTIDO DE BUS (AGRUPACiÓN


DE CONEXIONES)
En las secciones previas hemos visto cómo agru par variab les y operadores y cómo
asignarles registros y unidades funcional es. Sin embargo. después de la asigna-
ción. todavía se necesitan conectar los regi stros y las unidades funcionales para
constituir e l camino de datos: cada salida de un registro se conecta con la entrada
de una unidad funcional y cada sali da de una unidad funcional COIllO cntrada a un
registro. Las salidas de los registros y de las unidades funcionale s se llaman fuen-
tes de la conexión, y sus entradas destinos de la conexión. Puesto quc varias
conexiones pueden tener el mislllo destino. un camino de datos suele incluir selec-
tores que permiten establecer la conexión adecuada en el momento adecuado.
Puesto que las conexiones de un camino de datos ocupan normalmente un área
de si licio sustancial dentro del circuito integrado. generalmente se intenta reducir
el número de conexiones agrupándolas en buses, que oc upan menos área. Igual
que cuando se agruparon las variables y los operadores. se agruparán todas las
conexiones que no se utilicen al mismo tiempo y se asignará un bus a cada uno de
estos grupos. Cada fuente se conecta a un bus mediante un adaptador de bus tries-
tado que estab lece la conexión al bus en los estados en que la fuente envía datos
a su destino: o bien desconecta la fuente del bus.
Diseño al nivel de transferencias entre registros 371

La técnica para agrupar conexiones es similar a las técnicas que hemos utili-
zado para agrupar variables y operadores. En primer lugar, se crea una tabla de
uso de conexiones que indica los estados en los que se utiliza cada conexión.
Después se obtiene un grafo de compatibilidad a partir de esta tabla de uso, en el
que cada conexión se representa mediante un nodo y dos nodos pueden estar
conectados mediante un arco prioritario o un arco de incompatibilidad. Como el
mismo nombre indica, dos nodos están conectados mediante un arco de incompa-
tibilidad cuando sus correspondientes conexiones no parten de la misma fuente
pero deben usarse al mismo tiempo. A la inversa, los nodos están conectados por

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
arcos prioritarios siempre que sus correspondientes conexiones tengan una fuen-
te común o un destino común. Una vez construido este grafo de compatibilidad,
se usa un algoritmo de partición de grafos para agrupar las conexiones de forma
que se maximice el número de arcos prioritarios incluidos en los grupos.
En la Figura 8.26 se muestra como se agrupan las conexiones en el camino de
datos para la SRA presentada anteriormente, que se repite y aclara en la Figura
8.26(a). A partir de este diagrama y del diagrama ASM de la Figura 8.9, se cons-
truye la tabla de uso de conexiones, mostrada en la Figura 8.26(b). En esta tabla,
se ha utilizado una x para designar los estados en los que se usa cada conexión.
Obsérvese que esta tabla contiene tanto las entradas de las conexiones, que comu-
nican las salidas de los registros con las entradas a las unidades funcionales, como
las salidas, que comunican las salidas de las unidades funcionales con las entra-
das a los registros apropiados. Para simplificar la tarea de partición, resulta útil
separar estos dos tipos de conexiones y realizar independientemente la partición
de cada tipo. Separando estos dos tipos de conexiones, se definen buses distintos
para la entrada y la salida, lo que simplifica la arquitectura del camino de datos.
Una vez terminada la construcción de la tabla de uso, podemos transformarla en
los correspondientes grafos de compatibilidad asignando un nodo a cada conexión
y añadiendo los arcos apropiados entre los nodos. Los grafos de compatibilidad
para los buses de entrada y salida se muestran en la Figura 8.26(c) y (d).
Obsérvese que también existen arcos de incompatibilidad entre todos aquellos
nodos que no están eléctricamente conectados pero que se utilizan al mismo tiem-
po. En la Figura 8.26(c), por ejemplo, la conexión B es incompatible con la C y
la D, la F es incompatible con la C, la D, y la E, y la G es incompatible con la H.
Además hemos añadido los arcos prioritarios para aquellas conexiones que tienen
la mi sma fu ente o destino, indicando, por ejemplo, que las conexiones A, C, D, Y
H se originan todas en el mismo registro R \' Yque las conexiones B, F, Y G se ori-
ginan todas en el registro Ro. Los nodos D y E del grafo también se han conecta-
do con un arco prioritario porque tienen el mismo destino (la entrada izquierda a
la unidad funcional AU2l.
En la Figura 8.26(d) se determinan los arcos de prioridad para las conexiones
de salida procediendo de igual forma. En este momento, una vez se han determi-
nado todos los arcos prioritarios y de incompatibilidad, podemos realizar la parti-
ción de las conexiones intentado cortar todos los arcos de incompatibilidad en
tanto que se corta el menor número de arcos de prioridad posible. Como muestra
la Figura 8.26(e), se puede conseguir el número más reducido de particiones agru-
372 Principios de diseño digital

pan do las conex iones A, e, D, E, Y H en el Bus 1 y las conexiones B. F. Y G en el


811.1'2' considerando así todas las conexiones de entrada. Igualmente. se agrupan 1.
K, Y M en el BlIs3' y J. L, Y N en el BII.\'4' correspondi endo a las conexiones de
salida. Así, en la Figura 8.26(1') se puede ver que el camino de datos para la SRA
usa un total de cuatro buses , lo que reduce considerablemente el coste de su
impleme ntación .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
M N

I
I Selector I Selector I
I I 11
I R, I I N. I I N, I
1
1
I
DI E
FI GI I11
A BI e Se leclor I 1 »1 11 » .1 1

'7 11 [{/b.v lI/(ü]


I [(/b.v mtl// +/- ] IK L
1 J

Ow la. ) Camino de datos para la SRA

p
A
B
So 51 $2 53 54 Ss Ss

x x
Sr
x Ó (0
e x x x
D x x
E x
F x x x x
G x
H x
I x x x
J x x x x
K x (e) Ora ro de compat ibilidad par;¡ (d) Grafo de wmpatibili d:lll p,lr,j
L x los bu ses de e ntrada los I m s c~ de <;alid.l
M x
N x

(b) Tabla de uso de conexione!>

FIGURA 8.26 Agrupación de conexiones en el camino de datos de la SRA.


Diseño al nivel de transferencias entre registros 373

III ~

I
I R, I I R,
I I 11 , I
Bus. ~ ~
Bus. I I

I 1(/1'.l'/mll.\1 I I 1/111.1'/11/11//+1- 1
I
~

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
» 3
BII ~ I : Itl. C. 1) . ¡:. I-!!
BII'l = 11-1. l'. I;¡

Bu,, ;= 1/, l·:, .\1 1 ,7


Bus)
8us
~ '7 ~'7

"
,
Bu .. ~: 1./. l .. NI
0111
In Organi¡;¡¡ción del camino de datos ~eg ún " U eStructura de buses

FIGURA 8.26 Continuación .

8.8. AGRUPACiÓN DE REGISTROS


En la Sección 8.5 describi mos el procedimiento para agrupar variabl es de manc-
ra que comparti eran el mismo registro. Como se explicó, una seri e de variables
comparten e l mismo regi stro siempre que tcngan ti empos de vida no solapados.
De igual forma, los registros con tiempos de vida no solapados pueden asociarse
constituyendo bancos de registros que COtll l arten los mismos puertos de entrada
y salida. con lo que a su vez se reduce el númcro de conexiones en e l camino de
dalas al haber menos puertos. Por desgrac ia, esto incrementa e l retardo registro-
registro puesto que ex iste un retardo extra deb ido a la decodificación de direccio-
nes que e produce en e l banco de registros. No obstante, frecu entemente se acep-
ta este retardo dada la reducción en e l costo que se consigue a l rcemplazar varios
reg istros con un s610 banco de reg istros.
Para ag rupar registros se puede utili zar el mis mo enfoquc descrito para la
agrupación de vari ables. operado res. y conexiones . Primeramente se c rea una
tabla de acceso a reg istros en base a la que , a continuaci6n, se gene ra un grafo tIe
compatihi lidad. Fina lmente, se apli ca un algoritmo de parti c ión de grafos para
agrupar los regi stros compatibles e n bancos de registros. Puesto que cada banco
de reg istros puede tener más de un puerto, generalmente se agrupan los registros
pa ra que en ningú n momento e l número total de accesos para lectura o escrit ura a
los registros del grupo exceda al número de puertos de lectura o escritura del
banco de registros.
En la Figura 8.27 se describe e l procedimiento de agrupac ión de registros uti-
li zando e l ejemplo del cami no de datos para la SRA. Primero creamos una tabla
de acceso a los regi stros, con una fila para cada reg istro del cam ino de datos y una
co lumna por cada estado del diagrama ASM. En esta tab la, la línea divi soria entre
374 Principios de diseño digital

estados indica el flan co de subida de la señal de reloj que carga los datos en los
regi stros. Un tri áng ulo blanco apuntando a la línea divi soria signifi ca que se va a
cargar un nuevo dato e n el registro correspondiente en ese flan co ele subida elel
reloj. Tambi én se ha dibujado un triángul o negro desde la línea divi soria para
indicar el estado e n el que se usará el dato.

R, = [11. ' "x. t.t ]


R! = lb. f~.y. ' ,.
R ; = (I~l
r ~ .I¡,1
-------8
,,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) Asignación de registros
tl l ,
,
53 5,

(~) Grafo de C{llllpallbilid:uJ

/1/ ,

R,
11, L 11,
J
Bus, \7
Bu s~
1 I ,7

I lobs/má.\ 1
I I IlIb.vmíl// +/ · '
I
I »' I I » 1 I
Bus] ~7 I ~
Bus '\7

0//1
(d) E:.qucm ~ del cami no de <.blll.'.

FIGURA 8.27 Agrupación de registros.

A partir de la ta bla de acceso a los registros ele la Figura 8.27(b) se genera el


grafo de compatibilidad. En el caso del camino de datos para la SRA. puede verse
que los registros R 1 Y R 2 no son compatib les puesto que se escribe o se lec con -
currentemente en ell os e n los estados SI)' s l' .1'2' S,. 5'.' Y .1'6' Igualmente. Re y R] no
son compat ibles puesto que se escribe' en ambos en el estado .1', y sc Icen en el
estado ss' Por otra parte. los registros RI y R] son compatibles s'implemente por-
que nunca se accede a ellos al mi smo tiempo.' Estas conclusiones se rellejan en el
grafo de compatibi lidad de la Figura 8.27lc), que muestra que podemos agrupar
Diseño al nivel de transferencias entre registros 375

los registros R 1 Y R) en un único banco de registros con un puerto de lectura y otro


de escritura. El camino de datos final que utiliza este banco de registros se mues-
tra en la Figura 8.27(d).

II/ icio /1/ I 1"1


Control
F;/lol OUI

¡ ¡

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(o) Diagrama de bloques

I/l icio
o

(b) Diagrama ASM

FIGURA 8.9 Aproximación de la raíz cuadrada.

A parti r de este esquema también puede verse que agrupando los registros R 1
Y R3> ha sido posible reducir el número de adaptadores de bus en el camino de
376 Principios de diseño digital

datos puesto que al compartir RI y RJ el mismo puel10 de lectura se necesita sólo


un adaptador de bus en lugar de dos. En general, agrupando 11 regi stros que acce-
den a m buses en un sólo banco de registros con un puerto de lectura se reduce en
l/- m el número de adaptadores. No obstante, si se agrupan 1/ registros que se car-
gan desde /1l buses diferentes en un sólo banco de registros con un puerto de entra-
da, hay que introducir un selector de 111 entradas frente al puerto de entrada.
Debido al potencial ahorro de adaptadores de bus y de entradas a selectores, se da
prioridad a la agrupación de registros con una fuente o destino común, es decir. a
los registrOS que se cargan desde el mismo bus o actúan sobre el mismo bus.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
8.9. ENCADENAMIENTO Y MULTICICLO
En la Sección 8.8 presentamos técnicas para la síntesis del camino de datos basa-
das en un modelo sencillo del mismo. Por ejemplo, en los caminos de datos con-
siderados, los registros se conectaban ti las unidades funcionales mediante uno o
más buses, y las unidades funciona les a su vez se conectaban mediante uno o más
buses a los registros. En algunos casos se utilizaron selectores cuando un registro
o una unidad funcional recibía datos de más de un bus. En este tipo de camino de
datos, los registros reciben una señal de reloj cuyo ciclo es igual al mayor retardo
registro-registro. Puesto que el camino con mayor retardo registro-registro pasa a
través de la unidad funcional más lenta, las otras unidades funcionales sólo están
ocupadas durante una parte del ciclo de reloj. permaneciendo inactivas el resto del
ciclo. No obstante, si el retardo total de dos cualesquiera de estas unidades es
menor que el ciclo de reloj , es posible conectarlas en serie y realizar dos opera-
ciones en un sólo ciclo de reloj . Este mismo principio se puede extender a más de
dos unidades 'funcionales si el camino de datos tiene ciclos de reloj más largos.
Esta técnica de conectar unidades en serie recibe el nombre de encadenamiento
(chainil/g), puesto que dos o más unidades se conectan sin introducir reg istros
entre ellas. Creando así una unidad combinacional mayor que puede calcular asig-
naciones que implican a dos o más operaciones. Siempre que se utilice esta téc-
nica, una sentencia de asignación de variables en el diagrama ASM tendrá dos o
más operadores en su término derecho .
Para mostrar la técnica de encadenamiento utilizamos el diagrama ASM de a
Figura 8.28(a), que corresponde al algoritmo para la SRA. Obsérvese que este dia-
grama ha sido modificado con respecto al diagrama de la Figura 8.9, puesto que
se han fundido dos estados (S2 y s3) en uno . ólo (s2)' Como puede verse, esto sig-
nifica que en el estado s2 de la Figura 8.28(a) se ejecutarán tres sentencias de asig-
nación : la primera de ellas usa una operación binaria (máximo), mientras que las
otras dos sentencias usan dos operaciones cada una. Más concretamente. el nuevo
valor asignado a'3 se obtiene tras calcular el máximo de'l y'2 Y después despla-
zar el resultado tres posiciones a la derecha. Igualmente. el nuevo valor de 1.) se
'1 '2
obtendrá tras calcular el mínimo de y Y después desplazar el resultado una
posición a la derecha. Puesto que desplazar a la derecha una o tres posiciones no
produce ningún retardo como se mostró en las Figuras 8.11 (t) y (g). el ciclo de
DiseIio al ni vel de transferencias enlre regislros 377

reloj para este camino de datos encadenado no se rá mayor que el ciclo de reloj ori-
ginal. Por otra parte. puesto que este diagrama ASM só lo tiene siete estados en
lugar de los ocho del diagrama ori ginal, podemos conclui r que este camino de
datos modificado puede rea lizar el algoritmo para la SRA un 12.5 % más rápido.
El esquema del nuevo camino de datos con las unidades encadenadas se muestra
en la Figura 8.28(bl. Obsérvese que para almacenar concurrentcmente los tres
nuevos va lores de las variables x, t" y I~ que se generaron en el estado S2 no se ha
tenido que añadir ninguna conexión adicional desde el desplazador indicado con
» 1 al reg istro R3'

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
K r",[·r. /r· I.I. J
R1", !b. t:. l . t i' I... /,,!
R1: l/JI
(~ ) Asignación de registros

I
I ", I I ", I I R, I
Bu.~ r
Bus,
-& -&
'V

I I I
lah.vlI/(HI [(IIH/mr"J . / ) I
[2~ C >2]
BusJ ,'7
B us~
,\7
0111
fa) Diagrama ASM (b) Esque ma dd camino dl' t1il[ OS

FIGURA 8.28 Camino de datos para la SRA con unidades encadenadas.

Además del encadenamiento, que permite utili zar un idades más rápidas. algu-
nas veces puede que se desee utili zar unidades más lentas pero más baratas, que
precisan más de un ciclo de reloj para generar su s resultados. Esta técnica sc llama
multicido vnu/licycl in g), y las unidades más lentas utili llldas, unidades multici-
do. Por razones obvias estas unidades sólo pueden utili zarse en los cami nos no
críticos del diagra ma ASM . Por ejemplo, en el diagrama ASM de la Figura
8.28(a). a la variabl e 14 se le asigna el nuevo valor (lJIill(I I, /2))» / en el estado 52'
pero este lluevo va lor no se utili za hasta el estado 5~. En este caso. entonces. po-
dríamos utilizar una unidad que necesitase dos ciclos de reloj para calcular el
378 Principios de di seño di gital

valor mínimo. y encade nar esta unidad con un desplazador a la derecha que no
consuma tiempo para generar su resultado.
Esta organizac ión de multicicl o se muestra en la Figura 8.29. Como puede
ve rse en la Fi gura 8.29(a). el di agrama ASM se ha mod ificado introduciendo cor-
chetes. que indican que el resultado sólo estará di sponible en algún estado
siguiente o que el cálcu lo de un a ex pres ión ya se ini ció en un o de los estados pre-
vios. Por ejemplo. la asignac ión de vari abl e [1 4J= (IIÚIl ( I !. I, ))» I indi ca que el
'4
nuevo va lor se as ignará a en uno de los estados siguientes. Igualmente. la expre-
sión ' 4 = [lIlill ('! ,' , )) » !J indica que el nuevo valor se asigna a 1.1 en el estado

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
presente pero el cálculo de la ex pres ión entre corchetes se ini ció en uno de los
estad os prev ios. Como se ilustra en la Figura 8.29(c). un di agrama AS M de este
ti po se traduce de manera sencill a en un camino de datos con unidades multiciclo.
Obsérvese q ue se ha tenido que introduci r un estado ad ic ional puesto que la asig-
'4
nac ión = lIl ill(' !,' , )) » I neces ita dos estados durante los cual es Bus! y Bus,
se uti lizan para proporcionar los operandos I! y 12, lo que a su vez retrasa la eje-
cución de la asignac ión 's = x - 1, al estado SS'

¡{ ¡"'(II" I ' \,1 -1


IC = (I'. I~, 1', / 1. / ,. /,,1
R ~: 11,11 •
\= IIIli.\·( l l , / ~ }
1,=/IIti,\'f ( l , r~J »J
11..¡ 1=lIItil{r l , / ~ » > I

I
I
R, I I ., I I R• I
Bus! ~ .&
Bus, \7 1 1 ~

I IfllJ.\/l/lIíx l I I 10/1.\1+/-1
I

(3) Dmgrama ASM


,
011/
Bus)
BU S4
~7
[?~
~7

(h) Esquema del I:aminu de d ll h),~


- »!

FIGURA 8.29 Camino de datos para la SR A con unidades multiciclo.


Diseño al nivel de transferencias entre registros 379

Queda por tanto probado que las prestaciones del camino de datos pueden mejo-
rarse mediante el encadenamiento de unidades funcionales y que se puede reducir
el costo del camino de datos utilizando unidades multiciclo. Como es de esperar, las
técnicas descritas anteriormente para la asociación de variables, de operadores, y de
conexiones se pueden ampliar incluyendo encadenamiento y unidades multiciclo.
No obstante. por razones de brevedad, en este libro se omite su discusión.

8.10. SEGMENTACiÓN DE LA UNIDAD FUNCIONAL

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En secciones anteriores se han presentado diversas técnicas para reducir el costo
del camino de datos, principalmente mediante la reducción del número de regi s-
tros, unidades funcionales, y conexiones. En esta sección la atención se centra en
la presentación de técnicas que incrementan las prestaciones del camino de datos .
La técnica más efectiva para la mejora de las prestaciones es la segmentación
(pipelining ). Un camino de datos segmentado es similar a una línea de montaje de
una fábrica donde un producto se desplaza de etapa a etapa. En otras palabras. en
cada etapa se aplica la misma operación a cada producto, pero cada etapa lleva a
cabo una tarea distinta dentro del proceso de ensamblado del producto, lo que ace-
lera significativamente la fabricación del mismo.
La técnica de segmentación puede aplicarse a unidades funcionales . caminos de
datos, o unidades de control. En el caso de unidades funcionales . se divide la unidad
funcional en dos o más etapas, cada una separada por biestables para que pueda ope-
rar sobre un conjunto de operandos distinto. Por tanto, en cualquier momento exis-
ten varios conjuntos de operandos dentro de la unidad segmentada (concretamente,
el número de conjuntos en la unidad es igual a su número de etapas). El uso de uni-
dades funcionales segmentadas no afecta al tiempo necesario para generar el resulta-
do correspondiente al primer conjunto de operandos, que es el mismo que el tiempo
en una unidad no segmentada. Sin embargo, el resultado correspondiente a cada con-
junto de operandos adicional estará disponible en un tiempo igua! a! retardo de una
única etapa. Por ejemplo, para una unidad segmentada con dos etapas, cuyo retardo
cuando no e tá segmentada es de 100 ns, el resultado del primer conjunto de ope-
randos también se genera después de 100 ns, pero el del segundo conjunto de ope-
randos estará disponible sólo 50 ns después. y lo mismo sucede para todos lo con-
juntos de operandos siguientes. En general, si hay 11 etapas en la unidad segmentada,
se puede reducir el tiempo necesario para generM resultados a I/n veces el tiempo de
ejecución sin segmentación, con la excepción del primer resultado.
Como ejemplo de unidad segmentada, se considera la unidad aritmética (A U,
de Arit/¡metic Ullit) de dos es tapas que se muestra en la Figura 8.30, obtenida
insertando tres biestables para los datos y un biestable para las señales de control
entre los puertos de entrada y salida de la AU no segmentada de la Figura 8.20(d).
Podríamos haber insertado biestables dentro de la AU , en lugar de entre la AU y
los selectores, para dividir el camino crítico en dos partes iguales. Si estos biesta-
bles estuvieran exactamente en mitad de l camino de retardo crítico, cada es tupa
necesitaría sólo la mitad de tiempo que la unidad no segmentada para generar sus
380 Principios de diseño digital

resultados. ASÍ, la unidad segmentada puede operar con un ciclo de reloj aproxi-
madamente igual a la mitad del ciclo de reloj de la unidad no segmentada. Como
se indicó anteriormente, todavía se necesitarán dos ciclos de reloj (o estados) para
que la unidad segmentada proporcione un resultado; en el primer ciclo de reloj, el
resultado parcial se almacena en los biestables; en el segundo ciclo de reloj. se
genera el resultado final en la segunda etapa de la unidad segmentada. mi entras
que la primera etapa está generando resultados parciales para el siguiente conjun-
to de operandos, y así suces ivamente para cada conjunto de operandos.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
11 b

e, ~===::P¡---J=;l
'" ,
('(1

Bi estables

/' "'"-
Bit de sIgno

FIGURA 8.30 Unidad aritmética segmentada.

Para comparar los resultados de las unidades con y sin segmentación. se con-
sidera el camino de datos para la SRA con una única AU no segmentada que ca l-
cule el valor absoluto, el mínimo, el máximo, la suma, y la resta. Este camino de
datos y su correspondiente diagrama ASM se muestran en la Figura 8.3 1. ,_
Obsérvese que este camino de datos preci sa 9 estados, ó 9 ciclos de reloj , para cal-
cular la aproximación de la raíz cuadrada. Por otro lado, podríamos red isei\ar el
camino de datos de la Figura 8.3l(b), sustituyendo su AU no segmentada con una
AU segmentada de dos etapas, como muestra la Figura 8.32(a). Este nuevo cami-
no de datas precisa 13 estados o ciclos de reloj para calcular la aproximación de
la raíz cuadrada, como muestra el diagrama de tiempos de la Figura 8.32(b).
En ese diagrama de tiempos, la carga y la lectura de cada regi stro y la opera-
ción de cada unidad funcional se muestran estado a estado. El diagrama de tiem-
pos tiene una fila por cada acceso de lectura o de escritura a un registro y tambi én
una fila por cada etapa de la AU y de las unidades de desplazamiento. Cada
columna representa un estado de la unidad de control. Como puede verse, en el
estado So el camino de datos lee los valores de las variables (1 y b de los puertos
de entrada y los almacena en los registros R I y R2 . A continuación, en el estado
SI' se lee el valor de la variable a del regi stro R I Y se calcula parcialmente el valor
absoluto de a. Este resultado parcia] se almacena a continuación en los biestables
que hay entre las dos etapas de la AU segmentada. Después, en el estado .1"2' el
Di seño al nivel de transferencias entre registros 381

camino de datos termina el cálcu lo de lal y asigna su valor a la variable ' 1, que
está almacenada en el registro R 1, Al mismo tiempo, en el estado .\'2 el cam ino de
datos tambié n comienza el cálcu lo de Ibl, almacenando el resultado parcial de este
cálculo e n los biestables de la unidad segmentada, Así, en el estado '\'7 las dos eta-
pas de la AU segmentada están activas , aunque procesando operandos diferentes,
En el estado", el camino de datos termina de calcu lar Ib l y asigna el res ultado a
la variab le 17 almacenada en el regi stro R" Obsérvese que en este momento el
camino de dlltos todav ía no puede inici ar la siguiente operac ión puesto que nece-
sita el valor de 17 , q ue todavía no se ha cargado en el reg istro R" Por tanto, en s,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
no se ini cia ninguna operación, De forma si mil ar, el camino de -datos empieza lá
ejecución de las operaciones de máximo, mínimo, y resta en los estados 054 , Ss' y
Se" Y comp leta estas operaciones, junto con los desplazami entos, en los estados ,\'s'
.1'6' y ,\'7' La suma no puede iniciarse hasta el estado .1'8 porq ue de be espe rar a que
'5
el valor as ignado a esté di sponible, Igualmente, el cá lculo del máximo comien-
za en el estado SJO pero no tennina hasta el estado Sw Po r último, el camino de
datos utiliza el estado s 12 para proporci onar el resultado,

s,
1= 111111'11 1"1 1

I \= /Ilfl\ft 1' (1»> 3

I I
I R, I I R, I I R, I
BU S1 ~ ~
SU'l '\7 I ~

\ Al j
~~
Bus1
Bu~~ ~
~
7 '7 ~
'7

(a) Diagr;lIlla ASM ~ h ) E~qucma del caminu de datos

FIGURA 8,31 Camino de datos para la SRA con una única unidad aritmética (AU),
382 Principios de discfio digital

Según este diagrama de tiempos, se precisan 13 estados o ciclos de re loj para


completar este algoritmo para la SRA, No obstante , como se ha mencionado, cada
dos de estos ciclos de reloj equiva len a un ciclo de reloj del camino de datos no
segmentado, lo que sign ifica que el camino de datos con una AU segmentada cal-
cula la aproximación de la raíz cuadrada en 6.5 ciclos en lugar de los 9 ciclos del
caso no segmentado. Obsérvese que este camino de datos segmentado mejora
cualquiera de los diseños no segmentados descritos en las secc iones previas.

/1/ 1 /Ir,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I I
I R, I I R, I
Bus 1 ~
Bus2 \7 I ~

v
\ I AU de 2 t!tapa.~

I ».1 I I », I
-&
Bus~ ~7

0111
(a) Camino de dato~ con AU segmentada

So 5, 52 S, S. S, S. S, S. S, 5 10 S" 5, 2

Leer R, " 1, 1, x X 1,
Leer R} b 1, 1, 1] 15 1"
Leer R; 1,
Etapa 1 de AV 1,,1 Ibl máx mín - + mlÍx
Etapa 2 de AV 1,,1 Ibl máx mín - + máx
Unidades de
desplazamiento »3 » 1
Escribir en R[
Escribir en R, "b 1,
1,
X
t, 1, 1"
1,

Escribir en R; 14
Out 1,

(b) Diagrama de ti empo.\>

FIGURA 8.32 Camino de datos con unidades funcionales segmentadas.

8.11. SEGMENTACiÓN DEL CAMINO DE DATOS


En la Sección 8.10, se mostró cómo mejorar las prestac iones del camino de datos
mediante la segmentac ión de las unidades funcionales incluidas en el mismo. Sin
Diseño al ni vel de transferencias entre regi stros 383

embargo, en el caso de un camino de datos que realice el mismo cálculo con con-
juntos de operandos distintos, estas prestaciones se pueden mejorar aún más
mediante la segmentación de todo el diagrama ASM . Para ello se di vide e l dia-
grama ASM en una serie de partes del mi smo tamaño y luego se utilizan estados
di stintos del cam ino de datos para ejecutar cada una de esas partes. Con este dise-
ño , todas las etapas podrían trabajar simultáneamente con conjuntos de operandos
distintos, generando cada una un resultado parcial que puede ser utili zado por la
siguiente etapa.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(/ - /1/ 1
IJO-' /11 , I I
I R, I I M, I
S, I
1I - I¡,¡I 8us] ~
s~ I Bus1 '\7 I
1, _ Ibl I I
S,
I
I~- m (/lrr I, l ~¡» I
AU ,

S, I I ».1 I I »1 I
\= /1IIi.\(11· 12) Bus) , 'n '7 ,'7 , '7 8us..¡

1 , =III,Ü(l l· I~»>3
, '7
s,
I,_x
I I R, I I R, I I R, I
~ ~
"
Bus5
s" I ,'7 I Busó

s, I
1, = mcl\rl(,.xJ h t,. I AU ,

Fil/(// I
& Bus7

0111=1 7

0 111

(a) Di agrama ASM / h ) Cmn ino de datos scgrncmados

R 1= 1ti. 111 R,= 1/.•. 1 ~. lf,' ' ~ I


R,= 111. 1, 1 R..¡'" I.~ J
AlJ 1= labslmín/nú>;1 R,= l l~ 1
AU ~ = I+I-/m;íxl

(c) Asignación de rcgislros


r un idades func ionales

FIGURA 8.33 Segmentación del camino de datos.


384 Principios de diseño digital

I par n par(n+1)

So s, s, S3 s. Ss S6 S, S. s"
Leer R, ti 1, 1,
Leer R, b 1, 1,
Etapa i de AV Itll Ibl mín máx ETAPA 1
Unidades de
tle-splazamiento » 1 »3
Escribir en R, ti 1,

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Escribir en R2 b 1,

Leer RJ 1] 1, 16 1,
Leer R. x x
Leer R, l.
Etapa 2 de AV - + máx ETAPA 1
Escribir en R3 13 1, 16 1,
Escribir en R4 x
Escribir en R, l.

par 11
fd) Di agram:1de II!:mpos

FIGURA 8.33 Continuación .

Como ejemplo de esta segmentación ASM , considérese el diagrama ASM de


la Figura 8.33(a), que describe el algoritmo para la SRA. En el diagrama asumi-
mos que el bucle se ejecuta indefinidamente y que hay un nuevo conjunto de ope-
randos disponible en los puertos de entrada cada 10 ciclos de reloj . En este caso.
podemos dividir fácilmente el diagrama ASM en dos partes: la primera parte
consta de los estados So hasta S4' y la segunda parte constaría de los estados S5
hasta ss' En la Figura 8.33(a) se muestra esta división mediante una línea gruesa
entre los estados S4 y ss' que indica que el algoritmo para la SRA se ejecutará en
dos partes en dos etapas separadas del cami no de datos.
En la Figura 8.33(b) puede verse que la primera etapa del cam ino de datos
incluye los registros Rr y Rz. una AU y dos desplazadores, mientras que la segun-
da etapa incluye los regi stros R3' R.¡. Y R5' Y también otra AU . La asignación de
variables a registros se da en la Figura 8.33(c).
La Figura 8.33 (d) proporciona el diagrama de ti empos para el camino de datos
segmentado. Igual que antes. este diagrama de tiempos muestra todos los accesos
de lectura y escritura a los reg istros R r hasta R5' y tambi én todas las operaciones
que se realizan en las unidades funcionales en cada estado. Como puede verse. la
primera etapa necesitará 5 ciclos para leer a y b de los puel10s de entrada, asignar
los valores apropiados a las variables 1]. 11 , 13" .r. y 1.¡ . Y almacenar las 3 últimas
variables en los registros R" R.¡, Y R5' que pueden considerarse como los biesta-
bles entre las dos etapas del camino de datos. Es más, la segunda parte del dia-
grama ASM necesi ta sólo 4 ciclos puesto que los registros R)' R.¡. Y Rs ya han sido
cargados en la primera etapa. En conjunto. se necesitan 9 ciclos de reloj para cada
Dise ño al ni ve l de transfere ncias e ntre registros 385

iteración del bucle correspondi ente al algoritmo para la SRA; no obstante, es


importante tener en cuenta q ue la primera etapa está li sta para introducir un nuevo
conjunto de datos cada 5 ciclos de reloj puesto que ambas etapas del camino tle
datos trabajan concurrentemente. Más concretamente, la primera etapa calcul ará
los resultados parciales del conjunto de operandos (11+ 1) al mi smo ti empo que la
seg unda etapa está calculando los resultados fin ales para el conjunto de operan-
dos IL ASÍ, se necesitarán 511+4 ciclos de reloj para calcular la SRA de 11 pares de
operandos. En comparac ión, un camino de datos no segmentado con una AU y
dos desplazadores precisa 9/1 ciclos de reloj para obtener los mi smos resultados .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Si combinamos este camino de datos segmentado con las unidades fun ciona-
les segmentadas, aún se podrían mej orar más las prestaciones . Por ejempl o. se
pueden utilizar AU segmentadas con dos etapas en el camino de datos que se
acaba de desarroll ar, obteniéndose el camino de datos correspondi ente al diagra-
ma de tiempos de la Fi gura 8.34 . En este diagrama se indi ca que cada etapa de
este nuevo camino de datos segmentado necesitaría siete estados para calcul ar su
resultado: sin embargo. puesto que cada estado de este diagrama es sólo la mitad
de largo que los estados de la Figura 8.33, nuestro nuevo camino de datos calcu-
lará la SRA en (7/2)11+ (7/2)=3,511+ 3,5 ciclos de reloj en lugar de en los 511 +4
ciclos de rel oj q ue se necesitan si no se utilizan unidades fun cionales segmenta-
das. En otras pal abras, al segmentar el camino de datos en dos etapas y uti lizar
unidades funcionales segmentadas con dos etapas en cada una de dichas etapas.
reducimos el tiempo de ejecución del camino de datos a aprox imadamente un ter-
cio del tiempo original, mejorando las prestac iones en un factor de 3.

Leer RI a ,I
'1
Leer R.,
Etapa f de AV I 101
b
Ibl
'míll2 máx
'2
Etapa 2 de A VI lal Ibl m(" ",tí.\"
Unidades de
desplazamiento » 1 »3
Escribir en R I a ,I
Escribir en R,., b 1
2
Lee r R3 '6
Lee r R, "x " x "
Leer R, ,,
ElUpa I de AV - + lIuix
Etapa 2 de AV - + máx
Escribir en R,
Escribir en R4 "x ', '. " "x
Escribir en Rs
Out " "
"
FIGURA 8.34 Diagrama de tiempos para el camino de datos segmentado con unidades fun-
cionales segmentadas.
386 Principios de diseño digital

8.12. SEGMENTACiÓN DE LA UNIDAD DE CONTROL


En la Sección 8.11, se discutieron dos métodos para mejorar las prestaciones a tra-
vés de las técnicas de segmentación. Como se ha visto, la segmentación del cami-
no de datos permite operar concurrentemente con conjuntos de datos diferentes,
reduciendo así el tiempo total necesario para ejecutar un algoritmo determinado.
Además, la segmentación de los componentes permite incrementar la utilización
de diversos componentes de los caminos de datos. y acortar el ciclo de reloj, redu-
ciendo el retardo de las transferencias entre registros (retardo registro-registro).

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Sin embargo, es importante tener en cuenta que el mayor retardo registro-registro
se produce de registro de estado a registro de estado. Por supuesto, este retardo
variará según las señales de control dependan de las señales de estado o no. como
muestran las líneas de estado discontinuas de la Figura 8.35 (a). Si las señales de
estado se utilizan sólo para seleccionar el estado siguiente, el camino críti co va
desde la señal de reloj a la salida del registro de estado y luego a través de la lógi-
ca de salida, RF. v ALU, y vía la señal de estado a través de la lógica de estado
siguiente, de vuelta al registro de estado, incluyendo el tiempo de establecimien-
to (setup time) del registro de estado. Por otra parte, si algunas señales de estado
se utilizan para controlar una parte del camino de datos, el camino crítico es más
largo puesto que pasa dos veces a través del camino de datos: la primera vez para
determinar las señales de estado, y la segunda vez para realizar una operación con
valores almacenados en los registros del camino de datos. En este caso el camino
crítico va desde la señal de reloj a la salida del registro de estado y luego a través
de la lógica de salida. RF. ALU. lógica de salida de nuevo, RF o memoria. mul-
tiplicadotldivisor. y vuelta al registro o RF, incluyendo el tiempo de estableci-
miento del registro o RF.
En cualquier caso, el camino crítico a través de la unidad de control determi-
na la longitud del ciclo de reloj (periodo de reloj ). Consecuentemente. si se quie-
ren mejorar las prestaciones reduciendo el ciclo de reloj , tendría sentido dividir el
camino crítico en trozos e insertar registros entre ellos. En la Figura 8.35(b). por
ejemplo, se insertan registros en tres lugares diferentes. Primero, se introduce un
registro de estado entre el camino de datos y la unidad de control para que todas
las señales de estado que salgan del camino de datos se guarden en el registro, que
tiene un biestable por cada señal de estado. En segundo lugar, se inserta un regis-
tro de control entre la unidad de control y el camino de datos para que todas las
señales de control generadas por la lógica de salida se guarden en ese registro,
que tiene un biestable por cada señal de control. Finalmente, se segmenta el cami-
no de datos mismo insertando biestables de segmentación (pipelin e haches)
entre las unidades de almacenamiento (registros , RF, y memoria) y las unidades
funcionales (ALU, multiplicador/divisor), como se muestra en la Figura 8.35(b) y
se explicó en la Sección 8.11.
En general. cuando se pretende utilizar unidad de control y camino de datos
segmentados en las implementaciones de una FSMD, hay que construir los dia-
gramas ASM de forma que reflejen las decisiones relativas a la segmentación.
Para ilustrarlo, considérese el diagrama ASM de la Figura 8.36(a), que en su
Di seño al nive l de transfe rencias entre regi stros 387

forma original tiene tres estados. En el primer estado. S I ' se comprueba si " > b.
Y se pasa a 53 si la desigualdad es cierta o a s 2 si no lo es. En el estado " 2 se reali-
za la asignación x = e * d, Y en el estado S 3 la asignación v = x - l. En este dia-
grama ASM no se asume la posibilidad de una impl ementación segmentada.

Ent rad a.'. de contro l Entrad a), de l cam ino de d alo:-

Sei'i alcs
de control

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Bus?

[ "w u
,k ¡·,'.Idl) R ~¡!I , IT(' l.O)!".'
'lgU ICllh: ,k t,I,IlI.. d,' , ..11.1.1
Señales
de eswdo

Unidad de control Camino de dalos


Salidas dc control Sal idus del ciJmino dc datos

(a) Imple mentación está ndar de la FSM

Entrada), de control EntradaS del cam ino de dalO";

t

,- Sci'i aJes
--+ 1- - -
de e antrol

.... 1-

. 1-
Bus

L,1 ~"",
,tt ,-".,<1,) Rcg" m, L"g " u
" gllJ c" le dt" c'I.ld" ,k,. .. ¡" b

t Se nalcs
'
I de estado

Unidad de control
L-l'-'-...J Camino de datos

Sa lidas de control Sali das del cam ino de dalos

( 1'1 ) Implemelltac ión de la FS M con u nidad de cont rol y de datos scgmcnt,u.!ol>

FIGURA 8.35 Implementación de una FSMD segmentada.

Sin e mbargo, si introduci mos un registro de estado para el control segmenta-


do en la imple mentac ió n de la FSM D, es necesario modificar este diagrama AS M
en consecuenci a. añad iendo un a nueva variable de estado. SIal. así como la sen-
388 Principios de diseño digital

tencia de asignación, Sta! = (a > !J J. Además, en un único estado. no se podría


asignar un valor a una variable de estado y tomar una decisión de rami fi cac ión a
partir de dicho valor, puesto que se necesita un ciclo de reloj para ca lcular el valor
de la variable de estado y cargarla en el registro de estado, y un segundo ciclo de
reloj para comprobarla y seleccionar el estado siguiente. Estos req ui sitos adi cio-
nales se retlejan en la Figura 8.36(b), donde el registro de estado se carga en S I
pero la ramificación a uno u otro estado no se ejecuta hasta el estado s~.
Igualmente, si se introducen registros de control y de estado, tenemos que in ser-
tar dos nuevos estados como muestra la Figura 8.36(c), donde se usarían dos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ciclos de reloj para cargar los registros de estado antes de la ramificación según
la señal de estado.

Ja ) Diagrnmu ASM (b) Diagr:lI11 l1 AS M pam (e) Diagrama AS M para Id) Diagramu ASivl para
la unidad de ('ontrol la unidad de control la unidad de C'ü lll ro!
.)cgmcllIada con registro :\CgmcllIada con I'cgbtro y camino de tJ:¡ to"
de c-~t ml o de C~lado y control "cglll~'lU adu"

FIGURA 8.36 Diagramas ASM para las implementaciones segmentadas.

Finalmente, si introducimos registros de control y estado, y uniLiad ck control


y camino de datos segmentados como se hizo en la Figura 8.35(d). hay que aña-
dir 4 nuevos estados. Más concretamente. en primer lugar se necesitan 3 ciclos de
re loj para cargar el registro de estado, puesto que no se puede producir la ramifi -
cación a uno u otro estado hasta el estado s4' como muestra la Figura 8.36(d) .
Segundo, se debe introducir otro estado vacío, s6' entre los estados .1'5 y .1'7 puesto
Diseño al nivel de transferencias entre registros 389

que el cálculo de y = x - l a realizar en S7 necesita el nuevo valor de x, que a su


vez requiere ahora 2 ciclos de reloj para su calculo. Como se ve a partir de estos
ejemplos, los diagramas ASM necesitan una serie de modificaciones cuando se
utili zan para describir implementaciones segmentadas de FSMD.

8.13. PLANIFICACiÓN (SCHEDULING)


En las secc iones anteriores se ha mostrado cómo sintetizar un diagrama ASM para

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
un diseño específico que consta de un camino de datos y una unidad de control.
En general, la síntesis de estos diagramas ASM está basada en el modelo de la
FSMD, que explícitamente especifica los estados, las transiciones de estado, y las
as ignac iones de variables a realizar en cada estado. Desgraciadamente, los di se-
ño, normalmente están basados en algoritmos que no se especifican mediante dia-
gramas ASM sino que se describen mediante algún lenguaje de programación o
se representan mediante un diagrama de flujo . Ninguna de estas formas contem-
pla el concepto de estado, aunque proporcionan el orden en el que deben reali-
zarse las asignaciones de variables . Por tanto, la principal diferencia entre los len-
guajes de programación o los diagramas de fluj o y los diagramas ASM es que los
primeros no especifican los estados, ni asocian las asignaciones de variables a los
estados particulares en los que se producen.
Para transformar un algoritmo ordinario o un diagrama de flujo en un diagra-
ma ASM habría que dividir su tiempo de ejecución en una serie de intervalos de
tiempo llamados estados y asociar cada operación de asignación de variables a un
estado particular. En otras pal abras, hay que planificar (schedllle) el acceso y las
operaciones con las variables distribuyéndolas entre los estados , bajo ciertas res-
tricciones de recursos o de tiempo. En esta sección consideran ambos tipos de pla-
nificación, la planificación con restricciones de recursos (RC, resolll'ce-COIISlrai-
lI ed sclzeduling) y la planificación con restricciones de tiempo (TC, lime- colIs-
lrailled sclled/llillg). proporcionándose un algoritmo de planificación para cada
tipo.
Para reali zar la planificación, primeramente hay que convertir un programa o
un diagrama de flujo en un grafo de controVl1ujo de datos (CDFG, cOII/rolldala-
fla", grapll). que muestra explícitamente las dependencias de control entre las
sentencias y las dependencias de datos entre los valores de las variables . En otras
palabras, un CDFG contiene la estructura de control de un diagrama de flujo pero
además debe representar las asignaciones de variables como grafos de flujo de
datos, en los que cada nodo con'esponde a un operador mientras que cada arco
entre dos nodos representa el resultado que es generado por el primer operador y
es utilizado depués como operando por el segundo operador.
Puesto que un diagrama de flujo es una estructura recursiva de conexiones
serie-paralelo entre cajas de asignación y cajas de decisión, un CDFG se diferen-
cia de un diagrama de flujo sólo en la representación de una caja de asignación:
mientras que una caja de asignación en un diagrama de flujo contiene una secuen-
cia de sentencias de asignación, el CDFG representa la misma sec uencia medi an-
390 Principios de diseño digital

te un grafo de flujo de datos. En la Figu ra 8.37 se compara un diagrama de flujo


y su correspondiente CDFG: la Figura 8.37(a) muestra el diagrama de flujo para
el algoritmo para la SRA, y la Figura 8.37(b) el correspondiente CDFG.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
t i =- 1(/1
12 = lbl
x=mch(I I, /~)
J= míll (t l, / ~J

'3=x»J
14 =.\'» I
' 5= .r-/3
It, ='ol + l ~
17=1116.\"(1&-,")
F;m¡/ = J
0111=17

(a) Diagrama de nujo (a) Grafo de control y nujo


de datos

FIGURA 8.37 Grafo de control y de flujo de datos para la SRA.

Los algoritmos de planificac ión utili zan frecuentemente una representación


CDFG de un diagrama de flujo o un programa. puesto que un CDFG una vez pla-
nificado es equi valente a un diagrama ASM. Como se mencionó anteriormente,
un CDFG puede panificarse de acuerdo con restricciones de recursos o de tiem-
po. Las restricciones de recursos se especifican mediante el número y tipo de uni-
dades funcionales y de almacenamiento a utilizar en el camino de datos, mientras
que las restricciones de tiempo 'se espec ifican a través del número de estados que
necesitará el camino de datos para ejecutar todas las operaciones del cam ino más
largo del CDFG. Antes de explicar la planificación RC y TC, presentamos los
algoritmos de planificación "tan-pronto-como-sea-posible" (ASA P, aS-SOO/I-as-
possible). y "Io-más-tarde-posible" (ALAP, as-/ate-as-possible), que son frec uen-
temente utili zados por otros algoritmos de planificación para determinar la prio-
ridad y el rango de las operaciones a plani ficar.
Diseño al nivel de transferencias entre registros 391

En primer lugar, los algoritmos ASAP y ALAP suponen que cada operación
necesita exactamente un ciclo de reloj para ejecutarse, y en segundo lugar, que se
dispone de un número ilimitado de unidades funcionales o recursos para cada una
de las operaciones a reali zar en cada estado. Debido a la anterior asunción pode-
mos considerar ambos algoritmos como restringidos únicamente por las depen-
dencias de datos. Dentro de este contexto, el algoritmo ASAP planifica cada ope-
ración asociándola al primer estado en el que todos los operandos estén disponi-
bles. En otras palabras, se explora el grafo de controllflujo de datos desde su ini-
cio hasta su final y se asignan a cada estado todos los nodos del grafo cuyos nodos

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
predecesores, o padres, hayan sido ya asignados a estados previos. Así, el algorit-
mo ASAP proporciona una planificación con el mínimo número de estados o, en
otras palabras, el tiempo de ejecución más corto.
A diferencia de la aproximación ASAP. el algoritmo ALAP planifica cada
operación asignándola al último estado posible antes de que su resultado sea nece-
sario, en el caso de que se haya especificado una longitud máxima (en términos
de número de estados) como restricción para la planificación obtenida finalmen-
te. En otras palabras. se explora el grafo de controllflujo de datos desde su final
hasta su inicio y se asignan a cada estado todos los nodos cuyos nodos sucesores,
o hijos, han sido ya asignados a estados posteri ores. Si la longitud de la planifi-
cac ión obtenida es igual al número de estados obtenido por el algoritmo ASAP, el
algoritmo ALAP planifica todas las operaciones del camino más largo, o camino
crítico, del grafo de flujo de datos a los mismos estados que el algoritmo ASAP.
Las operaciones que no están en el camino crítico se ejecutan antes de ser nece-
sarias en el algoritmo ASAP y después de ser posible su ejecución en la planifi-
cación ALAP.
En I~ Figura 8.38 las planificaciones ASAP y ALAP se aplican a la mayor de
las dos cajas de asignación de la Figura 8.37. Se ha considerado sólo una caja por
simplicidad. Las dos planificaciones de la Figura 8.38 requieren siete estados.
Además se comprueba que todas las operaciones excepto min y »1 están en el
camino crítico. Estas dos operaciones se asignan tan pronto como sea posible
(estados $2 y s3) en la planificación ASAP y tan tarde como sea posible (estados
s] y s.¡) en la planifi cac ión ALAP.
El hecho de que los algoritmos de planificación ASAP y ALAP asignen las
operaciones del camino crítico a los mi smos estados puede utilizarse para separar
las operaciones críticas de las no críticas en los algoritmos de planificación gene-
rales. La prioridad se da siempre a aquellas operaciones que se encuentran en el
camino crítico, puesto que relardar una de estas operaciones en un estado puede
aumentar la planificación en un estado e incrementar el tiempo de ejecución. Por
otra parte. la menor prioridad se confiere a las operaciones que no están en el
camino crítico puesto que se dispone de mayor tlexibilidad para su planificación
en estados diferentes y pueden retardarse sin afectar al tiempo de ejecuci ón del
CDFG.
La prioridad de una operación en el proceso de planificación puede medirse
mediante diferentes métricas. Una de estas métricas es la movilidad de la opera-
ción, que es igual a la distancia en número de estados entre los estados asignados
392 Principios de diseño digital

a una operación particular en las planificaciones ASAP y ALAP. En otras pala-


bras, si una operación, op, se asigna al estado sien la planificación ASAP y al esta-
do sk en la planificación ALAP, su movilidad, M(op) , será igual a k- i. Así, la
movilidad define la capacidad de una operación para ser pospuesta sin ningún
impacto en el tiempo de ejecución total, y puede utilizarse para asociar priorida-
des a las operaeiones, Es decir, los estados con movilidad más alta pueden , en
consecuencia, tener prioridades más bajas.

a b a b

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Out Out

(a) Planific:Jci6n ASAP (a) Plan ificación ALAP

FIGURA 8,38 Planificaciones básicas.

Como medida de prioridad alternativa, podemos utilizar el criterio de la


urgencia de una operación, que es igual a la distancia en número de estados
entre el estado en el que la operación puede asignarse y el estado en el que se pro-
duce la operación en su planificación ALAP, En otras palabras, si una operación,
op, está disponible en el estado s· pero no se asigna hasta el estado s k en su plani-
ficación ALAP, la urgencia de dperación, V( op), será igual a k-jo Como tercera
medida de prioridad para una operación podríamos considerar el número de ope-
raciones que utilizan su resultado como operando. Esta medida da mayor priori-
dad a las operaciones que incrementan el número de operaciones disponibles para
Diseño al ni vel de transferencias enlre regislros 393

ser asignadas en el futuro . Hay otras medidas de prioridad además de éstas. pero
ninguna de ellas resulta adecuada en todo. los casos. En teoría. podríamos uti li-
zar cualquier número de métri cas de pri oridad en cualquier orden.

Planificación ASAP

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Plól nilic;:lf.:ión ALAP

~
Dclcmtinar
rnovil ldadc:<t.

~
Crear lisIas
de preparadas

.~
Ordenar lisias de
preparadas scglin
movilidades

~
Plan ificar las
operaciones segú n lu
lisIa de preparadas

~
BOJlJf las operaciones
planificadas de la lisia
de preparadas

+
Añadi r nuevas
operaciones a la lisia
de preparadas

~
Incrementar el índice
de estado

!
no
¿Toe!:IS sí
las opemcioncs

~
asignadas?

FIGURA 8.39 Algoritmo de planificación con lista.

Uno de los algoritmos más popu lares para la planificación Re es el algor it-
mo de pla nificación de lista (Iist-schedllling algorilhm) , que debe su nombre a
394 Principios de diseño digital

que utiliza una lista de las operaciones que están disponibles para ser asignadas
(lista de preparadas). En este algoritmo, las operaciones con la lista de preparadas
se ordenan según sus mov ilidades, de forma que las operaciones con movilidad
cero se sitúan al principio de la lista mientras que las operaciones con mayor
movilidad se sitúan al final. En los casos en los que dos operaciones tengan la
misma movilidad, se da mayor prioridad a la operación con menor valor de urgen-
cia. Si estos números también son iguales, se asigna la prioridad de forma aleato-
ria. Al aplicar este algoritmo de planificación de li sta se realizan los siguientes
pasos en cada estado : se as ignan, una a una, las operaciones con pri oridades más

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
altas de la li sta de preparadas a las unidades funcionales di sponibles, después se
borran de la li sta todas las operac iones asignadas, y se insertan en la lista, en las
posiciones que les correspondan según sus movilidades y urgencias. las nuevas
operaciones que pasan a estar dispon ibles para su planificación. Este algoritmo de
planificación de li sta se resume en la Figura 8.39.
El algoritmo de planificación de lista actuando sobre el grafo de fluj o de datos
de la caja de asignación de la Figura 8.37(b) asume que se di spone de una única
unidad aritmética, que puede calcular el valor absoluto. el mínimo, e l máx imo, la
suma, y la resta, y de dos unidades de desplazamiento más . En primer lugar. gene-
ramos las pl anificaciones ASAP y ALA P, como muestran las Figuras 8.40(a) y
(b). Después creamos una lista de preparadas para el primer estado como muestra
la Figura 8.40(c) y calculamos las mov ilidades para las operaciones de dicha lista.
En nuestro caso, sólo las operaci ones la l y Ibl están disponibles en el primer esta-
do. Puesto que estas operaciones tienen la mi sma movilidad [M( la l)=M( lbl )=OJ,
se ordenan aleatoriamente y se asigna la l en primer lugar. Puesto que la as ignación
de Icj no libera nuevas operaciones para la planificación no se cambia la li sta de
preparadas en este momento. Por tanto, hay que as ignar Ibl al estado s" lo que per-
mite añadir los operadores lI1ax y mi/1 a la lista. Puesto que el operador lI1ax está
en el camino crítico. tienen una movi lidad M (max)=O, que le da una pri oridad
mayor con respecto al operador mil1 , que tiene una mov ilidad M(lI/il1)= l. Así, se
planificaría II/ax en el estado 53' que nos permite añadir »3 a la lista de opera-
ciones preparadas. Puesto que su movilidad es M (»3)=0, este operador debe
situarse al comienzo de la li sta. En este momento hay una AU y dos desplazado-
res di sponibles, por lo que se pueden planificar las dos operac iones. (»3) y II/i/l ,
en el estado 54' Después actualizamos la li sta de preparadas añadiendo - y »1,
ya que ambos pueden planificarse en el estado SS' En este momento se puede asig-
nar + al estado 056 y max al estado 05 7 , y finalmente. proporcionar el resultado en el
estado ss' La planificación RC fin al se muestra en la Figura 8.40(d).
Como se ha visto, el objeti vo del algoritmo de planificación RC es asignar a
cada estado tantas operaciones como sea posible dado el número de unidades fun-
cionales disponibles. Cuando haya más operaciones di sponibles que unidades
funcionales debemos utili zar una medida de prioridad, tal como la movilidad o la
urgencia. En nuestro ejemplo se ha obtenido una planificación que req uiere un
estado más que las planificaciones ASAP y ALAP pero con un coste menor ya
que se utili za sólo una AU y dos desplazadores, mientras que las planificaciones
ALAP y ASAP precisan dos AU y dos desplazadores.
Di seño al nivel de transferencias entre regi stros 395

.', eo ®o
s,
®
"
e" e I

<8 e
" I

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Ss + o <0
" I

'" lIIiU' <::)


"
,. 9
"
Out
©
011/

f a) ASA P (I) IALA P Ce) Lista de preparadas (d) PlanifiC;I(,:iún Re


con muvil idades

FIGURA 8.40 Planificación con restricciones de recu rsos.

En muchos casos el objetivo principal en la optimización de un diseño no es


el costo sino las prestaciones puesto que el camino de datos debe ejec utar un algo-
ritmo determinado en un intervalo de tiempo prefijado. Cuando el tiempo de eje-
cución está acotado se utili za la planificación con restricciones de tiempo (TC,
Tillle- Col1sfraill ed scheduling l, que proporciona una planificación con un número
determinado de estados intentado además minúni zar el número de unidades fun-
cionales necesarias en e l camino de datos. Este objetivo se consigue creando un
grafo de di stribución de probabilidades, y asignando las operaciones a los estados
una a una, de manera que se min imice e l valor máximo de las suma de probabili-
dade s de cada operador.
Para utili zar la planificac ión TC, tal y como indica la Figura 8.4 1, se aplican
primero los algoritmos de planificación ASAP y ALAP para determinar el rango
de movi lidad de cada operación. Después de haber establecido dichos rangos, se
asigna igual probabilidad para la planificación de una operación dada en alguno
de los estados de su rango. Obviamente, para cada operación, la suma de proba-
bilidades dentro de su rango es igual a uno.
Una vez calcul adas estas probabilidades, se pueden obtener los grafos de dis-
tribución de probabilidades, que definen las sumas de probabilidades para cada
conjunto de operaciones compatibles en cada estado . En otras palabras, estas
sumas de probabilidades determinan el número de unidades funcionale s de cada
tipo que se neces itan en cada estado. A partir de este momento se intenta mini -
396 Principios de diseño digital

mizar el número de unidades funcionales seleccionando una operación y asignán-


dola al estado que reduzca, en el grafo de distribución, la suma de probabilidades
mayor para este tipo de. operación. Si la reducción no es posible, se selecciona un
estado y se asigna al estado para el que el incremento en la suma de probabilida-
des es menor. El algoritmo sólo termina cuando se han asignado todas las opera-
ciones, tal y como se indica en la Figura 8.41.

Plnlliticación ASAP

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Plan ifi cación ALAP

Dc!ll1 ir rangos
dI! llIovi I¡dades

Crear grafos
de dI stribucIón
de po s ibilid adc~

Asignar la operación
con ganancia m.íxi ma

Asignar la operac ión


con perdida mínima

FIGURA 8.41 Planificación con restricciones de tiempo.

La planificación TC se muestra sobre el grafo de flujo de datos de la caja de


as ignación de la Figura 8.37(b). Para poder establecer una comparación, se ha
fijado como objetivo una asignación final con 8 estados, puesto que éste fue el
número de estados que se obtuvo en la planificación RC utilizando una AU y dos
unidades de desplazamiento. En el primer paso se obtienen las planificaciones
ASAP y ALAP como muestran las Figuras 8.42(a) y (b).
Diseño al nivel de transferencias entre registros 397

A partir de estas planificaciones se pueden obtener los rangos de movilidad.


llegándose a que dicho rango es 2 para todos los operadores excepto para »1 y
para min. Es decir que la probabi lidad de que cada uno de esos operadores sea
asignado a uno de los estados de su rango es 0.5. Puesto que los operadores mili
y »1 tienen cada uno un rango de 3 estados, la probabilidad de ser asignados a
algún estado determinado dentro de ese rango es 0.33 JEn la Figura 8,43(a). estas
probabilidades individuales se combinan en dos grafos de distribución que se uti-
lizan para minimizar el número de A U Y de unidades de desplazamiento.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
",
s,

s,

s,

s,

s.

,1'. /IIrl,\'

'.
Oul

(al ASAP (bIALAP (e) Planificación Te

FIGURA 8.42 Planificación Te para el algoritmo de la SRA.

Como puede verse a partir de los grafos de distribución para las AU y las unida-
des de desplazamiento. la planificación de una operación en un estado concreto
incrementa la suma de probabilidades en ese estado y en consecuencia el número de
unidades necesarias, excepto en el estado s7' donde la suma de probabilidades es sólo
0.5. Por tanto. se asigna el operador lIlax al estado S7' lo que incrementa su suma de
probabilidades a 1.0. Por la misma razón. se asigna + al estado s6 y - al estado s5" En
este momento se tiene la opción de asignar lIlax o lIlin al estado S3' Sin embargo,
como puede verse, la asignación de lIlax hace disminuir la suma de probabilidades
del estado s? a 1.33, mientras que la de min haría decrecer la suma de probabilidades
a 1.5. Por elTo, se asigna max al estado s ] para reducir lo más posible su suma de pro-
babilidades. Una vez asignada max al estado S3' hay que asignar »3 al estado S4
puesto que »3 utiliza el resultado de la operación /1/ax corno entrada. En la Figura
8,43íb) pueden verse los grafos de distribución correspondientes a la planificación
398 Principios de diseño digital

parcial que se ha desarrollado hasta este punto del algoritmo. Utilizando el mismo
criterio de antes, se asigna la operación min al estado S4 y la operación » 1 al estado
ss' obteniéndose el grafo de distrib ución que muestra la Figura 8.43(c).

IIWS alMlI lIIIm alMlI 51


ESm mms fIIlItaIm 11 l'IIlWIJlIre1
~ !SWXI LQWHIHJD !SWXI

s, 1,0 s, 1.0
"'645 lal Ibl

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
S2 1,83 s2 1,33
,8
~
S3 ,"¡; ,83 ,83 s3 máx ¡; ," 1,33 ,33

- '"
A

~ »3 1
A
s. ,83 A ,8'3 s. ,33 1,33
A
,
S5 1,0 ,33 s5 ~
1.0 ,33
+
s6 1,0 s6 + 1,0
]
s7 ,5 s7 111m: 1,0

(a) Grafo de distribución de probabilidades inicial (b) Grafo de distribución de probabilidades después de
plani!lcar max, + y -

ESm

s,

s,
lIIIm
~

lal Ibl
alMlI
MIIIt1tI.I l'IIIIIIl.OOS
!SWXI

1,0

1,0
lIDIEi
11
LQWHIHJD
-alMlI
l'IIlWIJlIre1 ESm

s,
,
lIDIEi
ft1rAI
tM1

lal

Ibl
9.11.\11
!lWallW
ESIIlX1

1,0

1,0
lII!JIru
11
lllI'I!lIIINIQ
Slll\1!:
l'IWIlIIIJW
ESIIlX1

s3 máx 1,0 s3 máx 1,0

s. mín 1,0 »3 1,0 s. mín 1,0 »3 1,0

s5 ~ 1,0 »1 1,0 s5 ~
1,0 » 1 1,0

S6 + 1,0 S6 + 1,0

S7 máx 1,0 s7 máx 1,0

(e) Grafo de distribución de probabilidades después de (d) Grafo de distribución para la planificación fi nal
planificar máx. mío. +. -, »3 y » 1.
FIGURA 8,43 Grafo de distribución de probabilidades antes, durante, y después de la planrricación Te.
Diseño al nivel de transferencias entre registros 399

Como puede verse, tanto al intentar planificar lal como Ibl se incrementan la
suma de probabilidades de s I o s2' pero este incremento es sólo temporal, puesto
que cuando se hayan planificado ambas operaciones, la suma de probabilidades
en cada estado es 1.0 tanto para la AV como para la unidad de desplazamiento. Es
decir, se ha mostrado que el CDFG de la Figura 8.37(b) puede planificarse en 9
estados utilizando únicamente una AV y una unidad de desplazamiento, aunque
eventualmente se utilicen dos unidades de desplazamiento en lugar de una, por-
que su costo y retardo son iguales a cero.
Aunque en este caso el algoritmo TC proporciona la misma planificación que

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
el algoritmo RC, en casos más complejos estos dos algoritmos generalmente pro-
porcionan planificaciones diferentes. Como regla, se seleccionará el algoritmo
que mejor se ajuste al objetivo principal de nuestro diseño, utilizando la planifi-
cación RC si se han de satisfacer restricciones de costo y la planificación TC si
hay que satisfacer restricciones relativas a prestaciones.

8.14. RESUMEN DEL CAPíTULO


En este capítulo se ha explicado cómo especificar y obtener implementaciones de
descripciones arbitrarias dadas a partir de diagramas ASM . Presentamos una des-
cripción formal llamada FSMD y después se describen dos formas para la especi-
ficación de ASIC al nivel de transferencias entre registros, las tablas de estado-
acción y los diagramas ASM. Además se ha mostrado cómo obtener una imple-
mentación a partir de un diagrama ASM. También se han descrito varios procedi-
mientos para optimizar dicha implementación, indicando cómo agrupar variables
y asignarlas a registros, cómo agrupar registros formando bancos de registros o
memorias, cómo agrupar operadores y asignarlos a unidades funcionales, y cómo
agrupar conexiones y definir buses para cada uno de estos grupos de conexiones.
También se ha mostrado cómo optimizar una implementación para unidades fun-
cionales de diferentes velocidades mediante el encadenamiento de unidades fun-
cionales rápidas y la técnica de multiciclo en el caso de las unidades funcionales
lentas que necesitan más de un ciclo de reloj para proporcionar resultados.
En secciones posteriores del capítulo se introdujo el concepto de segmenta-
ción y se mostró cómo mejorar las prestaciones mediante la segmentación bien de
las unidades funcionales, las unidades de control, o el camino de datos completo.
En la última sección, se describe cómo transformar los programas ordinarios
o los diagramas de flujo en grafos ASM mediante la planificación de las senten-
cias de asignación en distintos estados. Para ello, se describieron dos tipos de
algoritmos de planificación que reflejan objetivos de optimización diferentes,
mostrándose cómo utilizar la planificación con restricciones de recursos para
minimizar el tiempo de ejecución, dado un conjunto de recursos, y la planifica-
ción con restricciones de tiempo, para minimizar los recursos necesarios para un
tiempo de ejecución prefijado.
Como conclusión, en este capítulo se presenta una metodología general para
especificar comportamientos arbitrarios mediante diagramas ASM y obtener
400 Principios de diseño digital

implementaciones con arreglo al modelo FSMD. En el capítulo siguiente aplica-


remos esta metodología para diseñar unos circuitos integrados específicos, como
son los procesadores, cuyo comportamiento se describe de forma sucinta median-
te sus repertorios de instrucciones.

8.15. LECTURAS ADICIONALES


Ciare, C. R. Desiglling Logic Sys/ems Using SIa/e Ma chines. New York: McGraw-Hill.
1973.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Presenta los diagramas de máquina algorítmica de estados (ASM) y muestra los pasos
esenciales en el diseño de distintos tipos de FSMD.
DeMicheli , G. SYIl/h esis alld Optimization of Digi/al Circui/s. New York: McGraw-Hill ,
1994.
Presenta una buena revisión de los resultados en la planificación y en la sÍnlesis de des-
cripciones de comportamiento de ASIC.
Gaj ski, D. D. , N. Dutt, A. C-H. Wu, y S. Lin. High-Level Syn/hesis: /nlroduc/ion /0 Chip
alld Sys/em Design. Bastan: Kluwer Academic Publi shers. 1992.
Describe los modelos y algoritmos para la optimización y la planificación ASM. Para
su lectura se requieren conocimientos relativos a algoritmos y estlUcturas de datos.

8.16. PROBLEMAS
8.1. (Modelo FSMD) Determine el ciclo cuando Da/o ha sido leído del banco
de reloj mínimo (de flanco de subida de registros y ha pasado a través de la
a flanco de subida) para el modelo ALU y de la unidad de desplazamien-
FSMD de la Figura 8.2, cuando se to.
comporta como:
8.3. (Descripción FSMD) Obtenga (a) el
(a) Un FSMD basado en estados.
diagrama ASM y (b) la Tabla de esta-
(b) Un FSMD basado en entradas.
Pis/a: El ciclo de reloj mínimo es do-acción , para la solución del
igual al retardo registro-registro más Problema 8.2.
largo. Así, se necesita identificar el 8.4. (Diagramas ASM) Oblenga una des-
cam ino de la Figura 8.2 con mayor cripción con un diagrama ASM para
retardo. Normalmente se denomina un contador de decenas que tiene tre s
camino crítico. salidas que indican si la cuenta es
8.2. (Descripción FSMD) Reescriba la menor que cinco (L5), igual a cinco
descripción del contador de unos de la (E5 ), o mayor que cinco (G5) .
Figura 8.1 sin utilizar las variables 8.5. (Diagramas AS M) Oblenga un dia-
Másca ra y Telllp. Utilice el bit menos grama ASM para un conlador que
significativo de Dato para incremen- contará en módulo 4 si la señal rallgo
tar Cuenta/. La implementación debe es igual a O y en módulo 7 si es igual
utilizar el camino de datos de la
a l.
Figura 7.25.
Pis/a: El bit menos significativo está 8.6. (Diagramas ASM) Determine un dia-
disponible en e l bus de resultado grama ASM (a) basado en estados y
Diseño al nivel de transferencias entre registros 401

(b) basado en entradas. que pueda (a) Valor absoluto y de splazamiento


simular un jugador de Black Jack. tres pos iciones a la derecha.
suponiendo que las cartas toman va lo- (b) Valor absoluto y de splazam ien-
res desde dos a di ez y que los ases to a la derecha una y tres posi-
toman el va lor uno u once. El jugador ciones.
debe actuar como se indica a conti- (e) Suma y de splazamiento tres
nuación: posiciones a la derecha.
l. Poner la variab le Marcador a (d) Suma y desplazamiento a la
cero y bOITar el indicador, flag, derecha una y tres posiciones.
de 11 puntos de as.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
8.10. (Algoritmo de lado-izqu ierdo) Asigne
2. Aceptar una carta y sumar su
las variables tIa 1::; al minimo número
valor a Marcador.
de registros utilizando el algoritmo de
3. Sumar 10 más a Marcador si la
lado-izquierdo. Los tiempos de vida
carta es un as y borrar el indica-
se dan en la Figura P8.1 O.
dor flag de 11 puntos de as. Poner
a 1 el indicador fla g de 11 puntos.
4. Ir a :2 si Marcador es menor o
igual a 16.
1, X X X X
5. Ac ti var Sland e ir a I (e mpezar
12 X X X
una nueva partida) si Marcador
1, X X X X
es menor o igual a 2 1. X X
6. Re star lO a Marcador. borrar "
flag. e ir a 4 si flag estaba a 1. '5 X X X

7. Acti var Broke e ir a I (come nzar '.


17
X X
X X
una nueva partida). 'g X X

8.7. (Diagramas AS M) Obtenga un dia- FIGURA PB.10


grama ASM para el siguiente algorit-
mo: 8.11. (Partici ón de grafos) Agrupe los
while x < a do nodos del grafo de compatibilidad de
x ¡ =x+dx la Figura P8. ll . Asuma que el peso de
u l = u - 3xudx - 3ydx un arco prioritario a un supernodo es
JI = y + udx ig ual a los pesos de los arcos priorita-
x= Xl
rios a cada uno de los nodos del
lf=lI¡ supemodo.
Y = YI
end while
8.8. (Diagramas ASM) Determine un dia-
grama ASM para un multiplicador de
de splazamiento-y-suma que sume el
multiplicando (MD) al producto par-
cial (PP) si el bit menos significativo
del multiplicador (MR) es 1, Y despla-
ce el producto parcial y el multiplica-
dor un bit a la derecha.
8.9. (Biblioteca de componentes) Diseñe
unidades qu e puedan realizar las
siguientes operaciones. FIGURA PB.11
402 Principios de diseño digital

8.12. (Encadenamiento) Obtenga un dia- no de datos con control segmentado


grama ASM para el algoritmo de la con:
SRA en el que: (a) Un registro de estado
(a) Se pueden encadenar cuales- (b) Un registro de control
quiera dos operadores. (e) Un registro de estado y control
(b) Las operaciones + y - se pueden
8.17. (Control segmentado) Obtenga los
encadenar. y » puede encade-
diagramas ASM para un contador de
narse con cualquier otra opera-
unos (a) basado en estados y (b) basa-
ción.
do en entradas, que utilicen unidades
(e) Se pueden encadenar cuales-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
de control segmentadas con registros
quiera tres operaciones.
de control y estado.
8.13. (Multiciclo) Obtenga un diagrama
8.18. (Diseño de la unidad de control) Para
ASM para el algoritmo de la SRA en
la versión basada en estados del con-
el que:
tador de unos de la Figura 8.9(a) dise-
(a) las operaciones mill, I1UU". y
ñe la unidad de control utilizando:
valor absoluto utili zan dos
(a) Un registro de estado y un deco-
ciclos de reloj .
dificador.
(b) max necesita dos ciclos de reloj.
(b) Un contador y un decodificador.
(e) mill necesita dos ciclos de reloj.
(e) Una unidad de control micropro-
8.14. (Unidades Funcionales Segmentadas) gramada (i ndique también el
Determine el diagrama ASM y el dia- contenido de la ROM).
grama de tiempos para el algoritmo 8.19. (Di seño de la unidad de cont rol)
de la SRA con dos unidades segmen-
Repita el problema 8. 18 para la ver-
tadas, en el que: sión basada en entradas del contador
(a) La unidad [abs/mill/ max] tiene de unos de la Figura 8.9(b).
dos etapas, y la unidad
[+/-/» V»3 ] tiene tres eta- 8.20. (Planificac ión) Obtenga la plani fica-
pas. ción (a) ASAP y (b) ALAP para el
(b) La unidad [mill/ max/> > 1] tiene cuerpo del bucle del problema 8.7.
dos etapas. y la unidad 8.21. (Planificación) Para el cuerpo del
[abs/+/- ] tiene dos etapas. bucle del Problema 8.7. obtenga una
(e) La unidad [abs/max/»Y-] tiene planificación TC con (al cuatro esta-
dos etapas, y la unidad dos, (b) cinco estados. y (e) seis esta-
[mill/ +/> > 1] tiene dos etapas. dos.
8.15. (Camino de Datos Segmentado)
8.22. (Pl anificación) Obtenga una plani fi-
Obtenga un camino de datos segmen-
cación RC para el cuerpo del bucle
tado dividiendo el algoritmo de la
del Problema 8.7 dados:
SRA en (a) tres, y (b) cuatro etapas.
(a) Tres multiplicadores y dos
Proporcione los diagramas de tiempo
sumadores/restadores.
para cada caso. ¿Cuál es la ganancia
(b) Dos multiplicadores y dos
en cuanto a prestaciones?
sumadores/restadores.
8.16. (Control segmentado) Utilizando el (e) Dos multiplicadores y un suma-
contador de unos descrito en el dia- dor/restador.
grama ASM de la Figura 8.6, obtenga !pista: Utilice un restador para com-
el diagrama de tiempos para un cami- parar los valores de dos vari ables).
e
L
o

El diseño
del procesador

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
3 3
Álgebra booleana Pucr1as lógicas
y biestables

Máquina de
6
1
estados fi nitos Lo 4 lo 6
Técnicas de Técnicas de
diseño lógico Lo. diseño digital

Sistema binario 2
y representación + t
de datos
5 7
Componentes Componentes de
combi nacionales almacenamiento
I I
Máq uinas de 8 Diseño de 8
estados finitos transferencia entre
generalizadas registros

I
9
Componentes
del procesador

En el Capítulo 8 se preselllaron las técnicas para el diseño de procesado-


res que ejecutan algoritnws específicos ("a medida" J. En el prt'sente capí-
tulo estas técnicas de diseño de aplican a /os procesadores de uso general
utilizados en todos los compllladores personales. estaciones de trabajo. y
otros dispositivos de cómputo. Lo procesadores de uso general ejecutan un
repertorio de instrucci01leS específico. lo cual implica que cUJJlquier pro-
grama escrito en un lengUJJje de alto nivel como C debe traducirse a una
secuencia de insmlcciones de dicho repertorio. Las prestaciones de los
programas depe/lden fundam entalmente del diseño del procesador y de su
repertorio de instrucciones. Este capítu/o muestra cómo optimizar, desde el
pWlto de vista de las prestaciones. el diseño del procesador y su corres-
pondiente repertorio de instrucciones.
406 Principios de diseño digital

En el Capítulo 8, se han presentado técnicas para la síntesis de ASIC. En este capí-


tul o nos centramos en el diseño de procesadores de uso general que, j unto con las
memorias y los AS IC, son los componentes principales en la mayoría de las com-
putadoras y productos electrónicos de consumo. En ellos , el procesador controla
el funcionamiento de todo el sistema, supervisando dispositivos de entrada/salida
(E/S) tales como teclados, discos, cintas, monitores, etc .. y sincronizando la trans-
misión de datos entre los distintos componentes del sistema. Además, el procesa-
dor realiza la mayoría de las tareas de cómputo, con la excepción de ciertos cál-
culos computacionalmente intensivos que requieren unas prestaciones más allá de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
las capacidades del procesador, y que deben realizarse en componentes especíti-
cos para ese tipo de operaciones.
Comparado con un procesador, un circuito de aplicación específica (ASIC,
Application.-Specific Integrated Circuit) puede realizar muy eficazmente una tarea
o un algoritmo determinado, pero no di spone de la programabilidad y generalidad
de un procesador. Junto con los procesadores y los ASIC, la mayoría de las com-
putadoras incluyen la memoria principal, que almacena los datos que necesitan
con mayor urgencia los procesadores y los ASIC. El resto de datos se almacena
en dispositivos de E/S tales como discos, CD ROM , o cintas, y se ll evan a la
memoria cuando son necesarios para el procesamiento en curso. Normalmente,
estos componentes de la computadora están conectados al sistema mediante un
bus, como muestra la Figura 9. 1.

Procesador

l
AS le

l
BT Bu s

l l l
MemOria Dispositivo Dispositi vo
princ ipal de E'JS de E/S

FIGURA 9.1 Computador genérico.

Como se indicó en el Capítu lo 8, los ASIC se especifican mediante descrip-


ciones de comportamiento en forma de algoritmos, programas, o diagramas de
flujo . Un procesador, por otra parte, queda completamente especificado por su
repertorio de instrucciones (lS , InstructiolZ Sel), en el que cada instrucción
representa la unidad indivisible de cómputo más pequeña. Para calcular una
expresión matemática o cualquier otra tarea de cómputo se necesita una secuen-
cia de instrucciones. Una tarea se especifica usualmente mediante un lenguaje de
programación que es traducido mediante un compilador a una secuencia de tales
El diseño del procesador 407

instrucciones. Así, el repertorio de instrucciones debe ser lo bastante general


como para pennitir una compilación eficiente de diferentes lenguajes de progra-
mación, pero lo suficientemente simple para permitir un diseño de procesador
rápido y factible en la práctica.
En este capítulo se discute la relación entre los repertorios de instrucciones y
el diseño del procesador y se muestra cómo di señar un procesador para un reper-
torio de instrucciones dado. Además, se utilizan algunas de las técnicas presenta-
das en el Capítulo 8 y se muestra la forma de diseñar un procesador sencillo de 16
bits con repertorio complejo de instrucciones (CISC, Complex Instructiol1-Set

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Computer), así como el correspondiente procesador de repertorio reducido de ins-
trucciones (RISC, Reduced Instruction -Set Computer).

9.1. REPERTORIOS DE INSTRUCCIONES


Como se ha mencionado anteriormente, un procesador se diseña para ejecutar
secuencias de instrucciones, llamadas programas. Cada instrucción realiza una
pequeña parte del procesamiento, tal como almacenar un dato en memoria, cargar
datos en los procesadores y en los dispositivos de E/S desde la memoria. realizar
una operación aritmética, lógica, o de desplazamiento, o decidir la instrucción que
se ejecuta a continuación. Cada repertorio de instrucciones tendrá una cierta
variedad de instrucciones y formatos de instrucción, que se interpretan en la uni-
dad de control del procesador y se ejecutan en su camino de datos. Una instruc-
ción es en si una cadena de bits, que se se agrupan en distintas subcadenas. o cam-
pos. con tamaños diferentes.
Los campos que se encuentran más frecuentemente son el código de opera-
ción (codop), que especifica la operación a realizar, y el campo de dirección, que
especifica dónde encontrar los operandos necesarios para dicha operación. Para
representar cada instrucción, usualmente se utiliza una notación especial para pro-
gramas que especifica el codop en primer lugar, seguido por las direcciones nece-
sarias. Por ejemplo, considérese una instrucción para realizar la operación
a = b + e, con a, b. y e almacenadas en las posiciones A. B, Y C; respectivamen-
te . Para representar esa instrucción, se escribiría
AddA, B, C
Alternativamente, podríamos representar la misma instrucción mediante una
notación matemática similar a la de asignación a variables utilizada en los len-
guajes de programación. En este caso escribimos
Mem{Aj f- Mel1l[Bj + Mem{Cj
en donde Mem es un array y a, b. y e son elementos de dicho array Mem{Aj,
Mem[Bj. y Mem[Cj, donde los símbolos entre corchetes indican los índices del
array.
Además es posible que las variables a, b, y e estén almacenadas en un banco
de registros dentro del camino de datos, en cuyo caso se escribe
408 Principios de diseño digital

Add RA, RB, RC


para indicar que las direcciones RA, RB, Y RC son direcciones del banco de regis-
tros. En notación matemática, la misma instrucción podría representarse con la
expresión
RF[A] f-RF{B] + RF[C}
Además de los campos de codop y de dirección, en cada instrucción se encuen-
tra frecuentemente un campo de tipo de instrucción. Los tipos de instrucciones más

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
frecuentes son instrucciones con registros, que operan con valores almacenados
en registros, instrucciones de transferencia vnove instructions} que transtieren
datos entre la memoria y los registros, y las instrucciones de salto condicional
(brand, instructions), que seleccionan una de las dos posibles instrucciones a eje-
cutar a continuación de la actual en función del estado del camino de datos.
Las instrucciones con regi stros típicas, como la instrucción Add considerada
anteriormente, realizan operaciones aritméticas, lógicas, y de desplazamiento con
operandos almacenados en el banco de registros. Como ejemplos de instrucciones
de tran sferencia frecuentemente usadas están las instrucciones de carga Uoad) ,
tales como
Load R2A (RF[2] f- Mem[Aj)
que carga el dato almacenado en memoria, en la posición A , en el registro RF[2],
incluido en el banco de registros, y las instrucciones de almacenamiento (Hore)
como
Store A, R2 (Mem[A) « RF[2j)
que almacena el valor del registro RF[2] en la posición de memoria A.
Una instrucción de salto condicional típica compara los va lores de dos regis-
tros y decide qué hacer a continuación en base a dicha comparación. Por ejemplo,
una instrucción de saltar-si -i gual, Beq (de brallch-oll-equal), determina si los dos
valores son iguales y, si son iguales. decide ejecutar la instrucción situada en la
dirección de memoria especificada en el campo de dirección de la instrucción , o
bien, si no son iguales, ejecutar la siguiente instrucción de la secuenc ia. Así. la
instrucción
Beq R2,R3,A
indica que si los valores de RF[2] y RF[3] son iguales. el procesador ejecu tará la
instrucción situada en Mem[Aj.
Además de los campos de tipo , una instrucción puede incluir un campo de
modo que especificaría la forma de obtener la dirección efecti va de los datos a
partir de la información proporcionada por el campo de dirección. Por ejemplo, si
el campo de modo indica que la instrucción proporciona una dirección indirecta,
se tiene que el campo de dirección de la instrucción especifica una dirección de
memoria donde se encuentra la dirección real del operando. Considere. por ejem-
plo, la siguiente instrucción:
El diseño del procesador 409

Lind R2A (RF/2) f--- Mem[ Mem[ AJ])


Según el campo de modo de la instrucción, se cargará el dato de memoria
situado en la posición Mem[A}, y no desde la dirección especificada por A
Por último. una instrucc ió n también puede incluir un campo de constante,
que contiene el valor de una constante que se utiliza como operando. Por ejem-
pl o. la instrucción
Add R2 R3.1 (RF[2) f--- RF/31+ 1)

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
indica que el procesador sumará 1 al valor del tercer registro del banco de regis-
tros y lo almacenará en el segundo reg istro. El campo de constante tambi én puede
utili zarse para espec ifi car un índice cuando se está accediendo a los elementos de
un array.
Al definir un repertorio de instrucciones, uno de los factores más importantes
a tener en cuenta es el número de campos de dirección que tendrán las instruc-
ciones. puesto que el número de campos de dirección afecta de manera importan-
te al tamaño de los programas y a las prestaciones del procesador. Es decir, cuan-
tos más campos de dirección tenga una instrucción, mayor será el tamaño de la '
instrucc iones pero los programas serán más cortos debido a que tendrán menos
instrucc iones. En cambi o. las instrucciones con menos campos de dirección son
más cortas pero se necesitan programas más largos para ejecutar una tarea deter-
min ada. Cuando se utilizan instrucciones más largas, el procesador realiza más
accesos a memoria por instrucción para captar las instrucc iones y los operandos.
Sin embargo, el número total de accesos a memoria puede no ser diferente en el
caso de instrucciones más cortas, puesto que el programa necesitaría más instruc-
ciones. Si el número total de accesos a memoria se usa sin más como una medida
de prestaciones, debemos diseñar el repe rtorio de instrucciones de manera que por
término medio los programas necesiten el mínimo número de accesos a memoria.
A continuación se muestran varias opciones con un ejemplo sencillo.
Considérense instrucciones con distintos tipos y número de direcciones para
el cálculo de la expresión e = al - b1 = (a + b) * (a. - b). En general, las instruc-
ciones con tres direcciones son las más potentes porque pueden ejecutar una asig-
nación completa a las variables que intervienen en una operación de dos operan-
dos. Concretamente, una instrucción con tres direcciones contendría las posi-
ciones de los dos operandos y la del resultado, ade más de especificar la operación
binaria a reali zar. Por ejemplo, el cálculo de (a + b) * (a - b) podría espec ificar-
. e mediante las siguientes tres hipotéticas instrucciones, en las que asumimos que
las variables a. b. e y un a variable temporal x est,ín almacenadas en memoria, en
las posiciones A. B. C. Y X respecti vamente:
1. Add X, A. B (M em[X] f--- Melll[A 1+ Melll[B])
2. Sub C. A. B (Mem[ el f--- Mem[A I - Melll[B])
3. Mili C. X. e (Mem[C] f--- MemlXl " M em[eJ)
El ejemplo anterior muestra un punto débil de las instrucciones con tres ope-
randos: aunque son muy convenientes. también son muy largas si se tienen en
410 Principios de diseño digital

cuenta los estándares actuales en las tecnologías de memorias y procesadores. Si


se asume que los tamaños actuales para la memoria están entre 16 y 256 millones
de palabras, cada dirección precisaría entre 24 y 28 bits, y una instrucción con tres
direcciones necesitaría de 80 a 90 bits, incluyendo el campo de código de opera-
ción. Si además asumimos que las instrucciones con tres direcciones se ejecutan
en procesadores de 32 bits con palabras de memoria de 32 bits, cada instrucción
ocupará tres palabras de memoria. En otras palabras, un procesador debe realizar
tres aCCeSOS a memoria para captar una instrucción y tres más para ejecutarla. Con
todo esto, para ejecutar el programa anterior, el procesador tendría que acceder

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
nueve veces a memoria para captar las instrucciones y otras nueve más para acce-
der a los operandos y almacenar los resultados.
Una estrategia que puede mejorar las prestaciones del programa consiste en
reducir el número de direcciones de tres a dos, utilizando instrucciones con dos
direcciones que asumen que el primer operando y el resultado comparten las
misma posición de memoria. Por ejemplo, si utilizamos instrucciones con dos
direcciones, el programa para calcular e = (a + b) * (a - b) necesitaría cinco ins-
trucciones, como se indica a continuación:
l. Move X, A (Me1ll[X] f- Melll[AJ)
2. Add X, B (Mem[X] f- Mem[Xl + Me1ll[B])
3. Move C,A (Mem[C] f- MemlA])
4. Sub C.B (Me1ll[C] f- Mem[C] - Mem[BJ)
5. Mu¡ C,X (Mem[C] f- Mem[C] * Mem[X])
Asumiendo nuevamente que cada dirección necesita entre 24 y 28 bits, cada una
de la~ instrucciones de dos direcciones podría caber en sólo dos palabras de memo-
ria, en lugar de tres. Sin embargo, ahora necesitaríamos cinco instrucciones para cal-
cular el mismo resultado. Es decir, el procesador accedetía en este caso 10 veces a
memoria para captar las instrucciones, y otras 13 veces para obtener los operandos y
almacenar los resultados. Con esta situación, el programa anterior tendría un tiempo
de ejecución mayor que el del programa con instrucciones de tres direcciones. pues-
to que ahora se necesitan dos instrucciones Move extra para cargar los datos en las
posiciones adecuadas para su uso por las instrucciones con dos operandos siguientes.
No obstante, podríamos reducir el número de direcciones a una si se dedica un
registro específico del camino de datos para almacenar el resultado de cada ope-
ración así como uno de los operandos. Usualmente. ese registro recibe el nombre
de acumulador (ACC). Usando un acumulador en el ejemplo anterior se podría
calcular e = (a + b) * (a - b) mediante las siete instrucciones siguientes:
1. LoadA (ACC f - Mem[AJ)
2. AddB (ACC f - ACC + Melll[B])
3. Store X CMem[X] f - ACC)
4. Load A (ACC f - Mem[A])
5. SubB CACC f - ACC - Mem[B])
6. Mili X (ACC f - ACC * Mem[X])
7. Store C (Mem[C) f - ACCl
El diseño del procesador 411

Con las suposiciones anteriores, cada instrucción sólo necesitaría ahora una
palabra de memoria, lo que significa que el procesador accedería a memoria siete
veces para captar las instrucciones y otras siete más para acceder a los operandos
y almacenar los resultados. Según esto, este programa se ejecutaría en un tiempo
menor que cualquiera de los anteriores puesto que el acumulador permite guardar
los operandos y los resultados temporalmente para que el procesador no tenga que
acceder tanto a memoria.
Este concepto de almacenamiento temporal también puede ampliarse y apli-
carse a más de un registro, de manera que llegamos a una segunda estrategia para

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mejorar las prestac iones de un programa: se puede incrementar el número de
registros del camino de datos introduciendo un banco de registros. Puesto que este
banco de registros contiene varios registros, tendríamos que incluir en las ins-
trucciones campos de direcc iones adicionales para estos registros . Entonces, para
ejecutar el programa anterior, se utilizan instrucciones con dos direcciones en las
que una de las direcciones especifica una posición particular dentro del banco de
registros. Si, por ejemplo. se usa un banco de registros (RF) con tres o más regis-
tros, se podría calcular e = (a + b) * (a - b) con la siguiente secuencia de ins-
trucciones de dos direcciones:
l. Load RI , A (RF[ 1] f- M em[A])
2. Load R2. B (RF[2] f- M em[B))
3. Load R3, RI (RF[3] f- RFll])
4. Add RI , R2 (RF[I] f- RF[I] + RF[2])
5. Sub R3, R2 (RF[3] f- RF[3] - RF[2])
6. MuIRI , R3 *
(RF[ 1] f- RF[ l]) RF[3])
7. Store e, RI (M em[C] f- RF[I ])

Como puede verse a partir de este programa, el procesador todavía tendría que
acceder siete veces a memoria para captar las instrucciones pero accedería sólo
tres veces para captar los operandos y almacenar el resultado. Puesto que el pro-
cesador tendría que cargar las variables {/ y b Y almacenar e en cualquier progra-
ma, estos tres accesos constituyen el número mínimo para el cálculo de
e = (a + b) * (a - b).
Una importante característica de este último programa es el hecho de que sólo
se necesitan instrucciones de carga (load) y almacenamiento (sto re) para acceder
a memoria, mientras que las instrucciones aritméticas sólo accederán a los regis-
tros. necesi tando campos de dirección más cortos. A partir de esta modificación ,
podríamos utilizar intrucciones con tres direcciones para aquellas instrucciones
con operandos y resultado en registros, e instrucciones con dos direcciones para
cargar datos desde memoria a los registros y para vol ver a almacenarlos en la
memoria. De hecho. la mayoría de los procesadores actualmente en el mercado
utili zan esta estrategia, puesto que implica instrucciones más cortas y una menor
frecuencia de accesos a memoria. Por ejemplo, si utilizamos esta estrategia, se
podría calcular e = ({/ + b) * (a - b) con sólo seis instrucciones, como en el
siguiente programa:
412 Principios de diseño digital

1. Load RJ,A (RF[ J] (- M emlAJ)


2. Load R2 , B (RFl2] ( - M em[B])
3. Add R3 , RJ, R2 (RF[3] ( - RF[ J] + RF[2])
4. Sub R4, RJ , R2 (RF[4] ( - RFll J- RF[2J)
S. Mul 85, R3, R4 (RF[5] (- RF[3] * RF[4])
6. SlOre C, R5 (M em[C] (- RF[5J)
Un procesador podría ejecutar el programa previo accediendo a memoria seis
veces para captar las instrucciones y tres veces para cargar y almacenar los datos.
Util izaremos esta estrategia para el diseño de repertorios de instrucciones en el

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
resto de este capítulo.
En el ejemplo anterior. se han mostrado varias soluciones para sati sfacer los
objetivos contrapuestos que aparecen al utilizar el máltimo número posible de
direcciones por instrucción para acelerar la ejecución de los programas. Como
pone de manifiesto la última opción, se llega a un compromi so si se utiliza un
pequeño banco de regi stros como almacenamiento temporal. que permite utilizar
instrucciones con tres direcciones para las operaciones con datos contenidos en
dicho almacenamiento temporal, dado que las direcciones del banco de registro.
necesitan menos bits. y usar además instrucciones de carga y almacenamiento con
una dirección de memoria para transferir datos entre el banco de regi stros y la
memoria principal. Esta estrategia de dividir las intrucc iones en instrucciones de
carga/almacenamiento e instrucciones con registros se basa en el hecho de que
cada variable del programa se utiliza más de una vez, y el acceso a dichas varia-
bles en un banco de regi stros de acceso rápido con direcciones cortas reduce los
accesos a memoria principal. Puesto que todos los procesadores comerciales
actuales utilizan esta estrategia, en el resto del capítulo también se utilizará para
el di seño de repertorios de instrucciones.

9.2. MODOS DE DIRECCIONAMIENTO


Como se describió en la Sección 9. 1, mientras que el codop de una instrucción
especifica la operación a rea lizar, el campo de dirección contiene la información
necesaria para determinar la situación de los operandos y el resultado de la ope-
ración. Dentro de este campo de dirección. el modo de direccionamiento especi-
fica la forma de interpretar la información que aparece en el campo de direcci ón.
es decir, indica cómo calcular la dirección real o efectiva de los datos necesarios.
Se pueden utilizar distintos modos de direccionam iento para reducir el tamaño del
campo de dirección , permitiendo especificar sólo parte de la dirección mientras
que el campo de modo define la técnica para calcu lar la dirección completa. En
general, se necesitan diferentes modos de direccionamiento para implementar las
distintas construcciones propias de los lenguajes de programación. estructuras de
datos, y tareas del sistema operativo, tales como bucles. sentencias condicionales,
indexado de vectores, punteros a datos, reubicación de programas. y conmutaci ón
de contextos. Así, el disponer de una cierta variedad de modos de direcc iona-
El diseño del procesador 413

miento permite escribir programas que serán eticientes en cuanto al número de


instrucc iones y al ti empo de ejec ución. En el resto de esta secc ión se describen los
modos de direccionamientos utili zados con más frec uencia, y que se muestran en
la Figura 9.2.
En el modo de direccionamiento implícito, Figura 9.2(a), se ti ene que un a
instrucci ón no necesita un campo de dirección explícito puesto que la posición del
operando o del resultado se especifica mediante el propio códi go de operación.
Una instrucción que actúe sobre un registro específico. tal como el reg istro de bits
de condición o el acumulador de un camino de datos. no necesi ta un campo de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
dirección puesto que esos registros son ún icos y por consiguiente están ind icados
implíc itamente en el propi o codop. Este ti po de instrucciones de modo implícito
eran comúnmente utili zadas por los primeros com putadores orientados a pila, en
los que todos los operandos siempre debían estar en la cabecera de la pila y el
resultado también se introducía automáti camente en la cabecera de la pil a.
En el modo de direccionamiento inmediato. que se muestra en la Figura
9.2(b), el campo de dirección espec ifica el propio operando, de forma que en rea-
lidad una instrucc ión con modo inmedi ato ti ene un campo de operando en lugar
de un campo de di recc ión. Este campo de operando se utiliza para especi ficar las
constantes usadas como operandos en la operac ión que especifica el couop. Este
modo de direccionamiento es particularmente útil cuando se incrementan o decre-
mentan Índi ces de un bucle o de un vector, o cuando se calcul an ex presiones que
tienen muchos coefi cientes, puesto que los índices y los coefi cientes se pueden
proporcionar en el campo de dirección en lugar de estar almacenados en la memo-
ri a como datos. lo que además ahorra accesos innecesarios a memori a por parte
del procesador.
En el modo de direccionamiento directo, Figura 9.2(c). el campo de direc-
ción especifi ca la posición de un operando o del resultado. que puede estar situa-
do en la memoria o en el banco de reg istros. Obsérvese que una dirección de
memori a es mucho más larga que una dirección de registro. debido a que los
tamaños de la memoria varían entre 16 millones y 256 millones de palabras, en
tanto que los tamaños de los bancos de registros van desde 8 a 128 palabras, lo
que si gnifi ca que se necesitan de 24 a 28 bits para una dirección de memori a en
lugar de los 3 a 7 bits para una direcci ón de registro.
En el modo de direccionamiento indirecto. que corresponde a la Figura
9.2(d), el campo de direcc ión especifica la posic ión de la dirección de un operan-
do o del resultado. Así. en el modo indirecto a través de memoria (lII elll o/)'-indi-
recf) el procesador ti ene que acceder dos veces a memoria: una vez para captar la
dirección, y otTa para captar el operando o almacenar el resultado. En el modo
indirecto a través de registro (regisfer -illdirect) . el campo de dirección contiene la
direcc ión de un reg istro determinado del banco de reg istros donde se encuentra la
direcc ión del operando o el resultado. De esta fo rma. para utili zar el modo indi-
recto con registro, el programador necesita asegurarse de que la dirección de
memoria se ha colocado en el registro adecuado antes de acceder a él. La princi-
pal ventaja de utilizar el modo de direccionamiento indirecto a través de registro
es que la direcci ón del registro necesita menos bits que una direcc ión de memo-
414 Principios de diseño digital

ria, y que el acceso al banco de registros es mucho más rápido. como se di scutió
en el párrafo anterior.

~ a) Implícito C()(Jop

~ b) Inmed iato COI.Jop Opt'rlwdn I


(e) Directo I Codop I Dirl'cf'Íó" I I COl/Op I Direcl'ión I
M emor/(/

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
RF
~ O/)eml/(/u ...... Operando

(d) Indirecto I endol ' I Diret:áÓI/ 1 I Cm!up I Dirección


M I.'II/n r i"
RF
Direl'drin Opt!r(/fu/o
~

'- Opt'rlllUJO ,\ It'murif/

I Opt',lIlIIlo

(e) Relativo I COl/Op IlJes/,!u:(lm;e/llo I I CQ(lop IDircccir'm l Despll/: wllh'lIlo


L-
I Rt'g islfO J
lI1elllor;/I
RF
I -..
-Gr O/lertllldo OIJermula
"h'lIIur;o

L.0+ Opcr{//ulu

tf) Indexado

Ml'lII urja

índice
+)....--'----+( Oflerando M¡'/IIor;{/

FIGURA 9.2 Modos de direccionamiento.

En el modo de direccionamiento relativo, que se muestra en la Figura 9.2(e).


el contenido del campo de dirección, frecuentemente llamado desplazamiento
El diseño del procesador 415

(offset), se suma al contenido de un registro que se especifica, ta l como el conta-


dor de progama o un registro del banco de registros. Este desplazamiento es nor-
malme nte un entero pequeño que puede ser positi vo o negativo. Cuando el ente-
ro se su ma al contenido del contador de programa, el resu ltado es la dirección de
una instrucción en la vec indad de la instrucción a la que apuntaba el contador de
programa. Por tanto, este modo de direccionamiento relativo se utiliza en las ins-
trucciones de ramificación, puesto que la dirección a la que se se produce el salto
está normalmente en las proximidades de la propia instrucción de ramificación.
Además, el direccionamie nto relativo se puede utilizar también con respecto a un

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
registro del banco de registros, como muestra la Figura 9.2(e). En este caso se uti-
liza para realizar búsquedas en tablas; usualmente el registro conti ene el comien-
zo de la tabla y el desplazam iento se utiliza para apuntar a un elemento específi-
co de la mi sma. El direccionamiento relativo también se puede utili zar para la reu-
bicación de código, en cuyo caso el registro contiene la primera instrucción y el
desplazamiento se utiliza para apu ntar a la siguiente instrucción a ejecutar. La reu-
bicación de código permite mover programas dentro de la memoria de la compu -
tadora, conmutar entre un programa y otro, y alternar la ejecución de varios pro-
gramas al mismo tiempo. La principal ventaja de este modo de direccionamiento
es que da lugar a un formato de instrucción con un campo de dirección más corto,
puesto que el desplazamie nto normalmente necesita menos bits que la dirección
de memoria completa.
El modo de direccionamiento indexado, ilustrado en la Figura 9.2(1), gene-
ralmente se utili za cuando se necesita acceder a datos almacenados en arrays,
matrices, pilas, o colas. El campo de dirección de la instrucción especifica la
dirección de comienzo, llamada base, mi entras que el índice del dato se encuen-
tra e n un registro índice específi co o mediante un registro del banco de registros.
Para calcular la dirección efecti va, se suman los valores de la base y del registro
índice. En algunas instrucciones, además, el valor del registro índice se incre-
menta o decrementa después, de forma automática, para acceder al siguiente ele-
mento del vector, la pila, o la cola. Este tipo particular de instrucción, en el que el
registro se incrementa o decrementa automáticamente, se denomina instrucc ión
con autoincremento o autodecremento. El direccionamiento indexado también
contribuye a reducir el número de bits necesarios en el campo de direcc ión, ya que
las direcciones de las bases suelen ser múltiplos de 2", conteniendo (11- 1) ceros.
Puesto que estos (n- l ) ceros no neces itan almacenarse en el campo de dirección,
la instrucción precisa menos bits.
Obsérvese que el direcc ionamiento indexado es similar al direccionamiento
relativo, ya que los dos valores, incluidos en el campo de dirección y en el regis-
tro específico, tienen que sumarse para obtener la dirección efecti va. Estos dos
modos de direcc ionamiento se diferencian sólo en la situación de la base y del
índice o desplazamiento: e n el direccionamiento relativo, la base está en el regis-
tro dedicado y el desplazamiento se sitúa en el campo de dirección, mientras que
e n el direccionamiento indexado, la base está en el campo de dirección y el índi-
ce en un registro dedicado. Generalmete, la disponibilidad de varios modos de
indexado en un repertorio de instrucciones hace que los programas que ejecuta el
416 Principios de diseño digital

procesador sean más cortos, pero esto también hace que la implementación del
procesador sea más compleja, como se verá en el resto del capítulo.

9.3. DISEÑO DEL PROCESADOR


Aunque cada repertori o de instrucciones dado puede contener instrucciones dife-
rentes, con campos y modos de direccionamiento distintos, al ejecutar una ins-
trucción todo procesador realiza los mismos cinco pasos generales. Estos cinco

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
pasos. indicados en la Figura 9.3, constituyen el ciclo de ejecución de instruc-
ción. El ciclo comienza cuando el procesador busca una instrucción desde la
memoria y la carga en el registro de instrucción (IR, Inst/'uctiol1 Register). que
almacena la instrucc ión mientras se está ejecutando en el camino de datos del pro-
cesador. En este primer paso, el procesador también incrementa el contenido de
otro registro, Uamado contador de programa (PC, Program COl/lite,,). que alma-
cena la dirección de la sigui ente instrucc ión a ejecutar. En el segundo paso. des-
pués de haber buscado la instrucción, el procesador debe tener en cuenta el modo
y los campos de dirección de la instrucción para determinar la dirección efecti va
de todos los operandos que intervienen en la operación y del resultado de la
mi sma. En el tercer paso, el procesador debe buscar estos operandos desde la
memoria y almacenarl os temporalmente en el banco de registros o en algún otro

!
Buscar
instrucción

t
Calcular
direcci ón decti va

~
BII.~l: a r
opcnmdos

~
Ejecutar
opcntd 6n

~
AlmaCena,.
resultado

I
FIGURA 9.3 Ciclo de ejecución de instrucción.
El diseño del procesador 417

registro del camino de datos. Después de buscar los operandos, el procesador eje-
cutará la operación especificada en el codop, completando así al cuarto paso del
cicl o de instrucción. Finalmente, en el quinto paso, el procesador almacena el
resultado de la operación en la memoria, o lo guarda temporalmente en el banco
de registros para su uso en instrucciones siguientes.
Aunque es posible identificar estos cinco pasos en una instrucción típica,
diversas instrucciones precisan acciones ligeramente diferentes dentro de alguno
de estos pasos, y algunas instrucciones pueden incluso saltarse alguno de ellos.
Así. para diseñar un procesador, hay que diseñar en primer lugar su repertorio de

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
instrucciones, especificando las operaciones que realiza cada instrucción. Como
se indica en la Figura 9.4, el diseño del repertorio de instrucc iones es el primer
paso del diseño de un procesador. Una vez definido el repertorio de instrucciones,
se puede describir sucintamente con un diagrama de flujo de repertorio de ins-
trucciones (diagrama IS , Inslrucliol/ Sel). que indica de manera precisa todas las
nperaciones que se reali zan en cada instrucción . El diagrama de flujo IS se utili-
za como punto de partida para asignar los componentes en el camino de datos.
do nde se ejecutan todas las instruciones. Sin embargo. puesto que el diseño del
camino de datos depende del repertorio de instrucciones. y el di seño del reperto-
rio de instrucciones del camino de datos. el proceso de diseño del repertorio de
instrucciones, elaboración del diagrama de flujo. y asignación de componentes se
debe repetir varias veces. Después. una vez determinados los componentes bási-
cos del camino de datos del procesador. se obtiene el diagrama ASM del proce-
sador, que divide cada instrucción en una serie de ciclos de reloj y especifica
todas las transferencias que tienen lugar en cada ciclo. A partir de este momento
se pueden deducir fáci lmente las conexiones del camino de datos para completar
su diseño. Finalmente, el último paso consiste en el diseño de la unidad de con-
trol. Es importante tener en cuenta, sin embargo. que esta secuencia de pasos sed
siempre en cierto modo iterativa ya que el diseño del repertorio de instrucciones
y el del camino de datos son interdependientes y no se conocerán las prestaciones
del procesador hasta que se termine. Antes de obtener un diseño satisfactorio,
habrá que repetir el proceso de diseño en tero. o alguno de sus pasos, varias veces.

9.4. DISEÑO DEL REPERTORIO DE INSTRUCCIONES


Al diseñar un repertorio de instrucciones. hay que considerar diversos aspectos y
establecer un compromiso entre la eficiencia y el tamaño de los programas por un
lado, y el costo y las prestaciones del procesador por otro. Los tipos y formatos
de instrucciones en el repertorio siempre representan un compromiso entre el
tamaño de los programas y el tamaño del procesador. De una parte , por ejemplo.
nos gustaría tener un repertorio versáti l de instrucciones potentes con varios tipos
de instrucción, campos de direcciones. modos de direccionamiento, y diversidad
de operaciones. Tal repertorio de instrucciones, normalmente denominado reper-
torio de instrucciones complejo, hace que los programas sean más pequeños.
puesto que se necesitan menos instrucciones para computar cada expresión o tarea
418 Principios de diseño digital

incluida en un programa. Sin embargo, este repertorio complejo también precisa


un camino de datos complejo para la ejecución de las instrucciones, con múltiples
unidades, registros, y conexiones complejas. En cambio, un repertorio de instruc-
ciones simple, denominado usualmente repertorio de instrucciones reducido, es
más fácil de implementar puesto que necesita menos componentes en el camino
de datos. No obstante, sus programas son más largos ya que cada programa nece-
sita una secuencia más larga de estas instrucciones más simples.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Diseñar la unidad
de control

no

FIGURA 9.4 Proceso de diseño.

Otro aspecto a considerar cuando se diseña el repertorio de instrucciones es el


tiempo de ejecución de un programa típico. Concretamente, necesitamos tener en
cuenta que los programas con instrucciones complejas son más cortos. pero que
en cambio pueden no ejecutarse más rápido que los programas con instrucciones
más simples debido a que una instrucción compleja puede necesitar más ciclos de
reloj para ejecutarse. De hecho, en la mayoría de los casos, las instrucciones sim-
ples requieren menos ciclos de reloj, de forma que el procesador es capaz de eje-
El diseño del procesador 419

cutar vanas instrucciones simples en el mismo número de ciclos de reloj que se


necesitaría para ejecutar una única instrucción compleja. Además, el ciclo de ins-
trucción de un camino de datos sencillo es normalmente más corto que el de los
caminos de datos complejos ya que los retardos registro-registro son menores. Un
ciclo de reloj más corto permite que se pueda ejecutar incluso un número mayor
de instrucciones simples en el mismo tiempo que una instrucción compleja.
El tercer y último aspecto a considerar en el diseño de un repertorio de ins-
trucciones es la posi bilidad de segmentar (pipelining) el ciclo de ejecución de ins-
trucción de cara a mejorar las prestaciones del procesador. Esta segmentación del

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ciclo de ejecución es difícil de implementar en el caso de instrucciones complejas
puesto que cada paso precisa un número de ciclos de reloj diferente para cada ins-
trucción, de forma que la ejecución segmentada va a la velocidad de la etapa más
lenta, que está determinada por la instrucción que necesita un mayor número de
ciclos de reloj en dicha etapa. En cambio, puede hacerse que las instrucciones
simples ejecuten cada etapa del ciclo de instrucción en el mismo número de ciclos
de reloj, normalmente en un único ciclo de reloj. pennitiendo así una implemen-
tación segmentada del camino de datos.
Las diferencias que se han descrito en los párrafos precedentes se ilustran con
dos ejemplos. En el ejemplo 9.1 se diseña un repertono complejo de instruccio-
nes para un procesador de 16 bits; en el Ejemplo 9.5 se convierte este repertono
complejo en un repertorio reducido de instrucc iones para un procesador de 32
bits.

EJEMPLO 9.1 Repel10rio complejo de instrucciones.


PROBLEMA
Diseñar un repel1orio de inslrucción para un procesador de 16 bilS.
SOLUCIÓN
Un procesador de 16 bilS puede acceder a 64K de memoria con una palabra de dalos. Para
reducir el Illímero de accesos a memoria durante la búsqueda de instrucciones, se limita el
tamaño de una instrucción a dos pa labras de memoria como m uc ho. lo que significa que
sólo pooremos utili zar instrucciones de una dirección para acceder a memoria. Por tanto.
cada instrucción conSla de una o dos palabras de 16 bilS; la segunda palabra. en caso de que
se utilice. sería una dirección de memoria, mientras que las primera palabra especificaría el
lipo de instrucción. el código de operación, y las direcciones dentro del banco de regislros.
Para acomodar tres direcciones del banco de registros. hay que di vidir la instrucción de 16
bils en ci nco campos: e l campo de Tipo (2 biIS). el campo Op (5 bits). y lres direcciones del
banco de registros identificadas con Dest (3 bits), Src l (3 bits). y Src2 (3 bils) (Src de
"Source". FI/ellte en inglés).
En la Figura 9.5 se mueSlran a lgunos ejemplos de instrucciones del repertorio obleni-
do a partir de estas premi sas. Este repertorio incluye cuatro tipos de instrucciones dife -
rentes: illSlrucciones con registros. de memoria, de control, y mi sceláneas. El tipo de ins-
lrucciones con registro, que se muestra en la figura 9.5(a) , incl uye instrucciones de una
palabra que real izan la operación aritmética. lógica, o de desplazamiemo indicada en el
codop, con dos operandos almacenados en los regislros indicados en los campos Src' y
420 Principios de di seño digital

Src2. El resultado de la operación se almacena en el registro indicado en el campo Desl


de la instruc ción.

15 14 13 1" 11 10 9 8 7 6 5 4 3 1 O
(<1) InStrucciones con registros: Tipo Op D es! Src l Srcl.

aril llléticas. Denominaclón Acción


lóg icas.
OJl Desr. Sr!' 1. Src2 RFrDest) f- RnSrr.:l ) Op RF(S'rc'1 )
de transfercnc.ia.
y de desplazamiento

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
15 14 13 12 11 10 9 8 7 6 5 4 3 2 O
(h) Instrucciones con memoria: Tipo 01' Des! Src l Src2
DirecciólI
load ~cargar)
y ~Iorc (a lmacenar)
Denominación Acción
Lll1m Des' RFIDt'.\'rl f- Din'cl.: i6n
Ldi,. Dest RF{Desl} t- Mem¡ Direccion f
L rel De.I" , Src'2 RF[De.\'rj f - Memf RFfSrc'1./ + Dirección}
Lin Des' RF[Destj f- MemfMem/DirecdónJJ
S l/ir S",I Mem[ Direccirill} f - RFI Sre I ]
S rel Srcl. 5/"(:2 Mcm[RF/Src l) + Dirección! f- RFISn: JI
S in Srcl MemfMemfDirecciv /!jf f - RF!Srclf

15 14 13 12 11 10 9 ~ 7 6 5 4 3 2 O
(e ') Instrucciones de control: Tipo 01' Desr Src l 51'('2

ju mp (saltarl.
Dirección
branch (sal to condicionoll),
call ¡llamada a subnuin;¡ ) Denominación Acción
y rClumlrel0mo de subrutina) Jump Dirección PC f- Direcl'ió/l
PC f - pe + I J i SIlIIII.I"fndf = o J
Brel DiH'C(."ió" [ pe f- Direcciól1 .,·i SllIllIsfre /J = 1
Mcm/Src lj t- PC + 1: pe f- Dirección:
Ca/{ Dirección, Src 1
RFjSrc lj f- RFfSrc l /+ 1

Relum
pe f - MemfSrc lj: RF{Src l j f- RF/Srd J - 1

15 14 13 1" 11 10 9 8 7 6 5 4 3 2 O
(d) Instrucciones mi sceláneas: Tipo 01' Des! Src l Src2
Direcci6n
no-op.
clear.
status, Denominación Acción
SC L No-op No I/l/cer /lada
y rcscl e/ea/" Dest RFIDestJ f- O
LI'lat Slr l , Sn"2 Srmus R/SrclJ ~ RF/Src2j
S~WI De~t 5trllJ/s{Deslj f- I <
Rstm Desl SWlUs{Desrj f- O

FIGURA 9.5 RepertoriO de instrucciones de un procesador de 16 bits.

Las instrucciones de memoria. en la Figura 9.5(b). son las instrucciones de carga (load)
y almacenamiento (store) , encargadas de transferir datos entre un registro del banco de
El diseño del procesador 421

reg istros y la memori a. Obsérvese que la dirección de memoria se especifica en la segunda


palabra de la instrucción. mientras que la di recc ión del regi stro puede especi fi c.arse bien con
el cam po Des! en el ca~o de las instmcciones de carga. bien con el campo Src I en el caso
de instrucciones de almunccll3mient.o. Obsérvese también que las instrucc iones ue memo-
ri a pueden utili zar cuatro modos diferentes de direcc ionami ento. que incl uyen el in med ia-
to, directo, relativo, e indi rec to. En el modo re lativo, el desplazamiento se almacena en un
registro indicado por el campo de instrucción Src2.
Como muestra la Figura 9.5(c), las inslrucc ionc:-; ue cont rol también están compuestas
por dos palabras y pueden especi fi car inst rucciones de salto incondicional. de salto condi-
cional. de llamadas a subru tinas, y de retorno de subrutinas, Cuando el procesador ejec uta

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
una instrucción de salto incondicional (jI/m!') , por ejemplo, carga el PC con la dirección de
salto espec ificada en la segunda palabra de la instrucci ón y en el siguiente ciclo de instruc-
ción ejecuta la instrucción al macenada en la di rección de salto. La instrucción de salto con-
di cional (brollc/¡ ) ti ene el mismo efec to si el correspondiente bi t de condición es igual al:
en caso con trario, el procesador ejecuta la siguiente instru cción de la secuencia. Los seis
bits de relación corresponden a las seis operaciones re lacionales: igual. mayor que, mayor
o igual que-omenor que. menor o igual que. y distinto ue. Las instrucciones de tipo misce-
lánea ponen a uno o a cero estos bits. depués de comparar los contenidos de dos registros.
Cuando el procesador ejecuta una instrucción de llamada (call), salta a la subrutina cuya
primera in strucción se encuentra en la posición especi fi cada en el campo de dirección.
Además, también decrementa el va lor de PC y lo almace na en la posición superior de la pil a
cuya dirección se encuentra en el puntero de pila indicado en el campo S rcl, Como puede
esperarse. la instrucción cal! también incrementa el valor del puntero de pila. La inst.rucción
de re torn o de subruti na ( re/un i) es la opuesta a la instrucc ión de llamada: carga la dirección
de retorno en el pe y dec rementa el puntero de pila que está almace nado en el registro indi-
cado en el campo Src J.
Por último. las instrucciones de tipo misce láneo, que se Illuestran en la Figura 9.S(d).
incluyen tanto a la instru cción No-o" como a aquellas instrucciones necesarias para poner
a uno o borrar un regis tro concre to del cami no de datos . La instrucción más importan te de
este gru po es la instrucción Lslal , que perm ite comparar los valores de los registros indica-
dos en los campos S rcJ y Src2 y modifi car los seis bi ts de relación del registro de estado
con los valores correspondientes. Como se indicó anteri ormente. las instrucciones de salto
condi cional comprueban el bit correspondiente después de que este haya sido modificado
por una instrucción Lsta/.

9.5. DISEÑO CISC


Como se ha indicado, un reperto ri o de instrucc io nes, como e l de finido en la
Secció n 9.4, especifica completame nte e l co mportami ento del procesado r, y en
ese sentido, puede cons ide rarse una descripción de comporta miento de l procesa-
do r. Una de las fo rmas utilizadas frec uentemente para representar tal comporta-
miento es e l diagrama de flujo IS, que describe los ciclos de ej ecuci ón de todas
las in strucciones , Obsérvese que el diag rama de fluj o IS sólo espec ifica el com-
po rtamie nto del procesado r, s in incluir ning ún deta lle re lati vo a la arqu itectura,
salvo en lo que respecta a la ex istenc ia de me mo ri a (M elll ), e l banco de reg istros
(RF) , el contado r de programa (p e), e l registro de instrucció n (IR ), y e l registro
422 Principios de diseño digital

de estado (Status) . En el ejemplo siguiente se muestra la forma de construir un


diagrama de flujo lS.

EJEMPLO 9.2 Diagrama de flujo de repertorio de instrucciones (IS)


PROBLEMA
Obtener un diagrama de flujo de repertorio de instmcciones para el repertorio de instruc-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ciones presentado en la Figura 9.5.
SOLUCIÓN
Como se mencionó anteriormente, el diagrama de flujo IS no presupone ningún detalle en
cuanto a la arquitectura, ni ningún camino de datos particular para el procesador. Es más.
no se considera ninguna restricción temporal , ni la duración de los ciclos de reloj. El único
propósito del diagrama de flujo es proporcionar el orden en el que se han de ejecutar las
operaciones especificadas por cada ins(mcción.
En la Figura 9.6 se presenta el diagrama de flujo IS para el repertorio de instrucciones
de la Figura 9.5 . Obsérvese que cada instrucción se ha especificado en dos partes. En la pri-
mera parte. que se aplica a todas las instrucciones. el procesador busca la instrucción y la
introduce en IR e incrementa el registro Pe. En la segunda parte. el procesador decodifica
el campo de tipo para determinar el tipo de instrucción y luego ejecuta la instrucción cal-
culando la dirección efectiva (EA, Effective Address) , realizando la operación especificada
en el código de operación, e incrementando pe en el caso de instrucciones de memoria o
control.

Una vez que se ha completado el diagrama de flujo IS, el siguiente paso para
diseñar un procesador es asignar sus componentes seleccionando el número ade-
cuado y el tipo de unidades funcionales a incluir en el camino de datos. En un pro-
cesador se necesita incluir al menos una ALU con capacidad para desplazar datos
una posición a la derecha o a la izquierda. En los procesadores de altas prestacio-
nes, sin embargo, se debería añadir un desplazador en bloques «<barrel shiftef» l,
un multiplicador, y un sumador/restador y multiplicador/divisor en punto flotan-
te. En este caso, también se debe incluir una unidad funcional para el cálcu lo de
las direcciones efectivas.
En este momento de la etapa de asignación, hay que determinar además el
tamaño de memoria necesario y la mejor forma de organizarla. Después hay
que determinar cuantos buses se necesitan, junto con e l número de bits de
ancho y el protocolo que va a utilizarse. Además, es preciso estab lecer la forma
de implementar la interfaz que permitirá la comunicación con la memoria y
otros ASIC. Por último, se considera la posibilidad de añadir registros de uso
especial, tales como punteros de pila, registros base, contadores de bucles, y
registros de interfaz, que simplifican la transferencia de datos y aumentan las
prestaciones del procesador. La etapa de asignación se muestra en el siguiente
ejemplo.
El diseño del procesador 423

t
IR t- Mem/ PC/
PCt-PC+)

I n~lruccioncs
miscelánea
Á 3
lnl
InStl'UCCloncs tic I1l1nific ac i~'i n
2 I o III~t ru cclOnc:. con registros
l
~'~~"~~~ I RF(De.fl ) t-- NF/Srt'l 10" R/ Src2/
I

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
I
MOllu
3 2 1 O
I I I Inmediato

~
Directo I LO:ld
(cargar)

/,us~
RF{Desl / lIfem { PC¡
PCt- PC+] f-
Load
11 (cargar) EA t- Mt'III! PC/
Rr¡Desr¡ +- Mi'm(EAI
PC+- I'C+ J
Relati\'1I Swre

/,u~
(al mace nar) &\ +- MeIJ/! PCj
Mem{EAI f - Rf[Srt' l /
PCf-PC+ ]

Load
(cargur) EA t- Mem{P CI ... RF{Srcl/
RFI D f:J'l j t- Me",' EA}
PC f--- PC+ 1
Slore

'"di /~ (almacenar ) AH t- Ml'lIll PC/ ... RFISrdJ


US M"III/A Rj +- RF/Srr: ] J
I tJ PC+- I' C +l

I L\l1IU
(cargar) EA +- MeJII{ Melll { PC/I
RFf D eslj +- /lfem(EA ]
PC+- PC+ J
5 10 fC
( alll\llc~'n ar) EA t- Mem{!I1('II1!PCII
MemlEAJ f- R¡:¡Srd I
PC+- PC+ I

FIGURA 9.6 Diagrama de flujo de repertorio de instrucciones.

EJEMPLO 9.3 Asignación d e componentes e n un procesador de 16 bits


PROBLEMA
Asignar los componentes del camino de datos para el repertorio de instrucciones dado en
las Figuras 9.5 y 9.6.
424 Principios de diseño digital

I I
IN ___ .1I''11I{ I'CI
I' e<l I'C+ I

In,ln.ltt IOIl C' miscc hínco


A .\ :!

11
I \J
I
J I1~l ml:C"lmws COl l rl:gi~ln •.~

l,l'l rucCIl)!1cSt'on IllCIllorÜ


In~l rucci()nc~ (!C I"J(1lificacion

A A

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
4 } 2. I () ) ~ ¡ (j

I
Jurnp I ,;1111)) 1

I Sil .llm:,,:cnar
I
I
I
~h ""lo" ",,"h,,~.,' ,
PC -r\"'lII f l'Cf
f-
I
I
R"',IJ .. .,/ o oi-
I
I
~1fIS I 11

I
I
Stutll\4-RPf!l tt l / - NF(Srr:!/ ~ Lf /'e_ N: .1
~
I
I
I
Stm¡o{IJ" .'>Ij_1

SIII IJl f/ ¡J" J" f f- t)


J
I

I Call ¡ lI alll;,Ja a ~\lbnI!Hla 1


I
I
pC .... .\ /. 'mf l'C f
r
L I -
¡\J,.m!S,d I t- I'C + I
PCf- J/t'ml /' C¡
RF/Sn' l /.....-/IW/S,r l /+ I

RduOl Itclon1U ..le ~llbl\l lU1a I

L--
pe (0- . M <'lIIfSrr l !
Rr'ISrl'l/+- Rf'{Src1 f - I

FIGURA 9.6 Continuación.

SOLUCiÓN
Durante el diseño del repertorio de instrucciones, asum imos la ex istenci a de una memoria
de 64K, Mem. un banco de registros con 8 registros, RF, y los registros de uso especínco
pe. IR. y SWI/I.I'. Si nuestro único objetivo fuera obtener un procesador de costo reducido.
no deberíamos añadir ningú n componente adicional a este conj unto básico.
Sin embargo, si se tienen en cuenta las prestaciones, podemos mejorar la eficacia del
procesador añadiendo dos registros más. En el procesador. la memoria es el componente
más lento, por lo que no debemos encadenar los accesos a memoria con una operación en
alguno de los otros componentes. puesto que se requerirían ciclos de reloj de mayor longi-
tud . Por esta razón hemos de añadir un registro de dirección (A R. Address Register) y un
El diseño del procesador 425

registro de datos (DR. Dala Registe,.), como muestra la Figura 9.7. Al añadir estos regis-
tros. en la ejecución de una instrucción de carga (load) podremos calcular la direcc ión efec-
ti va en un cic lo de reloj , almacenándola en AR. y después buscar el operando correspon-
diente en un segundo ciclo de reloj . Igualmente. en la ejecución de una instrucción de al ma-
cenamiento (slorr) se puede cargar, en un sólo ciclo de reloj , la direcció n efectiva en AR y
el dato cOITcspondicnle en DR, y después almacenar el dato en memoria en el siguiente
ciclo de re loj. Así. al añadir estos dos registros. se puede red ucir el período de re loj nece-
surio y se mejoran las prestaciones del procesador.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Unidád
d~ control
[J
SIf/IU ,\

IR II pe li AR II DR

Procesador

1 Bus

D ispol> i l i vo~
Mel/l
de flS

FIGURA 9.7 Asignación de compon entes en el procesador de 16 bits.

Después de decidir los componentes que van a inclu irse en el camino de datos.
el siguiente paso del di seño de un procesador es la obtención del diagrama ASM
a partir de la in formaci6n presente en el diagrama de flujo IS . Para esta tarea se
podrían utili za r los métodos de planificación expuestos en la Sección 8. 14. Por
otra parle, también se podría planificar el diagrama de fluj o manualmente, puesto
que cada ciclo de instrucción del diagrama IS está descrito con muy pocas sen-
tencias de asignaci6n.
Durante la planificac ión manual. es crucial la detecc i6 n de cualquier conflic-
tO entre los datos y los recursos y asegurar su resol uci6n asignando las operaci o-
nes o las transferencias de datos conflicti vas a estados distintos o a cicl os de reloj
difere ntes. Por ejemplo, es posible leer un valor almacenado en un regi stro y
escribir un nuevo valor en ese registro durante el mi smo ciclo de re loj puesto que
las leclllras de regi stros pueden reducirse en cualquier in stante de dicho ciclo qu e
426 Principios de diseño digital

sea posterior al flanco de subida de la señal de reloj , mientras que las escrituras
sólo se producen al final del ciclo de reloj en el siguiente flanco de subida de la
señal de reloj. Sin embargo, no es posible escribir un valor en un registro y leer el
nuevo valor en el mismo ciclo de reloj ya que la escritura sólo puede ocurrir al final
de cada ciclo de reloj. Igualmente, dentro de un mismo ciclo, se puede leer o escri-
bir en una posición de memoria, pero no se pueden hacer ambas cosas puesto que
la memoria sólo tiene un decodificador de direcciones. Por lo mi smo, cada unidad
funcional o bus sólo se pueden utilizar una vez en un ciclo de reloj . Siguiendo estas
indicaciones adecuadamente, el proceso de transformaci ón del diagrama de flujo

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
de instrucciones en un diagrama ASM es relati vamente directo.

EJEMPLO 9.4 Diagrama ASM del Procesador


PROBLEMA

Obtener el diagrama ASM a partir del diagrama de fluj o IS dado en la Figura 9.6.
SOLUCiÓN

E l diagrama ASM se muestra en la Figura 9.8. Obsérvese que es similar al diagrama de nujo
IS excepto por el hecho de que la ejecución de la instrucción se ha dividido en vari os ciclos
de re loj para eliminar las dependencias entre recursos.
Como se muestra en la Figura 9.8. las instrucciones con registros se ejecutan en dos
ciclos. En el primer ciclo de reloj, el procesador busca la instrucción y la almacena en el
registro IR , mientras que en el segun do ciclo realiza la operación especificada en el campo
de código de operación.
Las instrucciones con memoria precisan tres o cuatro ciclos de reloj . Considérese, por
ejemplo. la instrucción de carga indirecta. Li/l. que necesita cuatro ciclos de reloj para eje-
cutarse. En e l primer ciclo de reloj , e l procesador busca la primera palabra de instrucción y
la guarda en IR. mientras que en el segundo ciclo. busca la segunda palabra de instrucción
y la almacena en AR. Después, en el tercer ciclo de reloj. busca la dirección real del dato y
la carga en AR. Por último. en el cuarto ciclo de reloj . el procesador busca el dato de memo-
ria y lo guarda en el banco de registros. R F.
Las instrucciones de control utili zan dos o tres ciclos de reloj para su ejecución. Por
ejemplo. una instrucción de salto condicional necesitaría dos ciclos de reloj . En el primer
ciclo de reloj. el procesador busca la instrucción, y en el segundo comprueba el bit de
condición correspondiente e incrementa el contador de programa, pe, si e l bit de condi-
ción es igual a O. ó carga la segunda palabra de instrucción en pe si el bit de condición
es 1.
De igual forma. las instrucciones de tipo misceláneo utili za n dos ciclos de reloj . En el
primer ciclo se busca la instrucción, como siempre, mientras que el segundo ciclo se uti li-
za para modificar un registro o uno de los bits de ese registro. Como ejemplo. se considera
la instrucción LswI. En el segundo ciclo de re loj, el procesador compara dos valores que
están almacenados en el banco de registros, RF. restando un valor a otro y disponiendo con-
ve nientemente los seis bits del registro de estado en los valores. Por ejemplo. si el valor de
RF{Srcl { es mayor que e l valor almacenado en RF{Src2/. la instrucción Lstal pondrá a uno
los bits que corresponden a las relaciones mayor que. mayor o igual que, y distinto de. y
mantendrá a cero los restantes bits. que representan las condiciones menor que. menor o
igual que. e igual a.
El diseño del procesador 427

Para temlÍnar. a partir del diagrama ASM se puede ver que el procesador necesita entTe
dos y cuatro ciclos de reloj para ejecutar una instrucción. Además, como se mostró en el
Capítulo 8, es posible obtener fác ilmente el camino de datos y la unidad de control a partir
de este diagrama ASM .

Una vez se ha obtenido el diagrama ASM, el paso tinal en el diseño de un pro-


cesador consiste en interconectar todos los recursos insertando selectores y adap-
tadores de bus cuando sea necesario y determinar la lógica de la unidad de con-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
IR ",,.,,,IPe/
I PC ... PC+ J
I
Inslrucclones miscelánea
I n(lruCC:lOn~s d(' rumific;tClóo
A 3 '2

I
I o
I n~ lrut'C1one~ con ncl! I ~ln)<;

I
Instrucciones con memOI'':1 I
I RFIDu tl +- RF/Srr l /Op RFfSrr2/

~,,~
I
, ' I
Inmediato

/,~~
~
Di1'l:cll! RF(DeJl1 +- M f!/II{PCI
...
~~
PC ... I'C + I

I Load (cargar ) I AR +- "'cm! PCJ


PC+- PC+ I

~
Rt:htlh'¡¡

~~
RFIDtstJ +- MrmIAR!

I Il
InduttlQ Slore lalmacel\llJ) I DF _ RFfSrdJ

I
AR _ Mt'm/PCJ
I
/~~
PC ..... PC+I

sIon: (al macenar)


Load
I I
fCllJ'~i1t1
~
(cargar)
RFllñsl1 +- Meml PC¡
PC+- PC + I

AR t- RFfDrstf + Rf"[Srr2/
MrIll M RJt- DR
r
~ .4.R ..... ¡\!rm! PC/
PC+-PC +I I 510re
RF/lkJt¡ t- MemlA RJ

1 AR t- MemfARI J {~hmlCcnar~ RF/Dm/ ..... M rnr{PC¡


PCt- PC + J

I RP/Dtstj +- MemIAR} t--


AR +- R/;/DI'sll ... RF¡S,,-'2/
DH +- Rf'lS,d/
AR +- Mtmf pe¡
-1 PC+-PC +I I Mt lll fA RJ +- DR
1---
I
OR +- RFf Srdj
AH t- Mt mIAR/ I
I McmlAHI +- DR 1-

FIGURA 9.8 Diagrama ASM para el procesador de 16 bits.


428 Principios de di seño di g ital

Leye nd a:
+ IR " RC¡;J ~ ln l de in, lruc':hJ11
RF " R:ll1l'(1 de rC~:1, IIl\~

I I
IR ..- M"m(PC/
i'C..- PC + I re" Conl;l.!ur .k p rU~r:lIH:1
A R '" Rc p ,lr" ,k ,.II r'·":':I"n

A
!JI{ " 1{C); I~lr" d~ d:lh)<
,s Ial u' " Rc)!I, lr" .k e,IOIII" Ide 1.1 /\ I.:S I ' I

.l :2 I f)
In, lm.:.:,,,n.:, (,',11\ rCJ.'I, If<h

111,¡m,,:clunc.' lll lst'c!lí nc;¡ I 1


1 In_lruccionc < co n n1o:11l()ri ~
ln SlrucC IlH\CS lk r;Il111 licaClún

A A

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
.\ J .2 I U .1 J ! O

1
Jump I
I I I 1'{"\-- tI!l' III/ I'CI

I
N/.J almil"'n111"
1
Br:II1l'h
f---
I
I
NF/f)¡' I'I/I:-O
I
~,~
r
1 I "

: SWlu, '¡""' fo." ;{S" I / - II F¡Sn1j


LJ I'c .... l'c+ I
L
1 5 11I11H{ll,"'/'- I
1
Suhrullll~
I'C ......\ k m¡I'C}
r
1 1
/)H ;- ,II!'mfI'C¡
I 1
- A R I:- /?f / ·~,,11
Slulu-'J IJ.,.,/j .-.- IJ
I'c ..... I'('+ I
I I
.\"'mfM( I ·~ I'C
pe +- 0 1(
IIPISr, 1/1:- J..'Ff.\1l I{ + I

Rcwrn

. IR 1:- M~m{A R I

PCf- ¡\(" m!:l H/ I


RFISn 1f..- RF{SrcJ j + I

FIGURA 9.8 Conti nuac ión.

trol. La Figura 9.9 muestra un esquema de un procesador completo basado en el


diagrama ASM de la Figura 9.8. Se ha obtenido añadiendo las conexiones nece-
sarias para ejecutar cada sentencia de asignación del diagrama ASM.
Para ello, se añaden buses de datos, direcciones, y control. El bus de datos se
utiliza para transferir datos entre la memoria y los registros del procesador.
Permite cargar datos de memoria en los registros IR. Pe. AR. DR, Y en el banco
de registros. Tam bién se uti li za para almacenar datos de PC o DR en memoria. La
dirección específica de memoria para almacenar o cargar un dato de memoria se
obtiene de PC o AR a través del bus de direcc ión. El bu s de control incluye las
señales para el control de la memoria. Obsérvese que en este diseño y en el dia-
El diseño del procesador 429

grama ASM de la Fi gura 9.8 se asume que la carga o el almacenamiento en


memoria sólo requiere un ciclo de reloj . Si el tiempo de acceso a memoria fu ese
más de un cic lo, el diagrama ASM se tiene que ajustar pero el di sei\o básico de la
Figura 9.9 no cambi ará. excepto en que se necesitarán dos o más ciclos de reloj
para almacenar en memori a datos desde DR o para cargar datos en DR desde
memori a.
Además de estos tres buses. también se añaden conex iones desde A LSU a los
registros Pe. A R. DR. Y al banco de reg istros. así como conex iones desde A LSU
al registro de bits de condi ción y desde el registro de bits de condi ción e IR a la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
lógica de control. que genera las señales de control para la operación de A LSU. y
para todos los registros . el banco de reg istros, y la memori a.

~ ¡
I * IRcg"tro,
de estado RF

!
~
~

Lógica
de contro l
Señales
~ dcconlrol
!
H SWtlfS ~ ALS U

IR I pe
r-I I AR
r-I I DR
!
I
1 1

Bus de dalos ~ \}
Ir'
Bus de di recciones
~.., I L, 1"

Mem
\1 Bus de con trol

Out

FIGURA 9.9 Esquema del procesador.

Obsérvese que la unidad de control que se muestra en el esquema posee un


registro de estado y una lógica de control y que puede implementarse utili zando
cualquiera de los esti los de control considerados en la Figura 7.34(a), (b), o (c) .
El esti lo más natural sería implementar e l reg istro de estado como un contador
430 Principios de diseño digital

módulo 11. donde 11 representa el máximo número de estados en cualquiera de los


caminos que pudiésemos seguir en el diagrama ASM. Para el procesador de 16
bits se puede ver a partir del diagrama ASM de la Figura 9.8. que no se necesitan
más de cuatro estados en ninguno de los caminos, incluyendo el estado para bus-
car la instrucción. Por tanto, podemos asumir que el reg istro de estado de la
Figura 9.9 sea un contador módulo 4, capaz de pasar al estado O desde los estados
1, 2, Y 3, según la instrucción que se esté ejecutando.
La lógica de control puede especificarse mediante una ex presión booleana en
forma de suma de productos para cada línea de control. Alternativamente , cada

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
una de las expresiones de control posee un término producto por cada estado y por
cada instrucc ión en la que esa línea de control particular está activa. Así, en cada
térm ino producto intervienen los bits que definen el tipo de instrucción. el código
de operación de la in strucción , y el estado del procesador. Puesto que la obtención
de las expresiones de control es directa, se ha dejado como ejercicio para el lec-
tor al final del capítulo.

9.6. REPERTORIO REDUCIDO DE INSTRUCCIONES


En la Sección 9.5 se ha diseñado un procesador con repeltorio complejo de ins-
trucc iones (CISC) , en el que las instrucciones necesitaban un número diferente de
palabras de memoria. y un número distinto de ciclos de reloj para su ejecución.
Para mejorar las prestaciones de dicho procesador, se podría utilizar una de las
sig uientes estrategias:
1. Una tecnología más rápida, que permitiera acortar el ciclo de reloj.
2. Un repertorio de instrucciones rediseñado. que hici era posible la segmen-
tación del ciclo de instrucción.
Como podría esperarse, la primera estrategia no encierra ningún cambi o con-
ceptual sino que só lo requi ere una lógica más reducida y un diseño físico más
compacto. La seg unda estrategia, sin embargo, preci sa que se redefina el ciclo de
ejec ución de instrucción. dividiendo el cicl o compl eto en una serie de etapas de
igual longitud y asegurándose de que cada instrucción pase a través de cada etapa
a la mi sma ve locidad para que se mantenga una secuencia ininterrumpida de in s-
trucc iones durante la ejecución del programa.
Al intentar dividir el ciclo de instrucción que se muestra en la Figura 9.3. se
observa que aunque consta de cinco etapas diferentes, ninguna de las instruccio-
nes de la Figura 9.5 neces ita que se calcule una dirección de memoria efectiva en
las operaciones con la ALSU. Concretamente, las instrucciones de memoria y con-
trol necesitan que se calcule una dirección de memoria efect iva, pero no indican
niguna operación en la ALSU con sus operandos. Por otra parte. ni las instruccio-
nes con registros, ni las de tipo mi sceláneo necesitan calcular una dirección efec-
ti va , aunque implican realizar una operación en la ALSU según indique su campo
de código de operación. A pal1ir de estas observaciones, tiene sentido combinar
el cálculo de la dirección efectiva y la operación en la ALSU en una única etapa.
El di seño del procesador 431

Es más, si ambas comparten la mi sma etapa, se puede uti lizar la misma ALSU
para realizar las dos tareas, Como puede verse en la Figura 9,1 Ora), al combinar
estas dos tareas en una, se obtiene un ciclo de ejecución de instrucción que puede
ejecutarse fácilmente en un camino de datos segmentado con cuatro etapas,

+
Buscar
Instrucción

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Bu .~car opcr:mdol>
o direcciones

¡
Ejecutar operaciones o
calcular direcC ión efectiva

¡
Almacenar
rcsuhado

I
(a) Ciclo de cjccuci6n de inslmcción

Ciclo
de reloj o 2 3 4 5

Clptar
/, /, /, /, /, /,
instrucción

Capl:lr
operandos o /, /, /, /, /,
direcciones

Ejcculm
operac ión
o calcu lar /, /, / , /,
dirección
efectiva

A lmace nar
resultado /, /, / ,
(b) Ejecución segmentada

FIGURA 9.10 Ciclo de repertorio reducido de instrucciones.

Esta ejecución segmentada se muestra en la Figura 9-1 O(b), en la que cada fila
representa una etapa de la segmentación y cada columna corresponde a un ciclo
de reloj . Se ve que cada instrucción necesita cuatro ciclos de reloj para ejccutar-
432 Principios de diseño digital

se. Por ejemplo, la instrucci ón I I se bu sca de memoria en el ciclo 0, en el ciclo 1


se busca un operando o una dirección, el cálculo de una dirccción efecti va o una
operación con un operando se reali za e n el ciclo 2, y el res ultado se almace na en
el ciclo 3. La instrucción 1, sigue la mi sma secuencia con un retardo de un cicl o
de reloj , y de igual fo nna ¡as instrucciones 1)" 14' Y siguientes. Puesto que se eje-
c utan c uatro instrucciones concurrentemente en las cuatro etapas distintas del
ciclo de instrucc ión segmentado, podemos esperar que las prestaciones de esta
seg mentación de cuatro etapas se incrementen en un factor de cuatro. si se asume
que se puede iniciar una instrucción en cada ciclo de reloj. Por otra parte, cuando

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
una instrucc ión neces ita datos que son generados por la instrucc ión previa. hay
que retardar tres ciclos de reloj el comienzo de dicha instrucción, hasta que el dato
que neces ita esté almacenado en memoria. Esta interrupción en la ejecución seg-
mentada recibe el nombre de detención (pipelin e s/(/II). Para minimi zar el núme-
ro de detenciones, se pueden reordcnar las instrucciones de manera que ninguna
instrucc ión neces ite datos generados por las tres in strucciones prev ias. Cuando
esto no es posible, se deben insertar instrucciones no-op (no operar) en la secuen-
cia de instrucc iones para asegurar el funcionamiento correcto.
Para usar la ej ecución segmentada de in strucc iones. es necesario además redi-
señar e l repertorio de instrucciones de forma que todas las instrucciones sean
similares y cada instrucción consuma un tiempo aproximadamente igual en cada
etapa. En otras palabras. tenemos que garanti zar que cada instrucci ón contenga el
mi smo número y tipo de campos. Sin embargo, para sati sfacer este requi sito se
nece sita ampliar el tamaño de palabra del procesador a 32 o más bits y limitar los
modos de di.reccionamiento. utilizando sólo los modos inmediato y relati vo, que
utili zan menos bits de la palabra de instrucc ión que los modos de direcci ona-
miento directos o indirectos. Además, recuérdese que el modo de direcciona-
miento indirecto viola automáticamente el segundo requisito, es decir, que todas
las instrucciones consuman el mi smo tiempo en cada etapa . Por estas razones , los
demás modos de direccionamiento deben implementarse med iante una secuencia
de las instrucciones disponibles . En el siguiente ejemplo. se muestra el diseño de
este repertorio reducido de instruccio nes.

EJEMPLO 9.5 Repertorio reducido de instrucciones


PROBLEMA
Diseñar un repertorio reducido de instrucciones para un procesador de 32 bits que milice el
ciclo de ejecución de instrucción segmentado de la Figura 9. 10.
SOLUCIÓN
Para utilizar instrucciones de 32 bits en lugar de las de 16 bits. se puede ampliar el forma-
to de 16 bits presentado en la Figura 9.5 con un campo de desplazamiento de 16 bits que
además puede con tener un operando inmedi,Ho en las instrucciones con registros_ En la
F igura 9. 11 se ilustra esta am pliación . Así. cada ins tru cción tiene dos panes de 16 bit s.
Como pu ede verse. los 16 bits menos significati vos con tienen la constante que se utili za rá
como operando o como desplazamiento para una dirección. y los 16 bits más significati vos
contienen un campo de tipo de instrucción de dos bits, cinco bits para el cód igo de opera-
El diseño del procesador 433

ción, tres bits para la dirección del registro destino del resultado (Des/), y dos campos de
tres bi ts cada uno para las direcciones de los registros utili zados por los operandos (5n' / y
5rc2).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 O
(:1) [nstrucc:i nl1cs con registros: O"
aritmé ti cas. Denominación Acción
lógic,.s.
OP De.n. SrLI. Sn<! R F(J)t:~'I) f - R FJSrcl/ Op RFISrf'21
de transferen cia .
OP Dest. Sil.' l . C(Jn.~tallli' RF(De,'fI) +- RFlSrcl1 Op COI/SlmUI'
y de t1csplul.amicn lo

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
MCJI't! De:,.I, Srd RF(OnlJ f-- RFtSn' IJ
Slrifl DI'J/, Srt'I. CmlJ/f/flte RF(D eSI} f- RFfSrt'l1 (/¡'SI'!(/ :'dr C (m,I'Wllle

31 30 29 28 27 26 25 24 23 22 2 1 20 19 18 17 16 15 O
(b) Instnlcl'ionc,) con memoria: O"
load (cargar) Denominación Acción
y slorc (uhn nccnar)
Lillll/lU Oes1 RF(nt!~·1J(31 . . 16) f- lJesJlI//:Jllllief1fo
L ill/IIIL Dest RFrDI.',fr)( 15 .. 0) f - De.\1J1a:wl/ien/o
L n." 0".1'1. Src2, De,\'p/a:lIl11;ento RI"(De~'I) f-- M em(RF(Src.:2/ + DCSf1/tl<.1I", iell/o]
S 1'1'/ Slrl, 51'('2, O e,lplll ;'lIlII;ellfo Mt'luIRFISn'2j + Dl'sp/a:amiemo/ f- RF/5rclj

3 1 30 29 28 }7 26 25 24 23 22 2 1 20 19 18 17 16 15 O
(e) InslllIt'cioncs de contro l: Tipo I O" Des' Src l 5rc2 IDcsplllzumienlll !
j ump (sultur), y Denominación Acción
brand, (slll to condicional )
JI/mI' DeJ1}/a:::amielllo pe pe + DtWl/tI:allliell/o
f--

JI/IIII' Src2, De.~l'la:::(/m ienfO pe f- RFfSrc2J + De.~/}/a:::lImit.'1I1fJ


JJrd Srr:2, Dejpla:ami~",()
PC f- pe + I
[ IJC f-
:¡; RFJSrc l , n'¡ RFJSrc:!1
PC + Desl,llI:;amil'/I(o si RFfSI'dJ 1111 re! RF/Sn'll
J
3 1 30 29 28 27 26 25 24 23 22 2 t 20 19 18 17 16 15 O
(d) lnstml.'dol1cs misce láneas: O"
Il(l·op. DCllominad6n Acción
d eut.
Na-o!, No hacer I/(u/(I
sel.
CI('(/rDe.I'1 RF/Desll f- O
y rescl
5s/(1I UNf 51Ofll.l'I Df'.\'11 ~ I
R.~I(If Dl'Sf SImas! /Je,f/ I f - ()

FIGURA 9.11 Repertorio reducido de instrucciones.

Obsérvese que este repertorio de instrucciones tiene los mismos cuatro tipos de ins-
trucciones que el repertorio CISC de hl Figura 9.5 . Las instrucciones con registros que
muestra la Figura 9, 11 (a) realizan di versas operaciones con los operandos almace nados en
alguno de los ocho registros del banco de registros y después devuel ven el resultado a otro
registro del mismo fi chero. Cualquier instrucción puede utilizar el valor del campo de cons-
tante como uno de los operandos.
Las instrucciones de memoria. que se muestran en la Figura 9. 11 (b), cargan datos de
memoria en el banco de registros, y almacenan datos de los registros en memoria, En este
repertorio de instrucciones, el modo de direcc ionamiento principal es el relati vo donde la
434 Principios de di seño digital

dirección de base se encuentra en e l registro c uya dirección se indica en el campo Src2, y


el desplazamiento está contenido en el campo de Despla;:ml/iento (campo de Offset). Puesto
que este campo de Despla:.omiento sólo tiene 16 bits. es posible direccionar 64k posiciones
de memoria en torn o a la dirección de base. Cuando se necesite cambiar la ba~e, hay que
utilizar dos instrucciones de carga (load) distintas para almacenar los 16 bits superiores e
inferiores de la nueva base en uno de los registros del banco de registros. Concretamente,
se utiliza la in strucción LimmU para cargar e l valor de su campo de Despla:amiell1o en los
16 bits superiores del registro indicado por el campo Dest. y la instrucción LillllllL para car-
gar los 16 bits inferiores de dicho registro.
Las instruccione s de control se presentan en la Figura 9 .11 (e) , que mue stra las instru c-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ciones de salto condicionaJ e incondicional. Las instrucciones de salto incondicional (jllll/p)
pueden transferir el control a una posición relati va al contador de programa PC o bien a una
posición indicada en el campo Src2. De igual forma , las instrucciones de salto condicional
(bra1lch) pueden tran sferir el control a una posición relati va al pe. En realidad. hay seis in s-
trucciones de salto condicional diferentes: Beq. Bgre. Bgoeq. Bless. Bloeq. y BI/er¡, que se
denominan Brel en la figura. Cada instru cción de salto condicional compara los valores de
los registros indicados en los campos SrcJ y Src2 y de spués. si se verifica la relación espe-
cificada, da lugar al salto a la dirección de memoria que se obtiene añadiendo el va lor alma-
cenado en el campo de Despla:amielllo al valor del PC. En cambio , si la relación no se ve ri -
fica, el procesador ejecu ta la instrucción siguiente. Como antes. las in stru cciones de tipo
miscelánea, mostradas en la Figura 9.11 (d). se utilizan para inicializar los distintos registros
y realizar ciertas funcione s específicas.

9.7. DISEÑO RISC


En general, el flujo de diseño de un procesador con repertorio reducido de ins-
tnlcciones (RISC) se corresponde con el presentado e n la Figura 9.4, siendo la
diferencia primordial el hecho de que, en este caso, el camino de datos y la uni-
dad de control están segmentados. Sin embargo, al utilizar esta técnica de seg-
mentación se introducen los siguientes cambios en la arquitectura del procesador:
1. Separación de las memorias de instrucciones y datos.
2, Se añade un registro de control en cada etapa, en lugar de una única uni-
dad de control.
3. Vaciado de la segmentación (p ipeline .f7ushillg) en las instrucciones de
control.
La separación de las memorias para instrucciones y para datos es necesaria
para mantener lleno el cauce segmentado de forma que se ejecute una instrucción
por ciclo. Es decir, el procesador debe poder captar una instrucción por cada ciclo
de reloj. Sin embargo, puesto que algunas de estas in strucciones tambi én neces i-
tarán acceder a la memoria para cargar o almacenar datos, hay que separar las
memorias de datos y de instrucciones para permitir que se puedan captar concu-
rrentemente instrucciones y datos.
La incorporación de un registro de control en cada etapa es una consecuencia
natural de la ejecución segmentada de instrucciones. simplemente porque en un
El diseño del procesador 435

ciclo segmentado, cada etapa ejecuta una instrucción distinta , de forma que hay
que dividir la unidad de control en cuatro unidades de control. Cada unidad de
con trol tiene sólo un estado en el que se recibe una instrucción decodificada, o una
parte. desde la etapa anterior, y utiliza una parte de la instrucción proporcionada
para controlar la ejecución de su propia etapa. y pasa la parte no utilizada a la uni-
dad de control de la siguiente etapa. En otras palabras, la unidad de control se
redu ce a una serie de regi stros de control y a una pequefía lógica de decodifica-
ción en la segunda etapa .
El último cambio en la estructura del procesador es consecuencia de la seg-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mentaci ón. Siempre que aparezca una instrucci ón de ramificación, el procesador
debe esperar varios ciclos de reloj para determinar donde saltar. Por tanto, no se
debe iniciar la ejecución de in strucciones durante estos ciclos de reloj . o si ya se
ha iniciado la ejecución de alguna deben descartarse en el caso de que se produz-
ca el sa lto. Este proceso. llamado detención de la segmentación (pipeline sta-
IIillg), se explica con más detalle en las secciones siguientes.

EJEMPLO 9.6 Diseño de un procesador RISC


PROBLEMA
Diseñar un procesador de 32 bits para el repertorio de instrucciones de la figura 9. 11 .
SOLUCiÓN
Pan} reso lver este proble ma se sigue e l mi smo procedimi ento de di seño que antes,
comenzando por construir un diagrama de flujo . asignando los recursos del camino de
datos. y obten iendo el diagrama ASM de l procesador. Se omiten estos pasos puesto que
son mu y similares a los de.scritos para el procesador de 16 bits que se presentó anterior-
me nte. La única diferencia signifi cati vu aparece en el diagrama ASM , en e l que en este
caso. cada instrucc ión consum e exactamente cuatro ciclos de reloj para ejecutarse. A
partir de este diagrama ASM revi sado se puede obtener e l esquema de l procesador RISC
de la Figura 9. 1'2. en la que las conexione. indicadas Con líneas de puntos se discuten en
la Sección 9.8 .
En este esquema puede ve rse que este procesador de 32 bits ti ene un registro IR. un pe,
un AR. un DR. un registro de bits de condición. Sta/liS. y un registro RF como el procesa-
dor de 16 bits. Si n embargo. a dife rencia del procesador de 16 bits. tiene también una
memoria para instrucciones y otra para datos. También se han añadido dos registros. A y 8.
que almacenarán los operandos después de que se haya n leído del banco de registros y antes
de que se introduzcan en la ALSU. Este procesador tiene además un registro de control , un
registro de destino. y un registro de desplazamiento entre la segunda y la tercera. y entre la
tercera y cuarta etapas de la scgel11entación, Estos registros adicionales contienen la direc-
ción uel registro de destino, el desp lazam iento para el cálculo de la dirección eCect iva, y Jos
valores de las setiales de cOlllrol para la tercera y la cuarta ctapas del cauce.
El procesador de la Figura 9. 12 ejecuta cada insltucción en cuatro pasos. que corres-
ponuen a las cuatro ctapas de la segmentación. Cada etapa toma los datos de un conjunto
de registros y proporciona sus resultados en e l conjunto de registros siguiente. En esta tigu-
ra. e l (los) registro(s) de entrada a cada etapa se identifí ca(n) mediante su número de elapa
en la parte inferi or derecha de l símbolo de registro. Siguiendo estos indicadores de etapa.
se puede ver que en la primera etapa, el conlenido de pe se utili za como dirección para la
436 Principios de diseño digital

memoria de instru cciones. y después se almacena una nueva instrucción en IR. El conteni-
do de pe también se incrementa en esta etapa.
En la segunda etapa. la instrucción contenida en IR es primero decodificada por la lógi-
ca de decodificación y luego se buscan sus dos operandos desde RF y se almacenan en los
registros A y B. Además. los valores de los campos de instrucción Desf y D espla-:,allZieHlo
se copian en el registro de Destino y en el registro de Desplazamiento para su uso posterior.
Igualmente, la parte decodificada del código de operación que se utilizará para el control de
las etapas tercera y cuarta de la segmentación se almacena en el registro de Control.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Lógica
do RF
decodificac ión

... .. ... .. .....


¡ r ! t
I deRCg¡Slrú,I JI Registro de,jl Registro de. ) JI
IR control¡ destino 1 desplazamiento , A ,11 B ,
1 .1

i t .j.

~ rl
Me moria
Selector I
do
¡
in ~l ruccioncs
ALSU

I .... ....
1 1 Sl'lcclur I
pe ,1
11 Registro de,J I
desplazamiento 4
IJI
Reg istro
de control.,
Registro deJ
des tino .,
Status , 1 AH , DH
J
1
t ,..-J Selector
¡
Selector
1
'-

~
.Vlcmuria
+ L. 1.1c- dato ~
L::r
I

FIGURA 9. 12 Esquema RI SC.

La tercera etapa de la segmentación realiza diversas operaciones según los di~t i n tos tipos
de instrucción. En el caso de operaciones con regi stros. por ejemplo. realiza la operación
especificada en el codop. utilizando los operandos almacenados en los registros A y B. Y
almacena des pués el resultado en DR. En el caso de operaciones de memoria, la tercera etapa
suma el valor de base almacenado en el registro B al valor de l registro de Desplazamiento y
almacena la dirección efectiva en AR. Además, si la instrucción de memoria es una instruc-
ción de almacenamjento, esta etapa transfiere el dato a ser almace nado desde e l registro A al
DR. En el caso de una instrucción de control, la tercera etapa resta la constante 3 del valor
de desplazamiento puesto que el contenido de pe se habrá incrementado tres veces antes de
que la instrucción de salto se haya procesado en la cuarta etapa del cauce.
El diseño del procesador 437

Finalmente. la cuarta etapa de la segmentación, o bien lee el dato de la memoria de datos


y lo guarda en el registro de RF cuya dirección está en el registro de Dest ino. o bien alma-
cena el dalo de DR en la memoria de datos. Al mi smo tiempo. la cuarta etapa también cal-
cu la las di recc iones de salto. sumando los valores de PC y de l registro de Des plazamiento.
Además. esta etapa inc rementa PC y lo carga con la dirección de salto. según sea el valor
de l bit corres pondiente en el registro de bits de condición. El bit de condic ión en cuestión
se detemlina a través de un selec tor que está controlado por el va lor del registro de control,
que se obtu vo inicialmente a partir de l código de operación de la instrucción.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Para mostrar el funcionamiento de este procesador RISC, se describe su fun-
cionami ento ciclo a cicl o con una secuencia de tres instrucc iones:
x=a+/)
y= h +c
:=c+d
La Fi gura 9.l3(a) proporciona las instrucciones en ensamblador para el pro-
grama anterior. Para simplificar se han utilizado los símbolos a, /J, c, d. x. y. z.
base . y off para indicar las direcciones correspondientes. En la Figura 9.l3(b) se
da un diagrama de ciclos de reloj en el que horizontalmente aparecen las cuatro
etapas de la segmentación. y verticalmente un conjunto de ciclos de reloj o esta-
dos. En este esq uema cada línea vertical indica el flanco de subida de la señal de
reloj. que origina la carga de datos en los registros del procesador y del banco de
registros. Cada fi la del diagrama indica el registro o el valor de memoria que se
escribe al final del ciclo de reloj correspondiente y que estará disponible en el
ciclo de reloj siguiente.
Como puede verse. este diagrama de tiempos comienza con cuatro instruccio-
nes Load, que cargan los valores a. b, c. y d en el banco de registros. Obsérvese
que los valores a, b. c. y destarán disponibles para su lectura cuatro ciclos de reloj
después de que sus direcciones de instrucción se hayan cargado en pe, es decir,
en los ciclos de reloj 4, 5, 6, Y 7, respectivamente. En los ciclos de reloj 4, 5, Y6,
el procesador accede a las instrucciones aritméticas que almacenarán los resulta-
dos x. y. y : en RF cuatro ciclos de reloj después. Por último, el procesador acce-
de a tres instrucciones Srore para almacenar en memoria los valores x . y. y z. Así,
el valor de z estará disponible 13 ciclos de reloj después de que la instrucción
almacenada en la dirección 100 se cargara en pe.
A partir de este diagrama de tiempos. puede verse como un procesador seg-
mentado, que ejecute cuatro instrucciones concurrentemente, puede conseguir
unas prestaciones que son casi cuatro veces las prestaciones de un procesador que
ejecute las instrucciones secuencialmente, incluso aunque cada instrucción siga
necesitando cuatro ciclos de reloj. En general, este procesador necesitará 1/+3
ciclos para ejecutar 11 instrucciones, en comparación con los 4n ciclos que necesi-
taría si se ejecutaran secuencialmente. Obsérvese, no obstante, que en el cálculo
anterior se ha asumido que ninguna instrucción utiliza los resu ltados de las pre-
cedentes. Cuando esto no se verifica, las prestaciones del procesador se reducirán,
como se muestra en la siguiente sección.
438 Principios de diseño digita l

DIRECCIÓN INSTRUCCIÓN

100 Load a, base, off


101 Load!J, base. off
102 Load e, base. off
103 Load ti. base. off
104 Add x. a. b
105 Sub y, b. e
106 Add z. c. ti
107 Store x. base. off

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
108 Store y. base. off
109 Store z. base. off
110

(a) Progro.l ol:l en lenguaje cn~¡lIll b l ad or

rcnoDERBAJ O 1 2 3 4 5 6 7 8 9 10 11 12 13

Leer PC lOO 101 102 103 104 105 106 107 108 109 11 0
Escribir en IR Load Load Load Load Add Sub Add Srore Srore Store
Escribir en A a b e x y --
Escribir en B base base base base b e d base base base
Escribir en AR base base base base base base base
+ offi +offib +offc +offd +offx +offy +offz
Escribir en DR (I + b b-c c + d x y :
Escribir en RF a b e d x y :
Escribir en Mem x -" z
Escribir en PC 101 102 103 104 105 106 107 108 109 110 111 11 2 11 3 11 4
(b ) Diagrama dc tfe mpos

FIGURA 9. 13 Operación RISC ciclo a ciclo,

9.8. AVANCE DE DATOS


En las secciones anteriores hemos diseñado un procesador RISC y se ha mostra-
do la ejecución segmentada de un pequeño programa. No obstante, es importante
destacar que ese programa no tenía ninguna dependencia de datos ni de control,
ya que las prestaciones del procesador son di stintas si no se da esta situación.
Concretamente, un dependencia de datos se produce siem pre que una instruc-
ción genera un valor que es utilizado por alguna de las insu'ucc iones siguientes.
En el caso de nuestro procesador RIS C, este tipo de dependencia de datos entre
una instrucción y alguna de las dos instrucciones anteriores impide que el proce-
sador obtenga los resultados correctos, puesto que el dato adecuado no está dis-
ponible en el momento en que se precisa. En otras palabras, no se pueden ejecu-
tar estas instrucc iones dependientes una tras otra, tal como se ha indicado, puesto
El diseño del procesador 439

que el dato necesario no puede devolverse al RF a tiempo para que pueda ser leído
por la siguiente instrucción dependiente.
En estos casos el problema puede solucionarse retrasando la instrucción
dependiente durante uno o dos ciclos de reloj insertando instrucciones No-op en
la sec uencia de instrucciones. Estas instrucciones No -op pueden ser introducidas
por el compilador en el momento de la compi lación o bien ser la unidad de con-
tro l la que detenga la ejecución de instrucciones el tiempo necesario tras detectar
una dependencia de datos entre dos instrucciones. Considérese, por ejemplo,
como podría actuarse frente a una dependencia de datos en el pequeño programa

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
que calcula la suma de tres variables a. b. y e, utilizando el registro lemp de RF
como almacenamiento temporal, y guardando después el resultado en la variable
10lal:

lemp = a + b
= lemp + e
10 /(11

En la Figura 9. 14(a) se muestra el programa en ensamblador para este cálcu-


lo. Obsérvese que se ha insertado una instrucción No-ap después de la tercera ins-
trucc ión porque el valor b no puede obtenerse desde RF hasta dos instrucciones
después. Igualmente, también se han insertado dos instrucciones No-op después
de cada instrucción Add. puesto que los valores de lemp y 10101 no estarán di spo-
nibles durante dos ciclos de reloj.
La pérdida de prestaciones ocasionada por estas instrucciones No-op se pone
claramente de manifiesto en el diagrama de la Figura 9.14(b). Según este diagra-
ma. se buscan tres instrucciones L oad en los tres primeros ciclos de reloj. No obs-
tante, puesto que el valor b no se escribe en RF hasta el final del ciclo de reloj 4.
no puede leerse desde RF hasta el ciclo de reloj 5. Por eso se inserta una instruc-
ción No-op , que comienza en el ciclo 3. Igualmente, los valores de lemp y 10101 se
escriben en RF al final de los ciclos 7 y 10, respectivamente. Por tanto, hay que
insertar dos instrucciones No-op después de cada una de las instrucciones Add,
para que el procesador espere a que los valores de lemp y tOlal estén disponibles
en los ciclos 8 y 11 , respectivamente. Teniendo todo esto en cuenta, el diagrama
indica que serán necesarios un total de lI instrucciones y 14 ciclos de reloj para
sumar a, b. y c. Sin embargo. puesto que cinco (o el 45 %) de estas II instruccio-
nes son No-op, queda claro que las dependencias de datos han reducido sustan-
cialemte las prestaciones del procesador segmentado. Es posible mejorar las pres-
taciones si se reordenan las instrucciones de fonna que se evite la introducción de
instrucciones No-op en la medida de lo posible. Es decir, se insertan otras ins-
trucciones independientes en lugar de las instrucciones No-op.
Para aumentar las prestaciones del procesador se pueden introducir en el pro-
cesador caminos para el avance de datos (dala f orwarding ), pennitiendo que el
dato avance una o más etapas de la segmentación y «salte» hacia una etapa futu-
ra. Por ejemplo, en la Figura 9.12, el primero de estos caminos (indicado median-
te líneas de puntos) proporciona el dato directamente desde la salida de ALSU al
registro A, acortando en dos etapas la transferencia de datos: la etapa que trans-
fiere el dato desde DR a RF, y la que lo transfiere desde RF al registro A
440 Principios de diseño digital

Uti lizando este camino, se asegura que el resultado generado por una instrucción
pueda ser usado por la siguiente. El segundo camino transfiere datos directamen-
te desde DR o desde la memoria de datos al registro B, evitando la etapa que escri-
be los datos en RF, desde donde se transferían al registro B. Utilizando este cami -
no, se consigue que el dato generado por una instrucción pueda ser utilizado dos
instrucciones más tarde.

lllRECCION INSIRUCCIÓN

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
100 Load a, base, offa
10 1 Load b. base, offb
102 Load e, base, offe
103 No-op
104 Add sum , a. b
105 No-op
106 No-op
107 Add total. c, swn
108 No-op
109 No-op
110 Store total, base. offl
(a) Programa en lenguaje ensamblador

I CIClODER8.W O 1 2 3 4 5 6 7 8 9 10 11 12 13 •
Leer PC 100 101 102 103 104 lOS 106 107 108 109 110
Escribir en IR Load Load Load ~/HfJ Add N/HfJ NINJl1 Add NlHJp No-op Slore
Escribir en A a temp toral
Escribir en B base base base b e base
Escribir en AR base base base base
+ offi +offib +offc +offi
Escribir en DR a+b temp+c rota!
Escribir en RF a b e temp lotal
Escribir en Mem toral
Escribir en PC 101 102 103 104 105 106 107 108 109 110 111 1I2 113 114

(b) Diagrama de tiempos

FIGURA 9. 14 Ejecución de instrucciones con dependencia de datos.

Volvamos al ejemplo del programa que calculaba la suma de (J. b. Y e para


mostrar la utilidad de la técnica de avance de datos. Como se muestra en la Figura
9. l 5(a), el programa en ensamblador correspondiente consta ahora de sólo se is
instrucciones sin ninguna instrucción No -op adicional que haga el programa más
extenso. En la figura puede verse que las tres primeras instrucciones cargan {J. b.
Y e en el banco de registros RF igual que antes. Sin embargo, en el ciclo de reloj
4 , el valor de b se carga concurrentemente en RF y en el regi stro B a través de UI1
El diseño del procesador 441

segundo camino de avance. De igual manera, en el ciclo de reloj 5, se utilizan


ambos caminos de avance de forma que e se carga en RF y en el regi stro B (a tra-
vés del seg undo camino de avance), y a + b se carga en DR y en el registro A (a
través de l primer camino de avance) . A continuación, en el ciclo de reloj 6, el
valor a + b se almacena en el registro que contiene la variable temp, mientras que
lemp se suma a la variable e en ALSU y el resultado se almacena en DR y en el
registro A En el ciclo de reloj 7, el valor temp + e se almacena en RF y, al mismo
tiempo, se transfiere desde el registro A al DR . Después, en el siguiente ciclo de
reloj , este va lor se almacena fina lmente en la memoria de datos, en la dirección

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
asignada a la variable 101al.

DIRECCIÓN lNSlIIUCCtON
100 Load a, base, off
101 Load b, base, off
102 Load e, base, off
103 Add sum, a, b
104 Add total , C, Sl/m
105 Store total, base, off
(a) Programa en lenguaje ensamblador

I CIClO DE RB.OO O 1 2 3 4 5 6 7 B
Leer PC 100 101 102 103 104 105
Escribir en /R Lood Lood Load Add Add StO(('

Escribir en A a a+b Itmp+c


Escribir en B base base base b e base
Escribir en AR base base base base
+ off +off +off +off
Escribir en DR a+b Itmp+c lemp+c
Escribir en Status
Escribir en RF a b e temp umptc
Escribir en Mem total
Escribir en PC 101 102 103 104 105 106 107 108 109
(b) Diagrama de tiempos

F/GURA 9.15 Funcionamiento del procesador RISC con avance de datos.

Como puede verse a partir de este ejemplo, el avance de datos permite que el
procesador segementado funcione a pleno rendimiento, eliminando la necesidad
de insertar instrucciones No-op que retrasan las instrucc iones con dependencias
de datos. El avance de datos se uti liza de una u otra forma en todos los procesa-
dores comerciales actuales.
442 Princi pios de diseño digital

9.9. PREDICCiÓN DE SALTO


En general. utilizando avance de datos es posible usar con éx ito la segmentac ión
con todas las instrucc iones excepto con las de control. Cuando se ut ili zan ins-
trucciones de control tales como instrucc iones de salto condicional , el procesador
no puede determinar la dirección de la siguiente instrucc ión hasta la cuarta etapa
de la segmentación, donde se toma la decisión de si se produce el salto o no. De
igual forma. siempre que se utilicen instrucciones de salto incondicional (J Ulllp) .
también se necesitarán cuatro ciclos de reloj para cargar pe con una nueva direc-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
ción. En ambos casos. es prec iso insertar tres instrucc iones No-op después de cada
instrucc ión de control.
La necesidad de insertar estas instrucc iones se ilustra en la Figura 9. 16, que
presenta los diagramas de tiempo para un programa que calcula el tmíximo y el
mínimo de dos valores almacenados en las variabl es a y b. En la Figura 9. 16(3)
puede verse el programa en ensambl ador, que compara a y b. Y si a es mayor o
igual que b, hará lila.\" = a y min = b: yen caso contrario hará lila.\" = b Y mili = a.
Puesto que este procesador no puede determinar la dirección de la instrucc ión
siguiente hasta pasados tres cicl os de reloj , hay que insertar tres instrucc iones No-
op después de la instrucc ión de salto condicional. Bgoeq. Igualmente. se han
insertado tres instrucc iones No-op más después de la instrucc ión .IUlIlp de la posi-
ción 106. La Figura 9. 16(b) muestra el diagrama de ti empos correspondiente a la
ejecución de l programa cuando no se produce el salto, y la Fi gura 9. 16(c) mues-
tra lo que ocurre cuando se produce el salto.
Considérese el primer caso, en el que no se produce el sa lto cuando el proce-
sador ejecuta Bgoeq seguida de tres instrucciones No-oiJ. Como puede verse,
hasta el ciclo de reloj 3 el procesador no determina que el salto no se va a produ-
cir_momento en el que carga la dirección 104 en pe. A continuación se ejecutan

DIRECCIÓN INSlRUCCIÓN

100 Bgoeq a.b, +lO


10 1 No-op
102 No-op
103 No-op
104 M ove mo.,,", b
JOS MOlle min, a
106 J/lmp +6
107 No-al'
108 No-o!,
109 No-op
110 M ove ma-r, a
111 Move mitl. b
11 2

(a) Programa en lenguaje ensamblador

FIGURA 9.16 Funcionamiento del procesador RI SC con salto simple.


El di seño del procesador 443

CICLO DE RELOJ O 1 2 3 4 5 6 7 8 9 10

Leer pe lOO 101 102 103 104 105 106 J07 J08 109 11 2
Escribir en IR Bgoeq No-op No-op No-op More Mon' lump No-op No-op No-op
Escribir en A a b a
Escribir en B b
Escribir en AR
Escribir en DR b (/

Escribir en Stat/ls a"i!b

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Esc ribir en RF n/ax mili
Escribir en Mem
Escribir en pe 101 102 103 104 105 106 107 108 109 112
(b) Diagrama de liempos cuando no se produce el !>alIO

CICLO DE RELOJ O 1 2 3 4 5 6 7 8 9 10

Leer pe lOO 101 102 103 110 11 1 11 2


Escribir en IR Bgoeq No-op NO-IJp No-op Move Move
Escribir en A a a b
Escribir en B b
Escribir en AR
Escribir en DR a b
Escribir en Stal/ls a?b
Escribir en RF max 1II/n
Escribir en Mem
Escribir en pe 101 102 103 110 111 112
(e) Diagnlma de tiempos cuando se produce el salto

FIGURA 9_16 Continuación.

dos instrucciones M alle y una instrucción JI/mp _ Como en la inslrucción de salto


cond ic ional, la instrucc ión Jump también viene seguida por tres instrucc iones No-
op, puesto que el instante más próximo en el que el procesador puede cargar la
dirección de salto Il 2 es el ciclo de reloj 9. Luego, en este caso, se neces itan 10
ciclos de reloj para realizar el cálculo completo puesto que el procesador debe eje-
cutar se is instrucciones No-op .
Cuando el salto es efectivo , el procesador ejecuta la instrucción Bgoeq, que
viene seguida por tres instrucc iones No-op_ Después, en el cicl o de reloj 3, el pro-
cesador puede cargar la direcc ión de salto en pe y ejec utar las dos instrucc iones
Mol'C y el resto del programa. Como en el caso precedente en e l que no se pro-
ducía el salto, el procesador ejecuta seis instrucciones, incluyendo las tres ins-
trucciones No-op. Si se asume que hay igual probabilidad de que se produzca el
salto y de que no, el procesador ejecuta el programa precedente en una media de
ocho ciclos de reloj.
446 Principios de diseño digital

9.10. RESUMEN DEL CAPíTULO


En este capítulo se han aplicado las técnicas para la síntes is a ni ve l de transferen-
cias entre registros al diseño de procesadores de uso general definidos por su
repertorio de instrucciones. Para ello. se han considerado di stintos tipos de ins-
trucciones, con sus campos y modos de direccionamiento, y se ha mostrado la
estrecha relación ex istente entre el di seño del repertorio de instrucci ones y la
arqui tectura del procesador. También se ha descrito el fluj o de diseño de un pro-
cesador y se ha ilustrado mediante el diseño de un procesador CISC de 16 bits y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
un procesador RISC de 32 bits.
Para ell o. se han introducido los diagramas de tlujo IS y se ha most rado cómo
refinarlos para detenninar diagramas ASM a partir de los que obtener la arquitec-
tura del procesador. Finalmente, se han presentado los conceptos de avance de
datos y predicción de saltos, utilizado: en los procesadores actuales para mejorar
sus prestac iones.

9.11. lECTURAS ADICIONALES


Hayes. J. P. Compl/te/' A rchitectl/re al/d Orgalli:atioll. 2nd ed. New York : McGraw- Hill.
1988.
Buena revisión de la arq uitectura de computadoras. el procesamiento parulelo. y la
metodología de diseño.
He nnessy. J. L.. Y D . A . Pallerson. CompUler Orgal1i:afioll l/l1d Desigl1 : TIIt' 1-!lIr{hl'llrel
Software Imel.t ace. San Mateo, CA: Ma rgan Kaufm ann . 199.'.
Explicación detallada de l diseño de procesadores bas¡\do en la arquitcc tura MIPS.
escrita por los pioneros de la tecnolog ía RISC, con e xce lentes ex pli cacio nes de la s
razones que hay detrás de cada decisión de diseño.
H wang. K. A(!I'wlced C ompute,. Archileclllre: Paral'eli.'iIJl. Sco/a/)ilty. Programmahility.
New York: McGraw-Hill. 1993.
Una com pleta revisión de las arquitecturas avanzadas de computadoras y de sus apli-
cac iones.
Kain. R. Y. Computer ArchitcclUre: Software lIml Ha rdware . Vols. I and 11. Englewood
Cli ffs, NJ: Prentice Hall , 1989.
Propo rciona una excelente ex plicac ión de las re lac iones software/hardwarc e n e l dise-
ño de una computadora.
Katevenis, M. G. H. Redl/ced IlIst/'l/etioll Set Compl/te/' A/'i'lIitel'll//'e l o/' ."LSI. Baston :
M.I.T. Press, 1985.
Uno de los primeros libros donde se di scute la arquitectura y el diseño RI SC. Requiere
conocimientos de dise ño físico y de la tecnología VLSI.
Kogge. P. M. Tile A /'ciliteclII/'e of Pipelined Comp/lters. New York : McGraw-Hill. 1989.
Un excelente texto de introducción a la segmentación del cami no de dalos y ele control
hac iendo énfasis en los princ ipi os de la segmentac ión.
El di seño del procesador 447

9.12. PROBLEMAS
9.1. (Formatos de instrucc ión) Escriba teniendo el valor del dato y la segun -
una secuencia de instru cc iones que da con la dirección del siguiente e le-
pennila ca lcular el val or de y = x2 + mento de la li sta. Utili ce só lo instruc-
2r + J para un va lor de x dado utili- ciones de tres direcciones, con:
zando: (a) Direccionamiento directo
(a) Instrucc iones de tres direcciones (b) Direcc ionamiento indirecto
(b) Instrucciones de dos direcciones
9.6. (Modos de direccionamiento) Escriba

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(e) Instru cc iones de una direcc ión
la secuencia de in strucc iones para cal-
As uma que no hay banco de reg istros
en el procesador. tan sólo puede supo· cular L~:~a, x" do nde A=[a ).1I 2.... a)IXJ
ner la ex i$tencia de un único acumula- y X={.r ).x]. ....x)ool re pre~ent an vecto-
res almacenados en la memoria prin -
dor para la parte (e) . Indique e l núme·
cipal. Utili ce instrucciones de dos
ro de instrucc iones y de accesos a
direcciones, con:
memoria en cada caso.
(a) Direccionamiento directo
9.2. (Fo rmatos de instrucc ión) Resuelva el (b) Direccionamiento indirec to
problema 9.1 suponiendo que hay un (e) Direcc ionamiento indexado con
banco de registros. Tanto para las modo de autoincremento.
direcc iones del banco de reg istros
como para las de memori a utilice: 9.7. (Diseño del repe rt ori o de instruccio-
(a) Instru cciones de una dirección nes) Modifi que el repenorio de ins-
(b) Instrucc iones de dos direcciones tru cciones de la Figura 9.5 ampliando
(e) Instrucciones de tres direcciones el campo de dirección a 22 bits. Esto
M inimice el número de direcciones de puede conseguirse utilizando sólo una
memori a en cada caso. direcc ión del banco de registros en las
instr ucciones de memoria y control y
9.3. (Formatos de in strucc ión) Utili zando asumiendo que los seis bits más signi -
instru cc iones de tres direcciones , fi cati vos están en los campos 5/'c/ y
desarrolle la sec uenc ia de instruccio- Src2. Considere que e l registro RF(OJ
nes para leer y escribir: siempre contiene la base en el modo
(a) Una pila crec iente hac ia direc- de direcc ionamiento relativo.
ciones mayores.
(b) Una co la FIFO 9.8. (Diseño de l repert ori o de instrucc io-
(e) na pi la UFO nes) Asuma que RF(O) es el contador
de program a Pe. Muestre que las ins-
9.4. (Modos de direcc ionamiento) Escriba trucciones Call y RetuJ"n no son nece-
los procedimientos de lectura y escri - saria s al poder ser imp lementadas
tura en una cola FIFO. utilizando un mediante una secuencia de otras ins-
formato de dos direcc iones. con:
tru cciones .
(a) Direccionamiento directo
(b) Direcc ionamiento indirecto 9.9. (D iagrama de nujo IS ) Considere que
(e) Di recc ionamiento relativo pe se encuent ra en RF(O). Modi fique
en consecuencia el diagrama de fl ujo
9.5. (Modos de direcc ionamiento) Esc riba
IS de la Figura 9.6 y e l di ag rama ASM
los proce dimientos para borrar y aña-
mos trado en la Figura 9.8 .
dir elementos a una lista. Asuma que
cada elemento de la li sta utili za dos 9.10. (Repertori o de instrucc iones) Añada
palabras de memori a. la primera con- un registro de base específi co (BR ) al
448 Princ ipios de diseño digital

procesador de 16 hits de la Figura 9.15. (Diagrama de flujo IS) Obtenga el dia-


9.10 y muestre los cambios que se grama de tlujo IS pm'a el repertorio redu-
deben reali zar en el repert orio de ins- cido de insll1Icciones de la Figura 9. 11.
trucciones y en el esquema de l proce-
9.16. (Diagrama AS M) Obtenga e l diagra-
sador.
ma ASM para el repertorio reducido
9.11. (Recursos del procesador) Utilizando de instrucciones de la Figura 9. 11 .
el mismo procesador de 16 bits. indi-
9.17. (Procesador RISC) Escriba un progra-
que los cambios a re ali zar en el dia-
ma para e l procesador RIS C de la
grama ASM si se di spone de:
Figura 9.1 2 que calcule y =x2 + 2.r + .1

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(a) Un registro dc base específico
para un x dado. Asuma 3demás que la
(BR)
ALS U puede realizar la multiplica-
(b ) Un registro es pecífi co como
c ión en un ciclo de re loj. Obtenga el
puntero de pi la (SR)
diagrama de tiempos para este proce -
9.12. (Recursos del procesador) Utilizando sador utilizando como modelo el de la
e l mismo procesador de 16 bits. mues- Figura 9.13 .
tre los cambios que requiere el disgra-
9. 18. (Predicc ión de salto) Escriba un pro-
l11a ASM ~ i los accesos a memoria uti-
grama para e l procesador RIS C de la
lizan:
Figura 9.1 2 que calc ule e l valor abso-
(a) Dos c ic los de reloj
luto. Obtenga el diagrama de ti empos
(b) Tres ciclos de reloj
para es te procesador:
(e) Cuatro ciclos de re loj
(a) Sin predicción de saltos
9.13. (Repertorio reducido de instrucc io- (b) Con pred icc ión de saltos
nes) Utili za ndo el re pertori o reduc ido
9.19. (Avance de datos/predicción de salto)
de instruc ciones de la Figura 9 . 11 ,
Escrib a un prog rama en lenguaje
proponga los cambios que le permit i-
ensamblador para un procesador
rían utili zar un ban co de registros
RI SC que calcu le la aprox imac ión de
con:
la raíz cuadrad a (presentada en el
(a ) 16 registros
Capítulo 8):
(b) 32 registros
(a ) Sin avance de datos ni pred ic-
(e) 64 registros
ción de saltos.
(d ) 256 regi stros
(b) Con avance de datos pero si n
9.14. (Repertorio reduc ido de instruccio- predic¡;ión de saltos.
nes) Indique los camhios a reali za r en (e) Sin avance de datos pero con
el repe rtori o de instrucciones de la predicc ión de saltos.
Fig ura 9. 11 para inc rementar e l (d) Con avance de datos y predic-
campo de des plazamiento. ción de sal tfJs.
Apéndice:
Prácticas
de laboratorio

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
En los capítulos anteriores mostramos cómo diseñar circuitos di gitales a nive l de'
puerta. registro y procesador. Después de acabar el diseño en cualquiera de estos
nivel es, debemos asegurarnos de que los circuitos diseñados se comportan como
se pretende , además de satisfacer las restricciones impuestas por algunos paráme-
tros de calidad. Como hemos mencionado antes, los parámetros de calidad más
conocidos son el coste, las prestaciones (la velocidad) y el consumo de energía.
El coste se puede medir mediante el número de transistores, puertas, registros
o procesadores usados en el diseño. Una medida alternativa del coste es el área
de l mi crochip o de la tarjeta de circuito impreso usada para albergar estos com-
ponentes. El coste total se obtiene sumando el número de transistores, puertas o
registros de cada componente en el esquema final. Por otra parte. la medida del
área es más difícil de obtener, ya que requiere calcular el área usada por los cables
y estimar la posición o situación de cada componente en un microchip o en una
tarjeta de circuito impreso.
La velocidad se mide de manera diferente en los di stintos niveles de abstrac-
ción. En los nivel es de transistor y de puerta, se mide el tiempo (retardo de pro-
pagación) que se neces ita para llevar el cambio de la entrada a los conectores de
salida. En el nivel de transferencia entre registros , se mide con el número de cicl os
de reloj o número de estados, mientras que en e l nivel de procesador se mide el
número de instrucciones por segundo o el tiempo de ejecución con los programas
de referencia (bell c/¡II/{/rks) selecc ionados.
La disipación de potencia es igual al producto de la tensión de la fu ente por el
consumo medio de corriente. Como la fuente de tensión normalmente es constan-
te para todo el microchip o tarjeta de circuito impreso, la di sipación de potencia
es proporcional a la corriente media que suministra la fuente de ten sión. En tec-
nología bipolar. como es la familia TIL, las puertas utilizan poca corriente cuan-
do están en corte (off) y mucha más corriente cuando están en conducción (on) .
Por ello, la disipación de potencia es proporcional al número de puertas en esta-
do de conducción y en estado de corte. Con tecnología MOS , las puertas condu-
cen corriente só lo en la transición de O a 1 y de I a O. Así. la disipación de poten-
cia es proporcional al número medio de puertas que cambian su valor de sa lida en
un intervalo de ti empo concreto. En cualquier caso, el número de puertas conmu-
450 Principios de diseño digital

tanda depende principalmente de los datos de entrada y en menor medida del dise-
ño del circuito. De este modo, para medir la disipación de potencia tenemos que
contar el número de puertas en estado "on" o el número de puertas conmutando
considerando un gran número de datos de entrada aleatorios. calc ular la media. y
luego multipli car la cOlTiente nominal de puerta por la tensión de la fuente.

A.1. EQUIPO DE PRÁCTICAS

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Como hemos exp licado en la sección anterior, utili zamos las prácticas para com-
probar el funcionamiento y otros índices de calidad una vez concl uido el diselio.
El funcionamiento del diseño se puede comprobar de varias fOl1nas.

A.1.1. Placa de pruebas

El modo más tradicional, ll amada de prueba en placa. utili za una placa de


pruebas (fJreadiJoard) que contiene varias tiras de orificios para montar circu i-
tos integrados (IC) de pocas puertas. biestables, o pequeños componentes de
transferencia entre registros tales como registros de 4 bits. contadores. ALU. o
ficheros de registro de 4 palabras. En las Figuras 3. 18 y 3.19 se mostraron varios
ejemplos de tales circuitos integrados de la familia TIL. El resto de los circuitos
se pueden encontrar en Libros de características TIL y CMOS editados por los
fabricantes.
La placa de pruebas también contiene indicadores luminosos de diodos emi-
sores de luz (LED), para mostrar los valores de salida, conmutadores para dar
valores O y I a las señales de entrada, y tomas de corriente para los circ uitos inte-
grados. El resto del equipo necesario para la pl aca de pruebas incluye cab les de
conexión , y herramientas para cortar y pelar los cables. Durante la prueba en
placa, los diseñadores insertan los IC necesarios en los orificios, cortan los cables
con la longitud adecuada e interconectan los IC de la placa de pruebas de acuer-
do con los esquemas generados durante la fase de diselio. Los conmutadores se
conectan a las entradas del circuito de modo que se pueda observar el comporta-
miento del circuito para cualquier combinación de valores de entrada. Para obser-
var los valores de salida tenemos que conectar los indicadores LED a las salidas
del ci rcuito. La comprobac ión del diseño se lleva a cabo observando los va lores
de salida para cada combinación de valores de entrada. En otras palabras, se com-
prueba el funcionamiento de cada fila de la tabla de verdad del circ uito. Aunque
comprobar cada fila de la tabla de verdad es posible en circuitos pequeños. con
pocas entradas y salidas, eso no se puede hacer en un tiempo razonable con cir-
cuitos grandes. Para evitar una fase de verificación larga y ex hausti va, los dise-
ñadores selecc ionan normalmente un conj unto pequeño de patrones de entrada.
llamados vectores de test , de modo que cada patrón con mute la salida de al menos
una puerta o biestable, y que cada salida de una puerta o biestable sea conm utada
por al menos un patrón.
Apéndice: Prácticas de laboratorio 451

Este proceso de generación de patrones de test no es sencillo en los casos en


los que los componentes estén profundamente ocultos en el diseño, es decir, en los
que las entradas sean difíciles de controlar y sus salidas difíciles de observar. Para
que cambie el valor de salida de un puerta o biestable tenemos que poder inducir
el cambio en alguna de sus entradas. Para inducir este cambio de entrada, tenemos
que encontrar uno o más caminos que conduzcan desde los terminales de entrada
del circuito a las entradas de la puerta o biestable concreto y crear un patrón de
entrada que propag ue este cambio de entrada hasta la entrada de la puerta o bies-
table en cuestión. Del mismo modo tenemos que encontrar el camino desde la

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
salida de la puerta o biestable que estamos observando a los terminales de salida
del ci rcuito y crear un patrón de entrada que propague este cambio de salida hasta
los conectores de salida del circuito donde podamos observarlo con los indicado-
res LEO. Muchas veces no es posible encontrar estos patrones, particulannente en
circuitos sec uenciales con lazos de realimentación internos complejos.
Para medir el retardo de propagación necesitamos un generador de pulsos y un
osc iloscopio multicana\. El generador de pulsos se conectará a una o más entra-
das que permitan la propagación de la secuencia de pulsos a la puerta o biestable
concreto. Las sondas del osci loscop io (un a para cada canal) se conectan a las sali-
das de las puertas o biestables que están bajo observación. De esta forma. pode-
mos comparar las señales de entrada y salida en la pantalla del osciloscopio y
medi r el retardo entre ellas .
La estimación de la potencia es más difícil de calcular. Para circuitos peque-
110s se pueden encontrar el estado o frecuencias de conmutac ión de cada puerta a
partir de su tabla de verdad. Además, si suponemos que a cada patrón de entrada
le sigue otro patrón de entrada con la mi sma frecuencia, podremos obtener la
corriente de cada puerta y promediarla para todas las puertas y para todos los
patrones con objeto de obtener la disipación med ia de potencia. En el caso de cir-
cuitos grandes, tenemos que seleccionar un conjunto de patrones de entrada repre-
sentati vo y usar herramientas CA D para medir el estado o frecuencia de conmu-
tación de las puertas y biestables para lograr la potencia media. Obsérvese que la
potencia media depende del conjunto de patrones de entrada seleccionado. ya que
algunos patrones pueden provocar muchos cambi os en el circuito mientras que
otros pueden producir sólo cambi os mínimos.

A.1.2. Tarjetas FPGA

Una tarjeta FPGA es parec ida a un a placa de pruebas con la diferencia de que
las tiras de orific ios de conexión y los IC de pequeña escala se sustituyen por
una o más FPGA. Cada FPGA contiene hasta varios miles de puertas como se
describió en la Sección 3. 11 y en la Figura 3.23. La otra diferencia importante
es que los di señadore s no pueden conectar las puertas individualmente, ya que
están encapsuladas dent ro de la FPGA , y en su lugar tienen que programar las
conexiones. Por esta razón neces itamos una herramienta de captura de esque-
mas que conv ierta el esq uema creado por los diseñadores en la pantalla del com-
452 Principios de diseño digital

putador en un formato interno llamado lista de conexionado (netlist ) que con-


tiene todas las conexiones, con sus fuentes y destinos. Como las fuentes y los
destinos son puertas o biestables, la lista de conexionado equivale a la capt ura
de esquema. Sin embargo, no es posible regenerar el esq uema a partir de la li sta
de conexionado, ya que ésta no contiene ninguna información sobre la posición
de las puertas y otros componentes en la pantalla. Para regenerar el esq uema a
partir de la lista de conexionado se necesitan herramientas de ubicación y
encaminamiento.
La segunda herramienta CAD que se necesita en la tarjeta FPGA es una herra-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
mienta de implementación de un diseño que traslada (carga) el esquema captura-
do en los bloques lógicos de la arquitectura de la FPGA, determina la ubicación
óptima de los bloques lógicos y selecciona los canales de interconex ionado que
conectan la lógica con los bloques de E/S.
Para medir la velocidad y la potencia podemos usar, como en el caso de la
placa de pruebas , generadores de pulsos y el osciloscopio para medir el retardo de
propagación de la entrada a la salida y la acÜvidad de conmutación.

A.1.3. Prácticas de captura y simulación.


En vez de placas de pruebas o tarjetas FPGA podemos usar simuladores dirigi-
dos por eventos para validar el funcionamiento y las prestaciones. y utili zar cap-
tura de esquemas o lenguajes de descripción hardware (HDL) para especificar
diseños digitales. Los simuladores dirigidos por eventos calculan el valor de sali -
da a partir de los valores de entrada de cada puerta, biestable o cualquier otro
componente digital cuyo modelo esté en la biblioteca del simulador o haya sido
especificado por el diseñador. Los simuladores también determinan los instantes
de üempo en los que el valor calculado de antemano para cada salida debe asig-
narse a la misma. Además, cada simulador hace un seguimiento del tiempo de
simulación y planifica la asignación de nuevos valores , llamados eventos , a las
señales de sa lida, de acuerdo con los instantes de tiempo que se han detenninado
para cada valor. Un simulador dirigido por eventos repite los siguientes cuatro
pasos para cada evento.
1. Asigna nuevos valores a una o más señales de salida de acuerdo con la
planificación que se ha establecido.
2. Calcula los nuevos valores de salida de cada uno de los componentes
cuyas entradas hayan cambiado después de la asignación hecha en
( 1).
3. Determina el instante de tiempo futuro para la asignación del nuevo valor
(nuevo evento) obtenido en (2) a la señal de salida correspondiente, cal-
culándolo a partir del modelo del componente.
4. Incrementa el tiempo de simulación hasta el siguiente evento planificado.
Un simulador que sigue los cuatro pasos indicados arriba se puede usar para
la verificación funcional y la validación de velocidad/potencia. Además de obte-
Apéndice : Prácticas de laboratori o 453

ner lo ' valores de salida correctos para cada señal de salida. un simul ador tam-
bi én indica cuando la señal de salida alcanzará este va lor de salida con respecto
al instante en que cambien los valores de entrada. Contabili zando todos los cam-
bios de los valores de salida de todos los componentes dentro de al gún interva lo
de tiempo también podemos calcular la disipación de potencia. Como se men-
cionó anteriormente en esta secc ión , cada simulador re4ui ere una descripción del
circuito digital , que se puede obtener con una herrami enra de capt ura de esque-
mas o mediallle un HDL. Una herram ienta de captura de esquemas permite intro-
duc ir e l esq uema gráficamente mientras 4ue con un HDL se hace mediante tex to.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
Escribir la descripción del di sei\o t!n un HDL determin ado. como e l estándar
YHDL del IEEE o con el lenguaje Yeril og se llama modelado. La ventaja prin -
cipal de los lenguajes HDL es que permiten a los di señadores describ ir circuit os
digitales con diferentes nive les de abstracción. Por ejemplo podemos di señar un
circ uito digital y describirl o espec ifi cando todas sus puertas y bi establ es y sus
conex iones. Por otra parte. podemos desc ribirl o usando expres iones booleanas
para cada entrada del biestable o especi fi cando todas las ll'ansferencias entre
registros en cada ciclo de re loj . Incluso en los niveles más altos de abstracción
podemos describir un procesador usando su conjunto de instrucci ones. En este
caso el modelo es un lazo infinito que contiene una sentencia CASE cuya vari a-
ble CASE es el tipo de instrucción y los campos del código de operaci ón. En este
mode lo de procesador cada iteración del lazo representa un ciclo de ejec ución de
una in strucc ión.
La ventaja de modelar a alto nivel de abstracc ión es la reducción del tiempo
de ejecución de una si mulación. Al acortarse los tiempos de simulación se puede
usar un modelo de conjunto de instrucciones del procesador para depurar un
ensamblador. un compilador o un sistema operativo, mientras se diseña y se fabri -
ca el procesador.

A.1.4. Prácticas de descripción-síntesis

Como el uso de los lenguajes HDL permite a los diseñadores describir ci rcuitos
digitales en nive les de abstracción más altos. podemos aprovechar la ventaja de
estas descripciones más cort as, eficientes y leg ibles y sintetizar automáticamente
di seños de menor ni vel usando distintas herramientas de síntesis.
Por ejemplo, las herramientas de síntesis lóg ica convierten las expresiones
booleanas en puertas y optimi zan el diseño a nivel de puerta para un determinado
coste. velocidad. potencia y biblioteca de puertas, utilizando métodos parec idos a
los ex plicados en el Capítulo 4. Además, las herramientas de síntesis secuencial
minimizan los estados y los codifican para la lógica secuencial y generan ex pre-
siones booleanas para las descripciones ASM y FSM. como se ex plicó en e l
Capítulo 6. Por otra parte, las herramientas de síntesis de comportamiento llevan
a cabo la síntesis de tran sferencia entre registros. incluyendo memoria comparti-
da , unidad funciona l compartida y bus compartido, así como su planificación que
se ex plicó en el Capítulo 8.
454 Principios de diseño di gital

A.2. TIPOS DE PRÁCTICAS


El equipo y las herramientas descritas en la secc ión anterior permiten crear di s-
tintas prácticas como se muestra en la Tabla A.l. en la que cada práctica resulta
adecuada para una o más tareas del proceso de diseño .
La práctica más tradicional es la de placa de pruebas en la que los estudian -
tes diseñan circuitos digitales, conectan puertas, biestables y pequeijos compo-
nentes a media escala. En esta práctica verifican el funcionami ento de compo-
nentes combinacionales y sec uenciales. (Esta materia se vio en los Capítulos 5 y

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
7). Para medir la velocidad, podemos mejorar la práctica de la placa de pruebas
con generadores de pulsos y osciloscopios de modo que los estudiantes puedan
observar fonnas de onda de distintas señales y medir el retardo y la potencia.

TABLA A.1 Tipos de practicas

C!PJ1!I,\ sI(flEs~ SlmS5


IlACAOE PlACA GENERA
OE HIl. 000. OE
ME OE lA PAAcTIcA PIIUEBIS FPGA MS
S1MIL\OOR
ESOOEII.\S SECUENCIIJ. COOPORlAIJEllTO
Prueba en placa x
Prueba en placa orientada
a mejorar la ve locidad x x
Práctica FPGA x x
Práctica FPGA orientada
a mejorar la velocidad x x x
Práctica de simulación x x
Pri:ÍClica de modelado x x
Práctica de síntesis lógica x x x
Priiclica de sínte sis del
com portamiento x x x x
Práctica de diseño típica x x x x x

Una práctica más moderna se ría con FPGA, en la que se reemplazarían las
placas de pruebas por tarjetas FPGA y software adicional para trasladar los esque-
mas de diseño a FPGA , que normalmente facilita e,l fabricant e de la FPGA. Esta
prácti ca también se puede usar para medir la potencia y la velocidad, si aI'iadimos
generadores de pulsos y osciloscopios.
También podemos practicar el di sello de componentes digitales usando herra-
mientas de simulación que pueden albergar fácilmente diseijos mayore s que los
de placas de pruebas. Una práctica de simulación utilizaría al menos una herra-
mienta de captura de esquemas conectada a un simulador. Para ensellar HDL y
modelado, acudimos a las prácticas de modelado, en las que los estudiantes
aprenden cómo describir los distintos componentes en di stintos ni veles de abs-
Apéndi ce: Pr<Ícticas de laboratorio 455

tracción y como escribir los modelos para verificar el funcionam iento, los proto-
colos de com unicación, prestaciones. potencia y verificabilidad entre otros. Estas
prácticas de modelado necesitarían una herramienta de simulac ión con un len-
guaje estándar como VHDL o Verilog como procesador frontal.
En cursos más avanzados podríamos utilizar hemunientas de síntes is para
diseñar circuitos dig itales. En una práctica de síntesis lógica los estudiantes des-
cribirían modelos a niveles más altos y di se ñarían circuitos digitales a partir de
mode los descritos. Con objeto de poder comparar, cada circuit o puede diseñarse
primero manualmente y luego sinteti zarlo automáticamente . (Esta materi a se vio

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
en los Capítulos 4 y 6). En las prá cticas de síntesis del comportamiento los
estudi antes harían lo mi smo que en las prácticas de síntesis lógica con la diferen-
cia de que podrían trabajar a partir de conjuntos de instrucciones para sintetizar
procesadores o a panir de descripciones algorítmicas para sin teti zar ASIC. (Esto
se vió en los Capítulos 8 y 9).
En resumen , un laboratorio de diseño típico que se pueda usar en distintos
cursos incluiría un simulador basado en HDL con una herramienta de captura de
esq uemas para los cursos introductorios. y una entrada HDL para los cursos avan-
zados o de modelado. También incluiría tmjetas FPGA con algunos generadores
y osciloscopios para que los estudiantes se hi cieran una idea de lo que es el hard-
ware real y el proceso de fabricación . Las herramientas de síntesis lógica y de
comportamiento serían un útil añadido para los centros de enseñanza con progra-
mas densos en di seño y fabricación .

A.3. EXPERIMENTOS PARA PRÁCTICAS CON PLACAS


DE PRUEBAS Y FPGA.
A. l. Diseñe los circuitOs de suma completa puertas. minimi zando el retardo entre
y resta completa dacios en las Tablas las salidas. Compruebe el fun ciona-
2.3 y 2.4. Yuliliee su hib Ji oleca propia. miento del disciio y encuentre el
Implemente el disci'io en una placa de camino crítico del dise ño comparan-
pruebas y compruebe que fun ciona do todos los retard os entrada/salida.
correctamente. Después. enc uenlre
clI¡J1 es el peor caso de retardo e nlra ~ A.4. Diseñe los siguie ntes circ uitos com-
da/salida para cada salida. binacionales usando la biblioleca de
puerta.s que qui era. y dClenninc los
A.2. Bu sque el generador de paridad
retardos críti cos entrada/salida.
par/impar de 9 hits qu e se mues tra en
(a) Sumador con acarreo en casc a-
la Figura 3.t9. y cncuenlre cuál es el
da de 4 bils (Sección 5. 1)
peor caso de rClardo enlrada/salida.
(b) Generador de acarreo anlic ipa-
Calcule tamb ié n la di sipac ión de
do de 4 bils (Sección 5.2)
pOle ncia para tos componentes de la
(e) Unidad lógica de 4 bils (Sec-
biblioteca que c lija.
c ión 5.4)
A.3. Redise ñe la fun ci6n de acarreo anti- (d ) AL U de 4 bilS (Sección 5.5)
c ipado de 4 bils a partir del Ejemplo (el Decodifi cad o r de J en H (Sec-
4. t O. usando su propia biblioteca dc ción 5.6)
456 Principios de diseño di gital

(1) Selector de 8 a l (Secc ión 5.7) (a) Registro de 4 bi ts (Sección 7. 1)


(g) Codificado r de prioridad de 8 á (b) Registro de desp laza miento de
3 (Sección 5.9) 4 bits (Sección 7.2)
(h) Comparador de mag nitudes de (e) Contador de 4 bits (Secc ión 7.3)
4 bits (Sección 5. 10) (d) Cont ador ascendente/desce n-
(i) Desplazador/rotador de izquier- den te de 4 bils (Sección 7.3)
da/derecha de 4 bi ts (Sección (e) Contador BCD (Secc ió n 7.4 )
5. 11) (1) Contador asíncrono de .\ bits
U) Desplazador en bloques a (Sección 7.5)
izq uie rda/de recha de 8 bits (g) Fichero reg istro con dos puer-

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
(Sección 5. 11) tos (Sección 7.6)
(h) RAM 4 X 4 (Sección 7.7)
A.5. Diseñe los siguiemes elementos de
almacenamiento usando la biblioteca (i) P ila de inserción/ex tracc ión
de pu ertas que qu iera, ve ri fit¡uc su
(Sección 7.R. Figura 7.20)
comportamiento y cree los diagra- (j ) Co la F IFO de 4 pa lab ras
mas de ti em po para cada transición (Sección 7.9. Figura 7.231
de un estado a otro , (k) Camino de da tos de ~ bi ts
(a) Larch SR (Sección 6. 1) (Sección 7. 10. Fig un. 7.26)
(b) Latch SR con puenas (Sección A.S. Usando los componentes combina-
6.2) cionales y secuenciales diseñauos en
(e) Larch D con pue'llls (Sección 6.3) los Experi mentos A.4, A.S y A.7
(d ) Biestable SR maestro/esc lavo diseñe las siguientes unidades ele
(Sección 6.4) contro l y determine el retardo de l
(e) Biestable J K maes tro/esc lavo peor caso .
(Sección 6.4) (a ) Contro l cableado (Fig ura
(1') Biestable D maes tro/escl avo 7.34( a»
(Sección 6.4) (b) Unidad de control con un regis·
(g) Bi estable T maes tro/esclavo tro de estado y un decodificador
(Sección 6.4) (Figura 7.J4(b))
(h) Biestable D disparado por nan- (e) Unidad de control con un con-
eo (Secc ió n 6.4) tado r (Fig ura 7.34(c))
(i) Bi es ta ble D maes tro/esclavo (d ) Un idad de contro l con un a pila
con puesta a lino y puesta a cero ele in serción/cx tracc ión(Figura
(Sección 6.5) 7.34( d))
(j) Biestable disparado por tlanco (e) Un idad de conlrol microp rogra-
con puesta a uno y puesta a cero mada (Figu ra 7.34(c»)
(Secc ión 6.5)
A.9. Usa ndo su propia biblioteca rediseñe
A.6. Diseñe el contro lado r de un semáfo-
el contado r de unos del Ejemplo 7. 1
ro (Prob lema 6.22). compruebe s u
Yde temline e l menor peri odo de reloj
comportamien to y determine el retar-
operac ional (la mayor rrec uencia del
do de l peor caso entrada/salida.
periodo de re loj) para los ~igll icn tes
A.7. Usando su propia bibl ioteca diseñe casos:
los siguientes ci rcuitos secuenciales. (a) Cami no de datos (Fig ura 7.26)
defi na sus diagramas tle estado, com- y unidad de contro l (Fig ura
pruebe su com pOrlamienlo y deter- 7.34(a»
mine el mínimo pe riodo de reloj (b ) Camino de da tos (Figu ra 7.16)
necesari o para su funcionamiento: y (Figu ra 7. 34(c))
Apéndice: Prácticas de laboratorio 457

(e) Camino de datos (Fig ura 7.26) A.IO. Diseñe un camino de datos y una uni-
y (Figura 7.34(e» dad de control para el algoritmo de
(d) Camino de datos a medida y inserción de campo descrito en el
unidad de co ntro l (Fi g ura Problema 7.20 . Determine también la
7.34(a)) frec uencia operacional mayor para su
(e) Camino de datos a medida y uni- disefio (e l menor peri odo de re loj
dad de control (Fig ura 7.34(c)) posible).
(n Camino de datos a medida y uni-
dad de control (Figura 7.34(e))

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
A.4. EXPERIMENTOS DE SIMULACiÓN
A.II-20. Repita los experimentos de la sec- even tos para validar el funciona-
ción anterior. En vez de la placa de miento. y delemline retardos. cami-
pruebas use una herrami enta de cap- nos crít icos. e l retardo entrada/s alida
lum de esquemas para especificar el del peor caso y la mayor frecuencia
diseño y un simulador dirigido por operacionnl.

A.5. EXPERIMENTOS PARA MODELAR


A.21. Desarrolle modelos a ni vel de com- Desarro lle un conjunto de test y va li·
portamiento (expres iones aritméti - de modelos para probar el funciona-
cas) . lógico (ex presiones booleanas) miento y 11:1 temporización.
y estru ctu ra l (li stas de conex ionado
de puert as) para los siguients compo- A.22. Desmmlle modelos de componamien·
nentes : to o transferencia entre registros (ciclo
la) Sumador COIl acarreo en casca- de reloj). y estructural a ni vel de puer·
da de 8 bits (Sección 5. 1) t¡l~ para los siguientes componentes:
(b) Generador de acaITco anticipa- (a) Latch SR (Secci6n 6. 1)
do de 8 bits (Sección 5.2) (b) Latch SR con puertas (Secció n
(e) Un idad lógica de 8 bit s 6.2 )
(Secc ión 5.4) (e) Latch D con pue rtas (Secc ió n
(d ) ALU de 8 bits (Sección 5.5) 6.3)
(e) Decodificador de :1 á 8 (Sección (d ) Biestab le SR mae.<tro/esciavo
5.6) (Sección 6.4)
(1) Selector de 8 ¡í 1 (Sección 5.71 (e) Biestable JK Illae,tro/esclavo
(g) Codificador de prio ridad de 8 :í (Sección 6.4)
3 (Sección 5.9) (O Biesta ble D maestro/es clavo
(h) Comparado r de magnitud de 8 (Sección 6.4)
bits (Sección 5. 10) (g) Biestabl e T maeSlro/csc lavo
(i) Rotador/des plazador de izo (Sección 6A )
qu ierd a a derecha de 8 bits (h ) Biestable D disparado por llan-
(Sección 5.11 ) eo (Secc ió n 6.4)
Ul Des pl azador en bloques a (i) Biesta ble D maestro/esc lavo
izquie rda/de rec ha (Sección con pll e~.:; t a a uno y puesta a cero
5.1 1) (Sección 6.5)
458 Principios de diseño digital

(j) Biestable disparado por llaneo dad de control se compone de la


con pue sta a unO y puesta a cero orden y la s asignaciones al siguient e
(Sección 6.5) estad o y vectore s de control. mi en-
Desarrolle un conjunto de test y vali- tras el modelo es tructural con ti ene
de modelos para probar el fun ciona- bi establ es y expres iones booleana s
miento y la tempori zación. para cada entrada de I biestable o cada
salida de la señal de control. Del
A.23. Desi1ITolle generadores de modelos
mi smo modo. el modelo de compor-
ampliando los modelos desarrollados
tamiento del ca mino de datos cst<Í
en los dos ex perimentos pre vios para
fonnudo por varias sentencias CASE.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
trabajar co n cua lquier número de bits
mi entras qu e el modelo estru ctural
entre I y 64. En otras palabras. e l
contiene cinco co mponentes di stin -
número de bits 11 debe ser un paráme-
tro del generador de modelos que
tos. a saber. el selec tor. el fichero de
produzca e l mode lo adecuado al registros. la ALU. e l desplazador y el
adaptador del bus. C ada compon ente.
número de bit s especificado por el
parámetro JI. Verifique su generador
a su vez, se define por sus propios
modelos estru ctural es o de comporta-
para 4, 7, 14. 29 Y 60 bits.
miento.)
A.24. Desarroll e mode los de comporta-
mi ento y estructural para: A.26. Desarrolle e l modelo para el diseño a
(a) Pila de in serción/ex tracc ión con m edida de un co ntador de unos
-reg istro s de de splazamiento (Figura 8.6) a partir de su diagrama
(Figura 7.20) ASM y compáre lo con el m.,dclo
(b) Pila de inserc ión y extracc ión desanollado a partir de su imple,.>n-
con memoria (Fi gura 7.2 1) tac ión (Figura 8.8).
(e) Cola FIFO con registros de des- A.27. Desarrolle los mode los de comporta-
plazamiento (Figura 7.23) mi en to. de tran sferenc ia entre reg is-
(d) Co la FIFO con me moria tros (diagrama ASM) y estructural
(Fig ura 7.24) para la müquina de Black-Jack des-
(Ayuda: el modelo de comportamien- erita en el Problema 8.6.
to describe la función de la pila o la
cola pero no sus co mponentes. mi en- A.l8. D esalTolle los modelos de conjunto
tras el modelo estructural est:.i fonna - de in strucciones (d iagrama de flujo
do por todos los co mponentes inter- del conjunto de in strucciones de la
conectado s con cada component e Figura 9.6) y de tran sferencia entre
descrito por su modelo de comporta- regi stro s (d iagrama ASM de la Figura
miento o es tru ctural desaJTollado en 9.8) para e l procesador CISC definido
los Experimentos A.2 l Y A.22. ) por el co njunto de im;trucciones de la
Figura 9.5. Desarrolle también los
A.25. Desarrolle mode los de comporta- dos modelo s anteriore s para el proce-
miento y estru ctural para el co ntador
sador RIS C definido por e l conjunto
de linos que se mu es tra en la Fi gura
de in struccione s de la Figura 9.11 y
7.31.
compare amhos modelos.
(Ayuda: e l mode lo estru ctural se
compone de la unidad de control y A.29. D esarrolle modelos estru ctural es de
los componente s del ca mino de datos los procesadores CISC (Figura 9.9) y
que ti enen sus propios modelos de RIS C (Figura 9. l 2) Y páse le los test
comportami ento y estructurales. El con el código de referencia dado en
modelo de comportamiento de la uni- las Figuras 9.13. 9.1 4 . 9.15 y 9.16.
Apéndice: Prác ticas de laboratorio 459

Compare los tie mpos de ejecución de funcionar los procesadores CISC y


cada códi go de referencia haciendo RIS C.

A.6. EXPERIMENTOS DE SíNTESIS LÓGICA


Y DE COMPORTAMIENTO
A.30. Use los modelos lógicos (e xpresio· (e) Contador BC D (Secc ión 7.4)
nes booleanas) desarrollados en e l (f ) Contador asíncrono eJe 4 bits

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
E xperim ent o A. 2 1 con co mponent es (Secc ión 7.5)
combinacionales y sintetice cada (g) Fichero registro con 2 puertos
componente con herramientas de sín- (Secc ión 7.6)
tes is lógica. Compare los resultados (h) RAM 4 x 4 (Secc ión 7.7 )
de la sínt esis lógica con los dise ii os (i) Pila de inserción/extmcción de 4
de l Capítulo 5 para : palabras (Sección 7.8. Figur:¡ 7.20)
(a) Sumad or con acarreo en casca- (j) Co la FIFO de 4 palabras
da de 4 bit s (Secc ión 5. 1) (Secc ión 7.9. Figura 7.23)
(b) Generad or de acarreo antic ipa· (k) Camino de datos de 8 bits
do de 4 bits (Secc ión 5._ ) (Secc ión 7. 10. Figura 7.26)
(e) Unidad lóg ica de 4 bit s
A.32. Sinteti ce las ve rsi ones ba sadas en
(Sección 5.4 )
(d ) ALU de .¡ bits (Sección 5.5) estados y basadas en entradas del
(e) Decod ificador de ~ a 3 (Sección contador de unos a part ir de sus
5.6) modelos de tran sferencia elllrc regis-
(1') Se lector de X a 1 (Sección 5.7) tros (diagramas ASM ) dados en la
(g ) Codifi cador de prioridad de 8 a Fi gura 8.6.
3 (Secc ión 5.9) A.33. Sillletice las versiones basadas en
(h ) Comparador de magnitud de 4 estados y basadas en entradas del
bi ts (Sección 5. 10) t ontador de unos a partir de sus
(i) Desplazador/rotador de izquier· modelos de com portamiento.
d,Vderccha de 4 bits (Sección 5. 11 ) (Ay uda: Los modelos de comporta-
(j) Des plazador en bloques de mi ento no ti enen variables ele reloj ).
izqu ierda/derecha de 8 bit s
(Sección 5. 11 ) A.34. Sintetice la máqu ina de Black·Jack a
part ir de sus modelos de comporta-
A.31. samio los modelos de tran sferencia mi ento. de tran sferencia entre regis-
entre registros (c iclo de reloj) desa· tros y estructural desarrollados en el
rroll ados en e l Experimento A.22 Ex pe rimento A.27 usando he rra-
para componentes sec uenciales. sin - mientas de sínt es is de comport a-
tetice cada componente con he na- miento. secuencial. y lóg ica.
mjentas de sínt esi s secuencial.
Compare los resultados con los di se- A.35. Sintetice: el algoritm o de aproxima-
ños manuales de : ción a la raiz cuadrada (Fi gura 8.9) a
(a) Reg istro de 4 hits (Secci ón 7. 1) partir de sus mode los de co mporta-
(b) Registro desplazador de 4 bits miento y de transferencia entre regis-
(Sección 7.2) tros ( diagrama s AS M ). Repita la sín -
(e) Contador de 4 bits (Secc ión 7. 3) tes is para (a) la sencilla bibl ioteca de
(el) Contador ascendente/deseen· la Fi gura 8.1 1. y (b) la compleja
dente de 4 bits (Sección 7 ..\) bi blioteca de la Figura 8.20.
460 Princi pios de diseiio di gital

A.7. LECTURAS DE AMPLIACiÓN


The TTL Da/{{ Base. DalIas, Texas: Texas Tlle Progrml1lJ1ah/e Lugic Da/a Buuk . San
Instruments. 1988. Jose, CA: Xi lin x. [ne .. 1995 .
CMOS Lagic Data Book. DalIas. Texas: J. Duekworth. WorkvieH" Office: SIl/de",
Texas Instruments. 1990. Ediliol/. Upper Saddle Ri ve r. New
Jersey: Prentice Hall. 1997.

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
,/

Indice
A b~nco de rcgistros. 290 circu itos lógkos. Y'+
b~ls;.¡do en estado, 243. 248 circ uitos secuencia les
acarreo anticipado. I R3 b¡¡s¡¡do en la en trada. 24~. 248 asíncronos. 2~2
Ilc umulad o r. 312. 410 b"se. 30 codi ficación de l uno ca lil!ntt! .

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
adaptudor tri es tado. 200 base binari a. 3 1 261
biblioteca de componen tes. 13 ('odilicadore~de prioridí.ld. 200
.\lge bro boo leo"o. 73
(¡ Ige bra de co nmutación. 73, 76 bibliotcc ~1 de pucr1as. 9~ código. 54
olgoritmo ALAP. 391 biestable di spar:¡do por nanco. código biqui nario. 56
algoritmo ASAP. 391 231 código de detección de errores.
algoritmo de lado izqui e rdo. bies lab lc JK. 23, 59
),3 bicst"blc SR. 235 código de 3 en eXl:Cso. 56
bies tab les maes tro/esclavo. cód igo de ope ración. -l07
algoritmo de planificac ión de
li SIo. 393
230-23 1 códi go de paridad impar. 60
biestable,> sensibles al nivel. cód igo de paridad par. 60
almacenar instrucc iolll'!\. 40&
229 codigo 242 1. 56
alto acti vo. 223
bi ts de infonnadón. 60 código Hamming. 62
ampliado r de memoria. 1f!9
bits de relación. ~21 código 8-121. 56
mnpli.tdor lógico. ISlJ
bloque ASM. 33R código ponde rado. 56
:'lI1álisis. 240
booleana bi va luada álgebra. 7~ códigos de corrección de
ancho de l pu lso de escri tura.
bus. 199 errores. 62
29R códigos de paridod de 1 bit. 60
í.lproxim:lción a medida. 120
co la. 307
aprox imación
121
sc.! l11i-a - l11 cd id ~l .
e co lec lor abierto, 11 2
coma binario. 31
urco de incompatibilidad. 359 caja de dec is ión. 338 com~1 de kl base. 30
arco prioritario. 359 coj" de es IOdo. 33~ comparadores. 203
array de pue rt as. 121 caja de srll ida condiciona l. 338 compart ición del bus. 353
arrays lóg. icos programables cambio de bit m{nimo. 259 compar1ición de
(PLAs). 2 13 cami no crít ico. 167 me moria/regist ro. 349
ASC II , 56 camino de dato!' paralelas. 3 1~ compartición de unll unidad
AS Ie. -106 campo constallte. 409 fun cional. 35 1
asociación o agrupac ión de campo de direcciones. 407 compilodor. -106
conex iones. 35 J campo de modo. 408 complemento a 10. ..t J
asociac ión o ag rupación de campo programable compleme nlO a dos. 42
operadores. 35 1 aproximación de. 123 completamente especificado. 1..t7
asociación o agrupac ión de captum de esqucma. 17 componentes analógicos. 9
voriobles. 3-19 característica, 52 comportamiento. 4. 18
asoci::lIividad. 72 carga estándar. 107 condi ciones de indifercnci¡l.
aUlOcomplcmcnlación. 56 ca rrera críti ca. 225 148
a ut odecremento. 4 15 ce lda. 10 cone,cliv idud de sa lida (fall
autoincreme lll o. 415 cel da de memoria . 295 0/1/ ), 107
~vance de dmos. -141 celdas del b,lI1cO de reg istros. conjunto. 72
axiolll~\s . 72 290 conjunto de instrucciones. '+06,
c hip. 117 422
ciclo útil. 223 conmutatividad. 73
B cierre. 72 con lador. 283
circ uito integrado de aplicación contador
bajo ~\ c li vo. 223 específica (AS IC\, 406 nscendeme/desccndente. 2X3
462 Principios de diselio digital

contador as íncrono. 287 E guía de Illode lado, J7


contador con puesta a uno. 2R6
cont:ldor de progrmna. 41 6 ec uac ión característica. 236
comadores BC D. 286 ecuaciones de excitac ión. 24 J H
contadores en modo mix to. 290 ecuac iones de l siguie nte
control mic roprogramado. 324 cSlado.29 1 herram ientas de
conversor. 9 ejecución de una instrucc ión encaminamient o. 19
coste de fabricac ión. 15 c icl o de. 4 I 7 he rramien tas de ubicación. 19
cubo de orden n, 58. 132 e lemento identidad. 72 hexadec ima l sistema de
ele me nt o in ve rso. 73 numeración, 3 1
encad enami ento . 376

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
entradas asínc ronas. 238
equivale nc ia de
o comportamient o, 254
eq ui valenc ia de es tados, 2 55 imp licante primo. 134
decodificador de cOIrecc ión de e rror. 57 impli cante primo cse nci.d. 90.
errores, 62 escala de integración grande. 134
decodificadores. 193 11 8 implicantc pri mo gene ración de
decodificando. 62 esca la de int egrac ión med ia. la . 144
demultipl exores. 193 11 8 implicailtcs. 89
dependenc ia de los datos. 438 escala de illlegración peque ña , imp licar. 89
desbordamiento. 44. 5 1 11 7 incomple tame nte espec ificado.
desbordamie nro en coma especificac ión de l produ cto. 12 147
n Olanl e. 54 esquema. 17 in strucc ión. 407
descomposición de términos. establ ec imi ento de los datos. instrucc ión de sa lt o. 40X
160 297 instruccio nes de carga. 408
desc ripción ele l hardware c!)lado ele puesta a cero. 223 instrucc ione s de dos
lenguaje de. 17 es tado de l conjunto. 223-224 direcc iones. 410
des plazador en bloque, 209 evn luilción del tes t. 20 in strucc iones de mov imiento.
desplazadore s. 207 extensión de l signo. 43 408
destinos de conexión. 370 ex.pre siones booleanas. 79 in strucc iones de tres
detenci ón del cauce, 435 direcciones. 409
diagrama ASM. 340 instrucc iones registro, 408
diagrama de bloques, 13 F integración a mu y gran esca la.
diagrama de flujo. 5. 42 I 11 8
diagrama de flujo de un fina l de lazo. 311
conjunto de in strucciones, fonna canónic¡1. 87
4 17 fonn a estándar. 89 L
diagrama de máquina frecuencia de l re loj . 223
al gorítmica de estados FSM con cam ino de datos, 333 laleh D. 235
(ASM).338 FSM de Mea ly. 248 latch D sincroni zado. 227
diagramas AS M de FS M Moore. 248 latch si ncron izado. 226
procesadores. 417 fu e lll cs de conex ión, 370 l"leh SR. 223
di gital anal ógico (DIAl . 9 fun c iones. 79 lat ch SR sinc ron izado . 227
dígilO más significante. 3 1 lateh T, 235
dígito menos significante. 3 1 litem!. 79
dígitos decimales codifi cados G lóg ica. 114
en binario. 55 lógica d iodo-transistor. I11
dirección actual. 4 12 generac ión de mapas, 143 lóg ica tl'an.'i istor-tran sistor, 111
direcc ión efec tiva . 4 12 generación de patrones de tes t.
di sipación de potenc ia. 109 19
di sposilivos de E/S. 4U6 ge ne rador. 183 M
di stancia. 59 grá fi co de control/diagrama de
di stancia de Hamming. 59 Oujo. 389 mapa, 13.+
di stributividad.73 gr"ro de compalibilidad. 357 mapa de ci nco variables. 139
Índice 463

mapa de c uatro variabl es. 139 p riesgo 1 es tático. 170


map'\ de Kanwugh. 134 riesgos din ..ímicos. 173
mapa de tres vari ables. 138 pnlabra del código. 54-55 ROMs programables. 2 10
map<ls de seis v:\ri abl e~. 14U palabras que no pert ell~cen al ra tadores. 206-207
mnrgen de ruido. 106 CÓl1igo.59 ruido. 106
matri z de conm uwción , 124 paridad. 611
Illax tenn . R5 partic ión de gr~lf()~ algori tmu.
Ilm xtenlbi O. R6 35S 5
ma x t c rl1l ~ l. 86 período de l re loj. 222
med idas de te:\!eabil idad. 15 p.$O. 30 sec uencial de l ipo Moore
memoria. 406 pi la inse rción-cx tn.lCción. 302 c irc uito. 243

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
memoria de sólo lectura. 209 predi cción de solitOS . . .J.-I-5 s~c.: u enci.aI tipo Me~ly c ircuit o.
memorias de acceso directo. primero e n entrar primero e n 243
293 sal ir. ]06 sccuenc ial e... Mncronos
memorias no voJ¡i til es. 196 princ ipio de dualidad . 7S circ uitos. 212
memorias volátiles. 295 prioridad e n adyacencia segme ntación, 3HO
método de tabu lac ión. 150 estrateg ia. 260 sc:l ección del im plicante
me todol ogía de di se l o. 12 proceso ele di ~eño . 12 ese nc ial. 1-1--1-
mic roprog ramación. 32-1- produClO. 89 '>e lec tor. 195
mintellll. 83 produc to de sumas. g9 selec tor o multiplexor. 196
mintenllS O. 83 programa. 407 se micondu ctor l11 e lal ~óx id o.
milltenn s illdiferelllcs. I...J.S puerta c;lblead;¡ AN O. 11.3 I I~
minte nll s l . R3 pue rta lógica. 94 st: llli sumadores. 2H5
modo de d ireccionami ento pue rt as compl ejas. 100 se ñal digita l. 9
directo. -1-1 J plll! rtas es t ~índar. 94 Señales de puesta ti cero (clear).
modo de direccionamicllIo puesta .1uno (preset) asíncrona. 279
impl icndo. -I- I .~ 279 sesgo. 52
modo de d irecc ionami enlO pul so del re loj. 223 s imulaci ón. 18
indexado. 4 15 pu lso es púreo. 170 síntesis de a lto nivel. IR
modo de direccionamicllIo síntesi s de arquitec tur.l. 14
indirec to. -1- J3 síntesis de l sistema. 14
modo de direccionamiento R sílll esis lógica, 16
inmediat o. 4 13 sín tes is secue ncia l. 14. 18
modo de direcc iol1<l11lic l11 0 RAM dimími ca. 295 siste ma pos icional. JO
relat ivo. -1- 14 RAM cS I..iti ca. 295 sistema digital. 1)
mód ul os. 1I r.mgo. 52 siste ma de numeración oc l ~.II . 3 J
MOS com pl ementari o. 1J-I- reali zac ión del produclo. 15 sistema en compl emento base.
mov ilidad. 39-1- redes lóg icas. 94 41
IllLl hi cicJo. 377 reg istro. 278 sistema en signo y magnilUd,
reg istro de ca rga paralela. 2~:W 39
reg istro de cOlllroL 386 sistema lógico negm ivo. 104
reg istro de desplazamie nto . 28 1 sistema lógico positi vo. 104
N regi stro de estado. 3M6 subcubos de orden 111. 58
registro in strucc ión. 416 subida . 112
ni vel de registro. 11 re loj. 222 suma. 89
nivel de procesador. II representación estruc tural . 4 suma de productos. 89
ni ve l de Iran s i~ t or. 10 represe ntac ión física. 5 sumado!" con acarreo e n
nivel de pue rta. 1I rcpre se lll ación fun c iona l. 4 casc ada. 181
núme rOs en coma Il ot;lllte. 5 1 restri cc ión de tiempo, 395 sum<ldor complelO. ISO
restri cción de tiempo sumad or/restador. 187
planificac ión con. 395
retard o de propagac ión, 110
o re te mporizac ión. 162 T
ri esgo. 171
ope rador binario. 72 riesgo O está! ico. 170 ti.lbla carac terística. 236
464 Principios de diseño digital

tabla de estado-acción. 336


rabia de exci tación, 236
tiempo de inhabilitación de
salida. 279
u
tabla del siguiente estado. 242 tiempo de manten imi ento de unidad aritmético-lógica
labia func ional. 191 direcciones. 298 (ALU). 189
teoremas. 76 ti empo de mantenimiento de unidad tóg ica, 188
lénnino OR. 79 los dalos, 297 unidades. 11
lénnin os AND, 79 tiempo de mantenimiento de la unidades multiciclo. 377
ténninos de la suma. 89 salida. 297
térnlinos del producto. H9 tiempo de subida. 109
lieOlpo de bajada. 110 licmpo de vida. 353
tiempo de acceso a memoria. In.ll1 sistor bipolar, 111

© Del documento, de los autores. Digitalización realizada por ULPGC. Biblioteca Universitaria, 2011
297
tiempo de establecimiento de
transistor-resistor lógico. 111
transistores de bajada. 112
v
direcciones. 297 traslación a la tecnología, 157 ve rificadores de equi va lencia.
ti empo de habililación de tri-estado, 11 3 18
salida. 279 truncaci ón del signo. 43 ve rificadores temporales, 18

También podría gustarte