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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.