Forum: FPGA, VHDL & Co. Ziehbarer Quarz SiT3521 als PLL input


von Max M. (maxxxxx)


Lesenswert?

Hallo

Ich habe die Aufgabe eine ziehbare Frequenz möglichst Jitterfrei zu 
generieren. DDS wird vermutlich nicht ideal sein, da max ca. 600MHZ im 
FPGA realisierbar sind.

Meine Idee ist nun einen 2. Oszillator an FPGA anzuschliessen und diesen 
differentiellen Clock Input im PLL vom FPGA zu verarbeiten.

Über das FPGA wird dann mittels SPI/I2C die Frequenz des Oszillators 
verändert.

Die Frage ist nun, wie reagiert der Intel PLL (MAX10 oder CycV) auf 
diese Frequenzänderung? (Selbst SITIME gibt im DB lediglich eine 
transition time an ohne Angabe wie smooth dies geschieht).
Kann davon ausgegangen werden, dass ein smoother Frequenzübergang 
stattfindet?

von J. S. (engineer) Benutzerseite


Lesenswert?

Die Anforderungen "jitterfrei" und "PLL im FPGA" agieren ein wenig 
gegeneinander.

Wozu soll denn der Takt im FPGA benutzt werden?
Und wo wird "jitterfrei" benötigt?

FPGA-PLLn sind nicht unbedingt die Olympiasieger unter den 
Taktgeneratoren aber auf der anderen Seite derart tolerant, dass sie mit 
so ziemlich allem gefüttert werden können, was als Takt gilt und dann 
immer noch genug Filterung zusammenbringen, um einen intern nutzbaren 
Takt zu erzeugen.

Es müsste also erstmal das REQ herausgestellt werden, wo der jitterarme 
Takt benötigt wird. Soll der als REF-Takt irgendwo hin, muss die 
Ziel-PLL entsprechend arbeiten. Das gilt auch für DACs in typischen 
Anwendungen.

Beispiel Audio-DAC: Eine externe Schaltung liefert einen 
Quarz-gefilterten Takt auf den DAC, der nutzt seine interne ("harte") 
PLL und ist damit innen super clean. An dessen Ausgangs- oder alternativ 
dessen Eingangstakt nuckelt der FPGA und macht seinen internen Takt. Der 
ist schlechter, jittert aber immer noch wenig genug, um die Daten an den 
DAC zu übergeben.

In einigen Fällen hat der DAC keine eigene PLL, dann hängt es wirklich 
an dem primären Takt. Den dann über Takttreiber parallel an FPGA und 
DAC. Auch dann kommt der jitter im FPGA nicht an den DAC durch.

Für ADC-Schaltungen gilt das gleiche.

Zu der anderen Frage, was die PLL macht, wenn du die Frequenz einfach 
unschaltest, müsste man den Chip genauer ansehen. Du wirst davon 
ausgehen müssen, dass du auch beim Umschalten im Bereich der Taktflanken 
einen Schwinger bekommen wirst - zumindest wenn die Frequenzen stark 
springen.

In Synthesizern machen wir das mit weichem, kriechenden Umschalten der 
Frequenzen zu den richtigen Zeitpunkten und einem Verstellen der 
Resonanzfrequenz der PLL-Schaltung. Diese widerum muss dann diskret 
gebaut werden und kann auch kein allzugroßes Q haben.

Ich hätte so eine Schaltung bis ca 6 MHz. Komplett aus dem FPGA 
gesteuert. Das Umschalten der Frequenzen ist einstellbar, sie schwingt 
S-förmig auf den neuen Wert und agiert mit den programmierbaren IOs um 
die Phasen perfekt zu schieben. Gibt es für Virtex 6, Artix 7 und 
Kintex-Ultrascale.

: Bearbeitet durch User
von Max M. (maxxxxx)


Lesenswert?

Hallo Danke für die Antwort

