Hallo, ich hätte folgendes Problem: ich würde gerne mit einem FPGA ein Taktsignal von nominal 10 Mhz ausgeben. Mit diesem Taktsignal möchte ich eine Regelung machen, d.h. ich will den Takt um ca. +/- 10 % anpassen können. Um so feiner ich den Takt regulieren kann, umso besser. Meine Frage ist: wie mache ich das am Elegantesten ? Ich könnte das in VHDL realisieren, bräuchte dann aber für eine möglichst feiner Regelung ein relativ hohes Eingangssignal. Andererseits könnte ich extern einen Voltage Controlled Oscillator verwenden, den ich mit dem FPGA regeln kann. Das ganze würde aber natürlich den Aufwand erhöhen. Das Problem kann man schon lösen, aber mich würde interessieren wie man mit möglichst geringem Aufwand möglichst genau regelbar ein ca. 10 Mhz Taktsignal mit einem FPGA erzeugen kann. Gibt es noch andere Ideen ? lg Dave
hallo dave, schau dir mal DDS an (direct digital synthesis). ist im fpga recht einfach zum machen, kann aber eine menge jitter auf deinem ausgangstakt erzeugen. ich bin mitarbeiter bei Analog Devices und habe auf "unserer" homepage fogendes gefunden: http://www.analog.com/media/en/training-seminars/tutorials/MT-085.pdf
Dave schrieb: > Andererseits könnte ich extern einen > Voltage Controlled Oscillator verwenden, den ich mit dem FPGA regeln > kann. Das ganze würde aber natürlich den Aufwand erhöhen. Das klingt zwar erstmal nach mehr Aufwand in Hardware, ermöglicht aber m.E. die beste Anpassung an Deine Problemstellung. Zum einen kannst Du einen passenden DAC für den VCO-Bereich wählen (Bandbreite, Auflösung), zum anderen auch den VCO flexibel wählen. Wenn Dein FPGA mit 100 MHz rennt, hast Du bei einem digital erzeugten Takt eine Granularität von 10 ns. Bei 10 MHz entspricht das genau Deinen +/- 10%. Allerdings gibt es dann nichts dazwischen. Alternativ könnte man mit den SerDes-Kanälen die Auflösung ca. um den Faktor zehn verbessern. Reicht Dir das? Duke
danke für den hinweis. nur der vollständigkeithalber, es genügt ein rechtecksignal. mit dem AD9850 würde es schon gut funktionieren denk ich, ist aber noch etwas überdimensionert (somit leider zu teuer) für meine anwendung...
>Alternativ könnte man mit den SerDes-Kanälen die Auflösung ca. um den >Faktor zehn verbessern. Reicht Dir das? danke, für den hinweis, ich werde mir das mal ansehen mit den serializern/deserialiezern. die regelung in 1 % schritten klingt schon ganz gut, in der konkreten anwendung muss ich das noch evaluieren.
Dave schrieb: > mit dem AD9850 würde es schon gut funktionieren denk > ich Na, ein NCO im FPGA sieht auch nicht anders aus
Duke Scarring schrieb: >Alternativ könnte man mit den SerDes-Kanälen die Auflösung ca. um den >Faktor zehn verbessern. Reicht Dir das? kannst du noch ein bisschen genauer erläutern was du damit meinst ?
Dave schrieb: > kannst du noch ein bisschen genauer erläutern was du damit meinst ? Die Theorie: Du nimmst z.B. einen 10Bit-SerDes-Serializer, lässt ihn z.B. mit 1GHz laufen und lädst ihn z.B. alle 10ns (=100MHz) mit einem Bitmuster, das fortlaufend neu geschrieben/geschoben wird. Der Serializer wird dann dieses Bitmuster mit 1GHz raustakten und du erreichst eine Auflösung/Jitter von 1 ns. Zur Umsetzung in die Praxis ist dann aber das ausgiebige Datenblattstudium des bisher unbekannten FPGAs nötig...
:
Bearbeitet durch Moderator
Duke Scarring schrieb: > Wenn Dein FPGA mit 100 MHz rennt, hast Du bei einem digital erzeugten > Takt > eine Granularität von 10 ns. Bei 10 MHz entspricht das genau Deinen +/- > 10%. Allerdings gibt es dann nichts dazwischen. Mit einer DDS schon! Dazu nimmt man ja den FPGA und eine DDS (mit Filterung) sonst täte es auch ein einfacher digitaler (programmierbarer) OSC-Chip. Die kriegen übrigens 10MHz +/- auch schon sehr fein hin.
Lothar M. schrieb: > Du nimmst z.B. einen 10Bit-SerDes-Serializer, lässt ihn z.B. mit 1GHz > laufen Was soll das an Vorteil bringen? Ein 1-Bit Signal als PWM?
Lothar Miller schrieb: >Du nimmst z.B. einen 10Bit-SerDes-Serializer, lässt ihn z.B. mit 1GHz >laufen und lädst ihn z.B. alle 10ns (=100MHz) mit einem Bitmuster, das >fortlaufend neu geschrieben/geschoben wird. Der Serializer wird dann >dieses Bitmuster mit 1GHz raustakten und du erreichst eine >Auflösung/Jitter von 1 ns. ah danke, das hört sich gut an ! ich werde mir das gleich am cyclone iv ansehen. > Was soll das an Vorteil bringen? Ein 1-Bit Signal als PW naja, ich brauch ein clocksignal, dass ich möglichst genau regeln kann. bei 1ghz bekomm ich eine granularität von 1 ns, das bekommt man mit vhdl höchstwahrscheinlich nicht hin
Dave schrieb: > naja, ich brauch ein clocksignal, dass ich möglichst genau regeln kann. > bei 1ghz bekomm ich eine granularität von 1 ns, das bekommt man mit vhdl > höchstwahrscheinlich nicht hin Man kann das mit umschaltbaren Elementen sogar auf einige 10ps genau machen - praktisch genauer, als es das Rauschen nachfolgender Schaltungen wiedergeben können. Für Deinen Anwendungsfall braucht Du eine geregelte DDS mit starker Filterung. Mit einer konventionellen DDS erzeugt man aus dem FPGA z.B. einen hochstabilen und jitterarmen Sinus von 1MHz und locked die hochfrequente Sinusschwingungen über eine 10:1-Pll drauf. Das geht sehr gut, wenn man die Frequenz nicht allzuschnell verstellen muss. Mit der Methode kann man die Frequenz sehr fein (theoretisch unendlich fein, praktisch bis zum jittern) einstellen und "hochtransformieren" um einen Takt für eine zweite DDS zu erhalten, die komplett ganzzahlig ohne Sprünge arbeitet und daher auch rechteckicke Signalformen sauber erzeugen kann. Wenn Dir die Einstellbarkeit und Auflösung typischer Chips reicht (was ich eigentlich glaube) dann ist das mit einem DDS Chip besser gemacht, weil die auf höheren Frequenzen arbeiten. Da kann man die 10MHz auch direkt einigermassen sauber herstellen. Intern arbeiten die mit Abtastfrequenzen über 2GHz. Beitrag "Re: Universell programmierbarer DDS-Funktionsgenerator" Beitrag "Re: DDFS 30 MHz mit 100 MHz FPGA clock" Beitrag "Re: Sinus über DDS erzeugen"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.