Clock Genauigkeit

OP #7737712
Lesenswert?

Hi

Eine Frage bezüglich Clock Genauigkeiten:

Mein External Crystal Oscillator mit 16 MHz hat eine Genauigkeit von +/-10 PPM. Der Oszillator ist an ein STM32 angeschlossen. Ich generiere daraus ein 153.6 MHz main clock. Damit treibe ich einen timer PWM mit 2.048 MHz. Das ist der Input Clock von meinem AD Wandler. Der AD Wandler erzeugt dann damit 250 Samples per Second.

  1. Haben die 250 Samples per second immer noch +/- 10 ppm?

  2. Stimmt diese Rechnung: worst case habe ich alle 100k Samples ein Sample zu viel oder zu wenig?

3Bleibt eigentlich die Frequenz bei gleich bleibender Temperatur und abgesehen von Aging dann gleich über Zeit? Also kann ich davon ausgehen dass meine Aufnahme von 8 Stunden konstant die selber sampling frequency hat bei gleich bleibender Temperatur?

  1. Wie war das eigentlich früher bei den alten Digital-Armbanduhren? mit einem +/-10 PPM Quartz wurden sie dann ja auch alle 100k Sekunden eine se Versatz haben, oder?

Danke

#7737735
Lesenswert?

Die 153.6 MHz werden ja über eine PLL erzeugt, d.h. da ist eh ein Jitter drauf.

Warum müssen denn die 100k Samples so super genau sein?

Der Einfluß der Temperatur läßt sich mit einer Heizung verringern (OXCO) oder mit Kompensation (TXCO). Zur Kompensation wird die Temperatur gemessen und über eine Tabelle entsprechend Kondensatoren am Quarz zugeschaltet.

#7737736
Lesenswert?

Hallo Matthias,

die Frequenz von rund 153.6 MHz wird aus der Frequenz von 16 MHz durch eine PLL-Schaltung erzeugt. Diese beinhaltet eine Phasenregelung, die bewirkt, dass die Frequenz von rund 153.6 MHz stets um einen Mittelwert pendelt. Über einen langen Zeitraum betrachtet ist dieser Mittelwert genauso stabil wie die externe Frequenzquelle. Beim Momentanwert der Frequenz von rund 153.6 MHz kann jedoch aufgrund des Pendelns von Stabilität nicht gesprochen werden.

Moderator (Firma: Titel) Persönliche Seite #7737804
Lesenswert?

Mat. K. schrieb:

Wie war das eigentlich früher bei den alten Digital-Armbanduhren? mit einem +/-10 PPM Quartz wurden sie dann ja auch alle 100k Sekunden eine se Versatz haben, oder?

Das wäre etwa 1 Sekunde pro Tag. Könnte hinkommen.

Aber weil das die Worst-Case Angabe über den gesamten Tmeperaturbereich ist, waren die Uhren tatsächlich besser, weil die Temperatur am Handgelenk niemals lange -40°C oder +70°C hatte, sondern meist im Bereich um 20°C lag.

Mat. K. schrieb:

Eine Frage bezüglich Clock Genauigkeiten

Eine Gegenfrage: warum fragst du? Welches Problem hast du? Welche Aufgabe möchtest du mit diesen Anfragen lösen?

#7737881
Lesenswert?

Handgelenk niemals lange -40°C oder +70°C hatte, sondern meist im Bereich um 20°C lag.

Mal abgesehen davon das die Annahme sicher glaubwuerdig ist, an meinem Arm hat es grade 25.5Grad. Sagt meine Armbanduhr. Der Hersteller koennte also sogar diesen Temperaturwert nehmen und das rechnerisch kompensieren.

Vanye

#7737889
Lesenswert?

Die Zeiten mögen ausreichend genau sein, wenn aus dem wohltemperierten Quarz hergeleitet werden. Ob sie noch genau sind, wenn sie durch einen Mikroprozessor behandelt werden, habe ich größere Zweifel, da Befehlsausführungszeiten verschieden sein können.

