Inspiriert von der jüngsten Beliebtheit von Nandgame auf TNB und meiner eigenen vorherigen Herausforderung .
Hintergrund
Dicht gepackte Dezimalstellen (DPD) sind eine Möglichkeit, Dezimalstellen in Binärform effizient zu speichern. Es speichert drei Dezimalstellen (000 bis 999) in 10 Bit, was viel effizienter ist als naives BCD (das eine Stelle in 4 Bit speichert).
Umrechnungstabelle
DPD ist so konzipiert, dass eine einfache Umwandlung zwischen den Bits und den Ziffern durch einfachen Musterabgleich von oben nach unten möglich ist. Jedes Bitmuster definiert, wie viele hohe Stellen (8-9) die Zahl hat, wo sie sich befindet und wie die Bits verschoben werden, um die Dezimaldarstellung zu bilden.
Das Folgende ist die Umwandlungstabelle von 10 Bit DPD in drei Dezimalstellen. Jede Dezimalstelle wird als 4-Bit-Binärzahl (BCD) dargestellt. Beide Seiten werden von links nach rechts von der höchstwertigen bis zur niedrigsten Stelle geschrieben.
Bits => Decimal (Digit range)
a b c d e f 0 g h i => 0abc 0def 0ghi (0-7) (0-7) (0-7)
a b c d e f 1 0 0 i => 0abc 0def 100i (0–7) (0–7) (8–9)
a b c g h f 1 0 1 i => 0abc 100f 0ghi (0–7) (8–9) (0–7)
g h c d e f 1 1 0 i => 100c 0def 0ghi (8–9) (0–7) (0–7)
g h c 0 0 f 1 1 1 i => 100c 100f 0ghi (8–9) (8–9) (0–7)
d e c 0 1 f 1 1 1 i => 100c 0def 100i (8–9) (0–7) (8–9)
a b c 1 0 f 1 1 1 i => 0abc 100f 100i (0–7) (8–9) (8–9)
x x c 1 1 f 1 1 1 i => 100c 100f 100i (8–9) (8–9) (8–9)
Notizen
- Die Kleinbuchstaben
a
bisi
sind die Bits, die in die Dezimaldarstellung kopiert werden. 0
und1
sind die genauen Bits in den Eingabe- oder Ausgabebitmustern.x
Bits werden bei der Konvertierung ignoriert.
Aufgabe
Erstellen Sie eine logische Schaltung, indem Sie NAND-Gatter mit zwei Eingängen verwenden , um 10 Bit DPD in 12 Bit BCD zu konvertieren.
Beispiele
Hervorgehobene Bits sind die Mustervergleichsbits.
DPD Decimal BCD
0 0 0 0 0 0 0 1 0 1 005 0000 0000 0101
^
0 0 0 1 1 0 0 0 1 1 063 0000 0110 0011
^
0 0 0 1 1 1 1 0 0 1 079 0000 0111 1001
^ ^ ^
0 0 0 0 0 1 1 0 1 0 090 0000 1001 0000
^ ^ ^
0 0 0 1 0 1 1 1 1 0 098 0000 1001 1000
^ ^ ^ ^ ^
1 0 1 0 1 1 1 0 1 0 592 0101 1001 0010
^ ^ ^
0 0 1 1 0 0 1 1 0 1 941 1001 0100 0001
^ ^ ^
1 1 0 0 1 1 1 1 1 1 879 1000 0111 1001
^ ^ ^ ^ ^
1 1 1 0 0 0 1 1 1 0 986 1001 1000 0110
^ ^ ^ ^ ^
0 0 1 1 1 1 1 1 1 1 999 1001 1001 1001
^ ^ ^ ^ ^
1 1 1 1 1 1 1 1 1 1 999 1001 1001 1001
^ ^ ^ ^ ^
Bewertungs & Gewinnkriterium
Die Punktzahl ist die Anzahl der NAND-Gatter mit zwei Eingängen, die in Ihrer Schaltung verwendet werden. Die niedrigste Punktzahl gewinnt.
Sie können kleine Komponenten in Form von NAND-Gattern mit zwei Eingängen definieren und diese dann in Ihrer endgültigen Konstruktion verwenden. Wenn eine Komponente X
enthält N
zwei Eingang - NAND - Gatter, jede Verwendung von X
fügt , N
um Ihre Gäste. Für grundlegende Logikgatter bedeutet dies:
- NICHT: +1
- AND mit 2 Eingängen: +2
- ODER mit 2 Eingängen: +3
- XOR mit 2 Eingängen: +4
a
i