# [time-nuts] Checking the Frequency of a Rubidium Oscillator

Magnus Danielson magnus at rubidium.dyndns.org
Wed Nov 12 00:19:23 UTC 2008

```Björn Gabrielsson skrev:
> On Tue, 2008-11-11 at 10:28 -0800, Lux, James P wrote:
>> A GPS receiver actually solves for the state vector of the receiver (including the local clock error) using the raw observables from the tracking loop (code phase).  The nav equations calculate (apparent) range and range rate from the known state vector of each satellite and the (estimated) state vector of the receiver.  Range rate is the doppler.
>>
>> The 1.xxx Megachip/second C/A code is 1023 bits long, so the classical approach is to step the receiver through all possible phases of the code, integrating at each one to see if it can detect the signal.  If your integration time is, say, 10 milliseconds, it takes 10 seconds to step through them all. Once the signal is detected, the PN tracking loop tracks that signal.
>
> You also need to check different doppler bins. 500Hz bins are a classic
> choice.

To elaborate on that. The C/A code is 1023 chips long, at 1,023
MChips/s which cause a cycle period of 1 ms. If you now consider
sampling at 1 ms, the sampling rate is 1 kHz giving the Nyquist
frequency of 500 Hz and thus 500 Hz doppler bins. For a earth bound GPS
receiver, as extreme as 6 kHz doppler offsets can be seen on the
carrier. The chipping rate shift is 1/1540 as low, so it can be almost
neglected in comparision.

The traditional search is a two-dimensional search in doppler bins +/-
6000 Hz in 500 Hz blocks and 0-1022 phase stages for each of 1-32 PRN
codes. a search space totaling of 818400 combinations taking 818,4 s for
a single integrator and 1/N for N integrators so roughly a minute or two
for a now classic receiver of 8 to 12 channels. A more efficient
algorithm is to sample the signal, FFT it and make the correlation in
the frequency domain. It will crank out the phase and correlation
amplitude for each PRN attempted with much less processing. This needs
ot be performed for each doppler bin, but is certainly worthwhile the
effort. Extending the search for all the WAAS/EGNOS sats is trivial and
worthwhile.

Once doppler bin and phase has been achieved for each PRN, picking the
top N correlations and initiate channels is a quick process. The
correlation phase can be initiated into the channel together with a
rought initial frequency guess from the doppler bin and phase locking is
quickly achieved in a traditional correlation channel. Data channel
phase locking is the next thing, but that hunt is quickly achieved. This
can be aided by having an existing total lock in which case even
fundamental things such as bit phase on pseudo-code has a very limitied
range between sats. A very rought idea of current position can give a
correct model of full subcode phase.

A sat based receiver must handle higher doppler offsets due to its
higher speed, but as long as the per channel mix-down carrier NCO can be
set wide enought, and that search patterns include the needed range, it
will not be much of a problem. Naturally, tracking PLLs needs to handle
the higher dynamics. As the orbit is fairly stable, orbit predictions
can be fed into loop for better performance as it allows tighter bandwidth.

The full benefit of code and carrier phase measurements should be used.
Also, considering L2C is becomming more and more common, it should also
be used. Preparation for L1C should also be done.

As for signal bandwidth, while the C/A chiping rate is 1,023 MChips/s,
we can expect a 2,046 MHz range between the first nulls offset from the
carrier. However, the traditional sats uses a full 20,46 MHz bandwidth
since it also transmitts the P(Y) code. Buliding a receiver that uses
the full bandwidth provides certain benefits, but standard off the shelf
chips usually stays within 2,046 MHz. The front end design is basically
the same thought, just 10 MHz higher bandwidth. For civilian receivers,
only code-less tracking receivers usually have that bandwidht.

Modern GPS signals extend to a 24 MHz bandwidth. It is especially the
M-code that mandates this shift. The M-code should be of no major