Forum: FPGA, VHDL & Co. FPGA mit hochgenauem Clock


von Rainer (Gast)


Lesenswert?

Hallo,

mit einem FPGA möchte ich gerne hochgenau und mit ca. 200MHz zählen. 
Dazu habe ich per LWL eine 10MHz Referenztakt von einem DCF77-Empfänger. 
Gezählt werden sollen GPS-Signale.

Ich dachte jetzt an sowas wie AD9553 der aus den 10MHz ja hochgenau 
200MHz machen kann. Es muss aber dennoch ein genauer Oszillator an 
board, falls die LWL mal wegfällt. Die Spartan haben aber auch DCM/PLL 
habe ich gelesen. Wie genauz ist das?

Problematisch sehe ich beim AD9553, das ich einen Microcontroller 
brauche der mir das Ding dann konfiguriert. Und dann brauche ich auch 
wieder 2x UART oder so. Ansonsten könnte ich ja direkt mit einem 
FTDI/FIFO auf das FPGA. Die Umschaltung zwischen LWL-Takt und Oszillator 
kann ja sicherlich nicht der FPGA erledeigen, oder wird das durch diese 
holdover vom AD9553 abgefangen? Dann ginge es ja doch ohne uC und ich 
hätte meinen low jitter Takt am FPGA. Gibt es so noch andere 
empfehlenswerte PLL-Gens, die die Konfig evtl. auch direkt speichern? 
Sodass ich das PC-Interface nur im FPGA implementieren muss und dieser 
die Umschaltung der Takte im PLL-Gen übernimmt?

Thank you ...

: Verschoben durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rainer schrieb:
> Die Spartan haben aber auch DCM/PLL habe ich gelesen. Wie genauz ist das?
Wenn di eingerastet ist, dann ist die zu 100% "genau". Welchen Jitter du 
hast, das kommt wieder auf die Taktquelle und das Layout und ein paar 
weitere Sachen an.

> Und dann brauche ich auch wieder 2x UART oder so.
Ich sehe da nur ein SPI Interface. Und das ist letztlich nur ein 
Schieberegister...

BTW: "genau" und "hochgenau" ist eigentlich eine sehr willkürliche 
Definition. Auf wen oder was bezogen willst du "genau" sein?

von Rainer (Gast)


Lesenswert?

mit hochgenau meine ich, so stabil und jitter-arm wie der AD9553 eben 
ist. Ich habe also meienn TCXO der am AD9553 hängt und zusätzlich die 
10MHz von dem DCF77-LWL. Ist z.B. die DCM beim Spartan6 ebenso stabil 
und jitter-arm wie der AD9553 und wie würde die Umschaltung der 
Taktquellen zu Laufzeit ohne AD9553 gehen?

Zum Thema stabil: ist sicher nur vom TCXO und dem DCF77-LWL abhängig. 
Durch AD9553 oder DCM denke ich würde sich nur Jitter addieren, oder?

von Purzel H. (hacky)


Lesenswert?

Du moechtest einen Referenzoszillator, der auf 200MHz laeuft, von 10MHz 
her erzeugt wird, und auch auf DCF77 gelockt ist, und gegen GPS zaehlen 
kann...

Ein interessantes Projekt. Ich habe einen Spielverderber.. der kann das 
alles schon selbst.

Ich wuerde einen AD9548, oder aehnlich verwenden. Ein Clockgenerator 
Chip mit internener Quelle, der auf eine von mehrenen externen 
phase-locken kann. Er kann bei Referenzausfall automatisch auf ein 
Stratum-2 Holdover gehen, bedeutet die interne Quelle ist besser als ... 
<spezifiziert>... und die Umschaltung geschieht mit extrem praeziser 
Phase, dh minimalem Phasensprung.

Als automatisch eingebautes Feature kann man so 10MHz, den DCF77, sowie 
GPS eingeben, und der zaehlt die gegeneinander. Sobald der Eine als 
Referenz gesetzte weggeht, schaltet er um auf den naechsten. Dazu werden 
alle Eingaenge mit dem als Referenz Gesetzten verglichen.

Er kann somit auch den 1 PPS des GPS als Referenz verwenden, und den 
Jitter wegmachen, die Regelzeitkonstante muss dann auf 1000 sekunden 
oder so gesetzt sein.

Es gibt auch welche Chips mit weniger Eingaengen.

Vergiss in FPGA eingebaute Quellen. Die sind zwar funktional fuer FPGA, 
aber nicht vergleichbar. Eine Frage der Anforderungen. Die sind bisher 
nicht klar. "Hochgenau" ist schwammig und zeugt von wenig Ahnung.

Allenfalls interessant/wichtig : Worum geht es denn genau ? Um externe 
Systeme, oder nur FPGA selbst.

: Bearbeitet durch User
von Duke Scarring (Gast)


Lesenswert?

Rainer schrieb:
> mit einem FPGA möchte ich gerne hochgenau und mit ca. 200MHz zählen.
> Dazu habe ich per LWL eine 10MHz Referenztakt von einem DCF77-Empfänger.
> Gezählt werden sollen GPS-Signale.
Normalerweise nehmen die Leute ein GPS-pps-Signal um ein Rubidiumnormal 
zu disziplinieren, weil denen DCF77 zu stark jittert...

