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
@ 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
>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
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...
>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.
@ 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.
>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?
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?
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?
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.
>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ß :-)
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?
Ε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
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.