[time-nuts] wtd: WWVB info

Clint Turner turner at ussc.com
Thu Aug 6 15:04:20 EDT 2015

Years ago I ran across a project in which the WWVB signal, after being 
siphoned from a cheap TRF clock module with a Hi-Z follower, IIRC, was 
shoved directly into the A/D input (10 bits) of a rather low-end PIC 
running at a fairly low sample rate - something in the 4-8 kHz range.  
IIRC, from this point on the carrier was coherently recovered in 
software and the IRIG time code extracted:  I've tried to find this 
reference more recently, but it resists my attempts to locate it.

What I do remember was that it relied on undersampling techniques - the 
fact that one could sample at a much lower rate and via Nyquist, "see" 
the desired signal translated.  While one loses a bit of dynamic range, 
etc. in doing this, such was largely irrelevant in this case as between 
the narrowband techniques involved for internally the carrier and then 
analyzing the amplitude thereof, 10 bits (minus noise, etc.) plus AGC of 
the TRF module seemed to be good enough.  I seem to recall that the 
sample rate "offset" yielded an "internal" carrier frequency in the low 
kHz or hundred Hz range at most and then further-decimated.

What I do recall was that the carrier was detected separately using a 
long time constant and the amplitude was then determined by using 
coherent demodulation to extract the DC component and then simple 
rectangular-window sample-and-hold integration (done in software) in 
something like 0.05 or 0.1 second chunks.  I believe that 
pulse-swallowing/insertion was used to keep the carrier recovery in phase.

What struck me at the time was that this method could have, with a bit 
of extra work, been used to obtain the precise carrier frequency - 
albeit with a bit of short-term jitter. Even though this was well before 
the current BPSK modulation was implemented I thought that it could have 
also been used to detect the then-45 degree phase shift ID that was 
used.  Nowadays, I'd bet that a similar technique could be used to 
recover carrier with a simple Costas loop implemented in software, all 
at just a few hundred Hz - just as long as it was comfortably above the 
detection bandwidth.  (Severely limiting the input bandwidth of the 
original signal also relaxes the filtering requirements involved in 
decimation as well!)

(A similar scheme - sans undersampling - was implemented by Mark, 
WB7CAK, using an 8-bit A/D in the 1980's for experimental 10 baud BPSK 
reception on the "LowFER" bands using a Hitachi 64180 - a processor 
similar to the Z80:  The similarities of the article to his 
implementation was one of the reasons why it stuck in my brain.)

As for having the PIC "just" 10 bits, with a narrowband input filter and 
AGC and comparatively long time constants it should be practical to keep 
the A/D at mid-high scale, well out of quantization noise territory.  If 
something more than a simple-minded sub-sampling of bit timing is used 
for detection (simultaneous, parallel detection of 0, 1, marker bits on 
that amplitude stream along with long-term integration of the 
beginning-of-second marker detection using even shorter detection 
windows, for example).

While I've not done an "all in one" detection for a WWVB receiver, I've 
done most of the above pieces at one time or another (oversampling to 
down-convert, carrier recovery, sample/hold/integration) in separate 
projects on low-end PICs (e.g. 16F88, 18F series, etc.) and even some 
decent DSP using the PIC16F1847 for removal of mains harmonics in audio 
sampling at 32 kHz, so I believe that it *is* possible - and such should 
also be possible on an Arduino-type platform as well provided that one 
can obtain the needed control of the hardware layer.



More information about the time-nuts mailing list