Hallo zusammen! 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? Bin über jeden Input dankbar :-) Jakob
Jakob K. schrieb: > Bin über jeden Input dankbar Zunächts solltest du dir klar machen dass Jitter und Phasen- rauschen zwei unterschiedliche Dinge sind. Du meinst Jitter. Jakob K. schrieb: > Wie kann ich diesen Jitter messen? 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). Jakob K. schrieb: > Bin über jeden Input dankbar Einen ADC lässt man hart synchron abtasten, dazu ist DMA hilfreich wenn Interrupt-Steuerung nicht ausreicht.
Servus Wastl! Danke für die schnelle Antwort. Wastl schrieb: > Zunächts solltest du dir klar machen dass Jitter und Phasen- > rauschen zwei unterschiedliche Dinge sind. Du meinst Jitter. Ja glaube ich habe ein grobes Verständnis, aber kann das sicher auch noch einmal verbessern :-) Wastl schrieb: > 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! Wastl schrieb: > 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? Wastl schrieb: > 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.
Jakob K. schrieb: > 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.
Andreas H. schrieb: > 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? Wastl schrieb: > 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?
Hi, Jakob, 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? Ciao Wolfgang Horn
Jakob K. schrieb: > 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.
Jakob K. schrieb: > Wie kann ich diesen Jitter messen? 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.
:
Bearbeitet durch User
Rick schrieb: > 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. Das klingt sinnvoll. Rainer W. schrieb: > 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? Danke!
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.
:
Bearbeitet durch User
Jakob K. schrieb: > 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.
:
Bearbeitet durch User
Jakob K. schrieb: > 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 ;-)
:
Bearbeitet durch User
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.