Vous êtes sur la page 1sur 119

UNIVERSIDAD NACIONAL DE PIURA

FACULTAD DE INGENIERIA INDUSTRIAL

INFORME FINAL
TRABAJO DE INVESTIGACION

MODULO DE APOYO PARA EL CURSO ARQUITECTURA DE


COMPUTADORAS

EJECUTORES

ING JORGE L. SANDOVAL RIVERA


ING PEDRO A. CRIOLLO GONZALES

PIURA, febrero del 2009

INDICE
pg
Resumen ............................................................................................................. i
Introduccin ........................................................................................................ ii
Esquema del contenido
1. REPRESENTACION DE DATOS

1.1. Sistemas numricos ................................................................................ 1


1.1.1. Decimal ........................................................................................ 2
1.1.2. Binario.......................................................................................... 2
1.1.3. Hexadecimal ................................................................................ 3
1.2. Representacin de enteros ...................................................................... 4
1.2.1. Sin signo ...................................................................................... 4
1.2.2. Con signo ..................................................................................... 4
1.3. Representacin de reales ....................................................................... 6
1.3.1. Con punto fijo ............................................................................... 6
1.3.2. Con punto flotante ........................................................................ 7
1.4. Otros cdigos.......................................................................................... 9
Ejercicios resueltos ...................................................................................... 11
Ejercicios propuestos ................................................................................... 13
2. CIRCUITOS DE LOGICA DIGITAL ............................................................. 14
2.1. Compuertas lgicas ............................................................................... 14
2.2. lgebra booleana .................................................................................. 14
2.3. Minterminos y Maxterminos .................................................................. 16
2.4. Simplificacin por lgebra booleana ..................................................... 17
2.5. Simplificacin por mapa de Karnaugh ................................................... 20
2.6. Circuitos lgicos combinacionales ........................................................ 23
2.6.1. Semisumador ............................................................................. 24
2.6.2. Sumador completo ..................................................................... 24
2.6.3. Sumador restador ...................................................................... 25
2.7. Flip-Flops .............................................................................................. 27
2.7.1. Flip-Flop bsico con compuertas NAND y NOR ......................... 27
2.7.2. Flip-Flop SR sincronizado por reloj ............................................ 29
2.7.3. Flip-Flop D sincronizado por reloj ............................................... 29
2.7.4. Flip-Flop JK sincronizado por reloj ............................................. 29
2.7.5. Flip-Flop T sincronizado por reloj ............................................... 29
2.8. Circuitos lgicos secuenciales .............................................................. 30

2.8.1. Ecuaciones de entrada de los Flip-flops ..................................... 30


2.9. Solucin de ejercicios con Boole........................................................... 34
2.9.1. Circuitos combinacionales.......................................................... 34
2.9.2. circuitos secuenciales ................................................................ 37
2.10. Simulacin de circuitos con Electronics WorkBench .......................... 40
Ejercicios resueltos ...................................................................................... 45
Ejercicios propuestos ................................................................................... 50
3. COMPONENTES DIGITALES .................................................................... 51
3.1. Registros ............................................................................................... 51
3.1.1. Registro simple .......................................................................... 51
3.1.2. Registro de carga paralela ......................................................... 52
3.1.3. Registro de corrimiento .............................................................. 53
3.1.4. Registro de corrimiento con carga paralela ................................ 53
3.2. Contadores ............................................................................................ 54
3.2.1. Contadores asncronos o de propagacin .................................. 54
3.2.2. Contadores sincrnicos .............................................................. 55
3.3. Decodificadores - Codificadores ............................................................ 56
3.3.1. Decodificadores ......................................................................... 56
3.3.2. Codificadores ............................................................................. 57
3.4. Multiplexores y Demultiplexores ............................................................ 59
3.4.1. Multiplexores .............................................................................. 59
3.4.2. Demultiplexores ......................................................................... 61
Ejercicios resueltos ..................................................................................... 62
Ejercicios propuestos .................................................................................. 69
4. ORGANIZACIN Y DISEO BASICO DE COMPUTADORAS ................... 70
4.1. Qu es una computadora? ............................................................... 70
4.1.1. Organizacin bsica................................................................... 70
4.1.2. Funcionamiento ......................................................................... 70
4.2. Los registros ....................................................................................... 71
4.2.1. Los registros de la computadora bsica ..................................... 71
4.3. El BUS comn .................................................................................... 75
4.4. Transferencia entre el BUS, los registros y la memoria....................... 76
4.5. El cdigo de instruccin ...................................................................... 78
4.5.1. Instrucciones que hacen referencia a memoria .......................... 78
4.5.2. Instrucciones que hacen referencia a registro ............................ 80
4.5.3. Instrucciones de entrada y salida ............................................... 81
4.6. La unidad de control ........................................................................... 82

4.7. Ciclo de instruccin ............................................................................. 83


4.7.1. Bsqueda ................................................................................... 83
4.7.2. Decodificacin............................................................................ 84
4.7.3. Tipo de instruccin ..................................................................... 85
4.7.4. Ejecutar instruccin .................................................................... 85
4.7.5. Interrupciones ............................................................................ 90
4.8. La ALU ............................................................................................... 93
4.9. Diseo lgico de la computadora bsica ............................................. 95
4.10. Diseo fsico de la computadora bsica .............................................. 98
4.10.1. Los flip-flops de apoyo ..............................................................100
4.10.2. El acumulador ...........................................................................103
Ejercicios resueltos ....................................................................................105
Ejercicios propuestos .................................................................................109
Bibliografa .......................................................................................................110

RESUMEN
Es comn en los docentes universitarios, al preparar sus clases, tomar 2 o ms libros
texto y hacer un resumen con cada uno de ellos que luego usar para impartir su
clase. Justamente es lo que pretende realizar el presente trabajo, tomando como base
el libro Arquitectura de Computadoras de MORRIS MANO M. y otros textos como por
ejemplo Sistemas Digitales, Principios y Aplicaciones de TOCCI, Ronald y Diseo
Digital Principios y Practicas de WAKERLY, John F. seleccionar lo mejor de cada uno
de ellos y hacer un resumen, explicando con mayor detalle las reas que lo requieran
o se consideren necesarias, resolviendo algunos ejercicios y planteando otros.

El mdulo se divide en cuatro capitulos:


El primer capitulo Representacin de datos trata de la forma como se almacenan y
representa los datos numrico (reales, enteros: positivos y negativos) en un sistema
digital. Adems se estudian los 3 sistemas de numeracin ms importantes: el binario,
el decimal y el hexadecimal
El segundo capitulo Circuitos de lgica digital estudia los circuitos diseados a partir
de compuertas lgicas y su representacin por medio de expresiones lgicas, estos
son: Circuitos combinatorios y circuitos secuenciales. Haciendo uso del lgebra
booleana y de mapas de Karnaugh se realiza la simplificacin de estos circuitos de
forma manual, pero tambin se explica como usar herramientas de software como el
WorkBench para el diseo y simulacin de circuitos y Boole para el anlisis y
simplificacin de circuitos combinatorios y secuenciales
El tercer capitulo Componentes digitales estudia el diseo de los componentes que
se pueden construir a partir de los circuitos combinatorios y secuenciales estudiados
en el capitulo anterior tales como: sumadores, contadores, registros, multiplexores,
codificadores, etc.
El cuarto capitulo Organizacin y diseo bsico de computadoras describe la
estructura de la computadora bsica como por ejemplo el tamao de la memoria,
cantidad y longitud de los registros, instrucciones que sern reconocidas, etc. Tambin
se estudia el diseo de circuitos que permitan generar las seales apropiadas entre los
componentes digitales mencionados para que stos realicen las tareas para lo que
fueron diseados

INTRODUCCION
En la ciencia, la tecnologa, la administracin y, de hecho, muchos otros campos de la
actividad humana, constantemente se manejan cantidades. Estas se miden, registran,
manipulan aritmticamente, observan o se utilizan en muchos sistemas fsicos. Existen
bsicamente dos maneras de representar el valor numrico de las cantidades: la
analgica y la digital.
Las cantidades analgicas tienen la caracterstica de poder variar gradualmente sobre
un intervalo continuo de valores como en el caso de un velocmetro. La posicin
angular de la aguja representa el valor de la velocidad del automvil y sigue cualquier
cambio que ocurra conforme el automvil acelere o frene. Mientras que las cantidades
digitales varan en etapas discretas (paso a paso), como por ejemplo un reloj digital, el
cual no cambia continuamente sino por etapas (uno por minuto o por segundo) a pesar
que el tiempo transcurre en forma contina.

Para manipular la informacin representada en forma digital se utilizan los sistemas


digitales. Un sistema digital es una combinacin de dispositivos diseado para
manipular informacin representada en forma digital, es decir, que slo puede tomar
valores discretos. Esta informacin digital por lo general se representa en forma
binaria y sta, a su vez, por medio de cualquier dispositivo que solamente tenga dos
estados de operacin como por ejemplo un interruptor: abierto y cerrado.

Esta caracterstica de los circuitos digitales (lgicos) permite utilizar el lgebra


booleana como herramienta para el anlisis y diseo de sistemas digitales. El lgebra
booleana tiene tres operaciones bsicas AND, OR y NOT llamadas tambin
operaciones lgicas. Mediante diodos, transistores y resistencias, conectados entre s,
se puede construir compuertas lgicas cuyas salidas son el resultado de una
operacin lgica bsica.

Partiendo de las compuertas lgicas AND, OR y NOT, se pueden disear circuitos


cuyas salidas depende slo de sus entradas (circuitos combinatorios) y circuitos cuyas
salidas dependen tanto de las entradas como del estado (conjunto de entradas
pasadas) que se encuentre el circuito (circuitos secuenciales).

Ejemplo de circuitos combinatorios tenemos los sumadores completos de un bit, los


cuales agrupados en 8, 16 o 32 elementos se obtienen sumadores de 8, 16 o 32 bits.

De igual manera se puede disear restadores, multiplicadores, divisores, etc. Todos


estos circuitos unidos apropiadamente permitirn disear, por ejemplo, una Unidad
Aritmtica Lgica (ALU), que es una de las partes bsicas de un procesador. As
tambin el diseo de codificadores, decodificadores y multiplexores que permiten
conmutar las seales digitales entre los diferentes componentes de una computadora
con el procesador.

Por otro lado, uniendo adecuadamente compuertas NAND o NOR se puede formar un
FLIP-FLOP que es la unidad bsica de almacenamiento. Uniendo Flip-Flops y circuitos
combinatorios se puede disear registros, contadores, unidad de memoria y otros
componentes de apoyo del procesador.

Para finalizar, todos los componentes mencionados unidos mediante circuitos lgicos,
los cuales les proveeran de las selales de control apropiadas para que stos
tranfieran y procesen la informacin, ya sea un codigo de instruccin o un dato.

I REPRESENTACION DE DATOS
1.1. Sistemas numricos
Si bien es cierto que una computadora puede realizar una serie de tareas
complejas, la verdad es que lo nico que comprende es 0 y 1. Estos 0 y 1
agrupados adecuadamente (bajo un formato) pueden representar diferentes tipos
de informacin binaria para el procesador tales como datos, cdigo ejecutable,
caracteres, seales de control, etc. Como resulta obvio pensar, el sistema de
numeracin que puede traducir directamente la computadora es el BINARIO, pero
ste resulta muy difcil de comprender y manipular por los seres humanos ya que
la mayora estamos acostumbrados a usar el sistema de numeracin DECIMAL.
Otro de los inconvenientes de trabajar con el sistema binario es la documentacin,
ya que para expresar cualquier nmero en binario se necesitar mucho ms
espacio que si se utilizara, por ejemplo, el sistema decimal o, mejor aun, el sistema
HEXADECIMAL.
Estos tres tipos de sistemas de numeracin pertenecen a los sistemas numricos de
base o raz r (r=2 para binario, r=10 para decimal y r=16 para hexadecimal),
tambin se les conoce como sistemas posicionales debido a que cada digito tiene
un valor basado en su posicin relativo al digito menos significativo (el que se
encuentra ms a la derecha).
Para determinar el valor que representa un nmero de base r en el sistema decimal
se puede utilizar la siguiente formula:

N=

e -1

d *r

i= - f

Donde:

r es la base o raz del nmero


di es un dgito de la posicin i del nmero
f es la cantidad de dgitos de la parte fraccionaria
e es la cantidad de dgitos de la parte entera

En trminos generales, cualquier nmero es simplemente la suma de los productos


de cada digito y su valor posicional.
Ejemplo: Cul es el valor de 31.2041(5 en el sistema decimal?
Como se aprecia r=5, f=4 y e=2. El nmero sera: d1 d0 . d-1 d-2 d-3 d-4
y el valor en decimal:
N = 3*51 + 1*50 + 2*5-1 + 0*5-2 + 4*5-3 + 1*5-4
N = 3*5 + 1*1 + 2/5 + 0/25 + 4/125 + 1/625
N = 15 + 1 + 0.4 + 0 + 0.032 + 0,0016
N = 16.4336
Ahora, para convertir un numero del sistema decimal al sistema de base r, primero
se toma la parte entera y se divide entre la raz r, el residuo de esta divisin se
convertir en el digito menos significativo de la parte entera. Luego se divide el
cociente resultado de la divisin anterior entre la raz r, el residuo ser el siguiente
digito, se vuelve a dividir el ltimo cociente entre la raz r y as sucesivamente se
repite esta operacin hasta que el cociente sea 0. El nmero se formar tomando el
1

ltimo residuo como el digito ms significativo y el primer residuo obtenido como


el digito menos significativo.
Para convertir la parte fraccionaria, se coge slo la parte fraccionaria (tomando
cero como parte entera) y se multiplica por la raz r. La parte entera del resultado
de la multiplicacin ser el primer digito de la nueva parte fraccionaria. Luego se
elimina la parte entera (se hace 0) y se repite la operacin anterior tantas veces
como dgitos se desea obtener. Si en algn momento el resultado de la
multiplicacin es 1 significar que se ha obtenido el valor exacto en el sistema de
base r, en caso contrario, todos los dgitos obtenidos hasta ese instante slo son
una aproximacin al valor real.
Ejemplo: Convertir 82.573 al sistema de base 7
Tomamos la parte entera 82 y la dividimos entre la raz r=7
82/7
cociente 11, residuo 5 (digito menos significativo)
Dividimos el ultimo cociente entre la raz
11/7
cociente 1, residuo 4
1/7
cociente 0, residuo 1 (digito ms significativo)
Por lo tanto la parte entera ser: 145
Ahora tomamos la parte fraccionaria 0.573 y la multiplicamos por la raz
0.573*7 = 4.011
4 ser el 1er digito, luego eliminamos la parte entera.
0.011*7 = 0.077
0 ser el 2do digito.
0.077*7 = 0.539
0 ser el 3er digito.
0.539*7 = 3.773
3 ser el 4to digito, eliminar la parte entera.
0.773*7 = 5.411
5 ser el 5to digito y as sucesivamente
Una aproximacin a 82.573 es 145.40035(7
1.1.1. Decimal
La base 10 es importante debido a que se usa en la vida diaria. Este sistema
se compone de 10 numerales o smbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9; al
utilizar estos smbolos como dgitos de un numero podemos expresar
cualquier cantidad. El sistema decimal evolucion en forma natural a partir
del hecho de que el ser humano tiene 10 dedos. Incluso, la palabra digito
significa dedo en latn.
En el sistema digital se comienza a contar con el 0 en la posicin de las
unidades y se toma cada smbolo (digito) en progresin hasta llegar al 9,
luego se incrementa en 1 la segunda posicin (decenas) y volvemos a
empezar con 0 en las unidades. Este proceso contina hasta llegar a 99 y se
suma 1 en la tercera posicin (centenas) y se empieza con 0 en las 2
posiciones anteriores. Se repite este proceso mientras se desee.
1.1.2. Binario
En el sistema binario slo hay 2 smbolos o valores de dgitos: 0 y 1. Sin
embargo, con un conjunto de estos smbolos se puede representar cualquier
cantidad denotada en cualquier sistema de numeracin.
Al trabajar con nmeros binarios, generalmente se est restringido a
utilizar una cantidad especfica de dgitos (bits). Esta restriccin se basa en
los circuitos utilizados para representar estos nmeros binarios.

Al tener, este sistema slo los dgitos 0 y 1, cualquier nmero que se desee
representar se debe de hacer con una combinacin de stos.
El conteo en binario inicia con 0, al sumarle 1 (0+1) nos dar 1. Si luego le
sumamos 1 (1 + 1) nos dar 0 (porque no existe el digito 2) ms 1 de
acarreo es decir 10 en total, que es la representacin de 2. Nuevamente
sumamos 1 (10 + 1) resultar 11 (representacin de 3) y al sumarle 1
(11+1) nos dar 100 (4 en binario) y as sucesivamente.
Numeracin del 0 al 15 en decimal, binario y binario con 4 bits
Dec
0
1
2
3
4
5
6
7

Bin
0
1
10
11
100
101
110
111

Bin 4 bits
0000
0001
0010
0011
0100
0101
0110
0111

Dec
8
9
10
11
12
13
14
15

Bin
1000
1001
1010
1011
1100
1101
1110
1111

Bin 4 bits
1000
1001
1010
1011
1100
1101
1110
1111

Como se aprecia, el conteo empieza con 0 en las unidades luego se


incrementa en 1 y despus en 1 ms, pero como no existe el digito 2 en
binario, para representar ste, se suma en 1 el siguiente digito obteniendo 2
en binario (10). Se incrementa en uno las unidades y se repite esto hasta
que todos los dgitos son 1s.
Las cantidades binarias pueden representarse por medio de cualquier
dispositivo que solamente tenga dos estados de operacin o posibles
condiciones. Por ejemplo, un interruptor slo tiene dos estados: abierto o
cerrado. Arbitrariamente podemos hacer que un interruptor abierto
represente el 0 binario y que uno cerrado represente el 1 binario. Una hoja
con perforaciones sera otro ejemplo, donde una perforacin ser un 1
binario y la ausencia de ella es un 0 binario. As, podemos seguir
mencionando otros ejemplos como un foco elctrico (encendido-apagado),
una fotocelda (iluminada u oscura), el transistor (cortado o saturado), una
cinta magntica (magnetizada o desmagnetizada), etc.
En los sistemas electrnicos digitales, la representacin binaria se hace por
medio de voltajes (o corrientes) que estn presentes en las entradas o
salidas de los diversos circuitos. Por lo general, el 0 y el 1 binarios se
representan con dos niveles de voltaje nominal, 0V para representar el 0
binario y +5V para el 1 binario, aunque para ser ms exactos esta
representacin se hace por medio de intervalos de voltaje: el intervalo entre
0 y 0.8V representa un 0 y cualquiera entre 2 y 5V representa un 1

1.1.3. Hexadecimal
Este sistema de numeracin est conformado por los 10 dgitos del sistema
decimal (0-9) y 6 dgitos ms, como por ejemplo el DIGITO DIEZ (10) o
el DIGITO TRECE (13), pero para evitar confusiones cuando se
3

presenten los dgitos 1 y 0 o 3 juntos, se ha convenido representarlos por


las letra A y D respectivamente. Entonces, A=10, B=11, C=12, D=13,
E=14 y F=15. Este sistema proporciona representaciones breves que son
convenientes para nmeros con mltiples bits en un sistema digital.
Ejemplo: La representacin del entero 23830 en binario de 16 bits es
0101110100010110, es decir que se necesitan 16 dgitos,
mientras que en hexadecimal es 5D16 (5D16h) siendo
necesario slo 4 dgitos. Debido a que su base es potencia de 2
(16=24) 4 dgitos binarios pueden representarse con un solo
digito hexadecimal, tal como se aprecia a continuacin.
0101 1101 0001 0110 Dgitos Binarios
5
D
1
6
Dgitos Hexadecimales

1.2. Representacin de enteros


Un detalle muy importante en la representacin de enteros es la cantidad de bits
que se van a emplear, ya que de ello va a depender el rango de valores que se
pueden representar.
Ejemplo: Un nmero de 4 bits implicar que se tiene 4 dgitos binarios y como
cada uno de ellos puede tomar el valor de 0 o 1 significar que se
pueden formar 24 combinaciones diferentes y que cada una de ellas
puede representar un valor. Por lo tanto, con 4 bits se puede representar
16 valores diferentes que podran estar comprendidos (rango) entre 0 y
15 o entre -8 y 7 o cualquier convencin que se establezca.
1.2.1. Sin signo
En este tipo de notacin slo se van a representar enteros positivos (sin
signo). El menor valor a representar ser el 0 y el mayor valor depender
de la cantidad de bits a emplear. Si N es la cantidad de bits a emplear, 2N-1
ser el mayor valor que se podr denotar, as por ejemplo, con 4 bits el
mayor valor ser 15 (24=16); con 8 bits, 255 (28=256) y con 16 bits hasta
65535 (216=65536). En todos los casos, el valor es uno menos debido a que
se tiene en cuenta el 0 como primer valor a representar.
Ejemplo: Para representar el entero 1837 se necesitan por lo menos 11
bits, ya que este entero en binario es 11100101101. La
representacin de este valor en un formato de 16 bits ser
0000011100101101 y en forma abreviada (hexadecimal) ser
072Dh.
1.2.2. Con signo
Aqu se tiene en cuenta los valores negativos y por ende, que la cantidad a
representar de valores positivos sea igual a la cantidad de valores
negativos.
Los dos sistemas ms usados para representar un nmero con signo son:

a) Bit de signo.- Se utiliza el bit ms significativo (el que se encuentra


ms a la izquierda) para representar el signo del nmero: 0 para indicar
que el nmero es positivo y 1 para indicar que es negativo. Esto trae
como consecuencia que, si se utiliza N bits para representar el nmero
slo se podrn emplear N-1 bits (2N-1 valores diferentes) ya que 1 bit se
usar para el signo y por lo tanto el rango de valores a representar
disminuir a la mitad: una mitad ser para representar valores positivos
y la otra mitad los valores negativos.
Ejemplo: El entero -1837 en 16 bits ser igual que +1837 pero
estableciendo en 1 el bit ms significativo es decir:
1000011100101101 y en forma abreviada 872Dh.
Con 16 bits se podr denotar desde -32767 a +32767 (216-11) es decir desde 1111111111111111 = FFFFh a
0111111111111111 = 7FFFh.
Una de las desventajas de este sistema es la doble representacin del 0,
ya que se puede denotar como 000...0 (+0) y como 1000 (-0).
Adems, no permite realizar las operaciones aritmticas directamente.
Ejemplo: Restar 86 y 24 en 8 bits
86 = 01010110 y 24=00011000 -24=10011000, luego
86+
=
01010110+
-24
=
10011000
-------------------------------62

11101110
=
-110
Como se aprecia el resultado es -110 cuando debi ser 62.
En la actualidad este sistema se emplea nicamente para la
codificacin de nmeros con punto flotante.
b) Complemento a 2.- El complemento a r de un numero N de un sistema
de base r es rn-N, donde n es la cantidad de dgitos de N y el
complemento a (r-1) es (rn-1)-N.
Ejemplo: Hallar el complemento a 10 de 392
103-392=608
Ejemplo: Hallar el complemento a 9 de 392
103-1-392=607
Es decir, que el complemento a r de N es igual al complemento a (r-1)
de N, ms 1.
Ahora si a un nmero X le restamos Y entonces:
X-Y = X-Y+rn-rn = X+(rnY)-rn = X+CY(r)-rn
Donde CY(r) es el complemento a r de Y.

Ejemplo: Hallar 627-392 (en el sistema decimal)


Como se observa, r=10 y n=3, entonces:
627-392= 627+608-103 = 1235-1000 = 235.
El restarle 103 es equivalente a simplemente eliminar el
digito ms significativo al resultado (por desbordamiento)
En el sistema binario, X-Y = X+CY(2)-2n y como CN(r)= CN(r-1)+1,
entonces: X-Y = X+(CY(1)+1)-2n. Donde CY(1) es el complemento a 1
de Y, pero el complemento a 1 de un numero en binario es
simplemente el cambio de 0s por 1s y 1s por 0s. Por lo tanto, en
binario, la diferencia de X y Y se puede resumir en: Sumar a X, Y
complementado, es decir, convertir los 1s en 0s y los 0s en 1s, luego
sumarle 1 y finalmente eliminar el digito ms significativo.
Ejemplo: Restar 179-62 (r=2 , n=8 bits)
179=10110011
62=00111110
-62=11000001+1=11000010
Luego: 179 = 10110011 +
-62 = 11000010
----------------------117 101110101 pero al eliminar el bits ms
significativo queda 01110101 = 117

1.3. Representacin de reales


Para poder representar nmeros con parte fraccionaria se deben tener en cuenta
tres cosas: como representar la parte entera, la parte decimal y el punto decimal.
Existen dos notaciones:
1.3.1. Con punto fijo
En esta notacin se establece una determinada cantidad de bits para la
parte entera y otra para la parte fraccionaria. El punto quedar
arbitrariamente fijado entre estos bits. Por ejemplo el nmero 3.641 en
binario es aproximadamente 11.101001000001, si el formato que se va a
usar es de 8 bits y el punto se fija en la mitad, entonces la representacin
sera: 00111010 (3Ah), donde los dgitos en negrita son la parte entera. Si
para representar este mismo nmero se fijara el punto decimal despus de
los 2 bits ms significativos la representacin sera: 11101001 (E9h).
Como se comprender, al observar los nmeros 3Ah y E9h (o en binario)
no hay forma de determinar la posicin del punto decimal a no ser que
previamente se haya establecido o acordado esta. Por lo general la posicin
del punto se establece durante el diseo del hardware y queda fijo a ella. El
inconveniente de esta notacin es que la precisin queda fija, por ejemplo
en el primer caso solo se tienen 4 bits para representar la parte fraccionaria,
mientras que en el segundo caso se tienen 6 bits, con lo que se obtiene
mayor precisin (3Ah=0011.1010=3.625 ; E9h=11.101001=3.640625). Por
otro lado, si la parte entera en el nmero a representar fuera mayor o igual
que 4 este no podra ser denotado usando la fijacin del punto decimal del
segundo caso porque se necesitara ms de 2 bits para representar estos
6

valores. Por lo tanto, al permanecer el punto fijo, en algunos casos se


