C/A Code
In this section, the spreading sequences used in GPS are described. We restrict ourselves to the C/A code sequences, as we deal only with L1 signals in this topic. The spreading sequences used as C/A codes in GPS belong to a unique family of sequences. They are often referred to as Gold codes, as Robert Gold described them in 1967; see Gold (1967). They are also referred to as pseudo-random noise sequences, or simply PRN sequences, because of their characteristics.
Gold Sequence
The pseudorandom noise (PRN) codes transmitted by the GPS satellites are deterministic sequences with noise like properties. Each C/A code is generated using a tapped linear feedback shift register (LFSR); Section 14.1. It generates a maximal-length sequence of lengthelements.
A Gold code is the sum of two maximum-length sequences. The GPS C/A code uses n = 10. The sequence p(t) repeats every ms so the chip length iswhich corresponds to a metric length of 300 m when propagating through vacuum or air. For further details on the generation of the Gold codes, we refer to Section 2.3.3. The ACF for this C/A code is
FIGURE 2.3. The effect of BPSK modulation of the L1 carrier wave with the C/A code and the navigation data for one satellite. The resulting L1 signal is the product of G, N , and the carrier signals. The plot contains the first 25 chips of the Gold code for PRN 1.
The sequence would have 512 ones and 511 zeros, and these would appear to be distributed at random. Yet the string of chips so generated is entirely deterministic. The sequence is pseudorandom, not random. Outside the correlation interval the ACF of p(t) is -1 /N. For the C/A code the constant term is – 1/N = -1 /1023, which is shown in Figure 2.4.
The ACF can be expressed as the sum of this constant term and an infinite series of the triangle functiondefined in (1.15). This infinite series is obtained by the convolution ofwith an infinite series of impulse functions that are phase-shifted by
where * denotes convolution. The power (line) spectrum of this periodic PRN sequence is derived from the Fourier transform of (2.4):
for
Gold Sequence Generation—Overview
The generation of the Gold codes is sketched in Figure 2.5. The C/A code generator contains two shift registers known as G1 and G2. These shift registers each have 10 cells generating sequences of length 1023.
FIGURE 2.4. Stem plot of an ACF for a Gold sequence. The left stem has correlation value all other correlation values are Only the first 50 lags out of 1023 are shown.
The two resulting 1023 chip-long sequences are modulo-2 added to generate a 1023 chip-long C/A code, only if the polynomial is able to generate code of maximum length.
Every 1023rd period, the shift registers are reset with all ones, making the code start over. The G1 register always has a feedback configuration with the polynomial
meaning that state 3 and state 10 are fed back to the input. In the same way, the register has the polynomial
To make different C/A codes for the satellites, the output of the two shift registers are combined in a very special manner. The G1 register always supplies its output, but the G2 register supplies two of its states to a modulo-2 adder to generate its output. The selection of states for the modulo-2 adder is called the phase selection. Table 2.3 shows the combination of the phase selections for each C/A code. It also shows the first 10 chips of each code in octal representation.
As the generation of the C/A codes are of immense importance, we outline in detail the principle of operation of the C/A code generator in the next section.
Gold Sequence Generation—Details
A shift register is a set of one bit storage or memory cells. When a clock pulse is applied to the register, the content of each cell shifts one bit to the right. The content of the last cell is "read out" as output. The special properties of such shift registers depend on how information is "read in" to cell 1.
TABLE 2.3. C/A code phase assignment. The selection of different states for the code phase generates the different C/A codes for the GPS satellites.
FIGURE 2.5. C/A code generator. The code generator contains two shift registers,and The output fromdepends on the phase selector. The different configurations of the phase selector makes the different C/A codes.
For a tapped linear feedback shift register, the input to cell 1 is determined by the state of the other cells. For example, the binary sum from cells 3 and 10 in a 10-cell register could be the input. If cells 3 and 10 have different states (one is 1 and the other 0), a 1 will be read into cell 1 on the next clock pulse. If cells 3 and 10 have the same state, 0 will be read into cell 1. If we start with 1 in every cell, 12 clock pulses later the contents will be 0010001110. The next clock pulse will take the 1 in cell 3 and the 0 in cell 10 and place their sum (1) in cell 1. Meanwhile, all other bits have shifted cell to the right, and the 0 in cell 10 becomes the next bit in the output. A shorthand way of denoting this particular design is by the modulo-2 polynomialSuch a polynomial representation is particularly
useful because ifthen the coefficientsform the binary output sequence.
The C/A code is generated by two 10-bit LFSRs of maximal length One is theregister already described and is referred to asThe other hasCells 2, 3, 6, 8, 9, and 10 are tapped and binary-added to get the new input to cell 1. In this case, the output comes not from cell 10 but from a second set of taps. Various pairs of these second taps are binary-added. The different pairs yield the same sequence with different delays or shifts (as given by the "shift and add" or "cycle and add" property: a chip-by-chip sum of a maximal-length register sequence and any shift of itself is the same sequence except for a shift). The delayed version of the G2 sequence is binary-added to the output of G1. That becomes the C/A code. The G1 and G2 shift registers are set to the all-ones state in synchronism with the epoch of the X1 code used in the generation of the P code (see ahead). The various alternative pairs of G2 taps (delays) are used to generate the complete set of 36 unique PRN C/A codes. These are Gold codes, Gold (1967), Dixon (1984), and any two have a very low cross correlation (are nearly orthogonal).
There are actually 37 PRN C/A codes, but two of them (34 and 37) are identical. A subset of the first 32 codes are assigned to (nominally 24) satellites and recycled when old satellites die and new satellites are launched. Codes 33 through 37 are reserved for other uses, including ground transmitters.
The P code generation follows the same principles as the C/A code, except that 4 shift registers with 12 cells are used. Two registers are combined to produce the Xi code, which is 15,345,000 chips long and repeats every 1.5 seconds; and two registers are combined to produce the X2 code, which is 15,345,037 chips long. The X 1 and X2 codes can be combined with 37 different delays on the X2 code to produce 37 different one-week segments of the P code. Each of the first 32 segments is associated with a different satellite.