Hallo,
Ich möchte das Taktsignal des Manchester Codes per PLL Rekonstruieren.
das dieses Phasenricjtig ist, wird eine Prämbel gesendet 11111 die
genaue dem Taktsignal entspricht.Wärend der Präambel, soll die PLL
einrasten und auch bei anschließender Veränderung der Phase sprich wenn
die Daten gesendet werden, sich nicht wieder verändern.Wie kann man dies
erreichen?
Oder ist es möglich, den Phasenrichtigen Takt auch ohne diese Präambel
zu rekonstrieren?? Dazu finde ich nirgends was, aber vielleicht weiß es
jemand..
Danke Schonmal im Vorraus
Du kannst dir zu Nutze machen, das bei 'echtem' Manchester Code ein
Daten-Flankenwechsel immer nur auf den Clockflanken passiert. Das heisst
aber, das die Rückgewinnung polaritätsunabhängig die Flanke erkennen
muss und auch nur genau dann das regenerierte Clocksignal 'nachzieht'.
Eine automatische Clockregenerierung komplett ohne Anhaltspunkte auf die
originale Datenrate erfordert allerdings einige Versuchsläufe.
Allerdings ist die Präambel genau für einfachere Synchronisation
gemacht, der ähnliche Ansatz wie die Farbträger Rückgewinnung im alten
PAL Fernsehen.
Dafür bräuchte ich dann aber einen Prozessor oder Fpga..
Und nich nur ne einfache PLL..
Oder ne intelligente Software PLL, die das berücksichtigt den
Flankenwechsel erkennt Umfrage sorgt, dass das den Ostillator nicht
juckt um die Phase korrekt bleibt..
Jan R. schrieb:> Ich möchte das Taktsignal des Manchester Codes per PLL Rekonstruieren.
Dann bist Du der erste, der sowas mit PLL macht.
Üblicher Weise nimmt man einen MC dazu und der löst einfach bei jeder
Flanke einen Interrupt aus.
Achja, bei den aktuellen XMegas habe ich das Event Eystem mal benutzt um
eine digitale "abgespeckte" PLL zu bauen, um einen solchen Takt
zurückzugewinnen.
Man nutzt einfach aus, dass nur zwei Grundfrequenzen in dem Manchester
Signal auftauchen, wo auch noch die eine das Doppelte der Anderen ist.
Und zwar stellt man einen Timer ein, der z.B. von dem ungenauen internen
Timer gespeist wird. Würde man den Timer jetzt frei-rennend laufen
lassen, käme es früher oder später zur Verschiebung der Abtastung.
Man kann jetzt aber die Flanken im Signal benutzen um diesen Timer
wieder zurückzusetzen. Das heißt er läuft für maximal 2 Abtastperioden
frei rum und wird dann wieder "zwangs" synchronisiert.
Das alles ohne Software-Eingriff.
Ich glaube nicht, dass man das mit PLL macht. Beim Manchester Code wird
jede Flanke als Datenbit (je nach Richtung) gewertet, wenn jedoch
bereits vor Ablauf einer vollen Periodendauer seit dem letzten Bit eine
Flanke kommt, wird dies nicht gewertet. Das kann man mit einfachen
Logikschaltungen realisieren, ungefähre Bitrate sollte bekannt sein.
Simon K. schrieb:> Achja, bei den aktuellen XMegas habe ich das Event Eystem mal benutzt um> eine digitale "abgespeckte" PLL zu bauen, um einen solchen Takt> zurückzugewinnen.>> Man nutzt einfach aus, dass nur zwei Grundfrequenzen in dem Manchester> Signal auftauchen, wo auch noch die eine das Doppelte der Anderen ist.> Und zwar stellt man einen Timer ein, der z.B. von dem ungenauen internen> Timer gespeist wird. Würde man den Timer jetzt frei-rennend laufen> lassen, käme es früher oder später zur Verschiebung der Abtastung.> Man kann jetzt aber die Flanken im Signal benutzen um diesen Timer> wieder zurückzusetzen. Das heißt er läuft für maximal 2 Abtastperioden> frei rum und wird dann wieder "zwangs" synchronisiert.> Das alles ohne Software-Eingriff.
Du hast doch einen MC genommen.. Also ganz ohne Software ;-)
Tja da musste die Frequenz aber bekannt sein... Der Timer wurde nur
Zurückgesetzt um die Verschiebung durch dessen Ungenauigkeit zu
Terminieren.
Aber du gewinnst doch keinen Takt durch einen Timer, da schaffst nur das
der Timer im Richtigen Takt läuft.
Was ist für dich eine Abtastperiode?
Jan R. schrieb:> Du hast doch einen MC genommen.. Also ganz ohne Software ;-)
Die PLL lief ohne Softwareeingriff. Natürlich musste sie konfiguriert
werden...
> Tja da musste die Frequenz aber bekannt sein... Der Timer wurde nur> Zurückgesetzt um die Verschiebung durch dessen Ungenauigkeit zu> Terminieren.
Wenn die Frequenz komplett unbekannt ist, geht es auch mit einer PLL
nicht. Das scheitert schon daran, dass ein VCO nicht beliebig abstimmbar
ist. Aber auch an vielen anderen Details
> Aber du gewinnst doch keinen Takt durch einen Timer, da schaffst nur das> der Timer im Richtigen Takt läuft.
Deswegen "abgespeckte PLL".
> Und warum 2 Taktperioden? Warum machst du dir das Leben so schwer
Weil der Timer auf der schnelleren der beiden Frequenzen des Manchester
Signals läuft, aber auch Teile mit der Hälfte der Frequenz im Signal
enthalten sind. Siehe das Bildchen oben rechts:
http://de.wikipedia.org/wiki/Manchester-Code
Warum sollte ich mir das Leben schwer machen? Es ist mMn. eine super
elegante und robuste Methode um einen Sample-Takt zurückzugewinnen.
Angewendet habe ich sie hier, um Daten aus einem 13,56MHz RFID Feld zu
samplen:
https://github.com/emsec/ChameleonMini/wiki
Ich habe dann einen Compare Kanal des Timers genutzt um die Sample
Position einzustellen (idealerweise genau die Bitmitte). Wie sollte man
es anders lösen, ohne extra Bauteile, FPGA oder eine reine
Softwarelösung?
Das Event System im XMEGA ist echt eine Tolle Sache.
Dann entschuldige mich habe noch keinen XMega benutzt. Kann man da
einstellen, dass er nur bei der schnelleren der beiden Frequenzen sich
zwangssynchronisiert??
Manchester-Code bekannter Frequenz decodiert man mit einem simplen
nicht- retriggerbaren Monoflop, das von einer Differenzierstufe
getriggert wird und auf 3/4 der Bitzeit eingestellt ist.
Die Flanke in der Mitte jedes Bits löst das Monoflop aus. Wenn das
Monoflop zurückkippt, sampled man jeweils das nächste Bit (alternativ
wertet man die Richtung der triggernden Flanke aus). Zur initialen
Synchronisation braucht man zwei ungleiche aufeinanderfolgende Bits,
also entweder 01 oder 10. Das können Stop- und Startbit sein, oder ein
Synchronisationsbyte 0x55 oder 0xAA. Die "falschen" Flanken zwischen
zwei gleichen aufeinanderfolgenden Bits fallen in die Haltezeit des
Monoflops und werden so ignoriert.
Wenn man das Monoflop digital macht (z.B. vierfacher Takt, 2 Bit Zähler)
dann kann man das natürlich auch in eine PLL einbetten.
XL
Jan R. schrieb:> Dann entschuldige mich habe noch keinen XMega benutzt. Kann man da> einstellen, dass er nur bei der schnelleren der beiden Frequenzen sich> zwangssynchronisiert??
Nö. Musst du doch gar nicht. Die "langsamere" Frequenz in dem Signal ist
genau die Hälfte der schnellen Frequenz und deswegen liegt sie auf dem
gleichen "Raster".
Wie auch immer, ich will noch klarstellen, dass das RFID Protokoll in
meinem Projekt kein Manchester benutzt, sondern eine andere Kodierung.
Mein anliegen war, wie Axel's Anliegen zu zeigen, dass man nicht
wirklich eine "echte" PLL benötigt um Manchester zu dekodieren.
Um mal auf die ursprüngliche Frage zurückzukommen: wenn die PLL nur auf
eine Präambel einrasten und danach halten soll, dann muss ein
Sample&Hold zwischen den Schleifenfilter und den VCO. Der schnappt sich
die Regelspannung im eingerasteten Fall und hält diese konstant. Ist ein
zwar bisschen Fummelei, weil man beim Zurückschalten auf Live-Betrieb
keine Transienten haben will, aber letztendlich steckt solche Technik in
jedem Floppy- und Festplattenlaufwerk.
Bei einem digitalen PFD könnte ich mir auch einfach ein Gating
vorstellen, dass die PFD nur während der Präambel scharfschaltet...
Wenn man also eine PFD mit getrennten UP/DOWN Ausgängen hat, sind diese
nach der Präambel beide inaktiv (z.B. LOW).
soul eye schrieb:> dann muss ein> Sample&Hold zwischen den Schleifenfilter und den VCO. Der schnappt sich> die Regelspannung im eingerasteten Fall und hält diese konstant.
Jo, deswegen auch mein Hinweis oben auf die Farbträgerrückgewinnung
inkl. Phasenlage beim PAL System. Allerdings erfordert das, das die Lage
der Präambel ('Burst' bei PAL) genau bekannt, um sie zu finden und das
'Tor' zu öffnen.
PAL hält nach dem 'Burstgate' den Farbträgerquarz für die Dauer der
Zeile gelockt. In der nächsten Zeile während des Bursts wird dann wieder
die Phasenlage korrigiert.
soul eye schrieb:> Um mal auf die ursprüngliche Frage zurückzukommen: wenn die PLL nur auf> eine Präambel einrasten und danach halten soll, dann muss ein> Sample&Hold zwischen den Schleifenfilter und den VCO. Der schnappt sich> die Regelspannung im eingerasteten Fall und hält diese konstant. Ist ein> zwar bisschen Fummelei, weil man beim Zurückschalten auf Live-Betrieb> keine Transienten haben will, aber letztendlich steckt solche Technik in> jedem Floppy- und Festplattenlaufwerk.
Wie kann man eine Sampe&Hold bauen, sodass diese die Spannung auf daher
hält, der Kondensator entlädt sich ja da muss doch regelmäßig
nachgeladen werden.
> Wie kann man eine Sampe&Hold bauen, sodass diese die Spannung auf daher> hält, der Kondensator entlädt sich ja da muss doch regelmäßig> nachgeladen werden.
Das hat man schon in der S.B.Z. geschafft.
War zur Lautstaerkeregelung und benutzte einen MOSFET und einen
10 uF MKC Kondensator.
Diese Konstruktion hielt die im Kondensator "gespeicherte" Spannung
wochenlang und ohne jede Stuetzbatterie...
руки верх schrieb:>> Wie kann man eine Sampe&Hold bauen, sodass diese die Spannung auf daher>> hält, der Kondensator entlädt sich ja da muss doch regelmäßig>> nachgeladen werden.>> Das hat man schon in der S.B.Z. geschafft.>> War zur Lautstaerkeregelung und benutzte einen MOSFET und einen> 10 uF MKC Kondensator.>> Diese Konstruktion hielt die im Kondensator "gespeicherte" Spannung> wochenlang und ohne jede Stuetzbatterie...
Was genau versteht man unter S.B.Z.
Jan R. schrieb:> руки верх schrieb:>>> Wie kann man eine Sampe&Hold bauen, sodass diese die Spannung auf daher>>> hält, der Kondensator entlädt sich ja da muss doch regelmäßig>>> nachgeladen werden.>>>> Das hat man schon in der S.B.Z. geschafft.>>>> War zur Lautstaerkeregelung und benutzte einen MOSFET und einen>> 10 uF MKC Kondensator.>>>> Diese Konstruktion hielt die im Kondensator "gespeicherte" Spannung>> wochenlang und ohne jede Stuetzbatterie...>> Was genau versteht man unter S.B.Z.
Achso na klar, aber hatten die da schon mosfets und opvs?