Minimale Anzahl von NAND-Gattern zum Implementieren von f(x,y,z,w)=x(y+zw)+yz'

Wie der Titel schon sagt, eine Funktion gegeben F ( X , j , z , w ) = X . ( j + z . w ) + j . z ¯ , was ist die Mindestanzahl von NAND-Gattern, die Sie zum Implementieren von f benötigen?

Mein erster Lösungsversuch bestand darin, eine kmap zu zeichnen, um zu sehen, ob es einen weiter vereinfachten booleschen Ausdruck gibt (technisch gesehen habe ich zuerst die Wahrheitstabelle gezeichnet, um die Minterms zu finden). Aus der kmap habe ich gefunden F ( X , j , z , w ) = X . j + j . z ¯ + X . z . w

Ich weiß, dass Sie AND mit zwei NAND-Gattern ODER mit 3 NAND-Gattern und NICHT mit einem einzigen NAND-Gatter implementieren können. Also dachte ich: "Nun, wir haben 1 NOT, 2 ORs, 3 ANDs, also würden wir brauchen 1 + ( 2 3 ) + ( 3 2 ) = 13 NAND-Gatter". Aber die richtige Antwort soll 7 sein.

  1. Was ist falsch/unzureichend an meiner Argumentation?
  2. Wie um alles in der Welt implementieren Sie die Funktion mit nur 7 NANDs?
Wenn Sie es in SOP-Form bringen, bedeutet dies, dass Sie eine minimale Anzahl von Logikschichten und damit eine minimale Laufzeit haben, aber meines Wissens bedeutet dies nicht unbedingt eine minimale Anzahl von Gattern. Aber ich habe seit Jahren keine digitale Logik mehr gemacht, also könnte ich mich irren.
Ich glaube, es gibt keine formale Methode für eine optimale NAND-Implementierung. Es gibt zwar einige auf Heuristik basierende, aber ich bezweifle, dass Sie gebeten werden, eine zu verwenden. Wahrscheinlich werden Sie nur gebeten, Ihre Intuition zu benutzen.
Machen Sie Ihre kmap. SOP machen. Nehmen Sie deMorgans
Die übliche doppelte Inversion und die Anwendung des Theorems von DeMorgan wandeln jede Summe von Produkten einfach in eine reine NAND-Formel um. Beginnen Sie mit dem Original x(y+zw)+yz', da es weniger Operationen als Ihre minimierte Version hat. Aber Benutzer @Shashank VM hat bereits gesagt, wie es gemacht werden soll, also schreibe ich keine doppelte Antwort, dies bleibt als Kommentar. f=((x(y'(zw)')')'(yz')')' Ich denke, viele von uns können das auf den ersten Blick nicht als Schaltung sehen, aber wenn Sie herausfinden, wie Sie dasselbe bekommen, haben Sie es die Lösung herausgefunden.

Antworten (2)

Ich schlage vor, dass Sie Ihre vorgeschlagene Lösung skizzieren und nur die UND-, ODER- und NICHT-Gatter nach Bedarf durch NANDs ersetzen.

Suchen Sie nun nach Stellen, an denen Sie zwei NANDs in Reihe haben, an denen beide NANDs als NICHT-Gatter verbunden sind. Dort besteht die Möglichkeit zur Vereinfachung.

Anderes Problem, gleicher allgemeiner Ansatz, wie man darüber nachdenkt .... electronic.stackexchange.com/questions/264105/…
@ShashankVM Nun, die erforderliche Zeit und Mühe hängt von den Fähigkeiten und dem Hintergrund des Schülers ab. Ich finde den algebraischen Ansatz ziemlich fehleranfällig und für einfache Fälle unnötig, aber jedem das Seine.

Ein algebraischer Ansatz ist einfacher. Wenn Sie Gatter durch NAND-Äquivalente ersetzen, wird Ihre Schaltung höchstwahrscheinlich redundant und Sie müssen sie erneut vereinfachen.

In dieser Antwort habe ich anhand eines Beispiels ausführlich erklärt, wie man einen booleschen Ausdruck algebraisch in eine NAND-Form umwandelt

Es ist interessant festzustellen, dass Sie die betreffende Funktion mit nur 5 NAND-Gattern implementieren können, nicht mit sieben . Hier ist die algebraische Manipulation, um den Ausdruck in die NAND-Form umzuwandeln: F ( X , j , z , w ) = X . ( j + z . w ) + j . z ¯ = X . j + X . z . w + j . z ¯

Wenn wir das doppelte Komplement nehmen, erhalten wir

F ( X , j , z , w ) = X . j + X . z . w + j . z ¯ ¯ ¯

Anwendung des Gesetzes von De Morgan:

F ( X , j , z , w ) = ( X . j ¯ ) . ( X . z . w ¯ ) . ( j . z ¯ ¯ ) ¯

Die Schaltung verwendet 5 NAND-Gatter.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan