Vous êtes sur la page 1sur 193

Apunts dintroducci als

computadors

1er












E.T.S.E.I.B. U.P.C.






Joan Marc i Iual
Curs !"1#$!"1%

Representacin de nmeros naturales 1
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2 Representacin de nmeros naturales
Juan J. Navarro
Toni Juan
Primera versin: 09-2007. Versin actual: 02-2011
2.1 Introduccin
Existen diferentes formas de representar valores numricos. De momento, en este captulo, nos
limitamos a representar nmeros del conjunto de los naturales: (en ingls, unsigned
integers o non-negative integers). Ms adelante, en el captulo 4, veremos cmo representar nmeros
del conjunto de los enteros: (signed integers o simplemente integers). En
este captulo 2, si no se indica lo contrario, cuando hablemos de nmeros nos referimos siempre a
nmeros naturales.
Un nmero es un ente abstracto. Podemos pensar en tres manzanas y representarlas en nuestra
imaginacin fcilmente. Sabemos desde bastante pequeos qu significa el nmero tres. Despus
aprendemos a contar y somos capaces de contar por ejemplo veintiocho manzanas, pero no las
podemos representar en nuestra imaginacin como hacamos con las tres. Para nmeros grandes
necesitamos un sistema de representacin de nmeros que sea potente, que permita representar
nmeros grandes. Estamos acostumbrados a representar los nmeros naturales en base 10, en el sistema
de numeracin decimal. Los computadores cuando trabajan con nmeros naturales (los representan y
los procesan) lo hacen en un sistema de representacin muy parecido al decimal, pero ms eficiente
para el computador: el sistema binario. Como es parecido, vamos a empezar por repasar lo que
sabemos del sistema decimal.
Adems de esta pequea introduccin, en este captulo hay dos grandes secciones. En la seccin 2.2
presentamos los sistemas convencionales en base b, empezando por el decimal y el binario,
generalizando despus a una base genrica b, y tratando el sistema hexadecimal (b=16) como un
ejemplo ms, que tambin usaremos en este curso. En la seccin 2.3 estudiamos los procedimientos de
cambio de base: dada la representacin de un nmero en decimal, binario o hexadecimal, cmo obtener
su representacin en cualquiera de las otras bases, de los otros sistemas.
N 0 1 2 , , , { } =
Z 2 1 0 1 2 , , , , , { , } =
2 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2.2 Sistema convencional en base b
2.2.1 Decimal
En el sistema decimal tenemos diez smbolos diferentes para representar cada uno de los nmeros
naturales del cero al nueve: 0, 1, 2, 3,..., 8, y 9. Estos diez smbolos se denominan dgitos, tal vez
porque son diez y tenemos diez dedos (en la escuela tambin se les denomina cifras). En nuestra
infancia, a la vez que aprendemos el concepto de nmero, aprendemos de memoria cada uno de estos
smbolos y su significado.
Pero, qu pasa cuando se trata de un nmero ms grande? No podemos inventarnos smbolos
diferentes para cada uno de los infinitos nmeros naturales. Incluso para un conjunto de nmeros
relativamente pequeo, como por ejemplo 1000, sera difcil conocer y usar esos posibles 1000
smbolos diferentes.
En el sistema decimal, un nmero mayor que 9 se representa mediante un vector de dgitos. As,
representamos el cinco mil doscientos cincuenta y seis como: 5256. Decimos que un nmero se
representa por un vector de dgitos porque la posicin que ocupa cada dgito en la secuencia es
importante: es un sistema posicional. No cuenta lo mismo el cinco que est a la izquierda de la
cadena que el que est entre el 2 y el 6, aunque los dos son el mismo smbolo. No es lo mismo el 5256
que el 2565, aunque en las dos representaciones aparecen los mismos dgitos. En el 5256, el 5 de la
izquierda vale por 5000, mientras que el otro 5 slo vale 50. El peso que tiene el dgito 5 de ms a la
izquierda del ejemplo es de 1000 (y por eso vale 5x1000) y el del otro 5 es de 10. El peso de cada dgito
depende de la posicin que ocupa en el vector que representa el nmero y estos pesos son las potencias
de 10. As, el vector de dgitos 5256 es una representacin del nmero que resulta de calcular:
Que expresado usando las potencias de 10 (10
0
=1, 10
1
=10, 10
2
=100, 10
3
=1000,...) es:
Vamos a formalizar esto. En general, el vector de dgitos con
representa, en el sistema decimal, el nmero natural con valor:
que usando la notacin del sumatorio se expresa como:
Esta frmula expresa el valor del nmero en funcin de los dgitos que lo representan. Si realizamos las
operaciones de multiplicacin de los dgitos por las potencias de 10 y las sumas de los resultados
usando el sistema decimal, obtenemos, claro est, el nmero representado en decimal.
5 1000 2 100 5 10 6 1 + + +
5 10
3
2 10
2
5 10
1
6 10
0
+ + +
x
n 1
x
n 2
x
2
x
1
x
0
x
i
0, 1, 2, ..., 8, 9 { }
x
n 1
10
n 1
x
n 2
10
n 2
x
2
10
2
x
1
10 x
0
+ + + + +
x
i
10
i
i 0 =
n 1

Representacin de nmeros naturales 3


Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2.2.2 Binario
En un computador los nmeros naturales se representan en el sistema binario. Una de las diferencias
con el decimal es que en binario slo hay dos smbolos o dgitos diferentes en vez de los 10 del
decimal: el 0 y el 1. El valor numrico que representan estos dos smbolos es el mismo que representan
el 0 y el 1 en decimal. En binario, cada uno de los dgitos se denomina dgito binario, o simplemente
bit (binary digit). La otra diferencia entre binario y decimal es que el peso de los dgitos segn la
posicin que ocupan en el vector que representa al nmero sigue las potencias de 2 en vez de las de 10.
De la representacin de un nmero a su valor
Definimos el sistema binario de representacin de nmeros naturales como sigue. El vector de n bits
, con , representa en binario al nmero natural (unsigned) que
denotamos X
u
, siendo:
Que abreviadamente se puede expresar usando la notacin del sumatorio como:
Una vez ms, si realizamos los clculos de la expresin anterior usando el sistema de representacin
decimal, que es el que solemos usar las personas para realizar operaciones matemticas, obtendremos
el valor del nmero representado en decimal.
Ejemplo 1
representa en binario al valor: , que en
decimal se representa por 11.
Ejemplo 2
10011011 representa al 155 si interpretamos el vector de bits como un nmero natural en binario.
Ejemplo 3
En la columna de la izquierda de la figura 2.1 se muestra la representacin (vector de bits) de los
nmeros naturales del 0 al 15 usando el sistema binario y en la columna de la derecha el nmero
natural que representa cada vector de bits (usando para ello la representacin en decimal).
Notacin
En el computador, un vector de n bits (las tensiones elctricas binarias en n cables ordenados) puede
representar muchas cosas diferentes, segn la regla de codificacin usada. As que, dado un vector de
bits, para saber qu representa hay que saber con qu sistema de representacin hay que interpretarlo.
Por ejemplo, el vector de bits 1001 puede representar: al nmero 9, si lo interpretamos como un
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
X
u
x
n 1
= 2
n 1
x
n 2
2
n 2
x
2
2
2
x
1
2
1
x
0
2
0
+ + + + +
X
u
x
i
2
i
i 0 =
n 1

=
X 01011 = X
u
0 2
4
1 2
3
0 2
2
1 2
1
1 2
0
+ + + + =
4 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
nmero natural representado en binario; al nmero -7, si lo interpretamos como un nmero entero
representado en complemento a dos (como veremos en el captulo 4); o incluso puede representar un
pltano, si usamos una tabla de codificacin de frutas tropicales que no mostramos aqu.
En general, al vector de bits lo denotamos con una letra o nombre en maysculas, por ejemplo X o
DATA, y al valor, al nmero natural que representa ese vector de bits, lo denotaremos con la misma letra
o nombre pero con el subndice u de unsigned, que indica que hemos usado el sistema de
representacin de nmeros naturales en el computador, el sistema binario, para interpretar el vector de
bits. Por ejemplo, X
u
o DATA
u
. Esto nos ayuda a diferenciar los naturales de otros tipos de datos)
1
.
2.2.3 Generalizacin: sistema convencional en base b
Tanto el sistema de representacin decimal como el binario son sistemas posicionales: la posicin del
dgito dentro del vector es importante para la representacin. No pesa lo mismo el dgito x
1
que el x
3
,
aunque los dos dgitos sean iguales. Al dgito de ms a la izquierda del vector de n bits, x
n-1
, se le
denomina dgito de mayor peso de la representacin (de X) y al de ms a la derecha, x
0
, dgito de
menor peso. Los dos sistemas, decimal y binario, son sistemas con base fija: el peso del dgito i es b
i
(la base b es la misma para todas las posiciones i del vector de dgitos). La diferencia entre ellos es que
en decimal la base b es 10 y en binario es 2. En ambos sistemas los dgitos pueden valer .
A continuacin definimos la generalizacin para cualquier base b de este tipo de sistema que se
denomina sistema convencional en base b, del que son un caso particular el decimal y el binario.
1. El valor que resulta de interpretar el vector de bits como un nmero entero (signed) representado en el sistema que usa el
computador lo denotamos con el subndice s de signed, como veremos en el captulo 4. Por ejemplo: X
s
, o DATA
s
.
Vector de bits
X=
x
3
x
2
x
1
x
0
Valor
X
u
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9
1 0 1 0 10
1 0 1 1 11
1 1 0 0 12
1 1 0 1 13
1 1 1 0 14
1 1 1 1 15
Fig. 2.1 Tabla de la representacin en binario de los nmeros naturales del 0 al 15.
0 x
i
b 1
Representacin de nmeros naturales 5
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

2.2.4 Hexadecimal
De los sistemas convencionales en base b, adems del decimal (b=10) y del binario (b=2), tambin
usaremos el sistema hexadecimal (b=16). Del hexadecimal slo queda aclarar temas de notacin. Ni en
decimal ni en binario hemos separado con comas los dgitos del vector que representa un nmero, a
diferencia de lo que suele hacerse en matemticas con los vectores. Es ms cmodo escribir 5256 que
(5, 2, 5, 6). Si hacemos lo mismo para el sistema hexadecimal, base b=16 y dgitos
tenemos un problema. El vector de dgitos hexadecimales 113 es el (1, 1, 3), el (11, 3) o el (1, 13)?
Segn lo consideremos estamos representando el 275, el 179 o el 29, y no es lo mismo. As que en
hexadecimal, o separamos los dgitos por comas o tenemos que inventarnos un smbolo diferente para
cada uno de los dgitos con valor 10, 11,..., 15.
Por convenio, en hexadecimal, a los dgitos con valor 10, 11,..., 15 se les asigna las letras A, B,..., F,
respectivamente. De esta forma tampoco hace falta separar con comas los dgitos hexadecimales del
vector. As, el vector de dgitos hexadecimales (2, 11, 13, 5) lo escribimos como 2BD5. El valor del
nmero representado en hexadecimal por 2BD5 es: , que en
decimal queda representado por el vector de dgitos 11221. Una vez ms obtenemos la representacin
del nmero en decimal si realizamos las operaciones de la expresin anterior en decimal.
Otra cuestin de notacin. Cuando en el computador tenemos un vector X de n bits (y en un
computador n suele ser grande: 8, 16, 32 o 64) se suele usar el sistema hexadecimal para representar
por escrito el vector de n bits, ya que en hexadecimal necesitamos solamente n/4 dgitos: es menos
probable cometer errores y es trivial pasar de la representacin binaria a hexadecimal y viceversa,
como veremos en la seccin 2.3.3. Por ejemplo, para n = 16, si tenemos X = 1000110101111010 es
mejor escribir X = 8D7A. Esto se hace por claridad, independientemente que X represente un nmero
natural, entero, una fruta o cualquier otra cosa. Cuando la expresin sea en hexadecimal, para
diferenciarla de la representacin en binario, pondremos el prefijo 0x antes del vector de dgitos
hexadecimales, X = 0x8D7A. Por ltimo, usaremos el sistema decimal para expresar el valor concreto
X
u
, que es el sistema usual entre nosotros. Por ejemplo, para X = 0x8D7A, escribiremos X
u
= 36218.
En el sistema convencional en base b, para con b > 1, el vector de n bits
con , representa al nmero con valor:
, (EQ 1)
que con la notacin del sumatorio se expresa como:
(EQ 2)
2.1
b N
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 ..., b-1 , { }
X
u
x
n 1
b
n 1
x
n 2
b
n 2
x
n 3
b
n 3
x
2
b
2
x
1
b x
0
+ + + + + + =
X
u
x
i
b
i
i 0 =
n 1

=
1
x
i
0 ..., 15 , { },
2 16
3
11 16
2
13 16
1
5 16
0
+ + +
6 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2.2.5 Rango de la representacin en un sistema convencional
El rango de la representacin de un sistema convencional en base b indica qu nmeros naturales se
pueden representar con ese sistema usando un vector de n dgitos. De la EQ (1), o de la EQ (2), se
deduce que el menor valor para X
u
se da cuando todos los sumandos valen cero: todos los dgitos valen
0 (ya que X
u
no puede tomar valores negativos, pues los dgitos y la base son por definicin positivos).
Por lo tanto, el menor valor de X
u
es 0.
Cul es el mayor nmero que se puede representar en base b con n dgitos? De las mismas ecuaciones
se deduce que el mayor valor de X
u
se obtiene cuando el valor de cada dgito sea el mayor posible:
cuando todos los dgitos valgan b-1. Cul es este nmero? Veamos primero algunos casos concretos.
En decimal con, por ejemplo, 5 dgitos, este nmero es el 99999. Si sumamos 1 al 99999 sabemos que
nos da el 100000, que es la quinta potencia de diez: 10
5
. As que podemos decir que el mayor entero
representable con 5 dgitos en decimal es el 10
5
-1, y con n dgitos es el 10
n
-1. Veamos que pasa en
binario. Con 3 bits, ver la tabla de la figura 2.1, el mayor nmero representable es el 7 (que se
representa en binario por 111) y con 4 bits es el 15, (1111). Como en binario todava no sabemos sumar
(lo estudiaremos en el captulo 3) podemos ver en la tabla de la figura 2.1 que si sumamos 1 al 7 (111)
da el 8 (1000). Pasa algo parecido al decimal: 8 es la tercera potencia de dos: 2
3
. As que el mayor
nmero que se puede representar con 3 bits en binario es el 2
3
-1. Con 4 bits se puede representar hasta
el 2
4
-1 (el 2
4
, 16, se representa en binario como 10000 y el 16-1 como 1111). Y con n bits se puede
representar hasta el 2
n
-1. Esto tambin se puede obtener para la base general b manipulando la
expresin . Por lo que el mayor nmero es el b
n
-1.
Por ltimo, sabemos que hay b
n
combinaciones diferentes de n dgitos ya que cada dgito puede tomar
b valores diferentes. Estos b
n
diferentes vectores de n dgitos representan b
n
nmeros naturales
diferentes en el sistema convencional en base b. Esos nmeros no pueden ser otros que los b
n
que hay
entre el mnimo (0) y el mximo (b
n
-1) representables, ambos incluidos. De todo esto concluimos lo
siguiente.
2.2.6 Extensin de rango en un sistema convencional
Dado el vector de n dgitos que representa a un nmero natural en el sistema convencional en base b,
veamos como encontrar la representacin del mismo nmero en el mismo sistema pero con n+1
dgitos. Podemos plantear el problema como el de resolver la siguiente ecuacin con restricciones.
En el sistema convencional en base b, el rango de representacin con n dgitos es:
(EQ 3)
b 1 ( )b
i
i 0 =
n 1

b 1 ( ) b
i
i 0 =
n 1

b
n
1 = = =
2.2
0 X
u
b
n
1
2
Representacin de nmeros naturales 7
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Dado x
i
con , encontrar tal que se cumpla:
con la restriccin .
La solucin es trivial:
w
i
= x
i
para i = 0, 1, ..., n-1 y
w
n
= 0.
Esto ya lo sabamos para el sistema decimal, pero es generalizable a los sistemas convencionales de
cualquier base, como acabamos de demostrar.
Ejemplo 4
La representacin del nmero binario 10110 con 8 bits es 00010110. Otro ejemplo, la
representacin del nmero hexadecimal 0x2A con cuatro dgitos es 0x002A.
2.3 Cambios de base entre sistemas convencionales
2.3.1 De base b a base 10 (de X a Xu)
A partir de la representacin de un nmero en base b, con ,
veamos cmo encontrar la representacin del mismo nmero en base 10. La propia definicin de
sistema convencional en base b nos da directamente la frmula a aplicar para ello: EQ (2). De hecho,
ya hemos dicho que al evaluar esta frmula expresando los dgitos y b en decimal y multiplicando y
sumando en decimal obtenemos el valor del nmero representado en decimal, que es lo que buscamos.
Esto ya lo hemos hecho para el caso de b=2 en los ejemplos 1, 2 y 3. An as veamos otro ejemplo.
Ejemplo 5 De binario a decimal
Vamos a obtener la representacin en decimal del nmero binario 10110111. Para ello aplicamos la
EQ (2), representando los valores de los dgitos y la base en decimal. Representar en decimal un
dgito binario es trivial, no hay que hacer nada, la representacin del 0 y del 1 en binario y en
decimal es la misma. Expandiendo la frmula y sustituyendo por los valores del ejemplo queda:
Dada la representacin con n dgitos de un nmero natural en un sistema
convencional en base b (y por tanto en decimal, binario o hexadecimal), para obtener
la representacin de ese mismo nmero en ese mismo sistema (con la misma base)
pero con n+1 dgitos solamente hay que aadir un dgito con valor 0 a la izquierda de
la representacin original. Este proceso de extensin de rango se puede aplicar
repetidas veces hasta obtener la representacin con los dgitos deseados.
0 x
i
b 1 W w
n
w
n 1
w
n 2
= w
2
w
1
w
0
x
i
b
i
i 0 =
n 1

w
i
b
i
i 0 =
n

= 0 w
i
b 1
2.3
3
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 ..., b-1 , { }
8 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.


Para aplicar esta frmula con rapidez es conveniente saber de memoria las potencias de 2. Hay que
sumar las potencias de dos, 2
i
, para las posiciones i del vector en las que el dgito vale 1. La siguiente
tabla muestra las primeras de ellas.
Ejemplo 6 De hexadecimal a decimal
A30E representa en hexadecimal al nmero natural que en decimal se representa por 41742. Esto
es, si X=0xA30E, los dgitos son x
3
=A, x
2
=3, x
1
=0 y x
0
=E. Para obtener el valor del nmero
expresado en decimal hay que representar el valor de los dgitos y de la base de la EQ (2) en
decimal y realizar las operaciones en decimal, que es como las sabemos hacer. Los dgitos
hexadecimales menores o iguales que 9 se representan igual en decimal que en hexadecimal,
mientras que los dgitos hexadecimales A, B, C, D, E y F se representan en decimal por 10, 11, 12,
13, 14, 15 y 16 respectivamente. Siguiendo la EQ (2) tenemos:


2.3.2 De base 10 a base b (de Xu a X)
Dado un nmero representado en base 10 veamos cmo encontrar su representacin en otra base b
(nosotros trabajamos solamente las bases b=2 y b=16, pero lo que hacemos es general para cualquier
b).
1
Encontrar la representacin es lo mismo que encontrar el valor de las incgnitas x
n-1
, x
n-2
,..., x
2
,
x
1
y x
0
,

tales que cumplan con la siguiente ecuacin (X
u
y b son conocidos, no son ninguna incgnita):
X
u
= x
n-1
b
n-1
+ x
n-2
b
n-2
+... + x
2
b
2
+ x
1
b +x
0
(EQ 4)
Tabla 2.1 Primeras potencias de dos
i 12 11 10 9 8 7 6 5 4 3 2 1 0
2
i
4096 2048 1024 512 256 128 64 32 16 8 4 2 1
1. El procedimiento podra ser idntico al usado para pasar de base b a base 10: aplicar la EQ (2). Para ello habra que represen-
tar los dgitos decimales en base b y realizar en base b las multiplicaciones y sumas de EQ (2). Pero este mtodo no es ope-
rativo para nosotros, que de momento solamente sabemos multiplicar y sumar nmeros representados en decimal. Por eso,
para evitar operar en base b, presentamos otro mtodo que requiere solamente hacer divisiones en base 10.
X
u
1 2
7
0 2
6
1 2
5
1 + + + 2
4
0 2
3
1 2
2
1 2
1
1 2
0
= + + + + =
=1 128 0 64 1 32 1 + + + 16 0 8 1 4 1 2 1 1 = + + + +
=128 32 16 4 2 1 183 = + + + + +
4
X
u
10 16
3
3 16
2
0 16
1
14 16
0
= + + + =
=10 4096 3 256 14 + + 40960 768 14 41742 = + + =
5
Representacin de nmeros naturales 9
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En general, una sola ecuacin con n incgnitas, para n>1, tiene infinitas soluciones. Una de estas
soluciones es, por ejemplo, x
0
= X
u
y x
n-1
= x
n-2
= ... = x
2
= x
1
= 0. Pero para valores de X
u
mayores o
iguales que b esta solucin no nos satisface, ya que en estos casos X
u
no puede ser un dgito. As que,
para que las soluciones de la EQ (4) sean dgitos en el sistema en base b, las soluciones tienen que
cumplir una restriccin que no habamos formulado todava:
(EQ 5)
Para encontrar los valores de x
i
que cumplen con la EQ (4) y con la restriccin de la EQ (5), sacamos el
factor comn b de todos los sumandos de la EQ (4) excepto de x
0
(ya que b no multiplica a x
0
).
(EQ 6)
De la prueba de la divisin que aprendimos en la escuela, sabemos que el dividendo es igual al cociente
por el divisor ms el resto. La EQ (5) tiene la forma de la prueba de la divisin si X
u
es el dividendo y
b el divisor. Esto es, dividiendo X
u
entre b (esta divisin la sabemos hacer en decimal, ya que tenemos
expresado en decimal X
u
) obtenemos que el cociente, que llamamos C
1
, es:
(EQ 7)
El resto de la divisin es el dgito x
0
de la representacin del nmero X
u
en base b, que cumple con la
restriccin, es menor que b, ya que es el resto de una divisin por b. Ya tenemos un dgito.
Cmo encontrar los dgitos que faltan? Si nos fijamos en la EQ (7) vemos que tiene la misma forma
que la EQ (4) pero con un trmino menos. Si repetimos lo hecho anteriormente, sacando el factor
comn b de todos los sumandos de la EQ (7) excepto de x
1
, tenemos,
Si ahora dividimos C
1
(que tenemos expresado en decimal) entre b, el resto de esta nueva divisin es el
dgito x
1
que estamos buscando. El cociente de esta ltima divisin, que denotamos por C
2
, es:

Como vemos, esta expresin tiene la misma forma que las EQ (4) y EQ (7) pero con un sumando
menos que la EQ (7). As que podemos repetir el proceso y seguir dividiendo cada cociente resultante
por la base hasta que el cociente resulte ser cero. Los restos de estas divisiones son los dgitos que
estamos buscando.
0 x
i
b < para x
i
0 n-1 , , =
X
u
x
n 1
b
n 2
x
n 2
b
n 3
x
n 3
b
n 4
x
2
b
1
x
1
+ + + + + ( )b x
0
+ =
C
1
x
n 1
b
n 2
x
n 2
b
n 3
x
n 3
b
n 4
x
2
b
1
x
1
+ + + + + =
C
1
x
n 1
b
n 3
x
n 2
b
n 4
x
3
b
1
x
2
+ + + + ( )b x
1
+ =
C
2
x
n 1
b
n 3
x
n 2
b
n 4
x
3
b
1
x
2
+ + + + =
10 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Ejemplo 7 De decimal a binario
Vamos a obtener la representacin en binario del nmero natural 426: dado X
u
= 426, encontrar el
vector de bits X que lo represente en binario. La figura 2.2 muestra las sucesivas divisiones entre 2,
para obtener los bits. El resultado es X = 110101010.
Ejemplo 8 De decimal a hexadecimal
Vamos a representar en hexadecimal el nmero que acabamos de representar en binario, el 426. La
figura 2.3 muestra las sucesivas divisiones entre la base, 16, primero del nmero 426 y luego de los
cocientes, para obtener los restos que son los dgitos hexadecimales. El resto con valor decimal 10
se codifica con el smbolo A para formar el dgito hexadecimal. El resultado es X = 1AA.
Procedimiento para pasar de decimal a base b. Se divide (divisin entera en
decimal) el nmero Xu (que est representado en decimal) por la base b. El resto de
esta divisin es el valor del dgito de menor peso de la representacin del nmero en
base b. Se repite el proceso de divisin por b tomando como dividendo el cociente de
la divisin anterior hasta que el cociente de la ltima divisin sea cero. Los restos de
esta secuencia de divisiones son los valores de dgitos que buscamos, ordenados de
menor a mayor peso
a

Como los restos estn representados en decimal, si b es menor que 10 (caso del
binario) estos restos ya representan directamente a los dgitos en el sistema en base b,
pero si b es mayor que 10 (caso del hexadecimal) hay que representar cada resto con
valor mayor que 9 con el smbolo que le corresponde en el sistema en base b.
a. Si se sigue dividiendo el cociente con valor 0 entre b se obtiene cociente cero y resto cero. Esto no es problema
ya que se pueden poner todos los dgitos que se quieran con valor 0 en las posiciones de ms peso del vector de
dgitos y la representacin del nmero sigue siendo la misma
2.4
426
213
2
02
06
0
106
2
013
1
53
2
06
0
26
2
13
1
13
06
0
2
6 1
2
3 0
2
1 1
2
0 1
2
2
0
2
1
2
2
1 1 0 1 0 1 0 1 0
Fig. 2.2 Divisiones sucesivas para encontrar los bits que representan 426 en binario.
6
7
Representacin de nmeros naturales 11
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2.3.3 De hexadecimal a binario y viceversa
Dado que 16 es igual a 2
4
resulta muy sencillo pasar de la representacin de un nmero natural en
binario a la representacin en hexadecimal y viceversa.
De binario a hexadecimal.
El problema que planteamos se enuncia as. Dada la representacin en binario,
con , de un nmero natural, encontrar la representacin en
hexadecimal de ese mismo nmero. Esto es, encontrar el vector de dgitos hexadecimales
con tal que X
u
= H
u
, o lo que es lo mismo:
(EQ 8)
Supongamos inicialmente n = 4k, sin perdida de generalidad, para que las expresiones resulten ms
sencillas, vamos a escribirlas para n = 16 y k = 4. El sumatorio de la izquierda de la igualdad una vez
desarrollado, queda as:
x
15
2
15
+ x
14
2
14
+ x
13
2
13
+ x
12
2
12
+... + x
7
2
7
+ x
6
2
6
+ x
5
2
5
+ x
4
2
4
+ x
3
2
3
+ x
2
2
2
+ x
1
2 + x
0
Agrupando sumandos de cuatro en cuatro se puede sacar el factor comn de una potencia de 2
4
, 16,
distinta para cada grupo de 4 trminos del sumatorio. De los cuatro trminos de ms a la derecha se
saca el factor comn 16
0
, que es 1. De los 4 siguientes sumandos (yendo hacia la izquierda), se saca
16
1
, de los 4 siguientes se saca 16
2
, y de los 4 de ms a la izquierda se saca 16
3
(en general, 16
k-1
). El
resultado es:
(x
15
2
3
+ x
14
2
2
+ x
13
2 + x
12
)16
3
+... + (x
7
2
3
+ x
6
2
2
+ x
5
2 + x
4
)16 + (x
3
2
3
+ x
2
2
2
+ x
1
2 + x
0
)
1
426
26
16
106
10
1
16
10
0
16
16
0
16
1
16
2
1 A A
Fig. 2.3 Divisiones sucesivas entre 16 para encontrar los dgitos de la representacin en
hexadecimal del nmero natural 426.
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
H h
k 1
h
k 2
= h
2
h
1
h
0
h
i
0 ...,15 , { }
x
i
2
i
i 0 =
n 1

h
i
16
i
i 0 =
k 1

=
12 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Tenemos que encontrar los valores de los dgitos hexadecimales, h
i
, tales que la expresin anterior sea
igual que la expresin de la derecha de la igualdad de la EQ (8), que una vez desarrollado el sumatorio
queda como sigue:
h
3
16
3
+ h
2
16
2
+ h
1
16 + h
0
Viendo desarrolladas as las dos expresiones, se deduce que la igualdad entre ellas se cumple si:
h
0
= x
3
2
3
+ x
2
2
2
+ x
1
2 + x
0
;

h
1
= x
7
2
3
+ x
6
2
2
+ x
5
2 + x
4
,..., y h
3
= x
15
2
3
+ x
14
2
2
+ x
13
2 + x
12
Los dgitos hexadecimales encontrados son vlidos ya que su valor mximo es 15, cuando los 4 bits
valen 1. Esta solucin es til tanto para pasar de binario a hexadecimal como para pasar de
hexadecimal a binario.
Ejemplo 9 De binario a hexadecimal
Dado el nmero representado en binario mediante el siguiente vector con n=16 bits,
X=1001001110111010, vamos a obtener su representacin en hexadecimal sin efectuar divisiones
(encontramos H tal que H
u
= X
u
). Agrupando de 4 en 4 los bits de X obtenemos el valor de los k = n/
4 = 4 dgitos hexadecimales que representan al nmero en base 16. La figura 2.4 muestra el
proceso. El resultado es H = 93BA.
Procedimiento para pasar de binario a hexadecimal. Se agrupan de 4 en 4 los bits
de la representacin binaria del nmero, empezando por los bits de menor peso. Si al
final el nmero de bits no es mltiplo de 4, se completa la representacin binaria con
uno, dos o tres ceros a la izquierda hasta que lo sea; con lo que el nmero
representado sigue siendo el mismo (extensin de rango).
Cada grupo de 4 bits representa en binario uno de los dgitos de la representacin
hexadecimal del nmero. Los 4 bits de menor peso representan al dgito hexadecimal
de menor peso, los 4 siguientes hacia la izquierda representan en binario al dgito de
peso 16, y as hasta llegar a los 4 bits de ms peso, que representan al dgito
hexadecimal de ms peso.
Ahora hay que pasar individualmente de la representacin binaria de cada dgito
hexadecimal a su smbolo en hexadecimal. Esto es, hay que pasar nmeros de 4 bits
de binario a decimal y luego cada nmero decimal mayor que 9 (de 10 a 15)
representarlo con la letra que le corresponda como dgito hexadecimal (A, B,...,F).
Para los nmeros menores o iguales que 9, el smbolo del dgito decimal coincide
con el hexadecimal (0, 1, 2,..., 9).
2.4
8
Representacin de nmeros naturales 13
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
De hexadecimal a binario.
Ejemplo 10 De hexadecimal a binario
La figura 2.5 muestra el paso de la representacin hexadecimal, de 3E2B, a la binaria. Si no es
necesario representar el nmero en binario con 16 bits, se pueden quitar los dos de ms peso que
valen 0. El resultado es: 11111000101011. Ntese que si el dgito hexadecimal con valor 2 se
hubiera representado con dos bits, 10, el resultado, 111110101011, sera incorrecto.
Utilidad del hexadecimal.
La facilidad de paso entre las representaciones binario y hexadecimal, en ambos sentidos, sin tener que
realizar operaciones aritmticas (la codificacin binaria de los 16 dgitos hexadecimales es trivial) nos
es til para:
Representar un vector de bits de forma compacta. Nuestro computador trabaja con datos e
instrucciones codificadas en 16 bits. Es ms cmodo y ms fcil que no cometamos errores si
Procedimiento para pasar de hexadecimal a binario Es el mismo que de binario a
hexadecimal pero en sentido contrario. Se pasa cada dgito hexadecimal a binario,
representandolo independientemente con 4 bits. Aunque un dgito hexadecimal
concreto (por ejemplo el 3) se pueda representar con menos de 4 bits (con 2 bits: 11)
es necesario hacerlo con 4 bits (0011), de lo contrario el resultado final ser
incorrecto. Por ltimo, se concatenan los grupos de 4 bits en el mismo orden que los
dgitos hexadecimales que representan. Si la representacin resultante tiene uno, dos
o tres ceros como bits de ms peso, estos se pueden quitar y el valor del nmero no se
modifica.
1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0
H = 93BA
X =
h
3
h
2
h
1
h
0
Fig. 2.4 Ejemplo de paso directo de binario a hexadecimal
2.4
0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1
3E2B
Fig. 2.5 Ejemplo de paso directo de hexadecimal a binario.
9
14 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
decimos, por ejemplo, que el resultado de la suma es 0x3A6D que si decimos que es
0011101001101101. Esto ya se haba dicho.
Para pasar un nmero de muchos dgitos de decimal a binario, si lo pasamos primero a hexadecimal
dividimos por cuatro el nmero de divisiones a hacer. Para pasar de binario a decimal tambin se
puede pasar primero a hexadecimal, si esto nos parece mejor.
10
Representacin de nmeros naturales 15
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejercicios
1. Sistema convencional ( 2.1, nivel B1, seccin 2.2.3)
Dado el vector de dgitos con escribid la expresin del valor
del nmero natural que representa ese vector en el sistema convencional en base k.
2. Rango en el sistema convencional ( 2.2, nivel B1, seccin 2.2.5)
Expresar el rango de los nmeros naturales que se pueden representar con n dgitos en el sistema de
numeracin convencional en base b, para los siguientes casos:
a) n = 6, b = 10; b) n = 10, b = 2; c) n = 3, b = 16; d) n = 4, b = 8.
3. Extensin de rango en el sistema convencional ( 2.3, nivel B1, seccin 2.2.6)
Para cada una de las siguientes representaciones de nmeros naturales en el sistema convencional
en base b, obtened su representacin en la misma base pero con 3 dgitos ms: a) 346 (b = 10); b)
01010 (b = 2); c) 0F1A7 (b = 16); d) 346 (b = 16).
4. De binario a decimal ( 2.4, nivel B2, seccin 2.3.1) .
Expresad en decimal el valor de los siguientes nmeros que se dan representados en binario, X =
1011, Y = 11011100, Z = 0011000111110101.
5. De hexadecimal a decimal ( 2.4, nivel B2, seccin 2.3.1)
Para cada una de las siguientes representaciones de nmeros naturales en el sistema hexadecimal,
con , indicad el valor del nmero natural representado,
H
u
(usando para ello el sistema decimal, como es usual): a) 3A0F, b) 07CB, c) 346, d) 101.
6. De decimal a binario( 2.4, nivel B2, seccin 2.3.2)
Obtener la representacin en binario de los siguientes nmeros naturales que representamos en
decimal como: a) 135, b) 1025, c) 99, d) 078.
7. De decimal a hexadecimal ( 2.4, nivel B2, seccin 2.3.2)
Obtener la representacin en hexadecimal de los siguientes nmeros naturales que representamos
en decimal como: a) 3245, b) 221, c) 999, d) 1026
8. De binario a hexadecimal( 2.4, nivel B2, seccin 2.3.3)
Obtener la representacin en hexadecimal de los siguientes nmeros naturales que representamos
en binario como: a) 100110101, b) 11111011, c) 11110, d) 1011001011101
9. De hexadecimal a binario ( 2.4, nivel B2, seccin 2.3.2)
Obtener la representacin en binario de los siguientes nmeros naturales que representamos en
hexadecimal como: a) DE04, b) 110, c) 00F, d) 8217AB
10. De decimal a binario y a hexadecimal ( 2.4, nivel B2, seccin 2.3.2)
Q q
7
q
6
= q
2
q
1
q
0
q
i
0 ..., k-1 , { }
Q
u
H h
k 1
h
k 2
= h
2
h
1
h
0
h
i
0 ...,15 , { }
16 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Obtened el vector X de 8 bits que representa en binario cada uno de los siguientes nmeros natura-
les (expresad X tambin en hexadecimal). Indicad los casos en que el nmero no pueda represen-
tarse en binario con 8 bits: X
u
= 35, Y
u
= 79, Z
u
= 145, W
u
= 284.
Circuitos lgicos combinacionales 1
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3 Circuitos lgicos combinacionales
Juan J. Navarro
Toni Juan
Primera versin: 07-2007; versin actual: 09-2010
En este captulo estudiamos lo que consideramos imprescindible sobre circuitos combinacionales para
entender el diseo del computador que vamos a crear paso a paso en este curso.
Como introduccin al tema, en la seccin 3.1 definimos qu es un circuito combinacional y
formulamos un modelo para facilitar su estudio. Aqu aparecen los conceptos de variable lgica,
funcin lgica y tabla de verdad. Tambin presentamos las puertas lgicas Not, And y Or, que son los
circuitos combinacionales ms simples con los que vamos a construir el computador y, finalmente,
damos las reglas de interconexin de dispositivos combinacionales para que el resultado sea un circuito
combinacional vlido. En la seccin 3.2 obtenemos la especificacin funcional de circuitos
combinacionales formados por puertas lgicas (anlisis) y en la seccin 3.3 tratamos el problema
inverso, dada una especificacin funcional deseada obtenemos el esquema del circuito que la
implementa (sntesis). En la 3.4 completamos el modelo de circuito combinacional, hacindolo ms
realista: consideramos el tiempo de propagacin de las seales al atravesar los dispositivos del circuito.
Por ltimo, en el Apndice I definimos el lgebra de Boole, una herramienta matemtica que nos puede
ayudar en el anlisis y sobre todo la sntesis eficiente de circuitos combinacionales (este apndice no
est disponible todava).
3.1 Introduccin
3.1.1 Circuito Lgico Combinacional
Como vimos en el tema 1, un computador es capaz de comunicar, almacenar y procesar informacin
digital. Los circuitos lgicos combinacionales son los circuitos encargados de procesar las seales
elctricas binarias, que son las que codifican la informacin.
2 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Definicin
El elemento caracterstico de los circuitos combinacionales es que no tienen memoria. Por ejemplo, el
circuito interno del dispositivo o bloque f, que se muestra en la figura 3.1, est diseado de forma que
para cualquier instante de tiempo, t
1
, en el que seales de entrada x(t
1
) e y(t
1
) valgan respectivamente
5 y 0 voltios, la seal de salida en ese mismo instante, w(t
1
) valga 5 voltios; y esto es siempre as,
independientemente del valor de las entradas en cualquier momento anterior a t
1
.
Cronograma
Esto se muestra en la figura 3.1, mediante un cronograma: un grfico que indica el voltaje (eje
vertical) que toma la seal de salida a lo largo del tiempo (eje horizontal) como respuesta a variaciones
temporales concretas de los valores de las seales de entrada. Este cronograma tambin nos indica que,
para este circuito concreto, cuando las dos entradas valen 0 voltios la salida tambin vale 0 voltios, lo
que ocurre al principio y al final del intervalo de tiempo mostrado. Tambin se ve que cuando las dos
seales de entrada tienen 5 voltios la salida es de 0 voltios, sin importar los valores anteriores de las
entradas.
Denominamos circuito lgico combinacional (CLC) a un circuito lgico (las seales
que entran al circuito y las que salen de l son binarias) en el que el valor de cada una
de sus seales de salida en cada momento es funcin nicamente de lo que valen sus
entradas en ese preciso momento (respuesta instantnea -sin retardo
a
- y sin
memoria). Esto es, a cada combinacin de valores concretos de las entradas le
corresponden siempre unos mismos valores concretos de las salidas, con
independencia del instante de tiempo en el que se den estos valores en las entradas y
con independencia de los valores que hayan tenido las entradas en momentos
anteriores.
a. Como veremos en la seccin 3.4, en un circuito combinacional real s que hay un retardo entre
el cambio de una entrada y lo que tarda en reaccionar la salida, o las salidas, a ese cambio. Pero
de momento vamos a considerar que el retardo es 0.
3.1
Fig. 3.1 Circuito combinacional f con dos entradas (seales x(t) e y(t)) y una salida (w(t)).
Cronograma y tabla que define el funcionamiento del circuito.
f
y(t) x(t)
w(t)
f
y(t) x(t)
w(t)
0v
5v
5v
t
x(t)
t
y(t)
t
w(t)
0v
5v
5v
Respuesta instantnea
Sin memoria
x(t) y(t) w(t)
0v
0v
5v
5v
0v
5v
0v
5v
0v
0v
5v
0v
Circuitos lgicos combinacionales 3
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Lo que no muestra el cronograma es el comportamiento del circuito cuando la entrada x(t) vale 0
voltios y la y(t) vale 5. Un cronograma muestra el comportamiento del circuito ante un comportamiento
temporal concreto de las seales de entrada, pero no tiene porqu mostrarlo para todas las posibles
combinaciones de los valores de las entradas (no tiene porqu ser una descripcin exhaustiva,
completa, del funcionamiento del circuito).
Por todo lo dicho, el funcionamiento de un circuito (dispositivo o bloque) combinacional se puede
especificar mediante una tabla que indique, para cada combinacin de los posibles valores de las
seales de entrada, qu valor toman cada una de las salidas. La tabla junto al cronograma de la
figura 3.1 indica el comportamiento completo del circuito combinacional f incluido el valor de la salida
para x = 0 voltios e y = 5, que no apareca en el cronograma.
Modelo matemtico. Variables y funciones lgicas
Para comprender, analizar, disear, sistemas complejos como son los computadores, los ingenieros
idean modelos matemticos que simplifican la realidad para hacerla ms manejable. Segn el aspecto
de la realidad que se desee trabajar se usa un modelo u otro. Aqu presentamos el modelo usado para
facilitar el anlisis y la sntesis de circuitos combinacionales.
Como la respuesta de los circuitos combinacionales es instantnea en el tiempo y sin memoria, cuando
trabajamos con este tipo de circuitos slo nos importa el valor de todas las seales elctricas del
circuito en un determinado instante, pero no nos importar cul es ese instante. As, en vez de hablar de
seales elctricas que varan en el tiempo, como x(t), hablamos de variables matemticas, como x, en la
que desaparece la idea de tiempo. Adems, como los dos niveles de voltaje que pueden tomar las
seales digitales binarias dependen de la tecnologa usada en la implementacin del circuito (por
ejemplo, 0 voltios y 5 voltios en TTL y 0 voltios y 3.1 en algunas tecnologas CMOS), para ser
independientes de la tecnologa decimos que las variables matemticas que modelan a las seales
elctricas binarias pueden tomar nicamente dos posibles valores, denominados 0 y 1. Por ello, a cada
una de estas variables matemticas se la denomina variable lgica binaria o simplemente variable
lgica. As que en muchos casos no hablaremos de la seal elctrica x(t) sino de la variable lgica x.
Cada seal elctrica de salida del circuito tiene, en cada momento, uno de los dos posibles valores de
voltaje, dependiendo del voltaje que tienen las entradas en ese mismo momento. Esto mismo, dicho con
la nomenclatura del modelo matemtico que estamos construyendo se dice as: cada variable lgica de
salida de un circuito lgico combinacional es funcin de las variables lgicas de entrada. Este tipo de
funcin se denomina funcin lgica. As, el comportamiento de un circuito combinacional se define
mediante tantas funciones lgicas como seales de salida tiene el circuito. Cada funcin define el valor
(0 o 1) que toma una variable de salida para cada una de las posibles combinaciones de valores de las
variables de entrada. La figura 3.2 muestra estos conceptos para un circuito combinacional muy
simple, con slo dos entradas y una salida. Ahora, a la tabla que define el comportamiento del circuito
se la denomina tabla de verdad y formula tantas funciones lgicas como salidas tiene el circuito. La
tabla de verdad indica el comportamiento lgico de un circuito combinacional
1
.
1. No obstante, la tabla de verdad no es un modelo completo para un circuito combinacional real. Hay otras caractersticas que
no quedan plasmadas en la tabla de verdad, como por ejemplo los tiempos de retardo de cada entrada a cada salida (que estu-
diamos en la seccin 3.4), la potencia consumida por el circuito, etc.
3.1
3.1
4 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Tabla de verdad
La tabla de verdad indica el valor que toma cada variable lgica de salida de un
circuito combinacional para cada uno de los posibles valores de las variables de
entrada. Una tabla de verdad tiene una columna para cada entrada al circuito (para
cada variable lgica de entrada) y una columna para cada salida (para cada variable
lgica de salida). La tabla de verdad tiene una primera fila de cabecera, donde se
especifica el nombre de las variables de cada columna. Adems de la cabecera, tiene
una fila para cada una de las posibles combinaciones de valores que pueden tomar
las entradas.
a
En general, si tenemos un circuito combinacional con n variables de entrada
ordenadas de alguna forma, por ejemplo: x
n-1
, x
n-2
,, x
2
, x
1
, x
0
, la tabla de verdad
tiene 2
n
filas, que son las posibles combinaciones distintas de n elementos pudiendo
tomar cada uno de ellos 2 valores distintos.
Por convenio, las filas de una tabla de verdad se ordenan de arriba abajo,
comenzando por la fila 0, como sigue. La fila i es la que corresponde a la
combinacin de valores de las entradas que representan el valor i, suponiendo que las
variables de entrada son los dgitos de un vector de bits que representa el nmero
natural i codificado en binario. Esto es as aunque cada variable de entrada
represente algo que nada tenga que ver con el dgito de un nmero binario
b
.
a. Por ejemplo, si el circuito tiene solamente 1 entrada, la tabla de verdad tiene 2 filas, una para el
valor 0 de la entrada y otra para el 1. Si el circuito tiene dos entradas denominadas, por ejemplo
x e y, la tabla de verdad tiene 4 filas: una para la combinacin de entradas x=0 e y=0, otra para
la combinacin x=0 e y=1, otra para x=1 e y=0 y la ltima para x=1 e y=1.
b. Por ejemplo, si tenemos 3 variables de entrada ordenadas como a, b y c, la fila 6 corresponde a
los valores de las variables de entrada a=1, b=1 y c=0, ya que el 6 se codifica en binario como
110.
Seales elctricas binarias
x(t), y(t), w(t)
Variables lgicas
x, y, w {0, 1}
w(t) = f (x(t), y(t)) w = f (x, y)
funcin lgica
f
y(t) x(t)
w(t)
f
y x
w
Fig. 3.2 Modelo lgico de un circuito combinacional: variable lgica, funcin lgica.
3.1
Circuitos lgicos combinacionales 5
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La figura 3.3 muestra, a modo de ejemplo, el smbolo de un circuito con 3 entradas (a, b, c) y 2 salidas
(w
1
y w
0
) y su tabla de verdad, que define las funciones lgicas w
1
(a, b, c) y w
0
(a, b, c).
3.1.2 De la descripcin funcional a la tabla de verdad
A veces tenemos que resolver un problema mediante un circuito combinacional del que no nos dan su
tabla de verdad, sino que nos dan una descripcin funcional de su comportamiento. Esta descripcin
relaciona, de manera ms o menos formal, las salidas y las entradas mediante un texto explicativo y/o
expresiones algebraicas y/o un fragmento de cdigo en un pseudolenguaje de alto nivel, etc. La
descripcin puede completarse con figuras aclaratorias. En estos casos primero debemos encontrar la
tabla de verdad del circuito a partir de la descripcin funcional y despus pasamos de la tabla de verdad
al esquema lgico del circuito mediante alguna de las tcnicas que veremos en la seccin 3.3. Veamos
dos ejemplos de circuitos combinacionales que hacen cosas muy distintas.
Ejemplo 1 Control de llenado de un depsito
En la figura 3.4 se muestra la caja que representa un circuito combinacional con 3 entradas y 1
salida para controlar el llenado automtico de un depsito para el consumo de agua. La entrada x
viene de un reloj y vale 1 durante el da y 0 durante la noche. Las entradas y y z vienen de dos
sensores colocados dentro del depsito, en la parte superior e inferior respectivamente. Cada seal
indica con el valor 1 qu el sensor est cubierto de agua y con 0 que no lo est. La salida del circuito
controla una bomba de agua, cuando w vale 1 se bombea agua de un pozo para llenar el depsito y
Para pasar de la descripcin funcional de un circuito a su tabla de verdad no hay un
mtodo sistemtico de hacerlo. Depende de la funcionalidad concreta, de cmo est
expresada, etc. Se trata de cambiar la manera de como se representa el
funcionamiento del circuito, de un texto ms o menos informal, por ejemplo, a una
tabla de verdad, que es una representacin formal que indica de manera exhaustiva el
valor lgico de cada salida para cada uno de los posibles valores de las entradas. Esto
lo aprenderemos haciendo ejemplos.
Fig. 3.3 Tabla de verdad de un circuito lgico combinacional, CLC, con 3 entradas y 2 salidas.
CLC
a
b
w
0
c
w
1
b c w
1
0
0
1
1
0
1
0
1
0
0
0
1
w
0
0
1
1
0
a
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
1
1
1
Fila 0
Fila 7
1
3.2
6 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
cuando vale 0 no. El agua del depsito se va consumiendo de forma irregular durante las 24 horas
del da (la salida de aqua no se muestra en la figura). Incluso en caso de mximo consumo, el flujo
de salida de agua es menor que el se entrada si la bomba est accionada. Se desea que siempre haya
agua en el depsito para poderla consumir, pero a poder ser, accionando la bomba por la noche para
ahorrar dinero, ya que la tarifa nocturna de electricidad es ms barata que la diurna.
A partir de esta descripcin del sistema debemos obtener la tabla de verdad del circuito. Primero
creamos la estructura de la tabla. Ponemos la fila de cabecera con las variables de entrada,
ordenadas sin ningn criterio especfico y despus la variable de salida, como se ve en la
figura 3.5a.
Ahora podemos ir dando valor a la salida para cada una de las filas de la tabla. Podemos plantearnos
las situaciones por las que puede pasar el sistema y razonar qu tiene que valer la salida para cada
caso. Una situacin trivial es que cuando el depsito este completamente lleno, hay que dejar de
bombear agua para evitar que se derrame, y esto independientemente de que sea de da o de noche.
Esto es cuando (x, y, z) valen (1, 1, 1) y (0, 1, 1) la salida w debe valer 0. Otra situacin cuya
respuesta tambin es independiente de que sea de da o de noche (la respuesta es la misma tanto si x
vale 1 como si vale 0) es cuando no queda apenas agua y las dos entradas y y z valen 0: en este caso
hay que bombear agua y para ello w ha de valer 1. Las 4 filas de la tabla que cubren las dos
situaciones que acabamos de tratar se han marcado en la tabla de verdad de la figura 3.5b.
Qu debe hacerse cuando el depsito no est en ninguna de las dos situaciones lmite que
acabamos de tratar (por ejemplo como se ve en la figura 3.4)? Esta situacin se da cuando y vale 0
y z vale 1. En este caso, como no hay peligro inmediato de quedarnos sin agua, si es de da (x = 1)
no vamos a dar la orden de bombear agua (w = 0), para ahorrar electricidad. Pero si es de noche (x
= 0) s vamos a bombear agua (w = 1), ya que la electricidad es ms barata. Las dos filas de la tabla
para esta situacin se ha sombreado en la figura 3.5c.
Fig. 3.4 Sistema de control del llenado de un depsito.
x
y
z
w
y z
0
0
1
1
0
1
0
1
w
1
1
x
0
x
0
0
0
0
0 0 1 1
0 1 0 1
1 0 x 1
1 1 0 1
y z
0
0
1
1
0
1
0
1
w x
0
0
0
0
0 0 1
0 1 1
1 0 1
1 1 1
y z
0
0
1
1
0
1
0
1
w
0
x
0
0
0
0
0 0 1
0 1 1
1 0 1
1 1 0 1
y z
0
0
1
1
0
1
0
1
w
1
1
0
x
0
0
0
0
0 0 1 1
0 1 0 1
1 0 1
1 1 1 1
a) b) c) d)
1
1
Fig. 3.5 Proceso de construccin de la tabla de verdad del ejemplo 1.
Circuitos lgicos combinacionales 7
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ya solo quedan dos filas por completar, una para el da y otra para la noche. En este caso los
sensores nos dicen que hay agua en la parte superior del depsito y que no la hay en la parte inferior.
Pero, esta situacin es imposible! (a no ser que los sensores se hayan estropeado). En este caso,
como en el enunciado no nos dicen nada de qu hacer en situaciones anmalas, consirederamos que
es imposible que las entradas (x, y, z) valgan (0, 1, 0) o (1, 1, 0). En estos casos decimos que no
importa lo que valga la salida, ya que nunca se daran estas combinaciones de valores de las
entradas. Al rellenar la tabla de verdad nosotros pondremos una cruz (x) en las salidas cuyo valor
puede ser tanto 0 como 1 (tambin se suelen usar el guin, -, o la letra d para estas salidas). La tabla
final completa se ve en la figura 3.5d, con estas dos filas marcadas. Cuando se implemente el
circuito (ver ejemplo 9) se har de forma que la salida sea 0 cuando la tabla dice que puede ser 0 o
1, porque esto es lo ms econmico en el tipo de implementacin que vemos en la seccin 3.3.
Ejemplo 2 El multiplexor
Vamos a obtener la tabla de verdad de un dispositivo (bloque
combinacional) que ms adelante usaremos para formar dispositivos ms
complejos, llamado multiplexor. Lo denotamos como Mx-2-1 porque
tiene dos entradas de datos (x
1
, x
0
) y una salida, w. Adems tiene una
entrada de seleccin s. El smbolo del Mx-2-1 se muestra al margen.
La especificacin del comportamiento del circuito puede hacerse mediante el siguiente texto. La
entrada de seleccin s indica qu entrada, x
0
o x
1
, se conecta en cada momento a la salida w.
Cuando s vale 0 la entrada x
0
se conecta a la salida, mientras que cuando s vale 1 se conecta la
entrada x
1
. Este comportamiento se puede ver de forma grfica en los dibujos de la figura 3.6.
De una manera ms formal se puede especificar el comportamiento mediante un lenguaje de
programacin de alto nivel, como el C, por ejemplo, (o cualquier otro pseudolenguaje, en el sentido
de que no hace falta que tenga todo el formalismo de un lenguaje de programacin):
if (s == 0) w = x
0
;
else w = x
1
;


Para encontrar la tabla de verdad primero ponemos la fila de cabecera con las variables de entrada,
ordenadas segn nos parezca ms razonable (o sin ningn criterio) y despus la variable de salida.
Ordenamos las variables como muestra la figura 3.7.a: la variable s a la izquierda, despus x
1
y por
ltimo x
0
. La figura 3.7.b muestra cmo rellenamos las filas correspondientes a s=0, copiando las 4
filas correspondientes de x
0
en la salida w. En la parte c) de la figura mostramos el caso de s=1 y en
la d) la tabla resultante.
Mx
0 1
x
0
x
1
s
w
Mx
0 1
x
0
x
1
s
w
Fig. 3.6 Dos posibles situaciones en las que se puede encontrar un Mx-2-1 en funcin de s.
Mx
0 1
x
0
x
1
s
w
Mx
0 1
x
0
x
1
s
w
x
0
0
x
1
1
w w
8 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Es interesante observar que partiendo de la sentencia if, que indica la salida en funcin de s, ha
resultado muy cmoda la creacin de la tabla de verdad, en la que la variable s ocupa la posicin de
ms a la izquierda. Si probamos a obtener la tabla de verdad ordenando las variables de entrada con
s en otra posicin nos hubiera costado ms tiempo. No obstante, cualquier orden es correcto.
3.1.3 Puertas Lgicas
Definimos ahora los circuitos lgicos ms simples con los que vamos a trabajar, que se denominan
puertas lgicas. Las puertas lgicas tienen muy pocas entradas y slo una salida. Como slo tiene una
salida, podemos decir que una puerta lgica es una implementacin fsica de una funcin lgica.
Usaremos las puertas lgicas como ladrillos para construir poco a poco un gran edificio como es el
computador. Usaremos solamente tres tipos distintos de puertas, las denominadas Not, And y Or, ya
que con ellas se puede implementar cualquier funcin lgica (se dice que es un conjunto completo -
universal- de puertas). No entraremos en cmo se construyen estas puertas con una tecnologa
determinada, pues esto forma parte de un curso de electrnica o de diseo digital ms avanzado.
Definiremos su funcionamiento y asociaremos un smbolo a cada puerta. Usaremos las puertas como
dispositivos para, conectndolos entre s, formar otros circuitos combinacionales ms complejos.
Puertas de una entrada. Cuntas puertas lgicas o funciones lgicas distintas podemos definir que
tengan una sola entrada? La tabla de verdad de una de estas puertas tiene solamente dos filas, una para
especificar el valor de la salida cuando la entrada toma el valor 0 y otra para el valor 1. El nmero de
funciones lgicas distintas de una entrada es el nmero de columnas distintas que sepamos poner con
dos bits por columna, (un bit en cada fila). La respuesta es cuatro ya que cuatro es el nmero de
combinaciones diferentes que pueden tomar dos bits (00, 01, 10 y 11). La figura 3.8 muestra las cuatro
posibles funciones que hemos denominado g
3
, g
2
, g
1
y g
0
.
x
1
x
0
0
0
1
1
0
1
0
1
w
0
1
0
1
s
0
0
0
0
0 0 0 1
0 1 0 1
1 0 1 1
1 1 1 1
x
1
x
0
0
0
1
1
0
1
0
1
w s
0
0
0
0
0 0 1
0 1 1
1 0 1
1 1 1
x
1
x
0
0
0
1
1
0
1
0
1
w
0
1
0
1
s
0
0
0
0
0 0 1
0 1 1
1 0 1
1 1 1
x
1
x
0
0
0
1
1
0
1
0
1
w
0
1
0
1
s
0
0
0
0
0 0 0 1
0 1 0 1
1 0 1 1
1 1 1 1
a) b) c) d)
Fig. 3.7 Construccin, paso a paso, de la tabla de verdad del multiplexor Mx-2-1.
10..13
Fig. 3.8 Tabla con las 4 posibles funciones de una entrada. Smbolo usado para la puerta Not y
notacin algebraica de la operacin Not (que es la funcin g
2
de la tabla).
g
i
x
w
w = g
i
(x)
x
0
1
g
3
1
1
g
2
1
0
g
1
0
1
g
0
0
0
x w
Not
w = !x
Circuitos lgicos combinacionales 9
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
De entre ellas slo la funcin g
2
tiene inters, ya que el resto son funciones triviales. La funcin g
0
tiene la salida siempre igual a 0 independientemente del valor que tome la entrada. Es la funcin
constante 0, que podemos decir que no tiene entrada. Se construye conectando la salida a masa (si el 0
se corresponde con 0 voltios). Lo mismo podemos decir de la g
3
, la funcin constante 1, que se
construye conectando la salida a la tensin de alimentacin (si este voltaje coincide con la
implementacin del 1 lgico). Por ultimo, la g
1
es la igualdad, la salida w es igual a la entrada x, que se
construye con una simple lnea que une la entrada con la salida.
La funcin lgica g
2
se denomina funcin Not, al igual que la puerta que la implementa, puerta Not.
Lo que hace es muy simple: el valor de la salida es el contrario del de la entrada. Esto es, invierte la
seal de entrada, si le llega un 0 saca un 1 y si le llega un 1 saca un 0. El smbolo que usamos para
referirnos a esta puerta, cuando forma parte de un circuito ms complejo, se muestra en la figura 3.8,
junto con la notacin matemtica para expresar la funcin como operacin lgica de una variable (w =
!x) que implementa la puerta.
Puertas de dos entradas. Cuntas funciones lgicas distintas podemos definir que tengan
nicamente dos entradas? La tabla de verdad de una de estas puertas tiene cuatro filas, una para cada
una de las posibles combinaciones de los dos bits de entrada. El nmero de funciones lgicas distintas
de dos entradas es 16 ya que este es el nmero de columnas distintas que podemos poner con cuatro
bits por columna, (un bit en cada fila) (0000, 0001, y 1111). La figura 3.9 muestra las 16 posibles
funciones que hemos denominado f
15
,, f
0
. De entre las 16 hay algunas que son funciones triviales,
como la f
0
, f
10
, f
12
y f
15
. La funcin f
3
es la Not de x y la f
5
es la Not de y, que realmente son funciones
de una entrada, y que ya hemos encontrado antes.
El resto de funciones tienen inters y se usan en el diseo de circuitos lgicos. No obstante, nosotros
usaremos por ahora solamente dos de ellas, la f
8
y la f
14
, que se denominan funciones And y Or como
las puertas de dos entradas que las implementan: puertas And y Or. El smbolo que asignamos a estas
puertas junto con la notacin matemtica ( y +) empleada para expresar las operaciones lgicas sobre
dos variables que implementan, se muestra tambin en la figura 3.9.
Las operaciones lgicas Not, And y Or forman un lgebra de Boole, como se formula en el Apndice I.
Fig. 3.9 Tabla con las 16 posibles funciones lgicas de dos entradas y una salida. Smbolos
usados para las puertas Or y And y notacin algebraica de las funciones Or y And.
f
i
x
y
w
w = f
i
(x, y)
x y
0
0
1
1
0
1
0
1
f
15
1
1
1
1
f
14
0
1
1
1
f
13
1
0
1
1
f
12
0
0
1
1
f
11
1
1
0
1
f
10
0
1
0
1
f
9
1
0
0
1
f
8
0
0
0
1
f
7
1
1
1
0
f
6
0
1
1
0
f
5
1
0
1
0
f
4
0
0
1
0
f
3
1
1
0
0
f
2
0
1
0
0
f
1
1
0
0
0
f
0
0
0
0
0
x
y
x
y
w w
Or
And
w = x + y w = x y
10 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Notacin. En la figura 3.10 se indica entre parntesis alguna notacin alternativa para cada operacin.
Nosotros usamos normalmente la notacin w = !x para referirnos a la Not porque por un lado la
notacin que lleva una lnea encima no se puede hacer con algunos editores y simuladores de circuitos
y por otro, la notacin con un apstrofo se ve poco. Adems, cuando esta decisin no induzca a errores,
no pondremos el punto entre las variables para indicar la operacin And. Igualmente, usaremos el
smbolo + para la operacin Or, y lo indicaremos en negrita cuando pueda inducir a errores, para
diferenciarlo de la suma aritmtica sobre nmeros naturales, enteros o reales. La operacin And se
denomina tambin producto lgico y la Or suma lgica
Las tres puertas bsicas. La figura 3.10 muestra, para cada una de las tres puertas
bsicas: el nombre y el smbolo que le asignamos en nuestra librera de dispositivos
Digit@Lib, la notacin matemtica usada para la operacin lgica que implementa
la puerta y su tabla de verdad. Adems, definimos las puertas con las siguientes
frases.
Not: La salida vale 1 cuando la entrada vale 0.
(la salida vale 0 cuando la entrada vale 1).
And: La salida vale 1 cuando todas las entradas valen 1.
(la salida vale 0 cuando alguna entrada vale 0).
Or: La salida vale 1 cuando alguna entrada vale 1.
(la salida vale 0 cuando todas las entradas valen 0).
3.3
Fig. 3.10 Definicin de las tres puertas bsicas: Not, And y Or.
x
y
x
y
w = x y
(w = x y)
(w = x && y)
And-2
x
y
x
y
w = x + y
(w = x + y)
(w = x || y)
Or-2
x y w
0
0
1
1
0
1
0
1
0
1
1
1
x y w
0
0
1
1
0
1
0
1
0
1
1
1
x y w
0
0
1
1
0
1
0
1
0
0
0
1
xx Not
Nombre Smbolo
Expresin
lgica
Tabla de
verdad
x w
0
1
1
0
w = !x
(w = )
(w =x)
x
w = !x
(w = )
(w =x)
x
2
Circuitos lgicos combinacionales 11
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3.1.4 Conectando circuitos combinacionales entre si
Diseo modular
Vamos a construir un computador sencillo, pero completo, utilizando muy pocos elementos distintos
entre los que se encuentran las tres puertas bsicas Not, And-2 y Or-2, con las que construiremos todos
los circuitos combinacionales. Construir estos circuitos, que pueden llegar a ser muy complejos, puede
ser muy complicado y muy fcil cometer errores. Para evitar estas dificultades seguimos un mtodo de
diseo modular (a bloques), que adems facilita la comprensin del funcionamiento del computador.
Primero diseamos circuitos sencillos, aunque un poco ms complejos que las puertas lgicas bsicas.
Estos circuitos sencillos los construimos directamente conectando puertas lgicas. Para cada uno de
estos circuitos asociamos un smbolo, con sus entradas y salidas. Despus, podremos usar estos
smbolos (dispositivos o bloques) para, conectndolos entre s, construir circuitos un poco ms
complejos. A su vez, a estos circuitos ms complejos, tambin les asociaremos otros smbolos, que
podrn ser usados como dispositivos en otros diseos ms complejos todava.
En un diseo modular como el que seguimos en este curso, es fcil detectar y corregir los errores. Cada
dispositivo se construye con pocos dispositivos de los niveles inferiores. La sencillez del circuito hace
que no sea muy probable que cometamos errores y si los cometemos, es fcil que los detectemos.
Adems, cada dispositivo nuevo se prueba exhaustivamente antes de ser incorporado a la librera de
dispositivos, de forma que cuando es usado para construir otros dispositivos ms complejos, es seguro
que funciona correctamente.
Esquema lgico
La figura 3.11 (parte de la izquierda) muestra el esquema lgico de un circuito combinacional
construido a partir de varias puertas lgicas conectadas entre s. Un esquema lgico es un dibujo que
representa un circuito lgico. Consiste en varios smbolos de dispositivos lgicos unidos por lneas que
especifican las conexiones entre las entradas y salidas de los dispositivos. Por convenio, dos lneas que
se cruzan no estn conectadas excepto que se dibuje un punto en la interseccin. Este esquema,
tambin tiene tres conectores, dos de entrada y uno de salida que hemos etiquetado como x, y y w
(aunque en algunos esquemas no dibujaremos los conectores). A la derecha de la figura se muestra el
smbolo que asociamos al circuito de la izquierda cuando lo usamos como dispositivo en un circuito
ms complejo.
Fig. 3.11 Esquema lgico interno de un dispositivo combinacional formado mediante la
interconexin de varias puertas lgicas y smbolo del dispositivo.
x y
w
CLC
y x
w
12 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Reglas de interconexin de dispositivos para formar circuitos combinacionales
Para construir un circuito combinacional grande a partir de la interconexin de circuitos
combinacionales ms pequeos (dispositivos o bloques) hay que seguir algunas reglas, si queremos
asegurar que el resultado sea un circuito combinacional y que funcione correctamente. Las reglas de
interconexin prohiben tres situaciones que se resumen en la figura 3.12.
1. No se pueden conectar directamente (con una lnea en el esquema lgico) dos o ms salidas de
dispositivos (puertas lgicas u otros dispositivos combinacionales). A nivel elctrico, cuando se
conectan distintos puntos de un circuito, todos estos puntos y las lneas que los conectan quedan con
el mismo voltaje (a nivel lgico decimos que esos puntos tienen el mismo valor, 0 o 1, pero todos el
mismo). Si se conectan directamente las salidas de, por ejemplo, dos puertas puede aparecer un
problema elctrico. Si una puerta est forzando en su salida el valor 0 (por ejemplo 0 voltios) y la
otra est forzando un 1 (por ejemplo 5 voltios) Qu voltaje aparece en la conexin cuando estas
salidas se unen? A nivel elctrico se est produciendo un cortocircuito y los dispositivos podran
dejar de funcionar. A nivel lgico diremos que hay un conflicto.
En el simulador de circuitos LogicWorks, que usamos en las prcticas de este curso, cuando hay un con-
flicto en una seal de un circuito, el simulador le asigna el valor lgico C, que no es ni 0 ni 1, con lo que
podemos detectar el error fcilmente.
Tampoco se pueden conectar directamente dos o ms entradas del circuito que estamos
considerando, ya que las entradas del circuito, cuando este est inmerso en un sistema ms grande,
vendrn de las salidas de otros circuitos y por lo tanto de las salidas de otros dispositivos. As,
conectar dos entradas de nuestro circuito supone conectar las salidas de dos dispositivos de otros
circuitos y eso provoca un conflicto.
2. Todas las entradas de todos los dispositivos del circuito deben tener un valor lgico, 0 o 1, para que
los dispositivos funcionen correctamente y puedan producir en sus salidas tambin valores lgicos
0 o 1. Por ello, cada entrada de cada dispositivo que forma el circuito tiene que estar conectada:
a una entrada del circuito, o
a la salida de otro dispositivo del circuito, o por ltimo
tener un valor constante fijado a 0 o a 1.
Si la entrada de un dispositivo esta al aire, a nivel elctrico se dice que est en alta impedancia, y
el valor lgico que tiene, 0 o 1, depende de la tecnologa. Como estamos usando un modelo
independiente de la tecnologa, consideramos prohibido dejar una entrada en alta impedancia. Si
por descuido en un esquema dejamos la entrada de un dispositivo al aire, no podemos saber el valor
lgico de la entrada y por lo tanto tampoco podemos saber el valor lgico de las salidas del
dispositivo (excepto en algunos casos, como se indica ms adelante).
En el simulador LogicWorks se denota con una Z el valor de una entrada al aire y con una X el de la
salida de un dispositivo que no puede calcular su valor lgico ya que tiene al menos una entrada con
valor C, Z o X.
1
0
1
1
C
1
X
0,1,0... 1,0,1...
Z
Fig. 3.12 Tres situaciones prohibidas al interconectar dispositivos combinacionales para formar
otros circuitos combinacionales ms complejos y notacin C, Z y X.
Circuitos lgicos combinacionales 13
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3. No pueden aparecer ciclos, caminos cerrados, en el esquema del circuito. No se debe poder crear un
camino que pasando a travs de dispositivos llegue al mismo sitio de donde sali. Pasar a travs de
un dispositivo quiere decir entrar al dispositivo por una entrada y salir por una salida. Si en un cir-
cuito hay un camino cerrado puede ocurrir que los valores lgicos en el camino,
no se estabilicen, sino que oscilen y que vayan cambiando de valor ininterrumpidamente (lo
que se muestra en la figura 3.12), o bien que
se estabilicen y entonces se forma un elemento de memoria
1
.
En la figura 3.13 se muestran los esquemas lgicos de algunos circuitos. Para dar valor lgico a algunas
entradas hemos usado un conmutador binario (binary switch) que simula un conmutador que pone a su
salida un 0 o un 1 y lo mantiene mientras no se pulse. Para ver el valor de algunos puntos del circuito y
de las salidas hemos conectado un visor binario (binary probe), que nos muestra un 0, 1, Z, C o X,
segn sea el caso.
El circuito a) es vlido, pues cumple con las tres reglas. El b) no es vlido, se viola la regla 1, ya que se
han conectado las dos salidas de las puertas And. Se produce un conflicto en este punto, por lo que el
visor muestra una C. A la salida de las puertas Not parece una X pues no podemos saber el valor de la
1. En general, si hay memoria en el circuito las salidas en un momento dado ya no dependen de las entradas al circuito en ese
momento sino que dependen de la secuencia de valores que llegaron por las entradas desde que empez a funcionar el cir-
cuito. Esto ya no es un circuito combinacional, es un circuito secuencial, que estudiaremos en el captulo 5.
a)
b)
c) d)
0
1
0
1
0
1
0
1
0
1
0
0
1
X 0
1
Z
Z
C
C
0
1
0
1
0
1
0
1
X
0
1
1 0
1
Z
Z
X
X
0
X
1
1
X
0
Fig. 3.13 Esquemas lgicos de cuatro circuitos. El a es el nico correcto.
14 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
entrada de la puerta. El circuito c) no es vlido, se viola la regla 2, ya que no se ha dado valor a una de
las entradas de la puerta And. No obstante, en la situacin primera, aunque una entrada no tenga valor
se puede saber el valor de la salida de la puerta And, ya que la otra entrada tiene valor 0 y la And
produce un 0 en la salida siempre que una entrada vale 0 independientemente del valor de la otra
entrada. No podemos decir lo mismo del segundo caso, en que la entrada con valor lgico tiene un 1. El
circuito d) tampoco es vlido por el mismo motivo que el c).
Ejemplo 3
La figura 3.14 muestra, a modo de ejemplo, el esquema lgico de un CLC con 3 entradas (x, y, z) y
dos salidas (w1, w0). El circuito est formado por la interconexin vlida de varias puertas Not,
And y Or. Observad que se cumplen las tres reglas que producen un circuito combinacional vlido.
Un esquema lgico formado por la interconexin de puertas lgicas y otros
dispositivos combinacionales es vlido para especificar un circuito combinacional
si se cumplen las tres reglas siguientes.
1. No existe ninguna conexin directa entre dos o ms salidas de dispositivos
(puertas lgicas u otros dispositivos combinacionales). Tampoco se pueden
conectar directamente dos o ms de las entradas del circuito.
2. Cada entrada de cada dispositivo que forma el circuitoesta conectada:
a una entrada del circuito, o
a la salida de otro dispositivo del circuito, o por ltimo
a un valor constante fijado a 0 o a 1.
3. No hay ciclos, caminos cerrados, en el esquema del circuito.
3.4
x y
w0
z
w1
Fig. 3.14 Ejemplo de circuito combinacional correcto formado mediante la interconexin de
puertas lgicas.
3
Circuitos lgicos combinacionales 15
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3.2 Anlisis de circuitos combinacionales
Ya sabemos qu no tiene que ocurrir en el esquema de un circuito formado por puertas u otros
dispositivos conectados entre si para que resulte un combinacional vlido. Pero, una cosa es saber esto
y otra es saber qu dispositivos hay que conectar y cmo para que el circuito implemente la funcin
que deseamos. El proceso de pasar de una descripcin funcional al esquema del circuito se denomina
sntesis y lo estudiamos ms adelante en este captulo. El proceso contrario es el anlisis, que vemos a
continuacin. El anlisis es importante para entender un circuito diseado por otros y es til para
comprobar que el circuito que hemos diseado hace lo que queramos.
3.2.1 Anlisis: creando la tabla de verdad por filas
El anlisis lgico
1
de un circuito combinacional consiste en saber qu hace el circuito. Una forma de
saberlo consiste en obtener su tabla de verdad. Esto es lo que hacemos cuando el circuito tiene pocas
entradas
2
y una forma de hacerlo es la siguiente.
Vamos a obtener la tabla de verdad del circuito de la figura 3.15. En la figura se indica, sobre un fondo
gris, el valor lgico de las salidas de cada puerta para x=0 e y=0. El orden de avance por el circuito es:
primero las puertas Not, luego las And y por ltimo la Or, cuya salida es la del circuito, que vale w=0.
Este valor 0 se escribe en la fila 0 de la tabla de verdad (que corresponde al valor de la salida para los
valores de las entradas x=0 e y=0).
Procediendo as para cada una de las filas se completa la tabla. Sobre las lneas/conexiones del
esquema de la figura 3.16, a la derecha de los valores con fondo gris que acabamos de ver se indican
los valores de las variables para las entradas x=0 e y=1, a la derecha de estos los de las entradas x=1 e
y=0 y por ltimo los de x=1 e y=1.
1. Pueden analizarse otros aspectos del circuito, como la potencia consumida, el coste del circuito etc. No obstante, los nicos
anlisis que hacemos en este curso son el anlisis lgico, en esta seccin, y el anlisis temporal, que veremos en la seccin
3.4. Si hablamos de analizar el circuito, omitiendo el calificativo, nos referimos a anlisis lgico.
Del esquema lgico a la tabla de verdad: por filas. Para cada combinacin de las n
variables de entrada del circuito, debemos obtener el valor que toman cada una de las
salidas de cada dispositivo/puerta del circuito (algunas de estas salidas sern las
salidas del circuito, que son las que realmente nos interesan). Para saber el valor de
una salida de un dispositivo hay que conocer, adems de su tabla de verdad, el valor
de todas sus entradas. Esta regla nos marca el orden en que podemos conocer los
valores de las salidas de los dispositivos. Por ello, atravesamos 2
n
veces el circuito
(una por cada combinacin de entrada, por cada fila de la tabla de verdad) desde las
entradas hasta las salidas, calculando el valor de las salidas de cada dispositivo por el
que pasamos, en el orden que nos indica la regla anterior.
2. En el tema 5 consideramos el caso de circuitos combinacionales de muchas entradas y salidas (por ejemplo, 32 entradas)
donde no es posible escribir su tabla de verdad, ya que tendra muchas filas (2
32
filas, en el ejemplo).
3.5
4
16 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La tabla de verdad resultante es la funcin f
6
de la figura 3.9 que se denomina Xor y este esquema es una
posible implementacin interna de la puerta con dos entradas Xor-2, cuyo smbolo se muestra en la
figura 3.16. La salida de la Xor vale 1 cuando las dos entradas tienen distinto valor lgico. Esta puerta es
muy til en el diseo del sumador y restador que usaremos en la construccin del computador.
3.2.2 Anlisis: creando la tabla de verdad por columnas
El anlisis que acabamos de hacer es un poco pesado: simplemente con 5 entradas, en vez de las 2 del
ejemplo anterior, el trabajo se multiplica por 8 (hay que dar 32 pasadas sobre el esquema del circuito).
Veamos otra forma ms rpida de encontrar la tabla de verdad, usando como ejemplo el de la
figura 3.17.
0
0
0
1
0
1
x y w
0
0
1
1
0
1
0
1
0
x
y
0 0
0
w
a
b
c
d
Fig. 3.15 Anlisis de un circuito para obtener la fila 0 de la tabla de verdad.
0
0
0
1
0
1
x y w
0
0
1
1
0
1
0
1
0
1
1
0
x
y
0 0 1 1
0 1 0
0 0 1 1
0 1 0
1 0 0
1 0 0
1 0 1 0 1 0 1
1 0
w
1
a
b
c
d
Fig. 3.16 Anlisis de un circuito creando la tabla de verdad por filas. Puerta Xor-2
Circuitos lgicos combinacionales 17
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Primero creamos las cabeceras de una tabla de verdad con las entradas del circuito, x e y, y rellenamos
las dos columnas con las combinaciones de 2 bits en el orden estndar. A continuacin ponemos la
cabecera de las variables internas (las salidas de los dispositivos/puertas que no son salidas del circuito)
a, b, etc. y de la salida del circuito, w (una columna para cada variable lgica). En la figura 3.17 se
muestra esto y adems, para mayor claridad, para cada variable se indica su expresin lgica en
funcin de las variables de entrada de la puerta que la genera. Por ejemplo, la variable a es igual a xy y
la variable de salida w es !e.
Vamos a completar esta tabla por columnas. Para ello solamente hay que saber la tabla de verdad de las
puertas/dispositivos que aparecen en el esquema: Not, And-2 y Or-2. Podemos comenzar por la
columna a, b o c, ya que estas variables slo dependen de las entradas x e y (a=xy, b=!x y c=!y),
cuyos valores conocemos a priori. Pero no podemos completar la columna d, por ejemplo, hasta que no
tengamos competa la b y la c, ya que d=bc.
Por ejemplo, para completar la columna b slo tenemos que copiar la columna x de la tabla de verdad
pero cambiando ceros por unos y unos por ceros, ya que b=!x. Lo mismo ocurre para la columna c,
pero negando la columna y. La columna d, que ya podemos completar despus de tener la b y la c, se
rellena avanzando hacia abajo haciendo la operacin And lgica de cada pareja de bits de las columnas
b y c (de arriba abajo: 11=1, 10=0, 01=0 y 00=0).
As se procede, columna a columna, hasta obtener la columna de la salida. La tabla completa y el
resultado del anlisis (con slo la columna de salida, w) se muestran en la figura 3.18.
Es interesante observar que aunque el circuito de la figura 3.17 es distinto del de la figura 3.16, ambos
tienen la misma tabla de verdad. Se dice que son circuitos equivalentes: tienen el mismo comporta-
miento lgico, pero estn construidos de distinta forma. En el Apndice I se habla de esto.
Fig. 3.17 Circuito a analizar y estructura de la tabla de verdad para el anlisis por columnas.
a
b
e
x y
d
w
c
x y
0
0
1
1
0
1
0
1
a
xy
d e w
bc a+d !e
b
!x
c
!y
Fig. 3.18 .Tablas de verdad resultantes del anlisis por columnas.
x y
0
0
1
1
0
1
0
1
a
0
0
0
1
xy
d
1
0
0
0
1
0
0
1
e
0
1
1
0
w
bc a+d !e
b
1
1
0
0
!x
c
1
0
1
0
!y
x y
0
0
1
1
0
1
0
1
0
1
1
0
w
18 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 4 Anlisis lgico por columnas
A partir del esquema del circuito combinacional de la figura 3.19 obtenemos su tabla de verdad
procediendo por columnas. La solucin se muestra en la misma figura. Cada variable interna se ha
nombrado con su expresin lgica en funcin de las entradas del circuito. Las columnas se han
dispuesto para que puedan rellenarse de izquierda a derecha. La tabla de verdad resultante coincide
con la del anlisis por filas que se hizo de este mismo circuito en la seccin 3.2.1: puerta Xor-2
Del esquema lgico a la tabla de verdad: por columnas. Primero creamos el
esqueleto de una tabla de verdad que luego rellenaremos:
a) Damos un nombre distinto a cada una de las variables internas del circuito
(cada salida de cada dispositivo/puerta que no sea salida del circuito).
b) Creamos las cabeceras de una tabla de verdad con una columna por cada
entrada y por cada variable interna y de salida del circuito.
c) Rellenamos las columnas de entrada con los valores estndar.
Ahora ya podemos rellenar de una en una cada columna de la tabla. Rellenar una
columna, que representa una variable de salida de un dispositivo, consiste en
encontrar el valor de la variable para cada uno de los valores de las entradas del
circuito (cada fila de la tabla de verdad que estamos construyendo). Para ello,
simplemente hay que conocer, adems de la tabla de verdad del dispositivo, el valor
lgico de todas las entradas del dispositivo para todas las filas de la tabla que
estamos construyendo. Esto nos marca un cierto orden a la hora de ir rellenando las
columnas: antes de rellenar una columna de salida de un dispositivo/puerta hay que
haber rellenado las columnas de todas sus entradas. As se procede hasta obtener
todas las columnas de salida del circuito, que son el resultado del anlisis.
3.5
Fig. 3.19 Circuito y tabla de verdad resultante del anlisis por columnas del ejemplo 4.
x y
0
0
1
1
0
1
0
1
x!y
0
0
1
0
!xy
0
1
0
0
0
1
1
0
w !y
1
0
1
0
!x
1
1
0
0
x y
w
!xy
x!y
!x
!y
5
Circuitos lgicos combinacionales 19
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3.3 Sntesis de circuitos combinacionales
3.3.1 Definicin
La sntesis de un circuito combinacional consiste en obtener el esquema lgico del circuito a partir de
una especificacin de su comportamiento. De momento partimos de la especificacin del circuito
mediante su tabla de verdad y obtenemos un circuito formado por puertas lgicas Not, And y Or que
sigue una estructura general que se denomina en suma de minterms.
Mas adelante ampliamos las posibilidades de sntesis. Por un lado, podremos partir de una especificacin
del comportamiento del circuito diferente de la tabla de verdad: mediante un texto explicativo, un
pseudo-lenguaje de alto nivel, etc. (seccin 3.1.2). Por otro lado, podremos obtener el circuito resultante
usando bloques combinacionales: mediante un decodificador y puertas Or (seccin 3.3.5) o mediante
una nica memoria ROM (seccin 3.3.6).
3.3.2 Caso sencillo de sntesis en suma de minterms
Para empezar vamos a encontrar el esquema lgico de un circuito muy sencillo, con slo dos entradas y
una salida, como el que se especifica en la figura 3.20. El mtodo de sntesis que vamos a seguir tiene
dos pasos.
El primer paso consiste en sintetizar las funciones minterm necesarias para implementar la tabla de
verdad: nivel de puertas And. Una funcin minterm es una funcin lgica que vale 1 solamente para
una nica combinacin concreta de las entradas, para todas las dems combinaciones vale 0. Dicho de
otra forma, una funcin minterm slo tiene un 1 en la columna de salida de su tabla de verdad.
Dependiendo de en qu fila est el 1 se definen las distintas funciones minterm. La funcin minterm 0,
que denominamos m
0
, tiene el 1 en la fila 0 de la tabla de verdad, la m
1
en la fila 1, y as
sucesivamente.
As, para circuitos de dos entradas, por ejemplo x e y, existen 4 posibles funciones minterm. El
minterm ms trivial de sintetizar es el minterm 3, que como se ve en la tabla de verdad de la figura 3.21
es igual que la tabla de verdad de la puerta And (la salida slo vale 1 cuando las dos entradas valen 1,
lo que corresponde a la fila 3 de la tabla de verdad).
La puerta And parece muy interesante para implementar una funcin minterm, ya que su tabla de
verdad slo tiene un 1. El problema nos aparece cuando queremos que el 1 no est en la ltima fila de
la tabla de verdad. Por ejemplo cmo implementamos el minterm 2, m2(x,y)? La respuesta se ve en la
figura 3.22: al negar la entrada y de la puerta And, la salida de la puerta vale 1 slo cuando la entrada x
Fig. 3.20 Tabla de verdad de un circuito muy sencillo, con slo dos entradas y una salida.
x y w
0
0
1
1
0
1
0
1
1
0
0
1
f
y x
w
20 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
vale 1 y la y vale 0. Esta combinacin es la nica que hace que las dos entradas de la And valgan 1 a la
vez y por tanto que la salida valga 1. En la derecha de la figura se muestra el esquema que implementa
la funcin m
2
y sobre l se indica como se obtiene su expresin lgica (expresin algebraica donde las
variables son lgicas (pueden valer solamente 0 o 1) y los operadores son la suma, +, el producto, , y la
negacin, !, lgicas): m
2
(x, y) = x !y. Puede decirse que el esquema de la derecha es una
implementacin directa de la expresin lgica x !y.
La tabla de verdad de las 4 funciones minterm de dos entradas se ve en la figura 3.23, donde se indica,
tambin, la expresin lgica de cada minterm. Cualquier minterm se implementa con una puerta And y
las correspondientes puertas Not segn el minterm de que se trate.
Volvamos al caso particular de la sntesis de la tabla de verdad de la figura 3.20. Tiene 2 unos en la
columna de salida, que corresponden a los minterms 0 y 3. Ya sabemos cmo implementar cada uno de
estos minterms pero cmo implementar la funcin que nos piden, que tiene 2 unos?
El segundo paso consiste en hacer la Or de los minterms del circuito: nivel Or. Fijmonos en la tabla
de verdad de la Or. Cuando una de sus entradas vale 1 y la otra 0 su salida vale 1. Si conectamos cada
una de las salidas de las puertas And que implementan los minterms m
0
y m
3
a las dos entradas de una
puerta Or, la salida valdr 1 tanto cuando m
1
valga 1 como cuando lo valga m
2
. As obtenemos la
expresin lgica de la funcin w que buscamos, w(x,y) = m
0
(x,y) + m
3
(x,y) = !x!y + xy.
La figura 3.24 muestra las tablas de verdad de la funcin objetivo y de las funciones internas usadas
para su implementacin directa a partir de la expresin lgica en suma de minterms y el esquema del
circuito resultante.
Fig. 3.21 Tabla de verdad e implementacin de la funcin minterm 3 de dos entradas.
x y
0
0
1
1
0
1
0
1
xy
0
0
0
1
1
1
1
x
y
m
3
(x,y) = xy
Fig. 3.22 Tabla de verdad e implementacin de la funcin minterm 2 de dos entradas.
x y
0
0
1
1
0
1
0
1
!y
1
0
1
0
x!y
0
0
1
0
x y
0
0
1
1
0
1
0
1
!y
1
0
1
0
x!y
0
0
1
0
x
y
!y
m
2
(x,y) = x!y
x
1
0
1
1
1
1
0
1
1
1
x y
0
0
1
1
0
1
0
1
!x
1
1
0
0
!y
1
0
1
0
m
3
xy
0
0
0
1
m
2
x!y
0
0
1
0
m
1
!xy
0
1
0
0
m
0
!x!y
1
0
0
0
Fig. 3.23 Tabla de verdad de las 4 funciones minterm de dos entradas.
Circuitos lgicos combinacionales 21
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 5 Puerta Xor-2
En la ltima columna de la tabla de verdad de la figura 3.25 se muestra la funcin !x y + x !y, que es
la suma de las funciones minterm 1 y 2 de (x, y). Esta funcin es precisamente la operacin lgica
Xor de x e y. Esta expresin lgica de la funcin Xor nos puede servir para implementarla
directamente con dos puertas Not para obtener !x e !y, dos puertas And-2 para implementar los
minterms m
1
y m
2
y una Or-2 para sumar los dos minterms. As pues, el esquema lgico del
circuito que analizamos en la seccin 3.2.1 (figura 3.16) es precisamente la implementacin en
suma de minterms de la puerta Xor-2.
Qu ocurre con funciones ms complejas? Este mtodo se nos complica un poco cuando el circuito
a sintetizar tiene ms de dos entradas (pues la puerta And usada para implementar cada funcin
minterm slo tiene dos entradas) o cuando la funcin objetivo tiene ms de dos unos en la columna de
salida de su tabla de verdad (ya que la puerta Or slo tiene dos entradas). Para generalizar este mtodo
de sntesis necesitamos generalizar primero el concepto de puerta/funcin And y Or al caso de n
entradas, para un n mayor que dos. Para ello veamos primero algunas propiedades bsicas de las
funciones (operaciones) lgicas And () y Or (+) que nos ayudarn en la definicin de las funciones
(operaciones) And y Or para el caso general de n entradas
1
.
1. Las operaciones lgicas And y Or forman una estructura matemtica denominada lgebra de Boole, que tiene ms propieda-
des (axiomas y teoremas) de las que vamos a estudiar en la siguiente seccin. En el Apndice I se define formalmente el
lgebra de Boole.
x y w
0
0
1
1
0
1
0
1
1
0
0
1
x y
0
0
1
1
0
1
0
1
m
3
0
0
0
1
m
0
1
0
0
0
1
0
0
1
w
m
0
+ m
3
xy
!x!y
+
x y
w = !x!y + xy
m
3
(x,y)=
xy
m
0
(x,y)=
!x!y
Fig. 3.24 Caso sencillo de sntesis en suma de minterms.
x y w
0
0
1
1
0
1
0
1
0
1
1
0
x y
0
0
1
1
0
1
0
1
m
2
0
0
1
0
m
1
0
1
0
0
0
1
1
0
w
x!y
!xy
+
x y
w = !xy + x!y
x!y
!xy
Fig. 3.25 Tabla de verdad de la funcin Xor de dos variables. Tabla de verdad de los dos
minterms de la funcin. Esquema lgico resultante de la sntesis en suma de minterms.
22 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3.3.3 Algunas propiedades de la And y la Or. Puertas de n entradas
Veamos primero el caso del producto lgico, la funcin And. Las dos primeras propiedades que vamos
a considerar son:
Conmutativa: x y = y x
Asociativa: (x y) z = x (y z)
La demostracin de la primera propiedad es trivial, ya que existe una simetra de la tabla de verdad de
la And respecto de x e y. Hay que probar que xy es igual que yx para las 4 combinaciones posibles de
valores de x e y. Podemos hacer la tabla de verdad de yx y observar que es idntica a la de xy. No lo
hacemos, ya que el nico caso que hay que observar es que 01, que vale 0, es igual que 10, que
tambin vale 0.
Para demostrar la propiedad asociativa s que vamos a crear las tablas de verdad de la expresin de la
izquierda de la igualdad, (xy)z, y de la expresin de la derecha, x(yz), para observar que son iguales
Como aparecen 3 variables la demostracin no es tan trivial como la anterior. La figura 3.26 muestra,
en una sola tabla, las columnas de las expresiones que aparecen en la propiedad asociativa. Se ve que la
columna de la expresin izquierda es igual a la de la expresin derecha, quedando demostrada la
propiedad.
Dado que se cumplen estas dos propiedades podemos decir que:
(xy)z = x(yz) = (xz)y = x(zy) = (yx)z = y(xz) =
= (yz)x = y(zx) = (zx)y = z(xy) = (zy)x = z(yx)
Y dado que el orden en que aparecen las tres variables en la expresin lgica y el orden de los
parntesis no importan podemos generalizar la idea de producto lgico a 3 variables y escribir:
xyz = xzy = yxz = yzx = zxy = zyx
Esto define la funcin lgica And de tres entradas y su correspondiente puerta, que denominamos And-
3. La puerta And-3, su tabla de verdad y una de las posibles implementaciones internas usando puertas
And-2, que proviene de la expresin xyz = (xy)z, se muestra en la figura 3.27. Generalizando a n
entradas tenemos lo siguiente.
Fig. 3.26 Demostracin de la propiedad asociativa de la And.
y z
0
0
1
1
0
1
0
1
0
0
0
0
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 1 1
1 1 1 1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
xy x(yz) (xy)z yz
Circuitos lgicos combinacionales 23
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
De forma equivalente se pueden demostrar las propiedades conmutativa y asociativa de la suma lgica,
funcin Or:
Conmutativa: x + y = y + x
Asociativa: (x + y) + z = x + (y + z)
Igualmente podemos definir la funcin/puerta Or de n entradas. La puerta Or-3, su tabla de verdad y
una de las posibles implementaciones internas usando puertas Or-2, que proviene de la expresin
x+y+z = (x+y)+z, se muestra en la figura 3.28. Tambin podemos generalizar a n entradas y decir que:
Usando las propiedades asociativa y conmutativa podemos demostrar que hay muchas maneras de
sintetizar una puerta de n entradas con puertas de 2 entradas. La estructura ms usada es la estructura en
rbol, cuya ventaja sobre una estructura lineal aparece cuando se considera el tiempo de retardo de las
La salida de una puerta And de n entradas, And-n, vale 1 cuando todas las
entradas valen 1 (o tambin: la salida vale 0 cuando alguna entrada vale 0).
La salida de una puerta Or de n entradas, Or-n, vale 1 cuando alguna entrada vale
1 (o tambin: la salida vale 0 cuando todas las entradas valen 0).
Fig. 3.27 Puerta And-3, tabla de verdad y posible implementacin interna con puertas And-2.
z
x
y xyz
y z
0
0
1
1
0
1
0
1
0
0
0
0
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 1
xyz y z
0
0
1
1
0
1
0
1
0
0
0
0
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 1
xyz
z
x
y
(xy)z = xyz
3.3
Fig. 3.28 Puerta Or-3, tabla de verdad y posible implementacin interna con puertas Or-2.
z
x
y x+y+z
y z
0
0
1
1
0
1
0
1
0
1
1
1
x
0
0
0
0
0 0 1 1
0 1 1 1
1 0 1 1
1 1 1 1
x+y+z y z
0
0
1
1
0
1
0
1
0
1
1
1
x
0
0
0
0
0 0 1 1
0 1 1 1
1 0 1 1
1 1 1 1
x+y+z
z
x
y
(x+y)+z = x+y+z
3.3
24 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
puertas (en la seccin 3.4). La parte superior de la figura 3.29 muestra el caso de la And-4. La
estructura lineal se obtiene implementando directamente la expresin ((ab)c)d y la estructura en
rbol se obtiene de (ab)(cd). Esto puede generalizarse a n variables. De la misma forma, cambiando
la operacin lgica por la + y la puerta And por la Or podemos construir las puertas Or de n entradas,
como muestra la parte inferior de la figura 3.29 para la Or-4.
Ms propiedades tiles de la suma y el producto lgicos. A partir de ahora, cuando necesitemos
usar una puerta And u Or de n entradas dibujaremos su smbolo en el esquema del circuito que estemos
sintetizando, sin preocuparnos por su construccin interna. No obstante, si slo disponemos de puertas
de 4 entradas y necesitamos construir una de 3 podemos usar una propiedad de las operaciones lgicas
And y Or que dice que el producto neutro de la And es el 1 y el de la Or es el 0. Esto es:
Elemento neutro del producto: x1 = x
Elemento neutro de la suma: x+0 = x
Basta observar la tabla de verdad de la And para ver que la expresin lgica se cumple para los dos
valores posibles de x, ya que 01 = 0 y 11 = 1. Lo mismo puede hacerse para la Or.
De estas propiedades se desprende que xyz1 = xyz y que x+y+z+0 = x+y+z. Por ello decimos que
los circuitos de la figura 3.30 son correctos. Un 1 o un 0 al lado de la entrada de una puerta en un
esquema lgico indica que esa entrada est fijada con el valor 1 o 0 respectivamente.
Fig. 3.29 Implementacin interna de la puertas And-4 y Or-4 mediante una estructura lineal y
en rbol de puertas And-2 y Or-2 respectivamente.
Fig. 3.30 Implementacin de una puerta And-3 usando una And-4 y una Or-3 usando una Or-4.
z
x
y xyz
z
x
y
1
xyz
z
x
y x+y+z
z
x
y
0
x+y+z
xyz
x+y+z
1
z
x
y
0
z
x
y
Circuitos lgicos combinacionales 25
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3.3.4 Sntesis en suma de minterms. Caso general
Vamos a generalizar y formalizar, en primer lugar, la idea de funcin minterm de n variables lgicas y
despus la sntesis en suma de minterms de cualquier funcin lgica.
Las funciones minterm
Es importante especificar el orden de las variables de entrada de una funcin minterm. No es la misma
funcin, por ejemplo, la m
3
(x,y,z) que la m
3
(z,y,x), ya que m
3
(x,y,z)=!xyz, mientras que m
3
(z,y,x)
= !zyx, y !xyz es distinto de !zyx. Sin embargo, por ejemplo, m
6
(x,y,z) s que es igual a m
3
(z,y,x)
ya que por la propiedad conmutativa xy!z = !zxy.
Ejemplo 6
La figura 3.31 muestra las ocho funciones minterm de tres entradas (x
2
, x
1
, x
0
). Por ejemplo, el
minterm 3, m
3
(x
2
, x
1
, x
0
), tiene un 1 en la fila 3 de la tabla de verdad, o lo que es lo mismo, la
funcin vale 1 solamente cuando los valores de entrada valen: x
2
=0, x
1
=1 y x
0
=1. La expresin
lgica de m
3
(x
2
, x
1
, x
0
) es !x
2
x
1
x
0
y su implementacin se muestra tambin en la figura
indicando la nica combinacin de valores de las entradas que produce un 1 en la salida
Vamos a definir formalmente la funcin minterm i de n variables m
i
(x
n-1
,x
1
, x
0
).
Definimos primero el termino literal k, denotado L
k
, como la variable lgica directa,
x
k
, o negada, !x
k
. La funcin m
i
(x
n-1
,x
1
, x
0
) se puede expresar como el producto
lgico de los n literales L
k
para k =0 hasta n-1, donde la variable x
k
del literal
aparece directa o negada segn que el bit k de la representacin binaria con n bits del
nmero natural i sea 1 o 0 respectivamente. Por ejemplo, m
13
(a,b,c,d,e) =
!abc!de (ya que el 13 se codifica con 5 bits como 01101.
As para implementar cualquier minterm se necesita una sola puerta And, de tantas
entradas como variables tenga la funcin, y puertas Not para negar las entradas que
corresponda, cosa que depende del minterm concreto que queramos implementar.
3.6
x
1
x
0
0
0
1
1
0
1
0
1
m
7
0
0
0
0
m
6
0
0
0
0
m
5
0
0
0
0
m
4
0
0
0
0
m
3
0
0
0
1
m
2
0
0
1
0
m
1
0
1
0
0
m
0
1
0
0
0
x
2
0
0
0
0
0 0 0 0 0 1 0 0 0 0 1
0 1 0 0 1 0 0 0 0 0 1
1 0 0 1 0 0 0 0 0 0 1
1 1 1 0 0 0 0 0 0 0 1
m
3
(x
2
, x
1
, x
0
) = !x
2
x
1
x
0
x
2
x
0
x
1
m
3
(x
2
, x
1
, x
0
)
1
1
1
0
1
1 1
Fig. 3.31 Tabla de verdad con las 7 funciones minterm de 3 variables e implementacin de m
3
.
26 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Implementacin en suma de minterms
Por ejemplo, la funcin w(x
3
,x
2
,x
1
,x
0
) cuya tabla de verdad se muestra en la figura 3.32 se expresa
como la suma de los minterms 2, 12 y 15, ya que w vale 1 para las filas 2, 12 y 15 de su tabla de verdad.
La expresin lgica en suma de minterms es:
w = !x
3
!x
2
x
1
!x
0
+ x
3
x
2
!x
1
!x
0
+ x
3
x
2
x
1
x
0
Tambin se puede expresar de forma compacta como:
w(x
3
,x
2
,x
1
,x
0
) = m
2
+ m
12
+ m
15

Cualquier funcin lgica se puede expresar como suma lgica (Or) de tantas
funciones minterm como combinaciones distintas de las entradas hacen que la
funcin valga 1. A la expresin resultante se le denomina en suma de minterms.
La sntesis en suma de minterms de un circuito combinacional es una
implementacin directa de las expresiones en suma de minterms de cada una de las
funciones/salidas del circuito y produce siempre esquemas lgicos con la misma
estructura en dos niveles. Primero un nivel de puertas And con sus entradas
conectadas adecuadamente a las entradas del circuito directamente o a travs de
puertas Not para implementar todos los minterms distintos que tiene el circuito y un
segundo nivel de puertas Or formado por una puerta Or para cada salida del
circuito que suma los minterms que tiene esa salida, esa funcin lgica.
3.6
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
0
0
1
0
x
0 w x
2
x
1
x
3
x
0
x
1
x
2
x
3
m
2
0
0
1
1
1
0
0
0
1
1
1
1
1
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
0
0
1
0
0
0
0
0
0
0
1
w
m
2
m
12
m
15
Fig. 3.32 Sntesis en suma de minterms de una funcin de 4 variables.
6
3.6
Circuitos lgicos combinacionales 27
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 7 Un circuito con una salida
En la figura 3.32 se muestra el esquema lgico resultante de la sntesis en suma de minterms de w.
Como la funcin tiene 4 variables de entrada hacen falta puertas And-4 para implementar los
minterms. Como hay 3 minterms en la funcin w hace falta una puerta Or-3 para sumarlos.
Ejemplo 8 Un circuito con dos salidas
Dada la tabla de verdad del circuito combinacional con tres entradas, (x, y, z) y dos salidas, (w
0
,
w
1
), que se muestra en la parte superior de la figura 3.33, vamos a obtener el esquema lgico de su
implementacin en suma de minterms. La solucin se encuentra en la parte inferior de la figura
donde tambin se indican las expresiones de los minterms involucrados y las expresiones en suma
de minterms de cada salida del circuito. Como el minterm 3 aparece tanto en la expresin de w
1
como en la de w
0
, hemos implementado una vez solamente este minterm y lo hemos usado para las
dos salidas.
Ejemplo 9 El multiplexor en suma de minterms
Vamos a sintetizar el circuito interno del multiplexor, Mx-2-1, cuya tabla de verdad obtuvimos en
el ejemplo 2 (ver la izquierda de la figura 3.34). De la tabla de verdad obtenemos primero la
expresin
1
en suma de minterms de la salida w, como se ve en la figura:
1. Una expresin equivalente se podra haber obtenido ordenando las variables de entrada de otra forma. En este caso los
sumandos apareceran en otro orden y las variables de cada minterm tambin, pero por las propiedades asociativa y conmu-
tativa de la suma (Or) y del producto (And) lgicos sabemos que las dos expresiones son equivalentes, son la misma fun-
cin.
7
w0 = !xyz + x!y!z + x!yz
w1 = !xyz
x y z
w0 = !xyz + x!y!z + x!yz
w1 = !xyz
y z
0
0
1
1
0
1
0
1
w
1
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 0 1
w
0
0
0
0
1
1
1
0
0
m
3
(x,y,z) = !xyz
m
4
(x,y,z) = x!y!z
m
5
(x,y,z) = x!yz
w0 = !xyz + x!y!z + x!yz
w1 = !xyz
x y z
w0 = !xyz + x!y!z + x!yz
w1 = !xyz
y z
0
0
1
1
0
1
0
1
w
1
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 0 1
w
0
0
0
0
1
1
1
0
0
y z
0
0
1
1
0
1
0
1
w
1
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 0 1
w
0
0
0
0
1
1
1
0
0
m
3
(x,y,z) = !xyz
m
4
(x,y,z) = x!y!z
m
5
(x,y,z) = x!yz
Fig. 3.33 Tabla de verdad de un circuito con 3 entradas y 2 salidas. Expresiones lgicas de los
minterms involucrados en las dos funciones de salida. Esquema del circuito resultante de la
sntesis en suma de minterms.
8
28 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
w(s, x
1
, x
0
) = m
1
+ m
3
+ m
6
+ m
7
= !s!x
1
x
0
+ !sx
1
x
0
+ sx
1
!x
0
+ sx
1
x
0
(incluimos el orden de las entradas en la salida w, por no repetirlo en cada uno de los minterms).
Por ltimo, en la figura 3.34 dibujamos el esquema lgico en suma de minterms. Como las variables de
entrada negadas se usan en ms de un minterm, negaremos slo una vez cada variable.
Se dice que las puertas (funciones lgicas) Not, And y Or son un conjunto de puertas (funciones)
universales o completas porque con slo ellas se puede implementar cualquier circuito combinacional.
La implementacin en suma de minterms es una prueba de ello
1
.
3.3.5 Sntesis con decodificador y puertas Or
Otra forma de sintetizar un circuito a partir de la expresin en suma de minterms consiste en usar un
bloque combinacional que se denomina Decodificador (Decoder). El decodificador implementa todas
los funciones minterm del nmero de entradas que tiene el circuito, aunque algunos minterms no se
usen porque no aparezcan en la expresin lgica que deseamos implementar. Definimos qu es un
decodificador y despus implementamos el circuito anterior con un decodificador y puertas Or.
Decodificador
1. Existen otros conjuntos de puertas universales pero aqu, para simplificar, slo estudiamos estas.
Un decodificador de n entradas (a
n-1
,..., a
1
, a
0
) y 2
n
salidas (d
2
n-1,..., d
1
, d
0
), que
denominamos Dec-n-2
n
, es un dispositivo lgico combinacional que implementa
cada uno de los 2
n
minterms de n entradas. La salida d
i
es la funcin minterm i de las
n entradas del decodificador,
d
i
= m
i
(a
n-1
,..., a
1
, a
0
).
Fig. 3.34 Esquema lgico del multiplexor Mx-2-1 implementado en suma de minterms.
Mx
0 1
x
0
x
1
s
w
Mx
0 1
x
0
x
1
s
w
x
1
x
0
0
0
1
1
0
1
0
1
w
0
1
0
1
s
0
0
0
0
0 0 0 1
0 1 0 1
1 0 1 1
1 1 1 1
x
1
x
0
0
0
1
1
0
1
0
1
w
0
1
0
1
s
0
0
0
0
0 0 0 1
0 1 0 1
1 0 1 1
1 1 1 1
m
1
= !s!x
1
x
0
m
3
= !sx
1
x
0
m
6
= sx
1
!x
0
m
7
= sx
1
x
0
w
x
0
x
1
s
w
x
0
x
1
s
3.7.2
Circuitos lgicos combinacionales 29
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Veamos, a modo de ejemplo, la figura 3.35 que muestra la tabla de verdad del dispositivo decodificador
de 3 entradas y 8 salidas, Dec-3-8 y su implementacin interna usando una puerta And-3 para cada
uno de los minterms que implementa. Por ejemplo, la salida d
3
implementa el minterm 3 de (a
2
, a
1
,
a
0
): d
3
= m
3
(a
2
, a
1
, a
0
) = !a
2
a
1
a
0
.
La figura tambin muestra el smbolo Dec-3-8, que puede ser usado como dispositivo para formar un
circuito ms complejo. Es importante observar que en el interior del smbolo se han numerado las
entradas de 0 a 2. A la entrada 2 se la denomina entrada de ms peso y es la que se sita en la columna
de ms a la izquierda en la tabla de verdad, mientras que la entrada 0 es la de menor peso. Las salidas
estn numeradas de 0 a 7, para indicar que la entrada i implementa el minterm i de las entradas
ordenadas como se ha dicho. Siempre hay que numerar las entradas y salidas del smbolo del
decodificador ya que si no se hace as no queda definida la funcin que implementa cada salida.
Sntesis
Para sintetizar un circuito combinacional de n entradas y m salidas se debe usar un
decodificador de n entradas y 2
n
salidas (Dec-n-2
n
) para implementar los 2
n
minterms de n entradas, y m puertas Or, una para cada salida del circuito. Cada
puerta Or debe tener tantas entradas como minterms tiene la expresin en suma de
minterms de la salida que implementa.
La interconexin de los dispositivos es la siguiente. Denominamos a las n entradas
como entrada n-1, n-2,..., 1 y 0, siguiendo el mismo orden que usamos para crear la
tabla de verdad y para denominar las funciones minterm (la entrada n-1 es la de la
columna de ms a la izquierda, la de ms peso). Las n entradas del circuito se
conectan a las n entradas del decodificador, la entrada k del circuito se conecta con la
entrada k del decodificador. La salida de cada puerta Or es una salida del circuito.
Las entradas de cada Or se conectan con las salidas del decodificador
correspondientes a los minterms de la funcin que implementa esa puerta Or.
a
0
a
1
a
2
d
7
d
6
d
5
d
4
d
3
d
2
d
1
d
0
a
1
a
0
d
7
d
6
d
5
d
4
d
3
d
2
d
1
d
0
a
2
0 0 0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 1 0 0 0 0
0 1 1 0 0 1 0 0 0 0 0
1 0 1 0 1 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0 1
Fig. 3.35 Tabla de verdad del dispositivo Dec-3-8, su implementacin interna y su smbolo.
a
0
a
1
a
2
d
7
d
6
d
5
d
4
d
3
d
2
d
1
d
0
0
1
2
3
4
5
6
7
Dec
0
1
2
a
0
a
1
a
2
d
7
d
6
d
5
d
4
d
3
d
2
d
1
d
0
0
1
2
3
4
5
6
7
Dec
0
1
2
9
14
3.7.2
30 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
El multiplexor con decodificador y puertas Or como ejemplo
Veamos, en la figura 3.36, la sntesis de un multiplexor como el del ejemplo 9, Mx-2-1, pero ahora
usando un decodificador para implementar los minterms y una puerta Or para obtener la nica salida
del dispositivo. Hemos dibujado el circuito interno del Mx-2-1 usando un decodificador 3-8, del que se
muestra su circuito interno, y una puerta Or-4. Esta es la implementacin en suma de minterms que
hicimos en el ejemplo 2 excepto que ahora hemos dibujado todos los minterms de tres entradas y hay
cuatro de ellos que no se usan. A la derecha se ha dibujado el esquema con el smbolo del Dec-3-8.
El esquema lgico con un decodificador y puertas Or es ms compacto y ms sencillo de dibujar que el
esquema en suma de minterms. El nico inconveniente de usar un decodificador es que no usamos todo
el hardware interno del decodificador, pero esto no es muy importante para nosotros
Ejemplo 10 Circuito con dos salidas
Dibujamos, en la figura 3.37, el esquema lgico del circuito del ejemplo 8, pero usando un
decodificador y puertas Or. Se requiere un decodificador 3-8, ya que el circuito tiene 3 entradas. En
la tabla de verdad x es la variable de ms peso, por lo que se conecta a la entrada 2 del
decodificador. La entrada y se conecta a la entrada 1 del decodificador y la z a la 0. En este caso,
aunque hay dos salidas no se requieren dos puertas Or ya que la salida w
1
slo tiene un 1 en la
columna de la tabla de verdad (su expresin lgica slo tiene un minterm).
3.3.6 Sntesis con una ROM
Veamos cmo implementar cualquier circuito combinacional de la forma ms compacta posible:
mediante un nico dispositivo denominado ROM (memoria de solo lectura, Read Only Memory)
1
.
Normalmente, usaremos una ROM cuando una implementacin en suma de minterms resulte
demasiado compleja (por ejemplo para ms de 4 o 5 entradas)
2
.
1. De momento olvidemos lo de memoria, que ms bien puede confundirnos, ya que es un dispositivo combinacional)
Fig. 3.36 Mx-2-1 implementado con un decodificador y una puerta Or.
w
x
0
x
1
s
0
1
2
3
4
5
6
7
Dec
0
1
2
w
x
0
x
1
s
0
1
2
3
4
5
6
7
Dec
0
1
2
Mx
0 1
x
0
x
1
s
w
Mx
0 1
x
0
x
1
s
w
x
1
x
0
w s
0 0 0 0
0 1 0 1
1 0 0 0
1 1 0 1
0 0 1 0
0 1 1 0
1 0 1 1
1 1 1 1
x
1
x
0
w s
0 0 0 0
0 1 0 1
1 0 0 0
1 1 0 1
0 0 1 0
0 1 1 0
1 0 1 1
1 1 1 1
x
0
x
1
s
w
x
0
x
1
s
w
15
Circuitos lgicos combinacionales 31
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
ROM
La ROM se fabrica con cada punto concreto de la matriz de conexin conectado o no conectado de
acuerdo con lo que haya especificado el diseador al fabricante, que va a comprar miles o millones de
estos dispositivos. As, una ROM, una vez fabricada, implementa un circuito concreto y no puede
volver a cambiarse
1
.
2. No obstante, no implementaremos con ROM dispositivos con un nmero de entradas/salidas muy grande, como por ejemplo
un sumador de dos nmeros codificados con 16 bits cada uno, que tiene 32 entradas y 16 salidas, ya que hara falta una ROM
excesivamente grande. En el siguiente captulo vemos como implementar estos dispositivos grandes.
ROM. La figura 3.38 muestra una pequea ROM de 2 entradas y 3 salidas. El
smbolo del dispositivo se muestra en a). En b) se dibuja el esquema interno, con:
un decodificador para generar todos los posibles minterms de dos entradas,
una matriz de puntos de conexin (cada punto concreto puede ser conectado por
el fabricante), y
3 puertas Or de 4 entradas cada una para poder implementar tres funciones
cualesquiera que sea la suma de, como mximo, 4 minterms cada una.
Conforme aumenta el nmero de entradas (n) de la ROM aumenta exponencialmente
(2
n
) el nmero de entradas de cada una de las puertas Or. Para evitar la complejidad
de estas puertas Or con n lneas de entrada, los tecnlogos han inventado una forma
de construir la Or de n entradas con una sola lnea. Esta tecnologa no la explicamos
aqu, ya que es un tema de electrnica o de diseo VLSI. La figura 3.38.c) muestra
un esquema interno de la ROM ms prximo a la tecnologa usada para su
implementacin, dibujando cada Or como una lnea vertical con el smbolo de la Or
en la salida.
Fig. 3.37 Sntesis del circuito combinacional del ejemplo 8 con un decodificador y puertas Or.
y z
0
0
1
1
0
1
0
1
w
1
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 0 1
w
0
0
0
0
1
1
1
0
0
y z
0
0
1
1
0
1
0
1
w
1
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 0 1
w
0
0
0
0
1
1
1
0
0
z
y
0
1
2
3
4
5
6
7
Dec
0
1
2
w
0
w
1
x
z
y
0
1
2
3
4
5
6
7
Dec
0
1
2
w
0
w
1
x
3.9
16
32 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Sntesis
Notacin para especificar las conexiones internas (contenido de la ROM)
Cuando usamos el smbolo de una ROM, formando parte de un circuito ms
complejo, debemos definir claramente qu conexiones son efectivas dentro
de la ROM y cules no lo son: el contenido de la ROM. Por ejemplo, si
deseamos realizar el circuito cuya tabla de verdad se indica al margen, no
dispondremos solamente del smbolo de una ROM como en la figura 3.38a).
Para indicar qu puntos de la matriz de conexin estn conectados y cules
no lo estn, lo que se denomina el contenido de la ROM, podemos indicar
en algn sitio cerca del smbolo de la ROM una tabla con las funciones
lgicas que implementa. Esto se muestra para nuestro ejemplo en la figura 3.39.
1. Como esto es muy rgido y slo es econmicamente viable si se van a usar miles o millones de ROMs con las mismas
conexiones, los tecnlogos han creado un dispositivo sobre el cual el usuario puede programar qu conexiones son efectivas
y cuales no lo son. Esos dispositivos se denominan PROM, programable ROM. La programacin se hace con un circuito
sencillo. Una vez que se ha programado ya no puede volverse a reprogramar. No obstante, hay otras tecnologas que permi-
ten borrar la programacin hecha y reprogramar la PROM (EPROM). Adems existen otros dispositivos programables para
implementar circuitos como las PLAs y las FPGAs que tampoco vamos a tratar. Slo nos interesa el concepto de ROM y
saber que con este dispositivo podemos implementar circuitos lgicos combinacionales.
Para implementar un circuito combinacional con n entradas y m salidas hace falta
una ROM de n entradas y m salidas. Las entradas de la ROM son directamente las
entradas del circuito y las salidas de la ROM son las del circuito. Dentro de la ROM
est todo el hardware para implementar el circuito aunque no se use todo
eficientemente. La sntesis con este dispositivo es muy sencilla, solamente hay que
especificar correctamente los nombres de las entradas y salidas, las etiquetas de la
ROM y las conexiones (contenido) de la ROM, como se ve en las dos secciones
siguientes.
Fig. 3.38 ROM de 2 entradas y 3 salidas. a) Smbolo. b) Esquema lgico. c) Esquema tecnolgico.
a)
ROM
a
0
a
1
0
1
d
0
d
1
d
2
b) c)
0 1 2
a
0
a
1
0
1
2
3
Dec
0
1
d
0
d
1
d
2
a
0
a
1
0
1
2
3
Dec
0
1
d
0
d
1
d
2
a
0
a
1
0
1
2
3
Dec
0
1
d
2
d
1
d
0
a
0
a
1
0
1
2
3
Dec
0
1
d
2
d
1
d
0
3.10
3.11
17
0
0
1
1
0
1
0
1
d
2
0
0
0
1
d
1
0
1
1
0
d
0
1
0
1
0
a
0
a
1
0
0
1
1
0
1
0
1
d
2
0
0
0
1
d
1
0
1
1
0
d
0
1
0
1
0
a
0
a
1
Circuitos lgicos combinacionales 33
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Una forma alternativa es la que se muestra a la derecha de la figura 3.40, en la que el propio smbolo de
la ROM muestra su contenido. En este smbolo un 1 indica que la conexin de esa posicin de la matriz
de conexiones es efectiva y un 0 que no lo es. Como puede verse, esta matriz de ceros y unos es la
misma que la parte de la derecha (las columnas de las salidas) de la tabla de verdad de la figura 3.39. Al
usar este smbolo es muy importante indicar el orden de las filas de la matriz de conexiones. Lo usual
es poner la fila 0 arriba y el resto hacia abajo, como en la tabla de verdad del circuito. En el smbolo de
la figura 3.40 hemos puesto un 0 y un 3 indicando la fila 0 y la 3, ya que no hay espacio para numerar
todas las filas. Es muy importante que no haya ninguna ambigedad sobre qu funciones implementa la
ROM y para ello hay que indicar el peso de las entradas, el orden de las salidas etc. Veamos esto con un
ejemplo.
Importancia del etiquetado de las entradas y salidas
Es muy importante resaltar que para que una ROM sea una implementacin correcta de la tabla de
verdad del circuito que queremos implementar hay que especificar correctamente
los nombres de las lneas de entrada y salida del circuito (estos son los nombres de las variables de
entrada y salida que nos dan en la tabla de verdad y las lneas de entrada y salida del circuito son las
lneas de entrada y salida de la ROM),
Fig. 3.39 Esquema interno de una ROM con algunas conexiones concretas efectivas y smbolo
alternativo de la ROM indicando las conexiones internas mediante una tabla.
ROM
a
0
a
1
0
1
d
0
d
1
d
2
0 1 2
ROM
a
0
a
1
0
1
d
0
d
1
d
2
0 1 2
0
0
1
1
0
1
0
1
2
0
0
0
1
1
0
1
1
0
0
1
0
1
0
0 1
Input Output
0
0
1
1
0
1
0
1
2
0
0
0
1
1
0
1
1
0
0
1
0
1
0
0 1
Input Output
a
0
a
1
0
1
2
3
Dec
0
1
d
2
d
1
d
0
a
0
a
1
0
1
2
3
Dec
0
1
d
2
d
1
d
0
Fig. 3.40 Esquema interno de una ROM con algunas conexiones concretas efectivas y smbolo
alternativo de la ROM indicando las conexiones internas.
a
0
a
1
0
1
d
0
d
1
d
2
1
0
1
0
0
1
1
0
0
0
0
1
0
3
a
0
a
1
0
1
d
0
d
1
d
2
1
0
1
0
0
1
1
0
0
0
0
1
0
3
a
0
a
1
0
1
2
3
Dec
0
1
d
2
d
1
d
0
a
0
a
1
0
1
2
3
Dec
0
1
d
2
d
1
d
0
34 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
las etiquetas internas de la ROM (el orden de los bits de entrada a la ROM: 0,..., n; las etiquetas de
las filas de la ROM: 0,...,2
n
-1; y el orden de los bits de cada fila contenida en la ROM -las salidas de
la ROM) y
el contenido de la ROM (conexiones o ceros y unos).
Para ejemplificar esta importancia analizamos los circuitos dibujados en la
parte superior de la figura 3.41 que consisten en una sola ROM cada circuito.
Los circuitos tienen en comn el nombre de sus entradas y de sus salidas (ver
figura a la derecha de este prrafo). La solucin del anlisis, la tabla de verdad
de cada uno de los circuitos se muestra en la parte inferior de la misma figura.
Se observa que el circuito b) y el c) son equivalentes, la tabla de verdad es la misma, aunque las
columnas de salida en la tabla de verdad y de la ROM tienen distinto orden en b) que en c). Adems, el
orden de las entradas de cada circuito es diferente, pero el resultado es el mismo ya que se ha cambiado
tambin de manera acorde el orden de las etiquetas de las entradas del smbolo de la ROM.
Los circuitos a) y d) tambin son equivalentes ya que su tabla de verdad es la misma. La diferencia en
los dos circuitos es que en el smbolo de la ROM del circuito d) se han ordenado las filas con la fila 0
abajo y la 3 arriba.
Por otro lado, los circuitos a) y b) no son equivalentes a pesar de que el nombre de las entradas y
salidas es el mismo en los dos esquemas y el contenido de la ROM es aparentemente el mismo. La
diferencia estriba en el orden de las etiquetas de las entradas dentro del circuito. En el a) la entrada p es
la de menor peso y en el b) es la de mayor peso. Este pequeo detalle hace que los circuitos no sean
equivalentes. Por todo esto, es importante etiquetar correctamente las entradas de la ROM.
CLC
p
f
g
h
r
CLC
p
f
g
h
r
Fig. 3.41 Circuitos implementados con una sola ROM y sus respectivas tablas de verdad.
p
r
0
1
h g f
1
1
0
1
0
1
1
0
1
0
1
0
3
0
0
0
1
1
0
1
0
1
f
0
1
0
1
g
0
1
1
0
h
1
0
1
1
p r
d)
p
r
0
1
h g f
1
0
1
1
0
1
1
0
0
1
0
1
0
3
0
0
1
1
0
1
0
1
f
0
1
0
1
g
0
1
1
0
h
1
0
1
1
p r
p
r
1
0
h g f
1
0
1
1
0
1
1
0
0
1
0
1
0
3
0
0
1
1
0
1
0
1
f
0
1
0
1
g
0
1
1
0
h
1
0
1
1
r p
r
p
0
1
f g h
0
1
0
1
0
1
1
0
1
0
1
1
0
3
0
0
1
1
0
1
0
1
h
1
0
1
1
g
0
1
1
0
f
0
1
0
1
r p
a) b) c)
Circuitos lgicos combinacionales 35
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 11 Circuito con dos salidas
La figura 3.42 muestra la tabla de verdad del circuito que sintetizamos en suma de minterms en el
ejemplo 8 y con un decodificador y puertas Or en el ejemplo 10 y a la derecha su implementacin
con una sola ROM. Puede observarse como cada vez es ms sencillo el esquema lgico del circuito
(aunque para ello se usan cada vez ms puertas, que no se ven en los dibujos con bloques).
Visin de la ROM como memoria de slo lectura
El dispositivo ROM que hemos visto se denomina memoria ROM, Read Only Memory, memoria de
slo lectura. Hemos dejado la visin del dispositivo como memoria de slo lectura para el final de la
seccin ya que de momento nos ha interesado ms la visin de la estructura interna de la ROM con un
decodificador y puertas Or, para que se vea ms claro que una ROM permite implementar funciones de
manera equivalente a la implementacin en suma de minterms o a la implementacin con un
decodificador y puertas Or. Veamos ahora la ROM desde el punto de vista de memoria.
Las n entradas de una ROM se pueden ver como un vector de n bits que codifica en binario un nmero
natural, denominado direccin. El rango de direcciones de una ROM de n entradas es de 0 a 2
n
-1. La
etiqueta n-1, n-2,..., 1, 0, de cada entrada indica el peso, 2
n-1
, 2
n-2
,..., 2
1
, 2
0
de los bits que forman la
direccin. Se suelen denominar a
n-1
, a
n-2
,..., a
1
, a
0
(la a de direccin en ingles, address) a los n bits de
las entradas de la ROM, de la direccin.
Una memoria ROM de n entradas y m salidas es un dispositivo que almacena 2
n
palabras de m bits cada palabra. Las 2
n
palabras fueron escritas, almacenadas, en el
interior del dispositivo por el fabricante, cada palabra en una posicin de la memoria.
La memoria ROM puede verse como una cajonera (almacn) de 2
n
cajones
(posiciones de memoria) en los que se almacena una palabra de m bits en cada cajn
(el contenido de la memoria). Los cajones estn numerados, cada uno tiene una
direccin, de 0 a 2
n
-1.
a

y z
0
0
1
1
0
1
0
1
w
1
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 0 1
w
0
0
0
0
1
1
1
0
0
w
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
0
1
z
y
x
0
1
2
0
7
w
1
Fig. 3.42 Sntesis con una ROM del circuito combinacional del ejemplo 8.
18
3.9
36 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La memoria ROM mantiene siempre su contenido tal como lo cre el fabricante, aunque el dispositivo
est sin tensin de alimentacin. Cuando el dispositivo est inmerso en un circuito alimentado el
funcionamiento es el siguiente. Los m bits de salida de la ROM tienen los valores binarios de la palabra
que se encuentra almacenada en la direccin que indican los n bits de direccin de la ROM. La
figura 3.43 muestra una memoria de 8 palabras (3 bits de entrada) de 6 bits cada palabra. Por ejemplo,
la posicin con direccin 2, la posicin 2 de memoria, contiene el vector de bits: 011111.
a. Como el nmero mximo de palabras que puede almacenar una ROM es una potencia de 2 (2
n
), para almace-
nar k palabras de m bits hace falta una ROM que tenga, como mnimo, un nmero de entradas (n) igual al loga-
ritmo en base 2 de k, y un nmero de salidas igual a m. Esto es as, ya que se tiene que cumplir que:
. 2
n 1
k < 2
n

Fig. 3.43 Ejemplo de memoria ROM de 8 palabras de 6 bits cada una.


d
3
d
4
d
5
1
0
1
0
1
1
1
1
0
0
0
1
1
0
1
0
0
1
1
0
0
0
0
1
a
0
a
1
a
2
0
1
2
direccin
0
7
n = 3
d
0
d
1
d
2
1
0
1
0
0
1
1
1
0
0
1
1
1
0
1
0
0
1
1
0
1
0
1
1
m = 6
dato
Circuitos lgicos combinacionales 37
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
3.4 Completando el modelo de un circuito combinacional. Tiempos de propagacin
Hasta el momento nos hemos familiarizado con el funcionamiento a nivel lgico de los circuitos
combinacionales, que especificamos formalmente mediante su tabla de verdad
1
. La tabla de verdad
modela de forma incompleta el funcionamiento de un circuito combinacional real. Hay otras
caractersticas de una puerta, o en general de un circuito combinacional, que tambin son importantes
cuando se disea un circuito. En este curso slo consideraremos una de estas caractersticas: el tiempo
de propagacin
2
(en ingls propagation delay) desde cada entrada a cada salida del circuito; y no
consideraremos, por ejemplo, el espacio que ocupa o la potencia que consume.
En el modelo lgico de una puerta, y por tanto de un circuito combinacional construido conectando
puertas, se ha considerado que el valor de la salida en un instante concreto del tiempo es funcin del
valor de las entradas en ese mismo instante. O sea, si un cambio de valor en una entrada ha de provocar
un cambio en el valor de una salida, este cambio es instantneo. La realidad es muy distinta y un
cambio en una entrada tarda un tiempo en propagarse a la salida: este es el tiempo de propagacin de la
seal a travs del circuito, desde esa entrada a esa salida. El porqu del tiempo de propagacin y cmo
construir la puerta para que el tiempo de propagacin sea pequeo, es un tema de fsica, electrnica, o
diseo digital avanzado, que no tratamos aqu.
3.4.1 Anlisis temporal de las puertas bsicas
Vamos a definir el comportamiento temporal de las tres puertas bsicas con las que construimos los
circuitos combinacionales y de esta forma formulamos el modelo temporal que usamos.
Not
Comenzamos por la puerta ms simple, la que tiene slo una entrada: la puerta Not. El cronograma de
la figura 3.44 muestra cmo vara la seal de salida de la puerta Not ante una serie de cambios a lo
largo del tiempo del valor lgico de la seal de entrada. En los primeros momentos que muestra el
cronograma, la entrada vale 0 y la salida vale 1, como corresponde a su tabla de verdad. Pero en el
instante en que la entrada pasa de 0 a 1 la salida debera cambiar de 1 a 0, segn su tabla de verdad. La
realidad es que el cambio de la entrada tarda un tiempo en propagarse a la salida. Usualmente, en la
bibliografa de circuitos digitales, se denota este tiempo como Tp
HL
, tiempo de propagacin de alto a
bajo, ya que la salida ha pasado de 1 (valor alto, High) a 0 (valor bajo, Low). El cronograma de la figura
muestra tambin cmo se comporta la puerta al pasar la entrada de 1 a 0. En este caso la salida pasa de
0 a 1 despus del tiempo Tp
LH
.
El tiempo Tp
HL
tiene distinto valor que el Tp
LH
y las diferencias entre ellos dependen de la tecnologa.
No obstante, para simplificar el anlisis temporal, vamos a considerar en muestro modelo temporal que
en las tres puertas bsicas Tp
HL
tiene el mismo valor que Tp
LH
. Como construimos todos los circuitos
1. Tambin se puede especificar mediante una expresin lgica. Un tipo de expresin lgica es la expresin en suma de min-
terms, que hemos visto, pero, como veremos en el apndice sobre las propiedades de las funciones Not, And y Or, hay
muchas expresiones distintas que tienen la misma tabla de verdad y que se denominan expresiones equivalentes.
2. Tambin se le denomina tiempo de retardo (delay time) o simplemente retardo.
38 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
combinacionales con las puertas Not, And-2 y Or-2, podemos decir que en cualquiera de nuestros
circuitos Tp
HL
= Tp
LH
. Por esto, de ahora en adelante, hablaremos simplemente de tiempo de
propagacin, Tp, sin importarnos si la salida pasa de 0 a 1 o de 1 a 0.
And-2
Veamos, en la figura 3.45, el cronograma del comportamiento de la puerta And-2. Inicialmente, las dos
entradas valen 0 y la salida vale 0, como corresponde al comportamiento lgico. Cuando la entrada x
pasa de 0 a 1 y la y se mantiene a 0, ocurre lo que indica la tabla de verdad: la salida no cambia. Pero
ms adelante, cuando la entrada y pasa de 0 a 1 y la entrada x sigue valiendo 1, la salida que debera
cambiar de 0 a 1 inmediatamente, tarda un tiempo en hacerlo. Este es el tiempo de propagacin de la
entrada y a la salida w, y lo denotamos como Tp
y-w
(inicialmente vamos a diferenciar las dos entradas
de la And-2). La figura tambin muestra el tiempo de propagacin de la entrada x a la salida w, Tp
x-w
.
Sobre los cronogramas se indica cada cambio de la seal de salida con la punta de una flecha,
indicando con el origen de la flecha el cambio en la seal de entrada que lo provoc.
Or-2
El comportamiento temporal de la puerta Or-2 es equivalente al de la And-2 considerando, claro est,
su distinto comportamiento lgico. El cronograma del comportamiento de la puerta Or-2, para las
mismas variaciones temporales de las entradas que hemos considerado para la puerta And-2, se
muestra en la figura 3.46.
Fig. 3.44 Cronograma que muestra los tiempos de propagacin de una puerta Not.
w
x
w
x
x w
0
1
1
0
x w
0
1
1
0
1
0
0
1
t
x(t)
t
w(t)
0
1
TpHL TpLH
1
0
0
1
t
x(t)
t
w(t)
0
1
TpHL TpLH
Fig. 3.45 Cronograma que muestra tiempo de propagacin de una puerta And-2.
x y w
0
0
1
1
0
1
0
1
0
0
0
1
x y w
0
0
1
1
0
1
0
1
0
0
0
1
x y
w
x y
w
t
x(t)
t
y(t)
t
w(t)
Tp
y-w
Tp
x-w
Circuitos lgicos combinacionales 39
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Tiempo de propagacin de las puertas bsicas
Vamos a definir lo que entendemos por tiempo de propagacin, Tp, de una puerta bsica. Para ello, dos
aclaraciones.
Por un lado, y desde este momento, vamos a considerar que al realizar una puerta And-2 u Or-2, con
cualquier tecnologa, el tiempo de propagacin desde cualquiera de sus dos entradas resulta ser el
mismo (Tp
x-w
= Tp
y-w
). Esto, junto a lo ya dicho al estudiar la puerta Not, (que para las tres puertas
bsicas consideramos que los tiempos de propagacin al pasar la salida de 0 a 1 son los mismos que al
pasar de 1 a 0, Tp
LH
= Tp
HL
), hace que para las tres puertas Not, And-2 y Or-2 hablemos simplemente
de tiempo de propagacin de la puerta, Tp (sin distinguir si la salida cambia de 0 a 1 o de 1 a 0, ni
qu entrada produce el cambio).
Por otro lado, a la vista de los cronogramas de las puertas And-2 y Or-2 observamos que el
comportamiento temporal (y lgico) de la salida provocado por un cambio en una entrada depende del
valor de la otra entrada. Por ejemplo, en la Or-2 cuando una entrada vale 1 la salida vale 1 y no cambia,
por muchos cambios que se produzcan en la otra entrada. Podramos decir que en este caso el tiempo
que pasa desde que se producen los cambios entre la entrada y la salida es nulo, mientras que si la
entrada que no cambia vale 0 s que se produce un cambio en la salida que tarda un tiempo distinto de
cero en propagarse. A pesar de ello, por definicin, el tiempo de propagacin de una puerta, Tp, es
el mximo de estos tiempos (al hablar de Tp no se dice ni el cambio concreto de la entrada que produce
el cambio en la salida (de 0 a 1 o de 1 a 0) ni el valor concreto (0 o 1) que tiene la entrada que no vara.
As:
En la puerta And-2 las entradas son intercambiables: a nivel lgico la And es conmutativa, xy =
yx, y a nivel temporal tambin, Tp
x-w
= Tp
y-w
(= Tp). Podemos decir lo mismo para la Or-2. (pero
no para circuitos formados por varias puertas, como veremos enseguida.
Para las tres puertas bsicas, es seguro que pasado el tiempo de propagacin de la puerta, la salida
ha tomado el valor lgico que indica su tabla de verdad. Tambin podemos decir que, segn nuestro
modelo temporal, el comportamiento de la seal de salida va retardado un tiempo Tp respecto a lo
que sera su comportamiento considerando solamente el modelo lgico.
Fig. 3.46 Cronograma que muestra tiempo de propagacin de una puerta Or-2.
x y
w
x y
w
x y w
0
0
1
1
0
1
0
1
0
1
1
1
x y w
0
0
1
1
0
1
0
1
0
1
1
1
t
x(t)
t
y(t)
t
w(t)
Tp
y-w
Tp
x-w
40 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Tiempos en la librera de dispositivos Digit@Lib
Consideramos que las puertas bsicas de nuestra librera, Not, And-2 y Or-2, con las que
construiremos el computador, tienen los siguientes tiempos de propagacin, que medimos en unidades
de tiempo, u.t., para ser independientes de la tecnologa (no indicaremos cuntos nanosegundos, ns,
corresponden a cada u.t.). Ponemos entre parntesis el dispositivo a que hace referencia el tiempo:
Tp(Not) = 10 u.t., Tp(And-2) = 20 u.t. y Tp(Or-2) = 20 u.t.
Con esto queda completado el modelo (lgico y temporal) de las puertas bsicas. De ahora en adelante,
si no decimos lo contrario, consideramos que las puertas bsicas que usaremos tienen estos tiempos de
propagacin.
Sobre cronogramas. Por ltimo, un comentario antes de pasar al siguiente punto. En general, un
cronograma muestra el comportamiento del circuito para unos casos particulares de valores y cambios
de las entradas, pero no suele representar todas las posibilidades, no es exhaustivo como lo es una tabla
de verdad. El que dibuja el cronograma decide qu situacin concreta quiere mostrar. Por ejemplo, en
los cronogramas anteriores para las puertas And-2 y Or-2 no se muestra qu ocurre cuando la entrada x
pasa de 0 a 1 mientras la y permanece con valor 1.
3.4.2 Anlisis temporal de un circuito combinacional
Qu pasa con los tiempos de propagacin de un circuito combinacional formado por puertas lgicas
1
conectadas entre s? Vemoslo primero con un circuito muy simple y luego ya lo complicaremos.
Caso simple: circuitos con un solo camino de cada entrada a cada salida
Con un circuito tan sencillo como el de la figura 3.47, con dos entradas (x e y) y una salida (w), vamos
a ver que el tiempo de propagacin es distinto segn que entrada consideremos (Tp
x-w
!= Tp
y-w
). El
circuito est construido con una puerta Not y una And-2, implementando la funcin w = x!y. La figura
tambin muestra la tabla de verdad de la seal interna del circuito (!x) y de la salida del circuito (w).
Analizamos el circuito con un cronograma. Para ello usamos los mismos cambios a lo largo del tiempo
de las seales de entrada que hemos usado en los cronogramas anteriores (figura 3.45 y figura 3.46),
aunque sabemos que con estos cambios no se cubren todas las posibilidades.
Pero, cmo se dibujan cronogramas para circuitos con varias puertas? Dibujar un cronograma consiste
en encontrar los valores de cada salida del circuito a lo largo del tiempo, a partir de los valores
concretos que nos dan de las seales de entrada a lo largo de un intervalo de tiempo (fuera de ese
intervalo los valores de las entradas son desconocidos). Cada seal de salida del circuito es la seal de
salida de una puerta
2
y para poder dibujar la seal de salida de una puerta necesitamos, adems de
saber la tabla de verdad de la puerta, conocer los valores a lo largo del tiempo de las entradas de la
1. Todos los circuitos combinacionales que estudiamos estn construidos con puertas lgicas Not, And y Or conectadas entre
s, aunque el esquema lgico del circuito sea un esquema a bloques y puede que en el nivel superior no se vean todas las
puertas sino que aparezcan los smbolos de dispositivos/bloques combinacionales como una caja negra (no se ve su interior).
Internamente estos bloques estn construidos, tras uno o varios niveles de bloques, con las puertas bsicas.
2. Si no es as quiere decir que la salida est conectada directamente con una entrada y como las conexiones no producen
retardo estamos en un caso trivial: la seal de salida a lo largo del tiempo es igual a la de la entrada.
Circuitos lgicos combinacionales 41
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
puerta. Pero las seales de entrada de esa puerta, en general, tambin son salidas de otras puertas y por
lo tanto necesitaremos saber el valor a lo largo del tiempo de las seales de entrada de esas puertas, y
as hasta llegar a las seales de entrada del circuito, de las que conocemos sus valores a lo largo del
tiempo.
Procedimiento para dibujar cronogramas para circuitos con varias puertas. Se
dibuja el cronograma de la seal de salida de cada una de las puertas del circuito para
el periodo de tiempo en que es posible hacerlo (antes y despus el valor de la salida
ser desconocido), comenzando por las puertas conectadas directamente a las
entradas del circuito y terminando con las puertas cuyas salidas son las salidas del
circuito. El orden en que se pueden dibujar las seales viene dado por la regla: no se
puede dibujar la seal de salida de una puerta hasta que no se conocen los valores a
lo largo del tiempo de todas sus entradas. Con esto hemos reducido el problema a
saber dibujar el cronograma de la seal de salida de una puerta conocidas sus seales
de entrada a lo largo de un intervalo de tiempo.
Cmo se dibuja el cronograma de una puerta bsica? Se puede hacer en dos
pasos, para el primero hay que conocer la tabla de verdad de la puerta y para el
segundo su tiempo de propagacin, Tp. Suponemos que conocemos el valor de las
entradas desde t
0
a t
f
. Primero se dibuja el valor de la seal de salida de t
0
a t
f
,
suponiendo que el tiempo de propagacin es nulo: aplicando instantneamente los
cambios en la salida que provocan los cambios en las entradas de acuerdo con la
tabla de verdad de la puerta. En el segundo paso se retarda la seal que acabamos de
obtener (se desplaza a la derecha) Tp unidades de tiempo. El valor de la seal de
salida desde t
0
hasta t
0
+Tp no se conoce y por lo tanto: no se dibuja, o se dibuja un
valor desconocido (se ensombrece el espacio entre el 0 y el 1)
a
.
Cronograma de una puerta bsica en un solo paso. Dada la sencillez del proceso
anterior, tambin podemos ir dibujando directamente la seal de salida de izquierda
a derecha en un solo paso. Comenzamos dibujando un valor desconocido (sombras
entre el 0 y el 1) desde t
0
hasta t
0
+Tp y en ese momento pasamos a dibujar el valor de
la salida que nos indica la tabla de verdad para las combinaciones concretas de las
entradas en t
0
(Tp u.t. antes). Este valor de salida se mantiene durante un tiempo
igual al que transcurre desde t
0
hasta el primer cambio de las entradas (de una o de
varias entradas a la vez). Pasado este tiempo se cambia la salida de acuerdo con la
tabla de verdad para el valor de las seales de entrada despus del primer cambio (Tp
u.t. antes). Este valor de salida se mantendr durante un tiempo igual al que
transcurre desde el primer cambio de las entradas hasta que se produce el segundo
cambio,... y se repite el proceso hasta el final del cronograma (dibujando la salida
hasta Tp u.t. despus de t
f
).
b

3.12
42 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En nuestro ejemplo sencillo slo hay dos puertas. Para poder dibujar la salida de la And-2, que es la
salida del circuito (w), tenemos que conocer primero la salida de la Not (!x) que es una de sus entradas.
la nica seal interna es la salida de la Not que denotamos como !x. El cronograma para la seal !x(t) se
muestra en la figura 3.47, considerando que Tp(Not) = 10 u.t. Se ha dibujado un valor desconocido de
las entradas hacia el final del cronograma, cosa que podra no haberse hecho (como antes del inicio del
cronograma donde no se han dibujado valores desconocidos). Adems, se han dibujado las flechas
indicando los cambios de la seal de salida y quin los provoca, as como los tiempos de retardo.
Una vez tenemos el comportamiento temporal de !x ya podemos dibujar el de w = !xy ya que tambin
tenemos el cronograma de la seal de entrada y. Repetimos el proceso pero ahora aplicando los
cambios lgicos de la And-2 con la seal de entrada !x y la y. La seal w resultante se ve en la figura,
suponiendo que Tp(And-2) = 20 u.t.
Para centrar la atencin, en la figura 3.48 hemos dibujado solamente las seales de entrada y salida del
circuito, extrayndolas del cronograma anterior. Se observa que algunos cambios en las entradas no
producen cambios en la salida: por ejemplo cuando las entradas (x, y) pasan de (0, 0) a (1,0) o cuando
pasan de (1, 0) a (1, 1). Pero cuando pasan de (1, 1) a (0, 1) la salida pasa de 0 a 1 con un retardo de 30
u.t. Este valor (30 y no 0) es el tiempo de propagacin Tp
x-w
, ya que es x la que ha provocado el cambio.
Por qu en este circuito Tp
x-w
es distinto de Tp
y-w
? La respuesta est en la izquierda de la figura 3.48.
Porque el camino de la entrada x a la salida es ms largo (en tiempo) que el camino de la entrada y a la
salida. Para que un cambio en la seal x llegue hasta la salida w ha de propagarse primero hasta la
a. En algunos cronogramas hemos dejado el valor que tiene la salida en Tp, ya que suponemos que
al menos Tp u.t. antes del inicio del tiempo del cronograma las entradas valan lo mismo que al
inicio.
b. Cuando los valores de todas las entradas de la puerta no se conocen a la vez (en t
0
, como se ha
supuesto) sino que una entrada de una puerta tiene valor desconocido y la otra conocido, la
salida puede ser conocida ya que la And de 0 por cualquier valor es 0 y la Or de 1 ms cualquier
valor es 1. Esto se puede tener en cuenta para dibujar un 0 o un 1 en el cronogramaen vez del
valor desconocido, cuando esto sea posible.
t
x(t)
t
y(t)
t
w(t)
10
t
!x(t)
10
20 20
30
Tp
y-w
Tp
x-w
Fig. 3.47 Cronogram de un circuito que implementa la funcin w=!xy.
!x
x y
w
w
!xy
0
x y !x
0
0
1
1
0
1
0
1
1
1
0
0
1
0
0
Circuitos lgicos combinacionales 43
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
salida de la puerta Not, lo que requiere 10 u.t. y despus ha de atravesar la puerta And-2, lo que supone
otras 20 u.t ms, sumando un total de 30 u.t. Sin embargo, un cambio en y slo tiene que atravesar la
puerta And-2 para llegar a la salida, lo que hace en 20 u.t. De esto podemos concluir lo siguiente.
En un circuito combinacional construido internamente por puertas lgicas conectadas entre s
(u otros dispositivos combinacionales), el tiempo de propagacin de cada entrada a cada salida
no tiene porqu ser el mismo para cada pareja entrada-salida.
Otra conclusin parcial de este ejemplo sencillo (ya que en la siguiente seccin la matizamos) es que el
tiempo de propagacin de un circuito desde una entrada a una salida es, con lo que sabemos de
momento, el tiempo del camino que va desde esa entrada a esa salida. El tiempo del camino es la suma
de los tiempos de propagacin de las puertas por las que pasa el camino. As:
Tp
x-w
= Tp(Not) + Tp(And-2) = 10 + 20 = 30
Tp
y-w
= Tp(And-2) = 20
Pero, qu pasa cuando desde una entrada a una salida de un circuito hay varios caminos posibles? Esto
lo vemos a continuacin.
Circuitos con ms de un camino entre una entrada y una salida
Consideremos el circuito de la figura 3.49. Se han etiquetado (con A1 y A2) las dos puertas And-2 para
diferenciarlas. Al lado de cada puerta se indica su tiempo de propagacin, que son los de la Digit@Lib.
La figura muestra, adems, la tabla de verdad del circuito incluyendo las variables internas, que hemos
denominado con su expresin lgica en funcin de las entradas.
Vamos a analizar (sin estudiar todos los casos) el comportamiento temporal de la salida al cambiar la
entrada y para tres casos distintos. Para diferenciar cada uno de los tres casos se indica el valor de las
variables de entrada (x, y, z) antes del cambio y seguido de una flecha, los valores despus del cambio.
Caso 1: (1, 0, 0) -> (1, 1, 0)
En la figura 3.50 se muestra la tabla de verdad del circuito en la que se ha sombreado la fila anterior y
posterior al cambio de la seal y que pasa de 0 a 1, mientras la x y la z se mantienen estables a los
valores 1 y 0 respectivamente. Los cronogramas de las seales que son susceptibles de cambiar (no
hemos dibujado x y z ya que son constantes y dan poca informacin) se muestran a la derecha. A la
t
x(t)
t
y(t)
t
w(t)
20
30
Tp
y-w
Tp
x-w
Fig. 3.48 Cronograma de las entradas y salida de un circuito que implementa la funcin w=!xy.
x y
w
10
20
x y
w
20
44 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
vista de la forma de la seal y a lo largo del tiempo, se puede construir el cronograma de !y. Despus ya
podemos dibujar la salida de la puerta A1, x!y, porque ya conocemos x y !y a lo largo del tiempo. La
salida de A2, yz, vale 0 durante todo el tiempo ya que tambin lo vale la entrada z. Finalmente,
dibujamos la salida w, la Or de x!y e yz, que es igual a x!y (ya que yz vale 0 todo el rato) desplazada
20 u.t. a la derecha.
En el centro de la figura 3.50 hemos dibujado sobre el circuito, a mano alzada, el camino desde la
entrada y a la salida w que pasa por las puertas que han propagado el cambio de valor lgico de la
entrada a la salida. La suma de los tiempos de propagacin de las puertas por las que pasa este camino
es el tiempo del camino, que es tambin el tiempo de propagacin desde y a w para el caso de los
valores de las entradas considerados. Este tiempo es de 50 u.t. como se ve tambin en el cronograma:
T
camino1
= Tp(Not) + Tp(A1) + Tp(Or-2) = 10 + 20 + 20 = 50 u.t.
Fig. 3.49 Circuito con dos caminos de la entrada y a la salida y su tabla de verdad.
!y
x!y
yz
y z !y x
0 0 0 1
0 1 0 1
1 0 0 0
1 1 0 0
0 0 1 1
0 1 1 1
1 0 1 0
1 1 0 1
x!y
0
0
0
0
1
1
0
0
yz
0
0
0
1
0
0
0
1
w
0
0
0
1
1
1
0
1
y
!y
x!y
yz
w
10
0 50 100 150
20
20
50
Fig. 3.50 Caso 1: (1,0,0) -> (1,1,0). Tabla de verdad, camino y cronograma.
y z w x
0 0 0 0
0 1 0 0
1 0 0 0
1 1 0 1
0 0 1 1
0 1 1 1
1 0 1 0
1 1 1 1
50
Circuitos lgicos combinacionales 45
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Caso 2: (0, 1, 1) -> (0, 0, 1)
La figura 3.51 es como la figura 3.50 pero para el caso que en el que y pasa de 1 a 0, x se mantiene a 0
y z a 1. Se observa que el tiempo de propagacin de y a w es menor que para el caso anterior, ya que el
camino de y a w que ha propagado el cambio es ms corto en tiempo (no aparece la puerta Not).
T
camino2
= Tp(A2) + Tp(Or-2) = 20 + 20 = 40 u.t.
De estos dos casos estudiados ya podemos concluir lo siguiente.
El tiempo de propagar un cambio de una entrada a una salida de un circuito combinacional con
varias puertas (u otros dispositivos), puede depender de qu valores lgicos concretos tienen las
entradas del circuito que no cambian.
Cuando en un circuito el tiempo de propagar un cambio de una entrada concreta a una salida depende
de los valores de las otras entradas, que permanecen constantes, es porque o bien
hay varios caminos posibles de esa entrada a esa salida con distintos tiempos y unas veces el
cambio se propaga por un camino y otras por otro, o bien
solo hay un camino pero para ciertos valores la salida no debe cambiar, segn la tabla de verdad, y
no cambia (en este caso el tiempo desde el cambio de la entrada hasta que se ve el valor correcto en
la salida es 0) mientras que para otros valores la salida s que cambia (y tarda un tiempo distinto de
0 en propagarse).
Y qu pasa si el cambio de la entrada y se propaga a la vez por los dos caminos que hay de y a w?
Vemoslo a continuacin.
40
y
!y
x!y
yz
w
0 50 100 150
20
20
Fig. 3.51 Caso 2: (0,1,1) -> (0,0,1). Tabla de verdad, camino y cronograma.
y z w x
0 0 0 0
0 1 0 0
1 0 0 0
1 1 0 1
0 0 1 1
0 1 1 1
1 0 1 0
1 1 1 1
40
46 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Caso 3: (1, 1, 1) -> (1,0, 1)
Este caso es curioso ya que al variar y de 1 a 0, permaneciendo las otras dos entradas constantes al
valor 1, la salida no debera cambiar, segn la tabla de verdad de la figura 3.52, y sin embargo la salida
cambia dos veces, como se ve en el cronograma.
Ahora el cambio de y se propaga por los dos caminos que hay de y a w. Como el tiempo de atravesar el
camino 2 es menor que el del camino 1, los cambios propagados por el camino 2 provocan un cambio
temprano en la salida dejndola en un valor que no es el que indica la tabla de verdad para los nuevos
valores de las entradas. Cuando llega el cambio propagado con ms lentitud por el camino 1, la salida
se estabiliza al valor correcto y permanece estable (hasta nuevas modificaciones de las entradas).
Considerando solamente el modelo lgico de las puertas (puertas sin retardo), en este caso la salida w
no hubiera cambiado, se hubiera mantenido a 0. Este pulso no deseado, provocado por el tiempo de
retardo de las puertas y por la existencia de ms de un camino entre una entrada y una salida, se
denomina Glitch. De esto podemos concluir lo siguiente.
En un circuito combinacional con varias puertas (u otros dispositivos), puede ocurrir que un
cambio en una entrada, para ciertos valores concretos del resto de las entradas que no
cambian, produzca durante un lapso de tiempo cambios no deseados en la salida, aunque la
salida no deba cambiar segn indica el comportamiento lgico del circuito (su tabla de verdad).
No obstante, pasado este lapso de tiempo la salida siempre se estabiliza al valor lgico correcto
para los nuevos valores de las entradas.
La aparicin de pulsos no deseados puede ocurrir tambin cuando cambian a la vez varias entradas del
circuito. Veamos esto con un ejemplo.
y
!y
x!y
yz
w
10
0 50 100 150
20
20
20
20
50
Fig. 3.52 Caso 3: (1,1,1) -> (1,0,1). Tabla de verdad, caminos y cronograma.
y z w x
0 0 0 0
0 1 0 0
1 0 0 0
1 1 0 1
0 0 1 1
0 1 1 1
1 0 1 0
1 1 1 1
50
40
Circuitos lgicos combinacionales 47
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 12
La figura 3.53 muestra el cronograma en el que puede verse el pulso no deseado a la salida del
circuito que calcula !xy cuando las entradas (x, y) pasan de (0, 0) a (1,1). Segn indica la tabla de
verdad del circuito la salida no debera cambiar ante este cambio de las entradas, sin embargo se
produce un pulso no deseado de 10 u.t.: la diferencia entre el camino de x a w (30 u.t.) y el de y a w
(20 u.t.). El tiempo de estabilizarse la salida al valor correcto es el del camino ms largo (30 u.t.).
3.4.3 Tiempos de propagacin de un circuito combinacional
Hemos visto el comportamiento temporal de circuitos combinacionales formados por la interconexin
de puertas lgicas. Comportamientos similares encontramos en circuitos formados por dispositivos/
bloques combinacionales conectados entre s, ya que estos dispositivos estn construidos internamente
con puertas lgicas. Pero, por qu es tan importante el comportamiento temporal de los circuitos?
Importancia del tiempo de propagacin de los dispositivos combinacionales en un computador
En un computador, los dispositivos combinacionales son los encargados de procesar la informacin,
que se encuentra codificada de alguna forma en los bits de las seales de entrada del dispositivo. Por
ejemplo, si el dispositivo es un incrementador de nmeros naturales, con n seales de entrada (x
n-1
, x
n-
2
,..., x
1
, x
0
) y n+1 seales de salida (w
n
, w
n-1
,..., w
1
, w
0
), el circuito incrementa el valor del nmero
natural que se encuentra codificado en binario en los n bits de las entradas y lo muestra tambin
codificado en binario en los n+1 bits de las salidas. El circuito calcula W
u
= X
u
+ 1. Este circuito, que
se encuentra formando parte de un computador, ser usado mientras est funcionando el computador
para realizar el incremento de distintos nmeros. Por ejemplo, en un momento se usa el incrementador
para calcular el valor 325+1, por lo que las seales de entrada codificarn el 325, pero un momento
despus el incrementador debe ser usado para calcular otro valor, por ejemplo el 367+1. Las seales de
entrada del circuito deben cambiar para que el circuito efecte el nuevo clculo, deben pasar de
codificar el 325 a codificar el 367. Despus de este cambio en la entrada, la salida del circuito, que
x
!x
w = !xy
0 50 100 150
y
10
20
30
20
x y w
0
0
1
1
0
1
0
1
0
1
0
0
Fig. 3.53 Ejemplo de valor no deseado en la salida al cambiar a la vez dos entradas.
19
48 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
codificaba el valor 326, se va a modificar para pasar a codificar el valor 368, que es el resultado del
nuevo clculo.
No obstante, debido a la estructura concreta del circuito formado por puertas conectadas entre s (y que
veremos en el captulo siguiente), al tiempo de propagacin de las puertas y al hecho de que el tiempo
de propagacin de la seal desde una entrada a una salida es distinto para cada pareja entrada-salida,
resulta que antes de que se vea la codificacin del nmero 368 en los n-1 bits de la salida, se pueden
ver durante unos instantes una secuencia de distintos nmeros. Se pasa del 326 al 367, luego
aparecen el 366, 364, 360, 352 y finalmente se estabilizan las seales de salida al valor 368, que es el
resultado correcto del clculo. Si miramos el valor de las salidas antes de que se estabilicen estamos
viendo resultados incorrectos del clculo para el que fue diseado el circuito. Por esto es muy
importante saber el tiempo de propagacin de las seales en un circuito combinacional, para saber
cunto tiempo debemos esperar desde que cambian las seales de entrada a un nuevo valor hasta que se
estabilizan las seales de salida al valor correcto (hasta que podamos mirar los nuevos valores
correctos de las salidas).
Este mirar slo en ciertos momentos a lo largo del tiempo es lo que se hace en un computador, que es
un circuito secuencial sncrono. Los circuitos secuenciales sncronos los estudiamos en el captulo 4.
De momento decir que en los circuitos secuenciales sncronos hay una seal peridica, denominada
seal de reloj, Clk, (Clock). La figura 3.54 muestra la seal de reloj de un computador. Cada flanco
ascendente de la seal de reloj (cada vez que pasa de 0 a 1) indica el instante de tiempo en que se
miran (y se almacenan) los valores de las seales de salida de algunos dispositivos combinacionales
que forman el circuito (el computador). El periodo de la seal de reloj (el tiempo de cada ciclo de reloj,
desde un flanco ascendente al siguiente) se denomina tiempo de ciclo (160 u.t. para el reloj de la
figura).
Para calcular el tiempo de ciclo de la seal de reloj del computador hay que conocer los tiempos de
propagacin de todos los dispositivos combinacionales que lo forman. Si el tiempo de ciclo es muy
grande, si dejamos mucho tiempo entre flanco y flanco de reloj, el procesado de la informacin que
realiza el computador progresar muy lentamente. Pero si el tiempo de ciclo es muy pequeo y resulta
que estamos mirando y almacenando el valor de algunas seales antes de que se estabilicen al valor
correcto, el computador ir muy rpido pero no har los clculos deseados correctamente. As que es
muy importante que el tiempo de ciclo de la seal de reloj sea lo menor posible, pero que sea suficiente
para que las seales se estabilicen al valor correcto entre cada ciclo de reloj.
La figura 3.55 muestra el detalle de dos flancos ascendentes de reloj consecutivos y una seal de datos
(por ejemplo el bit 8 de la seal de salida del incrementador del que hemos hablado). Se ve como en el
primer flanco de reloj la seal w8 vale 0. En este momento empieza un nuevo ciclo y el incrementador
comienza a calcular otro resultado. La seal w8 pasa por varios valores no deseados, no correctos,
Clk
160
Fig. 3.54 Seal de reloj de un computador. Tiempo de ciclo de 160 u.t.
Circuitos lgicos combinacionales 49
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
hasta que se estabiliza al valor correcto, que para este calculo es w8=1. Cuando ya se ha estabilizado ya
puede llegar el flanco ascendente de final de ciclo, para mirar y guardar el resultado de este clculo.
Ahora el incrementador puede iniciar un nuevo clculo y se repite el proceso.
Usaremos lo que estamos aprendiendo sobre los tiempos de propagacin de los circuitos
combinacionales para calcular el tiempo de ciclo mnimo de los circuitos secuenciales que veremos en
el captulo 4. Vista la importancia que tienen los tiempos de propagacin de los combinacionales, para
terminar el captulo vamos a formalizar un poco el tema.
Tiempo de propagacin y camino crtico de una entrada a una salida de un combinacional
Vamos a formalizar algunas definiciones a partir de lo que hemos visto en las secciones anteriores
sobre el comportamiento temporal de los circuitos combinacionales.
Inicialmente definimos el tiempo de propagacin de un circuito combinacional desde una entrada
e a una salida s, Tp
e-s
, como el tiempo mximo que tarda en estabilizarse la salida s al valor correcto
(al que indica su tabla de verdad) ante un cambio en la entrada e, para los dos posibles cambios en e
(de 0 a 1 y de 1 a 0) y para todas las posibles combinaciones de valores de las otras entradas que no
cambian.
En el anlisis temporal del circuito de la figura 3.49 hemos encontrado que en el caso 1 y el caso 3 el
tiempo que tarda en estabilizarse la salida w ante un cambio en la entrada y es de 50 u.t., mientras que
en el caso 2 es de 40 u.t. No hemos estudiado todos los casos posibles de cambios. Si lo hiciramos, lo
cual supone un total de 8 casos, veramos que hay casos, como por ejemplo cuando y pasa de 0 a 1
mientras x y z permanecen a 0, caso (0, 0, 0) -> (0, 1, 0), en el que la salida no tiene que cambiar segn
el comportamiento lgico, y no cambia, no aparecen glitches. Para este caso podemos decir que la
salida se estabiliza inmediatamente, en 0 u.t. Si hacemos un anlisis exhaustivo de los 8 casos veremos
que el tiempo mximo es de 50 u.t. Por eso decimos que el tiempo Tp
y-w
, es de 50 u.t.
De hecho, para calcular el tiempo de propagacin de una entrada e a una salida s no haremos un
anlisis exhaustivo de los cambios de las entradas, ya que esto sera muy pesado. Primero
encontraremos todos los posibles caminos que van de e a s, calcularemos el tiempo de propagacin de
cada camino y nos quedaremos con el mximo de esos tiempos.
Clk
160
w
8
0 1
Fig. 3.55 Detalle de la seal de reloj y de una seal de datos sincronizada con ella
50 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Con esta ltima definicin es ms fcil calcular Tp
e-s
que con la que dimos al principio. Es ms fcil
calcular todos los caminos de e a s, sus tiempos de propagacin y elegir el mayor de todos ellos (el
tiempo del camino crtico de e a s) que hacer los cronogramas para los casos en que e pase tanto de 0 a
1 como de 1 a 0, considerando todos los otros posibles valores que pueden tomar el resto de seales de
entrada que no cambian. Por ejemplo, para un circuito con 3 entradas y una salida s, habra que
considerar 8 casos para cada entrada e de la que queramos calcular Tp
e-s
.
Para calcular el Tp
y-w
del circuito de la figura figura 3.49 tenemos que encontrar los posibles caminos
de y a w, que son 2, tal como se han dibujado sobre el circuito de la figura 3.52. Podemos denotar cada
uno de estos caminos de la entrada y a la salida w como: (La puerta Not y la Or no tienen nombre
especfico, ya que slo hay una de cada tipo):
Camino 1:
Camino 2:
El tiempo de propagacin del primer camino, Tp1, y del segundo, Tp2, como ya se ha visto es:
Tp1 = Tp(Not) + Tp(A1) + Tp(Or) = 10 + 20 + 20 = 50 u.t.
Tp2 = Tp(A2) + Tp(Or) = 20 + 20 = 40 u.t.
El camino crtico de y a w es el camino 1, ya que es el que tiene mayor tiempo. As, Tp
y-w
= 50 u.t.
Un camino desde la entrada e a la salida s de un circuito combinacional es una
trayectoria o recorrido vlido
a
desde la entrada e a la salida s, pasando por
dispositivos y las lneas que los conectan.
Puede haber varios caminos de una entrada e a una salida s. Para cada camino
definimos el tiempo de propagacin del camino como la suma de los tiempos de
propagacin de las puertas (o en general dispositivos combinacionales) que se
encuentran en el camino.
b
Definimos tambin el camino crtico de la entrada e a la salida s de un circuito
combinacional como el camino de e a s con mayor tiempo de propagacin (el
camino ms largo en tiempo).
El tiempo de propagacin desde una entrada e a una salida s, Tp
e-s
, de un circuito
combinacional es el tiempo del camino crtico de e a s.
a. El recorrido es vlido si cuando atraviesa un dispositivo sale de l por una de sus salidas (nunca debe salir por
una entrada). Si se sigue esta regla y se trata de un circuito combinacional vlido, como la trayectoria empieza
en una entrada del circuito, siempre se entrar a un dispositivo por una de sus entradas.
b. En nuestro modelo, ni las lneas ni las conexiones entre ellas introducen retardo.
3.13
y Not A1 Or w
y A2 Or w
Circuitos lgicos combinacionales 51
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 13 Tp
e-s
de un circuito va el camino crtico de e a s
Consideremos el circuito combinacional con tres entradas y una salida de la figura 3.56 formado
por puertas bsicas y otros bloques combinacionales. En la parte inferior de la figura se indica el
tiempo de propagacin de la puerta y, mediante tablas, el tiempo de propagacin de cada entrada
(columna) a cada salida (fila) de los bloques. Para los bloques con varias entradas y varias salidas se
especifica el tiempo de cada entrada a cada salida mediante una tabla de dos dimensiones. Por
ejemplo, Tp
b-d
(CLC1) = 10 u.t.
Vamos a calcular Tp
x-w
. Para ello hay que calcular todos los posibles caminos vlidos desde x a w y
luego calcular los tiempos de propagacin de cada camino y quedarnos con el camino de mayor
tiempo. Este ser el camino crtico de x a w y su tiempo el Tp
x-w
. que buscamos.
Un ejemplo de camino y el clculo de su tiempo se muestra en la figura 3.57. Pero, Cmo
encontramos todos los caminos vlidos que hay de x a w?
Para encontrar todos los caminos podemos construir un rbol como el de la figura 3.58.
Comenzamos por la raz del arbol: la entrada x. La entrada x est conectada con la entrada c del
bloque CLC1. Ahora dibujamos tantas ramas del rbol como salidas tiene el dispositivo CLC1.
a b c
d e
f g
h i
Tp d e
a 20 25
b 10 15
c 15 20
Tp h i
f 10 5
g 5 10
Tp = 20
a
b
c
d
e
a
b
c
d
e
f
g
h
i
x
y
z
w
CLC2 CLC3
CLC1
A2
A1
Fig. 3.56 Circuito combinacional formado por puertas y otros dispositivos combinacionales.
Tiempos de propagacin de los dispositivos involucrados
T= Tp
c-d
(CLC1) + Tp
f-i
(CLC2) + Tp
c-d
(CLC3) + Tp(And-2) = 15+5+15+20 = 55
Camino: x c-CLC1-d f-CLC2-i c-CLC3-d A2 w
a
b
c
d
e
a
b
c
d
e
f
g
h
i
x
y
z
w
CLC2 CLC3
CLC1
A2
A1
Fig. 3.57 Un posible camino de x a w dibujado sobre el circuito. Notacin del camino y clculo
del tiempo de propagacin del camino.
52 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Dibujamos 2 ramas, una para la salida e y otra para la d. Sobre cada una de estas dos ramas
anotamos su tiempo de propagacin, de c a e (20) y el de c a d (15). Esto nos ayudar a calcular el
tiempo de cada camino. Ahora, como de la salida d (que es un nodo del rbol) se puede ir a la
entrada f del CLC2 o a una de las entradas de la puerta A1, ponemos dos ramas que salen del nodo
d. Vamos construyendo de esta forma el rbol y anotando los tiempos de propagacin sobre las
ramas del rbol. Finalmente todas las ramas terminan en un nodo diferente del rbol, pero todos
ellos representan a la salida w, que es el final de cada camino. Vemos que hay 10 caminos
diferentes.
Podemos calcular el tiempo de propagacin de cada camino viajando de la raz a cada hijo final del
rbol y sumando los tiempos de los arcos. A la derecha de la figura se muestra el tiempo de cada
camino. El camino crtico es el camino con tiempo mayor, en este caso 80 u.t. En este caso slo hay
un camino crtico, pero podra haber, por ejemplo, dos caminos distintos con tiempo 80 y los dos
seran caminos crticos. En la figura se ha pintado el camino crtico sobre un esquema del circuito.
Ahora podemos asegurar que el tiempo de propagacin de x a w de este circuito es de 80 u.t.
Para calcular el Tp
y-w
y el Tp
z-w
habra que repetir un proceso equivalente para cada caso. No
obstante, para circuitos ms sencillos no hace falta ser tan exhaustivo: es cuestin de calcular el
tiempo solamente de unos cuantos caminos: los que ya a ojo se intuyan como los ms largos en
tiempo.
Tiempo de propagacin de un circuito
En general, en un circuito o dispositivo/bloque combinacional con varias entradas y varias salidas el
tiempo de propagacin de cada pareja entrada-salida concreta no tiene porqu ser el mismo. Definimos
tiempo de propagacin del circuito como el tiempo de propagacin de la pareja entrada-salida con
Fig. 3.58 Arbol para encontrar todos los caminos vlidos de x a w y sus tiempos de
propagacin. Camino crtico dibujado sobre el esquema y su tiempo de propagacin de 80 u.t.
x c
e
d
g
f
i
h
i
h
c
b
c
b
e
d
w
w
e
d
w
w
e
d
w
w
e
d
w
w
a
e
d
w
w
CLC1
CLC2
CLC3 A2
A1
20
15
5
10
5
10
20
20
15
15
10
20
15
15
10
25
20
20
20
20
20
20
20
20
20
20
20
70
65
60
55
60
55
60
55
80
75
a
b
c
d
e
a
b
c
d
e
f
g
h
i
x
y
z
w
CLC2 CLC3
CLC1
A2
A1
Camino crtico
Tp
x-w
= 80
20
Circuitos lgicos combinacionales 53
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
mayor tiempo de propagacin de esa entrada a esa salida. De la misma forma podemos hablar de
camino crtico de un circuito combinacional, para referirnos al camino crtico de la entrada a la
salida que tiene mayor tiempo de propagacin.
En algunas ocasiones, para simplificar el clculo del tiempo de propagacin de una entrada a una salida
de un circuito formado por bloques interconectados y no tener que recordar todos los tiempos de
propagacin de todas las parejas entrada-salida de cada bloque que forma el circuito, daremos solo el
tiempo de propagacin de cada bloque. En estos casos estamos suponiendo que los tiempos de
propagacin de cualquier entrada a cualquier salida de un bloque son el mismo, aunque realmente no
sea as. Procediendo de esta forma calcularemos un tiempo de propagacin de una entrada a una salida
del circuito que ser, en general, mayor que el que hubiramos obtenido si hubiramos usado los
tiempos de propagacin de cada entrada a cada salida de cada bloque.
APENDICE 1
(En construccin)
54 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejercicios
1. Definiciones bsicas ( 3.1, nivel B1, seccin 3.1.1)
Definid con palabras propias los siguientes conceptos: a) circuito lgico combinacional, b) variable
lgica binaria, c) funcin lgica y d) tabla de verdad.
2. Puertas lgicas ( 3.3, nivel B1, seccin 3.1.3)
Dibujad la puerta lgica adecuada para implementar cada una de las siguientes operaciones lgicas:
a) x = z k; b) p = q + r; c) v = !w. Etiquetad, con el nombre correspondiente, cada entrada y salida
de cada puerta. Junto a cada puerta especificad su tabla de verdad indicando correctamente los
nombres de las variables en la cabecera de la tabla.
3. Reglas de interconexin para combinacionales ( 3.4, nivel B2, seccin 3.1.4)
Indicad si el siguiente esquema lgico es vlido para un circuito combinacional. En caso de que no
lo sea, marcad la parte o las partes del esquema que lo invalida e indicad en cada caso cul de las
tres reglas de interconexin para que el circuito sea vlido no se cumple. El dispositivo
combinacional Brm tiene 3 entradas y 3 salidas. Las 3 salidas estn en el lado de la caja cercano a la
etiqueta Brm. La forma de flecha de los conectores indica cules son las entradas del circuito (a la
izquierda del esquema) y cules las salidas (a la derecha).
4. Anlisis por filas ( 3.5, nivel B2, seccin 3.2.1)
A partir del esquema lgico del siguiente circuito combinacional escribid la fila 2 y la 7 de la tabla
de verdad del circuito. La tabla de verdad del dispositivo (bloque) F se da en la figura. Esto es, qu
valor toman las salidas w1 y w0 para las dos combinaciones de valores de las entradas siguientes: a)
x
3
= 0, x
2
= 0, x
1
= 1 y x
0
= 0, y b) x
3
= 0, x
2
= 1, x
1
= 1 y x
0
= 1.
Brm
B
r
m
1
z1 z0
TV bloque F
0
1
0
0
0
0
1
1
1
0
1
0
1
1
0
0
y0 y1
x1
x2
x0
w1
w0
x3
y0
y1
z0
z1
F
Circuitos lgicos combinacionales 55
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5. Anlisis por columnas ( 3.5, nivel B2, seccin 3.2.2)
Escribid la tabla de verdad completa del circuito combinacional del ejercicio 4.
6. Expresin lgica en suma de minterms ( 3.6.1, nivel B2, seccin 3.3.4)
Escribid las expresiones lgicas en suma de minterms de las dos salidas del circuito del ejercicio 4,
cuya tabla de verdad habis obtenido al realizar el ejercicio 5.
7. Sntesis en suma de minterms ( 3.6.2, nivel B2, seccin 3.3.4)
Dibujad el esquema lgico que resulta de la sntesis en suma de minterms del circuito del ejercicio
4, cuya expresin en suma de minterms habis obtenido en el ejercicio 6.
8. Expresiones lgicas y sntesis en suma de minterms ( 3.6, nivel B2, seccin 3.3.4)
Escribid las expresiones en suma de minterms de las salidas del dispositivo F cuya tabla de verdad
se define en el ejercicio 4. Dibujad el esquema lgico que implementa F en suma de minterms.
9. Decodificador con entrada de enable ( 3.2, 3.7.2 y 3.6.2, nivel B2, seccin 3.1.2,
seccin 3.3.5 )
Definimos el nuevo dispositivo combinacional denominado Decodifica-
dor con entrada de enable de n entradas (a
n-1
,..., a
1
, a
0
) ms la entrada
de enable, e, y 2
n
salidas (d
2
n-1,..., d
1
, d
0
), como sigue. Cuando e = 0
todas las salidas valen 0 mientras que cuando vale 1 la funcionalidad es
como la del decodificador que no tiene entrada de enable. As, la salida d
i
es el producto lgico de e por la funcin minterm i de las n entradas
d
i
= e m
i
(a
n-1
,..., a
1
, a
0
)
Escribid la tabla de verdad del decodificador con entrada de enable para n = 2 cuyo smbolo se
muestra en la figura y su implementacin en suma de minterms
10. De la descripcin funcional a la tabla de verdad ( 3.2, nivel B2, seccin 3.1.2)
Escribir la tabla de verdad del circuito combinacional
denominado Cnf (Codificador de nivel de fallo) que tiene
3 entradas (a, b, c) y 2 salidas (z
1
, z
0
). Cada entrada de
Cnf viene de la salida de un sensor que detecta un tipo
diferente de fallo en un sistema electro-mecnico (0 indica
que el sensor no detecta fallo y 1 que s). Los tres tipos de
fallo tienen el mismo nivel de importancia. Las salidas del
circuito Z = (z
1
, z
0
) codifican en binario un nmero natu-
ral Z
u
que indica el nmero de fallos que hay en el sistema.
11. De la descripcin funcional a la tabla de verdad ( 3.2, nivel B2, seccin 3.1.2)
Se dispone de un visualizador de 7 segmentos que es un dispositivo con 7
seales binarias de entrada (s
6
, s
5
, ..., s
0
). y 7 segmentos luminosos
dispuestos formando un 8 con trazos rectos, como muestra la figura.
Cuando la seal s
k
vale 1 el segmento k se ilumina y cuando vale 0 no. Por
ello, para visualizar el nmero 3, como se muestra en la figura, las entradas
deben valer (s
6
, s
5
, ..., s
0
) = (1 1, 0, 1, 1, 0, 1). Con este dispositivo se
pueden visualizar los dgitos decimales, como se ve en la figura.
0
0
1
e
3
2 1
Dec
e
a1
a0
d3
d2
d1
d0
Cnf
Sistema
electro-
mecnico
z
0
z
1
z
0
z
1
a
b
c
0
2 1
4 5
3
6
s
0
s
1
s
2
s
3
s
4
s
5
s
6
56 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Escribid la tabla de verdad del circuito Codificador de binario a 7 segmentos, Cb7, que tiene dos
entradas Z=(z
1
, z
0
) y 7 salidas (s
6
, s
5
, ..., s
0
). El circuito obtiene el cdigo 7 segmentos a partir del
nmero natural Z
u
codificado en binario en sus entradas
Conectando las salidas del circuito Cnf del ejercicio 10 con las entradas del Cb7 y las salidas del
Cb7 con las entradas del visualizador 7 segmentos como se muestra en la siguiente figura, se puede
visualizar el nivel de fallo del sistema electro-mecnico del ejercicio 10.
12. De la descripcin funcional a la tabla de verdad ( 3.2, nivel B2, seccin 3.1.2)
Escribid la tabla de verdad de un circuito
codificador del nivel de fallos en 7 segmentos,
Cnf7, que tiene tres entradas (a, b, c) y 7
salidas (s
6
, s
5
, ..., s
0
) que sustituya a los
circuitos Cnf y Cb7 del circuito del ejercicio
11 manteniendo la misma funcionalidad.
13. De la descripcin funcional a la tabla de verdad ( 3.2, nivel B2, seccin 3.1.2)
Escribid la tabla de verdad de cada uno de los siguientes circuitos combinacionales con cuatro
entradas (x
1
, x
0
, y
1
, y
0
) y dos salidas (w
1
, w
0
) cuya funcionalidad describimos mediante un
pseudo-lenguaje de alto nivel. Para describir la funcionalidad consideramos que los vectores de bits
X = (x
1
, x
0
), Y = (y
1
, y
0
) y W = (w
1
, w
0
) representan en binario a los nmeros naturales X
u
, Y
u
y
W
u
respectivamente (de esta forma podemos usar X
u
, Y
u
y W
u
en expresiones aritmticas con
operadores sobre nmeros naturales). Las salidas de cada circuito se calcula como (en algn caso
usamos la operacin mdulo: siendo n mod k el resto de la divisin entera con resto positivo de n
entre k. Por ejemplo: 3 mod 4 = 3, 4 mod 4 = 0, 6 mod 4 = 2, -2 mod 4 = 2)
a) if (X
u
> Y
u
) W
u
= 1 else W
u
= 2;
b) W
u
= (X
u
+ Y
u
) % 4;
c) if (X
u
== 0) W
u
= 0;
else if (X
u
== 1) W
u
= Y
u
;
else if (X
u
== 2) W
u
= (Y
u
+ 1) % 4;
else if (X
u
== 3) W
u
= (Y
u
- 1) % 4;
Cb7 Cnf
Sistema
electro-
mecnico
s
0
s
1
s
2
s
3
s
4
s
5
s
6
s
0
s
1
s
2
s
3
s
4
s
5
s
6
z
0
z
1
z
0
z
1
a
b
c
Cnf7
Sistema
electro-
mecnico
s
0
s
1
s
2
s
3
s
4
s
5
s
6
s
0
s
1
s
2
s
3
s
4
s
5
s
6
a
b
c
Circuitos lgicos combinacionales 57
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
14. Xor, Decodificador, multiplexor ( 3.7, nivel B1, seccin 3.1.2, seccin 3.2.1, seccin 3.3.4,
seccin 3.3.5)
Dibujad el smbolo, representad la tabla de verdad, dad una expresin lgica de cada una de las
salidas, dibujad el esquema lgico interno usando puertas Not, And y Or y describid con palabras
propias la funcionalidad de cada uno de los siguientes bloques combinacionales:
a) puerta Xor de dos entradas (Xor-2),
b) multiplexor 2-1 (Mx-2-1).
c) decodificador 2-4 (Dec-2-4), y
15. Sntesis con decodificador y puertas Or ( 3.8, nivel B2, seccin 3.3.5)
Dibujad el esquema lgico con un decodificador y puertas Or del dispositivo Cnf definido en el
ejercicio 10, que es donde hemos obtenido su tabla de verdad.
16. ROM ( 3.9, nivel B1, seccin 3.3.6)
Describid con palabras propias la funcionalidad de una memoria ROM. Dibujad el esquema lgico
interno que modela de forma sencilla una memoria ROM de 2 entradas y 2 salidas mediante un
decodificador, una matriz de interconexin y puertas Or.
17. Tamao de la ROM ( 3.10, nivel B1, seccin 3.3.6)
Especificad el tamao mnimo de la ROM necesaria para implementar el dispositivo Cb7 definido
en el ejercicio 11, que es donde hemos obtenido su tabla de verdad. Indicad el tamao en nmero de
palabras por nmero de bits por palabra.
18. Sntesis con una ROM ( 3.11, nivel B2, seccin 3.3.6)
Dibujad el esquema lgico con una ROM del dispositivo Cnf7 definido en el ejercicio 12, que es
donde hemos obtenido su tabla de verdad.
19. Cronograma ( 3.12, nivel B2, seccin 3.4.2)
Dibujad, para el circuito de la figura 3.17, un cronograma con todas las seales internas (a, b,..., e)
y la seal de salida w, considerando que las seales de entrada x e y tienen las dos el mismo
comportamiento, que se muestra en el cronograma. Suponed Tp(Not) = 10, Tp(And-2) = 20,
Tp(Or-2) = 20 u.t
20. Caminos crticos y tiempos de propagacin ( 3.13, nivel B2, seccin 3.4.3)
Indicad el camino crtico (o uno de ellos, si hay varios) y
los tiempos de propagacin desde cada entrada a cada
salida del circuito combinacional del ejercicio 4.
Considerad Tp(Not) = 10, Tp(And-2) = 20, Tp(Or-2) =
20, Tp(Xor-2) = 50 u.t. y los tiempos de propagacin del
bloque F desde cada entrada a cada salida de la tabla.
[ \

Tp(F)
y-z
z
0
z
1
y
0
30 70
y
1
70 80
58 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Bloques aritmticos combinacionales para nmeros naturales 1
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4 Bloques aritmticos combinacionales para nmeros naturales
Juan J. Navarro
Toni Juan
Primera versin: 09-2007, versin actual: 03-2011
4.1 Introduccin
En el captulo 2 hemos tratado un mtodo sistemtico de sintetizar circuitos combinacionales a partir
de su tabla de verdad: obtencin de la expresin en suma de minterms para cada salida y dibujo del
esquema lgico que es una implementacin directa de estas expresiones con puertas Not, And y Or, o
con un decodificador y puertas Or, o con una ROM. No obstante, este mtodo no sirve cuando se trata
de circuitos con muchas entradas. Por ejemplo, un sumador de dos nmeros naturales representados en
binario con 16 bits cada uno. El sumador combinacional tiene 32 bits de entrada, 16 para codificar cada
sumando, y 16 bits (o 17) de salida, para codificar el resultado. Una tabla de verdad que especifique
este circuito tiene 2
32
filas y 16 (o 17) columnas de salida. Las salidas no son un problema, pero las
entradas s: el nmero de filas crece exponencialmente con el nmero de entradas del circuito. Este
sumador requiere una tabla de verdad con ms de 4.000 millones de filas, lo que es claramente
irrealizable. Pero no slo es imposible dibujar la tabla de verdad, lo peor es tener que implementar los
cientos o miles de millones de posibles minterms de 32 entradas; y esto solo para un sumador...
En un computador se realizan diferentes operaciones sobre nmeros codificados con bastantes bits (16
en nuestro computador, pero lo usual son 32 o 64 bits por nmero) y por lo tanto no podemos usar el
mtodo de sntesis del captulo anterior. Cmo lo haremos?
Sigamos con el ejemplo del sumador. Pensemos cmo sumamos en decimal con varios dgitos.
Sabemos de memoria el resultado de sumar cualquier par de nmeros (por ejemplo: 16965 + 94672)?
La respuesta es no! Slo sabemos de memoria la suma de los nmeros de un dgito, por ejemplo: 5 + 2
= 7, 6 + 7 = 13, ... Para nmeros de varios dgitos aplicamos un algoritmo, esto es, los pasos a seguir
para encontrar cada uno de los dgitos que representan el resultado. Aplicamos tantos pasos como
dgitos tienen los nmeros y en cada paso sumamos los dos dgitos de ese paso ms el posible acarreo
(lo que nos llevamos) del paso anterior. Slo necesitamos saber de memoria el algoritmo y la suma de
dos dgitos cualesquiera.
2 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En la implementacin del sumador binario que hacemos en este captulo usamos un algoritmo similar
al que ya conocemos para sumar en decimal, pero adaptado a binario. Primero definiremos el
dispositivo Full-adder, capaz de sumar dos dgitos (dos bits, en el caso binario) ms un posible acarreo;
que es lo que se hace en cada paso del algoritmo. El Full-adder slo tiene 3 bits de entrada (y dos de
salida), por lo que s podemos implementarlo a partir de su tabla de verdad, usando el mtodo
sistemtico estudiado en el captulo anterior. Una vez tengamos este dispositivo lo replicaremos tantas
veces como bits tienen los nmeros a sumar y conectaremos adecuadamente los Full-adders para que
realicen el algoritmo. Esto no es un diseo sistemtico como los del captulo anterior, es un diseo ad-
hoc, y por ello es ms difcil, requiere experiencia en diseos parecidos, tener ideas nuevas, etc.
En este captulo vamos a ver unos cuantos ejemplos de diseo de circuitos combinacionales que
procesan nmeros de n bits (n=16, si no se indica lo contrario). Estos circuitos consistirn en la
interconexin de bloques o dispositivos combinacionales ms pequeos. En algunos casos, cada uno
de estos bloques estar formado, a su vez, por la interconexin de bloques todava ms pequeos. Esto
es, haremos un diseo ad-hoc a bloques con varios niveles de bloques. Slo cuando lleguemos a un
bloque que tenga pocas entradas, por ejemplo 4 o menos, lo implementaremos con el mtodo
sistemtico que conocemos: en suma de minterms.
Concretamente, tratamos las operaciones aritmticas bsicas sobre nmeros naturales representados en
binario: suma (seccin 4.2). resta (4.3), multiplicacin y divisin por potencias de dos (4.4 y 4.5) y
comparaciones (4.6). Para cada operacin, primero obtenemos el algoritmo aritmtico: procedimiento
para encontrar los bits que representan el resultado de la operacin a partir de los bits que representan a
los operandos. Aunque desde pequeos conocemos estos algoritmos para la representacin decimal,
aqu los obtenemos demostrando su validez para el sistema convencional en base b (o directamente
para el caso binario, b = 2). Despus, para cada algoritmo dibujamos el esquema lgico de un circuito
combinacional que implementa el algoritmo en binario. Adems, en este captulo, vemos otros bloques
que no son aritmticos: operadores lgicos bit a bit sobre vectores de n bits (seccin 4.7) o
multiplexores grandes construidos con multiplexores ms pequeos (4.8). Por ltimo, en la
seccin 4.10 diseamos nuevos bloques aritmticos usando los bloques bsicos vistos en las secciones
anteriores.
4.2 El sumador binario
En la seccin 4.2.1 obtenemos el algoritmo aritmtico de la suma de dos nmeros naturales y en la
4.2.2 lo implementamos conectando Full-adders en propagacin del acarreo. Por ltimo, en la
seccin 4.2.2 se implementa el bloque Full-adder mediante dos Half-adders y una puerta Or-2 y el
Half-adder mediante una puerta And-2 y una Xor-2. Con ello vemos el bloque sumador como un
ejemplo de diseo ad-hoc con tres niveles de bloques internos.
Bloques aritmticos combinacionales para nmeros naturales 3
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.2.1 Algoritmo aritmtico de suma en base b
Planteamiento del problema de la suma
Dados dos vectores de n dgitos, e con
para i = 0, ..., n-1, que representan a los nmeros naturales X
u
e Y
u
en el sistema
convencional en base b, queremos encontrar los dgitos del vector W tales que: W
u
= X
u
+ Y
u
.
Lo primero que nos planteamos es cuntos dgitos tiene que tener W para poder representar a X
u
+ Y
u
.
Como el rango de posibles valores de X
u
e Y
u
es , la suma W
u
= X
u
+ Y
u
estar en el
rango . Esto nos indica que el resultado W
u
necesita, en el peor de los casos, un vector
de n+1 dgitos ( ), ya que : con .
As que realizar la suma consiste en encontrar w
i
para i = 0, ..., n, tales que cumplan
(EQ 1)
y que los valores w
i
sean dgitos vlidos en base b,
(EQ 2)
Una solucin en dos fases al problema de la suma
La EQ (1) define el problema de encontrar n +1 incgnitas que cumplen una sola ecuacin. Este
problema tiene infinitas soluciones (es un sistema de ecuaciones indeterminado). Pero si aplicamos la
restriccin que define la EQ (2) sobre los posibles valores que pueden tener los dgitos , la solucin
es nica, como veremos a continuacin. Vamos a encontrar esta solucin en dos fases. En la primera
fase encontramos una solucin a la EQ (1) y en la segunda transformamos en n pasos la solucin
anterior para que cumpla adems la restriccin de la EQ (2).
Fase 1. Manipulando la EQ (1) encontramos la siguiente expresin equivalente:
Observando esta ecuacin podemos encontrar una solucin trivial, de las infinitas que hay que no
tienen porqu cumplir la EQ (2), y que denotamos con un sombrerito:
y
X x
n 1
x
n 2
= x
2
x
1
x
0
Y y
n 1
y
n 2
= y
2
y
1
y
0
x
i
, y
i
0 ..., b-1 , { }
0 X
u
, Y
u
b
n
1
0 W
u
2b
n
2
W w
n
w
n 1
w
n 2
= w
2
w
1
w
0
b
n 1 +
1 2b
n
2 b
n
1 > > 0 w
i
b 1
w
i
b
i
i 0 =
n

x
i
b
i
i 0 =
n 1

y
i
b
i
i 0 =
n 1

+ =
0 w
i
b 1
w
i
w
n
b
n
w
i
b
i
i 0 =
n 1

+ x
i
y
i
+ ( )b
i
i 0 =
n 1

=
w

i
x
i
y
i
+ = para 0 i n 1 w

n
0 =
4 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La siguiente tabla muestra el resultado de aplicar la primera fase del algoritmo de suma en base b =10 y
n = 4, a los vectores de dgitos X = 6493 e Y = 8199.
Posible transformacin de la solucin de la primera fase. El valor de los dgitos encontrados puede
no ser menor que la base b (de hecho: ), por lo que la solucin no siempre cumple la EQ
(2). Si nos fijamos en un dgito k que no cumpla la EQ (2), , y deseamos una solucin en la que
al menos el dgito k cumpla con la EQ (2) adems de cumplir con la EQ (1), solamente tenemos que
modificar el valor del dgito y del de la solucin anterior. Para que la nueva solucin, que
denominamos ,cumpla la EQ (1) dejamos todos los dgitos iguales a la
anterior solucin excepto el k y el k+1. Sumamos y restamos la base b al dgito k y manipulamos la
expresin original como sigue (slo mostramos los sumandos de los dos dgitos que manipulamos):
La nueva solucin es:
;
y
.
Esto hace que la nueva solucin cumpla la EQ (1) y que el nuevo dgito k cumpla tambin la EQ (2). El
valor que se suma al dgito k+1 se denomina acarreo, o en ingles carry, y se denota con la letra .
A continuacin encontramos otra solucin en la que, por ejemplo, el dgito k = 1 cumple con la EQ (2).
Fase 2. Consiste en aplicar la transformacin que acabamos de ver, empezando por el dgito de menor
peso (k = 0) hasta llegar al de ms peso (k = n-1), siempre que el valor del dgito resulte mayor o igual
a la base, b. De esta forma obtenemos la solucin que cumple la EQ (1) y EQ (2) a la vez. La siguiente
tabla muestra el algoritmo de suma en dos fases para el ejemplo anterior, detallando cada paso de la
segunda fase en una fila distinta (desde k = 0 a k = n-1).
Dgito 4 Dgito 3 Dgito 2 Dgito 1 Dgito 0
X 6 4 9 3
Y 8 1 9 9
0 14 5 18 12
Dgito 4 Dgito 3 Dgito 2 Dgito 1 Dgito 0
0 14 5 18 12
0 14 6 8 12
W

0 w

i
2b 2
w
k
b
w
k
w
k 1 +
W

n
w

n 1
w

n 2
= w

2
w

1
w

0
w

k 1 +
b
k 1 +
w

k
b
k
+ w

k 1 +
b
k 1 +
w

k
b b + ( )b
k
+ w

k 1 +
b
k 1 +
w

k
b ( )b
k
b
k 1 +
= + + = =
= w

k 1 +
1 + ( )b
k 1 +
w

k
b ( )b
k
+
w

i
w

i
x
i
y
i
+ = = para i 0, ..., k 1 , k 2 + , ..., n 1; w

n
0 = =
w

k
w

k
b x
k
y
k
b + = =
w

k 1 +
w

k 1 +
1 + x
k 1 +
y
k 1 +
1 + + = =
c
k 1 +
W

Bloques aritmticos combinacionales para nmeros naturales 5


Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Es interesante ver que si la suma de los dos dgitos de la posicin k ms el posible acarreo que viene de
la posicin anterior es mayor o igual que la base, , siempre se puede convertir
en un dgito restandole el valor b. Esto es as, porque el mximo valor posible de un dgito
de entrada es b-1 y el mximo valor del acarreo es 1, por lo que el mximo valor de es 2b-
1 (como en el dgito 1 del ejemplo). As, al restarle b a este valor da b-1, que es un dgito vlido, pues
es menor que b.
Hemos usado este algoritmo en dos fases para entender la suma. Pero nosotros ya sabamos sumar en
decimal con un algoritmo con una sola fase de n pasos, en la que se mezclan las dos fases anteriores.
Expresamos el algoritmo de suma en n pasos (k = 0, ..., n-1) en un pseudolenguaje de alto nivel.
Dgito 4 Dgito 3 Dgito 2 Dgito 1 Dgito 0
6 4 9 3
8 1 9 9
0 14 5 18 12
k =0 0 14 5 19 2
k =1 0 14 6 9 2
k = 2 0 14 6 9 2
k = 3 1 4 6 9 2
Algoritmo de suma con propagacin del acarreo en el sistema convencional en
base b. Para sumar en binario particularizar para b = 2. Dados los n dgitos de X e Y
(x
i
e y
i
para i = 0, ..., n-1) el siguiente algoritmo obtiene los n+1 dgitos de W (w
i
para
i = 0, ..., n-1) tales que W
u
= X
u
+ Y
u
. (los operadores + y - son la suma y la resta
aritmticas sobre nmeros naturales).
;
for (k = 0; k < n; k = k + 1){
;
;
if ( ) {
;
;
}
}
;
X
Y
W

W
x
k
y
k
c
k
+ + b
x
k
y
k
c
k
+ +
x
k
y
k
c
k
+ +
4.1.1
c
0
0 =
w
k
x
k
y
k
c
k
+ + =
c
k 1 +
0 =
w
k
b = >
w
k
w
k
b =
c
k 1 +
1 =
w
n
c
n
=
6 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En la tabla vemos los 4 pasos de la suma con propagacin del acarreo para el ejemplo anterior.
En la figura 4.1a se muestra una tabla sencilla para aplicar el algoritmo de suma, que es equivalente a la
anterior pero ahora se han juntado las n filas de los acarreos (de k=0 a n-1) en una nica fila. Esta
representacin es ms cercana a la que solemos usar al sumar con lpiz y papel (figura 4.1b).
Ejemplo 1
Aplicamos el algoritmo aritmtico de suma con propagacin del acarreo en dos casos: a) para
realizar la suma de dos nmeros representados en hexadecimal por los vectores de dgitos
X=0xB92C e Y=0x69E1 y b) para binario con X=1011 e Y=1001. Las tablas de la figura 4.2
muestran la solucin (sin mostrar los acarreos).
Dgito 4 Dgito 3 Dgito 2 Dgito 1 Dgito 0
X 6 4 9 3
Y 8 1 9 9
k =0 w
0
2
c
1
1
k =1 w
1
9
c
2
1
k = 2 w
2
6
c
3
0
k = 3 w
3
4
c
4
1
W 1 4 6 9 2
a)
6 4 9 3
+ 8 1 9 9
1 0 1 1 0
1 4 6 9 2
Fig. 4.1 Tablas sencillas para la aplicacin del algoritmo de suma con propagacin del
acarreo en decimal. a) mostrando los acarreos y b) sin mostrarlos
b)
6 4 9 3
+ 8 1 9 9
1 4 6 9 2
a)
B 9 2 C
+ 6 5 E 1
1 1 F 0 D
Fig. 4.2 Resultado del ejemplo 4.
b)
1 0 1 1
+ 1 0 0 1
1 0 1 0 0
Bloques aritmticos combinacionales para nmeros naturales 7
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 2
En la figura 4.3 se ve el resultado de aplicar el algoritmo de suma en binario para cuatro casos.
4.2.2 Implementacin del sumador binario
Full-Adder
Particularizando el algoritmo de la suma en propagacin del acarreo para el caso binario, b = 2,
podemos observar que el clculo de los bits y que se hace dentro del cuerpo del bucle, en
cada una de las n iteraciones, es funcin de solamente tres bits: x
k
, y
k
y c
k
. As pues, podemos
implementar un dispositivo combinacional, denominado Full-adder, con tres bits de entrada y dos de
salida, que realiza la funcin del cuerpo del bucle del algoritmo de suma. En la izquierda de la
figura 4.4 hemos escrito el cuerpo del bucle para binario y en la derecha hemos rellenado la tabla de
verdad del Full-adder, siguiendo el algoritmo para las 8 posibles combinaciones de los tres bits de
entrada.
A continuacin se muestran los 8 posibles valores de tres bits y sus sumas en binario. Esto es lo que
hace el Full-adder: suma los tres bits de entrada (cuenta el nmero de unos que hay en sus tres entradas)
Fig. 4.3 Suma en binario para cuatro casos concretos.
a)
1 1 1 0 1 0 0 0
+ 0 1 1 0 1 0 0 1
1 0 1 0 1 0 0 0 1
b)
1 1 1 0 1 0 0 1
+ 0 0 1 1 1 0 0 0
1 0 0 1 0 0 0 0 1
c)
0 1 1 0 1 1 0 0
+ 0 0 0 0 1 1 1 1
0 1 1 1 1 0 1 1
d)
0 0 1 0 1 0 0 0
+ 0 1 0 1 0 0 1 0
0 1 1 1 1 0 1 0
1
c
k 1 +
w
k
Algoritmo:
;
;
if ( ) {
;
;
}
w
k
x
k
y
k
c
k
+ + =
c
k 1 +
0 =
w
k
2 = >
w
k
w
k
2 =
c
k 1 +
1 =
Tabla de verdad del Full-adder
x
k
y
k
c
k
c
k+1
w
k
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Fig. 4.4 Algoritmo y tabla de verdad del Full-adder.
8 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
y codifica en binario el resultado en el vector de dos bits de su salida (con dos bits es suficiente para
codificar el valor mximo de la suma, 3).
A continuacin definimos el Full-adder de dos formas diferentes y, como es habitual, eliminamos el
subndice k de los nombres de las seales y denominamos las salidas c y s (del ingles Carry y Sum).
Sumador binario con Full-adders en propagacin del acarreo
Si denotamos a la funcin que implementa el Full-adder como (c
k+1
, w
k
) = Fa(x
k
, y
k
, c
k
) podemos
escribir el algoritmo de suma en binario como sigue.
;
for (k = 0; k < n; k = k + 1) {
(c
k+1
, w
k
) = Fa(x
k
, y
k
, c
k
);
}
;
La implementacin combinacional de un algoritmo iterativo como este se puede obtener desenrollando
totalmente el bucle (escribiendo un algoritmo equivalente pero sin la sentencia for: replicando n veces
el cuerpo del bucle). Esto se ve en la izquierda de la figura 4.5 para n = 4.
Full-adder. El Full-adder, Fa, es un dispositivo combinacional con tres
entradas (x, y, z) y dos salidas (c, s). El vector de salida W = (c, s)
codifica en binario el nmero de entradas con valor igual a 1, esto es:
W
u
= X
u
+ Y
u
+ Z
u
= x + y + z
con W
u
= c x 2
1
+ s x 2
0
y siendo los operadores + y x la suma y el
producto de la aritmtica sobre nmeros naturales. Ya que las tres
entradas del Fa son conmutativas (a nivel aritmtico y lgico) no las
etiquetamos en el smbolo del Fa, como se muestra en la figura,
pero s que etiquetamos las salidas c y s, que no son
intercambiables. Otra forma de definir el bloque Fa es mediante su
tabla de verdad, que se ve en la figura.
0
0
+ 1
0 1
0
1
+ 0
0 1
0
1
+ 1
1 0
1
0
+ 0
0 1
1
0
+ 1
1 0
1
1
+ 0
1 0
1
1
+ 1
1 1
0
0
+ 0
0 0
x
k
y
k
+
c
k
c
k+1
w
k
4.2.2
s c
Fa
y z
0
0
1
1
0
1
0
1
c
0
0
0
1
x
0
0
0
0
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 1
s
0
1
1
0
1
0
0
1
2
c
0
0 =
w
n
c
n
=
Bloques aritmticos combinacionales para nmeros naturales 9
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ahora solamente tenemos que disponer de n Full-adders (tantos como iteraciones tena el algoritmo, en
nuestro ejemplo n = 4) y conectarlos entre s como indica el algoritmo desenrollado que acabamos de
obtener. Ya que c
0
vale 0, el primer Full-adder podra ser otro dispositivo ms sencillo que sumara
solamente 2 bits, pero dejamos un Full-adder con una entrada a 0 para tener un diseo ms homogneo.
Cundo el resultado de la suma no es representable con n bits?
La salida w
n
del resultado la hemos denominado c
n
(esto es correcto ya que w
n
= c
n
). No la hemos
nombrado w
n
porque en los computadores generalmente los operandos y el resultado tienen el mismo
nmero de bits que coinciden con el nmero de bits de los dispositivos de almacenamiento (registros)
de donde se leen los operandos y donde se escribe el resultado. En este caso lo ms razonable es
almacenar los n bits de menor peso, que nos dan el resultado correcto de la suma de dos nmeros de n
bits en muchos casos, pero no en todos. Cmo saber en qu casos los n bits de menor peso no
representan el resultado correcto?
Esto es lo mismo que preguntarse cundo el vector no representa en binario el mismo valor que el
vector . La respuesta es: cuando w
n
vale 1, o lo que es lo mismo,
cuando c
n
vale 1. En estos casos se dice que se ha producido desbordamiento al sumar en binario, que
quiere decir que el resultado de la suma de dos nmeros binarios de n bits no puede representarse con n
bits (hacen falta n+1). La salida c
n
del sumador binario nos indica cuando vale 1 que el resultado
correcto de la suma no puede representarse con n bits y por lo tanto que
no representa el resultado correcto.
Bloque ADD
Cuando diseemos otros circuitos para hacer otras operaciones aritmticas que incluyan sumas, puede
ser interesante disponer de un smbolo para el bloque sumador binario de dos nmeros de n bits (si no
s c
Fa
s c
Fa
s c
Fa
s c
Fa
x0 y0
0
w0
x1 y1
w1
x2 y2
w2
x3 y3
c4
w3
;
(c
1
, w
0
) = Fa(x
0
, y
0
, c
0
);
(c
2
, w
1
) = Fa(x
1
, y
1
, c
1
);
(c
3
, w
2
) = Fa(x
2
, y
2
, c
2
);
(c
4
, w
3
) = Fa(x
3
, y
3
, c
3
);
;
c
0
0 =
w
4
c
4
=
Fig. 4.5 Algoritmo de suma con Full-adders e implementacin combinacional (n=4).
W w
n 1
w
n 2
= w
2
w
1
w
0
W w
n
w
n 1
w
n 2
= w
2
w
1
w
0
W w
n 1
w
n 2
= w
2
w
1
w
0
10 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
se dice lo contrario n = 16). Este smbolo, que se muestra en la parte superior derecha de la figura 4.6,
tiene dos buses de entrada X y Y y una de salida W. Dibujamos los buses como lneas ms gruesas que
las de los bits (y en azul, cuando se usan colores). Adems, en este caso tiene un bit de salida para el
acarreo, c
n
, que indica cuando vale 1 que el resultado de la suma X
u
+ Y
u
no es representable en n bits
(por lo que W
u
!= X
u
+Y
u
). Cuando no haga falta usaremos el bloque ADD sin salida de acarreo.
En la figura 4.6 se ve el circuito interno del sumador con salida de acarreo. Obsrvese que los
conectores de entrada/salida de buses de 16 bits son ms grandes que los conectores de bits y que los
bits de todos los buses se denotan siempre como b
15
, b
14
, ..., b
1
, b
0
(bit 15, bit 14, ..., bit 1, bit 0).
4.2.3 Implementacin del Full-adder con Half-adders y estos con una And y una Xor
En decimal sabemos de memoria la suma de dos dgitos y usamos esto dos veces en cada paso del
algoritmo, en el que hay que sumar los dos dgitos de los operandos ms el posible acarreo del paso
anterior. Ya que estamos trabajando el diseo ad-hoc de bloques combinacionales, y aunque el Full-
adder tiene pocas entradas y se puede implementar bien en suma de minterms, vamos a disear un Full-
adder usando varias copias de un dispositivo ms simple todava, que sume solamente dos bits. Este
dispositivo se denomina Half-adder y lo definimos e implementamos en suma de minterms antes de
usarlo para implementar el Full-adder.
Smbolo y circuito interno del sumador con Full-adders en propa-
gacin del acarreo, ADD, con salida de resultado no representable, c
(para n=16 bits). .
.
W
Y X
ADD
c
4.3.2
X
Y
W
c
b
0
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
b
1
0
b
1
1
b
1
2
b
1
3
b
1
4
b
1
5
b
0
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
b
1
0
b
1
1
b
1
2
b
1
3
b
1
4
b
1
5
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
s c
Fa
b
0
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
b
1
0
b
1
1
b
1
2
b
1
3
b
1
4
b
1
5
0
Fig. 4.6 Bloque ADD con salida de acarreo (para n=16).
3
Bloques aritmticos combinacionales para nmeros naturales 11
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Half-Adder
Un Half-adder es un dispositivo combinacional con dos entradas x e y y dos salidas c y s. El vector que
forman los dos bits de salida, W = (c, s) codifica en binario un nmero natural que es igual al nmero de
entradas que valen 1. Dicho de otra forma, W codifica en binario la suma aritmtica de los dos bits de
entrada, considerando que los 2 bits tienen el mismo peso (peso 1 =2
0
):
W
u
= x + y
Donde W
u
= c x 2
1
+ s x 2
0
y el operador + es la suma aritmtica.
Para implementar el circuito Half-adder primero especificamos el valor de las salidas del circuito para
cada uno de los posibles valores de las entradas y ordenamos esta informacin en la tabla de verdad.
Podemos ver el Half-adder como un circuito que suma dos nmeros de un bit cada uno):
La tabla de verdad donde se ha colocando adecuadamente esta informacin se ve en la izquierda de la
figura 4.7. A partir de la tabla de verdad sabemos construir el Half-adder con puertas Not, And y Or
mediante la expresin en suma de minterms de cada una de sus dos salidas. No obstante, para
simplificar el dibujo del esquema del circuito interno usamos una puerta Xor-2 para implementar la
salida s (hemos sintetizado la Xor-2 en suma de minterms en el captulo 2). El smbolo del dispositivo
Half-adder y su esquema interno se muestran a la derecha de la figura 4.7.
Half-adder: tabla de verdad, smbolo y circuito interno
x
+ y
c s
0
+ 0
0 0
0
+ 1
0 1
1
+ 0
0 1
1
+ 1
1 0
4.2.1
x y
0
0
1
1
0
1
0
1
c
0
0
0
1
s
0
1
1
0
c s
y x
s c
s c
Ha
x y
Fig. 4.7 Tabla de verdad, smbolo y circuito interno del Half-adder.
4
12 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Diseo del Full-adder con Half-adders
Sabemos que un Half-adder suma dos bits del mismo peso y que un Full-adder suma tres. Sabramos
sumar tres bits haciendo varias sumas de dos bits cada una? Si sabis hacerlo con lpiz y papel,
tambin podis implementar un circuito que lo haga! La derecha de la figura 4.8 muestra el esquema
de interconexin en tres niveles de half-adders (denominados a, b y c) para sumar tres bits x
0
, y
0
, z
0
(el
subndice 0 indica que los tres tienen el mismo peso: 2
0
). A la izquierda se han dispuesto los tres bits de
entrada en la misma columna, como cuando sumamos a mano. Los bits x
0
e y
0
entran en el Half-adder
a. Por ello, estos bits se muestran a la izquierda con un fondo gris (el z
0
no se ha sombreado pues no
entra en el half-adder de este nivel, solamente pasa de la entrada al siguiente nivel de suma: Half-adder
b). La suma de x
0
e y
0
produce el acarreo, a
1
, y el bit de suma, a
0
, (que se muestran a la izquierda
debajo de la primera lnea horizontal que separa el primer nivel de sumas del siguiente). El a
1
se ha
dibujado en la siguiente columna hacia la izquierda, que representa a los bits de peso 2
1
. Al Half-adder
b le entran los bits a
0
y el z
0
(sombreados en el segundo nivel de suma) y salen los bits b
1
y b
0
. El
esquema lgico y la grfica con los bits encolumnados segn el peso, contina hasta que se suman
todos los bits: sumando siempre juntos los bits del mismo peso. La tabla de verdad de la derecha de la
figura 4.8 muestra el comportamiento de las variables internas y de salida del circuito.
Optimizacin. La tabla de verdad nos dice lo que ya podamos saber de antemano, que la salida w
2
vale siempre 0, ya que al sumar tres bits el valor mximo es 3 y el 3 se puede codificar con slo dos
y0
z0
c2 c1
b1
b0
a1 a0
w2 w1 w0
x0 z0
s c
Ha
s c
Ha
s c
Ha
Fig. 4.8 Full-adder construido con tres Half-adders. A la izquierda se muestran los bits
que entran y salen de los Half-adders encolumnados segn su peso.
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
0
0
0
0
0
1
1
0
x
0
y
0
z
0
a
1
0
0
1
1
1
1
0
0
0
a
0
0
0
0
1
0
1
0
0
0
b
1
0
1
1
0
1
0
0
1
b
0
0
0
0
0
0
0
0
0
0
c
2
0
0
0
1
0
1
1
1
0
c
1
0
0
0
0
0
0
0
0
0
w
2
0
0
0
1
0
1
1
1
0
w
1
0
1
1
0
1
0
0
1
w
0
x
0
y
0
z
0
a
1
a
0
z
0
b
1
b
0
a
1
c
2
c
1
w
2
w
1
w
0
a
b
c
2
1
2
0
2
2
Bloques aritmticos combinacionales para nmeros naturales 13
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
bits: 11. As que del Half-adder c solamente necesitamos la salida c
1
que se implementa internamente
con una Xor-2. Pero si nos fijamos, aun podemos simplificar ms el diseo. Se puede ver en la tabla de
verdad, y tambin pensando en lo que estamos haciendo, que los bits a
1
y b
1
nunca valen los dos 1 a la
vez: o valen los dos 0 o vale uno 0 y el otro 1. Por ello, la Xor-2 (que requiere internamente dos Not, dos
And-2 y una Or-2) que produce c
1
, se puede sustituir por una sola puerta Or-2. La figura 4.9 muestra el
smbolo y el esquema interno del Full-adder con dos Half-adders y una puerta Or-2, y con cada Half-
adder implementado con una And-2 y una Xor-2.

Qu implementacin es mejor en suma de minterms o con dos Half-adders y una Or? Todas las
implementaciones tienen el mismo comportamiento lgico (la misma tabla de verdad) pero pueden
tener distinto comportamiento en cuanto a tiempos de propagacin, nmero de puertas y tipos de
puertas utilizadas. Dejamos al lector esta comparacin y su repercusiones en el diseo del sumador con
Full-adders en propagacin del acarreo.
4.3 El restador binario
La resta es muy parecida a la suma, as que vamos a seguir los mismos pasos pero particularizando para
el caso binario y con menos detalle.
Full-adder construido con dos Half-adder y una Or-2

4.2.2
z
c s
y x
x y z
s c
Ha
s c
Ha
c s
s c
Fa
y x z
s c
Fig. 4.9 Full-adder con dos Half-adders y una Or-2.
5
14 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.3.1 Algoritmo aritmtico de la resta en binario
Queremos obtener la representacin de W
u
= X
u
- Y
u
a partir de las representaciones de X
u
e Y
u
. Si los
operandos estn representados con n bits, , el rango del resultado de la resta es
. Sin embargo, en el sistema convencional en base 2 slo podemos representar
nmeros naturales, as que, si el resultado es negativo no lo podremos representar. Esto es ligeramente
diferente al caso de la suma con n bits en la que el resultado correcto siempre se puede representar con
n+1 bits. Aun as, como en un computador solo almacenamos los n bits de menor peso del resultado,
sabemos detectar cundo el resultado no es representable en n bits. Ahora, en la resta, tambin
encontraremos una regla para saber cundo el resultado no es representable porque es negativo (no es
un nmero natural) y por eso no se puede representar en el sistema convencional en base 2 (binario), ni
siquiera usando un nmero ilimitado de bits.
Planteamiento del problema de la resta binaria
Dados dos vectores de n bits, e con
para i = 0, ..., n, que representan dos nmeros naturales X
u
e Y
u
en el sistema convencional en base 2,
encontrar los n bits del vector tales que W
u
= X
u
- Y
u
,
(EQ 3)
y que los valores w
i
sean dgitos vlidos en base 2, esto es:
(EQ 4)
Adems, hay que detectar cundo no existe solucin a las ecuaciones anteriores (porque el resultado de
la resta es negativo): resultado no representable.
Una solucin en dos fases al problema de la resta
En la primera fase encontramos una solucin a la EQ (3) y en la segunda transformamos en n pasos la
solucin anterior para que cumpla adems la restriccin de la EQ (4).
Fase 1. Manipulando la EQ (3) encontramos una solucin trivial, de las infinitas que hay que no tienen
porqu cumplir la EQ (4), y que la denominamos con un sombrerito:
y
0 X
u
, Y
u
2
n
1
2
n
1 ( ) W
u
2
n
1
X x
n 1
x
n 2
= x
2
x
1
x
0
Y y
n 1
y
n 2
= y
2
y
1
y
0
x
i
, y
i
0, 1 { }
W w
n 1
w
n 2
= w
2
w
1
w
0
w
i
2
i
i 0 =
n 1

x
i
2
i
i 0 =
n 1

y
i
2
i
i 0 =
n 1

=
0 w
i
1
w

i
x
i
y
i
= para 0 i n 1
Bloques aritmticos combinacionales para nmeros naturales 15
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
El resultado de aplicar la primera fase del algoritmo de resta a los vectores de bits X = 1001 e Y = 0011
es el siguiente. El bit 1 de esta solucin no es un dgito vlido, no es un bit, ya que vale -1.
Posible transformacin de la solucin de la primera fase. La solucin que acabamos de encontrar
no siempre cumple la EQ (4), ya que en general el valor de los dgitos que hemos encontrado puede ser
negativo: . Si el dgito k que no cumple la EQ (4), , una solucin en la que al menos el
dgito k cumpla las dos ecuaciones, se obtiene manipulando el sumando del dgito k, y como
consecuencia el del k+1, de la expresin . La manipulacin de estos dos sumandos es:
La nueva solucin es igual a la anterior para los dgitos de los sumandos no manipulados:
mientras que para el dgito k y k+1 es:
Esto hace que la nueva solucin siga cumpliendo la EQ (3) y que adems el nuevo bit k cumpla
tambin la EQ (4). El valor que se resta al bit k+1 se denomina dbito, o en ingles borrow, y se denota
con la letra . (aunque a veces no diferenciamos entre suma y resta y lo denominamos tambin
acarreo). A continuacin mostramos cmo encontrar la solucin del ejemplo anterior para que el bit 1
cumpla con la EQ (4). En este ejemplo hemos arreglado el bit 1 pero ahora es el 2 el que no cumple con
la EQ (4). La solucin cuando pasa esto es aplicar otra vez al bit k+1 lo que acabamos de hacer al k.
Fase 2. La segunda fase del algoritmo de resta consiste en ir aplicando la regla anterior para todos los
dgitos que no cumplan con la EQ (4) desde k = 0 hasta n-1 de forma que obtenemos la solucin que
bit 3 bit 2 bit 1 bit 0
X 1 0 0 1
Y 0 0 1 1
1 0 -1 0
Bit 3 Bit 2 Bit 1 Bit 0
1 0 -1 0
1 -1 1 0
W

1 w

i
1 w
k
0 <
X
u
x
i
2
i
i 0 =
n 1

=
w

k 1 +
2
k 1 +
w

k
2
k
+ w

k 1 +
2
k 1 +
w

k
2 2 + ( )2
k
+ w

k 1 +
2
k 1 +
w

k
2 + ( )2
k
2
k 1 +
= + = =
= w

k 1 +
1 ( )2
k 1 +
w

k
2 + ( )2
k
+
w

i
w

i
x
i
y
i
= = para i 0, ..., k 1 , k 2 + , ..., n 1; w

n
0 = =
w

k
w

k
2 + x
k
y
k
2 + = =
w

k 1 +
w

k 1 +
1 x
k 1 +
y
k 1 +
1 = =
b
k 1 +
W

16 Introduccin a los Computadores


Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
cumple la EQ (3) y EQ (4) a la vez. No obstante, si resulta que el bit de ms peso (bit n-1) es negativo,
no podemos hacer nada para que se cumpla la EQ (4). Si aplicramos la regla de la fase 1 al dgito n-1
nos resultara que es ahora el dgito n el que es -1, y as hasta el infinito. Esto quiere decir que el
resultado de la resta es negativo, no es un nmero natural y por ello no se puede representar en el
sistema convencional en base 2, en binario.
La siguiente tabla muestra el algoritmo de resta en dos fases para el ejemplo anterior.
Es interesante ver que si la resta de los dos dgitos de la posicin k menos el borrow que viene de la
posicin anterior es negativa, , siempre se puede convertir el resultado en un dgito
binario si se le suma el nmero 2, ya que el mximo valor negativo de es -2.
Expresamos a continuacin el algoritmo de resta en n pasos (k = 0, ..., n-1) juntando las dos fases en
cada paso. Es importante resaltar que si como resultado de aplicar el algoritmo, el borrow que sale del
paso n-1, b
n
, es 1 el resultado de la resta no es representable, porque es negativo.
Algoritmo de resta con propagacin del dbito:
;
for (k = 0; k < n; k = k + 1){
;
;
if ( ) {
;
;
}
}
Bit 3 Bit 2 Bit 1 Bit 0
1 0 0 1
0 0 1 1
1 0 -1 0
k =0 1 0 -1 0
k =1 1 -1 1 0
k = 2 0 1 1 0
k = 3 0 1 1 0
X
Y
W

W
x
k
y
k
b
k
0 <
x
k
y
k
b
k

b
0
0 =
w
k
x
k
y
k
b
k
=
b
k 1 +
0 =
w
k
0 <
w
k
w
k
2 + =
b
k 1 +
1 =
Bloques aritmticos combinacionales para nmeros naturales 17
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Otra forma de expresar este algoritmo, que se parece ms a cmo restamos en decimal con lpiz y
papel, se ve en el recuadro siguiente.
Ejemplo 3
Aplicamos el algoritmo aritmtico de resta en binario que acabamos de encontrar a los cuatro
ejemplos que se muestran en la figura 4.3 para n = 8 bits (los valores del borrow no se muestran).
Slo en el caso d) los n bits del resultado no expresan el resultado correcto de la resta, ya que el
acarreo (mejor dbito) de salida, b
8
, es 1.
Algoritmo de resta con propagacin del dbito en binario. Dados los n bits de X e
Y (x
i
e y
i
para i = 0, ..., n-1) el siguiente algoritmo obtiene los n bits de W (w
i
para i =
0, ..., n-1) tales que W
u
= X
u
- Y
u
cuando este resultado es positivo (los operadores +
y - son la suma y la resta aritmticas sobre nmeros naturales). Si el dbito final, b
n
,
vale 1 indica que el resultado no es representable, ya que es negativo y al no ser un
nmero natural no se puede representar en el sistema convencional en base 2.
;
for (k = 0; k < n; k = k + 1){
if ( ) {
;
;
} else {
;
;
}
}
4.1.2
b
0
0 =
y
k
b
k
+ x
k

w
k
x
k
y
k
b
k
+ ( ) =
b
k 1 +
0 =
w
k
2 x
k
y
k
b
k
+ ( ) + =
b
k 1 +
1 =
Fig. 4.10 Tablas sencillas resultado de aplicar el algoritmo aritmtico de suma en
binario para cuatro casos concretos.
a)
1 1 1 0 1 0 0 0
- 0 1 1 0 1 0 0 1
0 1 1 1 1 1 1 1
b)
1 1 1 0 1 0 0 1
- 0 0 1 1 1 0 0 0
1 0 1 1 0 0 0 1
c)
0 1 1 0 1 1 0 0
- 0 0 0 0 1 1 1 1
0 1 0 1 1 1 0 1
d)
b
8
=1
No representable
0 0 1 0 1 0 0 0
- 0 1 0 1 0 0 1 0
1 1 0 1 0 1 1 0
6
18 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.3.2 Implementacin del restador binario
Como hicimos con el sumador, vamos a implementar el dispositivo combinacional que realiza las
sentencias del cuerpo del bucle for (if...else...) del algoritmo de resta. El algoritmo de este
dispositivo, que se denomina Full-subtractor, Fs, se reproduce a continuacin:
;
;
if ( ) {
;
;
}
El smbolo del Full-subtractor se muestra en el recuadro siguiente, junto con los nombres usados para
sus entradas y salidas (como es usual quitamos el subndice k del algoritmo y llamamos z a la entrada
b
k
y s (subtract) a la salida w
k
). Como las entradas no son intercambiables se han etiquetado con los
smbolos + y -. Tambin se muestra la tabla de verdad del Fs, que se obtiene siguiendo el cdigo
anterior para las 8 posibles combinaciones de los tres bits de entrada (x
k
, y
k
y b
k
: en la tabla x, y y z).
Restador binario con Full-subtractors en propagacin del dbito
Full-subtractor. El Full-subtractor, Fs, es un dispositivo combinacional
con tres entradas (x, y, z) y dos salidas (b, s) (cuya funcin la denotamos
(b, s) = Fs(x, y, z)) que tiene la siguiente tabla de verdad.
w
k
x
k
y
k
b
k
=
b
k 1 +
0 =
w
k
0 <
w
k
w
k
2 + =
b
k 1 +
1 =
4.2.3
s
z y
b
x
s b
Fs
+ - -
y z
0
0
1
0
1
0
b
0
1
1
x
0
0
0
0
s
0
1
1
0
1
1
0
1
1
1 0
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 1
0
1
0
0
1
7
Bloques aritmticos combinacionales para nmeros naturales 19
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
El esquema lgico del restador binario construido con Full-subtractors tiene la misma estructura que el
sumador binario, tal como se muestra en el recuadro. El dbito que sale del Fs de ms peso se activa
cuando el resultado de la resta es negativo, y por lo tanto no es representable en binario.
4.4 Desplazador de k bits a la izquierda (multiplicador por 2
k
)
Vemos primero el algoritmo aritmtico del caso particular de multiplicacin por 2, luego el general de
multiplicacin por potencias de 2 y por ltimo su implementacin en hardware.
4.4.1 Algoritmo aritmtico de multiplicacin por 2 en binario.
A partir de la representacin en binario con n bits, , de un nmero natural, X
u
,
encontrar la representacin del nmero W
u
= 2 X
u
. Dado que el rango de X
u
es , el de
W
u
es y por lo tanto se requieren, en el peor de los casos, n+1 bits para representarlo.
Encontrar el algoritmo aritmtico de la multiplicacin por 2 es equivalente a encontrar los bits de
tales que:
(EQ 5)
y que los valores w
i
sean dgitos vlidos en base 2, esto es:
(EQ 6)
Como 2x2
i
= 2
i+1
, la EQ (5) expandida, para que se vea ms claro, y despus de multiplicar todos los
sumandos del sumatorio por 2, queda:
Smbolo y circuito del restador con Full-subtractors en propagacin del dbito.
4.3.3
SUB
- + b
s b
Fs
+ - -
s b
Fs
+ - -
s b
Fs
+ - -
s b
Fs
+ - -
b4
b4
X Y
W
x0 y0
0
w0
x1 y1
w1
x2 y2
w2
x3 y3
w3
8
X x
n 1
x
n 2
= x
2
x
1
x
0
0 X
u
2
n
1
0 X
u
2
n 1 +
2
W w
n
w
n 1
= w
2
w
1
w
0
w
i
2
i
i 0 =
n

2 x
i
2
i
i 0 =
n 1





=
0 w
i
1
w
n
2
n
w
n 1
2
n 1
w
2
2
2
w
1
2
1
w
0
2
0
+ + + + + x
n 1
2
n
x
n 2
2
n 1
x
1
2
2
x
0
2
1
+ + + + =
20 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
De aqu se ve que la siguiente solucin
y
,
cumple con EQ (5) y EQ (6), ya que los dgitos de X son bits y w
0
=0 tambin.
Por lo tanto, multiplicar por 2 un nmero natural representado en binario consiste en desplazar
los bits de la representacin una posicin a la izquierda y poner un 0 como bit de menor peso.
Obsrvese que esto es equivalente a lo que hacemos en decimal cuando multiplicamos un nmero por
10. As que este es el algoritmo para multiplicar por la base b un nmero representado en el sistema
convencional en base b.
Ejemplo 4
La figura 4.11 muestra un ejemplo de aplicacin del algoritmo aritmtico de la multiplicacin por 2
en binario.
Deteccin de resultado no representable en n bits. Como es habitual en un computador de n bits,
slo podemos almacenar los n bits de menor peso del resultado de la multiplicacin por 2, que requiere,
en el peor de los casos n+1 bits. Cmo sabemos si los n bits de menor peso representan correctamente
al resultado? La respuesta es trivial: si el bit n del resultado es igual a 1 (W
n
=1), o lo que es lo mismo,
si el bit n-1 del operando es igual a 1 (X
n-1
=1) el resultado de la multiplicacin por 2 no es
representable en n bits.
w
0
0 =
w
i
x
i 1
= para 1 i n

Valor Representacin en binario
Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
X
u
=9 1 0 0 1
2X
u
=18 1 0 0 1 0
Fig. 4.11 Ejemplo de aplicacin de multiplicacin por 2 en binario.
Bloques aritmticos combinacionales para nmeros naturales 21
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.4.2 Algoritmo aritmtico de multiplicacin por potencias de 2
Dado que multiplicar un nmero por 2
k
consiste en multiplicarlo por 2 repetidamente k veces, el
algoritmo aritmtico para multiplicar por 2
k
consiste en aplicar el algoritmo de multiplicacin por dos k
veces consecutivas.
Ejemplo 5
En la siguiente tabla se muestra la representacin en binario con 8 bits del nmero 23 y sus
multiplicaciones por 2
k
para k = 1, 3 y 5. Es de resaltar que 23x2
5
requiere 10 bits para
representarse correctamente en binario: 1011100000, por lo que los 8 bits de menor peso, 11100000,
no dan el resultado correcto. El resultado no es representable en 8 bits porque en los k=5 bits de ms
peso del operando (00010111) hay al menos un 1.
4.4.3 Implementacin del multiplicador por 2
k
(SL-k)
La figura 4.12 muestra el esquema lgico del circuito combinacional para multiplicar un nmero
natural representado en binario con 16 bits por 2
k
, para k=4, que implementa en hardware el algoritmo
de la seccin anterior. Para formar los 16 bits el resultado no se necesitan puertas, slo hay que
conectar los cables de la entrada a la salida desplazados k posiciones a la izquierda y poner a 0 los k bits
de menor peso. Si queremos saber cundo los 16 bits de salida no representan el resultado correcto, es
Algoritmo para obtener la representacin de X
u
2
k
a partir de X. Dado
se obtiene tal que W
u
=
X
u
2
k
, asignando los n bits de X a los n bits de ms peso de W (desplazando k
posiciones a la izquierda los bits de X) y asignando k ceros a los k bits de menor peso
de W.
Adems, el resultado de la operacin, X
u
2
k
, no es representable con solo los n bits de
menor peso de W cuando alguno de los k bits de ms peso de X es distinto de 0.
Valor:
X
u
= 23 2X
u
= 46 2
3
X
u
= 184 2
5
X
u
= 736
Representacin con n = 8 bits: 00010111 00101110 10111000 11100000
No representable
4.1.3
X x
n 1
x
n 2
= x
2
x
1
x
0
W w
n k 1 +
w
n k +
= w
2
w
1
w
0
9
22 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
necesaria una puerta Or-k que detecte si hay algn 1 entre los k bits de mayor peso de la entradas. Este
dispositivo que multiplica por 2
k
se denomina, SL-k (Shift Left - k): desplazador de k bits a la izquierda.
4.5 Desplazador de k bits a la derecha (divisor por 2
k
)
Vemos primero el algoritmo aritmtico del caso particular de divisin por 2, luego el de divisin por
potencias de 2 y por ltimo su implementacin en hardware. Como trabajamos con nmeros naturales,
siempre que hablemos de divisin en este captulo, nos referimos a la divisin entera, sin decimales
(parte entera por abajo). Esta operacin es muy parecida a la multiplicacin por potencias de 2 ya que si
bien 2
i
x2
k
=2
i+k
, resulta que 2
i
/2
k
=2
i-k
. La diferencia entre sumar k al exponente del 2 o restarlo hace
que lo que en la multiplicacin supone desplazar k bits a la izquierda poniendo los k bits de menor
peso a cero, en la divisin suponga desplazar a la derecha y poner ceros en los bits de mayor peso.
4.5.1 Algoritmo aritmtico de divisin por 2 en binario.
A partir de la representacin en binario con n bits, , de un nmero natural, X
u
,
encontrar la representacin del nmero W
u
= X
u
/2. Dado que el rango de X
u
es , el de W
u
es y por lo tanto se requieren, en el peor de los casos, n-1 bits para representarlo.
Como en el computador se representan con n bits (n=16 en nuestro caso) tanto el operando como el
Smbolo y circuito interno del desplazador de k bits a la izquierda,
SL-k (Shift Left- k), para k = 4. Implementa la operacin W
u
= X
u
2
k
siempre que los k bits de mayor peso de X sean 0. El smbolo no tiene
salida de resultado no representable con n bits ya que en el computador
que disearemos no la utilizaremos. No obstante, en el esquema interno
si se ha implementado con una puerta Or.
SL-4
X
W
4.4.1
x
15
x
14
x
13
x
12
x
11
x
10
x
9
x
8
x
7
x
6
x
5
x
4
x
3
x
2
x
1
x
0
w
15
w
14
w
13
w
12
w
11
w
10
w
9
w
8
w
7
w
6
w
5
w
4
w
3
w
2
w
1
w
0
0 0 0 0
Fig. 4.12 Smbolo del desplazador de 4 bits a la izquierda (Shift Left - 4) y esquema
interno para n=16. El smbolo no tiene la salida de resultado no representable.
10
X x
n 1
x
n 2
= x
2
x
1
x
0
0 X
u
2
n
1
0 X
u
2
n 2
1
Bloques aritmticos combinacionales para nmeros naturales 23
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
resultado de la operacin, en el caso de la divisin por 2 el resultado siempre es representable, no tiene
sentido hablar de deteccin de resultado no representable. As que, encontrar el algoritmo aritmtico de
la divisin por 2 es equivalente a encontrar los bits de tales que:
(EQ 7)
y que los valores w
i
sean dgitos vlidos en base 2, esto es: (EQ 8)
Como 2
i
/2 = 2
i-1
, la EQ (7) expandida y despus de dividir todos los sumandos del sumatorio por 2, y
recordando que x
0
/2 = 0, queda:
De aqu se ve que la siguiente solucin
y
cumple con EQ (7) y EQ (8), ya que los dgitos de X son bits y w
n-1
=0 tambin.
Por lo tanto, dividir por 2 un nmero natural representado en binario consiste en desplazar los
bits de la representacin una posicin a la derecha y poner un 0 como bit de mayor peso (el bit
de menor peso del operando desaparece).
Obsrvese que esto es equivalente a lo que hacemos en decimal cuando realizamos la divisin por 10
(parte entera por abajo) de un nmero natural. As que este es el algoritmo para dividir por la base b un
nmero natural representado en el sistema convencional en base b.
Ejemplo 6
La figura 4.11 muestra un ejemplo de aplicacin del algoritmo aritmtico de la divisin por 2 en
binario.
W w
n 1
w
n 2
= w
2
w
1
w
0
w
i
2
i
i 0 =
n 1

x
i
2
i
i 0 =
n 1





2 =
0 w
i
1
w
n 1
2
n 1
w
n 2
2
n 2
w
2
2
2
w
1
2
1
w
0
2
0
+ + + + + x
n 1
2
n 2
x
n 2
2
n 3
x
2
2
1
x
1
2
0
+ + + + =
w
i
x
i 1 +
= para 0 i n 2
w
n 1
0 =

Valor Representacin en binario
Bit 3 Bit 2 Bit 1 Bit 0
X
u
= 9 1 0 0 1
X
u
/ 2 = 4 0 1 0 0
Fig. 4.13 Ejemplo de aplicacin de divisin por 2 en binario.
24 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.5.2 Algoritmo aritmtico de divisin por potencias de 2
Dado que dividir un nmero por 2
k
consiste en dividirlo por 2 repetidamente k veces, el algoritmo
aritmtico para dividir por 2
k
consiste en aplicar el algoritmo de divisin por dos k veces consecutivas.
Ejemplo 7
En la siguiente tabla se muestra la representacin en binario con 8 bits del nmero 23 y sus
divisiones por 2
k
para k = 1, 3 y 5.

4.5.3 Implementacin del divisor por 2
k
(SRL-k)
La figura 4.14 muestra el esquema lgico del circuito combinacional para dividir un nmero natural
representado en binario con 16 bits por 2
k
, para k=4. Para formar los 16 bits del resultado no se
necesitan puertas, slo hay que conectar los cables de la entrada a la salida desplazados k posiciones a
la derecha y poner a 0 los k bits de mayor peso. El resultado siempre es representable. Este dispositivo
que divide por 2
k
se denomina, SRL-k (Shift Right Logically - k): desplazador lgico de k bits a la
derecha. Como veremos en el prximo captulo, cuando estudiemos la representacin y los bloques
aritmticos de nmeros enteros, la multiplicacin por potencias de 2 para enteros es igual que para
naturales (excepto la deteccin de resultado no representable) pero la divisin por potencias de 2 es
distinta para enteros que para naturales. El dispositivo para enteros se denomina SRA-k (Shift Right
Arithmetically - k). As que la L final se pone para indicar que se trabaja con naturales y la A para
indicar enteros.
Algoritmo para obtener la representacin de X
u
/2
k
a partir de X. Dado
se obtiene tal que W
u
= X
u
/
2
k
, asignando k ceros a los k bits de mayor peso de W y asignado los n-k bits de ms
peso de X a los n-k bits de menos peso de W (desplazando k posiciones a la derecha
los bits de X).
Adems, el resultado correcto de la operacin, X
u
/2
k
, siempre es representable en los
n bits de W.
Valor:
X
u
= 23 X
u
/2 = 11 X
u
/2
3
= 2 X
u
/2
5
= 0
Representacin con n = 8 bits: 00010111 00001011 00000010 00000000
4.1.4
X x
n 1
x
n 2
= x
2
x
1
x
0
W w
n 1
w
n 2
= w
2
w
1
w
0
11
Bloques aritmticos combinacionales para nmeros naturales 25
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.6 Comparadores de nmeros naturales
Diseamos los circuitos combinacionales que denominamos EQ, LTU, y LEU. Tienen dos buses de
entrada de n bits, X e Y, y una seal de salida de un bit, w. La funcionalidad de estos circuitos es:
w = EQ(X,Y), igual (EQual):
if (X==Y) w =1; else w =0;
w = LTU(X,Y), menor que para naturales (Less Than Unsigned):
if (X
u
<Y
u
) w =1; else w =0;
w = LEU(Xu,Yu), menor o igual para naturales (Less or Equal Unsigned):
if (X
u
<=Y
u
) w =1; else w =0;
El comparador de igualdad, compara que dos vectores de bits sean iguales bit a bit, no importa qu
representen los vectores, por eso no lleva al final la letra U. Sin embargo, los comparadores de menor
que y menor o igual efectan la comparacin considerando que los dos vectores de bits representan a
dos nmeros naturales codificados en binario, por eso terminan en U, de Unsigned.
Para efectuar estas comparaciones realizamos la resta binaria de X e Y y analizamos el resultado. Si los
dos vectores son iguales el resultado de la resta ser un vector de n ceros. Si hacemos la Or-n de estos n
bits y negamos la salida, esta valdr 1 solamente cuando los n bits sean 0: es la funcin EQ que
buscamos. La figura 4.15 muestra el smbolo del comparador EQ y su esquema interno usando el
restador de la seccin 4.3 y el nuevo bloque Zero, cuyo smbolo y esquema tambin se muestra.
Smbolo y circuito interno del desplazador de k bits a la derecha,
SRL-k (Shift Rigth Logically - k), para k = 4. Implementa la operacin
W
u
= X
u
/2
k
. El resultado siempre es representable con los mismos bits
que el operando.
SRL-4
X
W
4.4.2
x
15
x
14
x
13
x
12
x
11
x
10
x
9
x
8
x
7
x
6
x
5
x
4
x
3
x
2
x
1
x
0
w
15
w
14
w
13
w
12
w
11
w
10
w
9
w
8
w
7
w
6
w
5
w
4
w
3
w
2
w
1
w
0
0 0 0 0
Fig. 4.14 Smbolo del desplazador lgico de 4 bits a la derecha (Shift Right Logicaly - 4)
y esquema interno para n=16.
12
26 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Como vimos en la seccin 4.3 al estudiar la resta, la salida b (borrow) del restador binario que ha
calculado X
u
-Y
u
vale 1 cuando el resultado es negativo y por ello no se puede representar en binario.
Esto es lo mismo que decir que cuando b=1 es porque X
u
es menor que Y
u
. As que la salida b del
restador es directamente la salida del bloque LTU, como se ve en la figura 4.16. A la derecha de esta
figura se encuentra el diseo del bloque LEU, que es la Or-2 de las funciones EQ y LTU.
Smbolo y circuito de los bloques a) comparador de igualdad, EQ, y b) Zero, Z.
4.6.1
b) Bloque z a) Bloque EQ
SUB
- + b
z
X Y
w
b
0
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
b
1
0
b
1
1
b
1
2
b
1
3
b
1
4
b
1
5
W
z
EQ z
w z
X Y
W
Fig. 4.15 Smbolos y esquemas de a) EQ y b) Z (para n=16).
4.5
13-14
Bloques aritmticos combinacionales para nmeros naturales 27
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

4.7 Operadores lgicos bit a bit
Los operadores lgicos, aunque los estudiamos en este captulo, no efectan operaciones aritmticas
sobre nmeros naturales, sino que realizan operaciones lgicas bit a bit sobre vectores de bits, que
pueden representar cualquier tipo de informacin. Por ello, en estas operaciones no tiene sentido hablar
de resultado no representable. Veamos primero la operacin AND, y despus resumimos las dems.
4.7.1 AND bit a bit
La operacin lgica AND bit a bit la denotamos con todos sus caracteres en maysculas para indicar
que opera con vectores de n bits. La definicin formal es como sigue. Dados dos vectores de n bits,
e con para i = 0,..., n-1, la operacin
lgica AND bit a bit de X e Y da como resultado el vector de n bits tal que,
(EQ 9)
Donde el representa el producto lgico, la operacin lgica And de los dos bits.
Smbolo y circuito de los bloques a) menor que, LTU, y b) menor o igual, LEU,
4.6.2
b) LEU a) LTU
SUB
- + b
z
X Y
w
LEU
SUB
- + b
X Y
w
LTU
w w
Y Y X X
Fig. 4.16 Smbolo de los comparadores y sus esquemas internos: a) LTU y b) LEU.
4.6.3
15-16
X x
n 1
x
n 2
= x
2
x
1
x
0
Y y
n 1
y
n 2
= y
2
y
1
y
0
x
i
, y
i
0, 1 { }
W w
n 1
w
n 2
= w
2
w
1
w
0
w
i
x
i
y
i
= para i 0 = hasta n 1
28 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Esta operacin se denota como W=AND(X,Y) y el smbolo del bloque combinacional que la implementa
junto con su esquema lgico interno se muestra en la figura 4.17.
Ejemplo 8
Aplicamos la operacin lgica AND bit a bit a cuatro ejemplos que se muestran en la figura 4.3.
4.7.2 OR y XOR y NOT bit a bit
Las operaciones OR y XOR bit a bit son como la AND que acabamos de ver pero sustituyendo la
operacin/puerta And-2 por la Or-2 o la Xor-2, respectivamente. La operacin NOT slo tiene un
operando, el vector de bits X, y da como resultado el W tal que w
i
= !x
i
para i = 0, ..., n-1.
Smbolo y circuito interno del operador lgico, AND bit a bit.
AND
X Y
W
4.7
x
15
x
14
x
13
x
2
x
1
x
0
w
15
w
14
w
13
w
2
w
1
w
0
y
15
y
14
y
13
y
2
y
1
y
0
Fig. 4.17 Smbolo del bloque AND y su esquema lgico interno para n=16.
Fig. 4.18 Tablas sencillas resultado de aplicar la operacin AND a cuatro casos
concretos.
a)
1 1 1 0 1 0 0 0
0 1 1 0 1 0 0 1
0 1 1 0 1 0 0 0
b)
1 1 1 0 1 0 0 1
0 0 1 1 1 0 0 0
0 0 1 0 1 0 0 0
c)
0 1 1 0 1 1 0 0
0 0 0 0 1 1 1 1
0 0 0 0 1 1 0 0
d)
0 0 1 0 1 0 0 0
0 1 0 1 0 0 1 0
0 0 0 0 0 0 0 0
Bloques aritmticos combinacionales para nmeros naturales 29
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 9
La figura 4.19 muestra la aplicacin a distintos vectores de bits de las operaciones bit a bit AND,
OR, XOR y NOT.
Los smbolos de los dispositivos combinacionales para realizar las operaciones W=OR(X,Y),
W=XOR(X,Y) y W=NOT(X) se muestran en la figura 4.20. No mostramos el esquema interno de estos
tres bloques ya que tienen la misma estructura que el AND.
4.8 Diseo de multiplexores
Aunque los multiplexores de bits no son bloques combinacionales que procesan nmeros naturales, los
vemos en este captulo porque pueden llegar a tener bastantes bits de entrada y no podemos usar para
su diseo el mtodo de sntesis en suma de minterms que vimos en el captulo 2. Aqu vamos a hacer
un diseo ad-hoc de un multiplexor de 8 entradas de datos de un bit cada una, x
7
, x
6
, ..., x
1
y x
0
, tres
entradas de seleccin s
2
, s
1
, y s
0
, y una salida w, que denominamos Mx-8-1. Este ejemplo nos servir
para comprender la estructura del diseo y ser capaces de generalizar la idea para disear cualquier otro
multiplexor.
Smbolos de los operadores lgicos bit a bit: OR, XOR y NOT.
Fig. 4.19 Tablas sencillas resultado de aplicar la operacin a) AND, b) OR, c) XOR y
d) NOT a distintos operandos.
a) AND
1 1 1 0 1 0 0 0
0 1 1 0 1 0 0 1
0 1 1 0 1 0 0 0
b) OR
1 1 1 0 1 0 0 1
0 0 1 1 1 0 0 0
1 1 1 1 1 0 0 1
c) XOR
0 1 1 0 1 1 0 0
0 0 0 0 1 1 1 1
0 1 1 0 0 0 1 1
d) NOT
0 1 0 1 0 0 1 0
1 0 1 0 1 1 0 1
4.7
OR XOR NOT
W W
X X X
Y
Y Y
Fig. 4.20 Smbolos de los bloques OR, XOR y NOT.
17
30 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.8.1 Multiplexor Mx-2-1
En primer lugar recordamos la definicin del multiplexor Mx-2-1 que vimos en el captulo 2. Tiene dos
entradas de datos x
1
y x
0
y una de seleccin s y una salida w. El smbolo de este multiplexor y su
funcionalidad representada mediante un dibujo, mediante su tabla de verdad y mediante una versin
compacta de su tabla de verdad se muestra en la figura 4.21. Este multiplexor tiene tres entradas de un
bit y se puede implementar en suma de minterms, como se hizo en el captulo 2, mediante 3 puertas
Not, 4 puertas And-3 para los minterms y una Or-4 para sumar los 4 minterms. Una implementacin con
menos puertas se muestra en la figura 4.22. La expresin lgica que nos lleva a este diseo se puede
conseguir manipulando la expresin en suma de minterms mediante las propiedades algebraicas de las
funciones Not, And y Or. No obstante, es fcil hacer un diseo ad-hoc si pensamos en una puerta And-2
como un dispositivo que tiene una entrada de control y la otra de datos. Cuando en la entrada de control
hay un 1 deja pasar lo que hay en la entrada de datos a la salida y cuando hay un 0 saca un 0 en la
salida. Con esta visin y viendo la funcionalidad del multiplexor con su tabla de verdad compacta, el
diseo de la figura 4.22 se entiende fcilmente.
Mx
0 1
x
0
x
1
s
w
x
0
0
w
x
1
1
w
x
1
x
0
0
0
1
1
0
1
0
1
w
0
1
0
1
s
0
0
0
0
0 0 0 1
0 1 0 1
1 0 1 1
1 1 1 1
s
0
1
w
x
0
x
1
Fig. 4.21 Smbolo del multiplexor Mx-2-1 y funcionalidad descrita mediante un dibujo, su tabla
de verdad y su tabla de verdad compacta.
Mx
0 1
x
0
x
1
s
w
x
0
x
1
s
w
s
0
1
w
x
0
x
1
Fig. 4.22 Smbolo del multiplexor Mx-2-1, tabla de verdad compacta e implementacin ad-hoc.
Bloques aritmticos combinacionales para nmeros naturales 31
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
4.8.2 Multiplexor Mx-8-1
Vamos a disear el Mx-8-1 cuyo smbolo y tabla de verdad compacta se muestra en la figura 4.23.
La figura 4.24 muestra el diseo del Mx-8-1 usando multiplexores Mx-2-1. Para comprender el diseo
nos tenemos que fijar en la tabla de verdad compacta. La entrada s
2
selecciona entre dos conjuntos de
entradas. Cuando vale 0 deja pasar a la salida una de las entradas de la x
0
a la x
3
(cul de ellas depende
de los otros bis de seleccin) y cuando vale 1 deja pasar una de las x
4
a x
7
. Como un Mx-2-1 deja pasar
una de entre dos entradas, dependiendo del valor de su entrada de seleccin, lo podemos usar
conectando s
2
a su entrada de seleccin para decidir cul de los dos conjuntos de entradas se deja pasar
a la salida. Este Mx-2-1 es el multiplexor de ms abajo en el esquema de la figura 4.24.
Smbolo del Mx-8-1 y circuito interno usando Mx-2-1.
Mx
6 7
x
6
x
7
w
s
1
s
0
0
0
1
1
0
1
0
1
w
x
0
x
1
x
2
x
3
0
0
0
0
0 0 x
4
1
0 1 x
5
1
1 0 x
6
1
1 1 x
7
1
4 5
x
4
x
5
2 3
x
2
x
3
0 1
x
0
x
1
s
2
s
1
s
0
s
2
Fig. 4.23 Smbolo y tabla de verdad compacta del multiplexor Mx-8-1.
4.8
x5 x6 x4 x7
w
x3 x1 x2 x0
s2
s1
s0
x7 x6 x5 x4 x3 x2 x1 x0
s0
s1
s2
w
0 1
Mx
0 1
Mx
0 1
Mx
0 1
Mx
0 1
Mx
0 1
Mx
0 1
Mx
2
0 1 2 3 4 5 6 7
0
1
Mx
Fig. 4.24 Smbolo y esquema lgico interno del multiplexor Mx-8-1.
18
32 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ahora tenemos que ser capaces de tener en la entrada de datos 0 de este multiplexor una de las entradas
de la x
0
a la x
3
, segn nos indiquen las entradas de seleccin s
1
y s
0
y en la otra entrada de datos, la 1,
tenemos que tener una de las entradas x
4
a x
7
. Ahora es cuestin de repetir el razonamiento a la mitad
de la tabla. Para ver cmo seleccionamos una de las entradas x
0
a x
3
en funcin de s
1
y s
0
, nos fijamos
que s1 selecciona entre dos mitades. Cuando s
1
vale 0 la salida es una de las entradas x
0
o x
1
(dependiendo de s
0
) y cuando vale 1 la salida es una de x
2
o x
3
... As repetimos el proceso y vamos
subiendo en el rbol del diseo de la figura 4.24. Comprendido este diseo, somos capaces de construir
cualquier multiplexor usando multiplexores 2-1.
4.9 Anlisis de circuitos con bloques
Las entradas a un circuito construido con bloques aritmticos (tambin lgicos y de comparacin) son
buses de n bits (con n=16 para el computador que vamos a construir y n=8 para muchos de los
ejercicios y ejemplos que hacemos). Por lo tanto, no podemos hacer un anlisis del circuito como el
que hacamos en el captulo anterior: a partir del esquema lgico del circuito obtener su tabla de
verdad. Por ejemplo, en el circuito de la figura 4.25 y considerando que los buses son de 8 bits, la tabla
de verdad completa del circuito tiene 2
24
filas, tantas como combinaciones diferentes hay de los 8 bits
de cada uno de los 3 vectores de entrada. Claramente, esta tabla de verdad es irrealizable.
En estos casos no vamos a obtener el valor que toman las salidas del circuito para todas las posibles
combinaciones de valores de las entradas (anlisis exhaustivo que resulta en la tabla de verdad), sino
que haremos un anlisis particular, considerando solamente algunos casos concretos de valores de las
entradas: slo calcularemos una o muy pocas filas de la tabla de verdad. Esto es lo que se hace en el
ejemplo siguiente.
Ejemplo 10
Escribiremos el valor lgico de los bits de salida del circuito de la figura 4.25 (con buses y bloques
de 8 bits) para dos casos concretos de valores de las entradas:
a) X = 01010011, Y = 10110111 y Z = 11000101.
b) X = 11011001, Y = 10110111 y Z = 11000101.
La solucin (particularizando para los valores del apartado a) consiste en los siguientes pasos:
- Aplicar el algoritmo aritmtico de la resta (ver seccin 4.3.1, objetivo 4.1.2) a los vectores de
bits X e Y que entran al bloque SUB obteniendo el vector resultado de 8 bits 10011100 y un 1 en
la salida de borrow, b (ver figura 4.26a), con lo que se obtiene el resultado final: p=1.
- Aplicar el algoritmo aritmtico de la divisin por potencias de 2, en concreto la divisin por 4
(ver seccin 4.5.2, objetivo 4.1.4) al vector de bits Z que entra al bloque SRL-2 obteniendo el
vector resultado de 8 bits 00110001 (ver figura 4.26b).
- Aplicar el algoritmo aritmtico de la suma (ver seccin 4.2.1, objetivo 4.1.1) a los vectores de 8
bits resultantes de los dos pasos anteriores, 10011100 y 00110001, que entran al bloque ADD
obteniendo el vector resultado de 8 bits 00110001 y un 0 en la salida del acarreo, c (ver
Bloques aritmticos combinacionales para nmeros naturales 33
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
figura 4.26d), con lo que se obtienen los dos resultados finales que faltaban: q=0 y
W=00110001.
Por lo que la solucin de a) es: p=1, q=0, W=00110001.
La solucin del apartado b) es la siguiente. La salida del bloque SUB es 00100010 y b=0, la del
bloque SRL-2 es la misma que para el caso anterior 00110001 y la del bloque ADD es 01010011 y
c=0. Por lo tanto la solucin es p=0, q=0 y W=01010011.
Otra forma de analizar un circuito aritmtico, mucho ms general que la anterior, consiste en expresar
el valor que representa el vector de bits de la salida (o los vectores, si hay varios buses de salida)
interpretado como un nmero natural codificado en binario (que es el caso de aritmtica y
representacin que tratamos en este captulo) en funcin de las operaciones aritmticas que realiza el
circuito sobre los valores de los nmeros naturales representados en binario en los buses de entrada.
Esto, en muchas ocasiones slo es fcil hacerlo para el caso en que el resultado de cada una de las
operaciones sea representable en n bits, siendo n el nmero de bits de los buses del circuito. Esto es lo
que hacemos en el ejemplo siguiente. Expresar el resultado para todos los casos, incluidos los casos en
que no todos los resultados parciales y finales sean representables, es en general bastante difcil y no lo
pediremos, dado el carcter introductorio de este libro.
X Z
W p q
Y
SRL-2 SUB
- + b
ADD
c
Fig. 4.25 Esquema lgico interno dede cun circuito combinacional construido interconectando
los bloques aritmticos SUB, SRL-2 y ADD.
Fig. 4.26 TAplicacin de algoritmos aritmticos a vectores de bits concretos a) resta, b)
desplazamiento lgico a la derecha de dos bits (o divisin por 4 de un nmero natural
codificado en binario) y c) suma.
b)
1 1 0 0 0 1 0 1
0
0 0 1 1 0 0 0 1
c)
c =0
1 0 0 1 1 1 0 0
+ 0 0 1 1 0 0 0 1
0 1 0 1 1 1 0 1
a)
b =1
0 1 0 1 0 0 1 1
- 1 0 1 1 0 1 1 1
1 0 0 1 1 1 0 0
34 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 11
Vamos a escribir la expresin aritmtica que da el valor del nmero natural representado en el bus
de salida W del circuito de la figura 4.25 en funcin de los valores representados en los buses de
entrada X, Y y Z. La expresin ser vlida cuando el resultado de cada una de las operaciones
aritmticas realizadas en el circuito sea representable en n bits, siendo n el tamao de los buses y
bloques del circuito (en este ejemplo n= 8 bits). No indicaremos el valor de la salida para los casos
en que en uno o varios de los bloques aritmticos del circuito el resultado no sea representable.
Dado que el bloque SUB realiza la resta aritmtica de los dos nmeros naturales Xu e Yu
representados en binario en los buses de entrada X e Y (siempre que el resultado sea representable,
siempre que b=0), que el bloque SRL-k realiza la divisin por 2
k
del valor Zu representado en el bus
Z de su entrada (en este bloque el resultado siempre es representable) y que el bloque ADD realiza la
suma de sus entradas, que son las salidas de los bloques anteriores (observad la interconexin de los
bloques en la figura 4.25), la expresin es:
Veamos que esta expresin es cierta para los datos de entrada del caso b) del ejemplo 10 (en el que
los resultados de todas las operaciones son representables). Para estos vectores de bits de entrada
los valores representados son Xu = 217, Yu = 183 y Zu = 197. Aplicando la expresin anterior para
estos valores obtenemos que Wu = 83, que es el valor representado por W (que segn el resultado b)
del ejemplo 10 es 01010011).
4.10 Diseo de nuevos bloques aritmticos
Para finalizar este captulo de diseo ad-hoc de dispositivos combinacionales vamos a crear nuevos
circuitos que realizan operaciones aritmticas sobre nmeros naturales representados en binario,
usando para ello los dispositivos que hemos creado en este captulo y/o dispositivos con pocas entradas
que podemos definir y sintetizar en suma de minterms y/o las puertas lgicas necesarias. Vamos a ver
dos ejemplos.
4.10.1 Incrementador
Un incrementador binario es un dispositivo combinacional, cuyo smbolo se muestra a la derecha del
prrafo, que tiene un bus de entrada X de n bits y otro de salida W tambin de n bits, que son los n bits
de menor peso del nmero natural que representa la entrada incrementada en una unidad.
W
u
X
u
Y
u

Z
u
4
------ +


=
Bloques aritmticos combinacionales para nmeros naturales 35
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
.
Como sumar 1 a un nmero es un caso particular de sumar dos nmeros, un posible diseo del
incrementador es hacerlo con n Full-adders en propagacin del acarreo y fijar un operando con los bits
000 0001, que codifican al 1. Pero como sumar un bit con valor cero a los otros dos bits en cada uno
de los Full-adders es igual a sumar simplemente los dos bits, es ms sencillo usar n Half-adders en
propagacin del acarreo como muestra la figura 4.27, sumando un 1 en el bit de menor peso.
4.10.2 Multiplicador por 5
Deseamos disear un circuito combinacional con una entrada X de n bits y salida W de m bits tal que:
(EQ 10)
Cunto debe valer m para que el resultado codificado en los m bits de W sea siempre correcto?
La idea para obtener el diseo es representar en binario el operando constante 5 y manipular la EQ (10)
hasta que aparezcan operaciones mas sencillas, que sepamos realizar en hardware. Como el 5 se
codifica como 101, ya que 5 = 1x2
2
+0x2
1
+1x2
0
= 2
2
+1, la EQ (10) es equivalente a,
(EQ 11)
Smbolo y circuito interno del incrementador, INC, con Half-adders.
W
X
+1
4.3.1
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
s c
Ha
X
W
b
0
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
b
1
0
b
1
1
b
1
2
b
1
3
b
1
4
b
1
5
b
0
b
1
b
2
b
3
b
4
b
5
b
6
b
7
b
8
b
9
b
1
0
b
1
1
b
1
2
b
1
3
b
1
4
b
1
5
1
Fig. 4.27 Smbolo y esquema lgico interno del incrementador binario con Half-adders.
W
u
5X
u
=
W
u
X
u
2
2
X
u
+ =
36 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Resulta que ya sabemos multiplicar por una potencia de dos un nmero natural codificado en binario y
tambin sabemos sumar dos nmeros naturales. Como nos dice el enunciado que tenemos que codificar
W
u
con m bits, tantos como sean necesarios para que el resultado sea siempre representable, haremos
las dos operaciones con los bits necesarios para que el resultado sea siempre representable.
La multiplicacin por 2
2
requiere n+2 bits de resultado, que se obtiene desplazando 2 posiciones los
bits de X a la izquierda y poniendo los dos bits de menor peso a 0. Ahora se deben sumar estos n+2 bits
que codifican 4X
u
ms los n bits que codifican X
u
. Para ello tenemos que usar un sumador binario con
n+2 Full-adders en propagacin del acarreo, del cual nos tenemos que quedar como salida con los n+2
bits de W a los que se tiene que concatenar por la izquierda, como bit de peso 2n+3 el acarreo de salida,
para formar los m = n+3 bits que codifican siempre correctamente al resultado 5X
u
. El operando X
u
que
entra al sumador de n+2 bits hay que representarlo con n+2 bits. Para ello se aplica el algoritmo de
extensin de rango de nmeros naturales codificados en binario que vimos en el captulo 1: a los n bits
que representan X
u
se le concatenan por la izquierda dos bits ms con valor 0. La figura 4.28 muestra el
diseo para n=4 bits.
Optimizacin. Puede hacerse un diseo ms eficiente eliminando los Fa para calcular w
0
y w
1
y
poniendo Half-adders en vez de Full-adders para calcular w
2
, w
4
y w
5
(y w
6
).
s c
Fa
s c
Fa
s c
Fa
s c
Fa
x1 X0 x2 x3
s c
Fa
s c
Fa
w0 w1 w2 w3 w4 w5 w6
0 0 0 0
0
Fig. 4.28 Esquema lgico interno del multiplicador por 5, Wu = 5Xu, para n=4 y m=7
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 1
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5 Nmeros enteros: representacin, operaciones bsicas y bloques
aritmticos combinacionales
5.1 Un repaso a la representacin y suma de nmeros naturales ............................. 2
5.2 En busca de una representacin eficiente para los nmeros enteros.................. 4
5.3 Representacin de enteros en complemento a dos ............................................. 8
5.4 Suma con deteccin de resultado no representable............................................ 14
5.5 Cambio de signo................................................................................................. 20
5.6 Resta ................................................................................................................... 25
5.7 Implementacin de un sumador/restador ........................................................... 25
5.8 Multiplicacin por potencias de dos................................................................... 26
5.9 Divisin por potencias de dos ............................................................................ 29
5.10 Comparacin de nmeros enteros ...................................................................... 32
2 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.1 Un repaso a la representacin y suma de nmeros naturales
Sistema de numeracin binario. Como hemos visto, los nmeros naturales (en ingls
unsigned integers, o non-negative integers) se representan en el computador en el sistema de
numeracin binario. En binario, el vector X de n bits
(EQ 1)
representa el valor numrico
(EQ 2)
(el subndice u indica que estamos interpretando el vector de bits como un nmero natural (unsigned)
representado en binario). Por ejemplo, el vector representa en binario el valor
, que en decimal (que es como nosotros representamos los
nmeros naturales) se representa como (se obtiene representando las potencias de dos en
decimal y realizando las operaciones en decimal).
Rango. El rango de nmeros naturales representables en binario con n bits es:
(EQ 3)
Sumador binario
En la tabla de la figura 5.1 se muestran todos los posibles vectores de 3 bits y su valor asociado al
interpretar cada vector como un nmero natural codificado en binario. Las entradas de esta tabla se han
ordenado en funcin del valor de X
u
, de menor a mayor.
0 1 2 , , , { }
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
X
u
x
i
2
i
i 0 =
n 1

=
X 11001 =
X
u
1 2
4
1 2
3
0 2
2
0 2
1
1 2
0
+ + + + =
X
u
25 =
0 X
u
2
n
1
ADD
n
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
4
5
6
7
x
2
x
0
X
u
c
3
= 1
Fig. 5.1 Tabla de representacin de nmeros naturales codificados en binario con 3 bits y
sumador binario de n bits: la suma como recorrido circular de la tabla de representacin.
X Y
c
0
c
n
n n
n
W
X
x
1
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 3
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En la figura 5.1 tambin se representa el smbolo del sumador binario de n bits. Las entradas de este
bloque combinacional son dos vectores de n bits X e Y, que representan dos nmeros naturales X
u
e Y
u
,
y un bit, c
0
, denominado acarreo de entrada (en ingls carry in). El sumador calcula el valor W
u
,
representado mediante el vector de n bits W = w
n-1
...w
1
w
0
y el bit c
n
, denominado acarreo de salida,
tales que:
y (EQ 4)
(EQ 5)
Esto es, el vector de bits W representa el valor correcto de la suma , cuando este resultado
puede representarse en binario con n bits. Cuando el acarreo de salida, c
n
, se activa indica que el
resultado correcto de la suma no es representable con n bits en binario (resultado no representable) y
por lo tanto w
n-1
...w
1
w
0
no representa el resultado correcto, . Usando la tabla de la
figura 5.1 para realizar algunas sumas que produzcan resultados no representables, observamos que
siempre la diferencia entre el resultado correcto y el que se obtiene con 3 bits es de 8 (= 2
3
) unidades.
Llevando esta conclusin al caso general de n bits, tenemos:
(EQ 6)
Otra forma de expresar la EQ (5) y la EQ (6) en una sola es:
(EQ 7)
Denotamos las funciones lgicas que obtienen los bits de salida del sumador binario de n bits, en
funcin de los bits de entrada, como:
(EQ 8)
(EQ 9)
En el nombre de los operadores ADD
n
y CARRY
n
no pondremos el subndice n (tamao del sumador
binario) para el caso comn en este curso de n = 16.
La suma como recorrido circular de la tabla de representacin
La tabla de la representacin de nmeros naturales para n = 3 de la figura 5.1 puede ayudarnos a
entender como funciona el sumador binario. Esta visin que damos a continuacin nos ser til en la
seccin siguiente. Consideremos dos situaciones:
c
n
0 si X
u
Y
u
c
0
+ + 2
n
1
1 si X
u
Y
u
c
0
+ + 2
n
1 >

=
W
u
X
u
Y
u
c
0
+ + = si X
u
Y
u
c
0
+ + 2
n
1 si c
n
0 = ( )
X
u
Y
u
c
0
+ +
W
u
X
u
Y
u
c
0
+ +
W
u
X
u
Y
u
c
0
2
n
+ + = si X
u
Y
u
c
0
+ + 2
n
1 > si c
n
1 = ( )
W
u
X
u
Y
u
c
0
+ + ( ) mod 2
n
=
W ADD
n
X Y c
0
, , ( ) =
c
n
CARRY
n
X Y c
0
, , ( ) =
4 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Si tomamos una fila de la tabla, un vector de bits X (que representa el nmero X
u
) y le sumamos,
con el sumador binario, el vector 001 (que representa el 1), obtenemos un nmero que est una
posicin adelante (ms hacia abajo) en la tabla, siguiendo la direccin que indica la flecha de trazo
continuo de la izquierda de la tabla. Si repetimos esta operacin, vamos avanzando en la tabla hasta
que llegamos a la fila 111 (que representa al nmero 7). En cada uno de estos casos, la
representacin de X
u
+1 se obtiene correctamente y el acarreo de salida del sumador binario, c
3
,
vale 0.
Si ahora al vector 111 le sumamos el vector 001, intentando obtener la representacin del valor 7+1,
obtenemos el vector 000 que representa el valor 0. Esto es as porque el 8, que es el resultado
correcto, no puede representarse con 3 bits. El paso del 111 al 000 se indica mediante una flecha
discontinua
1
que une el final de la tabla con el principio. Este paso se detecta en el sumador binario
porque c
3
vale 1, indicando resultado no representable.
Esto se puede generalizar, de forma que la representacin binaria de X
u
+ Y
u
con 3 bits puede
encontrarse contando Y
u
posiciones en la direccin de la flecha a partir de la fila que codifica el valor
de X
u
en la tabla de la figura 5.1. Si durante este proceso de contar pasamos del final de la tabla al
principio, el resultado no es representable con 3 bits y c
3
valdr 1 (al sumar dos nmeros de 3 bits, a lo
sumo se pasa una sola vez del final de la tabla al principio).
5.2 En busca de una representacin eficiente para los nmeros enteros
En esta seccin obtenemos la representacin que usan los computadores para almacenar y hacer
clculos con nmeros enteros. Un nmero perteneciente al conjunto de los enteros
(en ingls signed integer o simplemente integer) se representa internamente en el
computador, como cualquier otra informacin, mediante un vector de n bits.
con .
Definir una representacin consiste en encontrar una tabla o una expresin aritmtica (como se ha
hecho en la seccin anterior para los nmeros naturales) que para cada posible vector de bits nos
indique el nmero que representa. La frmula/tabla no puede ser la misma para los enteros que para los
naturales (figura 5.1 o EQ (2)), ya que con esta expresin slo se obtienen nmeros positivos.
Hay muchos posibles sistemas de representar un nmero entero mediante un vector de bits, la
diferencia entre ellos estriba en lo sencillo o complicado que resulta realizar operaciones
aritmticas con cada uno de estos sistemas. Como caso ms usual de operacin aritmtica
consideramos la suma, que adems es una operacin bsica para clculos ms complejos como
la resta y la multiplicacin.
Veamos algunos sistemas de representacin de nmeros enteros.
1. Pasar la frontera del 111 al 000 en la tabla, es equivalente a hacer la operacin mod 8. As que el sumador binario ha
calculado . 7 1 + ( )mod 8 0 =
2 1 0 1 2 , , , , , { , }

X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 5
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.2.1 Signo y magnitud en base 2
La representacin de un nmero entero mediante un vector de bits ms familiar para nosotros, puesto
que es similar a la que usamos normalmente en base 10, es la representacin en signo y magnitud en
base 2. Dado un vector X de n bits que representa al nmero entero X
sm
en signo y magnitud (en ingls
sign and magnitude), el bit de ms a la izquierda del vector de bits codifica el signo, si x
n-1
vale 0,
indica que el nmero es positivo y si vale 1 que es negativo, y los n-1 bits restantes representan en
binario el valor absoluto de X
sm
(la magnitud de X
sm
), que es un nmero natural.
La figura 5.2 muestra en una tabla los 8 posibles vectores de 3 bits y el valor del nmero entero que
representan en signo y magnitud. La expresin algebraica general para obtener el valor de un nmero a
partir del vector de bits que lo representa tambin se muestra en la figura. De esta frmula es fcil
deducir que el rango de nmeros representables positivos y negativos es el mismo,
; pero hay dos posibles representaciones del valor 0.
Repasemos ahora el algoritmo que usamos habitualmente para sumar en signo y magnitud en decimal,
ya que haremos lo mismo en signo y magnitud en binario:
Cuando los operandos tienen el mismo signo, la magnitud del resultado es la suma de las
magnitudes de los operandos y el signo del resultado es el signo de los operandos. Por ejemplo,
(+34) + (+12) = +46 y tambin (-34) + (-12) = -46.
Cuando los operandos son de distinto signo, para obtener la magnitud del resultado se resta a la
magnitud mayor la menor y el signo del resultado es el signo del operando de mayor magnitud. Por
ejemplo, (+34) + (-12) = +24 y tambin (-34) + (+12) = -24
Este algoritmo requiere un sumador de nmeros naturales codificados en binario con n-1 bits, para
cuando los dos operandos son del mismo signo y un comparador y un restador de nmeros naturales
codificados en binario con n-1 bits, para cuando los nmeros tienen distinto signo. Aunque la
comparacin y la resta pueden hacerse con pequeas modificaciones del sumador binario y aunque
existen algoritmos ms ptimos, podemos concluir lo siguiente.
2
n 1
1 ( ) X
sm
2
n 1
1
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
-0
-1
-2
-3
x
2
x
0
X
s
X
sm
x
i
2
i
i 0 =
n 2

si x
n 1
0 =
x
i
2
i
i 0 =
n 2

\
|
|
| |
si x
n 1
1 =

=
Fig. 5.2 Tabla de la representacin signo y magnitud en binario con 3 bits y frmula para n bits.
x
1
X
6 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La suma de nmeros enteros en signo y magnitud es ms costosa en hardware y/o en tiempo de
propagacin que la suma de nmeros naturales en binario. Por esta razn, los computadores
actuales no usan la representacin en signo y magnitud para los nmeros enteros, aunque para
los humanos sea la ms familiar.
5.2.2 Otras representaciones ms efectivas
Los computadores usan una representacin en la que la suma de nmeros enteros se puede realizar con
el mismo sumador que se usa para los nmeros naturales codificados en binario, que hemos
denominado sumador binario. Sabras encontrar una representacin con estas caractersticas?
Desde luego, la representacin en signo y magnitud no cumple este objetivo para todos los nmeros. La
figura 5.3 muestra dos ejemplos de suma de nmeros representados en signo y magnitud usando el
sumador binario. En el primer ejemplo se suman dos nmeros positivos y se obtiene el resultado
correcto. Esto es as porque la representacin en signo y magnitud de los nmeros enteros positivos es
la misma que la de los nmeros naturales representados en binario. En el segundo ejemplo, en el que se
suman dos nmeros de distinto signo, el resultado de la suma usando un sumador binario no es correcto
(a pesar de que el resultado correcto s que es representable en signo y magnitud con 3 bits).
Un posible razonamiento para encontrar una representacin en la que la suma se realice correctamente
con el sumador binario es el siguiente:
Codificamos los nmeros positivos como en binario (como ocurre en la codificacin en signo y
magnitud en base 2), con lo que nos aseguramos que la suma de positivos ser correcta con el
sumador binario (siempre que el resultado sea representable, claro).
Cmo codificamos los negativos? Si recordamos como opera el sumador binario, contando en la
direccin de la flecha en la tabla circular de la figura 5.1, podemos deducir que el valor -1 se tiene
que codificar como 111 (para n=3). Este es el nico vector de bits que al sumarle, con el sumador
binario, el vector 001, que como hemos dicho en el punto anterior representa al 1, obtenemos el
vector 000, que representa el 0 y es el resultado correcto de -1+1.
Notacin. Llamamos X
s
al valor representado por el vector de bits X en la representacin que
estamos buscando para nmeros enteros; la s del subndice viene del ingles signed integers).
1 0 0
1 0 0
0 1 0
+
1 1 0
1 0 0
0 1 1
+
1
1
2
+
-1
1
0
+
=
Fig. 5.3 Ejemplos de suma de 2 nmeros enteros en signo y magnitud usando el sumador binario.
En el primer ejemplo el resultado es correcto, mientras que en el segundo no.
Vectores de
bits
Suma
correcta en
Sign. y Mag.
Vectores de
bits
a) b)
Suma
correcta en
Sign. y Mag.
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 7
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Una vez decidido que los nmeros positivos se codifican como en binario, tenemos que codificar
los negativos de forma que la codificacin del nmero X
s
+1 sea la siguiente en la tabla a la de X
s
,
avanzando en la direccin de la flecha. Por ello, el -2 debe codificarse como 110, para que al
sumarle, con el sumador de binario, el vector 001 se obtenga el vector 111, que acabamos de decidir
que representa al -1.
En la figura 5.4 se muestran tres posibles representaciones para los nmeros enteros con 3 bits que
cumplen la condicin de que la suma en estos sistemas se puede realizar con el sumador binario,
obtenindose el resultado correcto, excepto cuando el resultado no puede representarse con tres bits, en
cada uno de los sistemas. Podis comprobar esto con facilidad.
En qu difieren las tres representaciones, a), b) y c), de la figura 5.4? Se diferencian en el rango: en
qu nmeros pueden representarse con 3 bits. Para cada una de las representaciones el rango es:
a) ,
b) ,
c) .
Ello hace que la deteccin de resultado no representable con 3 bits difiera en cada uno de estos tres
sistemas de representacin y sea diferente tambin con el caso de binario. Adems, en ninguno de estos
tres sistemas, pasar de 111 al 000 (del -1 al 0) indica resultado no representable, a diferencia del caso de
binario. Esto es, el acarreo de salida del sumador binario, para estas tres representaciones, no indica
resultado de la suma no representable con n bits.
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
4
-3
-2
-1
x
2
x
0
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
-5
-4
-3
-2
-1
x
2
x
0
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
-4
-3
-2
-1
x
2
x
0
Fig. 5.4 Tres posibles representaciones de nmeros enteros con 3 bits. Se diferencian en el rango
de valores representables pero en los tres casos la suma puede realizarse con el sumador binario
(para resultados dentro del rango).
b) a) c)
X
a
X
x
1
X
b
X
x
1
X
c
X
x
1
3 X
a
4
5 X
b
2
4 X
c
3
8 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.2.3 Complemento a dos
Cul de las representaciones de la figura 5.4 se usa para codificar un nmero entero en un
computador? Aunque alguno de los primeros computadores no la usaba, actualmente todos usan la
representacin c), que se denomina Complemento a dos (de forma abreviada Ca2). El Ca2, a
diferencia de las representaciones a) y b) o de otras en las que se pueda sumar con el sumador binario,
aunque tengan distinto rango, tiene las siguientes caractersticas:
Tiene un rango ms simtrico que las otras representaciones, aunque no es simtrico del todo ya que
puede representar un negativo mayor en valor absoluto que el mayor de los positivos (esto es
inevitable porque en estos sistemas el 0 tiene una sola representacin (ver figura 5.4).
Saber el signo del nmero representado por un vector de bits es sencillo. Para saber si un nmero es
positivo o negativo slo hay que observar el valor del dgito de ms a la izquierda, si vale 0 el
nmero es positivo y si vale 1 es negativo (ver figura 5.4). Con esto estamos considerando, como es
usual, que el 0 es un nmero positivo.
La deteccin de resultado no representable es ms sencilla que en los otros casos (esto es as por la
facilidad en la identificacin del signo y lo estudiamos ms adelante).
5.3 Representacin de enteros en complemento a dos
Se trata ahora de generalizar para n bits la representacin que hemos visto para 3 bits en la figura 5.4 c)
Sabrais escribir una tabla con la representacin para n = 8? Seguro que s, pero sera muy pesado ya
que la tabla tiene 256 entradas. Vamos a escribir solamente algunos nmeros caractersticos, por
ejemplo, la representacin de los nmeros ms pequeos y ms grandes, tanto positivos como
negativos. La figura 5.5 repite la tabla para n = 3 y muestra la generalizacin de estos nmeros para n =
8.
Sabrais encontrar una frmula para obtener el valor de un nmero entero a partir de los n dgitos
binarios de su representacin en Ca2? Una frmula en funcin de n es la mejor generalizacin!
Las ventajas de usar dentro del computador la representacin en Ca2 para los
nmeros enteros frente a la de signo y magnitud en base dos (ms parecida al sistema
que usamos los humanos) so las siguiente:
El sumador en Ca2 es el mismo que el sumador para naturales representados en
binario (excepto la deteccin de resultado no representable con n bits) por lo que
no harn falta dos sumadores distintos en el computador: con uno solo podremos
sumar tanto nmeros naturales como enteros.
El sumador binario es ms sencillo (menos hardware y menor tiempo de
propagacin) que el sumador en signo y magnitud en base dos (aunque esto no lo
hemos visto en detalle).
5.1
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 9
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En primer lugar, consideremos por separado el caso en que el valor representado, X
s
, es positivo y el
caso en que es negativo.
Nmero positivo ( , o lo que es lo mismo )
Como la representacin de un nmero positivo en Ca2 es igual que la representacin en binario, la
frmula tiene que ser la misma que para el caso de naturales representados en binario, EQ (2). No
obstante, en este caso no hace falta que intervenga el bit de ms a la izquierda, x
n-1
, puesto que para
los positivos siempre vale cero.

Nmero negativo ( , o lo que es lo mismo )
Observemos la figura 5.5 para los nmeros negativos. Si al dgito de mas a la izquierda le damos el
mismo peso que le corresponde en binario (2
n-1
) pero con signo negativo y al resto de dgitos el
peso y el signo positivo correspondiente a binario, obtenemos los valores correctos de los nmeros
-128 (-128 = -128 + 0) y -1 (-1 = -128 + 127, ya que de la representacin de los nmeros naturales
sabemos que ). Generalizando obtenemos que para los negativos:

0 0 0 0 0 0 0 0 => 0
0 1 1 1 1 1 1 1 => 127 (2
n-1
-1)
1 0 0 0 0 0 0 0 => -128 (-2
n-1
)
1 1 1 1 1 1 1 1 => -1
Fig. 5.5 Tabla de la representacin en Ca2 para 3 bits y representacin
con 8 bits de algunos nmeros caractersticos.
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
-4
-3
-2
-1
x
2
x
0
X
s
X
x
1
X
s
0 x
n 1
0 =
X
s
x
i
2
i
i 0 =
n 2

= para x
n 1
0 =
X
s
0 < x
n 1
1 =
2
i
i 0 =
n 2

2
n 1
1 =
X
s
2
n 1
x
i
2
i
i 0 =
n 2

+ = para x
n 1
1 =
10 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.3.1 Rango
Cul es el rango de la representacin en Ca2 para n bits? El nmero negativo con mayor valor
absoluto que se puede obtener de la EQ (10) se encuentra dando valor 1 a x
n-1
y valor 0 a todos los
dems dgitos. Este nmero es el -2
n-1
. Por otro lado, el positivo mayor se obtiene dando valor 0 a x
n-1
para que no reste nada y valor 1 a todos los dems dgitos que suman. Este nmero es el 2
n-1
-1. Como
todos los nmeros enteros entre estos dos estn representados:
5.3.2 Extensin de rango
Dado el vector X de n bits que representa en Ca2 al nmero entero X
s
, cmo se obtiene en vector W de
n+1 bits que representa a ese mismo nmero, W
s
= X
s
? La figura 5.6 muestra todos los nmeros
representables en Ca2 con 3 y 4 bits. Las flechas indican como se representa con 4 bits cada uno de los
8 posibles nmeros representados con 3 bits. Generalizando esta idea, se dice que la extensin de rango
se efecta extendiendo el bit de signo. Esto es, los n bits de menos peso de la nueva representacin son
los mismos que los de la representacin original y como bit de ms peso de la nueva representacin se
replica el bit de ms peso de la original. Por ejemplo, el nmero 3 con 3 bits se representa como 011 y
con 4 bits como 0011. El nmero -3 se representa con 3 bits como 101 y con 4 como 1101. Para los
nmeros positivos la demostracin es trivial usando la EQ (10) y para demostrar el caso de los
negativos slo hay que saber que .
Sabras implementar un bloque combinacional para extender el rango de n a n+1 bits? En la figura 5.6
puede verse la implementacin para pasar de 3 a 4 bits (le denominamos SE del ingls Sign Extension).
La frmula que da el valor de un nmero entero, X
u
, en funcin del valor de los n
bits, , del vector X que lo representa en complemento a dos
(tanto para los positivos ( ) como para los negativos ( ), es:
(EQ 10)
El rango de la representacin en complemento a dos con n bits es:
(EQ 11)
5.2
x
n 1
x
n 2
x
2
x
1
x
0
x
n 1
0 = x
n 1
1 =
X
s
x
n 1
2
n 1
x
i
2
i
i 0 =
n 2

+ =
5.3
2
n 1
X
s
2
n 1
1
2
2
n 1
2
n
2
n 1
+ =
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 11
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Obsrvese que este bloque se implementa sin ninguna puerta lgica, slo requiere cables. Qu
sencillo!
Sabras hacer ahora la extensin de rango de n a n + k bits? La figura 5.7 muestra el bloque que
extiende el rango en Ca2 de 3 a 6 bits.
1
n
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
-4
-3
-2
-1
x
2
x
0
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
4
5
6
7
w
2
w
0
0
0
0
0
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
-8
-7
-6
-5
-4
-3
-2
-1 1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
w
3
x
2
x
1
x
0
w
2
w
1
w
0
w
3
n+1
SE
X
W
Fig. 5.6 Tablas de las representaciones en Ca2 para 3 y 4 bits. Implementacin de un
bloque de extensin de rango de 3 a 4 bits.
W
s
= X
s X
s
X
x
1
W
s
W
w
1
3
x
2
x
1
x
0
w
2
w
1
w
0
w
3
6
SE
X
W
w
5
w
4
Fig. 5.7 Implementacin de la extensin de rango de 3 a 6 bits.
W
s
= X
s
12 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.3.3 Cambio de representacin para nmeros enteros
De complemento a dos a decimal en signo y magnitud
Para encontrar el valor de un nmero entero (y representarlo en signo y magnitud decimal, que es como
estamos acostumbrados a representar los enteros) a partir de su representacin en complemento a dos
mediante el vector de n bits con simplemente hay que operar los
bits de X de acuerdo con la frmula de la definicin del Ca2, EQ (10):

Ejemplo 1
Qu nmero entero representa el vector de 8 bits 11001010 en complemento a 2? Aplicando la
frmula anterior tenemos que:
De decimal en signo y magnitud a complemento a dos
Vamos a ver ahora dos procedimientos para obtener los bits de la representacin de un nmero entero.
Despus de ver el algoritmo de cambio de signo veremos otra forma ms de hacerlo.
Procedimiento de las divisiones por dos. De la misma forma que se demostr como pasar un nmero
natural de decimal a binario, se puede demostrar el procedimiento para pasar un nmero entero de
decimal en signo y magnitud a Ca2. La frmula de la representacin en binario y en Ca2 es casi la
misma, un sumatorio de todos los dgitos cada uno de ellos multiplicado por su peso, excepto que el
Ca2 el dgito de mas peso se resta en vez de sumarse. Esto se puede interpretar como que el dgito de
ms peso vale 0 o -1 en vez de 0 o 1. Por ello, el procedimiento para obtener los dgitos binarios de la
representacin en Ca2 a partir de un nmero decimal es similar al caso binario. En ambos casos se
obtienen los dgitos comenzando por el de ms peso hasta obtener finalmente el de menos peso. Para
binario, se divide el nmero entre 2 y el resto es el dgito de menos peso, el cociente se divide a su vez
por 2 y el resto es el siguiente dgito y se repite el proceso hasta que el cociente vale 0 y el resto es el
dgito de ms peso. Las divisiones se efectan de forma que los restos sean positivos (0 o 1, pues son
los dgitos). Esto no hace falta decirlo ya que el nmero es siempre positivo y hacerlo as es lo normal).
Pero para obtener la representacin en Ca2 hay que efectuar las divisiones de forma que los restos sean
positivos (y esto no es lo que hacemos normalmente al dividir un nmero negativo entre un positivo)
hasta que el cociente pueda ser cero y el resto de esta ultima divisin sea 0 o -1. La figura 5.8
ejemplifica este algoritmo para dos casos, -5 y 5.
Procedimiento de obtener X pasando por el clculo de X
u
a partir de X
s
. Dado un vector de n bits,
X, podemos encontrar el valor que representa interpretndolo como un nmero natural codificado en
binario aplicando la EQ (2) y tambin podemos encontrar el valor que representa X interpretndolo
como un nmero entero codificado en Ca2 aplicando la EQ (10).
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
X
s
x
n 1
2
n 1
x
i
2
i
i 0 =
n 2

+ =
X
s
2
7
2
6
2
3
2 54 = + + + =
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 13
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Veamos la relacin que existe entre estas dos interpretaciones. La EQ (2) se puede expresar, quitando
del sumatorio el trmino de ms peso, como:
Si en esta ecuacin sustituimos el valor del sumatorio que se obtiene de despejar la EQ (10),
, obtenemos que:
(EQ 12)
Dado un nmero entero X
s
y un nmero de bits n tal que X
s
pueda representarse en Ca2 con n bits (n
tal que ) sabemos que si X
s
es positivo entonces x
n-1
es 0 y si X
s
es negativo
entonces x
n-1
es 1. Esto hace que la relacin de la EQ (12) pueda escribirse como:
(EQ 13)
Aplicando esta frmula, dado el nmero entero X
s
encontramos fcilmente el valor natural X
u
. Ahora
mediante el procedimiento de las divisiones sucesivas entre 2 que vimos en el captulo 1 para pasar de
-5 2
-6 -3
1
2
-4 -2
1
2
-1 2
0 0
-1
-2
0
-5 => 1 0 1 1
5 2
4 2
1
2
2 1
0
2
0 2
0 0
0
0
1
5 => 0 1 0 1
Fig. 5.8 divisiones sucesivas por 2 para obtener la representacin en Ca2 del -5 y del 5.
X
u
x
n 1
2
n 1
x
i
2
i
i 0 =
n 2

+ =
x
i
2
i
i 0 =
n 2

X
s
x
n 1
2
n 1
+ =
X
u
X
s
x
n 1
2
n
+ =
2
n 1
X
s
2
n 1
1
X
u
X
s
si X
s
es positivo
X
s
2
n
+ si X
s
es negativo

=
14 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
decimal a binario encontramos el vector de n bits X que representa a X
u
en binario, pero que tambin
representa a X
s
en Ca2.
Ejemplo 2
Vamos a encontrar el vector de bits que representa en Ca2 al nmero entero X
s
= -54.
Para representar al -54 hacen falta al menos 7 bits, ya que . De la EQ (13)
para n = 7 obtenemos que, como -54 es negativo, X
u
= -54 + 128 = 74. Ahora mediante sucesivas
divisiones entre 2 obtenemos que el 74 se representa en binario mediante el vector de bits X =
1001010.
Si en el enunciado del problema nos dicen que quieren, por ejemplo, la representacin en Ca2 del -
54 en 8 bits (u otro valor mayor que 7) aplicamos la EQ (13) para n=8 y obtenemos que X
u
= -
54+256=202 que en binario se representa mediante X = 11001010. Como vemos es la extensin de
rango en Ca2 del vector que obtuvimos para 7 bits, 1001010. Tambin se puede comprobar la
correccin del resultado repasando el ejemplo 1.
Ejemplo 3
Cada fila de la tabla siguiente tiene 3 columnas con: el vector de 8 bits X, el valor que representa X
interpretado como un nmero natural codificado en binario, X
u
, y el valor que representa X
interpretado como un nmero entero codificado en complemento a dos, X
s
. Usando la EQ (12) o la
EQ (13), para cada fila, a partir del valor de una columna de la tabla se pueden obtener los valores
de las otras dos columnas.
5.4 Suma con deteccin de resultado no representable
Como ya hemos visto, la suma de dos nmeros enteros representados en Ca2 se efecta con el mismo
sumador que usamos para naturales representados en binario. Este era el objetivo de la representacin
en Ca2. La diferencia entre la suma de nmeros naturales representados en binario y la de nmeros
enteros representados en Ca2 radica en la deteccin de resultado no representable.
Si trabajamos con naturales en binario, el resultado de la suma no es representable con n bits cuando el
acarreo de salida del sumador, c
n
, vale 1. Esto ocurre por ejemplo para n = 3 al sumarle 1 (representado
por 001) al mayor nmero positivo que se puede representar con 3 bits, que es el 7 (111). En este caso,
el resultado del sumador es 000, que representa el 0 y c
3
vale 1 que indica el resultado de la suma no es
X
X
u
X
s

11001011 203 -53
00101110 46 46
11100110 230 -26
00011010 26 26
2
7 1
54 2
7 1
1
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 15
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
representable con 3 bits. Sin embargo, en Ca2, el acarreo de salida del sumador, c
n
, no indica que el
resultado no sea representable. Para los mismos vectores de bits que en el ejemplo anterior, estamos
sumando 1 (representado por 001) al -1 (representado por 111) y el resultado del sumador es el
correcto, 000, que representa el 0, aunque el acarreo de salida c
3
vale 1.
Cmo se sabe si los n bits del resultado del sumador binario cuando trabajamos en Ca2 representan
correctamente el resultado de la suma? La deteccin de resultado no representable al sumar dos
nmeros en Ca2 puede efectuarse observando los bits que indican el signo de los operandos, x
n-1
e y
n-
1
, y del resultado, w
n-1
. Para encontrar la expresin lgica de resultado no representable,
descomponemos el problema en dos casos (y lo particularizamos para n=3, cuya representacin se
muestra en la tabla de la figura 5.5). En el razonamiento que sigue hay que tener claro que en Ca2 con
n bits podemos representar todos los enteros entre el ms negativo de los representables (-2
n-1
= -4) y
el ms positivo (2
n-1
-1 = 3), como hemos visto al hablar del rango.
Operandos con distinto signo.
La suma de un nmero positivo ms un nmero negativo ms el valor ms desfavorable del acarreo de
entrada nunca da un nmero ms alejado del 0 que el operando de valor absoluto mayor. Por ejemplo,
para n = 3, X
s
+ Y
s
+ c
in
= 3 + (-1) + 1 = 3, y tambin X
s
+ Y
s
+ c
in
= -4 + 0 + 0 = -4. De la afirmacin
anterior se deduce que, si los operandos X
s
e Y
s
son representables con n bits, el resultado X
s
+ Y
s
+ c
in
tambin lo es. Por lo tanto, el resultado siempre es representable al sumar un positivo con un negativo.
Operandos con el mismo signo
Suma de positivos. La suma de cualquier par de nmeros positivos representables con n bits en Ca2,
del 0 al 2
n-1
-1 (del 0 al 3), ms el acarreo de entrada (el valor ms desfavorable para este caso es c
in
=
1) da nmeros entre el 0 y el 2
n
-1 (entre el 0 y el 7). Si sumamos los nmeros representados en Ca2 con
el sumador binario, obtendremos nmeros en Ca2:
entre el 0 y el 2
n-1
-1 (entre el 0 y el 3), que son los casos de resultados correctos, o
entre el -2
n-1
y el -1 (entre el -4 y el -1), que son los casos de resultados incorrectos, ya que en estos
casos no se pueden representar los resultados correctos, que van del 2
n-1
al 2
n
-1 (del 4 al 7).
Nunca, por muy grandes que sean los operandos positivos y con c
in
= 1 (por ejemplo, 3+3+1),
pasaremos la frontera del 111 al 000. Es decir, que si al sumar dos nmeros positivos el resultado es
positivo este resultado es correcto, pero si el resultado es negativo, este resultado no es correcto,
porque el resultado correcto no es representable con n bits en Ca2.
Suma de negativos. Un razonamiento parecido puede hacerse al sumar dos negativos. Para n=3, al
sumar dos negativos (del -4 al -1) ms el acarreo ms desfavorable (para este caso c
in
= 0), el resultado
en Ca2 con 3 bits que nos entrega el sumador binario se encuentra:
entre el -4 y el -2 (casos de resultado correcto) o
16 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
entre el 0 y el 3 (resultados incorrectos, ya que los resultados correctos, que van del -8 al -5, no se
pueden representar con 3 bits).
Es decir, si al sumar dos nmeros negativos el resultado es negativo, este resultado es correcto; pero si
el resultado es positivo, este resultado no es correcto, porque el resultado correcto no es representable
con n bits en Ca2.
Conclusin
La regla completa de deteccin de resultado no representable para la suma en Ca2 con n bits es: si al
sumar dos nmeros enteros del mismo signo (sea cual sea el acarreo de entrada) el resultado que nos
dan los n bits del sumador binario tiene signo contrario, este resultado no es correcto ya que el
resultado correcto no es representable con n bits en Ca2. En cualquier otro caso el resultado es correcto.
Del texto anterior obtenemos la siguiente expresin lgica para la deteccin de resultado no
representable para la suma en Ca2 con n bits:
(EQ 14)
Por ello, si queremos saber si la salida W del sumador binario es correcta cuando interpretamos los
vectores de bits X, Y y W como nmeros enteros representados en Ca2, debemos aadirle al circuito
sumador el bit de salida v
n
. Denotamos a la funcin lgica que lo calcula, operador OVF
n
:
(EQ 15)
Ni en el nombre de la variable lgica v
n
ni en el del operador OVF
n
pondremos el subndice n (tamao
del sumador binario) para el caso comn en este curso de n = 16.
OVF son las primeras letras de la palabra en ingls Overflow, que significa desbordamiento. En la literatura tcnica
anglosajona se usa el trmino Overflow (o en muchas ocasiones la letra v) para referirse al caso de resultado no
representable en Ca2, pero no se suele usar para el caso de representacin de naturales en binario. Aunque la
palabra desbordamiento da una idea clara de que el resultado no es correcto porque excede de la capacidad de
representacin del vector de n bits y esto es vlido tanto para binario como para Ca2, no usaremos la palabra
desbordamiento (overflow) para referirnos a esto en general, sino que usaremos el termino resultado no
representable. Usaremos el termino desbordamiento, overflow, OVF o la letra v, solamente para el caso de Ca2.
Ejemplo 4
Sabrais demostrar que es vlida la siguiente expresin lgica alternativa para la deteccin de
resultado no representable en Ca2 (el smbolo denota a la funcin lgica Xor de dos variables)?
(EQ 16)
Para demostrarlo, construimos la tabla de verdad del Full-adder de ms peso del sumador binario
construido con Full-adders conectados con propagacin del acarreo, ya que es el que genera las
seales c
n
y w
n-1
a partir de x
n-1
, y
n-1
y c
n-1
. El resultado puede verse en las cinco primeras
columnas de la tabla de la figura 5.9. Por ltimo, puede observarse que la columna v
n
de la tabla de
v
n
x
n 1
y
n 1
w
n 1
x
n 1
y
n 1
w
n 1
+ =
v
n
OVF
n
X Y c
0
, , ( ) =
^
v
n
c
n
^ c
n 1
=
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 17
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
la figura 5.9 se obtiene tanto a partir de la expresin EQ (14) como de la expresin EQ (16), con lo
que queda demostrado que ambas expresiones del overflow son vlidas.
Ejemplo 5
Encontrad la expresin algebraica del valor W
s
que obtiene el sumador binario cuando el resultado
de la suma de X
s
+ Y
s
+ c
0
no es representable con n bits en Ca2.
Vamos a proceder como hicimos en el caso de los nmeros naturales, observando casos concretos
de sumas con desbordamiento para el caso de n = 3 (ver tabla de la figura 5.5). En la Tabla 5.1 se
muestran algunos casos. En los casos en que se debera obtener un valor positivo y se obtiene uno
negativo, se cumple que W
s
= X
s
+ Y
s
- 8, mientras que en los casos en que se debera obtener un
valor negativo y se obtiene uno positivo, se cumple que W
s
= X
s
+ Y
s
+ 8.
Generalizando para n bits, tenemos que el comportamiento del sumador binario para el caso de
resultado no representable en Ca2 es:
(EQ 17)
Tabla 5.1 Casos de desbordamiento en Ca2 con 3 bits
X
s
Y
s
X
s
+Y
s
W
s
3 3 6 -2
1 3 4 -4
-4 -4 -8 0
-3 -2 -5 3
x
n-1
Fa
x
n-1
y
n-1
w
n-1
y
n-1
c
n-1
c
n
w
n-1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
1
0
1
1
0
c
n-1
Fig. 5.9 Tabla de verdad del Full-adder de ms peso de un sumador binario. Deteccin de
resultado no representable (v
n
) cuando se opera en Ca2.
v
n
0
0
1
0
0
1
0
0
c
n
v
n
W
s
X
s
Y
s
c
0
2
n
+ + si X
u
Y
u
c
0
+ + 2
n 1
1 >
X
s
Y
s
c
0
2
n
+ + + si 2
n 1
X > u Y
u
c
0
+ +

=
18 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
El sumador binario: para naturales y para enteros. De lo visto hasta ahora en este captulo
podemos decir que el bloque combinacional de la figura 5.10 es un sumador tanto de nmeros naturales
representados en binario como de nmeros enteros representados en Ca2. En la figura se muestra su
implementacin interna para n = 3 bits. Para detectar cundo el resultado no es representable con n bits,
se proporciona el bit de salida c
n
para el caso de sumar nmeros en binario y el bit v
n
para el caso de
Ca2. A continuacin, se formaliza la funcionalidad del sumador:
Fa
x
1
w
1
Fa
x0
c
0
w
0
Fa
x
2
w
2
c
3
Fig. 5.10 Sumador de dos nmeros naturales o enteros representados en binario o en Ca2
con 3 bits en Ca2 usando Full-adders con propagacin del acarreo. Deteccin de resultado
no representable con 3 bits para ambas representaciones.
v
3
y
1
y
0
y
2
ADD
n
X Y
c
0
c
n
n n
n
W
v
n
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 19
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
(EQ 18)
A los operadores que calculan el vector de bits W y los bits de condicin c
n
y v
n
, los denotamos como:
(EQ 19)
(EQ 20)
(EQ 21)
Ejemplo 6
Disead un sumador de 2 nmeros enteros representados en Ca2 con n bits que obtenga el resultado
de la suma en Ca2 con n+1 bits. Por qu en este sumador no se produce nunca overflow?
Porque si los operandos estn representados con n bits, incluso si el acarreo de entrada vale 1, el
resultado de la suma siempre se puede representar con n+1 bits. Si e
entonces .
Una forma directa de disear el circuito consiste en usar un sumador binario de 2 nmeros de n+1
bits (por ejemplo conectando n+1 Full-adders con propagacin del acarreo) y alimentarlo con los
dos nmeros despus de extender el rango de cada uno de ellos a n+1 bits. Los n+1 bits de salida de
este sumador representan el resultado sin overflow.
Hacen falta realmente n+1 Full-adders, o con n Full-adders y una pequea lgica sera suficiente?
Este diseo puede optimizarse, ya que la salida del acarreo del Full-adder de ms peso, c
n+1
, no se
est usando para nada. Una implementacin con menos hardware consiste en usar un sumador de n
bits e implementar directamente mediante la expresin:
. (EQ 22)
W
u
X
u
Y
u
c
0
+ + si X
u
Y
u
c
0
+ + 2
n
1
X
u
Y
u
c
0
2
n
+ + si X
u
Y
u
c
0
+ + 2
n
1 >

=
W
s
X
s
Y
s
c
0
+ + si 2
n 1
X s Y
s
c
0
+ + 2
n 1
1
X
s
Y
s
c
0
2
n
+ + si X
s
Y
s
c
0
+ + 2
n 1
1 >
X
s
Y
s
c
0
2
n
+ + + si 2
n 1
X > s Y
s
c
0
+ +

=
c
n
0 si X
u
Y
u
c
0
+ + 2
n
1
1 si X
u
Y
u
c
0
+ + 2
n
1 >

=
v
n
0 si 2
n 1
X s Y
s
c
0
+ + 2
n 1
1
1 si 2
n 1
X > s Y
s
c
0
+ + 2
n 1
1 >

=
W ADD
n
X Y c
0
, , ( ) =
c
n
CARRY
n
X Y c
0
, , ( ) =
v
n
OVF
n
X Y c
0
, , ( ) =
2
n 1
x 2
n 1
1
2
n 1
y 2
n 1
1 2
n
x y 1 + + 2
n
1
w
n
x
n
^ y
n
^ c
n
=
w
n
x
n 1
^ y
n 1
^ c
n
=
20 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Si el sumador de n bits que estamos usando tiene salida de overflow, podemos usar la siguiente
expresin alternativa para w
n
:
(EQ 23)
Dicho con palabras, w
n
es igual a w
n-1
si no hay overflow y es igual a !w
n
si hay overflow, usando el
sumador binario de n bits. Se puede obtener la expresin EQ (23) a partir de EQ (22) usando las
igualdades lgicas: y y conociendo la expresin del overflow de la EQ (16) y
la expresin del bit de suma del Full-adder de ms peso: .
5.5 Cambio de signo
Vamos a encontrar en esta seccin el algoritmo de la operacin aritmtica de cambio de signo
(negacin) de un nmero entero representado en Ca2 con n bits. Esto es, vamos a encontrar las
operaciones lgicas a seguir para obtener el vector W de n bits a partir de los n bits del vector X, tales
que:
Finalmente, construiremos un negador con puertas lgicas.
Observando la tabla de la figura 5.11 vemos que, tanto en la columna del valor numrico representado
(columna X
s
) como en su representacin (columna X = x
2
x
1
x
0
) existe algn tipo de simetra.
La columna X
s
tiene una simetra respecto del -4. Los nmeros simtricos son el X
s
y el -X
s
. Por
ejemplo, el 2 se encuentra a 2 posiciones hacia arriba del -4 y el -2 a 2 posiciones hacia abajo. Esto
es, cambiar de signo un nmero representado en Ca2 con 3 bits, tanto positivo como negativo,
consiste en encontrar su simtrico en la tabla respecto de la fila 100, que representa el -4. Esto se
muestra en la figura con trazo muy grueso sombreado.
La columna X
s
= x
2
x
1
x
0
tiene una simetra respecto de la lnea que separa la representacin de los
nmeros positivos de los negativos. Las representaciones simtricas son la x
2
x
1
x
0
y la !x
2
!x
1
!x
0
.
Esto se muestra en la figura con trazo grueso discontinuo. Esto es, complementar
1
(cambiar ceros
por unos y unos por ceros) la representacin de un nmero, tanto positivo como negativo, es
equivalente a encontrar la representacin simtrica respecto de la lnea que separa los positivos de
los negativos. Por ejemplo, complementando el 010 (que representa al 2) se obtiene el 101 (que
representa el -3).
De lo anterior se deduce que para obtener la representacin en Ca2 de -X
s
a partir de la representacin
en Ca2 de X
s
, tanto para valores de X
s
positivos como negativos, solamente hay que complementar la
representacin de X
s
y sumar 1 (001 para n=3) utilizando el sumador binario. Por supuesto que al
sumar 1 con el sumador binario nos quedamos con los 3 bits del resultado, sin tener en cuenta el
1. Ms correctamente se denomina complementar a 1.
w
n
w
n 1
^ v
n
=
x ^ 0 x = x ^ x 0 =
w
n 1
x
n 1
^ y
n 1
^ c
n 1
=
W
s
X
s
=
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 21
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
acarreo de salida. La suma de +1 se muestra en la figura mediante una flecha de trazo continuo. Por
ejemplo, si complementamos el 010 (que representa al 2), obtenemos el 101 y si al 101 le sumamos 001
nos da el 110, que representa el -2.
Ejemplo 7
Si queremos obtener la representacin del -(-1) a partir de la representacin del -1 (que es 111)
hacemos:
- el complemento de 111 que es el 000 y
- le sumamos 1 con el sumador binario: 001 = ADD
3
(000,001,1)
Efectivamente, el vector 001 representa el 1.
Ejemplo 8
Si efectuamos el complemento de la representacin del 0 y sumamos 1 obtenemos el 0, cosa que es
correcta, ya que -0 = +0:
ADD
3
(!0 !0 !0, 0 0 1, 0) = ADD
3
(1 1 1, 0 0 1, 0) = 0 0 0.
5.5.1 Deteccin de resultado no representable
Nos indica el acarreo de salida del sumador binario que ha habido overflow en la operacin de cambio
de signo? No, el acarreo de salida cuando trabajamos en Ca2, tanto en el cambio de signo como en la
suma, no indica que el resultado no pueda representarse con n bits. El nico caso en el que se produce
acarreo de salida es en el cambio de signo del 0 y el resultado obtenido es correcto.
En qu casos se produce overflow? Al cambiar de signo al nmero ms negativo que se puede
representar con n bits ( ) deberamos obtener el , que no se puede representar
con n bits en Ca2. ste es el nico caso de overflow en la operacin de cambio de signo en Ca2. Para el
0
0
0
0
1
1
1
1
1
1
1
1 1
1
1
1
0 0
0 0
0
0
0
0
0
1
2
3
-4
-3
-2
-1
x
2
x
0
Fig. 5.11 Simetra en la tabla de representacin para obtener -X
s
complementando el vector de bits
que lo representa (cambiando ceros por unos y unos por ceros) y sumando 1 (con el sumador binario).
-X
s
!x
2
!x
1
!x
0
+1
X
s
X
x
1
2
n 1
2
n 1
( ) 2
n 1
=
22 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
caso de 3 bits, si complementamos el 100 obtenemos el 011 y si le sumamos 001 obtenemos el 100 que
vuelve a representar el -4.
Sabes encontrar ahora una expresin lgica para la deteccin de overflow? Se produce overflow en el
nico caso en que el operando tiene signo negativo y el resultado que se obtiene tiene tambin signo
negativo. Expresiones lgicas para la deteccin de overflow en la negacin son:
(EQ 24)
5.5.2 Implementacin de un negador
Despus de tener claro el algoritmo de cambio de signo, su implementacin es sencilla. La figura 5.12
muestra un negador en Ca2 para n=3 bits usando el sumador binario de la figura 5.1. Para la deteccin
de overflow se ha usado la EQ (24).
Ejemplo 9
Una expresin alternativa a la EQ (24), para la deteccin de overflow en la negacin en Ca2 es:
(EQ 25)
Para demostrarlo, en las cuatro primeras columnas de la tabla de la figura 5.13 construimos la tabla
de verdad de la rebanada de ms peso del negador de la figura 5.12 ya que es este hardware (que se
muestra a la derecha en la figura 5.13) el que genera las seales c
n
y w
n-1
a partir de x
n-1
, y c
n-1
.
Puede observarse que la columna de v
n
se obtiene tanto a partir de la expresin EQ (24) como de la
expresin EQ (25), con lo que queda demostrado que ambas expresiones son vlidas.
v
n
x
n 1
w
n 1
=
Fa
0
x
1
w
1
Fa
1
x
0
0
w
0
Fa
0
x
2
w
2
Fig. 5.12 Negador de 3 bits en Ca2 usando Full-Adders.
v
n
v
n
c
n
^ c
n 1
=
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 23
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 10
Hacen falta n FAs para implementar el negador? Para sumar el vector 001 al vector x
2
x
1
x
0
no hace
falta un sumador construido con 3 Full-Adders. En el negador de la figura 5.14 la suma del valor 1
se ha efectuado con Half-adders en vez de usar Full-adders y adems se ha usado la EQ (25) para
v
n
.
x
n-1
c
n-1
c
n
w
n-1
1
1
0
0
0
0
1
1
0
1
0
0
0
1
1
0
Fig. 5.13 Tabla de verdad del Full-adder de ms peso del negador de la figura 5.12 para la
deteccin de overflow y su implementacin.
v
n
0
1
0
0
c
2
Fa
0
x
2
w
2
c
3
v
n
Ha
x
2
w
2
Fig. 5.14 Negador de 3 bits en Ca2 usando Half-adders.
Ha
w
1
Ha
x
0
w
0
1
x
1
v
n
24 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejemplo 11
Veamos ahora cmo el cambio de signo nos puede ayudar a obtener la representacin en Ca2 de un
nmero negativo, por ejemplo el nmero -5, usando el siguiente algoritmo.
Primero obtendremos la representacin en Ca2 del valor absoluto del nmero en cuestin. Como el
valor absoluto es un nmero positivo, la representacin en Ca2 es como la representacin en
binario, pero asegurndonos que hay un 0 como bit de ms peso. Esto se hace mediante divisiones
sucesivas entre 2, empezando por el nmero y siguiendo por los cocientes hasta que el cociente es 0
y el resto es tambin 0. Los sucesivos restos son los dgitos de la representacin, empezando por el
dgito de menos peso y terminando por el de ms peso que es 0. Despus aplicaremos el algoritmo
de cambio de signo a la representacin en Ca2. Estas divisiones se indican en la figura 5.15 (parte
de la izquierda). A la izquierda de la figura se obtiene la representacin del -5 a partir de la
representacin del 5 mediante el algoritmo de cambio de signo (cambiar ceros por unos y unos por
ceros y sumar 1). El resultado es: 1011 = ADD
3
(!0 !1 !0 !1, 0001, 0).
Ejemplo 12
Encontrar el nmero entero que se representa en Ca2 por el vector de bits X = 10110111.
Para ello hay que sustituir el valor de los bits en la frmula de la representacin, EQ (10):
(EQ 26)
El mismo resultado tambin se puede obtener, al observar que el nmero es negativo, pues X tiene
un 1 en el bit de ms peso,
- cambiando de signo la representacin, sin que se produzca overflow (para ello se complementa
y suma 1 previa extensin de rango, si es necesario que no es el caso del ejemplo),
, (EQ 27)
- calculando el valor representado por el vector de bits resultante,
, y (EQ 28)
- cambiando de signo al valor resultante,
. (EQ 29)
5 2
4 2
1
2
2 1
0
2
0 2
0 0
0
0
1
5 => 0 1 0 1
Fig. 5.15 Obtencin de la representacin en Ca2 del -5.
=
>
=
>
1 0 1 0
1 0 1 1
complementar
+ 0001
= >
-5
X
s
128 32 16 4 2 1 + + + + + 73 = =
01001001 ADD
8
!1 !0 !1 !1 !0 !1 !1 !1 00000001 0 , , ( ) ADD
8
01001000 00000001 0 , , ( ) = =
73 64 8 1 + + =
73
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 25
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.6 Resta
Cmo podemos construir un restador aprovechando al mximo los bloques aritmticos que ya hemos
diseado? Calcularemos W
s
= X
s
- Y
s
usando la expresin equivalente W
s
= X
s
+ (- Y
s
), ya que
sabemos sumar y sabemos cambiar de signo. Para ello, usamos el negador de la figura 5.12 de la
siguiente forma:
En el Full-adder de menor peso, el bit a 1 que entra por una de las entradas superiores lo hacemos
entrar ahora por la entrada de c
0
(esto no es ningn problema, pues las tres entradas de un Full-
adder son intercambiables).
Por las entradas de la izquierda de los Full-adders, en vez de entrar ceros, ahora entraran los n bits
de X.
Por la entrada del negador entraremos los n bits del vector Y.
Esto es, W = ADD
n
(X, !Y, 1). La figura 5.16 muestra este diseo.
5.7 Implementacin de un sumador/restador
Dado que el sumador y el restador en Ca2 son parecidos, nos planteamos construir un sumador/restador
que sume o reste dos nmeros dependiendo de si su entrada de control, que denominamos !s/r, vale 0 o
1. Partimos de los diseos del sumador y del restador con propagacin del acarreo de la figura 5.16,
que vamos a fundir en uno solo. Para ello tenemos que ver en primer lugar que en la funcin Xor de 2
bits, , la entrada b se puede interpretar como una entrada que controla la funcionalidad de la
salida w en funcin de la entrada a de la siguiente manera:
Fa
x
1
y
1
w
1
Fa
x
0
y
0
1
w
0
Fa
x
2
y
2
w
2
Fig. 5.16 Restador de enteros de 3 bits en Ca2 usando Full-adders con propagacin del acarreo.
v
n
w a ^ b =
w
a si b 0 =
!a si b 1 =

=
26 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Sustituimos, ahora, las puertas Not de la figura 5.16 por puertas Xor y conectamos la entrada de control
!s/r a la entrada de control b de las puertas Xor y al acarreo de entrada del Full-adder de menos peso.
Adems, para que este sumador/restador sirva tambin para la suma y resta de nmeros naturales
codificados en binario, se ha negado el acarreo de salida en caso de resta, para obtener el borrow, y
efectuar la deteccin de resultado no representable para la resta de naturales (como se estudi en el
captulo anterior). El sumador/restador resultante se muestra en la figura 5.17.
5.8 Multiplicacin por potencias de dos
Veamos primero el algoritmo de multiplicacin por 2 y luego el de multiplicacin por potencias de 2.
5.8.1 Algoritmo aritmtico de multiplicacin por 2 en Ca2.
A partir de la representacin en Ca2 con n bits, , de un nmero entero, X
s
,
encontrar la representacin del nmero W
s
= 2X
s
. Dado que el rango de X
s
es ,
el de W
s
es y por lo tanto se requieren, en el peor de los casos, n+1 bits para
representarlo. Encontrar el algoritmo aritmtico de la multiplicacin por 2 es equivalente a encontrar
los bits de tales que Ws = 2Xs, o lo que es lo mismo:
(EQ 30)
Fa
x
1
y
1
w
1
Fa
x
0
y
0
w
0
Fa
x
2
y
2
w
2
b
3
Fig. 5.17 Sumador/restador de 3 bits tanto para nmeros naturales en binario como para
enteros en Ca2 con deteccin de resultado no representable para las dos representaciones.
!s/r
v
3
c
3
X x
n 1
x
n 2
= x
2
x
1
x
0
2
n 1
X
s
2
n 1
1
2
n
X
s
2
n
2
W w
n
w
n 1
... = w
2
w
1
w
0
w
n
2
n
w
i
2
i
i 0 =
n 1

+ 2 w
n 1
2
n 1
w
i
2
i
i 0 =
n 2

+
\
|
|
| |
=
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 27
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
y que los valores w
i
sean dgitos vlidos en base 2, esto es:
(EQ 31)
Como 2x2
i
= 2
i+1
, la EQ (30) expandida, para que se vea ms claro, y despus de multiplicar todos los
sumandos del sumatorio por 2, queda:
De aqu se ve que la siguiente solucin
y
,
cumple con la ecuacin anterior, que es la EQ (30), y con la EQ (31), ya que los dgitos de X la cumplen
(son bits) y w
0
=0 tambin.
Por lo tanto, multiplicar por 2 un nmero entero representado en Ca2 consiste en desplazar los
bits de la representacin una posicin a la izquierda y poner un 0 como bit de menor peso.
Ejemplo 13
La figura 5.18 muestra un ejemplo de aplicacin del algoritmo aritmtico de la multiplicacin por 2
en Ca2, el operando representado con 4 bits y el resultado con 5.
Deteccin de resultado no representable en n bits en Ca2. Como es habitual en un computador de n
bits, slo podemos almacenar los n bits de menor peso del resultado de la multiplicacin por 2, que
requiere, en el peor de los casos n+1 bits. Cmo sabemos si los n bits de menor peso representan
correctamente al resultado? La respuesta se obtiene del algoritmo de extensin de rango, pero aplicado
para reducir el rango: si el bit n y el n-1 del resultado son distintos, o lo que es lo mismo, si el bit n-1 y
el n-2 del operando son distintos, el resultado de la multiplicacin por 2 no es representable en Ca2 en
n bits.
0 w
i
1
w
n
2
n
w
n 1
2
n 1
w
2
2
2
w
1
2
1
w
0
2
0
+ + + + + x
n 1
2
n
x
n 2
2
n 1
x
1
2
2
x
0
2
1
+ + + + =
w
0
0 =
w
i
x
i 1
= para 1 i n

Valor Representacin en Ca2
Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
X
s
= -7 1 0 0 1
2X
u
= -14 1 0 0 1 0
Fig. 5.18 Ejemplo de aplicacin de multiplicacin por 2 en Ca2.
28 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.8.2 Algoritmo aritmtico de multiplicacin por 2
k
en Ca2 y su implementacin hardware
Dado que multiplicar un nmero por 2
k
consiste en multiplicarlo por 2 repetidamente k veces, el
algoritmo aritmtico para multiplicar por 2
k
consiste en aplicar el algoritmo de multiplicacin por dos k
veces consecutivas. Esto es, desplazar k posiciones a la izquierda los bits que representan al nmero y
poner k ceros en los k bits de menor peso. Adems, el resultado no es representable en Ca2 con n bits
excepto si los k+1 bits de ms peso del operando son todos ceros o todos unos.
Ejemplo 14
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero 23 y sus
multiplicaciones por 2
k
para k = 1, 3 y 5. Es de resaltar que 23x2
3
y 23x2
5
requieren 9 y 11 bits para
representarse correctamente en Ca2: 010111000 y 01011100000, por lo que los 8 bits de menor
peso, 10111000 y 11100000, no dan el resultado correcto. El resultado no es representable en 8 bits
en estos dos casos porque los k bits de ms peso del operando (00010111), para k igual a 3 y a 5
respectivamente, no son k ceros ni k unos.
Ejemplo 15
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero -12 y sus
multiplicaciones por 2
k
para k = 1, 3 y 5 y la indicacin de cundo el resultado con 8 bits no es
representable.
Implementacin del multiplicador por 2
k
en Ca2 (SL-k)
La figura 5.19 muestra el esquema lgico del circuito combinacional para multiplicar un nmero entero
representado en Ca2 con 16 bits por 2
k
, para k=4. El algoritmo para los n bits del resultado es el mismo
que el de multiplicacin por 2
k
para naturales en binario. La diferencia est en la deteccin del
resultado no representable. El resultado es representable en binario cuando el operando tiene los k bits
de ms peso iguales a cero mientras que en Ca2 lo es cuando los k+1 bits de ms peso son todos 0 o
todos 1. No obstante, como en nuestro computador no vamos a detectar por hardware cundo el
resultado de las operaciones aritmticas es o no representable, ni en binario ni en Ca2, usamos el
mismo dispositivo que para naturales, el SL-k (Shift Left - k), desplazador de k bits a la izquierda, cuyo
smbolo se muestra en la figura para k=4.
Valor:
X
s
= 23 2X
s
= 46 2
3
X
s
= 184 2
5
X
s
= 736
Representacin con n = 8 bits: 00010111 00101110 10111000
No representable
11100000
No representable
Valor:
X
s
= -12 2X
s
= -24 2
3
X
s
= -96 2
5
X
s
= -384
Representacin con n = 8 bits: 11110100 11101000 10100000 10000000
No representable
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 29
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.9 Divisin por potencias de dos
Vemos primero el algoritmo de divisin por 2 y luego el de divisin por potencias de 2.
5.9.1 Algoritmo aritmtico de divisin por 2 en Ca2.
A partir de la representacin en Ca2 con n bits, , de un nmero entero, X
s
,
debemos encontrar la representacin en Ca2 con n bits del nmero W
s
= X
s
/2. De hecho W
s
se puede
representar correctamente en Ca2 con n-1 bits, por lo que el resultado con n bits que vamos a obtener
siempre ser correcto, no tiene sentido hablar de deteccin de resultado no representable. As que,
encontrar el algoritmo aritmtico de la divisin por 2 en Ca2 es equivalente a encontrar los bits de
tales que:
(EQ 32)
y que los valores w
i
sean dgitos vlidos en base 2, esto es: (EQ 33)
Como 2
i
/2 = 2
i-1
, la EQ (32) expandida y despus de dividir todos los sumandos del sumatorio por 2, y
recordando que x
0
/2 = 0 (divisin entera), queda:
Como 2
k
= 2
k+1
-2
k
, podemos sustituir el sumando de ms peso de la parte de la derecha de la igualdad
anterior por
SL-4
X
W
x
15
x
14
x
13
x
12
x
11
x
10
x
9
x
8
x
7
x
6
x
5
x
4
x
3
x
2
x
1
x
0
w
15
w
14
w
13
w
12
w
11
w
10
w
9
w
8
w
7
w
6
w
5
w
4
w
3
w
2
w
1
w
0
0 0 0 0
Fig. 5.19 Smbolo del desplazador de 4 bits a la izquierda (Shift Left - 4) y esquema
interno para n=16 (sin deteccin de resultado no representable ni para naturales en
binario ni para enteros en complemento a dos.
X x
n 1
x
n 2
= x
2
x
1
x
0
W w
n 1
w
n 2
... = w
2
w
1
w
0
w
n 1
2
n 1
w
i
2
i
i 0 =
n 2

+ w
n 1
2
n 1
w
i
2
i
i 0 =
n 2

+
\
|
|
| |
2 =
0 w
i
1
w
n 1
2
n 1
w
n 2
2
n 2
w
2
2
2
w
1
2
1
w
0
2
0
+ + + + + x
n 1
2
n 2
x
n 2
2
n 3
x
2
2
1
x
1
2
0
+ + + + =
30 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Despus de esta sustitucin se ve que la siguiente solucin,
y
cumple con la EQ (32) y tambin con la EQ (33) ya que los dgitos de X la cumplen (son bits).
Por lo tanto, dividir por 2 un nmero entero representado en Ca2 consiste en desplazar los bits de
la representacin una posicin a la derecha replicando el bit de signo (el bit de menor peso del
operando desaparece).
Ejemplo 16
La figura 5.18 muestra un ejemplo de aplicacin del algoritmo aritmtico de la divisin por 2 en
Ca2.
Ejemplo 17
La figura 5.18 muestra un ejemplo de aplicacin del algoritmo aritmtico de la divisin por 2 en
Ca2.
Es muy importante darse cuenta de qu tipo de divisin entera estamos realizando. En las deducciones
anteriores hemos dicho que x
0
/2 =0. x
0
es el resto positivo de dividir X
s
entre 2. Cuando X
s
es un
nmero positivo (como en el ejemplo 16) el resultado que obtenemos es el de la parte entera por abajo
x
n 1
2
n 2
x
n 1
2
n 1
x
n 1
2
n 2
+ =
w
i
x
i 1 +
= para 0 i n 2
w
n 1
x
n 1
=

Valor Representacin en Ca2
Bit 3 Bit 2 Bit 1 Bit 0
X
s
= 7 0 1 1 1
X
s
/ 2 = 3 0 0 1 1
Fig. 5.20 Ejemplo de aplicacin de divisin por 2 en Ca2.

Valor Representacin en Ca2
Bit 3 Bit 2 Bit 1 Bit 0
X
s
= -7 1 0 0 1
X
s
/ 2 = -4 1 1 0 0
Fig. 5.21 Ejemplo de aplicacin de divisin por 2 en Ca2.
Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 31
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
del resultado, o lo que se denomina el primer entero ms prximo hacia el 0. Pero cuando X
s
es
negativo (como en el ejemplo 17) es el entero ms prximo hacia . En cualquier caso es el entero
ms prximo hacia . Dicho de otra forma, el algoritmo de divisin por 2 que hemos encontrado
calcula el cociente entero tal que el resto sea siempre positivo, sea cual sea el signo del operando. Si al
dividir -7 entre 2 obtenemos el cociente -3 es porque el resto es -1, ya que de la prueba de la divisin:
-7 = -3x2-1. Sin embargo, si tal como hacemos aqu, al dividir -7 entre 2 nos da el cociente -4 es porque
el resto es 1, ya que: -7 = -4x2+1.
5.9.2 Algoritmo aritmtico de divisin por 2
k
en Ca2 y su implementacin hardware
Dado que dividir un nmero por 2
k
consiste en dividirlo por 2 repetidamente k veces, el algoritmo
aritmtico consiste en aplicar el algoritmo de divisin por dos k veces consecutivas. Esto es, desplazar
k posiciones a la derecha los bits que representan al nmero y poner el bit de signo del operando en las
k posiciones de ms peso del resultado. Adems, el resultado siempre es representable en los mismos
bits que el operando.
Ejemplo 18
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero 23 y sus divisiones
por 2
k
para k = 1, 3 y 5. Al ser un nmero entero positivo en Ca2 el algoritmo y la representacin
del operando y del resultado son los mismos que en binario.
Ejemplo 19
En la siguiente tabla se muestra la representacin en Ca2 con 8 bits del nmero -13 y sus divisiones
por 2
k
para k = 1, 3 y 5 (la divisin es al entero ms prximo hacia ).
Implementacin del divisor por 2
k
en Ca2 (SRA-k)
La figura 5.19 muestra el circuito combinacional para dividir un nmero entero representado en Ca2
con 16 bits por 2
k
, para k=4. La salida se forma desplazando a la derecha k bits la entrada y
extendiendo el bit de signo a los k bits de ms peso. El resultado siempre es representable. El smbolo
de este bloque se muestra a la izquierda de la figura y se denomina, SRA-k (Shift Right Arithmetically -
k): desplazador aritmtico de k bits a la derecha (para diferenciarlo del desplazador lgico a la derecha,
SRL, que usamos para dividir por potencias de 2 nmeros naturales representados en binario).
Valor:
X
s
= 23 X
s
/2 = 11 X
s
/2
3
= 2 X
s
/2
5
= 0
Representacin con n = 8 bits: 00010111 00001011 00000010 00000000
Valor:
X
s
= -13 X
s
/2 = -7 X
s
/2
3
= -2 X
s
/2
5
= -1
Representacin con n = 8 bits: 11110011 11111001 11111110 11111111



32 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
5.10 Comparacin de nmeros enteros
Al igual que hicimos con los nmeros naturales representados en binario, para comparar los dos
nmeros enteros X
s
e Y
s
representados en Ca2 con n bits por X e Y, realizamos la resta de los dos
nmeros y analizamos el resultado. Como la ecuacin X
s
< Y
s
es equivalente a la ecuacin X
s
- Y
s
< 0,
decimos que X
s
ser menor que Y
s
cuando X
s
-Y
s
sea negativo.
Hay que recordar que el restador obtiene el vector de n bits W, que lo forman los n bits de menor peso
del resultado correcto de la resta. El restador tambin obtiene el bit de overflow, v, que se activa cuando
W no representa el resultado correcto .
Cuando v vale 0 el resultado en W es correcto, luego W
s
= X
s
-Y
s
. En este caso, si W
s
es negativo, o lo
que es lo mismo si el bit de signo de W, w
n-1
, es 1 entonces X
s
es menor que Y
s
.
Cuando v vale 1 es porque X
s
-Y
s
es un nmero negativo y W representa a un positivo o porque X
s
-Y
s
es
un nmero positivo y W representa a un negativo. As que, cuando el resultado de la resta no es
representable en n bits, o lo que es lo mismo cuando v vale 1, para saber el signo del resultado correcto
hay que emplear este algoritmo: si el bit de signo de W, w
n-1
, es 1 el resultado correcto es positivo y si
el bit de signo es 0 el resultado correcto es negativo.
De los dos ltimos prrafos se deduce que, denominando s al bit de signo de W, w
n-1
, X
s
es menor que
Y
s
cuando vale 1 la expresin lgica siguiente:
!vs + v!s
Esta es la expresin de la operacin Xor de v y s: v ^ s.
W
X
SRA-4
x
15
x
14
x
13
x
12
x
11
x
10
x
9
x
8
x
7
x
6
x
5
x
4
x
3
x
2
x
1
x
0
w
15
w
14
w
13
w
12
w
11
w
10
w
9
w
8
w
7
w
6
w
5
w
4
w
3
w
2
w
1
w
0
Fig. 5.22 Smbolo del desplazador aritmtico de 4 bits a la derecha (Shift Right
Arithmetically - 4) y esquema interno para n=16.
W
s
X
s
Y
s

Nmeros enteros: representacin, operaciones bsicas y bloques aritmticos combinacionales 33
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La figura 5.23a muestra el bloque LT que tiene dos buses de n bits, X e Y, y cuya salida de un bit w vale
1 cuando X
s
es menor que Y
s
junto con el circuito interno del bloque. Hay que resaltar que el resultado
de la comparacin es siempre correcto, aunque no lo sea el resultado de la resta.
En la figura 5.23b se muestra el bloque LE con sus dos buses de entrada de n bits y su salida de un bit
w. En este caso, w vale 1 cuando X
s
es menor o igual que Y
s
. Si denominamos z a la variable lgica que
vale 1 cuando W
s
es 0, la expresin lgica que vale 1 cuando X
s
es menor o igual que Y
s
es:
(v ^ s) + z
El circuito interno del bloque se forma aadiendo al circuito LT un bloque Zero, para obtener z y una
puerta Or hacer la suma con la salida del bloque LT (v ^ s), como se ve en la figura 5.23b.
Tanto para el bloque LT como para el LT hemos usado un restador con salida de borrow, b, y de
overflow, v. En estos diseos la salida de borrow no se usa ya que no estamos considerando nmeros
naturales sino enteros, por lo que usamos la salida de overflow, v.
s
s
b) LE a) LT
v z
v
X Y
b
1
5
w
SUB
- + b
v
LT
X Y
b
1
5
z
w
SUB
- + b
v
LE
w w
X X Y Y
Fig. 5.23 Smbolo y esquema interno de los comparadores de nmeros
enteros en Ca2: a) LT y b) LE.
34 Introduccin a los Computadores
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Circuitos lgicos secuenciales 1
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
6 Circuitos lgicos secuenciales
Juan J. Navarro
Toni Juan
Primera versin: 10-2007
Versin actual: 09-2010
Hay dos tipos de circuitos lgicos, los combinacionales y los secuenciales. Hemos estudiado primero la
sntesis de combinacionales con pocas entradas mediante un mtodo sistemtico (captulo 3) y despus
el diseo modular (a bloques multinivel) de circuitos combinacionales que procesan palabras de n bits
(captulo 4 para naturales y 5 para enteros). Ahora vamos a hacer lo mismo con los circuitos
secuenciales. Primero, en este captulo estudiamos, adems de otras cosas, la sntesis de circuitos
secuenciales con pocas entradas y pocos estados mediante un mtodo sistemtico. Despus, en el
captulo 7, trataremos el diseo modular de procesadores de propsito especfico, que son circuitos
secuenciales que procesan palabras de n bits.
Los circuitos secuenciales tienen capacidad de memorizar informacin: las salidas en un determinado
momento dependen, no slo de las entradas en ese momento sino que dependen tambin del estado del
circuito (la informacin memorizada hasta ese momento). Estudiamos los circuitos secuenciales
sncronos, que tienen una seal de reloj que indica los momentos concretos en los que se modifica el
estado del circuito.
El procesador, que es el ncleo del computador, es un circuito secuencial grande, que procesa palabras
de n bits, y que adems es de propsito general (puede cambiar el tipo de procesado de la informacin
que efecta). En los captulos 8, 9 y 10 caminamos hacia el procesador de propsito general, para
terminar diseando nuestro propio computador. Por ltimo, los captulos 11, 12 y 13 sirven para
consolidar el conocimiento sobre el lenguaje mquina/ensamblador y la microarquitectura de nuestro
computador uniciclo y la del multiciclo.
En este captulo presentamos, en primer lugar, una introduccin a los conceptos bsicos sobre circuitos
secuenciales. Despus, en la seccin 6.2, mostramos la estructura a bloques de los circuitos
secuenciales segn los modelos de Mealy y de Moore y cmo se especifica la funcionalidad del
circuito mediante las tablas de transiciones y de salida. Despus, en la seccin 6.3, tratamos con detalle
la especificacin del funcionamiento lgico del circuito mediante un grafo de estados. En las secciones
2 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
6.4 y 6.5 tratamos el anlisis lgico y la sntesis de secuenciales y por ltimo, en la seccin 6.6,
hacemos el anlisis temporal para obtener el tiempo de ciclo mnimo del circuito.
6.1 Introduccin
Aqu presentamos los conceptos bsicos del tema de secuenciales (memoria y sincronizacin) y
definimos el biestable D: el elemento de memorizacin ms sencillo, que almacena un bit de
informacin; y el registro: que almacena n bits. A continuacin damos las reglas de interconexin de
dispositivos combinacionales y biestables para formar circuitos secuenciales ms complejos; y por
ltimo, observamos qu ocurre en el circuito durante un ciclo de reloj. Esto sirve para determinar cmo
encontrar el tiempo de ciclo mnimo para que el circuito secuencial opere correctamente, lo que se ver
en detalle al final del captulo (seccin 6.6).
6.1.1 Necesidad de memoria
Un circuito secuencial se caracteriza porque sus salidas en un determinado momento no son slo
funcin de lo que valen las entradas en ese momento (como ocurre con los circuitos combinacionales)
sino que son funcin, tambin, de los valores de las entradas en momentos anteriores. Esta capacidad
de recordar la informacin que ya no est presente en las entradas permite tener en cuenta lo que
ocurri a lo largo del tiempo y con ello realizar procesados de la informacin mucho ms complejos.
Veamos un ejemplo de ello.
Ejemplo de un piloto automtico para el aterrizaje de aviones
Vamos a disear el subsistema del piloto automtico encargado de controlar la direccin de un avin
durante el aterrizaje. Para que el aterrizaje sea seguro, el avin debe estar situado sobre una lnea recta,
prolongacin de la pista de aterrizaje, unos cuantos kilmetros antes de llegar a la pista. Para que el
piloto automtico sepa la posicin del avin respecto de esa lnea recta, se dispone de dos filas de
antenas, una a cada lado de la lnea. Las antenas son muy direccionales y emiten hacia el cielo. Las
antenas a la izquierda de la lnea emiten una seal de radio con frecuencia Fi y las de la derecha con
frecuencia Fd. En la figura 6.1 se muestra la vista desde el cielo de la pista de aterrizaje, las filas de
antenas (pequeos cuadrados a la izquierda y crculos a la derecha), y la zona, con dos tramas distintas,
en que se detectan cada una de las frecuencias. Se ve claramente la zona de interseccin de las dos
tramas, donde se detectan las dos frecuencias, que identifica la zona correcta de aterrizaje. Fuera de las
tramas no se detecta ninguna frecuencia.
El avin dispone de dos receptores de radio, I y D, sintonizados a las frecuencias Fi y Fd
respectivamente. El receptor I genera una seal binaria, s
i
, que vale 1 cuando est recibiendo seal a su
frecuencia de sintona y vale 0 cuando no la recibe. Lo mismo ocurre con el receptor D que genera s
d
.
El circuito lgico que debemos disear (que se muestra tambin en la figura 6.1) recibe como entradas
s
i
y s
d
y genera como salidas dos seales binarias w
1
y w
0
que van al subsistema electromecnico que
gobierna la direccin del avin. Estas seales le indican al sistema electromecnico si debe dirigir el
avin recto, hacia la derecha o hacia la izquierda, segn el cdigo que indica la tabla de la figura.
Circuitos lgicos secuenciales 3
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
El piloto, al acercarse a la pista de aterrizaje, visualiza la recepcin de las frecuencias de radio y cuando
identifica que se reciben las dos frecuencias activa la seal Automtico/Manual para indicarle al
sistema electromecnico de direccin que se gue por las seales que le enva el circuito lgico, en vez
de hacer caso de las seales que le envan los mandos del piloto manual.
Durante el aterrizaje pueden venir fuertes vientos racheados y desplazar el avin en una direccin no
deseada, distinta de la direccin a la que el sistema intenta llevar el avin, e incluso pueden llevarlo a la
zona en la que no se detecta ninguna de las dos frecuencias.
Inicialmente vamos a especificar el sistema con un circuito combinacional, como los estudiados hasta
ahora. Cuando el avin est sobre la lnea de aterrizaje, entradas del circuito s
i
= s
d
= 1, el avin debe ir
recto; cuando el avin est en la zona de la derecha, s
i
= 0 y s
d
= 1, el avin debe ir hacia la izquierda;
y cuando se encuentre en la zona de la izquierda, s
i
= 1 y s
d
= 0, debe ir hacia la derecha.
Pero, qu debe ocurrir cuando, por un fuerte viento, el avin se salga
de la zona marcada y no reciba ninguna de las dos frecuencias? En
este caso, si el circuito es combinacional no puede saber en qu lado
est el avin, por lo que lo ms sensato es que el circuito avise al
piloto para que este tome el control manual del aterrizaje y lleve el
avin a una de las zonas en la que se reciba al menos una de las
frecuencias, para poder activadar despus el piloto automtico. Para
ello, disponemos de una nueva seal de salida del circuito que

Pista
Fd Fi
Fi y Fd
0
0
1
1
recto 0
1
0
1
w
1
w
0
hacia derecha
hacia izquierda
Cdigo no usado
Significado: Ir
s
i
Circuito
Lgico
s
d
w
1
w
0
I y D
Receptores
Sistema
electro-
mecnico de
direccin
Automtico/
Manual
Seales
piloto
manual
Fig. 6.1 Pista de aterrizaje con las zonas de recepcin de las frecuencias Fi y Fd.
Subsistema del piloto automtico encargado del control de direccin del avin
0
0
1
1
0
1
0
1
a
1
0
0
0
w
1
0
1
0
0
w
0
0
0
1
0
s
d
s
i
4 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
denominamos a, de alarma, para que cuando se active avise al piloto de la situacin. Esta seal no se ha
dibujado en la figura. La tabla de verdad del circuito combinacional se muestra sobre este prrafo.
Cuando no se detecta ninguna frecuencia el circuito hace sonar la alarma y le indica al sistema
electromecnico que lleve el avin recto (a la espera de que el piloto tome el control manual del avin.
Podramos mejorar el sistema si el circuito lgico no fuera combinacional, sino que tuviera capacidad
de recordar qu valor tenan las seales de entrada antes del momento actual? La respuesta es s. En el
momento en que el circuito reciba las seales s
i
= s
d
= 0, si recuerda que antes de este momento recibi
las seales, por ejemplo, s
i
= 0 y s
d
= 1, sabe que se encuentra en la parte de la derecha que no recibe
ninguna seal y puede ordenar al sistema electromecnico que dirija el avin hacia la izquierda. Sin
embargo, si cuando s
i
= s
d
= 0 el circuito recuerda que antes recibi las seales s
i
= 1 y s
d
= 0, sabe que
el avin est sobre la zona de la izquierda donde no hay seales y puede ordenar ir hacia la derecha.
Acabamos de ver claramente que un circuito lgico con capacidad de recordar el valor de las entradas
anteriores sera mucho ms efectivo que un simple circuito combinacional. En la seccin 6.1.5
definimos el dispositivo de memorizacin de un bit, el biestable D, y en la seccin 6.5 disearemos el
circuito secuencial de este piloto automtico.
6.1.2 Conveniencia de sincronizacin
Vamos a justificar la conveniencia de la sincronizacin de circuitos secuenciales con dos ejemplos.
Contador secuencial de unos
Supongamos que debemos disear un circuito secuencial, con memoria, que tiene una entrada x de un
bit y una salida w de n bits. Los n bits de salida deben codificar en binario el nmero de bits mdulo 2
n
con valor 1 presentes en la entrada desde que comenz a funcionar el sistema.
Ante una seal x como la de la figura 6.2 no podemos saber si la secuencia de bits a lo largo del tiempo
que se muestra es, por ejemplo, 0,1,0,1,0,0,1,0, o es 0,0,1,1,0,0,0,0,1,1,0,0, o es otra. Hace falta alguna
otra seal u otro tipo de informacin que nos indique cunto dura un bit o mejor, cundo se debe
mirar el valor de la entrada x porque en ese momento la seal tiene un valor vlido de la secuencia de
bits de entrada. Esta es la seal de reloj que definimos en la siguiente seccin.
Incrementador binario
Otro ejemplo distinto de necesidad de sincronizacin lo detectamos ya en el captulo 2 al observar que,
debido al tiempo de propagacin de las seales a travs de las puertas, las salidas de los circuitos
t
x(t)
0 1 0 0 1 0 0 1
1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0
Fig. 6.2 Seal de entrada de datos al contador secuencial de unos.
Circuitos lgicos secuenciales 5
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
combinacionales no son correctas en todos los instantes de tiempo (no siguen el comportamiento lgico
que indica la tabla de verdad del circuito). Por ello, desde que se produce un cambio en las entradas hay
que esperar un tiempo a que las salidas se estabilicen al valor correcto.
Dijimos entonces que no debamos preocuparnos por esto ya que en el computador, que es un sistema
secuencial sncrono, las seales de datos, las que llevan codificada la informacin, no estn solas.
Existe una seal en el sistema, que se denomina seal de reloj, que indica cundo la informacin que
hay en las seales de datos es correcta. Slo se almacena la informacin de los datos en la memoria del
circuito secuencial en los momentos que esta es correcta, y esto lo indica la seal de reloj.
6.1.3 Seal de reloj: Clk
La seal de reloj es una seal binaria (slo puede tomar dos valores, 0 o 1) y peridica, de periodo Tc
(Tiempo de ciclo). Cada Tc unidades de tiempo, o lo que es lo mismo, cada ciclo, su comportamiento se
repite. Durante la primera parte del ciclo la seal de reloj vale 1 y durante la segunda parte vale 0.
Puede ocurrir que el semiperiodo a 1 no dure el mismo tiempo que el el semiperiodo a 0, pero como
esto de momento no tiene importancia, dibujaremos siempre la seal de reloj equilibrada (ver
figura 6.3). Por ello, si no se indica lo contrario, la seal de reloj queda caracterizada por su tiempo de
ciclo, Tc, o su frecuencia, 1/Tc.
Para ser independientes de la tecnologa medimos Tc en unidades de tiempo, u.t., aunque normalmente
se hace en segundos, s, (o mejor en nanosegundos, ns, donde 1 ns = 10
-9
s). As, nosotros medimos la
frecuencia en ciclos por unidad de tiempo; aunque normalmente se mide en hercios, Hz, donde 1 Hz es
un ciclo por segundo (o mejor en gigahercios, GHz, donde 1 GHz = 10
9
Hz).
6.1.4 Circuito secuencial sncrono
En un circuito secuencial sncrono complejo, formado por varios circuitos conectados entre s, como es
el computador que vamos a disear, hay una nica seal de reloj que indica mediante su flanco
ascendente (cuando la seal de reloj pasa de 0 a 1) que todas las seales de entrada y salida de todos los
dispositivos combinacionales que forman el circuito son correctas. La seal de reloj se usa para validar
las seales de datos y para indicar a los dispositivos que almacenan informacin (biestables D) cundo
deben almacenar el valor de una seal porque ya es correcto.
&ON
7F
W
Fig. 6.3 Seal de reloj, Clk.
6 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ahora, volviendo al ejemplo del contador de unos de la seccin 6.1.2, si miramos la seal x junto con la
seal de reloj, Clk, ya no hay problemas de interpretacin. La figura 6.4 muestra el smbolo del circuito
y el cronograma de las seales Clk y x de donde se ve que la secuencia de bits es 0,1,0,1,0,0,1.
En un circuito secuencial sncrono el tiempo est partido en tramos de Tc unidades de tiempo: en
ciclos. En cada ciclo, una vez que una seal se estabiliza a su valor correcto se mantiene estable al
menos hasta el final del ciclo y el inicio del siguiente, cuando se produce el flanco ascendente de reloj.
Seal sncrona. En un circuito secuencial sncrono no importa el valor de las seales en cualquier
momento, importa el valor correcto estabilizado: el que tienen todas las seales del circuito, con total
seguridad, antes del final de cada ciclo. Para ello, claro est, el tiempo de ciclo debe ser
suficientemente grande para permitir que todas las seales se estabilicen a su valor correcto. Por lo
tanto, podemos referirnos a la secuencia de valores de una seal binaria sncrona, como una secuencia
de bits: los bits que toma la seal al final de cada ciclo. En la parte superior de la figura 6.5 se muestra
el cronograma de una seal binaria x y el reloj Clk que la hace sncrona.
Cronograma simplificado. En la parte inferior de la figura 6.5 se ha dibujado la tabla con los valores
de la seal en cada ciclo (una columna por ciclo, incrementndose el nmero de ciclo hacia la derecha,
conforme avanza el tiempo): a esta tabla la llamamos cronograma simplificado porque no muestra los
detalles de los valores de la seal en cada ciclo antes de estabilizarse. Como se ve en el cronograma
detallado de x(t), la seal puede fluctuar pasando de 0 a 1 y de 1 a 0 varias veces dentro de cada ciclo
hasta que se estabiliza a su valor correcto antes del final de cada ciclo. Esto es debido al tiempo de
propagacin de los circuitos combinacionales por los que pasan las seales desde la salida de los
biestables hasta el punto del circuito donde se encuentra la seal x (y a los valores concretos de las
salidas de los biestables en cada ciclo). El cronograma simplificado omite esos valores intermedios, o
lo que es lo mismo, es el cronograma suponiendo que los tiempos de propagacin de todos los circuitos
combinacionales y de los biestables es cero. Adems, en el cronograma simplificado el tiempo, que es
continuo, se considera discreto: dividido en ciclos.
Circuito secuencial sncrono. Lo definimos como un circuito secuencial (con memoria) en el que las
seales de entrada y salida son sncronas y estn sincronizadas con una seal de reloj, Clk, que tambin
entra en el circuito, para indicar cundo se deben actualizar los elementos de memorizacin internos.
0 1 0 1 0 0 1
t
x(t)
t
Clk
CLS
x W
n
Clk
Fig. 6.4 Smbolo del circuito lgico secuencial sncrono y cronograma de la seal de
datos de entrada sncrona (acompaada de la seal de reloj).
Circuitos lgicos secuenciales 7
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ya que nunca hablamos de circuitos secuenciales asncronos, usaremos circuito secuencial como
sinnimo de circuito secuencial sncrono.
6.1.5 El biestable D activado por flanco
Vamos a definir el smbolo y el funcionamiento del dispositivo secuencial ms sencillo con el que
construiremos otros circuitos secuenciales ms complejos: el biestable D activado por flanco
ascendente de reloj. Para nosotros, los biestables son a los circuitos secuenciales como las puertas a los
combinacionales: los elementos ms simples con los que construiremos el computador completo.
Como hicimos con las puertas, no vamos a entrar en la construccin interna del biestable. Slo decir
que se puede construir con varias puertas realimentadas entre s formando un ciclo cerrado (cosa que
estaba prohibida en los combinacionales). En adelante, ya no repetiremos ms lo de activado por flanco
ascendente de reloj, pues siempre usamos este tipo de biestable, incluso podemos decir simplemente
biestable (Flip-Flop), ya que slo usamos el D.
Definicin
Un biestable D es un dispositivo secuencial que consta de una entrada de datos D y una salida Q, ambas
de 1 bit. Adems, como todo circuito secuencial sncrono, tiene una entrada de reloj: Clk. Su funcin es
muy simple, cuando la seal de reloj pasa de 0 a 1 (se produce un flanco ascendente de reloj), el valor
que se encuentra en ese momento en la entrada D del biestable, aparece (por ahora digamos que
inmediatamente) en la salida Q, y ese valor permanece estable en la salida hasta que se produzca otro
flanco ascendente de reloj, aunque mientras tanto cambie el valor de la entrada D.
Smbolo. En la figura 6.6 se ve el smbolo del biestable. El nombre de la entrada y de la salida dentro
del smbolo del biestable estn en maysculas, como es usual en otros textos, en contra de nuestra
norma de usar minsculas al tratarse de seales de un bit cuando el nombre tiene una sola letra. La
seal de reloj no lleva su nombre dentro del smbolo ya que es inconfundible (el indicador -|> hace
referencia a que la seal de reloj acta sobre el biestable en su flanco ascendente de reloj, ya que
existen otras posibilidades que no estudiamos).
Cronograma. Tambin se muestra en la figura 6.6 un cronograma que explica el funcionamiento del
biestable para una forma de seal de entrada concreta. Como la entrada d vale cero al final del ciclo k-
Clk
x(t)
Ciclo 0
t
t
Ciclo:
Secuencia x:
0 3 4 2 1
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4


Fig. 6.5 Cronogramas de la seal x(t) sincronizada con el reloj Clk y cronograma
simplificado de la secuencia de bits de la seal sncrona x.
8 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
1, la salida q vale 0 durante todo el ciclo k aunque la entrada d vare durante el ciclo k. Cuando llega el
flanco ascendente de reloj que indica el final del ciclo k y el principio del k+1, la seal d vale 0 otra vez
y por eso durante el ciclo k+1 la salida q continua valiendo 0. La seal d sigue variando, pero al final
del ciclo k+1 vale 1, por lo que al ciclo siguiente, k+2, la salida q vale 1. A la vista del cronograma
podemos decir que el biestable D almacena una muestra del valor de la entrada en el momento en que el
reloj pasa de 0 a 1 y lo ensea en su salida de forma estable hasta que toma otra muestra.
Tiempo de propagacin
1
En realidad, al igual que ocurre con las puertas lgicas, el biestable no modifica su salida en el mismo
instante de tiempo en que llega el flanco ascendente de reloj. Un biestable real tiene un tiempo de
propagacin distinto de cero. El tiempo de propagacin del biestable es el tiempo desde que se
produce el flanco ascendente de la seal de reloj hasta que la salida Q toma el valor que tena la entrada
D en el instante en que lleg el flanco.
Cronograma con tiempo de propagacin. La figura 6.7 muestra el mismo cronograma que en la
figura 6.6 pero suponiendo ahora que el tiempo de propagacin del biestable es de 50 u.t. Con el origen
de una flecha se indica el valor de la entrada d mientras se produce el flanco ascendente de reloj y con
la punta de la flecha el cambio producido en la salida q despus del tiempo de propagacin del
biestable. No se ha puesto flecha del ciclo k al k+1 ya que la salida no ha cambiado.
Ejemplo 1
La figura 6.8 muestra el smbolo de un biestable D (ligeramente distinto a los smbolos usados antes) y
el cronograma con otra secuencia de valores de entrada. Ahora, el biestable tiene un tiempo de
propagacin Tp.
El biestable como retardador de secuencia de un ciclo
Al considerar las seales de entrada y salida del biestable como seales sncronas, podemos decir que
la salida Q produce la misma secuencia de valores de la entrada D, pero retardada un ciclo. Esto se ve
en el cronograma de la figura 6.7: la secuencia de valores de la entrada d desde el ciclo k-1 al k+1 es: 0,
1. Adems hay otros parmetros temporales importantes en un biestable, como el tiempo de start-up y el tiempo de hold, que
para simplificar no consideramos en este curso.
D
Q
d
Clk
q
Clk
d
q
0 50 100 150 200 250 300
Ciclo k Ciclo k+1 Ciclo k+2
t
t
t
Fig. 6.6 Smbolo de un biestable D y cronograma de su comportamiento.
Circuitos lgicos secuenciales 9
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
0, 1; y la secuencia de la salida q desde el ciclo k al k+2 es la misma 0, 0, 1. Aunque todava se ve ms
cmodamente en el cronograma simplificado de la figura 6.9. Se ha sombreado el valor de la seal d en
el ciclo k+2 porque en el cronograma de la figura 6.7 no se ve el valor de la seal al final de este ciclo.
Por otro lado, aunque el valor de la seal q en el ciclo k-1 s que se ve en el cronograma (es 1) se ha
sombreado en el cronograma simplificado porque este valor es circunstancial, no importa para lo que se
desea ver.
6.1.6 El registro
El biestable es un dispositivo de memoria de un bit, sin embargo en nuestro computador se procesan y
almacenan palabras de 16 bits. Por ello es muy til definir un dispositivo o bloque secuencial que sea
D
Q
d
Clk
q
Clk
d
q
0 50 100 150 200 250 300
50
50
Ciclo k Ciclo k+1 Ciclo k+2
t
t
t
Fig. 6.7 Smbolo de un biestable D con un tiempo de propagacin de 50 u.t. y
cronograma de su comportamiento
t
q
t
d
t
Clk
Clk
d q
D Q
Tp Tp Tp
Fig. 6.8 Ejemplo de cronograma del comportamiento de un biestable D.
D
Q
d
Clk
q
Ciclo:
d:
K-1 K+2 K+1 k


q:

Fig. 6.9 Smbolo de un biestable D y cronograma simplificado del comportamiento


como retardador de un ciclo de la secuencia: 001.
10 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
capaz de almacenar una palabra de n bits (para n>1). Este bloque se denomina registro. La figura 6.10
muestra el smbolo de un registro y el esquema interno para el caso general de n bits. Consta de n
biestables D que comparten la misma seal de reloj.
6.1.7 Reglas de interconexin de dispositivos combinacionales y biestables
Un circuito secuencial est formado por una red de dispositivos combinacionales y biestables (o
registros) conectados entre s siguiendo ciertas reglas, que vemos a continuacin, para que el circuito
sea vlido. La figura 6.11 muestra un ejemplo.
Reglas de interconexin de las seales de datos. Las entradas del circuito tienen que conectarse con
entradas de dispositivos combinacionales y/o entradas de biestables. Las salidas de combinacionales y
biestables se tienen que conectar a entradas de combinacionales y/o biestables y/o a las salidas del
circuito. Adems, todas las entradas de todos los dispositivos tienen que tener un valor lgico (no
pueden estar al aire) y no se pueden conectar directamente dos salidas de dos dispositivos. No
obstante, lo que acabamos de decir se cumple tambin para los circuitos combinacionales, como se
coment en el captulo 2 (sin que aparezcan los biestables en el texto). Cul es la diferencia? La
diferencia es que ahora, en los circuitos secuenciales: s que pueden producirse ciclos, caminos
cerrados que empiezan en un dispositivo y terminan en el mismo dispositivo. Pero hay una restriccin:
Clk
R
E
G
Clk
D Q
n n
D = d
n-1
, d
n-2
, d
1
, d
0
Q = q
n-1
, q
n-2
, q
1
, q
0
d
0
d
1
d
n-2
d
n-1
q
0
q
1
q
n-2
q
n-1
D Q
D Q
D Q
D Q
Fig. 6.10 Smbolo y esquema interno de un registro de n bits.
Clk
CLC2 CLC3
w
0
CLC1
x
w
1
D Q
D Q
D Q
Fig. 6.11 Red de dispositivos combinacionales y biestables conectados entre s
formando un circuito secuencial.
Circuitos lgicos secuenciales 11
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
el camino cerrado tiene que atravesar al menos un biestable o registro (de lo contrario estaramos
haciendo un ciclo en un circuito combinacional y eso est prohibido).
Reglas de interconexin de la seal de reloj. Siempre, en todos los circuitos secuenciales, incluido el
computador, la seal de reloj (Clk) es una entrada al circuito que se conecta a todas las entradas de reloj
de todos los biestables o registros del circuito. Tanto es as, que en ocasiones no dibujamos los cables
de la seal de reloj, para no complicar el dibujo del esquema lgico, porque no aportan informacin ya
que siempre estn conectados de igual forma.
6.1.8 Tiempo de ciclo
Para terminar la introduccin de este captulo, vamos a hablar de lo que ocurre durante un ciclo en un
circuito secuencial. Esto lo afinaremos ms al final del captulo, en la seccin 6.6, pero es muy
importante tener la idea clara cuanto antes.
Presentacin del ejemplo. Imaginemos la parte de circuito secuencial que se muestra en la figura 6.12
y que consiste en dos registros conectados a travs de un incrementador binario. El bus X es la entrada
de esta parte del circuito y alimenta al primer registro mientras que el bus W es la salida del segundo
registro y salida del circuito. Los registros tienen un tiempo de propagacin (tiempo desde que llega el
flanco ascendente de reloj hasta que el valor de la entrada pasa a la salida) de 40 u.t. y el incrementador
combinacional tiene un tiempo de propagacin de 100 u.t. (tiempo desde que la entrada est estable
hasta que la salida se estabiliza al valor correcto, que es el valor de la entrada ms uno). Por el bus X
llega una secuencia de nmeros que una vez incrementados aparecen por el bus W pasados dos ciclos
de reloj.
El cronograma de la figura muestra lo que ocurre en el fragmento de circuito durante el ciclo k, aunque
tambin se muestra el final del ciclo anterior y el principio del posterior. Por lo que se ve en el
cronograma, en el ciclo k-2 en la entrada X se encontraba el nmero 57, en el ciclo k-1 el 367 y en el k
el 24. Veamos en detalle qu ocurre desde el final del ciclo k-1.
Final del ciclo k-1 y principio del k. En el bus X se encuentra ya estable el valor 367 cuando llega el
flanco ascendente de reloj que indica el final del ciclo k-1 y el principio del k. El registro lee el valor
367 de su entrada y pasadas las 40 u.t. del tiempo de propagacin del registro, aparece el nmero 367
en la salida del registro, Y, que es la entrada del incrementador.
Durante el ciclo k. El incrementador empieza a realizar los clculos. Como se coment en el captulo
de combinacionales, debido a los tiempos de propagacin distintos desde cada entrada a cada salida del
incrementador combinacional, si miramos los n bits del bus de salida Z podemos ver como estos bits
codifican distintos nmeros conforme pasa el tiempo: 326, 367, 366, 364, 360, 362 y finalmente,
pasadas las 100 u.t. del tiempo de propagacin del incrementador, se estabiliza la salida Z con el valor
368, que es el correcto. Los valores intermedios incorrectos no se han escrito en el cronograma para
que resulte ms claro. Como durante el tiempo de inestabilidad no hay valores correctos en Z, estos se
han marcado con equis, o con seales que suben y bajan, ya que los valores concretos no nos interesan.
Mientras ha ocurrido esto, en el mismo ciclo k se ha estabilizado otro nmero en el bus X: el 24.
12 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Final del ciclo k y principio del k+1. Segn se ve en el cronograma, pasadas 30 u.t. desde que qued
estable la salida del incrementador, llega el flanco ascendente de reloj que marca el final del ciclo k y el
principio del k+1. En este momento, el valor 368, que est en la entrada del segundo registro, es leido
por este para aparecer en su salida, W, al cabo de las 40 unidades del tiempo de propagacin del
biestable. En este momento tambin aparece el nmero 24 en la salida del primer biestable, ya que es el
valor que haba en X cuando se produjo el flanco. En este ciclo k+1 se calcular en el incrementador el
nmero 25 y as sigue el funcionamiento...
Conclusin del ejemplo. Es importante comprender que si el tiempo de ciclo de este circuito fuera
menor que 140 u.t. por W no saldra la secuencia de nmeros que entra por X incrementandose cada
nmero en una unidad. Saldran otros nmeros, porque el segundo registro leera, cogera, valores
incorrectos de la salida del incrementador. Sin embargo, el tiempo de ciclo del sistema es 170, que
como vemos es un poco superior a 140, con lo que es seguro que cuando llegue el flanco de fin de
ciclo, la salida del incrementador estar estable al valor correcto.
Conclusin general. Esto, que acabamos de ver en detalle para una parte de un circuito secuencial,
est ocurriendo a la vez en todos los caminos que hay desde la salida de un biestable hasta la entrada de
otro biestable del circuito completo, pasando por los circuitos combinacionales que hay entre los dos
biestables. Por ello, el tiempo de ciclo del circuito secuencial tiene que ser mayor que el tiempo que las
seales tardan en atravesar el camino ms largo (en tiempo) que va desde la salida de un biestable
hasta la entrada de otro biestable, pasando por circuitos combinacionales (no atravesando ningn
biestable, ya que cuando llega a uno termina el camino). Este camino se llama camino crtico del
circuito secuencial. El tiempo de ciclo tiene que ser mayor que el tiempo del camino crtico del
circuito. Para encontrar el camino crtico de un circuito secuencial (o los caminos crticos, pues puede
haber varios con el mismo tiempo mximo), si no nos dicen lo contrario, supondremos que cada
Z
t
X
t
W
t
Y
t
Z
t
Clk
+1
W
X
Clk
Y
40
40
100
Tc = 170
REG
REG
367
367
368
368
58
58
24
24 57
Ciclo k Ciclo k+1 Ciclo k-1
Fig. 6.12 Qu ocurre durante un ciclo?
Circuitos lgicos secuenciales 13
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
entrada del circuito viene de la salida de un biestable y cada salida del circuito va a parar a la entrada de
otro biestable. En la seccin 6.6 profundizamos en este importante tema.
6.2 Estructura general de un circuito secuencial
6.2.1 Modelo de Mealy
Esquema lgico con un slo bloque combinacional. En la seccin 6.1.7 hemos dicho que un circuito
secuencial consista en la interconexin de dispositivos combinacionales y biestables siguiendo unas
reglas. La figura 6.13 muestra el esquema general de un circuito secuencial que se obtiene agrupando
todos los dispositivos combinacionales en un solo bloque (CLC) y todos los biestables en otro que se
denomina registro de estado del circuito (REG). La salida Q de este registro se denomina estado actual
(informacin que contiene la memoria del circuito en el ciclo actual), o simplemente estado, mientras
que la entrada D de REG se denomina estado siguiente, Q
+
, porque ser el estado al ciclo siguiente.
Como se ve, tanto la salida (W) como el estado siguiente (Q
+
) son funciones lgicas (H y G
respectivamente) de la entrada (X) y del estado actual (Q).
Esquema con dos bloques combinacionales. Tambin se puede descomponer el nico bloque con
todos los dispositivos combinacionales en dos bloques, uno que calcula las salidas del circuito
(funciones H) y otro que calcula el estado siguiente (funciones G). En principio, las salidas de los dos
bloques son funcin de las entradas al circuito y del estado actual, como se ve en la figura 6.14. Esta
estructura (y la de la figura 6.13) se denomina modelo de Mealy, para diferenciarlo del modelo de
Moore que es un caso particular de este en el que las salidas son solamente funcin del estado, y que
estudiamos en la seccin 6.2.2.
Tabla de transiciones y tabla de salida
Especificacin lgica de un secuencial. Al observar la estructura a bloques de un circuito secuencial
general (de Mealy) podemos decir que queda perfectamente especificado si nos indican lo siguiente:
Cuntas variables de entrada (n) tiene el circuito y su nombre (X), cuntas variables tiene de salida
(m) y su nombre (W), cuntos bits de estado tiene el circuito (k) (el nombre no hace falta ya que por
CLC
R
E
G
Clk
Q
+
Q
k k
n m
X W H
G
Fig. 6.13 Estructura general (modelo de Mealy) de circuito secuencial con un solo
bloque combinacional.
14 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
convenio siempre denominamos al estado actual Q, que es la salida de los biestables o del registro
de estado, y al estado siguiente Q
+
, que es la entrada de datos de los biestables).
Las dos tablas de verdad de cada uno de los dos bloques combinacionales: la tabla del estado
siguiente, o tabla de transiciones, que especifica Q
+
en funcin del estado actual Q y las entradas
X y la tabla de salida que especifica la salida W en funcin del estado actual y la entrada.
El estado inicial del circuito: el estado que tienen los biestables cuando se pone en marcha el
circuito, el estado durante el primer ciclo de funcionamiento del circuito (veremos la importancia de
esto ms adelante).
Ejemplo de especificacin. La figuras 6.15 y 6.16 muestran un ejemplo de especificacin de un
circuito secuencial mediante las dos tablas de verdad. Los nombres de las entradas y salidas del circuito
y el nmero de bits se ven en las figuras. El estado inicial (que no se indica en las figuras) es: q
1
=0 y
q
0
=0. En la primera figura se muestra la tabla de transiciones y, de forma resaltada, la parte del circuito
encargada de implementarla; y en la segunda se muestra la tabla de salida y la parte del circuito
correspondiente. Nos resulta ms claro y ms cmodo poner siempre las variables de estado como
variables de ms peso (ms a la izquierda) en las tablas de verdad y las variables de entrada como las de
menos peso (a la derecha). Esto sera correcto de cualquier otra forma, incluso mezclando las variables
de entrada y las de salida, pero podra dificultar el trabajo y aumentar la probabilidad de cometer algn
error.
Estados inalcanzables. Aunque el ejemplo que nos ocupa tiene dos biestables y por lo tanto puede
tener 4 estados diferentes, el estado Q=10 nunca se va a dar. Si observamos la tabla del estado siguiente
de la figura 6.15 y sabiendo que el estado inicial del circuito es el q
1
=0 y q
0
=0, Q=00, sea cual sea la
secuencia de entrada el circuito nunca llegar a estar en el estado q
1
=1 y q
0
=0, Q=10: del estado 00
puede ir al 00, al 01 o al 11, dependiendo de las entradas, pero nunca al 10, lo mismo pasa cuando el
circuito est en los estados 01 o 11. Por eso, en la tabla de transiciones no se ha especificado cul es el
estado siguiente cuando el circuito est en el estado 10, porque nunca estar en ese estado. Esto se
indica con valores x en las salidas de la tabla q
1
+
y q
0
+
, que dicen que no importa el estado siguiente.
CLC
H
R
E
G
Clk
Q
+
Q
k k
n
m
X
W
CLC
G
k
n
n
Fig. 6.14 Estructura general (modelo de Mealy) de circuito secuencial con dos bloques
combinacionales, uno para las salidas y otro para el estado siguiente.
Circuitos lgicos secuenciales 15
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
6.2.2 Modelo de Moore
Estructura a bloques. Un circuito secuencial de Moore es un caso particular del caso general de
Mealy. En un circuito de Moore las salidas en cada ciclo son solamente funcin del estado actual del
circuito (no son funcin del valor de las entradas en ese ciclo). La figura 6.17 muestra el esquema
general con los dos bloques combinacionales: el del estado siguiente (esto es igual que el caso de
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
0
0
1
0
x
x
0
0
0
0
x
x
0
1
0
x
0
q
0
x
1
q
1
Q
+
= G (Q, X) :
q
0
+
q
1
+
1
1
0
1
1
x
x
0
1
0
1
x
x
0
1
1
CLC
H
R
E
G
Q
+
Q
k k
n
m
X
W
CLC
G
k
n
n
Fig. 6.15 Ejemplo de especificacin de un circuito secuencial con dos bits de entrada
(x
1
, x
0
), dos de estado (q
1
, q
0
) y dos de salida (w
1
, w
0
) mediante las dos tablas de
verdad. En esta figura tabla de transiciones y circuito que la implementa.
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
1
1
0
1
x
x
1
1
1
0
x
x
1
0
0
x
0
q
0
x
1
q
1
w
0
w
1
0
1
1
1
0
x
x
0
0
1
0
x
x
0
1
1
W = H (Q, X) :
CLC
H
R
E
G
Q
+
Q
k k
n
m
X
W
CLC
G
k
n
n
Fig. 6.16 Ejemplo de especificacin de un circuito secuencial con dos bits de entrada
(x
1
, x
0
), dos de estado (q
1
, q
0
) y dos de salida (w
1
, w
0
) mediante las dos tablas de
verdad. En esta figura tabla del estado siguiente y circuito que la implementa.
16 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Mealy) y el combinacional que calcula las salidas del circuito, W, que ahora es slo funcin del estado
actual, Q (la salida de los biestables de estado o registro de estado).
Especificacin mediante tablas. Para especificar el funcionamiento de un circuito de Moore hay que
dar la misma informacin que para uno de Mealy; la nica diferencia es que la tabla de salida es ms
pequea, tiene menos filas: las salidas son slo funcin del estado. La figura 6.18 muestra un ejemplo
de especificacin de un circuito (que no hace la misma funcin que el de Mealy de la seccin anterior).
El estado inicial no se indica en la figura, pero es el q
1
q
0
= 00. En este caso el circuito no se encontrar
nunca en el estado 11, por lo que la tabla de transiciones y la de salidas indican que en caso de estar en
el estado 11 el estado siguiente y las salidas pueden tomar cualquier valor.
6.3 Grafo de estados
Veamos la forma de especificar el comportamiento lgico de un circuito secuencial mediante un grafo,
que es una representacin mucho ms amigable que las tablas de transiciones y de salida. Nos
centramos en el caso de Moore usando como ejemplo el circuito especificado mediante las tablas de la
figura 6.18. Slo al final, en la seccin 6.3.4, hacemos algn comentario sobre los grafos de estado para
el caso de Mealy, ya que no los usaremos en este curso.
CLC
H
R
E
G
Q
+
Q
k k m X
W
CLC
G
k
n
Fig. 6.17 Estructura a bloques de un circuito secuencial de Moore.
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
0
x
0
1
0
1
1
x
x
x
x
0
q
0
x
1
q
1
Q
+
= G (Q, X) :
q
0
+
q
1
+
0
1
0
0
1
0
1
x
1
0
1
0
0
x
x
x
W = H (Q, X) :
0
0
1
1
0
1
0
1
0
0
1
x
0
1
1
x
q
0
q
1
w
0
w
1
Fig. 6.18 Ejemplo de especificacin de un circuito secuencial de Moore con dos bits de
entrada (x
1
, x
0
), dos de estado (q
1
, q
0
) y dos de salida (w
1
, w
0
) mediante las dos tablas
de verdad.
Circuitos lgicos secuenciales 17
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
6.3.1 La tabla de transiciones en el grafo
El grafo de estados representa la informacin de la tabla de transiciones: cul es el estado siguiente
para cada uno de los posibles estados y para cada una de las posibles combinaciones de los valores de
las entradas.
Los nodos
El nmero de nodos del grafo es igual al nmero de estados distintos en los que puede encontrarse el
circuito. Cada nodo representa un estado distinto. Un circuito con k biestables puede codificar hasta 2
k
estados diferentes, por lo que el grafo puede tener 2
k
nodos. Puede tener menos de 2
k
nodos si, debido
a las particularidades del circuito, hay combinaciones de estos k bits que no se dan nunca. As que el
grafo del ejemplo que nos ocupa, especificado mediante la tabla de transicin de la figura 6.18, tiene
tres nodos, para los estados 00, 01 y 10, ya que nunca se encontrar en el estado 11.
Cada nodo se representa mediante un crculo, en cuyo interior (en la mitad superior) se indica la
codificacin del estado que representa el nodo (en nuestro ejemplo los valores concretos de q
1
y q
0
). El
nodo del estado inicial se representa con un doble crculo. En la figura 6.19 se muestran los 3 nodos del
grafo de nuestro ejemplo (con una flecha que explicamos a continuacin, pero faltan muchas ms).
Los arcos
En un grafo de estados, de cada nodo salen tantos arcos dirigidos, flechas, como el nmero de posibles
combinaciones de valores de las entradas. As, como el circuito del ejemplo tiene 2 bits de entrada, de
cada nodo deben salir 4 flechas, una para cada combinacin de los bits de entrada: 00, 01, ... Cada arco
se etiqueta con la combinacin de entradas a que hace referencia. La punta de la flecha va a parar al
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
0
x
0
1
0
1
1
x
x
x
x
0
q
0
x
1
q
1
Q
+
= G (X, Q) :
q
0
+
q
1
+
0
1
0
0
1
0
1
x
1
0
1
0
0
x
x
x
CLC
H
R
E
G
Q
+
Q
k k
n
m
X
W
CLC
G
k
n
n
10
00
01
00
Fig. 6.19 Tabla de transiciones, esquema a bloques encargado de implementarla y grafo
incompleto que representar, cuando est completo, la misma informacin que la tabla de
transiciones. Se ha sombreado una entrada de la tabla y el arco del grafo que la representa.
18 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
nodo del estado que tendr el circuito al siguiente ciclo (estado siguiente), siempre y cuando en el ciclo
actual las entradas tomen la combinacin de bits que indica la etiqueta del arco.
En la figura 6.19 se muestran los 3 nodos del grafo de nuestro ejemplo y el arco relativo a la entrada 4
de la tabla de transiciones. Esta entrada de la tabla, que se indica con un fondo gris en la figura, dice:
si estamos en un ciclo (ciclo actual) en el que el circuito est en el estado 01 (q
1
=0 y q
0
=1) y las
entradas en este ciclo valen 00 (x
1
=0 y x
0
=0), el circuito combinacional que calcula el estado siguiente
genera en sus salidas los valores q
1
+
=0 y q
0
+
=0, por lo que al ciclo siguiente el circuito secuencial
pasar al estado 00. Esta transicin se muestra en la figura con la flecha etiquetada con 00.
De la tabla al grafo y del grafo a la tabla
De la misma forma que hemos puesto un arco en el grafo se procede con todas las filas de la tabla de
transiciones. En la figura 6.20 a) se ve el grafo anterior al que se le ha aadido adems el arco relativo
a la entrada 5 de la tabla de verdad: si estamos en el estado 01 y la entrada vale 01, el estado siguiente
ser el 01. Por ltimo en la parte b) de la figura se muestra el grafo completo. Podemos observar que en
los casos que de un nodo salen varios arcos hacia el mismo nodo se ha dibujado slo uno que
representa a todos ellos, pero se ha etiquetado con todas las combinaciones de valores de entrada de las
transiciones que representa. Este es el caso de las dos transiciones del estado 01: tanto si la entrada vale
01 como si vale 11 el estado siguiente es el 01.
Al poner los arcos en el grafo es razonable empezar por la fila cero de la tabla e ir avanzando hasta
completar el grafo. Haremos algn ejercicio de esto en la seccin 6.6, como parte del anlisis de un
circuito secuencial: a partir del esquema lgico obtener las tablas de transiciones y de salida y de estas
el grafo de estados. Tambin haremos lo contrario como uno de los pasos de la sntesis de circuitos
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
0
x
0
1
0
1
1
x
x
x
x
0
q
0
x
1
q
1
Q
+
= G (X, Q) :
q
0
+
q
1
+
0
1
0
0
1
0
1
x
1
0
1
0
0
x
x
x
10
01
01
00
00
10
10
10 10
01
01
01
01
11
11
11
00
00
00
00
a)
b)
Fig. 6.20 Tabla de transiciones. a) Grafo incompleto al que se le ha aadido, a partir
del grado de la figura 6.19, el arco relativo a la fila 5 de la tabla de transiciones
(marcado con sombra gris). b) Grafo completo.
Circuitos lgicos secuenciales 19
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
secuenciales: a partir del grafo obtener la tabla de transiciones. En definitiva, es importante entender la
relacin entre las dos formas de especificar la parte combinacional que calcula el estado siguiente.
6.3.2 La tabla de salida en el grafo
Dado que para el caso de Moore la tabla de salida es muy sencilla (las salidas slo dependen del
estado), la informacin de la tabla puede integrarse fcilmente en el grafo. Solamente se tiene que
asociar a cada estado (cada nodo del grafo) la salida que produce. Para ello se diferencian dos zonas en
el interior de cada nodo: arriba se escribe la codificacin del estado a que corresponde el nodo, como ya
hemos visto, y abajo se indican los valores de las salidas cuando el circuito est en ese estado.
El sombreado de la figura 6.21 muestra cmo se pone en el grafo la informacin de la fila 2 de la tabla
de salida: en el ciclo en el que el estado es 10 (q
1
=1, q
0
=0) las salidas toman el valor 11 (x
1
=1, x
0
=1).
La figura 6.22 muestra el grafo de estados completo, que contiene la informacin de las tablas de
transicin y de salida del ejemplo de la figura 6.18.
10
10
10
01
01
01
11
11
11
00
00
00
10
01
11
00
W = H (Q):
0
0
1
1
0
1
0
1
0
0
1
x
0
1
1
x
q
0
q
1
w
0
w
1
+
Fig. 6.21 Especificacin de la fila 2 de la tabla de salidas (marcada con sombra gris) en
el nodo correspondiente.
CLC
H
R
E
G
Q
+
Q
k k m X
W
CLC
G
k
n
10
10
10
01
01
01
11
11
11
00
00
00
10
01
01
11
00
00
Fig. 6.22 Especificacin completa del circuito de Moore del ejemplo de la figura 6.18
mediante un grafo de estados.
20 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
La leyenda del grafo. Dado que al eliminar las tablas de verdad perdemos
los nombres de las variables y su orden en las tablas, dar slo el grafo de
estados es incompleto. Por ello, para especificar correctamente un circuito
secuencial de Moore (lo mismo ocurre para Mealy) hay que indicar en qu
orden codificamos los bits de las entradas y salidas en el grafo (tambin
indicamos el nombre de los bits de estado, aunque esto no es estrictamente
necesario). Esta informacin se indica en un nodo del que sale una flecha,
pero dispuesto aparte del grafo de estados. A este nodo y esta flecha se les
etiqueta con el nombre de las variables en vez de con valores de bits
concretos, que es como se hace en el grafo de estados. As, la leyenda del
grafo de la figura 6.22 se muestra en el margen derecho de este prrafo.
6.3.3 Seguimiento de grafos de estados
Un tipo de ejercicios que ayuda a entender la informacin que hay en un grafo consiste en obtener un
cronograma simplificado que indique las seales del estado y las de salida en cada ciclo a partir del
grafo de estados completo del circuito, del estado inicial, y del valor de las entradas en cada ciclo.
Veamos un ejemplo. La figura 6.23 muestra el smbolo de un circuito secuencial de una entrada x y una
salida w junto con el grafo de estados que define su comportamiento. El nombre de los estados del
grafo, E0, E1 y E2, no se ha codificado, por lo que se usan estos mismos nombres en el cronograma.
Vamos a completar el cronograma simplificado de la figura que muestra el comportamiento del circuito
para una secuencia concreta de valores de la entrada, una vez estabilizados.
Para mostrar cmo se completa este cronograma fijmonos en el ciclo 4, por ejemplo. La informacin
de lo que ocurre en este ciclo se ha marcado en gris tanto en la tabla del cronograma como en el grafo.
En el ciclo 4 el circuito est en el estado E2 y en la entrada x hay un 0. Estos son los datos que nos dan.
El grafo nos dice que estando en el estado E2 la salida que produce el circuito es 1, por lo que podemos
completar este dato en el cronograma. El grafo tambin nos dice que si estando en el estado E2 la
entrada vale 0, al ciclo siguiente se pasa al estado E0 (durante el ciclo actual se calcula el estado
x
1
x
0
w
1
w
0
q
1
q
0
Leyenda:
CLS
x
w
Clk
x
Ei
w
0
E1
0
1
0
1
0
1
0
E0
1
E2
Fig. 6.23 Smbolo de un bloque secuencial, leyenda del grafo y grafo de estados de
Moore del circuito. Cronograma simplificado para una secuencia de entradas concreta .
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Estado E0 E2 E0 E1 E2 E0 E1 E0 E2 E1
Entrada x 1 0 0 0 0 0 1 1 1 0 0 1 0 1 0
Salida w 0 1 0 0 1 0 0 0 1 0
Circuitos lgicos secuenciales 21
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
siguiente E0). Este estado se puede completar en la tabla y ponerlo en el ciclo 5 (esta informacin
tambin se ha sombreado). Siguiendo este proceso se completa toda la tabla de izquierda a derecha. El
cronograma de la figura se ha dejado incompleto para que completis vosotros el estado y la salida para
los ciclos del 10 a 14. La solucin se muestra en el cronograma de la figura 6.24.
Ejemplo 2
Es como el ejemplo anterior, con la diferencia que el circuito tiene 2 entradas (x
1
, x
0
) y dos salidas (w
1
,
w
0
) y en este grafo se han codificado los estados con dos bits (q
1
,q
0
). Hay que completar la tabla del
cronograma de la figura 6.25: estado y salidas para los ciclos del 5 al 14. La solucin se muestra en la
figura 6.26.
6.3.4 Grafos de estados para circuitos de Mealy
Completamos el tema de los grafos de estado con el caso de Mealy, aunque en este curso no vamos a
trabajar con estos circuitos. Lo hacemos porque es importante conocer la estructura y la especificacin
del caso general de un circuito secuencial. El grafo sirve para especificar la tabla de transiciones de un
secuencial tanto si es de Moore como si es de Mealy, ya que en ambos casos el estado siguiente es
Fig. 6.24 Cronograma simplificado que completa al de la figura 6.23.
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Estado E0 E2 E0 E1 E2 E0 E1 E0 E2 E1 E2 E0 E2 E0 E2
Entrada x 1 0 0 0 0 0 1 1 1 0 0 1 0 1 0
Salida w 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1
10
01
0x
00
00
01
1x
11 11
01
11
00
11 01
10
10
x
1
x
0
w
1
w
0
q
1
q
0
CLS
x
0
w
0
Clk
x
1
w
1
Fig. 6.25 Smbolo de un bloque secuencial, leyenda del grafo y grafo de estados de
Moore del circuito. Cronograma simplificado incompleto.
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Estado q
1
q
0
00 00 00 11 11
Entrada x
1
x
0
00 01 11 10 01 00 00 11 10 01 11 01 00 10 10
Salida w
1
w
0
11 11 11 10 10
22 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
funcin de las entradas y del estado actual. No obstante, no ocurre lo mismo con la tabla de salida, que
tiene diferente estructura, es ms compleja, en el caso general de Mealy que en el particular de Moore.
Para Mealy las salidas son funcin no solamente del estado sino tambin de las entradas. Esto hace que
no podamos asociar cada nodo con un valor concreto de las salidas.
En el caso de Mealy, el valor de las salidas se asocian a los arcos ya que cada arco es funcin del estado
actual y del valor de las entradas en ese ciclo
1
. Aunque este tipo de representacin se usa normalmente
en otros textos, no la usaremos aqu. Siempre podemos usar el grafo de estados tal como lo hemos visto
en las secciones anteriores para representar solamente la tabla de transiciones y al lado del grafo indicar
la tabla de salidas Esto se hace en la figura 6.27 para el ejemplo de circuito de Mealy que se especific
con las dos tablas en la seccin 6.2.1 (figuras 6.15 y 6.16). A partir de este momento, si no se dice lo
contrario, siempre que hablemos de circuitos secuenciales y de grafos de estados que los especifican
nos referimos al caso de Moore.
6.4 Anlisis lgico
Diferenciamos dos partes en el anlisis de un circuito secuencial, al igual que hicimos con el anlisis de
un combinacional: anlisis lgico y anlisis temporal. Los dos tipos de anlisis parten del esquema
lgico del circuito. El anlisis lgico consiste en encontrar el grafo de estados que especifica la
funcionalidad del circuito y el temporal consiste en encontrar el tiempo de ciclo mnimo que hace que
el circuito realice correctamente la funcionalidad descrita por el grafo. Vamos a usar el ejemplo de la
figura 6.28 para realizar los dos tipos de anlisis. No obstante, el anlisis temporal lo dejamos para el
final del captulo (seccin 6.6)
Nombre de las seales
El primer paso consiste en identificar los biestables de estado del circuito y las entradas y las salidas del
circuito, para saber cuntos hay y sus nombres. Los nombres de las entradas y salidas del circuito
normalmente nos las darn junto con el esquema (supongamos que son x
n-1
, ..., x
1
, x
0
y w
m-1
, ..., w
1
,
w
0
respectivamente), pero los nombres de los bits de estado no tienen porqu estar especificados en el
circuito. Si no lo estn, debemos darles nombre, por ejemplo: q
k-1
, ..., q
1
, q
0
). La asignacin del
1. Dado que en un circuito de Mealy, la salida es funcin del estado actual (nodo) y del valor de las entradas durante ese ciclo
(arco), podemos asociar a cada arco que sale de un nodo otra etiqueta con los valores de las salidas que corresponden al nodo
del que sale la flecha y a las entradas que representa esa flecha. Por ejemplo, en vez de etiquetar un arco con x
1
x
0
lo etique-
taramos con x
1
x
0
/w
1
w
0
. Ahora solo se podran fundir varias flechas si coinciden las etiquetas de las entradas y salidas (ade-
ms del nodo origen y destino). Esto hace que en general aparezcan ms flechas y complica bastante el grafo.
Fig. 6.26 Cronograma simplificado solucin del ejercicio 2.
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Estado q
1
q
0
00 00 00 11 11 11 01 00 11 11 11 00 00 00 01
Entrada x
1
x
0
00 01 11 10 01 00 00 11 10 01 11 01 00 10 10
Salida w
1
w
0
11 11 11 10 10 10 01 11 10 10 10 11 11 11 01
Circuitos lgicos secuenciales 23
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
nombre a la salida de cada biestable es arbitraria. Tambin hay que dar nombre a las entradas de los
biestables de estado, que definen el estado siguiente: la entrada D del biestable cuya salida est
etiquetada con q
i
se denomina q
i
+
. El ejemplo que nos ocupa tiene una seal de entrada x, una de salida
w y dos bits de estado (que ya estn etiquetados) q
1
y q
0
.
Circuito de Mealy o de Moore?
Una vez hecho esto debemos identificar si el esquema lgico sigue una estructura de Mealy
(figura 6.13 o figura 6.14) o una estructura de Moore (figura 6.17). El ejemplo es de Moore, porque la
salida w es solamente funcin del estado, pero no de la entrada. Aqu solo tratamos casos de Moore,
pero es conveniente comprobarlo antes de continuar.
Obtencin de la tabla de transiciones y la de salida
Ahora debemos hacer el anlisis lgico de los dos circuitos combinacionales que definen el circuito
secuencial, tal como se hizo en el captulo 2. La tabla de transiciones define el funcionamiento de la
parte del circuito encargada de generar el estado siguiente, q
k-1
+
, ..., q
1
+
, q
0
+
, en funcin del estado
actual, q
k-1
, ..., q
1
, q
0
y de las entradas x
n-1
, ..., x
1
, x
0
. La tabla de salidas define la parte del circuito
que genera las salidas, w
n-1
, ..., w
1
, w
0
en funcin del estado q
k-1
, ..., q
1
, q
0
.
00
00 11
01
01
11
01
11
11
10
00
10
10 01
+
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
1
1
0
1
x
x
1
1
1
0
x
x
1
0
0
x
0
q
0
x
1
q
1
w
0
w
1
0
1
1
1
0
x
x
0
0
1
0
x
x
0
1
1
W = H (Q, X) :
CLC
H
R
E
G
Clk
Q
+
Q
k k
n
m
X
W
CLC
G
k
n
n
00
Fig. 6.27 Esquema a bloques de un circuito de Mealy con el grafo de estados y la tabla
de salidas que lo especifican completamente.
24 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Las funciones lgicas que definen el estado siguiente y la salida en nuestro ejemplo se muestran en la
figura 6.29 (expresiones lgicas y tablas de transiciones y de salida).
x !x !q1 !q0 q1 q0
D Q
FF0
D Q
FF1
x Clk
w
q1+
q0+
q1
q0
Fig. 6.28 Esquema lgico del circuito secuencial a analizar.
q
0
x
0
0
1
1
0
1
0
1
q
1
0
0
0
0
0 0 1
0 1 1
1 0 1
1 1 1
q
0
+
1
1
0
1
1
0
0
0
q
1
+
0
0
1
1
0
0
0
0
q
0
+
= !q
1
x + !q
0
!x
q
1
+
= !q
1
q
0
a) Tabla de transiciones:
w= q
1
!q
0
+ !q
1
q
0
b) Tabla de salidas:
1 0 1
q
0
w
0
1
0
0
1
1
0
0
1
q
1
Fig. 6.29 Tabla de transiciones y de salidas resultante del anlisis lgico del circuito de
la figura 6.51.
Circuitos lgicos secuenciales 25
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Obtencin del grafo de estados
Para terminar el anlisis lgico debemos dibujar el grafo de estados, que contiene la misma
informacin que las tablas de transiciones y de salida y que define el funcionamiento del circuito de
una forma ms clara para nosotros que las dos tablas de verdad. Con esto termina el anlisis ya que no
podemos ponerle un texto que describa el funcionamiento del circuito: puede haber infinidad de textos
que describen el funcionamiento de un circuito secuencial con un nico grafo.
La relacin entre las tablas y el grafo de estados lo vimos al describir los grafos en la seccin 6.3.1
(para la tabla de transiciones) y en la seccin 6.3.2 (para la tabla de salidas), por lo que presentamos
directamente el resultado para nuestro ejemplo en la figura 6.30. El estado inicial, que se indica en el
grafo con un doble crculo, debe estar indicado en el esquema lgico. En nuestros ejemplos se indica
con la notacin de LogicWorks, pero slo cuando el estado inicial de un biestable es 1. Cuando es 0 no
lo indicamos, ya que este es el valor de estado inicial que tienen por defecto los biestables de nuestra
biblioteca. En el esquema lgico del ejemplo no se indica nada, por lo que suponemos que el estado
inicial es el 00.
6.5 Sntesis de circuitos secuenciales
Para nosotros el proceso de sntesis de circuitos secuenciales parte de la descripcin funcional del
circuito y termina con el esquema lgico del circuito que lo implementa. Descomponemos el proceso
en tres pasos:
1. De la descripcin funcional al grafo de estados.
2. Del grafo de estados a las tablas de transiciones y de salidas.
3. De las tablas de transiciones y de salidas al esquema lgico.
0
01
1
11
1
00
1
0
10
0
0
1
1
0
0
1
x
w
q
1
q
0
Fig. 6.30 Grafo de estados resultante del anlisis lgico del circuito de la figura 6.51.
26 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
De estos tres pasos el primero es posiblemente el ms complejo; el segundo tiene que ver con lo que
hemos hecho en la seccin 6.3.1 y 6.3.2 al pasar de las tablas de transiciones y de salida al grafo de
estados, pero ahora en sentido contrario; y el tercero es exactamente igual a loque hicimos en el
captulo 2 al sintetizar circuitos combinacionales: implementar las tablas de verdad (de transiciones y
de salida) en suma de minterms, con un decodificador y puertas Or, o con una ROM (aunque ahora
veremos una nueva estructura que implementa las dos tablas con una sola ROM y un multiplexor de
buses). Por ello nos centramos en el primer paso, mientras que de los dos ltimos solamente veremos
un ejemplo.
6.5.1 De la descripcin funcional al grafo de estados
La descripcin o especificacin del funcionamiento de un circuito secuencial se suele hacer mediante
un texto escrito de manera informal o tambin, ms formalmente, mediante un pseudocdigo en un
lenguaje de alto nivel, usando frmulas matemticas, etc. Adems, se puede completar la descripcin
indicando el funcionamiento para una secuencia concreta de valores de entrada mediante cronogramas
simplificados (que indican el valor de las seales en cada ciclo una vez estabilizadas). En algunas
ocasiones se pide completar un cronograma para asegurarnos que se entiende la funcionalidad descrita.
Pasar de una de estas formas de especificacin funcional a expresar el funcionamiento mediante un
grafo de estados no consiste en seguir un procedimiento sistemtico. Es un tema que requiere una
comprensin profunda del tema y cierta experiencia. Es ms, incluso la solucin no es nica: dada una
descripcin funcional puede haber varios grafos correctos (aunque alguno ser mas eficiente que los
otros, por ejemplo, en cuanto al hardware necesario para su implementacin; aunque no vamos a
pretender optimizar nuestros diseos). Para aprender a hacer esto vamos a resolver algunos ejemplos.
Ejemplo 3 El biestable D
En la seccin 6.1.5 hemos definido la funcionalidad del biestable D y hemos hecho algunos
cronogramas detallados de su funcionamiento (suponiendo que no tiene retardo, primero y
considerando el retardo despus). Ahora, partiendo de la descripcin funcional, vamos a sintetizar un
circuito que tenga el comportamiento del biestable D. Este es un ejercicio muy sencillo, pues de hecho
ya sabemos que al menos una implementacin vlida consiste en un nico biestable.
En la figura 6.31 se ha dispuesto el smbolo del circuito (FF) mostrando el nombre de la entrada d y la
salida q y la leyenda del grafo que vamos a crear con el nombre de las entradas y salidas. La
codificacin de las variables de estado no se hace ahora, se deja para el paso 2 del diseo (del grafo a
las tablas de transiciones y de salidas) pues ahora, antes de crear el grafo ni siquiera sabemos cuntos
estados tiene). Se ha dibujado un cronograma simplificado que visualiza con claridad el
comportamiento del biestable como retardador de un ciclo de la secuencia de entrada: la salida en el
ciclo siguiente (k+1) es igual a la entrada del ciclo actual (k): q(k+1) = d(k), denotando x(k) al valor de la
variable lgica x durante el ciclo k.
Dado este funcionamiento, vemos que el biestable D es un circuito secuencial muy sencillo. El estado
siguiente, que denominamos Q
+
, es igual a la entrada d y la salida q es igual al estado Q. As que, como
hay dos valores posibles del bit de salida y la salida es igual al estado, el biestable tiene 2 estados: E0
cuya salida es, por ejemplo, 0 y E1 cuya salida es 1. Estando en cualquiera de los dos estados, si la
Circuitos lgicos secuenciales 27
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
entrada es 0 el estado siguiente tiene que ser el E0 y si la entrada es 1 se pasa al estado E1 al ciclo
siguiente. La figura 6.32 muestra el grafo resultante.
Ejemplo 4 Reconocedor de la secuencia 011
Este ejemplo es ms complejo qu el anterior. Debemos dibujar el grafo del circuito secuencial
reconocedor de la secuencia 011 que se muestra en la figura 6.33.
Como estamos sintetizando circuitos de Moore, la salida en el ciclo k no puede ser funcin de la
entrada en ese ciclo, por lo que si en el ciclo k-2 la entrada vale cero, en el k-1 la entrada vale 1 y en el
k tambin vale 1, (esto es, ha llegado la secuencia objetivo) la salida no puede valer 1 en el ciclo k. Lo
que s se calcula en el ciclo k, en funcin de la entrada y del estado, es el estado siguiente, y el estado
d
Ei
q
Leyenda:
FF
d q
Fig. 6.31 Smbolo y cronograma simplificado de ejemplo de funcionamiento del circuito
secuencial ms sencillo, un biestable D.
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Entrada d 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0
Salida q 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1
1
0
0
E0
1
E1
0
1
Fig. 6.32 Grafo de estados del biestable D.
y
N
w
Leyenda:
011
y w
Fig. 6.33 Smbolo y cronograma simplificado del reconocedor de la secuencia 011.
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Entrada y 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0
Salida w 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0
28 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
siguiente del ciclo k codifica la informacin de que ha llegado la secuencia objetivo. Al pasar del
ciclo k al k+1 el estado siguiente del ciclo k pasa a ser el estado actual del ciclo k+1, por lo que la
salida, pasa a ser 1 en el ciclo k+1. As que, cuando la salida vale 1 indica que ha llegado la secuencia
objetivo (el ltimo bit de la secuencia lleg en el ciclo anterior). En la figura 6.33 se muestra un
cronograma para una secuencia de entradas concreta que clarifica el funcionamiento.
Un grafo con 8 estados
Hay muchas estrategias posibles para crear un grafo de estados que plasme la funcionalidad descrita.
Podemos preguntarnos, qu debe recordar el circuito para poder hacer lo que nos piden? Una posible
respuesta es que si la memoria del circuito (el estado) guarda los tres ltimos bits que llegaron por la
entrada, el circuito podr hacer lo que nos piden. Con esta idea el circuito puede estar en 8 estados
diferentes.
Podemos denotar o denominar la informacin del estado actual como tdu, que son las primeras letras de
tres, dos y uno. Con esta notacin, el estado actual denotado como 110, por ejemplo, indica que hace
tres ciclos llego un 1, hace dos un 1 y en el ciclo anterior lleg un 0. As si el estado actual es el Q = tdu,
y en el ciclo actual en la entrada hay un 0, el estado siguiente ser el Q
+
= du0, mientras que si llega un
1 ser el Q
+
= du1. Con estos nombres para los estados es sencillo dibujar el grafo con los 8 nodos y las
dos flechas que salen de cada nodo. La salida del circuito valdr 1 cuando el circuito est en el estado Q
= 011. En cualquier otro estado la salida valdr 0.
Siempre tenemos que plantearnos cul debe ser el estado inicial. De momento supongamos, ya que no
nos han dicho nada en el enunciado, que el estado inicial es el 000, esto es suponer que en el ciclo cero
es como si hubieran llegado ya tres ceros. Con esta suposicin creamos el grafo que se muestra en la
figura 6.34. Pero este no es el nico grafo posible!

Fig. 6.34 Un posible grafo de estados del reconocedor de la secuencia 011 suponiendo
que el estado inicial es el mismo que si hubieran llegado tres ceros seguidos.
Circuitos lgicos secuenciales 29
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Un grafo con 15 estados
Con la decisin anterior de que el estado inicial sea el 000, resulta que si en el primer ciclo de
funcionamiento del circuito la entrada vale 1 y al ciclo siguiente vale otra vez 1, el circuito detecta la
secuencia 011 y un ciclo ms tarde saca un 1 por la salida; cuando realmente por la entrada no ha
llegado la secuencia deseada.
Para corregir esto vamos a dibujar un grafo en el que el estado inicial tenga la informacin de que no ha
llegado ningn bit. Pasado un ciclo el estado debe guardar la informacin de que ha llegado un 0 o un 1
segn el caso y as hasta que pasados tres ciclos despus del inicial el estado sea uno de los 8 que
hemos dibujado en el grafo de la figura 6.34.
Para ello podemos aadir, a los 8 nodos de la figura 6.34, nuevos nodos para considerar los tres
primeros ciclos de funcionamiento del circuito. Este subgrafo (la parte del grafo con los nuevos nodos)
se ve en la figura 6.35. El estado inicial ahora se ha denotado con tres puntos () porque no ha llegado
nada en los tres ciclos anteriores, el estado al que se pasa despus del primer ciclo se ha denotado con
(0) si llego un 0 estando en el estado inicial, o (1) si lleg un 1. En el tercer ciclo de funcionamiento
el circuito est en uno de los 4 estados que hemos denotado (00), (01), (10), o (11). En el cuarto ciclo
el circuito ya estar en uno de los 8 nodos del grafo de la figura 6.34, que en el subgrafo de la
figura 6.35 hemos dibujado con lneas discontinuas, pero que son los mismos nodos que los de la
figura 6.34, aunque dibujados en otra posicin y sin los arcos que los unen. El grafo completo debera
dibujarse fusionando los dos subgrafos y dejando como estado inicial el ().
Un grafo con 8 estados equivalente al de 15
El diseo anterior tiene 15 nodos podemos hacer otro grafo que manteniendo la misma funcionalidad
tenga menos nodos? La respuesta es s. Por ejemplo, si cambiamos el estado inicial del grafo de la
figura 6.34 al estado (111) tenemos un grafo con 8 estados que tiene la misma funcionalidad que el de
15 nodos. No obstante, vamos a crear un grafo con todava menos estados y la misma funcionalidad.


Fig. 6.35 Fragmento del grafo encargado de los tres primeros ciclos de funcionamiento
del circuito secuencial reconocedor de la secuencia 011.
30 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
El grafo ptimo con 4 estados
El grafo con el nmero mnimo de estados debe memorizar la mnima informacin posible. No hace
falta memorizar todas las posibles combinaciones de los tres bits de la entrada en los tres ciclos
anteriores, sino slo la informacin relevante.
Fusionando estados. Por ejemplo, en el grafo de 15 estados, de qu nos sirve saber si estamos en el
estado (), en el (1), o en el (111)? No nos sirve de nada, porque en todos esos estados no ha llegado
nada relevante para detectar la secuencia que buscamos: 011. La secuencia objetivo comienza por 0 y
como en todos los estados que acabamos de nombrar no lleg ningn cero en el ciclo anterior, ni un 0
hace dos ciclos y un 1 en el anterior, ni tampoco llego la secuencia en los ltimos tres ciclos, los tres
estados informan de lo mismo: no ha llegado nada relevante para detectar la secuencia. Por ello, estos
tres estados se pueden fusionar en uno. Los estados que indican que ha llegado un cero en el ltimo
ciclo, sea lo que sea que lleg en los anteriores (los estados: (0), (00), (10), (000), (010), (100) y
(110)) se pueden juntar en un estado que indique: en el ltimo ciclo llego un 0, por lo que hay indicios
que est comenzando la secuencia objetivo.
Se puede seguir fusionando estados a partir del grafo de 15 para obtener uno con menos estrados, pero
vamos a ir por otro camino, como si no hubiramos creado los grafos anteriores. La idea es guardar
slo la informacin relevante.
Empezando de nuevo. Para crear el nuevo grafo, nos situamos en el estado inicial, que denominamos
tambin () y que representa la informacin no ha llegado nada interesante. Si durante este ciclo
inicial llega un 1 por la entrada, nos quedamos en el mismo estado, (), porque estamos esperando un
0 que es el principio de la secuencia objetivo. De momento el grafo que estamos creando se ve en la
figura 6.36 a).
No obstante, si estando en el estado () llega un 0 tenemos que pasar a un estado en el que recordemos
que lleg un 0 ya que un cero es el primer bit de la secuencia esperada. As que pasamos al estado que
denotamos (0), que indica ha llegado un 0, es un estado en el que empieza a verse la posibilidad de
que llegue la secuencia deseada. Si estando en (0) llega un 1 tenemos que pasar a otro estado, (01),
que informa que ha llegado un 0 y luego un 1. En este estado estamos ms cerca del objetivo. Si cuando
estamos en (01) llega un 1 tenemos que pasar un nuevo estado, (011), que nos indica que ha llegado la
secuencia que buscamos, hemos alcanzado el objetivo. En este estado la salida debe ser 1, mientras que
en los otros la salida debe ser 0, pues todava no se ha dado la secuencia deseada cuando estamos en
uno de ellos. La secuencia de estados y transiciones por la que hemos pasado en lo comentado en este
prrafo se puede ver en la figura 6.36 b).
Hemos creado los nodos y las transiciones para el caso en que llegan seguidos los bits de la secuencia a
reconocer. Ahora tenemos que situarnos en cada nodo y ver cul es el estado siguiente si no llega el
valor de la entrada que ya hemos puesto en el grafo sino que llega el otro bit. Por ejemplo, si estamos
en el estado (0), que indica que lleg un 0 en el ciclo anterior, y la entrada vale 0 en ese ciclo, el estado
siguiente debe ser el mismo (0), ya que seguimos teniendo lo mismo que tenamos de la secuencia
objetivo, slo tenemos el primer 0. La figura 6.36 c) muestra el grafo que estamos creando con esta
nueva transicin.
Circuitos lgicos secuenciales 31
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Hay que repasar que salgan dos arcos de cada nodo ya que la entrada del circuito es de un bit, un arco
para el valor 0 de la entrada y otro para el 1. Por ejemplo, del nodo (01) (llegaron los dos primeros bits
de la secuencia) sale la flecha etiquetada con 1 hacia el nodo en el que se detecta la secuencia, pero
falta la flecha que sale con un 0. A dnde va? Despus de este ciclo habr llegado un 0, luego un 1 y
luego un 0, para detectar la secuencia slo nos vale el ltimo 0, que es el bit con que comienza, por lo
que de (01) el arco etiquetado con 0 va a parar al nodo (0), que indica que lleg un 0. Esta transicin
junto con todas las anteriores se muestra en la figura 6.36 d).
Por ltimo slo nos queda el nodo (011), que indica que hemos detectado la secuencia, del que no sale
de momento ninguna flecha. Si estando en (011) llega un 0 pasaremos al (0) ya que tenemos el primer
bit de la secuencia objetivo, pero si llega un 1 no tenemos nada, por lo que pasamos al (). El grafo
completo se muestra en la figura 6.37.
Por ltimo aconsejamos hacer algn recorrido por el grafo para una secuencia de valores de entrada
concretos y comprobar con ello que la secuencia de salida es la deseada. Por ejemplo, en la figura 6.38
se muestra el cronograma con las salidas para la secuencia de entradas: 10010111 y sobre el grafo el
recorrido que se hace (los nodos por los que se pasa) durante los ciclos del 0 a 7. Se observa que la
secuencia de salidas que indica el grafo al seguir el recorrido marcado es la misma que indica el
0

0 1
1
0 0 0
0
1
1
0 01 011
1
1
0
0 0
1
0
0
1
1
1
0
0 0
1
0
0
0
1
1
a)
b)
c)
d)
0 01 011
0 01 011
Fig. 6.36 Fases de creacin del grafo de estados del reconocedor de la secuencia 011.
32 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
cronograma. Esto no es una prueba exhaustiva del correcto funcionamiento del grafo, pero puede
ayudar a detectar errores en caso de que los haya.
Es interesante ver que este grafo tiene la misma funcionalidad que el de 15 nodos de la figura 6.35,
pero con slo 4 nodos.
Ejemplo 5 Detector de la secuencia 1101 sin y con solapamiento
La figura 6.39 muestra el smbolo y la leyenda del grafo del circuito detector de la secuencia 1101 (N
representa el nombre del nodo que no se codifica en binario todava). En general, cuando una secuencia
tiene los k bits iniciales iguales a los k bits finales, el enunciado nos tiene que indicar si se considera
como secuencia vlida una secuencia que usa los ltimos bits de la secuencia anterior para formar sus
primeros bits. Si esto est permitido se habla de detector de secuencias con solapamiento y si no lo est
es el caso de un detector sin solapamiento. En el ejemplo anterior no nos planteamos esto ya que la
secuencia empezaba con 0 y terminaba con 1. Pero esta secuencia empieza y termina por 1, con lo que
hay un bit de posible solape. Un ejemplo de secuencia que puede solapar hasta 3 bits es: 1010011101.
Vamos a crear dos grafos, uno para el caso que no est permitido el solapamiento y otro para el que s
lo est. En la figura 6.39 se muestran dos cronogramas simplificados para la misma secuencia de
entrada, indicando la salida para el caso a) sin solapamiento y el b) con solapamiento.
1
0
0 0
1
0
0
0
1
1
0
1
0 01 011
Fig. 6.37 Grafo de estados del reconocedor se la secuencia 011.
1
0
0 0
1
0
0
0
1
1
0
1
0 01 011
Fig. 6.38 Cronograma simplificado y recorrido por el grafo del reconocedor de la
secuencia 011 siguiendo la secuencia de entradas del cronograma.
Nm. Ciclo 00 01 02 03 04 05 06 07
Entrada y 1 0 0 1 0 1 1 1
Salida w 0 0 0 0 0 0 0 1
Circuitos lgicos secuenciales 33
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Comenzamos por dibujar el nodo del estado inicial, en el que no ha llegado nada relevante, nodo al que
denominamos (), siguiendo con la notacin usada en el anterior reconocedor de secuencia, ya que la
secuencia a reconocer tiene 4 bits. Como la secuencia objetivo comienza por 1, si estando en este
estado llega un 0 pasaremos al estado siguiente a este mismo estado, ya que sigue sin haber llegado
nada relevante. Supongamos ahora que llega la secuencia objetivo. El grafo de los nodos hasta
reconocer la secuencia se muestra en la figura 6.40 a). En todos los nodos la salida es 0 excepto en el
(1101) en el que se reconoce que lleg la secuencia deseada.
Ya tenemos todos los estados en los que hay algo de informacin vlida y no redundante. Veamos ahora
cul ha de ser el estado siguiente si estando en cada uno de estos nodos llega el valor no deseado, el que
x
N
w
Leyenda:
1101
x w
Fig. 6.39 Smbolo, leyenda del grafo y cronograma simplificado del reconocedor de la
secuencia 1101, a) sin solapamiento y b) con solapamiento.
a) Sin solapamiento
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Entrada y 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1
Salida w 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1
b) Con solapamiento
Nm. Ciclo 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Entrada y 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1
Salida w 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1
1
0 0
0
0
1
0
0
1
1
1 11 110 1101
0
1
1
0 0 0
1
0
0
0
1
1
0
a)
b)
1 11 110 1101
Fig. 6.40 Fases de creacin del grafo de estados del reconocedor de la secuencia 1101.
34 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
frustra el avance hacia el nodo (1101). Si estamos en (1) y llega un 0 tendramos que ir a un estado
que podramos llamar (10), pero en este estado no lleg nada relevante para la deteccin de la
secuencia, as que no ponemos un nuevo nodo sino que vamos al nodo () que tiene esa informacin:
no ha llegado nada relevante. Si estando en (11) llega un 1, cuando lo deseado sera un 0, se nos
frustra el avance. Tendramos que pasar al que podramos llamar estado (111), pero lo relevante de este
posible estado es lo mismo que nos informa el estado (11) del que partimos. Por ello, si estamos en
(11) y llega un 1 volvemos al (11) y no creamos ningn nuevo nodo. En la parte b) de la figura se
muestran estas transiciones aadidas al grafo de la parte a), junto con el arco de cuando llega 0 estando
en (110).
La figura 6.41 a) muestra el grafo completo, despus de aadir los dos arcos que salen del estado en el
que se detecta que ha llegado la secuencia. Si estando en el estado (1101) llega un 0, los cuatro ltimos
bits que han llegado son 1010, por lo que pasamos al estado que indica que no ha llegado nada
relevante (). Pero si estando en el (1101) llega un 1, los cuatro ltimos bits son 1011, lo que nos dice
que el ltimo 1 que lleg puede ser el primer 1 de una nueva secuencia, por lo que se pasar al estado
(1). Esta ltima transicin cambia si el reconocedor admite secuencias solapadas. En este caso, de los
cuatro ltimos bits 1011 se pueden aprovechar los dos ltimos para considerarlos como los dos
primeros de la nueva secuencia. Esto conlleva que estamos considerando el ltimo 1 de la secuencia
anterior como el primero de la nueva. La parte b) de la figura muestra el grafo con solapamiento.
Ejemplo 6 El piloto automtico
Vamos a dibujar el grafo de estados de un circuito secuencial encargado del piloto automtico de
aterrizaje de un avin, que en la introduccin (seccin 6.1.1) diseamos con un circuito combinacional,
pero intuimos que con un secuencial el circuito podra saber, cuando no recibe seal de ninguna
1
1
0 0
0
0
1
0
0
0
1
1
0
1
0
1
1
0 0
0
0
1
0
0
0
1
1
0
1
0
a)
b)
1 11 110 1101
1 11 110 1101
Fig. 6.41 Grafo de estados completo del reconocedor de la secuencia 1101, a) sin
solapamiento y b) con solapamiento.
Circuitos lgicos secuenciales 35
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
frecuencia, si est en la parte sin cobertura de la derecha o en la de la izquierda y podra dirigir el avin
hacia el centro sin necesitar la ayuda del piloto. El circuito secuencial es el encargado de generar las
seales w
1
y w
0
que controlan el sistema electromecnico de direccin de un avin en funcin de las
seales de entrada s
i
y s
d
que indica que se recibe la frecuencia de la izquierda y/o derecha
respectivamente.
Como hemos hecho en el ejemplo anterior, pensemos primero qu estados debe tener el circuito para su
correcto funcionamiento. En funcin del estado se generan las salidas en cada ciclo. Es inevitable tener
al menos un estado diferente para cada una de las posibles salidas del circuito (ya que es un circuito de
Moore). Las salidas posibles son w
1
w
0
igual a 00, para ir recto, 01 para ir hacia la derecha y 10 para ir
hacia la izquierda. Al menos tenemos que tener estos tres estados. El estado en cada ciclo depende de
las entradas del ciclo anterior y del estado del ciclo anterior. Por ello, el estado en el ciclo actual nos
indica la posicin del avin en el ciclo anterior. Veamos una secuencia de posibles valores de las
entradas s
i
s
d
. Supongamos que el avin viaja por la lnea central, recibiendo las dos frecuencias.
Denominemos C (de central) al estado que indica que en el ciclo anterior el avin estaba en el centro.
En este estado (independientemente del valor de las entradas, ya que es un circuito de Moore) lo ms
sensato es dirigir el avin recto, por lo que en el estado C las salidas son w
1
w
0
=00. El estado C adems
es el estado inicial, ya que el enunciado de la introduccin indica que cuando el avin viaja en la zona
central de aterrizaje es cuando el piloto transfiere el control al piloto automtico y suponemos que en
ese momento se inicializa el circuito secuencial que estamos diseando.
Si en el ciclo en que estamos en C las entradas valen s
i
s
d
= 11, nos informan de que estamos en la zona
central y por lo tanto el estado siguiente debe ser el mismo, C. Pero si las entradas son s
i
s
d
= 01 quiere
decir que estbamos en la zona central en el ciclo anterior pero ahora estamos en la derecha de la pista,
recibiendo slo la frecuencia de la derecha. El estado siguiente debe ser distinto, para indicar la nueva
situacin, por lo que pasaremos a un estado que podemos denominar CD (centro-derecha). En el estado
CD se debe dirigir el avin hacia el centro y como estamos un poco a la derecha del centro, hay que
dirigir el avin a la izquierda con w
1
w
0
=10. Si estando en CD llega s
i
s
d
= 01 el estado siguiente debe
ser el mismo CD y si llega 11 volvemos al estado C. De la misma forma procedemos si el avin se va
hacia la izquierda, definiendo el nuevo estado CI (centro-izquierda). El grafo con el nodo C, el CD y el
CI y las transiciones comentadas se muestra en la figura 6.42 a).
Si estando en el estado CD las entradas valen s
i
s
d
= 00 quiere decir que en el ciclo anterior estbamos
en la zona de cobertura de la derecha y hemos pasado a la zona en la que no se recibe ninguna seal. En
este caso, con un circuito combinacional estbamos perdidos pues no sabamos si estbamos en la zona
exterior de la derecha o de la izquierda ya que no haba forma de saber donde estbamos momentos
antes. Ahora esta informacin est en el estado del circuito y podemos asegurar que, en este caso,
estamos en la zona externa de la derecha. Esto es as porque suponemos que la frecuencia del reloj del
circuito es mucho mayor que la velocidad del avin en atravesar cualquiera de las zonas en las que se
recibe de una o las dos frecuencias. As, estando en CD para pasar a la zona exterior de la izquierda
primero tendramos que haber estado varios ciclos en C y varios en CI. Podemos, de momento, dedicar
un nuevo nodo, D, para la zona exterior derecha. En este nodo lo razonable es dirigir el avin hacia la
izquierda, por lo que w
1
w
0
=10. Estando en esta zona si llega s
i
s
d
= 00 seguimos en la misma zona, si
llega 01 pasamos a CD y no puede llegar ninguna otra seal de entrada por la suposicin que hemos
36 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
hecho de la frecuencia de reloj elevada. Lo equivalente ocurre con la zona exterior de la izquierda, I. El
grafo parcialmente construido con estos dos nuevos nodos se muestra en la figura 6.42 b).
Por ltimo dibujamos los arcos que no se pueden dar por la fsica del problema y la suposicin de
que la frecuencia es tan grande que mientras el avin atraviesa una de las zonas pasan varios ciclos.
Estos arcos que no se pueden dar se han dibujado solamente indicando la salida del nodo (para que de
cada nodo salgan 4 arcos ya que hay 2 entradas) pero no su destino, ya que no importa a dnde vayan a
parar. Otra posibilidad que usamos en algunas ocasiones es no dibujar estas flechas ya que no aaden
ms informacin al grafo, sabemos que si no estn es porque no se pueden dar.
Por otro lado, cuando dos arcos tienen el mismo origen y el mismo destino slo se ha pintado una
flecha con las dos etiquetas. El resultado final se ve en la figura 6.43.
Aunque este grafo es correcto, puede observarse que como las acciones, las salidas, en el nodo CD y D
son las mismas, ir hacia la derecha, y no hay ms razn para diferenciar entre esos dos estados, los dos
se pueden fundir en uno solo (que denominamos D, por ejemplo), dibujando adecuadamente las
transiciones. Lo mismo ocurre con los nodos I y CI. El grafo resultante con slo 3 nodos se muestra en
la figura 6.44.
6.5.2 Del grafo de estados a las tablas transiciones y salidas
Hemos visto al explicar el grafo de estados en la seccin 6.2 cmo pasar de la tabla de transiciones al
grafo de estados y luego en la seccin 6.2.2 cmo incorporar en el grafo de estados la tabla de las
11
00
C
01
01
10
CD
11
10
01
CI
11
10 00
00
10
D
01
00
01
I
10
00
a)
b)
11
00
C
01
01
10
CD
11
10
01
CI
10
11
S
i
S
d
N
w
1
w
0
Fig. 6.42 Fases de creacin del grafo de estados del piloto automtico.
Circuitos lgicos secuenciales 37
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
salidas. Con esto comprendimos qu significa cada elemento del grafo (nodos, flechas y las etiquetas
en nodos y flechas) y su relacin con la tabla de transiciones y con la de salidas de un circuito
secuencial. Entendido esto, pasar del grafo a las tablas es trivial. Veamos dos ejemplos
Biestable D
El biestable D es el caso ms simple de circuito secuencial. El smbolo del circuito, con el nombre de la
entrada y salida y la leyenda del grafo se mostr en la figura 6.31 y el grafo en la figura 6.32. Lo
primero que debemos hacer para obtener la tabla de transiciones y de salidas es codificar con el nmero
mnimo de bits los estados del grafo. Si el grafo tiene m estados, hacen falta logaritmo en base 2 de m
(parte entera por arriba) bits para codificar los m estados. En nuestro caso, como hay dos estados, slo
hace falta un bit para codificarlos. Ahora hay que asignar un cdigo para cada estado. Cualquier
asignacin es correcta, pero segn sea esta asignacin cambiar el circuito resultante, que ser ms o
menos complejo. Hay algoritmos para elegir una buena asignacin, pero nosotros para simplificar no
los usaremos. Haremos una asignacin cualquiera, excepto en casos triviales como el que nos ocupa. Si
asignamos el cdigo 0 al estado E0 y el 1 al E1 la tabla de transiciones (que en general muestra el
estado siguiente, Q+, en funcin del estado actual y de la entrada) es:
Q d Q
+
0 0 0
0 1 1
11
00
C
01
01
10
CD
11
10
01
CI
11
10
00
00
00
10
D
01
11
10 10
00
01
I
10
00
01 01
11
S
i
S
d
N
w
1
w
0
Fig. 6.43 Grafo de estados del piloto automtico con 5 estados.
01
11
00
C
01
10
D
10
01
I
11 11
10
00 00
00 10 01
S
i
S
d
w
1
w
0
N
Fig. 6.44 Grafo de estados del piloto automtico con 3 estados.
38 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Es fcil ver que el estado siguiente, en este circuito tan simple, no es funcin del estado actual, sino que
es funcin solamente de la entrada, es ms, es directamente igual a la entrada. Por ello, en el caso de un
circuito formado solamente por un biestable D, el estado siguiente es directamente la entrada,
quedando la tabla de transiciones as:
La salida es funcin del estado. En este caso la funcin es la ms sencilla posible, la salida es igual al
estado:
Un ejemplo ms complejo
La figura 6.45 muestra un grafo con su leyenda, del que vamos a obtener las tablas de transiciones y de
salidas. Como tiene 3 estados hacen falta 2 bits para codificarlos. En la figura 6.46 se muestra en una
tabla el cdigo asignado a cada estado (elegido sin ningn criterio) y el grafo con los nodos
codificados.
La figura 6.47 muestra las tablas de transiciones y de salidas que resultan de extraer la informacin del
grafo.
1 0 0
1 1 1
d Q
+
0 0
1 1
Q q
0 0
1 1
Q d Q
+
10
10
10
01
01
01
11
11
11
00
00
00
E2
01
E1
11
00
E0
x
1
x
0
Ei
w
1
w
0
Fig. 6.45 Grafo de estados.
Circuitos lgicos secuenciales 39
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
6.5.3 De las tablas al esquema lgico
Este tercer y ltimo paso en la sntesis de circuitos combinacionales consiste en disponer los biestables
que requiere el circuito y dibujar el esquema lgico de los dos circuitos combinacionales que calculan
el estado siguiente y las salidas usando para cada uno de ellos alguna de las tcnicas que vimos en el
captulo 2:
En suma de minterms.
Con un decodificador y puertas Or.
Con una ROM.
La estructura del circuito secuencial de Moore es la de la figura 6.17. La funcionalidad del circuito
combinacional encargado de generar el estado siguiente, Q+, a partir del estado actual, Q, y de las
entradas, la especifica la tabla de transiciones y la funcionalidad del circuito que genera las salidas la
especifica la tabla de salida. Ambas tablas las acabamos de crear en el paso anterior, as que este tercer
q
1
q
0
Ei
E0 00
E1 01
E2 10
10
10
10
01
01
01
11
11
11
00
00
00
10
01
01
11
00
00
x
1
x
0
w
1
w
0
q
1
q
0
Fig. 6.46 Tabla de codificacin y grafo con los estados codificados.
0
0
1
1
0
1
0
1
0
0
1
x
0
1
1
x
q
0
q
1
w
0
w
1
Tabla de
transicin
Tabla de salida
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
0
0
0
1
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
0
x
0
1
0
1
1
x
x
x
x
0
q
0
x
1
q
1
q
1
+
0
1
0
0
1
0
1
x
1
0
1
0
0
x
x
x
q
0
+
Fig. 6.47 Tabla de transiciones y de salida del grafo de la figura 6.46.
40 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
paso consiste en sintetizar dos circuitos combinacionales y esto ya lo vimos en el captulo 2, por lo que
no requiere nuevas explicaciones. Veamos el resultado de los dos ejemplos de la seccin anterior.
Biestable D
De la tabla de transicin que hemos obtenido se ve que el estado siguiente es igual a la entrada del
circuito, que hemos denominado d. En general (ver figura 6.17) el estado siguiente se conecta con la
entrada D de los biestables que guardan el estado del circuito. En nuestro caso la entrada d del circuito
se conecta directamente con la entrada D del biestable. Segn la tabla de salidas que hemos obtenido en
el apartado anterior, la salida q del circuito es igual al estado actual, que es la salida Q del biestable de
estado. El circuito del biestable es el que se muestra en la figura 6.48 junto con el smbolo del circuito,
con el nombre de la entrada y salida, y el grafo de estados.
El resultado no poda ser otro ya que cuando hemos definido su funcionalidad para sintetizarlo hemos
usado la del biestable D. Aunque ahora es un buen momento para comentar que si en el paso anterior
hubiramos codificado los dos estados del grafo de la figura 6.32 con un 1 para el estado E0 y un 0 para
el E1, en este ltimo paso el circuito resultante hubiera tenido una puerta Not entre la entrada d del
circuito y la D del biestable y otra Not entre la salida Q del biestable y la salida q del circuito.
Un ejemplo ms complejo
Vamos a dibujar un esquema lgico que implemente el grafo de la figura 6.45 a partir de las tablas de
transiciones y de salidas obtenidas en la seccin anterior en la figura 6.47. Vamos a sintetizar con una
memoria ROM el circuito combinacional del estado siguiente y con un decodificador y puertas Or el de
las salidas, que junto con los dos biestables de estado forman el circuito secuencial que nos ocupa. La
figura 6.49 muestra el resultado.
En general comenzamos disponiendo los k (en este ejemplo k=2) biestables D que forman el estado del
computador. Es muy importante etiquetar cada una de las salidas Q de los biestables con su nombre,
que habremos usado al crear las tablas en el paso anterior y que normalmente denominamos q
k-1
, ...,
q
1
, q
0
y cada una de sus entradas D que codifican los bits del estado siguiente q
k-1
+
, ..., q
1
+
, q
0
+
.
Supongamos que el circuito secuencial tiene n entradas y m salidas (en este ejemplo n=m=2)
denominadas x
n-1
, ..., x
1
, x
0
y w
m-1
, ..., w
1
, w
0
. Con los biestables dispuestos y las entradas y salidas
del circuito dibujadas, ya slo tenemos que dibujar:
el circuito del estado siguiente usando la tabla de transiciones que define q
k-1
+
, ..., q
1
+
, q
0
+
en
funcin del estado q
k-1
, ..., q
1
, q
0
y las entradas x
n-1
, ..., x
1
, x
0
y
FF
d
q
1
0
0
0
1
1
0
1
D Q q d
Fig. 6.48 Smbolo del circuito secuencial ms sencillo, un biestable D, grafo de estados
y esquema lgico de su implementacin.
Circuitos lgicos secuenciales 41
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
el circuito de las salidas usando la tabla de salidas que expresa w
m-1
, ..., w
1
, w
0
en funcin del
estado q
k-1
, ..., q
1
, q
0
.
Con una ROM y un multiplexor de buses. Es posible sintetizar a la vez el circuito del estado
siguiente junto con el de las salidas usando una ROM y un multiplexor de buses. El ejemplo anterior se
muestra en la figura 6.50. En general, si tenemos un circuito secuencial con n bits de entrada, m de
salida y k de estado, la ROM tiene 2
k
palabras de kx2
n
+ m bits por palabra y el multiplexor de buses
tiene n bits de seleccin para elegir entre 2
n
buses de k bits cada bus. Los bits de direccin de la ROM
son los bits de estado del circuito y los bits de seleccin del multiplexor son los bits de entrada del
circuito. Hay una palabra de la ROM para cada estado del circuito y cada una tiene la salida del circuito
para ese estado y adems el estado siguiente para cada uno de los posibles arcos que salen de ese estado
(para cada combinacin de valores de las entradas). Es un diseo sencillo, pero es fcil olvidarse
alguna de las etiquetas de la ROM o del multiplexor o cometer un error al especificar la tabla que
representa el contenido de la ROM, lo que hara que el circuito no quedara correctamente especificado.
6.6 Anlisis temporal
El anlisis temporal de un circuito secuencial consiste en obtener el tiempo de ciclo mnimo para que el
circuito realice correctamente la funcionalidad descrita por el grafo que se ha obtenido en el anlisis
lgico (que vimos en la seccin 6.4). Vamos a hacer el anlisis temporal del mismo circuito que usamos
0
0
1
0
0
0
0
0
0
1
0
1
1
0
0
0
0
1
0
0
1
0
1
0
1
0
1
0
0
0
0
0
0
1
2
4
5
8
9
12
3
6
7
10
11
13
14
15
2
3
0
1
D Q
q
0
q
1
0
1
2
3
Dec
0
1 D Q
q
0
+
q
1
+
x
0
x
1
w
0
w
1
Fig. 6.49 Esquema lgico resultante de sintetizar el grafo de la figura 6.45 donde se han
implementado las tablas de transiciones y de salidas de la figura 6.47 con una ROM la
primera y con un decodificador y puertas Or la segunda.
42 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
para ejemplificar el anlisis lgico En la figura 6.51 reproducimos el esquema lgico del circuito al que
le hemos aadido junto a cada dispositivo su tiempo de propagacin.
Este anlisis temporal se hace a partir del esquema lgico del circuito, del tiempo de propagacin de
todos los dispositivos combinacionales, del tiempo de propagacin de los biestables y por ltimo de las
especificaciones temporales de las entradas y salidas del circuito: tiempo desde que se produce el
flanco ascendente de reloj que marca el inicio del ciclo hasta que las seales a la entrada del circuito
estn estables (110 u.t. en el ejemplo) y tiempo que se requiere que las seales de salida estn estables
a su valor correcto antes de que llegue el flanco ascendente de reloj que marca el final del ciclo (20 u.t.
en el ejemplo).
Camino crtico de un circuito secuencial y tiempo de ciclo
En un circuito secuencial el tiempo de ciclo (periodo) de la seal de reloj tiene que ser suficientemente
grande como para que todas las seales que llegan a las entradas D de los biestables estn estables en su
valor correcto cuando llegue el flanco ascendente de reloj que indica el final del ciclo y el inicio del
siguiente. Si esto no ocurre, los biestables almacenarn valores incorrectos y el sistema no funcionar
como debe. Para ello, el periodo de la seal de reloj, el tiempo entre dos flancos ascendentes de reloj,
debe ser mayor que el tiempo del camino crtico del circuito. En un principio definimos camino crtico
de un circuito secuencial al camino con mayor tiempo de propagacin de entre todos los posibles
2
q
0
q
1
0 0
1
1
0
0 1
1
0 1
1
x
0
0 1
x
w
0
0 0
0 1
w
1
1 1
x x
ROM Q
+
y Salidas
R
E
G
Entradas
(x
1
, x
0
)
2 2
2
Q=(q
1
, q
0
)
Salidas
(w
1
, w
0
)
2
Q
+
=(q
+
1
, q
+
0
)
q
1

q
0
q
+
1
q
+
0
q
+
1
q
+
0
q
+
1
q
+
0
q
+
1
q
+
0
w
1
w
0
2 2
MUX
0 1 2 3 2
1
1
0
0
0
1
x x
0 1
0 1
1 0
x x
0
0
0
0
0
0
x x
q
+
0
q
+
1
0 0 0 1 1 0 1 1
x
0
x
1
x
0
x
1
x
0
x
1
x
0
x
1
contenido
de la ROM
+
-
Fig. 6.50 Esquema lgico resultante de sintetizar el grafo de la figura 6.45 donde se han
implementado las tablas de transiciones y de salidas de la figura 6.47 con una ROM y un
multiplexor de buses.
Circuitos lgicos secuenciales 43
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
caminos que van desde la salida Q de un biestable hasta la entrada D de otro biestable, atravesando
circuitos combinacionales (no atravesando ningn biestable). En la figura 6.52 se marca un camino que
va de un biestable de estado a otro biestable (camino b-b) sobre la estructura a bloques de un circuito
secuencial de Moore, aunque como es un esquema a bloques no se detalla el biestable donde comienza
el camino, ni las puertas por las que pasa dentro del circuito combinacional que calcula el estado
siguiente ni el biestable donde termina el camino.
Pero el camino crtico del circuito no tiene porqu ser un camino como el marcado en la figura 6.52.
Hay otros tipos de camino. Un sistema sncrono, como es la CPU (central processing unit) de un
computador, est formado por varios circuitos secuenciales conectados entre s, operando todos con la
misma seal de reloj. En este entorno, y siguiendo el esquema a bloques de la figura 6.53, cada entrada
del circuito secuencial que estamos analizando (que llamamos, por ejemplo, circuito B) est conectada
x !x !q1 !q0 q1 q0
D Q
100
FF0
D Q
150
FF1
40
30
20
20
20
30
20
x Clk
30
w
20
30
q1+
q0+
q1
q0
Fig. 6.51 Esquema lgico del circuito secuencial a analizar. Al lado de los dispositivos
se indica su tiempo de propagacin.
CLC
H
R
E
G
Q
+
Q
k k m
X
W
CLC
G
k
n
Camino b-b
Fig. 6.52 Esquema lgico a bloques de un circuito secuencial de Moore sobre el que se
ha marcado un camino que va de la salida de un biestable de estado a la entrada de otro
(Camino b-b).
44 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
a la salida de otro circuito secuencial que lo alimenta (al que llamamos A). A su vez, cada salida del
circuito B, esta conectada a otro circuito al que alimenta (que llamamos C).
El valor de la seal a la entrada del circuito B es la seal de salida del circuito A y por ello, en general,
desde que se produce el flanco ascendente de reloj ha de pasar un cierto tiempo hasta que la entrada del
circuito B, o la salida del A, se estabilice. Este es el tiempo de propagacin de los biestables de estado
del circuito A ms el tiempo de propagacin del circuito de salida de A. Por ello, el camino crtico del
sistema puede ser uno que parte de un biestable de estado del circuito A y termina en un biestable del
circuito B (Un camino de este tipo se encuentra marcado y etiquetado con el nombre Camino e-b en
la figura 6.54). Ocurre que normalmente no nos dan el tiempo de propagacin de los biestables ni del
circuito de salida del secuencial A, sino que nos dan la suma de ambos: para cada entrada del circuito
nos dan el tiempo desde que se produce el flanco ascendente de reloj hasta que la entrada est estable a
su valor correcto.
Por otro lado, el camino crtico del circuito podra ir desde la salida de uno de los biestables de estado
del circuito B a la entrada de uno de los del circuito C. (Un camino de este tipo se encuentra marcado y
etiquetado con el nombre Camino b-s en la figura 6.54). En este caso, desde que la salida del circuito
B se estabiliza la seal debe atravesar todava el combinacional del estado siguiente del circuito C para
llegar al biestable de estado de este circuito antes de que se produzca el flanco de final de ciclo de la
seal de reloj. Al especificar el circuito B, normalmente, nos indicarn el tiempo en que cada salida
debe estar estable antes de que llegue el flanco ascendente de reloj (que es el tiempo de propagacin del
combinacional del estado siguiente del circuito C), para que podamos calcular el tiempo del camino
que va de la salida de un biestable del circuito a analizar a una salida del circuito (y que realmente llega
a la entrada de un biestable del circuito alimentado por el que estamos analizando.
Incorporando las entradas y salidas en la definicin de camino crtico esta queda as. El camino crtico
de un circuito secuencial es el camino con mayor tiempo de propagacin de entre todos los posibles
caminos que van (detallamos el caso de Moore):
de biestable a biestable (camino del tipo b-b), desde la salida Q de un biestable del circuito hasta
la entrada D de otro biestable del circuito, atravesando dispositivos combinacionales (no
atravesando ningn biestable),
CLC
H
R
E
G
Q
+
Q
k k m
X
W
CLC
G
k
n
CLC
H
R
E
G
Q
R
E
G
Q
+
CLC
G
Circuito B Circuito A Circuito C
Fig. 6.53 Esquema lgico a bloques de un circuito secuencial de Moore, circuito B, que
es alimentado por el circuito A y que alimenta al circuito C. El circuito B es el que
estamos analizando y el A y C se muestran parcialmente.
Circuitos lgicos secuenciales 45
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
de entrada a biestable (camino del tipo e-b), desde una de las entradas del circuito a la entrada D
de un biestable del circuito, atravesando dispositivos combinacionales (no atravesando ningn
biestable),
de biestable a salida (camino tipo b-s), desde la salida Q de un biestable del circuito hasta una
salida del circuito, atravesando dispositivos combinacionales (no atravesando ningn biestable).
Para calcular el tiempo de propagacin de un camino hay que tener en cuenta lo siguiente.
De biestable a biestable. En el tiempo del camino que sale de un biestable y llega a otro biestable
hay que contabilizar el tiempo de propagacin del biestable donde empieza el camino y acumular
sobre este valor la suma de los tiempos de propagacin de entrada-salida de cada uno de los
dispositivos combinacionales por donde pasa el camino hasta llegar a la entrada de uno de los
biestables de estado del circuito.
De entrada a biestable. En el tiempo de un camino que comienza en una entrada del circuito y
llega a uno de sus biestables de estado hay que contabilizar el tiempo que tarda la entrada en
estabilizarse desde que se produce el flanco ascendente de reloj (este dato nos lo darn junto con el
esquema del circuito) y acumular sobre este valor la suma de los tiempos de propagacin de
entrada-salida de cada uno de los dispositivos combinacionales por los que pasa el camino hasta
llegar a la entrada de uno de los biestables de estado del circuito.
De biestable a salida. En el tiempo de un camino que sale de un biestable y termina en una salida
del circuito, despus de acumular sobre el tiempo de propagacin del biestable donde empieza el
camino la suma de los tiempos de propagacin de entrada-salida de cada uno de los dispositivos
combinacionales por los que pasa el camino hasta llegar a la salida hay que sumar el tiempo que
tiene que estar estable la salida a su valor correcto antes de que llegue el flanco ascendente de reloj.
Encontrando el camino crtico del ejemplo
En el ejemplo que nos ocupa, vamos a encontrar el camino ms largo de cada uno de los tipos de
caminos. Los tiempos de propagacin de los dispositivos que forman el circuito se indican junto al
dispositivo en el esquema lgico de la figura 6.51. Para que d ms juego el ejemplo hemos puesto
CLC
H
R
E
G
Q
+
Q
k k m
X
W
CLC
G
k
n
CLC
H
R
E
G
Q
R
E
G
Q
+
CLC
G
Circuito B Circuito A Circuito C
Camino b-b
Camino b-s
Camino e-b
Fig. 6.54 Esquema lgico a bloques de un circuito secuencial de Moore, circuito B, que
es alimentado por el circuito A y que alimenta al circuito C. El circuito B es el que
estamos analizando y el A y C se muestran parcialmente. Se muestran los tres tipos de
camino en este circuito: camino de biestable a biestable (b-b), camino de entrada a
biestable (e-b) y camino de biestable a salida (b-s).
46 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
distintos tiempos de propagacin a dispositivos que normalmente tienen el mismo tiempo. Por ejemplo
hay una puerta And-2 de 20 u.t. cuando el resto son de 30 u.t., hay dos biestables uno de 100 u.t. y otro
de 150. Las especificaciones temporales de las entradas y salidas, que no se indican el esquema, son las
siguientes. El tiempo desde que se produce el flanco ascendente de reloj hasta que las seales a la
entrada del circuito estn estables es de 110 u.t. y tiempo que se requiere que las seales de salida estn
estables a su valor correcto antes de que llegue el flanco ascendente de reloj es de 20 u.t. Con estos
datos ya podemos encontrar el camino crtico.
Comenzamos por el camino ms largo de tipo e-b, de la entrada del circuito a un biestable de estado.
Este camino se muestra en la figura 6.55. El tiempo de este camino es de 180 u.t. y se obtiene de sumar
los siguientes tiempos:
110 u.t. del tiempo en que tarda en estabilizarse la entrada (esto nos lo dan en el enunciado junto al
esquema lgico),
20 u.t. de la puesta Not,
20 u.t. de la And-2 y
30 de la Or-2.
El camino ms largo en tiempo del tipo b-b se ha marcado sobre el esquema de la figura 6.56. El
tiempo de este camino es de 230 u.t. como se detalla en la figura. Por ltimo, el camino ms largo del
tipo b-s es de 240 u.t. y se muestra en la figura 6.57. Este es el camino crtico del circuito, porque es el
de mayor tiempo de todos los caminos.
x !x !q1 !q0 q1 q0
D Q
100
FF0
D Q
150
FF1
40
30
20
20
20
30
20
x Clk
30
w
20
30
q1+
q0+
q1
q0
Fig. 6.55 Esquema lgico del circuito secuencial a analizar sobre el que se ha dibujado
el camino ms largo de tipo e-b.
180
150 130
110
Circuitos lgicos secuenciales 47
Copyright 2010, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
x !x !q1 !q0 q1 q0
D Q
100
FF0
D Q
150
FF1
40
30
20
20
20
30
20
x Clk
30
w
20
30
q1+
q0+
q1
q0
Fig. 6.56 Esquema lgico del circuito secuencial a analizar sobre el que se ha dibujado
el camino ms largo de tipo b-b.
150
170
200
230
x !x !q1 !q0 q1 q0
D Q
100
FF0
D Q
150
FF1
40
30
20
20
20
30
20
x Clk
30
w
20
30
q1+
q0+
q1
q0
Fig. 6.57 Esquema lgico del circuito secuencial a analizar sobre el que se ha dibujado
el camino ms largo de tipo b-s.
150
170
200
220
240
48 Introduccin a los Computadores
Copyright 2008, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Tiempo de ciclo. Por lo que respecta al circuito que hemos analizado, el tiempo de ciclo tiene que ser
superior a 240 u.t. para que el funcionamiento sea correcto. Claro est que si este circuito est inmerso
en otro ms grande, el tiempo de ciclo del circuito grande puede que tenga que ser mayor que el
calculado, si el camino crtico del circuito grande no pasa por el circuito que hemos analizado.
Por ltimo comentar que, en algunos ejercicios, cuando se nos pide calcular el tiempo de ciclo mnimo
para que un circuito secuencial determinado funcione correctamente, se nos dice que cada entrada al
circuito llega directamente de un biestable de un hipottico sistema secuencial que alimenta al nuestro,
sin atravesar ningn circuito combinacional. En estos casos, y si no se indica lo contrario, suponemos
que este biestable que alimenta nuestra entrada tiene un tiempo de propagacin igual a los biestables de
nuestro circuito. Por ello, en el tiempo del camino desde una entrada del circuito hasta la entrada D de
un biestable, debe sumarse el tiempo de propagacin del hipottico biestable que alimenta la entrada de
nuestro circuito. Adems, en algunos ejercicios tambin se indica que cada salida de nuestro circuito se
conecta directamente (sin pasar por ningn circuito combinacional) a la entrada D de un biestable. Por
ello, en el clculo del tiempo de un camino que va de la salida Q de un biestable a una salida de nuestro
circuito, no hace falta sumar el tiempo de ningn circuito combinacional externo.

Vous aimerez peut-être aussi