necesitaran ms bits en la parte fraccionaria (correr el punto hacia la
izquierda) y en otros en la parte entera (correr el punto hacia la derecha).
1.3.2. Con punto flotante
El inconveniente del punto fijo es resuelto con un punto flotante, es decir,
un punto que pueda ser corrido hacia la izquierda o hacia la derecha segn
sea necesario.
El proceso se inicia convirtiendo el nmero al sistema de numeracin
binario y luego se normaliza. La normalizacin consiste en correr el punto
hacia la izquierda o hacia la derecha de tal forma que el 1 que se encuentre
ms hacia la izquierda quede posicionado a la izquierda del punto. El valor
resultante se multiplica por 2N donde N es la cantidad de posiciones que se
ha corrido el punto. N es positivo si el punto se corre hacia la derecha y
negativo en caso contrario.
Ejemplo: Convertir 37.4592 al formato de punto flotante de 32 bits.
Primero hay que convertirlo a binario. Utilizar el mtodo de
multiplicaciones sucesivas por 2, para convertir la parte
decimal, es muy largo y tedioso, as que usaremos
multiplicaciones por 16 y lo que obtendremos son los dgitos en
hexadecimal, los cuales son sencillos de pasar a binario.
37 en binario es 100101, ahora vamos a la parte decimal
0.4592*16 = 7.3472
0.3472*16 = 5.5552
0.5552*16 = 8.8832
0.8832*16 = 14.1312
0.1312*16 = 2.0992
0.0992*16 = 1.5872
0.5872*16 = 9.3952
0.3952*16 = 6.3232
0.3232*16 = 5,1712
0.1712*16 = 2.7392
0.7392*16 = 11.8272
0.8272*16 = 13.2352
0.2352*16 = 3,7632

7
5
8
E
2
1
9
6
5
2
B
D
3

0111
0101
1000
1110
0010
0001
1001
0110
0101
0010
1011
1101
0011

El nmero en binario ser:


100101.0111010110001110001000011001011001010010101111010011

y normalizado:
1.00101011101011000111000100001100101100101001010111101 x 25

El formato para representar nmeros con parte fraccionaria esta


conformado por 1 bit S para el signo y el resto de bits se distribuye entre
la caracterstica C y la mantisa M. La caracterstica es la representacin del
exponente E en exceso a 2N-1-1, donde N es la cantidad de bits que tiene la
caracterstica.
NUM = (-1)S * 1.M * 2E

donde E = C-2N-1+1
7

Existen dos formatos bsicos:


a) Formato de precisin simple (32 bits), que consta de:
1 bit para el signo (S)
8 bits para la caracterstica (C) y
23 bits para la mantisa (M)
La secuencia de bits del nmero ser la siguiente:
S = 0, debido a que el nmero es positivo.
C = E+2N-1-1 = 5+28-1-1 = 5+128-1 = 132 = 10000100(2
M = 00101011101011000111000 que son los 23 dgitos que se
encuentran a la derecha del punto del numero normalizado.
Por lo tanto, la representacin del valor ms prximo a 37.4592 en 32
bits es: 0100 0010 0001 0101 1101 0110 0011 1000 = 4215D638h.
Para hallar su valor en decimal, se toma el nmero normalizado pero
slo con los 23 dgitos a la derecha del punto (mantisa) y se corre el
punto hacia la derecha para convertirlo en entero, esto significa que el
punto tendr que desplazarse 23 posiciones a la derecha y por ende
tendr que restarse esta cantidad al exponente. Luego el entero se pasa
a decimal y se divide entre 2 elevado al nuevo exponente:
1.00101011101011000111000 x 25 , convertido a entero queda:
1001 0101 1101 0110 0011 1000 x 25-23
95D638h x 2-18= 9819704 x 2-18 = 9819704 / 218
9819704 / 262144 = 37,459197998046875
b) Formato de precisin doble (64 bits)
1 bit para signo (S)
11 bits para la caracterstica (C)
52 bits para la mantisa (M)
La secuencia de bits del nmero ser el siguiente:
S = 0, debido a que el nmero es positivo.
C = E+2N-1-1 = 5+211-1-1 = 5+1024-1 = 1028 = 10000000100(b
M = 1010101110101100011100010000110010110001010111101001
que son los 52 dgitos a la derecha del punto
La representacin del valor ms prximo a 37.4592 en 64 bits es:
404ABAC710CB295Eh (muy extenso para representarlo en binario)
Su valor en decimal es:
1.0010101110101100011100010000110010110010100101011110 x 25
10010101110101100011100010000110010110010100101011110 x 2-47

12BAC710CB295Eh x 2-47 = 5271913723799902 x 2-47


5271913723799902 / 247 = 5271913723799902 / 140737488355328
37.459199999999995611688063945621 (mayor precisin)

Una vez obtenida las respectivas representaciones de los valores con parte
fraccionaria, hay que evaluar el ERROR de precisin. Hay 2 tipos de error:
por DEFECTO y por EXCESO. El primero se da cuando la representacin
obtenida es menor que el valor real y la segunda cuando es mayor,
obviamente se deber elegir aquella que tenga menor error.
En el caso del formato de 32 bits, podemos apreciar que el digito 24 del
numero normalizado (despus del punto) es 1 por lo que procedemos a
redondear (aumentar en 1 la mantisa) lo cual nos dar 95D639h x 2-18 =
37,459201812744140625. Esta representacin, aunque genera un error por
exceso, es la ms cercana al valor real.
Con el formato de 64 bits ocurre algo semejante. El bit 53 del numero
normalizado tambin es 1, por lo que se procede a redondear con lo que se
obtiene 12BAC710CB295Fh x 2-47 = 37,45920000000000271711 que
como se aprecia es bastante prximo a 34.4592.
1.4. Otros cdigos
En ocasiones, se utilizan otros cdigos binarios para nmeros decimales y
caracteres alfanumricos. Las computadoras digitales tambin emplean otros
cdigos binarios para aplicaciones especiales. Veamos algunos de ellos:
1.5.1. Cdigo Gray
Es la representacin de un conjunto de valores de tal manera que los
dgitos que lo conforman (binario) cambia slo uno de ellos conforme
avanza de un valor al siguiente. Por ejemplo, 3 en binario de cuatro bits es
0011 y 4 es 0100 como se aprecia, para pasar de 3 a 4, tres bits cambian su
estado, lo cual podra producir uno o ms estados intermedios, si los tres
bits no cambiasen simultneamente, esto no ocurre en cdigo Gray.
Para formar una tabla de nmeros en cdigo Gray de N bits se debe seguir
las siguientes reglas:
a) Un cdigo Gray de 1 bit tiene dos palabras cdigo: 0 y 1.
b) Las primeros 2N palabras de N+1 bits son iguales a las palabras de N
bits precedidas por un 0.
c) Las ultimas 2N palabras de N+1 bits son iguales a las palabras de N bits
escritas en orden inverso y precedidas por un 1.
Ejemplo:
N=1
0
1

N=2
00
01
--11
10

N=3
000
001
011
010
----110
111
101
100

Para convertir binario a Gray se deben seguir los siguientes pasos:


a) Los bits de un cdigo Gray de N bits se numeran de derecha a
izquierda de 0 a N-1.
b) El bit i es 0 si el bit i e i+1 de la palabra en binario son iguales y 1 en
caso contrario.
Ejemplo: Convertir 1011 a cdigo Gray
Como el bit 0 y 1 son iguales, el bit 0 ser: 0
Como el bit 1 y 2 son diferentes, el bit 1 ser: 1
Como el bit 2 y 3 son diferentes, el bit 2 ser: 1
Como el bit 3 y 4 (se asume 0) son diferentes, el bit 3 ser: 1
Por lo tanto 1011 en cdigo Gray es 1110
1.5.2. BCD
Decimal codificado en binario, pertenece a los sistemas de numeracin no
posicionales y utiliza una asignacin directa del equivalente binario del
digito decimal. Cada digito decimal se codifica por 4 dgitos binarios, pero
como con 4 bits se pueden representar hasta 16 valores, las 6 ltimas
combinaciones (despus del 9) que no se usan no tienen ningn valor
cuando se utiliza BCD.
Ejemplo: Codificar 5 en BCD = 0101 (igual que en binario)
Ejemplo: Codificar 173 en BCD
1 = 0001, 7=0111 y 3=0011
Por lo tanto 175 en BCD ser: 000101110101

1.5.3. ASCII
Muchas aplicaciones requieren el manejo de datos que no solo estn
formados por nmeros sino tambin por letras del alfabeto y por ciertos
caracteres especiales. Un conjunto de caracteres alfanumricos incluye los
10 dgitos decimales, las 26 letras del alfabeto y otros caracteres como $,
+, -, etc. Por lo que se necesitan 6 bits para codificarlos. Pero si adems se
incluyen letras maysculas o minsculas entonces se necesitaran 7 bits,
con lo que se puede codificar hasta 128 caracteres. Este conjunto de
cdigos ha sido estandarizado y tiene el nombre de ASCII (Cdigo
estndar americano para intercambio de informacin) y en la actualidad ha
sido extendido a 8 bits, es decir, 256 caracteres.

10

1.5. Ejercicios
1.5.1. Resueltos
a) Cual es el menor entero negativo y el mayor entero positivo que se
puede almacenar en un formato de 10 bits donde tambin se
representarn nmeros negativos usando complemento a 2
El menor entero positivo ser: -210-1 = -29 = -512
El mayor entero positivo ser: 210-1-1 = 29-1 = 511
b) Convertir 8503 a base 13
8503/13
cociente 654, residuo 1 (digito menos significativo)
654/13
cociente 50, residuo 4
50/13
cociente 3, residuo 11
3/13
cociente 0, residuo 3 (digito ms significativo)
Por lo tanto 8503 en base 13 ser: 3B41
c) Convertir 46.483 a base 16
Primero la parte entera
46/16
cociente 2, residuo 14 = E
2/16
cociente 0, residuo 2 = 2
46 en base 16 es 2E
Ahora la parte fraccionaria
0.483*16 = 7.728

0.728*16 = 11.648

11

0.648*16 = 10.368

10

0.368*16 = 5.888

0.888*16 = 14.208

14

Una aproximacin a 46.483 es 2E.7BA5E(16

7
B
A
5
E

d) Si el resultado anterior se almacena en una variable del tipo real de


precisin simple (32 bits) Cul es la secuencia de bits en este
formato?
46.483=2E.7BA5(16=101110.01111011101001011110
Normalizado: 1.0111001111011101001011110 x 25
Por lo tanto:
S = 0 (por ser positivo)
C = E+2N-1-1 = 5+27-1 = 132 = 10000100(2 (N= bits de la caracter.=8)
M = 01110011110111010010111 (slo 23 bits), pero como el bit 24 es
1, hay que redondear a 01110011110111010011000 (+1)
Uniendo todos los bits: 01000010001110011110111010011000
Abreviado: 4239E98h
e) Cual es el valor real almacenado en la variable del ejercicio anterior?
El nmero anterior normalizado a 23 bits y redondeado es:
1.01110011110111010011000 x 25
Convertido a entero:
101110011110111010011000 x 25-23
Convertido a hexadecimal
B9EE98 x 2-18
Convertido a decimal
12185240 x 2-18 = 46,483001708984375
11

f) Si A, B y C son variables enteras sin signo de 8 bits que contienen los


valores 203, 151 y 0 respectivamente. Determine el valor de C luego de
hacer la siguiente operacin C=A+B
A = 203 = 11001011 +
B = 151 = 10010111
---------------------354 = 101100010
Como se observa el resultado es 354, pero se necesitan 9 bits para
poder representarlo y la variable C solo tiene 8 bits, por lo que slo se
tomarn los 8 bits menos significativos (el bits ms significativo se
desborda). Por lo tanto C = 01100010 = 98
g) Si A, B y C son variables enteras con signo de 16 bits que contienen
los valores 28391, 15016 y 0 respectivamente. Determine el valor de C
luego de hacer la siguiente operacin C=A+B
A = 28391 = 0110111011100111 +
B = 15016 = 0011101010101000
-------------------------------------43407 = 1010100110001111
Aparentemente el resultado es 43407 (incluso no hay desbordamiento),
pero al ser C una variable entera con signo y como el bit ms
significativo del resultado es 1 inmediatamente nos lleva a pensar que
el resultado es negativo, por lo que procedemos a hallar su
complemento a 2 para determinar su verdadero valor.
C = 1010100110001111
0101011001110000 (0s a 1s y 1s a 0s)
1 (sumamos 1)
-------------------------0101011001110001 = 22129
Pero como se ha complementado, entonces: C = -22129. Aunque
parezca increble, el sumar dos nmeros positivos puede dar como
resultado un nmero negativo.
h) Convertir a cdigo Gray 158 (8 bits)
Primero convertimos 158 a binario de 8 bits esto es: 10011110
Analizando los bits de derecha a izquierda tenemos:
0 1 0 0 1 1 1 1 0
1 1 0 1 0 0 0 1
158 en codigo Gray es 11010001 = 209
i) Codifique en binario 2837 (BCD)
2=0010, 8=1000, 3=0011 y 7=0111
2837 en BCD es 0010100000110111

12

1.5.2. Propuestos
a) Cual es el menor entero negativo y el mayor entero positivo que se
puede almacenar en un formato de enteros con signo de 8 bits.
b) Se desea representar slo enteros positivos con 12 bits, Cul es el
mayor entero que se puede representar?
c) Convertir 97058 a base 7.
d) Convertir 23.81 a base 12
e) Determine la secuencia de bits para la representacin de -7903.37 en
un formato de 32 bits.
f) Determine el verdadero valor (en decimal) almacenado en el ejercicio
anterior.
g) Determine la secuencia de bits para la representacin de 0.00517 en un
formato de 32 bits.
h) Determine el verdadero valor (en decimal) almacenado en el ejercicio
anterior.
i) Si A, B y C son variables enteras con signo de 16 bits que contienen
los valores -10732, 6932 y 0 respectivamente. Determine el valor de C
luego de hacer la siguiente operacin C=A-B.
j) Si A, B y C son variables enteras sin signo de 10 bits que contienen los
valores 372, 998 y 0 respectivamente. Determine el valor de C luego de
hacer la siguiente operacin C=A+B.
k) Convertir a cdigo Gray 826 (10 bits).
l) Codifique en binario 8037 (BCD)

13

II CIRCUITOS DE LOGICA DIGITAL


2.1. Compuertas lgicas.
Las compuertas lgicas son bloques de hardware que producen seales de 0 o 1
cuando los requerimientos lgicos de entrada son satisfechos. Esta caracterstica
permite utilizar el lgebra booleana como herramienta para el anlisis y diseo de
circuitos lgicos digitales.
Cada compuerta tiene un smbolo grfico distinto y su funcionamiento puede
describirse por medio de una expresin algebraica. La relacin de entrada/salida
de las variables binarias para cada compuerta puede representarse en forma tabular
por una tabla de verdad. Los nombres, smbolos, tablas de verdad y funciones
algebraicas de las siete compuertas lgicas se listan en la figura 2.1

C=AB
A B C
0 0 0
0 1 0
1 0 0
1 1 1

C=A+B
A B C
0 0 0
0 1 1
1 0 1
1 1 1

C=A
A C
0 1
1 0

C=(AB)
A B C
0 0 1
0 1 1
1 0 1
1 1 0

C=AB
A B C
0 0 0
0 1 1
1 0 1
1 1 0

C=(AB)
A B C
0 0 1
0 1 0
1 0 0
1 1 1

C=(A+B)
A B C
0 0 1
0 1 0
1 0 0
1 1 0

Figura 2.1 Compuertas lgicas digitales

Las compuertas lgicas pueden combinarse para producir circuitos lgicos.


2.2. lgebra booleana
El lgebra booleana difiere de forma significativa del lgebra en que las constantes
y variables booleanas slo pueden tener, en diferentes ocasiones, dos valores
posibles: 0 o 1.
Las tres operaciones lgicas bsicas son AND, OR y complemento.
Una funcin booleana puede expresarse algebraicamente con variables binarias,
smbolos de operadores lgicos, parntesis y signos de igualdad. Para un valor
dado de las variables, la funcin slo puede ser 0 o 1.
La relacin entre una funcin y sus variables binarias se pueden representar en una
tabla de verdad, donde se lista las 2N combinaciones de las N variables binarias y,
tambin, mediante un diagrama lgico.
14

Ejemplo: F = A(B+C)

A, B, C y F, por ser variables booleanas slo


puede ser 0 o 1.

En la figura 2.2 se muestra la tabla de verdad con todas las posibles


combinaciones de A, B y C, as como el diagrama lgico para la funcin F
A
0
0
0
0
1
1
1
1

B
0
0
1
1
0
0
1
1

C
0
1
0
1
0
1
0
1

F
0
0
0
0
1
0
0
0

Figura 2.2 Tabla de verdad y diagrama lgico para F = A(B+C)

La tabla de verdad la podemos interpretar de la siguiente manera: Cuando


las entradas A, B y C son 0, la salida F es 0 que es lo que se obtiene al
reemplazar A, B y C en la funcin.
F= A(B+C) = 0(0+0) = 00 = 01 = 0
Ahora si A=1, B=0 y C=0, F tomar el valor de:
F= A(B+C) = 1(0+0) = 10 = 11 = 1
As, se va probando con todas las posibles combinaciones de las entradas
A, B y C (23=8 combinaciones) y se van obteniendo los valores de la salida
F.
Existen un conjunto de reglas que se pueden usar para simplificar
expresiones lgicas, es decir, para reducir el nmero de trminos de una
expresin. Al hacer esto, la expresin reducida generar un circuito lgico
menos complejo que el de la expresin original. Las identidades se listan a
continuacin:
1)
2)
3)
4)
5)
6)
7)
8)

A+0=A
A+1=1
A+A=A
A+A=1
A+B=B+A
A+(B+C)=(A+B)+C
A(B+C)=AB+AC
(A+B)=AB

9)
10)
11)
12)
13)
14)
15)
16)
17)

A0=0
A1=A
AA=A
AA=0
AB=BA
A(BC)=(AB)C
A+BC=(A+B)(A+C)
(AB)=A+ B
(A)=A

15

Las identidades 8) y 16) se conocen como los teoremas de DeMorgan y se


pueden generalizar de la siguiente manera:
(A+B+C+D+E+) = ABCDE
(ABCDE) = A+B+C+D+E

2.3. Mintrminos y Maxtrminos


La representacin ms bsica de una funcin lgica es la tabla de verdad, pero la
informacin contenida en ella puede tambin expresarse en forma algebraica
mediante una suma cannica o un producto cannico.
La suma cannica de una funcin lgica es la suma de los productos lgicos de
las variables correspondientes a las lneas de la tabla de verdad para las que la
funcin produce una salida de 1. Cuando en la columna de la variable hay un 1 se
toma la variable y cuando hay un 0 se toma su complemento.
El producto cannico de una funcin lgica es un producto de las sumas lgicas
de las variables correspondientes a las combinaciones de entradas para las que la
funcin produce una salida de 0. En este caso, cuando en la columna de la variable
hay un 0 se toma la variable y cuando hay un 1 se toma su complemento.
Por ejemplo, dada la funcin lgica de la tabla siguiente:
Lnea
0
1
2
3
4
5
6
7

X
0
0
0
0
1
1
1
1

Y
0
0
1
1
0
0
1
1

Z
0
1
0
1
0
1
0
1

F
1
0
0
1
1
0
1
1

Las lneas donde F es 1 son: 0, 3, 4 6 y 7 y el producto lgico de la fila:


0 es XYZ
en la columna X es 0, en Y es 0 y en Z es 0
3 es XYZ
en la columna X es 0, en Y es 1 y en Z es 1
4 es XYZ
en la columna X es 1, en Y es 0 y en Z es 0
6 es XYZ
en la columna X es 1, en Y es 1 y en Z es 0
7 es XYZ
en la columna X es 1, en Y es 1 y en Z es 1
Por consiguiente la suma cannica de la funcin es:
F = xyz(0,3,4,6,7) = XYZ + XYZ + XYZ + XYZ + XYZ
Para el producto cannico se tiene que:
Las lneas donde F es 0 son: 1, 2 y 5 y la suma lgica de la fila:
1 es X+Y+Z en la columna X es 0, en Y es 0 y en Z es 1
2 es X+Y+Z en la columna X es 0, en Y es 1 y en Z es 0
5 es X+Y+Z en la columna X es 1, en Y es 0 y en Z es 1
F = xyz(1,2,5) = (X+Y+Z)(X+Y+Z)(X+Y+Z)

16

2.4. Simplificacin por lgebra Booleana


Manipulando una expresin booleana, de acuerdo con las reglas del lgebra
booleana, se puede obtener una expresin ms simple, una expresin que requiera
menos compuertas lgicas.
Ejemplo: Simplificar F = XYZ + XYZ

Figura 2.3 Diagrama lgico de F = XYZ + XYZ

Si hacemos que: A = XY
F = AZ + AZ
F = A(Z + Z)
F=A1
F=A
F = XY

entonces tenemos:
si aplicamos la identidad 7) queda:
aplicando la identidad 4) Z + Z = 1
por la identidad 10)
regresando el valor original

La tabla de verdad (del diagrama original y el simplificado) y el diagrama


lgico simplificado se muestran en la figura 2.4
X
0
0
0
0
1
1
1
1

Y
0
0
1
1
0
0
1
1

Z
0
1
0
1
0
1
0
1

F
0
0
0
0
1
0
1
0

Figura 2.4 Tabla de verdad y Diagrama lgico y para F = XY

Por lo tanto las expresiones booleanas: XYZ + XYZ y XY son


equivalentes, esto implica que ambas expresiones tienen la misma tabla de
verdad a pesar que sus diagramas lgicos son diferentes.
Ntese que mientras en el diagrama lgico original se requieren 7
compuertas lgicas (2 NOT, 4 AND y 1 OR) en el diagrama simplificado
solo se necesitan 2 compuertas (1 NOT y 1 AND). Pero lo que debe quedar
bien claro es que ambos diagramas tienen la misma tabla de verdad, es decir,
que si a ambos diagramas se les aplica las mismas entradas, stos generarn
las mismas salidas.
17

Ejemplo: Simplificar F = (A + B)(A + B)

Figura 2.5 Diagrama lgico F = (A+B)(A +B)

F = (A + B)(A + B)
F = (A + B)A + (A + B)B
F = AA + BA + AB + BB

por la identidad 7) o como,


simplemente, el producto
de 2 binomios

Aplicando la 12) AA=0 y por la 11) BB=B queda


F = 0 + BA + AB + B
F = 0 + AB + AB + B
F = 0 + (A + A)B + B
F = 0 + 1B + B
F=0+B+B
F=0+B
F=B

por la 13) BA=AB


por la 7)
por la 4)
por la 10)
por la 3)
por la 1)

Con esto queda demostrado que (A + B)(A + B) puede ser reemplazado por
simplemente B, es decir, que la salida F slo y nicamente depende de la
variable de entrada B y no se toma en cuenta, para nada, el valor que pueda
tomar la variable A, esto tambin se puede apreciar en la tabla de verdad y el
diagrama simplificado de la expresin original de la figura 2.6
A
0
0
1
1

B
0
1
0
1

F
0
1
0
1

Figura 2.6 Tabla de verdad y Diagrama lgico y para F = B

En este caso se puede ver como queda simplificada una expresin booleana
al mximo.
Cabe recalcar, una vez ms, que la tabla de verdad que se muestra en la
figura 2.6 satisface las condiciones de salida para ambos diagramas lgicos
(el original y el simplificado)

18

Ejemplo: Simplificar F = ((A + C)(B + D))

Figura 2.7 Diagrama lgico de F = ((A+C)(B+D))

Hacemos que X=A+C y Y=B+D y sustituimos en F


F = (XY)
por la 16)
F = X + Y
restableciendo valores
F = (A + C) + (B + D)
por la 8)
F = AC + BD

Figura 2.8 Diagrama lgico de F = AC + BD

La tabla de verdad que satisface las condiciones de salida de los dos


diagramas lgicos es la siguiente:
A
0
0
0
0
0
0
0
0

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
0
1
0
1
0
0
0
0

A
1
1
1
1
1
1
1
1

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
1
1
0
1
1
1
0
0

Figura 2.9 Tabla de verdad de F = AC + BD

En este caso, como se observar en los diagramas, no se ha simplificado


mucho la expresin, pero se ha obtenido un equivalente con mayor presencia
de compuertas AND.
19

2.5. Simplificacin por mapa de Karnaugh.


Si bien es cierto que una expresin booleana se puede simplificar mediante las
relaciones bsicas del lgebra booleana, en algunas ocasiones esto se puede
complicar debido a que no esta definido una serie de pasos sucesivos a realizar en
el proceso de simplificacin.
Existe un mtodo grafico que proporciona un procedimiento sencillo y directo
para simplificar las expresiones booleanas y se denomina Mapa de Karnaugh.
El Mapa de Karnaugh se puede utilizar para resolver problemas con cualquier
nmero de variables de entrada, su utilidad prctica se limita a seis variables, con
una cantidad mayor ser necesario el empleo de una computadora.
El mtodo consiste en agrupar 2 o ms trminos de una suma cannica en los
cuales exista un cambio mnimo de bits (cdigo Gray) entre las variables que los
conforman. Por ejemplo la suma cannica ABC + ABC (111 y 110,
respectivamente), puede simplificarse a AB(C+C) = AB
La idea es hacer un mapa colocando juntas las lneas cuyos valores en binario
tengan un cambio mnimo de sus bits. Por ejemplo la lnea 0 (0000) con las lneas
1, 2, 4 y 8 (0001, 0010, 0100 y 1000, respectivamente).
La lnea 2 (0010) con las lneas 0, 3, 6 y 10 (0000, 0011, 0110 y 1010)
La lnea 5 (0101) con las lneas 1, 4, 7 y 13 (0001, 0100, 0111 y 1101)
La lnea 15 (1111) con las lneas 7, 11, 13 y 14 (0001, 0100, 0111 y 1101)
Siguiendo esta regla un mapa de 16 lneas (4 variables) seria el siguiente:
0
(0000)
4
(0100)
12
(1100)
8
(1000)

1
(0001)
5
(0101)
13
(1101)
9
(1001)

3
(0011)
7
(0111)
15
(1111)
11
(1011)

2
(0010)
6
(0110)
14
(1110)
10
(1010)

10
2
6
14
10
2

8
0
4
12
8
0

9
1
5
13
9
1

11
3
7
15
11
3

10
2
6
14
10
2

8
0
4
12
8
0

Figura 2.10 Mapa de Karnaugh para 4 variables

Como se observa la lnea 0 tiene adyacentes a las lneas 1 y 4 pero no a las lneas
2 y 8. Igual ocurre con la lnea 2 que tiene adyacentes a las lneas 3 y 6 pero no a
las lneas 0 y 10. Este inconveniente se resuelve copiando la tabla alrededor de la
tabla original como se muestra en la figura 2.10
Una vez que se tiene el mapa se forman grupos de 2, 4, 8, 16, etc. lneas
adyacentes cuya funcin de salida es 1. Esto significa que se pueden agrupar de:
2 trminos: Las lneas (0,1), (0,4), (0,2), (0,8); (5,1), (5,7), (5,4), (5,13); (11,9),
(11,3), (11,10), (11,15), etc.
4 trminos: Las lneas (0,1,3,2), (0,4,12,8), (0,1,4,5), (0,2,8,10); (1,5,13,9),
(1,3,9,11), (1,3,5,7); (6,4,14,12), (6,2,14,10), (6,7,15,14), etc.
8 trminos: Las lneas (0,1,3,2,4,5,7,6), (0,4,12,8,1,5,13,9), (0,4,12,8,2,6,14,10),
(0,1,3,2,8,9,11,10), etc.
No hay que olvidar que solo se agruparn las lneas cuya funcin de salida es 1
20

