Lógica Digital - Circuitos Combinatorios Expositor: Esteban Pontnau Primer Cuatrimestre de 2012 Departamento de Computación, FCEyN,Universidad de Buenos Aires. 3 de abril de 2012
Objetivos de la clase de hoy Repasar los operadores y propiedades del algebra de boole vistas en la teórica y utilizarlas para implementar circuitos combinatorios simples.
Propiedades Suma de productos Producto de sumas Compuertas lógicas Repasemos... Operadores lógicos: Pueden ser completamente descriptos usando su tabla de verdad. AND, OR, NOT Operadores básicos NAND, NOR Operadores universales Expresiones booleanas: Combinación de operadores lógicos y variables booleanas. Ej. F (X, Y, Z) = X + Y Z. Orden de precedencia en la evaluación NOT > AND > OR. Dos expresiones son iguales sii tienen la misma tabla de verdad. Identidades booleanas: Reducciones utilizando propiedades o leyes. X YZ + X Y Z + XZ == X Y + XZ
Propiedades Suma de productos Producto de sumas Compuertas lógicas Propiedades Identidad 1.A = A 0 + A = A Nulo 0.A = 0 1 + A = 1 Idempotencia A.A = A A + A = A Inverso A.A = 0 A + A = 1 Conmutatividad A.B = B.A A + B = B + A Asociatividad (A.B).C = A.(B.C) (A + B) + C = A + (B + C) Distributividad A + B.C = (A + B).(A + C) A.(B + C) = A.B + A.C Absorción A.(A + B) = A A + A.B = A De Morgan (A.B) = A + B (A + B) = A.B No existe una forma mecánica y facil para reducir una función, hay que practicar. De esto se deduce que no hay una única forma de escribir una función lógica, surge la necesidad de las formas canónicas.
Propiedades Suma de productos Producto de sumas Compuertas lógicas Formas Canónicas La idea es, dada una tabla de verdad escribir una expresión booleana que la represente. Las dos técnicas que vamos a ver son Suma de Productos y Producto de Sumas. No necesariamente vamos a obtener la expresión Óptima (o sea la que use menos operadores).
Propiedades Suma de productos Producto de sumas Compuertas lógicas Suma de productos Por cada valor de la función que sea 1 escribimos un término utilizando todas las variables unidas por operadores AND, de forma tal que el término también valga 1. Luego combinamos todo con operadores OR. Probemos con un ejemplo sencillo: A B F(A,B) 0 0 0 0 1 1 1 0 1 1 1 0 F (A, B) = AB + AB (Es el operador OR-Excusivo o XOR)
Propiedades Suma de productos Producto de sumas Compuertas lógicas Producto de sumas Por cada valor de la función que sea 0 escribimos un término utilizando todas las variables unidas por operadores OR, de forma tal que el término también valga 0. Luego combinamos todo con operadores AND. Usando el ejemplo anterior: A B F(A,B) 0 0 0 0 1 1 1 0 1 1 1 0 F (A, B) = (A + B)(A + B)
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuertas lógicas Una compuerta es un dispositivo electrónico que produce un resultado en base a un conjunto de valores de entrada. Se corresponden exactamente con los operadores que vimos antes.
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuerta NOT A NOT A 0 1 1 0
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuerta AND A B A AND B 0 0 0 0 1 0 1 0 0 1 1 1
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuerta OR A B A OR B 0 0 0 0 1 1 1 0 1 1 1 1
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuerta XOR u OR-EXCLUSIVA A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuerta NOR A B A NOR B 0 0 1 0 1 0 1 0 0 1 1 0
Propiedades Suma de productos Producto de sumas Compuertas lógicas Compuerta NAND A B A NAND B 0 0 1 0 1 1 1 0 1 1 1 0
Propiedades Suma de productos Producto de sumas Compuertas lógicas CEDAR Logic Simulator http://cedarlogic.scienceontheweb.net/
Ejercicio 1 Demostrar si la siguiente igualdad entre expresiones booleanas es verdadera o falsa: (X + Y ) = (X.Y ).Z + X.Z + (Y + Z)
Recordemos las propiedades Identidad 1.A = A 0 + A = A Nulo 0.A = 0 1 + A = 1 Idempotencia A.A = A A + A = A Inverso A.A = 0 A + A = 1 Conmutatividad A.B = B.A A + B = B + A Asociatividad (A.B).C = A.(B.C) (A + B) + C = A + (B + C) Distributividad A + B.C = (A + B).(A + C) A.(B + C) = A.B + A.C Absorción A.(A + B) = A A + A.B = A De Morgan (A.B) = A + B (A + B) = A.B
Una solución: (X.Y ).Z + X.Z + (Y + Z) De Morgan (X.Y ).Z + X.Z + Y.Z Distributiva (X.Y ).Z + (X + Y ).Z De Morgan (X + Y ).Z + (X + Y ).Z Distributiva (X + Y ).(Z + Z) Inverso (X + Y ).1 Identidad X + Y Listo!, probamos que es igual
Ejercicio 2 Dada la siguiente tabla de verdad: A B C F 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 Escribir una expresión booleana que la represente. Implementarla utilizando a lo sumo una compuerta AND, una compuerta OR y una compuerta NOT.
Recordemos las propiedades Identidad 1.A = A 0 + A = A Nulo 0.A = 0 1 + A = 1 Idempotencia A.A = A A + A = A Inverso A.A = 0 A + A = 1 Conmutatividad A.B = B.A A + B = B + A Asociatividad (A.B).C = A.(B.C) (A + B) + C = A + (B + C) Distributividad A + B.C = (A + B).(A + C) A.(B + C) = A.B + A.C Absorción A.(A + B) = A A + A.B = A De Morgan (A.B) = A + B (A + B) = A.B
Expresamos como una suma de productos: (A.B.C) + (A.B.C) + (A.B.C) Como nos restringen la cantidad de compuertas tenemos que simplificar. (A.B.C) + (A.B.C) + (A.B.C) Distributiva ((A.B) + (A.B) + (A.B)).C Distributiva ((A.B) + (A + A).B).C Inverso ((A.B) + 1.B).C Identidad ((A.B) + B).C Distributiva ((A + B).(B + B)).C Inverso ((A + B),1).C Identidad (A + B).C Bingo!
Para que nos sirvió esto? Implementación de la primer expresión.
Para que nos sirvió esto? Implementación de la segunda expresión.
Ejercicio 3 Armar un inversor de 3 bits. Este circuito invierte o no tres entradas de acuerdo al valor de una cuarta que actúa como control. En otras palabras, un inversor de k-bits es un circuito de k+1 entradas (e 1,..., e k, e k+1 ) y k salidas (s 1,..., s k ) que funciona del siguiente modo: Si e k+1 = 1, entonces s i = not(e i ) para todo i < k + 1 Si e k+1 = 0, entonces s i = e i para todo i < k + 1 Ejemplo: inversor(0110)=011 inversor(1001)=011
Solución: Tabla de verdad (Continua) e 1 e 2 e 3 e 4 s 1 s 2 s 3 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1
Solución: Tabla de verdad (Continuación) Cómo quedarían las ecuaciones? e 1 e 2 e 3 e 4 s 1 s 2 s 3 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0
Ecuaciones para S 1, S 2 y S 3 s 1 = (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3 e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) s 2 = (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3 e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) s 3 = (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3 e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 )
Primero pensar como invertir un solo bit e i e (k+1) s i 0 0 0 0 1 1 1 0 1 1 1 0 Hay que usar (P.Q) + (P.Q) que es una XOR ( ) P Q = (P.Q) + (P.Q)
Comparemos con la ecuación de S 1 (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3 e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) + (e 1.e 2.e 3.e 4 ) e 1 ((e 2.e 3.e 4 ) + (e 2.e 3.e 4 ) + (e 2.e 3.e 4 ) + (e 2.e 3.e 4 )) + e 1 ((e 2.e 3.e 4 ) + (e 2.e 3.e 4 ) + (e 2.e 3.e 4 ) + (e 2.e 3.e 4 ) e 1 (((e 2.e 3 ) + (e 2.e 3 ) + (e 2.e 3 ) + (e 2.e 3 ))e 4 ) + e 1 (((e 2.e 3 ) + (e 2.e 3 ) + (e 2.e 3 ) + (e 2.e 3 ))e 4 ) e 1 ((e 2 (e 3 + e 3 ) + e 2 (e 3 + e 3 ))e 4 ) + e 1 ((e 2 (e 3 + e 3 ) + e 2 (e 3 + e 3 ))e 4 ) e 1 ((e 2 + e 2 )e 4 ) + e 1 ((e 2 + e 2 )e 4 ) (e 1.e 4 ) + (e 1.e 4 )
Solución:
Ejercicio 4 Armar un circuito de 3 bits. Este deberá mover a izquierda o a derecha los bits de entrada de acuerdo al valor de una de ellas que actúa como control. En otras palabras, un shift izq-der de k-bits es un circuito de k+1 entradas (e k,..., e 0 ) y k salidas (s k 1,..., s 0 ) que funciona del siguiente modo: Si e k = 1, entonces s i = e i 1 para todo 0 < i < k y s 0 = 0 Si e k = 0, entonces s i = e i+1 para todo 0 i < k 1 y s k 1 = 0 Ejemplo: shift lr(1,011)=110 shift lr(0,011)=001 shift lr(1,100)=000 shift lr(1,101)=010
Ejercicio 4 Solución:
Ejercicio 5 Armar un sumador de un solo bit utilizando solo una compuerta AND y una compuerta XOR.
Solución: X Y C out Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
Solución: X Y C out Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
Ejercicio 6 Teniendo dos sumadores simples y solo una compuerta a elección, arme un sumador completo de un bit. (Recordar que un sumador completo también tiene entrada de carry)
X Y C in Sum C out 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1
Solución:
Ejercicio 7 Usando sumadores completos y un tipo de compuerta a elección armar un circuito que convierta un entero en su inverso aditivo (el inverso aditivo de un número n es el número x tal que x + n = 0). Los enteros se representan con notación complemento a 2 de 4 bits. En esta reprepresentación el -8 no tiene inverso aditivo, no hace falta contemplar el caso aparte. Ejemplo: inversoad(1001)=0111 inversoad(0110)=1010 (HINT: Para los que NO HICIERON el ejercicio 24 de la práctica 1, el inverso aditivo de un número en complemento a 2 se obtiene invirtiendo bit a bit y sumando 1)
Solución: (Pensar como sería la solución usando sumadores simples.)
Cosas que tendríamos que haber entendido y tips Operadores y expresiones booleanas, reducciones utilizando propiedades. Dada una tabla de verdad escribir una expresión booleana que la represente. Implementar las expresiones utilizando compuertas lógicas. RECOMENDACIONES Sean cuidadosos cuando dibujan circuitos: Que quede claro cuando un cable esta conectado a otro y cuando lo saltea (pongan un circulito en la unión o una curva cuando no quieren que lo toque). Con todo esto pueden hacer la primera parte de la práctica 2.