Was ist CRC (zyklische Redundanzprüfung)?

Fehlererkennungsverfahren, das die Datenbits als Polynom behandelt, den Rest der Division durch ein Generatorpolynom anhängt und den Empfänger die Rechnung wiederholen lässt, um Fehler zu erkennen. Es wird in Ethernet, PCI Express, USB und Dateiformaten weit verwendet.

Japanische Bezeichnung: CRC(巡回冗長検査)

„CRC (zyklische Redundanzprüfung)“ kommt in 8 Übungsfragen aus 3 Themen vor, z. B. Grundlagen der Informationstheorie und Kodierung, Logikschaltungen, Schnittstellen und Busstandards.

Fachgebiet: Schnittstellen und Busstandards

Funktionsweise

Eine CRC behandelt die Datenbits als Koeffizienten eines Polynoms in Modulo-2-Arithmetik und berechnet den Rest nach Division durch ein Generatorpolynom. In Modulo-2-Arithmetik sind Addition und Subtraktion beide XOR, sodass die Division aus der Wiederholung von „ist das führende Bit 1, das Generatorpolynom per XOR verknüpfen und um eins verschieben“ besteht. Bei einer w-Bit-CRC wird der w-Bit-Rest, der sich nach dem Anhängen von w Nullen ergibt, mit den Daten gesendet, und der Empfänger wiederholt die Rechnung, um die Übereinstimmung zu prüfen. Reale Standards fügen Konventionen wie einen Startwert, die Bitumkehr jedes Bytes und ein abschließendes XOR hinzu.

Erkannte Fehler und Einsatzgebiete

Eine w-Bit-CRC erkennt jeden Bündelfehler der Länge w oder kürzer, und die Wahrscheinlichkeit, andere zufällige Fehler zu übersehen, beträgt etwa 2⁻ʷ. Sie erkennt Fehler jedoch nur und kann sie nicht korrigieren, sodass Systeme durch erneute Übertragung wiederherstellen. CRCs werden in der Ethernet-FCS (CRC-32), in Paketen von PCI Express, USB, CAN-Bus, Speicherbefehlen und Dateiformaten wie ZIP und PNG verwendet, und in Hardware lassen sie sich mit einem linear rückgekoppelten Schieberegister berechnen, das aus Flipflop-Stufen und XOR-Gattern besteht.

Jetzt üben: Fragen zu CRC (zyklische Redundanzprüfung)

An die Daten 1101 werden 3 CRC-Prüfbits mit dem Generatorpolynom x³ + x + 1 (Bitfolge 1011) angehängt. Die Prüfbits sind der Rest der Division von 1101000, also den Daten mit 3 angehängten Nullen, durch 1011, wobei bei der Division statt der Subtraktion das exklusive ODER (XOR) verwendet wird. Wie lauten die Prüfbits?

  1. A001
  2. B101
  3. C110
Antwort und Erläuterung anzeigen

Antwort: A. 001

1101000 wird durch 1011 geteilt. Die vorderen Bits 1101 XOR 1011 ergeben 0110; mit dem nächsten heruntergeholten Bit ergibt 1100 XOR 1011 = 0111, dann 1110 XOR 1011 = 0101 und zuletzt 1010 XOR 1011 = 0001, der Rest ist also 001. Gesendet wird 1101001; ergibt die Division durch 1011 beim Empfänger den Rest 0, wird angenommen, dass kein Fehler vorliegt.

Welche Aussage über eine CRC, deren Generatorpolynom den Grad r hat (r Prüfbits) und deren konstantes Glied 1 ist, ist richtig?

  1. AHauptsächlich wird sie verwendet, um bei einem 1-Bit-Fehler das falsche Bit zu bestimmen und zu korrigieren
  2. BAlle Bündelfehler (Fehler, die in einen zusammenhängenden Bereich fallen) mit einer Länge von höchstens r Bit werden erkannt
  3. CMit einem gut gewählten Generatorpolynom lassen sich ausnahmslos alle Fehlermuster erkennen
