# How do receivers decode multiple GPS signals on the same carrier frequency?

I'm currently researching GPS signals and am trying to fully understand the path of a signal from satellite to receiver.

I understand that mixed into the GPS signal is a C/A code as well as a PRN which aids in the process of CDMA that the receiver preforms. However I'm a bit lost on how the receiver actually differentiates signals when it receives them.

As an example, let's say GPS signal A, B, and C are all transmitted from satellites X, Y, and Z. These all transmit over L1 at 1575.42 MHz

The receiver now obtains these signals as a garbled mess of data oscillating at 1575.42 MHz. I understand the PRN is used to decode these satellites so the receiver/host can differentiate them, but how exactly is this process done?

The system takes advantage of a couple of mathematical properties of the PRNs:

• First, the cross-correlation of a PRN with itself (i.e. the auto-correlation) looks somewhat like a single impulse with some noise,
• and second, the cross-correlation of a PRN with a different PRN looks like noise without an impulse.

We also note that cross-correlating an unknown signal with a fixed pattern is a linear, time-invariant function of that signal.

This allows us to construct the direct-sequence spread-spectrum system that GPS uses. The receiver detects GPS signals A, B, and C spread around the center frequency of 1575.42 MHz, plus noise N (e.g. receiver thermal noise, mixer flicker noise, etc). Each signal is the PRN sequence of its satellite, multiplied by a slow modulating signal encoding that satellite's navigation message at 50 bits per second (using BPSK for the L1C signal and more interesting modulation schemes like BOC for newer civilian GPS signals)

Suppose that the receiver wishes to obtain a lock on satellite X. It will cross-correlate the mixture A+B+C+N with the known PRN (call it V) for satellite X, obtaining V*(A+B+C+N) = V*A + V*B + V*C + V*N (where * represents cross-correlation, and we can distribute because cross-correlation with V is a linear function of the received signal).

This sum is a series of strong impulses from the correlation with signal A, plus some weak, spread-out noise from B and C, plus more spread-out noise V*N. Those strong impulses represent the modulated nav data, which can be decoded and used for the actual location-finding process.1

In the frequency domain, this also looks like a sort of "spreading" - the low-bandwidth BPSK navigation signal is spread to a wider bandwidth by multiplying with the PRN, and it can either be spread around more and kept as a weak signal by correlating with the wrong PRN, or "de-spread" back into a sharp peak by correlating with the correct PRN.

In practice, a GPS receiver will have multiple decoders, each capable of simultaneously correlating to its own PRN, allowing the device to track and decode the signal from multiple satellites.

1 This ignores the Doppler shift. As Dave Tweed points out in his comment, each signal is not only spread in frequency as a result of its PRN, but arrives somewhat off the 1575.42 MHz specified carrier frequency, reducing the cross-correlation even further, but increasing the search space.

• It's worth mentioning that different satellites in view will generally have very different Doppler shifts. This is both a blessing (reduces cross-correlation among satellites even more) and a curse (increases the search space significantly). Commented Aug 12, 2021 at 23:11
• There's a similar (sorta?) idea here to what a lock-in amplifier does. It's "easy" to pick a signal out from noise as long as you know what you're looking for. Commented Aug 13, 2021 at 0:35