Grundlagen der Technischen Informatik Hamming-Codes Kapitel 4.3
Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software-Co-Design
Grundlagen der Technischen Informatik
Inhalt • Welche Eigenschaften müssen Codes haben, um Mehrfachfehler erkennen und sogar korrigieren zu können? (Also: mehrere Bits „kippen“ von 0 auf 1 bzw. von 1 auf 0)
• Wie erzeuge ich Codes, bei denen Einfachfehler korrigiert und Zweifachfehler erkannt werden können?
1011100
Es könnte ein Fehler aufgetreten sein! Welches ist das korrekte Codewort?
Grundlagen der Technischen Informatik 2
Hamming-Distanz • Welche Hamming-Distanz ist erforderlich, um eine geforderte Anzahl von Fehlern erkennen bzw. korrigieren zu können? • Satz: Zusammenhang zwischen HDmin und Anzahl erkennbarer / korrigierbarer Fehler a.) Sei X {0, 1}n ein Code mit HDmin(X) = d Dann sind bis zu (d –1)-Fehler erkennbar! b.) Sei HDmin(X) = d = 2e + 1 Dann sind bis zu e = ((d – 1) / 2)-Fehler korrigierbar!
Grundlagen der Technischen Informatik 3
Hamming-Distanz • Beweis: – Zu a.): Bei bis zu (d – 1) gleichzeitigen Fehlern ist man sicher, dass kein gültiges Codewort vorliegt, da alle gültigen Codewörter mindestens Hammingdistanz d haben per Definition. – Zu b.): Jedes empfangene Codewort CWi mit höchstens e´ (= 2e´ + 1 – e´ = e´+ 1 Binärstellen Also: HDik >= e´+ 1, d.h. das ursprünglich gesendete Codewort CWj ist eindeutig aus dem empfangenen (ggf. fehlerhaften) CWi zuzuordnen!
Grundlagen der Technischen Informatik 4
Hamming-Distanz • Beispiel 1: X {0,1}3 und HDmin(X)=3 2-Fehler erkennen 1. Fehler
111
2. Fehler
Erkennungsgrenze
000 110
101
100
010
001
011
000
111
Erkennungsgrenze
2. Fehler
011
1. Fehler
oder x3
001 x2
x1
1-Fehler korrigieren Korrektur
Korrekturgrenze
Korrektur
000
111 Fehler 001
011 Fehler
Achtung: Die beiden Möglichkeiten sind alternativ! Grundlagen der Technischen Informatik 5
Hamming-Distanz • Beispiel 2: HDmin(X)=6 Variante I: 5-Fehler erkennen 1.Fehler 000000 Erkennungsgrenze
Erkennungsgrenze 2.Fehler 3.Fehler 4.Fehler 5.Fehler 111111 5.Fehler 4.Fehler 3.Fehler 2.Fehler 1.Fehler
000001
000011
000111
001111
011111
Variante II: 1-Fehler korrigieren und bis zu 4-Fehler erkennen Korrektur 1.Fehler 000000
Erkennungsgrenze 2.Fehler
3.Fehler
Korrektur
4.Fehler
111111 4.Fehler 3.Fehler 2.Fehler 1.Fehler 000001 000011 000111 001111 011111 Erkennungsgrenze Grundlagen der Technischen Informatik 6
Hamming-Distanz • Beispiel 2: HDmin(X)=6 Variante III: 2-Fehler korrigieren und bis zu 3-Fehler erkennen Erkennungsgrenze
Korrektur 1.Fehler 000000
2.Fehler
000001
Korrektur
3.Fehler
000011
111111 3.Fehler 2.Fehler 1.Fehler 000111 001111 011111
Erkennungsgrenze
Achtung: die drei Varianten sind alternativ!
Grundlagen der Technischen Informatik 7
Erhöhung des Hamming-Abstandes • Erhöhung der min. Hamming-Distanz durch Paritätsbildung Bsp: 001100 1 001100 HD = 2
001101 0
001101
• Problem: Das Verfahren ist nicht trivial durch weitere Prüfstellen erweiterbar! Bsp: 001100 1 001100 1 0
HD = 2
001101 0
001101 0 0
Hier keine Erhöhung des Hamming-Abstandes durch zusätzliche Prüfbits! Grundlagen der Technischen Informatik 8
Fehlerkorrektur • Wie erzeuge ich Codes X, bei denen Einfachfehler korrigiert und Zweifachfehler erkannt werden können? d.h. HDmin(X) = 3 • Trick: Generiere Prüfsummen nur auf Teilwörtern. • Beispiel: Die 4 Bit Binärzahl X=(x4, x3, x2, x1) soll durch den Prüfvektor Y=(y3, y2, y1) 1-Fehler korrigierbar gemacht werden.
X
Prüfbitgenerator
(X,Y)
(X',Y')
Kanal
Grundlagen der Technischen Informatik 9
Fehlerkorrektur
X
Fehlerkorrektur Überdeckung der Stellen xi durch Prüfbits
y2
x1
y1 x2
x4
x3
y3 y1 = x4 x2 x1 y2 = x4 x3 x1 y3 = x4 x3 x2
• Jedes Element xi wird durch eine eindeutige Kombination von Prüfbits gesichert. • Beispiel: ein Einzelfehler an der Stelle x1 verändert genau die Prüfbits y1 und y2. • Einzelfehler von Prüfbits sind auch erkennbar. XOR „“ ist „1“, wenn ungerade Anzahl an Argumenten den Wert „1“ haben yj entspricht Paritätsbit der überprüften Stellen bei gerader Parität
Grundlagen der Technischen Informatik 10
Fehlerkorrektur X
Prüfbitgenerator
(X,Y)
Fehlerkorrektur
(X',Y')
Kanal
(X,Y) = (1 0 0 1, 11 00 00)
x4 x3 x2 x1= 1 0 0 1 Prüfbitgenerator: y1 = x4 x2 x1 y2 = x4 x3 x1 y3 = x4 x3 x2
y2
x1
y1 x2
x4 y3
Grundlagen der Technischen Informatik 11
x3
X
1-Fehler
Fehlerkorrektur X
Prüfbitgenerator
(X,Y)
(X,Y) = (1 0 0 1, 1 0 0)
x2
x4 y3
x3
Fehlerkorrektur
(X',Y')
X
(X‘,Y‘) = (1 0 0 0 , 1 0 0) y2
x1
y1
Kanal
Y*(1 0 0 0) = 1 1 1 Vergleich: y*3 y*2 y*1 = 1 1 1 y‘3 y‘2 y‘1 = 1 0 0
Änderung von y*2 und y*1 ist Indikator für den Fehler an Stelle x1, also X = 1 0 0 1. Grundlagen der Technischen Informatik 12
Konstruktion von Hamming-Codes Zuordnung der Informationsstellen xi zu den Prüfstellen yj •
•
Die Stellen xi und yj lassen sich gemeinsam in einem Schema darstellen, das der Binärdarstellung ab dem Wert 1 entspricht („duale Kennzahlen“). Beispiele: Eintrag (1) 001, Eintrag (6) 110 (in der Tabelle von unten gelesen)
x4 x3
x2
y3
x1
y2
y1
0
(7)
(6)
(5)
(4)
(3)
(2)
(1)
(0)
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
1
1
0
0
0
0
Grundlagen der Technischen Informatik 13
Konstruktion von Hamming-Codes Zuordnung der Informationsstellen xi zu den Prüfstellen yj • • •
Prüfstellen yj besitzen nur eine einzige 1 in einer Spalte. Alle anderen Spalten stellen (von rechts beginnend) die Stellen xi da. Eine Prüfstelle yj überprüft alle Informationsstellen xi, die in der Zeile, in der yj den Wert 1 besitzt, selbst eine 1 in der Tabelle haben.
•
Beispiel: y2 überprüft x4, x3 und x1.
x4 x3
x2
y3
x1
y2 y1
(7)
(6)
(5)
(4)
(3)
(2)
(1)
1
0
1
0
1
0
1
1
1
0
0
1
1
0
1
1
1
1
0
0
0
Grundlagen der Technischen Informatik 14
Hamming-Codes • Beispiel: y1 = x4 x2 x1 y2 = x4 x3 x1 y3 = x4 x3 x2
Informationsstellen (m = 4)
Codewort 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
CW CW CW CW CW CW CW CW CW CW CW CW CW CW CW CW
Prüfstellen (k = 3)
x4
x3
x2
x1
y3 y2 y1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1
Grundlagen der Technischen Informatik 15
0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1
0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1
Dezimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Konstruktion von Hamming-Codes Zuordnung der Informationsstellen – Erweiterung des Schemas
•
x11 x10 x9
x8
x7
x6
x5
y4
x4
x3
x2
y3
x1
y2
y1
0
(15)
(14)
(13)
(12)
(11)
(10)
(9)
(8)
(7)
(6)
(5)
(4)
(3)
(2)
(1)
(0)
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
Allgemein: Bei m Informationsstellen xi werden k Prüfstellen yj zur Bildung des Hamming-Codes (HDmin=3) benötigt:
2k - k - 1 m •
Beispiele:
m k
2…4 3
5 … 11 4
12 … 26 5
Grundlagen der Technischen Informatik 16
27 … 57 6
Prüfbare und korrigierbare Codes – Notwendige Anzahl von Prüfstellen k in Abhängigkeit der Anzahl der Informationsstellen m, um minimale Hamming-Distanz HDmin = d zu erhalten
k
m
Grundlagen der Technischen Informatik 17
Fehlerkorrektur
Prüfbitgenerierung x1 x2 x3 x4
X
y1 = x1 x2 x4 Y X
Prüfbitgenerator
y2 = x1 x3 x4 (X,Y)
Kanal
(X',Y')
y3 = x2 x3 x4
XOR ergibt dann „1“ wenn eine ungerade Anzahl an Argumenten den Wert „1“ haben Grundlagen der Technischen Informatik 18
x1
x2
x4
y1
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
X Fehler1 0 0 korrektur
1
1
0
1
0
1
1
0
0
1
1
1
1
Fehlerkorrektur X
Prüfbitgenerator
x'1 x'2 x'3 x'4
(X,Y)
Kanal
(X',Y')
X
Korr. Korr. Korr. Korr.
y*1 y*=y' y*2 y*=y' y*3 y*=y'
y'1 y'2 y'3
Fehlerkorrektur
y2 x1 y1 x4 x2 x3 y3
Vergleiche berechnetes Prüfbit mit dem Übertragenen Grundlagen der Technischen Informatik 19
X