Hallo Leute, ich habe mir nun mal den Wiki Eintrag zu Jitter durchgelesen und bin am überlegen, ob ich ihn im richtigen Kontext verwende. Ich habe einen FPGA mit on-board Clock von 40MHz. Nun habe ich zwei Funktionen, die eine erzeugt mir ein Rechteck die andere einen Sinus, jeweils mit DDS. Nun kann ich mit dieser Clockrate ja nicht jede Frequenz darstellen. Die maximale is 20MHz da ein Takt für die "low-Phase" und einer für die "high-Phase" gebraucht wird. Die nächstmöglich darstellbare Frequenz ist 10MHz. Wähle ich nun aber 15MHz, dann kann ich am Oszi sehen, das er zwischen den beiden Frequenzen hin und herzappelt um im Mittel die 15MHz zu erreichen. Kann man hier von "jitter" sprechen, oder gibt es dafür eine andere Bezeichnung? (Frage 1) Für meine Sinus-Funktion, die auch auf dem DDS Prinzip basiert, gelten folgende Angaben: Clock = 40MHz Akkumulatorbreite = 32Bit Auch hier ist die Frequenzauflösung nicht unendlich: res=Clock/2^32 Hinzu kommt noch der phasen akkumulator der die jeweilige Frequenz bestimmt. Gibt es sonst noch wichtige "Parameter" für die Charakterisierung der DDS? (Frage 2) Wenn ich nun die Sinus-Funktion gepaart mit einem Schmitt-Trigger anstelle der Rechteckfunktion nehmen will um auch eine gute Auflösung im hohen Frequenzbereich (30kHz) zu haben, auf was muss ich achten? (Frage 3)
@ Stefan W. (slev1n) >ich habe mir nun mal den Wiki Eintrag zu Jitter durchgelesen und bin am >überlegen, ob ich ihn im richtigen Kontext verwende. >Ich habe einen FPGA mit on-board Clock von 40MHz. Nun habe ich zwei >Funktionen, die eine erzeugt mir ein Rechteck die andere einen Sinus, >jeweils mit DDS. Aha. >Nun kann ich mit dieser Clockrate ja nicht jede Frequenz darstellen. Die >maximale is 20MHz Ja. > da ein Takt für die "low-Phase" und einer für die >"high-Phase" gebraucht wird. Jain. > Die nächstmöglich darstellbare Frequenz ist >10MHz. Nein, es geht auch was knapp unter 20 MHz, je nach DDS-Auflösung. >Wähle ich nun aber 15MHz, dann kann ich am Oszi sehen, das er >zwischen den beiden Frequenzen hin und herzappelt um im Mittel die 15MHz >zu erreichen. Richtig. Das ist Jitter. >Gibt es sonst noch wichtige "Parameter" für die Charakterisierung der >DDS? (Frage 2) Filtergüte nach dem DAC. Denn der mittelt dir den Jitter gut weg, wenn auch nicht perfekt. >Wenn ich nun die Sinus-Funktion gepaart mit einem Schmitt-Trigger >anstelle der Rechteckfunktion nehmen will um auch eine gute Auflösung im >hohen Frequenzbereich (30kHz) Hoch? Bei 40 MHz Takt? >zu haben, auf was muss ich achten? (Frage 3) Was meinst du mit Auflösung? Die Frequenzauflösung ist fest. Der Jitter durch das Verhältnis Systemtakt / Ausgangsfrequenz auch. Der Filter kann einiges verbessern, vor allem bei hohen Frequenzen.
Falks Aussagen unterstütze ich, möchte aber hinzufügen: Stefan W. schrieb: > Wähle ich nun aber 15MHz, dann kann ich am Oszi sehen, das er > zwischen den beiden Frequenzen hin und herzappelt um im Mittel die 15MHz > zu erreichen. Bei einer idealen DDS liegen alle generierten Signalwerte exakt dort, wo das zu synthetisierende Signal lang läuft. Bei einer korrekt implentierten, realen DDS liegen sie dort, wo das im Rahmen der Quantisierung möglich ist, als +/- 1/2 Quantisierungsstufe. Da die interne Rechengenauigkeit zur Erzeugung der quantisierten Werte auch nur endlich ist, kommt noch etwas hinzu. Das sind natürlich Fehler in der Amplitude, nicht in der Zeit. Natürlich laufen die realen Signale nicht mehr genau zum richtigen Zeitpunkt durch 0, aber ist das kein Jitter, sondern Rauschen (Quantisierungsrauschen, genau genommen). Jitter ist darüber hinaus nur für binäre Signale definierbar. Was du als Jitter siehst, dürfte lediglich daher kommen, dass deine Analogwerte nicht exakt aus dem viel exakteren Digitalsignal erzeugt werden. Da sind wir wieder bei Falks Aussagen zum Filter.
@ Uwe Beis (uwe_beis) >endlich ist, kommt noch etwas hinzu. Das sind natürlich Fehler in der >Amplitude, nicht in der Zeit. Zeitfehler gibt es auch genug ;-) >(Quantisierungsrauschen, genau genommen). Jitter ist darüber hinaus nur >für binäre Signale definierbar. Nö. Geht auch bei Analogsignalen. Manchmal nennt man es auch Phasenrauschen.
Ok, erstmal vielen Dank für die Antworten. Einen wichtigen Punkt hatte ich noch nicht erwähnt. Das Rechteck geht über einen digitalen Port raus. Was ich nicht ganz verstehe, wie ist es möglich anders als mit einer Auflösung von 50ns/periode Signale zu erzeugen. Meine Funktion arbeitet so, dass es in den high state geht und dort mind. 25ns bleibt und max. so lange, wie die Hälfte der Periodendauer. Das kann aber nur 25, 50, 75ns also ein Vielfaches von 25ns sein. Ich kann dem FPGA nicht sagen, dass er einen best. state 30ns halten muss/soll. Das Gleiche gilt für den low state. Möchte ich nun exakt die Rechteckfrequenz von 32754Hz einstellen, bekomm ich einen mords Jitter am Oszi zu sehen!? (Das meinte ich mit Frage 3) Was wohl daran liegt, dass er 15265,31111ns im low und im high state sein müsste. Aus diesem Grund will ich lieber meine Sinusfunktion nehmen, wo so etwas nicht passieren kann und über nen Schmitt-Trigger umwandeln. Dass ich bei der Ausgabe des Sinus über einen analogen Port ein Rauschen durch den DAC draufbekomme klingt vernünftig und muss natürlich über nen Tiefpassfilter gefiltert werden.
> Einen wichtigen Punkt hatte ich noch nicht erwähnt. Das Rechteck geht
über einen digitalen Port raus.
Also ein 1bit DAC. Dazu kann man nur sagen das ist ganz
schlecht(falsch), wenn man beliebige Frequenzen erzeugen will.
Will man nur Subharmoische von 40MHz machen (40MHz/n) oder nur sehr
tiefe Frequenzen erzeugen, dann kann ist das OK. Bei tiefen Frequenzen
machen die 25ns Jitter nicht mehr so viel aus.
Über den Umweg DAC, filtern (also Sinus per DDS) und dann auf einen Komparator bekommt man auch eine deutlich bessere Zeitauflösung als die 25 ns. Das gilt vor allem bei eher hohen Frequenzen. Wenn sich die Spannung in den 25 ns Zeitschritten nicht mehr deutlich ändert, können auch Filter und Koparator nicht mehr viel daraus machen. Da müsste man dann ggf. eine spezielle Wellenform ausgeben, und keinen Sinus mehr. Eine andere Alternative zur Frequenzerzeugung wäre ein PLL. Damit kann man ggf. auch den Jitter aus dem Rechteck "DDS" mit reduzieren, sozusagen als Filter für das Phasenrauschen.
@ Stefan W. (slev1n) >Was ich nicht ganz verstehe, wie ist es möglich anders als mit einer >Auflösung von 50ns/periode Signale zu erzeugen. Mit einer Sinusausgabe + Analogfilter + Komparator. >den low state. Möchte ich nun exakt die Rechteckfrequenz von 32754Hz >einstellen, bekomm ich einen mords Jitter am Oszi zu sehen!? 32754Hz sind 30,5302us Periodendauer, deine 25ns sind davon gerade mal 0,08%. >im high state sein müsste. Aus diesem Grund will ich lieber meine >Sinusfunktion nehmen, wo so etwas nicht passieren kann und über nen >Schmitt-Trigger umwandeln. Mach das. >Dass ich bei der Ausgabe des Sinus über einen analogen Port ein Rauschen >durch den DAC draufbekomme klingt vernünftig und muss natürlich über nen >Tiefpassfilter gefiltert werden. Es geht nicht nur um das Rauschen eines DACs, sondern auch um die ungleichmäßigen Wertesprünge der DDS, das ist prinzipbedingt. Extrem sieht man das nahe der halben Taktfrequenz, da werden nur noch wenige Sinuswerte ausgegeben die mehr an ein Gebirge erinnern als an einen Sinus. Aber mit dem passenden Analogfilter kommt das wieder ein fast perfekter Sinus raus. Herr Shannon sei Dank.
Ok, dann bin ich zumindest nicht auf dem Holzweg. Zu dem Tiefpassfilter: Ich hab nen 12bit DAC-Wandler mit einer range von 0-5V und einer max. samplerate von 345kSPS. In meiner Anwendung wird aber maximal 300kSPS erreicht. Somit kann ich maximal ein 150kHz Signal erzeugen. Trotzdem würde ich die Grenzfrequenz des Filters mal auf 40kHz setzen, da zur Zeit das maximal benötigte Signal 32kHz sind. Reicht da ein einfaches RC Glied oder würdet ihr was anderes empfehlen? (Hab hier leider keinerlei Erfahrungswerte) Zu dem Schmitt-Trigger: Dem Schmitt-Trigger ist ein Laserswitch nachgeschaltet, weshalb das Rechtecksignal von 0V - 5V passen sollte. Nun habe ich mir überlegt die angehängte Schaltung zu nutzen: (ist von http://pcbheaven.com/drcalculus/index.php?calc=st_nonsym_sp) 1, Kann ich 1kOhm für die Widerstände nutzen um 50% duty cycle zu haben? 2, V+ würde ich auf 5V setzten. Könnt ihr mir nen Opamp empfehlen? Grüße Stefan
@ Stefan W. (slev1n) >Ich hab nen 12bit DAC-Wandler mit einer range von 0-5V und einer max. >samplerate von 345kSPS. War nicht oben von 40 MHz die Rede? Man kann eine DDS auch nachbauen, sinnvoll ist das aber meist nicht. Nimm eine fertige DDS mit 20 MHz++, beschalte sie laut Datenblatt und sei glücklich. >In meiner Anwendung wird aber maximal 300kSPS erreicht. Somit kann ich >maximal ein 150kHz Signal erzeugen. Trotzdem würde ich die Grenzfrequenz >des Filters mal auf 40kHz setzen, da zur Zeit das maximal benötigte >Signal 32kHz sind. Das kann ja schon ein AVR mit der berühmten Jesper-DDS. https://www.mikrocontroller.net/articles/DDS#Anwendungen >Reicht da ein einfaches RC Glied oder würdet ihr was anderes empfehlen? >(Hab hier leider keinerlei Erfahrungswerte) Meist nimmt man mehrpolige Filter, so 2-4, ggf. mehr. (ist von http://pcbheaven.com/drcalculus/index.php?calc=st_nonsym_sp) >1, Kann ich 1kOhm für die Widerstände nutzen um 50% duty cycle zu haben? Schon mal gerechnet? Ja, kann man. >2, V+ würde ich auf 5V setzten. Könnt ihr mir nen Opamp empfehlen? Gar keinen, dafür nimmt man einen Komparator! LM393 ist der Klassiker, der reicht hier. Aber Vorsicht, der braucht am Ausgang einen Pull-Up Widerstand (scheiß Open Collector Ausgang). 1K ist OK.
Hey Leute, hab das nunmal in LTspice nachgebaut (habs das erste mal nach 3 Jahren wieder benutzt). Nun habe ich das Problem, dass das Ausgangsrechteck nicht 50% Duty cycle hat und auch nur bis 1V geht. Ebenso finde ich die Dämpfung meines 32754Hz signals durch das RC Glied mit 50kHz Grenzfrequenz etwas hoch, obwohl das wohl nicht das Problem sein wird. Hoffe ihr könnt mir hier ein wenig weiterhelfen. Gruß Stefan
Ein passiver RC filter hat halt den eher verrundeten Übergang. Da ist es normal das bei 50 kHz Grenzfrequenz des Filters bei 32 kHz schon viel Dämpfung ist. Den DC Pegel für den Vergleich muss man ggf. abgleichen damit man mit dem Komparator auch auf 50% Tastverhältnis kommt. Wenn es genau 50% werden sollen, dann eher erst die doppelte Frequenz per DDS erzeugen und per Teiler (z.B. HC74) halbieren.
Betrachte das ganze doch mal aus einer signaltheoretischen Sichtweise: Aus deinem Output kommt zu jedem Taktzeitpunkt ein diskreter Dirac, gefaltet mit einer rechteckigen Impulsantwort, die genau eine Taktperiode (25ns) lang ist. Du kannst damit, bei vernachlässigtem Amplitudenjitter, beliebige Signale bis 20MHz Bandbreite erzeugen, das lehrt uns der gute Shannon. Diese sind dann eben noch gefaltet mit der genannten Impulsantwort. Ein Tiefpassfilter nach dem Pin wird dir diese Impulsantwort aber idealerweise komplett rausfiltern können, da seine Grundfrequenz genau bei 20MHz liegt, alle anderen Harmonischen sind höher. Mit anderen Worten: Theoretisch kannst du jede beliebige Signalform mit bis zu 20MHz Bandbreite korrekt darstellen, ganz ohne Jitter. Es wird dann praktisch nur sehr geringer Amplituden und Phasenjitter reinspielen, weil deine Auflösung in der Amplitude nicht unendlich ist und auch dein Takt nicht perfekt. Dein Problem ist jetzt: Das Rechteck Signal, welches du darstellen willst hat eine viel größere Bandbreite. Damit ein sauberes Rechteck rauskommt brauchst du locker 100MHz Bandbreite, nicht nur 20. Dein Workaround ist nun, die rechteckige Implusantwort des Outputs dazu zu missbrauchen, deine gewünschte Wellenform zu generieren. Damit musst du dann aber natürlich in 25ns Schritten arbeiten. Um nun irgendwas zwischen 25 und 50ns zu erhalten, kannst du 25ns und 50ns abwechseln. Im Mittel stimmt das ganze dann, allerdings dürfte das ganze meines Wissens nach nichtlinear sein und auch mit einem Tiefpass nach dem Pin nur unzureichend unterdrückt werden. Ganz massiver Jitter eben. TL;DR: Willst du ordentliche Signale haben, musst du die entsprechende Bandbreite zur Verfügung stellen. Nicht umsonst haben proprietäre Signalgeneratoren gerne mal mehrere Gigasamples pro Sekunde. Dedizierte Hardware, die das ganze ungetaktet erledigt (der vorgeschlagene Komparator z.B.) haben übrigens auch die entsprechende Ausgangsbandbreite.
Leider habe ich nur eine DDS zur Verfügung. Intern am FPGA brauche ich als sinus und cosinus exakt die selben Frequenzen wie das Rechteck, dass ich mit dem Schmitt Trigger erstellen möchte. Kann mir einer erklären, weshalb der output so klein ist und vom 50% duty cycle abweicht? Die Toleranzen der Bauteile können es ja mal nicht sein.
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.