#7737909
Lesenswert?

Lu schrieb:

Die Zeiten mögen ausreichend genau sein, wenn aus dem wohltemperierten Quarz hergeleitet werden. Ob sie noch genau sind, wenn sie durch einen Mikroprozessor behandelt werden, habe ich größere Zweifel, da Befehlsausführungszeiten verschieden sein können.

Dann ist das Programm da drauf nicht viel wert, wenn das davon abhängig sein sollte.

#7737955
Lesenswert?

Lu schrieb:

Ob sie noch genau sind, wenn sie durch einen Mikroprozessor behandelt werden, habe ich größere Zweifel, da Befehlsausführungszeiten verschieden sein können.

Seit wann? Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt genau an wie lange ein Befehl braucht. Und das ändert sich auch nie.

Vanye R. schrieb:

Der Hersteller koennte also sogar diesen Temperaturwert nehmen und das rechnerisch kompensieren.

Ich würde vermuten, das die Kurve Temp/Abweichung an dieser Stelle so flach ist (obwohl sehr elliptisch), das selbst 20-30° keine nennenswerten Unterschiede mehr ausmachen, plus: wie genau ist die Temperaturmessung? Am Ende ist die Abweichung durch 1 Woche Fieber kleiner als die die durch einen "+-0,5°C"-Sensor all year long entsteht.

Gast #7737957
Lesenswert?

Jens G. schrieb:

Dann ist das Programm da drauf nicht viel wert, wenn das davon abhängig sein sollte.

Der ADC wird vermutlich permanent seine Daten wegschaufeln. Die MCU muss es nur abholen und vermutlich an eine fremdgetaktete Weiterverarbeitung schicken, die exakt diese Samples erwartet. Hatte ich mal bei einer speziellen Analog zu ISDN Wandlung bei dem ich einen propritären Bus emulieren musste.

Mit zwei separaten Oszillatoren ist das aber nicht ohne weiteres erreichbar. Wenn man an den Clock der anderen Stufe kommt, daraus mit PLL den MCU Takt erzeugen. Jittert, ist aber ansonsten synchron.

Umgleiche Samples hingegen führen zu Sprüngen im Signal und das hört man.

Gast #7737961
Lesenswert?

Jens M. schrieb:

Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt genau an wie lange ein Befehl braucht.

Schon beim STM8 kann man das nicht mehr mit Bestimmtheit sagen. Hängt von der Pipeline ab. Der ADC kann aber autarkt laufen und alle X Zyklen einen Wert liefern. Die MCU braucht nicht vorhersagbare Ausführungszeiten. Sie muss nur die Puffer rechtzeitig abholen bzw. füllen.

#7738078
Lesenswert?

Jens M. schrieb:

Seit wann? Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt genau an wie lange ein Befehl braucht. Und das ändert sich auch nie.

Viele Mikrocontroller kennen so etwas wie Interrupts. Die grätschen in den Zeitablauf des Programms rein. Da nützt es überhaupt nichts, dass die Befehlsausführungszeit bekannt sind, wenn durch zufällige Interrupts im Programmablauf ganze Blöcke von Befehlen dazwischen geschoben werden. Feste Zeiten überlässt man besser einem unabhängig laufenden Timer/Zähler.

#7738093
Lesenswert?

Michael schrieb:

Jens M. schrieb:

Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt genau an wie lange ein Befehl braucht.

Schon beim STM8 kann man das nicht mehr mit Bestimmtheit sagen. Hängt von der Pipeline ab.

Das ist im gegebenen Kontext schnurzegal.

Auf dem Weg vom 16MHz Quarzoszillator über die PLL auf 153 Komma knips MHz über den Timer für die 2.048 MHz PWM bis hin zum ADC ... nirgendwo ist das Timing von der Ausführungszeit einer CPU Instruktion abhängig. Oder vom Zustand einer Pipeline.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren