Kapitel 10 - Leitungscodes & Fehlererkennung (CRC)

Startseite · Kap. 9 Software Interrupt · 10 Leitungscodes & CRC · → Kap. 11 Weiterführende Themen Verwandt: Kap. 4 Serielle Schnittstelle · Kap. 7 Signalverarbeitung Quellen: [Q: ZF §11/§11a] (keine eigenen Folien) · [Q: KL20 Aufg. 5 CRC, Aufg. 6 Manchester] · [Q: ALT 2009/2012/2013 CRC, Übungsklausur Codierung]

CRC ist in JEDER Klausur (12 Punkte). Manchester-Dekodierung ebenfalls. Beide unbedingt üben.


Inhalt

  1. Einordnung (OSI Schicht 1)
  2. Binäre Codes: NRZ, NRZI
  3. RZ (ternär)
  4. Manchester
  5. Baudrate vs. Bitrate
  6. Fehlererkennung: VRC/LRC/Checksum
  7. CRC - Methode & Beispiele
  8. Hamming-Distanz
  9. Prüfungsrelevanz

1. Einordnung (OSI Schicht 1)

Leitungscodes gehören zur Bitübertragungsschicht (Physical Layer): definieren physikalische Verbindung, Signale und Codierung von Bitfolgen in übertragbare Signale.

  • Pegel: High-active (High=1) vs. Low-active (Low=1).
  • Problem einfacher Codes: lange Folgen gleicher Bits → keine Pegelwechsel → Fehler schwer erkennbar, Empfänger verliert Synchronisation (Takt).

2. Binäre Leitungscodes: NRZ, NRZI

  • NRZ (Non Return to Zero): Pegel = Bit direkt (0=Low, 1=High). Standard bei asynchron (RS-232). Synchronisationsprobleme bei langen gleichen Folgen.
  • NRZI (NRZ Invert): Information steckt im Pegelwechsel, nicht im Pegel.
    • NRZI-S (Space): Wechsel bei 0, kein Wechsel bei 1 (z. B. USB).
    • NRZI-M (Mark): Wechsel bei 1, kein Wechsel bei 0.
    • Vorteil: bessere Synchronisation; aber lange Folgen ohne Wechsel bleiben problematisch.

3. RZ (Return to Zero, ternär)

Drei Pegel (−1, 0, +1): 1 = positiver Puls, 0 = negativer Puls; nach halber Taktzeit zurück auf 0.

  • Vorteil: selbsttaktend (Flanke in jedem Bit).
  • Nachteil: doppelte Bandbreite (Baudrate = 2·Bitrate), Gleichspannungsanteil (galvanische Trennung schwer).

4. Manchester-Code

Kombiniert Takt + Daten: ein Bit = Flanke in der Mitte des Taktintervalls.

  • IEEE 802.3 (Ethernet): fallende Flanke = 0, steigende Flanke = 1.
  • G. E. Thomas (Manchester-I, invertiert): steigende Flanke = 0, fallende Flanke = 1 (genau umgekehrt).
  • Eigenschaften: gleichspannungsfrei (Mittelwert 0), selbsttaktend, Codierung/Dekodierung per XOR (Daten ⊕ Takt); Nachteil: doppelte Bandbreite.

Manchester dekodieren (KL20 6.8/6.9): Für jedes Bit in der Mitte die Flanke ansehen.

  • IEEE 802.3: steigend→1, fallend→0.
  • G. E. Thomas: steigend→0, fallend→1 (Ergebnis der einen Konvention ist das bitweise Komplement der anderen).

5. Baudrate vs. Bitrate

  • Bitrate: übertragene Informationsbits pro Sekunde.
  • Baudrate: übertragene Symbole (Pegelzustände) pro Sekunde.
  • NRZ / NRZI-S: 1 Symbol = 1 Bit → Baudrate = Bitrate.
  • Manchester / RZ: 1 Bit = 2 Symbole → Baudrate = 2 · Bitrate.

6. Fehlererkennung: VRC / LRC / Checksum

Redundanz hinzufügen, um Fehler zu erkennen:

  • VRC (Vertical Redundancy Check): Querparität = Paritätsbit je Zeichen. Erkennt 1-Bit-Fehler; versagt, wenn sich Daten- und Prüfbit so ändern, dass Parität wieder stimmt (gerade Fehleranzahl).
  • LRC (Longitudinal Redundancy Check): Längsparität über Spalten eines Blocks.
  • Checksum (Summenprüfung): Bytes addieren (oft mod 256), Zweierkomplement als Prüfsumme (FCS) anhängen; Empfänger addiert alles inkl. FCS → Ergebnis muss 0 sein.

7. CRC (Cyclic Redundancy Check)

Leistungsfähig, basiert auf Polynomdivision in Modulo-2-Arithmetik.

  • Bitfolgen = Koeffizienten von Polynomen.
  • Modulo-2: Addition = Subtraktion = XOR (kein Übertrag). 1+1=0, 0−1=1.

Generatorpolynom → binär

