Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Circuitos Lógicos, Álgebra de Boole y Compuertas Lógicas
Circuitos Lógicos, Álgebra de Boole y Compuertas Lógicas
Como se ha visto en los puntos anteriores, un computador es una serie de circuitos electrnicos que mediante
el mecanismo de ejecucin de instrucciones dan vida a una serie de operaciones que permiten, finalmente, ver
lo que se ve al estar frente a la pantalla de uno de ellos y el poder interactuar, con ellos, de manera ms o
menos inteligente, dependiendo de lo que de sta tenga el interactuante ya que se sabe que los computadores
como hoy se conocen no tienen ni una pizca de inteligencia.
Bsicamente un computador funciona mediante dos estados o valores conocidos como seales, por ejemplo,
1.5 volts y +4.0 volts. Estos voltajes tienen un significado lgico, con un valor se representa la existencia de
una condicin particular y el otro representa la ausencia de aquella condicin.
Para aclarar los conceptos anteriores, considere algo en el mundo que slo puede tomar dos estados o
posiciones o caractersticas, por ejemplo, una puerta que slo puede estar abierta o cerrada, o el da y la noche
o lo que es ms preciso si una luz est prendida o apagada. Los casos descritos, exageradamente, pueden tener
esa condicin dual que es posible representar por estas seales, por ejemplo la seal 1.5 volt podra
representar a "la puerta abierta", "al da", "a la luz encendida" y en cambio la seal de +4.0 volt podra
representar el otro estado de los hechos: "la puerta cerrada", "la noche", "la luz apagada".
Es decir, si se representa mediante estas seales el que una puerta est cerrada o abierta, y se quiere saber cul
es la condicin actual de la puerta, slo se debe medir la seal: si ella tiene 1.5 volts entonces aquello
significa que la puerta est abierta, en cambio, si ella estuviese cerrada, la seal que mediramos sera la que
corresponde a +4.0 volts.
Note que en los prrafos anteriores siempre se ha hablado de representar, esta accin es una de las piedras
angulares de cualquier trabajo que se quiera hacer por medio de computadores. Para que se pueda representar
es necesario que existan dos dominios, uno desde el cual se extraen los elementos que son usados para
representar y, otro, de donde se distingue los elementos a representar. En el ejemplo anterior, el dominio que
se us para representar corresponde al dominio de las seales en el computador, en el cual existen dos
elementos { 1.5 volts, +4.0 volts } y el dominio de los elementos a representar corresponde al de los estados
de una puerta { "puerta abierta", "puerta cerrada" }.
As la accin de representar es una que permite establecer relaciones entre estos dos dominios; lo que se hizo
en el prrafo anterior al crear: ("puerta abierta", 1.5 volts) y ("puerta cerrada", +4.0 volts).
Por qu la representacin resulta ser importante cuando se trabaja con computadores? Si se observa,
mediante la representacin anterior se relacion un dominio bsico del computador el de las seales y un
dominio del mundo real el estado de una puerta. Ahora, si esta puerta es la de la bveda de un banco, esta
representacin por seales podra permitir saber si la puerta est abierta o cerrada sin necesidad de estar
observndola directamente y, eso no es todo, dada esta posibilidad se podra pensar en determinar acciones
considerando algunas condiciones que tambin es posible representar.
Por ejemplo, si se representa de la misma forma anterior los siguientes estados para el dominio de la bveda {
"bveda vaca", "bveda con gente" }, es decir, creando las relaciones ("bveda vaca", 1.5 volts) y ("bveda
con gente", +4.0 volts). As, se podra pensar en que es posible implementar un procedimiento como el
siguiente:
Si est la "puerta abierta" y la "bveda vaca" entonces realizar cerrar la puerta.
Que usando la representacin definida, quedara:
1
Si seal_puerta = 1.5 volts y seal_bveda = 1.5 volts entonces realizar cerrar la puerta.
Cerrar la puerta sera la accin a realizar mediante un dispositivo automtico o, si no existe tal dispositivo se
podra avisar al guardia que lo haga, por ejemplo, prendiendo una luz en el tablero de la sala de guardias, la
cual representa esa situacin y la orden que un guardia vaya y cierre la puerta de la bveda.
En el simplificado ejemplo anterior se tienen todos las caractersticas que permiten describir la solucin de un
problema mediante el uso de un computador en este caso un dispositivo digital. Lo que primero se debe
indicar son los dominios. En el dominio del problema se hace abstraccin en muchos aspectos y, con ello, se
identifican los objetos del problema; en este caso la puerta y sus estados { "puerta abierta", "puerta cerrada" }
y la bveda, tambin con sus dos estados { "bveda vaca", "bveda con gente" }.
Por otro lado existe el dominio de las seales del computador y sus dos estados { 1.5 volts, +4.0 volts } los
que se utilizan para representar los objetos que se identifican en el problema, con ello se crea el dominio de
las relaciones entre el dominio del problema y el dominio del computador, a este dominio se le llamar el
dominio de las representaciones operacionales. Ms adelante, en la segunda unidad 2, se profundizar ms
sobre este dominio.
Se observa que para el problema de la bveda se realiza una accin que se denomina abstraccin. Esta accin
es tanto o ms importante que la de representacin. La accin de hacer abstraccin consiste en preocuparse de
una cosa y prescindir de las dems que estn junto a ella. Un buen ejemplo de lo anterior, es que se prescindi
de una serie de estados intermedios de abertura en la puerta y slo se consider los dos extremos. Del mismo
modo no interesa la cantidad de gente que hay en la bveda y las caractersticas que tiene ese tipo de gente,
tambin se obvia todo lo que la bveda es o tiene, slo importa cuatro estados y la combinacin de ellos,
(bveda vaca, puerta abierta), (bveda vaca, puerta cerrada), (bveda con gente, puerta abierta), (bveda
con gente, puerta cerrada).
Por qu es necesario el hacer abstraccin? Como se ha visto, el dominio de representacin del ejemplo,
slo tiene dos estados posibles { 1.5 volts, +4.0 volts }, lo que lo hace un dominio sumamente simple. Frente
a este dominio, la complejidad del mundo que rodea al problema de "cerrar la puerta de la bveda" es
inmensamente grande, hay miles de cosas que podran ocurrir, por ejemplo: "Juan Prez est entrando, en este
instante, por la puerta de la bveda en direccin de las cajas de valores clasificados, lleva una bolsita con
$xxx. en joyas correspondientes a diamantes y topacios.
El anda con la misma corbata amarilla que llevaba en la fiesta del fin de semana... etc. etc. etc." Hay un
cantidad impresionante de objetos que no son necesarios para la solucin del problema de "cerrar la puerta de
la bveda" y, adems, dados los elementos que se posee para representarlos, sera imposible disear una
solucin "computacional" que considere todos aquellos elementos.
Para ello es necesario hacer abstraccin: se debe reducir la complejidad del mundoproblema para poder
representarlo y darle solucin mediante el uso del computador.
Dominio Lgico
El funcionamiento del computador se basa en el dominio de las seales que se describieron en el ejemplo
anterior, pero tambin un computador es mucho ms complejo que aquellas seales, el slo hecho de mirar la
pantalla y ver la metfora del mundo que aquella representa, hace surgir preguntas tales: cmo funciona
esto? O s algo ya se sabe cmo de un dominio tan pequeo, el de las seales, es posible obtener otro tan
complejo como lo que se observa en la pantalla?
Para responder aquellas preguntas se debe partir desde el mismo dominio simple de los dos estado originales,
el cual es posible representar por un conjunto de smbolos como { 0, 1 } o { V, F }, smbolos que describen a
2
La operacin Or tambin tiene una representacin funcional como Or( A, B ) donde A y B seran los
parmetros de entrada (los mismos valores de A y B en el circuito) y L = Or( A, B ), correspondera a la forma
de asignacin de valor a L. En este caso, el parmetro de salida es la misma funcin Or.
Not: La ltima de la tres operaciones fundamentales, la cual tambin se conoce como negacin, complemento
o inversin, es mucho ms simple que las anteriores. En la figura se puede observar el circuito, que en este
caso tiene la particularidad de que al estar el interruptor abierto la luz enciende, cuando l est en posicin de
cerrado la luz permanecera apagada.
Operaciones compuestas
El conjunto de las operaciones del dominio bsico se puede extender mediante un mecanismo de composicin
de operaciones, por ejemplo, se quiere agregar la operacin XOR, que corresponde a un OR Exclusivo
mediante el cual: si ambas entradas son iguales el resultado es cero (0 o falso) y si ambas son distintas,
entonces el resultado es uno (1 o verdadero). Graficamente se puede ver la implementacin de la compuesta
XOR en la figura No. 8.
Pese a que se ha formalizado un dominio bsico y, adems, se ha creado nuevas operaciones dentro de ese
dominio, an no se cumple el objetivo de poder aproximar el mundo de seales del computador a nivel de
complejidad actual observado.
En los puntos anteriores se revis la forma de representacin de los nmeros enteros, la cual se basaba en una
memoria organizada en palabras de 8 bits. Es decir, si se considera que cada una de las seales bsicas puede
ser utilizada para componer un bit, entonces sera necesario 8 seales para poder componer un nmero, donde
cada una de estas seales podra tomar los dos estados posibles y, dependiendo de la posicin en que ella est
recuerden lo hablado sobre sistemas numricos posicionales tendra ms o menos incidencia en el valor del
nmero a representar, por ejemplo, el siguiente nmero binario, representa al 165 decimal segn la
transformacin estudiada:
xb = 10100101
X10 = V(xb) = 1 27+0 26+1 25+0 24+0 23+1 22+0 21+1 20 = 165
Con esta forma de representacin es posible entonces sintetizar un conjunto de nmeros enteros a partir de las
seales originales, combinndolas. En este caso el conjunto de enteros puede ser uno que vaya desde 0 a 255,
pero si se amplia el nmero de seales paralelas consideradas, este espectro se puede aumentar o,
considerando el signo, se pueden incluir nmeros negativos.
As, para crear el conjunto de los nmeros enteros a partir del conjunto de las seales se debe organizar stas
en cadenas paralelas la forma usual de los buses dentro del computador donde la posicin de cada una tiene
un peso especfico en la sntesis del nmero que se est representando. En la notacin que se est
propugnando, un conjunto de estas cadenas puede ser visto de la siguiente forma:
Dominio Enteros Binarios ( nb Dominio Enteros Binarios) = ( { Ln...L7L6L5L4L3L2L1L0 / Li Dominio
Lgico} )
Ahora, si bien existe una representacin factible de nmeros enteros a partir de las seales primitivas, un
dominio de los enteros (que en este caso se ha denominado enteros binarios por no estar expresados en base
decimal) no est completo si es que no existen operaciones que permitan manejarlos, por lo cual es necesario
componer tales operaciones a partir de del dominio lgico o de las mismas operaciones ya desarrolladas para
este dominio.
Suma en los enteros binarios
La suma de dos nmeros binarios se realiza de la misma manera que la suma en los nmeros decimales. Por
ejemplo, la siguiente es una suma decimal:
3 7 6 los nmeros en negrillas corresponden a los dgitos menos significativos
+461
831
Los dgitos en las posiciones menos significativos son operados primero, produciendo la suma 7. Luego, los
dgitos en la segunda posicin son sumados para dar el resultado 13, que produce un acarreo de 1 hacia la
tercera posicin, lo que produce la suma 8.
Los mismos pasos generales son seguidos en la suma binaria. Sin embargo, aqu slo hay que considerar
cuatro casos al sumar dos dgitos binarios:
0+0=0
1+0=1
1 + 1 = 0 + acarreo de 1 (uno) a la siguiente posicin
1 + 1 + 1 = 1 + acarreo de 1 (uno) a la siguiente posicin
El ltimo caso ocurre cuando dos bit de una cierta posicin tienen 1 (uno) y adems hay un acarreo desde la
posicin previa. Los siguientes son varios ejemplos de sumas de dos nmeros binarios:
011 (3)
+110 (6)
1001 (9)
1001 (9)
+1111 (15)
11000 (24)
11,011 (3,375)
+10,110 (2,750)
110,001 (6.125)
No es necesario considerar la suma de ms de dos nmeros binarios al mismo tiempo, ya que todos los
sistemas de circuitos digitales que actualmente ejecutan la suma slo pueden manejar dos nmeros a la vez.
La suma es una de las operaciones aritmticas ms importantes en los sistemas digitales, de hecho, las
operaciones de resta, multiplicacin y divisin pueden ser definidas en base a la suma.
Si se quiere entonces sumar dos nmeros enteros binarios en un computador, es necesario para ello que exista
la operacin suma de enteros binarios. De manera anloga a como se defini la operacin XOr, es posible
definir ahora una operacin de suma.
La unidad aritmtica
Todas las operaciones aritmticas se realizan en la unidad aritmtica, tambin conocida como unidad
aritmticolgica ver punto 1.2 de este apunte, de un computador. La Figura No. 9 es un diagrama de
bloques que describe los principales elementos incluidos en una unidad aritmtica tpica. El principal
propsito de una unidad aritmtica es aceptar datos binarios que estn almacenados en memoria y ejecutar las
operaciones aritmticas sobre aquellos datos de acuerdo a las instrucciones dadas desde la unidad de control.
La unidad aritmtica tiene al menos dos registros de flipflops: el registro B y el registro acumulador.
Adems contiene los circuitos lgicos que permiten ejecutar las operaciones sobre los nmeros binarios
almacenados en ambos registros. La tpica secuencia de ejecucin para una suma (ADD) puede ser la
siguiente:
El proceso de suma comienza por la suma de los bit menos significativos de ambos operandos. As, 1+1 = 10,
que significa que la suma para esa posicin es 0 y el acarreo es 1.
1
0
1
0
0
0
1
0
1
1
1
1
0
1
0
1
1
1
0
1
Este acarreo (o bit de carry) ser sumado a la siguiente posicin, junto a los bit correspondientes de los
operandos. As, en la segunda posicin 1+0+1 = 10, que corresponde nuevamente a la suma 0 y el carry 1.
Este carry ser sumado a la siguiente posicin junto a los correspondientes bits de los operandos y as
sucesivamente hasta las ltimas posiciones.
A cada paso en el proceso de suma se realiza la adicin de tres bits; los dos de los operandos y el de carry que
viene de la posicin previa. El resultado de la suma de estos 3 bits produce 2 bits: un bit de suma y otro de
carry que deber ser sumado a la siguiente posicin. Este mismo proceso es usado para cada posicin. Ahora,
si se quiere disear un circuito lgico que permita implementar este proceso, entonces simplemente se deber
usar el mismo circuito para cada una de las posiciones. Esto se ilustra en la Figura No. 10.
En este diagrama las variables Ai representan los bits del operando almacenados en el acumulador (que
tambin puede ser llamado el registro A). Las variables Bi representan los bits del segundo operando
almacenados en el registro B. Las variables Ci representan los bits de carry entre las correspondientes
posiciones. Las variables Si son los bits de la suma para cada posicin.
Los circuitos FullAdder usados en cada posicin tienen tres entradas: un bit A, un bit B y un bit C; y
producen dos salidas: un bit de suma (S) y un bit de carry (C). Por ejemplo, el FullAdder No. 0 tienen como
entradas A0, B0 y C0, y produce las salidas S0 y C1. Lo anterior se repite para todos los bits de los operandos.
Actualmente los computadores usan palabras de 32 y 64 bits, al contrario del de la figura que slo es un
sumador de 5 bits.
10
Figura No. 10. Diagrama de Bloques de un sumador paralelo de 5bits usando fulladders.
El arreglo de la figura No. 10 se llama sumador paralelo (parallel adder) por que todos los bits de los
operandos se usan simultneamente en todos los circuitos. Esto significa que la suma en cada posicin ocurre
al mismo tiempo. Que es distinto de las sumas que se hacen en papel. Ya que se toma cada posicin una a la
vez, comenzando desde las posiciones menos significativas.
El diseo de un FullAdder
El diseo de un FullAdder es un tpico problema de ingeniera en este caso de electrnica y resulta muy
interesante y didctico seguirlo paso a paso, se recomienda para ello consultar el libro "Digital Systems:
Principles and Applications" de Ronald J. Tocci en las pginas 146 y 147.
Lo primero que se har es construir una Tabla de Verdad que muestre los valores de entrada y salida para
todos los casos (recuerde que slo se intenta disear un FullAdder). En la siguiente tabla se puede ver
aquello, con tres entradas (A, B y Cin) y dos salidas (S y Cout). Existen ocho posibles casos para las tres
entradas, y para cada caso se desea la salida listada en los valores de salida. Por ejemplo, considere el caso A
= 1, B = 0, y Cin = 1. Un FullAdder (que abreviaremos FA) puede sumar estos bits para obtener las salidas S
= 0 y Cout = 1.
A
0
0
0
B
0
0
1
Cin
0
1
0
S
0
1
1
Cout
0
0
0
11
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
0
1
0
0
1
1
0
1
1
1
Como existen dos salidas, se puede disear el circuito por cada salida individualmente, comenzando con la
salida de la suma S. Por la tabla de verdad se ve que hay cuatro casos donde S tiene valor 1. Si se compone
una expresin para ello, usando el Dominio Lgico, y luego de refinarla, segn un mtodo que no es el caso
desarrollar ac, se obtienen la siguiente expresin final:
S = Xor( A, Xor( B, Cin )) (a)
Si se considera ahora la salida Cout, tambin se puede componer una operacin, en el dominio lgico, que
permita realizarla:
Cout = Or( And( B, Cin ), Or( And( A, Cin ), And( A, B ))) (b)
Las expresiones a y b pueden ser implementadas como se muestra en la Figura No. 11, cada FullAdder de la
Figura No. 10 puede ser implementado segn el circuito lgico que aparece en esta figura.
Para desarrollar este circuito en trminos del formato que se ha estado propugnando para los dominios, es
necesario ampliar a la capacidad de definicin de operaciones. Para ello es necesario que las nuevas
operaciones, adems de permitir combinaciones directas de las ya definidas, permitan otro tipo de
12
combinaciones con ms poder de cmputo. Ese es el objetivo de los lenguajes de Programacin, permitir
ampliar la capacidad de definicin de nuevos dominios y operaciones, de manera que esta ampliacin permita
ampliar a su vez el espectro de los problemas posibles de abordar mediante el uso de un computador.
13