Etwas ausführlicher zu meiner Problemstellung: Benötigt wird eine 
Frequenz welche im Bereich 1-5 MHz um ca. +/- 70kHz "smooth" ziehbar 
ist.
(Das Festlegen der "Grundfrequenz" im Bereich 1-5MHz darf zu einem 
Unterbruch des Outputs führen).

Duty sollte genau 50% sein, der Jitter weitestgehend minimal sowie kein 
"komisches" Verhalten beim Ziehen der Frequenz. Der Frequenzzug sollte 
im ms Bereich erfolgen können.

Meine Lösungsidee war/ist ein ziehbarer SiTime in Kombination mit einem 
PLL (FPGA intern). Durch den FPGA PLL wird die Grundfrequenz (u.U. 
relativ grob) gewählt und danach lediglich über den Sitime während des 
Betriebes gezogen (Je nach PLL Einstellungsmöglichkeit relativ stark).

J. S. schrieb:
> Ich hätte so eine Schaltung bis ca 6 MHz. Komplett aus dem FPGA
> gesteuert. Das Umschalten der Frequenzen ist einstellbar, sie schwingt
> S-förmig auf den neuen Wert und agiert mit den programmierbaren IOs um
> die Phasen perfekt zu schieben.

Perfekt!

J. S. schrieb:
> In Synthesizern machen wir das mit weichem, kriechenden Umschalten der
> Frequenzen zu den richtigen Zeitpunkten und einem Verstellen der
> Resonanzfrequenz der PLL-Schaltung. Diese widerum muss dann diskret
> gebaut werden und kann auch kein allzugroßes Q haben.

Also eine externe analoge Schaltung agiert mit einem ebenfalls externen 
PLL?
Ich vermute, ich habe da was missverstanden denn dies widerspricht:
J. S. schrieb:
> Gibt es für Virtex 6, Artix 7 und
> Kintex-Ultrascale.

von Motopick (motopick)


Lesenswert?

Max M. schrieb:
> Hallo
>
> Ich habe die Aufgabe eine ziehbare Frequenz möglichst Jitterfrei zu
> generieren. DDS wird vermutlich nicht ideal sein, da max ca. 600MHZ im
> FPGA realisierbar sind.

Schwammiger geht es wohl wieder nicht. Wie soll den "gezogen" werden?
Analog oder digital mit welcher Aufloesung?

Etwas spaeter erfaehrt man dann, dass ein 50 % Duty reicht.
Was wohl ein Rechteck ist.

Am besten kauft ihr einen alten HP 3325A. Der kann ganz "smooth"
in Schritten von 1 µHz "gezogen" werden. Alternativ kann man sich
davon auch gedanklich inspirieren lassen.

Abseits von DDS kann man das bei nur wenigen MHz auch in einem
FPGA selbst erledigen.

> Die Frage ist nun, wie reagiert der Intel PLL (MAX10 oder CycV) auf
> diese Frequenzänderung? (Selbst SITIME gibt im DB lediglich eine
> transition time an ohne Angabe wie smooth dies geschieht).
> Kann davon ausgegangen werden, dass ein smoother Frequenzübergang
> stattfindet?

Wohl am besten, in dem ihn nicht benutzt, und den FPGA mit einem
jitterarmen Taktsignal entsprechender Frequenz versorgt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Max M. schrieb:

> Also eine externe analoge Schaltung agiert mit einem ebenfalls externen
> PLL?
> Ich vermute, ich habe da was missverstanden denn dies widerspricht:
> J. S. schrieb:
>> Gibt es für Virtex 6, Artix 7 und
>> Kintex-Ultrascale.

die externe analoge Schaltung IST die PLL. Deren Resonanzfrequenz muss 
ja einstellbar sein. Praktisch ist es ein Bandbass.

Sowas gibt es in den FPGAs zwar auch, aber nur grob. Bei Altera z.B. 
konnte man früher noch den Frequenzbereich einstellen, bei Xilinx geht 
es indirekt über die Vorwahl der Methode der Jitter-Unterdrückung.

von Max M. (maxxxxx)


