Ispirato dalla recente popolarità di nandgame su TNB e dalla mia precedente sfida .
sfondo
Il decimale densamente compresso (DPD) è un modo per memorizzare in modo efficiente le cifre decimali in binario. Memorizza tre cifre decimali (da 000 a 999) in 10 bit, il che è molto più efficiente del BCD ingenuo (che memorizza una cifra in 4 bit).
Tabella di conversione
DPD è progettato per convertire facilmente tra i bit e le cifre mediante una semplice corrispondenza del modello dall'alto verso il basso. Ogni modello di bit definisce quante cifre alte (8-9) ha il numero, dove sono e come spostare i bit per formare la rappresentazione decimale.
Di seguito è riportata la tabella di conversione da 10 bit di DPD a tre cifre decimali. Ogni cifra decimale è rappresentata come binario a 4 bit (BCD). Entrambe le parti sono scritte da sinistra a destra dalla cifra più significativa alla minima.
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)
notazioni
- Le lettere minuscole
a
ini
sono i bit che vengono copiati nella rappresentazione decimale. 0
e1
sono i bit esatti nei modelli di bit di input o output.x
i bit vengono ignorati nella conversione.
Compito
Costruisci un circuito logico usando porte NAND a due ingressi per convertire 10 bit di DPD in 12 bit di BCD.
Esempi
I bit enfatizzati sono i bit corrispondenti al modello.
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
^ ^ ^ ^ ^
Punteggio e criterio di vincita
Il punteggio è il numero di porte NAND a due ingressi utilizzate nel circuito. Vince il punteggio più basso.
È possibile definire piccoli componenti in termini di porte NAND a due ingressi e quindi utilizzarli nella costruzione finale. Se un componente X
include N
porte NAND a due input, ogni utilizzo di X
aggiunge N
al tuo punteggio. Per le porte logiche di base, ciò significa:
- NON: +1
- 2 ingressi AND: +2
- 2 ingressi OPPURE: +3
- XOR a 2 ingressi: +4
a
alla i
media e il processo di conversione. Segui i passaggi, piuttosto che mostrare solo esempi e sperare di capirlo.