Forum: Mikrocontroller und Digitale Elektronik Scrambler auf ATMEGA


von jimbo (Gast)


Lesenswert?

Hallo,
hat hier jemand vielleicht einen Beispielcode in C für einen Scrambler?
Ich möchte gerne eine ungleichmässige Verteilung von Nullen und Einsen 
eines Datenstreams mittels Scrambler ausgleichen
lg

von Huch (Gast)


Lesenswert?

Was ist der Zweck?

Gleichanteil Null? Verschluesselung?

von ich (Gast)


Lesenswert?

Manchester Codierung oder auch HDB3 je nach Einsatz.

von jimbo (Gast)


Lesenswert?

Hallo,
es soll nichts verschlüsselt werden, ich möchte nur eine gleichmässige 
Verteilung der Nullen und Einsen haben.

von Huch (Gast)


Lesenswert?

Du willst es also den Zweck nicht nennen. OK.

von Karl H. (kbuchegg)


Lesenswert?

jimbo schrieb:
> Hallo,
> es soll nichts verschlüsselt werden, ich möchte nur eine gleichmässige
> Verteilung der Nullen und Einsen haben.

Mir ist jetzt aber nicht wirklich klar, wie das bei beliebigen Daten 
gehen soll. Es sei denn du teilst jedes Byte in 2 Nibbles und bläst 
jedes Nibble für sich wieder auf 8 Bit auf indem du nach jedem 0 Bit ein 
1 Bit einfügst und nach jedem 1 Bit im Original ein 0 Bit.

Das garantiert dir gleich viele 1-en wie 0-en, bläst aber das zu 
übertragende Datenvolumen auf das doppelte auf.
Die Implementierung wäre allerdings trivial.

von jimbo (Gast)


Lesenswert?

Das hab ich nicht gesagt,
ich möchte sowas wie eine manchestercodierung haben und dachte das würde 
mit einem scrambler gehen

von Εrnst B. (ernst)


Lesenswert?

Dann nimm halt Manchester-Codierung... verdoppelt deine Bit-Anzahl.

Wenn's nur so auf ungefähres Ausgleichen der 1er und 0er ankommt, eignet 
sich auch eine Komprimierung. Dann werdens sogar weniger Bits zum 
übertragen.

von Karl H. (kbuchegg)


Lesenswert?

jimbo schrieb:
> Das hab ich nicht gesagt,
> ich möchte sowas wie eine manchestercodierung haben

Na dann mach sie doch.
Das was ich beschrieben habe, macht genau eine Manchestercodierung

von jimbo (Gast)


Lesenswert?

Vielen Dank Karl Heinz und Ernst für die Infos...
Habt ihr vielleicht ein bisschen Beispielcode für mich?
lg

von Karl H. (kbuchegg)


Lesenswert?

jimbo schrieb:
> Vielen Dank Karl Heinz und Ernst für die Infos...
> Habt ihr vielleicht ein bisschen Beispielcode für mich?

Ach komm.
Das ist doch trivial.

Ein Byte in 2 Nibbles aufteilen.
Mit jedem Nibble in eine Tabelle gehen und sich daraus das gecodede Byte 
holen. Gibt ja nur 16 Möglichkeiten.

Beide Bytes (für jedes Nibble eines) in die weitere Verarbeitung 
einschleusen.

Fertig.


Wenn das ganze auf einem Pin rausgetaktet werden soll, gehts sogar noch 
einfacher. Denn dort muss es sowieso eine Bitzerlegung geben und die 
ergänzt man: Wurde ein 1 Bit ausgegeben, dann schiebt man ein 0 Bit 
hinterher, wurde ein 0 Bit ausgegen, schiebt man ein 1 Bit hinterher.
Ebenfalls fertig.

von jimbo (Gast)


Lesenswert?

ok und vielen dank....
dann muss ich mir mal überlegen wie ich das schreibe
lg

von Karl H. (kbuchegg)


Lesenswert?

jimbo schrieb:
> ok und vielen dank....
> dann muss ich mir mal überlegen wie ich das schreibe

Wird wohl das beste sein erst mal ein C-Buch zu kaufen und zumindest die 
ersten paar Kapitel ruchzumachen, wenn du da groß überlegen musst.

von jimbo (Gast)


Lesenswert?

Ja das wäre wohl erstmal das beste für mich.... .-)

von Matze (Gast)


Lesenswert?

Vielleicht hilft dir das Stichwort 4B5B Code bzw 8b10b code weiter.
-> Google

von jumbo (Gast)


Lesenswert?

@ Karl heinz Buchegger

Buch...
Immer das böse Wort.
Kann man das nicht weniger abschreckend formulieren?

von Purzel H. (hacky)


Lesenswert?

Eine andere Moeglichkeit ist mit einer Pseudozufallsfolge zu 
multipliziern. Sowas macht man mit rueckgekoppelten Schieberegistern.

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.