← Volver al blogLeyes de De Morgan

Las leyes de De Morgan en la práctica: diseño de circuitos solo con NAND

Las leyes de De Morgan convierten NAND en OR con burbujas y NOR en AND con burbujas. Aplícalas para construir circuitos solo con NAND o NOR y optimizar lógica multinivel.

DennyDenny
9 min de lectura
Chalkboard feature illustration for “Las leyes de De Morgan en la práctica: diseño de circuitos solo con NAND”

Resumen: Las dos identidades de De Morgan — A⋅B‾=A‾+B‾\overline{A \cdot B} = \overline{A} + \overline{B} y A+B‾=A‾⋅B‾\overline{A + B} = \overline{A} \cdot \overline{B} — permiten intercambiar AND por OR (y viceversa) distribuyendo la inversión. La ventaja práctica es que cualquier función lógica puede implementarse solo con NAND o solo con NOR, que es exactamente lo que hacen los diseñadores de chips CMOS y los sintetizadores de FPGA.

Las dos identidades de De Morgan — A⋅B‾=A‾+B‾\overline{A \cdot B} = \overline{A} + \overline{B} y A+B‾=A‾⋅B‾\overline{A + B} = \overline{A} \cdot \overline{B} — son fáciles de memorizar. La pregunta más difícil es cómo las usan realmente los ingenieros en activo. La respuesta abarca el diseño CMOS a nivel de transistor, la síntesis de FPGA, las implementaciones solo con NAND y solo con NOR, y la optimización de circuitos multinivel.

Este artículo se centra en aplicar las leyes de De Morgan en situaciones de diseño reales: cómo reducen el número de puertas en circuitos reales, cómo permiten implementar cualquier lógica solo con NAND o NOR y cómo el simulador hace evidentes las equivalencias.

Recordatorio rápido: las dos leyes

Como referencia, las dos identidades de De Morgan:

A⋅B‾=A‾+B‾(NAND = Bubbled OR)\overline{A \cdot B} = \overline{A} + \overline{B} \quad \text{(NAND = Bubbled OR)} A+B‾=A‾⋅B‾(NOR = Bubbled AND)\overline{A + B} = \overline{A} \cdot \overline{B} \quad \text{(NOR = Bubbled AND)}

Se generalizan a nn variables:

X1⋅X2⋅…⋅Xn‾=X1‾+X2‾+…+Xn‾\overline{X_1 \cdot X_2 \cdot \ldots \cdot X_n} = \overline{X_1} + \overline{X_2} + \ldots + \overline{X_n} X1+X2+…+Xn‾=X1‾⋅X2‾⋅…⋅Xn‾\overline{X_1 + X_2 + \ldots + X_n} = \overline{X_1} \cdot \overline{X_2} \cdot \ldots \cdot \overline{X_n}

Componente de puerta NAND

Explorar el comportamiento de la puerta NAND

Aplicación 1: conversión a una implementación solo con NAND

En CMOS estático, una puerta NAND de dos entradas utiliza cuatro transistores, mientras que una AND no inversora puede implementarse mediante una NAND seguida de un inversor. Esto convierte a NAND en un primitivo útil, pero no implica que todo el diseño deba usar exclusivamente puertas NAND. La síntesis de ASIC mapea la lógica sobre las celdas disponibles en una biblioteca caracterizada; la síntesis de FPGA la mapea principalmente sobre tablas de consulta y recursos dedicados.

El proceso de conversión

Cualquier expresión de suma de productos (SOP) puede convertirse a forma NAND-NAND en dos pasos:

  1. Comienza con la SOP: Y=AB+CDY = AB + CD
  2. Aplica doble negación: Y=AB+CD‾‾Y = \overline{\overline{AB + CD}}
  3. Aplica De Morgan a la barra exterior: Y=AB‾⋅CD‾‾Y = \overline{\overline{AB} \cdot \overline{CD}}

El resultado es un circuito NAND-NAND de dos niveles: las NAND del primer nivel calculan AB‾\overline{AB} y CD‾\overline{CD}, y la NAND del segundo nivel las combina.

Ejemplo desarrollado: función de 3 variables

Convierte Y=AB‾C+A‾BCY = A\overline{B}C + \overline{A}BC a una forma solo con NAND:

Paso 1: aplica doble negación: Y=AB‾C+A‾BC‾‾Y = \overline{\overline{A\overline{B}C + \overline{A}BC}}

Paso 2: aplica De Morgan a la barra exterior:

Y=AB‾C‾⋅A‾BC‾‾Y = \overline{\overline{A\overline{B}C} \cdot \overline{\overline{A}BC}}

Implementación:

  • Puerta 1 (NAND): entradas AA, B‾\overline{B}, CC — salida AB‾C‾\overline{A\overline{B}C}
  • Puerta 2 (NAND): entradas A‾\overline{A}, BB, CC — salida A‾BC‾\overline{\overline{A}BC}
  • Puerta 3 (NAND): las entradas son las salidas de las puertas 1 y 2 — salida YY

