BCH-Code

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

BCH-Codes (Bose-Chaudhuri-Hocquenghem-Codes) sind zyklische fehlerkorrigierende Codes, welche in der digitalen Signalverarbeitung und Datenspeicherung eingesetzt werden. Der Name BCH ergibt sich aus den Anfangsbuchstaben der drei Wissenschaftler, die diesen Code entwickelt haben: R. C. Bose, D. K. Ray-Chaudhuri und A. Hocquenghem. BCH-Codes korrigieren mehrere 1-Bit Fehler in einem längeren Nutzer-Datenwort.


Inhaltsverzeichnis

[Bearbeiten] Definition

Sei β eine primitive n-te Einheitswurzel in einem Erweiterungskörper des endlichen Körpers \mathbb F_q. Seien  l,\delta \in \mathbb{N}, \delta \ge 2, und C der zyklische Code dessen Generatorpolynom das Produkt der verschiedenen Minimalpolynome \beta^l, \dots \beta^{l+\delta-2} ist. (Dann besteht C also aus allen f \in \mathbb F_q[x]/(x^n-1) mit f(\beta^l) = \dots = f(\beta^{l+\delta-2})=0 ), dann nennt man C einen BCH-Code mit geplantem Minimalabstand δ. Beachte, dass C Minimalabstand d \ge \delta hat.

Für den Fall l = 1 spricht man von einem BCH-Code im gewöhnlichen Sinn.

Falls ein m existiert mit n = qm − 1 (d.h. β ist ein Erzeuger der multiplikativen Gruppe eines Körpers \mathbb F_{q^m}), so spricht man von einem primitiven BCH-Code.

Ein Reed-Solomon-Code ist ein primitiver BCH-Code im gewöhnlichen Sinn, für den n = q − 1 gilt.

[Bearbeiten] Einsatzbereiche

  • Die sogenannten Reed-Solomon-Codes sind spezielle BCH-Codes und werden z.B. zur Fehlerkorrektur auf Audio-CDs eingesetzt.
  • Der BCH-Code wird auch bei der Sicherung der TPS-Daten im DVB-T Standard genutzt.

[Bearbeiten] Beispiel BCH(15, 7, 5)

Als Beispiel sei ein (n = 15, l = 7, dmin = 5) BCH-Code gegeben. Die Parameter n, l, dmin sind dabei wie folgt zu interpretieren. Der Code erzeugt Codewörter mit einer Länge von n = 15 Bits, wovon l = 7 Bits die kodierte Information enthalten und k = n - l Bits Redundanz zur Korrektur von Übertragungsfehlern dienen. Der Parameter dmin gibt die minimale Hammingsdistanz des Codes an.

Es gilt: Es können Übertragungsfehler von bis zu dmin − 1 Einzelbitfehlern erkannt werden, es können Übertragungsfehler von bis zu (dmin − 1) / 2 Einzelbitfehlern korrigiert werden. Bündelfehler von bis zu f_\mathrm{b} \le k Bits werden erkannt.

Ein BCH-Code wird in der Regel durch sein Generatorpolynom beschrieben. Im gegebenen Beispiel lautet das Generatorpolynom g(x) = x8 + x7 + x6 + x4 + 1. Die Anzahl der Prüfbits k lässt sich übrigens immer aus dem Generatorpolynom ablesen. Es gilt k = \operatorname{Grad}(g).

[Bearbeiten] Kodieren

Zum Kodieren mit BCH-Kodes können das Multiplikations- oder das Divisionsverfahren verwendet werden.

[Bearbeiten] Multiplikationsverfahren

Beim Multiplikationsverfahren wird das zu kodierende Quellkodewort aus l = 7 Bits einfach mit dem Generatorpolynom des BCH-Codes multipliziert. Es gilt: a(x) = a^*(x) \cdot g(x). Dabei steht a(x) für das kodierte Kanalkodewort, a*(x) steht für das unkodierte Quellkodewort. Die Multiplikation kann sowohl mit Polynomen als auch mit einer binären Darstellung der Polynome durchgeführt werden.

Hier wollen wir ein Beispiel in binärer Darstellung durchrechnen:

Das gegebene Generatorpolynom g(x) = x8 + x7 + x6 + x4 + 1 lässt sich binär als die Folge g = 111010001 darstellen (die Folge ist dabei zu interpretieren als g(x) = 1 \cdot x^8 + 1 \cdot x^7 + 1 \cdot x^6 + 0 \cdot x^5 + 1 \cdot x^4 + 0 \cdot x^3 + 0 \cdot x^2 + 0 \cdot x^1 + 1 \cdot x^0).

Als zu kodierendes Quellkodewort dient in unserem Beispiel a * = 1001011 bzw. a^*(x) = 1 \cdot x^6 + 0 \cdot x^5 + 0 \cdot x^4 + 1 \cdot x^3 + 0 \cdot x^2 + 1 \cdot x^1 + 1 \cdot x^0.

Um das kodierte Kanalkodewort zu erhalten, müssen wir jetzt also einfach a* mit g multiplizieren:

a = a^* \cdot g = 1001011 \cdot 111010001 = 1000100000111011

[Bearbeiten] Divisionsverfahren

In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Gleiches Beispiel mit Divisionsverfahren

Du kannst Wikipedia helfen, indem du sie recherchierst und einfügst.

[Bearbeiten] Dekodieren

Die Dekodierung kann mittels Division erfolgen. Das Kanalkodewort a(x) wird einfach durch das Generatorpolynom g(x) dividiert. Ist der Rest dieser Division null, trat kein erkennbarer Übertragungsfehler auf. Bei einem Rest ungleich null ist dagegen ein erkennbarer Übertragungsfehler aufgetreten.

In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Beispielrechnung sowohl ohne Übertragungsfehler, als auch mit

Du kannst Wikipedia helfen, indem du sie recherchierst und einfügst.

Persönliche Werkzeuge