suche VCO für 20 Mhz

Gast #1437050
Lesenswert?

Hallo zusammen,

Ich will eine Datenübertragung mit 20 Mbit in einen fpga einlesen
Dazu muss ich den Takt aus den Daten wiedergewinnen.

Ich will das so realisieren:
http://www.xilinx.com/support/documentation/application_notes/xapp250.pdf

Ich finde jedoch nirgends einen VCO der mir 20 Mhz Liefert bei max 3,3 V

Ich binn noch über den TLC1799 gestolpert, der wäre ideal, lässt sich 
aber nicht mit spannung einstellen, sondern einem widerstand.

Kennt jemand einen Passenden Baustein ?
Gast #1437794
Lesenswert?

Der sender sendet auf 20 Mhz, die von einem Quartz kommen. Der VCXO 
bekommt auch einen 20 Mhz Quartz, und sollte sich dann auf eine 
Definierte Phasenlage Regeln lassen. So zumindest meine Theorie. Ich 
denke das der VCXO für meinen Anwendungsfall sogar besser geeignet ist, 
als ein VCO, da ich ja nur die Differenz der Beiden Quartze nachregeln 
muss.

Praktisch habe ich jedoch noch nie etwas mit vco/vcxo gemacht, und binn 
mir daher ein wenig unsicher
Gast #1437853
Lesenswert?

> Wenn FPGA dann kannst du es mit DDS oder DCM vesuchen.
Ich muss ja aus einem Datenstrom den Takt wiedergewinnen, das geht mit 
einem DCM nicht, da ich nicht mit jedem Takt eine Änderung auf der 
Datenleitung habe.
#1438275
Lesenswert?

Hallo Michael,

ein VCXO, z.B. mit dem MK3721, ist schon der richtige Ansatz für Dein 
Problem. Du solltest mit einer digitalen PLL im FPGA den eintreffenden 
Bittakt mit dem Takt des VCXOs vergleichen, ein digitales Loop-Filter 
rechnen (z.B. IIR 1. Ordnung) und die Stellgröße zum Nachziehen per PWM 
über ein Pin des FPGAs ausgeben. Dieses PWM-Signal mußt Du natürlich 
über ein analoges Filter zu einer analogen Stellspannung für den VCXO 
umwandeln. Achte bitte darauf, daß die Zeitkonstante der Regelschleife 
durch das interne Loop-Filter bestimmt wird, so bleibt sie 
programmierbar. Die Grenzfrequenz des externen analogen Filters sollte 
höher liegen und nur der Unterdrückung des PWM-Taktes dienen. Dieser 
Takt muß daher hoch genug sein, damit das analoge Filter nicht die 
Zeitkonstante der Regelschleife bestimmt.

Viele Grüße und viel Erfolg!

Gerrit, DL9GFA
Gast #1438810
Lesenswert?

> den eintreffenden
> Bittakt mit dem Takt des VCXOs vergleichen

Meiner Meinung nach, liegt genau hier die Herausforderung, denn der 
Datenstrom kann max 5 takte lang den selben Pegel haben.
Über die Realisierung im FPGA muss ich mir noch mal ordentlich den Kopf 
zerbrechen.
#1440751
Lesenswert?

Hallo Michael,

jetzt habe ich erst gesehen, daß Du eine Application Note angegeben 
hattest, die bereits eine digitale PLL vorschlägt, ähnlich wie ich es 
beschrieben habe...

Wenn Du die Synchronisation nur für die Abtastung des eintreffenden 
Bitstromes benötigst, also um immer die "Mitte" des Bits zu treffen, 
aber auf der anderen Seite keine Zeit für "echte" Signalverarbeitung 
hast, könntest Du mit einem sogenannten "early/late"-Ansatz weiter 
kommen. Hierbei geht es darum, die Flankenwechsel zu beobachten (Takte 
dazwischen zählen) und den tatsächlichen Wechsel im zeitlichen 
Erwartungsfenster auszuwerten. Wenn der Wechsel zu früh kommt, wird die 
angenommene Bitperiode (Taktzahl) um einen Takt verkürzt. Wenn die 
Flanke zu spät kommt wird sie um einen Takt verlängert. Wenn kein 
Flankenwechsel stattfindet, wird nichts verändert und auf das nächste 
Erwartungsfenster gewartet. Nach der Hälfte der aktuellen Bitperiode 
(Anzahl Takte zwischen den Flanken) wird das Bit abgetastet (hoffentlich 
in der Mitte ;o).
Dieser Ansatz lebt davon, daß der Bitstrom schön Gleichanteilsfrei ist, 
also Nullen und Einsen ziemlich gleichverteilt sind (eigentlich sollen 
vor allem viele Wechsel stattfinden), was durch eine entsprechende 
Kodierung üblicher Weise sicher gestellt ist.