Las puertas NOT para A‾\overline{A} y B‾\overline{B} se implementan uniendo entre sí las dos entradas de una puerta NAND.

Número de puertas en este esquema: 3 puertas NAND + 2 inversores basados en NAND = 5 puertas NAND. El esquema AND-OR directo también utiliza cinco puertas, aunque de tres tipos distintos. Una construcción de un solo tipo resulta práctica cuando el inventario de encapsulados es limitado; una implementación en silicio debe evaluarse con los datos de área, retardo y potencia de la biblioteca de destino.

Probar la plantilla de lógica universal NAND

Aplicación 2: conversión a una implementación solo con NOR

El dual de la conversión NAND-NAND funciona para expresiones de producto de sumas (POS) y produce circuitos NOR-NOR.

El proceso de conversión

  1. Comienza con una POS: Y=(A+B)(C+D)Y = (A + B)(C + D)
  2. Aplica doble negación: Y=(A+B)(C+D)‾‾Y = \overline{\overline{(A+B)(C+D)}}
  3. Aplica De Morgan a la barra exterior: Y=(A+B)‾+(C+D)‾‾Y = \overline{\overline{(A+B)} + \overline{(C+D)}}

El resultado es un circuito NOR-NOR de dos niveles: las NOR del primer nivel calculan A+B‾\overline{A+B} y C+D‾\overline{C+D}, y la NOR del segundo nivel las combina.

Las puertas NOR pueden ser la opción natural para lógica en producto de sumas o para una biblioteca que proporcione una celda compuesta adecuada. La elección entre formas NAND, NOR o mixtas depende del fan-in, la capacidad de excitación, la carga, la ubicación y la tecnología de destino, no de una preferencia universal.

Componente de puerta NOR

Aplicación 3: optimización de circuitos multinivel

Los circuitos reales rara vez se limitan a dos niveles. Cuando encuentras lógica multinivel con inversiones repartidas por toda ella, las leyes de De Morgan te permiten «empujar burbujas» a través del circuito para cancelar inversiones redundantes y reducir el número de puertas.

Ejemplo desarrollado: simplificar una expresión de 4 puertas

Simplifica: Y=A⋅B‾+C⋅D‾‾Y = \overline{\overline{A \cdot B} + \overline{C \cdot D}}

Paso 1 — aplica De Morgan a la barra exterior (la expresión interior es una suma de dos términos):

Y=A⋅B‾‾⋅C⋅D‾‾Y = \overline{\overline{A \cdot B}} \cdot \overline{\overline{C \cdot D}}

Paso 2 — cancela las dobles negaciones:

Y=(A⋅B)⋅(C⋅D)=A⋅B⋅C⋅DY = (A \cdot B) \cdot (C \cdot D) = A \cdot B \cdot C \cdot D

Partimos de una expresión que parecía compleja y requería 2 puertas NAND, 1 puerta NOR y un inversor de salida. Tras aplicar dos veces las leyes de De Morgan, se reduce a una sola puerta AND de 4 entradas.

Ejemplo desarrollado: empuje de burbujas en un circuito de tres niveles

Dado: Y=(A+B)‾⋅(C+D)‾⋅E‾Y = \overline{\overline{(A + B)} \cdot \overline{(C + D)} \cdot E}

Paso 1 — aplica De Morgan a la NAND exterior:

Y=(A+B)‾‾+(C+D)‾‾+E‾Y = \overline{\overline{(A+B)}} + \overline{\overline{(C+D)}} + \overline{E}

Paso 2 — cancela las dobles negaciones:

Y=(A+B)+(C+D)+E‾=A+B+C+D+E‾Y = (A + B) + (C + D) + \overline{E} = A + B + C + D + \overline{E}

En el nivel de los símbolos booleanos, la expresión se reduce a una puerta OR de 5 entradas con una entrada complementada. Que esta forma ocupe menos, sea más rápida o consuma menos en el hardware depende de las celdas o LUT disponibles, de su fan-in, del encaminamiento y de la carga.

Aplicación 4: síntesis de FPGA y mapeo tecnológico

Cuando escribes Verilog o VHDL, la herramienta de síntesis no traduce directamente tu código en puertas AND y OR. En su lugar, realiza mapeo tecnológico: convierte tu lógica en los primitivos específicos disponibles en la biblioteca de la FPGA o ASIC de destino. Las leyes de De Morgan son una transformación esencial en este proceso.

Cómo usan las herramientas de síntesis las leyes de De Morgan

  1. Mapeo de LUT: una tabla de consulta de FPGA puede implementar cualquier función booleana que no exceda su capacidad de entradas. La síntesis simplifica y factoriza la lógica antes de empaquetar las funciones en LUT; las transformaciones de De Morgan son algunas de las reescrituras equivalentes que puede aplicar.

  2. Optimización de polaridad: muchas puertas de biblioteca proporcionan de forma natural salidas o entradas invertidas. El desplazamiento de burbujas puede conservar una señal complementada útil y evitar la adición de un inversor independiente.

  3. Optimización de la ruta crítica: una herramienta puede elegir una forma equivalente con NAND, NOR o una celda compuesta si la biblioteca caracterizada y la ubicación predicen un mejor resultado de temporización. La forma óptima depende de la tecnología.

