Forum: Projekte & Code balanced counter Algorithmus


von Moritz G. (mbydq2)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.