Por ejemplo para la siguiente suma cannica ABC(0,1,2,3,4,5,9,10) que se


corresponde con la siguiente tabla:
0
1
2
3
4
5
6
7

A
0
0
0
0
0
0
0
0

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
1
1
1
1
1
1
0
0

A
1
1
1
1
1
1
1
1

8
9
10
11
12
13
14
15

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
0
1
1
0
0
0
0
0

Figura 2.11 Tabla de verdad de ABC(0,1,2,3,4,5,9,10)

La expresin sin simplificar ser:


F = ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD+ ABCD

El mapa de karnaugh, quedar as:


CD
00
AB
00
AB
01
AB
11
AB
10

CD
01

1
4

1
12

5
13

7
15

0
9

CD
10

CD
11

11

0
14

0
10

Figura 2.12 Mapa de Karnauhg de ABC(0,1,2,3,4,5,9,10)

Los nmeros en la esquina superior derecha de las celdas se corresponden con los
nmeros de lnea y los nmeros en el centro son los valores que toma la funcin
de salida en esa lnea.
En los bordes superior e izquierdo, aparecen los valores que pueden tomar las
variables lgicas. Por ejemplo, la interseccin de la fila AB y la columna CD
definen el trmino ABCD (0101, lnea 5). Otro detalle a tener en cuenta es el
orden o secuencia que tienen los elementos de los bordes, as, AB, AB, AB y
AB se corresponden con 00, 01, 11 y 10 (cdigo Gray para 0, 1, 2 y 3), de igual
manera ocurre con el borde superior.
A continuacin se proceder a agrupar. Cuanto mayor nmero de elementos
tenga el grupo, mayor ser la simplificacin
Las lneas 0, 1, 3 y 2 forman el grupo 1.
Las lneas 0, 1, 4 y 5 forman el grupo 2.
Las lneas 1 y 9 forman el grupo 3 y, finalmente,
Las lneas 2 y 10 el grupo de 4.

21

No importa que se tomen lneas que pertenecen a algn grupo para formar otro
grupo.
Ahora pasaremos a simplificar. La regla de simplificacin es sencilla:
QUEDARN SOLO AQUELLAS VARIABLES LGICAS PARA LAS
QUE NO APARECE SU COMPLEMENTO EN EL GRUPO
En el grupo 1 (ABCD + ABCD + ABCD + ABCD) quedar: AB
En el grupo 2 (ABCD + ABCD + ABCD + ABCD) quedar: AC
En el grupo 3 (ABCD + ABCD) quedar: BCD
En el grupo 4 (ABCD + ABCD) quedar: BCD
Por ultimo, se unen las reducciones mediante un operador OR (+) quedando:
F = AB + AC + BCD + BCD
Condicin no importa
En algunos casos se va a dar que, ciertas entradas nunca van a ocurrir, por lo que
no estarn definidos los correspondientes valores para la funcin de salida. Esto se
conoce como condicin NO IMPORTA, es decir, que no importa si la funcin de
salida toma el valor de 0 o 1, por lo que se puede establecer un valor arbitrario
para la funcin de salida de tal manera que permita simplificar an ms la
expresin.
Ejemplo: Disear un detector de dgitos BCD primos.
Como sabemos, los dgitos BCD son del 0 al 9 (0000 a 1001) y estn
conformados por 4 bits. Por consiguiente, los dgitos BCD primos son: 1, 2,
3, 5 y 7.
La tabla de verdad para esta funcin ser:

0
1
2
3
4
5
6
7

A
0
0
0
0
0
0
0
0

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
0
1
1
1
0
1
0
1

8
9
10
11
12
13
14
15

A
1
1
1
1
1
1
1
1

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
0
0
?
?
?
?
?
?

Figura 2.13 Tabla de verdad para detector de nmeros primos

En la tabla, ABCD representan los 4 dgitos del cdigo BCD. Ntese que
desde la lnea 10 hasta la 15, la funcin de salida tiene el valor ? debido a
que esos valores no estn definidos para el cdigo BCD, en otras palabras, si
las entradas es un cdigo BCD, estas entradas (10-15) nunca ocurrirn.

22

Ahora construiremos el mapa de Karnaugh tal como se muestra en la figura


2.14. Ntese las lneas del 10 al 15, los ? significa que pueden tomar el valor
de 0 o 1 segn nos convenga.
CD
00
AB
00
AB
01
AB
11
AB
10

CD
01

1
4

0
12

5
13

7
15

?
9

CD
10

CD
11

11

0
14

?
10

Figura 2.14 Mapa de Karnauhg de nmeros primos BCD

Hay un grupo que est completamente definido, que es el grupo conformado


por las lneas 1, 3, 5 y 7, el problema es, con qu lneas agrupar la lnea 2.
Un primer intento sera agrupar la lnea 2 con la lnea 3, con lo que se forma
un grupo de 2 lneas.
Un segundo intento es hacer 1 la lnea 10 y agruparla con la lnea 2, tambin
sera un grupo de 2 lneas.
Un tercer intento, es hacer 1 las lneas 11 y 10 y agruparlas con las lneas 3 y
2 (grupo de 4) con lo que obtendramos una mayor simplificacin. Al
parecer esto sera lo ptimo, por lo que la funcin quedar:
F = AD + BC
Esto tambin significa que la funcin de salida del resto de lneas (12, 13, 14
y 15) debemos asignarle el valor de 0.

2.6. Circuitos lgicos combinacionales.


Es un grupo de compuertas lgicas conectadas de una manera especfica,
definiendo de esta forma un circuito con un conjunto de entradas y salidas
binarias. La caracterstica principal de un circuito combinacional es que los
valores binarios de las salidas dependen o estn en funcin, slo y nicamente, de
una combinacin binaria de entradas.
N variables
de entrada

A
B

Circuito
Combinacional

F1
F2

M variables
de salida

FM

Figura 2.15 Diagrama de bloque de un circuito combinacional

Un circuito combinacional puede describirse mediante una tabla de verdad que


muestre la relacin binaria entre las N variables de entrada y las M variables de
salida.
23

2.6.1. Semisumador.
Es el circuito combinacional ms simple y realiza la suma aritmtica de
dos dgitos binarios. Se denomina semisumador porque las entradas estn
conformadas por slo los dos dgitos binarios a sumar y como salidas,
tiene el resultado de la suma y el acarreo generado.

A
0
0
1
1

B
0
1
0
1

S
0
1
1
0

C
0
0
0
1

Figura 2.16 Tabla de verdad y circuito combinacional de un semisumador

De la tabla podemos obtener las siguientes funciones lgicas S = AB+AB


y C = AB, pero AB+AB = AB por lo que el circuito quedara:

Figura 2.17 Circuito combinacional simplificado de un semisumador

2.6.2. Sumador completo.


Este circuito combinatorio tiene como entradas los dos dgitos binarios a
sumar (A, B) y adems un acarreo inicial (K), es decir, tres entradas. Como
salidas, el resultado de la suma (S) y el acarreo generado o de salida (C).
A
0
0
0
0
1
1
1
1

B
0
0
1
1
0
0
1
1

K
0
1
0
1
0
1
0
1

S
0
1
1
0
1
0
0
1

C
0
0
0
1
0
1
1
1

Figura 2.18 Tabla de verdad y circuito combinacional de un sumador completo

De la tabla de la figura 2.18 se obtienen las funciones:


S = ABK+ABK +ABK+ABK = (AB+AB)K+(AB+AB)K
S = (AB)K+(AB)K = (AB)K
C = ABK+ABK+ABK+ABK = (AB+AB)K+AB(K+K)
C = (AB)K+AB

24

2.6.3. Sumador restador.


Los circuitos anteriores pueden tratarse como cajas negras, donde solo
sepamos las salidas que se van a obtener al ingresar entradas determinadas,
por ejemplo el diagrama de bloque para el sumador completo seria el
siguiente:

Figura 2.19 Diagrama de bloque de un sumador completo

Donde A y B son las entradas de los dgitos binarios a sumar, Ci es el


acarreo de entrada, es la salida de la suma de los bits de entrada y Co el
acarreo de salida.
Se pueden usar estos circuitos simples para disear circuitos
cambinacionales ms complejos como por ejemplo un sumador de 4 bits
tal como se muestra en la figura siguiente:

Figura 2.20 Diagrama de un Sumador de 4 bits

En el diagrama de la figura 2.20 hay 4 sumadores completos. K es el


acarreo de entrada, A3, A2, A1 y A0 son los 4 bits del numero A, al igual
que B3, B2, B1 y B0 del numero B.
El acarreo de salida Co de cada sumador se conecta al acarreo de entrada Ci
del siguiente bloque sumador. S3, S2, S1 y S0 es un nmero de 4 bits
resultado de la suma de A y B. Finalmente C contiene el acarreo de salida
resultado de la suma de los nmeros de 4 bits A y B.
De igual forma su puede disear un sumador de 8, 16 o 32 bits o, en todo
caso, usando 2 sumadores de 4 bits se puede construir un sumador de 8
bits, con 4 uno de 16 y as sucesivamente.

Figura 2.21 Diagrama de un Sumador de 8 bits usando sumadores de 4 bits

25

La figura 2.21 muestra un sumador de 8 bits diseado con 2 sumadores de


4 bits y estos a su vez se han diseado usando sumadores completos de un
bit.
Usando la misma lgica se puede disear un restador, pero mejor aun,
pasemos a hablar de un circuito que realice ambas operaciones: un
sumador-restador.
Primero recordemos que una resta binaria (A-B) es igual que una suma
pero complementando a 2 el segundo operando (A+C2(B)), es decir que:
10 2 = 10 + C2(2)
En binario con 4 bits sera:
1010 0010 = 1010 + C2(0010) = 1010 + (1101 + 1)
Por consiguiente necesitamos disear un circuito tal, que cuando la
operacin sea una suma el segundo operando B se mantenga igual pero, si
la operacin es una resta se complemente (cambiar 1s por 0s y 0s por 1s y
sumarle 1). Una vez tratado el segundo operando se realiza una simple
suma.
Una entrada adicional (M) nos puede indicar si la operacin a realizar es
una suma (0) o una resta (1). Si M=0, entonces el digito Bi debe quedar
igual (sumar), caso contrario el digito Bi debe ser complementado (restar).
Si miramos la tabla de verdad generada, donde B es la entrada al sumador,
(figura 2.22) lo que obtenemos es una operacin XOR.
M
0
0
1
1

Bi
0
1
0
1

B
0
1
1
0

Figura 2.22 Tabla de verdad de la operacin

Por lo tanto, mediante una operacin XOR podemos, si fuera una resta,
complementar los 0s y los 1s del segundo operando; pero al hacer esto slo
estamos hallando el complemento a 1, falta sumarle 1 para que se convierta
en el complemento a 2. Esto se logra conectando la entrada M al acarreo de
entrada (sumar 1), tal como se aprecia en la figura 2.23.

26

Figura 2.23 Diagrama de un Sumador-Restador de 4 bits

2.7. Flip-flops
Es una celda binaria capaz de almacenar un bit de informacin. Tiene 2 salidas,
una para el valor normal y una para el valor complementado del bit almacenado en
l. La diferencia entre los diversos tipos de flip-flops est en el nmero de entradas
que posean y la manera en la cual las entradas afectan el estado binario.
Comnmente los flip-flops reciben el nombre de registros.
2.7.1. Flip Flop Bsico con compuertas NAND y NOR
El circuito Flip-Flop ms elemental que se puede construir es con 2
compuertas NAND como muestra la figura 2.24

R
0
0
1
1

S
0
1
0
1

Q
Q=Q=1
1
0
Sin Cambio

Figura 2.24 Flip-flop bsico NAND y su tabla d verdad

Resumen del flip-flop bsico con compuertas NAND


1. R=S=1: Esta condicin no tiene efecto alguno sobre el estado de salida.
Las salidas Q y Q permanecern en el estado en el que se encontraban
antes de presentarse esta condicin de entrada.
2. R=0, S=1: Este estado siempre ocasionar que la salida pase al estado
Q=1, donde permanecer aun despus de que R=1.
3. R=1, S=0: Esto siempre producir el estado Q=0, donde la salida
permanecer aun despus de que S=1.
4. R=S=0: Esta condicin intenta iniciar y borrar el registro bsico en
forma simultanea y produce Q=Q=1. No debe utilizarse.
La figura 2.25 muestra el diagrama de estados del flip-flop, donde los
crculos son los estados del flip-flop (salida Q) y las flechas las
transiciones que permiten pasar de un estado a otro.
Los valores 00, 01, 10 y 11 son los valores que pueden tomar las entradas
RS cuando el flip-flop se encuentre en alguno de sus 2 estados (0 o 1).
Como se aprecia la salida Q o estado al que pasara, esta en funcin de las
entradas R, S y del estado actual en el que se encuentre el flip-flop. Por
ejemplo, si el flip-flop se encuentra en el estado 0 y RS=11 la salida Q es
0, pero si se encontrara en el estado 1, la salida Q sera 1.
10

10
0

11

00

01

00

01

11

Figura 2.25 Diagrama de estados del flip-flop NAND

27

Otra alternativa de flip-flop bsico es la mostrada en la figura 2.26,


construido con 2 compuertas NOR
R
0
0
1
1

S
0
1
0
1

Q
Sin cambio
1
0
Q=Q=0

Figura 2.26 Registro bsico NOR y su tabla d verdad

Resumen del flip-flop bsico con compuertas NOR


1. R=S=0: Esta condicin no tiene efecto alguno sobre el estado de salida.
Las salidas Q y Q permanecern en el estado en el que se encontraban
antes de presentarse esta condicin de entrada.
2. R=0, S=1: Este estado siempre ocasionar que la salida pase al estado
Q=1, donde permanecer aun despus de que R=1.
3. R=1, S=0: Esto siempre producir el estado Q=0, donde la salida
permanecer aun despus de que S=1.
4. R=S=1: Esta condicin intenta iniciar y borrar el registro bsico en
forma simultanea y produce Q=Q=0. No debe utilizarse.

00

10

11

10
01

00

01

11

Figura 2.25 Diagrama de estados del flip-flop NOR

Al modificar el valor de una de las entradas del fli-flop, la salida Q cambia


inmediatamente, por lo que podemos considerar estas entradas como
asncronas. Pero por lo general es necesario que las salidas se sincronicen
con una seal maestra conocida como seal del Reloj. Esto se logra
agregando un par de compuertas AND, con lo que ahora obtenemos un
flip-flop con entradas sncronas, lo que implica que las salidas no se
actualizaran mientras la seal de reloj no sea 1.

28

Figura 2.25 Diagrama de un flip-flop con entradas sncronas

2.7.2. Flip-flop SR sincronizado por reloj


S
0
0
1
1

R
0
1
0
1

CLK

Q
Q anterior
0
1
1

Q0
0
0
1
1

Q1
0
1
0
1

S
0
1
0

0
1
0

Figura 2.26 Smbolo grafico, Tabla caracterstica y excitacin de un FF RS

Ecuacin caracterstica: Q = S + RQ

2.7.3. Flip-flop D sincronizado por reloj


D
0
1

CLK

Q
0
1

Q0
0
0
1
1

Q1
0
1
0
1

D
0
1
0
1

Figura 2.27 Smbolo grafico, Tabla caracterstica y excitacin de un FF D

Ecuacin caracterstica: Q = D

2.7.4. Flip-flop JK sincronizado por reloj


J
0
0
1
1

K
0
1
0
1

CLK

Q
Q anterior
0
1
Q

Q0
0
0
1
1

Q1
0
1
0
1

J
0
1

1
0

Figura 2.28 Smbolo grafico, Tabla caracterstica y excitacin de un FF JK

Ecuacin caracterstica: Q = JQ + KQ

2.7.5. Flip-flop T sincronizado por reloj

T
0
1

CLK

Q
Q anterior
Q

Q0
0
0
1
1

Q1
0
1
0
1

T
0
1
1
0

Figura 2.29 Smbolo grafico, Tabla caracterstica y excitacin de un FF T

Ecuacin caracterstica: Q = Q T

29

2.8. Circuitos lgicos secuenciales.


Es un conjunto de compuertas lgicas (circuito combinacional) y flip-flops
interconectados entre si. La caracterstica principal de un circuito secuencial es
que los valores binarios de las salidas no slo dependen de sus entradas actuales
sino tambin de la secuencia de entradas previas.
2.8.1. Ecuaciones de entrada de los flip-flops
La figura 2.30 muestra un circuito secuencial conformado por 2 flip-flops
D y algunas compuertas lgicas.

Figura 2.30 Diagrama de un circuito secuencial con FF D

En un flip-flop tipo D la ecuacin caracterstica es Q=D (ntese que Q ser


A en el primer flip-flop y B en el segundo), es decir A=DA y B=DB. Por lo
tanto DA ser igual a la salida del circuito conformado por las compuertas
1, 2 y 3, es decir: A=DA=Ax+xB y DB a la salida de la compuerta 4,
B=DB=Ax. La salida y ser igual al resultado de las compuertas 5, 6, 7
y 8; entonces: y=Ax+Bx.
Esto significa que el nuevo valor de A depender del actual valor de A, B y
x, mientras que el valor de B estar en funcin de B y A. Lo siguiente ser
construir la tabla de estados del circuito usando las expresiones halladas.

Estado actual
A
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1

Entrada
x
0
1
0
1
0
1
0
1

Estado nuevo
A
B
0
0
0
1
0
0
1
1
0
0
1
0
0
0
1
0

Salida
y
0
0
1
0
1
0
1
0

30

Figura 2.31 Tabla de estados

Por ejemplo si los valores actuales de las variables A, B y x son 0, 1 y 1


respectivamente y los reemplazamos en las expresiones halladas,
obtendremos los nuevos valores de A y B:
A = Ax+xB
= 01 + 11 = 0 + 1 = 1
B = Ax
= 11 = 1
y = Ax+Bx
= 00 + 10 = 0 + 0 = 0
Ahora, a partir de la tabla de estados, construiremos el diagrama de estados
Como tenemos 2 (N) Flip-flops y cada uno de ellos puede tener 2 estados
posibles, esto significa que el circuito secuencial tendr 4 (2N) estados
(AB) en total 00, 01, 10 y 11.
Cuando el estado actual (AB) es 00 y x es 0, el estado siguiente es 00 y la
salida y=0, pero si x=1 el siguiente estado es 01 y la salida y=0.
Si el estado actual es 11 y x=0 el siguiente estado es 00 y la salida y=1,
pero si x=1 el estado siguiente es 10 y la salida y=0. Si continuamos con
este razonamiento, obtendremos el siguiente diagrama:
0/0

1/0
0/1
00

0/1

10

0/1

1/0
01

1/0
11

1/0

Figura 2.31 Diagrama de estados

Los nmeros que aparecen en el numerador son las entradas, mientras los
denominadores son las salidas.
Ahora analicemos un circuito secuencial con flip-flops tipo JK.

Figura 2.32 Diagrama de circuito secuencial con FF JK

Las ecuaciones de entrada son: JA=x, KA=x, JB=z, KB=z, z=(x+A)B y la


ecuacin caracterstica para estos flip-flops es Q=JQ+KQ que para este
caso sera: A=JAA+KAA y B=JBB+KBB
31

Estado actual
A
0
0
0
0
1
1
1
1

Entrada

=x

=x

x
0
1
0
1
0
1
0
1

JA
0
1
0
1
0
1
0
1

KA
0
1
0
1
0
1
0
1

B
0
0
1
1
0
0
1
1

Salida
(x+A)B
z
0
1
0
0
1
1
0
0

=z

=z

JB
0
1
0
0
1
1
0
0

KB
0
1
0
0
1
1
0
0

Estado nuevo
= JQ+KQ
A
B
0
0
1
1
0
1
1
1
1
1
0
1
1
1
0
1

Figura 2.33 Tabla de estados

Por ejemplo si A, B y x valen 1, 0 y 0, respectivamente, entonces:


JA= x = 0
KA = x = 0
z = (x+A)B = (0+1)1 = 1
JB = z = 1
KB = z = 1
A = JAA+KAA = 00+11 = 1
B = JBB+KBB = 11+00 = 1
Todo esto queda resumido en el diagrama de estados siguiente
0/0

0/0

00

01

1/0
1/1

1/1

1/0
11

10

0/0
0/1

Figura 2.34 Diagrama de estados

Hasta ahora hemos partido del diagrama de un circuito secuencial para


determinar el comportamiento de ste, pero tambin se puede dar el caso
contrario, es decir, que a partir del comportamiento del circuito secuencial
determinar o disear dicho circuito.
Por ejemplo: Dado el diagrama de estados de la figura 2.35 disear un
circuito secuencial haciendo uso de flip-flops tipo JK
0/0

0/1
1/0
00

11

1/1

1/1
01

10

0/1

0/0
1/0

32

Figura 2.35 Diagrama de estados

En este tipo de problemas conocemos el estado actual (Q0) y el estado


nuevo (Q1) al que pasara el circuito secuencial al generarse una entrada x.
En este caso haremos uso de la tabla de excitacin del FF JK, la cual nos
permite saber que valores deben tener las entradas J y K para poder pasar
de Q0 a Q1
Estado actual
Q0
A
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1

Entrada
x
0
1
0
1
0
1
0
1

Estado nuevo
Q1
A
B
0
0
0
1
0
1
1
0
1
0
1
1
1
1
0
0

FF-A
JA
0
0
0
1

FF-B

KA

0
0
0
1

JB
0
1

0
1

KB

0
1

0
1

Salida
z
0
1
1
0
0
1
1
0

Figura 2.35 Tabla de estados

Por ejemplo, si el estado actual del FF A es 0, para que pueda pasar al


estado 0 (se queda en el mismo estado), la entrada J (JA) debe ser 0 y K
(KA) debe ser (entrada no importa), segn la tabla de excitacin.
Para el caso del FF B, si su estado actual es 1, para que pueda pasar al
estado 1 (se queda en el mismo estado), la entrada J (JB) debe ser
(entrada no importa) y K (KB) debe ser 0.
Continuando con este razonamiento se completa la tabla y luego se
procede a determinar JA, KA, JB y KB en funcin de A, B y x, es decir, que
se toma a A, B (estado actual), x como entradas y a JA, KA, JB y KB como
funciones de salida. Obviamente el mtodo ms prctico para todos estos
casos es: El mapa de Karnaugh.

JA

AB

AB

AB

AB

2
6
4

0
3

1
7

KA

AB

AB

AB

AB

2
6
4

1
5

JB

AB

AB

AB

AB

2
6
4

1
3

KB

X
0

AB

AB

AB

AB

2
6
4

X
1

1
7

1
5

Figura 2.36 Mapas de Karnaugh para JA, KA, JB y KB

De los mapas de Karnaugh podemos determinar que:


JA = Bx
KA = Bx
JB = x
KB = x

33

Del mismo modo se puede determinar z = Bx + Bx = Bx


Con todas estas expresiones procedemos a disear el circuito secuencial tal
como se muestra en la figura 2.37

Figura 2.37 Diagrama del circuito secuencial

2.9. Solucin de ejercicios con Boole


Boole es un programa que permite disear y analizar circuitos combinacionales y
secuenciales. Este software es de libre uso y puede ser descargado de la siguiente
pgina: http://paginaspersonales.deusto.es/zubia/BOOLE_SP.zip
Una vez descargado y descomprimido se ejecuta Boole.exe y aparece una ventana
con 2 botones: Sistema combinacional y Sistema secuencial. Autmatas
2.9.1. Circuitos combinacionales.
Seleccionado el botn Sistema combinacional aparecer la ventana
mostrada en la figura 2.38

34

Figura 2.38 Ventana de Sistema combinacional de Boole

Primero debemos darle un nombre al sistema (Ejercicio1) y luego


establecer la cantidad de variables de entrada (3) y salida (1). Se puede
establecer un nombre para las variables de entrada (X, Y, Z) y de salida o
dejarlos con sus valores por defecto A, B, C y F respectivamente.
Ahora elegimos el botn Tabla de verdad manual para ingresar los
valores de la tabla de verdad del circuito. La ventana que aparecer es la
mostrada en la figura 2.39.

Figura 2.39 Ventana para el llenado de la tabla de verdad

El botn Condiciones libres llenara de X la funcin de salida F, mientras


que el botn Ceros de ceros y Unos de unos. Obvio!
Bastara con hacer clic, una o varias veces, en cualquiera de las celdas de la
funcin F para que cambie a 0, 1 o X
Una vez llenada la tabla hacemos clic en Evaluar y luego en Salir, para
regresar a la ventana anterior en donde haremos clic en el botn Expr.
SOP simplificada donde aparecer la siguiente ventana:

35

Figura 2.40 Ventana de Expresin SOP simplificada

En ella se observa las expresiones lgicas simplificadas de las funciones


(F:1, F:2, ) y 4 botones:
Veitch-Karnough, que permite ver el mapa de Karnaugh de la funcin
con las agrupaciones de lneas que se han empleado para la simplificacin

Figura 2.41 Ventana de mapa de Karnaugh

Nand/Nor que muestra una ventana con expresiones lgicas de F, pero


empleando solo operadores Nand o Nor
Visualizar circuito que muestra una ventana con el diagrama del circuito
simplificado, como se muestra en la figura 2.42

Figura 2.42 Ventana de diagrama del circuito

36

2.9.2. Circuitos secuenciales.


Al seleccionar el botn Sistema secuencial. Autmatas aparecer la
ventana de la figura 2.43

Figura 2.43 Ventana de Sistema Secuencial

Al seleccionar la opcin Nuevo del men Archivo aparecer la


ventana de la figura 2.44 que nos permitir elegir el tipo de autmata con
el que se desea trabajar: Moore y Mealy (en el tipo Mealy tenemos que
ingresar el valor de la transicin y el valor de la salida por cada flecha,
mientras que en el Moore ingresamos la transicin en cada flecha y la
salida en cada crculo). As tambin, se establece la cantidad de entradas y
salidas y sus nombres respectivos.

Figura 2.44 Ventana de Sistema Secuencial

El ejemplo a desarrollar es el autmata de la figura 2.31 y el tipo de


autmata, Mealy. Una vez establecido la cantidad de variables y sus
nombres se hace clic en Aceptar para que aparezca la ventana de la
figura 2.44 donde se proceder a dibujar el autmata.
Hay que reconocer que la interfaz grafica para dibujar el autmata es un
poco dura, pero con un poco de prctica se lograr dominarla.
Primero dibujaremos los estados, 4 en este caso. Para ello se hace clic en el
botn crculo de la ventana Barra (barra de herramientas) y luego
hacemos clic en el fondo blanco tantas veces como estados deseemos.
Para dibujar las transiciones, seleccionamos el botn flecha derecha de la
ventana Barra y luego hacemos clic en el estado inicial y luego en el
37

estado final los cuales quedarn unidos mediante una flecha. Esta
operacin deber repetirse tantas veces como transiciones tenga el
autmata.

