Ich habe versucht mit einem zyklischen 10bit Polynom 2-Bit-Fehler in
einem 42 Bit Codewort zu korrigieren.
Mit dem richtigen Polynom kann man über die Hälfte der 2-Bit-Fehler
korrigieren. Man erkauft es sich mit der Überdeckung eines 2-Bit-Fehlers
durch einen 1-Bit-Fehler, also dem erhöhten Risiko, dass ein
2-Bit-Fehler als 1-Bit-Fehler falsch korrigiert wird, wenn man den
1-Bit-Fehler korrigiert.
Um alle 2-Bit-Fehler zu korrigieren müssten >18Bit Redundanz angefügt
werden. >+56% korrigieren 100% von 4%; +31,25% korrigieren >50% von
4,76%. Um alle 1-Bit-Fehler zu korrigieren wären eh +10Bit/+31,26%
nötig, die 50% der 2-Bit-Fehler sind daher kostenlos.
Das im Internet leicht zu findende CRC-10 Polynom {633h, 11000110011b}
ist zur Korrektur ungeeignet; es ist für Erkennung ausgewählt.
Um für möglichst viele 2-Bit-Fehler genau ein Syndrom zu haben eignen
sich die Generatorpolynome: {585h, 1413d, 10110000101b}, {50Dh, 1293d,
10100001101b}, {495h, 1173d, 10010010101b}, {549h, 1353d, 10101001001b}.
Wenn man die Bits vor und nach dem Senden vertauscht kann man gezielt
bestimmte 2-Bit-Fehler korrigierbar machen.
Im angehängten Archiv befinden sich Dateien mit C-Code und AVR-asm
(GF(2) Polynomdivision) sowie eine Korrekturtabelle für 495h.
Das Fazit dieses Projektes ist für mich, (dass ich beim Programmieren zu
viele Fehler mache bzw. mehr Planung und Abstand lohnen) dass mehr als
ein Bit vollständig zu korrigieren sich i.A. nicht lohnt. {Der
Aufwandt}/{die Kosten} {ist}/{sind} beträchtlich und übersteigen den
Nutzen. Aber man kann Polynome finden, die die korrekten Codewörter so
verteilen, dass viele den Mindestabstand einhalten (gleichmäßig verteilt
sind) und viele sich in einem Raumbereich häufen. Man sollte die
Korrektur nie so auslegen, dass von den schwersten Fehlern die man
behandeln will, alle korrigierbar sind, meist reichen wenige Bit mehr
als für (F-1)-Bit-Fehler notwendig schon aus, um viele der F-Fehler zu
korrigieren.
Bei kleinen Codewörtern ist schon 1-Bit-Fehlerkorrektur zu teuer und
Fehler eh zu unwahrscheinlich, bei großen Codewörtern wird die
Korrekturtabelle zu teuer (µC). Für Verfahren mit Tabelle gibt es einen
Sweet-Spot im Bereich 40 bis 80 Bit Codewortlänge.
Die Details in einem:
http://tinyu rl.com/7cet9po
http://krz.ch/BYoU
(Zip-Archiv) zusammengefasst.
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.