IEEE 1588 PTP Mehrplatinen-Zeitsynchronisation: gewöhnliche, Boundary- und Transparent-Clocks richtig konfigurieren
Acht Erfassungsplatinen müssen ihre Abtastpunkte auf einer Zeitachse innerhalb von ±50 ns ausrichten. NTP schafft das nicht, und ein GPS-Empfänger passt nicht in den Schaltschrank. Dieser Artikel zerlegt IEEE 1588 PTP in Clock-Rollen, Zeitstempelposition, Switch-Beteiligung und Fehlerbudget und liefert einen vollständigen Konfigurationspfad von der Ordinary Clock bis zur Transparent Clock.
1. Der Unterschied zwischen PTP und NTP liegt nicht im Protokoll, sondern in der Ebene des Zeitstempels
Viele Ingenieure verstehen PTP als „genaueres NTP”. Das ist falsch. Die Trennlinie verläuft nicht im Nachrichtenformat, sondern an der Stelle, an der der Zeitstempel entsteht.
NTP-Zeitstempel erzeugt das Betriebssystem auf Anwendungs- oder Kernel-Ebene. Zwischen dem Eintreffen des Frames an der NIC, dem Interrupt, dem Durchlaufen des Protokollstapels und dem Lesen der Systemuhr liegt eine unvorhersehbare Scheduling-Verzögerung. Selbst in einem sehr stabilen LAN bringt dieser Softwarepfad Dutzende bis Hunderte Mikrosekunden Jitter. 0,1–1 ms im LAN sind für NTP bereits ein gutes Ergebnis.
PTP platziert eine Timestamp-Unit im MAC oder sogar im PHY und latcht einen Hardware-Zähler in dem Moment, in dem das erste Byte des Frames ankommt oder das letzte geht. Die Software liest diesen Wert nur noch; sie entscheidet nicht mehr, „wie spät es ist”. Dieser eine Schritt drückt den Jitter von Mikrosekunden auf Nanosekunden.
| Dimension | NTP | IEEE 1588 PTP |
|---|---|---|
| Entstehungsort des Zeitstempels | OS-Protokollstapel | MAC/PHY-Hardware |
| Typische Genauigkeit im LAN | 0,1–1 ms | 20–100 ns (Hardware-Zeitstempel) |
| Dominante Fehlerquelle | Interrupt- und Scheduling-Jitter | Zeitstempel-Quantisierung, Linkasymmetrie, Oszillatordrift |
| Nachrichtentransport | UDP 123 | UDP 319/320 oder EtherType 0x88F7 |
| Switch-Unterstützung nötig | Nein | Ja (Transparent- oder Boundary-Clock) |
| Typische Anwendung | Log-Zeitstempel, Zertifikatsprüfung | Synchronisierte Mehrplatinen-Erfassung, Motion Control, Schutztechnik |
Die Schlussfolgerung ist eindeutig: Sobald mehrere Platinen im selben Moment abtasten müssen, scheidet NTP aus. Es bleibt nur PTP mit Hardware-Zeitstempel.
2. Vier Clock-Rollen: erst die Topologie festlegen, dann über Genauigkeit sprechen
IEEE 1588 definiert mehrere Clock-Rollen; in der Praxis sind vier relevant. Die falsche Rolle macht jede spätere Servo-Abstimmung sinnlos.
| Rolle | Terminiert Nachrichten | Kompensiert Verweilzeit | Typischer Ort | Preis der Kaskadierung |
|---|---|---|---|---|
| Grandmaster (GM) | Nachrichtenquelle | — | Steuerplatine im Schrank, GPS/Rubidium-Zeitbasis | — |
| Ordinary Clock (OC) | Ja, genau ein PTP-Port | — | Erfassungsplatine, Aktor, Slave-Gerät | Einzelhop, Fehler gleich Linkfehler |
| Boundary Clock (BC) | Ja, regeneriert, mehrere Ports | Nein, setzt auf Neu-Konvergenz | Switch, Mehrport-Steuerplatine | 20–50 ns pro Stufe, 100–250 ns über 5 Stufen |
| Transparent Clock (TC) | Nein, misst nur Verweilzeit | Ja, wird in correctionField geschrieben | Switch, Weiterleitungsknoten | Einzelstufen-Kompensation, Rest ±5–15 ns |
Boundary Clock und Transparent Clock lösen dasselbe Problem: Frames bilden im Gerät Warteschlangen, und die Wartezeit ist unvorhersehbar. Der Unterschied liegt im Verfahren. Eine Boundary Clock schluckt die Upstream-Zeit und erzeugt aus ihrer eigenen Slave-Clock eine frische Zeit, bevor sie weiterleitet. Eine Transparent Clock berührt die Zeit nicht; sie trägt nur „so lange habe ich diesen Frame gehalten” in die Nachricht ein, damit der Endpunkt sie abzieht.
Die technische Wahl ist pragmatisch:
- Ein Controller, mehrere Endpunkte, ein Switch dazwischen → Transparent Clock. Eine Kompensation, eine Subtraktion am Endpunkt, kürzeste Kette.
- Subnetze oder Protokolldomänen überqueren, PTP-Domänen isolieren → Boundary Clock, mit unabhängiger Konvergenz je Segment.
- Switch unterstützt kein PTP → Switch tauschen, oder 100 ns–10 µs Warteschlangen-Jitter akzeptieren. Keine Servo-Abstimmung rettet das.
3. Der vollständige Sync-Ablauf und woher der Fehler kommt
Im End-to-End-Modus (E2E) stellen Master und Slave die Zeitbeziehung über vier Nachrichtentypen her.
| Nachricht | Richtung | Zweck | Schlüsselfeld |
|---|---|---|---|
| Sync | Master → Slave | Kündigt die aktuelle Master-Zeit t1 an | originTimestamp oder mit Follow_Up |
| Follow_Up | Master → Slave | Überträgt das präzise t1 (Zwei-Schritt-Zeitstempel) | preciseOriginTimestamp |
| Delay_Req | Slave → Master | Slave startet die Round-Trip-Messung | Slave merkt Sendezeit t3 |
| Delay_Resp | Master → Slave | Liefert die Empfangszeit t4 des Masters | receiveTimestamp |
| Pdelay_Req / Pdelay_Resp | Benachbarte Ports | Einzelhop-Verzögerung im Peer-to-Peer-Modus | Mit Pdelay_Resp_Follow_Up |
Sobald der Slave t1, t2 (lokaler Empfang des Sync), t3 und t4 hat, liefern zwei Gleichungen gleichzeitig Offset und Pfadverzögerung:
“`
offset = ((t2 – t1) – (t4 – t3)) / 2
delay = ((t2 – t1) + (t4 – t3)) / 2
“`
Beide Gleichungen setzen symmetrische Uplink- und Downlink-Pfade voraus. Jede Asymmetrie geht mit ihrer halben Größe in den Offset ein — deshalb betonen PTP-Ingenieure Linksymmetrie statt endloses Servo-Tuning.
Eine Transparent Clock nimmt an dieser Rechnung nicht teil. Sie tut beim Durchlauf genau eines: die lokale Verweilzeit in das 64-Bit-`correctionField` akkumulieren. Dessen Einheit ist 2⁻¹⁶ ns, die unteren 16 Bit sind also Subnanosekunden-Brüche, die oberen 48 Bit ganze Nanosekunden. Der Endpunkt zieht correctionField von der Round-Trip-Zeit ab, und der Warteschlangen-Jitter verschwindet.
4. Die Zeitstempelstelle: wie aus 8 ns Quantisierung Dutzende Nanosekunden werden
Ein Hardware-Zeitstempel ist nicht unendlich genau; er stammt aus einem Zähler mit fester Frequenz. Der auf diesen Platinen übliche 125-MHz-Transceiver-Referenztakt ergibt 8 ns Granularität, ein 200-MHz-Systemtakt 5 ns.
Der Quantisierungsfehler eines einzelnen Zeitstempels ist gleichverteilt innerhalb ±½ LSB, mit einer Standardabweichung von LSB/√12. Bei 8 ns sind das rund 2,3 ns pro Messung. Der Offset subtrahiert zwei Round-Trip-Messungen und halbiert; die beiden Quantisierungsfehler sind unabhängig, ihr kombinierter Beitrag liegt bei etwa 1,6 ns. Diese Größenordnung ist nicht der Engpass. Entscheidend sind die folgenden Punkte.
| Zeitstempelort | Typische Genauigkeit | Hauptkosten | Geeignet für |
|---|---|---|---|
| Anwendungsebene (Software) | 50–500 µs | Keine Hardwarekosten | Logs, nicht-echtzeitfähige Dienste |
| Kernel/Treiber | 10–100 µs | Treiberunterstützung nötig | Allgemeine Server-Zeitsynchronisation |
| MAC-Hardware | 20–100 ns | MAC muss PTP unterstützen | Industrieautomation, Erfassungssynchronisation |
| PHY-Hardware | 5–30 ns | PHY braucht integrierte Timestamp-Unit | Nanosekunden-Synchronisation über mehrere Platinen |
PHY-Zeitstempel sind genauer als MAC-Zeitstempel, weil sie die MAC-PHY-Schnittstellenverzögerung in dieselbe Kompensation einbeziehen. Diese Verzögerung liegt typisch bei wenigen bis einem Dutzend Nanosekunden — konstant, aber schwer exakt messbar, und der am häufigsten übersehene Fehlerterm in MAC-basierten Designs.
5. Transparent oder Boundary Clock: muss der Switch mitmachen?
Genau hier entbrennt in Mehrplatinen-Projekten der meiste Streit. Die Antwort lautet ja — und die Entscheidung muss vor dem Switch-Kauf fallen.
Ein gewöhnlicher kommerzieller Switch behandelt PTP-Frames wie jeden anderen Verkehr. Allein ein 1500-Byte-Frame braucht an einem Gigabit-Port 12 µs zur Serialisierung; mit Warteschlange erreicht der Jitter leicht Mikrosekunden. Schlimmer: Up- und Downlink-Warteschlangen sind nicht symmetrisch, und dieser Fehler lässt sich nicht herausmitteln.
| Topologie | Fehler pro Hop | Gesamt bei 8 Platinen | Kosten | Geeignet für |
|---|---|---|---|---|
| Direkte Platinenverbindung (ohne Switch) | ±10 ns | ±10 ns | Am niedrigsten | ≤4 Platinen, Punkt-zu-Punkt |
| Gewöhnlicher kommerzieller Switch | 100 ns–10 µs | Unkontrolliert | Niedrig | Für Synchronisation nicht empfohlen |
| Kaskadierte Boundary-Clock-Switches | ±20–50 ns pro Stufe | ±60–150 ns (3 Stufen) | Mittel bis hoch | Domänen- und Subnetzübergreifend |
| Transparent-Clock-Switch | ±5–15 ns | ±15–25 ns | Mittel | Erste Wahl für Einzeldomäne mit mehreren Platinen |
Bei Transparent Clocks sind zwei Modi strikt zu trennen:
- E2E TC: kompensiert nur die eigene Verweilzeit; die Pfadverzögerung messen die Endpunkte weiterhin per Delay_Req/Delay_Resp. Passt zu Stern-Topologien.
- P2P TC: jeder Port misst aktiv die Einzelhop-Verzögerung zum Nachbarn über den Pdelay-Mechanismus und akkumuliert hopweise. Passt zu Ketten- und Ring-Topologien und behandelt Pfadwechsel von selbst.
Hat das System einen Ring oder Link-Umschaltung, ist P2P robuster. Bei sternförmiger Aggregation ist E2E einfacher umzusetzen und entlastet den Switch.
6. Taktquelle und Servo: die Haltefähigkeit bestimmt der Oszillator
Die Servoschleife zieht den langfristigen Mittelwert auf null, aber sie holt die Zeit nicht zurück, die die lokale Uhr zwischen zwei Sync-Nachrichten verloren hat. Dieses Intervall bestimmt allein die Frequenzstabilität des lokalen Oszillators.
Bei 125 ms Sync-Intervall gilt näherungsweise „Frequenzabweichung × Intervall”: ein gewöhnlicher 0,5-ppm-TCXO driftet 62,5 ns pro Intervall, ein 0,05-ppm-OCXO nur 6,25 ns. Mit einem gewöhnlichen Quarz ist ein längeres Sync-Intervall also eine Verschlechterung.
| Taktquelle | Frequenzstabilität | Drift über 125 ms | Drift über 1 s | Typische Holdover (24 h) |
|---|---|---|---|---|
| Gewöhnlicher Quarzoszillator | ±20 ppm | 2,5 µs | 20 µs | Unbrauchbar |
| Standard-TCXO | ±0,5 ppm | 62,5 ns | 500 ns | Dutzende Millisekunden |
| Hochstabiler TCXO | ±0,1 ppm | 12,5 ns | 100 ns | Einige Millisekunden |
| OCXO | ±0,01–0,05 ppm | 1,25–6,25 ns | 10–50 ns | Dutzende Mikrosekunden |
Für die Servoparameter ist ein vernünftiger Ausgangspunkt:
- Proportionalverstärkung bei 1/8 bis 1/4 des Sync-Intervalls, um zunächst Schwingungen zu vermeiden.
- Integralzeitkonstante bei 10–100 Sync-Perioden, um langfristige Oszillatordrift und langsame Temperaturänderungen aufzunehmen.
- Bei rauen Temperaturbedingungen (Schrank -40~85 ℃): Oszillator thermostatieren oder die Integralzeitkonstante verkürzen und größeren Kurzzeit-Jitter akzeptieren.
Ein oft übersehener Punkt: Der PTP-Servo setzt einen stabilen Grandmaster voraus. Ist der GM GPS-diszipliniert, aber die Antenne setzt zeitweise aus, springt der Servo mit. Der GM braucht einen lokalen Holdover-Oszillator, und bei Loss of Lock sollte der Servo einfrieren statt Rauschen nachzujagen.
7. Fehlerbudget-Beispiel: wie ±18 ns für ein 8-Platinen-System entstehen
Szenario: acht DUK7410T-Erfassungsplatinen plus eine Steuerplatine, aggregiert über einen Gigabit-Switch mit Transparent-Clock-Unterstützung, 1-GbE-Kupfer, 125 ms Sync-Intervall, lokal 0,1-ppm-Hochstabilitäts-TCXO, 200-MHz-Zeitstempeltakt.
| Fehlerterm | Quelle | Beitrag (±ns) | Maßnahme |
|---|---|---|---|
| Zeitstempel-Quantisierung | 5 ns bei 200 MHz | 3,0 | Nicht entfernbar; Zeitstempeltakt erhöhen |
| PHY-Sende-/Empfangsasymmetrie | Bauteilinhärent | 1,5 | PHYs aus gleicher Charge, richtungsweise kalibrieren |
| Kabel und Stecker | ca. 5 ns einfach auf 1 m Twisted Pair | 2,0 | Kabelverzögerungskompensation im Switch |
| TC-Kompensationsrest | Genauigkeit der Verweilzeitmessung | 5,0 | Hardware-TC-Switch einsetzen |
| Servo-Nachführrest | 0,5 Hz PI-Schleifenbandbreite | 10,0 | Sync-Rate erhöhen oder Integralterm nachstimmen |
| Oszillatordrift | 0,1 ppm × 125 ms | 12,5 | OCXO senkt auf 1,25 |
| Temperaturbedingte Frequenzänderung | Weittemperaturumgebung | 5,0 | Thermostatierung oder Temperaturkompensation |
| Versorgungs- und Taktjitter | Störungen auf Platinenebene | 2,0 | Separater LDO für den Zeitstempeltakt |
Die Terme sind unabhängig, also als Wurzel der Quadratsumme kombinieren:
“`
gesamt = √(3,0² + 1,5² + 2,0² + 5,0² + 10,0² + 12,5² + 5,0² + 2,0²)
= √(9 + 2,25 + 4 + 25 + 100 + 156,25 + 25 + 4)
= √314,5 ≈ 17,7 ns
“`
Gemessen liegen die Spitze-Spitze-Abweichungen zwischen den acht Platinen in dieser Konfiguration bei etwa 38 ns, was zum Budget von ±18 ns (rund ±36 ns Spitze-Spitze) passt. Ersetzt man den Switch durch ein gewöhnliches Commercial-Modell, treibt allein der Warteschlangen-Jitter die Summe über ±120 ns mit über 300 ns Spitze-Spitze — die Systemanforderung von ±50 ns ist damit klar verfehlt.
Auffällig: Der 12,5-ns-Term trägt fast die Hälfte der Budgetenergie. Ein 0,02-ppm-OCXO senkt ihn auf 2,5 ns und das Gesamtbudget auf etwa ±12 ns; Startzeit und Kosten des OCXO müssen aber mitgerechnet werden, und nicht jedes Projekt rechtfertigt das.
8. Checkliste und Platinenempfehlungen
Die Abschnitte oben, verdichtet zu einer umsetzbaren Checkliste:
- Zielgröße vor der Topologie festlegen: ±50 ns oder ±500 ns entscheidet sofort über TC oder gewöhnlichen Switch.
- Zeitstempel unterhalb des MAC: Software-Zeitstempel ist für Mehrplatinen-Synchronisation wertlos; zuerst PHY/MAC-Hardware-Zeitstempel prüfen.
- PTP gehört auf die Switch-Bestellung: Ein späterer Switch-Tausch kostet weit mehr als die richtige Wahl am Anfang.
- Zeitstempeltakt aus einer dedizierten jitterarmen Quelle: Versorgungspfad vom Systemtakt trennen, um digitales Schaltrauschen zu vermeiden.
- Servoparameter am Temperaturprofil abstimmen: Ein Weittemperaturschrank braucht eine kürzere Integralkonstante als ein klimatisierter Raum.
- Vor der Abnahme vier Stunden Dauerlauf: Spitze-Spitze-Offset und langsame Drift beobachten, nicht einen einzelnen Messwert.
Platinenempfehlungen nach Budget- und Genauigkeitsstufe:
- Hochgenaue Mehrplatinen-Synchronisation: DUK7410T (JFM7K410T, 406K LC / 1.540 DSP / 28,6 Mb BRAM, 16 GTX-Paare, PCIe Gen2 x8, 2×SFP+ und Gigabit-Ethernet). Genug Reserve für PTP-Slave-Clock plus 8-Kanal-Erfassung und Vorverarbeitung — die Hauptplatine für synchronisierte Mehrplatinen-Erfassung.
- Mittlere synchronisierte Erfassung: DUK7325T (JFM7K325T, 326K LC / 840 DSP / 16 Mb BRAM, gleiche 16 GTX-Paare und Gigabit-Ethernet, industriell -40~85 ℃). Preiswerter, wenn Kanalzahl und Algorithmuslast moderat sind.
- Domestische Kernplattform: PBC7K325G (China CWQ2P325T, 326K LC, 16 GTX-Lanes mit 12,5 Gb/s, 2 GB DDR3, 60×80 mm SoM). Für eigene Trägerplatinen, in die die PTP-Slave-Clock integriert wird, bei vollständig domestichen Systemen.
Weiterführende Artikel:
- FPGA-Clocktree und Jitter-Budget: Jitter vom Oszillator bis zum Transceiver aufteilen
- Phased-Array-Radar-Signalverarbeitung: FPGA-Pipeline für Mehrkanal-Beamforming und Pulskompression
- Breitband-SDR-Frontend: die Signalkette von der Antenne zum digitalen Basisband
