U 08.2 – Umrechnung der Zahlen-Kodierungen

 
  1. Geben Sie die Dezimalzahl 2580 in folgenden Zahlen-Kodierungen an:

    1. BCD
    2. dual kodiert
    3. hexadezimal kodiert
  2. Was ist der Sinn der Gray-Kodierung?
    Fleißaufgabe: Rechnen Sie die Zahl 2580 in eine Gray-Zahl um.

Lösung

a)

Wir nehmen als Beispiel eine gemessene Spannung von U = 2,58 V = 2580 mV

i)

BCD steht für „binary coded digit“

Die binäre Darstellung erfolgt mittels Zweierpotenzen:

\begin{array}{*{20}{c}}{{2^0}} \hfill & = \hfill & 1 \hfill \\{{2^1}} \hfill & = \hfill & 2 \hfill \\{{2^2}} \hfill & = \hfill & 4 \hfill \\{{2^3}} \hfill & = \hfill & 8 \hfill \\   \end{array}

Beim BCD wird jetzt jede Ziffer der 2580 einzeln nach folgendem Prinzip dargestellt?

2: [0010]

\begin{array}{*{20}{c}}{{2^0}} \hfill & \to \hfill & {1 \cdot 0} \hfill & = \hfill & 0 \hfill \\{{2^1}} \hfill & \to \hfill & {2 \cdot 1} \hfill & = \hfill & 2 \hfill \\{{2^2}} \hfill & \to \hfill & {4 \cdot 0} \hfill & = \hfill & 0 \hfill \\{{2^3}} \hfill & \to \hfill & {8 \cdot 0} \hfill & = \hfill & 0 \hfill \\{} \hfill & {} \hfill & {} \hfill & {\Sigma = } \hfill & 2 \hfill \\   \end{array}
5: [0101]

8: [1000]

0: [0000]

\Rightarrow 2580 = [0010 0101 1000 0000]

ii)

Dual kodiert wird wie folgt:

\begin{array}{*{20}{c}}{2580} \hfill & {:2 = } \hfill & {1290} \hfill & {Rest} \hfill & 0 \hfill \\{1290} \hfill & {:2 = } \hfill & {645} \hfill & {Rest} \hfill & 0 \hfill \\{645} \hfill & {:2 = } \hfill & {322} \hfill & {Rest} \hfill & 1 \hfill \\{322} \hfill & {:2 = } \hfill & {161} \hfill & {Rest} \hfill & 0 \hfill \\{161} \hfill & {:2 = } \hfill & {80} \hfill & {Rest} \hfill & 1 \hfill \\{80} \hfill & {:2 = } \hfill & {40} \hfill & {Rest} \hfill & 0 \hfill \\{40} \hfill & {:2 = } \hfill & {20} \hfill & {Rest} \hfill & 0 \hfill \\{20} \hfill & {:2 = } \hfill & {10} \hfill & {Rest} \hfill & 0 \hfill \\{10} \hfill & {:2 = } \hfill & 5 \hfill & {Rest} \hfill & 0 \hfill \\  5 \hfill & {:2 = } \hfill & 2 \hfill & {Rest} \hfill & 1 \hfill \\  2 \hfill & {:2 = } \hfill & 1 \hfill & {Rest} \hfill & 0 \hfill \\  1 \hfill & {:2 = } \hfill & 0 \hfill & {Rest} \hfill & 1 \hfill \\   \end{array}

Die Spalte der Rest-Werte muss nun von unten nach oben gelesen werden:

\Rightarrow {\text{258}}{0_{\left( {10} \right)}}{\text{ }} = {\text{ 1}}0{\text{1}}0000{\text{1}}0{\text{1}}{00_{\left( 2 \right)}}

Umgekehrt ergibt sich dann:

2580 = 1 \cdot {2^{11}}+0 \cdot {2^{10}}+1 \cdot {2^9}+0 \cdot {2^8}+0 \cdot {2^7}+0 \cdot {2^6}+0 \cdot {2^5} \cdot 1 \cdot {2^4}+0 \cdot {2^3}+1 \cdot {2^2}+0 \cdot {2^1}+0 \cdot {2^0}

iii)

Nun zum Hexadezimalen System. Wir verwenden im HEX-System andere Zahlenreihen:

\left[ {0,\:1,\:2,\:3,\:4,\:5,\:6,\:7,\:8,\:9,\:A,\:B,\:C,\:D,\:E,\:F} \right]

A = 10

B = 11

C = 12

D = 13

E = 14

F = 15

Damit folgt für unsere Zahl:

