Gibt es einen Algorithmus zur Bestimmung der Mindestanzahl von NAND- oder NOR-Gattern mit
- gegebene Anzahl von Eingängen
- Verfügbarkeit / Nichtverfügbarkeit von ergänzten Eingaben
erforderlich, um einen Booleschen Ausdruck zu realisieren? Wir können eine UND-ODER-Form als Hauptimplikanten über Karnaugh-Karten erhalten, die minimal ist (soweit ich weiß, erhält der Quine-McCluskey- Algorithmus sie deterministisch). Gibt es eine ähnliche Technik auch für NAND- oder NOR-Implementierungen? Zumindest sollte eine solche Technik die erforderliche Mindestanzahl von NAND / NOR-Gattern bestimmen, auch ohne das tatsächliche Diagramm zu finden?
Die Anwendung von De Morgans Gesetz auf die Hauptimplikanten scheint nicht deterministisch zu sein.
A ⊕ B = A'B + AB' = ((A'B)'(AB')')' [5 NAND gates]
A ⊕ B = (AB + A'B')' = ((ABAB+ABB') + (A'AB+A'B'))' = (AB(AB+B') + A'(AB+B'))' = ((AB+A')(AB+B'))' = (((AB)'A)'((AB)'B)')' [4 NAND gates by reusing (AB)']
logic-gates
boolean-algebra
Samik
quelle
quelle
Antworten:
Sie können die minimale Anzahl von Gates in einem mehrstufigen Netzwerk nur finden, indem Sie ein ganzzahliges Programmierproblem lösen [oder Äquivalente, siehe unten]. Dieses Problem ist NP-vollständig, daher nur praktisch, um bis zu einem Dutzend Tore oder so zu lösen.
Es gibt Approximationsmethoden, die Ihnen nicht die Mindestanzahl geben, aber in Bezug auf den Zeitaufwand besser nachvollziehbar sind ... Dies ist ein großes Thema für sich, im Grunde das gesamte Gebiet der mehrstufigen Optimierung. Eine [kostenlose] Übersicht können Sie hier lesen .
Für kleine NAND-Netzwerke (bis zu 4 Variablen) wurde das Problem durch umfassende Aufzählung (oder gleichwertige Methoden) vollständig gelöst. Es gibt eine relativ neue [2009] Doktorarbeit von Elizabeth Ann Ernst, die die alten Ergebnisse zusammenfasst und erweitert. Ernst verwendet Branch-and-Bound, was die erschöpfende Methode in der Praxis verbessert, jedoch nicht asymptotisch. Sie merkt auch an, dass andere implizite Aufzählungsmethoden wie Integer-Programmierung oder CSP (Constraint-Zufriedenheit, gelöst über SAT) in der Praxis schlechter abschneiden.
Sie hat offensichtlich eine Software für ihre Methode geschrieben (genannt BESS), aber ich bin mir nicht sicher, ob sie irgendwo öffentlich verfügbar ist. Der vollständige Text ihrer Arbeit ist bei umich frei verfügbar . Und tatsächlich haben Sie den minimalen Ausdruck für xor mit 2 Eingängen gefunden (Ihren zweiten offensichtlich), den unten hervorgehobenen:
Sie verglich auch die genauen Ergebnisse (für NANDs) mit denen des heuristischen Optimierers von ABC .
Es gibt (offensichtlich) einige [größere] Netzwerke, für die BESS nicht fertig war, aber das Auffinden einer Obergrenze zuließ (an dem Punkt, an dem die Suche abgebrochen wurde). Für diese hat sich ABC recht gut geschlagen [gut in Bezug auf die gefundenen Grenzen], wie Sie aus der 2. Grafik unten sehen können.
quelle
resyn2
Skript. Es ist also nicht besser als Logic Friday (das misII verwendet).Es gibt wahrscheinlich bessere Techniken da draußen, aber vor langer Zeit, als ich im dunklen Zeitalter war, fand ich, dass Karnaugh Maps gut funktioniert
quelle
NAND gefolgt von NAND entspricht AND gefolgt von OR.
NOR gefolgt von NOR entspricht OR gefolgt von AND.
NAND gefolgt von NOR wäre gleichbedeutend mit AND gefolgt von AND, was nicht wirklich Sinn macht. NOR gefolgt von NAND wäre in ähnlicher Weise gleichbedeutend mit OR, gefolgt von OR.
Ich glaube nicht, dass es im Allgemeinen einen praktikablen Weg gibt, eine minimale Lösung für ein Problem mit einer großen Anzahl von Eingaben zu finden (offensichtlich kann man bei kleinen Eingangszahlen Brute Force anwenden). Quine-McClusky betrachtet nur zweistufige Lösungen (die minimale zweistufige Lösung ist oft nicht die minimale Gesamtlösung) und kann mit komplexen Wahrheitstabellen und einer großen Anzahl von Eingaben rechnerisch unmöglich werden.
quelle
Der beste Algorithmus ist der Espresso- Algorithmus. Bis zu einem gewissen Grad ist dies in der FPGA-Synthese implementiert
Logic Friday ist eine Software, die Sie verwenden können. HINWEIS: Dadurch wird ein XOR auf 5 NAND-Gatter reduziert.
quelle