Lesenswert?

Motopick schrieb:
> Am besten kauft ihr einen alten HP 3325A. Der kann ganz "smooth"
> in Schritten von 1 µHz "gezogen" werden.

Nun der Änderungsvorgang ist meines wissens alles andere als smooth. 
(Zumindest bei meinem etwas modereneren Modell).

J. S. schrieb:
> die externe analoge Schaltung IST die PLL. Deren Resonanzfrequenz muss
> ja einstellbar sein. Praktisch ist es ein Bandbass.
>
> Sowas gibt es in den FPGAs zwar auch, aber nur grob. Bei Altera z.B.
> konnte man früher noch den Frequenzbereich einstellen, bei Xilinx geht
> es indirekt über die Vorwahl der Methode der Jitter-Unterdrückung.

Also ein exterenes PLL ASIC, welches noch zusätzlich eine Analoge 
beschaltung benötigt? Kannst du mir evtl. den entsprechenden Typ?
Dessen konfiguration erfolgt dann über I2C/SPI vom FPGA her?

Motopick schrieb:
> Etwas spaeter erfaehrt man dann, dass ein 50 % Duty reicht.
> Was wohl ein Rechteck ist.

Ja ist Rechteck mit 50% Duty, Frequenzbereich 1-5MHz, dabei um +/-70 kHz 
ziehbar. Dies "smooth" also z.b. S-Shape, einfach keine phasensprünge, 
glitches etc.

von Max M. (maxxxxx)


Lesenswert?

Bin soeben auf die ASICS:
Si5351A/B/C
sowie
Si570/Si571
aufmerksam geworden.

Aud dem DB des Si570

As shown in Figure 3, the device allows reprogramming
of the DCO frequency up to ±3500 ppm from the center
frequency configuration without interruption to the
output clock. Changes greater than the ±3500 ppm
window will cause the device to recalibrate its internal
tuning circuitry, forcing the output clock to momentarily
stop and start at any arbitrary point during a clock cycle.
This re-calibration process establishes a new center
frequency and can take up to 10 ms. Circuitry receiving
a clock from the Si57x device that is sensitive to glitches
or runt pulses may have to be reset once the
recalibration process is complete.

Also wenn ich dies korrekt verstehe, geht +/-3500ppm smooth (kein 
glitch/runt pulse etc)?

Diese Lösung wäre einfach, wie vergleichst sich die performance zu 
deiner Lösung?

von J. S. (engineer) Benutzerseite


Lesenswert?

Max M. schrieb:
> Also ein exterenes PLL ASIC, welches noch zusätzlich eine Analoge
> beschaltung benötigt? Kannst du mir evtl. den entsprechenden Typ?
> Dessen konfiguration erfolgt dann über I2C/SPI vom FPGA her?

Nee, eine "richtige" analoge Schaltung mit Filtern, die aus Bauteilen 
aufgebaut ist, deren Verhalten beeinflusst wird, wie z.B. der Widerstand 
einer CE-Bahn in einem Transistor durch dessen Basis-Spannung. 
SPI-programmierbar ist da nichts. Im konkreten Fall steuert eine stark 
gefilterte PDM-Spannung, die sich praktisch im Audioband ändert, besagte 
Filterschaltung. Ob und was es da an ASICs gibt, die das fix und fertig 
genau so können, kann ich nicht sagen. Einer meiner Kunden hat mir einen 
HF-ASIC vorgestellt, der Frequenzen sehr microgranular shapen kann. Da 
stecken wahrscheilich solche Schaltungsteile drin, würde ich sagen.

Die sind aber ein ganz klitzekleines bischen zu teuer für deinen Zweck 
und die von mir beschriebene Methode wäre auch nur für den Fall 
interessant, dass man full range continous arbeiten muss.

von J. S. (engineer) Benutzerseite


Lesenswert?

Ich würde in deinem Fall zu einer programmierbaren PLL raten, wie eben 
jene:

Max M. schrieb:
> Bin soeben auf die ASICS ... aufmerksam geworden.

