Circuitos Combinatorios Expositor: Esteban Pontnau Autor: Luis Agustín Nieto Primer Cuatrimestre de 2011 Departamento de Computación, FCEyN,Universidad de Buenos Aires. 5 de abril de 2011
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 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
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 las tres entradas de acuerdo al valor de una de ellas 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 quedarian 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
Miremos unicamente la salida 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 )
De donde nos suena esa ecuación? Se podrá extender a todas las salidas? Solución:
Ejercicio 4 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
PAUSA PARA LA MERIENDA
Ejercicio 5 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 6 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 Ej. 9 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.
Bibliografia Recomendada Null, L. and J. Lobur. The Essentials of Computer Organization and Architecture, Capítulo 3.