Figura 2.45 Ventana donde se dibuja el Autmata

Para hacer cualquier modificacin respecto a la posicin de los estados, se


debe seleccionar primero la flecha tipo puntero de mouse y luego arrastrar
el elemento a mover (crculo o flecha). As mismo se puede tambin
establecer los valores de las entradas y salidas; haciendo doble clic sobre
cualquier flecha, aparecer una ventana donde se ingresar la entrada y
salida respectivamente
Para visualizar el circuito abrimos el men Ver circuito y podemos elegir
la opcin Con flip-flops D

Figura 2.46 Circuito secuencial con Flip-Flop tipo D

38

O la opcin Con flip-flops JK

Figura 2.47 Circuito secuencial con Flip-Flop tipo JK

Otra opcin interesante es Simulacin interactiva del men Resultados


donde se podr simular las transiciones de los estados al tomar un valor
determinado la entrada x cada vez que se haga clic en el botn CLK

Figura 2.48 Ventana de simulacin interactiva

39

2.10. Simulacin de circuitos con Electronics WorkBench


Electronics Workbench (EWB) o Banco de Trabajo de Electrnica, es un
programa para disear y simular circuitos electrnicos y lgicos, desarrollado por
INTERACTIVE IMAGE TECHNOLOGIES LTD. El programa tiene una interfaz
grfica con el usuario que lo hace muy intuitivo, cmodo de usar y rpido de
trabajar, razn por la cual no vamos a describir, con detalle, como hacer los
circuitos sino, mas bien, las herramientas a usar para simular nuestros circuitos.

Activar
simulacin

Figura 2.50 Ventana principalde WorkBench

La figura 2.50 muestra la ventana principal del WorkBench v5.12, junto con
algunas cajas de herramientas que se van a emplear en el diseo y simulacin de
circuitos digitales.
Para iniciar el diseo de un circuito, se hace clic en el botn respectivo de la barra
de herramientas, para que aparezca la caja de herramientas con la que deseamos
trabajar (Logic Gates - Compuertas Lgicas, por ejemplo). A continuacin
seleccionamos el elemento de la caja de herramientas que queremos agregar y lo
arrastramos hacia el rea de trabajo (ventana de fondo blanco), esta operacin la
repetimos tantas veces como elementos deseemos.
Todos los elementos tienen una o ms salidas, las cuales al sealarlas con el
puntero del mouse aparece un crculo negro sobre ellas, lo cual indica que
podemos iniciar la operacin de conexin con otros componentes. Al arrastrar y
llegar a la salida (entrada) de otro componente, tambin aparecer un crculo
negro, con lo cual podemos finalizar la conexin.
Al finalizar este proceso veremos una lnea que conecta ambos componentes y as
sucesivamente se puede repetir esta operacin con el resto de elementos.
La figura 2.51 muestra un circuito terminado. Como se aprecia es el diagrama de
un sumador completo de un bit (figura 2.18) al cual se le han agregado una batera
40

de 5v, 3 switch (A, B y C), 2 probadores (rojo y azul) para poder hacer la
simulacin.

Figura 2.51 Circuito de un sumador completo de un bit

La batera se usa para simular los 0s y 1s digitales (0V. y 5V.) y los switch para
conmutar las entradas a 0V. o 5V. (0 o 1). Para establecer las propiedades de los
componentes basta con hacer doble clic sobre ellos y elegir la ficha respectiva
donde se establecern los valores deseados. Por ejemplo, hacer doble clic sobre
batera, elegir la ficha Value y establecemos el valor de 5V, para los switch,
tambin, elegimos la ficha Value y establecemos la tecla (A, B y C
respectivamente) con la cual conmutar el switch.
Para iniciar la simulacin hacer clic en el botn 0/1 que se encuentra en la esquina
superior derecha de la ventana. Bastar con presionar A, B o C para conmutar las
entradas para las compuertas. Cada vez que la salida sea 1, los probadores se
encendern con el color respectivo.
El ejemplo anterior es slo para iniciarnos en el proceso de simulacin pero lo mas
apropiado es utilizar el Generador de Palabras (Word Generador) tal como se
muestra en la figura siguiente:

Figura 2.52 Circuito del sumador completo con el generador de palabras

Un Generador de Palabras es un instrumento que permite generar palabras de 16


bits y hacer que sus salidas contengan estos valores. Al conectar las salidas del
Generador de Palabras a las entradas de los diferentes componentes podemos
estudiar el comportamiento del circuito, o mejor dicho las salidas de ste, frente a
un conjunto de valores de entrada.
El Generador de Palabras es el 5to botn (Word Generador) de la caja de
herramientas Instruments (Instrumentos) y al hacer doble clic sobre l aparecer
la ventana de la figura 2.53, con la cual podemos configurarlo.

41

Figura 2.53 Ventana de configuracin del Generador de Palabras

En la parte izquierda hay una lista donde se puede ingresar las palabras en
hexadecimal (4 dgitos) que deseamos generar. Esto tambin lo podemos hacer
ubicndonos primero en la posicin dentro de la lista donde deseamos insertar la
palabra y luego en la parte inferior derecha (Binary) escribir el valor en binario
(16 dgitos).
En el rea Address se puede ver:
Edit.- Muestra el valor de la palabra a generar, ingresada o editada.
Current.- Cuando se esta simulando, muestra el valor actual que se est
generando o que esta presente en las salidas del generador.
Initial.- Muestra o establece la direccin de la primera palabra a generar.
Final.- Muestra o establece la direccin de la ltima palabra a generar.
En Frecuency se establece la frecuencia con la que se generaran las palabras. Para
la simulacin es recomendable 1 Hz, pero se puede cambiar a kHz o MHz
Finalmente en la parte superior derecha se encuentran 4 botones que permiten
establecer el ciclo de generacin de las palabras
Cycle.- Permite generar las palabras en forma cclica, es decir que una vez
que se genero la ltima, contina con la primera y as sucesivamente.
Burst.- Una vez generada la ltima palabra se detiene.
Step.- En esta modalidad, cada vez que se desee generar una palabra se tiene
que hacer clic en este botn.
Breakpoint.- Sirve para crear puntos de parada, es decir que, cuando se vaya
a generar cierta palabra establecida como Breakpoint el simulador se detiene.
Para ello slo basta seleccionar la palabra y hacer clic en este botn
Pattern.- Muestra una ventana que permite establecer la forma como se
llenar la lista de palabras:
v Clear buffer: Limpia la lista de palabras (la llena de ceros).
v Open: Carga la lista de palabras desde un archivo texto.
v Save: Graba en un archivo texto la lista de palabras.
v Up counter: Carga la lista de palabras desde el 0000 hasta el 03FF.
v Down counter: Carga la lista de palabras desde el 03FF hasta el 0000.
v Shift right: Carga la lista de palabras con potencias de 2 (decrecientes).
v Shift left: Carga la lista de palabras con potencias de 2 (crecientes).
42

Otro instrumento interesante es el Convertidor Lgico (Logic Converter). Es el


7mo botn de la caja de herramientas Instruments. Este instrumento permite
generar la tabla de verdad, la expresin booleana original y simplificada a partir de
un circuito. Tambin permite crear una tabla de verdad y a partir de ella las
expresiones booleanas correspondientes as como el circuito respectivo.
La figura 2.54 muestra las conexiones que se deben realizar para evaluar la salida
F del circuito de la figura 2.3.

Figura 2.54 Conexin del Convertidor Lgico

Igual que el caso anterior, hacer doble clic sobre el Convertidor Lgico para que
aparezca la ventana de la figura 2.55 que es donde se visualizan los resultados

Figura 2.54 Ventana del Convertidor Lgico

Con el primer botn, se generar la tabla de verdad con los respectivos valores
de la funcin de salida
Con el segundo botn se obtiene la expresin booleana tomada directamente
de la tabla, sin simplificar (maxtrminos).
Con el tercer botn se obtiene la expresin booleana simplificada

Tambin se puede trabajar sin tener un circuito, generando una tabla de verdad o
ingresando una expresin booleana.
En el primer caso, se hace clic sobre las variables que se van a usar (A, B, C,H)
y en forma automtica se va generando la tabla de verdad. Luego hay que ubicarse
sobre los valores que aparecen a la derecha (funcin de salida) y establecer los
nuevos. Ahora ya podemos hacer uso del segundo, tercero, quinto y sexto botn.
43

En el segundo caso se ingresa una expresin booleana en el rectngulo blanco de


la parte inferior de la ventana, con lo que luego se podr hacer uso de los botones
cuarto, quinto y sexto

Con el cuarto botn, dada una expresin booleana, se obtiene la tabla de


verdad a partir de dicha expresin.
Con el quinto botn, a partir de una expresin booleana, se obtiene el circuito
o diagrama.
Con el sexto botn se obtiene el diagrama pero compuesto por slo
compuertas NAND

Ahora veamos un circuito secuencial.


Al diagrama de la figura 2.37 se le ha agregado una batera y witch, para simular
los valores de la entrada X. Algo semejante se pudo haber usado para generar la
seal de reloj (CLK) que se encarga de sincronizar los flip-flops, pero en su lugar
es mejor usar un Generador de Seales (Function Generator) tal como se puede
ver en la figura 2.55

Figura 2.55 Circuito con Generador de Seales

El Generador de Seales, es un instrumento que se usa para generar 3 tipos de


seales u ondas: Sinusoidal, triangular y cuadrada
Haciendo doble clic en el Generador de Seales aparecer una ventana que
permitir establecer la configuracin de ste. Aqu se puede seleccionar el tipo de
seal, frecuencia, amplitud, ciclo til y desplazamiento. Ver figura 2.56

Figura 2.56 Generador de Seales

44

2.11. Ejercicios resueltos y propuestos


2.11.1. Resueltos
a) Simplificar AB+A(CD+CD)
AB+A(C(D+D)
AB+A(C(1))
AB+AC
A(B+C)
b) Simplificar (BC+AD)(AB+CD)
BCAB+BCCD+ADAB+ADCD
ABBC+BCCD+AABD+ACDD
AC + BD + BD + AC
AC+AC+ BD+ BD
AC+BD
c) Dada la funcin boaleana: F=XYZ+XYZ+XYZ
i.
Listar la tabla de verdad
Los trminos que conforman la expresin booleana son los
valores de las variables para las cuales F es 1, por consiguiente:
Para XYZ=101, XYZ=001, XYZ=111 F=1 entonces:
X
0
0
0
0
1
1
1
1

Y
0
0
1
1
0
0
1
1

Z
0
1
0
1
0
1
0
1

F
0
1
0
0
0
1
0
1

ii.

Simplificar la expresin booleana


XYZ+XYZ+XYZ
(X+X)YZ+XYZ
(1)YZ+XYZ
YZ+XYZ
(Y+XY)Z
((Y+X)(Y+Y))Z
((Y+X)(1))Z
(Y+X)Z
YZ+XZ

iii.

Dibujar el diagrama lgico original y el simplificado

45

d) Simplificar la siguiente funcin usando mapas de Karnaugh


F(x,y,z)= (1,2,3,6,7)
La funcin original es: F=XYZ+XYZ+XYZ+XYZ+XYZ

Z
Z

XY
0
0
1
1

XY
2
1
3
1

XY
6
1
7
1

XY
4
0
5
0

La funcin simplificada quedar: F=XZ+Y


e) Simplificar la siguiente funcin usando mapas de Karnaugh
F(x,y,z)= (0,2,3,4,6)
La funcin original es: F=XYZ+XYZ+XYZ+XYZ+XYZ
Z

Z
0

XY

0
2

XY

1
6

XY

F=Z+XY

0
4

XY

La funcin simplificada quedar:

f) En una cierta empresa los cuatro directivos se distribuyen las acciones


segn A=45%, B=30%, C=15% y D=10%. Disear una mquina de
escrutinio sabiendo que cada miembro tiene un porcentaje de voto
igual a su nmero de acciones y que para aprobar una mocin los votos
afirmativos deben superar el 50 %
Cada vez que A=1 se deber sumar 45% al resto de los votos, si B=1
se debe adicionar un 30% ms, si C=1 un 15% ms y si D=1 un 10%
ms. Si al final la suma de los porcentajes es mayor que 50% entonces
F=1. Con lo anterior se construye la tabla siguiente:
0
1
2
3
4
5
6
7

A
0
0
0
0
0
0
0
0

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
0
0
0
0
0
0
0
1

8
9
10
11
12
13
14
15

A
1
1
1
1
1
1
1
1

B
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1

F
0
1
1
1
1
1
1
1

La expresin booleana resultante es:


F=ABCD+ABCD+ABCD+ABCD+ABCD+ABCD+ABCD+ABCD

Simplificndola ya sea por lgebra booleana o por mapas de karnaugh


quedara:
F=AB+AC+AD+BCD=A(B+C+D)+BCD
46

El diagrama lgico del dispositivo es:

g) Se desea gobernar un motor desde 4 interruptores: A,B,C y D de forma


que entre en funcionamiento si estn cerrados 3 y slo 3 de ellos.
1, 2, 4 y 8 son nmeros con 3 bits igual a 0, por lo tanto:
F(A,B,C,D)= (1,2,4,8)
Luego: F=ABCD+ABCD+ABCD+ABCD
Al no poderse simplificar el diagrama lgico queda:

h) Un circuito secuencial tiene 2 flip-flops D: A y B; 2 entradas X y Y, y


una salida Z. Las ecuaciones de entrada de los flip-flops y la salida del
circuito son como sigue: DA=XY+XA, DB=XB+XA y Z=B
i. Tabular la tabla de estadosDibujar el diagrama lgico del circuito
Estado actual
A
B
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1

Entradas
x
y
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1

Estado nuevo
A
B
0
0
1
0
0
0
0
0
0
1
1
1
0
0
0
0

Salida
z
0
0
0
0
1
1
0
0

47

Estado actual
A
B
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1

Entradas
x
y
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1

Estado nuevo
A
B
0
0
1
0
1
1
1
1
0
1
1
1
1
1
1
1

Salida
z
0
0
1
1
1
1
1
1

Con las ecuaciones de entrada se llena la tabla anterior, recordando


que DA es el nuevo estado del flip-flop A y DB del flip-flop B es
decir que: A=DA=XY+XA y B=DB=XB+XA
ii. Dibujar el diagrama lgico del circuito.

iii. Dibujar el diagrama de transicin de estados.


00/0
00/1
10/0
(10|11)/0
00

01

11/0
01/0

00/0

01/1

10

01/0

00/1

11

(10|11)/1

01/1
10/1

11/1

Donde el rotulado de las flechas significa: xy/z


i) Disee un contador binario de 2 bits usando flip-flop JK. El contador
debe tener una entrada X la cual cuando es 0 el contador es ascendente
y cuando X=1, descendente.
Como el contador es de 2 bits significa que se va a requerir de 2 flipflop y por consiguiente existirn 4 estados 00, 01, 10 y 11 que su vez
se correspondern con las salidas deseadas 0, 1, 2 y 3, es decir que no
se requiere de salida alguna ya que el estado o salida del flip-flop ser
la salida del contador
48

Primero disearemos el diagrama de estados de transicin


0
00

01

1
1

1
1

11

10

Luego, haciendo uso de la tabla de excitacin para flip-flop JK, la tabla


de estados
Estado actual
Q0
A
B
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1

Entrada
X
0
1
0
1
0
1
0
1

Estado nuevo
Q1
A
B
0
1
1
1
1
0
0
0
1
1
0
1
0
0
1
0

FF-A
JA
0
1
1
0
?
?
?
?

FF-B

KA
?
?
?
?
0
1
1
0

JB
1
1
?
?
1
1
?
?

KB
?
?
1
1
?
?
1
1

Y mediante mapas de Karnaugh hallar JA, KA, JB y KB en funcin de A,


ByX
JA

AB

AB

AB

AB

2
6
4

1
3

0
7

?
5

JA=BX+BX

KA

AB

AB

AB

AB

2
6
4

?
3

?
7

0
5

KA=BX+BX

JB

AB

AB

AB

AB

2
6
4

JB=1

1
3

?
7

?
5

KB

AB

AB

AB

AB

KB=1

Finalmente usando las ecuaciones booleanas diseamos el diagrama


lgico

49

2.11.2. Propuestos
a) Simplificar XZ + YZ + YZ + XY
b) Simplificar (A+B)(A+C)(B+C)
c) Dada la funcin boaleana: AC + BD + ACD + ABCD
i.
Listar la tabla de verdad
ii.
Simplificar la expresin booleana
iii.
Dibujar el diagrama lgico original y simplificado
d) Indicar, explicando su respuesta, cual de las siguientes igualdades es
correcta.
i.
a b + a c + c b = (a + b) ( a + c ) ( c + b )
ii.
(a + b + c )( a + b + c ) + a b = ( a b c + a b c) ( a + b )
iii.
a (a c) = a b a c
e) Simplificar la siguiente funcin usando mapas de Karnaugh
F=ABC+ABC+ABC+ABC+ABC
f) Se desea controlar dos motores M1 y M2 por medio de los contactos de
tres interruptores A, B y C, de forma que se cumplan las siguientes
condiciones:
i.
Si A est cerrado y los otros dos no, se activa M1.
ii.
Si C est cerrado y los otros dos no, se activa M2.
iii.
Si los tres interruptores estn cerrados se activan M1 y M2.
Para el resto de condiciones los motores estarn parados.
g) Disee un circuito lgico que tenga 4 entradas y una salida. Las 4
entradas son para ingresar un nmero de 4 bits y la salida debe ser 1
cuando el nmero sea mayor que 2 y menor que 8.
h) Disee un contador mdulo 8 (diagrama lgico y diagrama de estados)
con flip-flop tipo D.
i) Dado el siguiente diagrama de estados disee el diagrama lgico
usando flip-flops tipo JK

0
0
1

0
0

50

III COMPONENTES DIGITALES


3.1. Registros.
El uso ms comn de los flip-flops es para el almacenamiento de datos o
informacin. Los datos generalmente se almacenan en grupos de flip-flops
llamados registros, donde cada flip-flop es capaz de almacenar un bit de
informacin. Un registro de N bits es un grupo de N flip-flops y puede almacenar
cualquier informacin binaria de N bits.
En realidad, un registro est conformado por un conjunto de flip-flops, que se
encargan de almacenar o retener la informacin y un conjunto de compuertas que
controlan cundo y cmo se transfiere la informacin.
Antes de ver algunos tipos de registros, hablemos primero de las entradas
asncronas de los flip-flops. Estas entradas aparecen en la parte superior (Preset) e
inferior (Reset) de cada flip-flop y permiten establecer a 0 o 1 la salida,
independientemente de la entrada o de la seal del reloj. El comportamiento del
flip-flop se puede apreciar en la siguiente tabla
PRESET
0
0
1

RESET
0
1
0

SALIDA
1 (No se utiliza)
1
0
Se sincroniza con
la entrada

3.1.1. Registro simple (de 4bits).


Es un registro que est compuesto por slo flip-flops.
Segn la tabla anterior, si PRESET=1, RESET=1 y llega a los flip-flops un
flanco positivo del reloj, entonces S0=E0, S1=E1, S2=E2 y S3=E3, es decir
que, la salida estar sincronizada con la entrada. Cuando PRESET=1,
RESET=0, entonces S0=S1=S2=S3=0 que es equivalente a limpiar el
registro o hacerlo cero. Ntese que PRESET siempre ser 1, ver figura 3.1

Figura 3.1 Registro simple de 4 bits sin compuertas

51

3.1.2. Registro de carga paralela.


Se trata de un registro cuyas entradas E no son transferidas a las salidas S
mientras no se aplique una seal de carga L. Cuando L=0, D deber
permanecer sin cambios (D=Q) y cuando L=1, D deber ser igual a la
entrada (D=E), ya que en el siguiente pulso de reloj D ser transferido a Q
o sea S. Con esta informacin se puede construir la siguiente tabla de
verdad, para flip-flop tipo D:
L
0
0
0
0
1
1
1
1

E
0
0
1
1
0
0
1
1

Q
0
1
0
1
0
1
0
1

D
0
1
0
1
0
0
1
1

De la tabla, se obtiene la siguiente funcin lgica:


D = LEQ + LEQ + LEQ + LEQ
la cual al simplificarla quedar:
D = LQ + LE
Con la expresin anterior se puede disear un registro de un bit, bastar
con replicar ste, tantas veces como bits se desea que tenga el registro. Ver
el diagrama del registro de 4 bits de la figura 3.2

Figura 3.2 Registro 4 bits de carga paralela

52

3.1.3. Registro de corrimiento


Es un registro con la caracterstica de desplazar sus bits almacenados, una
posicin con cada pulso de reloj.
En la figura 3.3 muestra un registro de 4 bits con entrada serial E y salida
serial S. Como se puede observar la salida Q del primer flip-flop est
conectado con la entrada D del segundo flip-flop, la salida Q del segundo
con la entrada del tercero y as sucesivamente, con esto se logra que en
cada pulso de reloj, la salida de un flip-flop pase a ser la entrada del
siguiente, lo cual genera un corrimiento de bits.
En este caso es un registro de 4 bits, el bit que entra por la entrada E
aparecer en la salida S despus de 4 pulsos de reloj.

Figura 3.3 Registro de corrimiento de 4 bits

3.1.4. Registro de corrimiento con carga paralela


Si analizamos el diagrama de la figura 3.2 las salidas de las compuertas
OR (que luego sern las entradas D) sers 1: si L=1 y E=1 o si L=0 y Q=1.
En otras palabras, si L=1, la entrada D del flip-flop ser igual al valor de la
entrada E, en caso contrario (L=0) ser igual a la entrada de la primera
compuerta AND que en este caso es la salida del mismo flip-flop, logrando
mantener sin cambios la salida. Ahora, si queremos generar un corrimiento
cuando L=0 (ya no mantener sin cambios), entonces la salida Q de un flipflop tiene que estar conectada a la compuerta AND del siguiente flip-flop
para transferirla a la entrada D (en el siguiente pulso de reloj) del flip-flop
que se encuentra a continuacin, tal como se muestra en la figura 3.4

Figura 3.4 Registro de corrimiento con carga paralela

53

De la figura 3.4 se obtienen las siguientes ecuaciones lgicas:


D0=S0=ESerL+ E0L
D1=S1=S0L+E1L
D2=S2=S1L+E2L
D3=S3=SSer=S2L+E3L
Cuando L=0, el registro realiza una carga serial a travs de la entrada ESER. En cada pulso de reloj el valor de esta entrada es transferida a la
salida S0, lo que haba en S0 es transferido a S1 y as sucesivamente hasta
llegar a S2 que es transferido a S3 (S-SER) que es la salida serial.
Cuando L=1, en cada pulso de reloj, los valores de las entradas E0, E1, E2 y
E3 son transferidas a S0, S1, S2 y S3 respectivamente.

3.2. Contadores.
Es un circuito secuencial sincronizado cuyo diagrama de estados contiene un solo
ciclo, es decir que en cada pulso de entrada, el circuito pasa por una secuencia de
estados predeterminados. Estos circuitos se usan para contar el nmero de
ocurrencias de un evento y son tiles para generar seales de tiempo.
3.2.1. Contadores asncronos o de propagacin.
Es un contador que est conformado por slo flip-flops y ningn otro
componente. En este tipo de contador no todos los flip-flops cambian de
estado simultneamente debido a que la seal de reloj se aplica solamente
al primer flip-flop el cual al tener sus entradas J y K en 1 (al igual que el
resto de flip-flops) complementar su salida Q en cada pulso. Esta salida Q
a su vez ser la seal de reloj del siguiente flip-flop y as sucesivamente.
La salida Q del primer flip-flop es el bit menos significativo del contador,
ver figura 3.5.
Este tipo de contador es el ms lento de todos.

Figura 3.5 Contador asncrono

Ver diagrama de tiempos


S0
S1
S2
S3

54

3.2.2. Contadores sincrnicos.


Todos los flip-flops de este tipo de contador estn conectados a la misma
seal de reloj, por lo tanto, las salidas de los flip-flops se actualizan al
mismo tiempo.
El contador que se va a estudiar es un contador de 4 bits con entrada de
activacin, es decir, que cuando la entrada E sea 1 inicie o continu el
conteo y cuando sea 0 se detenga y mantenga sin cambios las salidas de los
flip-flops.
Observar la tabla de estados siguiente:
E
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

Estado inicial
Q3 Q2 Q1 Q0
Cualquier valor
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1

Estado siguiente
Q3 Q2 Q1 Q0
Sin cambios
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
0
0
0
0

3
JK
00
0X
0X
0X
0X
0X
0X
0X
1X
X0
X0
X0
X0
X0
X0
X0
X1

2
JK
00
0X
0X
0X
1X
X0
X0
X0
X1
0X
0X
0X
1X
X0
X0
X0
X1

1
JK
00
0X
1X
X0
X1
0X
1X
X0
X1
0X
1X
X0
X1
0X
1X
X0
X1

0
JK
00
1X
X1
1X
X1
1X
X1
1X
X1
1X
X1
1X
X1
1X
X1
1X
X1

Resolviendo el sistema de ecuaciones lgicas se obtiene:


J0 = K0 = E
J1 = K1 = EQ0
J2 = K2 = EQ0Q1
J3 = K3 = EQ0Q1Q2
Ver figura 3.6

Figura 3.6 Contador sncrono

55

3.3. Decodificadores Codificadores.


3.3.1. Decodificadores
Es un circuito lgico que acepta un conjunto de N entradas que representan
nmeros binarios y que activa solamente 1 de las M salidas, que
corresponde a dicho dato de entrada. Donde 2NM.
Por ejemplo un decodificador de 2 a 4 con entradas I1 e I0, por donde se
puede ingresar nmeros de 2 bits (de 0 a 3). Cuando el valor ingresado es 0
(00) se activar slo la salida S0, cuando sea 1(01) slo S1, cuando sea 2
(10) slo S2 y cuando sea 3 (11) slo se activar S3. Si adems se desea
contar con una entrada de activacin E, la tabla de este circuito quedar
como se muestra a continuacin:

E
0
1
1
1
1

I1
x
0
0
1
1

I0
x
0
1
0
1

S3
0
0
0
0
1

S2
0
0
0
1
0

S1
0
0
1
0
0

S0
0
1
0
0
0

Figura 3.7 Tabla de verdad de un decodificador de 2 a 4

Cuando la entrada de activacin E es 0, no importa que valor tengan las


entradas I, las salidas Si sern todas 0.
De la tabla anterior se puede fcilmente obtener el diagrama lgico del
decodificador de 2 a 4, como se muestra en la figura 3.7.

Figura 3.8 Diagrama lgico del decodificador de 2 a 4

Se puede combinar 2 o ms decodificadores con entradas de activacin


para formar un decodificador con mayor nmero de salidas. As por
ejemplo, con 5 decodificadores de 2 a 4 con entrada de activacin se puede
obtener un decodificador de 4 a 16. La idea bsica es que un decodificador
controle a los otros 4 mediante sus entradas de activacin. Las entradas de
este decodificador sern los 2 bits ms significativos (I3 e I2) del nmero
binario a ingresar y sus salidas se conectaran a las entradas de activacin
de los otros 4 decodificadores, de esta forma cuando los bits I3 e I2 sean 00