... wobei ich da nicht sehe, dass die range von 0,3% für deine 70kHz 
reicht. Solche Schaltungen nutzt man auch eher zur aktiven 
Phasenregelung auf der Basis einer bekannten Frequenz.

Mit DEM range (schön dass du uns den nun veraten hast) wird das auf eine 
mehrstufige DDS hinauslaufen. Dazu fehlt noch das REQ in welchen Stufen 
= Zentralfrequenzen die PLL arbeiten muss. Die müssen mit einer DDS 
abbildbar sein.

Eventuell schaffst du es, umschaltbare DDS-Frequenzen zu erzeugen, die 
den 1-7 M range genügend fein abbilden, damit die 0,3% reichen. Das 
wären ja minimal 20kHz. Daraus lese ich rund 300 Frequenzen ab, die die 
DDS liefern müsste - wenn man alle Frequenzen braucht. Frage: ist das 
so? Dann brauchst du entweder doch programmierbare Filter oder eine 
Kaskade an Bauteilen.

Das wird sportlich - ginge aber und das sogar mit einer fließenden 
Übergabe der Frequenzbereiche:

Du brauchst eine schlaue EXCEL Tabelle, die diese Frequenzen berechnet, 
die Ganzzahlkoeffizienten und die benötigte Taktfrequenz ermittelt und 
kannst dich dann daran machen, ein paar Quarze samt programmierbaren 
Taktgeneratoren mit umschaltbaren Eingängen auf das PCB zu pappen, 
welche dir die Frequenzen machen. Ich sehe da so 4-5 Stufen je nach 
Frequenzdichte. Das Ganze braucht es zweimal, um beim Umschalten der 
Zentralfrequenz, wenn die 10ms Totzeit zuschlagen, von einem Chip-Pfad 
auf den anderen per Analogschalter zu wechseln. Im Prinzip ist das das 
Doppelkupplungsgetriebe in Elektronik.

Mit FPGAs habe ich Ähnliches schon gemacht, aber deren PLLs dürften mit 
Bezug zu meinem Beitrag oben in der Qualität hier eventuell nicht 
reichen. Dazu müsstest du wirklich mal vollständig deine Anforderungen 
beschreiben, z.B. was "möglichst wenig Jitter" auf ingeniörisch (-> 
dedizierte Zahlen) heißen soll und wie schnell man umschalten möchte.

Hier fehlen wieder mal die Anforderungen und es spannen sich mehrere 
Lösungen auf, die nicht unbedingt alle zielführend sind.

Ich glaube ohnehin, dass dieses hier angedachte ziehbare System wieder 
mal eine der superspeziellen Lösungen ist, die nur deshalb auftauchen, 
weil die eigentliche Funktion, die wirklich benötigt wird, in einen 
ungeschickten Lösungsansatz umgesetzt wurde, weil keine klaren 
Vorstellungen über "wenig", "genau", "schnell" und die wirklichen Ziele 
vorliegen und zu wenig Wissen über die Qualitäten von Chips und deren 
Möglichkeiten bekannt sind und man deshalb nach der Methode von Prof. 
Haudrauf arbeitet.

Das mündet dann meistens in eine große, umständliche Schaltung, die 
unötig teuer ist, lange zur Fertigstellung braucht, zu 90% aus 
überdesignten Komponenten besteht und daher äußerlich nach rocket 
science ausschaut, dann aber irgend eins der anderen 10% Restbauteile 
infolge von Fehlplanung und nichtdurchdachtem Konzept die Qualität in 
die Kreisklasse runterzieht.

Ich habe nämlich den Verdacht, dass man hier auch mit einem abstimmbaren 
Analogschwingschaltkreis arbeiten könnte, welche einen gut filterbaren 
Sinus von z.B. 8-60 MHz erzeugt, den man in ein Rechteck kompariert, auf 
4 -30MHz runterteilt, vermisst und per lock-in-Funktion langsam in der 
Frequenz ins Ziel regelt - von mir aus digital. Dann geht das Ganze 
nochmal durch 2 oder 4 und man hat seine 1-7MHz.

