Reescribiendo una expresión booleana solo usando NAND

Así que tenía una tabla de verdad y usando un mapa de Karnaugh simplifiqué una función. Obtuve.

F = A 3 ¯ A 2 A 1 ¯ + A 2 ¯ A 0 ¯ + A 3 A 0 ¯

Luego, usando la propiedad distributiva del álgebra booleana:

F = A 3 ¯ A 2 A 1 ¯ + A 0 ¯ ( A 2 ¯ + A 3 )

Ok, con esto tenemos el mínimo de puertas lógicas para usar.

Ahora necesito convertir esto a NAND. Lo que me pareció más fácil fue tomar el logigrama (o esquema eléctrico) y cambiar directamente las puertas a sus equivalentes con NAND. Obtuve:

F = A 3 ¯ A 2 A 1 ¯ ¯ A 0 ¯ A 2 A 3 ¯ ¯ ¯ ¯

Ahora tengo dos preguntas sobre esto:

  • ¿Cómo debo proceder algebraicamente para pasar de una expresión a otra? (Sé que necesito aplicar las leyes de DeMorgan o usar el complemento de la función... Agradecería si alguien puede darme un consejo o algo sobre cómo empezar a hacerlo.

  • Estoy pensando si hay alguna forma de simplificar la expresión NAND... Veo que tengo A 2 dos veces y también A 3 ¯ dos veces... Estoy pensando si hay alguna manera de ir más allá en la simplificación... Si alguien también pudiera dar un consejo sobre cómo proceder para no arruinar la regla de usar solo NAND. ¡Muchas gracias!

¿Qué significa "pasar una expresión a otra"?

Respuestas (2)

¿Solo NAND de 2 pulgadas?

No veo ninguna razón por la que tenga que desperdiciar dos NAND para invertir la misma señal dos veces, si eso fuera parte de su pregunta.

Pero no estoy del todo seguro de qué pregunta estás haciendo.


La forma en que abordé su problema fue diseñar una tabla:

A 3     A 2                           A 1   A 0     00 01 10 11 00 1 1 1 1 01 0 1 0 0 10 1 0 1 1 11 0 0 0 0

A partir de esto, fue bastante fácil ver que tres de las columnas eran idénticas y podían ser reemplazadas por A 0 ¯ y que la columna restante era solo A 1 ¯ . Así que la nueva tabla se convirtió en:

A 3     A 2                       00 01 10 11 A 0 ¯ A 1 ¯ A 0 ¯ A 0 ¯

El resultado es el siguiente:

ingrese la descripción de la imagen aquí

(Claramente, tendrá que reemplazar los inversores con puertas NAND. Así que hay un total de 7 de ellos).

El primer inversor y puerta NAND de la izquierda, aceptando A 2 y A 3 , proporciona un BAJO activo para indicar cuándo A 3   A 2 = 01 . Si es BAJO, entonces este hecho deshabilita la puerta NAND que A 0 entra, en la parte inferior. Pero habilita la puerta NAND donde A 1 llega Cualquiera de estos se combina (y finalmente se invierte) para obtener el resultado deseado.


Tal vez alguien más podría intentarlo. Pero así es como puedo haberlo abordado.

También puede optar por un enfoque completamente algebraico. Dices que conoces a DeMorgan's. Así que puedes jugar con la expresión que tienes para construir una serie de A   B ¯ si no A ¯ + B ¯ términos identificables en su expresión, haciendo ajustes a medida que avanza cuando ve algo que no tiene esa forma básica.

Elegí probar un enfoque diferente.

Sin embargo, no me estoy presentando como un experto en esto. Tal vez uno de ellos ingrese y le proporcione un enfoque más completo, riguroso y de mente de acero. Yo también podría aprender de eso.

¡Hola @Jonk! Muchas gracias por tu respuesta y disculpa si no quedó muy claro lo que preguntaba. Lo que realmente quiero saber es si hay alguna forma de reducir la cantidad de compuertas NAND en nuestro circuito (la que pusiste allí)?
También me puedes decir donde hiciste ese dibujo del circuito? ¡Muchas gracias!
@GrangerObliviate Es de Logic Friday. No es bueno para optimizar esquemas, pero usa Espresso para optimizar expresiones. Pero no se optimizará bien para circuitos solo NAND, por ejemplo. Es gratis.
@GrangerObliviate No estoy al tanto de más que explorar un conjunto de formas alternativas. No conozco un algoritmo garantizado que pase de una declaración lógica, guiada por las restricciones que impone, a una respuesta necesariamente óptima. Creo que el problema es generalmente NP-completo, pero no tengo un artículo para citar que lo demuestre. Puedo estar equivocado y es solo mi inexperiencia hablando.

He explicado en detalle cómo convertir una expresión booleana a forma NAND algebraicamente , con la ayuda de un ejemplo en esta respuesta.

F = A 3 ¯ A 2 A 1 ¯ + A 2 ¯ A 0 ¯ + A 3 A 0 ¯

Es un método muy simple y corto, así que lo haré también para tu expresión:

  1. Toma el complemento doble

    F = A 3 ¯ A 2 A 1 ¯ + A 2 ¯ A 0 ¯ + A 3 A 0 ¯ ¯ ¯

  2. Aplique la ley de De Morgan para la expresión interna (el complemento externo se deja como está) para obtenerla en forma NAND:

    F = A 3 ¯ A 2 A 1 ¯ ¯ . A 2 ¯ A 0 ¯ ¯ . A 3 A 0 ¯ ¯ ¯

Sí, desde entonces también he aprendido a hacer eso. Mi escritura fue hace casi cuatro años y realmente no lo había considerado mucho en ese momento. Por suerte, la intuición fue suficiente para mí en ese entonces. ;) +1 por la adición.