56

se activar el primer decodificador; cuando sea 01, el segundo; 10 el


tercero y 11 el cuarto.
Los bits menos significativos (I1 e I0) se conectan a las entradas de cada
uno de los cuatro decodificadores y son los que establecern la salida a
activar del decodificador activo.
Por ejemplo, si los bits menos significativos (I1 e I0) son 1 y 0, se debern
activar las salidas S2, S6, S10 y S14, pero son los bits ms significativos los
que definirn el decodificador a activar. Si estos son 0 y 1 (el valor binario
ser 0110) se activar slo el segundo decodificador y por lo tanto la nica
salida que se activar ser S6. Pero si stos hubieran sido 1 y 0 (el valor
binario sera 1010) se activar slo el tercer decodificador y entonces la
salida que se activar ser S10.
Esto se puede observar en la figura 3.9

S0
S1
S2
S3

I0

I1

S4
S5
S6
S7

I2

S8
S9
S10
S11

I3
E

S12
S13
S14
S15

Figura 3.9 Decodificador de 4 a 16 con decodificadores de 2 a 4

3.3.2. Codificadores
Este circuito hace la funcin inversa al Decodificador, es decir, que acepta
una sola entrada (de las M posibles) y activa 0 o varias salidas de las N
posibles codificando un nmero binario. Aqu tambin se cumple que
M2N.
Por ejemplo un codificador de 4 a 2 tiene 4 entradas I, de las cuales slo
una puede estar activa a la vez, y 2 salidas S que forman un nmero binario
de 2 bits, por lo tanto si se activara la entrada I2 en las salidas S1 y S0
debera formarse el nmero binario 10 y si se activara la entrada I0 la salida
binaria ser 00. Si seguimos con este anlisis se podr construir la tabla de
la figura 3.10

I3
0
0
0
1

I2 I1
0 0
0 1
1 0
0 0
Resto

I0
1
0
0
0

S1
0
0
1
1
x

S0
0
1
0
1
x

Figura 3.10 Tabla de verdad de un codificador de 4 a 2

57

De la tabla anterior se puede obtener una expresin de suma de productos


y otra de producto de sumas:
S1=I1I0
S1=I3+I2

S0=I2I0
S0=I3+I1

(suma de productos)
(producto de sumas)

Con las que se puede disear dos diagramas lgicos. Ver figura 3.11

Figura 3.11 Diagramas lgicos de un codificador de 4 a 2

Pero qu pasa cuando se activa ms de una entrada a la vez?


En estos casos slo se debe tener en cuenta la entrada (bit) ms
significativa o la entrada menos significativa.
En el ejemplo siguiente se va a considerar el bit menos significativo para
un codificador de 4 a 2. No importa cuantas entradas se activen a la vez
slo se tomar en cuenta la entrada menos significativa. La tabla de verdad
y el diagrama de este codificador se pueden apreciar en las figuras 3.12 y
3.13 respectivamente.
I3
x
x
x
1

I2 I1
x x
x 1
1 0
0 0
Resto

I0
1
0
0
0

S1
0
0
1
1
x

S0
0
1
0
1
x

Figura 3.12 Tabla de verdad de un codificador de 4 a 2


con prioridad de bit menos significativo

Figura 3.13 Diagrama lgico de un codificador de 4 a 2


con bit menos significativo de prioridad

58

3.4. Multiplexores y Demultiplexores.


3.4.1. Multiplexores.
Tambin llamado selector de datos. Es un circuito combinatorio que acepta
2N entradas de datos y permite slo a una de ellas alcanzar la salida. La
seleccin de una de esas 2N entradas se hace a travs de N entradas,
llamadas entradas de seleccin.
Por ejemplo un multiplexor de 2 a 1, implica 2 entradas de datos I y 1
entrada de seleccin S, adems de una entrada de activacin E. cuando la
entrada E=0 no importa que valores tengan las entradas, las salida Z ser 0.
Cuando E=1, si S=0 entonces Z=I0 en caso contrario (S=1) Z=I1. Mirar la
tabla de verdad y tabla de funciones de la figura 3.14

E
0
1
1
1
1
1
1
1
1

I1
x
0
0
0
0
1
1
1
1

I0
x
0
0
1
1
0
0
1
1

S
x
0
1
0
1
0
1
0
1

Z
0
0
0
1
0
0
1
1
1

E
0
1
1

S
X
0
1

Z
0
I0
I1

Figura 3.14 Tabla de verdad y de funciones de un


multiplexor de 2x1

De la tabla de verdad, fcilmente se puede disear el diagrama lgico


mostrado en la figura 3.15

Figura 3.15 Diagrama lgico de un multiplexor de 2x1

Para un multiplexor de 4 a 1, se necesitarn 4 entradas I, 2 entradas de


seleccin S y una entrada de activacin E, lo cual suma en total 7 entradas.
Para poder mostrar la tabla de verdad se necesitara 128 filas (7 variables),
por eso es ms prctico usar una tabla de funciones para representar el
comportamiento de un multiplexor.

59

En la figura 3.16 se puede observar la tabla de funciones que muestra


como la salida Z depende de las entradas Ii y de las entradas de seleccin
Si. As tambin se muestra el respectivo diagrama lgico.

E
0
1
1
1
1

S1
x
0
0
1
1

S0
x
0
1
0
1

Z
0
I0
I1
I2
I3

Figura 3.16 Tabla de funcin y diagrama lgico de un multiplexor de 4x1

Al igual que los decodificadores, tambin se puede obtener multiplexores


con un nmero mayor de entradas a partir de multiplexores menores. Por
ejemplo, se puede formar un multiplexor de 8 a 1 con 2 multiplexores de 4
a 1.
Las entradas de seleccin S1 y S0 se conectan a las respectivas entradas de
seleccin de los multiplexores. Estas sern las que seleccionen las parejas
I0-I4, I1-I5, I2-I6 o I3-I7 para que pasen a la salida Z. Pero ser finalmente S2,
que est conectado a las entradas E de los multiplexores, el que determine
cual de los 2 multiplexores se activar, entonces si S1 y S0 es, por ejemplo,
10 las entradas I que podrn salir son I2 e I6. Si S2=0 entonces Z=I2 y sino
(S2=1) Z=I6. Ver figura 3.17

Figura 3.17 Multiplexor de 8x1 con multiplexores de 4x1

60

3.4.2. Demultiplexores.
Es un circuito que hace la operacin inversa de un multiplexor, es decir,
toma una sola entrada de datos y la distribuye en una de 2N salidas,
utilizando para ello N entradas de seleccin.
El ejemplo que se va a estudiar es un demultiplexor de 1 a 4 con entrada E
de activacin. Este demultiplexor tiene una entrada I, dos entradas S de
seleccin una entrada E y cuatro salidas Q con lo que se puede disear la
siguiente tabla de verdad y su tabla resumen, figura 3.18.

E
0
1
1
1
1
1
1
1
1

I
x
0
0
0
0
1
1
1
1

S1
x
0
0
1
1
0
0
1
1

S0
x
0
1
0
1
0
1
0
1

Q3
0
0
0
0
0
0
0
0
1

Q2
0
0
0
0
0
0
0
1
0

Q1
0
0
0
0
0
0
1
0
0

Q0
0
0
0
0
0
1
0
0
0

E
0
1
1
1
1

S1
x
0
0
1
1

S0
x
0
1
0
1

Q3
0
0
0
0
I

Q2
0
0
0
I
0

Q1
0
0
I
0
0

Q0
0
I
0
0
0

Figura 3.18 Tabla de verdad y tabla resumen de un demultiplexores de 1 a 4

De la tabla de verdad se obtienen las expresiones lgicas:


Q0=E I S1 S0
Q2=E I S1 S0

Q1=E I S1 S0
Q3=E I S1 S0

Y con ellas se puede disear el diagrama lgico de la figura 3.19

Figura 3.19 Diagrama lgico de un demultiplexores de 1 a 4

61

3.5. Ejercicios resueltos y propuestos


3.5.1. Resueltos.
a) Disee un contador mdulo 6 (que cuente desde 0 hasta 5) usando flipflops tipo JK.
Como son 6 estados debe haber por lo menos 3 flip-flops (23=8) A, B y
C (flip-flops JK en este caso). Las 3 salidas Q de los flip-flops
constituirn los dgitos binarios. Por ejemplo, cuando los flip-flops A,
B y C tengan los valores 010 (2), respectivamente, al llegar el siguiente
pulso de reloj debern pasar a 011 (3) y luego a 100 (4) y as
sucesivamente. Cuando el contador llegue a 101 (5) deber pasar luego
a 000 (0) ya que es modulo 6. En la tabla siguiente se muestra la tabla
de estados de este contador.
Estado actual
Q0
A B C
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1

Estado nuevo
Q1
A
B
C
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
x
x
x
x
x
x

FF-A
JA
0
0
0
1
x
x
x
x

KA
x
x
x
x
0
1
x
x

FF-B
JB
0
1
x
x
0
0
x
x

KB
x
x
0
1
x
x
x
x

FF-C
JC
1
x
1
x
1
x
x
x

KC
x
1
x
1
x
1
x
x

De la tabla anterior y usando Mapas de Karnaugh se obtienen las


siguientes expresiones:
JA = AC = QA.QC
JB = AC = QA'.QC
JC = 1

KA = C = QC
KB = C = QC
KC = 1

Y con ellas el diagrama respectivo

Donde el bit ms significativo es QA y el menos significativo QC

62

b) Analice el siguiente contador de 4 bits, el cual ha sido diseado para no


seguir la secuencia completa de los 16 estados. Determine su
secuencia.

Analizando el diagrama podemos obtener las siguientes expresiones:


JA = KA = 1
JB = KB = QAQD
JC = KC = QAQB
JD = QAQBQC KD = QA
Aplicando Q1 = JQ0 + KQ0 Se completa la tabla siguiente:
Estado actual
Q0
A B
C
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
0
1
1
1
0
0
1
0
0
1
0
1
1
0
1
1
1
0
1
1
0
1
1
1
1
1
1

FF-A
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

JA
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

KA
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

FF-B
JB
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1

KB
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1

FF-C
JC
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1

KC
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1

FF-D
JD
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1

KD
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

Estado nuevo
Q1
A B C D
1
0 0 0
1
0 0 1
1
0 1 0
1
0 1 1
1
1 0 0
1
1 0 1
1
1 1 0
1
1 1 1
0
0 0 0
0
1 0 0
0
0 1 0
0
1 1 0
0
1 1 0
0
0 1 0
0
1 0 1
0
0 0 0

Asumiendo que A es el bit ms significativo y D el menos significativo


podemos concluir lo siguiente:
Si los flip-flops se inicializan con 0000 (0), con el siguiente pulso de
reloj pasaran a 1000 (8) y si vamos a la tabla veremos que de este
estado se pasar, luego, a 0000. Esto significa que slo habr 2 estados.
Pero si se inicializa con 0001 (1), la secuencia ser la siguiente: 0001,
1001, 0100, 1100, 0110, 1110, 0101, 1101, 0010, 1010, 0010, 1010,
Es decir que cuando entra al estado 1010 pasar a 0010, luego a 1010 y
as sucesivamente.
63

c) Construir un decodificador de 5 a 32 lneas, con cuatro decodificadores


de 3 a 8 lneas, con habilitacin y un decodificador de 2 a 4 lneas.

Se debe tener en cuenta en el diagrama que la entrada inferior de cada


decodificador de 3x8 es la entrada de activacin E. Las salidas S0,
S1,, S7, para simplificar el diagrama, son representadas con un solo
conector cuando en realidad son 8, igual ocurre con el resto de salidas.
d) Disee el diagrama lgico de un decodificador de 2 a 4 lneas con
entrada de activacin E, slo usando compuertas NOR
Observando la tabla de verdad de la figura 3.7, se obtiene que:
S0 = EI1I0 = (E+I1+I0) =(E+(I1+I0)) = (E+(I1+I0))
= E NOR (I1 NOR I0)
S1 = EI1I0 = (E+I1+I0) =(E+(I1+I0)) = (E+(I1+I0))
= E NOR (I1 NOR I0)
S2 = EI1I0 = (E+I1+I0) =(E+(I1+I0)) = (E+(I1+I0))
= E NOR (I1 NOR I0)
S3 = EI1I0 = (E+I1+I0) =(E+(I1+I0)) = (E+(I1+I0))
= E NOR (I1 NOR I0)
No olvidar que: A = A NOR A
Con las expresiones anteriores se puede disear el diagrama del
decodificador de 2x4 tal como lo muestra la figura siguiente:

64

e) Los habitantes del planeta Xinus emplean el sistema de numeracin


base 5 y usan un display de tres segmentos, tal como se muestra en la
figura, disee un decodificador (de binario) para controlar dicho
display.
0

Asumamos que el segmento: | es A, / es B, \ es C y N2N1N0 es un


nmero de 3 bits, con esto construimos la siguiente tabla de verdad:
N2
0
0
0
0
1
1
1
1

N1
0
0
1
1
0
0
1
1

N0
0
1
0
1
0
1
0
1

A
1
0
1
1
1
x
x
x

B
1
1
1
0
0
x
x
x

C
1
1
0
1
0
x
x
x

De la tabla de verdad obtenemos las siguientes expresiones lgicas


simplificadas:
A=N1 + N0
B=N1 N0 + N2N0
C=N2 N1 + N0
Y con las expresiones lgicas, el diagrama correspondiente:

f) Disear un circuito que eleve al cuadrado un nmero de 2 bits usando


un decodificador y compuertas NOR.
Como ya sabemos las salidas S3, S2, S1 y
S0 slo una de ellas va a estar activa a la
vez y depender de las entradas I1 e I0 que
conformaran el nmero N de 2 bits.
Entonces lo que hay que hacer es disear un circuito con compuertas
NOR que tome como entradas S3, S2, S1, S0 y genere una nueva salida
D3, D2, D1, D0 que sea el cuadrado de N (I1I0)

65

Por consiguiente se tiene 4 variables S de entrada y 4 funciones D de


salida tal como se muestra en la siguiente tabla:
I1
0
0
1
1

I0
0
1
0
1

S3
0
0
0
1

S2 S1
0 0
0 1
1 0
0 0
Resto

S0
1
0
0
0

D3
0
0
0
1
x

D2
0
0
1
0
x

D1
0
0
0
0
x

D0
0
1
0
1
x

Usando mapas de Karnaugh fcilmente podemos determinar las


siguientes expresiones:

D0 = S2S0 = (S2+S0)
D1 = 0
D2 = S2
D3 = S3
g) Construir un multiplexor de 16 a 1 lnea con dos multiplexores de 8 a 1
lneas y uno de 2 a 1 lnea.
I0
I1
.
.
.
I7

I8
I9
.
.
.
I15

S3 S2 S1 S0

Las 3 entradas de seleccin (S2, S1 y S0) de los MUX8x1 se conectan


entre si, de esta manera se selecciona la misma entrada en cada MUX,
por ejemplo la entrada I0 del primer MUX con la entrada I0 (I8) del
segundo MUX, la entrada I5 del primero con la entrada I5 (I13) del
segundo y as sucesivamente.
Las salidas de los 2 MUX8x1 se convierten en las 2 entradas del
MUX2x1 las cuales son seleccionadas con la cuarta entrada de
seleccin S3, finalmente lo que se obtiene es un MUX16x1 con 16
entradas I y 4 entradas de seleccin S.

66

h) Realizar la funcin F(A, B, C) = (1,3,5,6) utilizando un multiplexor


y una cantidad mnima de compuertas.
Usando solamente compuertas la solucin sera:
F = ABC + BC + AC
Por lo tanto la solucin a obtener debe ser ms simple.
Al tener la funcin 3 entradas (A, B y C) ser necesario como mnimo
un MUX de 2x1 por tener 3 entradas: dos I y una S.
Hay varias formas de plantear una solucin, una de ellas es conectar la
entrada C a la entrada S de seleccin del MUX y las otras dos (A y B)
conectarlas mediante un circuito a las entradas I del MUX.

Por lo tanto, cuando C=0=S la salida Z=I0 y cuando C=1 la salida Z=I1,
tal como se muestra en las siguientes tablas.
A
0
0
1
1

B
0
1
0
1

C=0
0
0
0
0

Z=I0
0
0
0
1 (6)

A
0
0
1
1

B
0
1
0
1

C=1
1
1
1
1

Z=I1
1 (1)
1 (3)
1 (5)
0

De las tablas se obtiene que:


Cuando C=0 I0(A,B) = AB
Cuando C=1 I1(A,B) = AB + AB + AB = A + B = (AB)
Ahora pasamos y dibujar el diagrama respectivo

i) Resolver el ejercicio anterior usando un MUX4x1.


En este caso se conectar las entradas B y C a las entradas de seleccin
S1 y S0 del MUX y la entrada A, mediante un circuito, a las entradas I.
Ver las siguientes tablas
A
0
1

B
0
0

C
0
0

Z=I0
0
0

Cuando BC=00 I0(A) = 0

A
0
1

B
0
0

C
1
1

Z=I1
1 (1)
1 (5)

Cuando BC=01 I1(A) = 1


67

A
0
1

B
1
1

C
0
0

Z=I2
0
1 (6)

Cuando BC=10 I2(A) = A

A
0
1

B
1
1

C
1
1

Z=I3
1 (3)
0

Cuando BC=11 I3(A)= A

j) Disee un circuito que acepte como entrada un nmero de 4 bits (4


entradas) y tenga como salida el mismo nmero pero en forma serial
(Sugerencia utilice un MUX4x1 y uno o ms flip-flop tipo JK).como
muestra el diagrama de bloques siguiente
1
0
1
1
CLK

1,1,0,1

Sea ABCD el nmero de 4 bits conectados a las entradas I0, I1, I2 e I3


del MUX4x1. Se tiene que disear un circuito que en forma
secuencial selecciones dichas entradas, es decir, que las entradas S
tomen los valores 00, 01, 10 y 11, en ese orden y como es obvio esto es
trabajo para un contador de 2 bits. Por consiguiente el diagrama
respectivo ser el que se muestra en la siguiente figura:

68

3.5.2. Propuestos
a) Disee un contador mdulo 5.
b) Analice el siguiente contador de 3 bits, el cual ha sido diseado para no
seguir la secuencia completa de los 8 estados. Determine su secuencia.

Se debe tener en cuenta que las entradas inferiores de los flip-flops son
para resetear (poner a 0) cuando a stas llegue un 0. Otro detalle a tener
en cuenta es que, la entrada de reloj de los flip-flops es de pendiente
negativa, es decir que la salida de flip-flops se actualizaran slo cuando
la seal de reloj pase de 1 a 0.
c) Construir un decodificador de 3 a 8 lneas con entrada de activacin,
con dos decodificadores de 2 a 4 lneas, con habilitacin y un
decodificador de 1 a 2 lneas.
d) Disee el diagrama lgico de un decodificador de 2 a 4 lneas con
entrada de activacin E, usando slo compuertas NAND.
e) Disee un codificador de 8 a 3 con prioridad de bit ms significativo.
f) Disee un circuito que sume 7 a un nmero de 3 bits usando un
multiplexor.
g) Resuelva el ejercicio anterior usando decodificadores
h) Realizar la funcin F(A, B, C) = (0,1,2,7) utilizando un MUX2x1 y
una cantidad mnima de compuertas.
i) Realizar el ejercicio anterior usando un multiplexor de 4x1.
j) Resuelva el ejercicio e) de los ejercicios resueltos pero para el sistema
base 7.

69

IV ORGANIZACIN Y DISEO BASICO DE COMPUTADORAS


4.1. Qu es una computadora?
Es una combinacin de dispositivos y circuitos digitales que pueden realizar una
secuencia programada de operaciones con un mnimo de intervencin humana. A
la secuencia de operaciones se le denomina programa. El programa es un
conjunto de instrucciones codificadas que se almacena en la memoria interna de
la computadora con todos los datos que el programa requiere. Cuando a la
computadora se le ordena ejecutar el programa, sta lleva a cabo las instrucciones
en el orden en que estn almacenadas.
4.1.1. Organizacin bsica
Cada computadora contiene 5 elementos o unidades esenciales:
a) Unidad aritmtica lgica.- Realiza las operaciones aritmtica y lgicas
como sumas, restas, multiplicaciones, Y, O y NO.
b) Unidad de memoria.- Almacena instrucciones y datos, as como los
resultados parciales y finales de un programa.
c) Unidad de control.- Interpreta las instrucciones tomadas de la memoria
una por una, luego enva las seales apropiadas a cada una de las
unidades para que la instruccin sea ejecutada.
d) Unidad de entrada.- Transmite instrucciones y datos del exterior a la
memoria.
e) Unidad de salida.- Transmite datos de la computadora al mundo
exterior.
4.1.2. Funcionamiento
Consideremos un casillero numerado desde el 0 hasta el 4095 (memoria)
en donde en cada casilla se ha puesto un sobre, el cual puede contener
instrucciones (cdigo) o informacin (datos). La idea es ir abriendo los
sobres de las casillas en forma consecutiva (0, 1, 2, 3,..) y seguir las
instrucciones (programa) que se encuentran en ellos. Se empieza tomando
el sobre de la casilla 0 (pudo ser a partir de otra posicin), se abre el sobre
y se lee la instruccin. Esta instruccin puede ser:
a) Una operacin como sumar, restar, multiplicar, etc. y como toda
operacin debe tener operandos. Dentro de la instruccin debe
indicarse donde se encuentras dichos operandos. Estos pueden estar
dentro de unas cajas especiales de fcil y rpida ubicacin (Registros) o
dentro de alguna casilla. En todo caso la instruccin debe indicar el
nmero de la casilla (0,1,..4096) o el nombre de la caja (A, B, C o D
por ejemplo) donde se encuentran los operandos.
b) Una operacin de saltar y dirigirse a otra casilla. Como se mencion,
por defecto, la ejecucin de las instrucciones se hace en forma
consecutiva, partiendo de la casilla donde se abri el primer sobre,
pasando a la siguiente casilla, luego a la siguiente y as sucesivamente
hasta llegar a la ltima instruccin. Pero puede darse el caso que una
instruccin indique que debe saltarse a una determinada casilla, con lo
cual, el prximo sobre a abrir no ser el de la siguiente casilla sino el
indicado en la instruccin.
Una vez leda la instruccin se procede a ejecutarla y luego se pasa a la
siguiente instruccin.
70

4.2. Los Registros


Durante la ejecucin de un programa la computadora debe saber siempre en que
parte de la memoria (direccin) se encuentra la siguiente instruccin a ejecutar,
as como tambin cul es la instruccin (cdigo) que va a ejecutar o est
ejecutando.
Muchas de las instrucciones no se ejecutan en un slo paso (ciclos de reloj) sino
que requieren de varios pasos o microinstrucciones las cuales necesitan almacenar
en algn medio los datos u operandos con los que estn trabajando.
Para todos estos casos ese dispositivo de almacenamiento es el registro
4.2.1. Los registros de la computadora bsica
Dada las caractersticas simples de la computadora, se requieren de slo 8
registros cuyas funciones son las siguientes:
Registro de datos (DR).- Es un registro de 16 bits que puede contener un
operando de alguna operacin aritmtica - lgica.
Registro de direccin (AR).- Es un registro de 12 bits que contiene la
direccin de memoria a leer o escribir. Cada vez que la
computadora requiera leer o escribir en la memoria, este registro
debe contener la direccin a la cual se va a acceder. Como la
capacidad de la memoria de la computadora es de 4096 palabras,
bastar slo un registro de 12 bits (212 = 4096).
Registro Acumulador (AC).- Es un registro de 16 bits que almacena los
resultados temporales y que est conectado directamente con la
unidad aritmtica lgica. En otras palabras es el registro de
trabajo de la computadora.
Registro de instruccin (IR).- Es un registro de 16 bits que contiene la
instruccin en curso a ser decodificada y ejecutada.
Registro contador de programa (PC).- Es un registro de 12 bits que
contiene la direccin de memoria de la siguiente instruccin a
ejecutar.
Registro temporal (TR).- Es un registro de 16 bits que se utiliza para
almacenar datos temporales.
Registro de entrada (INPR).- Una vez realizada una entrada, este registro
de 8 bits contiene el byte que ha ingresado.
Registro de salida (OUTR).- Este registro de 8 bits contiene el byte que va
ser enviado hacia fuera.
Estos registros forman 3 grupos:
Registros de 16 bits (DR, AC, IR, TR)
Registros de 12 bits (AR, PC)
Registros de 8 bits (INPR, OUTR)
Los registros de 16 y 12 bits tienen caractersticas comunes. Sus entradas y
salidas de datos, estn conectadas al bus y sus entradas de control son las
mismas:
Carga de datos (C).- Carga el registro con los datos de entrada.
Incremento (I).- Incrementa en 1 el contenido del registro.
Limpiado (L).- Borra o pone a 0 las salidas del registro
71

El diseo se har para los registros de 16 bits siendo prcticamente lo


mismo para los de 12 bits. El registro deber tener entradas de control que
le permitan realizar las operaciones mostradas en la tabla de la figura 4.1

L
0
0
0
1

C
0
0
1
X

I
0
1
X
X

Operacin
Sin cambios
Incrementar contenido en 1
Cargar entrada de datos E
Establecer salidas S a 0

Figura 4.1 Tabla de funciones del registro

Para realizar el diseo de forma analtica, se necesitara una tabla de 16


entradas de datos E, 3 entradas de control (L, C e I), 16 entradas de estados
inicial Q y 16 funciones de salida para J y K. Imposible de hacer!
Una alternativa es disear un registro de 4 bits y luego generalizarlo para
16, 32 o 64 bits. Pero aun as, se requiere 11 entradas (tabla de 2048 filas)
y 4 funciones de salida para J y K.
Una tercera opcin es disear un registro de 4 bits con entrada L de
limpieza y entrada C de carga paralela, luego unirlo mediante otro circuito
a un contador de 4 bits con entrada de activacin I (para poder incrementar
en 1).
El registro de 4 bits con carga paralela y limpieza
Segn la tabla de la figura 4.1, L tiene prioridad sobre C, es decir, que si
L=1 la salida S ser 0. Cuando L=0 y C=1, el dato E pasar a S y cuando
L=C=0 no habr cambios en la salida. Por lo tanto, J y K debern tener los
valores siguientes:

L
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1

E
0
1
0
1
0
1
0
1

S=Q
Sin cambios
Sin cambios
0
1
0
0
0
0

J
0
0
0
1
0
0
0
0

K
0
0
1
0
1
1
1
1

Figura 4.2 Tabla de estados para un registro de 1 bit

La tabla muestra los valores que deben tomar J y K para obtener la salida S
(Q) correspondiente. Pero slo es para un registro de 1 bit, hay replicar
tantas veces como bits se desea que tenga el registro. De la tabla se
obtienen las siguientes expresiones lgicas:
J = LCE

