En álgebra booleana , cualquier función booleana puede expresarse en la forma normal disyuntiva canónica ( CDNF ), [ 1 ] la forma canónica de minterms o la suma de productos ( SoP o SOP ) como una disyunción (OR) de minterms. El dual de De Morgan es la forma normal conjuntiva canónica ( CCNF ), la forma canónica de maxterms o el producto de sumas ( PoS o POS ), que es una conjunción (AND) de maxterms. Estas formas pueden ser útiles para la simplificación de funciones booleanas, lo cual es de gran importancia en la optimización de fórmulas booleanas en general y de circuitos digitales en particular.
Otras formas canónicas incluyen la suma completa de implicantes primos o forma canónica de Blake (y su dual), y la forma normal algebraica (también llamada Zhegalkin o Reed-Muller).
Minterms
Para una función booleana devariables, un minterm es un término de producto en el que cada uno de losLas variables aparecen exactamente una vez (ya sea en su forma complementada o no complementada). Por lo tanto, un minterm es una expresión lógica de n variables que emplea únicamente el operador complemento y el operador conjunción ( AND lógico ). Un minterm da un valor verdadero para una sola combinación de las variables de entrada, la cantidad mínima no trivial. Por ejemplo, a b ' c , es verdadero solo cuando a y c son verdaderos y b es falso; la disposición de entrada donde a = 1, b = 0, c = 1 da como resultado 1.
Mintérminos de indexación
Hay 2 n minterms de n variables, ya que una variable en la expresión del minterm puede estar en su forma directa o en su forma complementada; dos opciones por variable. Los minterms a menudo se numeran mediante una codificación binaria del patrón de complementación de las variables, donde las variables se escriben en un orden estándar, generalmente alfabético. Esta convención asigna el valor 1 a la forma directa () y 0 a la forma complementada (); el miniterm es entonces. Por ejemplo, mintermestá numerado 110 2 = 6 10 y se denota.
Forma canónica de Minterm
Dada la tabla de verdad de una función lógica, es posible escribir la función como una "suma de productos" o "suma de minitérminos". Esta es una forma especial de la forma normal disyuntiva . Por ejemplo, si se da la tabla de verdad para el bit de suma aritmética u de la lógica de una posición de bit de un circuito sumador, como una función de x e y de los sumandos y el acarreo de entrada, ci :
Observando que las filas que tienen una salida de 1 son la 2.ª, la 3.ª, la 5.ª y la 8.ª, podemos escribir u como una suma de minitérminos.ySi queremos verificar esto:Evaluado para las 8 combinaciones de las tres variables coincidirá con la tabla.
Maxterms
Para una función booleana de n variablesUn maxterm es un término suma en el que cada una de las n variables aparece exactamente una vez (ya sea en su forma complementada o no complementada). Por lo tanto, un maxterm es una expresión lógica de n variables que emplea solo el operador complemento y el operador disyunción ( OR lógico ). Los maxterms son el dual de la idea de minterm, siguiendo la simetría complementaria de las leyes de De Morgan . En lugar de usar AND y complementos, usamos OR y complementos y procedemos de manera similar. Es evidente que un maxterm da un valor falso para solo una combinación de las variables de entrada, es decir, es verdadero en el número máximo de posibilidades. Por ejemplo, el maxterm a ′ + b + c ′ es falso solo cuando a y c son ambos verdaderos y b es falso; la disposición de entrada donde a = 1, b = 0, c = 1 da como resultado 0.
Indexación de maxitérminos
Hay nuevamente 2 n maxterms de n variables, ya que una variable en la expresión del maxterm puede estar tanto en su forma directa como en su forma complementada; dos opciones por variable. La numeración se elige de manera que el complemento de un minterm sea el maxterm correspondiente. Es decir, a cada maxterm se le asigna un índice basado en la codificación binaria convencional opuesta utilizada para los minterms. La convención del maxterm asigna el valor 0 a la forma directa.y 1 a la forma complementadaPor ejemplo, asignamos el índice 6 al maxterm.(110) y denotemos ese maxterm como M 6 . El complementoes el miniterm, utilizando la ley de De Morgan .
Forma canónica del maxitérmino
Si se nos da una tabla de verdad de una función lógica, es posible escribir la función como un "producto de sumas" o "producto de maxitérminos". Esta es una forma especial de la forma normal conjuntiva . Por ejemplo, si se nos da la tabla de verdad para el bit de acarreo de salida co de la lógica de una posición de bit de un circuito sumador, como una función de x e y de los sumandos y el acarreo de entrada, ci :
Observando que las filas que tienen una salida de 0 son la 1.ª, 2.ª, 3.ª y 5.ª, podemos escribir co como un producto de maxtérminos.ySi queremos verificar esto:
Evaluado para las 8 combinaciones de las tres variables coincidirá con la tabla.
Formularios mínimos de punto de venta y procedimiento operativo estándar
A menudo, la forma canónica de minitérmino es equivalente a una forma SoP más pequeña. Esta forma más pequeña seguiría consistiendo en una suma de términos de producto, pero tendría menos términos de producto y/o términos de producto que contienen menos variables. Por ejemplo, la siguiente función de 3 variables:
tiene la representación canónica de mintermpero tiene una forma SoP equivalenteEn este ejemplo trivial, es obvio quey la forma más pequeña tiene menos términos de producto y menos variables dentro de cada término. Las representaciones SoP mínimas de una función según esta noción de "más pequeña" se denominan formas SoP mínimas . En general, puede haber múltiples formas SoP mínimas, ninguna claramente más pequeña o más grande que otra. [ 2 ] De manera similar, una forma maxterm canónica puede reducirse a varias formas PoS mínimas.
Si bien este ejemplo se simplificó aplicando métodos algebraicos normales [En casos menos evidentes, un método conveniente para encontrar formas PoS/SoP mínimas de una función con hasta cuatro variables es usar un mapa de Karnaugh . El algoritmo de Quine-McCluskey puede resolver problemas ligeramente mayores. El campo de la optimización lógica se desarrolló a partir del problema de encontrar implementaciones óptimas de funciones booleanas, como formas PoS y SoP mínimas.
Ejemplo de aplicación
Las tablas de verdad de ejemplo para minterms y maxterms anteriores son suficientes para establecer la forma canónica para una sola posición de bit en la suma de números binarios, pero no son suficientes para diseñar la lógica digital a menos que su inventario de compuertas incluya AND y OR. Cuando el rendimiento es un problema (como en la computadora de guía del Apolo), es más probable que los componentes disponibles sean NAND y NOR debido a la acción complementaria inherente a la lógica de transistores. Los valores se definen como estados de voltaje, uno cerca de tierra y otro cerca del voltaje de alimentación de CC Vcc , por ejemplo, +5 VCC. Si el voltaje más alto se define como el valor 1 "verdadero", una compuerta NOR es el elemento lógico útil más simple posible.
Específicamente, una puerta NOR de 3 entradas puede constar de 3 transistores bipolares de unión con sus emisores conectados a tierra, sus colectores unidos entre sí y conectados a Vcc a través de una impedancia de carga. Cada base está conectada a una señal de entrada, y el punto común del colector presenta la señal de salida. Cualquier entrada que sea un 1 (alta tensión) en su base cortocircuita el emisor de su transistor con su colector, lo que provoca que fluya corriente a través de la impedancia de carga, lo que acerca la tensión del colector (la salida) mucho a tierra. Este resultado es independiente de las otras entradas. Solo cuando las 3 señales de entrada son 0 (baja tensión) las impedancias emisor-colector de los 3 transistores permanecen muy altas. Entonces fluye muy poca corriente, y el efecto divisor de tensión con la impedancia de carga impone en el punto del colector una alta tensión muy cercana a Vcc .
La propiedad complementaria de estos circuitos de compuertas puede parecer una desventaja al intentar implementar una función en forma canónica, pero tiene una ventaja compensatoria: una compuerta de este tipo con una sola entrada implementa la función complementaria, que se requiere con frecuencia en la lógica digital.
Este ejemplo parte del inventario de componentes del Apolo: solo compuertas NOR de 3 entradas, pero la explicación se simplifica al suponer que también están disponibles las compuertas NOR de 4 entradas (en el Apolo, estas se construían a partir de pares de compuertas NOR de 3 entradas).
Consecuencias canónicas y no canónicas de las compuertas NOR
Un conjunto de 8 compuertas NOR, si sus entradas son todas combinaciones de las formas directa y complementaria de las 3 variables de entrada ci, x e y , siempre producen minterms, nunca maxterms; es decir, de las 8 compuertas necesarias para procesar todas las combinaciones de 3 variables de entrada, solo una tiene el valor de salida 1. Esto se debe a que una compuerta NOR, a pesar de su nombre, podría considerarse mejor (utilizando la ley de De Morgan) como la operación AND de los complementos de sus señales de entrada.
La razón por la que esto no es un problema es la dualidad de los minitérminos y los maxitérminos, es decir, cada maxitérmino es el complemento del minitérmino con el mismo índice, y viceversa.
En el ejemplo del miniterm anterior, escribimospero para realizar esto con una puerta NOR de 4 entradas necesitamos reformularlo como un producto de sumas (PoS), donde las sumas son los max-términos opuestos. Es decir,
En el ejemplo de maxterm anterior, escribimospero para realizar esto con una puerta NOR de 4 entradas necesitamos notar la igualdad con la NOR de los mismos minitérminos. Es decir,
Se consideran compensaciones de diseño además de las formas canónicas.
Podría pensarse que el diseño de la etapa sumadora ya está completo, pero aún no hemos abordado el hecho de que las tres variables de entrada deben aparecer tanto en su forma directa como en su complemento. No hay dificultad alguna con los sumandos x e y en este sentido, ya que son estáticos durante la suma y, por lo tanto, normalmente se almacenan en circuitos de retención que suelen tener salidas tanto directas como complementarias. (El circuito de retención más simple, compuesto por puertas NOR, consiste en un par de puertas acopladas en cruz para formar un flip-flop: la salida de cada una se conecta como una de las entradas de la otra). Tampoco es necesario crear la forma complementaria de la suma u . Sin embargo, el acarreo de salida de una posición de bit debe pasarse como acarreo a la siguiente posición de bit, tanto en su forma directa como complementaria. La forma más sencilla de hacerlo es pasar co a través de una puerta NOR de una entrada y etiquetar la salida como co ' , pero esto añadiría un retardo de puerta en el peor lugar posible, ralentizando la propagación de acarreos de derecha a izquierda. Una puerta NOR adicional de 4 entradas que construye la forma canónica de co ′ (a partir de los minitérminos opuestos a co ) resuelve este problema.
La compensación para mantener la velocidad máxima de esta manera incluye un costo inesperado (además de tener que usar una puerta más grande). Si solo hubiéramos usado esa puerta de 1 entrada para complementar co , no habría habido uso para el minitermy la puerta que lo generó podría haberse eliminado. Sin embargo, sigue siendo un buen negocio.
Podríamos haber implementado esas funciones exactamente según sus formas canónicas SoP y PoS, transformando las compuertas NOR en las funciones especificadas. Una compuerta NOR se convierte en una compuerta OR al conectar su salida a una compuerta NOR de una entrada; y se convierte en una compuerta AND al conectar cada una de sus entradas a una compuerta NOR de una entrada. Sin embargo, este enfoque no solo aumenta el número de compuertas utilizadas, sino que también duplica el número de retardos de compuerta en el procesamiento de las señales, reduciendo la velocidad de procesamiento a la mitad. Por consiguiente, cuando el rendimiento es crucial, vale la pena ir más allá de las formas canónicas y realizar el álgebra booleana para que las compuertas NOR sin modificar cumplan la función.
Diseño de arriba hacia abajo frente a diseño de abajo hacia arriba
Ahora hemos visto cómo las herramientas de minterm/maxterm pueden usarse para diseñar una etapa sumadora en forma canónica con la adición de álgebra booleana, con un costo de solo 2 retardos de puerta para cada una de las salidas. Esa es la forma "de arriba hacia abajo" de diseñar el circuito digital para esta función, pero ¿es la mejor? La discusión se ha centrado en identificar "más rápido" como "mejor", y la forma canónica aumentada cumple ese criterio a la perfección, pero a veces otros factores predominan. El diseñador puede tener como objetivo principal minimizar el número de puertas y/o minimizar la ramificación de señales a otras puertas, ya que una gran ramificación reduce la resistencia a una fuente de alimentación degradada u otros factores ambientales. En tal caso, un diseñador puede desarrollar el diseño en forma canónica como base, luego intentar un desarrollo de abajo hacia arriba y finalmente comparar los resultados.
El desarrollo ascendente implica observar que u = ci XOR ( x XOR y ), donde XOR significa OR exclusivo [verdadero cuando cualquiera de las entradas es verdadera pero no cuando ambas lo son], y que co = ci x + xy + y ci . Un desarrollo de este tipo requiere doce puertas NOR en total: seis puertas de 2 entradas y dos puertas de 1 entrada para producir u en 5 retardos de puerta, más tres puertas de 2 entradas y una puerta de 3 entradas para producir co ′ en 2 retardos de puerta. La línea base canónica requirió ocho puertas NOR de 3 entradas más tres puertas NOR de 4 entradas para producir u, co y co ′ en 2 retardos de puerta. Si el inventario de circuitos incluye realmente puertas NOR de 4 entradas, el diseño canónico descendente parece ser el ganador tanto en número de puertas como en velocidad. Pero si (contrariamente a nuestra suposición conveniente) los circuitos son en realidad puertas NOR de 3 entradas, de las cuales se requieren dos para cada función NOR de 4 entradas, entonces el diseño canónico requiere 14 puertas en comparación con las 12 del enfoque ascendente, pero aún así produce el dígito suma u considerablemente más rápido. La comparación de ramificación se presenta en la siguiente tabla:
La descripción del desarrollo ascendente menciona co ′ como una salida, pero no co . ¿Acaso ese diseño simplemente nunca necesita la forma directa de la salida de acarreo? Bueno, sí y no. En cada etapa, el cálculo de co ′ depende solo de ci ′ , x ′ e y ′ , lo que significa que la propagación del acarreo se propaga a lo largo de las posiciones de bits con la misma rapidez que en el diseño canónico sin desarrollar nunca co . El cálculo de u , que sí requiere que ci se construya a partir de ci ′ mediante una NOR de 1 entrada, es más lento, pero para cualquier longitud de palabra, el diseño solo paga esa penalización una vez (cuando se desarrolla el dígito de suma más a la izquierda). Esto se debe a que esos cálculos se superponen, cada uno en lo que equivale a su propia pequeña tubería sin afectar cuándo se puede calcular el bit de suma de la siguiente posición de bit. Y, por supuesto, la salida de co ′ de la posición de bit más a la izquierda probablemente tendrá que complementarse como parte de la lógica que determina si la suma se desbordó. Pero utilizando puertas NOR de 3 entradas, el diseño ascendente es casi igual de rápido para realizar sumas paralelas en una longitud de palabra no trivial, reduce la cantidad de puertas y utiliza menores ramificaciones... ¡así que gana si la cantidad de puertas y/o la ramificación son primordiales!
Dejaremos el circuito exacto del diseño ascendente del cual todas estas afirmaciones son verdaderas como un ejercicio para el lector interesado, asistido por una fórmula algebraica más: u = ci ( x XOR y ) + ci ′ ( x XOR y ) ′ ] ′ . Desacoplar la propagación del acarreo de la formación de la suma de esta manera es lo que eleva el rendimiento de un sumador de anticipación de acarreo sobre el de un sumador de acarreo en cascada .
Aplicación en el diseño de circuitos digitales
Una aplicación del álgebra booleana es el diseño de circuitos digitales, con el objetivo de minimizar el número de compuertas y, a su vez, minimizar el tiempo de estabilización.
Existen dieciséis funciones posibles de dos variables, pero en el hardware de lógica digital, los circuitos de compuertas más simples implementan solo cuatro de ellas: la conjunción (AND), la disyunción (OR inclusivo) y sus respectivos complementos (NAND y NOR).
La mayoría de los circuitos de compuertas aceptan más de 2 variables de entrada; por ejemplo, la computadora de guía espacial Apolo , que fue pionera en la aplicación de circuitos integrados en la década de 1960, se construyó con un solo tipo de compuerta, una NOR de 3 entradas, cuya salida es verdadera solo cuando las 3 entradas son falsas. [ 3 ] [ 4 ]
Véase también
Referencias
- ↑ Peter J. Pahl; Rudolf Damrath (6 de diciembre de 2012). Fundamentos matemáticos de la ingeniería computacional: un manual . Springer Science & Business Media. pp. 15–. ISBN 978-3-642-56893-0.
- ↑ Lala, Parag K. (16 de julio de 2007). Principios del diseño digital moderno . John Wiley & Sons. pág. 78. ISBN 978-0-470-07296-7.
- ↑ Hall, Eldon C. (1996). Viaje a la Luna: La historia del ordenador de guiado del Apolo . AIAA. ISBN 1-56347-185-X.
- ↑ "Esquemas del ordenador de guía del Apolo (AGC)" . klabs.org . Rich Katz . Consultado el 19 de junio de 2021. Para
ver cómo se utilizó la lógica de las puertas NOR en la ALU del ordenador de guía del Apolo, seleccione cualquiera de las entradas de MÓDULO DE 4 BITS en el Índice de dibujos y amplíe las imágenes según lo desee.
Lecturas adicionales
- Bender, Edward A.; Williamson, S. Gill (2005). Un curso breve de matemáticas discretas . Mineola, NY: Dover Publications, Inc. ISBN 0-486-43946-1
Los autores demuestran que cualquier función booleana (lógica) puede expresarse en forma normal disyuntiva o conjuntiva (véanse las páginas 5-6); la demostración consiste simplemente en crear las 2N
filas
de
N
variablesbooleanas y demostrar que cada fila ("minterm" o "maxterm") tiene una expresión booleana única. Cualquier función booleana de las
N
variables puede derivarse de una composición de las filas cuyo minterm o maxterm sea un 1 lógico ("verdadero").
- McCluskey, EJ (1965). Introducción a la teoría de los circuitos de conmutación . Nueva York: McGraw-Hill Book Company. pág. 78. LCCN 65-17394 .
Se definen y describen expresiones canónicas.
- Hill, Fredrick J.; Peterson, Gerald R. (1974). Introducción a la teoría de conmutación y al diseño lógico (2.ª ed.). Nueva York: John Wiley & Sons. pág. 101. ISBN 0-471-39882-9
Designación de funciones mediante minterm y maxterm
.
Enlaces externos
- Boole, George (1848). "El cálculo lógico" . Cambridge and Dublin Mathematical Journal . III . Traducido por Wilkins, David R.: 183–198 .
- Álgebra booleana
- Lógica
- Lógica algebraica