Having reached full operational capability on July 17, 1995 the GPS system had completed its original design goals. However, additional advances in technology and new demands on the existing system led to the effort to "modernize" the GPS system. Announcements from the Vice President and the White House in 1998 heralded the beginning of these changes, and in 2000, the U.S. Congress reaffirmed the effort, referred to as
GPS III. The project involves new ground stations and new satellites, with additional navigation signals for both civilian and military users. It aims to improve the accuracy and availability for all users. The implementation goal of 2013 was established, and contractors were offered incentives if they could complete it by 2011.
General features Modernized GPS civilian signals have two general improvements over their legacy counterparts: a dataless acquisition aid and forward error correction (FEC) coding of the NAV message. A dataless acquisition aid is an additional signal, called a pilot carrier in some cases, broadcast alongside the data signal. This dataless signal is designed to be easier to acquire than the data encoded and, upon successful acquisition, can be used to acquire the data signal. This technique improves acquisition of the GPS signal and boosts power levels at the correlator. The second advancement is to use forward error correction (FEC) coding on the NAV message itself. Due to the relatively slow transmission rate of NAV data (usually 50 bits per second), small interruptions can have potentially large impacts. Therefore, FEC on the NAV message is a significant improvement in overall signal robustness.
L2C One of the first announcements was the addition of a new civilian-use signal, to be transmitted on a frequency other than the L1 frequency used for the coarse/acquisition (C/A) signal. Ultimately, this became the L2C signal, so called because it is broadcast on the L2 frequency. Because it requires new hardware on board the satellite, it is only transmitted by the so-called Block IIR-M and later design satellites. The L2C signal is tasked with improving accuracy of navigation, providing an easy to track signal, and acting as a redundant signal in case of localized interference. L2C signals have been broadcast beginning in April 2014 on satellites capable of broadcasting it, but are still considered pre-operational. is: • Pre-operational signal with message set "healthy" • Broadcasting from 25 GPS satellites (as of July 3, 2023) • Began launching in 2005 with GPS Block IIR-M • Available on 24 GPS satellites with ground segment control capability by 2023 (as of Jan 2020)
CM and CL codes The civil-moderate and civil-long ranging codes are generated by a
modular LFSR which is reset periodically to a predetermined initial state. The period of the CM and CL is determined by this resetting and not by the natural period of the LFSR (as is the case with the C/A code). The initial states are designated in the interface specification and are different for different PRN numbers and for CM/CL. The feedback polynomial/mask is the same for CM and CL. The ranging codes are thus given by: :CM
i(
t) =
A(
Xi,
t mod 10 230) :CL
i(
t) =
A(
Yi,
t mod 767 250) where: :CM
i and CL
i are the ranging codes for PRN number
i and their arguments are the integer number of chips elapsed (starting at 0) since start/end of GPS week, or equivalently since the origin of the GPS time scale (see
§ Time). :
A(
x,
t) is the output of the LFSR when initialized with initial state
x after being clocked
t times. :
Xi and
Yi are the initial states for CM and CL respectively. for PRN number i. : mod is the remainder of division operation. :
t is the integer number of CM and CL chip periods since the origin of
GPS time or equivalently, since any GPS second (starting from 0). The initial states are described in the GPS interface specification as numbers expressed in octal following the convention that the LFSR state is interpreted as the binary representation of a number where the output bit is the least significant bit, and the bit where new bits are shifted in is the most significant bit. Using this convention, the LFSR shifts from most significant bit to least significant bit and when seen in big endian order, it shifts to the right. The states called
final state in the IS are obtained after cycles for CM and after cycles for LM (just before reset in both cases).
CNAV navigation message The CNAV data is an upgraded version of the original NAV navigation message. It contains higher precision representation and nominally more accurate data than the NAV data. The same type of information (time, status, ephemeris, and almanac) is still transmitted using the new CNAV format; however, instead of using a frame / subframe architecture, it uses a new
pseudo-packetized format made of 12-second 300-bit
messages analogous to LNAV frames. While LNAV frames have a fixed information content, CNAV messages may be of one of several defined types. The type of a frame determines its information content. Messages do not follow a fixed schedule regarding which message types will be used, allowing the Control Segment some versatility. However, for some message types there are lower bounds on how often they will be transmitted. In CNAV, at least 1 out of every 4 packets are ephemeris data and the same lower bound applies for clock data packets. The design allows for a wide variety of packet types to be transmitted. With a 32-satellite constellation, and the current requirements of what needs to be sent, less than 75% of the bandwidth is used. Only a small fraction of the available packet types have been defined; this enables the system to grow and incorporate advances without breaking compatibility. There are many important changes in the new CNAV message: • It uses
forward error correction (FEC) provided by a rate 1/2
convolutional code, so while the navigation message is 25-bit/s, a 50-bit/s signal is transmitted. • Messages carry a 24-bit
CRC, against which integrity can be checked. • The GPS week number is now represented as 13 bits, or 8192 weeks, and only repeats every 157.0 years, meaning the next return to zero won't occur until the year 2137. This is longer compared to the L1 NAV message's use of a 10-bit week number, which returns to zero every 19.6 years. • There is a packet that contains a GPS-to-GNSS time offset. This allows better interoperability with other global time-transfer systems, such as
Galileo and
GLONASS, both of which are supported. • The extra bandwidth enables the inclusion of a packet for differential correction, to be used in a similar manner to
satellite based augmentation systems and which can be used to correct the L1 NAV clock data. • Every packet contains an alert flag, to be set if the satellite data can not be trusted. This means users will know within 12 seconds if a satellite is no longer usable. Such rapid notification is important for safety-of-life applications, such as aviation. • Finally, the system is designed to support 63 satellites, compared with 32 in the L1 NAV message. CNAV messages begin and end at start/end of GPS week plus an integer multiple of 12 seconds. Specifically, the beginning of the first bit (with convolution encoding already applied) to contain information about a message matches the aforesaid synchronization. CNAV messages begin with an 8-bit preamble which is a fixed bit pattern and whose purpose is to enable the receiver to detect the beginning of a message.
Forward error correction code The
convolutional code used to encode CNAV is described by: :\begin{align} X_1(t) &= d(t) \oplus d(t - 2) \oplus d(t - 3) \oplus d(t - 5) \oplus d(t - 6) \\ X_2(t) &= d(t) \oplus d(t - 1) \oplus d(t - 2) \oplus d(t - 3) \oplus d(t - 6) \\ d'(t') &= \begin{cases} X_1\left(\frac{t'}{2}\right) & \text{if } t' \equiv 0 \pmod{2} \\ X_2\left(\frac{t'-1}{2}\right) & \text{if } t' \equiv 1 \pmod{2} \\ \end{cases} \end{align} where: :X_1 and X_2 are the unordered outputs of the convolutional encoder :d is the raw (non FEC encoded) navigation data, consisting of the simple concatenation of the 300-bit messages. :t is the integer number of
non FEC encoded navigation data bits elapsed since an arbitrary point in time (starting at 0). :d' is the FEC encoded navigation data. :t' is the integer number of
FEC encoded navigation data bits elapsed since the same epoch than t (likewise starting at 0). Since the FEC encoded bit stream runs at 2 times the rate than the non FEC encoded bit as already described, then t=\left\lfloor\tfrac{t'}{2}\right\rfloor. FEC encoding is performed independently of navigation message boundaries; this follows from the above equations.
L2C frequency information An immediate effect of having two civilian frequencies being transmitted is the civilian receivers can now directly measure the ionospheric error in the same way as dual frequency P(Y)-code receivers. However, users utilizing the L2C signal alone, can expect 65% more position uncertainty due to ionospheric error than with the L1 signal alone.
Military (M-code) A major component of the modernization process is a new military signal (on L1M and L2M). Called the Military code, or M-code, it was designed to further improve the anti-jamming and secure access of the military GPS signals. Very little has been published about this new, restricted code. It contains a PRN code of unknown length transmitted at 5.115 MHz. Unlike the P(Y)-code, the M-code is designed to be autonomous, meaning that a user can calculate their position using only the M-code signal. From the P(Y)-code's original design, users had to first lock onto the C/A code and then transfer the lock to the P(Y)-code. Later, direct-acquisition techniques were developed that allowed some users to operate autonomously with the P(Y)-code.
MNAV navigation message A little more is known about the new navigation message, which is called
MNAV. Similar to the new CNAV, this new MNAV is packeted instead of framed, allowing for very flexible data payloads. Also like CNAV it can utilize Forward Error Correction (FEC) and advanced error detection (such as a
CRC).
M-code frequency information The M-code is transmitted in the same L1 and L2 frequencies already in use by the previous military code, the P(Y)-code. The new signal is shaped to place most of its energy at the edges (away from the existing P(Y) and C/A carriers). It does not work at every satellite, and M-code was switched off for SVN62/PRN25 on 5 April 2011. In a major departure from previous GPS designs, the M-code is intended to be broadcast from a high-gain directional antenna, in addition to a full-Earth antenna. This directional antenna's signal, called a spot beam, is intended to be aimed at a specific region (several hundred kilometers in diameter) and increase the local signal strength by 20 dB, or approximately 100 times stronger. A side effect of having two antennas is that the GPS satellite will appear to be two GPS satellites occupying the same position to those inside the spot beam. While the whole Earth M-code signal is available on the Block IIR-M satellites, the spot beam antennas will not be deployed until the
Block III satellites are deployed, which began in December 2018. An interesting side effect of having each satellite transmit four separate signals is that the MNAV can potentially transmit four different data channels, offering increased data bandwidth. The modulation method is
binary offset carrier, using a 10.23 MHz subcarrier against the 5.115 MHz code. This signal will have an overall bandwidth of approximately 24 MHz, with significantly separated sideband lobes. The sidebands can be used to improve signal reception.
L5 The L5 signal provides a means of radionavigation secure and robust enough for life critical applications, such as aircraft precision approach guidance. The signal is broadcast in a frequency band protected by the
ITU for
aeronautical radionavigation services. It was first demonstrated from satellite
USA-203 (Block IIR-M), and is available on all satellites from
GPS IIF and
GPS III. L5 signals have been broadcast beginning in April 2014 on satellites that support it. • Pre-operational signal with message set "unhealthy" until sufficient monitoring capability established • Broadcasting from 18 GPS satellites • Scheduled to be available on 24 GPS satellites by approximately 2027 The L5 band provides additional robustness in the form of interference mitigation, the band being internationally protected, redundancy with existing bands, geostationary satellite augmentation, and ground-based augmentation. The added robustness of this band also benefits terrestrial applications. Two PRN ranging codes are transmitted on L5 in quadrature: the in-phase code (called
I5-code) and the
quadrature-phase code (called
Q5-code). Both codes are 10,230 chips long, transmitted at 10.23 Mchip/s (1 ms repetition period), and are generated identically (differing only in initial states). Then, I5 is modulated (by exclusive-or) with navigation data (called L5 CNAV) and a 10-bit
Neuman-Hofman code clocked at 1 kHz. Similarly, the Q5-code is then modulated but with only a 20-bit Neuman-Hofman code that is also clocked at 1 kHz. Compared to L1 C/A and L2, these are some of the changes in L5: • Improved signal structure for enhanced performance • Higher transmitted power than L1/L2 signal (~3 dB, or 2× as powerful) • Wider bandwidth provides a 10×
processing gain, provides sharper autocorrelation (in absolute terms, not relative to chip time duration) and requires a higher sampling rate at the receiver. • Longer spreading codes (10× longer than C/A) • Uses the Aeronautical Radionavigation Services band
I5 and Q5 codes The I5-code and Q5-code are generated using the same structure but with different parameters. These codes are the combination (by exclusive-or) of the output of 2 differing linear-feedback shift registers (LFSRs) which are selectively reset. :5
i(
t) =
U(
t) ⊕
Vi(
t) :
U(
t) =
XA((
t mod 10 230) mod 8 190) :
Vi(
t) =
XBi(
Xi,
t mod 10 230) where: :
i is an
ordered pair (
P,
n) where
P ∈ {I, Q} for in-phase and quadrature-phase, and
n a PRN number; both phases and a single PRN are required for the L5 signal from a single satellite. : 5
i is the ranging codes for
i; also denoted as I5
n and Q5
n. :
U and
Vi are intermediate codes, with
U not depending on phase
or PRN. : The output of two 13-stage LFSRs with clock state
t' is used: ::
XA(
x,
t') has feedback polynomial
x13 +
x12 +
x10 +
x9 + 1, and initial state 11111111111112. ::
XBi(
x,
t') has feedback polynomial
x13 +
x12 +
x8 +
x7 +
x6 +
x4 +
x3 +
x + 1, and initial state
Xi. :
Xi is the initial state specified for the phase and PRN number given by
i (designated in the IS). :
t is the integer number of chip periods since the origin of
GPS time or equivalently, since any GPS second (starting from 0).
A and
B are maximal length LFSRs. The modulo operations correspond to resets. Note that both are reset each millisecond (synchronized with
C/A code epochs). In addition, the extra modulo operation in the description of
A is due to the fact it is reset 1 cycle before its natural period (which is 8,191) so that the next repetition becomes offset by 1 cycle with respect to
B (otherwise, since both sequences would repeat, I5 and Q5 would repeat within any 1 ms period as well, degrading correlation characteristics).
L5 navigation message The L5 CNAV data includes SV ephemerides, system time, SV clock behavior data, status messages and time information, etc. The 50 bit/s data is coded in a rate 1/2 convolution coder. The resulting 100 symbols per second (sps) symbol stream is modulo-2 added to the I5-code only; the resultant bit-train is used to modulate the L5 in-phase (I5) carrier. This combined signal is called the L5 Data signal. The L5 quadrature-phase (Q5) carrier has no data and is called the L5 Pilot signal. The format used for L5 CNAV is very similar to that of L2 CNAV. One difference is that it uses 2 times the data rate. The bit fields within each message, message types, and forward error correction code algorithm are the same as those of
L2 CNAV. L5 CNAV messages begin and end at start/end of GPS week plus an integer multiple of 6 seconds (this applies to the beginning of the first bit to contain information about a message, as is the case for L2 CNAV).
L5 frequency information Broadcast on the L5 frequency (1176.45 MHz, 10.23 MHz × 115), which is an
aeronautical navigation band. The frequency was chosen so that the aviation community can manage interference to L5 more effectively than L2.
L1C L1C is a civilian-use signal, broadcast on the L1 frequency (1575.42 MHz), which contains the C/A signal used by all current GPS users. The L1C signals broadcast from GPS III and later satellites, the first of which was launched in December 2018. :\begin{align} \text{L1C}_i(t) &= \text{L1C}'(t \bmod{10\,230}) \\ \text{L1C}'_i(t') &= \begin{cases} W_i(t') & \text{ if } t' where: :\text{L1C}_i is the ranging code for PRN number and component i. :\text{L1C}'_i represents a period of \text{L1C}_i; it is introduced only to allow a more clear notation. To obtain a direct formula for \text{L1C} start from the right side of the formula for \text{L1C}' and replace all instances of t' with t \bmod{10\,230}. :t is the integer number of L1C chip periods (which is μs) since the origin of
GPS time or equivalently, since any GPS second (starting from 0). :i is an
ordered pair identifying a PRN number and a code (L1CP or L1CD) and is of the form (\text{P}, n) or (\text{D}, n) where n is the PRN number of the satellite, and \text{P, D} are
symbols (not variables) that indicate the L1CP code or L1CD code, respectively. :L is an intermediate code: a Legendre sequence whose
domain is the set of integers n for which 0 \le n \le 10\,222. :W_i is an intermediate code called Weil code, with the same domain as L. :S is a 7-bit long sequence defined for
0-based indexes 0 to 6. :p'_i is the
0-based insertion index of the sequence S into the ranging code (specific for PRN number and code i). It is defined in the Interface Specification (IS) as a 1-based index p, therefore p'_i = p_i-1. :w_i is the Weil index for PRN number and code i designated in the IS. :\operatorname{mod} is the remainder of division (or modulo) operation, which differs to the notation in statements of
modular congruence, also used in this article. According to the formula above and the GPS IS, the first w_i bits (equivalently, up to the insertion point of S) of \text{L1C}'_i and \text{L1C} are the first bits the corresponding Weil code; the next 7 bits are S; the remaining bits are the remaining bits of the Weil code. The IS asserts that 0 \le p'_i \le 10\,222. For clarity, the formula for \text{L1C}'_i does not account for the hypothetical case in which p'_i > 10\,222, which would cause the instance of S inserted into \text{L1C}'_i to wrap from index to 0.
L1C overlay code The overlay codes are 1,800 bits long and is transmitted at 100 bit/s, synchronized with the navigation message encoded in L1CD. For PRN numbers 1 to 63 they are the truncated outputs of maximal period LFSRs which vary in initial conditions and feedback polynomials. For PRN numbers 64 to 210 they are truncated Gold codes generated by combining 2 LFSR outputs (\text{S1}_i and \text{S2}_i, where i is the PRN number) whose initial state varies. \text{S1}_i has one of the 4 feedback polynomials used overall (among PRN numbers 64–210). \text{S2}_i has the same feedback polynomial for all PRN numbers in the range 64–210.
CNAV-2 navigation message The L1C navigation data (called CNAV-2) is broadcast in 1,800 bits long (including FEC) frames and is transmitted at 100 bit/s. The frames of L1C are analogous to the messages of L2C and L5. While
L2 CNAV and
L5 CNAV use a dedicated message type for ephemeris data, all CNAV-2 frames include that information. The common structure of all messages consists of 3 frames, as listed in the adjacent table. The content of subframe 3 varies according to its page number which is analogous to the type number of L2 CNAV and L5 CNAV messages. Pages are broadcast in an arbitrary order. The time of messages (not to be confused with clock correction parameters) is expressed in a different format than
the format of the previous civilian signals. Instead it consists of 3 components: • The
week number, with the same meaning as with the other civilian signals. Each message contains the week number modulo 8,192 or equivalently, the 13 least significant bits of the week number, allowing direct specification of any date within a cycling 157-year range. • An
interval time of week (ITOW): the integer number of 2 hour periods elapsed since the latest start/end of week. It has range 0 to 83 (inclusive), requiring 7 bits to encode. • A
time of interval (TOI): the integer number of 18 second periods elapsed since the period represented by the current ITOW to the beginning of the
next message. It has range 0 to 399 (inclusive) and requires 9 bits of data. TOI is the only content of subframe 1. The week number and ITOW are contained in subframe 2 along with other information. Subframe 1 is encoded by a modified
BCH code. Specifically, the 8 least significant bits are BCH encoded to generate 51 bits, then combined using
exclusive or with the most significant bit and finally the most significant bit is appended as the most significant bit of the previous result to obtain the final 52 bits. Subframes 2 and 3 are individually expanded with a 24-bit
CRC, then individually encoded using a
low-density parity-check code, and then
interleaved as a single unit using a block interleaver. == Overview of frequencies ==