K = CE + L

En trminos generales par el i-simo bit: Ji = LCEi Ki = CEi + L


Ms adelante a la salida J se le llamar X y a K, Y.
72

El contador de 4 bits con entrada de activacin


El contador, es el diseado en el capitulo 3, figura 3.6 (contador sncrono).
Slo hay que cambiar el nombre de la entrada E por I, las expresiones
lgicas quedarn:
J0 = K0 = I
J1 = K1 = IQ0
J2 = K2 = IQ0Q1
J3 = K3 = IQ0Q1Q2 ; Ji = Ki pasaran a llamarse Zi
El circuito de unin
Para simplificar, slo se va a disear el modulo para el i-simo bit.
Se supone que las entradas L y C, del registro de carga paralela y limpieza,
va a generar las salida X y Y (Circ1), que se conectarn, respectivamente,
a las entrada J y K del flip-flop. Pero la entrada I, del contador, generar la
salida Z que tambin se debe conectar a las entradas J y K (J=K).
Esto nos hace pensar en la necesidad de un MUX2x1 que seleccione la
entrada X o Z para dirigirla a J y otro MUX que seleccione entre Y y Z
para dirigirla hacia K. La idea es, que cuando la entrada de seleccin W de
los MUX sea 0, a J debe llegar X y a K, Y. Cuando W=1, a J y K debe
llegar Z. Tambin se va a requerir un circuito (Circ2) que controle la
entrada de seleccin W la cual debe estar en funcin de las entradas L, C e
I. Ver figura 4.3

Figura 4.3 Diagrama de bloques para el registro de 1 bit

Circ1 contiene las compuertas del registro de carga paralela y limpieza y


sus salidas X (X = LCE) y Y (Y = CE + L). As tambin, contiene las
compuertas del contador y la salida Z (Zi = IQ0Q1Qi-1).
Circ2 genera la seal W, la cual debe ser 0 para que los MUX seleccionen
X y Y. W=1 para seleccionar Z (incrementar en 1). Pero W debe ser 1, slo
y nicamente cuando L=0, C=0 e I=1 (ver figura 4.1), por lo tanto:
W = LCI
Las expresiones lgicas equivalentes a los MUX de 2x1 son:
J = XW + ZW

K = YW + ZW

Donde J y K son las entradas del flip-flop.


73

Por consiguiente:
J = LCE(LCI) + ZW
J = LCE(L+C+I) + ZW
J = LCE + ZW
J = X + ZW

K = (CE+L)(LCI) + ZW
K = (CE+L)(L+C+I) + ZW
K = (CE+L) + ZW
K = Y + ZW

Estas expresiones lgicas son para cualquier bit del registro, pero
recordemos que Z vara segn sea el bit, entonces:
J0 = LCE0 + LCI
J1 = LCE1 + LCIQ0
J2 = LCE2 + LCIQ0Q1
J3 = LCE3 + LCIQ0Q1Q2

K0 = (CE0+L) + LCI
K1 = (CE1+L) + LCI Q0
K2 = (CE2+L) + LCI Q0Q1
K3 = (CE3+L) + LCI Q0Q1Q2

Figura 4.4 Diagrama de un registro de 4 bits con carga paralela, incremento y


limpieza

Figura 4.5 Diagramas de bloque de un registro de 4 y 16 bits con carga paralela,


incremento y limpieza

74

4.2.2. El BUS comn


Para poder hacer la transferencia de datos de registro a registro o de
registro a memoria, se necesita un conjunto de trayectorias o lneas,
denominado BUS. La cantidad de lneas ser excesiva si se conectan las
salidas de cada registro con las entradas de los otros registros. Un sistema
ms eficiente para transferir informacin es usar un BUS comn y una de
las maneras de construirlo es mediante multiplexores, los cuales permitirn
seleccionar el registro cuyas salidas pasaran al BUS.
Para simplificar el diseo se har con 2 registros de 4 bits, esto quiere decir
que el bus tendr 4 lneas.

Figura 4.6 Diagrama de un bus comn de 4 bits

La figura 4.6 muestra 2 registros de 4 bits conectados a un bus comn.


Cuando la entrada de seleccin S toma el valor de 0, las 4 salidas del
registro A pasarn a las salidas Z (lneas del bus) y cuando sea 1, ser el
registro B el que pase al bus. Del diagrama se puede concluir que son
necesarios tantos MUX como bits tenga el registro y la cantidad de
entradas de los MUX depender de la cantidad de registros a controlar. Por
consiguiente, en el caso de la computadora bsica que tiene 8 registros de
16 bits, como mximo (porque hay registros de 12 y 8 bits), se requerir de
16 MUX de 8 entradas. La seleccin de un registro en particular se har a
travs de las entradas S de seleccin de los MUX, 3 en este caso (23=8).
Se puede convenir que para un determinado valor de S, el contenido de
uno de los registros sea transferido al bus, tal como se muestra en la figura
siguiente:
S2

S1

S0

0
0
0
1
1
1
1

0
1
1
0
0
1
1

1
0
1
0
1
0
1

Registro que
pasa al BUS
AR
PC
DR
AC
IR
TR
MEMORIA

Figura 4.7 Tabla de transferencia de registros

4.3. La memoria
75

Es un conjunto de celdas de almacenamiento junto con los circuitos asociados que


se utilizan para escribir y leer informacin en ellas. La memoria almacena
informacin binaria en grupo de bits que se denominan palabras. Esta informacin
puede ser nmeros, caracteres alfanumricos, cdigo de una instruccin o
cualquier otra informacin codificada en binario.
La estructura interna de la memoria est especificada por el nmero de palabras
que contiene y la cantidad de bits que la conforman. A cada palabra se le asigna
un nmero de identificacin o posicin llamado direccin, que comienza de 0
hasta N (N es una potencia de 2). Dependiendo de la cantidad de palabras de la
memoria, ser necesario K lneas de direccin, donde 2K=N. Si en este caso
N=4096 palabras entonces K=12, esto quiere decir que se requiere de 12 lneas
para especificar la direccin de memoria a la cual se va a acceder.
El tipo de acceso queda establecido por medio de 2 entradas, W para escribir y R
para leer. Ver figura 4.8

Figura 4.8 Diagrama de bloque de la memoria

La barra inclinada en las lneas es para indicar que no se trata de una sola lnea
sino de ms. El valor que aparece al costado, indica la cantidad de lneas que
representa. En el diagrama se aprecia 16 lneas de entrada (izquierda) y 16 de
salida (derecha), las 12 lneas de abajo es por donde ingresa, en binario, la
direccin o nmero de palabra a acceder, mientras que W y R indica si se va a leer
o escribir.

4.4. Transferencia entre el BUS, los registros y la memoria


A continuacin vamos a analizar como se realiza la transferencia entre los
registros y la memoria. Primero debemos indicar que se cuenta con un BUS de 16
lneas las cuales se conectan una a una con las entradas de los registros DR, AC,
IR, TR y la memoria. En el caso de los registros AR, PC que slo tienen 12
entradas-salidas y los registros INPR, OUTR de 8 entradas-salidas se conectaran
con las lneas de los bits menos significativos del BUS, dejando libres las otras
lneas.
Al estar conectados los registros de esta manera con el BUS, siempre estarn
presente en las entradas, de todos los registros, lo que en ese instante haya en las
lneas del BUS, pero estos valores no pasaran al registro mientras no llegue la
seal de carga C y luego la seal de reloj al registro correspondiente.
De igual manera, los valores de salida de todos los registros llegaran a los
multiplexores de seleccin del BUS (ver figura 4.6) pero slo las salidas de uno de
los registros pasarn a las lneas del BUS dependiendo de las entradas de seleccin
S activadas (ver figura 4.7)

76

La figura siguiente muestra los registros de la computadora bsica conectados a un


BUS comn.

Figura 4.9 Conexin de la memoria y los registros al BUS

Supongamos que las entradas S=3 (S2S1S0=011) esto significa que las 16 salidas
del registro DR pasaran al BUS. Este valor del registro DR, llegar a cada una de
las entradas de los registros, pero no pasar a ninguno de ellos mientras no llegue
la seal C y se genere la siguiente seal de reloj CLK.
En el caso de la memoria, antes de leer o escribir en ella, el registro AR debe
contener la direccin efectiva a la cual se desea acceder. Cuando llegue a la
memoria la seal W, lo que hay en el BUS pasar a escribirse en la direccin de
memoria indicada por el registro AR. Pero si la seal fuera R, de la memoria
pasar a los multiplexores del BUS el valor respectivo. Recin al hacerse las
entradas de seleccin S=7 (111) la palabra de memoria pasar al BUS.
Las entradas del acumulador AC provienen de las salidas de la ALU, la cual, a su
vez, tiene como entradas las salidas del mismo acumulador y del registro DR. La
ALU tiene tambin como entradas, seales de control que le indican la operacin
que debe realizar con las entradas de los registros AC y DR. Ntese el registro de
un bit E anexo a la ALU, como ya se menciono ste se puede considerar como el
bit nmero 17 del registro AC.
77

4.5. El cdigo de instruccin


Una instruccin de computadora es un cdigo binario que especifica una secuencia
de microinstrucciones para la computadora. Los cdigos de instruccin se
almacenan en la memoria, la computadora los lee y los coloca en un registro de
control. La unidad de control interpreta el cdigo binario y procede a ejecutarlo
mediante una secuencia de microinstrucciones. Cada computadora tiene un
conjunto de instrucciones nico.
Una computadora debe tener un conjunto de instrucciones que permitan al usuario
construir programas de lenguaje de computadora con el fin de evaluar cualquier
funcin que se sepa que pueda computarse. Se dice que el conjunto de
instrucciones est completo si la computadora incluye la suficiente cantidad de
instrucciones en cada una de las siguientes categoras:
a)
b)
c)
d)

Aritmticas, lgicas y de corrimiento.


Mover datos hacia y desde la memoria y los registros.
Control del programa y verificacin del estado del procesador.
Entrada y salida.

En la computadora bsica, el cdigo de cada instruccin tiene una longitud de 16


bits, que es la longitud de una palabra de memoria. Se define 3 tipos de
instrucciones: Las que hacen referencia a memoria, las que hacen referencia a los
registros y las de entrada y salida.
4.5.1. Instrucciones que hacen referencia a memoria
Utilizan 12 bits (de los 16) para especificar una direccin de memoria
(212=4096). De los 4 bits restantes, 1 bit se emplea para indicar el tipo de
direccionamiento, es decir, si en la direccin de memoria que aparece en el
cdigo de instruccin es donde se encuentra el operando (direccionamiento
directo) o si ah hay otra direccin de memoria (direccionamiento
indirecto) donde finalmente se encuentre ste (el operando). Los 3 bits
restantes se usan para codificar la operacin a realizar, por ello se les
denomina cdigo de operacin. Con 3 bits (23=8) se puede codificar hasta
8 operaciones diferentes.
Se establece los 12 primeros bits del cdigo (0-11) para especificar la
direccin de memoria, los 3 bits siguientes (12-14) para el cdigo de
operacin y el bit ms significativo I (15) para el modo de
direccionamiento: I=0 directo, I=1 indirecto.
15

14 13 12
Cdigo de
operacin

11

Direccin de memoria

Las instrucciones que hacen referencia a memoria son las siguientes:


AND.- Su codop (cdigo de operacin) es 000. Realiza la operacin lgica
AND entre la palabra que se encuentra en la direccin efectiva de
memoria y el acumulador AC, el resultado se almacena en AC.
Ejemplo: 03C7 es una instruccin codificada en hexadecimal de
una operacin AND. Los 12 bits menos significativos 3C7
especifican la direccin de memoria donde se encuentra la palabra
78

(porque el bit I es 0, direccionamiento directo) con la que se har la


operacin AND con AC. La operacin sera ACAC M[3C7]
Ejemplo: 83C7 (I es 1, direccionamiento indirecto) entonces la
palabra que se encuentra en la direccin 3C7 es otra direccin de
memoria (no el operando) donde se encuentra la palabra a operar.
Esto se resume como ACAC M[M[3C7]]
ADD.- Su codop es 001. Realiza una suma entre el contenido de la
direccin efectiva de memoria y el acumulador AC, el resultado se
almacena en AC. Ejemplo: 13C7, como I es 0, se trata de un
direccionamiento directo la operacin es: ACAC + M[3C7]
Ejemplo: 93C7, se trata de un direccionamiento indirecto por lo
tanto la operacin es: ACAC + M[M[3C7]]
LDA.- Su codop es 010. Carga en el registro AC la palabra que se
encuentra en la direccin efectiva de memoria.
Ejemplo: 23C7 (direccionamiento directo) entonces: ACM[3C7]
Ejemplo:
A3C7
(direccionamiento indirecto) entonces:
ACM[M[3C7]]
STA.- Su codop es 011. Almacena el contenido del registro AC en la
direccin efectiva de memoria.
Ejemplo: 33C7 (I=0) entonces: M[3C7]AC
Ejemplo: B3C7 (I=1) entonces: M[M[3C7]]AC
BUN.- Su codop es 100. Hace un salto incondicional a la direccin
efectiva de memoria, para ello modifica el valor del registro
contador de programa PC que es el que contiene la direccin de la
siguiente instruccin a ejecutar.
Ejemplo: 43C7 (I=0) entonces: PC3C7
Ejemplo: C3C7 (I=1) entonces: PCM[3C7]
BSA.- Su codop es 101. Salva la direccin de la siguiente instruccin a
ejecutar en la palabra de la direccin efectiva de memoria y salta a
la siguiente posicin de la direccin efectiva especificada.
Ejemplo: 53C7 (I=0). En el momento que se est ejecutando una
instruccin cualquiera, el registro PC ya contiene la direccin de la
siguiente instruccin a ejecutar. En funcin a eso las operaciones
internas son: M[3C7]PC, PC3C8
Ejemplo: D3C7 (I=1). En este caso las instrucciones son:
M[M[3C7]]PC, PCM[M[3C7]+1]
ISZ.- Su codop es 110. Incrementa en 1 la palabra de la direccin efectiva
especificada y si el resultado es 0 se ignora la siguiente instruccin
y se pasa a ejecutar la subsiguiente.
Ejemplo: 63C7 (I=0). M[3C7]M[3C7]+1
Si M[3C7] = 0 entonces PCPC+1
Ejemplo: E3C7 (I=1). M[M[3C7]]M[M[3C7]]+1
Si M[M[3C7]] = 0 entonces PCPC+1

79

Ntese que no hay una instruccin con codop 111, esto significa que
ninguna instruccin que hace referencia a memoria su cdigo empezar
con 7 o F.
4.5.2. Instrucciones que hacen referencia a registro
Utilizan los 12 bits menos significativos (0-11) para especificar la
operacin o prueba que se va a ejecutar sobre un registro, en este caso,
nicamente sobre el registro de trabajo, o sea AC. En teora esto significa
que se puede codificar hasta 4096 operaciones sobre el registro AC pero,
una vez ms, para simplificar el diseo del decodificador slo se codificar
potencias de 2 (12 operaciones). Los 4 bits restantes se les asigna el valor
de 0111 (7) que es lo que identifica una instruccin de referencia a
registro.
15

14 13 12

11

Operacin de registro

Estas instrucciones son:


CLA.- Su cdigo de instruccin es 7800. Borra el registro acumulador:
AC0
CLE.- Su cdigo de instruccin es 7400. Borra el registro E: E0. E es un
registro de un bit y es una extensin del acumulador, en otras
palabras se puede considerar como un bit ms del registro
acumulador. E puede ser usado, por ejemplo, para almacenar el
acarreo de salida de una operacin ADD.
CMA.- Su cdigo de instruccin es 7200. Complementa los bits del
registro acumulador: ACAC
CME.- Su cdigo de instruccin es 7100. Complementa el registro E:
EE
CIR.- Su cdigo de instruccin es 7080. Realiza una rotacin de bits hacia
la derecha del acumulador AC, pasando el bit menos significativo
al registro E y lo que haba en E al bit ms significativo de AC.
Ejemplo: Si E=1 y AC = 0110110100101000 = 6D28, despus de
ejecutar esta instruccin AC quedar como 1011011010010100 =
B694 y E=0. Ntese que los bits del AC se han desplazado una
posicin a la derecha, que el bit menos significativo de AC paso a
E y el valor de E ahora es el bit ms significativo de AC.
Ejemplo: Si E=0 y AC = 0110110100101000 = 6D28, luego de
ejecutar CIR AC ser igual que 0011011010010100 = 3694 y E=0.
CIL.- Su cdigo de instruccin es 7040. Realiza una rotacin de bits hacia
la izquierda del acumulador AC, pasando el bit ms significativo al
registro E y lo que haba en E al bit menos significativo de AC.

80

INC.- Su cdigo de instruccin es 7020. Incrementa en 1 el acumulador:


ACAC+1
SPA.- Su cdigo de instruccin es 7010. Ignora la siguiente instruccin y
pasa a la instruccin subsiguiente, si el valor del acumulador es
positivo:
Si AC > 0 entonces PCPC+1.
SNA.- Su cdigo de instruccin es 7008. Ignora la siguiente instruccin y
pasa a la instruccin subsiguiente, si el valor del acumulador es
negativo:
Si AC < 0 entonces PCPC+1.
SZA.- Su cdigo de instruccin es 7004. Ignora la siguiente instruccin y
pasa a la instruccin subsiguiente, si el valor del acumulador es
cero:
Si AC = 0 entonces PCPC+1.
SZE.- Su cdigo de instruccin es 7002. Ignora la siguiente instruccin y
pasa a la instruccin subsiguiente, si el valor del registro E es cero:
Si E = 0 entonces PCPC+1.
HLT.- Su cdigo de instruccin es 7001. Detiene la computadora

4.5.3. Instrucciones de entrada y salida


Utilizan los 4 bits ms significativos para identificarse tomando el valor de
1111 (15=Fh) y los primeros 12 bits para indicar el tipo de operacin de
entrada-salida o la prueba ejecutada.
15

14 13 12

11

Operacin de I/O

Las instrucciones de entrada y salida son:


INP.- Su cdigo es F800. Transfiere el contenido del registro de entrada
INPR a los 8 bits menos significativos del registro acumulador AC
cada vez que el registro bandera de un bit FGI es 1. Luego de esta
operacin el registro FGI debe ser puesto a 0.
Si FGI=1 entonces AC[7-0]INPR; FGI0
OUTP.- Su cdigo es F400. Transfiere los 8 bits menos significativos del
registro acumulador AC al registro de salida OUTR cada vez que el
registro bandera de un bit FGO es 1. Luego de esta operacin el
registro FGO debe ser puesto a 0.
Si FGO=1 entonces OUTRAC[7-0]; FGO0
SKI.- Su cdigo es F200. Ignora la siguiente instruccin y ejecuta la
subsiguiente si FGI = 1.
Si FGI = 1 entonces PCPC+1.
81

SKO.- Su cdigo es F100. Ignora la siguiente instruccin y ejecuta la


subsiguiente si FGO = 1.
Si FGO = 1 entonces PCPC+1.
ION.- Su cdigo es F080. Establece a 1 el registro de interrupcin de un
bit IEN, el cual activa las interrupciones de la computadora.
IOF.- Su cdigo es F040. Desactiva las interrupciones estableciendo IEN a
0.

4.6. La unidad de control


Una vez leda de la memoria la instruccin a ejecutar, se procede a decodificarla
para luego generar las seales de control necesarias que permitan ejecutar las
microinstrucciones que, en su conjunto, conforman la instruccin.
Por ejemplo, la mayora de instrucciones para ejecutarse necesitan hacer
transferencias entre registros y/o memoria. Entonces, la unidad de control debe
generar las seales apropiadas en las entradas de seleccin S del BUS que permita
transferir los datos de un registro o la memoria al BUS y las seales de carga C de
los registros o la seales de lectura/escritura R/W de la memoria. Cada una de
estas seales necesita, a su vez, de una seal de temporizacin T que le indiquen el
momento en el que deben generarse. As pues, si una instruccin est conformada
por las microinstrucciones 0, 1, 2, 3, ..., N, entonces al generarse la seal T0 se
llevar a cabo la microinstruccin 0, la seal T1 ejecutar la microinstruccin 1 y
as sucesivamente. Finalmente despus de ejecutarse la ltima microinstruccin N,
el generador de seales T debe reiniciarse para poder iniciar la ejecucin de la
siguiente instruccin. Si bien es cierto las seales T indican la microinstruccin
que deben de ejecutarse, son las seales I, Di y Bi las que definen las instrucciones
a ejecutar, ver figura 4.10
Registro de instruccin IR
15

14

13

12

11 - 0

Bi
Decodificador 3x8
7 6 5 4 3 2 1 0

D0
I

Compuertas
Lgicas de
control

D7

Salidas de
control

T15
T0

15 14 13

2 1 0

Decodificador
4x16

Contador de
4 bits (SC)

Incrementar
Borrar
CLK

Figura 4.10 Unidad de control de la computadora bsica

82

Una vez puesta el cdigo de la instruccin en el registro IR se procede a identificar


la instruccin correspondiente. Al estar conectados los bits 14, 13 y 12 a un
decodificador de 3x8, activar slo una de las 8 salidas Di a la vez. Por
consiguiente, cuando D0=1 significar que se trata de la instruccin AND,
cuando D1=1 de ADD, cuando D2=1 de LDA y as sucesivamente. Por su parte I
indicar si es un direccionamiento directo o indirecto. Pero cuando D7=1 (los bits
14, 13 y 12 son unos) implicar que la instruccin no es de referencia a memoria y
dependiendo de I se podr concluir si es una instruccin de referencia a registro
(I=0) o una instruccin de entrada-salida (I=1). En estos casos sern los bits Bi los
que definan la instruccin a ejecutar.
Una vez identificada la instruccin, sta se tiene que realizar en uno o ms pasos,
ejecutando en cada uno de ellos la microinstruccin correspondiente. Un contador
de 4 bits SC (el cual aumenta en cada pulso de reloj) lleva la cuenta del nmero de
paso que se encuentra la unidad de control. Este valor es decodificado mediante un
decodificador de 4x16 obteniendo 16 seales de temporizacin llamadas Ti. Estas
seales son generadas en forma secuencial (T0, T1, T2, T15) por eso slo una
de ellas puede estar activada a la vez.
Finalmente, son las seales I, Di, Ti y Bi las que, unidas mediante compuertas
lgicas, producirn las salidas de control que, a su vez, llegaran a las entradas de
control de los registros, entradas de seleccin del BUS, entradas W/R de la
memoria y las entradas de la ALU para que stos realicen las operaciones
correspondientes.

4.7. Ciclo de instruccin


Es la secuencia u orden que se ejecutan las microinstrucciones de una instruccin.
Un ciclo de instruccin se divide en 4 fases:
a) Buscar una instruccin en la memoria.
b) Decodificar la instruccin.
c) Leer la direccin efectiva de la memoria, si la instruccin tiene una
direccin indirecta.
d) Ejecutar la instruccin
Este ciclo de instruccin se repite tantas veces como instrucciones tenga el
programa.
4.7.1. Bsqueda
Se parte del hecho de que el registro PC contiene la direccin de la primera
instruccin a ejecutar. Por lo tanto para lograr transferir la instruccin que
se encuentra en la direccin de memoria contenida por PC, primero se debe
cargar AR con la direccin de memoria a leer, es decir transferir PC a AR;
luego transferir la instruccin al registro IR y aumentar en 1 PC para que
en el siguiente ciclo de instruccin se ejecute la siguiente instruccin. Todo
esto se puede especificar de la siguiente forma:
T0: ARPC
T1: IRM[AR],

PCPC+1

Esto significa que cuando se genere la seal T0, PC se debe transferir a


AR. Para lograr ello, las entradas de seleccin S del BUS deben ser igual a
83

2 (010) para que el registro PC pase al BUS (ver figura 4.7) y activar, a la
vez, la entrada C del registro AR para que ste se cargue con lo que hay en
el BUS en ese instante.
Al generarse la seal T1 (con el siguiente pulso de reloj) las entradas S del
BUS deben ser igual a 7 (111) y se debe activar la entrada R (leer) de la
memoria para transferir la palabra de la direccin de memoria AR al BUS.
Tambin se debe activar, a la vez, la entrada C del registro IR para que se
cargue con lo hay en ese instante en el BUS y, por ultimo, activar la
entrada A (aumentar en 1) del registro PC.
4.7.2. Decodificacin
Una vez puesto el cdigo de la instruccin en IR, con el siguiente pulso de
reloj (el cual generar la seal de temporizacin T2) se proceder a
decodificar la instruccin y a transferir los 12 bits menos significativos de
IR al registro de direccin AR como se indica a continuacin:
T2: D0,,D7Decodificar IR[14-12], ARIR, IIR[15]
La decodificacin la hace automticamente el decodificador de 3x8,
generando una de las 8 salidas Di. Para transferir IR a AR, se debe hacer
igual a 5 (101) las entradas S del BUS y activar la entrada C del registro
AR. La seal I no es otra cosa que el bit ms significativo del registro IR.
La figura 4.11 muestra las compuertas necesarias para que, en funcin de
las seales Ti, se realicen las transferencias entre los registros y la memoria
en la fase de bsqueda y decodificacin.

Figura 4.11 Compuertas de la Unidad de Control para la fase bsqueda y


decodificacin

84

En el diagrama se puede apreciar como la seal T0, T1 y T2 llegan a las


compuertas OR conectadas a las entradas S del BUS para establecer el
valor correspondiente que permita realizar las transferencias de los
registros al BUS. As tambin, estas seales T llegan a las entradas C, A de
los registros y R de la memoria.
Al finalizar la seal de temporizacin T2, el registro PC contiene la
direccin de memoria de la siguiente instruccin a ejecutar, IR el cdigo de
la instruccin que se est ejecutando y AR los 12 bits menos significativos
de IR que viene a ser la direccin de memoria a acceder en el caso de
tratarse de una instruccin de referencia a memoria. Tambin se habrn
generado las seales Di, Bi e I.
4.7.3. El tipo de instruccin
Al iniciarse la seal de temporizacin T3 se debe determinar el tipo de
instruccin, si es de referencia a memoria (directa o indirecta), de
referencia a registro o de entrada-salida.
Mientras D7 no est activa (D7) significa que se trata de una instruccin
de referencia a memoria y la seal I ser la que nos indique, si se trata de
un direccionamiento directo o indirecto. De ser un direccionamiento
directo se optar por hacer nada y de ser indirecto se cargar el registro AR
con la palabra de la direccin de memoria AR, es decir:
T3ID7 :
NADA
T3ID7 :
ARM[AR]
Ser con la seal T4 que se inicie la ejecucin de la instruccin de
referencia a memoria
En el caso de estar activa D7, I=0 indicar que se trata de una instruccin
de referencia a registro en caso contrario (I=1) ser una instruccin de
entrada-salida. En ambos casos, es durante la seal T3 que se ejecutan.
4.7.4. Ejecutar instruccin
Hay que analizar las instrucciones por grupos:
Instrucciones de referencia a memoria
Como ya se mencion este tipo de instrucciones se ejecutaran durante la
seal de temporizacin T4.
AND.- Esta instruccin realiza una operacin AND entre el registro AC y
la palabra de la direccin de memoria AR. Esta instruccin no se puede
ejecutar directamente porque son los registros AC y DR los que deben
contener los valores a operar para cualquier operacin aritmtica o lgica,
debido a que son los nicos registros que estn conectados a la ALU. Por
consiguiente se necesitar una seal de temporizacin adicional para
ejecutar esta instruccin. Con la seal T4 se transferir la palabra de
memoria a DR y con la siguiente seal se ejecutar la operacin en s y se
reiniciar el contador SC.
T4D0 : DRM[AR]
T5D0 : ACACDR;
SC0
85

