Forum: Mikrocontroller und Digitale Elektronik Hilfe mit CRC-8


von A. B. (alfa)


Lesenswert?

Hallo Zusammen!

Ich brauche dringend Hilfe!!!! Es geht um CRC-8.
Es gibt ein Generatorpolynom vom Grad 8 : 0x8E=x^8+x^4+x^3+x^2+1, der 
für eine 56 Bit Message (7 Bytes Daten ) verwendet wird.
Die  Frage ist, ob dieses Generatorpolynom  für 120 Bit Message (d.h 15 
Bytes Daten, der 16. Byte ist für CRC reserviert) gut oder schlecht ist 
.
Hat jemand eine Idee, wie man es beweisen oder zeigen kann?

Danke im Voraus!!!

von eProfi (Gast)


Lesenswert?

Also, alle Angaben ohne Gewähr:
Es gibt Generatorpolynome, die funktionieren, und andere, die 
funktionieren nicht.

Wieviele Bits Du damit zusammenfasst, ist nebensächlich. Das hat eher 
mit der Wahrscheinlichkeit zu tun, mit der ein Übertragungsfehler 
erkannt wird.

120 Bits mit CRC8 ist ein absolut übliches Verfahren, wenn auch nicht 
absolut sicher.

von Max (Gast)


Lesenswert?

Du kannst mit CRC8 zumindest einen oder mehrere Fehler im Bereich von 7 
Bits erkennen.  (Burstfehler)

Gruß Max

von Jürgen (Gast)


Lesenswert?

Mit ein wenig Suchen findet man
http://en.wikipedia.org/wiki/Cyclic_redundancy_check
Demnach wurde diese Polynom schon von ernstzunehmenden Leuten benutzt
(SAE J1850 ist ein veralteter Standard zur Kommunikation in Fahrzeugen).

Irreduzibel ist es auch.

Was ist denn der Hintergrund der Frage?

Jürgen

von 3359 (Gast)


Lesenswert?

Ein 8 bit CRC ist gut fuer 2^8 = 256 bit = 32 bytes

von Jürgen (Gast)


Lesenswert?

> Ein 8 bit CRC ist gut fuer 2^8 = 256 bit = 32 bytes

Halte ich für Blödsinn.

Jürgen

von Hans H. (hanshein)


Lesenswert?

> Hat jemand eine Idee, wie man es beweisen oder zeigen kann?

Ohne mathematische Vertiefung sollte dieser Praktiker-Ansatz helfen:

www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf

-Hans

von A. B. (alfa)


Lesenswert?

Jürgen wrote:
> Mit ein wenig Suchen findet man
> http://en.wikipedia.org/wiki/Cyclic_redundancy_check
> Demnach wurde diese Polynom schon von ernstzunehmenden Leuten benutzt
> (SAE J1850 ist ein veralteter Standard zur Kommunikation in Fahrzeugen).
>
> Irreduzibel ist es auch.
>
> Was ist denn der Hintergrund der Frage?
>
> Jürgen

Erstmal Danke!
Jetzt zum Hintergrund:
Es geht um die Datenübertragung zwischen zwei Steuergeräten im Fahrzeug.
Da es immer mehr Information übetragen wird, reichen dafür die 7 Bytes 
nicht mehr aus und es wird um weitere Bytes erweitert. Dabei hat man das 
bedenken, dass bei der Übertragung von 15 Byte langen Botschaften mit 
CRC8 die Fehler nicht erkannt werden können. Deswegen muss es bewiesen 
werden.
Kennst du dich in diesem Thema aus? Für mich ist es ganz was neues:-( 
Habe kein Plan

von A. B. (alfa)


Lesenswert?

Hans Hein wrote:
>> Hat jemand eine Idee, wie man es beweisen oder zeigen kann?
>
> Ohne mathematische Vertiefung sollte dieser Praktiker-Ansatz helfen:
>
> www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf
>
> -Hans

Danke für Hinweis!
Weisst du , wie man es mathematisch mit Formeln beweisen könnte?
Es wäre dann der sichere Weg für mich
Welche Rolle spielt dabei die Hamming-Distanz? Damit kann man doch nur 
die Fehler korrigieren aber nicht erkennen?

von A. B. (alfa)


Lesenswert?

eProfi wrote:
> Also, alle Angaben ohne Gewähr:
> Es gibt Generatorpolynome, die funktionieren, und andere, die
> funktionieren nicht.
>
> Wieviele Bits Du damit zusammenfasst, ist nebensächlich. Das hat eher
> mit der Wahrscheinlichkeit zu tun, mit der ein Übertragungsfehler
> erkannt wird.
>
> 120 Bits mit CRC8 ist ein absolut übliches Verfahren, wenn auch nicht
> absolut sicher.

Genau darum geht es, zu zeigen wie hoch ist die wahrscheinlichkeit, dass 
bei 15 Bytes langen Botschaften mit CRC8 die Fehler nicht erkannt werden

von Dieter W. (dds5)


Lesenswert?

> Damit kann man doch nur die Fehler korrigieren aber nicht erkennen?

Hier scheint ein Verständnisproblem vorzuliegen, wie soll man Fehler 
korrigieren wenn sie nicht erkannt werden?

von Andreas K. (a-k)


Lesenswert?

Laut obigem Link gilt: "CRC polynomials detect (single) burst errors 
shorter than the number of the position of the highest polynomial 
coefficient."

Wenn also strikt bewiesen werden muss, dass die CRC alle Fehler erkennt 
(so die Formulierung des OP), dann muss die CRC länger als die gesamte 
Message sein. Da das bei einer CRC8 und 7 Bytes auch schon nicht der 
Fall ist, ändert sich mit 15 Bytes nur die Erkennungswahrscheinlichkeit.

von Hans H. (hanshein)


Lesenswert?

>Genau darum geht es, zu zeigen wie hoch ist die wahrscheinlichkeit, dass
>bei 15 Bytes langen Botschaften mit CRC8 die Fehler nicht erkannt werden

mein "Jungnickel", Codierungstheorie (Spektrum Verlag) ist leider im 
Buero,
aber es gilt (modulo Erinnerung)....

E::=Wahrscheinlichkeit

-Generatorpolynom g(x) vom Grad r mit g(0)=1
-ein(!) Fehlerbuendel der Laenge b (gleichverteilt) ("Fehlermodell")

* fuer b=r+1 ist die E(Fehler werden nicht erkannt) = 2^-r+1
* fuer b>=r+2 ist die E(Fehler werden nicht erkannt) = 2^-r

Diese Aussage auf jeden Fall mit einem "Codierungstheorie" Buch
nachverifizieren, davon sind genuegend Klassiker in der
Referenzenliste des obigen Links zu sehen.

-Hans

PS: Das Fehlermodell kann/wird im Automobilsektor anders sein.
PPS:
>Wenn also strikt bewiesen werden muss, dass die CRC alle Fehler erkennt
>(so die Formulierung des OP), dann muss die CRC länger als die gesamte
>Message sein.

Nope, die HD des CRCs muss > der Laenge der Message sein, aber dann
ist man in Bereichen, in denen fehlerkorrigierende Codes vorzuziehen
sein (Stichwort z.B. Reed Solomon)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.