Fehlererkennung und Kompression

Cyclic Redundancy Check

Aufgabenstellung

Ermitteln Sie zum Datenblock 1011 die Prüfsumme mit Hilfe des 110101. Führen Sie anschließend auch die Überprüfung durch.

Lösung

  • Gegeben
    • Datenblock : 1011
    • Generatorpolynom : 110101
    • Generatorpolynom könnte auch als Polynom vorliegen: (falls Prof es mal so macht)
  • was äquivalent zu dem hier ist (fürs Verständnis)

Schritt 1 - Vorbereiten des Datenblocks

  • Datenblock wird um den Grad von erweitert
    • wird gemacht um die Division später durchführen zu können
    • ohne diese kommt man nicht auf die Korrekte Prüfsumme
  • , da unser größtes ist

Schritt 2 - Berechnung der Prüfsumme

  • Nun dividieren wir mit dem - Operator und den Bits welche repräsentieren
  • Zur Erinnerung:
ABA ⊕ B
000
011
101
110
  • Berechnung:
101100000 : 110101 = 
110101
------
011001
  • Nach der ersten Berechnung erhalten wir
  • Nun führen wir die Division erneut durch, wobei wir die voranstehende 0 ignorieren
101100000 : 110101 = 
110101
------
011001
 110101
  • Da unser Generatorpolynom länger ist als unser Zwischenergebnis, ziehen wir die restlichen Nuller nun mit runter
101100000 : 110101 = 
110101↓↓↓
------↓↓↓
011001000
 110101↓↓
 ------↓↓
 00011100 → Rest 
  • Wir haben nun alle Bits in unseren Datenpaket benutzt und bekommen als Rest
  • Dieser Rest ist nun gleichzeitig unsere Prüfsumme

Schritt 3 - Bildung des CRC-Wertes

  • Nun hängen wir diese Prüfsumme an unser Datenpaket an
  • Ursprüngliche Datenblock:
  • Hinzufügen von Prüfsumme (wobei voranstehende 0er ignoriert werden)

Schritt 4 - Überprüfung durchführen

  • Daten wurden fehlerfrei übertragen, wenn bei der Divison als Rest 0 rauskommt
  • Wir benutzen hier den CRC-Wert welchen wir zuvor berechnet haben und teilen diesen durch unseren Generatorpolynom
101111100 : 110101 
110101
------
0110101
 110101
 ------
 000000 → Rest ist 0
  • Da der Rest 0 ist, hat kein Übertragungsfehler stattfgefunden

Hamming-Distanz

Aufgabenstellung

Gegeben sind die Datenblöcke 10011101101, 11111101101, 01111101101 und 10011101101. Wie groß ist die Hamming-Distanz?

Unter dem Hamming-Abstand eines Codes versteht man das Minimum aller Abstände zwischen verschiedenen Wörtern innerhalb des Codes.

Lösung

  • Vergleiche die Hamming-Abstände
  • Vergleich 1 & 2:

Vergleich 1

Vergleich 1 & 2:
10011101101
11111101101
-----------
01100000000 → Hamming Abstand ist 2
Vergleich 1 & 3:
10011101101
01111101101
-----------
11100000000 → Hamming Abstand ist 3
Vergleich 1 & 4:
10011101101
10011101101
-----------
00000000000 → Hamming Abstand ist 0

Vergleich 2

Vergleich 2 & 3:
11111101101
01111101101
-----------
10000000000 → Hamming Abstand ist 1
Vergleich 2 & 4:
11111101101
10011101101
-----------
01100000000 → Hamming Abstand ist 2

Vergleich 3

Vergleich 3 & 4:
01111101101
10011101101
-----------
11100000000 → Hamming Abstand ist 3
  • Kleinster Hamming Abstand ist 0 (1 & 4 sind identisch)

Kompression

Aufgabenstellung

Komprimieren Sie die Zeichenfolge ABABCDAB einmal mit Hilfe des LZ77-Algorithmus und anschließend mit der Huffman-Kodierung.

LZ77


$$ \text{Wort}=ABABCDAB $$
 
ABABCDAB
 
 
| Lexikon         | Vorschaufenster | REST VOM WORT |
| 0 1 2 3 4 5 6 7 |                 |               |
----------------------------------------------------|
|                 | ABAB            | CDAB          | → (0,0,A)
|               A | BABC            | DAB           | → (0,0,B)
|             A B | ABCD            | AB            | → (6,2,C)
|       A B A B C | DAB             |               | → (6,2,D)
|     A B A B C D | AB              |               | → (2,2,-)
| A B A B C D A B |                 |               | → (-,-,-)

→ Das Ergebis lautet :

Huffmann


$$ \text{Wort}=ABABCDAB $$

Schritt 1 - Buchstaben zählen

  • Zählen wie oft jeder Buchstabe drankommt
3311

Schritt 2 - zwei seltensten Buchstaben verknoten

  • und kommen jeweils nur einmal vor, weswegen sie verknüpft werden
  • Knoten entsteht mit Häufigkeit 1+1=2

Schritt 3 - Diesen Knoten mit anderem seltensten verknoten

  • und sind beide gleich Häufig wir können eins auswählen.
  • Gewählt sei
  • Es entsteht der Knoten mit Häufigkeit 2+3 = 5

Schritt 4 - Schritt 3 wiederholen bis fertig

  • ist unser einziger Knoten
  • Wir verknoten diesen mit
  • ist die Wurzel mit Häufigkeit 8

Schritt 5 - Pfade und Blätter beschriften

  • Jeder linke Pfad bekommt eine 0
  • Jeder rechte Pfad eine 1
  • Beschrifte danach dementsprechend die Blätter

							1
A: 3/8 ---------------------+
						1	|
B: 3/8 ----------------+    |
					   |    |
			 1    	   |----+-- 1
C: 1/8 ------+         |    0
			 |-- 2/8 --+
D: 1/8 ------+          0
			 0

Schritt 6 - Ersetze Buchstaben

Nice to Know

  • Das Wort lautet 01000001 01000010 01000001 01000010 01000011 01000100 01000001 01000010 in Binärdarstellung (56 Bits)
  • Wir konnten es nun auf 101101001000101 (15 Bit) komprimieren
  • Wir ersparen uns damit