Hamming-Codes - Informatik 12
Transcription
Hamming-Codes - Informatik 12
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´ (<=e) Fehlern unterscheidet sich vom gesendeten Codewort CWj an höchstens e´ Stellen, d.h. von jedem anderen gültigen Codewort CWk X unterscheidet sich CWi an mindestens d - e´=(2e + 1) – 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