Representación de la Información
La computadoras necesitan almacenar datos e instrucciones en memoria
Sistema binario (sólo dos estados posibles)
Por qué?
Es mucho más sencillo identificar entre sólo dos estados
Es menos propenso a errores
Lógica digital
Los circuitos operan con valores [0, 1], que pueden ser interpretados lógicamente como [Falso, Verdadero].
Idea: implementar las operaciones lógicas y matemáticas combinando circuitos
George Boole, desarrolló un sistema algebraico para formalizar la lógica proposicional. El libro se llama Análisis matemático de la lógica.
George Boole
1815-1864
Algebra de Boole
El sistema consiste en un cálculo para resolver problemas de lógica proposicional (dos valores posibles [0, 1] y tres operaciones:
AND (y)
OR (o)
NOT (no) )
Las variables Booleanas sólo toman los valores binarios: 1 ó 0.
Una variable Booleana representa un el balor que puede tomar un bit, que como vimos quiere decir:
Binary digIT
Algebra de Boole
Operadores básicos
Un operador booleano puede ser completamente descripto usando tablas de verdad.
El operador AND es conocido como producto booleano (.) y el OR como co-producto booleano (+)
El operador NOT (¬ ó una barra encima de la expresión) conocido como complemento.
Funciones booleanas
Tabla de verdad de esta función:
El NOT tiene más precedencia que el resto de los operadores
Y el AND más que el OR
Identidades del Algebra de Boole
Ejemplo
Usando identidades booleanas podemos reducir esta función:
Fórmulas equivalentes
Varias fórmulas pueden tener la misma tabla de verdad
Son lógicamente equivalentes
En general se suelen elegir formas normales
Suma de productos:
F(x,y,z) = xy + xz +yz
Producto de sumas:
F(x,y,z) = (x+y) . (x+z) .(y+z)
Suma de Productos
Es fácil convertir una función a una suma de productos usando la tabla de verdad.
Elegimos los valores que dan 1 y hacemos un producto (AND) de la fila (negando si aparece un 0)
Luego sumamos todo (OR)
F(x,y,z) = (¬xy¬z)+(¬xyz)+(x¬y¬z)+(xy¬z)+(xyz)
Circuitos booleanos
Las computadores digitales contienen circuitos que implementan funciones booleanas
Cuando más simple la función más chico el circuito
Son más baratos, consumen menos, y en ocasiones son mas rápidos!
Podemos usar las identidades del algebra de Boole para reducir estas funciones.
Compuertas lógicas
Una compuerta es un dispositivo electrónico que produce un resultado en base a un conjunto de valores de valores de entrada
En realidad, están formadas por uno o varios transitores, pero lo podemos ver como una unidad.
Los circuitos integrados contienen colecciones de compuertas conectadas con algún propósito
Compuertas Lógicas
Las más simples: AND, OR, y NOT.
Se corresponden exactamente con las funciones booleanas que vimos
Compuertas lógicas
Una compuerta muy útil: el OR exclusivo (XOR)
La salida es 1 cuando los valores de entrada difieren.
Usamos el simbolo ? para el XOR.
Componentes digitales
Combinando compuertas se pueden implementar funciones booleanas
Este circuito implementa la siguiente función:
Simplificando las funciones se crean circuitos más chicos!
Ejemplo: La función Mayoría
NAND y NOR son dos compuertas muy importantes.
Con la identidad de De Morgan se pueden implementar con AND u OR.
Son más baratas y ambas por sí solas son un conjunto adecuado para la lógica proposicional. Es decir que cualquier operador se puede escribir usando cualquiera de ellas.
Compuertas lógicas
NAND y NOR
Ejercicio
Ejemplo: NOT usando NAND
Utilizando solo NAND o NOR realizar circuitos con la misma funcionalidad que el AND y OR
Circuitos combinatorios
Producen una salida específica (casi) al instante que se le aplican valores de entrada
Implementan funciones booleanas
La aritmética y la lógica de la CPU se implementan con estos circuitos
Sumadores
Como podemos construir un circuito que sume dos bits X e Y?
F(X,Y) = X + Y (suma aritmética)
Que pasa si X=1 e Y=1?
Podemos usar un XOR para la suma y un AND para el acarreo
A este circuito se lo llama Half-Adder
Half-Adder
(Gp:) X
(Gp:) Y
(Gp:) ?
(Gp:) C
(Gp:) Half
Adder
¿Cómo se suman números de dos bits?
Ej:
1 1
+ 1 1
___________________
Full Adders
Full Adders
¿Cómo se suman números de dos bits?
Ej:
1
1 1
+ 1 1
___________________
0
¿Cómo se suman números de dos bits?
Ej:
1 1
1 1
+ 1 1
___________________
1 0
Full Adders
Full Adders
¿Cómo se suman números de dos bits?
Ej:
1 1
1 1
+ 1 1
___________________
1 1 0
(Gp:) Full Adder
(Gp:) X
(Gp:) Y
(Gp:) Ci
(Gp:) ?
(Gp:) Co
Full Adders
¿Cómo se suman números de dos bits?
Ej:
1 1
1 1
+ 1 1
___________________
1 1 0
En el caso de los Full Adders se asume que poseen una entrada más, el acarreo.
Cómo es la tabla de verdad de un Full Adder?
Podemos mejorar nuestro half-adder para considerar un acarreo en la entrada.
Full-Adder
¿Podemos adaptar nuestro half-adder para convertirlo en un full adder?
Full Adders
Half
Adder
X
Y
Ci
?
Co
Full Adder
Half
Adder
?
C
?
C
X
Y
Full Adders
He aquí el full adder
Full Adders
Ejercicio: diseñar un sumador de cuatro bits
usando half y/o full adders.
(Gp:) Ae
(Gp:) B
(Gp:) ?
(Gp:) As
(Gp:) Full
Adder
(Gp:) A
(Gp:) A
(Gp:) B
(Gp:) ?
(Gp:) As
(Gp:) Half
Adder
A4 A3 A2 A1
B4 B3 B2 B1
+
C5 C4 C3 C2 C1
Adders
(Gp:) A4 A3 A2 A1
(Gp:) B4 B3 B2 B1
(Gp:) +
(Gp:) C5 C4 C3 C2 C1
(Gp:) A1
(Gp:) B1
(Gp:) ?
(Gp:) As
(Gp:) HA
(Gp:) ?
(Gp:) As
(Gp:) FA
(Gp:) ?
(Gp:) As
(Gp:) FA
(Gp:) Ae
(Gp:) ?
(Gp:) As
(Gp:) FA
(Gp:) Ae
(Gp:) Ae
(Gp:) A2
(Gp:) B2
(Gp:) A3
(Gp:) B3
(Gp:) A4
(Gp:) B4
(Gp:) C1
(Gp:) C2
(Gp:) C3
(Gp:) C4
(Gp:) C5
Sumador de cuatro bits:
Adders
Decodificadores
Decodificadores de n entradas pueden seleccionar una de 2n salidas
Son muy importantes, por ejemplo:
Seleccionar una locación en una memoria a partir de una dirección colocada en el bus memoria
Decodificadores – Ejemplo
Decodificador 2-a-4
Si x = 0 e y = 1, que línea de salida queda habilitada?
Selecciona una salida de varias entradas
La entrada que es seleccionada como salida es determinada por las líneas de control
Para seleccionar entre n entradas, se necesitan log2n líneas de control.
Multiplexores
Demultiplexor
Exactamente lo contrario
Dada una entrada la direcciona entre n salidas, usando log2n líneas de control.
Así luce un multiplexor 4-a-1
Si S0 = 1 y S1 = 0, que entrada es transferida a la salida?
Multiplexor – Ejemplo
Función Mayoría
Ejercicio: Implementar la función Mayoría con un Multiplexor
Ejercicio: Implementar la función Mayoría con un Multiplexor
Ejercicio
Construir una ALU de 1 bit
3 entradas:
A, B, Carry
Cuatro operaciones:
A.B, A+B, NOT B, Suma(A,B,Carry)
Salidas
Resultado, CarryOut
Alu de 1bit
Decoder
Full Adder
Alu de 1bit
Un ALU de 8 bits
ROM usando un decoder
Links
Libro Tanenbaum
Demo compuertas: http://www.play-hookey.com/digital/derived_gates.html
Para ver Compuertas logicas en detalle: http://www.csc.sdstate.edu/%7egamradtk/csc317/csc317notes.html