La seal T5D0 es una de las tantas seales que llegarn a las entradas de
control que tiene la ALU para indicarle la operacin que debe realizar, en
este caso hacer un AND entre los bits de los registros AC y DR.
El contador de secuencia SC tiene 3 entradas de control y una de ellas es
Borrar. Cuando esta entrada es puesta en 1, reinicia el contador lo que
significa que vuelve a generar seales de temporizacin a partir de T0 y se
inicia la fase de bsqueda y decodificacin. Esto se representa mediante la
microinstruccin SC0
ADD.- Esta instruccin realiza una suma entre el registro AC y la palabra
de la direccin de memoria AR. Igual que en el caso anterior, esta
operacin la realiza la ALU y se requiere 2 seales de temporizacin.
T4D1 : DRM[AR]
T5D1 : ACAC+DR;
SC0
LDA.- Esta instruccin realiza una transferencia de la direccin de
memoria AR al registro AC. Pero si se mira la figura 4.9 se observar que
las entradas de AC no estn conectadas al BUS, por consiguiente para
ejecutar esta instruccin primero hay que transferir la palabra de memoria
al registro DR y luego, mediante una operacin de transferencia de la
ALU, al registro AC.
T4D2 : DRM[AR]
T5D2 : ACDR;
SC0
STA.- Esta instruccin realiza la operacin inversa a la anterior. Transfiere
el registro AC a la direccin de memoria AR, pero en una sola seal de
temporizacin.
T4D3 : M[AR]AC; SC0
BUN.- Esta instruccin transfiere el control del programa a la direccin
especificada por AR (AR contiene la direccin efectiva). Por ello slo
bastar con hacer una transferencia de AR a PC.
T4D4 : PCAR;
SC0
BSA.- Esta instruccin se usa para ejecutar una subrutina o procedimiento.
Un procedimiento no es otra cosa que un conjunto de instrucciones
ubicadas en alguna parte de la memoria. Se debe tener en cuenta que
cuando se termine de ejecutar la subrutina la computadora debe de saber
cul es la siguiente instruccin a ejecutar. Por ello una de las primeras
cosas a hacer es guardar la direccin de memoria de la instruccin que est
a continuacin de la instruccin BSA. Ahora la pregunta es en dnde se
guarda?. En las computadoras comerciales hay un rea de memoria
llamada pila en donde se guarda estas direcciones, en el caso de la
computadora bsica se har en la primera palabra del rea de memoria
donde se encuentra la subrutina, por lo tanto es en la siguiente o segunda
palabra donde se encuentra la primera instruccin de la subrutina.
Una instruccin BUN con direccionamiento indirecto ser la ltima
instruccin de la subrutina que le indique a la computadora que debe
retornar a la siguiente instruccin desde donde fue invocada la subrutina.

86

Las seales de temporizacion y microinstrucciones son las siguientes:


T4D5 : M[AR] PC;
ARAR+1
T5D5 : PCAR;
SC0
Supongamos que un instante cualquiera PC=037 e IR=57F1 (ambos
valores en hexadecimal). Esto significa que el cdigo de la instruccin que
se est ejecutando es 57F1, 5 es el codop de la instruccin BSA con
direccionamiento directo y 7F1 (12 bits menos significativos de IR y que
se encuentra tambin en el registro AR) la direccin del rea de memoria
donde se encuentra la subrutina que se desea ejecutar. Otro detalle
importante es que la instruccin que se est ejecutando se encuentra en la
direccin 036 (y no en 037) ya que en la etapa de bsqueda PC fue
aumentado en 1 para que apunte a la siguiente instruccin. Por lo tanto, es
en la direccin 7F1 donde se almacenar la direccin de retorno (en este
caso 037) y en 7F2 la direccin donde se debe escribir la primera
instruccin de la subrutina. Finalmente es una instruccin BUN indirecta
con cdigo C7F1 la que haga retornar la computadora a la direccin 037,
para que continu con la ejecucin del resto del programa.
ISZ.- En esencia esta instruccin hace un salto condicional hacia otra
direccin de memoria. Es decir, que pasa el control del programa a otra
direccin de memoria dependiendo que se cumpla una condicin. La
palabra ubicada en la posicin de memoria especificada por la direccin
efectiva en el registro AR (M[AR]) ser aumentada en 1 y si el resultado es
0 se saltar la palabra (instruccin) siguiente, procediendo a ejecutar la
subsiguiente instruccin, en caso contrario se ejecuta en forma normal el
programa. Esta caracterstica permite definir en los programas estructuras
de control repetitivas con contador de salida ya que una vez que la palabra
en cuestin o contador llegue a FFFF al incrementarla en 1 pasar a ser
0000 lo que permitir realizar la bifurcacin respectiva.
Para poder incrementar en 1 el valor de M[AR], ste debe pasarse primero
al registro DR, activar su entrada de control A (para realizar el incremento)
y luego almacenar el resultado en la direccin AR.
Al encontrase el valor del contador en el registro DR, se debe inspeccionar
que todos los bits de DR sean 0, esto se puede lograr uniendo los 16 bits de
DR a una o varias compuertas lgicas OR (que forman parte de la unidad
de control), si el resultado de estas es 0 significar que DR es 0 y si es 1
entonces DR es diferente de 0.
Para ejecutar esta instruccin se necesitar 3 seales de temporizacin:
T4D6 : DRM[AR]
T5D6 : DRDR+1
T6D6 : M[AR]DR; si DR=0 entonces PCPC+1 ; SC0
Por ejemplo, se desea ejecutar 5 veces el grupo de instrucciones
comprendidas entre las direcciones de memoria 7B6 y 7C4. Se va a usar la
direccin de memoria A00 como variable contador.
Para determinar el valor del contador restamos 5 a 10000 y se obtiene
FFFB, este es el valor que se debe almacenar en la direccin de memoria
87

A00 el cual ser aumentado en 1 cada vez que se ejecute la instruccin


6A00 que se encuentra en la direccin de memoria 7B3. Mientras esta
palabra o contador no sea 0000 se ejecutar la instruccin 47B6 (direccin
7B4) la cual har un salto incondicional a la direccin 7B6 (primera
instruccin del cuerpo del bucle) y continuar con la ejecucin hasta llegar
a la instruccin 47B3 (direccin 7C4) la cual har retornar a la direccin
7B3 donde nuevamente se evaluar el contador.

Direccin
de memoria
7B3
7B4
7B5
7B6

7C4
7C5

Cdigo

Instruccin

6A00
47B6
47BA

47B3

0 ISZ A00
0 BUN 7B6
0 BUN 7C5

0 BUN 7B3

Figura 4.12 Cdigo para una estructura repetitiva

Pero cuando el contador tome el valor de 0000, la computadora saltar la


instruccin 47B6 (direccin 7B4) y ejecutar la 47BA (direccin 7B5) que
a su vez har un salto incondicional a la direccin 7C5 que se encuentra
fuera de la estructura repetitiva con lo que se da fin al lazo.
Instrucciones de referencia a registro
Este tipo de instrucciones se ejecutaran durante la seal de temporizacin
T3. Adems debe estar activa la seal D7 e I debe ser igual a 0, por lo que
ser Bi la que identifique la instruccin.
CLA.- Para ejecutar esta instruccin se debe activar la entrada L (limpieza
o borrado) del registro AC.
T3D7IB11 : AC0;
SC0
CLE.- Para ejecutar esta instruccin se debe activar la entrada L (limpieza)
del flip-flop E.
T3D7IB10 : E0;
SC0
CMA.- Esta instruccin la ejecuta la ALU, para ello se debe activar las
entradas de control que realizan la complementacin del registro AC.
T3D7IB9 :
AC(AC); SC0
CME.- Para ejecutar esta instruccin se debe activar la entrada K
(complementar) del flip-flop E.
T3D7IB8 :
EE;
SC0
CIR.- Esta instruccin la ejecuta la ALU para ello se debe activar las
entradas de control que realizan el desplazamiento hacia la derecha del
registro AC.
T3D7IB7 :
ACDesDer(AC); AC[15]E;
EAC[0];
SC0
88

CIL.- Esta instruccin la ejecuta la ALU para ello se debe activar las
seales de control que realizan el desplazamiento hacia la izquierda del
registro AC.
T3D7IB6 :
ACDesIzq(AC); AC[0]E;
EAC[15];
SC0
INC.- Para ejecutar esta instruccin se debe activar la entrada A (aumentar
en 1) del registro AC.
T3D7IB5 :
ACAC+1;
SC0
SPA.- Como AC contiene nmeros de 16 bits pueden representarse 65536
valores diferentes. Si slo se trabaja con nmeros positivos estos valores
pueden variar desde 0 (0000) hasta 65535 (FFFF). Pero, si tambin se van
a representar nmeros negativos con complemento a 2, el rango de valores
ser desde 0 (0000) a 32767 (7FFF) para los positivos y desde -32768
(8000) a -1 (FFFF) para los negativos. Como se puede observar todas las
representaciones binarias para los nmeros negativos con complemento a 2
tiene el bit ms significativo igual a 1.
Entonces, para comprobar si AC contiene un valor negativo o positivo slo
bastara evaluar el bit 15 del registro AC.
T3D7IB4 :
si AC[15]=0 entonces PCPC+1; SC0
SNA.- Igual que el caso anterior con la diferencia que AC debe ser
negativo.
T3D7IB3 :
si AC[15]=1 entonces PCPC+1; SC0
SZA.- Para ejecutar esta instruccin se debe evaluar el valor de AC y
determinar si es cero. Igual que para la instruccin ISZ, que comprueba el
valor de DR, se hace para el registro AC.
T3D7IB2 :
si AC=0;
PCPC+1; SC0
SZE.- En este caso se evala el valor del flip-flop E.
T3D7IB1 :
si E=0 entonces PCPC+1; SC0
HLT.- Si observamos la figura 4.10, el contador SC tiene una entrada
Incrementar. Mientras esta entrada est activa el contador incrementar
en 1 en cada pulso del reloj pero si se desactiva el contador se detendr.
Esta entrada est conectada a un flip-flop H que proporcionar a SC la
seal respectiva. Una vez desactivado SC, solo se podr activar de manera
manual a travs del flip-flop H.
T3D7IB0 :
H0;
SC0
Instrucciones de entrada-salida
La computadora bsica ha sido diseada para poderse comunicar con el
mundo exterior a travs de un teclado (entrada) y una impresora (salida).
Utiliza un flip-flop FGI para indicar el estado del registro de entrada INPR
y un flip-flop FGO para el registro de salida OUTR.
Inicialmente el flip-flop FGI es puesto a 0. Cuando se presiona una tecla se
transfiere un cdigo de 8 bits al registro INPR e inmediatamente el flip89

flop FGI es puesto a 1 y permanece as mientras no se transfiera el registro


INPR al registro acumulador AC. Esto tambin implica que mientras FGI
sea 1, aunque se presionen ms teclas, los cdigos respectivos no sern
transferidos al registro INPR. Recin cuando llegue la seal a la ALU que
ordene transferir del registro INPR al registro AC es que se pondr el flipflop FGI a 0, con lo que quedar listo para recibir el cdigo de la siguiente
tecla que se presione.
En el caso del flip-flop FGO, ste es inicializado en 1 para indicar que el
registro OUTR esta libre. Tan pronto se transfiera un byte a OUTR, FGO
es puesto a 1 para indicar que OUTR est ocupado y mientras este as no
se trasferir AC a OUTR.
Las instrucciones de instrucciones de entrada-salida se ejecutaran durante
la seal de temporizacin T3. Adems debe estar activa la seal D7 e I debe
ser igual a 1. Bi ser la seal que identifique la instruccin.
INP.- Para ejecutar esta instruccin se deben generar las seales T3D7IB11
y si FGI=1 entonces se ejecutaran las siguientes microinstrucciones:
AC[7-0]INPR;
FGI0;
SC0
OUT.- Para ejecutar esta instruccin se deben generar las seales T3D7IB10
y si FGO=1 entonces se ejecutaran las siguientes microinstrucciones:
OUTRAC[7-0];
FGO0;
SC0
SKI.- Esta instruccin se utiliza para comprobar si hay un carcter
disponible en el registro INPR y, de ser as, realizar una bifurcacin para
proceder a leerlo mediante la instruccin INP.
T3D7IB9 :
si FGI=1 entonces PCPC+1;
SC0
SKO.- Esta instruccin comprueba si esta libre el registro OUTR, es decir,
si la impresora ya ley el carcter enviado y as, mediante una bifurcacin
poder, enviar otro con la instruccin OUT.
T3D7IB8 :
si FGO=1 entonces PCPC+1;
SC0
ION.- Al generarse las seales T3D7IB7 se establece el flip_flop IEN a 1.
Este flip-flop es el que controla las interrupciones.
IOF.- Al generarse las seales T3D7IB6 se establece el flip_flop IEN a 0
4.7.5. Interrupciones
Cada vez que se desee enviar un caracter a la impresora, se debe
comprobar primero si el registro OUPR est libre o no. Si se tiene que
enviar un conjunto de caracteres, esta prueba se debe de hacer para cada
uno de ellos. Esto implica que la computadora tiene que esperar que la
impresora lea el carcter enviado para poder enviar el siguiente carcter.
Por lo general la velocidad de procesamiento de la impresora es mucho
menor que el de la computadora lo que implica que cada vez que la
computadora compruebe que aun esta ocupado el registro OUTR, entre en

90

un bucle esperando que ste se desocupe lo cual genera un tiempo muerto


para la computadora que puede ser empleado en otras tareas.
La rutina que imprime un conjunto de caracteres se representa en la
siguiente figura:
Direccin
de memoria
7B3
7B4
7B5
7B6

7C4
7C5

Cdigo

Instruccin

6A00
47B3
F400

47B3

SKO
0 BUN 7B3
OUT

0 BUN 7B3

Figura 4.13 Cdigo para imprimir una cadena

La instruccin SKO comprueba si est libre el registro OUTR (FGO=1) de


ser as, salta a la direccin de memoria 7B5 donde se encuentra la
instruccin OUT que transfiere los 8 bits menos significativos de AC al
registro OUTR. Pero si FGO=0, entonces se ejecuta la siguiente
instruccin (direccin 7B4) la cual hace un salto incondicional a 7B3 y
estar as (ejecutando las instrucciones 7B3 y 7B4) hasta que OUTR est
libre. Se asume que entre las direcciones 7B6 y 7C3 se encuentran las
instrucciones que se requieren para obtener y transferir el siguiente
carcter a imprimir al registro AC. Finalmente la instruccin 47B3
(direccin 7C4) hace un salto incondicional hacia la direccin 7B3 para
imprimir el siguiente carcter.
Existe una forma ms eficiente de realizar la tarea anterior eliminando el
tiempo muerto que genera: interrupciones. Una interrupcin es una seal
que detiene la ejecucin de una tarea o rutina para pasar a ejecutar otra y
luego de terminada sta ltima continuar con la tarea inicial.
La computadora bsica tiene la instruccin ION que permite activar las
interrupciones y la instruccin IOF para desactivarlas. Cuando las
interrupciones estn activadas IEN=1, en forma paralela a la fase de
ejecucin de instrucciones (es decir en cualquier transicin del reloj
excepto cuando las seales de temporizacin T0, T1 y T2 estn activas), se
verifica si los flip-flops FGI o FGO son 1 de ser as, se pone en 1 un flipflop llamado R, el cual es chequeado constantemente antes de iniciar la
fase de bsqueda. Cuando R es 0, se ejecuta un ciclo de instruccin
(bsqueda, decodificacin y ejecucin de instrucciones) y cuando es 1, se
ejecutan las microinstrucciones que luego van a permitir ejecutar las
instrucciones que conforman la rutina que procesar la interrupcin. A esto
se le denomina ciclo de interrupcin.
Por lo tanto si se han activado las interrupciones y se ha enviado un
caracter al registro OUTR, ya no ser necesario estar constantemente
comprobando mediante cdigo si el registro OUTR est libre, en vez de
ello, la computadora puede realizar cualquier otra tarea y esperar que R sea
1 para bifurcar a un ciclo de interrupcin.
91

La condicin para activar R puede expresarse de la siguiente manera:


T0T1 T2(IEN)(FGI+FGO) :
R1
En el ciclo de interrupcin se tiene que cambiar el control del programa
para que en el siguiente ciclo de instruccin se ejecuten las instrucciones
que conforman la rutina de la interrupcin, as como salvar la direccin de
la siguiente instruccin que se debe ejecutar cuando se termine de ejecutar
la rutina de la interrupcin.
En la direccin de memoria 000 se almacenar la direccin de la siguiente
instruccin a ejecutar y en la direccin 001 una instruccin BUN para que
realice un salto incondicional a la rutina de la interrupcin. De esta forma
slo se tiene que modificar el valor del registro PC a 001 para que ejecute
esta instruccin y se inicie la ejecucin de la interrupcin. Esto se consigue
con la siguiente secuencia de microinstrucciones:
RT0 : AR0;
TRPC
RT1 : M[AR]TR; PC0
RT2 : PCPC+1;
IEN0 ; R 0; SC0
Durante el ciclo de interrupcin se desactiva las seales IEN para que no se
genere otra interrupcin mientras se esta ejecutando la actual y R se hace 0
para pasar a ejecutar las instrucciones de la interrupcin como cualquier
instruccin. Al finalizar la interrupcin, PC apunta a la direccin 001
donde se encuentra un salto incondicional a la rutina de la interrupcin.
La rutina de la interrupcin de entrada-salida hace las comprobaciones
necesarias sobre los flip-flops FGI y FGO para saber que fue lo genero la
interrupcin: la llegada de un nuevo carcter a INPR o que la impresora ya
ley e imprimi el carcter que se encontraba en el registro OUTR.
La rutina de interrupcin debe volver a establecer a 1 el registro IEN (que
fue desactivado durante el ciclo de interrupcin) para habilitar
interrupciones posteriores. La ltima instruccin que debe contener la
rutina de la interrupcin es una instruccin BUN indirecta a 000, donde se
encuentra la direccin a retornar. Ver figura 4.14

Direccin
de memoria
000
001

7B3
7B4
7B5

F49
F4A

F57
F58

Cdigo

Instruccin

07B5 (direccin a retornar)


4F49
0 BUN F49

Programa en ejecucin
Instruccin en ejecucin

Rutina de la interrupcin
de entrada-salida
..

C000 1 BUN 000

Figura 4.14 ciclo de interrupcin

92

4.8. La ALU
En el item 4.7.4 se listan las secuencias de microinstrucciones requeridas para
ejecutar una instruccin. Se observar que varias de ellas mencionan que la
operacin en s, la realiza la ALU. Adems se podr apreciar las seales necesarias
para su ejecucin. Estas instrucciones son:
Instruccin
AND
ADD
LDA
CMA

Seales
T5D0
T5D1
T5D2
T3D7IB9

CIR

T3D7IB7

CIL

T3D7IB5

INP

T3D7IB11

Microinstruccin
ACACDR
ACAC+DR
ACDR
ACAC
ACDesDer(AC)
AC[15]E
ACDesIzq(AC)
AC[0]E
AC[7-0]INPR

Figura 4.15 Microinstrucciones ejecutadas por la ALU

Esto significa que el diseo de la ALU debe ser de tal manera que sta realice las
operaciones cuando se activen las seales de control respectivas. El diagrama de
bloque de la ALU es el siguiente:

Figura 4.16 diagrama de bloque de la ALU

Como se observa, el circuito de la ALU tiene 16 entradas que provienen de las


salidas del registro DR, 16 entradas que provienen de las salidas del registro AC, 8
entradas que provienen de las salidas del registro INPR y 7 entradas de control
para indicarle cual de las 7 operaciones debe de realizar. Adems de 16 salidas que
se convierten en las entradas del registro AC y una salida que va al flip-flop E.
Mostrar todo el circuito de la ALU sera demasiado confuso de explicar, por ello
slo se va a mostrar una etapa (figura 4.17) junto con las compuertas de la unidad
de control necesarias para generar las seales de control de la ALU.
Debido que las seales de control tales como T5D0, T5D1, T3D7IB9, etc. Son
mutuamente excluyentes (slo una de ellas puede ser 1 a la vez) bastar con filtrar
mediante compuertas AND de dos entradas, el resultado que desea pasar a la
salida S[i] y este a su vez sern el isimo bit (AC[i]) del registro AC.
Por ejemplo, la etapa 5 tiene como entradas el bit 5 del registro DR (DR[5]) y el bit
5 del registro AC (AC[5]). As como tambin los bits 4 y 6 de AC. Cualquier
operacin que se realice generar la salida S[5] que luego se convertir (cuando se
genere la seal de carga C de AC) en el bit 5 del registro AC
93

Si llegara la seal T5D1 a la ALU (T5D1=1, sumar) slo la compuerta ADD dejar
pasar hacia la compuerta OR el valor de su otra entrada que, en este caso, es la
suma de los bits AC[5] y DR[5]. El resto de compuertas AND estn prcticamente
desactivadas porque las seales de control que llegan a la ALU son 0.

Figura 4.17 Circuito de una etapa de la ALU

Ahora, si la seal que llegara a la ALU fuera T3D7IB5, entonces la nica


compuerta que se activara es la CIL y por consiguiente su otra entrada (AC[4]) es
la que pasara a la compuerta OR, luego a la salida S[5] y finalmente a AC[5]. Es
decir AC[5] pasara a ser AC[4] y si esto se aplica al resto de las 16 etapas lo que se
lograr es un desplazamiento de bits hacia la izquierda. Para la etapa 0 (i=0), el bit
AC[-1] es la salida del flip-flop E y para la etapa 15, AC[15] pasa a la entrada del
flip-flop E.
As tambin se observa que cada etapa tiene una entrada C[i-1] que es el acarreo de
salida de la etapa (i-1) y una salida C[i] que es el acarreo de salida de la etapa i. En
la etapa 0 C[-1] es igual a E y en la etapa 15, C[15] pasa a E.
En la parte izquierda de la figura 4.17 se encuentran las compuertas lgicas que en
funcin de las seales Bi, Di y de temporizacin generan las seales de control que
llega a cada una de las 16 etapas de la ALU. Estas compuertas son parte de la
unidad de control.

94

4.9. Diseo Lgico de la computadora bsica


La figura 4.18 muestra el diagrama de flujo del ciclo de instruccin, incluyendo un
ciclo de interrupcin para la computadora bsica.
Se parte con la puesta a 0 del contador SC para que las seales de temporizacin
inicien con T0, tambin se inicializa a 0 el flip-flop IEN para inhibir la
interrupciones, es decir, aunque llegue un carcter de teclado al registro INPR o se
ponga un carcter en el registro OUTR para enviarlo a la impresora, el flip-flop R
permanecer con el valor que fue inicializado, en este caso 0.

SC0; IEN0; R0

0 = Ciclo de instruccin

1 = Ciclo de interrupcin
R

RT0

RT0
ARPC

AR0; TRPC

RT1

RT1
M[AR] TR; PC0

IRM[AR]; PCPC+1
RT2

RT2

ARIR[11-0]; IIR[15]
D7D0Decodificar IR[14-12]

PCPC+1; IEN0
R0; SC0

0 = Referencia a memoria

1 = Registro oE/S
D7

0 = Directo

1 = Indirecto

0 = Registro

1 = E/S
I

D7IT3

D7IT3
ARM[AR]

D7IT4

D7IT3
Ejecutar
instruccin de
referencia a
registro

D7IT3
Ejecutar
instruccin de
entrada-salida

Ejecutar
instruccin de
referencia a
memoria

Figura 4.18 Diagrama de flujo para la operacin de una computadora

Cuando el flip-flop de interrupcin R es 0, la computadora procede a buscar,


decodificar y ejecutar una instruccin y cuando es 1 inicia un ciclo de interrupcin

95

cuya funcin es salvar la direccin de retorno de la interrupcin y dar el control a


la rutina que se encargar de procesar la interrupcin.
El flip-flop R puede establecerse a 1 en cualquier momento durante las fases
posteriores a la fase de bsqueda y decodificacin, es decir despus de la seal de
temporizacin T2. Por ello, para que se active deben estar desactivadas T0, T1 y T2
(T0T1T2)
El anlisis y diseo de este flip-flop se ver ms adelante en el item 4.10.2 flipflops de apoyo.
Las microinstruccin que se muestran en el diseo lgico deben ser
implementadas con compuertas lgicas que generen las seales respectivas que
controlen los diferentes dispositivos. Por ejemplo la instruccin DRM[AR]
implica que primero se debe generar la seal lectura de memoria y las seales S de
seleccin del BUS para que la palabra de direccin AR sea transferida al BUS. En
forma simultnea tambin debe de activarse la seal de carga C del registro DR,
con ello se logra que en el siguiente pulso del Reloj, lo que est en memoria pase
al BUS y luego al registro DR.

T0

T3

AND

T4D0

ADD

T4D1

DRM[AR]
T5D0

T4D4

M[AR] AC
SC0

ACDR
SC0

BSA
T4D5

PCAR
SC0

T4D3

DRM[AR]
T5D2

ACAC+AC
EC15
SC0

BUN

STA

T4D2

DRM[AR]
T5D1

ACACAC
SC0

LDA

M[AR] PC
ARAR+1

ISZ
T4D6
DRM[AR]
T5D6

T5D5
PC AR
SC0

DRDR+1

T6D6
M[AR] DR
Si DR=0 PC PC+1
SC0

Figura 4.19 Diagrama de flujo para instrucciones de referencia a memoria

96

La figura 4.20 muestra el diagrama de flujo de las instrucciones de referencia a


registro. Todas las instrucciones necesitan de slo una seal de temporizacin y se
inician con la seal de temporizacin T3.
T0

T2

CLA

CLE

T3D7IB11
AC0
SC0

CMA

T3D7IB10
E0
SC0

INC

CME

T3D7IB9

SPA

T3D7IB5
ACAC+1
SC0

T3D7IB8
E E
SC0

ACAC
SC0

CIR

Si AC[15]=0
PCPC+1
SC0

T3D7IB7

ACDesDer AC
AC[15]E
E AC[0]
SC0

SNA
T3D7IB4

