Korrelative Phasenauswertung

Die theoretische Grundlage der korrelationsbasierten Auswertung der DCF77-Phaseninformation (PZF) — Matched Filter, Verarbeitungsgewinn, Latenzbilanz und ein Anwendungsbeispiel per prädiktiver Taktdisziplinierung.

Verfahren und theoretische Grundlage eines Korrelationsempfängers für die pseudozufällige Phasenmodulation (PZF) des DCF77-Trägers.

Fortsetzung: Die theoretischen Grundlagen (Matched Filter, Autokorrelation, PZF-Sequenz) stehen hier; die praktische Umsetzung als lauffähiger GNU-Radio-Flowgraph — mit realer Verifikation an mehreren Web-Empfänger-Aufnahmen — steht in Stufe 4: PZF-Demodulation in der Praxis. Die dort tatsächlich umgesetzte Verarbeitungskette weicht von der weiter unten skizzierten ersten Idee ab (Details siehe Abschnitt „Von der Theorie zur Praxis").
  • Träger: 77,5 kHz, PZF seit 1983 (PTB)
  • Ziel-Genauigkeit: µs-Bereich statt ms-Bereich (AM-Flanke)
  • Bezug: knüpft thematisch an Stufe 1 und Stufe 2 an (dieselbe DCF77-Zeitzeichenauswertung); die praktische Umsetzung in Stufe 4 verwendet allerdings eine eigenständige IQ-Aufnahme statt der dortigen Hüllkurven-Kette

Warum Phase statt Amplitude?

Die bestehende Auswertung gewinnt die Sekundenmarken aus der Hüllkurve — begrenzt durch Filterflanke, Rauschen und Debounce auf realistisch ±1–5 ms Zeitunsicherheit. Die dem Träger zusätzlich aufgeprägte Phaseninformation erlaubt mit Korrelationsverfahren eine um zwei bis drei Größenordnungen bessere Zeitauflösung.

DCF77 moduliert den 77,5 kHz-Träger seit 1983 zusätzlich zur bekannten Amplitudentastung (AM, 100/200 ms-Absenkung für die BCD-Zeitinformation) mit einer pseudozufälligen Phasenmodulation (PZF): einer im Sekundentakt wiederholten, aus einem rückgekoppelten Schieberegister erzeugten Bitfolge (Maximalfolge), die den Träger um einen kleinen, festen Winkel vor- und zurückschiebt. Diese Modulation stört die AM-Dekodierung nicht (sie ist amplitudenneutral), liefert aber ein deterministisches, im Empfänger exakt nachbildbares Referenzsignal — die Grundvoraussetzung für ein Korrelationsverfahren. Aufbau und Erzeugung dieser Folge im Detail: Die PZF-Sequenz von DCF77.

Schema Demodullation

Grundlage: Matched Filter und Autokorrelation

Die Korrelation ist hier kein heuristischer Trick, sondern der informationstheoretisch optimale Detektor für ein bekanntes Signal in additivem weißem Rauschen — Herleitung und Grundlagen dazu stehen im Artikel Matched Filter.

Matched-Filter-Theorem: Für ein bekanntes Sendesignal $s[n]$, das mit unbekannter Verzögerung $\tau$ in additivem weißem Rauschen empfangen wird, maximiert der auf $s[n]$ angepasste Korrelationsfilter das Signal-Rausch-Verhältnis am Ausgang. Die Position des Korrelationsmaximums ist der Maximum-Likelihood-Schätzer für $\tau$.

$$R_{xs}[\tau] = \sum_n x[n] \cdot s^*[n - \tau]$$

Für die PZF-Folge wird als Referenz $s[n]$ eine lokal im Empfänger erzeugte, bitidentische Kopie der PTB-Pseudozufallsfolge verwendet (Startpunkt an der bekannten Sekundenflanke aus der AM-Grobsynchronisation). Entscheidend ist die Autokorrelationseigenschaft von Maximalfolgen: nahezu deltaförmig, mit Nebenkeulen der Größenordnung $1/N$ bezogen auf den Hauptpeak ($N$ = Folgenlänge in Chips). Das ergibt einen Verarbeitungsgewinn:

$$G_p \approx 10 \cdot \log_{10}(N) \;\text{dB}$$

Bereits bei einer typischen Folgenlänge im Bereich einiger hundert Chips ergibt das 20–30 dB SNR-Gewinn gegenüber der Einzel-Chip-Detektion — der Korrelationspeak bleibt damit auch bei Empfangsbedingungen auswertbar, unter denen die AM-Hüllkurve bereits stark verrauscht ist. Die erreichbare Zeitauflösung ist nicht mehr durch die Filterflanke, sondern durch die Schärfe des Korrelationspeaks bestimmt — bei Bandbreite $B$ des Chip-Signals typischerweise

$$\sigma_\tau \sim \frac{1}{B \sqrt{2 \cdot \text{SNR} \cdot N}}$$

also im Mikrosekundenbereich statt Millisekunden.

Von der Theorie zur Praxis

Der oben hergeleitete Ansatz ist der theoretisch einfachste Weg: den empfangenen Phasor auf den Einheitskreis normieren (Hüllkurve entfernen, reine Phase behalten), mit einem lokal erzeugten Referenzträger konjugiert komplex multiplizieren (Trägerauskopplung) und das Ergebnis mit der PZF-Referenzfolge korrelieren. Dieser Weg setzt voraus, dass Frequenz und Phase des lokalen Referenzträgers bereits mit ausreichender Genauigkeit bekannt sind.

In der Praxis — insbesondere bei Aufnahmen über Web-Empfänger — ist die tatsächliche Trägerablage weder exakt bekannt noch konstant, sondern driftet. Ein fest eingestellter Referenzoszillator müsste dafür wiederholt neu kalibriert werden. Die in Stufe 4 tatsächlich umgesetzte Kette verwendet deshalb statt eines festen Referenzträgers eine Regelschleife (Costas Loop), die den Träger laufend selbst nachführt — robuster gegenüber unbekannter, driftender Ablage, dafür mit eigenen Dimensionierungsfragen (Einrastverhalten, Regelschleifenbandbreite), die dort ausführlich an realen Aufnahmen gemessen und dokumentiert sind. Der letzte Schritt — die Korrelation der Phasenabweichung gegen die bekannte PZF-Folge — bleibt inhaltlich derselbe wie hier hergeleitet; nur der Weg zur trägerbereinigten Phase unterscheidet sich.

Peak-Interpolation als offener Punkt: Die parabolische Interpolation zur Sub-Sample-genauen Bestimmung der Peak-Lage (Standardtechnik aus GPS-Codekorrelatoren: die drei Abtastwerte um das Maximum werden durch eine Parabel angenähert, deren Scheitelpunkt die Peak-Lage genauer angibt als das nächstgelegene Sample) ist in der aktuellen praktischen Umsetzung noch nicht enthalten — der Peak-Zeitpunkt wird dort auf die Genauigkeit der Abtastrate bestimmt (bei 6 kHz: knapp 167 µs). Für die hier angestrebte Mikrosekundengenauigkeit wäre dieser Schritt zu ergänzen.

Latenzbetrachtung

Die Korrelation kostet Zeit — und zwar aus zwei grundverschiedenen Quellen, die in der Praxis oft verwechselt werden.

Quelle Größenordnung Charakter
Rechenzeit der Korrelation selbst (FFT/FIR) µs – wenige ms vernachlässigbar, reine CPU-Zeit
Beobachtungsfenster (Folgenlänge muss erst „durchlaufen" sein) bis zu 1 Sekunde fundamental, nicht wegoptimierbar
Gruppenlaufzeit vorgeschalteter Filter (Hilbert, ggf. Tiefpass) wenige ms – 60 ms konstant, siehe Filteranalyse

Die dominante Latenz ist keine Rechenlatenz, sondern eine Beobachtungslatenz: Ein Korrelationspeak kann erst dann eindeutig erkannt werden, wenn die vollständige Referenzfolge (bis zu 1 s Dauer) am Empfänger vorbeigelaufen ist. Ein Ergebnis „jetzt" beschreibt daher zwangsläufig ein Ereignis, das bis zu eine Sekunde in der Vergangenheit liegt — unabhängig davon, wie schnell die zugrundeliegende FFT oder FIR-Faltung gerechnet wird. Diese Verzögerung ist der Faltung selbst inhärent (ein Matched Filter der Länge $N$ braucht $N$ Samples Vorlauf, um bei $n$ den Korrelationswert für die bei $n-N$ begonnene Folge auszugeben).

Referenzfolge im Äther Wartezeit bis Fenster vollständig Korrelationsergebnis verfügbar

Abb. 1 — Naive Blockkorrelation: das Ergebnis für Sekunde t₀ steht erst bei t₀ + 1 s zur Verfügung.

Anwendungsbeispiel: Latenzeliminierung durch prädiktive Taktdisziplinierung

Die Beobachtungslatenz lässt sich nicht aus der Korrelation selbst entfernen — wohl aber aus dem Signalpfad, der beim Nutzer ankommt, indem Korrelation und Zeitausgabe entkoppelt werden.

Prinzip: Statt bei jeder Sekunde auf das aktuelle Korrelationsergebnis zu warten, führt der Empfänger einen freilaufenden, lokalen Sekundentakt (typischerweise aus einem TCXO/OCXO abgeleitet) und behandelt jeden — verzögert eintreffenden — Korrelationspeak nicht als Ausgabewert, sondern als Korrekturmessung für ein Zeitmodell, das kontinuierlich in die Zukunft extrapoliert. Ausgegeben wird immer die Prädiktion, nie das Rohergebnis der Korrelation.

$$\hat{t}[n+1] = \hat{t}[n] + T + \alpha \cdot e[n]$$

$$\hat{f}[n+1] = \hat{f}[n] + \frac{\beta}{T} \cdot e[n]$$

$$e[n] = t_{\text{Korrelation}}[n-N] - \hat{t}[n-N] \quad (N = \text{Sekunden Beobachtungsverzug})$$

Der Fehler $e[n]$ wird also gegen die um $N$ Sekunden in der Vergangenheit liegende Prädiktion ausgewertet — genau dort, wo das verzögerte Korrelationsergebnis tatsächlich hingehört — und fließt gedämpft ($\alpha$, $\beta$) in die laufende Extrapolation ein. Kurzfristige Ausgaben stützen sich ausschließlich auf das lokale Oszillatormodell, das über Sekunden bis Minuten hinweg eine Frequenzstabilität im ppb-Bereich aufweist; die Korrelation liefert lediglich die langfristige Drift- und Offsetkorrektur.

Naive Blockkorrelation (Rohausgabe) Prädiktiver Lokaltakt (Ausgabe)

Abb. 2 — Der Anwender erhält durchgehend die Prädiktion; die verzögert eintreffende Korrelation korrigiert im Hintergrund nur noch das Modell für die nächste Prädiktion.

Ergebnis: Die Ausgabelatenz sinkt von „bis zu 1 s" auf die reine Rechenzeit der Prädiktionsformel (µs-Bereich) — bezahlt wird mit einer Genauigkeit, die zwischen zwei Korrekturen von der Kurzzeitstabilität des lokalen Oszillators abhängt statt direkt von DCF77. Für die meisten Anwendungen (NTP-Referenzuhr, Datenlogger-Zeitstempel) ist das der richtige Kompromiss: genau dieses Prinzip — Korrelation als disziplinierender Hintergrundprozess, nie als Ausgabepfad — verwenden kommerzielle DCF77-Korrelationsempfänger, um trotz Sekunden-Beobachtungsfenster eine Ausgabe mit vernachlässigbarer Latenz zu liefern.

Download

Download: Der PZF-Folgen-Generator als ZIP — dcf77-phasenauswertung.zip herunterladen, entpacken, dann:
python3 pzf_sequence_generator.py
python3 pzf_sequence_generator.py

Enthält die Referenzfolge (512-Bit-PZF, LFSR-Polynom 0x110) als eigenständiges Werkzeug zur Sequenzerzeugung. Der vollständige, lauffähige Korrelationsempfänger als GNU-Radio-Flowgraph steht im Download zu Stufe 4.