Ich habe einen Mikrocontroller, der analoge Signale mit konstanter Abtastrate abtastet, buffert und an einen PC sendet.
Je nach Programmierung kann (wird!) es passieren, dass die Messungen nicht mit exakt konstanter Abtastrate erfolgen, sondern ein Jitter vorhanden ist.
Wie kann ich diesen Jitter messen?
-> Wenn man die FW selbst programmiert könnte man wohl bei jedem ADC Event ein GPIO togglen und das ausmessen. Easy.
-> Wenn diese Möglichkeit nicht besteht, bleibt nur Testsignale einzuspeisen und die Messungen zu beobachten? Was ist hier der beste Weg?
Mein Ansatz wäre gewesen: Sinus einspeisen und "Breite" des Spektrums bei -x dBfs messen?
Dazu müsste das erzeugte Signal natürlich deutlich "besser" sein, als das DUT. Aber spielt mir dabei nicht auch die Linearität meiner ADCs mit rein?
Gegenfage: wozu willst du ihn messen, was willst du mit dem
Messergebnis anstellen? Ich sehe erst mal keinen Sinn darin.
Wenn du Jitter erzeugst aber Phasenrauschen siehst dann löst
dein Messgerät nicht hoch genug auf. Beim Jitter bilden sich
diskrete Frequenzen neben der Hauptfrequenz, auch Nebenlinien
genannt (im Gegensatz zu Oberwellen).
Gegenfage: wozu willst du ihn messen, was willst du mit dem
Messergebnis anstellen?
Gute Frage!
Ich will grundsätzlich erst einmal verstehen, was in meinem System alles passiert und dann checken, welche Änderungen welche Auswirkungen haben. Geht auch viel drum, zu lernen!
Wenn du Jitter erzeugst aber Phasenrauschen siehst dann löst
dein Messgerät nicht hoch genug auf. Beim Jitter bilden sich
diskrete Frequenzen neben der Hauptfrequenz, auch Nebenlinien
genannt (im Gegensatz zu Oberwellen).
Macht teilweise Sinn für mich.
Wenn der Jitter aber zufällig ist, würden sich ja theoretisch unendlich viele Nebenlinien bilden? Ist das nicht genau das, was man sieht?
Einen ADC lässt man hart synchron abtasten, dazu ist DMA
hilfreich wenn Interrupt-Steuerung nicht ausreicht.
Das hab ich auf dem Schirm und werde ich auch so machen. Hatte die erste Variante auf einem MCU ohne DMA und mich würden da bspw. ein Vergleich interessieren.
Wenn der Jitter aber zufällig ist, würden sich ja theoretisch unendlich
viele Nebenlinien bilden? Ist das nicht genau das, was man sieht?
Im Prinzip bist du auf dem richtigen Weg, aber unendlich viele
Nebenlinien werden es nicht sein, "viele Nebenlinien" sehen
natürlich bei schlechter Auflösung eines Messgerätes aus wie
ein zusätzliches Phasenrauschen.
Speise eine konstant steigende Spannung am ADC-Eingang an und plotte dir den Spannungsverlauf über die Zeit. Dann müsstest du Jitter erkennen können.
Die Spannung kannst du mittels Konstantstom an einem Kondensator erzeugen.
Die Steigung müsstest du natürlich so anpassen, dass die Stufen zwischen den einzelnen Messungen groß genug sind, dass diese weit von der Messgenauigkeit entfernt sind. Sonst vergleichst du nur das bitrauschen miteinander.
Speise eine konstant steigende Spannung am ADC-Eingang an und plotte dir
den Spannungsverlauf über die Zeit. Dann müsstest du Jitter erkennen
können.
Ja schon, aber dann hab ich ja wieder die Linearität des ADC in der Gleichung mit drin.
Die sollte sich beim einspeisen eines Sinus ja nur in Oberwellen bemerkbar machen, also deutlich ausserhalb des Phasenrauschen im Frequenzbereich.
... oder?
Im Prinzip bist du auf dem richtigen Weg, aber unendlich viele
Nebenlinien werden es nicht sein, "viele Nebenlinien" sehen
natürlich bei schlechter Auflösung eines Messgerätes aus wie
ein zusätzliches Phasenrauschen.
Passt. Danke für die Klarstellung.
Kann ich nicht einfach lang genug aufzeichnen? Dann könnte ich ja problemlos auf unter 1Hz oder so genau messen?
Aber ich glaube grundsätzlich sind wir uns eh schon einig. In der Praxis wird es wohl immer verschwimmen?
ich habe den Test eines der ersten Empfängers miterlebt, der die ZF digitalisierte. Damals lag der RTL-SDR noch zwei Jahrzehnte in der Zukunft.
Die Qualität des Empfangs wurde an zwei einander überlagerten Quarzsignales im einstelligen MHz-Bereich gemessen, und zwar durch FFT der digitalisierten Werte. Jede Abweichung von der Quarzfrequenz war ein Hinweis auf eine Störursache. Darunter auch Rauschen, Quantisierungsrauschen und Intermodulationen.
Die größten Probleme machten damals die Intermodulationsprodukte des letzten Verstärkers vor der Analog-Digitalwandlung. Die verfügbaren Verstärker brauchten entweder mehr Leistung als erlaubt oder zu viel Intermodulationen.
Ich vermute, gute Anregungen findest Du in Berichten über Tests von Kurzwellenempfängern. Mittlerweile brauchen die hochlinearen Verstärker weniger Leistung.
Geben deren Hersteller in ihren Datenblättern nicht entsprechende Tetmethoden an?
Mein Ansatz wäre gewesen: Sinus einspeisen und "Breite" des Spektrums
bei -x dBfs messen?
Dazu müsste das erzeugte Signal natürlich deutlich "besser" sein, als
das DUT. Aber spielt mir dabei nicht auch die Linearität meiner ADCs mit
rein?
Sinus ist schonmal gut, weil sich der mit überschaubaren Mitteln erzeugen läßt. Dafür kann man einen 'normalen' Signalgenerator mit anschließendem schmalbandigem Filter nehmen. Und ja, das Signal muß besser sein, als der ADC.
Anschließend nimmt man ganz ganz viele Kurven mit dem ADC auf und legt diese übereinander. Jetzt kann man da einen Sinus-Fit reinlegen (=idealer Sinus).
Die statistische Abweichung in Y-Richtung ergibt die Linearität des ADC. Die Abweichung in t-Richtung ist der gesuchte Jitter des Abtasttaktes.
Sauberen Sinus einlesen und die effektiven Bits deines ADCs anhand des Spektrums bestimmen. Der Einfluss des Jitters hängt dabei linear von der Signalfrequenz ab.
Anschließend nimmt man ganz ganz viele Kurven mit dem ADC auf und legt
diese übereinander. Jetzt kann man da einen Sinus-Fit reinlegen
(=idealer Sinus).
Die statistische Abweichung in Y-Richtung ergibt die Linearität des ADC.
Die Abweichung in t-Richtung ist der gesuchte Jitter des Abtasttaktes.
Sauberen Sinus einlesen und die effektiven Bits deines ADCs anhand des
Spektrums bestimmen. Der Einfluss des Jitters hängt dabei linear von der
Signalfrequenz ab.
Das klingt auch gut, aber ich brauch da noch mehr Input.
Wie bestimme ich die effektiven Bits anhand des Spektrums?
Wie hängt der Einfluss des Jitters mit der Frequenz zusammen?
Indem Du einen Ref-Sinus leicht verzerrst (Klirfaktor einbauen)
und Dir die ADC Werte via FFT anschaust und schaust,
ab welchem Klirrfaktor Dir die Oberwellen aus dem Spektrum
auftauchen.
Dann siehst Du den Oberwellenabstand z.B. in dB und kannst auf
die effektiven Bits rückschließen.
Ist auch eine Methode um Digitale Oszis zu bewerten und die
Güte des verbauten ADC's
Markus
PS.: Du kannst auch zwei Dicht nebeneinander liegenden Sinus Schwingungen
nehmen. Eine als Referenz und die andere als einstellbarer Wert, und
nach der oben beschriebenen Methode schauen, wann diese aus dem Rauschen
kommend sichtbar wird.
Du musst aber die beiden Signale rückwirkungsfrei summieren können.
Je nach Programmierung kann (wird!) es passieren, dass die Messungen
nicht mit exakt konstanter Abtastrate erfolgen, sondern ein Jitter
vorhanden ist.
Das würde ich erstmal in Frage stellen. In der Regel kannst du den ADC auf kontinuierliches Sampling einstellen, dann macht der dir alle soundsoviel Takte einen neuen Messwert, generiert einen Interrupt, und während du den alten Wert liest und in deinen Sende-Buffer legst, misst er schon den nächsten.
Ich sehe nicht wo da bei korrekter Ansteuerung irgendein Software-Jitter herkommen soll. Die Qualität wird durch die Eigenschaften des ADC, die Eigenschaften der verwendeten Taktquelle und die Eingangsbeschaltung des ADC bestimmt.
Klingt für mich als würdest du einen riesen Aufwand betreiben um einen Fehler zu messen, den du mit einem zehntel des Aufwands stattdessen komplett eliminieren könntest.
Das klingt auch gut, aber ich brauch da noch mehr Input.
Jitter beim Abtasten eines Sinussignals erzeugt im Spektrum als Untergrund sichtbares Rauschen. Das kannst du dir angucken. Je höher die Sinusfrequenz ist, um so größer ist der Fehler bezogen auf die Sollposition eines Abtastpunktes und um so stärker schlägt sich das im Spektrum nieder, d.h. der Rauschlevel steigt mit der Frequenz. Die Anzahl Des effektiven Bits folgt aus dem Rauschlevel in Relation zu der Sinusamplitude. Einfach mal nach Veröffentlichungen der Halbleiterhersteller zu Messmethoden zur Qualifizierung von ADCs suchen.
Ein paar Grundlagen über digitale Abtastsysteme können nichts schaden ;-)