Forum: Mikrocontroller und Digitale Elektronik Der Begriff Jitter und DDS


von Stefan W. (slev1n)


Lesenswert?

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)

von Falk B. (falk)


Lesenswert?

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

von Uwe B. (uwe_beis)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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

von Stefan W. (slev1n)


Lesenswert?

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.

von Helmut S. (helmuts)


Lesenswert?

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

von Lurchi (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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

von Stefan W. (slev1n)


Angehängte Dateien:

Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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

von Stefan W. (slev1n)


Angehängte Dateien:

Lesenswert?

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

von Lurchi (Gast)


Lesenswert?

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.

von Guest (Gast)


Lesenswert?

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.

von Stefan W. (slev1n)


Lesenswert?

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
Noch kein Account? Hier anmelden.