Ein Polynom vom Grad g(g+1) Bits; Bit gesetzt, wo der Term vorkommt (inkl. x⁰=1).

  • x⁵ + x² + 1 → Terme x⁵,x²,x⁰ → 100101 (6 Bit).
  • x⁵ + x³ + 1101001. x⁵ + x³ + x101010. x⁵+x²+x+1100111.
  • CRC-4 (x⁴+x+1, Standard) → 10011 (5 Bit) → 4 Prüfbits.

Sende-Verfahren (Prüfbits erzeugen)

  1. Nachricht um g Nullen nach links verschieben (g = Grad = Anzahl Prüfbits).
  2. Diese Folge mod-2 durch das Generatorpolynom teilen (XOR-Schritte).
  3. Der Rest (g Bit) = Prüfsumme (FCS) → an die Originaldaten anhängen.

Empfangs-Prüfung

Empfangene Nachricht (Daten + FCS) mod-2 durch dasselbe Polynom teilen. Rest = 0 → fehlerfrei; Rest ≠ 0 → Fehler.

Worked Example (KL20 Aufg. 5.2)

Generator CRC-4 = 10011 (x⁴+x+1), Nachricht 00110010. Grad g = 4 → 4 Nullen anhängen: 0011 0010 0000.

Handrechen-Regel: Von links durchgehen; steht am aktuellen führenden Bit eine 1, XOR die 5 Bit 10011 darunter; steht eine 0, ein Bit weiterrücken. Die letzten 4 Bit = CRC.

Vollständige Modulo-2-Division (XOR):

 001100100000        ← Nachricht + 4 Nullen
  10011              ← Divisor unter erster 1 (Pos. 2):  1100110011
  -----
  0101000100000  →   an nächster führender 1 (Pos. 3):   1010010011
   10011
   -----
  0000111100000  →   nächste führende 1 (Pos. 5):        1110010011
     10011
     -----
  0000011110000  →   Pos. 6:                              1111010011
      10011
      -----
  0000001101000  →   Pos. 7:                              1101010011
       10011
       -----
  0000000010 0 1     Rest steht in den letzten 4 Bit

Kompakt (Restregister nach jedem XOR): 11001→01010, 10100→00111, 11100→01111, 11110→01101, 11010→01001Rest = 1001.

Ergebnis KL20 5.2: Checksumme 1001 (rechnerisch bestätigt). Gesendet wird 00110010 1001. (Rechenweg als vollständige XOR-Kaskade auch in den Übungen §CRC.)

Weitere Aufgabentypen

  • Gültigkeit prüfen (KL20 5.4): Empfangene Folge (Daten+FCS) durch Generator teilen → Rest 0 = gültig. Für 11110010 mit 10011 ist der Rest 0000gültig.
  • Anzahl Iterationen (KL20 5.5): = Anzahl der Datenbits (jedes Bit „wird einmal eingeschoben"), also bei 8-Bit-Nachricht (11110010) → 8 Schritte (Länge der Nachricht = Anzahl Datenbits vor den Nullen; genauer: so viele Shift-Schritte, wie die Gesamtlänge Datenbits beträgt).
  • HW (KL20 5.3): CRC braucht EXOR-Gatter + SchieberegisterLFSR.

Hardware: LFSR

Linear Feedback Shift Register: Kette aus Flipflops (Schieberegister) + XOR-Gattern. Rückkopplungen = Koeffizienten des Generatorpolynoms. Pro Takt 1 Bit; am Ende steht der Rest (CRC) im Register.

Gängige Standards

CRCAnwendung
CRC-5USB Token
CRC-16USB-Daten
CRC-CCITTBluetooth, X.25
CRC-32Ethernet (802.3), Internet, USB 3.0

8. Hamming-Distanz

Anzahl Bit-Positionen, in denen sich zwei Codewörter unterscheiden (per XOR + Einsen zählen).

  • Fehler erkennen bis k Bit: d ≥ k + 1.
  • Fehler korrigieren bis k Bit: d ≥ 2k + 1.

Prüfungsrelevanz

  • CRC (immer!): Generatorpolynom → binär; Prüfbits per mod-2-Division; Code in binär+hex; Gültigkeit (Rest 0); Iterationen; HW (LFSR: XOR + Schieberegister).
  • Manchester dekodieren (IEEE 802.3 vs. G.E. Thomas - invertiert zueinander); NRZ/Manchester einzeichnen; welcher Code selbsttaktend?
  • Baudrate vs. Bitrate (Manchester = 2× Bit).
  • VRC/LRC/Checksum, Hamming-Distanz (erkennen d≥k+1, korrigieren d≥2k+1).

Typische Fehler: Grad/Bitzahl des Polynoms falsch (Grad g → g+1 Bit, g Prüfbits) · zu wenige Nullen anhängen (genau g) · mod-2 mit „echtem" Subtrahieren verwechseln (es ist XOR!) · Manchester-Konventionen vertauschen · Baud=Bit bei Manchester.

Kap. 9 Software Interrupt · → Kap. 11 Weiterführende Themen