Descargar

Algebra de boole y compuertas

Enviado por Pablo Turmero


    edu.red

    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

    edu.red

    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

    edu.red

    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) )

    edu.red

    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

    edu.red

    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.

    edu.red

    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

    edu.red

    Identidades del Algebra de Boole

    edu.red

    Ejemplo Usando identidades booleanas podemos reducir esta función:

    edu.red

    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)

    edu.red

    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)

    edu.red

    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.

    edu.red

    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

    edu.red

    Compuertas Lógicas Las más simples: AND, OR, y NOT.

    Se corresponden exactamente con las funciones booleanas que vimos

    edu.red

    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.

    edu.red

    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!

    edu.red

    Ejemplo: La función Mayoría

    edu.red

    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

    edu.red

    NAND y NOR

    edu.red

    Ejercicio Ejemplo: NOT usando NAND

    Utilizando solo NAND o NOR realizar circuitos con la misma funcionalidad que el AND y OR

    edu.red

    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

    edu.red

    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?

    edu.red

    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

    edu.red

    ¿Cómo se suman números de dos bits?

    Ej:

    1 1 + 1 1 ___________________

    Full Adders

    edu.red

    Full Adders ¿Cómo se suman números de dos bits?

    Ej: 1 1 1 + 1 1 ___________________

    0

    edu.red

    ¿Cómo se suman números de dos bits?

    Ej: 1 1 1 1 + 1 1 ___________________

    1 0 Full Adders

    edu.red

    Full Adders ¿Cómo se suman números de dos bits?

    Ej: 1 1 1 1 + 1 1 ___________________

    1 1 0

    edu.red

    (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.

    edu.red

    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

    edu.red

    ¿Podemos adaptar nuestro half-adder para convertirlo en un full adder? Full Adders

    edu.red

    Half Adder X Y Ci ? Co Full Adder Half Adder ? C ? C X Y Full Adders

    edu.red

    He aquí el full adder Full Adders

    edu.red

    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

    edu.red

    (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

    edu.red

    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

    edu.red

    Decodificadores – Ejemplo Decodificador 2-a-4 Si x = 0 e y = 1, que línea de salida queda habilitada?

    edu.red

    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.

    edu.red

    Así luce un multiplexor 4-a-1 Si S0 = 1 y S1 = 0, que entrada es transferida a la salida? Multiplexor – Ejemplo

    edu.red

    Función Mayoría

    edu.red

    Ejercicio: Implementar la función Mayoría con un Multiplexor

    edu.red

    Ejercicio: Implementar la función Mayoría con un Multiplexor

    edu.red

    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

    edu.red

    Alu de 1bit

    Decoder

    Full Adder

    edu.red

    Alu de 1bit

    edu.red

    Un ALU de 8 bits

    edu.red

    Memoria ROM

    edu.red

    ROM usando un decoder

    edu.red

    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