Forum: Analoge Elektronik und Schaltungstechnik Taktrückgewinnung aus Manchesterkodierung


von Johannes (Gast)


Lesenswert?

Hallo,
ich habe ein SPI-Signal und ein Taktsignal miteinander XOR-verknüpft 
(Manchester), um es über einen Drahtloskanal zu übertragen. Wie bekomme 
ich die jetzt wieder auseinander? Allgemein soll das wohl per PLL 
funktionieren. Dazu habe ich auch schon einiges im Internet und in 
diversen Büchern gelesen. Aber so ganz verstehen tue ich es noch nicht. 
Klappt das überhaupt hier bei Manchester?
Der VCO passt sich dem Eingangssignal an - okay. Aber was, wenn sich das 
Eingangssignal jetzt ändert? Was passiert bei einem Phasensprung um 
180°? Vielleicht gibt's hier ja wen, der das noch mal besser erklären 
kann :-)
Beste Grüße
Johannes

von Falk B. (falk)


Lesenswert?

@  Johannes (Gast)

>ich habe ein SPI-Signal und ein Taktsignal miteinander XOR-verknüpft
>(Manchester), um es über einen Drahtloskanal zu übertragen.

Hoffentlich hat dein Taktsignal möglichst 50% Tastverhältnis.

> Wie bekomme
>ich die jetzt wieder auseinander?

XNOR ;-)

> Allgemein soll das wohl per PLL
>funktionieren.

Das ist ein Teil.

>Dazu habe ich auch schon einiges im Internet und in
>diversen Büchern gelesen. Aber so ganz verstehen tue ich es noch nicht.
>Klappt das überhaupt hier bei Manchester?

Sicher. Macht Ethernet seit 40 Jahren so.

>Der VCO passt sich dem Eingangssignal an - okay.

Jain.

> Aber was, wenn sich das
>Eingangssignal jetzt ändert? Was passiert bei einem Phasensprung um
>180°? Vielleicht gibt's hier ja wen, der das noch mal besser erklären
>kann :-)

Was du brauchst nennt sich Clock & Data Recovery. Dazu muss man sowohl 
per PLL oder ähnlichem den Takt als auch die Daten zurück gewinnen. Ist 
aber bei Manchester eher einfach, man muss nur die Polarität der Flanken 
messen.

Fallende Flanke -> Null
Steigende Flanke -> Eins

Wahlweise auch invertiert. Das kann man aber leicht automatisch erkennen 
und korrigieren.

Je nach Bitrate kann man das auch voll digital machen, bei niedrigen 
Geschwindigkeiten per uC, wenns schneller wird mit CPLD & Co.

MFG
Falk

von Johannes (Gast)


Lesenswert?

>Hoffentlich hat dein Taktsignal möglichst 50% Tastverhältnis.
Jap.

>XNOR ;-)
Dann werde ich mal ne Anfrage bei ein paar Herstellern zu dem Bauteil 
machen :-)

>Was du brauchst nennt sich Clock & Data Recovery. Dazu muss man sowohl
per PLL oder ähnlichem den Takt als auch die Daten zurück gewinnen. Ist
aber bei Manchester eher einfach, man muss nur die Polarität der Flanken
messen.

Ich habe leider nichts zum Messen der Flanken zur Verfügung wie zB einen 
uC. Das soll ohne Controller/FPGA/Vergleichbares laufen. Eine Lösung mit 
PLL wäre mein Favorit (weil die einzige Lösung, die ich gerade sehe :-) 
). Nur verstehen tue ich das noch nicht. Es geht dabei um 
Clock-Frequenzen im Bereich von 100-400kHz. Eine Lösung mit 
Logikbausteinen (D-Flipflop etc.) ist nicht möglich?

Schöne Grüße
Johannes

von genervt (Gast)


Lesenswert?

Johannes schrieb:
> Eine Lösung mit
> Logikbausteinen (D-Flipflop etc.) ist nicht möglich?

Wird ein Grab.

Nimm nen kleinen CPLD und schau dir mal das an:

http://www.erg.abdn.ac.uk/~gorry/course/phy-pages/dpll.html

von Εrnst B. (ernst)


Lesenswert?

Brauchst du das Taktsigal überhaupt (ausser um deine Daten wieder zu 
Ent-Manchester-n?)
Wie schnell ist dein Takt, viel kleiner als übliche µC-Taktfrequenzen?
Schau dir vielleicht mal so Software-RC5-Fernbedienungsdecoder an
z.B. Beitrag "Fernbedien RC5 Empfänger"

Der Synchronisiert den "Takt" nach jedem einzelnen Bit neu, und kommt 
auch (Quarzlos) mit 10% Abweichung klar...

von Johannes (Gast)


Lesenswert?

>Wird ein Grab.
Zu langsam? Bei 400kHz sollte das doch möglich sein. Woran scheitert es?

>Brauchst du das Taktsigal überhaupt
Ja, weil SPI-Signal.

>Wie schnell ist dein Takt
max. 4kHz

