Forum: Mikrocontroller und Digitale Elektronik 8b10b auf einem STM32 implementieren


von R. K. (uc_student)


Lesenswert?

Hallo zusammen

Ich übertrage aktuell etwa 100 kBit/s über eine längere Strecke, 
Manchester-Codiert. Dies funktioniert auch sehr gut und zuverlässig.

Ich möchte nun die Manchester-Codierung auf eine 8b10b-Codierung 
umstellen. Die 8b10b-Codierung ist ja auch mehr oder weniger 
gleichspannungsfrei, benötigt jedoch deutlich weniger Bandbreite als die 
Manchester-Codierung.

Meine Frage: hat jemand die 8b10b-Codierung schon mal in c 
implementiert? Die meisten Implementationen die ich gefunden habe sind 
eher digitaler Natur und somit auf FPGAs und CPLDs implementier...

Wäre toll, wenn jemand eine effiziente Möglichkeit dazu hätte...

Besten Dank im Voraus

von R. K. (uc_student)


Lesenswert?

Mir ist natürlich klar, dass ich das Encoding sehr einfach über eine 
Lookup-Tabelle machen würde, doch das Decoding macht mir 
Kopfzerbrechen... Bei 10 Bit würde die Lookup-Tabelle dann doch ziemlich 
gross

von Falk B. (falk)


Lesenswert?

@  R. K. (uc_student)

>Meine Frage: hat jemand die 8b10b-Codierung schon mal in c
>implementiert?

Eine Tabelle mit 512 Einträgen a 16(10) Bit sollte auf einem STM32 wohl 
kein Thema sein, oder?

>Kopfzerbrechen... Bei 10 Bit würde die Lookup-Tabelle dann doch ziemlich
>gross

Bitte? 1024 Byte sind dir zuviel?

von Lattice User (Gast)


Lesenswert?

R. K. schrieb:
> Mir ist natürlich klar, dass ich das Encoding sehr einfach über eine
> Lookup-Tabelle machen würde, doch das Decoding macht mir
> Kopfzerbrechen... Bei 10 Bit würde die Lookup-Tabelle dann doch ziemlich
> gross

Der am meisten gebräuchliche 8b10b code ist zweiteilig, ein 5b6b und ein 
3b4b Teil. Braucht also keine 10 bit Lookuptable, eine 6bit und eine 
4bit reicht.

Für Gleichspannungsfreiheit muss man beim encoden auch eine running 
disparity mitführen.

http://en.wikipedia.org/wiki/8b/10b_encoding

von Falk B. (falk)


Lesenswert?

@  Lattice User (Gast)

>Für Gleichspannungsfreiheit muss man beim encoden auch eine running
>disparity mitführen.

Eben das macht ja die Tabelle mit 512 Einträgen, letztendlich eine State 
Machine.

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.