z. B. BCH-Codes oder Reed-Solomon

Werbung
HS Aschaffenburg
IW
Dr.-Ing. Wilfried Dankmeier
Eppstein im Taunus, 20.04.2010
Zur Mehrbitfehlerkorrektur mit zyklischen Codes (z. B. BCH-Codes oder Reed-Solomon-Codes)
(siehe auch „Grundkurs Codierung“, Unterkapitel 2.2 und 3.7)
Hierfür sind endliche Körper, die Galoiskörper oder Galoisfelder, hilfreich. Ein algebraischer Körper besteht
aus einer endlichen oder unendlichen Menge von Elementen, bei denen die Addition, Subtraktion,
Multiplikation und Division wieder ein Element der Menge ergibt. Außerdem enthält sie ein Nullelement (das
kann z. B. die „0“ sein) und ein Einselement (das kann z. B die „1“ sein). Bei den „Alltagszahlen“ sind es
etwa die rationalen Zahlen oder die reellen Zahlen, die diese Eigenschaften aufweisen.
Galoisfelder lassen sich aus Nullstellen irreduzibler Polynome über Primzahlenkörpern Z p , mit p = 2, 3, 5, .
(Primzahle) aufbauen. Ein irreduzibles Polynom über Z p lässt sich nicht als Produkt von Polynomen
geringerer Ordnung über Zp darstellen (es ist in dieser Eigenschaften den Primzahlen ähnlich).
Irreduzible Polynome über Zp gibt es mit jedem Grad m = 1, 2, 3, 4, 5, ....
Für die Zwecke der Fehler-korrigierenden Codes ist der Primzahlenkörper Z2 besonders gut geeignet
(warum?).
Ein irreduzibles Polynom mit dem Grad m = 3 über Z 2 ist f(x) = x3 + x + 1 (das einzige weitere mit m = 3 ist
f(x) = x3 + x2 + 1). Es liefert mit f(α) = α 3 + α + 1 = 0 die Nullstelle α. Wegen α 3 = + α + 1 ist daher die
Potenz α3 mit α + 1 verknüpft. Daraus ergibt sich für die Potenzen von α die folgende Tabelle:
Galoisfeld GF(23)
als Polynom in α
Nr.
Element
alternativ
Kurzform
1
0
=
0
=
0
=
000
2
α0
=
1
=
0⋅α2 + 0⋅α1 +1 ⋅α0
=
001
3
α1
=
α0⋅α
=
0⋅α2+ 1 ⋅α1 +0⋅α0
=
010
4
α2
=
α1 ⋅α
=
1 ⋅α2+ 0⋅α1 +0⋅α0
=
100
5
α3
=
α2⋅α
=
0⋅α2+ 1 ⋅α1 +1 ⋅α0
=
011
6
α4
=
α3⋅α
=
1 ⋅α2+ 1 ⋅α1 +0⋅α0
=
110
7
α5
=
α4⋅α
=
1 ⋅α2+ 1 ⋅α1 +1 ⋅α0
=
11 1
8
α6
=
α5⋅α
=
1 ⋅α2+ 0⋅α1 +1 ⋅α0
=
101
9=2
α7
=
α6⋅α
=
0⋅α2+ 0⋅α1 +1 ⋅α0
=
001
10=3
α8
=
α7⋅α
=
0⋅α2+ 1 ⋅α1 +0⋅α0
=
010
....
....
...
....
....
....
....
....
Nimmt man die „0“ hinzu, enthält sie mit den ersten 7 Potenzen von α einen endlichen Körper, das
Galoisfeld GF(23).
Die Stellenzahl der damit aufbaubaren Codes ist immer n= 2m – 1, wobei m den Grad des höchsten im
Generatorpolynom g(x) vorkommenden irreduziblen Polynoms über Z 2 angibt.
Codierungsverfahren
Copyright 2010
Seite 1 von 3
HS Aschaffenburg
IW
Dr.-Ing. Wilfried Dankmeier
Eppstein im Taunus, 20.04.2010
Hier einige Polynome über Z2 für die Grade m = 1, 2 , 3, 4:
m
m
m
m
=
=
=
=
1:
2:
3:
4:
x 1 1
x 2 x 1 1
x 3 x 1 1 u n d x 3 x 2 1
x 4 x 1 1 u n d x 4 x 3 x 2 x 1 1
Ein Galoisfeld GF(24) kann über
u n d x 4 x 3 1
das definierende Polynom f(x) = x4 + x + 1 für das Element β wie
folgt aufgebaut werden:
als Polynom in β
Nr.
Element
alternativ
Kurzform
1
0
=
0
=
0
=
0000
2
β0
=
1
=
0⋅β3+0⋅β2 + 0⋅β1 +1 ⋅β0
=
0001
3
β1
=
β0⋅β
=
0⋅β3+0⋅β2 +1 ⋅β1 +0⋅β0
=
0010
4
β2
=
β1 ⋅β
=
0⋅β3+1 ⋅β2 + 0⋅β1 +0⋅β0
=
0100
5
β3
=
β2 ⋅β
=
1 ⋅β3+0⋅β2 + 0⋅β1 +0⋅β0
=
1000
6
β4
=
β3 ⋅β
=
0⋅β3+0⋅β2 + 1 ⋅β1 +1 ⋅β0
=
0011
7
β5
=
β4 ⋅β
=
0⋅β3+1 ⋅β2 + 1 ⋅β1 +0⋅β0
=
0110
8
β6
=
β5 ⋅β
=
1 ⋅β3+1 ⋅β2 + 0⋅β1 +0⋅β0
=
1100
9
β7
=
β6 ⋅β
=
1 ⋅β3+0⋅β2 + 1 ⋅β1 +1 ⋅β0
=
101 1
10
β8
=
β7 ⋅β
=
0⋅β3+1 ⋅β2 + 0⋅β1 +1 ⋅β0
=
0101
11
β9
β8 ⋅β
1 ⋅β3+0⋅β2 + 1 ⋅β1 +0⋅β0
1010
12
β10
β9 ⋅β
0⋅β3+1 ⋅β2 + 1 ⋅β1 +1 ⋅β0
011 1
13
β11
β10 ⋅β
1 ⋅β3+1 ⋅β2 + 1 ⋅β1 +0⋅β0
1110
14
β12
β11 ⋅β
1 ⋅β3+1 ⋅β2 + 1 ⋅β1 +1 ⋅β0
111 1
15
β13
β12 ⋅β
1 ⋅β3+1 ⋅β2 + 0⋅β1 +1 ⋅β0
1101
16
β14
β13 ⋅β
1 ⋅β3+0⋅β2 + 0⋅β1 +1 ⋅β0
1001
17
β15
β14 ⋅β
0⋅β3+0⋅β2 + 0⋅β1 +1 ⋅β0
0001
Der damit konstruierbare Code hat die Länge n = 2 4 – 1 = 15. Er ist zur Korrektur von tko = 1, 2, oder 3
Fehlern (Voraussetzung immer: HD-Demodulation. Für Soft-Decision SD kann man bessere = geringere
Restfehlerraten erwarten ).
Aber Vorsicht: Für Codes zur Korrektur von tkor Fehlern sind nur ganz bestimmte Kombinationen
irreduziblen Polynomen geeignet (Begründung siehe „Grundkurs Codierung“, Unterkapitel 3.7).
von
Hier der prinzipielle Weg zur Erzeugung von zyklischen Codewörtern und zur Decodierung der HDCodierungsverfahren
Copyright 2010
Seite 2 von 3
HS Aschaffenburg
IW
Dr.-Ing. Wilfried Dankmeier
Eppstein im Taunus, 20.04.2010
Empfangswörter w(x):
Nullstellen im GF(2 m )
a 1 , a 2, ..... , a t
irreduzible Teilpolynome hierzu
g 1 (a1 )= 0, g 2 (a)= .0, ....., g(t )= 0
Generatorpolynom
g(x) = g 1 (x)·g 2(x)· ...... g t(x)
Infopolynom
u(x)
Codewortpolynom
u(x)·x grad g(x) + [u(x)·xgrad g(x)] MOD g(x)
Fehlerpolynom
e(x)
Empfangswortpolynom
w(x) = v(x) + e(x)
Syndrompolynom
s(x) = w(x) MOD g(x) = e(x) MOD g(x)
Werte von s(x) an den Null stellen:
- für x= a 1
s(a1 )= v(a1 )+ e(a1 )= 0 + e(a1 )= e(a1 )
- für x = a 2
s(a2 )= v(a2)+ e(a2)= 0 + e(a2)= e(a2)
-.........
.........
- für x = a t
s(at )= v(at)+ e(at)= 0 + e(at)= e(at)
Codierungsverfahren
Copyright 2010
Seite 3 von 3
Herunterladen