250 likes | 632 Views
Fehlererkennende Codes. Paritätsprüfung. Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle Ungerade Anzahl von Bitfehlern kann erkannt, aber nicht behoben werden Weiterentwicklungen: Hamming-Code, ECC. Beispiel (even)
E N D
Fehlererkennende Codes Paritätsprüfung • Paritätsbit / Prüfbits • Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle • Ungerade Anzahl von Bitfehlern kann erkannt, aber nicht behoben werden • Weiterentwicklungen: Hamming-Code, ECC Beispiel (even) 10011101| P = 1 (5 Einsen) 10100110 | P = 0 (4 Einsen) 1 0
Fehlererkennende Codes Hamming-Distanz • Richard W. Hamming (1915 – 1998) • Hamming-Distanz zweier binärer Blöcke gleicher Länge ergibt sich aus Anzahl der Nicht-Übereinstimmungen im bitweisen Vergleich( Einsen bei XOR-Operation) • Hamming-Distanz eines Codes aus Wörtern gleicher Länge: Minimum der paarweisen Hamming-Distanzen
Fehlererkennende Codes Hamming-Distanz • kleine Hamming-Distanz Fehlerkorrektur schwieriger • Allgemein: um r Bitfehler korrigieren zu können, muss für die Hamming-Distanz h eines Codesgelten: h ≤ 2r + 1 Beispielh = 3, c = {010, 101} alle ungültigen Code- wörter können erkannt und korrigiert werden {000, 110, 011} für 010
Fehlererkennende Codes Hamming-Code • Fehlerkorrigierender Code mit Mindest-Hammingabstand von 3 • (7,4) ist einfachster Hamming-Code: 4 Bit Nutzdaten, 3 Prüfbits • Hamming-Codes sind perfekt, d.h. jedes Wort ist entweder Codewort oder hat Hamming-Abstand von 1 zu gültigen Codewort • Bits werden durchnummeriert, Positionen mit Zweierpotenz werden Prüfbits • Paritäten für Reihen von Einzelbits bestimmen( jedes Bit kann in mehrere Prüfbits eingehen) • Erstellung der Kontrollmatrix, Bestimmung der Prüfbits
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1 usw.
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1 gerade Anzahl
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1
Fehlererkennende Codes Hamming-Code – Beispiel • (15,11)-Code: 00 01 01 11 00 1 • P0 = 1, P1 = 1, P2 = 0, P3 = 1
Fehlererkennende Codes Hamming-Code – Beispiel (Erkennung) • (15,11)-Code: 000 101 110 000 111 Fehler bei P0, P1 und P2 Fehler an Stelle 20 + 21 + 22 = 1 + 2 + 4 = 7
Fehlererkennende Codes CRC – zyklische Redundanzprüfung • CRC beruht auf Polynomdivision, d.h. Folge von zu übertragenden Bits wird als Polynom betrachtet • Ablauf • Bitfolge wird um Grad(G(x)) Nullen ergänzt und durch festgelegtes Polynom G(x) (Generatorpolynom) geteilt (mit Rest!) • Rest wird bei Übertragung an Datenblock angehängt • Empfangener Datenblock wird wieder durch Generatorpolynom geteilt, bei fehlerfreier Übertragung bleibt Rest 0
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 1101011011
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 11010110110000
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 11010110110000 10011 10011
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 11010110110000 10011 10011 10011 10110
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 11010110110000 10011 10011 10011 10110 10011 10100
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 11010110110000 10011 10011 10011 10110 10011 10100 10011 1110
Fehlererkennende Codes CRC – Beispiel Datenframe: 1101011011 Generator: G(x) = x4 + x + 1 (10011) 11010110110000 10011 10011 10011 10110 10011 10100 10011 1110 Anmerkung Bestimmte Generatorpolynome empirisch besser geeignet CRC-32 CRC-16