Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

NTM-Praktikum 7, Teil 2: CRC-Verfahren NTM, 2006, CRC, Rur, 1 Cyclic Redundancy Check (zyklische Redundanzprüfung) Prüfwertbestimmung zur Fehlerdetektion.

Ähnliche Präsentationen


Präsentation zum Thema: "NTM-Praktikum 7, Teil 2: CRC-Verfahren NTM, 2006, CRC, Rur, 1 Cyclic Redundancy Check (zyklische Redundanzprüfung) Prüfwertbestimmung zur Fehlerdetektion."—  Präsentation transkript:

1 NTM-Praktikum 7, Teil 2: CRC-Verfahren NTM, 2006, CRC, Rur, 1 Cyclic Redundancy Check (zyklische Redundanzprüfung) Prüfwertbestimmung zur Fehlerdetektion Prinzip CRC-Wert wird vor und nach der Daten-Übertragung berechnet bei Übereinstimmung ist wahrscheinlich kein Fehler aufgetreten beruht auf Polynomdivision (vgl. zyklische Blockcodes) CRC = Rest nach Division der Daten mit Generator-Polynom Wichtige Generator-Polynome CRC-CCITT (16 Bit): x 16 +x 12 +x 5 +1 CRC-16 (16 Bit): x 16 +x 15 +x 2 +1 CRC-32: x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +x+1 Daten (N Bits) CRC (M-Bits) Numerical Recipes in C, siehe

2 CRC-Berechnung 4 0 … Daten (‚CatMouse ‘): CRC (0xE556, Anfangszustand = [0,...,0]) Beispiel CRC-CCITT x 16 + x 12 + x C CRC-Berechnung im Empfänger CRC aus Datenbits bestimmen, mit angehängtem CRC vergleichen eleganter: CRC aus [Datenbits CRC] bestimmen, muss Null sein ! Variationen Anfangszustand ≠ 0 => Detektion Addition / Entfernung führender 0 Addition Konstante K zu CRC => Rx: CRC+K oder CRC ≠ 0 Bit-Umkehr Daten- und CRC-Bytes => LSB zuerst bei seriellen Ports NTM, 2006, CRC, Rur, 2

3 SW-Implementation SW-Realisierung weniger einfach als HW-Realisierung Press et. all: „Numerical Recipes in C“, 2. Ed., Cambridge. XOR ist assoziativ und kommutativ unsigned short icrc1(unsigned short crc, unsigned char onech) Given the remainder up to now, return the new CRC after one character is added. high-Byte XOR Charakter low-Byte wenn MSB=1 NTM, 2006, CRC, Rur, 3

4 Tabellen-basierte SW-Implementation nur high-Byte beeinflusst Feedback bei Byte-weiser Verarbeitung icrctb[256] Generator x 16 + x 12 + x for (j=0;j<=255;j++) { icrctb[j] = icrc1(j<<8,(uchar)0); } crc = 0; kein Schieben mehr for (j=1;j<=len;j++) { bufptr ist ein array mit len Bytes crc = icrctb[bufptr[j]^HIBYTE(crc)]^LOBYTE(crc)<<8; } Superposition low-Byte ≠ 0 high-Byte XOR Charakter low-Byte = 0 NTM, 2006, CRC, Rur, 4

5 M-Bit CRC detektiert alle Fehler-Bursts der Länge M Wahrscheinlichkeit P un Block mit random Fehlern unentdeckt P un ≤ 2 -M Standard M=16 Bit CRC‘s d min ≥ 4, d.h. jeder Fehlervektor mit bis zu 3 Fehlern detektierbar P(unentdeckter Fehler) ≤ Standard M=32 Bit CRC‘s d min = 5 solange N < 3007 und d min = 4 solange N < P(unentdeckter Fehler) ≤ Fehlerdetektion NTM, 2006, CRC, Rur, 5


Herunterladen ppt "NTM-Praktikum 7, Teil 2: CRC-Verfahren NTM, 2006, CRC, Rur, 1 Cyclic Redundancy Check (zyklische Redundanzprüfung) Prüfwertbestimmung zur Fehlerdetektion."

Ähnliche Präsentationen


Google-Anzeigen