[time-nuts] simple phase finder

Poul-Henning Kamp phk at phk.freebsd.dk
Wed Dec 5 13:39:52 UTC 2018


--------
In message <4a8ff8d6-70b2-782e-cb79-21c7e9a49649 at earthlink.net>, jimlux writes:

>If I were decoding WWVB to start, I'd break my samples up into 0.1 
>second or 0.5 second chunks and process them to see what the carrier 
>phase is.

With stable signals like this, it is a bad idea to chop them up,
in particular if your ADC runs from a good stable frequency.

Instead continuously average the square of the signal into a 1
second long circular buffer.

Then multiply/sum that buffer with a 120kHz sine and cosine to find
the phase angle.

Next find the amplitude modulation in the buffer with simple
thresholding and you now know the start of the second and the
60KHz phase, so you can lock a PLL to the carrier directly,
and having done so, the phase modulation falls right out by
simple multiplication.

The really interesting thing is that you can track a lot of carriers
this way using the same single circular buffer.

If you multiply it by 77.5 kHz sine+cosine, you get DCF77 phase
and amplitude.  If you multiply it by 198kHz you get...

There's some very old plots here:

	http://phk.freebsd.dk/loran-c/CW/

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.




More information about the Time-nuts_lists.febo.com mailing list