4-Bit Binärzahl zu 2 stellig BCD

BCD Zahlen, oder auch Binary Coded Decimals, kodieren die Zahlen 0-9 in 4-Bit. Das ist nützlich, da man so etwas Redundanz hat für sicherheitskritische Anwendungen, aber auch, weil man nette BCD zu 7-Segment Anzeigen Konverter bauen kann. Leider gibt es den Nachteil, dass man nicht ohne weiteres eine 4-Bit Binärzahl, wie sie z.B aus einem Volladdierer kommt, anzeigen kann, da diese einen Zahlenbereich von 0 bis 15 hat.
Um das zu lösen wird hier eine kleine Schaltung vorgestellt, die eine 4-Bit Zahl entgegen nimmt und zwei BCD Zahlen ausgibt, jeweils eine für die beiden Stellen der dezimalen Darstellung.

Theorie

Wir definieren den Vektor <m>x = (matrix{4}{1}{x_0 x_1 x_2 x_3})</m> als Eingabe in das System und die Vektoren y und z als Ausgabe. Der Vektor y ist dabei die einer-Stelle der resultierenden Dezimal Zahl, z die Zehner-Stelle(x = zy).
Um die Funktionsweise zu verstehen schauen wir uns zuerst die Wahrheitstabelle an:

Dezimal Binär z y
0 0000 0000 0000
1 0001 0000 0001
2 0010 0000 0010
3 0011 0000 0011
4 0100 0000 0100
5 0101 0000 0101
6 0110 0000 0110
7 0111 0000 0111
8 1000 0000 1000
9 1001 0000 1001
10 1010 0001 0000
11 1011 0001 0001
12 1100 0001 0010
13 1101 0001 0011
14 1110 0001 0100
15 1111 0001 0101

Übertragungsfunktion für z

Man sieht, dass z als Zahl entweder 0 oder 1 ist, daher generell nur das niederwertigste Bit verändert wird. Die Bedingung für den Wechsel auf 1 ist relativ einfach und direkt ablesbar:
<m>z_0 = (x_3 ∧ x_1) ∨ (x_3 ∧ x_2) </m>(<m>z_0</m> meint das Element mit Index 0 des Vektors)


Damit wird also der Ausgangsvektor z zu:
<m>z = (matrix{4}{1}m_y_matrix_4_1_x_0_x_1_z_0_x_2_z_0_x_3_x_2_x_1_x_3_overline_z_0})</m>

Implementation

Hier nun die Implementation, getestet mit dem Programm „LogicCircuit“:
Implementation des 4-Bit Binär zu BCD Konverter

Und so sieht eine mögliche Anwendung innerhalb der selben Software aus:
4-Bit2BCD im Einsatz

Weiterführendes