Die bisherigen Überlegungen zeigen, zur Bestimmung aller irreduzibeln Polynome mten Grades benötigt man lediglich:
Unter niedrigster Wurzel ist natürlich die Wurzel mit der niedrigsten Potenz der Wurzel gemeint. h stellt hier die Häufigkeit bzw. die Anzahl der irreduzibeln Polynome mten Grades dar. Zur vollständigen Bestimmung des Minimalpolynoms müssen alle konjugierten Wurzeln bekannt sein. Die konjugierten Wurzeln können wie bereits erwähnt aus Potenzen von niedrigster Wurzel ai gewonnen werden. Schematisch werden sie mit der Darstellung (11) erfasst. Für l = 0 ergibt die niedrigste Wurzel ai. Ab l = 1 bekommt man die konjugierten Wurzeln. l wird in Schritten von 1 inkrementiert bis (i * 2^l) modulo n ≠ i bleibt. n stellt die Zykluslänge des Generator-Polynoms dar.
a(i * 2^l) modulo n, l = 0,1, 2… (11)
Für die Polynome 4ten Grades gibt es 4 irreduzibeln Polynome. a stellt die niedrigste Wurzel des Generator-Polynoms dar. Mit der Darstellung gemäß (11) werden nun die konjugierten Wurzeln von a bestimmt. Die Gesamtheit der konjugierten Wurzel des Generator-Polynoms sind dann a, a2, a4, a8. Die nächste unverbrauchte niedrigste Wurzel ist a3 und dient zur Bestimmung des nächsten Minimalpolynoms. Die konjugierten Wurzeln dieses Polynoms sind a3, a6, a12, a9. Dieses Schema wird fortgeführt bis alle 4 Minimalpolynome ermittelt werden. Mit der Bestimmung des letzten Polynoms finden dann alle 14 (2m – 2) Wurzeln a1 bis a14 genau einmal den Einsatz, wie es auch aus der Tabelle IV erkannt wird.
3. BCH-Codes
3.1 Primitive BCH-Codes
Die Art und Weise wie die irreduzibeln Polynome entstehen ist ideal zur Bildung von BCH-Codes. Der BCH-Code hat die Eigenschaft, dass dieser d – 1 Wurzeln in Folge besitzt und seine Hamming-Distanz HD mindestens d beträgt. [4] Wenn man die 4 Minimalpolynome m1, m3, m5 und m7 aus der Tabelle IV sukzessiv miteinander multipliziert so entstehen 4 Polynome mit den Eigenschaften eines BCH-Codes. Der Code heißt primitiver BCH-Code, wenn zur Bildung des Codes, Minimalpolynome, abgeleitet mit einem primitiven Generator-Polynom wie z. B. 19h, den Einsatz finden. In der Tabelle V sind die primitiven BCH-Codes zusammengestellt. Das erste Polynom ist identisch mit dem Minimalpolynom m1 19h und besitzt zwei Wurzeln a1 und a2 in Folge mit einer Hamming-Distanz von 3. Das Produkt von m1 und m3 hat 4 aufeinander folgenden Wurzeln a1, a2, a3 und a4 mit einer HD = 5. Der dritte Code ist das Produkt von m1, m3 und m5 mit 6 Wurzeln, die in einer Reihe folgen. Die Hamming-Distanz beträgt somit 7. Letztendlich beinhaltet das Produkt von allen 4 Minimalpolynomen sämtliche 14 Wurzeln und hat eine HD von 15. Dieses Polynom stellt gemäß Glg. (5) ein Maximalpolynom dar. Alle diese Polynome haben eine Zykluslänge von 15. Durch die sukzessive Produktbildung wächst jedoch der Grad rb des BCH-Codes rasch an, wie es aus der Tabelle V deutlich wird. Somit nimmt natürlich mit den wachsenden Grad die Anzahl der Informationsbits k, die übertragen werden können, schnell ab. Für den ersten BCH-Code sind es 11 Bits und für das Maximalpolynom kann nur ein einziges Bit übertragen werden. Interessant ist zu merken, dass die Hamming-Distanz von BCH-Code bi identisch ist mit der Potenz der niedrigsten Wurzel des nächsten Minimalpolynoms mx in aufsteigender Folge.
Polynom | rm | Wurzeln | BCH-Code bi | rb | HD | k I-Bits | ||
m1 | 19h | 4 | a1, a2, a4, a8 | b1 = m1 | 19h | 4 | 3 | 11 |
m3 | 1Fh | 4 | a3, a6, a12, a9 | b2 = m1*m3 | 117h | 8 | 5 | 7 |
m5 | 7h | 2 | a5, a10 | b3 = m1*m3*m5 | 765h | 10 | 7 | 5 |
m7 | 13h | 4 | a7, a14, a13, a11 | b4 = m1*m3*m5*m7 | 7FFFh | 14 | 15 | 1 |
Tabelle V Die Primitiven BCH-Codes generiert mit dem Polynom 19h |
3.2 Nichtprimitive BCH-Codes
Im Gegensatz zu primitiven BCH-Codes werden zur Generierung eines nichtprimitiven BCH-Codes die Minimalpolynome, abgeleitet mit einem nichtprimitiven Polynom, die selbst verständlich irreduzibel sein müssen, herangezogen. Die Zykluslänge n eines nichtprimitiven Polynoms mten Grades ist kleiner als 2m – 1 und für ein beliebiges Element a des Feldes GF(n + 1) muss die Glg. (1), an = 1, erfüllt werden (siehe hierzu auch 2.4). Andererseits bildet das Feld GF(n + 1) eine Untermenge von GF(2m). Für das Galois-Feld GF(2m) muss jedoch die Glg. (2), a^(2m – 1) = 1, erfüllt werden. Diese beiden Forderungen, dargestellt durch die Glg. (12), lassen sich nur dann in Einklang bringen, wenn n ein Teiler von 2m - 1 ist.
an = a^(2m – 1) = 1 (12)
Kurz gesagt heißt das, die Zykluslänge von nichtprimitiven Polynomen (irreduzibel aber nichtprimitiv) mten Grades muss ein Teiler von 2m – 1 sein. Ist 2m – 1 eine Primzahl, so gibt es keine nichtprimitiven Polynome mten Grades. Die Zykluslänge von 15 (m = 4) hat zwei Teiler 3 und 5. Nur die Zykluslänge 5 kann mit einem Polynom 4ten Grades realisiert werden. Die Tabelle IV zeigt, dass ein nichtprimitives Polynom 1Fh eine Zykluslänge von 5 hat. Für das Polynom 1Fh gibt es nur einen BCH-Code, da das Polynom 1Fh bereits ein Maximalpolynom (n – 1)ten Grades ist. Ein weiteres interessantes Beispiel stellt die Zykluslänge 23 dar. 23 ist Teiler von 2047 = 23 * 89. Ein Polynom 11ten Grades mit einer Zykluslänge von 23 kann gemäß der Glg. (10) mit einem Minimalpolynom mit der Wurzel a89 gebildet werden. Um das Polynom zu bestimmen benötigt man ein primitives Polynom 11ten Grades mit dem zunächst das Galois-Feld GF(211) generiert wird. Das Minimalpolynom der Wurzel a89 dieses Feldes kann dann als C75h bestimmt werden, wenn zur Generierung des Feldes das primitive Polynom A01h genommen wird. Die 11 konjugierten Wurzeln des Polynoms C75 sind:
a, a2, a4, a8, a16, a9, a18, a13, a3, a6, a12
Das Polynom besitzt somit 4 Wurzeln a1 bis a4 in der Folge. Die Hamming-Distanz dieses Polynoms muss demnach mindestens 5 betragen. Das Polynom C75h ist in der Literatur als Golay-Code mit einer Zykluslänge von 23 und mit einer Hamming-Distanz von 7 bekannt und findet große Beachtung.