Forum: Mikrocontroller und Digitale Elektronik EDAC: Wirklich ein BCH Code oder etwas ganz anderes?


von bitfehler (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

wir haben hier nen sehr speziellen Controller (GR712RC), der über ein 
externes Speicherinterface mit Fehlerkorrektur verfügt. Dieses ist 39 
Bit breit, wovon 32 Bit für die Nutzdaten sind und 7 Bit für die 
Checkbits/Fehlerkorrektur. Korrektur von 1-bit Fehlern ist möglich, 
2-bit Fehler werden erkannt.

Die Codes selbst kann ich problemlos ausrechnen und auch Fehler 
(manuell) erkennen/korrigieren, da kommt das passende heraus. Nun aber 
wollte ich auch mal in der Theorie verstehen, was sich dahinter 
verbirgt.

Im Datenblatt schreibt der Hersteller, dass es sich um einen "BCH EDAC" 
handle. Die Vorschrift zur Berechnung habe ich angehängt.

Ein paar Sachen verwirren mich allerdings:
- Im Datenblatt nennen sie das ganze (39,7) BCH code. Müsste es nicht 
aber (39,32) BCH code heißen? Sind ja schließlich 32 bit Nutzdaten.
- Im Datenblatt ist kein Polynom angegeben, sondern nur diese 
Berechnungsvorschrift im Anhang. Meine Versuche, daraus ein Polynom zu 
erzeugen sind gescheitert (siehe auch nächster Punkt).
- Checkbit 2 und Checkbit 3 werden invertiert. Eigentlich ist ein BCH 
code ja ein linearer Blockcode. Durch das Invertieren ist er nicht mehr 
linear, sondern affin linear. (Was ein paar mathematische Möglichkeiten 
einschränkt). Eigentlich ists dann ja kein BCH code mehr und es gibt 
auch nicht einfach ein Polynom, weil die Invertierung ja noch dazukommt.

Daher:
Wikipedia schreibt zu BCH: Bündelfehler von bis zu fb <= k Bits werden 
erkannt. (k=7 in diesem Fall). Bedeutet das, dass bis zu 7 direkt 
aufeinanderfolgende 1-bit Fehler von diesem BCH Code erkannt werden 
können? Oder interpretiere ich das falsch?
* Ist das oben genannte überhaupt ein BCH Code? Falls ja: Warum bzw. an 
was erkenne ich ihn?
* Welcher Code könnte es sonst sein? An Hamming-Code habe ich schon 
gedacht, den gibts definitiv mit (39,32), aber das sieht wieder ganz 
anders aus (z.B. gibt es dort ein Parity, welches über alle Bits geht!).


Was auch vorstellbar ist: Sie haben sich da irgendwas selbst gebastelt. 
Auffällig ist ja, dass es immer ungefähr gleich viele Bits pro Checkbit 
sind (=ausgeglichenere Timing-Pfade). Das zusätzliche Invertieren 
könnten sie machen, damit für Data=0 und Checkbits=0 die Daten ungültig 
sind?


Um ein paar Vorschläge/Tipps/Ratschläge wäre ich sehr dankbar! :-)

von bitfehler (Gast)


Lesenswert?

Zu den Burstfehlern: Da scheint Wikipedia nicht ganz korrekt zu sein, da 
gibts zusätzliche Bedingungen. Die Sache hat sich also erledigt.

Fällt jemanden sonst etwas zu den restlichen Punkten ein?

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.