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

Documents pareils