\begin{array}{*{20}{c}}{2580} \hfill & {:16 = } \hfill & {161} \hfill & {Rest} \hfill & 4 \hfill \\{161} \hfill & {:16 = } \hfill & {10} \hfill & {Rest} \hfill & 1 \hfill \\{10} \hfill & {:16 = } \hfill & 0 \hfill & {Rest} \hfill & {10 = A} \hfill \\   \end{array}

Damit ergibt sich in Hexadezimaler Darstellung:

{2580_{\left( {10} \right)}} = A{14_{\left( {16} \right)}} = 0 \times A14

b) Gray-Codierung

Bei der Gray-Codierung handelt es sich um einen so genannten einschrittigen Code. Das bedeutet, beim Übergang zum nächsthöheren (bzw. nächstniedrigeren) Zustand wird nur eine Stelle in der Codierung geändert.
Bei den Dualzahlen ändern sich von einer Ziffer auf die nächste unter Umständen mehrere Stellen gleichzeitig. Wenn man diese Zifferngruppen nun sehr schnell ausliest, kann es sein, dass sich innerhalb dieser Zeit erst eine Zahl geändert hat, was beim Auslesen kritisch ist und zu einer falsche Anzeige führen kann. Daher wird intern im Gerät der sog. Gray-Code verwendet, bei dem sich immer nur eine Stelle beim Übergang zwischen zwei Zahlen ändert.
(siehe auch Vorlesung)

Die Umrechnung von einer Dezimalzahl zur Gray-Codierung funktioniert wie folgt.

Zunächst wird die Dezimalzahl in eine Dualzahl umgerechnet:

{2580_{\left( {10} \right)}} \to {X_1} = 1010\:0001\:{0100_{\left( 2 \right)}}

Anschließend erfolgt eine Linksverschiebung der Stellen, es wird also am Ende einfach eine 0 angehängt:

{X_2} = 1\:0100\:0010\:1000

Dann berechnet man den Rest beim Teilen der Summe von X1 und X2 durch 2:

\begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 \\{{X_2}} &\vline & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & {\left[ 0 \right]} \\   \end{array}

Zum Schluss erfolgt noch eine Rechtsverschiebung. Dabei wird die letzte Stelle einfach abgeschnitten (egal ob 1 oder 0):

\Rightarrow \quad 1111\:0001\:{1110_{\left( {Gray} \right)}}

Weitere Beispiele:

\begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 \\{{X_2}} &\vline & 1 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 1 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 1 \\ \hline{Gray-Code} &\vline & 1 & {} \\   \end{array} \qquad \begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 0 \\{{X_2}} &\vline & 1 & 0 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 1 & 0 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 1 & 0 \\ \hline{Gray-Code} &\vline & 1 & 1 & {} \\   \end{array} \qquad \begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 1 \\{{X_2}} &\vline & 1 & 1 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 2 & 1 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 0 & 1 \\ \hline{Gray-Code} &\vline & 1 & 0 & {} \\   \end{array}
\begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 0 & 0 \\{{X_2}} &\vline & 1 & 0 & 0 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 1 & 0 & 0 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 1 & 0 & 0 \\ \hline{Gray-Code} &\vline & 1 & 1 & 0 & {} \\   \end{array} \qquad \begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 0 & 1 \\{{X_2}} &\vline & 1 & 0 & 1 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 1 & 1 & 1 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 1 & 1 & 1 \\ \hline{Gray-Code} &\vline & 1 & 1 & 1 & {} \\   \end{array}

\begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 1 & 0 \\{{X_2}} &\vline & 1 & 1 & 0 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 2 & 1 & 0 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 0 & 1 & 0 \\ \hline{Gray-Code} &\vline & 1 & 0 & 1 & {} \\   \end{array} \qquad \begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 1 & 1 \\{{X_2}} &\vline & 1 & 1 & 1 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 2 & 2 & 1 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 0 & 0 & 1 \\ \hline{Gray-Code} &\vline & 1 & 0 & 0 & {} \\   \end{array}

\begin{array}{*{20}{c}}{{X_1}} &\vline & {} & 1 & 0 & 0 & 0 \\{{X_2}} &\vline & 1 & 0 & 0 & 0 & 0 \\ \hline{{X_1}+{X_2}} &\vline & 1 & 1 & 0 & 0 & 0 \\ \hline{Modul{o_2}\left( {{X_1}+{X_2}} \right)} &\vline & 1 & 1 & 0 & 0 & 0 \\ \hline{Gray-Code} &\vline & 1 & 1 & 0 & 0 & {} \\   \end{array}

\mathcal{G}\mathcal{H}\& \mathcal{J}\mathcal{K}