Ein Bitzählkomparator (BCC) ist eine Logikschaltung, die eine bestimmte Anzahl von Zähleingängen A1, A2, A3, ..., An
sowie Eingaben, B1, B2, B4, B8, ...
die eine Zahl darstellen, verwendet. Es kehrt dann zurück , 1
wenn die Gesamtzahl der A
Eingänge , die an sind , ist größer als die Anzahl von den binär dargestellt B
Eingängen (zB B1
, B2
und B8
würde die Anzahl machen 11
), und aus 0
anderen Gründen .
Zum Beispiel für eine Bit-Zählung Komparator, nimmt 5
Eingänge, von denen A2
, A4
, A5
, und B2
eingestellt sind 1
, kehrt , 1
da es 3 A
Eingänge , die eingeschaltet sind, die größer ist 2
(die Zahl repräsentiert durch nur B2
Wesen auf).
Ihre Aufgabe ist es, einen Bitzählkomparator zu erstellen, der insgesamt 16 A
Eingänge und 4 B
Eingänge (die Bits von 1
bis darstellen 8
) verwendet, wobei nur NAND-Gatter mit zwei Eingängen und so wenige NAND-Gatter wie möglich verwendet werden. Zur Vereinfachung können Sie in Ihrem Diagramm UND-, ODER-, NICHT- und XOR-Gatter mit den folgenden entsprechenden Bewertungen verwenden:
NOT: 1
AND: 2
OR: 3
XOR: 4
Jede dieser Bewertungen entspricht der Anzahl der NAND-Gatter, die zum Aufbau des entsprechenden Gatters erforderlich sind.
Die Logikschaltung, die die wenigsten NAND-Gatter verwendet, um eine korrekte Konstruktion zu erzeugen, gewinnt.
quelle
AND
== zweiNAND
Antworten:
169 nands
Addiert die A's, um A {1,2,4,8,16} zu erhalten. Dann wird ein binärer Vergleich mit dem Bs durchgeführt.
Ich benutze noch ein paar Bausteine:
Die Halb- und Volladdierer haben 2 Ausgänge - sie werden mit einem r für das Ergebnis und einem c für den Übertrag unterschieden.
Die A {1,2,4,8,16} sind die Ausgaben der Halbaddierer.
quelle
751 nand Tore
Dies ist noch nicht vollständig Golf gespielt. Ich habe die Antwort in Verilog gegeben, weil ich auf diese Weise ein Programm schreiben konnte, um jeden Abschnitt auszugeben. Wenn es obligatorisch ist, mit einem Diagramm zu antworten, lassen Sie es mich bitte wissen. Sie sind gleichwertig.
&
ist und~
ist nicht und|
ist oder.Meine Strategie:
A
und setze alle1
s auf die niedrigen Zahlen, speichere inis
. (Dies ist der Großteil des Programms)B
und pack es in 16 Bit aus (ich nannte eseB
für erweitertB
)quelle