Un ejemplo concreto de Verilog

Considera este código RTL:

assign y = ~(a & b) | ~(c & d);

La herramienta de síntesis reconoce AB‾+CD‾=ABCD‾\overline{AB} + \overline{CD}=\overline{ABCD}. Puede utilizar puertas independientes, una celda compuesta de la biblioteca o una sola LUT de FPGA si su capacidad de entradas lo permite. El RTL especifica el comportamiento; los informes del destino seleccionado determinan el área y la temporización de la implementación.

Aplicación 5: hardware heredado y sustitución de puertas

Si trabajas con hardware antiguo o inventarios de componentes restringidos, las leyes de De Morgan son tu herramienta principal para sustituir puertas.

Las construcciones de puertas universales

Usando solo puertas NAND, puedes construir cualquier otra puerta:

Puerta deseadaImplementación NANDNúmero de puertas
NOT ANAND(A, A)1
A Y BNAND(NAND(A,B), NAND(A,B))2
A O BNAND(NAND(A,A), NAND(B,B))3
NOR de A y BNAND(NAND(NAND(A,A), NAND(B,B)), NAND(NAND(A,A), NAND(B,B)))5

La construcción OR se deduce directamente de De Morgan: A+B=A‾⋅B‾‾A + B = \overline{\overline{A} \cdot \overline{B}}, que es NAND(NOT A, NOT B).

Esto también resulta útil cuando el inventario de componentes es limitado. Si solo se dispone de secciones de un 74LS00, tres secciones NAND pueden implementar una función OR, siempre que el sustituto satisfaga los requisitos del circuito original en cuanto a tensión, fan-out, temporización, potencia y tratamiento de las entradas no utilizadas.

Verificación con el osciloscopio

Al construir transformaciones de De Morgan en DigiSim, compara las salidas del circuito original y del transformado. Un OSCILLOSCOPE_8CH permite visualizar ambas salidas junto con sus entradas.

Comprobar exhaustivamente las combinaciones de entrada estables verifica la tabla de verdad. El ejercicio de las transiciones de entrada también puede mostrar diferencias representadas por el modelo de retardo de propagación del simulador, pero no determina la temporización de una implementación física concreta.

Los circuitos lógicamente equivalentes no son necesariamente equivalentes en temporización. Un esquema NAND-NAND y otro AND-OR pueden tener dos niveles lógicos y, aun así, diferir en el retardo de las celdas, el slew de entrada, el fan-out, la carga y el encaminamiento. Los niveles de inversión adicionales pueden alargar una ruta, pero solo un análisis de temporización específico del destino permite afirmar cuál es más rápido en una realización física.

Plantilla de lógica universal NAND

Errores habituales al aplicar De Morgan

La inversión parcial

Los estudiantes a menudo recuerdan invertir cada término, pero olvidan cambiar el operador. Esto produce A⋅B‾=A‾⋅B‾\overline{A \cdot B} = \overline{A} \cdot \overline{B}, lo cual es incorrecto. Cambia siempre AND por OR u OR por AND.

Entradas flotantes en circuitos NAND/NOR

Al construir circuitos solo con NAND en DigiSim, proporciona una fuente definida a cada entrada pertinente. Una entrada CMOS real que se deja flotante puede adquirir una tensión impredecible, conmutar por ruido acoplado y aumentar la corriente de alimentación. Conecta las entradas físicas no utilizadas al nivel lógico válido que indique la hoja de datos del dispositivo; en un ejercicio esquemático, utiliza la fuente CONSTANT correspondiente.

Confundir equivalencia lógica con equivalencia temporal

Dos circuitos con la misma tabla de verdad pueden tener retardos de propagación muy diferentes. Al convertir un circuito mediante las leyes de De Morgan, comprueba siempre si la transformación añade o elimina niveles de puerta.

Reto: optimización multinivel

Toma esta expresión y redúcela al número mínimo de puertas:

Y=A+B‾‾⋅A‾+B‾‾Y = \overline{\overline{A + \overline{B}} \cdot \overline{\overline{A} + B}}

Pista: aplica De Morgan a la NAND exterior, cancela las dobles negaciones y observa qué queda. (Solución: Y=(A+B‾)+(A‾+B)=A+A‾+B+B‾=1Y = (A + \overline{B}) + (\overline{A} + B) = A + \overline{A} + B + \overline{B} = 1. Toda la expresión es siempre verdadera: no se necesita ninguna puerta.)

Esta es una demostración potente: las leyes de De Morgan combinadas con la ley del complemento pueden eliminar a veces circuitos completos.

Continúa con los mapas de Karnaugh para un enfoque visual de las mismas simplificaciones, o repasa los fundamentos de álgebra booleana. Abre la referencia del componente NAND para cablear tú mismo una de estas conversiones.

Convierte la idea en un circuito funcional.