>Schau dir vielleicht mal so Software-RC5-Fernbedienungsdecoder an
Grundsätzlich sicher nicht verkehrt. Aber wie gesagt: Möglichst ohne uC.

von Falk B. (falk)


Lesenswert?

@  Johannes (Gast)

>uC. Das soll ohne Controller/FPGA/Vergleichbares laufen.

Wird schwierig, wenn man kein fertiges IC zweckentfremden kann.

>Eine Lösung mit
>PLL wäre mein Favorit

Die allein reicht nicht, man braucht auch noch etwas Logik.

>Clock-Frequenzen im Bereich von 100-400kHz.

>>Wie schnell ist dein Takt
>max. 4kHz

Ja Was denn nun? 4kHz oder 400kHz?

>>Schau dir vielleicht mal so Software-RC5-Fernbedienungsdecoder an
>Grundsätzlich sicher nicht verkehrt. Aber wie gesagt: Möglichst ohne uC.

Dann musst du ein vorhandenes System nutzen, dafür gibt es fertige 
Empfänger.

von Johannes (Gast)


Lesenswert?

>Die allein reicht nicht, man braucht auch noch etwas Logik.
Wo finde ich mehr Infos dazu, wie sowas aussieht/aussehen kann?

>Ja Was denn nun? 4kHz oder 400kHz?
400kHz. Vertippt.

Okay. Was macht eine PLL? Sie passt die Frequenz des VCO per 
Phasenabgleich der Eingangsfrequenz an. Entsprechend der Frequenz ist 
das Ausgangssignal am TP-Filter.
Mein XOR-verknüpftes Eingangssignal enthält die Taktfrequenz mit 
Phasensprüngen um 180° bzw. pi. Das bedeutet, dass mein VCO und mein 
Phasendiskriminator auf Phasensprünge dieser Art nicht reagieren dürfen. 
Zumindest wäre das eine Möglichkeit, oder? Mit Logik kommt man da aber 
nicht weit, weil es mehr als zwei Zustände gibt. Man bräuchte eine Art 
Inverter-OP-Schaltung, falls der Eingang einen Phasensprung um 180° 
anzeigt.

>Dann musst du ein vorhandenes System nutzen, dafür gibt es fertige
Empfänger.
Kannst Du mir dazu noch genaueres sagen?

von Johannes (Gast)


Lesenswert?

Oder muss ich meine PLL träge genug machen, dass sie sich in der 
Anfangszeit synchronisiert und später auf die auftretenden 180° Sprünge 
nur seeehr langsam reagiert? Irgendwann kommt ein zweiter Sprung und die 
PLL kann sich wieder in Richtung der bisherigen Frequenz bewegen? 
Dadurch erhält man keinen 100%ig gleichmäßigen Takt. Die Schwankungen 
werden jedoch nicht besonders groß sein.
Wie funktioniert eine solche Synchronisation bei anderen Systemen? Immer 
per PLL oder vergleichbar?

von Jürgen (Gast)


Lesenswert?

Ist das nicht eine Aufgabe für einen Mikrocontroller (ATTiny/ATMega)? 
Mit einem 20 MHz Takt für den Controller und 400 KHz für das Signal, 
bleiben 50 Takte um ein Bit zu verarbeiten. Sieht doch ganz gut aus - 
oder?

von genervt (Gast)


Lesenswert?

Jürgen schrieb:
> Mit einem 20 MHz Takt für den Controller und 400 KHz für das Signal,
> bleiben 50 Takte um ein Bit zu verarbeiten.

Selbst wenn er dafür 4 Takte pro Instruktion bräuchte würde das locker 
reichen!

Das ist einfach eine Knobelaufgabe und die muss er selbst lösen.

von Johannes (Gast)


Lesenswert?

>Ist das nicht eine Aufgabe für einen Mikrocontroller (ATTiny/ATMega)?

>Selbst wenn er dafür 4 Takte pro Instruktion bräuchte würde das locker
>reichen!

Das soll nach wie vor ohne uC laufen. Sonst wäre die Herausforderung 
wohl bei Weitem nicht so groß :-)

von Εrnst B. (ernst)


Lesenswert?

Wieviele Bits schiebst du max. sequentiell über dein Manchester-SPI?

Reicht es vielleicht, auf Empfängerseite einfach einen Oszillator mit 
"ungefähr" der richtigen Frequenz loslaufen zu lassen, wenn das erste 
Bit kommt?

Oder ist der Takt immer da und durchlaufend?

von Reinhard Kern (Gast)


Lesenswert?

Εrnst B✶ schrieb:
> Oder ist der Takt immer da und durchlaufend?

Da kommst du auf ein schwieriges Problem - bei solchen Systemen muss vor 
den Daten eine Präambel gesendet werden, z.B. 16 Einsen, sozusagen zum 
Üben für die PLL. Ich bezweifle sehr, dass der TO sowas vorgesehen hat.

Unterlagen wie es geht könnte man in den technischen Daten von USARTs 
für SDLC und HDLC finden.

Gruss Reinhard

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.