Deine fünf Takte pro Bitperiode sind allerdings auch für diesen Ansatz 
sehr knapp; oft findet man sechzehn. Wenn die Flankenwechsel im 
schlimmsten Fall, bzw. in der ungünstigsten Bitfolge, nicht zu weit 
auseinander liegen, könnte es dennoch funktionieren. Wenn zu lange kein 
Flankenwechsel kommt, läuft der Abtastzeitpunkt davon durch die 
Akkumulation des zeitlichen Abtastfehlers über mehrere Bits, ohne 
Möglichkeit der Korrektur.

Was hälst Du davon?

Viele Grüße!

Gerrit, DL9GFA
Gast #1440910
Lesenswert?

Hallo Michael,

das von Gerrit vorgeschlagene Verfahren zur Taktrückgewinnung habe ich 
vor einiger Zeit selbst eingesetzt; mit acht Takten pro Bit funktioniert 
es bereits ziemlich gut, der Schritt auf 16 Takte pro Bit bringt aber 
noch eine erkennbare Verbesserung. Die weitere Verbesserung bei einer 
Steigerung der Auflösung auf 32 Takte pro Bit fiel im Vergleich dazu 
deutlich kleiner aus.

Der klassische "Early/Late"-Ansatz bringt übrigens von sich aus einen 
merklichen Jitter in die Abtastung ein, weil der Algorithmus 
prinzipbedingt jeden Flankenwechsel entweder als "zu früh" oder als "zu 
spät" erkennt, der Abtastzeitpunkt also mit jeder Flanke um einen Takt 
springt. Oft macht das viel mehr aus als das zeitliche 
Auseinanderdriften von Sendertakt und Empfängertakt. Deshalb ist es 
sinnvoll, den Algorithmus so zu erweitern, daß er zwischen "zu früh" und 
"zu spät" auch ein Zeitfenster für "paßt gut" hat, d.h. die Phase des 
Abtasttaktes unverändert läßt, wenn die erkannte Flanke in dieses 
Fenster fällt. Den Nutzen dieser Erweiterung kann man im Augendiagramm 
sehr gut erkennen.

Grüße

Thomas
#1441165
Lesenswert?

Hallo Michael und Thomas,

Danke, Thomas, für die Ergänzungen. Das Hin- und Herspringen der 
Taktanzahl pro Bitperiode ist natürlich größer als die Abweichung von 
Sende- und Empfangstakt, aber nicht wirklich ein Problem. Bei fünf 
Takten Zeitauflösung pro Bit wirst Du wahrscheinlich kein sinnvolles 
"paßt gut"-Zeitfenster finden. Weil die Abweichung durch die groben 
Quantisierungsschritte zu groß sind, wird schon in den nächsten 1...2 
Bit eine Korrektur nötig sein.

Ich kenne Michaels Applikation nicht, aber manchmal benötigt man diesen 
Takt auch für weitere Zwecke, z.B. wenn AD- oder DA-Wandler-Takt an 
diesen Bittakt geknüpft sind (weil Abtastwerte des Senders übertragen 
werden). Der große Jitter würde die Dynamik der Wandlung ruinieren. Die 
genaue Bitperiode ist durch Tiefpaßfilterung der jitternden 
Periodendauern ermittelbar (das Hin- und Herschalten ist quasi eine PWM 
mit dem genauen Wert). Mit einem IIR-Filter 1. Ordnung (nur eine 
Multiplikation und Addition, ggf. mit 2^x-Koeffizient auf Bitshift und 
Addition vereinfachbar) kann das auch mit den wenigen Zyklen pro Bit 
realisiert werden. Da die Takte von Sender und Empfänger einen 
konstanten Versatz haben, der sich höchstens über Temperatur sehr 
langsam ändern, kann die Zeitkonstante der Mittelung ruhig sehr groß 
sein (Wortbreite des IIR beachten!). Das initiale Einschwingen dauert 
dann aber entsprechend lang, oder man schaltet die Grenzfrequenz zum 
Einschwingen hoch.
Ob mit diesen Mitteln der Takt jitterarm genug wird, hängt von der 
geforderten Dynamik der AD- oder DA-Wandlung ab. An die 100dB wird man 
bestimmt nicht kommen.

Viele Grüße!

Gerrit, DL9GFA
#1441536
Lesenswert?

Michael Sauon schrieb:

>...der Datenstrom kann max 5 takte lang den selben Pegel haben.

Aha ich verstehe, es handelt sich hierbei um einen 8B10B Decoder!

Wenn dies der Fall sein sollte dann wirst du einen VCO mit einem LPF 
dahinter in VHDL realisieren müssen. Schau mal bei Xilinx auf der 
Homepage nach "8B10B" glaube unter der Rubrik CPLD.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren