Diese Funktionen dienen der Umkodierung zwischen normalen Bytes zu DC freier / ausgeglichener Kodierung. Die Kodewörter enthalten immer gleich viele Einsen wie Nullen. Die Funktionen kodieren Informationsbits ohne Redundanz in ausgeglichene Symbole. Der Nutzen ist eine Begrenzung der Bandbreite durch Hochpassfilterung des Bitstroms. Eine Anwendung sind einfache SAW OOK Funkstrecken bei 315 oder 433 MHz. Diese Kodierung ist im Bes. für OOK Modulation geeignet, da Störungen zusätzliche Highpegel erzeugen und diese leicht erkannt werden. Die hier zunächst veröffentlichten Funktionen bilden nur den Kern der Umkodierung. "Encode.c" nimmt eine Zahl zwischen 0 und 19 (für 16=2^4 bit) und liefert ein Byte indem die niederwertigsten 6 bit die Zahl kodieren. "Decode.c" wiederum macht es rückgängig, indem es ein Byte nimmt, die Einsen zählt und dann eine Zahl die dem Byte entspricht erzeugt. a==Decode(Encode(a)) Der Algorithmus skaliert zu beliebig hohen Zahlen wobei die worst-case-Laufzeit extrem groß wird. Diese Implementation ist durch die Daten-Typen begrenzt aber ließe sich erweitern. Ohne "Abkürzungen" ist diese Methode nur für eine 4b/6b oder 6b/8b Kodierung geeignet. Und stellen eine effizientere Alternative zum Manchester Code 1b/2b dar. Die zwei Funktionen zählen gleichzeitig auf zwei Arten hoch und runter. Sinn und Zweck ist die Umwandlung zwischen einer normalen Binärdarstellung in eine Zahl deren Eingenschaft es ist, dass sie gleich viele Einsen wie Nullen hat. Motivation war es kein Vorwissen einzubauen. Also keine Tabelle und auch kein zusammenbauen bzw. direktes Auswerten aufgrund bekannter Wertigkeit bestimmter Positionen/Stellen. In gewisser Weise ist diese die dümmste mögliche Methode, aber irgendwie auch die natürlichste, denn die Zahl ergibt sich nur durch den Algorithmus, ganz ohne magische einprogrammierte Zahlen.
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.