[time-nuts] wtd: WWVB info
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