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! :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