So macht man das heute in modernen Analogsynthesizern, damit die 
Frequenzen beim Warmlaufen nicht wegwandern.

von Max M. (maxxxxx)


Lesenswert?

Danke JS

J. S. schrieb:
> Dazu fehlt noch das REQ in welchen Stufen
> = Zentralfrequenzen die PLL arbeiten muss. Die müssen mit einer DDS
> abbildbar sein.

Angedacht war dies ursprünglich aufs kHz genau einstellbar. Nun dies 
könnte natürlich auch auf 10kHz genau erhöht werden, aber das löst das 
Problem, so wie ich das sehe noch nicht?


J. S. schrieb:
> Die sind aber ein ganz klitzekleines bischen zu teuer für deinen Zweck
> und die von mir beschriebene Methode wäre auch nur für den Fall
> interessant, dass man full range continous arbeiten muss.

Also ca. 4-6 stelling EUR/pcs?

J. S. schrieb:
> Dazu müsstest du wirklich mal vollständig deine Anforderungen
> beschreiben, z.B. was "möglichst wenig Jitter" auf ingeniörisch (->
> dedizierte Zahlen) heißen soll und wie schnell man umschalten möchte.
>
> Hier fehlen wieder mal die Anforderungen und es spannen sich mehrere
> Lösungen auf, die nicht unbedingt alle zielführend sind.
>
> Ich glaube ohnehin, dass dieses hier angedachte ziehbare System wieder
> mal eine der superspeziellen Lösungen ist, die nur deshalb auftauchen,
> weil die eigentliche Funktion, die wirklich benötigt wird, in einen
> ungeschickten Lösungsansatz umgesetzt wurde, weil keine klaren
> Vorstellungen über "wenig", "genau", "schnell" und die wirklichen Ziele
> vorliegen und zu wenig Wissen über die Qualitäten von Chips und deren
> Möglichkeiten bekannt sind und man deshalb nach der Methode von Prof.
> Haudrauf arbeitet.

Ja gebe dir recht. Es besteht aktuell eine analoge Lösung, welche das 
Ziehen über eine analoge Spannung aus der SPS macht. Die Physiker einer 
anderen Abteilung haben sich darüber beschwert, dass wir mit unserer 
unkonstannten Frequenz ihre Messungen negativ beeinflussen und dies 
besser gemacht werden soll. Da weder die Spezifikation der aktuellen 
Lösung vorhanden, noch Motivation diesbezüglich vom direkten Kunden 
wirklich vorhanden ist, wurde dies einfach so an uns weitergeleitet: 
Könnt ihr da was machen?

J. S. schrieb:
> um beim Umschalten der
> Zentralfrequenz

Das kann Minuten dauern ohne Output- kein problem. Betrieb ist bei einer 
ZF Wahl dann +/-70kHz.

J. S. schrieb:
> Das
> wären ja minimal 20kHz. Daraus lese ich rund 300 Frequenzen ab, die die
> DDS liefern müsste - wenn man alle Frequenzen braucht. Frage: ist das
> so?

Nein war nicht so gedacht. Die Idee war eine beliebige Wahl der ZF (im 
Bereich 1-5MHz) und von dieser +/-70kHz ziehbar. Einschränkungen in der 
ZF Wahl könnten natürlich durch die Vergrösserung des Ziehbereiches 
erreicht werden. Dies ist, was die aktuelle Implementierung kann- wird 
aber nicht vollständig genutzt- könnte mit Kunde diskutiert werden.

J. S. schrieb:
> Ich habe nämlich den Verdacht, dass man hier auch mit einem abstimmbaren
> Analogschwingschaltkreis arbeiten könnte, welche einen gut filterbaren
> Sinus von z.B. 8-60 MHz erzeugt, den man in ein Rechteck kompariert, auf
> 4 -30MHz runterteilt, vermisst und per lock-in-Funktion langsam in der
> Frequenz ins Ziel regelt - von mir aus digital. Dann geht das Ganze
> nochmal durch 2 oder 4 und man hat seine 1-7MHz.