CIL
T3D7IB6
ACDesIzq AC
AC[0]E
E AC[15]
SC0

SZA

T3D7IB3
Si AC[15]=1
PCPC+1
SC0

SZE

T3D7IB2
Si AC=0
PCPC+1
SC0

HLT

T3D7IB1
H0

Si E=0
PCPC+1
SC0

Figura 4.20 Diagrama de flujo para instrucciones de referencia a registro

La figura 4.21 muestra el diagrama de flujo de las instrucciones de entrada-salida.


Algunas de estas instrucciones necesitan de una seal de control adicional. Por
ejemplo la instruccin SKI requiere de las seales T3D7IB9, pero para que se
ejecute la microinstruccin PCPC+1, la seal de salida del flip-flop FGI debe
ser 1 por consiguiente PCPC+1 se ejecutar slo si T3D7IB9(FGI) es 1. La
microinstruccin SC0 se ejecutar independientemente de FGI.

T0

T2

INP
T3D7IB11
AC[7-0]INPR
FGI0
SC0

OUT
T3D7IB10
OUTRAC[7-0]
FGO0
SC0

SKI
T3D7IB9
Si FGI=1
PCPC+1
SC0

SKO
T3D7IB8
Si FGO=1
PCPC+1
SC0

ION
T3D7IB7
IEN1
SC0

IOF
T3D7IB6
IEN0
SC0

Figura 4.21 Diagrama de flujo para instrucciones de entrada-salida

Todas las instrucciones contienen como microinstruccin final SC0 que resetea
el contador SC haciendo que la computadora bsica pase a un nuevo ciclo de
instruccin si R=0 o interrupcin en el caso de que R=1.

97

4.10. Diseo Fsico de la computadora bsica


La tabla siguiente muestra las seales de control y las microinstrucciones de la
computadora bsica.
Instruccin
Lee carcter la impresora
o llega caracter del teclado
Interrupcin
Recuperar
Decodificar
AND
ADD
LDA
STA
BUN
BSA

Seales

Microinstruccin

T0T1T2(IEN)(FGI+FGO)

R1

RT0
RT1
RT2
RT0
RT1

AR0; TRPC
M[AR] TR; PC0
PCPC+1; IEN0; R0; SC0
ARPC
IRM[AR]; PCPC+1
D7D0Decodificar IR[14-12]
ARIR[11-0]; IIR[15]
DRM[AR]
ACACDR; SC0
DRM[AR]
ACAC+DR; SC0
DRM[AR]
ACDR; SC0
M[AR]AC; SC0
PCAR; SC0
M[AR]PC; ARAR+1
PCAR; SC0
DRM[AR]
DRDR+1
M[AR]DR
Si DR=0 PCPC+1; SC0
AC0; SC0
E0; SC0
ACAC; SC0
EE; SC0
ACDesDer(AC); AC[15]E
EAC[0]; SC0
ACDesIzq(AC); AC[0]E
EAC[15]; SC0
ACAC+1; SC0
Si AC[15]=0 PCPC+1; SC0
Si AC[15]=1 PCPC+1; SC0
Si AC=0 PCPC+1; SC0
Si E=1 PCPC+1; SC0
H0; SC0
AC[7-0]INPR; FGI0; SC0
OUTRAC[7-0]; FGO0; SC0
Si FGI=1 PCPC+1; SC0
Si FGO=1 PCPC+1; SC0
IEN1; SC0
IEN0; SC0

RT2
T4D0
T5D0
T4D1
T5D1
T4D2
T5D2
T4D3
T4D4
T4D5
T5D5

ISZ

T4D6
T5D6
T5D6

CLA
CLE
CMA
CME

D7IT3B11
D7IT3B10
D7IT3B9
D7IT3B8

CIR

D7IT3B7

CIL

D7IT3B6

INC
SPA
SNA
SZA
SZE
HLT
INP
OUT
SKI
SKO
ION
IOF

D7IT3B5
D7IT3B4
D7IT3B3
D7IT3B2
D7IT3B1
D7IT3B0
D7IT3B11
D7IT3B10
D7IT3B9
D7IT3B8
D7IT3B7
D7IT3B6

Figura 4.22 Tabla con las funciones de control y microinstrucciones

A partir de estas seales y microinstrucciones se hace el diseo de los circuitos


que permiten controlar los registros, memoria, bus y los flip-flops de apoyo. Por
ejemplo, si se desea disear el circuito que controla el registro AR (carga, limpieza
e incremento), primero se hace un listado de todas las microinstrucciones donde
aparece el registro AR a lado izquierdo, luego se forman tres grupos: uno que
contenga todas aquellas microinstrucciones donde AR es incrementado en 1 (seal
98

A), otro donde AR es puesto a 0 (seal L) y un tercero donde a AR se le transfiere


algn valor (seal C). Si revisamos la tabla anterior estas instrucciones son:
Entrada A
T4D5: ARAR+1

Entrada L
T0R: AR0

Entrada C
T0R: ARPC
T2R: ARIR[11-0]
T3ID7 : ARM[AR]

Entonces para que el registro AR incremente en 1, las seales T4 y D5 deben ser 1


y llegar a la entrada de control A de AR. De igual manera ocurre para las entradas
L y C de AR. Ver figura 4.19

Figura 4.23 Compuertas de control del registro AR

A continuacin se ver la lgica que hace la transferencia de los registros al BUS.


Se asume que cuando se genere la seal x1 se debe transferir el contenido de AR al
BUS, eso implica que las entradas de seleccin S (S2S1S0) del BUS (segn la
figura 4.7) deben ser 001. Cuando se genere la seal x2 se transferir PC y por
tanto las entradas de seleccin del BUS sern 010, cuando se genere x3 DR y as
sucesivamente. Al completar la tabla con las caractersticas mencionadas, se tiene:

x7
0
0
0
0
0
0
0
1

x6
0
0
0
0
0
0
1
0

Entradas
x5 x4 x3
0 0 0
0 0 0
0 0 0
0 0 1
0 1 0
1 0 0
0 0 0
0 0 0

x2
0
0
1
0
0
0
0
0

x1
0
1
0
0
0
0
0
0

S2
0
0
0
0
1
1
1
1

Salidas
S1 S0
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1

Registro que
pasar al BUS
Ninguno
AR
PC
DR
AC
IR
TR
M

Figura 4.24 Codificador para entradas de seleccin del BUS

Si se observa con detenimiento la tabla de la figura anterior se concluir que se


trata de un codificador
99

De la tabla anterior se obtiene:


S0 = x1 + x3 + x5 + x7
S1 = x2 + x3 + x6 + x7
S2 = x4 + x5 + x6 + x7
Para determinar la funcin lgica de x1, se busca en la tabla de la figura 4.22 todas
las microinstrucciones que requieren que el contenido de AR sea transferido al
BUS. Estas microinstrucciones son:
T4D4: PCAR
T5D5: PCAR
Por lo tanto: x1 = T4D4 + T5D5
De igual forma se hace para x2, x3, x4, x5, x6 y x7 obtenindose lo siguiente:
x2 = T0R + T0R + T5D4
x3 = T5D2 + T6D6
x4 = T4D3 + T3D7I
x5 = T2R
x6 = T1R
x7 = T1R + T3D7I + T4D0 + T4D1 + T4D2 + T4D6
Sustituyendo stos valores en S0, S1 y S2 se obtienen las funciones lgicas con las
que se puede realizar el diseo del codificador para las entradas de seleccin S del
BUS comn.

4.10.1. Los flip-flops de apoyo.


Son registros de un bit que se utilizan para almacenar uno de los estados en
los que se puede encontrar la computadora bsica, como por ejemplo si la
instruccin de referencia a memoria en curso es directa o indirecta (flipflop I); si se ha producido acarreo luego de haber realizado una suma
aritmetica (flip-flop E); si se han activado las interrupciones (flip-flop
IEN), se ha llegado un carcter de teclado (flip-flop FGI); si se ha cargado
el registro OUTR con un carcter para la impresora (flip-flop FGO); si hay
una interrupcin pendiente (flip-flop R) o si se ha detenido la computadora
(flip-flop H).
Estos flip-flops deben poderse iniciar (establecer a 1) o resetear (establecer
a 0) y en algunos casos, como el flip-flop E, poder complementar. Las
salidas de los flip-flops de apoyo unidas, mediante compuertas lgicas, a
otras seales sirven para generar las entradas de control de registros y otros
dispositivos.
Igual como se analiz para los registros, se seleccionan todas las
microinstrucciones donde se modifique el valor del flip-flop en cuestin.
Por ejemplo para el flip-flop IEN, las microinstrucciones son:
(A) T3D7IB6 :
IEN0
(B) T2R
:
IEN0
(C) T3D7IB7 :
IEN1
100

Asumiendo que el flip-flop a usar es del tipo JK se tiene la tabla siguiente:


A
0
0
0
1

B
0
0
1
0
Resto

C
0
1
0
0

Q
Sin cambio
1
0
0
X

J
0
1
0
0
X

K
0
0
1
1
X

En el caso que A=B=C=0 (las tres seales desactivadas) el estado del flipflop debe permanecer sin cambios. El resto de casos nunca se van a dar
debido a que las seales son mutuamente excluyentes.
Simplificando las funciones lgicas J y K se tiene:
J = C = T3D7IB7
K = A + B = T3D7IB6 + T2R
Con las funciones lgicas J y K se procede a disear el diagrama siguiente:

Figura 4.25 Seales de control para el flip-flop IEN

Para el flip-flop R, las microinstrucciones son:


(A) T2T1T0(IEN)(FGI+FGO) :
R1
(B) T2R
:
R0
Como A y B son mutuamente excluyentes nunca se dar que A=B=1
entonces para ese caso J y K pueden tomar cualquier valor. As tambin
cuando A=B=0 el slip-flop R debe permanecer sin cambios.
Simplificando las funciones lgicas se tiene que:
J = A = T2T1T0(IEN)(FGI+FGO) = (T2+T1+T0)(IEN)(FGI+FGO)
K = B = T2R

Figura 4.26 Seales de control para el flip-flop R

101

Al unir los flip-flops IEN y R se tiene el diagrama de la figura 4.27 que es


prcticamente la implementacin del hardware necesario para activar y
generar las interrupciones

Figura 4.27 Seales de control para el flip-flops IEN y R

Finalmente se analizar el flip-flop E. Este flip-flop es modificado con las


siguientes microinstrucciones:
(A) T3D7IB10 :
E0
(B) T3D7IB8 :
EE
(C) T3D7IB7 :
EAC[0]
(D) T3D7IB6 :
EAC[15]
(E) T5D1
:
EC[15]
En este caso tambin se da que las entradas son mutuamente excluyentes
Con la entrada A, J y K deben ser 0 y 1 respectivamente para que E=0;
Con la entrada B, J y K deben ser 1 y 1 para que E sea complementado.
Pero las entradas C, D y E van a necesitar los valores de AC[0], AC[15] y
C[15] respectivamente para establecer los valores J y K apropiados y
obtener la salida Q deseada. Por ello se tomara AC[0] (F), AC[15] (G) y C[15]
(H) como entradas adicionales. Teniendo en cuenta que A, B, C, D y E son
mutuamente excluyentes se construye la siguiente tabla:
A
0
0
0
0
0
0
0
0
1

B
0
0
0
0
0
0
0
1
0

C
0
0
0
0
0
1
1
0
0

D E
0 0
0 1
0 1
1 0
1 0
0 0
0 0
0 0
0 0
RESTO

F
X
X
X
X
X
0
1
X
X

G
X
X
X
0
1
X
X
X
X

H
X
0
1
X
X
X
X
X
X

Q
S-C
0
1
0
1
0
1
Q
0
X

J
0
0
1
0
1
0
1
1
0
X

K
0
1
0
1
0
1
0
1
1
X

102

Donde: AC[0] es el bit 0 de AC, AC[15] es el bit 15 de AC y C[15] es el bit 15


de acarreo que se genera en la ALU.
Simplificando las funciones lgicas J y K se obtiene:
J = EH + DG + CF + B
J = T5D1C[15] + T3D7IB6AC[15] + T3D7IB7AC[0] + T3D7IB8
K = EH + DG + CF + A + B
K = T5D1C[15] + T3D7IB6AC[15] + T3D7IB7AC[0] + T3D7IB10 + T3D7IB8

Con lo que se disea el diagrama siguiente:

Figura 4.28 Seales de control para el flip-flop E

4.10.2. El Acumulador.
Igual como se hizo con el registro AR se hace con el registro AC. Se
recopila todas las microinstrucciones de la tabla de la figura 4.22 donde
AC aparezca a la izquierda de la microinstruccin para luego formar 3
grupos:
Entrada A
T3D7IB5:

ACAC+1

Entrada L
T3D7IB11:

AC0

Entrada C
T5D0:
T5D1:
T5D2:
T3D7IB11 :
T3D7IB9:
T3D7IB7:
T3D7IB6:

ACACDR
AC AC+DR
ACDR
AC[7-0]INPR
ACAC
ACDesDer AC,
ACDesIzq AC,

AC[15]E
AC[0]E
103

Con las seales obtenidas se disea el diagrama siguiente:

Figura 4.29 Compuertas de control del registro AC

Las instrucciones CIR y CIL realizan transferencias entre los bits 0 y 15


del acumulador con el flip-flop E. En el caso de las transferencias
EAC[0] y EAC[15] ya se vieron cuando se analiz el flip-flop E (ver
figura 2.28) slo queda evaluar las transferencias AC[0] E y AC[15] E
las cuales se realizan nicamente cuando T3D7IB6 y T3D7IB7,
respectivamente son 1. En cualquier otro caso las seales de entrada del
acumulador deben ser las que provienen de la ALU.
La figura 4.30 muestra como interactan el registro acumulador AC, el
flip-flop E y las seales de control.

Figura 4.30 El registro AC y el flip-flop E

104

4.11. Ejercicios resueltos y propuestos


4.11.1. Resueltos.
a) Una computadora utiliza una unidad de memoria de 256K palabras
de 32 bits cada una. Un cdigo de instruccin binario se almacena en
una palabra de memoria. La instruccin tiene cuatro partes: un bit
indirecto, un cdigo de operacin, una parte de cdigo de registro
para especificar uno de 64 registros y una parte de direccin. Dibuje
y represente el formato del cdigo de instruccin binario
Como el cdigo de instruccin se almacena en una palabra de
memoria y cada palabra es de 32 bits, entonces el cdigo es de 32
bits.
Para poder representar 64 valores diferentes (un valor por cada
registro) ser necesario 6 bits (26 = 64)
Para referenciar una de las 256K palabras ser necesario 18 bits (218=
262144 = 256K)
Por lo que quedar: 32-1-6-18 = 7 bits para el cdigo de operacin.
El formato ser el siguiente:
31

30

24

CodOp

23

18

CodReg

17

Direccin

b) Las siguientes entradas de control estn activas en el sistema de BUS


comn. Para cada caso, especifique la transferencia de registro que se
ejecutar durante la siguiente transicin de reloj.
i)
ii)
iii)
iv)

S2
1
1
1
0

S1
1
1
0
0

S0
1
0
0
0

C de registro
IR
PC
DR
AC

Memoria
Leer
-Escribir
--

ALU
---Sumar

i) Si S = 111(2 = 7 (memoria) y se activa la entrada Leer de la


memoria, el contenido de memoria M[AR] pasa al BUS. Como
simultneamente se activa la entrada C del registro IR entonces lo
del BUS pasa a IR. La transferencia ser: IRM[AR]
ii) Si S = 110(2 = 6 (TR) , el contenido de TR pasa al BUS y como
simultneamente se activa la entrada C del registro PC entonces
lo del BUS pasa a PC. La transferencia ser: PCTR
iii) Si S = 100(2 = 4 (AC) , el contenido de AC pasa al BUS. Como
simultneamente se activa la entrada C del registro DR y la
entrada escribir de la memoria, entonces lo del BUS pasa a DR y
tambin la palabra de direccin AR de la memoria. La instruccin
ser: DRAC; M[AR]AC
iv) Si S = 000(2 = 0 (ningn registro), Al activarse la seal sumar de
la ALU se efecta la suma de AC y DR. Al activarse tambinn la
entrada C de AC, el resultado de la aLU es transferido a AC. La
transferencia ser: ACAC+DR.

105

c) Las siguientes transferencias se van a ejecutar en el sistema de BUS


comn.
i.
ARPC
ii.
IRM[AR]
iii.
M[AR]TR
iv.
ACDR; DRAC (en forma simultnea)
Para cada transferencia especifique: 1) el valor binario que debe
aplicarse a las entradas de seleccin del BUS; 2) el registro cuyas
entradas C debe estar activa (si es que hay alguna); 3) una operacin
de lectura escritura (si se necesita) y 4) la operacin en la ALU (si
hay alguna)
i)
ii)
iii)
iv)

S2
0
1
1
1

S1
1
1
1
0

S0
0
1
0
0

C de registro
AR
IR
DR-AC

Memoria
-Leer
Escribir
--

ALU
---Transf DR

d) Explique por qu no puede ejecutarse cada una de las siguientes


microinstrucciones durante un slo pulso de reloj. Especifique una
secuencia de microinstrucciones que ejecuten la operacin.
i.
IRM[PC]
ii.
ACAC+TR
iii.
DRDR+AC
i.

ii.

iii.

Porque cuando se lee de memoria, es el registro AR el que


contiene la direccin a acceder. La secuencia sera:
ARPC; IRM[AR]
Porque para cualquier operacin aritmtica o lgica los
operandos deben ser colocados en los registros AC y DR. La
secuencia sera:
DRTR; ACAC+DR
Porque los resultados de una operacin suma se almacena en
el registro acumulador AC. La secuencia sera:
ACAC+DR; DRAC

e) Para cada una de las siguientes instrucciones proporcione el cdigo


hexadecimal y explique cual instruccin representa.
i.
0001 0000 0010 0100
ii.
1011 0001 0010 0100
iii.
0111 0000 0010 0000
i.

ii.

iii.

1024 (0 ADD 024) Suma el registro AC con la palabra que se


encuentra en la direccin memoria 024, el resultado se
almacena en AC.
B124 (1 STA 124 ) Toma la palabra de la direccin de
memoria 124 y en ese valor (direccin) almacena el contenido
de AC.
7020 (INC) Suma 1 al registro acumulador AC
106

f) El contenido de AC es A937 y el de PC 021. Determine el contenido


de AC, PC, AR e IR despus de ejecutar la instruccin CLA.
Se supone que PC apunta a la instruccin en curso (CLA = 7800).
Siguiendo el flujo de la figura 4.18 se completa la tabla siguiente:
T
T0
T1
T2
T3

AC
A937
A937
A937
A937
0000

PC
021
021
022
022
022

AR
?
021
021
800
800

IR
?
?
7800
7800
7800

Es con la seal de temporizacin T3 que se ejecuta CLA y los valores


que aparecen en la ltima fila son los valores finales de AC, PC, AR
e IR
g) Escriba un programa que multiplique dos valores enteros ubicados en
la memoria y el resultado lo almacene en memoria. (utilizar el
mtodo de sumas sucesivas)
Se asume que el programa empieza en la direccin de memoria 100 y
los valores a multiplicar se encuentran en las direcciones de memoria
200 y 201 respectivamente. El resultado se almacenar en 202.
DIR

COD

ASM

SEUDOCODIGO

100

2200

LDA 200

ACM[200]

101
102
103
104
105

7200
7020
3203
7800
1201

CMA
INC
STA 203
CLA
ADD 201

ACAC
ACAC+1
M[203] AC
AC0
ACAC+M[201]

106

6203

ISZ

M[203]M[203]+1

107

4105

BUN 105

IR a 105

108

3202

STA 202

M[202]AC

109

7001

HTL

203

DESCRIPCION
Carga el acumulador con el
primer factor
Complementa e incrementa en
1 (complemento a 2)
Salva AC en la direccin 203
Inicializa AC con 0
Suma a AC el segundo factor
Incrementa en 1 la palabra de
la direccin 203. Si esta
palabra es 0 salta a la
direccin 108 en caso
contrario continua con la
instruccin 107
Salta a la direccin 105
Salva en la direccin 202 el
resultado
Detiene la computadora

h) Las operaciones que van a ejecutarse con un flip-flop F se


especifican mediante los siguientes enunciados de transferencia de
registro:
XT3:
YT1:
ZT2:
WT5:

F1
F0
FF
FG

Activar F a 1
Borrar F a 0
Complementar F
Transferir el valor de G a F
107

De otra manera, el contenido de F no debe cambiar. Dibujar el


diagrama lgico que muestre las conexiones de las compuertas que
forman las funciones de control y las entradas del flip-flop F.
La seal de temporizacin T hace que las seales sean mutuamente
excluyentes y por consiguiente nunca van estar activas ms de una a
la vez, pero lo que si puede ocurrir es que las 4 seales estn
desactivadas a la vez. Ah F no debe cambiar
Reemplazar XT3 por A, YT1 por B, ZT2 por C y WT5 por D. Pero la
transferencia del valor de G a F depende del valor de G. Con esto se
completa la tabla siguiente:
A
0
0
0
0
0
1

B
0
0
0
0
1
0

C D
0 0
0 1
0 1
1 0
0 0
0 0
Resto

G
X
0
1
X
X
X

J
0
0
1
1
0
1
X

K
0
1
0
1
1
0
X

Usando mapas de Karnaugh para simplificar las funciones lgicas se


tiene:
AB
AB
AB
AB

CDG
0
0
X
1

CDG
0
0
X
1

CDG
1
X
X
X

CDG
0
X
X
X

CDG
X
X
X
X

CDG
X
X
X
X

CDG
1
X
X
X

CDG
1
X
X
X

J=A + C + DG = XT3 + ZT2 + WT5G


AB
AB
AB
AB

CDG
0
1
X
0

CDG
0
1
X
0

CDG
0
X
X
X

CDG
1
X
X
X

CDG
X
X
X
X

CDG
X
X
X
X

CDG
1
X
X
X

CDG
1
X
X
X

K = B + C +DG = YT1 + ZT2 + WT5G


El diagrama lgico con las conexiones de las compuertas que forman
las funciones es el siguiente:

108

i) Un programa de salida reside en la memoria comenzando en la


direccin 8FC. se ejecuta despus de que la compuerta reconoce una
interrupcin cuando FGO se convierte en 1 (mientras IEN=1).
i. Qu instruccin debe colocarse en la direccin 1?
ii. Cules deben ser las dos ltimas instrucciones del programa de
salida?
i. Debe colocarse un salto incondicional con direccionamiento
directo a la direccin de memoria 8FC (0 BUN 8FC) cuyo cdigo
de instruccin sera 48FC.
ii. La penltima instruccin debe ser ION (F080) para activar
nuevamente las interrupciones ya que stas fueron desactivadas
durante el ciclo de interrupcin. La ltima instruccin es un salto
incondicional a la direccin de la instruccin que se iba a ejecutar
cuando se produjo la interrupcin. Esta direccin es almacenada
en la direccin 000 de la memoria, por ello para retornar de la
interrupcin se debe hacer un salto incondicional indirecto (1
BUN 000) cuyo cdigo de instruccin sera C000.
j) Derive las puertas de control para la entrada de lectura-escritura de la
memoria.
Seleccionar todas las microinstrucciones de la tabla de la figura 4.22
y formar 2 grupos: las que aparece M[AR] a la izquierda (escritura) y
las que aparece a la derecha (lectura) de la microinstruccin.
Escritura
T1R:
M[AR]TR
T4D3: M[AR]AC
T4D5: M[AR]PC
T6D6: M[AR]DR

Lectura
T1R:
T3D7I:
T4D0:
T4D1:
T4D2:
T4D6:

IRM[AR]
ARM[AR]
DRM[AR]
DRM[AR]
DRM[AR]
DRM[AR]

R=T1R + T4(D3+D4) + T6D6 y W=T1R + T3D7I + T4(D0+D1+D2+D6)

El diagrama sera el siguiente:

109

4.11.2. Propuestos
a) Cuntos bits debe tener el registro AR si la memoria de la
computadora bsica fuera de 65536 palabras de 16 bits?
b) Especifique la transferencia de registro que se ejecutarn si las
siguientes entradas de control estn activas.
i)
ii)
iii)

S2
1
1
0

S1
1
1
1

S0
1
1
1

C de registro
AC
AC
TR

Memoria
Leer
Escribir
--

ALU
----

c) Las siguientes transferencias se van a ejecutar en el sistema de BUS


comn:
i.
DRTR
ii.
ACM[AR]
iii.
M[AR]DR.
Indique las seales control de los registros, memoria y ALU que se
requieren en cada una de ellas.
d) Para cada una de las siguientes instrucciones proporcione el cdigo
hexadecimal y explique cual instruccin representa.
i.
1110 0100 1010 0111
ii.
0011 0001 0110 0101
iii.
0111 0000 0000 0100
e) El contenido de AC es 70C9 y el de PC 0A9. Determine el contenido
de AC, PC, AR e IR despus de ejecutar la instruccin SNA
f) Si AC es el registro acumulador, P=M[160], S=M[161] y T=M[162],
C=M[163], determine los valores finales de AC, P, S, T, C despus
de ejecutar el siguiente cdigo de mquina que se encuentra en la
direccin de memoria 155h
215F, 1160, 3161, 2160, 315F, 2161, 3160, 6162, 4155, 7001, 0001,
0000, 7020, FFF8
g) Escriba un programa que divida dos valores enteros ubicados en la
memoria y el resultado lo almacene en memoria. (utilizar el mtodo
de restas sucesivas)
h) Los enunciados de transferencia de un registro CS son los siguientes:
T1X3:
CSDR
T2X5:
CSM[AR]
T3X0:
TRCS
Derive las puertas de control asociadas con el registro CS
i) Disee el circuito lgico que permita determinar si AC=0 (tome
como entradas del circuito las 16 salidas bits- de AC)
j) Derive las puertas de control asociadas con el registro DR
110

BIBLIOGRAFIA
MORRIS MANO M.

Arquitectura de Computadoras 3ra Edicin Prentice


Hall - 1994.

Mc CALLA, T.R

Lgica Digital y Diseo de Computadoras


Megabyte/ Noriega Editores - 1994.

STALLING, William

Organizacin y Arquitectura de Computadoras 4ta


Edicin Prentice Hall - 1998.

TANENBAUM, A.

Organizacin de Computadoras, un enfoque


estructurado 3ra Edicin Prentice Hall - 1992.

TOCCI, Ronald

Sistemas Digitales, Principios y Aplicaciones 8va


Edicin.

WAKERLY, John F.

Diseo Digital Principios y Practicas - 1ra Edicin


Prentice Hall - 1990

INTERNET
http://pdf.rincondelvago.com/arquitectura-de-computadoras_2.html
http://akimpech.izt.uam.mx/Web_jr/ami1.htm
http://medusa.unimet.edu.ve/sistemas/bpis03/lab0.htm
http://iteso.mx/~miguelbaz/cursos/arqcomp-2005-01/index.html

111

Vous aimerez peut-être aussi