mikrocontroller.net

Forum: Projekte & Code balanced counter Algorithmus


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Moritz G. (mbydq2)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.