Also ein VCO mit Filter und Regelschleife? Klingt mir relativ ähnlich zu 
PLL :P

Edit:
J. S. schrieb:
> Daraus lese ich rund 300 Frequenzen ab, die die
> DDS liefern müsste - wenn man alle Frequenzen braucht

Hier besteht evtl. ein Missverständniss: Ziel ist nicht alle Frequenzen 
abbilden zu können sondern bei einer wählbaren ZF smooth über einen 
Bereich ziehen zu können.

Mit smooth meine ich hier = Keine Glitches, abnormalen 
Phasen/Frequenzsprünge, Unterbrüche etc., sondern über etliche Perioden 
sich allmählich an der neuen Frequenz annähern. Linear oder S-Shape 
Rampe.

: Bearbeitet durch User
von Max M. (maxxxxx)


Angehängte Dateien:

Lesenswert?

Oder halt doch sowas analoges wie z.b. aus dem DB vom guten alten 
AD9851.

Existiert hier eine etwas modernere/bessere alternative?

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Max M. schrieb:
> Oder halt doch sowas analoges wie z.b. aus dem DB vom guten alten
> AD9851.

Dann hast du aber doch eine klassische einstufige DDS mit eben jenen 
nicht gewünschten Phasensprüngen. Gegenüber einer einfachen FPGA-Lösung 
ist der Chip nur dahingehend besser, dass er mit einer größeren Tabelle 
und erheblich höherer Frequenz arbeitet. Als Beispiel 2GHz gegen evtl 
400 MHz im FPGA. Daher sind die Phasenfehler entsprechend kleiner.

Will man das toppen braucht es eine 2/3-stufige DDS, d.h. die erste 
erzeugt eine Frequenz die ein exaktes Vielfaches der Zielfreuenz ist. 
Die Vervielfachung wird so angepasst, dass sie in ein möglichst enges 
Frequenzband fällt. Dort wird gedithert und gefiltert. Das passiert mit 
einem Bandbass und nicht nur einem Tiefpass, wie bei einer klassischen 
DDS und arbietet entsprechend wirksamer. Ab da hat man eine passende 
Frequenz mit noch etwas Jitter, um eine weitere DDS anzutreiben, die 
aber ganzzahlig läuft. Auch da wird wieder gedithert und gefiltert, um 
die Artefakte in den Spektralbereich jenseits der Filterfrequenz zu 
bringen.

In deinem Fall würde ich auch für die erste DDS Ganzzahlen definieren 
und die entstehenden Frequenzen nehmen, wie sie kommen.

von Max M. (fpga_eth)


Lesenswert?

Anstelle der mehrstufigen DDS oder analogen Filterung kannst du auch 
einfach einige jitter cleaner verwenden.
2-3x Si5326 und der DDS jitter verschwindet im phasenoise.

Ob der 5326 aber mit dem Clock vom 9851 stabil läuft oder ob der PLL 
ausser tritt gerät kann ich nicht sagen. Der 9914 oder wenn zu teuer der 
9912 ist die bessere Wahl als der 9851.

: Bearbeitet durch User
von Georg S. (randy)


Angehängte Dateien:

Lesenswert?

> Bin soeben auf die ASICS:
> Si5351A/B/C
> sowie
> Si570/Si571
> aufmerksam geworden.

Beim Si5351 hab ich festgestellt dass auf der Frequenz ein leichter 
Wobbel drauf ist, der sich störend bemerkbar macht wenn man SSB auf 
höheren Frequenzen (433MHz oder höher) machen will (der SI5351 war die 
Referenz für einen ADF4351). Ich hab dem Si5351 schon für SSB auf 
Kurzwelle gesehen, bei den niedrigen Frequenzen stört der Effekt 
weniger.

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.