Gray-Code und Paritätsbits
← Alle Artikel

Gray-Code und Paritätsbits

5 Min

Das Problem mit gewöhnlichem Binärcode

Der Übergang von 3 (011) zu 4 (100) im gewöhnlichen Binärcode kippt alle drei Bits gleichzeitig. In echter Hardware schalten diese Bits niemals exakt im selben Moment um — für einen kurzen Moment könnte ein schneller Leser einen ungültigen Zwischenwert wie 111 oder 000 sehen. Bei einem Zähler, der einen physischen Positionssensor (wie einen Drehgeber) ansteuert, ist dieser kurze Störimpuls ein echter, beobachtbarer Fehler, kein nur theoretisches Problem.

Was einen Code zu „Gray" macht

Der Gray-Code ist eine alternative Binärkodierung, bei der sich jeder aufeinanderfolgende Wert vom vorherigen in genau einem Bit unterscheidet. Das Zählen von 0 bis 7 im Gray-Code ergibt 000, 001, 011, 010, 110, 111, 101, 100 — jeder Schritt ändert ein einzelnes Bit, sodass zwischen zwei aufeinanderfolgenden Zuständen kein ungültiger Zwischenwert möglich ist.

Umrechnung von Binär nach Gray und zurück

Die Umrechnung von Binär nach Gray ist ein einziger XOR-Durchlauf: Jedes Gray-Bit ist das XOR des entsprechenden Binärbits mit dem eine Position höheren Binärbit (das oberste Bit wird unverändert übernommen).

  • G[n] = B[n] (höchstwertiges Bit, unverändert)
  • G[i] = B[i] ⊕ B[i+1] für jedes andere Bit
  • Die Rückrechnung führt dieselbe Idee umgekehrt aus, indem XOR-Werte vom obersten Bit nach unten akkumuliert werden.

Paritätsbits: Einzelbitfehler erkennen

Ein Paritätsbit ist ein einzelnes zusätzliches Bit, das an ein Datenwort angehängt wird, so gesetzt, dass die Gesamtzahl der Einsen (einschließlich des Paritätsbits) immer gerade (gerade Parität) oder immer ungerade (ungerade Parität) ist. Kippt bei der Übertragung oder Speicherung genau ein Bit — durch Rauschen, kosmische Strahlung, eine lockere Verbindung — stimmt die Parität nicht mehr, und die empfangende Schaltung kann den Fehler melden.

Parität kann ein einzelnes umgekipptes Bit zuverlässig erkennen, aber nicht zwei gleichzeitig umgekippte Bits (zwei Kipper heben sich auf, und die Parität stimmt trotzdem) — deshalb verwenden kritischere Systeme stärkere fehlerkorrigierende Codes, die auf dieser Grundidee aufbauen.

Wo sie verwendet werden

Gray-Code kommt in Dreh- und Linearpositionsgebern, in Zählern, die Taktdomänen überschreiten, und in der Achsenanordnung von Karnaugh-Diagrammen vor (der Artikel „Karnaugh-Diagramme" nutzt genau diese Eigenschaft). Paritätsbits schützen RAM, serielle Verbindungen und einfache Speicherbusse. Boolflow bietet fertige Blöcke Binär→Gray, Gray→Binär und Parity — laden Sie ein Gray-Code-Beispiel und vergleichen Sie einen Binärzähler mit seiner Gray-codierten Ausgabe, um zu sehen, dass sich pro Schritt nur ein Bit ändert.

Gray-Code-Zähler-Beispiel laden