The hardest part of understanding GPS is the signal itself. Calculating distance based on time is quite straight forward, and even trilateration (which we’ll look at shortly), isn’t as tricky as it sounds when you add a few diagrams. But the GPS signal and how it works is pretty involved.
So what information is sent down to us? The unique signal transmitted from each satellite contains two codes and a message:
- C/A code (coarse/acquisition code)
- P code (precision code) [called Y code in its encrypted form]
- Navigation message
The P code is encrypted for military use, and so can be ignored. It’s encrypted to stop spoofing and to control who has access to the system. Incidentally, once the P code has been encrypted, it’s referred to as Y code.
Two carrier waves are used:
Ll = 1575.42 MHz
L2 = 1227.60 MHz
Each satellite modulates its own unique codes onto the carrier waves. The C/A code that civilians can access is sent on Ll. It is made up of 1 ,023 bits.
The entire code takes one millisecond to transmit and repeats endlessly.
As well as the C/A code, a navigation message is also modulated onto the Ll carrier. This message contains lots of vital information and is quite long. However, because of the relatively slow rate that it is sent, it takes 12.5 minutes to send one complete message.
A second unique code is modulated onto both the Ll and L2 carriers. This code is encrypted for military use and cannot be used by civilians. It contains many more bits and is sent at a higher speed, which allows authorised users to calculate position accuracy with much greater accuracy.
As civilians, we’re only interested in the C/A code and navigation message. The C/A code is actually a binary string made up of 1,023 bits. At first glance the sequence appears to be completely random—but it isn’t. The sequence has been carefully composed so that if you wrote the sequence out on two pieces of tracing paper and overlaid them, there is only one position where they will match (as shown here).
Example binary string written on paper.
Two copies are written on tracing paper and examined for a match.
We can see there is no match in this position.
The sequence matches in this position.
We see the sequence also matches in this position (when one copy of the code is completely over the other).
C/A code is constructed so that the sequence only matches in one position.
We’ll look at why it’s important the C/A code only matches in one position later when we look at how distance from the satellite is calculated. For now, all we need to know is that the C/A code each satellite transmits is unique to that satellite and that while it appears to be a random string of bits, it is not. The code actually follows a precise deterministic pattern, and so it is often called pseudo-random noise (PRN).
The navigation message is different from C/A code because it contains data. This includes information about clock corrections, satellite health, ephemeris (precise orbit) data, ionosphere model parameters and almanac (general information about all satellites in the constellation) data. Because of the amount of information contained in the navigation message, and the relatively slow rate that it’s transmitted, it takes 12.5 minutes to send the whole message.
The final part of the GPS signal we need to look at is the carrier itself. As we’ve already said, each satellite transmits two frequencies—L1 at 1575.42 MHz and L2 at 1227.60 MHz. All three elements (the C/A code, Y code and navigation message) are modulated onto the L1 carrier, while only the Y code is modulated onto the L2 carrier. However, while civilian users can’t demodulate the Y code from the L2 carrier, we can make use of the L2 carrier wave itself, as we explain in ‘What are differential corrections or DGPS?‘.
The C/A code is modulated onto the carrier wave at 1.023 Mb/s. The Navigation message is modulated onto the carrier at 50 b/s.
This is one of the articles in our ‘What is GNSS?‘ series.