Wenn bei Xilinx der minimale Eingangstakt für die PLL nicht bei knapp 20 
MHz liegen würde, könnte man die 10 MHz als RefCLK für die interne PLL 
nehmen.
Ein externe PLL sollte auch gehen. Dort hast Du den Jitter 
(=Zeitrauschen) selbst in der Hand.

Duke

von Vancouver (Gast)


Lesenswert?

Den Jitter der FPGA-internen PLL kannst Du mit einem externen Clock 
Conditioner (aka Jitter Cleaner) reduzieren, z.B. 
http://www.ti.com/product/lmk03000
Braucht allerdings einen externen Loop-Filter, der entsprechend 
dimensioniert werden muss.

von Burkhard K. (buks)


Lesenswert?

Rainer schrieb:
> zusätzlich die
> 10MHz von dem DCF77-LWL

DCF77 ist doch Langwelle (77,5 kHz), wie kommst Du damit zu 10 MHz?

von Purzel H. (hacky)


Lesenswert?

>DCF77 ist doch Langwelle (77,5 kHz), wie kommst Du damit zu 10 MHz?

Hoch-PLL-en. Ein AD9548 kann das, der kann sogar vom 1Hz des GPS auf 
10MHz gehen.

von Rainer (Gast)


Lesenswert?

genau so!

Aber ich habe jezt noch nicht verstanden, inwiefern ich den FPGA-int. 
PLL nutzen kann.
Angenommen ich habe einen recht guten Oszillator (sagen wir +-1ppm) mit 
50MHz. Kann ich dann die "hochgenauen" 10MHz auf einen Clock-I/O des 
FPGA geben und die dann mit der FPGA-PLL nutzen? Wie viel macht die PLL 
vom FPGA da evtl. kaputt?

Ich brauche eben einen rel. hohen Clock zum Zählen (ca. 100MHz), einen 
mittleren um präzise eine Totzeit nach jedem Impuls zur erzeugen und 
einen recht niedrigen um einen Timer zu basteln, der ca. 1000s Messdauer 
erzeugt. Das alles natürlich synchrom. Wäre schön, wenn meine genaue, 
externe Quelle mithilfe des internen PLLs das alles könnte und ich eben 
keine externen Clockbausteine brauche.

Grüße

von Duke Scarring (Gast)


Lesenswert?

Rainer schrieb:
> Kann ich dann die "hochgenauen" 10MHz auf einen Clock-I/O des
> FPGA geben und die dann mit der FPGA-PLL nutzen?
Im Prinzip ja. Im Detail muß an die Datenblätter des verwendeten 
Bausteins lesen.

> Wie viel macht die PLL vom FPGA da evtl. kaputt?
Steht im Datenblatt. Die PLLs im FPGA werden aber nicht für die 
Genauigkeitsanforderungen von Physikern entwickelt.
Im Zweifelsfall nachmessen.

Rainer schrieb:
> Ich brauche eben einen rel. hohen Clock zum Zählen (ca. 100MHz)
Sollte kein Problem sein.
Je nach Bitbreite des Zählers können aktuelle FPGAs in der Größenordnung 
um 500 MHz zählen.

Duke

von Purzel H. (hacky)


Lesenswert?

Ein PLL in einem FPGA erfuellt die Funktionen eines FPGA PLLs. Dh sie 
multiplizieren die Frequenzen. Billigst. Fuer die ueblichen 
Anwendungsfaelle genuegend. Allenfalls ist deren Bereich auch 
eingeschraenkt. Schau ins Datenblatt, was moeglich ist.
Allenfalls nicht mehr genuegend wenn "hochgenaue" Apparaturen 
angeschlossen werden sollen.

Was soll's denn werden ?

Ich hab zB mal bei einem gelockten Laser mit einem FPGA Pulse 
ausgeschnitten. Da musste die Quelle erhoehte Anforderungen erfuellen.

: Bearbeitet durch User
von Michael W. (Gast)


Lesenswert?

Rainer schrieb:
> Angenommen ich habe einen recht guten Oszillator (sagen wir +-1ppm)

Erstens bestreite Ich, dass Du 1ppm kaufen kannst,
dann bestreite Ich, dass Du die sauber in den Chip bekommst
und dann bestreite Ich, dass die PLL im FPGA das auch nur annährend 
kann.

Rechne mal mit dem Hundertfachen.

von Purzel H. (hacky)


Lesenswert?

> Wäre schön, wenn meine genaue, externe Quelle mithilfe des internen PLLs das 
alles könnte und ich eben keine externen Clockbausteine brauche.

Ja. Es hat etwas gedauert, bis wir die Anforderungen haben. Ein 
einzelner Oszillato genuegt natuerlich. Denn die Genauigkeit der Frequen 
bleibt dieselbe wie beim Oszillator selbst.
Du kannst die 10MHz moeglicherweise verzehnfachen mit einem internen 
PLL, das Datenblatt gibt Auskunft. Der mittlere Zaehler zaelt eben den 
Delay, auch vom 100MHz Clock runter. Und auch 1000sek kann man mit den 
100MHz zaehlen. Da benoetigt einen Zaehler mit 10+28 Bit. Bei einem 
hinreichend grossen FPGA kann man mit mehreren Clockdomains arbeiten, 
dort wuerde man den schnellen Zaehler auf 100MHz laufen lassen, fuer den 
mittleren Zaehler vom Oszillator einen 1MHz Clock runterteilen lassen, 
und noch eine domain in ms zaehlen lassen.

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.