Principios de Diseño Digital
Principios de Diseño Digital
I
CONSULTORES EDITORIALES:
Principios
de diseño digital
Daniel D. Gajski
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 CataluM
DANIEL D. GAJSKI
Principios de diseño digital
PRENTICE HALL mERlA. Madrid, 1997
ISBN: 84-8322-004-0
MATERlA:
Infonnática 631
DANIEL D. GAJSKI
Principios de diseño digital
DERECHOS RESERVADOS
© 1997 respecto a la primera edición en español por:
PRENTICE HALL Intemational (UK) Ltd.
Campus 400, Maylands Avenue
Hemel Hempstead
Hertfordsbire, HP2 7EZ
Simon & Scbuster Intemational Group
ISBN: 84-83~2-004-0
Depósito Legal: TO-1409-1998
l.' reimpresión: 1998
Traducido de:
PRINCIPLES OF DIGITAL DESIGN
PRENTICE HALL, !NC. - Simon & Schuster Intemational Group
A Viacom Company
Copyrigbt © MCMXCVII
ISBN: 0-13-301 144-5
Edición en español:
Editor: Andrés Otero
Diseño de cubierta: DIGRAF
Composición: REPROGRÁFICAS MALPE, S.A.
Impreso por: GRAFlLLES (Grupo Fuproin)
I
Contenido
PRÓLOGO XllJ
AGRADECIMIENTOS XIX
1. INTRODUCCiÓN 2
vü
vili Principios de diseño digital
!.9. Problemas 25
íNDICE 461
,
•
Prólogo
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 softwarelhardware, 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.
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-
xili
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 particulannente 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.
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
Características editoriales
Daniel Gajski
Irvine, California
Agradecimientos
Primero, me gustaría agradecer a todos los estudiantes que han seguido mis cla-
ses y preguntado cientos de cuestiones, haciendo que me diera cuenta del proce-
so de aprendizaje y forzándome a experimentar 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 Kurdabi , Youn-Long
Steve Lin, y a Allen C. H. Wu, que han probado en clase una primera versión de
este libro proporcionándome muchas sugerencias útiles sobre como mejorar el
contexto y la presentación de los temas. También aprecio mucho las útiles suge-
rencias de revisores anónimos sobre el material seleccionado 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 Kleinsmitb hizo las figuras, mecanogra-
fió y formateó el texto. Sin su paciencia y dedicación este libro nunca hubiera lle-
gado al editor. También estoy agradecido a Sarab Wilde por la edición delicada 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 versión fmal del texto:
Tedd Hadley, Jie Gong, Hsiao-Ping Juan, Smita Bakshi, Alfred Thordarson,
David Kolson, Pradip Iba, Preeti Panda, Jianwen Zhu, Min Xu, Laurent Choura-
Id, Marie-Use Flottes, Nong Fan, Joanna Kang, Wnwei Pan, Viraphol Chaiyakul,
y Poonan Agrawal. También estoy muy agradecido a Gerry Johnson y Don
Fowley de Prentice 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, Irwin Zucker, y al personal de
Prentice Hall su gran profesionalidad en la producción del libro.
xix
Principios
de diseño digital •
CAP ULO
Introducción
4 Principios de diseño digital
~
~<=~~~t=>-..!s:
~ Pulso = !e. +/1I Spanudla:=:
S'g undos =Seg undos + I
Segundos
I
~
r--.!n!!!o<~~~~~>-..!s:
' " ¿Segundos - O?
!. e"11I Minutos = Minutos + I
Mpantalla :c Minutos
I
se I Horas =Horas + 1
Hpantalla '" Horas I
I
I
I
FIGURA 1.1 Representación del comportamiento del reloj despertador: proceso del reloj.
A diferencia del proceso del reloj, el proceso de ajuste (Figura 1.2) describe como ajus-
tar la hora del reloj o de la alarma, como se desee. Se usan dos variables internas adiciona-
les, Malarma y Halnnna , para almacenar los minutos y la hora de la alarma. Activando los
conmutadores S3 y 84 , se pueden incrementar los minutos y la hora de la alarma, que están
almacenados en Malamw y Halarma respectivamente. Entonces, se ajusta el tiempo correc-
to primero activando el conmutador SI Ó S2' según se quiera ajustar la hora del reloj o de la
alarma, y después se pulsan repetidamente los conmutadores S3 y S•. Obsérvese que no se
pueden accionar SI Y S2 a la vez. Obsérvese también que la hora que se ajusta accionando
S3 Ó S4 se visualiza irunediatamente en el visualizador del reloj .
El último de los tres procesos, el proceso de la alarma, (Figura 1.3), se ha diseñado para
activar la alarma poniendo la variable de salida, Pitido, a 1 en el momento en el que la hora
del reloj se iguale a la de la alarma, suponiendo que el conmutador de alarma, Ss' está acti-
vado. En otras palabras, siempre que Millutos = MalamIQ, Horas = Halarma, y Ss esté acti-
vado, Pitido tomará el valor 1.
Para una descripción del comportamiento del reloj despertador como la que acabarnos de
realizar, podría haber varias descripciones estructurales ya que una descripción del compor-
tamiento no detennm3 una estructura exacta. Sin embargo, especifica una serie de variables
internas que se pueden usar para almacenar datos y una serie de declaraciones de asignacio-
nes utilizadas para transformación de datos. A partir de esta infornJació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 declaraciones de as igna-
ción. Esta conversión da lugar a la representación más obvia, aunque no óptima. que se
muestra en la Figura lA.
Obsérvese que, según la Figura lA, el reloj despertador )0 dirige el oscilador, que pro-
duce una onda senoidal con una frecuencia de un ciclo por segundo, como se ve en la Figura
1.5(a). El generador de pulsos convierte la onda senoidal en un tren de pulsos, ver Figura
Introducción 7
1.5(b), de la misma frecuencia que el seno, pero toma sólo dos valores: O y l. 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.
FIGURA 1.2 Representación del comportamiento del reloj despertador: proceso de ajuste.
no
¿Minutos:: Mala rmn ?
no
¿ Horas = Halanna ?
no
¿Sjactivado ?
FIGURA 1.3 Representación del comportamiento del reloj despertador: proceso de alarma.
8 Principios de diseñ0 digital
1 segundo
Ol l~-----L---J......-
_ (b) Tren de pulsos
Volviendo a la Figura 1.4, puede verse que el resto de la especificación estructural del
reloj despertador contiene tres contadores, un contador de segundos, un contador de minu-
tos y un contador de horas, que contabilizan segundos. minutos y horas, y dos componen-
tes de memoria de UDa palabra, un registro de minutos y un registro de horas, usados para
almacenar el minuto y hora de alarma. El visualizador muestra los segundos, minutos y hora
tanto del reloj como de la alarma, dependiendo de la posición del conmutador Sz En el com-
Introducción 9
parador de minutos, se comparan los minutos del reloj y de la alarma. Si son iguales, el
valor 1 pasa al comparador de horas. De forma similar, el comparador de horas pone su sali-
da a 1 siempre que la hora del reloj y de la alarma sean iguales y la entrada del comparador
de minutos sea l . Suponiendo que el conmutador S, esté activado cuando la salida del com-
parador de horas se hace 1, la señal Pitido pasa a l . El generador de sonido se usa para con-
vertir el cambio de Oa 1 de la señal Pitido en un tono de 5 segundos, que controla el minial-
tavoz del reloj.
Categorizando los componentes de la representación estructural del reloj despertador, el
oscilador y el altavoz se consideran componentes analógicos, ya que su entrada y salidas
pueden tomar cualquier valor dentro de un rango dado. Por ejemplo, durante cada segundo,
el oscilador genera como 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 (AID), ya
que a partir de una entrada analógica genera una salida digital. Inversamente, el generador
de sonido es un conversor digital-analógico (D/A) ya que está diseñado para convertir
señales digitales en analógicas. El resto del sistema, contenido en la zona sombreada de la
Figura 1.4, es un sistema digital bompuesto por componentes digitales. El contenido de este
libro trata exclusivamente de técnicas de diseño de sistemas digitales.
En la Figura 1.6 se muestra una representación física del reloj despertador, dando los
tamaños y posiciones de los componentes reales como se montarían en una tarjeta de cir-
cuito impreso (pCB, Printed Cicuit Board) dentro del chasis del reloj despertador. Obsér-
vese que esta PCB contiene varios microchips : el oscilador, el generador de pulsos, el gene-
rador de sonidos, y todas las partes digitales del reloj despertador. También contiene el
visualizador, los conmutadores, la caja para la batería, así como las tiras de metal que
conectan todos los componentes.
Oscilador
ConmuLador
l.l0~~~V
li n_ 1Lo . -_1 LI
- ;"""'o,
'".,ido~Ii" '"
de lYaJICC de
minutos U L . .:I ~I Conmu tador
de avance de
Horas Minutos
= = Companimcnlo
"""
d<pi'U ~~
Alarma Tiempo On Off Conmutador
de puesta en
,,-
""""d<
Las puertas y los biestables son celdas digitales típicas que tienen entradas y
salidas 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
se usan como componentes básicos en el nivel de registro. 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, Finite State 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, comparadores, 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 registro 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, conjuntos 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 nivel son los procesado-
res, memorias, controladores, e interfaces, además de los "microchips a medida"
(custom microchips) denominados circuitos integrados de aplicación específica
(ASIC, Application Specific Integrated Circuits). Generalmente, uno o más de
estos componentes se colocan en una tatjeta 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
12 Principios de diseño digital
tarjeta de circuito 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 objetivos, tecnologías, componentes, bibliotecas y alternativas de diseño
diferentes se quieran explorar. Como esta exploración se podría llevar a cabo
potencialmente de diferentes maneras, debemos escoger cuidadosamente una
metodología de diseño eficiente que determine el subconjunto adecuado de
niveles de abstracción, tareas de síntesis, el orden en que han de ser 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 convertir una des-
cripción de comportamiento en otra estructural que pueda implementarse con los
componentes de esta biblioteca. En los últimos 20 años, las bibliotecas más comu-
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.
Una vez analizados los requisitos del mercado, el arquitecto jefe escribirá la
especificación del producto que define el funcionamiento de dicho producto y
Introducción 13
1.3_5. Documentación
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 fma-
les del diseño en un microchip o una taIjeta 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-
te. En el caso de productos de altas prestaciones, es muy difícil hacer los tests a
velocidad normal ya que los verificadores tendrían que ser mucho más rápidos
que la velocidad normal del producto que se está verificando.
Las herramientas CAD disponibles para el di seño físico son las herramientas de
ubicación (placement tools) que permiten optimizar la situación de los compo-
nentes en una tatjeta
, 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 minimice 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 (roltting too/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
suministrar 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 test 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
herramientas 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 ayudamos 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 generación de test con herramientas para determinar el
20 Principios de diseño digital
peñIl de faltas (test grading), que nos permitan generar una lista de todas las fal-
. tas cubiertas por un conjunto particular de patrones de test.
Tmnsistores.
~
J
8 "', Diseílode 8
Máquina de estados
fi nitos ge neralizada
F---------....) transferencia entre
registros
1
J
;
Componenles
d< '
pro••"'''''
Sapiro, S., and R. l. Smith n. Halldbook of Design Automation. Englewood Cliffs, NI:
Prentice Hall, 1986.
Un tratamiento introductorio que proporciona una descripción concisa del proceso de
diseño, sus tareas básicas y el papel de las herramientas CAD en él. Requiere algunos
conocimientos básicos de diseño digital.
Wolf, W. Modem VLSI Design: A Systems Approach. Englewood Cliffs, NI: Prentice Hall,
1994.
Un texto fácil de leer explicando los principios del diseño VLSI y cubriendo varias
fases del diseño digital, desde el trazado de máscaras a la arquitectura.
•
1.9. PROBLEMAS
1.1. (Representación del diseño) Describa semáforos descrito como sigue
las diferencias"entre las representacio- Cuatro semáforos están orientados en
nes de comportamiento, estructural y cuatro direcciones, identificadas por
física de un producto electrónico. las letras N, S, W y E. Cada luz sigue
la siguiente secuencia : verde (45
1.2. (Representación del diseño) Añada
segundos), naranja (15 segundos), y
una nueva característica al reloj des-
rojo (60 segundos). Además, los
pertador descrito en la Sección 1.1 de
semáforos N y S están siempre del
fonna que si se mantiene presionado
mismo color, al igual que E y W, y los
durante 4 segundos el botón de avan-
semáforos N y S nunca están en verde
ce de los minutos o las horas, el tiem-
o amarillo al mismo tiempo que los E
po comience a avanzar a la velocidad
de 1 minuto o 1 hora cada 0.1 segun-
yw.
dos. Modificar, para reflejar este 1.5. (Proceso de diseño) Describir la djfe-
cambio en las especificaciones, las rencia entre:
representaciones (a) de comporta- (a) Una especificación y una espe-
miento, (b) estructural, y (c) física. cificación ejecutable
1.3. (Representación del diseño) Añada (b) Una biblioteca a medida y una
una nueva construcción a la represen- biblioteca estándar
tación de comportamiento del reloj (e) Síntesis y refinamiento
despertador, de forma que la señal (d) Representación y abstracción
Pitido tome el valor 1 sólo 5 segun- (e) Patrones de test y medidas de
dos después de que el reloj alcance la testeabilidad
hora y minuto de la alarma. (í) Documentación y descripción
Obsérvese que en dicha descripción, HDL
la señal Pitido tendrá el valor 1
1.6. (Herramientas CAD) Describe las
durante un minuto entero (es decir,
diferencias entre :
hasta que el contador de minutos
(a) Captura de esquemas y modela-
haya avanzado 1 y el valor del conta-
do
dor de minutos deje de ser igual que
(b) Diagrama de bloques y especifi-
el valor del registro de minutos).
cación
1.4. (Representación del diseño) Haga las (e) Verificación y simulación
representaciones de comportamiento (d) Optimización y traslación (ma-
y estructural de un controlador de peado) a la tecnología
26 Principios de diseño digital
FIGURA P1.8
Introducción 27
Tipos y
representaciones
de datos
M6quiDudoS
estados tloitoo
gooenIlzadoo
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
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.
111 - 1
D=¿d¡.r¡
;= - 11
y su valor equivale a
rn - l
B= ~>¡.2'
;=- n
muestran los enteros binarios del O al 10001 con sus equivalentes en octal, deci-
mal y hexadecimal. Obsérvese que los dígitos octales pueden representarse con
tres dígitos binarios, mientras que los dígitos hexadecimales y decimales pueden
representarse con cuatro dígitos binarios. La Tabla 2.2 muestra los enteros bina-
rios del O al 10001 Y sus equivalentes octal, decimal y hexadecimal codificados
en octal.
~ . ~- '· .. ~l!-~'
·h-·~· -. '. ,", . , .'
......
.;-;..
• ~ I ::, ~.4 • • ~..
_ . , 1 - .-~
:- . ~ ... _. .~. .
o O O O ~ .~~ ;:'.- " .~- -~ : \:; . ~
1 1 1 1
10 2 2 2 o 000 0000 0000
11 3 3 3 1 001 0001 0001
100 4 4 4 10 010 0010 0010
101 5 5 5 11 011 OOIJ 0011
110 6 6 6 100 100 0100 0100
IJI 7 7 7 101 101 0101 0101
1000 10 8 8 IJO IJO 0110 OIJO
1001 IJ 9 9 111 IU 0111 Olll
1010 12 1000 00 1 000 1000 1000
10 A
1001 001001 1001 1001
10U 13 11 B
1010 001 010 00010000 1010
1100 14 12 e 1011 001011 00010001 1011
1101 15 13 o IJOO 001 100 0001 0010 IJOO
1110 16 14 E IJOI 001 101 00010011 1101
UII 17 15 F 1110 001 UO 00010100 lIJO
10000 20 16 10 IJIJ 001 111 00010101 1111
10001 21 17 11 10000 010000 00010101 00010000
10001 010 001 0001 OIJ 1 0001 0001
765 8 = 111110101 2
765,432 8 = 111110101 ,1000110102
FEDI6 = 111111101101 2
FED,CBA = 111111101101,l1oo101110102
A pesar de que el sistema octal no se usa mucho hoy en día, el sistema hexa-
decimal es bastante popular, ya que se puede pasar fácilmente de o a binario, y
porque los datos normalizados de 8, 16, 32, y 64 bits se pueden expresar eficien-
temente con 2, 4, 8, y 16 dígitos hexadecimales.
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:
(2.2)
A partir de la Ecuación (2.2) podemos idear un procedimiento iterati va que
exarrune 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 signifi-
cativo, se multiplica S por la base r, y el siguiente dígito menos significativo (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 significativo, que representa el
equivalente decimal del número en base r.
La Ecuación ,(2.2) es también un punto de corruenzo útil para convertir 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 r, la parte entre paréntesis de la Ecuación (2.2) representa el
cociente
Q = ( .. .((dm_¡) r + dm_2Jr .. . )r + d¡ (2.3)
mientras lo que queda es el resto
R= do
s- o
2
S=D
2
;=0
Divide S entre r 3
s = cociente
di = resto
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)
213 + 16 = 13 resto 5
13 + 16 = O resto 13 (MSD)
Por tanto, 3417 10 = D59 16 •
PROBLEMA
Sumar los equivalentes 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 representaciones de datos 37
x O O
y O
Acarreos O
B y O O O O O O
s" s, s, s, s, Ss S, S, S, S, So
FIGURA 2.4 Ejemplo de suma binaria cuando se suman dos números binarios, x(987) e
y(123).
TABLA 2.3 Suma de dígitos binarios TABLA 2.4 Resta de dígitos binarios
.- . , -
• .~. . ' l', .' ~~f'!\.' , .
• - _ • • •- -y,,,--
O O O O O O O O O O
O O 1 O 1 O O 1 1 1
O 1 O O 1 O 1 O 1 1
O 1 1 1 O O 1 1 1 O
O O O 1 1 O O O 1
O 1 1 O 1 O 1 O O
1 O 1 O 1 1 O O O
1 1 1 1 1 1 1 1 1
38 Principios de diseño digital
;=0
; =0
Como en la suma, primero completamos la representación del 123 con ceros. Luego se resta
cada par de dígitos binarios empezando por los bits menos significativos y se obtienen los
resultados de acuerdo con la Tabla 2.4. La resta de Yo YXo genera el bit de resta do = O Yel
bit de adeudo b l = O, que se ilustra dentro de las Uneas punteadas de la Figura 2.6. De forma
similar, la resta de XI menos YI y b l genera dI = O Y b2 = O, como se ve en el área som-
breada de la figura . El proceso'sigue hasta que se genere d9 •
5 12 256 128 64 32 16 8 4 2
,,
x O O ,,
,,
,,
y O ,
,,r - - ---..J
Adeudos O O O O O O ,, O
,,
x+)' O O O O O ,, O
L _____
d, d, d, d, dd, d, d, d, d, do
D = D ' +1 (2.6)
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 + 1, 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úmeros negativos se pueden repre-
sentar sencillamente mediante el complemento 15, ya que D + 15 = O cuando guar-
damos sólo los m dígitos menos significativos. Abora 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 1 para números negativos.
Entonces un número negativo se obtiene a partir de un número positivo comple-
mentando cada dígito binario, incluyendo el bit de signo, y luego sumando 1 (es
decir, cambiamos todos los O por 1 y los 1 por O y luego sumamos uno). El aca-
rreo resultante del MSB se descarta. Por consiguiente si estamos complementan-
do O y el acarreo del MSB se descarta obtenemos Oen complemento a 2. Entonces
podemos concluir que en el sistema en complemento a 2, O tiene una única repre-
Tipos y representaciones de datos 43
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
,
44 Principios de diseño digital
pennite sumar y restar enteros tanto con signo como sin signo con el mismo cir-
cuito lógico. Como indicaba la Tabla 2.6 se puede obtener cualquier número entre
el menor (-8) y el mayor (+7) simplemente sumando 1 al número anterior e igno-
rando cualquier acarreo producido por los bits de signo.
son positivos, 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 O. Por otra
parte, si ambos operandos son negativos, hay desbordamiento siempre que no
haya acarreo hacia el bit de signo, ya que los números negativos grandes tienen
complementos pequeños. En este caso debería haber acarreo del bit de signo. Así,
podemos definir la regla de desbordamiento de la signiente manera: Hay desbor-
damiento en la suma siempre que el acarreo que va hacia el bit de signo sea dife-
rente del acarreo que produce el bit de signo.
~
~f"~:.:· I"~ . .JoÍ*-?' ;.. I '.".. ,;.~;..I .. 1
-8 1000
-7 1001 1111
-6 1010 1110
-5 10ll 1101
-4 lloo lloo
-3 llOI IOll
-2 IllO 1010
-1 llll 1001
O 0000 1000 6 0000
I 0001 0001
2 0010 0010
3 ooll 0011
4 0100 0100
5 0101 0101
6 0110 OllO
7 Olll 0111
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.
pp=o
i: o
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 LO 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.
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 utilizamos un procedimiento simi-
lar. Sin embargo, con números binarios puede haber sólo dos opciones para el
mayor múltiplo del divisor: cero y el divisor mismo. Consideremos, por ejemplo,
la división binaria de 186 entre 14:
1101 cociente (13)
1110) 10111010 dividendo (186)
1110 divisor desplazado
1001010 dividendo reducido
1110 di visor desplazado
10010 dividendo reducido
00000 divisor desplazado
10010 dividendo reducido
1110 divisor desplazado
lOO 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
(n + m) bits y un divisor de n bits dan lugar a un cociente de m bits, y un resto de
11 bits. Siempre que el divisor es cero, o el cociente necesita más de m 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.
tDS decimales distintDs de cerDo En este caSD decimDs que 99000 n.o está dentrD
del rangD de una representación CDn 4 dígitDs enteros.
En términDs generales, el rangD de un sistema numéricD se puede definir
CDmD el intervalD de tDdDS lDS números representables entre el mayDr y el menor.
En la representación CDn 4 dígitos, por ejemplo, el tamaño del rango es aproxi-
madamente 1()4. Desgraciadamente, muchos cálculos científicDs necesitan un
rangD mucho más ampliD que el que .ofrece este tiPD de representación en CDma
fija. Para ampliar este rangD, utilizamDs lo que se denomina números en coma
flotante, que tienen la forma
mantisa x (base y xponeme
donde s es igual al número de bits del campo del exponente. Por este motivo, este
exponente es siempre un número positivo.
O 9 31
Característica Fracción
Signo
exceso 127 nonnaJizada
•
Punto binario implicado
(b) Normalización de 32 bits
O 2 63
Característica Fracción
Signo
con sesgo 1032 normalizada
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 (: ~ ) = 16!11O!6! formas diferentes de escoger 10
palabras código específicas a partir de 16 posibles cadenas de 4 bits y lO! formas
distintas de asignar cada elección a 10 dígitos decimales. Entonces hay
l6! 10!/1O!6! = l6!/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, Binary 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 10 I O 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 formas, incluyen-
do las representaciones en signo y magnitud y en complemeoto 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ó[Link] complemento a 10 el signo + se representa con 0000 y el- con 1001.
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 corregirse 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 siguiente 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
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 c6cligo BCD sumando 00 11 (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ódígo 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 digito decimal se encuentra
en el rango entre 5 y 9, mientras que el segundo bit indica el rango de Oa 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-
nario 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.1 2.
información), en el que cada carácter se representa con una cadena de 7 bits. Este
código codifica 128 caracteres diferentes, incluyendo mayúsculas y minúsculas,
números, algunos signos de puntuación, y una serie de caracteres de control. Las 128
palabras de este código se muestran en la Tabla 2.8, que nos dice, por ejemplo, que
la palabra "DESIGN" se representa con las siguientes seis palabras código:
1000100 1000 lO 1" 1010011 1001001 lOOO111 1001110
Cada una de estas palabras del código ASCII se suele almacenar en un byte,
que incluye un bit de paridad extra que se usa para detección de errores.
los recibidos. Por ejemplo, una radiación cósmica podría producir un fallo tem-
poral en un circuito de memoria cambiando el valor de una única celda 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 detección de errores. Sin embargo, para comprender estos códigos de
detección de errores primero necesitamos introducir el concepto de distancia boo-
leana, lo que requiere la definición de n-cubo.
o
• • (.)
10
•
11
•
(b)
•00 0•1
101• 111•
1~4~/ (o)
/;.170~1
000• 010•
111 0 JI II
(d)
0000 0001
FIGURA 2. 11 n-cubos, con n = 1, 2, 3 Y 4.
Tipos y representaciones de datos 59
lesquiera del código sea ~ 2. En otras palabras, debemos escoger palabras del
código de tal fonna 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,
Oll, lOO Y 1l0. Como un error en un solo 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.12(b), en este cubo un error en un solo bit
no puede transfonnar 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ódigo 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 (n + 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 fonna 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
(n + 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 el número total de unos de una pala-
bra válida del código de (n + 1) bits es impar, se denomina código de paridad
impar. En tales casos, estos códigos se denominan códigos de paridad de 1 bit
para enfatizar el hecho de que cada uno usa un único bit de paridad. Como ejem-
plo, la Figura 2.12(b) muestra un código de paridad par de n bits, que consiste en
cuatro palabras: 000, 011, 101 , 110. Como se puede ver, cada palabra del código
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 infonnación, mientras que el bit menos significativo es
el bit de paridad. Por el contrario, también podríamos definir 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 palahra del
código tendrá uno o tres unos.
Como el lector puede imaginar, estos códigos de paridad de 1 bit no pueden
detectar errores en 2 bits, ya que un cambio de dos bits cualesquiera de O a I o
de 1 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 1 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 1 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-
tir el byte recibido, o a veces el mensaje entero.
Tipos y representaciones de datos 61
101 11 1
• o
100 / 110 /
f!lr---~
o o
• 0[!]11
/ 001
000 010
10l
100 / 0 110/
1
0
111
,4 ,/ 101 lB
/~' v~
O 0- [!]
/00~01l
t!J •
000 010 000 010
t t t
Bits de paridad
De acuerdo con estos grupos de paridad, el valor del bit de paridad de la posi-
ción 1 tiene que elegirse de modo que el número de unos en las posiciones 7, 5, 3
y 1 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 Harnming de 7 bits.
Partiendo de la información de esta tabla, es fácil ver que la distancia mínima
de un código de Harnming tiene 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 1 o 2 bits sólo produce palabras que no
pertenecen al código, que no tienen valores correctos en los bits de paridad. Para
probar que un cambio de 1 bit siempre generará una palabra que no sea del códi-
go, hemos de ver que un cambio de l 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 l bit siempre debe-
ría provocar al menos un bit de paridad incorrecto.
64 Principios de diseño digital
Por otra parte, un cambio de 2 bits en una palabra del código no cambia el
valor del bit de paridad si ambos bits pertenecen al mismo grupo de paridad. Sin
embargo no es posible ya que para dos posiciones cualesquiera de una palabra 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 Harnming tienen una distancia de
tres o más.
Partiendo de esta explicación no es difícil ver cómo corregir errores de un solo
bit cuando 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 1010101 a la palabra que no pertenece al
código 1110101. Cuando contamos el número de unos que hay en los bits 7, 6, S
y 4 de la palabra del código recibida, encontramos que este número es impar. De
forma similar, encontramos que los bits 7, 6, 3 y 2 contienen un número impar de
Tipos y representaciones de datos 6S
unos. Por tanto sabemos que tiene que haber un error en los bits de paridad 4 y 2.
Como la suma de los números en esas posiciones es 6, sabemos que el error se ha
producido en el sexto bit.
Este código Hamming de distancia 3 se podría convertir fácilmente en un
código de distancia 4 sumando un bit de paridad más, cuyo valor se elige de
modo que el número de unos en todos los bits, incluyendo el nuevo, sea par. En
la Tabla 2.9 se muestran todas las palabras código de este código de distancia 3
modificado. Como en el caso del código de paridad par de un bit, este bit adi-
cional asegura que se puede detectar un número impar de errores en un solo bit
si se produjesen. En particular, cualquier error de tres bits es detectable con este
código.
Los códigos Hamming de distancia 3 y 4 se usan habitualmente para detec-
ción y corrección de errores en las memorias de las computadoras. Como estos
componentes de ,memoria representan la parte más importante de cualquier
computador, los códigos Hamming nos proporcionan una relación coste-efi-
ciente que mejora la fiabilidad del sistema, ya que el número de bits de paridad
usados para la corrección de memoria crece sólo logarítmicamente con el tama-
ño de palabra.
7 6 5 4 3 2 Posiciones
de los bits
Palabra código
1
IO I1 IO I1 O
I1 correcta
Posiciones
7 6 5 4 3 2 de los bits
O O
I I Palabra código
incorrecta
t
Bit
t
Paridad
t t
Paridad Paridad
incorrecto errónea errónea correcta
Waser, S. and M. J. Flynn. llltroductioll lO Arithmetic for Digital System Desigllers. New
York: Holt, Rinehart and Winston, 1982.
Un tratamiento más detallado de la aritmética de computadores dirigido a aquellos que
diseñan circuüos aritméticos.
2.16. PROBLEMAS
2.1. (Representación binaria) Exprese los (a) 606
siguientes números decimales en (b) 123
binario. (e) 6650
(a) 129 (d) 345,6
(b) 511
(e) 1000 2.8. (Conversión de números) Pase los
(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 210 a binario, octal
número mayor que se puede repre- y base 9.
sentar con: (a) 9; (b) 10; (e) 15 ; y (d) (b) El hexadecimal 1All2, . a deci-
16 bits? mal, binario y base 7
(e) El binario 101101101 , a octal,
2.3. (Representación binaria) Liste todos
decimal, y base 12
los díg itos y sus representaciones en
(d) 12All " en base 12 a binario,
base 13.
base 6 y base 7.
2.4. (Conversión de números) Pase los
2.9. (Convers ión de números) Formule un
siguientes dígitos binarios a notación
procedimiento para pasar un número
hexadecimal .
de base 3 a base 9.
(a) 1010101010
(b) 1000000 I 2.10. (Conversión de números) Calcule el
(e) 11111111111 valordexsi23x ; 111100010, .
(d) 1001 10011 00 1
2.11. (Reglas para sum ar) Sume los
2.5. (Convers ión de números) Dé los siguientes números sin pasarlos a su
equivalentes binarios de los siguien- representación decimal.
tes números hexadecimales. (a ) Ol llO,y 11 0011 ,
(a) 123.45 (b) 98A 12 Y 234"
(b) 1000.50 (e) ABC ,. y A78 ,.
(e) [Link]
2.12. (Aritmética binaria) Evalúe las
(d) OA7,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) ( 101101 + 11101 )'
(a) 13 1 (b) ( 100101 + 101101 )(10010 1 -
(b) 208 101101 )
(e) 1001 (e) ( 111 0 11 + 10 10 1)/( 110111 -
(d) 5050 JOllOl )
2.7. (Conversión de números) Calcule los 2.13. (Complementar números) Calcule 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
Algebra
booleana y
diseño lógico
Sistema binario 2
y representación
de dalos
---
~de8
0IIId00_
72 Principios de diseño digital
AxWma l. 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.
Axwma 2. Los elementos identidad de este álgebra son el O para el operador + y el l
para el operador '. A partir de las Tablas 3.1 y 3.2, por ejemplo, tenemos que
00 O+O=~yO+I=I+O=1
(b) l· 1 = 1, Y 1 . O = O . 1 = O
lo que demuestra que O y 1 son, ambos, elementos identidad.
Álgebra booleana y diseño lógico 75
o o o O o O
O I O O I I
O O I O 1
I I I 1
O O O O O O O O
O O I I O O O O
O O I O O O O
O 1 I I O O O O
I O O O O O O O
1 O I I I O 1 I
I I O I I 1 O I
I I I I I I I 1
TABLA 3.4
O O O O O O O O
O O I O O O I O
O 1 O O O 1 O O
O I I 1 1 I 1 I
1 O O O I 1 I 1
1 O 1 O 1 I 1 1
1 1 O O 1 1 1 I
1 1 1 1 1 I 1 I
76 Principios de diseño digital
o l
l O
o o o I I I 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 1(b) que presentamos antes procede
de aplicar el principio de dualidad al Teorema l(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(xl' x 2' ... , x n) es una expresión booleana de n variables, y Eixl' x 2' ... ,..) es
su expresión dual, entonces
E(xl' x 2' ... , x n) = Eix' l' x' 2' ..., x',,) (3.1 )
Usando esta propiedad del álgebra booleana, podemos generalizar la ley de De
Morgan dada en el Teorema 6 a más de dos variables de la siguiente forma:
(XI +x2 + ... +xn)' =x' 1x'2··· x'n (3.2)
(3.3)
Álgebra booleana y diseño lógico 79
(a) x = O,Y = 1, z = 1;
(b) x = 1,y= O, z = 1;
(c) x = 1,Y = 1, z = O;
(d) x = 1, Y = 1, z = 1;
Por otra parte, para el resto de las combinaciones de los valores de las varia-
bles, F) 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 digital
~;SDE,1:A8
HAllES ~u.
DE fiI:A.
O
lL
O O O O
"1
1 O O 1 O 1
2 O 1 O O 1
3 O 1 1 1 O
4 1 O O O 1
5 1 O 1 1 O
6 1 1 O 1 O
7 1 1 1 1 O
xy + xz + yz necesita sólo tres operadores AND y dos OR en vez de los cinco ope-
radores AND, dos OR, y dos NOT que requería la expresión xy + xy'z + xyz.
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 x y
}-.-.r
Como se puede deducir del ejemplo, es una regla general que el número de ope-
radores AND 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
AND y dos OR, lo que hace un total de siete; la segunda expresión, que tiene sólo
seis literales, necesita tres operadores AND y dos OR, lo que hace un total de cinco.
Entonces, sabemos que una reducción en el número de literales será equivalente a
una reducción en el número de operadores, así que se puede disminuir el número de
operadores AND y OR reduciendo el número de literales en una expresión.
Como muestra el ejemplo visto, el número de operadores de una 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 minimo de operadores o literales en la expresión. Como
resultado, los diseñadores usualmente utilizan una técnica de tanteo (ensayo-
error), empleando los distintos axiomas, los teoremas básicos y cualquier otra
regla de manipulación que desarrollan a partir de su experienCia. 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
si bk =1
si bk =O
o O O xY'z' "'o
O O I x'y'z mi
O I O x'yz' m2
O I I x'yz "'3
I O O xy'z' m,
I O I xy'z m,
I I O xyz' m.
I I I xyz m7
.C e ~
ilIIf!tP IS
_lOe! D!LA
y z P,
O O O O O 1
1 O O I O 1
2 O 1 O O 1
3 O 1 1 1 O
4 1 O O O 1
5 1 O 1 1 O
6 1 1 O 1 O
7 1 1 1 I O
term, Mi' 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 O, y estaría com-
plementada si su valor es 1. En la Tabla 3. \1 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
m¡' = Mi YM/ = mi
TABLA 3.10 Tabla de verdad de TABLA 3.11 Maxterms para tres variables binarias
F= x+ yz
O O O x + y+z Mo
o O O O O O I x+y+ z' MI
O O I O O I O x+y'+ z M,
O I O O O I I X+y'+Z' M,
O I I I I O O x +y +z M,
I O O I I O I x + y + z' M,
I O 1 I I I O x + /+z M.
I I O I I I I x + /+z' M7
I I I I
o O O 1
O O 1 1
O 1 O O
O 1 1 O
1 O O O
l O 1 1
1 1 O O
1 1 1 1
Álgebra booleana y diseño lógico 89
De forma similar, la expresió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
Hay tres formas 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 normalizada.
F, = xy + xz + yz
= xy + (x + y)z
=x(y+ z)+yz
=xz + y(x + z)
Expresión algebraica
Forma no normalizada
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
EXllllilli',
AUI 571.,. ~
Inversor x . =- - F F= x' 2
Adaptador
AND
x
:=a-• F
F
F=x
F= xy
4
6
2
2,4
NAND
:=a- F F = (xy)' 4 1,4
NOR
XOR
:=a- F F = (x + y)'
F=x (fJy
4
14
1,4
4,2
; =:j. F
retardo de 4,8 os de e, a c'+I' La implementación usa puertas AND, OR YXOR, que son más
lentas que las correspondientes puertas NAND, NOR y XNOR. Sin embargo, si modifica-
mos las expresiones de Si y e j+! tendremos las ventajas de la rapidez y mejor precio de las
puertas NAND y NOR. Para ello, primero transformamos la expresión de e j + 1 corno sigue,
aplicando los teoremas de De Morgan:
C¡ + 1 = xiY¡ + c¡(x¡ + Yi)
= «x¡y,)'(c¡(x, + y,))')'
De forma similar, transfonnamos la expresión de si aSÍ:
Si = (Xi Ea y¡)c'¡ + (X¡0Y¡)C¡
= (x,0y,)'e', + (x¡0y,)c,
= (x¡0y,)0e,
Además, también podemos implementar x¡0y, con dos puertas NAND y una OR:
X¡0Y¡ = x¡y; + X'¡y'i
= «x¡y,)'(x' ¡y',)')'
= «x¡y,)'(x, + y,»'
Usando estas expresiones. podemos implementar un sumador completo más rápi -
do como se ve en la Figura 3.3(c). Obsérvese que este sumador tarda sólo 2,8 ns de
c¡ a ej+1' en comparación con los 4,8 os del di seño anterior. La implementac ión sería
también menos cara, ya que usa sólo 36 transistores en lugar de los 48 que necesita
el otro.
A partir del Ejemplo 3.7, podemos generalizar y decir que intentar minimi-
zar el número de operadores no da necesariamente el diseño más rápido ni tam-
poco el menos caro, pero si intentamos encontrar la expresión que use las puer-
tas más rápidas o menos caras de la biblioteca, puede que consigamos los obje-
tivos.
0, ~, .,
O O O O O
O O 1 O 1
O 1 O O 1
O 1 1 1 O
O O O 1
O 1 1 O
1 O 1 O
1 1 1 1
98 Principios de diseño digital
Xi Yi
r--\.:~\--+--.--- ci
4,8
C¡ a Ci + I
e¡ a Si 4,2
Xj' Yi a e¡ + 1 9,0
Xi' Yi a Si 8,4
'i
(a) Diseño con un número (b) Retardos Entrada/Salida para el diseño
mínimo de operadores del apartado (a)
Xi Yi
I++---, Ci
ei a c j + I 2,8
e¡ a Si 3,8
Xi' Yi a Ci + 1 5,2
Xi'Y i aSí 7,2
'i
(e) Diseño con puertas (d) Retardos Entrada/Salida para e l diseño
NAND y OR del apartado (e)
SfiEOlO
GIW100 =. COSTE DE
(HOMERO -...
TRANSISTORES)
-' ""&f)
M!RfA
AND de 4 entradas
r=a- F F = XYZIV 10 3,2
OR de 3 entradas
~~F F= x + y + z 8 2,8
OR de 4 entradas
~F F=x+y+ z +w \O 3,2
NOR de 3 entradas
~~F F=(x+ y + z)' 8 1,8
NOR de 4 entradas
f~F F = (x + y + Z + IV)' 10 2,2
Las puertas que tienen varias entradas y pueden realizar varias operaciones se
denominan frecuentemente puertas complejas. En los siguientes dos ejemplos
mostraremos su utilidad.
Implementar el sumador completo del Ejemplo 3.7 usando las puertas adecuadas de varias
entradas mostradas en la Tabla 3.15.
Álgebra booleana y diseño lógico 101
SOLUCIÓN
Para usar puertas de varias entradas, necesitarnos partir de la forma normalizada, concreta-
mente de una con el menor número posible de operadores, que nos pennita minimizar el
coste. Además, intentaremos usar las puertas más rápidas de la biblioteca, para obtener el
menor retardo posible. Usualmente, las puertas más rápidas de la biblioteca son las puertas
NANO y NOR, así que para usarlas 'aplicaremos los teoremas de De Morgan hasta que
hayamos convertido la forma nonnalizada seleccionada en una expresión con operadores
NANO o NOR.
En el caso del sumador completo, modificamos la expresión de ei+! y Si de la siguiente
forma:
•
e j + 1 = x¡Y¡ + cr ¡ + ciY¡
= «x;y,)'(cr'';l'(c¡y;l'l'
AOI
2 de ancho .t F F= (wx + yz)' 8 2,0
2 entradas
AOI
,"
w
3 de ancho F F = (uv + wx + y¡)' 12 2,4
2 entradas x
y
,
AOI
2 de ancho
3 entradas
"'-
,
W
x
,
y
F F = (uvw + xy¡)' 12 2,2
OAI
2 de ancho
2 entradas
DA!
3 de ancho
f'-
u
,
W
F
F
F
F
= «w + x)(y + z)J'
12
2,0
2,2
x
2 entradas
y
~.
DAI
2 de ancho W
x
F F = «11 + v + w)(x + y + z)J' 12 2,4
3 entradas )'
Z
102 Principios de diseño digital
(a) Diseño con puenas de varios operadores (b) Retardos Entrada/Salida para el diseño
del apartado (a)
FIGURA 3.4 Diseño del sumador completo con puertas de varias entradas.
Implementar el sumador completo usando las puertas apropiadas de varios operadores que
se muestran en la Tabla 3.16.
SOLUCIÓN
Cuando se usan puertas de varios operadores podemos empezar transformando las expre-
siones funcionales en subexpresiones AOI 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 niveles. 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 niveles junto con una puerta NAND, como se muestra a continua-
ción:
Si = xjy',e,. + x'¡y,c'¡ + x¡y',c'¡ + x¡YF¡
;; «x'¡y',c¡ + x¡Y,c'¡)'(x¡y',c'¡ + x¡Y,c¡Y)'
Para usar una única puerta AOI de 2 entradas y 3 niveles 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
r ~ . _. . . ".
~.. • . .~~i f,;.. .. .. 4,./~"-:~ ~
~ ... r. \'0'. < ";.;~'."
e¡ a ej + I 3,4
c¡ a Si 4,4
Xi' Yi a ej. I 3,4
Xi' y . a Si 4,4
Si
(a) Diseño con puertas de varios operadores (b) Retardos Entrada/Salida para el diseño
del apartado (a)
FIGURA 3.5 Diseno del sumador completo con puertas de varios operadores.
(a) Componamiento de la puerta (b) NANO con lógica positiva (e) NOR con lógica negativa
FIGURA 3.6 Interpretación del circuito cuya salida es L sólo cuando ambas entradas son H.
(a) Comportamiento de la puerta (h) NOR con lógica positiva (e) NAND con lógica negativa
FIGURA 3.7 Interpretación del circuito cuya salida es L siempre que una de las entradas es H.
4,0 ,..--,..--,,----,---.--,---.,--,.---,
3.5
3,0
,,0
• 2,5 1 - - + -
:9
~
.g 2.0 f--+--t'
~
t: 1,5 f--+--.-
¡!:
I,OI---Il--rt
0,5 I--t--rlf-
FIGURA 3.8 Caracterlstica de entrada/salida tlpica de las puertas en la familia lógica transis-
tor-transistor.
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 tensi6n de salida de una puerta excita-
dora, en la parte izquierda, y el rango de tensi6n de entrada de las puertas excita-
das, en la parte derecha.
Cualquier tensi6n entre VOH y Vce se considera H y cualquier tensi6n entre O
y VOL se considera L. De forma similar, cualquier tensi6n entre V IH y V ce se con-
sidera H y cualquier tensi6n entre O y VIL se considera L.
La diferencia de tensi6n VOH - VIH se denomina margen de ruido del nivel alto,
ya que cualquier tensión de ruido menor de V OH - V IH será tolerada y no cambia-
rá el valor de salida de la puerta excitada. Con el mismo razonamiento, la dife-
rencia de tensi6n VIL - VOL se denomina margen de ruido del nivel bajo. En el
ejemplo de la 16gica transistor-transistor, V OH = 2.4, V IH = 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
puerta. Tales márgenes de ruido, que no se dan en circuitos anal6gicos, hacen los
diseños digitales más fiables que los anal6gicos.
Rango de Rango de
tensión de tensión de
salida entrada
Por tanto, la conectividad de salida es igual a max(400/40, 16/ 1.6) = 10. Esto
significa que cada puerta puede excitar a otras 10 puertas de la misma 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 niveles de tensión de sali-
da se degradarán y la puerta irá más despacio.
Las familias lógicas modernas metal-óxido-semiconductor (MOS) tienen una
conectividad de salida de alrededor de 50, ya que cada puerta debe dar o recibir
corriente sólo durante la transición de H a L ó de L a H.
Álgebra booleana y diseño lógico 109
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 fuente de alimentación: I CCH' I cerY I cCL. En las anti-
guas familias lógicas como TIL, la transición de corriente 1CcT es despreciable en
comparación con ICCH e ICCL" Suponiendo que la puerta permanece un tiempo
aproximadamente igual en los estados alto y bajo, y no está apenas en el estado
de transición, y la corriente media es igual a (lCCH + I CCL)/2. Se puede calcular 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,
P mema = Vcc X (lcc + 1ccJI2
La disipació[Link] potencia se mide en milivatios (mW) y para la familia lógi-
ca TIL este valor es aproximadamente de 10 mW.
En tecnologías modernas como la familia CMOS, las corrientes en estado
estacionario ICCH e I cCL son despreciables en comparación con l cer y la disipa-
ción de potencia media es
Pmedia = VCC X l cer
donde l cer incluye sólo la corriente media durante el periodo de transición. Como
la corriente 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 aum~nta con
la frecuencia de cambio de la salida.
La disipación de potencia es una medida importante por dos razones. Primero,
la cantidad de corriente y la potencia disponible en una fuente es casi constante.
Entonces, la disipación de potencia de un circuito 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
microchip 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.
Tiempo Tiempo
de subida ,de baja~
~: :.....-.:
Salida
• - - - 50%
• • • 10%
: t
Por ejemplo, los retardos de propagación máximos para las puertas NAND de
2 entradas en la familia TIL son tPHL = 22 ns y tpUl = 15 ns, con un retardo medio
lp = 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-
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.
Colector Colector
L
Base ;:=::....;
B
H.....:
Emisor Emisor
(a) Tensión baja en la base (b) Tensión alta en la base
Como se muestra en la Figura 3.13, una puerta TIL típica consta de tres partes:
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 (pull-up) y de bajada (pull-down), alternan
sus estados cerrándose alternativamente. Cuando el transistor de subida está cerra-
do el de bajada está abierto, la salida de la puerta 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"
I Etapa
de
~ salida
- Ug;ca Divisor
~k
Entradas de la - de fase
Saüda
- ~
puerta
~
I 1
¡
GNO
w w
x x
F F = (wx+yz)'
y y
z
(a) Diseño del circuito (b) Símbolo gráfico
FIGURA 3.14 ADN cableada de dos puertas de colector abierto en la familia lógica TIL.
RTL 3 2 0,4 5 20 25
DTL 4 3 2 1,0 8 12 30
TIL 4 1 5 0,4 10 10 9
Schottky TIL 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
AND 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,
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-coupled-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.
Drenador Drenador
Puerta Puerta
Fuente Fuente
VDD =+5V
T,
x F
L 00 off H
T,
H off 00 L
o GND
(a) Inversor (b) Tabla de verdad del inversor
VDD =+5V
T,
T,
F ~ T4
x T, L L on on off off H
L H on off off on H
y T,
H L off on on off H
H H off off on on L
o GND
(e) Puerta NANO (d) Tabla de verdad de la puerta NANO
(. VDD =+5V
r-c:(~,) T ,
T,
L L 00 00 off off H
x-n:v L H 00 off off 00 L
y -L-t--{,n T, H L off 00 00 off L
H H off off 00 on L
T GND
(e) Puerta NOR ef) Tabla de verdad de la puerta NQR
puerta, es la familia lógica con mayor densidad, que se mide en número de puer-
tas por área de silicio. Además, como el dióxido de silicio es muy buen aislante,
el terminal de puerta está muy bien aislado de la fuente y del drenador y por tanto
los transistores CMOS dan corriente sólo durante la transición de H a L y la reci-
Álgebra booleana y diseño lógico 117
0,785
@@)@@@)®®
r1
~ ~
,020 -.11.- 0,070 Precintado
de cnstal
¡ ~
Planode
Asentamiento
-t~
t ~ 0,Q30
0,130 1-1-,
Espaciado enlre 0.100
conectores
FIGURA 3.17 Encapsulado de cerámica con 14 conjK:tores (todas las dimensiones lineales se
dan en pulgadas).
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.
~r;;4:F'=;-,oJ'"-a--"T:;;¡: v ee
14 Vcc
ffi--0
mJ
6
a612]
8
7"'--_ _ _
GND CiJL.: .!::ITJ==
(.)7400 (b)7404
GND~ ________ ~~
GND 12L_ _==:I.!J
(c)7420 (d)7430
':ffi1~
: (1:)) Entrada
D ( 11) P"
Entrada
de datos
'~
F (13)
Entrada
impar
o]b
H (2)
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
(custom 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-
rrollado metodologías de diseño de celdas para acortar el tiempo de diseño per-
mitiendo el uso de celdas estándar (standard cel/s) 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 filas .
Las tiras borizontales 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 Figura 3.20.
Las celdas estándar se pueden reunir en bibliotecas de celdas 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 diseñ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ógicas que se han capturado y el retardo
Álgebra booleana y diseño lógico 121
+--- Canal de
interconexionado
densidad del array de puertas es mucho menor 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 correspondiente chip a medida.
D
- !!l!i.C;J'
p. ¡- 1- l:?) r-
'-"'
n
r;-
11 ---
!-
y,
r~"·) .
iD 1",;)
1-
~ !-
e,
p~C. J 1
Ü =ft-> fU r"I--I
FIGURA 3.22 Implementación del sumador completo con tecnología de array de puertas.
1,
1,
--
-- to~
booIeaoa
-
deUDbiI
1,
1,
...
variables
Memoria
h, deDDbit
-ro~
h, l'uaci6o>
booleana
lo, de_
-~ variables
81 81 g) 84 G GQ •
Sin usar 8,
I
X O O O O
X O O I O G
8,
X O I O O e¡. J
X O I I I
8, XI O O O
XI O I I
8, X I I O I
x, XI I I I
J,
h, h, h, h3 h4 H
e, - O O O
O O I
X
X
O
I
h, HQ
O I O X I
Sin usar
h,
h,
O I I
I O O
I O I
X
X
X
O
I
O
I H
I I X O
I I I º X I
3.14. PROBLEMAS
3.1. (Teoremas del álgebra booleana) (e) F(x, y, z) = (x + z)'
Pruebe los siguientes teoremas. (d) F(x, y, z) = (x + z)'(x + y')
(a) Teorema 2(a) y (b) .
(h) Teorema 3(a) y (b) 3.5. (Funciones booleanas) Obtenga los
(e) Teorema 4(a) y (b) complementos de las funciones del
(d) Teorema 5(a) y (b) Problema 3.3, usando la ley de De
(e) Teorema 6(a) y (b) Morgan.
binario
y representación
de datos
132 Principios de diseño digital
o
0----0
(a) n =1
00 01
o o
o o
10 11
(b) n" 2
(e) n :z 3
00 1~.:.
0_ _-"
1000 100 1
(d) n:: 4
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 operadores, 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 formas no son únicas, es necesario un procedimiento que
permita obtener una forma no estándar que tenga el mínimo número de operado-
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 á 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 carninas críticos pue-
dan ser implementados con las puertas más rápidas de la biblioteca de puertas.
En el Capítulo 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.
dad y cada vértice del n-cubo booleano. En la Figura 4.2, por ejemplo, se muestra
la tabla de verdad y las correspondientes representaciones con cubos de las cono-
cidas funciones de acarreo y suma, utilizadas ampliamente como ejemplos en el
Capítulo 3.
Para obtener la forma 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 m-
subcubo de un n-cubo puede defInirse como el conjunto de 2m 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 2m posibles combinaciones de valores O y l. Así cada
subcubo puede caracterizarse por los valores de las n-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 del m-subcubo, los 2m minterms que hacen I a la función
en ese subcubo podrían expresarse con un único término de n-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' ... , xn_ m las variables cuyos valores
son iguales en cada vértice del n-cubo, y sean 11, Ir.,ln-m los literales tales que
li = Xi siempre que Xi = 1, Y li = Xi siempre que Xi = O. Entonces el valor de la fun-
ción del m-subcubo es igual a
o O O O O 100 101
O O 1 O 1 (b) FunCión de acarreo e¡.1
O 1 O O 1
O 1 1 1 O
1 O O O 1
1 O 1 1 O
1 1 O 1 O
1 1 1 1 1
100 101
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 = 1. Este mapa podría ser utilizado 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 contiene cuatro celdas, que representan los cuatro
mintenns de una función booleana de dos variables, a saber, x'y', x'y, xy', xy. El
subcubo más grande en un mapa de dos variables es un l-cubo, que representa una
variable o su complemento. Por ejemplo, la Figura 4.4(b) muestra tres de estos
subcubos de tamaño 1. Un mapa de dos variables podría utilizarse para represen-
tar cada una de las funciones de dos variables. Como ejemplo, las funciones boo-
leanas AND, 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), (c) y (d).
En la Figura 4.6(a) se presenta un mapa de tres variables que contiene ocho
celdas, correspondientes a los ocho mintenns de una función booleana de tres
136 Principios de diseño digital
variables. A partir del mapa puede verse que los subcubos 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.
(a) n = I
y
x o I
mo mi
O
I
m, mJ
(b) ti =2
yz
x 00 01 II 10
mo mi ni m,
O
lo. .J
I
lo. .J
m m m m,
(e) ti =3
xy
zw 00
n
01
, , 11 10
n
00
1.. m mi m m, f-'
O1 1..
m m, ni m, f-'
I
1.. ni: ni mi m J4 ~
O
lo. ni, ni, mil m IO f-'
U ...J U ...J
(d) ti =4
y y
o 1 o •
x
, x
" .- - -"
o xy ' xy
o !Subcubo x
!Subcubo y
l' xy xy $ubcubo x
y
x o 1
,
o
,
1 1
(b) ANO, xy
y
x o 1
o 1
,
o O O O O
1 1
O 1 O 1 1 1 '1
1 O O 1 1
1 1 1 1 O (e) OR: x + y
1 1
FIGURA 4.5 Representación con mapas de tres funciones booleanas de dos variables.
138 Principios de diseño digital
y,
x 00 01 11 10
l'
, , ,
o x'y' :.: · x 'y ' :.: x'>" x 'y:.::'
, , ; o
1
xy ' z' xy' , X)'Z xy,'
y,
-,
- - y,
-
,[
- - 1 f-
,y
, ,- --' '- -- '--t- xt
I I I I ~
I _ ~_-_-_-_-_-_- _-_-_-_-_-_- _-_-_-_- _ .J
,
ei ()() 01 11 10
., , ,
- -,
O ,' 1 ,
, ,_ L -
,
r- -, ij 1I - -,
1 , 1 I-_~ - ~I
--
o O O O O (b) FunciÓn acarreo: ci+,=xiY¡+ c¡X¡+ ciY¡
O O I O I
O I O O I
O I I I O XiY¡
()() 01 11 10
I O O O I ei , , ,
I O I I O
O 1 1
1 1 O 1 O
1 1 1 1 1 , .< ..
1
"
1 1
(a) Tabla de verdad
,w
00 01 11 10
"
, ,
00 x'y''l.'W :litw x'y'z-w xizw'
•
01 xyiw' xy",w xyzw xyzw'
.
"
.
11 xytw xytw X)'ZW "",W
. ,.
10 xy'(W xy't w xy',w xy'zw'
00
01
'- -
.. ,.
¡--- -1
11 ,
_-.-.-.-_-.-.-_... - - - - .1
(b) Ejemplos de 2-subcubos
xy 00 01 11 10
,- 00 , T -,
,, ;".J _
, , -L '
, ~ ¡..
, 01 , ,
I
x
,- " 1- --- - --,.
J~
,
11
" =- w
"
,.
10
"
-- ~ --
l. _ :.. - . - . - . -_ - . -_ -_ - . -_ - . -_ -_ - . - . -~ _ ~
(e) Ejemplos de 3-subcubos
Y/Yo
X¡Xo 00 01 11 10
00
01
,1 ,
I I
o O O O O 1 O ,1
O O O J O O J '- - r
O O J O O O J , , "
O O J J O O J 10 ,' 1 1 ,
O J O O J O O
(b) FunCión "mayor que":
O J O J O J O
J J G = x,i. + xoY,Yo + x Jx'~o
O O O O J
O J J J O O J Y/Yo
1 O O O J O O
J O O J J O O o 00
, 01
, ,' 11 I 10
,
1 O J O O 1 O 00 ~ 1 - - -Irl l "
.J!.__ J
- -. , ~
J O J J O O J , , , ..
J J O O 1 O O "
1 1 O 1 1 O O 01 ,' 1 1 ' ,
1 1 1 O 1 O O -- -- "
J J J J O J O 11
" " " "
,
(a) Tabla de verdad
10
• ,,- 1-,," '"
, ,,
(e) Función "menor que" :
L = xIJ, + x'¡.X" aYo + x'oY .Yo
FIGURA 4.9 Representación de las funciones "mayor que" y "menor quell en los mapas.
v=o v= 1
xy 00 01 11 10 00 01 11 10
, ,
00
" " " " "
m, m, m, m, mI' ma m" mI,
, , ,
• ." ,. .,
01 m, m, m, m, m2J
"
m,o m" m"
'. ,< ., <
" " " "
11 m" m" m" m" m,o
m" m" m' l
,
, ,
"
__
.,
10 m,
" '"
m. m" m" m" m" m" m"
v= 1
xy 00 0\ 11 \0
,. , , , _00
_ 1f 0\
,. 11 \0
,- -- - - - -- u
"
.00 , , -,,
~
,~ ';:--, ~ x'
,, , , . ,, ,, , " " ,1 " , 1 '2
0\
,
- - ,.- - - - --
, , .. - ,- --1-
l'
-
,, 'u
,
_1- _ -1
"
,,..
" "
.- - -" .., ,,
1 31
r- - - ,
, , ,, ,... ,
11 ~
.'
1
, ,, ,
,, " , ,.'" " I ::~
, , ,
, !';
.... .
1
\0 1
- , -
xi • '
- --------~~~~~~,- -- -----
I~ - J
'.'
(b) Ejemplo de subcubos de tamaños 8 y 16
v=1
,w
xy 00 0\ 11 \0
, , 00 0\
,. 11
'o
\0
" " "
00
mo m, m, m, m" m 17 m '9 m
l8
, , . ,
0\ m, m, m, m, m 20
"
m
" m 2J
"
m 2}
21
,. ;; .. ,.
m15" m"
l.'
11 m 12
" "
m" m" m,. m JJ m JO
, , , ,. /. ..
lO m, m,
"
m" m" m" m" m" m"
00
'.'
"
m",
)
" • " " '.
m" m" m" m" m",
o\
• ,. ,
m"
"
<- ,.
n/ SI
"
.
m" m" m" m" m" m" m" m"
u=J
11
. " " ~
.' " " ~
v :: 1
,w
xy 00 01 II 10 00 01 11 10
, ,
00
,, ,, , r., - --
" "
,, ' ,
,,,
- I I ~F
"
01 , "
"r - --
U",o
,, ,, '.' u ,
, - ,
" ,t- ....----z- xv
II
, ,
r- " r-
10 ,,
..-,
, " "
--
,
,, " " !- -'"1-- - ~,+.Li' --
"
"
-. ;7
- . J,, ,,
,,
.-
," , •
00
-..
,, ,
, ,
" -.
, ,•
r,
, ~
"
- --
, , ,,
• ,
,, ,
"
"
,, ,, ,-
• ,, , ", ~
01 , ,
"
, "" r - - " -
,"
u '" 1
,, ,," o> ~
,
" r. ~
t' "
II
, , , - ",
r- r- ,o---z-. xz
10
, ,,
'..-'
~
,
"
, ,
,, - .
-
____ __ z.:.w.: ___ ___ ___ '
.- ~
; ,
- "'-i-'" ---- e
'.
, ~
'
. --.
,
Determinación de
implicames primos
Selección de implicantes
primos esenciaJes
Obtención de la cobertura
mínima
Fonna estándar
!
FIGURA 4.12 Método del mapa para simplificación booleana.
yz yz
wx 00 01 11 10 wx 00 01 11 10
, , , , , ,
r -, " - - --, - - --, •
-Oi -., -
00
,,, I , ,
: I I , I , j1
"
l'
, , ,, ,
, n -,
o
( ,,•
01 .
,' -I " 11 l .
,-
I I l' , '1 "
..
"
-, - - - _1 o
-- ,
" -1- -
- -- _l-
" - -- '-'
- , " ,- --'.' +-.
, 1 "" "
11
: I .. - ...I 1 1I I , ,
, • , • , , "
,' I " " '"
10
-,-- - I : I I 1"
! ::\ -!,.I
(e) PI, EPI Ylistas de cobenura (d) Dos expresiones de la func ión
En este punto se puede realizar el tercer paso seleccionando los implicantes primos
esenciales. Como puede verse, los minterms mo y m. están cubiertos únicamente por el
implicante primo w 'z ', mientras que los minterms m9 y m' 3 están cubiertos sólo por el
implicante primo wz. Por tanto, la lista de implicantes primos, o lista EPI, contiene los dos
implicantes primos w'z' y WZ, como muestra la Figura 4.13(c).
Finalmente, es necesario obtener el mínimo número de implicantes primos que cubran
a los restantes minterms m3 y m.,. En el mapa de la Figura 4. I 3(b) se observa que ambos
minterms están cubiertos por yz y por w'y. Como ambos implican tes primos tienen el
mismo tamaño, cualesquiera de ellos puede elegirse como cobertura final. Por este motivo,
la Figura 4.13(c) muestra dos listas de cobertura diferentes y la Figura 4.13(d) muestra dos
expresiones simplificadas, 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 OR, en contraste con los seis operadores ANO y los tres operadores OR que
requería la expresión original. En otras palabras, nuestro procedimiento 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 dél 33% . .
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-
tivo que puede ser seguro a la hora de obtener todas las coberturas mínimas de una
función booleana dada.
wx 00 01 11 10
, ,
~_J. , 1-,
~
00 ",1_1.
-- -- , 1r1_1_
• 1 ,... - , ,
Lo _ '" ~
11 -11
01 11 __ 1_ I 11 '
T_-_,I
¡; ,... - , 11 I 115
11 11- 1-'- ¡- - 111 "
IL _1_ ~ ___-11
,, _ J , ,
10 .- 1- -
L __
, l ',
"
::1 1
Lista PI: w':tt. w'xy, wxz. wxy, xy,', wy'z. xyz. w'yi
Lista EPI: vacía
Listas de cobertura: (1) wx't . w'xy, wxz. wx'y'
(2) "'yr, wyO xyo w'yr
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 O ó 1 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 conj unto 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 O 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 lO, 11, 12, 13, 14 Y 15. Una función boolea-
na de este tipo, 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
ferentes mIO' m l l'm l4 y miStienen el valor 1, y en la expresión de Yo' que los rninterms m9,
mil y m l4 son iguales a l.
Si no se utilizaran estas indiferencias, se obtendría un literal extra pnr término en las
expresiones para Y2' YI' Yo' además de un término extra en la expresión para Yo' Es innecesa-
rio decir que estos minterms indiferentes pueden utilizarse de manera similar para simplifi-
caciones en forma de producto de sumas o en otras formas no estándar, indistintamente.
o 0000 9 1001
1 0001 8 1000
2 0010 7 O1 1 1
3 OO 1 1 6 01 10
4 0100 5 O1O1
5 O1 O1 4 0100
6 01 10 3 O01 1
7 O1 1 1 2 0010
8 1000 1 0001
9 100 1 O 0000
(a) Tabla de complementos a nueve
xx
, 11 ¡ ,,
,, "
xx 00
• ,
01 11
, \O ,, "
xx 00 01
,, "
\O ,.
,,
p
'- r - - -1-·
00 L __ 00
" I
- -, ,
. ,- - I
, , - --..
01 01
,' 1
- -
- -" I ,. "
,
.' , ,
11
" ~
;'
X X X X 11 'X X, X X
---
\O
, ,
X
"
X
" \O
L_
L
.,, --
X
" - --,
X ,,
xx xx
,, "
xx 00
, 01 11
,
10 , ,. -"
xx 00
. 0\
,
11
, \O
, - 1-,, " - 1 -, ,,- --
00 ,1 00 , I
, , , ,,
1 ,
0"
01 ,01 1 ,
, 01
, , I
"
, < " ~O
r " ,
,,
.
H X X ,' X X ,' H X ,
, X X X
J._X.
(b) Representación con mapa
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.16(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: Go' G" G 2, G 3 Y G•. Cada grupo G¡, donde O ~ i ~ 4,
contiene aquellos minterms cuyo número de unos es igual a i. Por ejemplo, el primer grupo,
Go' contiene sólo el minterm mo ya que este minterm representa la combinación wxyz =
0000, y su número de unos es igual a O. De igual forma, el grupo G, contiene los minterms
m2 y m., ya que estos minterms representan las combinaciones wxyz = 0010 Y wxyz = 0 100,
cuyo número de unos es igual a 1. 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 "sr' 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 I-subcubos, necesitamos comparar cada uno de los minterms
del grupo G¡ con cada uno de los minterms 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 "bpuede combinarse con el minterm '''2 para
generar un I-subcubo que contenga a "b y m, y tenga los valores en la variables wxyz =
00-0. Este I-subcubo puede representarse por IV 'X'Z' . De igual forma, el minterm "bpuede
también combinarse con el minterm m4 • generando un l-subcubo cuyos valores en la varia-
bles son wxyz = 0-00, y que se representa por w 'y'z'. 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 Gr Utilizando esta
misma técnica, se pueden generar el resto de I-subcubos para los grupos G" G 2 Y G3 .
Téngase en cuenta que, como cada minterm en la lista de O-subcubos ha sido utilizado en
al menos un l -subcubo, se ha insertado un "sí" en cada ftla de la cuarta columna de la
Figura 4.16(b).
152 Principios de diseño digital
wx 00 01
, II
,
10
,
~"r
~,
" ~;,,'" \.~:~+ v: "" •
.,
• v ~
,
• ,
Go (0, 2) O O O sí
(0,4) O - O O sí
G, (2,3) O O 1 sí
(2,6) O 1 O sí
(4,6) O 1 - O sí
G2 (3, 7) O 1 1 sí
(3, 11) - O 1 1 sí
(6,7) O 1 1 sí
(9, 11 ) 1 O - 1 sí
(9, 13) 1 - O 1 sí
G, (7, 15) 1 1 sí
(11, 15) - 1 sí
(13,15) sí
Go (0, 2, 4, 6) O O no
G, (2,3,6,7) O - 1 - no
G, (3,7, 11, 15) - - 1 no
(9, 11 , 13, 15) 1 1 no
(d) Lista de 2-subcubos
FIGURA 4.16 Generación de implicantes primos.
Simplificación de funciones booleanas 153
Una vez obtenida una lista completa de l-subcubos, se puede generar una lista de 2-sub-
cubos, como se indica en la Figura 4.1 6(d). Como puede observarse, cada uno de los 2-sub-
cubos en esta lista contiene cuatro minterms y pueden describirse por un término de dos
literales. De nuevo, estos 2-subcubos se han generado comparando los I-subcubos de dos
grupos anteriores de la lista de I-subcubos y combinándolos en 2-subcubos si difieren en
una variable exactamente; es decir, se genera un 2-subcubo siempre y cuando haya una
variable en ambos I-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 una indiferen-
cia para una variable que ya ha sido eliminada de la expresión. Como se observa en la
expresión 4.16(d), comparando todas las parejas de I-subcubos de la Figura 4.16(c) se
obtendría un total de cuatro 2-subcubos. Téngase presente también que, como cada I-sub-
cubo ha sido utilizado para generar un 2-subcubo, se ha insertado un «sí» en cada ftla de la
cuarta columna de la Figura 4.16(c).
Ahora, se intentan coinbinar 2-subcubos de la lista para formar 3-subcubos, pero en este
caso no se obtiene ninguno. Por consiguiente, todos los 2-subcubos que aparecen en la lista
de la Figura 4.16(d) son los implicantes primos. En otras palabras, los cuatro implicantes
primos de la función [Link] especifica en la Figura 4.16(a) son w'z ' , w'y, yz y wz. Obsérvese
que ningún l-subcubo o O-subcubo es un implicante primo, ya que cada uno de ellos está
cubierto por, al menos. un 2-subcubo.
Para determinar la cobertura mínima de una función, hay que determinar los impli-
cantes primos esenciales que deben ser incluidos en cada cobertura, ya que los
implicantes primos esenciales son los implicantes que contienen aquellos niinterms
cubiertos una sola vez, aunque un implicante primo esencial pueda contener tam-
bién otros rninterms. El mejor modo de obtener implican tes primos esenciales es
construir una tabla de selección en la que cada fila representa un implicante primo
esencial y cada columna representa un rninterm. En la tabla se marca con x una
intersección entre fila y columna si y sólo si el rninterm 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 minterms 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 implicantes
primos esenciales. Este prooedimiento se detalla en el Ejemplo 4.5.
Figura 4.l7(a), indicando en cada ma el nombre, expresión y los índices del minterm de uno
de los implicantes primos, y asignando una columna a cada l-minterm. Entonces, se intro-
duce una X donde un minterm dado sea cubierto por un implicante primo. Por ejemplo,
empezando por la primera ma, se introduce una X en las columnas 0, 2, 4 Y6 ya que el impli-
cante PI contiene los minterms mo' "'1, "'4 Y m6 ·
Tras introducir todas las X necesarias en todas las mas, se indicarán aquellas columnas
que tengan únicamente una x, rodeando dicha X con un círculo. Como se observa en la
tabla, las columnas 0, 4, 9 Y 13 tienen 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-
m
tenns mo' 4 , m9 y m 13. Mortunadamente. PI y P4 también cubren a los minterms m2 , m6 ,
mil y m 15 • lo que significa que los únicos minterms no cubiertos, ni por PI ni por P4 ' son
los minterms m3 y m.,. Ya que ambos minterms podrían estar cubiertos por P2 o P3' se
obtienen dos posibles coberturas: como se muestra en la Figura 4.l7(b), una cobertura con-
tendría PI' P2 Y p. mientras que la segunda contendría a PI' P 3 Y p •. En la Figura 4.17(c)
se muestran dos expresiones mínimas en fonna de suma de productos correspondientes a
estas dos coberturas.
PI w'z' (0,2,4, 6) ® x ® x
-ilq Ti 2' P2 w'y (2, 3, 6, 7) x x x x
201 sup P3 yz (3,7, 11 , 15) x x x x
U fll!Un Íf) p4 wz (9, 11 , 13, 15) ® x ® x
-[Link] 1s11
Minterms cubiertos por EPI: O 2 4 6 9 II 13 15
2:J 2~!Jli~. Minterms no cubiertos: 3 7
omi'lq ~Jl
Gnu X no (a) Tabla de selección de EPI
-mulo:> s, Lista PI: w't, w'y, yz. wz
-:Jlbl e b ¡ Lista EPI: w'i, wz
- ~UpG n¡;J, Listas de cobertura: ( 1) w't, W1.. w'y
(2) w'l'. wz. yz
nu :lb ssb
2:l1ClB~i[qr (b) Listas PI, EPI Y de cobertura
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-
turas, aquéllas que tengan el menor número de implicantes primos serán las cober-
turas mínimas. Este procerlimiento se describe en el siguiente ejemplo.
- - - - - 0:;- -- f.' .-
wx 00
, 01
, II
, 10
-'
00 1 . .
, , , • GI (2) O O 1 O sí
01 1 1 (8) 1 O O O sí
... G2 (6) O 1 1 O sí
II
"
1 1
" " (9) 1 O O 1 sí
G, (7) O 1 1 sí
, ,
10
" '" (13) 1 O 1 sr
1 1
G. (15) sí
. '<
PI w yi (2, 6) ® X
P2 xy'z (8, 9) ® X
P, ,.IX)' (6. 7) X X
•• •• •• ~.
~.
~.
• •. •• ~.
~.
•
(a) Reglas de conversión
~.
~. ~.
TABLA 4.1 Conversión de suma de productos y producto de sumas a circuitos NAND y NOR
Suma de productos ~ ~ ~
Producto de sumas ~ ~ ~
den tener hasta n entradas, siendo n mucho mayor que m. Para poder utilizar puer-
tas NAND (NOR) de mentradas, se debe saber cómo descomponer estos mayores
términos AND y OR en puertas AND y OR de mentradas .
. ,
e, o, 011
, 11 10
•
o 1
• <
1 1 1 1
.
..
(a) Definici61ll en mapa de la función acarreo
O¡+/ ~iYi+XFi+YrCj
cj+l =(x¡+y¡)(x¡+cj(Y¡+c)
x, --"t-'-.:.../ x, --"J--L.:.../
J, J,
e, -':1-<---.. e, ~c;::;
(e) Implementación NANO
I 10 LIO/3J=3
2 3+(1O-3(11013J),=4 L4/3J = 1
3 1 ... (4 - 3Q4I3J¡) = 2 L2I3J = 1
IflGURA 4.2J1 Descomposición de una puerta ANO de 10 entradas en puertas ANO de 3 entradas.
Una vez que se ha determinado el número de puertas en cada nivel, se necesita aún
determinan CÓmo deben conectarse las entradas a las puertas del primer nivel, y cómo las
salidas dedas puertas de un nivel deben conectarse a las entradas de las puertas del siguien-
te nivel. .ESto puede realizarse de varias maneras, cada una de las cuales proporcionará una
combinao:ión diferente de retardos entre las entradas y la salida. En las Figuras 4.21(b) y (e)
se presentan dos posibles descomposiciones que permiten implementar la puerta ANO de
10 entradas con cinco puertas ANO de 3 entradas. Obsérvese que estas dos posibles des-
composiciones difieren únicamente en el retardo de propagación de algun camino de entra-
da/salida. En la Figura 4.21(b), por ejemplo, el retardo de propagación a la salida desde
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 (c), 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.
,
, o o, 11 'o
o I
I I I
e, XI Y¡
I
(b) Implementación AND-OR (e) Descomposición en puertas OR
'i
La función de acarreo de salida del i-ésimo bit puede definirse por la siguiente ecuación,
donde g¡= x¡Y¡ YP¡ = x¡ + Yi
C i+ 1 = g¡+ p,e¡
Por consiguiente, para representar los primeros cuatro acarreos pueden obtenerse las
siguientes ecuaciones:
C, = go+ Poco
c2 = g , +P, c,
c3 = g2 + P 2C2
c4 = g3 + P 3c 3
164 Principios de diseño digital
~ --------------------,
máximo =8,2 ns
~ ~==========~J " .!:!...= ====
(b) Descomposición del diseño (a) (e) Implementación NANO del diseño (b)
1, ', -----D»-----,
P,
1,
Pz PJ
1,
P,
P,
P,
1,
P,
P,
P,
P,
" ,, ~=====
(d) Descomposición con pre5laCiones optimizadas (e) Implementación NANO con prestaciones optimizadas
Descomposición
minimización 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 cualquier biblioteca.
En el siguiente ejemplo se detalla esta tarea de aplicación a la tecnología de una
biblioteca a medida. -
Como se muestra en la Figura 4.25(a), la expresión w'z ' + z(w + y) puede implementarse
fácilmente con puertas AND, OR Y NOT obtenidas en esta bibliioteca. Sumando los retar-
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 yo la entrada w hacia la salida F, y es igual
a 7,2 ns. Además, sabiendo que cada puerta AND o OR de 2 entradas requiere seis transis-
tores, y que 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.25(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
implementa la alternativa A, se reemplazan tres puertas por una puerta AO! de 2 entradas
y 2 niveles y un inversor, 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 OA! 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
wy z 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(1), tiene un retardo en el camino crítico de 3,8 ns y un coste total de 18 tran-
sistores.
168 Principios de diseño ~gital
; -r--I~F
I(a) Implementación AND-OR (retardo = 7.2 os; coste = 28)
J::F--'
y
;===::!::jl
(b) Implementación NANO (retardo = 5,2 ns; coste = 22)
-------
:, ~-~-'---,-
_--'-II~
[-+-I~~~'
II F
w
,
(e) Alternativa B (retardo = 3,8 os; coste = 20)
w
,
(1) Alternativa B optimizada en coste (retardo = 3,8 ns; coste = 18)
Seleccionar un camino
Seleccionar puerta
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 Figura 4.24.
yZ
x o 01
, 11
, 10
" , 1 ,, r-'
o ,
. ,
, ; ,.
1 ,ei - -- I-- ,,, ,- I- .,
- --
F=xy'+y1.
(a) Representación de mapa
x _ _ _ .,-:~
, - - - - - L:.J
(b) Esquema lógico
x - - - -- - - - - - -
,
a -+! 3,4 1..-
x '" " o ,. 01 11
r - ,
, \O
o' ,, I ,,
,
f'i--
1 l' I
x-------------------
ylf-----
,
F ----~--------------
,
.,
~. ID
ID
.. fII F
w ~===g
(a) Esquema lógico
x-----------
yl f - - - -
,
W __ -j--_ _ _ _ _ _ __
F --!c--.;-~
'o "
(h) Diagrama de tiempos
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 d otra 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 1 hasta 12, y el cambio en F de O a 1 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
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.
grandes en puertas más pequeñas con el mismo número de entradas que las puer-
tas NAND o NOR de la biblioteca, y después cada puerta se convierte en puertas
de la biblioteca utilizando 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 NAND y NOR para estimar con precisión el retardo de pro-
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.10. PROBLEMAS
4.1. (Representación de cubos) Especi- (d) F = x'iz' + wiz + xyz' + w'yz'
ficar las representaciones de cubo e
identificar todos los subcubos para 4.2. (Representación con mapa) Generar
las siguientes funciones booleanas. las representaciones con mapa para
(a) F = i ,io + xoY' , + x,i , + X,Xo +
las siguientes funciones booleanas.
(a) F = w'x' + xy + wi + wx
x)i o
(b) F = w'i + wz + w'y (b) F = x',x'o +x',Yo + y,Yo + x',y, +
(e) F = w'x' + xy + wy' x'oY,
176 Principios de diseño digital
Componentes
combinacionales
•
3
Álgebra booleana Puertas lógicas
y bieslables
180 Principios de diseño digital
x¡y. i ,,
ei O 01 11 10 ei O 01 11 10
o O O O O "
, , , , , ,
O O J O J O I I O I
O J O O J
O 1 1 1 O , , o , •
I O O O I I I I I I I I
I O I I O
I I O I O
1 I 1 1 1
(a) Tabla de verdad del sumador (b) Representación con mapa
completo
Xi Yi
x y
u "
• :.;'
Ci
Sumador
•
.Jo •
I s .
Si
(e) Circuito lógico del sumador completo (e) Símbolo gráfico
.'
Además, tras sustituir términos, se puede expresar cada uno de estos acarreos
en términos de ei' como en las siguientes expresiones:
generación de los 4 bits'de acarreo c4. c s . C12 Y C16 utilizando un generador CLA
adicional .
"
Utilizando la Ecuación (5.9). los acarreos c4. cs. C12 Y C16 pueden expresarse
como:
C4 = g(O,3) + P (O.3)cO (5.1 2)
Cs = g(4,7) + P (4,7)C4 (5.13)
C12 = g(S,II) + P (S, II )CS (5. 14)
C16 = g(12.15) + P (12 ,15)C12 (5. 15)
Componentes combinacionales 185
.. ,.
TABLA 5.1 Retardos en cascada y con acarreo anticipado
para un sumador modular de 4 bits'
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' cs, C l 2
y Cl6 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 c,¡, cs, cl2 Y Cl6 desde el primer
nivel de generadores no se utilizan. En su lugar, se utilizan las salidas 8(i.;+3) y
P (i,;+3) desde los generadores del primer nivel para generar estos acarreos en el
generador CLA del segundo nivel. .
Igual que en la Ecuación (5.9), se puede defInir el acarreo C16 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,
g(0.15) Y P (0. 15) tienen la misma forma que las dadas por las Ecuaciones (5.10) y
(5.11), Ypueden 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 r lo~n1niveles de gene-
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.
A B
s
Sumador/restador
o A+B Suma
I A+B'+I Resta
(a) Tabla de verdad
F
(b) Sfmbolo gráfico
s. -;--'---'---,
s,
?, --L_-,_--'
s, s, S, S, s, s, S, So
s
(e) Símbolo gráfico (d) Unidad lógica de 8 bits
J, J, J, Jo
FIGURA 5.6 Sumador de 4 bits con ampliadores aritméticos (AE) y lógicos (LE).
190 Principios de diseño digital
I
Como la ALU en cuestión realiza cyatro 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 YSo'
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,
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 dé 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).
,o
b¡ 00 01 11 10 'o
)
I
O
O
O O )
O ) )
-- - -
1
I
, , J
,-- , "M
O I I 1
1 O 1 O O - - -, 1 __
1 O ) ) I
- -I
, . ,
~--
1 1 O O 1 1 1 1
---
I
I
1 ) O 1 O 1- __
I ) 1 O O
I I I I O
Y,
(h) Tabla de verdad
(e) Representación COD mapa (d) Esquema lógico
/JI bJ
M_O M _ l
[Link] So
00 01 11 10 00 01 11 10
op, s,
00 ,' l ,' M
, " "
01 "
' 1 ,'
,- ,1( ,1
11
10
,, 1 " 1:
"
1
-
I1_____ _
,I
!~~ I "
':.":.
,+
.
XrM'S' ]Sffi ¡+MSISfI'¡+S¡f1¡b¡+S1/J¡+Ma¡ x,
(e) Representación con mapa (d) Circuito lógico
Desbordamiento 13 J, 1, lo
(a) ALU de 4 bits
A B
So --r--'---'---,
S, ...Unidad lógica
M
coo, --~,---,~---"
Desbordamiento F
5.6. DECODIFICADORES
Los decodificadores (a veces llamados también demultiplexores) se incorporan
frecuentemente 'en grandes unidades para su utilización siempre que se necesite
°
activar o habilitar sólo uno de n subcomponentes. En tal caso, a cada subcompo-
nente se le puede asignar un índice entre y n-l que representa una dirección
binariaA. Para activar un subcomponente concreto en un tiempo dado, esta direc-
ción A se decodifica en n líneas de habilitación, de las cuales sólo una es igual a
1. En general, un decodificador de m a n tiene m = log2n líneas de entrada,
°
Am_I..A O' Y n líneas de salida, Cn_I ... CO, así como una entrada de control, E. Esta
entrada de control habilita las salidas del siguiente modo: siempre que E = todas
las salidas son 0, y siempre que E = 1 sólo la salida C¡ será 1, siendo i el entero
cuyo valor es igual al valor binario de las entradas Am_I .. AO'
Como ejemplo, la Figura 5.10 muestra un decodificador de 1 a 2, y el símbo-
lo gráfico y la tabla de verdad se dan en las Figuras [Link](a) y [Link](b). Como puede
verse, el decodificador tiene una línea de dirección, A o, Y una línea de habilita-
ción, E, con dos líneas de salida Co y C I . Mientras E valga 1, Co = 1 siempre que
Ao = 0, y C I = 1 siempre que Ao = 1. Las expresiones booleanas de las salidas C I
y Co se muestran en la Figura [Link](c), mientras que su implementación con puer-
tas se presenta en la Figura S.10(d).
Ao
E Decodificador
o 1 O O 1
1 1 1 O
O X O O
cl Co
(b) Tabla de verdad
(a) Símbolo gráfico
el Co
(e) Expresión booleana (d) Diagrama lógico
Decodificador
E
CO=EA']A'Q
C¡=EA'JAO
C2= EA.A'o
C)= [Link]
1 O O O O O O O 1
I O O O O _ ) O
1 -0- -) O O '0 1 O O
1 O I O 0 J."L O O O
I O O 1 O O -O- O
1 ) O O O I O O O O O
) I 1 'O 1' O O O O O O
1 J 11 0 1_
0_ O_ O O O O
O X X O O O O O O O O
•
e l C6 e s C4 c ] Coz el Co
• •
(b) Implementación con decodificadores de 1 a 2 (e) Implementación con decodificadores de 2 a 4
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
s
o Do
l D,
y (b) Tabla de verdad
(3) Símbolo gráfico
DJ D2 0 1 Do
SI 3 2 1 o S, So y
So Selector
O O DO
O 1 DI
y
I O D,
I I D3
(a) Símbolo gráfico (b) Tabla de verdad ~
D, D, DI Do SI So
y= S1'SrPO+S 1'ScPl
+SIS'cP2+SJScP3
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 [Link] anteriormente, utilizando varios niveles de selectores de 2 a I y
de 4 a 1.
o O O Do
O O I D,
O I O O2
O I I D3
I O O D.
1 O I D,
I I O D6
I I I D7
(a) Tabla de verdad
y
(b) lmplemenlaci60 con selectores de 2 a 1
So
S,
O O O DO S,
O O I D,
O I O D2
O I I D3
1 O O D.
I O 1 D,
I J O D6
I 1 J D7
(a) Tabla de verdad
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 taIjeta peB. Para realizar un bus se utiliza un componente denomi-
nado adaptador triestado, cuya salida proporciona tres valores diferentes, 0, 1 YZ.
El valor Z representa un estado de alta impedancia, que puede considerarse como
una desconexión eléctrica del bus a efectos prácticos. .
E---,
D ·~ Y
(a) Símbolo del adaptador [Link] (b) Tabla de verdad para un adaptador triestado
s -,,-[>0---, Bus
Do -1-----1-:>---1
y
D, _ _ _--1>_-1
Bus
Do
D,
y
D,
o O DO
D, O 1 DI
1 O D2
1 1 D3
(e) Bus de 4 entradas (O Tabla de verdad para el bus de 4 entradas
~ D.¡. Cf ~ CUALQUlBIA
O O O O
rT
Cualquier Ao
O
J
1
X
'\
O
1
dores de 2 a 1, que generarán n/2 candidatos para la dirección de bit menos sig-
nificativa, Ao. Uno de estos candidatos será seleccionado por un selector de (n/2)
a 1. Para producir la siguiente dirección más significativa, A ¡, 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 1 que selecciona el bitA¡. Además,
estos n/4 codificadores generan n/4 salidas Cualquiera, que pueden codificarse
para producir la dirección de bit más significativa, A 2 . Este procedimiento se repi-
te hasta que sólo quede una salida Cualquiera.
D) D2 DJ Do
3 2 ¡ o
O O O O O O O
Codificador
O O O 1 O O 1
O O l X O l 1
O l X X l O 1
Cualquier Al A. l X X X 1 l l
• ,,"
,.
AO"" DIO' 2+D)
•
AI= D2+DJ
Cualquier = DO+D I+D2+D)
, • > 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 I X O O I 1
O O O O O I X X O I O 1
O O O O 1 X X X O 1 I I
O O O I X X X X 1 O O I
O O 1 X X X X X I O 1 I
O 1 X X X X X X 1 I O I
1 X X X X X X X I 1 I I
Cua/quiero A A,
Cua/quitra A2 A, 2
;,'
. -. .
, ~ , 4;.,~' \
o O O O O O
O O O 1 O 1
O O 1 O 1 O G
O O 1 1 O O
O 1 O O O 1
O 1 O 1 O 1
O 1 1 O O 1
O 1 1 1 O 1
1 O O O 1 O
1 O O 1 1 O
1 O 1 O 1 O
L
1 O 1 1 1 O
1 1 O O O O
1 1 O 1 O 1
1 1 1 O 1 O
1 1 1 1 O O
(a) Tabla de verdad (e) Esquema lógico
[Link]
00 01 11 10 00 01 11 10
a lb, , J , a lb, , , ,
00
" I 00 I
J
, . • , , ,
-
01 01 I I I I
,. ,. ,. ,.
11
" I " 11
" I
"
, , .<
10 I I I " I " 10
"
" "
G, L,
(b) Implementación paralelo
o O X D No desplaza
O l X No usado
l O O shl(D) Desplaza izquierda
l O l n1(D) Rota izquierda
l l O shr(D) Desplaza derecha
l l l rtr(D) Rota derecha
(a) Tabla funcional
Entrada
11 [Link]
s,
s,
S,
h h ~ ~ ~ ~ Y,
(b) Desplazador implementado con selectores de 4 a 1
o O O d, d6 d, d. d, dz dI do
O O 1 do d, d6 d, d. d, dz dI
O 1 O dI do tJ., d6 d, d. d, dz
O 1 1 dz dI do tJ., d6 d, d. d,
1 O O d, dz dI do tJ., d6 d, d.
I O I d. ti, dz dI do d, d6 d,
I I O d, d. ti, dz dI do d, d6
I I 1 d6 d, d. d, d, dI do d,
(a) Tabla de verdad
s,
s,
s,
do físicamente dos líneas siempre que se desee una conexión o in situ, fundiendo
el fusible entre una línea de entrada y una línea de puerta siempre que no se quie-
ra una conexión. Tales memorias ROM con fusibles, llamadas también ROM
programables (pROM, Programmable Read Only Memory), son muy prácticas
ya que pueden fabricarse en grandes cantidades y personalizarse, posteriormente,
in situ. Además, a menudo son preferibles a las ROM porque son fáciles de mejo-
rar o de sustituir si el contenido de la PROM necesita modificarse. De hecho, las
PROM pueden considerarse corno un caso particular de arrays lógicos programa-
bles in situ (FPGA, Field Programmable Gate Array), descritas en la Sección
3.10; dado su parecido funcional, estas memorias PROM pueden verse como pre-
decesoras de las FPGA, que requieren una organización interna más compleja.
Por ejemplo, en la Figura 3.23 se vió que cada PLB se implementaba con una
PROM de 16 x 2.
"
.. ..eDD
A 8
-
•• eD
A 8
•••O
Corno se ha mencionado anteriormente, una ROM de n x m úpica, o PROM,
tiene k = log2n líneas de dirección Ak_ ¡, ... ,Ao, así corno m líneas de salida
Fm-l , ... ,Fo. Contiene un decodificador de direcciones de k a n y un array OR pro-
gramable. Como ejemplo, la Figura 5.25 muestra una ROM de 16 x 4 en la que
se utiliza un decodificador de 4 a 16 para seleccionar cualesquiera de las 16 pala-
bras de la ROM. En el array OR programable, el valor de cada bit en cada pala-
bra se determina por la presencia o ausencia de una conexió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 escrito un valor 1 en una posición de bit
determinada.
En la Figura 5.26(a) se utiliza esta ROM de 16 x 4 para la implementación del
sumador/restador modular presentado, anteriormente, en la Figura 5.4. Como
puede observarse, este módulo tiene una línea de selección, S, que selecciona la
realización de una suma o una resta sobre los dos bits ai Y bi, con el acarreo ei
obtenido de la etapa anterior. Este módulo tiene dos salidas: 1;, que representan el
bit de suma o diferencia, y el acarreo de salida ei. l' que se propaga a la siguiente
Componentes combinacionales 211
o
1
2
)
4
5
Decodificador 6
de 4a 16 7
8
9
10
11
12
13
14
15
• ")"1 •
. ~.
~ ~ ,
~. . ......'- -'
o O O O X X O O
s O O O 1 X X O 1
O O 1 O X X O 1
O O 1 1 X X 1 O
O 1 O O X X O 1
O 1 O 1 X X 1 O
O 1 I O X X 1 O
O 1 1 1 X X 1 1
FA FA 1 O O O X X O 1
1 O O 1 X X 1 O
1 O 1 O X X O O
1 O 1 1 X X O 1
1 1 O O X X 1 O
1 1 O 1 X X 1 1
1 1 1 O X X O 1
ti 1 1 1 1 x: X 1 O
(a) Módulo sumador/restador (b) Tabla de verdad
Decodificador
de4 a 16
, ,
, DO
e
O
"
01
1
" 10
1
As A,. 1'1 Fo
X¡ S¡ c,., , ,
1 1 1
X O O O X X O O
X O O 1 X X O I
X O I O X X O I
X O 1 1 X X 1 O , ,
X 1 O O X X O 1 e, DO 01
, 11 10
X 1 O 1 X X I O
X I I O X X 1 O O ,,r . -I,
X 1 1 I X X I I
, ,_ .J '
(a) Tabla de verdad 1 .- .- -
"--
-lrl ~1
I!--:..l
- l-'
- ,
o
5.16. PI:¡OBLEMAS
5.1. (Sumadores) Diseñe un sumador 5.3. (Restadores) Defina y diseñe una fun-
modular de 2 bits que combioe las ción de adeudo anticipado (borrow-
funciones de dos FA. Utilizando la look-ahead) 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 S.l.
tablas que se iodican 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 S.2(c).
valente a un sumador completo, y uti- (a) Tabla 3.14
Iícelo para diseñar un restador de (b) Tablas 3.14 y [Link]
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: e4, de representación numérica:
Cs, Cl2 Y C16' (a) Siguo 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
(b) X = Y •
5.6. (Generadores de acarreo anticipado)
(e) X < Y
Diseñe el sumador CLA más rápido
(d) X:i! y
posible de:
(e) XS;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
con Y = y,Yo, con la condición de que
5.7. (Unidades lógicas) Diseñe una unidad
Xo e Yo no pueden ser 1 al mismo tiem-
lógica que mejore las siguientes com-
po. ¿Cúantos transistores aborrará si
binaciones de operaciones:
utiliza este comparador de 2 bits en la
(a) NANO, NOR, transferencia y
implementación serie del comparador
complemento
de 8 bits de la Figura 5.22(a)?
(b) XOR y XNOR
(e) ANO, OR Y NOT 5.16. (Comparadores) Rediseñe el compa-
rador de 2 bits que compara X = x,xo
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, NANO 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 aborrará si utiliza este compara-
que realice las operaciones ANO, dor de 2 bits en la implementación
NANO, OR, NOR, XOR, XNOR, paralelo del comparador de 8 bits de
identidad y complemento. la Figura 5.22(b)?
5.10. (Decodificadores) Diseñe un decodi- 5.17. (Desplazadores) Diseñe un registro
ficador de 4 a 16 utilizando: de 8 bits que:
(a) decodificadores de l a 2 (a) rote a la izquierda
(b) decodificadores de 2 a 4 (b) desplace a la izquierda
(e) puertas lógicas ANO, OR YNOT (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 a 1, (b) 4 a 2, (c) 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
n a 1 a partir de selectores de 2 a 1
los números en signo y magnitud y
para cualquier entero dado n.
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 digital
Máquina de 6
estados finitos
Sistema binario
y representación
de datos
Componentes
combinacionales
222 Principios de diseño digital
j )'1
Ancho del pulso
(1 l;
Flanco de subida Flanco de bajada
de reloj
6.1. LATCH SR
El elemento de memoria más simple en un diseño digital es ellatch SR, que cons-
ta de dos puertas 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 1, S
(Set), y la señal de puesta a 0, R (Reset) ; 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 = 1 (Q' = O) Y un estado de puesta a cero (o reset) cuando Q = (Q' = 1).
Mientras las señales S y R sean iguales a 0, el latch SR permanece en el mismo
°
estado. Por ejemplo,.si Q = 1 la salida de la puerta NOR superior será igual a 0,
lo que hará que la salida de la puerta NOR inferior sea igual a O. Igualmente, si
Q = 0, la salida de la puerta NOR superior será igual a 1, lo que hará que la sali-
da de la puerta NOR inferior sea igual a O.
224 Principios de diseño digital
1 s --=:::JJ,:i)o--,-- Q'
o o o o 1
o o I I O
o I X O I
o R_'::=~iWc>--L- Q I o X I O
1 1 X O O
(a) Circuito lógico (e) Tabla de verdad
Q'
-
'o
(b) Diagrama de tiempos
R _=::{!;:;y.--L_ Q'
(a) Circuito lógico (e) Tabla de verdad
s
,
R
1':
,-;-,------!I r-----
A partir del análisis del modo de operación dellatcb SR, se puede construir la
tabla de verdad del funcionamiento dellatcb, que se muestra en la Figura 6.2(c).
Como indica esta tabla, para cada instante ti' Q(siguiente) y Q'(siguiente) indican
el valor de la salida Q en el instante ti + /J., donde /J. es igual o mayor que 2.8 ns.
La tabla proporciona los valores de salida para cada combinación de los valores
de entrada y del estado dellatcb SR.
El latcb SR puede implementarse también con puertas NAND. Sin embargo,
en este caso las entradas S y R están normalmente a 1. Activando S o R a Ose esta-
blecerá o pondrá a O el latcb, respectivamente, que es justamente lo opuesto a la
implementación NOR en la que activando S o R a I se causaba la puesta a uno o
a cero dellatcb, respectivamente. Finalmente, la implementación NAND se mues-
tra en las Figuras 6.3(a), (b) y (c).
S ....". -Q Q(
Q O X X O O
O X X 1 1
n
~
e
s--'===O
Q'
1
1
1
1
O
O
O
1
O
O
1
O
O
1
X
X
O
1
O
1
1 1 1 X NA
H
a
4,013,0
e Q'
e I, I, I, I, I I
, , , ,
,,, ,,,
D
, ,, ,, I :" : I :, IH-"i-':¡--
, , I I I 1 I
,,
, ,' ~
~.o
:1 1;......
2.0 :I : ~;
$ J:- tn
a ,-+>
, , ,
I - . -,
I I I I I
" " ~
" " '.
....
' '""" 'selUP
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
e
la señal de control es igual a 1. Frecuentemente, estos latches 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 sali-
da con un pequeño retardo. Estos biestables básicos funcionan como elementos de
memoria sólo después del flanco 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 QI
se conecta a la entrada D del segundo, y su salida Q2 se conecta a la entrada D del
tercero. La entrada de control e se conecta al reloj del sistema, e/k, que sincroni-
za la operación de todos los biestables. Teóricamente, este registro de desplaza-
miento debe 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 tiempos 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 I =Q2 =Q3 =O) y que la señal de entrada X tiene el valor l 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,010
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 tw = 15 ns y que la señal de entrada X vale 1 en too Cuando la
señal de reloj habilite ellatch en tI' el primer latch cambiará al estado de puesta a
uno (QI = 1) en ti + 4,0 ns. Sin embargo, como la señal de reloj mantiene su valor
otros 11 ns, el segundo latch cambiará al estado de puesta a uno en ti + 8.0 ns, así
como el tercero, que conmutará en ti + 12,0 ns. Entonces, tras el primer flanco de
bajada en 12, el contenido del registro de desplazamiento será igual a 111. Habrá
un funcionamiento similar cuando el segundo pulso de reloj, y los sucesivos, habi-
liten los restantes latches del registro de desplazamiento.
230 Principios de diseño digital
x y
D Q' D Q2 D Q3
e lk
,,
Q, ~:4., 0 1 . . .
,, :,
-~~~
' :
~4.o l ~ ...,, I~
I
,
~
'
:
,
, , --:
Q3 _ ¡, 40 1... , 1Jt!-
...
...
" ,
1 .l'
." ," .~
C/k
C/k
,, ,
Q", -+-:4.0 +, ,-+- , 50
, "
-+-
, ,,
Q, -, 03.0
.....,, ....... ,·4.0 .........
,'
')
" "
(b) Diagrama de tiempos
elk
•
Q
,
,. _:4.0+
, -,-l E
Q"
Q,. -,,:4.0 +-
_ : LI+-_
'·_
O_i-___
,
,
Q,. ~; s.o l+-
,
Q"
"
(b) Diagrama de tiempos
'. "
C/k
Q'
C/k
D
\
...... ' 2.8
~
: ~~\~:;,
r ......12,8 ..... ,
,
....... 1 4,2 ..... 1 ....... 2.8
~A====~, ==~,,
S -H-J."I-r-----i--~~====:!'==~===---------T:
, ,
.,.-__~~-":--'::====+,~----~------1'-:;¡
' ,
- 1·4; _!.41_ I I I I 1
1.41..... ~1.4 ~
R ......
, 0..._ _ _:
, ,--,r-
-. . .
,
.,---...¡'-;;, , ,-+---T,--;,--,
B
-+o
1,4
-.
I P.4
...... . ..... ~
, ,1 2.8 L+- ........
I
_________----W ~
1],4 I
, L-~--~--~
. : ,--¡-.-------+-----f,--j , , , ,.;,----+-------
, - , 2.8 ~ 4.2 ~I
..... I ....., 2,8 +- I
Q
"7--¡-'-------------+--1 '
'o " "
(b) Diagrama de tiempos
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 utiliza 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.
,\ < . ¡
~'!' ~ " •
¡
~/~." :- -, '" ." . ~.
o O Q
Q(siguiente) = S + R'Q
o O O X
SR O 1 O O 1 1 O
1 O 1 SR = O 1 O O I
1 1 NA 1 1 X O
"
, .$,-:-- ... f! ¡ .po.c.J ~t-::.. .....1!ro' ••,/ .•
O O Q O O OX
JK O I O Q(siguiente) = JQ' + K'Q O I 1 X
1 O I I O X 1
I 1 Q' I I X O
O O O
D Q(siguiente) =D O I 1
I O O
1 I 1
O O O
T Q(siguiente) = TQ' + TQ O I 1
I O 1
I I O
el valor de las entradas de los biestables que se necesitan para cambiar de estado
después del flanco de subida de la señal de reloj.
Además de los símbolos gráficos, tablas o ecuaciones, los biestables pueden
caracterizarse también con diagramas de estados o grafos de estados, en cuyo caso
cada estado se representa por un círculo, y una transición entre estados se indica
por una flecha . Por ejemplo, en la Tabla 6.2 se describen con este método los cua-
tro tipos de biestables. Obsérvese que cada flecha se marca con los valores de las
señales de entrada, que originan una transición de un estado a otro. Además, un
mismo estado puede ser origen y destino de la transición. Como las transiciones
ocurren en el flanco de reloj, cada estado puede considerarse como un intervalo
de tiempo entre dos flancos de subida sucesivos de la señal de reloj.
S.R=I ,D
SR
S,R=D,I
l.K=I,D 6 1,1
JK
l ,K=D,1 6 1,1
0=1
D=O
T=I
T=I
Puede verse en la tabla que los diagramás de estados de los cuatro biestables
tienen el mismo número de estados y de transiciones: cada biestable está en el
estado de establecimiento o puesta a 1 (set) cuando Q = l Y en el estado de ini-
cialización o puesta a O(reset) cuando Q = O. Además, cada biestable puede pasar
de un estado a otro o volver al mismo estado. La única diferencia entre los 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 I (preset) o poner a O (clear) los biestables indepen-
dientemente de las restantes entradas. Estas entradas se utilizan para poner los
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 O (b) Símbolo gráfico
C/k
Q'
PRS
D Q
D C/k Q'
CLR
•
Lógica secuencial 239
otras 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.l0(a), ellatch D con puertas y entradas 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 a 1, la salida Q' es igual a O y Q a 1.
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-
necerá en los estados impuestos por las entradas asíncronas. El símbolo gráfico de
un latch D con entradas asíncronas se muestra en la Figura 6.10(b).
SR
JK
•
240 Principios de diseño digital
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 ent y de las salidas del biestable
QI y Qo' Como hay dos biestables O en el ejemplo, se obtienen dos expresiones para DI
y Do:
Lógica sccucociaI 2A I
c,, _~====l-----'
(a) Circuito lógico
DO" Cm E9 C?o '" Cm'Oo + ente o
D, '" Cnt'Q , + ente,Qo. Cn/Q,Q'O
(b) Ecuación de excilaci6n
Cnt = O Cnt = I
-- --------- -----
OO OO 'o I
OI OI '1 O
I O I O 1 I
I I I I OO
Ahora se transforman las ecuaciones de estado siguiente a una forma tabular, o tabla de
estados siguientes, en la que cada f¡]a 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 s6lo hay dos biestables, el número de posibles estados es de cuatro, es
decir, Q¡Qo puede ser igual a 00,01, \O 6 11. Estos valores se muestran como estados actua-
les en la Figura 6.I1(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 e/k. Como este
valor depende del estado actual y del valor de las señales de entrada, la tabla de estados
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, Cnl, la tabla de estados siguien-
tes mostrada en la Figura 6.1l (d) tendrá sólo dos columnas, correspondientes a Cnt = OY Cnl
= 1. 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 f¡]a
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
utilizar un diagrama de estados en lugar de una tabla de estados siguientes. Un diagrama
de estados es, básicamen~e, 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 2m • donde m es el número de biestables; de manera similar. el número de
arcos será igual' a 2m X 2'. donde k es el número de señales binarias de entrada. En el dia-
grama de estados de la Figura 6.11(e), debe haber cuatro estados y ocho transicione~.
Siguiendo estos arcos de transición, puede verse que mientras Cnl = 1 el circuito secuen-
cial recorre los estados en la siguiente secuencia: O, 1,2,3. O. 1,2 .... Por otra parte, cuan-
do Cnl = O el circuito permanece en su estado actual hasta que Cnt cambie a 1. 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 [Link](a) es un contador módu-
lo 4 con una señal de control. Cnl. que habilita la cuenta cuando Cnl = 1 Y la deshabilita
cuando Cnl = O.
En la Figura 6.11 (1) se muestra un diagrama de tiempos que representa cuatro ciclos
de reloj y que permite observar el funcionamiento del contador con mayor detalle. En
este diagrama de tiempos se supone que Cnl se habilita en el ciclo de reloj O. en lo' y se
deshabilita en el ciclo de reloj 3. en t,. También se supone que el contador está en el esta-
do Q¡Qo= 00 en el ciclo de reloj O. Obsérvese que en el flanco de subida del reloj. en ti'
el contador irá al estado Q¡Qo = 01 con un cierto retardo de propagación; en el ciclo 2.
después de t 2• irá a Q¡Qo = 16; Y en el ciclo 3, tras 1" irá a Q¡Qo = 11. Como Cnt vale O
en t,. se sabe que el contador permanecerá en el estado Q¡Qo= 11 en el siguiente ciclo
de reloj . Para verificar completamente er funcionamiento de un circuito secuencial, se
deben construir diagramas de tiempo para todas las posibles secüencias de los valores de
entrada.
Lógica secuencial 243
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
das, lo que significa que cada entrada en la tabla de estados siguientes represen-
tará, separados por el signo 1, al estado siguiente y al valor de salida.
Cm
C/k _--.!=====:f-----l
(a) Circuito lógico
Q, :1
Cnt = O Cn/= I Q, :1 :1 :1
- - ---- - -- ---- --
OO OO O I O
OI O1 I O O y : 1
I O I O I I O
l I I I OO I
" " " " " "
(d) Tabla de estados siguientes y de salida (O Diagramas de tiempos
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 realizar para el análisis de cir-
cuitos secuenciales. Como indica la Figura 6.14, se empieza con un circuito 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ísticas. Las ecuaciones de salida pue-
den obtenerse, también, del circuito y, una vez que se tienen las salidas y las ecua-
ciones de estado siguiente, se puede.n 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
circuito lógico en un lenguaje de simulación y realizar la simulación para cada
estado y valores de entrada utilizando 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
sus retardos reales, ya que el diagrama de estados y las tablas no contienen infor-
mación sobre la implementación del circuito.
Cm
CIk _-=====f----'
(a) Circuito lógico
.•
(e) Ecuaciones de estado siguiente y de salida
OO o 0/0 O 110
O1 O 110 1 O1 O
1 O 1 O1 O 1 1/0
1 1 t 1 10 00/1
" "
(d) T..bla de estados siguientes y de salida (O Diagrama de tiempos
Esquema lógico
i
Obtener ecuciones de
excilación 1
~
Obtener ecuciones de
estado siguiente y de salida 2
~
Generar tablas de estado
siguiente y de salida 3
~
Generar diagramas
de estado 4
+
Desarrollar diagrama
de tiempos 5
~
Simular el circuito
lógico 6
• y,} °
Qo , ... , Q.
Y,
Cli< _ _ _ _-'
So So
s, s,
s,
s,
s,s,
FIGURA 6.16 Modelo FSM de contador módulo 4 del Ejemplo 6.2.
So
s,
s,
s,
una n-upla de valores en los biestables, es necesario asignar distintas n-uplas a los
diversos estados. Este procedimiento, que se denomina codificación, simplificará
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ñales de entrada
f - . - y, Sefiales de
salida
Señales de entrada
Señales de
I-.- y, salida
Señales
de estado
(b) Basada en entradas
i
Desarrollo diagrama
de estados
!
Generar tablas de estados
siguientes y de salida
!
Minimizar eslados
!
Codificar entradas.
estados y salidas
!
Obtener ecuaciones
de estados siguientes
y de saJida
!
Elegir elementos de
memoria
!
Obtener ecuaciones
de excitació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
temporización
biestable, se pueden obtener las ecuaciones de excitación para cada entrada del
biestable, procediéndose a optimizar la implementación lógica de las ecuaciones
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 consiste en simular el circuito lógico, comparando la salida
del diagrama de tiempos obtenido y verificando si la simulación se correspon-
de abora con el comportamiento que se deseaba obtener. En las secciones
siguientes se describirá en detalle este procedimiento de síntesis con un ejem-
plo completo.
SOLUCIÓN
A partir de esta descripción, se concluye que el contador requiere al menos dos biestables,
ya que debe memorizar los códigos de tres dígitos: O, 1 Y 2. Además, como el contador es
bidireccional, se necesitan dos secuencias: una ascendente y otra descendente. La secuen-
cia ascendente contiene tres estados: uo' u l y u2' avanzando desde "o a u l y ~, y volviendo
a Uo mientras CD = la. De igual fonna, cuando la cuenta es descendente pasa por tres esta-
dos que, en este caso, son do, dI y d2 . Sin embargo, en la secuencia descendente el contador
avanza desde do a ~ y dI Y vuelve a do mientras CD = 11. Las secuencias ascendente y des-
cendente se muestran en la Figura 6.20(b).
Al desarrollar el diagrama de estados del contador, debe tenerse en cuenta la posibili-
dad de que el contador cambie de dirección durante la cuenta, es decir, debe permitirse la
posibilidad de que el valor de la entrada D cambie mientras C = l. Aunque este caso no se
ha mencionado en la descripción dada anterionnente, se puede resolver esta posibilidad
suponiendo que el contador seguirá contando en una nueva dirección desde el mismo esta-
do de la otra secuencia, es decir, si D cambia de O a 1, el contador irá desde u,. hasta
dv+I )m0d3' para i = O, 1 ó 2. Este éaso ha sido añadido al diagrama de estados de la Figura
6.20(c). .
CD:IO
L¡t-C
_D:_IO -+t.e t---C
_D:lo---.. ¡J
D _I---~_---' Y
e -----.. asccnde~~~=ndente
Clk ---L________
módulo 3 ...J
ce' CD:II
e
CD=II
CD::11
1+--'----i
•
l _
CD:QX CD:OX
CD= II
(e) Diagrama de estados parcial (d) Diagrama de estados final
(cambiando la dirección)
IX
X <S2· S6>
<8 .84 >
" 3
<S0·S4>
s,
I
'o "
FIGURA 6.22 Tabla de implicación.
el resto de esta sección se exponen las tres estrategias más comúnmente utiliza-
das: mínimo cambio de bits, prioridad de adyacencia y codificación del uno
caliente.
uo urJO u/O
u, ur!O uJO !b 1
'~g
d: '20 ur!1
u/o
l ~g !b l
'~g
~ JO
(a) Tabla de estados siguientes y de salidas
a¡ S,
1 00 01 10 11
2 00 01 JI 10
3 00 10 01 JI
4 00 10 JI 01
5 00 11 00 10
6 00 11 10 01
7 01 00 10 11
8 01 00 JI 10
9 01 10 00 11
10 01 10 JI 00
JI 01 JI 00 10
12 01 IJ 00 10
13 10 00 01 IJ
14 10 00 11 01
15 10 01 00 IJ
16 10 01 IJ 00
17 10 II 00 01
18 10 11 01 00
19 1I 00 01 10
20 II 00 JO 01
21 IJ 01 00 JO
22 IJ 01 10 00
23 11 10 00 01
24 11 10 01 00
Prioridad 1: (s I ,s2)
Prioridad 2: (s I,s2)
Prioridad 3: (so,s.) ,(s2,s3)
(a) Diagrama de estados inicia] (b) Prioridad en las adyacencias (e) Posible codificación
salida para cada tipo de codificación. En el resto de esta sección, se describe este
procedimiento utilizando el ejemplo del contador módulo 3.
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. Porlo 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.
So oo O1 OO 1
S, o1 00 O1O
S2 1O 1O 100
CD CD
Q,Qo 00 01 11 \O Q,Qo 00 01 11 \O
00 O O
~
O O It O
- - --, - . I O~1.! 00 O O
.' 1-, O
O O ;. ~ O
-, , ' , ' ,,
01 O '1 O 1, 01 O O O O
~"-
11 IX IX
,I '_
X IX'
_ .J _, X IX ,
,, -
¡X I X
. 11 X X X ' X'
,, ,,
\O ,1 O
- -- - -
,
1'O O ~ 1_, O O \O O O O , 1,
.-
Q. (siguiente). Qo(siguiente) Y
CD CD
Q¡Qo DO 01 11 10 Q¡Qo DO 01 11 10
DO O O O O O ¡-1~
,- ,-ii ~ O DO O O O O
~ - - --,
01 0 '1 O l ,' '' 1~, O O O 01 O ,,
O 'l' O
~"- -, , ,, '' X,, ,, X,,
11 ~
, :~ X' X' 'x' x X ,X ,
, -'
_ .J _ ' ,, 11 X X
, - , ,
,1 O 1 ' 0 O O 0 ' 1 , 10 O O O , 1,
10
- - - -' ,- , -
Q,(Slgulente) Qo(Slgulente)
CD CD
Q,Q,Qo 00 01 I I 10 Q,Q, Qo 00 01 11 10
000 xxx xxx x x x x x x 000 x x x X
, , -,
X 'X 1X X X iX '
011 ,
I L_ --T-
' IX I X
"
.. - I
I
I I
I 11 I
011 X X X
.- -
010 0 .100 1 , 0 o o ,1 o o o o o
00
- - - --
11 0 0 1 . 00 o ..
-- --
~ o
oo ..
, ¡1. 0
~
010
lOO o o o ,r l ',,
c: ', ,
I ___ .1 - - .. r ,,' I _,' ¡
01 :x x:X
I _..¡ -
X :X X
_ ~ _
1
I 1
¡X I:X 1 X
" 1_., _ ., I
x :x .:x' 1, I
101 x x
, , ,'x ,'
,x
Qz(siguiente)
Q.(siguiente)
Qo(siguiente)
:>y
Coste (Q~ '" Coste (Q ,) = Coste (Q2):: 22 Coste (Y) = 16
Retamo (Q¡)) = Retardo (Q ,) = Retardo (Q2) = 3,6 Retardo (Y) = 3,2
EJEMPLO 6.8
PROBLEMA
Dado el contador módulo 3 con la codificación A, como se describe en la Figura 6.26,
seleccione el tipo de biestable que minimice el coste y/o el retardo 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 en la Figura 6.30(a). Después, para obtener las ecua-
ciones de excitación de los distintos tipos de biestables, se utilizan las tablas de excit"-
ción de los cuatro biestables que se muestran en la Figura 6.30(b). A continuación, se
tomará cada pareja de estados 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 O, que se muestran en las Figuras 6.30(c), (d), (e) y (f), respectivamente.
Obsérvese que, realmente, los mapas de entrada combinan cuatro mapas en el caso de
biestables SR y JK, Ydos mapas en el caso de biestables T y O. 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 utilizar una puerta
AO! para la implementación de la lógica de entrada de JI y Jo' en lugar de dos niveles de
puertas NANO. 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, O YSR gene-
ran implementaciones con costes y retardos similares.
Lógica secuencial 267
CD
o 00 01 I I 10
00 o o o o 1 o o 1
01 o 1 o 1 o o 1 o
11 X X X X X X X X
10 1 o 1 o o 1 o o
Q) (sigUiente) ,Qo (sigUIente)
(a) Tabla de estados siguientes para
la codificación A
o O O X O X O O
O 1 1 O 1 X 1 1
l 1
1
O
1
O
X
1
O
X
X
1
O
1
O
O
1
CD
o 00 01 II 10
00 O X O X O X O X
,'..-'. O O X O X '-1" O
, -'
r; •
01 O X X O O X X O O X O ,1 , ' . " O O
, ' ,r. "'
r: "r:". I 1 Ir:" I 1
II X X X X X X X X X , X I. X liX I I~ ~I X : X I~ ~
I .- J
I I
10 X O O X X O O X O ," 1 11 1 10 I O I_l~ OX I
""" J _ J I
-- - - --
.. _ _ _ _ _ _ 1
FIGURA 6.30 Implementación del contador módulo 3 con varios tipos de biestables.
268 Principios de diseño digital
CD
o 00 01 ll 10
o ox o x o 1 iX ~IO ~IX~ o .,- ....
00 X X
, ,IX ,1 1 ,IX I
01 O X X O O X X O iO ~IX "II X "ll l Il ¡-l ~I X "II X "II I II
I " ji_ji I I " 1'_" I
I I I I I I I I I I
ll X X X X X X X X ¡X 1¡X , X IX , ,X I¡X , X IX ,
-ji I I I -', I I I
10 X O O X X O O X X ~1_1 1 ~X_l o IX I
X 11 ,
•_ _ _• 1
------- ____
J , = QoCO' + Q' oCD + (e + Q,jJ + Q' eP')' {coste = 12. retamo = 2,41
K ,=C [coste:: 0, retardo", O]
J . = QIGD' + (lICO' = (e" + QIO' + Q.O')' [coste = 12, retardo = 2.4]
KO= C [cost[Link] O. retardo", 01
(d) Implementación con biestables JK
CD CD
Q,Qo 00 01 ll 10 o 00 01 l l 10
,
00 O O O O 1:~ O
O rt "
,' 00 O O O O
--
11 10
-- O 11 I
01 O O O O O I r.¡J I '
,, ,-,
...
I 01 0."-
, ,
0""" O O 'I 10
, ,,
r: •
~ :;x_, X IX I ' X iX
ll X X X X X ,X I
r'" I
'2' ~ X ll
,iX; ~ , , , '- ,
10 O O O O ,1 u! ~ I O 10
._-O
OJ I ,O
- - O '-' . ,
O O
I
T. = Qle + (loCD + QoCD' (coste = 22, retardo ,. 3,6J D I = Q,e + QoCO' + Q' ,Q'oCD [coste = 24, relardo =4,01
To = Que + QleD + Q' ,CD' [coste = 22, retardo'" 3.61 Do = Qoe + QleD + (! .Q'oCD' [coste = 24, retardo =4.01
C D
~ 17 ~ 7
Q' ,
~7 W Q,
L~ 2,4 J,
r~ 4,0
Q, -
K¡ Q', -
1,8
I 1,4 y
2,2
~.~
~
L
Jo Qo r- f-
> 4,0
~ C,D a C/k 4,4
Q'o
Ko Q'o r- C/k a Y 7,6
Qo
C,D a Y 5,6
C/k
C/k a C/k 6,4
e/k
Q, , 0¡:O ~4,ob
-+I4. , -+I4.
, 0¡:O
,
~4,, O ¡:
y
~~ , L-____4 -_ ____
" "
FIGURA 6.32 Diagrama de tiempos de un contador módulo 3 para una secuencia de valores
de entrada.
6.16. PROBLEMAS
6.1. (Señal de reloj) Calcule la frecuencia 6.4. (Latch D sincronizado) Diseñe un
de reloj y el rendimiento de ciclo para latch D utilizando sólo (a) puertas
una señal de reloj con un ancho y NANO 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) 10nsy 100ns vas.
(e) 100 ns y I 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 AND, 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.
,
I I I ! t I I I I I I
lo t. t2 IJ '4 t s '6 h t. 19 f_O t ll '1 2 t' 3
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 NANO 6.7. (Biestables) Utilizando 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
x AB=1O
So s.1I sjO s,lI
s, sjO s,/I s./I
S2 s,lI sr/O s,lI
FIGURA P6.10 s, sjO s,lI s./I
s. sr/O s,lI s,/I
6.11. (Análisis secuencial) Obtenga (a) las s, sjO s./I sil
ecuaciones de excitación, (b) una
ecuación de estado siguiente, (c) una FIGURA P6.13
tabla de estados/salidas y (d) un dia-
grama de estados para el circuito mos- 6.14. (Codificación de estados) En el dia-
trado en la Figura P6.11 . grama de estados mostrado en la
Figura P6.14, obtenga las codificacio-
nes de estado utilizando:
(a) La heurística del mínimo cambio
.1 -'---'. de bit
(b) La heurística de prioridad en
adyacencia
FIGURA P6.11 (e) Codificación del uno caliente
Lógica secueocial 273
Componentes
de
. . /
memorlzaClon
3
booleana Puertas lógicas
y biestables
6
M~quina de
estados finitos 4
Técnicas de
diseño lógico
Sistema binario
y representación
de datos
....... cte8
0ItId00 tlairoo
• 'jade,
278 Principios de diseño digital
7.1. REGISTROS
El componente de memorización más sencillo es un registro, que puede conside-
rarse como un Ijiestable ampliado a múltiples bits. Cada registro consta de n bies-
tables activados por una señal de reloj común. En otras palabras, cada biestable del
registro almacena su propio dato en cada flanco ascendente de la señal de reloj. Así
pues un registro básico posee n entradas y n salidas además de la señal de reloj .
En la Figura 7.1 se muestra un ejemplo de registro de 4 bits. Su símbolo grá-
fico, que utilizaremos a lo largo del libro, se muestra en la Figura 7.I(a). Como se
indica en la Figura 7.1 (b) el registro consta de cuatro biestables D conectados en
paralelo.
C/k
"
- D, Q, - "- D, Q, - "- D, Q, c- - Do Qo c-
¡- > - 1> - 1> c- >
Clk
I - 1-
Q, Q, Qo
(b) Esquema del registro
Preset IJ /2 1) lo
Registro
e /ear Q3 Q2 QI Qo
1, 1, 1,
Preset
y y y y
e/ear
e/k
Q, Q, Q,
(b) Esquema del registro
FIGURA 7.2 Registro de 4 bits con puesta a uno (prese~ y puesta a cero (cfeat) asíncronas.
Como puede verse en la Figura 7.2(b), el contenido del registro puede hacer-
se todo ceros poniendo a O la señal Clear durante un corto período de tiempo. De
forma similar, un contenido de todo unos podría introducirse poniendo a cero la
señal Preset. Obsérvese que estas señales de puesta a cero y puesta a uno son inde-
pendientes de la señal de reloj y tienen prioridad sobre ella, lo que significa que
si están a cero durante el flanco ascendente de la señal de reloj, se ignora la entra-
da 1 y el registro es puesto a cero o a todo unos.
En lo que resta del libro supondremos que todos los registros y contadores
pueden disponer 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 explicar el
funcionainiento del componente.
Tanto en el registro de la Figura 7.1 como en el de la 7.2 automáticamente se
almacena un nuevo dato por cada flanco ascendente de la señal de reloj . Sin
280 Principios de diseño digital
Load 1] 12 /1 In
Registro
QJ Qz QI
1, 1, 1,
.. I t t· IO
I O I O I O I
[
S
-.
Seloctor
•..~
. r S
Selector
r S
Selector
r S
Selector
elk
Y, Y, Y, Y,
1,
Registro de desplazamiento
Desplazar Q) Ql 0 1 Qo
I I
I O
I
I O
I I I
I O
I
I
r
O
DespÚWlr t Selector
I
Selector
r Selector
I
Selector
Y, Y, Y, Y,
(e) Esquema del registro
/ , / ,
/,
I I I I I I
3 2 1 O 3 2 1 O 3 2 I O 3 2 1O
s,
s.
Ir
I
Selector
IrI
Selector
Ir
I
Selector
fr
Selector
' - D, Q, - - D, Q, r- " - D, Q, 1- - D, Q, -
-> -> -~ r- >
C/k
Y, Y, Y, Y,
(e) Esquema del registro
7.3. CONTADORES
Un contador es un tipo especial de registro 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
habilitación (Enable), que cuando vale l habilita la cuenta; y una señal Clear para
la puesta a cero del contador. 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
E
Contador
E..
01'_ O
O
O
1
O
O
O
I
O No cambia I O O I
I Cuenta 1 I 1 O
(a) Símbolo gráfico (b) Tabla de operación (e) Tabla de verdad del HA
e. f..rt e,
h e~ , .r-T e, c.
8 ¡8
IIA HA HA HA
Y
l D, Q, - D, Q, ¡- ID
, Q, - D, <1, -
> f> ;-
CI~l"
CIk
Soli(/(;¡
Q, Q, Q, Q.
dt acarreo
(d) Esquema del contador
7 .6(b). En la Figura 7 .6(c) puede verse que el incrementador consta de una serie
de semi-sumadores (HA) dispuestos de manera que el HA en la posición de bit ;
tenga sus dos entradas conectadas a la salida del ;-ésimo biestable Q¡ y al acarreo
e¡ del HA en la posición ;-1. Obsérvese que el nuevo valor del biestable D¡ será
1 si Q¡ ó e¡, pero no ambas, son 1. Por el contrario, la salida e¡+l será 1 sólo si Q¡
y e ¡ son ambas 1. La tabla de verdad de un HA se da en la Figura 6.7(c), de la
cual podemos derivar las siguientes expresiones booleanas para D¡ y e¡+l:
D¡ = Q¡ EIl e¡
e¡+l = Q¡e¡
o X No cambia
1 O Cuenta ascendente
1 1 Cuenta descendente
(a) Símbolo gráfico
(b) Tabla de operación
•
I O O O O O
1 O O 1 O I
1 O 1 O O I
I O I I I O
----1 -----1-- -----------------------
O O O O
I I O 1 I I
1 I 1 O O 1
1 1 I 1 O O
(e) Tabla de verdad del HAS
D
E
cfc8 ~
HAS HAS ~
-l
~d R3 HAS
D, Q, D, Q, D, Q, D. Q.
rl- e, 1> e, e, e,
,
ca
SaUdn
Q, Q, Q, Q.
de acurno
Mientras la señal E sea 1, este contador realizará una cuenta ascendente módu-
lo 16, sumado l a su contenido por cada flanco de subida del reloj.
Este contador ascendente básico puede también ampliarse como contador
ascendente/descendente sustituyendo el semi-sumador por un semi-sumadorl
restador (HAS), que pueda incrementar o decrementar bajo el control de una señal
de dirección. Por ejemplo, en la Figura 7.7 se muestra un contador ascendente!
descendente que se parece bastante· al contador ascendente de la Figura 7.6,
excepto en que tiene una tercera entrada de control, D. Como indica la tabla de
operación de la Figura 7.7(b), el objetivo de esta entrada adicional es permitir
contar de forma ascendente cuando su valor es O y de manera descendente cuan-
do es 1. La tabla de verdad de un HAS se muestra en la Figura 7.7(c), de la que
es fácil derivar expresiones booleanas para D¡ y C¡+ I:
D¡ = Q¡$ C¡
e¡+1 = D 'Q¡C¡ + DQ '¡C¡
D 1, 1, 1, 1,
E Contador
ascendente/descendente O O X No cambia
Load O 1 O Cuenta ascendente
O 1 1 Cuenta descendente
(a) Símbolo gráfico
1 X X Carga la entrada
(b) Tabla de operación
1, 1, 1, 1,
~
D
I
E
j 1 1 1 I
HAS
¡-
HAS .
¡-
HAS
r- HAS =~
1
I
SeleclOr
O
I
Selector
O I I O
Selector
I O
Selector I
Load
[ r r
- D, Q, - D, Q, ~
D, Q, - D, Q,
-~ 0',
r ~
0',
- 0',
r-
0',
elk
J
Salida Y, Y, Y, Y,
deacar~o
(e) Esquema lógico
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
AND 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 sin 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
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ñal 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).
"O" D 1) 12 IJ l o
E Contador D 13 12 I 1 lO
> ascendente/descendente E Contador
Load . Q) Q2 Q I Qo > ascendente/descendente
Load Q) Q2 Q I Qo
E Contador
'- r , Q, ,
L- r, Q, f-- L- r, Q, 1- '- ro Qo t--
, 1>-
FF,
.-- 1>- FF, ~ 1>-
FF, , FFo
e, e, e, eo ¡-
y y i Y
Clea r
C/k
Q, Q, Q, Qo
(b) Esquema lógico
'O 8
C/k
,
Q,
- 1 4.1.
F
Q,
1
-+' 3h.
1
......
1 1
-+'1 3h.
Q, -+',2h.-
1
, I 1 ,
Q, ~h.~~tt ' I :I ' I :I :I :I
~ 1, ~ 1, 1, 1, 1, t,
(e) Diagrama de tiempos
Enabl~
.-- E Contador
E
Contador
11r~/ea,
asÚlcrono asíncrono
Q, el, Q, Q, elear Ql Q2 Ql Qo
C/k
Glear
fI
\
Enable
I
r-- E Contador E
Contador
r
síncrono síncrono
Q, el, Q, Q, Crear Q, Q, Q, Q,
Glear
C/k
e/ear
----.
-\
...--~a 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 secciones de n 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.1I (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 misma señal de reloj, pero la sección
más significativa estará habilitada sólo cuando la sección menos significativa esté
en su estado 1111. En la Figura 7.11 (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 misma
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 significativa está saliendo del estado 1111. En
otras palabras, siempre que la sección menos significativa pase de 1111 a 0000, la
señal de reloj de la sección más significativa efectuará una transición de O a 1,
haciendo que esta sección incremente en uno su cuenta.
Selección de escrilllro m
"
--+--+ RF "
Entrada -++-,-....1'-/ D Q Salida WA
C~ ----i>~_,-_~
Selección de leclII,,, m
o
(a) Celda del fichero de registros (b) Símbolo gráfico
1,
Decodificador
de lectura
de2a4
AA ,
AA o
WA ,
WA o
RE
WE
Decodificador
de escritura
de 2 a4
o) O: o, 0 0
m
Selección de escritura
" RAA
WA "
---+--+ RF
Entrada -!.t!~::=~) o." REA
WE _ 2'- m " RAS
Qul8
elk > REB
m
Selección Selección
de lectura de lectura
(puerto A ) (puerto 8 ) A B
1, 1,
Decodifi- Decodifi-
,,",oc ,""',
de lectura de lectura
de 2 a4 de2 a 4
O
O
2
2
3
Decodifi-
cador
de escritura
de2a4 3
3
Binario Decimal
1...110 2" - 2
1.. .111 2" - 1
.. m bits
..
(a) Direcciones de memoria y contenidos
Im_I" ' / l /o
- A nol - An _1
- es - es
- RWS - RWS
da por las líneas de direcciones y lo hará disponible en su puerto de salida. Por otro
lado, cuando RWS sea 1, la memoria escribirá el contenido presente en su puerto
de entrada en la posición de memoria indicada por las líneas de direcciones.
Cada chip de memoria también dispondrá de m puertos de entrada y m de sali-
da. Para valores pequeños de m (1 o 4), el chip de memoria puede tener puertos
de entrada y de salida separados. No obstante, normalmente los puertos de entra-
da y de salida están combinados para reducir el número de patillas del encapsula-
do del chip de memoria. Por lo general, el número de patillas determina el tama-
ño del encapsulado y por lo tanto la cantidad de área de trujeta de circuito impre-
so ocupada por los chips de memoria. El símbolo gráfico para ambos tipos de
encapsulados se muestra en la Figura 7 .l4(b).
En un nivel de mayor grado de detalle, una RAM está organizada como un
array de celdas de memoria junto con un decodificador de direcciones y adapta-
dores de entrada/salida (l/O). Como se muestra en la Figura 7.15(a), una celda de
memoria (MC, Memory Cel/) puede representarse simbólicamente mediante un
latch D sincronizado, una puerta ANO, y un adaptador de salida. 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ón de escritura es también 1, el valor de la Entrada se memori-
zaría en ellatch. 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 dos puertas, como es
de imaginar en realidad se implementa con bastantes menos transistores.
Dependiendo de la forma de implementación de la MC las memorias RAM se cla-
sifican en estáticas o dinámicas. En el caso de la RAM estática (SRAM, Static
RAM), la celda de memoria se construye con entre cuatro y seis transistores,
empleando dos inversores interconectados formando un latch, e implementando
con un transistor la puerta ANO de entrada y con otro el adaptador de salida. Este
tipo de celda de memoria SRAM retendrá su contenido indefinidamente 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 fabricación, el contenido
de la celda se pierde transcurrido un tiempo. Para contrarrestar este problema cada
posición de memoria 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 motivo 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 alimentación. No obstante el contenido de estas
memorias no se puede leer hasta que se restablezca la alimentación.
Selección de jila
e
Me
Habilitación de escritura
(a) Celda de memoria
A, .....-~
3 Hr;--'r-~-t--.---;-r--.---r;--,
Decodifi-
cadorde
direcciones
de2a4
RIVS'h-=J}:=-:::::J L~
es
po igual O mayor que la anchura del pulso de escritura, definida por el interva-
lo t3 - ti' Además, la dirección debe pennanecer 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 t5 - t3 ,
RWS ----------------------~----------------------
es
Dirección V
_-J""'------'-_ _- - "
Dirección válida X
'' - - - - - 7 - - - -
Dato
( ,
Dato válido
,
I
)t - - - -
TIempodc , ~_ _ _~_ _ _~~__~ ,
habilitaci61l1 I Tiempo da
I de la salida ' linhabilitación
' .): 1 I de la salida
, I I « J I
Tiempo ~c acceso I
I Tiempo de rete nción I
de la salida I
lE
,
I " I • I ): I
t, t, t, t,
RWS
es
Dirección ~
X'---T-------.---~I':\_ Dirección válida
-------J I
I I I I TIempodc l I
I I . I retención I
AnchUlfl del pulso de escntura I del datQ I I
' 4 ): 1:1( .., 1
I I
t, t, t,
Bus de entrada
32
14
8 H 8 H
A
I I I I
'- A - A L- A '-- A
- es M, r- es M, - es M, - es M.
32
Bus de salida
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 RAMs
de 16K x 8, Mo' Mi' M2 , Y M3' 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
1-2
- 14
Decodificador
de 2 a4
3 2 1 O
I
1
A
es M,
RWS
o
I
I
1
A
es M,
RWS
o
I
I
1
A
es M,
RWS
o
I
I
1
A
es M,
RWS
o
I
Bus de salida
45
¡
Cabecera 34
Cabecera- I 23
Cabecera - 2 vacía
Cabecera - 3 vacía
(a) Contenido
de la pila
antes de insertar 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 despu6s
de extraer 45
ria. Para ello, los 14 bits menos significativos del bus de direcciones se han conec-
tado 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 decodificador a la entrada CS del chip apropiado.
ción de la Figura 7.20(a). Observe que la pila tiene dos señales de salida, Vacfa y
Llena, que indican el estado de la pila de la siguiente manera: Cuando Vacía toma
el valor 1 indica que la pila está vacía; por otro lado, cuando Llena es 1, la pila
está llena.
En la Figura 7.20(d) puede verse que la implementación de la pila incluye un
registro de desplazamiento con carga en paralelo (RDconCP) por cada pareja
entrada/salida (en total la pila contiene m registros de desplazamiento). Estos
registros desplazará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
en la pila a través de la entrada I L 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 Push/pop = O Y Enable = 1), o desplazará a la izquierda con la cuen-
ta descendente del contador (si Push/pop = l Y Enable = 1).
Los valores de las señ[Link] de control para los registros de desplazamiento 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 distintas
señales de control:
s, = Enable
So = (Push/pop) ' Enable
D = (Push/pop)Enable
E = Enable
La implementación de estas ecuaciones constituye la lógica de control de la
pila de inserción/extracción.
Según la tabla de salida de la Figura 7.20(c), la lógica de salida decodificará
los estados 000 y 100 del contador. La señal Vacía se pondrá l 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 Llena será 1, siendo O el
resto del tiempo. Por tanto se pueden deducir las siguientes ecuaciones booleanas
para la lógica de salida:
Vacía = Q2'Q,'QO'
Llena = Q2Q , '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
x O No cambia
O 1 Inserción
1 1 Extmcción
X
O
O
1
O
1
O
1
X
O
O
1
O
O
O
O
O
1
O
1
O
1
O
O
-
O
O
O
O 1 1 O O
1 1 O 1 1 1 O O O 1
m
"O"
I 'í
r< Reset 1, 1,
S, RDconCP
f-- S, Q, Q, Q, Q,
/N.. _ l
I I
. "O"
OUT,
1 : 'í
1--< Reset 1, 1,
s, RDconCP
f-- s, Q, Q, Q, Q,
Pushlpop ?-J I I
FU 1--< Reset Contador
D
E'lable E ascendente/descendente
f-- Set Q, Q, Q, Q,
Lógica de control
_1 _1
1 I
): ¡.. Vacfa
Reset
Lógica
de salida 1 ... ) ¡.. U ena
(d) Esquema de la pila
o dato
1 dala I -+-{Cabecera 1I
2 vacla I +-f Cabecera I
x O No cambia
O 1 Inserción
1021 vado 1 I Extracción
1022 vada
1023 ~'acía (b) Tabla de operación
,....-
..
l .~ COlC1'!rlII6 ::re MFSll8
DEL [Link] DE LA:=" CONTADOR
l'USI'iPá> ENNJLE S es RWS D E
X O X O O X O
0- I 1 1 1 O 1
I 1 O 1 O 1 1
(e) Tabla de control
D L
'-- E
D
:i
f-<
-
E
Reut
>
Cabecera
1- ->S..
Cabecera - 1
Rese'
I
1 I
1 1
S Selector O I
I p..;-
Puslllpop
E- I
4 1 A
RAM de IK
Enable
es
RWS
Lógica
de control
! Bus de liD
Lógica
de salida tg .
Vada
U ella
45
!
vacía
Cabecera
Cabecera- 1 vacía
Cabecera- 2 34
Cabecera- 3 23
vacía
45
34
23
vacía
vacfa
45
34
23
(e) Contenido de la cola
después de leer 23
x O No cambia x O O O X O
O 1 Lectura O 1 O O 1 1
1 1 Escritura 1 1 1 1 O 1
,......, I
Resel 1, 1,
o s, RDconCP
L s. Q, Q, Q, Q(/
o
I I
• o
o
o
I
N
•
- .\j
•
OUT.
~
o l....-- M
,
úc/uro/escritura
,LJ
f-c
L
Reset
s,
I
1,
RDconCP
1, Tt- o
o
o
11, S. Q, Q, Q, Q" .----:-
R->- I I
I
o
Enable
-~
N"il
~
l....-- M
D Contador
E ascendente/descendente
Tt-
Reset S<I Q, Q, Ql Qo
Lógica de control
I 1-+
~ ¡.. Vac(a
Lógica
de salida
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 ocurre 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 lK y dos
contadores designados Inicio y Final. El contador Inicio contiene la dirección del
primer dato escrito. Cuando se solicita una operación de lectura, se transfiere al
bus de entrada/salida (110) el dato de la posición direccionada por el contador
Inicio, y el cpntenido del contador se decrementa. El contador Final contiene la
dirección de la primera posición vacía de la cola, y cuando se soHcita 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 posició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 Inicio, aunque en este caso significará que la cola está
llena. Para evitar esta ambigüedad se pueden emplear contadores de 11 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-
nificativo.
o vacía
1
2
dato
dato
--t In icio
, t-
' ...
dalo x O No cambia
¡02 ¡ vada --t Final
O 1 Lectura
1022 1 1 Escritura
1023
(a) Diseño simbólico (b) Tabla de operación
E E
S es RWS (tIi:iI) (fM)
x O X O x O O
O 1 1 1 O 1 O
1 1 O 1 1 O 1
(e) Tabla de control
Reset
~r>;""
I E
L. Reset Inicio Final
e/k 1 rf>
1 ,, 10 1 10
I
1I
Comparador
< - >
I ~s 1
Seleclor
O I
I I
rru I A
RAM de IK
Enable es
Lectura/eserilllm ~ RWS
t "'"\.
1 ~
B USde ~
Vado
L...j=\ U'M
(d) Esquema
En la Figura 7.24 se muestra una implementación de cola que utiliza dos con-
tadores y una memoria de l K. Esta cola emplea un selector para elegir el conte-
nido del contador Inicio o del Final, así como un comparador para contrastar sus
contenidos. La Figura 7.24(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).
100
suma = LX;
i= 1
suma = O
bucle:
para i = l a lOO
suma = suma + xi
fin de bucle
Este bucle podría ejecutarse en un camino de datos de 32 bits formado 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,
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, transformados 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 Gami-
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.
Entrada
-T ~
8 HSI Selector O I
I
--
7 t-- M A B
6 iI-- S, ALU
5 S,
4
3
S,
I
1,
I
1,
2 iI--
,.........
I S, Acumulador
e/k
O
2 t
(a) Esquema del camino de datos
8 7 6 5 4 3 2 O
1~u!1 CoouoIes
de la ALU 1'::."..:01
i
(b) Palabra de control
CoouoIes del
al "UIIdIIJdor I~i="
FIGURA 7.25 Camino de datos sencillo con un acumulador.
Para resolver este problema suponemos que la palabra de datos se suministra desde el exte-
rior y está disponible como entrada al camino de datos. Para describir el algoritmo utiliza-
mos las variables Dato, Cuenta, Máscara, y Temp . La variable Dato almacenará la palabra
314 Principios de diseño digital
de dato, que constará de ceros y unos. El algoritmo recorrerá Dato, desde el LSB al MSB,
y sumará 1 a Cuenta por cada 1 que encuentre en Dato. Máscara contiene la constante 1, Y
Temp se empleará para memorizar temporalmente el LSB de Dato. Tras la inicialización, el
],,,,,,,
9 Is
I
I
Selector O
•I M 5, So 0I'EII'ACKlNI!I1:A
O O O Complementar A
O O 1 ANO
O l O EX-OR
16- 18
3
WA
O 1 1 OR
1 O O Decrementar A
5 WE
Banco 1 O 1 Sumar
de registros 1 1 O Restar
eIk > de8 x m 1 1 Incrementar A
3
,
RAB ~
12- 14 «AA (h) Operaciones de la ALU
II REA REB ~
8-1O 3
, I
7
Bus A BusB
M A B
6
5 S, ALU OPeRACIONES DEL
4 S, So So DElIPlA'OOOR
O O O Pasar
"U' '"U'
O O 1 Pasar
I I O
O
1
1
O
l
No usada
No usada
3 S, le IR
2 S, DesplaZtldor l O O Desplazar a la izquierda
I S, 1 O 1 ROlar a la izquierda
1 i O Desplazar a la derecha
Bus de resultado
l 1 l.. Rotar a la derecha
O
V
~
Outport
"
19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 O
algoritmo aislará el LSB de Dato, lo almacenará en Temp, sumará Temp a Cuenta, y final-
mente, desplazará Dato una posición a la derecha. Esta secuencia se repetiría hasta que
Dato contenga sólo ceros. Con ello, este algoritmo repetiría la secuencia de operaciones
descrita 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 utilizan para inicializar las variables, mientras en
las sentencias 4 y 5 se suma uno a Cuenta siempre que el LSB de Dato sea igual a l , Y des-
pués, en la sentencia 6 se desplaza Dato en una posición a la derecha, introduciendo un Oen el
MSB de dicha variable. 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
derecha o a la izquierda, indicando a la derecha del símbolo el número de desplazamientos.
=- _....
I
E
I
~ ~=A. '[Link]!:IIIM
R,
IIII!XD
X
B
X
<JIIWtII
[Link],..
X
"'1IiIfWI8OR ofi_
X
"'lE
O
2 O R, O O Sumar Pasar O
3 O ~ O X Incrementar Pasar O
4
5
6
7
O
O
O
O
R.
R,
R,
Ninguna
R,
R,
R,
R3
~
R.
O
O
AND
Sumar
Sumar
Sumar
.,Pasar
Pasar
Pasar
......
O
O
O
I
)
Repetir
mientras
DOlo '* °
Al implementar este algoritmo debemos en primer lugar asignar las variables a registros
del banco de registros. Como indica la Figura 7.27(b), las variables Dato, Máscara, CL/ellta,
y Temp se han asignado a los registros RI' ~, R" y R., respectivamente. Una vez que
hemos asignado estas variables a los registros, estamos en disposición de deducir las pala-
bras de control adecuadas para cada sentencia, mostradas en la Figura 7.27(c), donde se
emplean nemotécnicos en los distintos campos de control para indicar las operaciones y las
direcciones de los registros de operandos y resultados. Para controlar el camino de datos
suponemos que el. contador de unos es un módulo separado, que comenzará la cuenta de
unos siempre que una señal Inicio sea 1, Y que pondrá la señal Hecho a I tan pronto como
esté disponible 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-
taría de ocho estados. Observe que el contador permanecerá en el estado So hasta que la
señal/nido se ponga a 1, 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 retornando al estado original so'
El controlador del contador de unos tiene dos señales de entrada, Inicio y Dato'" 0, 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 '" 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
se necesitan tres biestables D, que denominamos Q2' QI' y Qo' 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
Dato = ¡npon
Cuenta:: O
Hecho:: 1 Máscara :: I
/
Q, Qo Q, .o Q2 :: 1
00 01 11 10 00 01 11 10
Inicio (Da 10'" O)
FIGURA 7.29 Lógica de estado siguiente para el controlador del contador de unos.
318 Principios de diseño digital
So O O O O X X X O X X X O X X X O X X X X X X O
s, O O I I O O I I X X X O X X X O X X X X X· X O
S2 O I O O O I I I X X X O X X X O I O I O O O O
S3 O I I O O I O I X X X O X X X O I I I O O O O
s. I O O O I O O I O O I I O 1 O I O O I O O O O
S5 I O I O O I I I O I I I 1 O O I I O I O O O O
S6 I I O O O O I I O O I I X X X O I O I I I O O
s, I I I O X X X O O I 1 I X X X O 1 O I O O O I
Lóg;ca .
,
L~_
;->
-
0', - - P-
¡- I- D1QI
r- > 0', ~
'-
-
['-1- DoQo
L
e/k
~ Wf)n" ,o
~
Jllporl
u.
-G Bus de resultado
~o~O
lE
WA 2
h
WA ,
~
WA o
~
~ O
WE
RAA,
RAA ,
I Camino
RAAo
de datos
REA
Unidad
de control RAB,
RAB,
...2. RABo
REB
M
S,
1 So
S,
I
S,
O So
OE
I I Lóg;ca de 7,;¡;da Oulpo,", .
Q, 0', Q, 0' , Qo 0'0
~
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.
I
Selector
II I I I
Selector I
Banco
de regisltOs
~7 Bus]
~7
1 I 1 I
I I Selector I 1 Selector I
1 Selector I I I
Banco de
M emoria
Contador Registro registros
1 11 1
Bus! 7
BUS2
,.,. ~
Bus3
,.,. ,.,.
,;:..
Bus"
'ro
1
1
Selector I 11 Latch
11
Latch
1 Selector I
I I -1
I
Latch Latch I
ALU,
I ALU2
I 1
I
1I
I
I Latch
I I Multiplicador -1
Sdialc:s
de condición
Sellaks de tomtol
del camino de datOS
i~j!~~~~"~ E~% dedalos
Regisuo
siguiente d<,_ Ll-''-4:-l:::--"1'-,f-'Ti Salidas
de control
(a) Modelo de unidad de control (b) Unidad de control con registro de estado y decodificador
ir====¡:====lF=SiiL [Link],
de condición
50'''''
condición
de
I ncren~nl
(e) Unidad de control con un contador (d) Unidad de control COn registro de estado y pila
de inserción/extracción
Entradas de oomrol
r-----:ljt[~==¡==== Sci'iaks
de condición
ROM
Sd~a.k 5 de oorllrol
Ó
de l c,:nmi no de datos
PROM
Salidas
dccoolrol
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
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 pila.
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 control o señal de condición adicional. Por este
motivo se utiliza sólo una señal de entrada o de condición para seleccionar el esta-
do siguiente, lo que limita 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 alternativa 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.15. PROBLEMAS
7.1. (Registros) Partiendo de las formas 7.2. (Registros) Diseñe un registro con
de onda mostradas en la Figura P7.l , dos señales de carga que habiliten la
dibuje la forma de onda de salida de carga de datos desde dos fuentes dife-
un biestable O 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.
Dal~ : L
u, Lf 7.4. (Registros) Diseñe un registro de J6
bits que pueda cargar nuevos datos y
rotar o desplazar su contenido a dere-
cha y a izquierda.
326 Principios de diseño digital
6
Máquina de
estados finitos 4
Técnicas de
diseño lógico
Sistema binario 2
y representación
de datos
Máquinas de 8
estados fmitos
330 Principios de diseño digital
¡ Señales de
control
¡
Unidad Señales de Camino de
de control estado datos
~ ~
Salidas Salidas
de control del camino
de datos
(a) Diagrama de bloques de alto nivel
Entradas
del camino
Entradas de control de datos
I I
~ + ISeiUl"",
¡
r+ - -8e- control I Sei<ctN
..... - e,
rere --~
rere --~
--~
--~
I Re¡iwo
.6. ~7
l W1-
7 ~
1
8 ..
.--:-,
... ---, --~
~7 U 8 ...
Ef 1
-\ ..ru / \ ~
.....,
L6ak"ade
siguimle
Registro
de estado
-r
LóPcade
Señ.Io;'"
estado
.,l,.
I
I Re¡i.... I
.,l,.
/
8 ..
'" ...'"
Comino
UDidod ......uo!
.
Salidas de Salida Ikl
control ...
cam;node
,~
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 buses. El cami-
no de datos toma los operandos de las unidades de almacenamiento, realiza los cál-
culos en los circuitos combinacionales, y devuelve los resultados a las unidades de
almacenamiento en el tiempo correspondiente a cada estado, que normalmente es
igual a un ciclo de reloj. La unidad de control realiza la selección de operandos, de
332 Principios de diseño digital
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 asignación y, en el siguiente flanco de subida
de la señal de reloj , carga el resultado en el registro que almacena la variable indi-
cada en el lado izquierdo de la sentencia. Es importante resaltar que aunque la
evaluación de la expresión se hace en un estado, el nuevo valor de la variable no
puede utiljzarse hasta el estado sjguiente, como muy pronto. Genera\jzando a par-
tir de la especificación del contador de unos, podemos decir que un modelo FSM
con sentencias de asignación añailidas a cada estado, normalmente designado
como FSM con camino de datos, o FSMD, permite especificar completamente
el comportamiento de un diseño digital arbitrario.
Inicio=O
Finnl=O; Data=/nport
Fi1UlI=O; CuenraJ=O
FilUJl=O; Máscara=I
Final=O; D010=Dalo» I
Final=l ; Outport=CuentaJ
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 funciones f y h en fonna
tabular. Para poder especificar los valores de las variables de fonna eficiente y
comprensible al definir una FSMD, utilizaremos expresiones aritméticas.
Se defme el conjunto de todas las posibles expresiones, Expr, sobre el con-
junto de variables V, como el conjunto constituido por todas las constantes K del
mismo tipo tomadas como variables en V, el propio conjunto de variables V, y
todas las expresiones obtenidas combinando dos expresiones mediante operado-
res aritméticos, lógicos, o de reordenación. Más fonnalmente,
Expr(V) = K u V U {(e, O e) le" ej
E Expr, O es un operador aceptable}
Mecliante Expr(V), podemos definir los valores de las señales de estado así
como las transforn¡aciones en el camino de datos. Sea STAT = (statk = e, Ll'j le"
e. E Expr(V), Ll 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 Dato = O, (a-b) > (x+y), y (contador =0) AND
(x> lO} Las relaciones que defmen las señales de estado pueden ser ciertas (true),
en cuyo caso la señal de estado tiene el valor 1, o falsas (fa/se) , tomando enton-
ces el valor O.
Mecliante la defmición fonnal de las expresiones y las relaciones sobre un
conjunto de variables, es posible simplificar la funciónf: (S x V) x l -+ S x V clivi-
diéndola en dos partes: fe y fD' La función fe define el estado siguiente de la uni-
dad de control,
fe: S x Iex STAT-+S
en tanto que la función f D define los valores de las variables del camino de datos
en el estado siguiente,
f D : S x V x ID -+ V
En otras palabras, para cada estado s, E S se calcula un nuevo valor para cada
variable V. E V del camino de datos mecliante la evaluación de una expresión
'j E Expr(\I). De esta forma, la funciónfD se representa mecliante un conjunto de
tunciones más simples, en el que cada función del conjunto define los valores de
las variables para cada estado Si
f D: = {fD' : V x ID -+ V :
{Vj = ej I"} E V, ej E Expr(V x ID)}}
En otras palabras, la función f D se descompone en un conjunto de funciones
lo" donde cadafD' asigna una expresión ek a cada variable del camino de datos V.
en el estado si" Por consiguiente, los nuevos valores para las variables del camin6
de datos se determinan evaluando las expresiones e ., para todoj tal que l5,j 5, q.
Análogamente, se puede descomponer la funciÓn de salida h : S x V x 1 -+ O
en dos funciones cliferentes, he y hD , donde he define las salidas de control exter-
336 Principios de diseño digital
°
nas e igual que en la definición de una FSM y ho define las salidas externas del
camino de datos. Por lo tanto,
he : S x Ie x STAT --+ 0e
ho:S XVx Io--+°o
°
Obsérvese nuevamente que las variables de e son variables booleanas y que
las variables de 00 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
primeras columnas definen respectivamente el estado presente, el estado siguien-
te, y las salidas de control externas, mientras que las siguientes dos columnas defi-
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't care conditions). 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 valores. 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 lenguaje de programació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 posible 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 utilizar
sentencias de asignación para los puertos de salida 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 el último valor asignado a lo
puertos de salida en cada estado, aunque no se especifique explícitamente en 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 el 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-
Diseño al nivel de transferencias entre registros 337
So So So SI SI O Z X X X X
SI S2 s, s, s, O Z lnpon X X X
s, s3 s3 s3 S3 O Z Dato O X X
s3 S4 S4 S4 S4 O Z Dato Cuenta } 1
X
S4 s, s, s, s, O Z Dato Cuenta] Dato AND Máscara Máscara
s, s6 s6 s6 s6 O Z Dalo Cuenta1 + Temp X Máscara
s6 S4 S7 S4 s7 O Z Cuental X Máscara
1 Cuental Dato Cuenta1 X X
So So So SI SI O Z
SI s, s, s, s, O Z Dato =lnport
s, s3 s3 s3 s3 O Z Cuental =O
S3 S4 S4 S4 S4 O Z Máscara = 1
S4 s, s, s, s, O Z Temp =Dato AND Máscara
s, s6 s6 s6 S6 O Z Cuenta] ::: Cuental +- Temp
S6 S4 S7 S4 S7 O Z Dato =Dato» 1
S7 So So So So 1 Cuental
So
[ Inicio = 0,
Inicio = 1,
So ]
SI [ Final =
Output =Z
°]
Dato ::: lnport
=°
sI S2
s, s3 Cuental
s3 S4 Máscara 1 =
S4 s, Tempo =Dato AND Máscara
s, s6 Cuenta1 = Cuental + Temp
[ Dato "'0, S4 ] Dato =Dato» 1
S6 Dato =O, S7
S7 So [ Final = 1 1
Output = Cuental
Caja de decisión
Asignación
Caja de condición condicional CuenlaJ = CuenlllJ + I
de variables
Final=O
o
BloqueASM
340 Principios de diseño digital
BIoqueASM
BIoqueASM S, ~
s, S3
Cuando se describe una FSMD mediante un diagrama ASM, hay que seguir
dos reglas:
1. El diagrama debe definir un único estado siguiente para cada estado pre-
sente y conjunto de condiciones.
2. Todo camino definido por la red de cajas de condición debe conducir a
otro estado.
En la Figura 8.4, se muestran dos ejemplos de diagramas ASM incorrectos
que violan las reglas anteriores. En concreto, el diagrama de la Figura 8.4(a) viola
la primera regla, puesto que cuando Cond2 es cierta, tanto s2 como s3 están espe-
cificados como estados siguientes. De igual manera, puede verse como el diagra-
ma de la Figura 8.4(b) viola la segunda regla ya que el camino definido cuando
Condl es cierta y Cond2 es falsa forma un bucle que no lleva a ningún estado.
FiMf = I
Output = Cuenta I
En el caso del contador de unos, realmente sólo necesitamos dos variables: Dato, que alma-
cena el dato entrante, y Cuental, que almacena el número de unos que se han contabiliza-
do en ese dato. Básicamente, el algoritmo analiza el valor del bit menos significativo del
dato, DatouB (LSB, Least Significant Bit), y se suma uno a Cuenta} cuando DatouB = 1.
En ese momento, Dato se desplaza una posición a la derecha y se repite la misma secuen-
*
cia mientras que Dato O. Como antes, el contador de unos 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 Cuental a través del puerto de salida Outport 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 mismo
contador de unos, modelado como una FSMD basada en estados (Moore) [Figura 8.6(a)] y
como una FSMD 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 nivel de transferencias entre registros 343
Cualquiera de estos diagramas ASM puede convertirse fácilmente en una tabla de esta-
do-acción que nos permita obtener las ecuaciones booleanas para la lógica de estado
siguiente y de salida de la unidad de control. En la Figura 8.7(a) y (b), se muestran las tablas
de estado-acción correspondientes a las versiones del contador de unos basadas en estados
y en entradas, respectivamente.
La implementación de este mismo contador de unos se da en la Figura 8.8. Obsérvese
que el camino de datos es igual para ambas versiones puesto que ambos contadores sólo
almacenan dos variables y realizan únicamente dos operaciones. Es decir, ambas versiones
desplazan el valor almacenado en Dato e incrementan el valor de la variable Cuental .
Final=J
Olltput :: Cuenta I
(a) Diagrama paca FSMD basada (b) Diagrama para FSMO basada
en estados (Moore) en entradas (Mealy)
FIGURA 8.6 Diagramas ASM para el contador de unos (diseño de propósito especffico).
Dados estos dos operadores, el camino de datos sólo necesita un registro de desplaza-
miento con carga paralela, que tome los datos desde el puerto lnport, y un contador ascen-
dente/descendente con carga paralela que se haga O al comienzo de la cuenta de unos e
incremente su contenido cuando Dato LSB sea igual a 1.
344 Principios de diseño digital
o O O [IniciO = O, so ] Final; O
So Inicio = 1, SI
O O 1 [ Dato; Inport ]
SI s, Cuental ; O
O O [DotoLSe ; 1, S3 ]
s, Dato LSe ; O, s.
O I I s3 Cuental ; Cuental + I
O O s.
[DatO,. O,
Doto; O,
:;]
s,
Doto; Dato» 1
O [ Final; 1 ]
s, So Output ; Cuental
(a) Tabla basada en estados
O O [ In~c~o = 0, So ] Final; O
So ImclO ; 1, sI
O [ Dato; Inport ]
sI s2 Cuenta} = O
O s,
[ Dato,. 0, S2 ] [ DotoLSe ; 1, Cuental ; Cuental + 1]
Dato; O, s3 Dato,. O Dato; Dato> > I
[Final; 1 ]
s3 So OutpuJ ; Cuenta I
(b) Tabla basada en entradas
Do=Qo( siguiente) = s,Inicio + S2Dato LSB+si Dato=O)= Q' 2Q' 1Q' o/llicio+Q 1Q' oDatoLSB+
Q2 Q'o!Dato=O)
Inicio ¡npon
- SI
& D2 Q2
1-
~k SRwPL
~
r So
~ t- Datoua •
~ /7
- '-li
~ DI Ql
-
"0" - D
E
Contador
ascendente/
~ ""i. descendente
~ Carga
~
lógica de atado siguiente
-Do Qo
lógico
desa/UIa
Haba/raeWn de ,alUIa
Camino
dedmos
J
~
Final Outpon
(a) Versión basada en estados
Inicio ["pon
L;::f").
-
~
SI
D I QI - l..r.- So
SRwPL
~-
DatoLSB
DatO'Ál
(}
8>l ~
Do Qo -
''0" - D
E
Contador
ascendente/
descendente
~- Carga
Lógica Camino
1
L9g~ca de estado fipienu de salida dedotw
Final Outpon
(b) Versión basada en entradas
mismo 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 variables (¡nerging o grou-
ping variables) y en la asignación de estos grupos a los registros o posiciones de
'memoria de forma que se minimice el número de componentes de almacena-
miento o alguna otra métrica asociada al diseño, como las prestaciones, la poten-
cia disipada, o la testeabilidad. Puesto que cada grupo de variables comparte un
registro o una posición de memoria, frecuentemente esta tarea recibe el nombre
de compartición de registros/memoria (registerlmemory sharing~
•
-,1 -.1
....- 1
Inicio C_ In, In,
Final Out
t t
(a) Diagrama de bloques
'2
X
X
X X X X
Y X
'3 X
'. X X
X
"
'. X
x
"
2 3 2
s;
abs
min
2
"= 2
1
max 1
» 2 2
1
+ 1
IÍImerode 2
opaaciooea
(b) Uso de operaciones
Ibl Ibl
(a) Cálculo del valor absoluto (b) Cálculo del valor absoluto
(versión 1) (versión 2)
a b a b a b
Control
minlmax
(e) Cálculo del mínimo (d) Cálculo del máximo (el Cálculo del máximo
o el mínimo
~w Coouolde
~~
desplazamiento
a» I a» 3Ja» 3
.til
a b
a b a b
,~~~
~O ~O T
a'" a·b u+bla-b
absl J O
abs2 J O
min J J O
max , J J J O J O
»3 J O
»1 I O
J J O
+ I J O
!
Ordenar las variables
según estado de escritura
y valor del tiempo de vida
.~
!
Asignar al registro todas
las variables no solapadas
empezando por la
cabecera de la lista
~
Eliminar de la lista las
variables asignadas
.~ . Lisla vacía'?
B. Ss Be Sr
a x
b X
t, X
t2 X
X X X X X
Y X
t. X X
t3 X
15 X
l. X
17 X
In, 111 2
I - -,¡ 11 I
I Selector I L Selector I I Selector I
l
1 R, I I R, I I R, I
I 1 1 1
1
I
lal 11
1
Ibl 1 1
1 1
mú, 1 L max
I 1 1
l 1 +
I
11 - 11
1
»[ 11
I
» 3 1
LJ L- ---.l I I L-
I~
I
Output
(e) Esquema del camino de datos
-T
I I I
T -,
Inicio In , In,
COIIIroI
Final Out
t t
(a) Diagrama de bloques
miendo un coste constante para todas las entradas de un selector. En el caso del
camino de datos de la SRA mostrada en la Figura 8.14(c), el número de entradas
a los selectores es 10.
Par~ desarrollar un algoritmo que minimice el número de registros junto con
el costo de conectividad, se da prioridad a la combinación de ciertas variables. La
mayor prioridad corresponde a dos variables que se utilicen como operandos a la
izquierda o a la derecha del mismo tipo de operador y a las variables cuyo valor
es generado por el mismo tipo de operador, debido a que la agrupación de tales
variables puede suponer el ahorro de una entrada a un selector. Este concepto se
muestra en la Figura 8.15(a) para el caso de dos sumas (x = a + b e y = e + d)
realizadas 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 selectores. Por ejemplo, si se asigna cada variable a un registro distin-
to, se obtendría el diseño de la Figura 8.15(b), que necesita 10 entradas a selecto-
res. Sin embargo, si se agrupan las variables a y e, b y d, y x e y, y se asigna cada
par al mismo registro, se reduce en tres el número de entradas a selectores, como
muestra la Figura 8.15(c).
Selector Selector
I x-a+b
y=c+d
(a) Diagrama ASM parcial (h) Camino de datos sin registros (e) Camino de datos con registros
compartidos compartidos
En general, dadas n variables utilizadas como fuente o destino del mismo ope-
rador o unidad funcional, hay un ahorro potencial de n-l entradas a selectores si
esas n variables comparten 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 compatibilidad de variables. Este grafo de
compatibilidad (co/'[lpaJibility graph) está constituido por nodos y arcos tales que
cada nodo representa una variable 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 discontinua) entre dos nodos indica variables
con tiempos 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 ahorrarse. El
peso de prioridad tiene la forma sld, donde s es igual al número de unidades fun-
cionales que utilizan ambos nodos como operandos a la derecha o a la izquierda,
y d es 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
conectados por arcos de prioridad con el peso mayor y crea un supemodo 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 supe1l1odo, 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 grafo de
compatibilidad
Actualizar el grafo de
compatibilidad
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-izquierdo. En primer lugar, necesitamos crear
Diseño al nivel de transferencias entre registros 359
0) " ,..,
y
,
~
G 111'
"
(a) Grafo de compatibilidad inicial (b) Grafo de compatibilidad después de agrupar 13, t$ Y '6
o o o
(e) Grafo de compatibilidad después de agrupar 1]> x Y'7 (d) Grafo de compatibilidad después de agrupar '2 e y
~,
bras, agrupamos las variables 13, 15, Y 16 con una posible disminución de dos entra-
das a selectores, y creando con ello el supemodo [t3' t5' 16l que muestra la Figura
8.17(b). A continuación, se selecciona el nodo con el máximo número de arcos de
prioridad, concretamente el.x; y lo agrupamos con 17 y luego con I I como indica la
Figura 8.17(c). Obsérvese que al agrupar x, 17, y I I se han eliminado dos arcos
prioritarios del grafo de compatibilidad, entre y y 17 Y entre 12 y x. Ahora se puede
agrupar 12 y luego y con el supernodo [13, 15,16], como muestra la Figura 8.l7(d).
Finalmente, podemos asignar aleatoriamente la variable a al supernodo [11' x, 17 l
y b al supemodo [t2' y, 13, 15, 16l para reducir más el número de registros necesa-
rios, de forma que el supemodo [a, 11' x, t71 pueda asignarse a! registro Rl' el
[b, 12, y, 13,15, 16l al registro Rz, y el [14l al registro R3'
Para comparar el costo de conectividad de las soluciones generadas por los
algoritmos de lado-izquierdo y de partición de grafos, utilizamos las mismas ocho
unidades funcionales que se usan en la Figura 8.14(c), donde se ha diseñado el
camino de datos con la asignación de registros generada por el algoritmo de lado-
izquierdo. A partir del camino de datos mostrado en la Figura 8.18, construido con
la asignación de registros obtenida mediante el a!goritmo 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 podría haber sido mayor si se hubiesen utilizado unidades
multifuncionales para el diseño 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 operaciones en unidades
multifuncionales para conseguir una mayor minimización del costo de los recursos
del camino de datos y de las conexiones, ta! y como se discute en la Sección 8.6.
R ¡ = [a, t i' x, '7]
R:¡ '" [b, 12, y, ' 3' 15, lJ
RJ = [t4]
(a) A signación de registros
I ,..----, I 111
Selector I Selector I
I R, I I R, I I R, I
I I I I I
I
I
101 II
I
Ibl I
I I
I minllmax ll
I I I
+
I I
II - 11
I
» 1 II
I
»3 I
LJ L LJ I I I
~-
y = c- d
(a) Diagrama ASM parcial (b) Camino de dalos sin registros (e) Camino de datos con registros
compartidos compartidos
En este ejemplo hemos asumido 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.19(a). Si implementarnos el diagrama ASM utilizando
unidades unifuncionales, 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 misma funcionalidad mediante un sumador/restador y dos
selectores, como muestra la Figura 8.19(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 funcionales podría ser ventajoso. De esta forma sería cuestión
de desarrollar un algoritmo que combinase operadores en unidades funcionales de
forma que el costo total de todas las unidades multifuncionales y los selectores
necesarios sea mínimo. Para ello podemos utilizar 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 camino de datos para la SRA dado en el
diagrama ASM de la Figura 8.9. Para este ejemplo suponemos que están disponi-
362 Principios de diseño digital
1-
Bit de
signo o 1 Valor Absoluto Bit de sign I Sumador f-J O O Suma
1 O Mfnimo O 1 Mínimo
1 1 Máximo ~f'>-I ~lecl~r I 1 O Resta
1 1 Máximo
" I I
Selector
01
l
(a) Unidad para calcular el mínimo, (b) Unidad para calcular la suma, la resta,
el máximo y el valor absoluto el mínimo, y el máximo
, b
~ t-
, b
11. 0PBW:IClN I ~ ~
c; ~ Bil de signo Sumador
1 O Suma 001 Suma
Bit de signo
Sumador
O 1 Valor Absoluto l I O,
Selector
I 1 OO Valor Absoluto
I 1Selector
I o 11 1 Resta r- 1 O1 Resta
01 1 1O Mínimo
1
(e) Unidad para calcular la suma,
la resta, y el valor absoluto "
r> I
Selector
l
111 Máximo
(d) Unidad para calcular la suma, la resta,
el núnimo, el máximo y el valor absoluto
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 compatibilidad 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áximo número
de apariciones de cualquier tipo de operador en alguno de los estados. Para indi-
car la compatibilidad de los distintos operadores, es preciso conectar los nodos del
grafo mediante arcos prioritarios o arcos de incompatibilidad. Como era de espe-
rar, un arco de incompatibilidad indica que los operadores que conecta no pueden
agruparse bajo ninguna circunstancia puesto que se usan concurrentemente en el
mismo estado. Por contra, los arcos prioritarios indican preferencias para estable-
cer agrupaciones, debido a las similitudes de los operadores en cuanto a su cons-
trucción o por la sustancial reducción en el costo de conexiones del camino de
Diseño al nivel de transferencias entre registros 363
0--0
lal 1 1
Ibl J 1
8---·-----8 mín
máx
+
J
1
J
J
1
o o·
(a) Grafo de compatibilidad, (b) Tabla de costo
[Ial/mín] 1 1 2
[lbVmáx/+/-] 1 2
~".tm~
8-- -----8
[Ial/mín/+] 1 2
[lbVrnáx/-] I 2
11
I
I
Selector
R,
I
1
1Sele<;tor I
1 R, 1
n
1 R, 1
1
I I
Selector I
I 1
1 »1 11
I
»3 1
I~7 I [abslm(n]
I I (abslmáv'+ /-] I I L
'"'1
(a) Esquema del camino de datos para la asignación de unidades
de la figura 8.2 1(c)
11
I Selector
1
I
R, J
I Selector I
L
I
R, 1
IL R, 1
-
I I Selector
I 1»
1
1 11
I
»3 1
I~7 ;I [abs/mfn/+] I I [abslmáv'-J I I L
(b) Esquema del camino de datos para la asignación de unidades
de la figura 8.21(e)
I I I
Inicio ln l In,
C""""I
Fi,w{ Out
t t
(a) Diagrama de bloques
s, t
I x=a +b
t
Si
~ Selector .
t ciu
(a) Diagrama ASM parcial (b) Diseño sin unidades agrupadas (e) Diseño con unidades agrupadas
88
FIGURA 8.24 Partición del grafo asociado al camino de datos para la SRA con R, = [a, t,. x, t,l,
R2 = lb, t2 , y, 1" t5 , tsl, Y R3 = [tJ.
el caso del algoritmo para la SRA, por ejemplo, podríamos agrupar los operado-
res + y - en un único supernodo y después redibujar 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 fuentes comunes (dos) y destinos comunes (uno). La nueva disposición del
grafo de compatibilidad se muestra en la Figura 8.24(c). Finalmente, 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.
I J I
Inicio In, In,
Control
Final Ou'
t t
(a) Diagrama de bloques
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 utilizando tres registros y cuatro uni-
dades funcionales. La asignación final de variables y operadores a registros y uni-
dades funcionales se da en la Figura 8.25(a), y el esquema del camino de datos se
muestra en la Figura 8.25(b). Obsé[Link] este diseño del camino de datos sólo
necesita siete entradas a selectores, en comparación con las nueve entradas a
selectores necesarias en las soluciones de diseño previas, que no tenían en cuenta
las prioridades de agrupación.
I I I •
~ ~
(a) Diagrama de bloques
AV, = [lbVminl+/-]
AV2 = (IaVmax]
SH, = [» 1]
Sil, = [»3)
I Selector I Seleclor I
I --¡
1 R, 1 1 R, 1 1 R, 1
I 1
1
I I
Selector I
I I
1 »1 11 »3 1
I
I~7 I [abslmdx] I [abslmtnl+/-] I I L
(b) Esquema del camino de datos
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
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.2p 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-
daos 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 misma fuente o destino, indicando, por ejemplo, que las conexiones A, C, D, y
H se originan todas en el mismo registro Rp y que las conexiones B, F, YG se ori-
ginan todas en el registro R 2 . 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 AUí).
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
l., 1.,
M N
l Selector I I Selector I
I I rI
I R, I I R, I I R, I
I
I
I
JI E
FI GI HI
A 81 e Selector I I »1 II »3 I
I~7
1I
[abs/máx]
I
[abs/m(n/+/-]
I
IK L
1 J
Ollt
(a) Camino de datos para la SRA
A X
B X X
e X X x
D x x
E x
F x x x x
G x
H x
1 x x x
J x x x x
K x
(e) Grafo de compatibilidad para (d) Grafo de compatibilidad para
L x los buses de entrada los buses de salida
M x
N X
(b) Tabla de uso de conexiones
In , In,
I
I R, J I R, I I R, I
Bus, ~ ~
Bus, I I
I [abslmdx] I I [Link]/+/-]
I
~
»3
Bus] = [A , C. D , E, H]
Bus 2= [B . F. GI Bus, ~ 7 '7
B",,= [/. K. MI '7 B.. ~7
Bus4= [l. L. N]
(e) Asignación de buses (O Organización del camino de datos según su estructura de buses
estados indica el flanco de subida de la señal de reloj que carga los datos en los
registros. Un triángulo blanco apuntando a la línea divisoria significa que se va a
cargar un nuevo dato en el registro correspondiente en ese flanco de subida del
reloj . También se ha dibujado un triángulo negro desde la línea divisoria para
indicar el estado en el que se usará el dato.
I R, I
I RJ I I R, I
Bus 1 .g
Bus, I I 'i7
I [ab'¡nuírJ I I [abs/mfn/+I-)
I
I »3 I I » 1 I
Bus) 'i '7 ~ '7 ~
7 Bu~.4 ~ '7 ~
Out
(d) Esquema del camino de datos
los registros RI y R3 en un único banco de regi stros 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
Control
Final Out
A partir de este esquema también puede verse que agrupando los registros R I
Y R3 , ha sido posible reducir el número de adaptadores de bus en el camino de
376 Principios de diseño digital
reloj para este camino de datos encadenado no será 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 original, podemos concluir que este camino de
datos modificado puede realizar 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(b). Obsérvese que para almacenar concurrentemente los tres
nuevos valores de las variables x, t3, y t4 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 registro ~ .
•
Inicio'" I
o
R 1-[a, tl , x, 'JI
Rz'" [b. ''l' J. ' )' t y /61
RJ',,(tJ
(e) Asignaci6n de registros
In,
I
I R, I I R, I I R, l
...
B.. -&
I
-&
I (abslmáx) I I [abslm(n/+I-J I
~~ [2>:!J
...,
.... '; Ú
Om
(a) Diagrama ASM (b) Esquema del camino de datos
Además del encadenamiento, que permite utilizar unidades más rápidas, algu-
nas veces puede que se desee utilizar unidades más lentas pero más baratas, que
precisan más de un ciclo de reloj para generar sus resultados. Esta técnica se llama
multicicIo r,nulticycling), y las unidades más lentas utilizadas, unidades multici-
cIo. Por razones obvias estas unidades sólo pueden utilizarse en los caminos no
críticos del diagrama ASM. Por ejemplo, en el diagrama ASM de la Figura
8.28(a), a la variable t4 se le asigna el nuevo valor (min(t l ,t2))»] en el estado s2'
pero este nuevo valor no se utiliza hasta el estado S4 ' En este caso, entonces, po-
drfamos utilizar una unidad que necesitase dos ciclos de reloj para calcular el
378 Principios de diseño digital
I
I " I I " I I " I
Buo ~ ~
B." '\7 I I '\7
~
I labs/nuU] I I [abs/+/-l
I
B"'l
Buo.
~ Pr,'\7
;,
» 1
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.
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 fmal en la segunda etapa de la unidad segmentada, mientras
que la primera etapa está generando resultados parciales para el siguiente conjun-
to de operandos, y así sucesivamente para cada conjunto de operandos.
a b
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 cal-
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.31.
Obsérvese que este camino de datos precisa 9 estados, ó 9 ciclos de reloj, para cal-
cular la aproximación de la raíz cuadrada. Por otro lado, podríamos rediseñar el
camino de datos de la Figura 8.31(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 datos 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 registro 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
colunma 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 a y b de los puertos
de entrada y los almacena en los registros R¡ y R¿. A continuación, en el estado
s I' se lee el valor de la variable adel registro R¡ y se calcula parcialmente el valor
absoluto de a . Este resultado parcial se almacena a continuación en los biestables
que hay entre las dos etapas de la AU segmentada. Después, en el estado S2' el
Diseño al nivel de transferencias entre registros 381
camino de datos termina el cálculo de lal y asigna su valor a la variable 1i' que
está·almacenada en el registro R¡. Al mismo tiempo, en el estado S2 el camino de
datos también comienza el cálculo de Ibl, almacenando el resultado parcial de este
cálculo en los biestables de la unidad segmentada. Así, en el estado S2 las dos eta-
pas de la AV segmentada están activas, aunque procesando operandos diferentes.
En el estado s3 el camino de datos termina de calcular Ibl y asigna el resultado a
la variable t2 almacenada en el registro ~. Obsérvese que en este momento el
camino de datos todavía no puede iniciar la siguiente operación puesto que nece-
sita el valor de 12, que todavía no se ha cargado en el registro ~. Por tanto, en S3
no se inicia ninguna operación. De forma similar, el camino de datos empieza la
ejecución de las operaciones de máximo, mínimo, y resta en los estados S4' ss' y
s 6' y completa estas operaciones, junto con los desplazamientos, en los estados ss'
s6' y sT La suma no puede iniciarse hasta el estado s8 porque debe esperar a que
el valor asignado a ts esté disponible. Igualmente, el cálculo del máximo comien-
za en el estado s 10 pero no termina hasta el estado s 11. Por último, el camino de
datos utiliza el estado s 12 para proporcionar el resultado.
Inicio:: I
s,
~ - Ibl
s,
x =máx(t.,12 )
13 =máx(1,"2»>3
S, '''
I
I
" I I .,I I I
I
" I
Bu ~ ~
o.., 'V 1
\ AU
I
C>![]
7
B..,
.....
~ 7 7 T
(a) Diagrama ASM 0"'
(b) Esquema del camino de datos
FIGURA 8.31 Camino de datos para la SRA con una única unidad aritmética (AU).
382 Principios de diseño digital
I I
I R, I I R, I I R) I
Bus, ~ .&
Bus, ~7 I ~ 7
v
\ I AU de 2 etlIp8S
I »3 I I »1 I
, '7 ,7 .¿¡.
7
Bus)
Bus, , '7 '7
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 divide el dia-
grama ASM en una serie de partes del mismo tamaño y luego se utilizan estados
distintos del camino 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 utilizado por la
siguiente etapa.
...
In,
I I
I R, I I R, I
Bus .tl
Bus, '\7 1
I
AU ,
x= mtfx(t¡,t2J Bus)
C>;D, 7' 7 ,.
, ,7 S Bus,
t 3:=.máx(tl't2J»3
,7
s,
I R, I I R, I I R, I
-& Bus~ ¿
'7 I Bus6
",. AU 2
I
& Bus.,
Out
(a) Diagrama ASM (b) Camino de datos segmentados
Leer RI a ti ti
LeerR, b t, t,
Etapa l deAU lal Ibl mín máx ETAPA l
Unidades de
desplazamiento »1 »3
Escribir en RI a ti
Escribir en R2 b t,
Leer R, t, t, t. t7
Leer R4 x x
Leer R,
Etapa 2 deAU -
'+4 máx ETAPA 2
Escribir en R, t, t, t. t7
Escribir en R4 x
Escribir en R, t.
par n
(d) Diagrama de tiempos
l' "'"
SO ... •
..
.... "-""'e Sr , ~..... ~ lIwr- ttrt "-
Leer RI a t, t,
Leer R, b t, t,
Etapa 1 de AU, lal Ibl mín m1ÍX
Etapa 2 de AU, lal Ibl m(n máx
Unidades de
desplazamiento » 1 » 3
Escribir en R, a ti
Escribir en R, b t,
Leer R3 t3 t, t. t7
Leer R_ x x
Leer R, t_
Etapa 1 deAU - + máx
Etapa 2 deAU - + m1ÍX
Escribir en R3 t3 t, t. t7 t3
Escribir en R_ x x
Escribir en Rs t_ t_
Out t7
FIGURA 8.34 Diagrama de tiempos para el camino de datos segmentado con un idades fun-
cionales segmentadas.
386 Principios de diseño digital
forma original tiene tres estados. En el primer estado, sI' se comprueba si a > b,
Y se pasa a s3 si la desigualdad es cierta o a S2 si no 10 es. En el estado S2 se reali-
za la asignación x = e * d, Y en el estado S3 la asignación y = x - 1. En este dia-
grama ASM no se asume la posibilidad de una implementación segmentada.
Entradas de control Entradas del camino de datos
Señales
de control
Lógica
de estado Registro Lógica
. . de estado de salida
1!'~~"~·'~"~""~~~~~~~~~~ll~SC~ñ:a:l~~.:L:-~~:1--~~---'r---~------
r~ de estado
Unidad de control Camino de datos
Salidas de control Salidas del camino de datos
Señales
de control
....'"
",,_ Registro
deesUldo
siguiente
SeñaJes
de estado
l a) Diagrama ASM (b) Diagrama ASM para (e) Diagrama ASM para (d) Diagrama ASM para
la unidad de control la unidad de control la unidad de control
segmentada con registro segmentada con registro y camino de datos
deeslado de estado y control segmentados
. t. = lal
' 2 = Ibl
:c=mdx(t ."2)
y =m(n(t¡.t2)
'3=x»3
'4=Y» I
t~ =x - ')
'6='4 + '5
'1=máx(tó>xJ
Final=l
Out=t7
a b a b
Out Out
ser asignadas en el futuro . Hay otras medidas de prioridad además de éstas, pero
ninguna de ellas resulta adecuada en todos los casos. En teoría, podríamos utili-
zar cualquier número de métricas de p~n cualquier orden.
Planificación ASAP
Planificación ALAP
•
Detennmar
movilidades
que utiliza una lista de as operaciones que están disponibles para ser asignadas
(lista de preparadas). En te algoritmo, las operaciones con la lista de preparadas
se ordenan según sus movilidades, 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 lista se realizan los siguientes
pasos en cada estado: se asignan, una a una, las operaciones con prioridades más
altas de la lista de preparadas a las unidades funcionales disponibles, después se
borran de la lista todas las operaciones 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 disponibles para su planificación. Este algoritmo de
planificación de lista se resume en la Figura 8.39.
El algoritmo de planificación de lista actuando sobre el grafo de flujo de datos
de la caja de asignación de la Figura 8.37(b) asume que se dispone de una única
unidad aritmética, que puede calcular el valor absoluto, el mínimo, el máximo, la
suma, y la resta, y de dos unidades de desplazamiento más. En primer lugar, gene-
ramos las planificaciones ASAP y ALAP, 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 movilidades para las operaciones de dicha lista.
En nuestro caso, sólo las operaciones lal y Ibl están disponibles en el primer esta-
do. Puesto que estas operaciones tienen la misma movilidad [M(lal}=M(lbl}=O],
se ordenan aleatoriamente y se asigna lal en primer lugar. Puesto que la asignación
de Id no libera nuevas operaciones para la planificación no se cambia la lista de
preparadas en este momento. Por tanto, hay que asignar Ibl al estado s2' lo que per-
mite añadir los operadores max y min a la lista. Puesto que el operador max está
en el camino crítico, tienen una movilidad M(max}=O, que le da una prioridad
mayor con respecto al operador min, que tiene una movilidad M(min}=l. Así, se
planificaría max en el estado s3' que nos permite añadir »3 a la lista de opera-
ciones preparadas. Puesto que su movilidad es M(»3}=O, este operador debe
situarse al comienzo de la lista. En este momento hay una AU y dos desplazado-
res disponibles, por lo que se pueden planificar las dos operaciones, (»3) y min,
en el estado S4 . Después actualizamos la lista de preparadas añadiendo - y »1,
ya que ambos pueden planificarse en el estado s5" En este momento se puede asig-
nar + al estado s6 y max al estado S7' y finalmente, proporcionar el resultado en el
estado S8. La planificación RC final se muestra en la Figura 8.40(d).
Como se ha visto, el objetivo 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 disponibles que unidades
funcionales debemos utilizar una medida de prioridad, tal como la movilidad o la
urgencia. En nuestro ejemplo se ha obtenido una planificación que requiere un
estado más que las planificaciones ASAP y ALAP pero con un coste menor ya
que se utiliza sólo [Link] y dos desplazadores, mientras que las planificaciones
ALAP y ASAP precisan dos AU y dos desplazadores.
Diseño al nivel de transferencias entre registros 395
" @ ® .,
9_ ~
" ®E
" ee o - 1.. __
'. e e,
o •
" o
- .Q -
8,
" 0o
" e o
0" Out
©
'.
0"
(al ASAP (bl ALAP (e) Lisia de preparadas (d) Planificación Re
con movilidades
Planificación ASAP
Definir rangos
de movilidades
Crear grafos
de distribución
de posibilidades
sí
Asignar la operación
con ganancia máxima
Asignar la operación
con perdida m1nima
'J
'1
Out
(a)ASAP (b) ALAP (e) Planificación TC
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 mm: 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 Sy En
este momento se tiene la opción de asignar mm: o min al estado s3. Sin embargo,
como puede verse, la asignación de mm: hace disminuir la suma de probabilidades
del estado s2 a 1.33, mientras que la de min haría decrecer la suma de probabilidades
a 1.5. Por ello, se asigna mm: al estado s3 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 mm: como 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 distribución que muestra la Figura 8.43(c) .
... ;
~,~ ·1 I
....
" ,!!!.' -
·..JIII . . -~ ,--
-- ..
lE. 1m
III\IE
~
I
lE
.,. . . .0_.
lIIMIfli
1&
SlMIl
S\IOO lIiIIIlIIIIIIO ~. I
s,
S2
~-t>
1,0
1,83
s,
s2
JJ
' 1'
1,0
1,33
~
1; ~
s, .~
E
,83 ,83 s, máx E ." 1,33 ,33
'"A
_A
s. ,83 A
A
,83 s4 ,33 } »31 1,33
I
S7
i ,5 S7 máx 1,0
(a) Grafo de distribución de probabi lidades inicial (h) Grafo de distribución de probabilidades después de
planificar max. + y -
l · mm
s,
s2
lIIMIfli
mérAI
141
,·,1,·1
SlMIE
IIIJI/,'WIB
S\IOO
1,0
1,0
lIIMIfli
Il:
lIBIIlIiBRl
-
SlMIl:
tsWIlI
s,
S2
lIIMIfli
mérAI lUIiIIIIB
~
lal
Ibl
- -
SlMIE
1,0
1,0
lIIMIfli
11
lEMIJBIlI
SlMIl
s6 + 1,0 s6 + 1,0
FIGURA 8.43 Grafo de distribución de probabilidades antes, durante, y después de la planifICació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 AU 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 AU 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
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 [Link] relativas a prestaciones.
8.16. PROBLEMAS
8.1. (Modelo FSMD) Determine el ciclo cuando Dato 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:
(a) Un FSMD basado en estados. 8.3. (Descripción FSMD) Obtenga (a) el
(b) Un FSMD basado en entradas. diagrama ASM y (b) la Tabla de esta-
Pista: 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) Obtenga una des-
camino de la Figura 8.2 con mayor cripción con un diagrama ASM para
retardo. Normalmente se denomina un contador de decenas que tiene tres
camino crítico. salidas que indican si la cuenta es
8.2. (Descripción FSMD) Reescriba la menor que cinco (LS), igual a cinco
descripción del contador de unos de la (ES), o mayor que cinco (G5).
Figura 8.1 sin utilizar las variables 8.5. (Diagramas ASM) Obtenga un dia-
Máscara y Temp. Utilice el bit menos grama .ASM para un contador que
significativo de Dato para incremen- contará en módulo 4 si la señal rango
tar CuentaI. La implementación debe es igual a O y en módulo 7 si es igual
utilizar el camino de datos de la
al.
Figura 7.25.
Pista: El bit menos significativo está 8.6. (Diagramas ASM) Determine un dia-
disponible en el bus de resultado grama ASM (a) basado en estados y
Diseño "",;];¡¡vel de transferencias entre registros 401
El diseño
del procesador
•
Puertas lÓ~iC':;
3
Álgebra booleana
.!
I
Máquina de
6
estados finitos ~
Técnicas de
diseño lógico
4 .
4-
Técnicas de
6
, ,
diseño digital
Sistema binario 2
I
y representación
de datos
t
5 ./
r,
I I
. ,?iseño ~~n~re
Máquinas de · 8
estados finitos
generalizadas registros
r,
e del
406 Principios de diseño digital
1 1 Bus
¡ 1 1
Memoria Dispositivo Dispositivo
principal de PlS de E/S
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
mejorar las prestaciones 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 direcciones 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 calcu]ar e = (a + b) * (a - b) con la siguiente secuencia de ins-
trucciones de dos direcciones:
1. Load Rl ,A (RF[l] Mem[AJ)
f--
2. LoadR2, B (RF[2] M em[BJ)
f--
3. Load R3, RI (RF[3] f-- RF[lJ)
4. AddRI, R2 (RF[ I]f-- RF[I] + RF[2J)
S. SubR3, R2 (RF[3] f-- RF[3] - RF[2J)
6. Mili Rl , R3 (RF[I] f-- RF[IJ) * RF[3J)
7. Store e, RI (Mem[C] f-- RF[lJ)
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 a 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 - by.
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, necesitando 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 volver a almacenarlos en la
memoria. De hecho, la mayoría de los procesadores actualmente en el mercado
utilizan 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 = (a + b) * (a - b) con sólo seis instrucciones, como en el
siguiente programa:
412 Principios de diseño digital
tia, y que el acceso al banco de registros es mucho más rápido, como se discutió
en el párrafo anterior.
I Opertmdo
L
Memoria
RF
+ Operando Lo Operanl!o
Memo ria
L..0-- Operando
(f) Indexado
M emoria
Indice
+)+---'----- Operando Memoria
Operando
procesador sean más cortos, pero esto también hace que la implementación del
procesador sea más compleja, corno se verá en el resto del capítulo.
!
Buscar
instrucción
~
Calcular
dirección efectiva
+
Buscar
operandos
¡
Ejecutar
operación
¡
Almacenar
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
ciclo 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
instrucciones, especificando las operaciones que realiza cada instrucción. Corno
se indica en la Figura 9.4, el diseño del repertorio de instrucciones 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, Instruction Set), que indica de manera precisa todas las
operaciones que se realizan 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,
donde se ejecutan todas las instruciones. Sin embargo, puesto que el diseño del
camino de datos depende del repertorio de instrucciones, y el diseñ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ácilmente 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 será
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 entero, o alguno de sus pasos, varias veces.
Obtener
el diagrama ASM
Diseñar la unidad
de control
no
sr
Un procesador de 16 bits puede acceder a 64K de memoria con una palabra de datos. Para
reducir el número de accesos a memoria durante la búsqueda de instrucciones, se limita el
tamaño de una instrucción a dos palabras de memoria como mucho, lo que significa que
sólo podremos utilizar instrucciones de una dirección para acceder a memoria. Por tanto,
cada instrucción consta de una o dos palabras de 16 bits; la segunda palabra, en caso de que
se utilice, sería una dirección de memoria, mientras que las primera palabra especificaría el
tipo de instrucción, el código de operación, y las direcciones dentro del banco de registros.
Para acomodar tres direcciones del banco de registros, hay que dividir la instrucción de 16
bits en cinco campos: el campo de TIpo (2 bits), el campo Op (5 bits), y tres direcciones del
banco de registros identificadas con Dest (3 bits), SrcJ (3 bits), y Src2 (3 bits) (Src de
"Source", Fuente en inglés).
En la Figura 9.5 se muestran algunos ejemplos de instrucciones del repertorio obteni-
do a partir de estas premisas. Este repertorio incluye cuatro tipos de instrucciones dife-
rentes: instrucciones con registros, de memoria, de control, y misceláneas. El tipo de ins-
trucciones con registro, que se muestra en la figura 9.5(a), incluye instrucciones de una
palabra que realizan la operación aritmética, lógica, o de desplazamiento indicada en el
codop, con dos operandos almacenados en los registros indicados en los campos SrcJ y
420 Principios de diseño digital
15 14 13 12 11 10 9 8 7 6 5 4 3 2 O
(a) Instrucciones con registros: TIpo Op Des! Srcl Src2
aritméticas, Denominación Acción
lógicas,
Op Des" Srcl, Src2 RF(Dest) +- RF(Srcl) Op RF(Src2)
de transferencia,
y de desplazamiento
15 14 13 12 11 10 9 8 7 6 5 4 3 2 O
(b) Instrucciones con memoria: TIpo Op Dest Src l Src2
load (cargar) Direcci6n
y store (almacenar)
Denominación Acción
Linm Dest RF{Dest] ~ Di~cción
L dir Des' RF{Dest] f-Mem[Dirección]
L rel Dest, Src2 RF[Dest] +- Mem{RF[Src2] + Direcci6n]
L in Des' RF{Desl} +- Mem{Mem{DirecciónJ]
S dir Srcl Mem{DirecciónJ f-RF[Src l}
S reJ Src l , Src2 Mem[RF[Srcl] + DirecciónJ +- RF[Srcl]
S in Src J Mem(Mem{DirecciónJJ f- RF[SrclJ
15 14 l3 12 11 10 9 8 7 6 5 4 3 2 O
(e) Instrucciones de control: Tipo Op Dest Srcl Src2
jump (sallar), Dirección
branch (salto condicional),
call (llamada a subrutina) Denominación Acción
y retum (retomo de subrutina) lump Dirección PC f- Dirección
Brel Dirección pe
[ PC
f- PC + I s; Statusfrel] = o J
f- D;rección s; Status[rel} = I
15 14 13 12 11 10 9 8 7 6 5 4 3 2 O
(d) Instrucciones misceláneas: TIpo Op Dest Srcl Src2
no-op, Dirección
clear,
status, Denominación Acción
set. No-op No hacer nada
y resel Clear Dest RF[Dest] f- O >
Lstat Src 1, Src2 Status f- R[Src l] = RF[Src2]
Sstat Dest Status[Dest] f- 1 <
."
Rstat Dest Status[Dest} f- O
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
•
IR f- Mem{PCJ
PCt-PC+ 1
Instrucciones
miscelánea
Á3 2
nI
nstrucciones de ramificación
I O
Instrucciones con registros
I
Instrucciones
oo"m:1~ Modo
I RF(Dest) t- RF{Src l } O" R{Src2}
I
3 2 1 O
l I
Inmediato
~~~
Directo
1 (cargar)
Load
~~~
RF[Destl t- Mem(PC¡
PCt- PC +! 1-
11 (cargar)
Load EA t- M em[ PC)
RF{Destl t- Mem{EA]
PCt-PC+l
Relativo Slore
/~
(almacenar) EA +- Mem( PC}
Mem{EAI t- RF{Src l j
PC+-PC+ 1
I Load
(cargar) EA +- Mem[PCI + RFISrc2]
- RFIDeslJ t- Mem/EAI
PC+-PC+I
Slore
Load
(cargar) EA +- MemfMem[PCJ I
RFfDestl +- Mem{EAl
PC +- PC+\
Slote
(almacenar) EA +-Mem[Mem(PCJ]
Mem{[Link] +- RF{Src IJ
PC+- PC+ I
~
IR ~ MtnrI PCI
I pc+- pc + [
I
Instrucciones miscelánea
A 3 2
11
I
1
o Instrucciones con registros
Instrucciones con mell10ria
Instrucciones de ramificad6n
6 4 3 2 1O A 3 2 [ O
1
Jump (saIIO) 1
I
I
No almacenar
1
I I pe +- Mem{PCj
~
A~ (~"O"''''';dO''')
1 RFf lnsrJ +- O
1 UlIUS
1 1 1 O
L-- pe +- MenrfSre l 1
RFfSrc l J +- RFfSrc l} - I
SOLUCIÓN
Durante el diseño del repertorio de instrucciones, asumimos la existencia de una memoria
de 64K, Mem, un banco de registros con 8 registros, RF, y los registros de uso específico
pe, IR, y Status. Si nuestro único objetivo fuera obtener un procesador de costo reducido,
no deberíamos añadir ningún componente adicional a este conjunto 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 (AR, Address Register) y un
&
registro de datos (DR, Data Register) , 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 dirección efec-
tiva en un ciclo 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 alma-
cenamiento (store) se puede cargar, en un sólo ciclo de reloj, la dirección efectiva en AR y
el dato correspondiente en DR, y después almacenar el dato en memoria en el siguiente
ciclo de reloj . Así, al añadir estos dos registros, se puede reducir el período de reloj nece-
sario y se mejoran las prestaciones del procesador.
Unidad
de control
D
StalUS
G
11 AR DR
1I
! Bus
Dispositivos
M'm
de E/S
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 fmal
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 mismo, 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
de instrucciones en un diagrama ASM es relativamente directo.
Para terminar, a partir del diagrama ASM se puede ver que el procesador necesita entre
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ácilmente el camino de datos y la unidad de control a partir
de este diagrama ASM.
+
IR +- Mem{PCJ I
I PC+-PC+l
Instrucciones miscel!inea
I n~trucciones de ramificación
A 3 2
I
1 o
Instrucciones con re ¡SIroS
1
Instrucciones con memoria l
I RF{Des/} E- RFISrclJOp RF{Src2/
~~
l
Inmediato
/us~
~
Directo RF/DesrJ +- Menr{PC]
...
/us~
PC+-PC+I
/us~
PC+-PC+1
store (almacenar) I )I
Load (earlzar)
~
(cargar)
t- MenrfPC¡
RF{Desf]
PC+-PC+ I
AR +- RF[Deslj + RFfSrc2J
MemfAR} +- DR
r
~ AR +- Mem[PCj
PC +- PC+ 1 I
Store
RF(Dest} t- Mem{ARJ
-
DR +- RF[Srcl)
y AR +- Mem{PC}
PC4-PC+ I I Mem/ARJ 4- DR
DR 4-RF/Src l /
I AR ~ Mem{ARJ I
1 Mem/ARJ 4- DR ~
Leyenda:
~ IR . RegistrO de instrucción
I I
IR t- M~mIPCJ RF .. Banco de registros
PCt-PC.l PC .. Conwlor de programa
AR .. Registro de dirección
6
DR .. Registro de datos
Status:. Registro de estado (de la ALSU)
A 432 I O A 3 2 1 O
I
[Link] I
I NoalmtJunar ,I B~h l PCt-Mem{PC¡
f---
I
I
RFI [kst J+-O ,I ft"~
: SUlflUf:-RF(Srrl} - RFISrc2} ~ l J PC+-PC+ I
L
I SUllru/Cksl! +- I
I
PC+-Mem/PCj
J-..
Subru tina
I I
DR +- Mem( PCJ
I StalU#Cksl/+-O I '- AR +- RF(Srrl}
I I PC+-PC+ I
Mem{ARj t- Pe "
PC+--DR
RF{Srdl+-RF(Srdj + 1
RelUm
y AR t- Mem{ARI
pe t- Mem{ARl
RFfSrr l J +- RFfSrc l } + I
i ! ~
I Registro,
de estado
I RF
i
~ Señales
'-
Lógica
de control
~ decontrol
! !
+-----i Status r- ALSU
I IR
I I pe
rI I ! rI AR
I DR
rI
Bus de datos n ,
, 7
l,
Bus de direcciOnes ,7 7 In
Mem
Ú Bus de control
Out
+
Buscar
instrucción
•
!
Buscar operandos
o direcciones
!
Ejecutar operaciones o
calcular dirección efectiva
!
AJmacenar
resultado
I
(a) Ciclo de ejecución de instrucción
Ciclo
de reloj o 2 345
Captar
II 1, 1, 1, 1, 1,
instrucción
Captar
operandos o II /, 1, /, /,
direcciones
Ejecutar
operación
o calcular /1 /, /, 1,
clirección
efectiva
Almacenar
resultado II /, 1,
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 ejecutar-
432 Principios de diseño digital
ción, tres bits para la dirección del registro destino del resultado (Dest), y dos campos de
tres bits cada uno para las direcciones de los registros utilizados por los operandos (Src1 y
Src2). .
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 O
(a) Instrucciones con registros: Tipo Op Dest Srcl Src2 I Constante I
aritméticas. Denominación Acción
lógicas,
OP Dest, Src 1, Src2 RF(Dest) f- RF{Srcl} Op RF[Src2]
de transferencia,
OP Dest, Src l , Constante RF(Dest) f- RF{Srcl} Op COllstanle
y de desplazamiento
Move Dest, Src J RF(Dest) f- RF{Srcl] •
Shift Dest, Src l . Constante RF(Dest) f- RF{Srcl¡ desplazar Constante
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 O
(b) Instrucciones con memoria: Tipo Op Des' Srcl Src2 [Link]/az¡lmitnlo I
load (cargar) Denominación Acción
y stQre (almacenar)
LimmU Dest RF(Desf)(31 . . 16) f- Desplazamiento
LimmL Dest RF(Dest)( 15 .. .0) f- Desplazamiento
Lre' Des!, Src2, Desplazamiemo RF(Dest) f-Mem{RFfSrc2] + Desp/azmniento}
S re' Src 1, Src2, Desplazamiento Mem[RF{Src2J + DesplazamiellloJ f- RFISn::l}
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 O
(e) Instrucciones de control: TIpo I Op Des' Srcl Src2 I/lt¡p/a¡¡¡mjent, I
jump (saltar), y Denominación AcciÓn
branch (salto condicional)
Jump Desplazamiento PC ~ PC + Desplazamiento
Jump Src2, Desplazamiento PC ~ RF{Src2J + Despla?,amiento
PC ~PC + I si RF{SrcIJ rel RF{Src2) J
Brel Src2, Desplazomiento [ PC f- pe + Desplazamiento si RF{Srcl Jno rel RF{Src21
31 30 29 28 27 26 25 24 23 22 2 1 20 19 18 17 16 15 O
(d) Instrucciones misceláneas: TIpo Op Des' Srcl Src2 ID<>pio<!lmitlll, I
no-op, DenominaciÓn AcciÓn
clear,
No-op No hacer nada
sel,
Clear Dest RF{DestJ f-O
y resel
Sstat Dest Status{DestJ ~ 1
Rstat Dest Status{DestJ ~O
Obsérvese que este repertorio de instrucciones tiene los mismos cuatro tipos de ins-
trucciones que el repertorio CISC de la Figura 9.5. Las instrucciones con registros que
muestra la Figura 9. Il (a) realizan diversas operaciones con los operandos almacenados en
alguno de los ocho registros del banco de registros y después devuelven el resultado a otro
registro del mismo fichero. 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. Il (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 direccionamiento principal es el relativo donde la
434 Principios de diseño digital
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
control 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 proporcion·a da
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
reduce a una serie de registros de control y a una pequeña lógica de decodifica-
ción en la segunda etapa.
El último cambio en la estructura del procesador es consecuencia de la seg-
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 instrucciones 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 salto. Este proceso, llamado detención de la segmentación (pipeline sta-
lling), se explica éon más detalle en las secciones siguientes.
Lógica
de RF
decodificación
1 IR
I= JI-t:::.-JI':=JI.: ,11 • , I
1
~+-----t---'~ ~:~ I
Memoria
de
instrucciones
¡
r···· ·········r: -S,-]oo'-,-o" 1
I pe
1
I
,1 ·Registro de
I1desplazamiento .11
,-J
11 Registro 11 Registro de 1
de control~11 destino .1
~R j i
I Selector L
t
Memoria
de datos
La tercera etapa de la segmentación realiza diversas operaciones según los distintos tipos
de instrucción. En el caso de operaciones con registros, por ejemplo, realiza la operación
especificada en el codop, utilizando los operandos almacenados en los registros A y B. y
almacena despué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 del 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 almacenamiento, esta etapa transfiere el dato a ser almacenado desde el 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 PC 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
Escribir en B
Escribir en AR
. Escribir en DR
a b e d x y z
x y z
lO! 102 103 104 105 106 107 108 109 llO 111 112 11 3 114
(b) Diagrama de tiempos
que el dato necesario no puede devolverse ar RE 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 secuencia de instrucciones. Estas instrucciones No-op pueden ser introducidas
por el compilador en el momento de la compilación o bien ser la unidad de con-
trol la que detenga la ejecución de instruccione& 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
que calcula la suma de tres variables a, b, y c; utilizando el registro temp de RF
como almacenamiento temporal, y guardando después el resultado en la variable
total:
temp=a+b
total = temp + e
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-op después de la tercera ins-
trucció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 temp y. total no estarán dispo-
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 Load en los tres primeros ciclos de reloj. No obs-
tante, puesto que el valor b no se escn'be en RF hasta el firtal 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. Igualinente, los valores de temp y total 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 temp y total 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 11 instrucciones y 14 ciclos de reloj para
sumar a, b, y c. Sin embargo, puesto que cinco (o el 45 %) de estas 11 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 forma 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 iQstrucciones No-op.
Para aumentar las prestaciones del procesador se pueden introducir en el pro-
cesador caminos para el avance de datos (data forwarding), permitiendo 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
Utilizando 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.
Escribir en A
Escribir en B
Escribir en AR
a b
Escribir en
Escribir en pe 101 102 103 104 105
(b) Diagrama de tiempos
Escribir en IR
Escribir en A
Escribir en B
EscribirenAR
Escribir en DR
Escribir en
Escribir en RF a b e
Escribir en Mem 10lal
Escribir en pe 101 102 103 104 105 106 107 108 109
(b) Diagrama de tiempos
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 instrucciones con dependencias
de datos. El avance de datas se utiliza de una u otra forma en todos los procesa-
dores comerciales actuales.
442 Principios de diseño <ligital
Escribir en A
Escribir en B
Escribir en AR
Escribir en DR
Escribir en RF
Escribir en Mem
Escribir en pe
(b) Diagrama de tiempos cuando no se produce el salto
Escribir en A
Escribir en B
b
Escribir en
min
~; 7f'-
•
-, - ,.- ' ..
100 Bgoeq a, b, +4
101 Move max, b
\02 Move min, a
103 Jump +3
104 Move max, a
105 Move min, b
106
(a) Programa en lenguaje ensamblador
Escribir en A a b a
Escribir en B b
Escribir en AR
Escribir en DR b a
Escribir en max
Escribir en
Escribir en pe 101 \02 103 104 lOS 106
de la segmentación
Escribir en IR
Escribir en A b
Escribir en B
a b
min
101 102
Vaciado de la segmentación
9.12. PROBLEMAS
9.1. (Formatos de instrucción) Escriba teniendo el valor del dato y la segun-
una secuencia de instrucciones que da con la dirección del siguiente ele-
permita calcular el valor de y = x2 + mento de la lista. Utilice sólo instruc-
2x + 3 para un valor de x dado utili- ciones de tres direcciones, con:
zando: (a) Direccionamiento directo
(a) Instrucciones de tres direcciones (b) Direccionamiento indirecto
(b) Instrucciones de dos direcciones
9.6. (Modos de direccionamiento) Escriba
(e) Instrucciones de una dirección
Asuma que no hay banco de registros la secuencia de instrucciones para cal-
en el procesador. tan sólo puede supo- cular 2::~a;x;.donde A=[a¡.a2....a IOol
ner la existencia de un único acumula- y X=[x¡,x2''',x¡ool representan vecto-
dor para la parte (c). Indique el núme- res almacenados en la memoria prin-
ro de instrucciones y de accesos a cipal. Utilice instrucciones de dos
memoria en cada caso. direcciones, con:
(a) Direccionamiento directo
9.2. (Formatos de instrucción) Resuelva el (b) Direccionamiento indirecto
problema 9.1 suponiendo que hay un (e) Direccionamiento indexado con
banco de registros. Tanto para las modo de autoincremento.
direcciones del banco de registros
como para las de memoria utilice: 9.7. (Diseño del repertorio de instruccio-
(a) Instrucciones de una dirección nes) Modifique el repertorio de ins-
(b) Instrucciones de dos direcciones trucciones de la Figura 9.5 ampliando
(e) Instrucciones de tres direcciones el campo de dirección a 22 bits. Esto
Minimice el número de direcciones de puede conseguirse utilizando s6lo una
memoria en cada caso. dirección del banco de registros en las
instrucciones de memoria y control y
9.3. (Formatos de instrucción) Utilizando asumiendo que los seis bits más signi-
instrucciones de tres direcciones, ficativos están en los campos Src1 y
desarrolle la secuencia de instruccio- Src2. Considere que el registro RF(O)
nes para leer y escribir: siempre contiene la base en el modo
(a) Una pila creciente hacia direc- de direccionamiento relativo.
ciones mayores.
(b) Una cola FIFO 9.8. (Diseño del repertorio de instruccio-
(e) Una pila UFO nes) Asuma que RF(O) es el contador
de programa PC. Muestre que las ins-
9.4. (Modos de direccionamiento) Escriba trucciones Call y Return no son nece-
los procedimientos de lectura y escri-· sarias al poder ser implementadas
tura en una cola FIFO. utilizando un mediante una secuencia de otras ins-
formato de dos direcciones. con: trucciones.
(a) Direccionamiento directo
(b) Direccionamiento indirecto 9.9. (Diagrama de flujo IS) Considere que
(e) Direccionamiento relativo PC se encuentra en RF(O~ Modifique
en consecuencia el diagrama de flujo
9.5. (Modos de direccionamiento) Escriba
IS de la Figura 9.6 y el diagrama ASM
los procedimientos para borrar y aña-
mostrado en la Figura 9.8.
dir elementos a una lista. Asuma que
cada elemento de la lista utiliza dos 9.10. (Repertorio de instrucciones) Añada
palabras de memoria. la primera con- un registro de base específico (BR) al
448 Principios de diseño digital
tando 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, calcular la media, y
luego multiplicar la corriente nominal de puerta por la tensión de la fuente.
ner los valores de salida correctos para cada señal de salida, un simulador tam-
bién indica cuando la señal de salida alcanzará este valor de salida con respecto
al instante en que cambien los valores de entrada. Contabilizando todos los cam-
bios de los valores de salida de todos los componentes dentro de algún intervalo
de tiempo también podemos calcular la disipación de potencia. Como se men-
cionó anteriormente en esta sección, cada simulador requiere una descripción del
circuito digital, que se puede obtener con una herramienta de captura de esque-
mas o mediante un HDL. Una herramienta de captura de esquemas permite intro-
ducir el esquema gráficamente mientras que con un HDL se hace mediante texto.
Escribir la descripción del diseño en un HDL determinado, como el estándar
VHDL del IEEE o con el lenguaje Verilog se llama modelado. La ventaja prin-
cipal de los lenguajes HDL es que permiten a los diseñadores describir circuitos
digitales con diferentes niveles de abstracción. Por ejemplo podemos diseñar un
circuito digital y describirlo especificando todas sus puertas y biestables y sus
conexiones. Por otra parte, podemos describirlo usando expresiones booleanas
para cada entrada del biestable o especificando todas las transferencias entre
registros en cada ciclo de reloj. Incluso en los niveles más altos de abstracción
podemos describir un procesador usando su conjunto de instrucciones. En este
caso el modelo es un lazo infinito que contiene una sentencia CASE cuya varia-
ble CASE es el tipo de instrucción y los campos del código de operación. En este
modelo de procesador cada iteración del lazo representa un ciclo de ejecución de
una instrucción.
La ventaja de modelar a alto nivel de abstracción es la reducción del tiempo
de ejecución de una simulación. Al acortarse los tiempos de sirnulacióh 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.
Una práctica más moderna serí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 el fabricante de la FPGA. Esta
práctica también se puede usar para medir la potencia y la velocidad, si añadimos
generadores de pulsos y osciloscopios.
También podemos practicar el diseño de componentes digitales usando herra-
mientas de simulación que pueden albergar fácilmente diseñus mayores 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 enseñar HDL y
modelado, acudimos a las prácticas de modelado, en las que los estudiantes
aprenden cómo describir los distintos componentes en distintos niveles de abs-
Apéndice: Prácticas de laboratorio 455
tracción y como escribir los modelos para verificar el funcionamiento, los proto-
colos de comunicación, prestaciones, potencia y verificabilidad entre otros. Estas
prácticas de modelado necesitarían una herramienta de simulación con un len-
guaje estándar como VHDL o Verilog como procesador frontal.
En cursos más avanzados podríamos utilizar herramientas de síntesis para
diseñar circuitos digitales. En una práctica de síntesis lógica los estudiantes des-
cribirían modelos a niveles más altos y diseñarían circuitos digitales a partir de
modelos descritos. Con objeto de poder comparar, cada circuito puede diseñarse
primero manualmente y luego sintetizarlo automáticamente. (Esta materia se vio
en los Capítulos 4 y 6). En las prácticas de síntesis del comportamiento los
estudiantes harían lo mismo 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 partir de descripciones algorítmicas para sintetizar ASIC. (Esto
se vió en los Capítulos 8 y 9).
En resumen, un laborator io 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
esquemas para los cursos introductorios, y una entrada HDL para los cursos avan-
zados o de modelado. También incluiría tarjetas FPGA con algunos generadores
y osciloscopios para que los estudiantes se hicieran 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 diseño y fabricación .
(e) Camino de datos (Figura 7.26) [Link]. 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 control (Figura Problema 7.20. Determine también la
7.34(a)) frecuencia operacional mayor para su
(e) Camino de datos a medida y uni- diseño (el menor periodo de reloj
dad de control (Figura 7.34(c)) posible).
(1) Camino de datos a medida y uni-
dad de control (Figura 7.34(e))
Indice
A banco de registros, 290 circuitos lógicos, 94
basado en estado, 243, 248 circuitos secuenciales
acarreo anticipado, 183 basado en la entrada, 243, 248 asíncronos, 222
acumulador, 312, 410 base,30 , codificación del uno caliente,
adaptador tri estado, 200 base biltV!,! 3 1 261
álgebra booleana, 73 biblioteca ae componentes, 13 codificadores de prioridad, 200
álgebra de conmutación, 73 , 76 biblioteca de puertas, 94 código, 54
algoritmo ALAP, 391 biestable disparado por flanco , código biquinario, 56
algoritmo ASAP, 39 1 232 código de detección de errores,
algoritmo de lado izquierdo, biestable JK, 235 59
353 biestable SR, 235 código de 3 en exceso, 56
algoritmo de planificación de biestables maestro/esclavo, código de operación, 407
lista, 393 230-23 1 código de paridad impar, 60
almacenar instrucciones, 408 biestables sensibles al nivel, código de paridad par, 60
alto activo, 223 229 codigo 242 1, 56
bits de infonnación, 60 código Harnming, 62
ampliador de memoria, 189
bits de relación, 421 código 8421, 56
ampliador lógico, 189
bloque ASM, 338 código ponderado, 56
análisis, 240
booleana bi valuada álgebra, 74 códigos de corrección de
ancho del pulso de escritura,
bus, 199 errores, 62
298
códigos de paridad de 1 bit, 60
aproximación a medida, 120
cola, 307
aproximación semi-a-medida,
12 1
e colector abierto, 112
coma binario, 3 1
arco de incompatibilidad, 359 caja de decisión, 338 coma de la base, 30
arco prioritario, 359 caja de estado, 338 comparadores, 203
array de puertas , 121 caja de salida condicional, 338 compartición del bus, 353
arrays lógicos programables cambio de bit mínimo, 259 compartición de
(PLAs), 2l3 camino crítico, 167 memoria/registro, 349
ASCII, 56 camino de datos paralelas, 318 compartición de una unidad
ASIC,406 campo constante, 409 funcional, 35 1
asociación o agrupación de campo de direcciones, 407 compilador, 406
conexiones, 35 1 campo de modo, 408 complemento a 10,4 1
asociación o agrupación de campo programable complemento a dos, 42
operadores, 351 aproximación de, 123 completamente especificado, 147
asociación o agrupación de captura de esquema, 17 componentes analógicos, 9
variables, 349 característica, 52 comportamiento, 4, 18
asociatividad, 72 carga estándar, 107 condiciones de indiferencia,
autocomplementación, 56 carrera crítica, 225 148
autodecremento, 415 celda, 10 conectividad de salida (jan
autoincremento, 415 celda de memoria, 295 out) , 107
avance de datos, 441 celdas del banco de registros, conjunto, 72
axiomas, 72 290 conjunto de instrucciones, 406,
chip, 117 422
ciclo útil, 223 conmutatividad, 73
B cierre, 72 contador, 283
circuito integrado de aplicación contador
bajo activo, 223 específica (ASIC), 406 ascendente/descendente, 28 ~
462 Principios de diseño digital
En un circuito secuencial tipo Moore, el estado siguiente se determina a partir del estado presente y las entradas actuales, mientras que la salida depende únicamente del estado actual. Para definir completamente el comportamiento del circuito, se generan ecuaciones de excilación que describen cómo las entradas afectan las transiciones de estado y se convierten en ecuaciones características del biestable correspondiente . Una máquina de estados finitos tipo Moore puede describirse mediante una tabla de estados-siguientes/salidas, en la que se mapea cada estado actual a un estado siguiente, y se asigna la salida correspondiente a cada estado . Así, el estado presente define la salida del circuito independientemente de las entradas .
La forma no estándar de una expresión booleana presenta ventajas sobre la forma canónica en la implementación debido a que generalmente requiere un menor número de operadores, lo que implica menos puertas y entradas por puerta, facilitando implementaciones más eficientes .
En un circuito secuencial tipo Moore, la salida depende únicamente del estado actual del sistema y no de las entradas. En contraste, en un circuito tipo Mealy, la salida depende tanto de las entradas actuales como del estado actual del circuito .
El diseño de un repertorio de instrucciones que minimice accesos a memoria mejoraría el rendimiento del procesador, ya que reduciría el tiempo de ejecución global de los programas al disminuir la cantidad de ciclos necesarios para completar las instrucciones, optimizando el uso de la memoria caché y mejorando la eficiencia del procesador .
Los tres criterios principales son la frecuencia de uso en diseños lógicos típicos, la ampliabilidad del operador a más de dos variables, y la sencillez de construcción definida por el número de transistores necesarios y el tiempo de propagación de la señal a través de la puerta .
La generalización de la ley de De Morgan para más de dos variables en el álgebra booleana se expresa como \((X_1 + X_2 + ... + X_n)' = X'_1 X'_2 5 X'_n\).
El número de campos de dirección en una instrucción impacta directamente en el tamaño de los programas y las prestaciones del procesador. Cuantas más direcciones tenga una instrucción, mayor será el tamaño de las instrucciones, haciendo los programas más cortos al requerir menos instrucciones para completar una tarea . Sin embargo, esto conlleva un mayor consumo de memoria por instrucción y más complejidad en la implementación del procesador, debido al aumento de modos de direccionamiento y el procesamiento de instrucciones más complejas . Las instrucciones con menos campos de dirección son más compactas pero requieren un mayor número de ellas para ejecutar una tarea, lo que puede aumentar la cantidad total de accesos a memoria, afectando potencialmente las prestaciones del procesador . Un diseño eficiente debe minimizar el número de accesos a memoria, combinando adecuadamente la longitud de las instrucciones y la cantidad de ellas que se ejecutan .
Para optimizar el uso compartido de buses en el diseño de caminos de datos, es crucial diseñar caminos de datos paralelos que permitan realizar múltiples operaciones simultáneamente a través del uso de múltiples buses, puertos y unidades funcionales. Incrementar el número de puertos en los bancos de registros y emplear varias unidades funcionales permite realizar operaciones en paralelo, lo que resulta en un mejor rendimiento . Además, el uso de latches de entrada y salida en las unidades funcionales ayuda a reducir el tiempo de uso de los buses al proporcionar un almacenamiento temporal para los operandos y resultados, incrementando así el tráfico de datos y optimizando el uso compartido de buses . Finalmente, es esencial que las unidades y su conectividad coincidan con el paralelismo del algoritmo ejecutado para maximizar la eficiencia del uso compartido de buses .
Las puertas de Inhibición e Implicación no se utilizan frecuentemente en el diseño lógico, a pesar de ser conmutativas, porque no son asociativas, lo que limita su ampliabilidad a más de dos variables. Esto las hace menos prácticas para su uso en bibliotecas de puertas que buscan construir redes lógicas de manera eficiente y con mínimo coste, al requerir más operadores o técnicas adicionales para extender su funcionalidad . En contraste, las puertas como NAND y NOR, que son más comunes, permiten implementaciones con menos transistores, resultando más baratas y rápidas, y son preferidas en las bibliotecas de diseño lógico .
Para minimizar el tamaño de la lógica de control en un diseño FSMD (Finite State Machine with Datapath), se pueden utilizar varias técnicas: 1. **Registro de Estado y Decodificador:** Una implementación clásica consiste en usar un registro de estado junto con un decodificador, que simplifica la lógica de estado siguiente y de salida a través de expresiones booleanas más sencillas, dado que cada estado está representado por una señal única. Esto ayuda a reducir la complejidad de las funciones de control necesarias para determinar el estado siguiente . 2. **Contadores:** En secuencias de estados incondicionales, donde cada estado tiene solo un sucesor, se puede reemplazar el registro de estado con un contador. Esto simplifica la lógica de control ya que los estados se pueden gestionar simplemente con operaciones de carga e incremento . 3. **Memoria de Control:** La lógica de estado siguiente también puede ser gestionada usando una memoria de control (ROM o PROM), donde el registro de estado actúa como registro de direcciones, minimizando así la necesidad de numerosas señales de entrada o condiciones adicionales. Este enfoque reduce el costo de implementación ya que la memoria de control se ve afectada por el número de entradas y señales adicionales . Estas técnicas en conjunto ayudan a simplificar la implementación y reducen el tamaño de la lógica de control en un diseño FSMD.