25
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 Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Embed Size (px)

Citation preview

Page 1: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

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)

10

Page 2: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

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

Page 3: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

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

Page 4: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

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

Page 5: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1)

P1 (21 = 2)

P2 (22 = 4)

P3 (23 = 8)

Page 6: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x

P1 (21 = 2) x

P2 (22 = 4) x

P3 (23 = 8) x

Page 7: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x

P1 (21 = 2) x x

P2 (22 = 4) x x

P3 (23 = 8) x x

Page 8: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x

P1 (21 = 2) x x

P2 (22 = 4) x x x

P3 (23 = 8) x x x

Page 9: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x

P1 (21 = 2) x x

P2 (22 = 4) x x x x

P3 (23 = 8) x x x x

Page 10: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x

P1 (21 = 2) x x x

P2 (22 = 4) x x x x

P3 (23 = 8) x x x x x

Page 11: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x

P1 (21 = 2) x x x x

P2 (22 = 4) x x x x

P3 (23 = 8) x x x x x x

usw.

Page 12: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 P3 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x x x x x x

P1 (21 = 2) x x x x x x x x

P2 (22 = 4) x x x x x x x x

P3 (23 = 8) x x x x x x x x

Page 13: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 1 1 0 0 P2 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x x x x x x

P1 (21 = 2) x x x x x x x x

P2 (22 = 4) x x x x x x x x

P3 (23 = 8) x x x x x x x x gerade Anzahl

Page 14: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 1 1 0 0 0 1 P1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x x x x x x

P1 (21 = 2) x x x x x x x x

P2 (22 = 4) x x x x x x x x

P3 (23 = 8) x x x x x x x x

Page 15: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

0 0 0 1 0 1 1 1 1 0 0 0 1 1 P0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x x x x x x

P1 (21 = 2) x x x x x x x x

P2 (22 = 4) x x x x x x x x

P3 (23 = 8) x x x x x x x x

Page 16: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel

• (15,11)-Code: 00 01 01 11 00 1

• P0 = 1, P1 = 1, P2 = 0, P3 = 1

0 0 0 1 0 1 1 1 1 0 0 0 1 1 1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x x x x x x

P1 (21 = 2) x x x x x x x x

P2 (22 = 4) x x x x x x x x

P3 (23 = 8) x x x x x x x x

Page 17: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

Hamming-Code – Beispiel (Erkennung)

• (15,11)-Code: 000 101 110 000 111

0 0 0 1 0 1 1 1 0 0 0 0 1 1 1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

P0 (20 = 1) x x x x x x x x

P1 (21 = 2) x x x x x x x x

P2 (22 = 4) x x x x x x x x

P3 (23 = 8) x x x x x x x x

Fehler bei P0, P1 und P2

Fehler an Stelle 20 + 21 + 22 = 1 + 2 + 4 = 7

Page 18: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – zyklische Redundanzprüfung

• CRC beruht auf Polynomdivision, d.h. Folge von zu übertragenden Bits wird als Polynom betrachtet

Ablauf1. Bitfolge wird um Grad(G(x)) Nullen ergänzt und

durch festgelegtes Polynom G(x) (Generatorpolynom) geteilt (mit Rest!)

2. Rest wird bei Übertragung an Datenblock angehängt

3. Empfangener Datenblock wird wieder durch Generatorpolynom geteilt, bei fehlerfreier Übertragung bleibt Rest 0

Page 19: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

1101011011

Page 20: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

11010110110000

Page 21: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

1101011011000010011 10011

Page 22: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

1101011011000010011 10011 10011 10110

Page 23: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

1101011011000010011 10011 10011 10110 10011 10100

Page 24: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

1101011011000010011 10011 10011 10110 10011 10100 10011 1110

Page 25: Fehlererkennende Codes Paritätsprüfung Paritätsbit / Prüfbits Ergänzt Bitsumme zu gerader (even) oder ungerader (odd) Anzahl unterschiedliche Paritätsprotokolle

Fehlererkennende Codes

CRC – BeispielDatenframe: 1101011011Generator: G(x) = x4 + x + 1 (10011)

1101011011000010011 10011 10011 10110 10011 10100 10011 1110

AnmerkungBestimmte Generatorpolynomeempirisch besser geeignet CRC-32 CRC-16