Navigation using location and time information from the Global Positioning System (GPS) is very popular these days in military, civil and commercial applications. The GPS consists of a set of orbital satellites. Each satellite has a unique space vehicle number (SVN) and unique pseudo-random noise (PRN) sequences for satellite identification and separation

[1]. The GPS uses different frequency bands for different purposes but the most popular bands are L1, centered at 1575.42 MHz, and L2, centered at 1227.60 MHz. The L1 and L2 signals use code division multiple access (CDMA) to spread spectrum modulation of low bitrate navigation data with high bitrate PRN sequences.

Coarse/Acquisition (C/A) code generation

The GPS L1 band signal consists of coarse/acquisition (C/A) code and 50 bit-per-second (bps) navigation data modulated by a periodic 1023-chip C/A code at a chip rate of 1.023 megachip-per-second (Mcps), as shown in Figure 1, resulting in the main spectrum lobe having a 2.046 MHz null-to-null bandwidth. The C/A code is 1 ms long and repeats every 1 ms.

Figure 1: Construction of L1 C/A signal

PRN sequences used in the C/A, known as Gold codes, are generated from product of two 1023-bit PRN sequences G1 = 1 + x+x10  and G2 = 1 + x+ x+ x6 + x+ x+ x10 with a maximum length of (P = 210-1 = 1023 chips) [2]. In System Generator, these can be implemented as 10-stage linear feedback shift registers (LFSR) clocked at 1.023 MHz, as shown in Figure 2. The satellite’s SVN is directly mapped to a C/A code phase, which is defined by selecting tap positions of the G2 generator. The G2 generator has total of 37 possible unique output taps but only 32 are used to determine the C/A code phase [3]. For the sake of simplification in this blog post, only the first four SVN/code phases are implemented in Figure 2. The same C/A code generator is used in both the GPS transmitter and receiver.

The reason why Gold codes have been used for C/A code is because of their good correlation properties: high autocorrelation peak, low cross-correlation peak and near orthogonality (cross-correlation is not zero but small compared to autocorrelation peak value of 1023), as shown in Figure 3. These properties enable the GPS receiver to easily identify the satellite.

Figure 2:  L1 C/A code generator

Figure 3: L1 C/A code correlation properties

Navigation data generation

The navigation data is sent after the C/A code in one GPS super frame. Details of GPS super frames can be found in Chapter 5 in [2]. The navigation data rate is 50 bps, which is much slower than the C/A code rate of 1.023 Mcps. This leads to one data bit being spread 20 times for one C/A code (20 ms long) by performing modulo-2 addition or XOR between the navigation data and the C/A codes. The same technique is used at the receiver to de-spread the CDMA spread spectrum navigation data prior to further signal processing.


This blog post briefly described how the C/A code and navigation data is generated for the L1 GPS signal. A simple C/A code generator for the first four satellites, implemented using a model-based approach in System Generator, was also shown. We’ll revisit this model in upcoming blog posts, so stay tuned.



Wikipedia. (2014) List of GPS satellites. [Online]. http:/


James Bao-Yen Tsui, Fundamentals of Global Positioning System Receviers: A Software Approach.: John Wiley & Sons Inc., 2000.


Xilinx Inc. (2012) System Generator User Guide. [Online].