LÓGICA DIGITAL Y MICROPROGRAMABLE TEMA 1: FUNDAMENTOS DE ELECTRÓNICA DIGITAL. PUERTAS LÓGICAS. TÉCNICAS DE DISEÑO Y SIMPLIFICACIÓN DE FUNCIONES LÓGICAS. 1.- INTRODUCCIÓN. 2.- SISTEMAS DE NUMERACIÓN. 2.1.- SISTEMA BINARIO NATURAL. 2.2.- CÓDIGO BCD. 2.3.- CÓDIGO GRAY. 2.4.- SISTEMA HEXADECIMAL. 3.- ALGEBRA DE BOOLE. 3.1.- VARIABLES Y OPERACIONES BÁSICAS. 3.1.1.- Suma lógica. 3.1.2.- Producto lógico. 3.1.3.- Complementación o negación. 3.2.- PROPIEDADES. 4.- TABLA DE VERDAD Y FUNCIONES LÓGICAS. 5.- PUERTAS LÓGICAS. 5.1.- PUERTA NOT. 5.2.- PUERTA OR. 5.3.- PUERTA AND. 5.4.- PUERTA EX–OR. 5.5.- PUERTA NOR. 5.6.- PUERTA NAND. 5.7.- PUERTA EX–NOR. 6.- DISEÑO Y SIMPLIFICACIÓN DE FUNCIONES LÓGICAS. 6.1.- OBTENCIÓN DE LAS FORMAS CANÓNICAS. 6.2.- MÉTODO ALGEBRAICO. 6.3.- MAPAS DE KARNAUGH. 6.4.- REALIZACIÓN DE FUNC. LÓGICAS CON PUERTAS NAND O NOR. 6.5.- OTROS MÉTODOS. 7.- BIBLIOGRAFÍA. Curso 2009-10 Lógica Digital y Microprogramable 1.- INTRODUCCIÓN. DIFERENCIA ENTRE ELECTRÓNICA DIGITAL Y ELECTRÓNICA ANALÓGICA. El enunciado de este tema hace referencia a unos elementos que son la base de la electrónica digital, ya que las puertas lógicas (implementación física de las funciones lógicas) son la base de un gran grupo de circuitos digitales conocidos como circuitos combinacionales. La electrónica digital está presente hoy en día en multitud de aparatos y electrodomésticos, tales como relojes, calculadoras, ordenadores y accesorios, y un largo etcétera. Cada día aparecen nuevos usos, normalmente para mejorar las prestaciones de aparatos y electrodomésticos que ya existían antes, como teléfonos móviles, televisores, o reproductores de DVD y mp3, estos últimos que antes no existían, pero sí otros aparatos que realizaban funciones equivalentes con peores prestaciones. Pero, ¿dónde están las ventajas? El uso de la electrónica en las aplicaciones anteriormente mencionadas se centra, fundamentalmente, en el tratamiento de la información o de las señales eléctricas implicadas. Para entender las ventajas que presenta el tratamiento digital de la información hay que diferenciar entre electrónica digital y analógica. En la electrónica analógica, las señales eléctricas tienen un valor máximo y otro mínimo, entre los cuales pueden presentar infinitos valores intermedios, siendo la calidad de los componentes la que marque la sensibilidad del sistema. En la electrónica digital, las señales eléctricas sólo pueden presentar dos valores, de forma que la información que presenta una única señal digital es de tipo binario. A esta información, se la llama de diferentes maneras: verdadero o falso, nivel alto o nivel bajo, uno lógico (‘1’) o cero lógico (‘0’). Obviamente la información digital viene en un conjunto de señales eléctricas codificadas de una manera determinada. A cada señal binaria de información de la llama bit (del inglés binary digit), que significa literalmente dígito binario, es decir dígito con dos únicas posibilidades. Las ventajas más importantes de la electrónica digital se resumen en: - - La precisión o sensibilidad del sistema no dependen de la calidad de los componentes, sino del número de bits empleado, ya que cuanto mayor es el número de bits, mayor información puede contener. La información se puede codificar de distintas formas, según interese. Hoy en día existen multitud de soportes de almacenamiento de información digital, así como para su posterior tratamiento. 2.- SISTEMAS DE NUMERACIÓN. Dado que en electrónica digital, la información viene contenida en bits, esto quiere decir que la información es de tipo binario. Por lo tanto, vamos a repasar el sistema binario, y algunos de los códigos binarios más importantes. Después, estudiaremos el sistema hexadecimal, ya que al tener base 16, tiene una equivalencia inmediata con el sistema binario. Antes de repasar el sistema binario, vamos a repasar el sistema decimal, ya que todos los sistemas de numeración son iguales, con la salvedad de la base. Como David Sornosa Cervera 2 Curso 2009-10 Lógica Digital y Microprogramable sabemos, en sistema decimal tenemos 10 cifras (desde 0 al 9), y tiene base 10. Para obtener un número en sistema decimal, multiplicamos cada cifra por potencias de la base (donde dn ... d0 son las cifras con valores entre 0 y 9): d n ·10 n + d n −1 ·10 n −1 + .... + d 1 ·101 + d 0 ·10 0 Por ejemplo: 537 = 5·10 2 + 3·101 + 7·10 0 2.1.- SISTEMA BINARIO NATURAL. El sistema binario natural tiene la misma estructura que el sistema decimal, con la diferencia que tiene base 2, y sus cifras (bn ... b0), sólo pueden tomar el valor 0 ó 1. Por lo tanto, para obtener el número en base 10: b n ·2 n + b n −1 ·2 n −1 + .... + b1 ·21 + b 0 ·2 0 Por ejemplo: 100101( 2 = 1·2 5 + 0·2 4 + 0·2 3 + 1·2 2 + 0·21 + 1·2 0 = 37 (10 Si queremos hacer la conversión al revés, de decimal a binario, hay que hacer sucesivas divisiones entre 2, sin tomar decimales, donde el cociente de una división es el dividendo de la siguiente, hasta que el cociente de 1 como resultado. Entonces, este último cociente, junto con los restos, tomados en el orden contrario al que se obtuvieron, forman el número binario. 37 1 2 18 0 2 9 1 último bit (LSB) 37 (10 = 100101( 2 2 4 0 2 2 0 2 1 MSB y LSB son las siglas, en inglés, de bit más significativo y bit menos significativo, respectivamente; es decir, en una escritura de izquierda a derecha, primer bit y último bit. primer bit (MSB) El número de combinaciones (N) en sistema binario natural, que se pueden hacer con n bits es: N = 2n [1] El número más grande que se puede representar con n bits es: 2 n − 1 [2] 2.2.- CÓDIGO BCD. Existen multitud de códigos binarios, cada uno con sus aplicaciones. Las siglas BDC significan, en inglés, decimal codificado en binario. El código BCD representa las cifras del sistema decimal, una a una, en sistema binario. Para representar cifras del 0 al David Sornosa Cervera 3 Curso 2009-10 Lógica Digital y Microprogramable 9 en binario, se necesitan 4 bits (ecuación [1]), por lo tanto el código BCD utiliza 4 bits por cada cifra decimal. Ejemplo: 852 (10 = 1000 { 0101 { 0010 { 8 5 2 ( BCD Como se observa en el ejemplo, escribiendo en el lugar de cada cifra los cuatro bits correspondientes en binario natural, se obtiene rápida y fácilmente el código BCD. Además, esta operación es reversible, es decir si tomamos los bits de cuatro en cuatro, y los sustituimos por su valor en decimal, obtenemos las cifras del sistema decimal. Esta rápida conversión a y desde decimal, es la principal ventaja del código BCD, especialmente de cara a los circuitos digitales necesarios para hacer las conversiones. Como con 4 bits aparecen 16 combinaciones, hay 4 combinaciones prohibidas, las que se corresponden con los números 11 al 15. Tener que usar obligatoriamente 4 bits para cada cifra, es una desventaja porque se necesitan muchos bits para representar poca información. 2.3.- CÓDIGO GRAY. El código GRAY es un código binario cuya característica principal es que, entre dos números cualesquiera consecutivos, sólo cambia un bit. La forma de obtener el código Gray de n bits, es partir del código Gray de n – 1 bits. Se escribe el código Gray de n – 1 bits y se copia en orden inverso (o reflejado). Después, se añade un 0 a la primera mitad del código, y un 1 a la segunda mitad (la copiada o reflejada). Veamos como obtener el código Gray, de 4 bits. El código Gray de 1 bit es, simplemente: 0, 1. Para obtener el código Gray de 2 bits, copiamos dos veces el de 1 bit, y añadimos ceros y unos. 0, 1 00, 01 1, 0 11, 10 Con lo que el código Gray de 2 bits es: 00, 01, 11, 10. Obtenemos por último el código Gray de 3 bits, a partir del de 2 bits: 00, 01, 11, 10 10, 11, 01, 00 000, 001, 011, 010 110, 111, 101, 100 Con lo que el código Gray de 3 bits es: 000, 001, 011, 010, 110, 111, 101, 100. La ventaja del código Gray no está en su equivalente numérico, el cual no tiene importancia, sino en que establece un orden de las combinaciones, de forma que sólo cambia un bit de un número al siguiente, incluidos el primero y el último. David Sornosa Cervera 4 Curso 2009-10 Lógica Digital y Microprogramable 2.4.- SISTEMA HEXADECIMAL. El sistema hexadecimal emplea la base 16. Como en sistema decimal sólo tenemos 10 cifras, faltan 6, que se toman de las 6 primeras letras del alfabeto: A, B, C, D, E y F. Las cifras del sistema hexadecimal son: (entre paréntesis su equivalente decimal) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (10), B (11), C (12), D (13), E (14) y F (15). A parte de utilizar 6 cifras nuevas, en lo demás es como cualquier sistema de numeración, por lo tanto para obtener su equivalente decimal hay que multiplicar sus cifras (hn ... h0) por potencias de la base: h n ·16 n + h n −1 ·16 n −1 + .... + h 1 ·161 + h 0 ·16 0 Ejemplo: FE0 (16 = 15·16 2 + 14·161 + 0·16 0 = 15·256 + 14·16 = 3840 + 224 = 4064 (10 Obsérvese que se ha usado el valor 15 para la cifra F, y el valor 14 para la cifra E. Para realizar la conversión de decimal a hexadecimal, se procede de igual forma que para pasar de decimal a binario, sólo que ahora el divisor es 16, por tratarse de hexadecimal, y se divide hasta que el cociente sea menor de 16. 4064 0 16 254 14 16 15 E F último dígito hexadecimal (LSD) primer dígito hexadecimal (MSD) La utilidad del sistema hexadecimal, a parte de representar números con menor cantidad de cifras que otros sistemas de base menor, estriba en que al ser la base una potencia de dos, el sistema hexadecimal tiene una conversión directa a y desde el sistema binario. Para pasar de binario a hexadecimal, basta con tomar los bits de cuatro en cuatro y representar su correspondiente dígito hexadecimal. Ejemplo: 101111000011( 2 = 1011 { 1100 { 0011 { = BC3 (16 11( B ) 12 ( C ) 3 Para pasar de hexadecimal a binario, basta con representar cada dígito hexadecimal por sus cuatro bits correspondientes. Ejemplo: ADE (16 = 1010 { 1101 { 1110 { A (10 ) D (13) E (14 ) David Sornosa Cervera (2 5 Curso 2009-10 Lógica Digital y Microprogramable 3.- ALGEBRA DE BOOLE. 3.1.- VARIABLES Y OPERACIONES BÁSICAS. A mediados del siglo XIX, el matemático inglés George Boole desarrolló un álgebra en la cual los elementos sólo pueden tomar los valores1 ‘0’ y ‘1’, y sobre la cual se definen tres operaciones básicas: suma lógica, producto lógico y complementación o negación. Esta álgebra ha sido utilizada posteriormente en el desarrollo matemático de circuitos en los cuales los elementos pueden tomar dos valores o posiciones, como son los circuitos digitales; pero también en circuitos neumáticos, o en circuitos con interruptores. Sea cual sea la naturaleza del circuito, se asocian ciertas magnitudes variables implicadas a las variables lógicas. Por ejemplo, en electrónica digital, es frecuente que el valor de tensión 5 V se asocie con ‘1’ y el valor de tensión 0 V se asocie con ‘0’. 3.1.1.- Suma lógica. Es una función que da ‘1’ cuando al menos una de las variables de está a ‘1’. Esta operación lógica se simboliza con el signo +, pero hay que recordar que se trata de una operación del álgebra de Boole, y no del álgebra tradicional. 3.1.2.- Producto lógico. Es una función que da ‘1’ cuando todas las variables de entrada están a ‘1’. Se simboliza con el signo normal del producto ·, pero nuevamente no hay que confundir con el producto del álgebra tradicional. 3.1.3.- Complementación o negación. También llamada función inversora, su salida es ‘0’ si la entrada es ‘1’, y viceversa. Su símbolo es una raya por encima de la variable a negar, por ejemplo para representar la variable A negada se escribe A . 3.2.- PROPIEDADES. El álgebra de Boole tiene una serie de postulados, teoremas y leyes, de los cuales se van a mostrar únicamente los más importantes. a) a = a b) a + 1 = 1 c) a · 0 = 0 d) a + a = 1 e) a · a = 0 1 Se utilizan comillas para remarcar que son valores lógicos, pertenecientes al álgebra de Boole. David Sornosa Cervera 6 Curso 2009-10 f) Idempotencia: Lógica Digital y Microprogramable a+a=a a·a=a g) Elemento neutro: a+0=a a·1=a h) Propiedad conmutativa: a+b=b+a a·b=b·a i) Propiedad asociativa: a + (b + c) = (a + b) + c a · (b · c) = (a · b) · c j) Propiedad distributiva: a · (b + c) = a · b + a · c a + (b · c) = (a + b)·(a + c) k) Ley de absorción: a + a · b = a; a · (a + b) = a l) Leyes de De Morgan: a + b = a ·b a·b = a + b Muchas de las propiedades son postulados, por lo que no requieren demostración, las otras, son demostrables o bien mediante el álgebra de Boole, o bien mediante tabla de verdad, herramienta que se presenta en el siguiente apartado, y mediante la cual se pueden demostrar todas las propiedades. Algunas propiedades llaman la atención, por comparación a como resultan en el álgebra tradicional. Por ejemplo, las propiedades de idempotencia, nos dicen que una variable sumada o multiplicada por ella misma es ella misma. Esta propiedad, sin embargo, no requiere más demostración que recordar las definiciones de la suma y el producto lógicos. Las leyes de absorción, tienen fácil demostración por álgebra de Boole: a + a · b = a · (1 + a); como 1 + a = 1, queda: a + a · b = a · 1 = a a · (a + b) = a · a + a · b = a + a · b = a La segunda propiedad distributiva, se demuestra así: (a + b)·(a + c) = a · a + a · c + a · b + b · c = a + a · c + a · b + b · c = a + b · c David Sornosa Cervera 7 Curso 2009-10 Lógica Digital y Microprogramable 4.- TABLA DE VERDAD Y FUNCIONES LÓGICAS. Las funciones lógicas son funciones que operan con variables de tipo lógico, y dan como resultado otras variables lógicas. La suma lógica, el producto lógico y la función negación son las funciones lógicas básicas, en función de ellas se puede expresar cualquier otra función lógica. Pero hay otra manera de expresar una función lógica: mediante su tabla de verdad. Una tabla de verdad es una tabla, donde se recogen todas las combinaciones posibles de las variables entradas, y se muestran las salidas para cada combinación de las entradas. Es por tanto, una manera gráfica muy directa, para representar una función lógica, pero tiene el inconveniente que, al tener que mostrar todas las combinaciones posibles de las entradas, puede ocupar mucho espacio. Veamos un ejemplo de función lógica de 3 entradas (a, b, c) y una salida (f). El número de combinaciones posibles con 3 entradas es: 23 = 8. Figura 1. Ejemplo de tabla de verdad a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 f 1 1 0 0 1 0 1 0 La tabla de verdad es también un herramienta para el diseño de las funciones lógicas. A no ser que la función sea muy sencilla, es conveniente plasmarla en una tabla de verdad antes de expresarla algebraicamente. Por ejemplo, supongamos que hay un proceso industrial, con unos captadores de alarma que, una vez adaptados convenientemente se convierten en señales digitales (supongamos sólo 3 con objeto de simplificar) llamadas a, b y c. Queremos una función lógica que se active cuando se active cualquiera de las 3 alarmas. Esto sería claramente una función suma lógica: f = a + b + c. Si la función de alarma se tiene que activar cuando se activen todas las alarmas a la vez, entonces la función sería f = a · b · c. Pero supongamos el caso en que la función de alarma deba activarse en el caso de que se activen dos de las tres alarmas a la vez. En este caso, y en muchos otros, lo mejor es escribir la tabla de verdad y mirar cada combinación de entradas para pensar cual es la salida correspondiente. Figura 2. Tabla de verdad de la función “alarma activada cuando se activan 2 entradas”. David Sornosa Cervera a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 f 0 0 0 1 0 1 1 1 8 Curso 2009-10 Lógica Digital y Microprogramable 5.- PUERTAS LÓGICAS. Es ahora el momento de introducir el concepto de puertas lógicas al que hace referencia el título del tema. Las puertas lógicas, son la implementación física de las funciones lógicas, en electrónica digital. Como se ha contado, las funciones lógicas no son de uso exclusivo de la electrónica digital, en cambio cuando se habla de puertas lógicas, se entiende que son dispositivos electrónicos que realizan funciones lógicas. Hay 7 funciones lógicas implementadas en puertas lógicas, de cada una de ellas vamos a ver su tabla de verdad, su expresión algebraica, sus símbolos, y su implementación mediante diagrama de contactos, es decir, mediante interruptores o pulsadores. En esta representación, las variables de entrada son interruptores o pulsadores (es decir contactos en general), y se les da el valor ‘1’ cuando se pulsan o se actúa sobre ellos, y el valor ‘0’ cuando se dejan en reposo. Por lo tanto, si se trata de un contacto normalmente abierto, el uno lógico quiere decir contacto cerrado, pero si se trata de un contacto normalmente cerrado, el uno lógico quiere decir contacto abierto. La salida de la función se representa por una lámpara, si le llega electricidad y por tanto se ilumina, el valor de la función es ‘1’, mientras que si la lámpara está apagada el valor de la función es ‘0’. Hay dos estándares para los símbolos de las puertas lógicas, el estándar tradicional, que tuvo su origen en la industria militar, y el estándar 91-1984 IEEE/ANSI, que posteriormente ha sido adoptado por la mayoría de organismos y normas internacionales, como la CEI (Comisión Electrotécnica Internacional) y las normas españolas UNE. No obstante, el estándar tradicional estaba tan arraigado en la industria que todavía es frecuente encontrarlo en muchas publicaciones, aunque gradualmente está siendo aceptado el nuevo estándar. 5.1.- PUERTA NOT. Representa a la función negación, también llamada función inversora o complemento. Tabla de verdad a a 0 1 1 0 Símbolo tradicional Símbolo CEI a a a 1 a 5.2.- PUERTA OR. Representa la función suma lógica (función O). Tabla de verdad Símbolo tradicional a 0 0 1 1 b a+b 0 0 1 1 0 1 1 1 Símbolo CEI Diagrama de contactos a a b David Sornosa Cervera a+b a b ≥1 a+b b 9 Curso 2009-10 Lógica Digital y Microprogramable 5.3.- PUERTA AND. Representa la función producto lógico (función Y). Tabla de verdad Símbolo tradicional a 0 0 1 1 b a+b 0 0 1 0 0 0 1 1 Símbolo CEI Diagrama de contactos a a b a b a ⋅b & b a ⋅b 5.4.- PUERTA EX–OR. Representa la función exclusive-OR (O exclusiva), también abreviada frecuentemente XOR. La salida resulta ‘1’ cuando o bien una entrada está a ‘1’, o bien la otra, pero no cuando ambas entradas están ‘1’ a la vez. Esta función, y por tanto su puerta lógica, se definen únicamente para 2 entradas, a diferencia de las funciones suma lógica y producto lógico, que pueden tener teóricamente cualquier número de entradas. Para diferenciarse de la suma lógica, su símbolo es: ⊕ . Tabla de verdad a 0 0 1 1 b a+b 0 0 1 1 0 1 1 0 Símbolo tradicional Símbolo CEI Diagrama de contactos a a b a⊕b a b =1 b a⊕b En realidad, es una función compuesta, que se puede escribir en el álgebra de Boole como: Función XOR: a ⊕ b = a·b + a·b [3] Por tratarse de una función compuesta, su diagrama de contactos, representa a la función mostrada en la ecuación [3], por lo tanto por cada variable de entrada se necesitan dos contactos, que se accionan a la vez, hecho que se simboliza uniendo los contactos mediante líneas discontinuas. 5.5.- PUERTA NOR. Representa a la función suma lógica negada. Obsérvese que su símbolo es el de la puerta OR, negado con un pequeño círculo o con un pequeño triángulo. David Sornosa Cervera 10 Curso 2009-10 Lógica Digital y Microprogramable Tabla de verdad a 0 0 1 1 b a+b 0 1 1 0 0 0 1 0 Símbolo tradicional Símbolo CEI Diagrama de contactos a a b a b a+b ≥1 b a+b 5.6.- PUERTA NAND. Representa a la función producto lógico negada. Tabla de verdad a 0 0 1 1 b a+b 0 1 1 1 0 1 1 0 Símbolo tradicional Símbolo CEI Diagrama de contactos a a b a b a ⋅b a⊕b =1 b 5.7.- PUERTA EX–NOR. Representa a la función XOR negada, por lo que frecuentemente se abrevia XNOR. Tabla de verdad a 0 0 1 1 b a⊕b 0 1 1 0 0 0 1 1 Símbolo tradicional Símbolo CEI Diagrama de contactos a a b a⊕b a b =1 b a⊕b Al igual que la función XOR, es una función compuesta, de dos únicas entradas, que se puede escribir en el álgebra de Boole como: Función XNOR: David Sornosa Cervera a ⊕ b = a·b + a·b [4] 11 Curso 2009-10 Lógica Digital y Microprogramable 6.- IMPLEMENTACIÓN Y SIMPLIFICACIÓN DE FUNCIONES LÓGICAS. Hasta ahora se han mostrado dos formas de representar una función lógica: mediante tabla de verdad y mediante representación algebraica. Una misma función puede por tanto, representarse de ambas maneras y ser equivalente. Una función puede, además, tener diferentes representaciones algebraicas, pero sólo dos de ellas son formas canónicas, que se corresponden con una única tabla de verdad. Conocida la expresión algebraica, implementar la función consiste en realizar la función mediante componentes físicos, que como sabemos pueden ser de diferentes tecnologías. En este tema, utilizaremos la representación de las puertas lógicas que se han mostrado en los apartados anteriores. Ejemplo: Implementación de la función lógica f = a·c + b·c a b c b·c f = a·c + b·c a ·c Figura 3. 6.1.- OBTENCIÓN DE LAS FORMAS CANÓNICAS. Si no se conoce la expresión algebraica, lo primero hay que obtener una de las dos formas canónicas. Para que una función esté expresada en forma canónica, cada término de la función debe contener a todas las variables de entrada a la función. Las dos formas canónicas son: suma de productos y producto de sumas. En la forma canónica suma de productos, cada término, llamado aquí minitérmino, es el producto lógico de todas las variables de entrada, negadas o no individualmente según corresponda, de forma que la suma lógica de todos los minitérminos da la función. Ejemplo: f1 = a·b·c + a·b·c En la forma canónica producto de sumas, cada término, llamado aquí maxitérmino, es la suma lógica de todas las variables de entrada, negadas o no individualmente según corresponda, de forma que el producto lógico de todos los maxitérminos da la función. Ejemplo: f 2 = (a + b + c)·(a + b + c) Veamos ahora como se obtienen las formas canónicas a partir de la tabla de verdad. Para obtener la forma canónica de suma de productos hay que fijarse en las combinaciones de entrada que producen un ‘1’ a la salida. De cada una de ellas se David Sornosa Cervera 12 Curso 2009-10 Lógica Digital y Microprogramable obtiene un minitérmino, formado por el producto de las variables de entrada, de forma que si la variable de entrada es ‘0’ se pone negada en el minitérmino, y si es ‘1’, se pone sin negar. Para obtener la forma canónica de producto de sumas hay que observar las combinaciones de entrada que producen un ‘0’ a la salida. De cada una de ellas se obtiene un maxitérmino, formado por la suma de la variables de entrada, de forma que si la variable de entrada es ‘0’ se pone sin negar, y si es ‘1’, se pone negada. Ejemplo de obtención de formas canónicas: a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 f 1 1 0 0 1 0 1 0 Forma canónica de suma de productos: f = a·b·c + a·b·c + a·b·c + a·b·c Forma canónica de producto de sumas: f = (a + b + c)·(a + b + c)·(a + b + c)·(a + b + c) Figura 4. Tabla de verdad y formas canónicas. 6.2.- MÉTODO ALGEBRAICO. Consiste en aplicar las propiedades del álgebra de Boole, con objeto de simplificar las expresiones. Veamos un ejemplo, con la forma canónica de suma de productos anterior. f = a·b·c + a·b·c + a·b·c + a·b·c = a·b·(c + c) + a·c·(b + b) = a·b·1 + a·c·1 = a·b + a·c Es un buen método cuando las expresiones sin simplificar no son muy largas ni tienen muchas variables. El inconveniente es que no hay ninguna regla ni algoritmo para simplificar, simplemente se trata de aplicar la propiedades del álgebra de Boole, y según la experiencia de la persona que lo haga, puede ser más costoso o menos. Lo que es peor, si se parte de una expresión complicada, como por ejemplo que hubiéramos partido de la forma canónica de producto de sumas, llegar al mismo punto de simplificación hubiera sido bastante más largo y complicado. Además, en general no se tiene la garantía de que no haya otra expresión equivalente más simplificada. 6.3.- MAPAS DE KARNAUGH. El método de los mapas de Karnaugh es un algoritmo para llegar a expresiones, tipo suma de productos o productos de sumas, pero simplificadas al máximo. Un mapa de Karnaugh no es otra cosa que expresar la tabla de verdad de una manera más compacta, de forma que cada combinación de variables de entrada se representa por una casilla, y en dicha casilla se escribe el valor de la función para dicha combinación. La posición de las casillas debe ser tal que, de una casilla a la siguiente o a la anterior, en cualquier dirección que se recorra el mapa, sólo varíe una variable de David Sornosa Cervera 13 Curso 2009-10 Lógica Digital y Microprogramable entrada. Esto implica ordenar las casillas según un código Gray2. Veamos como distribuir las casillas para funciones de 2, 3, 4 y 5 variables de entrada (figuras 5-a, 5-b, 5-c y 5-d respectivamente). b a bc 0 1 a 0 1 Figura 5-a 0 1 cde ab 000 001 011 010 00 (A) (C) 01 (C) 11 (B) (C) 10 (C) 00 01 11 10 (A) (A) (A) (A) Figura 5-b 110 111 101 100 (C) (A) (C) (C) (B) (C) cd ab 00 01 11 10 00 (A) (A) 01 (B) (B) (B) (B) 11 10 (A) (A) Figura 5-c Figura 5-d Figura 5. Ejemplos de mapas de Karnaugh y asociaciones de casillas. Una vez se ha rellenado el mapa con los ‘1’ y ‘0’ en las casillas correspondientes, se trata de hacer agrupaciones de cuadros adyacentes. Para ello hay que seguir las siguientes reglas: - - - El número de casillas agrupadas, para ser válido, ha de ser potencia de 2. Los grupos se pueden tomar en vertical, horizontal, cuadrados o rectangulares, pero nunca en diagonal. La primera columna y la última son adyacentes, lo mismo que la primera fila y la última, por lo pueden formar parte del mismo grupo. Al igual que hay dos formas canónicas, hay dos formas de tomar los grupos de Karnaugh. En una forma, el objetivo es agrupar, en distintos grupos, todos los ‘1’, y en la otra se toman todos los ‘0’. Se empieza tomando los grupos más grandes posibles, acabando por los más pequeños, si hace falta para completar los ‘1’, o los ‘0’, se puede hacer grupos de una única casilla. Se pueden repetir ‘1’ en diferentes grupos, siempre que con ello se contribuya a agrupar ‘1’ que estaban sueltos. Lo mismo si las agrupaciones son de ‘0’. En la figura 5, se muestran algunas de las posibilidades de hacer grupos. En cada tabla, se han sombreado las casillas agrupadas, y entre paréntesis se han nombrado los grupos para facilitar su identificación. Se observa en la figura 5-d, que el grupo A, y el grupo B, están en casillas que aparentemente no son adyacentes. Sin embargo, el grupo A está en las casillas (0,0,1) y (1,0,1), de forma que sólo cambia un bit en las variables de entrada (c, d, e); lo mismo ocurre con el grupo B, cuyas casillas son (0,1,1) y (1,1,1). Por lo tanto, se observa que hay columnas, en que las casillas de la misma fila son adyacentes, aunque no están juntas en el mapa. Es por esto, que con 5 variables de entrada o más, el método de Karnaugh se vuelve bastante lioso y deja de ser útil. 2 Visto en este mismo tema, apartado 2.3.- David Sornosa Cervera 14 Curso 2009-10 Lógica Digital y Microprogramable Para explicar que se hace con los grupos tomados, y como se simplifica, volvamos al ejemplo de la figura 4. bc a 0 1 00 01 11 10 1 1 0 0 1 0 0 1 Figura 6-a Figura 6-b Figura 6-c La figura 6-a muestra como queda el mapa de Karnaugh de la función de la figura 4. En la figura 6-b se han hecho las asociaciones de ‘1’ correspondientes. Obsérvese que se podía también haber tomado un grupo de la primera columna (0,0) pero esto no se hace porque ya están todos los ‘1’ agrupados. Como hemos agrupado los ‘1’, la función se expresará en forma de suma de productos, aunque no en forma canónica, puesto que se va a simplificar. No obstante, para demostrar el proceso de simplificación, partiremos de la forma canónica. Escribimos los minitérminos correspondientes al primer grupo (g1), situado en la fila a = 0 y simplificamos: g 1 = a·b·c + a·b·c = a·b·(c + c) = a·b·1 = a·b Hacemos lo mismo con el segundo grupo (g2), situado en la fila a = 1: g 2 = a·b·c + a·b·c = a·c·(b + b) = a·c·1 = a·c La función (f) es: f = g 1 + g 2 = a·b + a·c Si miramos la figura 6-b, observamos que en el primer grupo, la única variable que varía en las casillas agrupadas es la ‘c’, que en una casilla es ‘0’ y en la adyacente es ‘1’. Luego observamos que en el resultado final (g1) ha quedado eliminada en la simplificación. Por lo tanto, el método de Karnaugh simplifica al eliminar las variables que aparecen cambiadas de valor en las casillas del grupo, de forma que las variables que no cambian, aparecen en el término, negadas o sin negar, según sean ‘0’ ó ‘1’ respectivamente. Como ‘a’ y ‘b’ son ‘0’ para el primer grupo, aparecen en g1 negadas. Si observamos el segundo grupo (g2), observamos que en la variable que cambia de la valor es la ‘b’, por eso desaparece (se simplifica), mientras que ‘a’ es ‘1’ y aparece sin negar, y ‘c’ es ‘0’ y por eso se escribe negada. En la figura 6-c, se han hecho grupos con los ‘0’. Procediendo igual que en la figura 6-b, obtenemos primero obtenemos la forma canónica del grupo que está en la fila a = 0 (g1): g 1 = (a + b + c)·(a + b + c) = a·a + a·b + a·c + a·b + b·b + b·c + a·c + b·c + c·c Aplicando las propiedades de idempotencia y la ley de absorción, se llega a: David Sornosa Cervera 15 Curso 2009-10 Lógica Digital y Microprogramable g 1 = (a + b) Obtenemos ahora la forma canónica correspondiente al segundo grupo y simplificamos, aplicando las mismas propiedades del álgebra de Boole: g 2 = (a + b + c)·(a + b + c) = a·a + a·b + a·c + a·b + b·b + b·c + a·c + b·c + c·c = a + c Por lo que la función (f) es: f = g 1 ·g 2 = (a + b)·(a + c) Lo que nos lleva a la conclusión de que la regla para simplificar por Karnaugh, agrupando los ‘0’ es la misma que agrupando los ‘1’, es decir, en cada término se eliminan (o se simplifican) aquellas variables que cambian de valor (en el ejemplo, la ‘c’ del primer término y la ‘b’ del segundo). Ambas expresiones obtenidas: f = a·b + a·c = (a + b)·(a + c) son completamente equivalentes. Veamos ejemplos de aplicación directa del método de Karnaugh, sin obtener previamente las formas canónicas. Ejemplo 1: Función f(a,b,c,d) representada por la tabla de verdad de la figura 7-a. Suma de productos: a 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 b 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 c 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 d 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 f 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 g1 = b·c·d g 2 = a·b g 3 = a·c f = b·c·d + a·b + a·c Figura 7-b Producto de sumas: g1 = a + b g2 = a + c g3 = b + c + d Figura 7-a f = (a + b)(a + c)(b + c + d ) Figura 7-c En el siguiente ejemplo se ha añadido, en la tabla de verdad, una tercera posibilidad, además de ‘0’ y ‘1’ al valor de la función. Esta posibilidad es el término David Sornosa Cervera 16 Curso 2009-10 Lógica Digital y Microprogramable indefinido, también conocido como condición “no importa”. Se representa por una X, y se utiliza para no especificar el valor de la salida para una combinación concreta de las variables de entrada, bien porque no se pueden producir, bien porque, de producirse tal combinación, realmente no importa el valor de la salida. Debido a esta característica, el término indefinido, se utilizará en los mapas de Karnaugh como más interese, es decir, si utilizándolo se obtiene un grupo más grande, se usa, y si no, se deja sin agrupar en ningún grupo. Ejemplo 2: Función f(a,b,c,d) representada por la tabla de verdad de la figura 8-a. Suma de productos: a 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 b 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 c 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 d 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 f 0 0 0 X 0 0 0 1 1 1 1 1 1 1 X 1 g1 = c·d g2 = a f = c·d + a Figura 8-b Producto de sumas: g1 = a + d g2 = a + c f = (a + d )(a + c) Figura 8-a Figura 8-c Se observa que las condiciones “no importa” se han aprovechado en la figura 8-b, porque así se consiguen grupos mayores, pero no se han aprovechado en la figura 8-c, porque para tomar las ‘X’ se hubieran tenido que formar más grupos, y por tanto simplificar menos. Obsérvese también que cuando hay casillas con términos indefinidos, al aplicar Karnaugh no tienen porque obtenerse expresiones matemáticamente iguales agrupando los ‘1’ o agrupando los ‘0’, ya que la ‘X’ se puede considerar diferente en cada agrupación. Sin embargo, ambas expresiones representan igualmente a la tabla de verdad. En el ejemplo de la figura 8, las ‘X’ se han tomado como ‘1’ para obtener la expresión de suma de productos, y como ‘0’ para obtener la expresión de producto de sumas, por lo que en este caso concreto se comprueba que: f = (a + d )(a + c) = c·d + a David Sornosa Cervera 17 Curso 2009-10 Lógica Digital y Microprogramable Se ha dicho al principio del apartado que mediante al método los mapas de Karnaugh, se obtienen expresiones simplificadas al máximo. Esto es cierto si se consideran sólo las 3 operaciones básicas del álgebra de Boole; pero si se consideran el resto de funciones que se han explicado en las puertas lógicas (XOR, NOR, NAND) en ocasiones puede ocurrir que con Karnaugh no se obtenga la solución óptima. Ejemplo 3: Sea la función f(a,b,c) a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 f 0 1 1 0 1 0 0 1 Figura 9-a bc a 0 1 00 01 11 10 0 1 0 1 1 0 1 0 Figura 9-b: Mapa de Karnaugh. Se observa en el mapa que no hay agrupaciones posibles de más de 1 casilla, por lo que la función obtenida es igual a la forma canónica. Forma canónica de suma de productos: f = a·b·c + a·b·c + a·b·c + a·b·c Simplificamos por álgebra de Boole: f = a·(b·c + b·c) + a (b·c + b·c) Recordando la definición de O exclusiva (XOR) y O exclusiva negada (XNOR): f = a·(b ⊕ c) + a (b ⊕ c) = a ⊕ (b ⊕ c) Se puede observar que la última expresión está bastante simplificada respecto a la obtenida por Karnaugh. 6.4.- REALIZACIÓN DE FUNCIONES LÓGICAS CON PUERTAS NAND O NOR. En muchas ocasiones, se transforma la función para realizarla exclusivamente con un tipo de puertas, o bien puertas NOR, o puertas NAND, utilizando para ello las leyes de De Morgan. Ejemplo 4: f = a·b + a·c Le aplicamos las leyes de De Morgan, para transformar los productos en sumas negadas (funciones NOR), y el resultado lo negamos dos veces para obtener la función NOR. f = a·b + a·c = a + b + a + c = a + b + a + c David Sornosa Cervera 18 Curso 2009-10 Lógica Digital y Microprogramable Aunque la última expresión pueda parecer más compleja, tiene la ventaja de que sólo utiliza un único tipo de puertas (NOR). Además, para realizar la implementación de f = a·b + a·c se necesitan 6 puertas lógicas (3 puertas NOT, 2 puertas AND y 1 puerta OR), mientras que para implementar f = a + b + a + c se necesitan únicamente 5 puertas NOR. a b c a·b Figura 10-a f = a ·b + a ·c a·c a b c a +c a+c+a+b Figura 10-b f =a +c+a+b a+b Figura 10. Dos formas de implementar la función f = a·b + a·c Para implementar la función negación, con puertas NOR o con puertas NAND, hay que unir las entradas de una puerta NOR o NAND a la variable o función que se desea negar. Para comprobarlo, basta con mirar la tabla de verdad de estas puertas, ya que cuando las variables de entrada tienen el mismo valor, a la salida se obtiene el valor contrario (negado). Obsérvese en la figura 10, el número de puertas lógicas empleadas en cada caso, y sobre todo que la figura 10-b, tan sólo emplea puertas NOR. Se podría haber logrado también una implementación, a base exclusivamente de puertas NAND. 6.5.- OTROS MÉTODOS. Como se ha mencionado, aunque teóricamente se pueden hacer mapas de Karnaugh del número de variables que se quiera, a partir de 5 variables o más deja de ser útil, porque es difícil encontrar las casillas adyacentes que no están a la vista. Hay una serie de métodos, entre los que destaca el método numérico de Quine – McCluskey, pensados para simplificar funciones de más de 4 variables, aunque debido a los algoritmos empleados, no se usan de forma manual, sino informatizada. David Sornosa Cervera 19 Curso 2009-10 Lógica Digital y Microprogramable 7.- BIBLIOGRAFÍA. Blanco Flores, F. y Olvera Peralta, S.: “Electrónica digital y microprogramable”. Ed. Paraninfo. Madrid, 2002. Murgui Izquierdo, M., Vela Rozalén, J. J. y Vinagre Prieto, J. J.: “Tecnología industrial II”. Ed. Edebé. Barcelona, 1999. Tocci, R: “Sistemas digitales. Principios y aplicaciones”. Ed. Prentice-Hall Hispanoamericana. México, 1996. Val Blasco, S., Huertas Talón, J. L., Ibáñez Bellé, J., González Esteras, J. A. y Torres Leza, F.: “Tecnología industrial II”. Ed. McGraw-Hill. Madrid, 1996. David Sornosa Cervera 20