Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Tema 3: Representación y minimización de funciones lógicas 3.1. Teoremas y postulados del álgebra de Boole Definiciones El álgebra de Boole se utiliza para la resolución de problemas de tipo lógico-resolutivo, desarrollado en 1947 por George Boole. Actualmente es muy utilizada en electrónica digital (en computadoras), y sobre todo en síntesis de circuitos digitales. El álgebra de Boole son las matemáticas de los sistemas digitales. Variable lógica: Sea el conjunto B = { 0, 1 }. Con este conjunto podemos codificar la información en un computador. Decimos que una variable x es lógica si su dominio es el conjunto B, es decir, si x solo puede tomar los valores 0 y 1. Complemento: El complemento de una variable es su inverso, y se indica con una barra encima, ó con un apóstrofe. Lo más utilizado siempre es la barra, pero en estos apuntes utilizamos un apóstrofe por comodidad en la escritura. Por ejemplo, el complemento de A es A'. Si A = 0, entonces A' = 1 Si A = 1, entonces A' = 0 1 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Postulados del algebra de Boole Un conjunto B = { 0, 1 }, dotado de dos operaciones denotadas por + y ·, es un álgebra de Boole si y sólo si se verifican los siguientes postulados o leyes. En todos los casos consideramos ∀ a,b,c ∈ B. 1. Las operaciones + y · son conmutativas: a+b=b+a (conmutativa de la suma) a·b =b·a (conmutativa del producto) 2. Las operaciones + y · son asociativas: a + (b + c) = (a + b) + c (asociativa de la suma) a · (b · c) = (a · b) · c (asociativa del producto) 3. Cada operación es distributiva respecto a la otra: + respecto ·: a + (b · c) = (a + b) · (a + c) · respecto +: a · (b + c) = (a · b) + (a · c) ∀ a,b,c ∈ B Un álgebra de Boole es simétrica con respecto a las operaciones + y ·, y a los elementos identidad 0 y 1. Tal característica es el principio de dualidad, es decir, si tenemos un teorema, podemos obtener otro dual, cambiando las operaciones. Reglas Un álgebra de Boole B tiene las siguientes propiedades o reglas: 1. 2. 3. 4. 5. 6. 7. 8. 9. Identidad (+): Elementos dominantes (+): Elementos dominantes (·): Identidad (·): Idempotencia (+): Complemento (+): Idempotencia (·): Complemento (·): Involutiva: 10. Ley de absorción (dual): 11. Ley del consenso (dual): a+0=a a+1=1 a·0=0 a·1=a a+a=a a + a' = 1 a·a=a a · a' = 0 a'' = a ∀a∈B ∀a∈B ∀a∈B ∀a∈B a + (a · b) = a y a · (a+b) = a a + (a' · b) = a + b y a · (a’+b) = a · b Las 2 últimas reglas se pueden obtener a partir de las leyes y de las otras reglas más sencillas. a' = Complementario de a 2 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas 3.2. Teoremas de De Morgan De Morgan propuso dos teoremas que constituyen una parte muy importante del álgebra de Boole. Teoremas de De Morgan: 1. El complemento de una suma de variables es igual al producto de los complementos de las variables: (a + b)' = a' · b' ∀ a,b ∈ B 2. El complemento de un producto de variables es igual a la suma de los complementos de las variables: (a · b)' = a' + b' ∀ a,b ∈ B Estos teoremas son válidos para cualquier número de variables. Ejemplos: • a · b · c = a' + b' + c' • (a + b + c)' = a' · b' · c' • (a' + b' + c') ' = a · b · c • ((a + b + c) · d) ' = (a + b + c)' + d' = (a + b + c)' + d' = (a' · b' · c') + d' • ((a·b·c) + (d·e·f)) ' = (a·b·c)' · (d·e·f)' = (a'+b'+c') · (d'+e'+f') • ((a+b)·c'·d' + e + f') ' = ((a+b)·c'·d')' · e' · f = ((a+b)'+c+d) · e' · f = = ((a' · b') + c + d) · e' · f Funciones lógicas Función lógica: Dadas n variables lógicas x1, x2, ... xn , decimos que F es una función lógica de las citadas variables si: F(x1, x2, ... xn) ∈ B es decir, si F sólo toma los valores 0 y 1. Al número de variables también se le llama dominio. 3 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Una función lógica puede definirse de dos formas: a) Mediante una expresión algebraica, en la que intervengan las variables x1, x2 , ... xn (y sus complementarias: x1', x2', ... xn') relacionadas entre sí mediante las operaciones + y ·. b) Mediante una tabla de verdad, que consiste en expresar en una tabla todas las posibles combinaciones de las variables de entrada x1, x2, ... xn , asociando un valor a la salida. El número de combinaciones es 2n. Es posible tener más de una salida en la misma tabla: multifunciones. Ejemplos: Sean x1 y x2 dos variables lógicas. Ejemplos de expresiones algebraicas y sus correspondientes tablas de verdad serían: F1 = x1' F3 = x1 · x2' F2 = x1 + x2 x1 F1 x1 x2 F2 x1 x2' F3 0 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 Como podemos observar, para construir la tabla de verdad de una función lógica, escribimos en las columnas de la izquierda todas las combinaciones posibles de las variables independientes, y en la columna de la derecha, los valores de la función correspondientes a cada combinación de las variables independientes. Las tablas de verdad permiten una representación compacta, pudiendo además definir dos o más funciones en una sola tabla, siempre y cuando dependan de las mismas variables independientes. Una suma de productos es igual a 1 si y sólo si al menos uno de los productos es igual a 1. Un producto de sumas es igual a 0 solamente si al menos uno de los términos es igual a 0. Por otro lado, dadas dos expresiones algebraicas F1 y F2 diferentes, sus valores en la tabla pueden coincidir. En ese caso diremos que ambas funciones son equivalentes (F1 = F 2). 4 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Ejemplos: • Suma de productos: F1 = (a' · b' · c) + (a · b' · c' ) + (a · b · c) (3 variables) Los valores binarios que hacen que los productos de la expresión sean 1 son: 001 (a'·b'·c), 100 (a·b'·c'), 111 (a·b·c). Para estas combinaciones, en la columna de salida de la tabla de verdad pondremos un 1; en el resto pondremos 0. • a b c F1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 Producto de sumas: F2 = (a+b+c) · (a+b'+c) · (a+b'+c') · (a'+b+c') · (a'+b'+c) Los valores binarios que hacen que los términos suma sean 0 son: 000 (a+b+c), 010 (a+b'+c), 011 (a+b'+c'), 010 (a'+b+c'), 110 (a'+b'+c). Para estas combinaciones, en la columna de salida de la tabla de verdad pondremos un 0; en el resto pondremos 1. a b c F2 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 Podemos comprobar que ambas funciones son equivalentes (F 1=F2). 5 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Ejemplo: Sean las dos funciones lógicas siguientes, que dependen ambas de las mismas variables lógicas: a, b y c. F1 = (a + b + c) · (a + b + c') · (a' + b + c) · (a' + b + c') F2 = (a' · b · c') + (a' · b · c) + (a · b · c') + (a · b · c) Podemos representarlas en una única tabla de verdad (multifunciones): a b c F1 F2 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 Podemos comprobar que ambas funciones son equivalentes (F 1 = F 2). Obtención de la expresión algebraica a partir de la tabla Podemos obtener la expresión algebraica a partir de la tabla de verdad. Dada una función lógica F, ésta solo puede tomar los valores 0 y 1. Podemos definir F indicando para qué combinaciones de las variables independientes, toma el valor 1 (implementación por "1"), o bien, para qué combinaciones toma el valor 0 (implementación por "0"). Implementación por "1": Obtendremos una suma de productos. La función F será cierta para alguna de las combinaciones (suma lógica) que sean ciertas (vale "1"). Cada combinación será cierta cuando sean ciertas todas las variables que la componen (producto lógico). Si alguna de las variables en la combinación elegida es falsa (vale "0"), su negación será cierta (valdrá "1"). Implementación por "0": Obtendremos un producto de sumas. La función F será cierta cuando no se da ninguna de las combinaciones para las cuales es falsa (producto lógico). Una de estas combinaciones no ocurre cuando es falsa (negación) alguna de las variables (suma lógica) que componen la combinación. 6 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Ejemplo: Sea la tabla de verdad del ejemplo anterior (F 1 = F2 = F). Recordamos que: ó (OR Lógica) y (AND Lógica) = = + (Suma lógica) · (Producto lógico) Implementación por "1": La función F es cierta (vale 1) para las siguientes combinaciones: a b c F Condiciones para que F=1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 a' y b y c' a' y b y c a y b y c' a ybyc ⇒ ⇒ ⇒ ⇒ a' · b · c' a' · b · c a · b · c' a · b·c La función F será cierta cuando se cumpla la primera combinación, ó la segunda, ó la tercera ó la cuarta, es decir, cuando se cumpla cualquiera de esas cuatro combinaciones. Una combinación es cierta si y solo si son ciertos todos los valores: F = (a' · b · c') + (a' · b · c) + (a · b · c') + (a · b · c) Podemos comprobar como hemos obtenido la misma función que la función F 1 del ejemplo anterior (suma de productos). Implementación por "0": La función es cierta (vale 1) para las siguientes combinaciones: a b c F Condiciones para que F=1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 aóbóc a ó b ó c' a' ó b ó c a' ó b ó c' ⇒ ⇒ ⇒ ⇒ a+b+c a + b + c' a' + b + c a' + b + c' La función F será cierta (vale 1) si y solo si no se cumple la primera combinación, y no se cumple la segunda, y no se cumple la tercera y no se cumple la cuarta, es decir, cuando no se cumpla ninguna de esas cuatro combinaciones. Una combinación no es cierta si y solo si no es cierto el primer valor ó no es cierto el segundo ó no es cierto el tercero. Un valor no es cierto si su complemento es cierto (vale "1"). 7 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Sustituyendo las "y" por productos lógicos, las "ó" por sumas lógicas e incluyendo las complementaciones, tenemos como expresión de la función: F = (a + b + c) · (a + b + c') · (a' + b + c) · (a' + b + c') Podemos comprobar como hemos obtenido la misma función que la función F 2 del ejemplo anterior (producto de sumas). Hemos comprobado así mismo, que las funciones F1 y F2 son equivalentes, y que cualquier función puede expresarse mediante las variables independientes, relacionadas mediante las operaciones suma, producto y negación. Por tanto, tenemos dos formas de obtener la expresión algebraica de una función a partir de la tabla de verdad. Siguiendo el proceso inverso, ya hemos visto cómo fácilmente podemos, a partir de la expresión algebraica, obtener: q q las combinaciones de la tabla de verdad para las cuales la función vale 1 desde una suma de productos las combinaciones de la tabla de verdad para las cuales la función vale 0 desde un producto de sumas. Forma canónica de una función lógica Se llama término canónico de una función lógica a todo producto o suma en el cual aparecen todas las variables (o sus complementos) de esa función. A los términos producto se les llama productos canónicos (mintermus) y a los términos suma, sumas canónicas (maxtermus). Cuando una función se expresa como una suma de productos canónicos (mintermus) o como producto de sumas canónicas (maxtermus) se dice que se encuentra en su forma canónica o estándar. • • La implementación por "1" nos lleva a la forma canónica de suma de productos. La implementación por "0" nos lleva a un producto de sumas. Aplicando los teoremas de De Morgan, podemos convertir una función expresada en sumas de productos (mintermus) a producto de sumas (maxtermus) y viceversa. Aplicando las leyes distributivas, podemos convertir cualquier función que no esté en forma canónica a suma de productos o productos de sumas (forma canónica): F = a·b + c·(d+e) = a·b + c·d + c·e 8 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Ejemplo: • Producto de sumas è Suma de productos (maxtermusèmintermus) F = ((a + b + c') · (a + b' + c)) ' = = (a + b + c') ' + (a + b' + c) ' = = (a' · b' · c) + (a' · b · c') • Suma de productos è Producto de sumas (MintermusèMaxtermus) F = (a · b · c) + (a · b' · c') = = ( (a · b · c) + (a · b' · c') ) '' = = ( (a · b · c)' · (a · b' · c')' ) ' = = ( (a' + b' + c') · (a' + b + c) ) ' Conversión de una suma de productos a su forma canónica Utilizando lo siguiente podemos convertir un término producto que no contenga todas las variables a otro que si las tenga: • Regla 6 del álgebra de Boole: (a + a' = 1) • Propiedad distributiva: a·(b+c) = (a·b) + (a·c) Tenemos que multiplicar cada término producto que no esté en forma canónica por un término formado por la suma de la variable que le falta y su complemento. Multiplicar por 1 no altera el valor de un término. El número de productos se duplica por cada variable que falta. Ejemplo: Convertir la siguiente expresión booleana al formato suma de productos canónicos: F = (a·b'·c) + (a'·b') + (a·b·c'·d) Tenemos 4 variables: a,b,c,d. Consideramos cada término por separado. a·b'·c = (a·b'·c) · (d+d') = (a·b'·c·d) + (a·b'·c·d') a'·b' = (a'·b') · (c+c') = (a'·b'·c) + (a'·b'·c') = = [ (a'·b'·c) · (d+d') ] + [ (a'·b'·c') · (d+d') ] = = [ (a'·b'·c·d) + (a'·b'·c·d') ] + [ (a'·b'·c'·d) + (a'·b'·c'·d') ] a·b·c'·d => Ya lo tenemos en forma canónica Sustituyendo cada término por su equivalente término canónico: F = (a·b'·c·d) + (a·b'·c·d') + (a'·b'·c·d) + (a'·b'·c·d') + + (a'·b'·c'·d) + (a'·b'·c'·d') + (a·b·c'·d) 9 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Conversión de un producto de sumas a su forma canónica Utilizando lo siguiente podemos convertir un término suma que no contenga todas las variables a otro que si las tenga: • Regla 8 del álgebra de Boole: (a · a' = 0) • Propiedad distributiva: a+(b·c) = (a+b) · (a+c) Tenemos que sumar a cada término suma que no esté en forma canónica un término formado por el producto de la variable que le falta y su complemento. Sumar 0 no altera el valor de una suma. El número de sumas se duplica por cada variable que falta. Ejemplo: Convertir la siguiente expresión booleana al formato de producto de sumas canónico. F = (a+b'+c) · (b'+c+d') · (a+b'+c'+d) Tenemos 4 variables: a,b,c,d. Consideramos cada término por separado. (a+b'+c) = (a+b'+c) + (d · d') = (a+b'+c+d) · (a+b'+c+d') (b'+c+d') = (b'+c+d') + (a · a') = (a+b'+c+d') · (a'+b'+c+d') (a+b'+c'+d) ⇒ Ya lo tenemos en forma canónica Sustituyendo cada término por su equivalente término canónico: F = (a+b'+c+d) · (a+b'+c+d') · (a+b'+c+d') · (a'+b'+c+d') · (a+b'+c'+d) 10 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Forma compacta de una función en forma canónica Una expresión en forma canónica puede expresarse de una forma compacta. La forma compacta de representar esta tabla o las expresiones lógicas sería indicando las combinaciones que hacen cierta (suma de productos) o falsa (producto de sumas) la función F de la siguiente forma: Forma de la expresión suma de productos producto de sumas Forma compacta F = Suma de mi = ∑ (Combinaciones ciertas) F = Producto de Mi = Π (Combinaciones falsas) Sea la función F definida por la tabla de verdad siguiente: 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 0 Mintermus (m) Maxtermus (M) M0 = a+b+c M1 = a+b+c' M2 = a+b'+c m3 = a'·b·c M4 = a'+b+c m5 = a·b'·c m6 = a·b·c' M7 = a'+b'+c' Valor 0 = 000 1 = 001 2 = 010 3 = 011 4 = 100 5 = 101 6 = 110 7 = 111 Por tanto, las expresiones lógicas equivalentes "suma de productos" y "producto de sumas" son: F = m3 +m5+m6 = (a'·b·c) + (a·b'·c) + (a·b·c') F = M0 ·M1·M2·M4·M7 = (a+b+c) · (a+b+c') · (a+b'+c) · (a'+b+c) · (a'+b'+c') Si expresamos en binario las combinaciones: Suma de productos (directo): 011+101+110 Producto de sumas (complementados): 000·001·010·100·111 Las expresiones compactas son: Suma de productos: F = ∑ (3,5,6) Producto de sumas: F = Π (0,1,2,4,7) F = ∑ (3,5,6) = Π (0,1,2,4,7) Ambas expresiones compactas son equivalentes, como se demuestra aquí: q q q q Sabemos que: Mi = mi' (DeMorgan) Tenemos que: F = ∑ (3,5,6) = m3 + m5 + m6 Obtenemos la función complementada F', que valdrá 1 para aquellas combinaciones que F=0 (y no estará definida para las mismas combinaciones que F). F' = ∑ (0,1,2,4,7) = m0+m1+m2+m4+m7 Complementamos en ambas partes de la igualdad: F'' = F = (m0+m1+m2+m4+m7)' = m0'·m1'·m2'·m4'·m7' ⇒ ⇒ F = M0·M1·M2·M4·M7 = ⇒ F = Π(M0,M1,M2,M4,M7) = Π(0,1,2,4,7) 11 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas 3.3. Puertas lógicas Introducción Los computadores actuales utilizan como soporte tecnológico los circuitos electrónicos, por lo que se consiguen grandes velocidades. Pero estos circuitos electrónicos no pueden manejar directamente cifras ni caracteres. La información se representa casi siempre mediante tensiones eléctricas. Ahora bien, pueden utilizarse tensiones eléctricas de dos tipos: • Señales analógicas: las tensiones toman cualquier valor dentro de un intervalo determinado. Permiten representar una magnitud y asignarle un valor cualquiera. • Señales discretas: las tensiones sólo toman unos valores concretos. Permiten representar un número limitado de valores diferentes. En el caso de que el número de valores diferentes que pueda representar la tensión sean solo dos, la señal se denomina lógica o digital. En los computadores se utilizan señales lógicas para representar la información. A los dos valores que puede tomar dicha señal, se les asigna habitualmente como 0 y 1. La razón de la utilización de este tipo de señales es, fundamentalmente tecnológica. Existe un tipo de circuitos electrónicos, denominados circuitos digitales, que trabajan solo con dos niveles de tensión, y que pueden realizar una transición de un nivel a otro. Las ventajas que presentan estos circuitos respecto a los analógicos son: • • • • • • • Gran simplicidad de diseño Velocidad de trabajo más elevada Consumo más reducido Inmunidad al ruido muy elevada (margen de error) Posibilidad de diseño descendente, al poder confeccionar cualquier circuito, por complejo que sea, con unidades más simples diseñadas previamente. Posibilidad de aumentar hasta el nivel que se desee, la precisión en la representación de una información numérica. Menor coste de fabricación, para las mismas prestaciones, ya que al poder construir cualquier circuito con unidades básicas, permite fabricar éstas en grandes cantidades. El único inconveniente es una complejidad superior de los circuitos, que no es tal inconveniente, gracias a la posibilidad de diseño y análisis descendente. 12 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Las únidades básicas más simples que componen los circuitos digitales se denominan puertas lógicas, y son circuitos que implementan las funciones lógicas elementales. Son bloques de construcción básicos de funciones más complejas. Se representan por unos símbolos de acuerdo al estándard ANSI / IEEE 91-1984. Los valores lógicos "0" y "1" se representan por niveles de tensión diferentes en las líneas de entrada y salida de estos circuitos. Realmente estos dos niveles de tensión son bastante diferentes entre si. Los circuitos digitales se diseñan de tal forma, que reconocen un valor lógico, aunque la tensión no tome exactamente el nivel definido, siempre y cuando esté dentro de una franja alrededor de dicho nivel, permitiendo una cierta inmunidad ante variaciones en la señal de entrada (ruido). Se dice que una lógica es positiva si la tensión correspondiente al "1" lógico es mayor que la tensión del "0" lógico. En caso contrario, se trata de una lógica negativa. La mayoría de las veces, el "0" lógico es la masa o tensión de 0 voltios. Los niveles de tensión utilizados vienen determinados por la tecnología empleada en la fabricación de circuitos. Puertas básicas De la definición de álgebra de Boole, las puertas básicas son: Puerta AND La salida es 1 si y sólo si todas y cada una de las variables de entrada toman el valor 1. La puerta AND realiza la función producto lógico de las variables de entrada: y = x1 · x2 · ... · xn Representación gráfica: Tabla de verdad: a b AND 0 0 1 1 0 1 0 1 0 0 0 1 Ejemplo de aplicación: Habilitar / impedir el paso de alguna señal. Si el cinturón de seguridad no está abrochado, se activa una de las entradas, pero mientras el coche no esté en marcha no nos avisará. Al arrancar, activamos la otra entrada, y una alarma o mensaje nos advertirá de que debemos colocarnos el cinturón. 13 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Puerta OR La salida es 1 si y sólo si al menos una de las entradas toma el valor 1. La puerta OR realiza la función de suma lógica: y = x1 + x2 + ... + xn Representación gráfica: Tabla de verdad: a b OR 0 0 1 1 0 1 0 1 0 1 1 1 Ejemplo de aplicación: Un sistema de alarma, en el que tenemos varios sensores en puertas y ventanas. En el momento en que cualquiera de los sensores detecte la presencia de un intruso, el valor de la función OR será "1", y podría activar un circuito de alarma (sirena, etc.). Puerta NOT (inversor) y = x' Representación gráfica: Tabla de verdad: a NOT 0 1 1 0 Ejemplo de aplicación: Realizar el complemento a 1 de un número binario, con una serie de inversores en paralelo, tantos como bits utilizados en el número binario. 14 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Puerta NAND La salida es 0 si y sólo si todas y cada una de las entradas toman el valor 1. En el resto de caos, la salida es 1. Equivale a una puerta AND seguida de una puerta NOT. Realiza la función: y = (x1 · x2 · ... · xn)' = x1' + x2' + ... + xn' Representación gráfica: Tabla de verdad: a b NAND / Neg-Or 0 0 1 1 0 1 0 1 1 1 1 0 La puerta NAND (AND+NOT) es equivalente a la puerta llamada negativa-OR (NOT+OR). El uso de una u otra puerta depende de si nos interesa detectar todas las entradas a nivel alto (NAND) o alguna a nivel bajo (Negativa-OR). Recordar los teoremas de De Morgan. Ejemplo de aplicación: En un proceso de fabricación tenemos dos tanques A y B de líquido, con sensores de nivel que se activan por nivel alto ("1"), es decir, cuando el nivel es igual o supera al del sensor. Tenemos dos posibilidades: Queremos que se nos encienda un testigo de color verde (LED conectado a +V) en un panel de control en el caso de que el nivel de los dos tanques esté por encima de unos valores correctos: NAND. Queremos que se nos encienda un testigo de color rojo (LED conectado a GND) en un panel de control en el caso de que el nivel de cualquiera de ellos descienda por debajo de un determinado nivel: Negativa-OR. Es decir, cuando la salida de estas puertas es 1 (3 casos) se enciende el LED rojo, y cuando es 0, se enciende el LED verde. 15 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Puerta NOR La salida es 0 si y sólo si al menos una de las entradas toma el valor 1. Equivale a una puerta OR seguida de una puerta NOT. Realiza la función: y = (x1 + x2 + ... + xn)' = x1' · x2' · ... · xn' Representación gráfica: Tabla de verdad: a b 0 0 1 1 0 1 0 1 NOR / Neg-AND 1 0 0 0 La puerta NOR (OR+NOT) es equivalente a la puerta llamada negativaAND (NOT+AND). El uso de una u otra puerta depende de si nos interesa detectar alguna de las entradas a nivel alto (NOR) o todas a nivel bajo (Negativa-AND). Recordar los teoremas de De Morgan. Ejemplo de aplicación: Monitorizar el tren de aterrizaje de un avión. Este dispone de tres mecanismos: rueda delantera y ruedas en las dos alas. Queremos que se encienda una luz verde si, tras pulsar el interruptor de "bajar el tren de aterrizaje", los tres mecanismos está correctamente extendidos, y una luz roja si alguno de ellos ha fallado. Cuando uno de los mecanismos se extiende, el sensor genera una corriente a nivel bajo; cuando se retrae, genera una corriente a nivel alto. El circuito sólo se alimentará al pulsar el botón de "bajar el tren de aterrizaje". Las tres señales serán las entradas de dos puertas lógicas, una NOR, que encenderá el LED Rojo, y una Negativa-AND que encenderá el LED Verde Realmente son dos puertas NOR, sólo que una de ellas funciona como una puerta Negativa-AND, para detectar un nivel bajo de los sensores (extendidos). Cuando los tres sensores están a nivel bajo (extendidos), la puerta Negativa-AND tiene como salida un nivel alto, que enciende el LED verde (conectado a GND). Si alguno de los tres sensores está nivel alto (retraidos), la puerta NOR tiene salida a nivel bajo, que enciende el LED rojo (conectado a +V). Es decir, cuando la salida de estas puertas es 0 (3 casos) se enciende el LED rojo, y cuando es 1, se enciende el LED verde. 16 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Puerta XOR (OR-Exclusiva) Una puerta XOR de 2 variables de entrada es tal que la salida toma el valor 1 cuando las dos entradas son diferentes, y toma el valor 0 cuando son iguales. Sólo tiene 2 entradas. Se representa por el símbolo ⊕. Representación gráfica: Tabla de verdad: a b XOR 0 0 1 1 0 1 0 1 0 1 1 0 La función se expresa en forma canónica como: y = (x1' · x2) + (x1 · x2') = (x1 + x2) · (x1' + x2') La definición para más de 2 entradas es compleja, pero puede obtenerse la expresión de la función en forma canónica fácilmente, sabiendo que la función OR-exclusiva tiene la propiedad asociativa: y = x1 ⊕ x2 ⊕ ... ⊕ xn = (((x1 ⊕ x2) ⊕ x3) ⊕ ... ⊕ xn) Esta puerta se utiliza bastante en muchos circuitos, como los generadores de paridad. Ejemplo de aplicación: Suma de dos bits sin acarreo (semisuma). Puerta XNOR (NOR-exclusiva) Equivale a una puerta OR-exclusiva seguida de una puerta NOT, por tanto, también tiene sólo 2 entradas. Representación gráfica: Tabla de verdad: a b 0 0 1 1 0 1 0 1 XNOR 1 0 0 1 17 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Implementación de funciones con puertas NAND o NOR Hasta ahora hemos visto que cualquier función lógica podía definirse utilizando solamente las operaciones de complementación, suma y producto (puertas NOT, AND y OR). Vamos a ver ahora que cualquier función lógica (sistema digital) puede implementarse solamente con puertas NAND, o bien con puertas NOR. Por ello, a las puertas NAND y NOR se las conoce como puertas universales. Para ello, es suficiente obtener las puertas básicas, implementándolas con puertas NAND o NOR, es decir, debemos demostrar que es posible derivar las puertas NOT, AND y OR utilizando únicamente puertas NAND, y luego, puertas NOR. Las puertas básicas (NOT, AND y OR) pueden obtenerse con puertas NAND de la siguiente forma: Puerta Función básica f = x’ = (x · x) ' NOT f = x’ = (x · 1) ' Esquema ó también (el símbolo de una puerta NAND con una sola sola entrada no es válido) AND f = x1 · x2 = (x1 · x2) '' (complementando dos veces) OR f = x1 + x2 = (x1 + x2) '' = (x1' · x2') ' (complementando dos veces y aplicando el teorema de De Morgan) Este procedimiento nos lleva a un número excesivo de puertas, pudiéndose simplificar a continuación el circuito. De todas formas, si se quiere implementar una función con puertas NAND o NOR, lo más inmediato es modificar la expresión algebraica de la función mediante los teoremas de De Morgan. 18 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Ejemplo: Como ejemplo, vamos a implementar con puertas NAND y NOR una función expresada en forma de suma de productos (F1) y otra expresada en forma de productos de sumas (F2): F1 = (a · b · c) + (a' · b · c') + (a' · b' · c') F2 = (a + b + c)' ' · (a' + b + c)' ' · (a + b' + c')' ' Puertas NAND (I) Sumas de productos F1 = (a · b · c) + (a' · b · c') + (a' · b' · c') = = ( (a · b · c) + (a' · b · c') + (a' · b' · c') ) ' ' = = ( (a · b · c)' · (a' · b · c')' · (a' · b' · c')' ) ' Lo que hemos hecho es complementar dos veces las función entera, con lo cual la función sigue siendo equivalente. A continuación, aplicamos el teorema de De Morgan, que convierte el complemento de una suma en el producto de los complementos. Así obtenemos una expresión en la que sólo tenemos productos seguidos de negaciones (NAND). (II) Productos de sumas F2 = (a + b + c)' ' · (a' + b + c)' ' · (a + b' + c')' ' = = (a' · b' · c')' · (a · b' · c')' · (a · b' · c')' En este caso simplemente hemos aplicado el teorema de De Morgan a cada uno de los términos. Puertas NOR (I) Sumas de productos F1 = (a · b · c) + (a' · b · c') + (a' · b' · c') = = (a · b · c)' ' + (a' · b · c')' ' + (a' · b' · c')' ' = = (a' + b' + c') ' + (a + b' + c) ' + (a + b + c) ' Hemos complementado dos veces cada uno de los sumandos, y luego aplicamos De Morgan para transformar los productos en suma de negaciones. (II) Productos de sumas F2 = (a + b + c)' ' · (a' + b + c)' ' · (a + b' + c')' ' = = ( (a + b + c)' ' · (a' + b + c)' ' · (a + b' + c')' ' )' ' = = ( (a + b + c)' ' ' + (a' + b + c)' ' ' + (a + b' + c')' ' ') ' = = ( (a + b + c)' + (a' + b + c)' + (a + b' + c')' ) ' 19 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas 3.4. Métodos de simplificación de funciones Hemos visto como dos funciones con expresiones algebraicas diferentes eran equivalentes. Sin embargo, existen numerosas funciones con expresiones diferentes equivalentes a dichas funciones. De entre ellas, habrá algunas que poseerán un número menor de productos y sumas. Debemos buscar la más sencilla, para simplificar procesos posteriores como el de diseñar un circuito lógico para dicha función. El proceso de simplificación de funciones lógicas consiste en pasar de una expresión algebraica a otra equivalente con el menor número posible de sumas y productos. 3.4.1 Simplificación mediante propiedades del álgebra de Boole. Este método requiere un profundo conocimiento del álgebra booleana y una considerable experiencia en su aplicación. Las propiedades más utilizadas para la simplificación de funciones son: • Distributiva: + respecto ·: a + (b·c) = (a + b) · (a + c) · respecto +: a · (b+c) = (a · b) + (a · c) ∀ a,b,c ∈ B • ∀ a ∈ B, ∃ ! a' ∈ B tal que: a + a’ = 1 a · a’ = 0 • Ley de absorción: a + (a·b) = a a · (a+b) = a • Teoremas de De Morgan Ejemplos 1. F = (a·b'·c'·d) + (a·b'·c'·d') Aplicamos la propiedad distributiva: (a·b'·c'·d) + (a·b'·c'·d') = a·b'·c' · (d+d') = a ·b'·c' · 1 = a·b'·c' De esta forma hemos reducido dos sumandos de 4 variables a uno solo de tres variables. 20 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas 2. F = (a+b'+c'+d) · (a+b'+c'+d') Podemos aplicar las mismas propiedades que antes, en su versión dual. (a+b'+c'+d) · (a+b'+c'+d') = (a+b'+c') + (d · d') = = (a+b'+c') + 0 = (a+b'+c') 3. F = a·b + a·(b+c) + b·(b+c) Comenzamos aplicando la propiedad distributiva. a·b + a ·(b+c) + b·(b+c) = a·b + (a·b + a·c) + (b·b + b·c) = = a·b + a ·c + b + b·c = a·b + a·c + b = a·c + b Hemos terminado aplicando dos veces la propiedad 10. 4. Función F1 del ejemplo anterior F1 = (a' · b · c') + (a' · b · c) + (a · b · c') + (a · b · c) = = (a' · b) · (c' + c) + (a · b) · (c' + c) = = (a' · b) · 1 + (a · b) · 1 = (a' · b) + (a · b) = = (a' + a) · b = 1 · b = b 5. Función F2 del ejemplo anterior F2 = (a + b + c) · (a + b + c') · (a' + b + c) · (a' + b + c') = = (a + b + (c' · c)) · (a' + b + (c · c')) = = (a + b + 0) · (a' + b + 0) = (a + b) · (a' + b) = = (a · a') + b = 0 + b = b Podemos comprobar que en los dos últimos ejemplos hemos llegado a la misma expresión simplificada. Anteriormente habíamos visto que ambas expresiones eran equivalentes. De este ejemplo no debe sacarse la conclusión de que una expresión en suma de productos y otra equivalente como producto de sumas, tras simplificar, conducen a la misma expresión. Esto, en general, no es cierto. El método de simplificación algebraica se utiliza poco, pues tiene varios inconvenientes: • No es sistemático (requiere ingenio y destreza). • En una expresión compleja, es difícil detectar todas las posibles simplificaciones. • En la mayoría de los diseños, una función se define por su tabla de verdad, debiendo obtener la expresión algebraica para poder simplificarla. 21 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas 3.4.2 Mediante tablas de Karnaugh Un mapa de Karnaugh es una forma de presentar la tabla de verdad de tal manera que la disposición de las combinaciones de valores es particularmente útil, de tal forma que la simplificación de una determinada expresión consiste en agrupar adecuadamente las celdas. La forma de la tabla dependerá del número de variables independientes con las que estemos trabajando. Los mapas de de Karnaugh pueden utilizarse para expresiones de hasta 5 variables. En el caso de tener más de 5 variables, tendríamos que recurrir a otro método que no vamos a ver, llamado método de Quine-McClusky. El número de celdas de un mapa de Karnaugh es igual al número total de posibles combinaciones de las variables de entrada, al igual que el número de filas de una tabla de verdad: 2 n. Una sola variable (a): Sólo habrá dos símbolos de entrada: 1 y 0. La tabla de Karnaugh tendrá dos casillas, en donde el 0 indica el valor de 0 de entrada y el 1 indica el valor 1 de entrada. Para el proceso de simplificación que veremos a continuación, conviene numerar las casillas según un criterio, aunque no es obligatorio. Para ello pondremos un índice en la esquina superior derecha, comenzando desde el 0. a 0 0 a' 1 1 a Puesto que esta tabla contiene todos los posibles valores de entrada, cualquier función de una variable puede representarse en este diagrama, asignando a cada casilla el valor que toma la función para el valor de la variable de entrada indicada. Por ejemplo, si la función es F(a) = a' tendremos la tabla: a 0 1 1 0 22 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Dos variables (a,b): Ahora la tabla de Karnaugh debe contemplar las cuatro posibles combinaciones de las variables: (0,0), (0,1), (1,0), (1,1). a\b 0 1 0 0 1 a'·b' a'·b 2 1 3 a·b' a·b El valor de una determinada celda es el valor binario de las dos variables a y b, comenzando por la parte izquierda y luego la parte superior. Sea la función F(a,b) = a + b. La representaremos del siguiente modo. a\b 0 1 0 0 1 1 1 1 Tres variables (a,b,c): Se puede representar de forma horizontal o vertical. En este caso y en los restantes (con más variables), la forma de numerar las casillas depende de la combinación que represente una determinada columna o fila, y para etiquetar una determinada columna o fila hay que realizarlo de tal forma que el cambio de una combinación a la siguiente sólo varíe un bit. a \ bc 00 01 0 0 a'·b'·c' 1 a'·b'·c 4 1 a·b'·c' 11 3 a'·b·c 5 a·b'·c 10 2 a'·b·c' 7 a·b·c 6 a·b·c' El código cíclico empleado para las combinaciones de filas y columnas es algo importante. Como resultado de este código, las casillas que tienen en común un lado corresponden a combinaciones que difieren en el valor de una 23 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas variable y se dice que son adyacentes; las casillas que tocan diagonalmente alguna de sus esquinas no son adyacentes. Las casillas adyacentes son clave en el proceso de simplificación. La adyacencia se define por un cambio de una única variable. Las celdas que difieren en una única variable son adyacentes. Las celdas cuyo valor difiere en más de una variable no son adyacentes. En la determinación de casillas adyacentes es necesario, para el caso de tres variables, considerar el diagrama de Karnaugh como una superficie cilíndrica en que los lados izquierdo y derecho están unidos. Siendo así, la celda 0 es contigüa a 2, y la celda 4 es contigua a 6. Cuatro variables (a,b,c,d): La tabla será, de nuevo, cíclica, donde los lados izquierdo y derecho están unidos, y de la misma forma, el superior e inferior. Las variables a y b se encuentran en la parte izquierda, mientras que las variables c y d en la parte superior. El valor de una determinada celda es el valor binario de a y b en la parte izquierda de la misma fila, combinado con los valores binarios de c y d en la parte superior de la misma columna. ab \ cd 00 01 0 00 11 1 10 3 2 a'·b'·c'·d' 4 5 7 6 01 12 13 15 14 11 8 10 9 11 10 a·b'·c·d' Dos celdas son adyacentes si sólo cambia un dígito, aunque no lo sean físicamente. Son adyacentes de extremo a extremo. Por ejemplo, son adyacentes los siguientes pares de celdas: 0-8, 0-2, 1-9, 3-11, 2-10, 12-14, 8-10, 4-6 24 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Cinco variables (a,b,c,d,e): Al igual que en el caso de 4 variables, se pueden solapar las partes laterales. Aquí se pueden solapar las partes extremas: laterales izquierda y derecha, y superior e inferior. Además, en este caso tenemos un eje central que actúa de espejo, de tal forma que la celda 3 es adyacente con la celda 7. Para comprobarlo, se ven las combinaciones y se observa que sólo cambia un bit. ab \ cde 00 000 001 011 010 110 111 101 100 0 1 3 2 6 7 5 4 01 8 9 11 10 14 15 13 12 11 24 25 27 26 30 31 29 28 10 16 17 19 18 22 23 21 20 En definitiva, podemos sacar las siguientes conclusiones: • Las tablas consideradas establecen una correspondencia biunívoca entre los valores de las variables de la función y el conjunto de casillas del diagrama de Karnaugh. • Cada combinación de valores de las variables representa un término canónico (producto o suma), es decir, existe también una correspondencia entre el conjunto de los términos canónicos y el conjunto de las casillas de la tabla de Karnaugh. Por ejemplo, para cuatro variables, la combinación (0,0,0,0) representa: Ø el producto canónico: Ø la suma canónica: • a' · b' · c' · d' (de forma directa) a + b + c + d (de forma complementada) Las celdas que tienen un lado común son adyacentes, y corresponden a términos canónicos que difieren en sólo el valor de una de las variables. 25 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Construcción de una tabla de Karnaugh Podemos construir una tabla de Karnaugh desde la expresión lógica (suma de productos o producto de sumas), o bien, desde una tabla de verdad. Vamos a explicar todos estos casos basándonos en el siguiente ejemplo que ya vimos anteriormente. Sea la función F definida por la tabla de verdad siguiente: 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 0 Mintermus (m) Maxtermus (M) M0 = a+b+c M1 = a+b+c' M2 = a+b'+c m3 = a'·b·c M4 = a'+b+c m5 = a·b'·c m6 = a·b·c' M7 = a'+b'+c' Valor 0 = 000 1 = 001 2 = 010 3 = 011 4 = 100 5 = 101 6 = 110 7 = 111 Por tanto, las expresiones lógicas equivalentes "suma de productos" y "producto de sumas" y compactas serían: F = ∑ (3,5,6) = (a'·b·c) + (a·b'·c) + (a·b·c') F = Π (0,1,2,4,7) = (a+b+c) · (a+b+c') · (a+b'+c) · (a'+b+c) · (a'+b'+c') q Desde la expresión lógica La forma de construcción de la tabla de Karnaugh depende de la forma de la expresión que tengamos (suma de productos o producto de sumas). En ambos casos, la expresión debe estar expresada en forma canónica, es decir, todos sus términos son canónicos (contienen todas las variables). Podemos ver también la forma compacta que representa cada caso, poniendo entre paréntesis los números de las combinaciones de que hacen cierta la expresión lógica. Veremos algún ejemplo en el siguiente punto. Dada una función con "n" variables, la construcción de la tabla de Karnaugh correspondiente se efectúa indicando mediante un "1" o un "0" las celdas que corresponden a términos canónicos que forman parte de la función, y dejando en blanco las casillas correspondientes a los términos que no forman parte de la función. Partiendo de la expresión en su forma canónica, procedemos como sigue. 26 Estructura de computadores q Tema 3: Representación y minimización de funciones lógicas Desde la expresión "suma de productos": Introduciremos un "1" en el mapa de Karnaugh por cada término producto (mintermus) de la expresión. Consideramos los valores binarios de las variables del término de forma directa (sin complementar). En las casillas correspondientes a dichas combinaciones colocaremos 1's, pues consideramos los casos en los que la función es cierta; y para que esto ocurra, por lo menos uno de los términos debe ser cierto (es una suma), y para que un término (producto) sea cierto, todas sus variables deben ser ciertas. Siguiendo con el ejemplo, la expresión "suma de productos" es: F = ∑ (3,5,6) ó también F = (a'·b·c) + (a·b'·c) + (a·b·c') ==> 011 + 101 + 110 (directos) Vamos a construir la tabla de Karnaugh: a\bc 00 01 11 0 1 4 5 2 3 1 0 1 10 7 1 6 1 Podemos comprobar que hemos colocado un "1" en las casillas correspondientes a las combinaciones indicadas por los términos canónicos de la función compacta. El resto de casillas podemos poner "0" ó dejarlas en blanco. Otro ejemplo: F = a'·b'·c' + a'·b'·c + a·b·c' + a ·b'·c' 000 001 110 100 a \ bc 00 01 0 1 1 1 1 11 10 1 27 Estructura de computadores q Tema 3: Representación y minimización de funciones lógicas Desde la expresión "producto de sumas": En este caso introduciremos un "0" en el mapa de Karnaugh por cada término suma (maxtermus) de la expresión. Aquí, los valores binarios de las variables de los términos van complementados, ya que estamos considerando los valores que hacen que la función sea falsa (0); y para que esto ocurra, basta con que uno de los términos sea falso (es un producto), y para que un término (suma) sea falso, basta con que una de sus variables sea falsa. Consideramos los valores binarios que hacen falso cada término. Siguiendo con el ejemplo, la expresión "producto de sumas" es: F = Π (0,1,2,4,7) ó también F = (a+b+c) · (a+b+c') · (a+b'+c) · (a'+b+c) · (a'+b'+c') ==> ==> 000 · 001 · 010 · 100 · 111 (complementados) La tabla de Karnaugh del ejemplo ahora será: a \ bc 00 01 0 0 0 10 3 5 7 0 4 1 11 1 0 2 0 6 0 Podemos comprobar que hemos colocado un "0" en las casillas correspondientes a las combinaciones indicadas por los términos canónicos de la función compacta: F = Π (0,1,2,4,7). El resto de casillas podemos poner "1" ó dejarlas en blanco. Otro ejemplo: F = (a+b+c) · (a+b'+c) · (a'+b'+c) · (a'+b+c') 000 010 110 101 a \ bc 00 0 0 1 01 11 10 0 0 0 28 Estructura de computadores q Tema 3: Representación y minimización de funciones lógicas Desde la tabla de verdad: Recordemos que una tabla de verdad proporciona la salida de una expresión lógica para todas las posibles combinaciones de las variables de entrada. Lo único que tenemos que hacer es trasladar los "1" o los "0" de la columna de salida (F) de la tabla de verdad directamente al mapa de Karnaugh, a las celdas correspondientes a los valores asociados de las combinaciones de variables de entrada. Es el caso más sencillo, pues trabajamos de forma directa. Podemos implementar por "1" (considerando los 1's) o por "0" (considerando los 0's). Lo más rápido es considerar aquel que tenga menos ocurrencias, rellenar la tabla de Karnaugh para dicho valor y finalmente rellenar el resto de casillas con el otro valor o dejarlas en blanco. Para el ejemplo tenemos aquí los dos casos: a\bc 00 01 0 11 1 4 5 1 00 2 1 0 1 a\bc 10 3 0 0 1 0 6 7 1 01 0 11 1 10 3 0 4 2 0 5 7 0 6 Implementando por “1”: considerando los valores que hacen que la función sea cierta (1). El resto de casillas podemos dejarlas en blanco o poner "0". Implementando por “0”, considerando los valores que hacen que la función sea falsa (0). El resto de casillas podemos dejarlas en blanco o poner "1". NOTA: Independientemente de como hayamos construido la tabla de Karnaugh (implementando por "1" o por "0"), después, para el proceso de simplificación, podremos obtener la función simplificada como suma de productos (implementando por "1") o como producto de sumas (implementando por "0"). 29 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Mecanismo de simplificación Si dos celdas adyacentes están marcadas con 1, tenemos dos términos canónicos que difieren sólo en una variable, que además, dicha variable aparecerá como directa (valor 1) en un término canónico y como complementada (valor 0) en el otro término. Podemos agrupar las dos celdas adyacentes produciendo un único término canónico en que falta justo esa variable en que diferían. Vamos a ver el mecanismo de simplificación: 1. Construir la tabla de Karnaugh adecuada según el número de variables, indicando con un "1" y con "0" las celdas que correspondan. 2. Seleccionar la forma final que tendrá la función simplificada: suma de productos (implementando por "1" ) o producto de sumas (implementando por "0"). En los siguientes pasos suponemos que implementamos por "1". 3. Agrupar celdas adyacentes marcadas con "1". Primero, grupos de 2 unos que no pueden formar grupos de 4. Luego formar grupos de 4 unos que no pueden formar un grupo de 8, etc. Interesa buscar los grupos más numerosos, para obtener el menor número de grupos posible. Cada celda de un grupo tiene que ser adyacente a una o más celdas del mismo grupo, pero no todas las celdas del grupo tienen que ser adyacentes entre si. Además un "1" puede estar en varios grupos a la vez. 4. Tomar todas las celdas con "1" que no se pueden agrupar con ninguna otra como grupos de un "1" (aislados). 5. Cuando se hayan considerado todos los "1" se ha finalizado el proceso. Los grupos de "1" conseguidos y los "1" aislados son los términos que expresarán la función lógica en una forma irreducible. Este proceso de simplificación no es único, pudiéndose obtener por tanto varias formas irreducibles de la misma función, dependiendo de las distintas agrupaciones que podemos realizar. Una vez realizadas las agrupaciones, para obtener la expresión de la función lógica irreducible, realmente lo que haremos es utilizar de forma sistemática las propiedades: (a · b · c) + (a' · b · c) = (a + a') · b · c = 1 · b · c = b · c (a + b + c) · (a' + b + c) = (a · a') + b + c = 0 + b + c = b + c Es decir, las variables que aparecen complementadas y sin complementar dentro del mismo grupo se eliminan (variables contradictorias). NOTA: Siempre que un mapa de Karnaugh sea un tablero de ajedrez en el que la casilla de la esquina inferior derecha sea un 0, la solución es la ORExclusiva (XOR) de las variables (F = a·b' + a'·b = a ⊕ b). Si dicha casilla es un 1, la solución es la OR-Exclusiva negada (XNOR) de las variables (F = a·b + a'·b' = (a ⊕ b)'. 30 Estructura de computadores Tema 3: Representación y minimización de funciones lógicas Ejemplo: Sea la función F vista anteriormente. Como es suma de productos implementamos por “1” (de forma directa) para construir la tabla de Karnaugh: F = a'·b'·c' + a'·b'·c + a·b·c' + a ·b'·c' 000 001 110 100 Hacemos las agrupaciones, sobre su tabla de Karnaugh. Como queremos obtener una suma de productos, implementamos por “1”: a \ bc 00 01 0 1 1 1 1 11 10 1 La expresión irreducible será: F = (a’ · b') + (a · c') Ejemplo: Sea la siguiente tabla de Karnaugh obtenida directamente desde la tabla de verdad siguiente, implementando por “1” o por "0" (no importa): a b c F 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 • F = Σ (3,5,6) Su tabla de Karnaugh será: a \ bc 00 01 0 0 0 1 0 11 1 0 4 1 5 1 2 0 7 0 Implementando por "1" (suma de productos): No podemos asociar ningún grupo de "1" que sea de 2, 4 u 8. Por tanto, la función simplificada será: F = (a'·b·c) + (a·b'·c) + (a·b·c') Casilla 6 Casilla 5 Casilla 3 • 10 3 Implementando por "0" (producto de sumas): No tenemos grupos de 8 ni de 4 "0". Grupos de 2 "0": casillas 0-1, 0-4, 0-2 "0" aislados: casilla 7 31 6 1 Estructura de computadores Tema 3 La función simplificada será: F = (a+b) · (b+c) · (a+c) · (a'+b'+c') Casilla 7 Grupo 0-2 Grupo 0-4 Grupo 0-1 Ejemplo: Sea la función F(a,b,c,d) = ∑ (0,4,5,7,8,9,13,15), construimos su tabla de Karnaugh (implementando por “1”) y vamos a obtener la función simplificada en forma de suma de productos (implementando por "1"). ab \ cd 00 01 00 11 10 1 3 2 4 5 7 6 15 14 11 10 1 1 1 12 11 10 01 0 1 13 1 1 8 1 9 1 Agrupando y simplificando según el mecanismo obtendríamos: F = (b·d) + (a'·c'·d') + (a'·b'·c') Grupo 2: 8,9 Grupo 2: 0,4 Grupo 4: 5,7,13,15 Dependiendo de las agrupaciones que hagamos, podríamos haber obtenido otras formas irreducibles de la función, pero no todas serán la mínima. Ejemplo: Sea la función F(a,b,c,d) = ∑ (5,6,9,10), construimos su tabla de Karnaugh (implementando por “1”) y vamos a obtener la función simplificada como producto de sumas (implementando por "0"). ab \ cd 00 01 0 00 0 01 0 11 0 10 0 11 1 0 4 0 5 1 12 7 13 6 1 15 0 9 1 2 0 0 0 8 10 3 14 0 11 0 10 1 32 Estructura de computadores Tema 3 Si implementásemos por "1" (suma de productos), vemos que no podemos agrupar, pues no hay celdas con "1" adyacentes. Esto quiere decir que no se puede reducir, y su forma mínima como suma de productos es: F = (a'·b·c'·d) + (a'·b·c·d') + (a·b'·c'·d) + (a·b'·c·d') Agrupando por "0" y simplificando según el mecanismo obtendríamos la función como producto de sumas: F = (c+d) · (c'+d') · (a'+b') · (a+b) Grupo 4: 0,1,3,2 Grupo 4: 12,13,15,14 Grupo 4: 3,7,15,11 Grupo 4: 0,4,12,8 Esta expresión contiene sólo 8 letras, en lugar de las 16 de la forma suma de productos y es, por tanto, mínima. Como conclusión, una función lógica o booleana puede representarse y simplificarse, tanto en su expresión como suma de productos, como en la de producto de sumas, mediante una tabla de Karnaugh. Indiferencias en el mapa de Karnaugh Algunas veces se producen situaciones en las que algunas combinaciones de las variables de entrada no están permitidas o no están determinadas para un problema concreto, ó bien, no nos importa la salida para dichas combinaciones. Estos casos los llamaremos indiferencias, ó términos indiferentes. Los representaremos por 'x'. Esto significa que a estos términos les podemos asignar "1" ó "0". Hemos visto que las funciones lógicas se pueden expresar de forma compacta como suma de productos canónicos o producto de sumas canónicas. En el primer caso considerábamos los casos en los que se cumple la función ("1"), y en el segundo, los casos en los que la función es falsa ("0"). Ahora tenemos un tercer valor que nos puede aparecer en la función de salida. Para representar una función en forma compacta que tiene indiferencias en la salida hacemos lo siguiente: Forma de la expresión Forma compacta suma de productos F = ∑ ( Combinaciones ciertas ) + d ( Combinaciones indiferentes ) producto de sumas F = Π ( Combinaciones falsas ) · d ( Combinaciones indiferentes ) donde "d(Combinaciones indiferentes)" representa una lista de las combinaciones indiferentes de la función. En el caso de la "suma de productos", las combinaciones van de forma directa. En el caso del "producto de sumas", las combinaciones van complementadas, incluso las indiferentes. 33 Estructura de computadores Tema 3 Ejemplo Como ejemplo vamos a analizar el código BCD. Hay muchas formas de representar datos numéricos en forma binaria. Una puede ser escribir el número en base 2, que se denomina codificación binaria directa. Otra forma es codificar los números decimales dígito por dígito. Esta codificación se denomina BCD (Binary-Coded-Decimal). Hay varios tipos de códigos BCD, pero en general, se trata simplemente de sustituir cada dígito decimal (0-9) por su equivalente binario. En BCD, al igual que en la codificación binaria directa, necesitamos 4 bits. Por tanto, el número de combinaciones posibles es 24 = 16. Sin embargo, para el código BCD sólo utilizamos 10. Las 6 restantes combinaciones binarias no se pueden dar en esta codificación. Por ejemplo, para codificar el número decimal 469 en BCD: 4 6 9 10 = 0100 0110 1001 2-BCD Vamos a diseñar un circuito que teniendo como código de entrada BCD, encienda un foco de luz cuando tengamos la combinación BCD correspondiente al 9 decimal. Para ello, lo primero que hacemos es construir su tabla de verdad. a b c d F a 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 x x 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 1 x x x x b F c 9 d F = Σ(9) + d(10,11,12,13,14,15) Su salida nos es indiferente. No se pueden dar en el código BCD. 34 Estructura de computadores Tema 3 Implementando por “1”: Haciendo uso de las indiferencias vamos a simplificar aun más la función. Para ello construimos la tabla de Karnaugh, implementando por “1” (es lo más rápido, pues sólo tenemos una combinación): Sin utilizar términos indiferentes: cd ab 00 01 11 10 00 01 11 10 0 0 0 0 0 0 0 0 x x x x 0 1 x x a · b' · c' · d Sólo tenemos un "1" aislado (no podemos agrupar nada), por tanto, la función no se puede simplificar, es decir, obtendríamos que: F = a·b'·c'·d Utilizando términos indiferentes: Los términos indiferentes (x) pueden utilizarse para aprovechar mejor el método del mapa de Karnaugh, por que les podemos dar el valor que nos interese para formar los grupos tan grandes como sea posible, pues cuanto más grande sea el grupo, más simple será el término resultante. Utilizando los términos indiferentes como si fueran "1" obtenemos una función más sencilla. cd ab 00 01 11 10 00 01 11 10 0 0 0 0 0 0 0 0 x x x x 0 1 x x a·d NOTA: debemos agrupar todos los 1's o 0's, utilizando "x", pero todas las casillas con "x" no tienen por qué incluirse en un grupo. Podemos realizar un grupo de 4 "1", con lo cual: F=a·d 35 Estructura de computadores Tema 3 Implementando por “0” Construimos la tabla de Karnaugh del mismo modo que antes, es decir, implementando por "1" ya que sólo tenemos una combinación, pero ahora implementaremos por "0" a la hora de la simplificación (agruparemos "0"). Pondremos las condiciones indiferentes donde correspondan ("x"), y en el resto de casillas pondremos "0". Sin utilizar términos indiferentes: cd ab 00 01 11 10 00 01 11 10 0 0 0 0 0 0 0 0 x x x x 0 1 x x a a' + b + c + d La expresión irreducible que obtenemos es: F = a · (a'+b+c+d) Utilizando términos indiferentes: cd ab 00 01 11 10 00 01 11 10 0 0 0 0 0 0 0 0 x x x x 0 1 x x a d Tenemos dos grupos de 8. Por tanto, la expresión irreducible es: F = a · d Podemos observar que obtenemos la misma expresión irreducible, al implementar por “1” y por “0” cuando tenemos en cuenta las indiferencias, aunque esto, en general, no es así. Como vemos, las expresiones se simplifican mucho más, y, por tanto, la construcción del circuito. El inconveniente de estos circuitos es que si estos estados indiferentes apareciesen, la reacción del circuito sería imprevisible. 36 Estructura de computadores Tema 3 3.5. Funciones incompletas Funciones incompletas Las funciones incompletas o incompletamente definidas son aquellas que no tienen su salida definida para alguna de las combinaciones de entrada. Suponemos que las salidas para dichas combinaciones de entradas es "indiferente". Como hemos visto, estas combinaciones se utilizan para simplificar las funciones mediante mapas de Karnaugh. Conjuntos completos Un conjunto de funciones es completo en un álgebra de Boole si y sólo si cualquier función booleana puede implementarse con dichas funciones. Ejemplos de conjuntos completos: • { AND, OR, NOT } • { OR, NOT } ≡ { NOR } • { AND, NOT } ≡ { NAND } Ejemplos de conjuntos no completos: • { AND, OR } Nivel de un circuito Dado un circuito con una serie de puertas lógicas, puesto que por cada una de estas puertas que la señal eléctrica atraviesa se produce un retraso (tiempo de propagación), es importante especificar el número de puertas que atraviesa la información de entrada hasta llegar a la salida. Una puerta se considera de nivel i, donde i > 1, si y sólo si: a) no recibe ninguna entrada de puertas de nivel j, con j > i. b) tiene al menos una entrada procedente de una puerta de nivel i-1. Un circuito lógico es de nivel i, si al menos contiene una puerta de nivel i, y no contiene ninguna puerta de nivel j, siendo j > i. Dicho de otro modo, el nivel de un circuito lógico será el nivel máximo de las puertas. El coste económico de un circuito dependerá del número de puertas. La velocidad de un circuito dependerá del nivel de dicho circuito. Hemos visto como podemos simplificar el diseño de un circuito, reduciendo el número de puertas y, por tanto su coste, pero en ocasiones, a costa de que el circuito tenga un nivel mayor, es decir, sea más lento. 37 Estructura de computadores Tema 3 Ejemplo Sea la función F = (a' + b + c') · (b + d) · (c' + b · a) Vamos a implementarla con puertas NAND y NOR. Posteriormente, vamos a simplificarla, volviendo a expresarla con puertas NAND y NOR. Con esto podremos averiguar el número de puertas y nivel de los circuitos obtenidos en cada caso. Puertas NAND F = (a' + b + c') · (b + d) · (c' + b · a) = = (a' + b + c')' ' · (b + d)' ' · (c' + b · a)' ' = = (a · b' · c)' · (b' · d')' · (c · (b · a)')' Si dibujamos el circuito, obtendremos un circuito con 8 puertas y de nivel 4. Puertas NOR F = (a' + b + c') · (b + d) · (c' + b · a) = = ( (a' + b + c') · (b + d) · (c' + b · a) ) ' ' = = ((a' + b + c')' + (b + d)' + ( c' + (b · a)'' )' ) ' = = ((a' + b + c')' + (b + d)' + ( c' + (b' + a')' )' ) ' Si dibujamos el circuito, obtendremos un circuito con 8 puertas y de nivel 4, igual que en el caso anterior (puertas NAND). Simplificación Para simplificar la función mediante tablas de Karnaugh debemos expresar la función en forma canónica, esto es, todos sus términos deben ser canónicos: F = (a' + b + c') · (b + d) · (c' + b · a) = x · y · z x = (a' + b + c') + (d · d’) = (a’+b+c’+d) · (a’+b+c’+d’) y = (b + d) + (a · a’) = [ (a+b+d) · (a’+b+d) ] + (c · c’) = (a+b+d+c) · (a+b+d+c’) · (a’+b+c+d) · (a’+b+c’+d) z = (c' + (b · a)) + (d · d’) = (a · b + c’ + d) · (a · b + c’ + d’) Como la función F es un producto de sumas, implementamos por “0”, es decir, las combinaciones de cada uno de los términos que nos indican las casillas en la tabla de Karnaugh van complementadas, es decir, consideramos los casos en los que la función F es falsa, que lo será cuando lo sea cualquiera de sus términos. 38 Estructura de computadores Tema 3 Los términos serán falsos para cualquiera de las combinaciones siguientes: x = 1010, 1011 y = 0000, 0010, 1000, 1010 z = (a·b)10, (a·b)11 ab\cd 00 01 11 10 00 0 (Para que (a·b) sea 0 ==> a=0 ó b=0) 01 1 11 3 0 4 10 2 0 5 7 0 6 0 0 12 13 15 14 8 9 11 10 0 0 b+d a+c' ab\cd 00 01 11 0 b+c' 10 00 0 01 1 1 0 4 5 1 12 b · c' 0 1 c' · d 0 14 1 11 1 0 6 15 9 0 0 1 1 10 2 7 13 8 11 3 1 10 0 0 a·b Implementando por “0”: F = (b+d) · (a+c’) · (b+c’) Si ahora transformamos la función irreducible obtenida para utilizar sólo puertas NAND y NOR y dibujamos el circuito equivalente obtenemos: NAND: circuito con 8 puertas y nivel 4 NOR: circuito con 4 puertas y nivel 3 Implementando por “1”: F = (b·c’) + (c’·d) + (a·b) Del mismo modo, si ahora transformamos la función irreducible obtenida para utilizar sólo puertas NAND y NOR y dibujamos el circuito equivalente, en este caso obtenemos: NAND: circuito con 5 puertas y nivel 3 NOR: circuito con 8 puertas y nivel 4 Vemos que hemos obtenido varias expresiones irreducibles. De todas ellas, sólo una será mínima. En este caso, se ha conseguido al implementar por 0 y luego transformar la expresión para utilizar sólo puertas NOR. 39 Estructura de computadores Tema 3 Apéndice A – Circuitos Integrados Circuito Integrado Los circuitos digitales se construyen con circuitos integrados (IC). Un IC es un pequeño cristal semiconductor de silicio, llamado informalmente chip , que tiene los componentes electrónicos de las puertas digitales. Las puertas se interconectan en el chip para formar el IC. El chip se monta en un contenedor de cerámica o plástico y se sueldan sus conexiones (entradas y salidas) a las patillas externas para formar el IC. La cantidad de patillas puede variar, dependiendo del tamaño del IC, desde 14 hasta varios cientos. Cada IC tiene una etiqueta impresa en la superficie exterior que lo identifica mediante una designación numérica. Con esta referencia, podremos consultar sus características en los catálogos del fabricante. Niveles de integración A medida que avanza la tecnología de los IC, ha aumentado considerablemente la cantidad de puertas que pueden colocarse en un único chip de silicio. Dependiendo de la escala de integración de los IC tendremos más o menos puertas. SSI (Small-scale integrated): menos de 10 puertas. MSI (Medium-scale integrated): de 10 a 100 puertas. LSI (Large-scale integrated): de 100 a miles de puertas. VLSI (Very large-scale integrated): varios miles o millones de puertas. Familias lógicas digitales Los IC digitales se clasifican no sólo por su operación lógica, sino también por la tecnología de circuito a la que pertencen. La tecnología se conoce como familia lógica digital. Cada una de las familias tiene su propio circuito electrónico básico (NAND, NOR, NOT), sobre el que se desarrollan circuitos digitales y funciones más complejos. Los componentes electrónicos utilizados en la construcción del circuito básico suelen dar su nombre a la tecnología. 40 Estructura de computadores Tema 3 Las familias lógicas de circuitos integrados más importantes son: • • • • • • • RTL (resistor-transistor logic) DTL (diode-transistor logic) TTL (transistor-transistor logic) ECL (emitter-coupled logic) MOS (metal-oxide semiconductor) CMOS (complementary metal-oxide semiconductor) BiCMOS (bipolar complementary metal-oxide semiconductor) Parámetros de las familias lógicas Para analizar las características de las distintas familias lógicas digitales estudiamos unos parámetros de las puertas básicas de cada familia: • • • • • • • Márgenes de tensión de entrada y salida: estos valores determinan el intervalo de cada uno de los niveles lógicos ("1"/H y "0"/L) de la familia. Márgenes de corriente de entrada y salida: los valores de tensión anteriores están directamente relacionados con la corriente que entre o salga de las patillas. Convergencia de entrada (fan-in): número de entradas de una puerta. Divergencia de salida (fan-out): nos indica el número de puertas (cargas) que podemos conectar a la salida sin que afecte a su buen funcionamiento. Nos indica el número de “cargas estándar” que soporta la salida; una “carga estándar” es la cantidad mínima de corriente que necesita una entrada de otra puerta. Margen de ruido: es el voltaje externo de ruido máximo superpuesto a una entrada normal sin que afecte a la salida del circuito. Disipación de potencia: es la potencia consumida por una puerta, gran parte de la cual de disipa como calor. Retardo de propagación: es el tiempo necesario para que el cambio de valor de una entrada se propague a la salida. La velocidad de operación está en relación inversa con los retardos de propagación más grandes. Márgenes de tensión de entrada y salida • • • • VIH = mínima tensión que se reconoce en una entrada como nivel alto (H) o "1" lógico. En el caso de un inversor es el valor mínimo de la tensión de entrada que produce un "0" a la salida. VIL = máxima tensión que se reconoce en una entrada como nivel bajo (L) o "0" lógico. En el caso de un inversor es el valor máximo de la tensión de entrada que produce un "1" a la salida. VOH = mínima tensión de la salida de una puerta cuando el nivel es alto (para una corriente de salida especificada). VOL = máxima tensión de la salida de una puerta cuando el nivel es bajo (para una corriente de salida especificada). 41 Estructura de computadores Tema 3 Gráficamente: H H VOH NM H VIH VIL NML VOL L L Entrada Salida La zona rayada representa la zona de incertidumbre entre los dos estados, es decir, aquellos valores que no se reconocen ni como "0" ni como "1". Márgenes de corriente de entrada y salida • • • • IIH = corriente que fluye por una entrada cuando se aplica un voltaje de nivel alto. Para V e = V OH è obtenemos el mínimo valor. IIL = corriente que fluye por una entrada cuando se aplica un voltaje de nivel bajo. Para V e = V OL è obtenemos el mínimo valor. IOH = corriente que fluye por una salida para un voltaje de nivel alto en dicha salida. El valor máximo garantiza una VS >=V OH, con el máximo número de cargas conectadas a la salida. IOL = corriente que fluye por una salida para un voltaje de nivel bajo en dicha salida. El valor máximo garantiza una VS <=V OL, con el máximo número de cargas conectadas a la salida. Divergencia de salida (Fan-out) El fan-out lo podemos calcular a partir de los datos del fabricante como la razón entre la corriente máxima que proporciona la salida de una puerta (puerta excitadora) y la corriente que consumen las entradas conectadas a ella. • Fan-out H = I OH I IH • Fan-outL = I OL I IL Fan-out = min ( Fan-outH, Fan-outL ) 42 Estructura de computadores Tema 3 Márgenes de ruido (NM) En el contexto de circuitos y sistemas digitales significa variaciones transitorias indeseadas de voltajes o corrientes en los nodos del circuito. Si la variación adquiere una magnitud considerable más allá de unos límites (márgenes de ruido), entonces la señal digital queda distorsionada y el circuito puede interpretar un "1" lógico donde debía interpretar un "0" lógico y viceversa, pudiendo incluso dejar la señal en la zona de incertidumbre provocando un mal funcionamiento del sistema. El ruido puede tener diversas causas: 1. Acoples capacitivos e inductivos entre líneas del mismo circuito. 2. Picos de tensión y corriente generados por los circuitos de alimentación. 3. Factores externos: relés, interruptores, motores, señales de radiofrecuencia, etc. En general, los márgenes de ruido son distintos para los estados H y L, y se definen de la siguiente manera (siempre son positivos): • Margen de ruido para el estado alto (NMH): es la máxima cantidad de ruido que puede afectar a una señal en estado alto para que la señal se siga reconociendo como tal a la entrada de una puerta lógica. NM H = | V OH - V IH | • Margen de ruido para el estado bajo (NML): es la máxima cantidad de ruido que puede afectar a una señal en estado bajo para que la señal se siga reconociendo como tal a la entrada de una puerta lógica. NM H = | V IL - V OL | • Margen de ruido (NM): si queremos evitar cualquier tipo de mal funcionamiento por ruido, tanto a nivel alto como a nivel bajo, debemos evitar señales de ruido mayores de lo que nos indique el menor de los dos márgenes: NM = min ( NM H, NML ) Disipación de potencia Se refiere a la disipación de energía que se produce en una puerta que está en estado L un 50% del tiempo y en estado H el otro 50%. Una disipación alta implica, además de un consumo elevado de energía, un aumento de la temperatura de los circuitos. Por tanto, este parámetro deberemos minimizarlo, ya que ello evitará costes adicionales en concepto de refrigeración del circuito. Para estimar el consumo de energía, se calcula la corriente que entrega la fuente de alimentación en los dos estados L y H (corriente media): Pd = ICC · VCC = (ICCH + ICCL / 2) · V CC 43 Estructura de computadores Tema 3 Retardo de propagación El retardo de propagación es el parámetro más importante desde el punto de vista del diseño lógico, ya que en los sistemas digitales modernos resulta de particular interés conocer cual es la velocidad de respuesta de los circuitos. Se definen tres parámetros de retardo de propagación: • Tiempo de propagación “high-low” (tp HL): es el tiempo transcurrido desde que se produce el cambio en la entrada (IN), hasta que la salida (OUT) cambia de nivel alto (“1”) a bajo (“0”), considerando siempre el punto del 50% de las señales de voltaje. • Tiempo de propagación “low-high” (tp LH): es el tiempo transcurrido desde que se produce el cambio en la entrada (IN), hasta que la salida (OUT) cambia de nivel bajo (“0”) a alto (“1”), considerando siempre el punto del 50% de las señales de voltaje. • Retardo de propagación (tpd): es el valor máximo de estos dos retardos, ya que nos interesa conocer el retardo de propagación en el peor caso: tp d = max ( tp HL , tpLH). El motivo de que se produzcan estos retrasos está en que todo circuito real lleva asociadas unas capacidades parásitas que es necesario cargar o descargar en cada transición (capacitancia): Las fuentes de estas capacidades son: 1. los circuitos de entrada, incluyendo todos sus componentes: (resistencias, diodos, transistores), cableado interno, etc. 2. las pistas o cables que unen la salida de una puerta con la entrada de otra puerta. 3. los circuitos de salida, incluyendo transistores de salida, cableado interno, etc. Ejemplo – Retardo de propagación de un inversor IN 50% OUT 50% tpHL tpLH 44 Estructura de computadores Tema 3 Interconexión entre familias Puede que nos interese en alguna ocasión realizar un circuito utilizando IC de distintas familias. La conexión de puertas de distintas familias no es inmediata ya que, al trabajar cada una con distinta tecnología, las características eléctricas varían. Dos familias se dice que son compatibles cuando es posible la interconexión directa de circuitos de dichas familias. Si dos familias no son compatibles, la interconexión no se podrá hacer de forma directa, sino que será necesario colocar un circuito entre ambas (interfaz) que consiga adaptar los niveles eléctricos de tensiones e intensidades (corrientes): diodos, resistencias, adaptadores de nivel, etc. A) Condición sobre las tensiones: Las tensiones de salida de las puertas excitadoras deben estar en el rango de las tensiones de entrada de la puerta de carga. VOHexc > V IHcarga VOLexc < V ILcarga Puerta A (excitadora) VOHexc VIHcarga Salida Puerta B (carga) Entrada VILcarga VOLexc B) Condición sobre las intensidades: La corriente de salida en estado H de la puerta excitadora (IOHexc) debe ser suficiente para activar a la carga (IIHcarga), mientras que la corriente máxima que admite la puerta excitadora en estado L a su salida (IOLexc) debe ser mayor que la corriente de entrada que le suministra la puerta de carga (IILcarga). IOHexc > IIHcarga IOLexc < IILcarga Puerta A (excitadora) Puerta B (carga) IOHexc IIHcarga Salida Entrada IOLexc IILcarga 45