The U.S. Coast Guard transmits differential corrections to
GPS signals (DGPS) via low-frequency (285- to 325-kHz)
beacons. Transmission data rates are 100 or 200 bits/s. The
modulation is minimum-shift keying (MSK), resulting in a pseudo
frequency-shift keying (FSK) with a carrier shift of half the bit
rate. For a 100-bits/s signal, the carrier shift is only ±25 Hz. With
a receiver IF frequency of 1 kHz, the IF signal shifts between 975
and 1025 Hz. The two data tones correspond to times of 1026 µs
and 976 µs, respectively.
Initial attempts to detect the modulation centered on phaselocked
loops and analog discriminators, all of which needed to be
optimized for each data rate or tweaked. There was also concern
about the effects of aging components. Consequently, we developed
a digital technique using 5-V CMOS circuitry that measures
the length of each cycle of the IF signal. The circuit works well
with ac-coupled IF signals from 2 V p-p to 15 V p-p.
A CD4049 CMOS hex buffer/converter clips the IF input signal
(see the figure). The CD4049 is followed by a CD4013 D-type
flip-flop configured as a toggle flip-flop to remove any hysteresis.
The positive and negative portions of the signal are processed
separately. The negative portion of the square wave gates a
1000-bit counter that is fed from a 1.000-MHz clock.
If the signal’s duration is longer than 1000 µs, there will be an
overflow pulse. If the
duration is shorter
than 1000 µs, there’s
no overflow. Similarly,
the duration of the
positive portion of the
IF-generated square
wave is measured by a second CD4059. Feeding the outputs of
the two CD4059s to an OR gate merges the measurements of
every cycle of the data IF signal.
Any overflow pulses trigger a CD4098 retriggerable monostable
multivibrator. The output pulse length is 1.1 ms. Having an
output pulse length slightly greater than the period of the IF center
frequency ensures that the output pulse will not drop to zero
between adjacent long-duration cycles of the IF signal.
The reset command of the CD4059s used as programmable
dividers isn’t straightforward. If control inputs Kb and Kc are set
to zero, the counter resets to the jam inputs.
Since a divide-by-ten was desired for the counter first stage,
Ka = 1, Kb = 1, and Kc = 0. Kc is always zero, so the Kb control
was used for reset. After a master reset, there’s one extra count.
Therefore, with a jam input of 1000, the output pulse occurs after
1001 counts. If this is a problem, the jam input could be set to 999
to get an overall delay of 1000 µs.
Because the CD4059 is a synchronous programmable counter,
the output pulse is one clock cycle—1.0 µs. Using a jam
input of 1000, there are no output pulses for pulses shorter than
999 µs, and there are continuous pulses for pulses longer than
1002 µs.
The lengths of the detected data pulses are very close to multiples
of 10 ms, with a maximum error of only 0.1 ms. Triggering
an oscilloscope on the rising edges of the data pulses, the IF signal
appears as a pure sine wave of 975 Hz. When the scope is triggered
on the falling edges, the raw IF signal appears as a pure sine
wave of 1025 Hz. Because the circuit functions as a frequency
discriminator centered on the IF frequency, the detection scheme
is independent of the transmission data rate.