Forum: Mikrocontroller und Digitale Elektronik Fehlerkorrigierende/erkenende Protokolle


von Peter (Gast)


Lesenswert?

Hallo,
was für einfache Fehlererkennende und korrigierende Protokolle gibt es 
den? Bis jetzt scheint mir das Hamming Protokol das einfachste zu sein. 
Jedoch stört es mich das nur 1 Fehler erkannt wird. Gäbe es eine einfach 
Möglichkeit mehr Fehler zu erkennen ?(evt. noch durch ein zusätzlich 
Paritätsbit aber wo setz man das am geschicksten?)
Das nur ein Fehler korrigiert werden kann reicht mir aus. Ich habe ein 
Datenpaket mit 16Bit und möchte natürlich mit möglichst wenig Zusatzbits 
auskommen. (Maximal 6 optimal 4)
Außerdem sollte es auch von einen Nichtmathematiker implantierbar sein 
:-).
Danke schonmal für eure Antworten.
Gruß
Peter

von Jorge (Gast)


Lesenswert?

Wenn Fehler auftreten, dann vergiss es doch! (persönliche Meinung)

Ansonsten ist CRC ein einfaches Verfahren noch einfacher ist eine 
Prüfsumme.

von Oberlehrer (Gast)


Lesenswert?

implantiert

werden hd

von Michael H. (mah)


Lesenswert?

Sieh Dich mal um nach Reed-Solomon Vorwärtsfehlerkorrektur

-mah


http://de.wikipedia.org/wiki/Reed-Solomon-Code

von Bernd G. (Gast)


Lesenswert?

Der Hamming-Code kann sebstverständlich auch mehr als einen Fehler 
detektieren. Er kann auch z.B. zwei Fehler erkennen und einen 
korrigieren.
Je mehr Fehler erkannt/korrigiert werden sollen, desto mehr zusätzlich 
angehängte Symbole sind erforderlich.
Der Hamming ist prinzipiell von Nichtmathematikern verwendbar, das 
erkennt man unter anderem daran, dass es mir auch schon gelungen ist, 
ihn zu benutzen.
Der RS-Code ist ein Blockkode, der zwar leistungsfähig, aber in der 
Implementierung sehr unhandlich ist (bei Xilinx kostet der Core dafür 
richtiggehend Geld).
Der Hamming dürfte sogar in recht kleine CPLD reinpassen. Sieh mal unter 
Bildschirmtext nach, da müßte irgendwo das beschrieben sein, was du 
suchst.

von Matthias (Gast)


Lesenswert?

Ich würde den Hamming Code zusammen mit Interleaving einsetzen, falls es 
sich bei dem Übertragungsweg hauptsächlich um Burst-Störungen handeln 
kann.


Man packt dabei von dem Datenblock, den man versendet jeweils die 
ersten,
zweiten, ... Bits zu einem 8 Bit Wort zusammen. Falls Eine Störung dann 
ein Byte kaputtmacht hat man immer nur ein Bit, das sich mit dem Hamming 
korrigieren lässt.

Nachteil:
---------
Man muss mühsam Bits hin und her schubsen und hat deutlich mehr 
Verzögerungszeit (kennt man ja schon von den DSL Modems, bei denen das 
Interleaving auch benutzt wird, bzw. bei "Fastpath" abgeschaltet wird)

von Jorge (Gast)


Lesenswert?

Es kommt doch auf die Art der vorkommenden Fehler an - oder ?

von HildeK (Gast)


Lesenswert?

Leihe dir mal J.Swoboda, "Codierung zur Fehlerkorrektur und 
Fehlererkennung".
Ein Standardwerk ist auch W.W. Peterson, "Error Correcting Codes". Ich 
meine fast, das dieses Werk auch übersetzt wurde.

von Peter (Gast)


Lesenswert?

Hallo,
ich sollte vieleicht etwas kongkreter werden:
Es handelt sich hier um eine IR-Übertragung ohne Rückkanalmöglickeit. Es 
werden immer Datenpakete mit ca. 16Bit geschickt. Und diese Datenpake 
fließen allerdings nicht in einem Datentrom sondern in unregelmäßigen 
abständen. Sprich jedes Datenpaket muss für sich die Fehlerkorrektur 
enthalten. Ein doppeltes Senden will ich vermeiden.
Das ganze Protokol soll im übrigen in einen AVR(ATMEGA8 wird angestrebt) 
realisiert werden.

@ Michael Haberler
Das RS Verfahren scheint nach einem kurzem überfliegen wohl eher für 
länger Datenströme gedacht zu sein.

@  Bernd G.
Wie soll das gehen? Ich habe den Hammingcode leider nicht von Grundauf 
verstanden sondern kann ihn eigentlich nur programmieren. Wenn ich das 
aber in Wikipedia richtig gelesen habe ginge das nur durch die 
Reduzierung der Codewörter. (Daher größer Hammingabstand der einzelnen 
Wörter)  Ließen sich die Einzelnen Codewörter überhaupt effizent in 
Echtzeit berechnen? Weil für eine 16 Bit Look Up Tabel hätte ich kein 
Platz.

@Matthias
Danke für den Hinweis macht aber bei 16 Bit glaube ich wenig sinn.

@ALL
Liege ich richrig das durch ein zusätzliches einfaches Paritätsbit im 
Hammingcode die Erkennungsleistung auf 2 Fehler steigen würde? Weil wenn 
er bei 2 Fehler Falsch korrigieren würde, würde er ja nur ein Bit 
änderen. Somit wäre dann die "Interne" Parität falsch oder habe ich hier 
ein Denkfehler? Sollte man dann das Paritätsbit über alles machen? 
Sprich Daten und Hammingbits oder nur über die Datenbits?

Gruß
Peter

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Peter wrote:
> Hallo,
> was für einfache Fehlererkennende und korrigierende Protokolle gibt es
> den? Bis jetzt scheint mir das Hamming Protokol das einfachste zu sein.
> Jedoch stört es mich das nur 1 Fehler erkannt wird. Gäbe es eine einfach
> Möglichkeit mehr Fehler zu erkennen ?

Man kann nicht alles haben. Simpel und besonders leistungsfaehig sind in 
diesem Fall widerspruechlich.

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.