Antwort und Erläuterung anzeigen

Antwort: B. Alle Bündelfehler (Fehler, die in einen zusammenhängenden Bereich fallen) mit einer Länge von höchstens r Bit werden erkannt

Stellt man das Fehlermuster als Polynom E(x) dar, bleibt ein Fehler bei der CRC nur dann unerkannt, wenn E(x) durch das Generatorpolynom G(x) teilbar ist. Ein Bündelfehler der Länge höchstens r lässt sich als x^i × B(x) schreiben (B(x) mit Grad höchstens r − 1 und konstantem Glied 1) und ist durch ein G(x) vom Grad r mit konstantem Glied 1 nicht teilbar, wird also immer erkannt. Teilbare Muster, etwa ein Fehler in der Form von G(x) selbst, werden dagegen nicht erkannt. Die CRC dient hauptsächlich der Fehlererkennung; bei einem Fehler werden die Daten erneut angefordert.

Häufige Fragen

Wie unterscheidet sich eine CRC von einer Prüfsumme?

Eine Prüfsumme nutzt eine einfache Operation wie das Addieren von Bytes und übersieht leicht vertauschte Daten oder Fehler, die sich gegenseitig aufheben, während eine CRC auf Polynomdivision beruht, Bitpositionen unterscheidet und Bündelfehler zuverlässig erkennt.

Kann eine CRC Fehler korrigieren?

Im Allgemeinen nicht. Eine CRC erkennt, ob ein Fehler aufgetreten ist, aber nicht, welches Bit falsch ist; Speicher, die eine Korrektur brauchen, nutzen daher einen ECC wie einen Hamming-Code.

„CRC (zyklische Redundanzprüfung)“ in den Erläuterungen

Fragen mit „CRC (zyklische Redundanzprüfung)“ (8)

  1. An die Daten 1101 werden 3 CRC-Prüfbits mit dem Generatorpolynom x³ + x + 1 (Bitfolge 1011) angehängt. Die Prüfbits sind der Rest der Division von 1101000, also den Daten mit 3 angehängten Nullen, durch 1011, wobei bei der Division statt der Subtraktion das exklusive ODER (XOR) verwendet wird. Wie lauten die Prüfbits?
  2. Welche Aussage über eine CRC, deren Generatorpolynom den Grad r hat (r Prüfbits) und deren konstantes Glied 1 ist, ist richtig?
  3. Wann ist der Ausgang eines XOR-Gatters (exklusives ODER) mit 2 Eingängen 1?
  4. Welche typische Verwendung hat ein linear rückgekoppeltes Schieberegister (LFSR), bei dem das XOR einiger Ausgänge des Schieberegisters auf den Eingang zurückgeführt wird?
  5. Die Daten werden byteweise addiert, und die unteren 8 Bit der Summe werden als Prüfwert (Prüfsumme) angehängt und mitgesendet. Welchen Fehler kann diese Prüfung nicht erkennen?
  6. Welche Aussage über ARQ (automatische Wiederholungsanfrage) und FEC (Vorwärtsfehlerkorrektur) als Verfahren zum Umgang mit Fehlern in der Kommunikation ist richtig?
  7. Was tut die Data Link Layer von PCI Express bei Bitfehlern während der Übertragung?
  8. Wenn bei PCI Express viele Pakete zum Schreiben kleiner Daten von 64 Byte gesendet werden, liegt die effektive Bandbreite deutlich unter dem theoretischen Wert. Was ist der Hauptgrund?

Verwandte Begriffe

PCI Express Schieberegister BIST (eingebauter Selbsttest) Vorwärtsfehlerkorrektur (FEC) 128b/130b-Kodierung 8b/10b-Kodierung Augendiagramm (Eye Diagram) AXI Bitfehlerrate (BER) Clock Data Recovery (CDR)

Zur Glossarübersicht