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 ...
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?
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?
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.
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
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.
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
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
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.
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.
> 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.