Forum: FPGA, VHDL & Co. Intel PLL als VCO


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mosfet (Gast)


Lesenswert?

Wie kann man die PLL frequenz möglichst smooth im Betrieb anpassen (also 
nicht mit grossen schritten/verhältnissen sondern nur geringfügig (+/- 
0.xx %)

von Bernd G. (Gast)


Lesenswert?

???

von Gustl B. (-gb-)


Lesenswert?

Da es laut Titel um eine PLL von Intel geht ist der erste Schritt, dass 
man mal guckt ob die Eckdaten zur Anwendung passen:
https://www.intel.com/content/www/us/en/docs/programmable/683195/20-3/pll-features.html

Und da die PLL rekonfigurierbar ist, kannst du im laufenden Betrieb die 
Frequenz ändern. Ob dir die Schrittweite oder 
Umkonfigurationsgeschwindigkeit reicht musst du anhand der Eckdaten 
herausfinden.

von Mosfet (Gast)


Lesenswert?

Danke.
Nun gem. dem Intel beschrieb sehe ich Möglichkeiten:

External feedback kompensation?
Auch die phase shift resolution mit 78ps würde mehr als genügen. Könnte 
nach jedem Puls die phase shift entsprechend angepasst werden oder 
bringt dies den PLL durcheinander? (Annahme FPGA systemclk >> als die 
besagte PLL Frequenz)

Nochmal: Mein ziel ist es die Ausgangspll frequenz geringfügig tunen zu 
können im 0.xx% Bereich der orriginalen Frequenz.

von -gb- (Gast)


Lesenswert?

Wenn es um eher kleine Änderung geht würde ich nicht die IOPLL sondern 
die fPLL nehmen. Wie schnell so eine Änderung geht weiß ich nicht. Und 
die Schrittweite hängt vielleicht auch vom Frequenzbereich ab. Was 
bedeutet denn 0.xx% ? Eine Änderung um 0.5% ist bei 100 MHz ein Schritt 
von 0.5 MHz und bei 500 MHz ein Schritt von 2.5 MHz.

Mein Tipp wäre das einfach mal in der Simulation auszuprobieren.

von Mosfet (Gast)


Lesenswert?

-gb- schrieb:
> Wenn es um eher kleine Änderung geht würde ich nicht die IOPLL
> sondern die fPLL nehmen. Wie schnell so eine Änderung geht weiß ich
> nicht. Und die Schrittweite hängt vielleicht auch vom Frequenzbereich
> ab. Was bedeutet denn 0.xx% ? Eine Änderung um 0.5% ist bei 100 MHz ein
> Schritt von 0.5 MHz und bei 500 MHz ein Schritt von 2.5 MHz.
> Mein Tipp wäre das einfach mal in der Simulation auszuprobieren.

Nun der aktuelle VCO (analog) kann +/-10khz sinnvoll einstellbar in 
wenigen hz (da Analig theoretisch unendlich) bezogen auf 10MHz.

Ich möchte nun gerne den bereich +/- 100 khz abdecken (möglichst ohne 
Auflösungsverlust, also wäre super wenns praktisch bis aufs hz (relativ) 
einstellbar wäre).
Wichtiger als die Auflösung ansich ist jedoch der frequenzübergang - 
dieser sollte fliessend sein und nich vereinzelt zu "HF pulsen" (oder 
sonnstige komische sachen) führen.

von Bernd G. (Gast)


Lesenswert?

Mosfet schrieb:
> Wichtiger als die Auflösung ansich ist jedoch der frequenzübergang -
> dieser sollte fliessend sein und nich vereinzelt zu "HF pulsen" (oder
> sonnstige komische sachen) führen.

Dann lass es so, wie es ist.

von Gustl B. (-gb-)


Lesenswert?

Bernd G. schrieb:
> Dann lass es so, wie es ist.

Sehe ich auch so. Die PLL ist nicht für das gebaut was du möchtest.

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Entweder

- am Ausgang des FPGA mit einem variablen Delay einstellen
- am Ausgang des FPGA mit einem variablen Delay und einem Input eine 
Schleife bilden

Wenn es langsam und statisch genug gehen darf:

- 2 PLL mit Umschaltung, die umkonfiguriert werden

Quasi ein Doppelkupplungsgetriebe im FPGA.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Eine PLL, die so ein bisschen daneben ist ist keine PLL. Dann ist sie ja 
nicht "gelockt".
Kanns sein, dass du eher sowas suchst:
https://www.sitime.com/products/i2cspi-oscillators/sit3521

Da kannste die Frequenz, die das Ding erzeugt, per SPI oder I2C einige 
(viele) ppm ziehen.

Gruss
WK

von Jens (Gast)


Lesenswert?

Ich kenne deine Anwendung nicht, aber es hört sich so an, dass du nicht 
eine PLL verstimmen musst, sondern eher eine DDS brauchst.

Ich würde als Grundtakt deine PLL nehmen. Dann ist die Frequenz schonmal 
relativ fest.
Die nimmst du und erzeugst dir mit einer DDS einen zweiten Takt, mit dem 
du dann arbeitest. Und den kannst du, je nach Größe deines Akkus, in 
Hz-Schritten verstellen. Im Betrieb und die Übergänge sind fließend.
Die Implementierung ist einfach und die kannst du selbst machen und hast 
damit auch alles in der Hand.
Dann bist du nicht mehr von irgendwelchen Modulen von Intel abhängig.

Grüße, Jens

von Mosfet (Gast)


Lesenswert?

Jens schrieb:
> Ich kenne deine Anwendung nicht, aber es hört sich so an, dass du
> nicht eine PLL verstimmen musst, sondern eher eine DDS brauchst.
> Ich würde als Grundtakt deine PLL nehmen. Dann ist die Frequenz schonmal
> relativ fest.
> Die nimmst du und erzeugst dir mit einer DDS einen zweiten Takt, mit dem
> du dann arbeitest. Und den kannst du, je nach Größe deines Akkus, in
> Hz-Schritten verstellen. Im Betrieb und die Übergänge sind fließend.
> Die Implementierung ist einfach und die kannst du selbst machen und hast
> damit auch alles in der Hand.
> Dann bist du nicht mehr von irgendwelchen Modulen von Intel abhängig.
> Grüße, Jens

Danke. Nun führt dies nich direkt zu einem jitter in höhe der 
systemperiode?
BSP: ich habe ein sysclk von 100MHz und möchte nun ein 1MHz in kleinen 
schritten erhöhen also auf 1.00001 dann 1.00002MHz etc. hätte ich doch 
mit einer simplen Akkumulator methode einen Jitter von 1% (!). Der 
übergang von 1MHz zu 1.00001 wäre dann nicht so smooth (springt wild 
zwischen 1MHz und 1.01 :P)

von Gustl B. (-gb-)


Lesenswert?

Korrekt, DDS macht ordentlich Jitter. Vielleicht kann man auf das Signal 
aus einer DDS eine träge PLL locken ...

von Günter Lenz (Gast)


Lesenswert?

Bei einer PLL wird ja ein VCO mit einer Sollfrequenz
verglichen, meistens ein Quarzoszillator oder geteilte
Frequenz eines Quarzoszillators. Es gibt einen Phasen-
detektor der bei Abweichung eine Regelspannung liefert.
Die Regelspannung steuert nun den VCO. Wir haben ein
Regelkreis. Diese Referenzfrequenz also zum Beispiel den
Quarzoszillator kann man ja etwas in der Frequenz ändern,
daß nennt sich ziehen. Damit ändert sich auch die VCO-
Frequenz.

Damit ist genau das erreicht was "von Mosfet" schrieb:
>Wie kann man die PLL frequenz möglichst smooth im Betrieb anpassen (also
>nicht mit grossen schritten/verhältnissen sondern nur geringfügig (+/-
>0.xx %)

http://ve6aqo.com/Sender_Bausteine_dl6mh.htm

https://www.elektroniktutor.de/signalkunde/quarzosz.html

https://www.qrpforum.de/forum/index.php?thread/5880-quarz-oszillator-ziehen/

von Mosfet (Gast)


Lesenswert?

Eigentlich müsste in diesem pll regelkreis bei der phasenderektion doch 
nur ein kleiner offset eingefügt werden.
Ich habe neulich einen billig Funktionsgenerator gesehen der intern nur 
einen normalen quarzoszillator hat und ein FPGA (nebst natürlich dac 
analog, speisungen etc.)
Also irgendwie müsste es möglich sein...

von Mcn (Gast)


Lesenswert?


von Dergute W. (derguteweka)


Lesenswert?

Mosfet schrieb:
> Eigentlich müsste in diesem pll regelkreis bei der phasenderektion doch
> nur ein kleiner offset eingefügt werden.

Mumpitz. Entweder lockt die PLL dann trotzdem auf die "richtige" 
Frequenz (also ohne deinen Offset) oder sie lockt nicht.
Fuer das was du willst, ist eine PLL nicht das Mittel der Wahl. Guck dir 
den Oszillatorchip von SiTime an, den ich verlinkt habe.

Gruss
WK

von Mosfet (Gast)


Lesenswert?

Dergute W. schrieb:
> Mosfet schrieb:
>
>> Eigentlich müsste in diesem pll regelkreis bei der phasenderektion doch
>> nur ein kleiner offset eingefügt werden.
>
> Mumpitz. Entweder lockt die PLL dann trotzdem auf die "richtige"
> Frequenz (also ohne deinen Offset) oder sie lockt nicht.
> Fuer das was du willst, ist eine PLL nicht das Mittel der Wahl. Guck dir
> den Oszillatorchip von SiTime an, den ich verlinkt habe.
> Gruss
> WK

Ja der Oszi chip ist super; glaube ich dir. Wenns aber ohne 
spezialbauteil gehen würde wäre es noch "superer".
Irgendwie schaffens die mit dem billig funktionsgenerator auch (obwohl 
ich dort nie gemessen habe ob der jittert).
Was kann sonnst gemacht werden? PLL speisen mit der jitterbehafteten 
frequenz sinnvoll?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Naja, bei Funktionsgeneratoren ist die Chance, dass die mit DDS arbeiten 
schon recht gross.
Nun bin ich Dummerle aber davon ausgegangen, dass du mit dem Takt 
irgendwas im FPGA takten willst, da ist DDS halt eher kagge, bzw. 
mutiert dann zu einem Clockenable Signal (was dann und wann die Clk z.b. 
fuer einen Takt disabled) in Tateinheit mit Clock am oberen 
Frequenzwunschende.
Wenn das "aus Gruenden" nicht geht, dann wirds wohl doch irgendwann mal 
so ein lustiger Speciaaalchip.
Wenn man wie du so erschoepfend Auskunft darueber erteilt, was man 
eigentlich vorhat, ist's tendentiell eher schwierig mit 
massgeschneiderten Loesungen.


Gruss
WK

von Mosfet (Gast)


Lesenswert?

Nun was soll den bitte an der Zielsetzung nicht klar sein:

Gesucht fein einstellbare frequenz (in ordentlicher qualität: smoother 
übergang, wenig jitter, wenig abweichung zu 50% duty)

Wie schon geschrieben will ich einen Analogen VCO ersetzen; dabei habe 
ich mein FPGA board vorgesehen (hat etliche PLL aber halt kein spezial 
Asic).

Was kann sonnst noch (sinnvoll) gemacht werden? z.B. Mit einen akku die 
frequenz generiert und dann auf diese frequenz 3 pll hintereinander?

von Gustl B. (-gb-)


Lesenswert?

So, ich hab jetzt mal probiert:

DDFS mit 450 MHz und 16 Bits im Artix7 und damit ein 21 MHz Rechteck 
(MSB vom Akku) erzeugt. Das jittert ganz ordentlich. Das habe ich dann 
in eine PLL gefüttert (bei Xilinx ist die Mindestfrequenz 19 MHz) und da 
stumpf weitergeleitet. Ergebnis ist ein Takt mit etwas geringerem 
Jitter, aber weiterhin schlecht.

Der Grund ist, dass da mal ein Takt mehr oder weniger in einer Periode 
steckt.

Was gehen könnte:
Mit dem DDFS einen Sinus erzeugen mit möglichst vielen Stützstellen.
Das über einen DAC ausgeben.
Ganz hart filtern dass da wirklich nur der Sinus übrig bleibt.
Den auf einen Komparator/FPGA Pin und ab in eine PLL.

Rein im FPGA könnte man mehrere PLLs hintereinanderschalten bis man die 
gewünschte Frequenzauflösung erreicht hat. Aber ich stelle mir das 
schwer vor einen Algorithmus zu schreiben der die steuert. Denn wenn du 
dann mit der Frequenz hoch oder runter willst musst du mehrere PLLs 
rekonfigurieren und das in unterschiedliche Richtungen und vielleicht 
auch immer warten bis die gelockt haben denn da größere Sprünge gemacht 
werden.

von Günter Lenz (Gast)


Lesenswert?

von Mosfet schrieb:
>Wie schon geschrieben will ich einen Analogen VCO ersetzen;

Ein analogen VCO kann man nicht ersetzen, es gibt keinen
digitalen VCO. Wenn es nicht analog ist, ist es kein VCO.
Die Frequenz muß stufenlos verstellbar sein sonst kann
man den Oszillator nicht in eine PLL einsetzen.
Oder es ist eine ganz andere Frequenzerzeugung, dann ist
es aber keine PLL mehr.
Eine andere Frequenzerzeugung ist zum Beispiel DDS.

https://www.mikrocontroller.net/articles/DDS

von Mcn (Gast)


Lesenswert?

Günter Lenz schrieb:
> von Mosfet schrieb:
>>Wie schon geschrieben will ich einen Analogen VCO ersetzen;
>
> Ein analogen VCO kann man nicht ersetzen, es gibt keinen
> digitalen VCO.

Eben! Früher hat Xilinx noch Wert auf Unterscheidung gelegt und hat 
statt PLL (wie Altera fälschlicherweise seine Taktsynthese benannte) von 
DLL (delay looked loop) gesprochen. Aber ab Serie 7 heisst es dann auch 
bei Xilinx PLL :-(

Vielleicht sollte man auch wissen, das der "digitale VCO" eigentlich NCO 
genannt wird (numerically controlled oscillator).

https://resources.pcb.cadence.com/blog/2020-vco-vs-nco-which-synthesizer-should-you-use
https://en.wikipedia.org/wiki/Numerically-controlled_oscillator
https://web.eece.maine.edu/~hummels/classes/ece486/docs/NCO_tutorial.pdf

So ist es eben, wenn sich dahergelaufene Möchtegern-Digitalfuzzies der 
klassischen (Kapazitätsdiode basierenden) Frequenzsynthese aus der FM 
bemächtigen ohne deren Grundlage wenigstens im Ansatz verstanden zu 
haben.
http://sss-mag.com/pdf/lonovco.pdf

von Duke Scarring (Gast)


Lesenswert?

Mcn schrieb:
> http://sss-mag.com/pdf/lonovco.pdf
Ich glaube nicht, das ein wissenschaftliches Paper geeignet ist, um die 
Grundlagen zu vermitteln.

Dann schon eher sowas:
ISBN 978-3800719808
Wahlweise auf deutsch oder in englisch und irgendwo sicher auch in 
modern.
Wobei: Grundlagen bleiben Grundlagen

Duke

von Christoph Z. (christophz)


Lesenswert?

Mosfet schrieb:
> Nun was soll den bitte an der Zielsetzung nicht klar sein:
>
> Gesucht fein einstellbare frequenz (in ordentlicher qualität: smoother
> übergang, wenig jitter, wenig abweichung zu 50% duty)

Damit hier noch erklärt ist, wieso dieser Beitrag von dir negative 
Bewertungen bekommt:

Du gehst davon aus, dass z. B. die Anforderung "fein einstellbare 
frequenz" klar Formuliert ist.
Ist sie aber bei weitem nicht und überprüfbar ist es so formuliert auch 
nicht.

Was heisst "fein" (sind Stufen erlaubt, wie fein muss so eine Stufe 
sein)
Einstellbar von wem (Anwender, Entwickler), wann, wie oft und wie 
schnell soll dann die neue Frequenz erreicht sein (das läuft zusammen 
mit der Anforderung, die Frequenz soll ohne Sprünge angepasst werden).

So, jetzt sind wir erst bei Wort 4 in deinem Satz, ich höre jetzt auf zu 
Meckern :-)

Gute Anforderungen zu schreiben ist nicht leicht, das kennen wir alle. 
Dazu muss man z. B. schon gut verstanden haben, was es braucht, was 
wichtig ist und was eher nebensächlich.

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.