Autocorrelation of GPS Signals

 

Now, we will take a look at how a GPS receiver determines the distance to a satellite.  Each satellite generates codes that are generated by two 10-bit shift registers and are modulo-2 added to form the C/A code.  The first code is common to all satellites and is 1023 bits long.  The second one is different for each satellite and is formed by combining the contents of two bins in the second shift register and is also 1023 bits long.  These two Gold codes are modulo-2 added together and a unique 1023 bit C/A code is generated for each satellite.  These are commonly referred to as pseudorandom noise (PRN) sequence, and PRN number 5 is shown in Figure 1. 

 

Figure 1 PRN 5 code

 

The receivers use this code to compute the replica code offset in the following way.  Each receiver transmits a unique PRN code, and a receiver has in its memory what each of these codes looks like.  The receiver essentially shifts the code that it has in its memory until it matches up with the one it received from the satellite. This is done by using the autocorrelation function of the received signal and the time shifted replica in the receiver.  When the two codes match up, there will be a correlation spike, and from this the receiver knows the clock offset from the number of chips it shifted the replica code by.  Figure 2 shows two examples of the output of two autocorrelation processes.  The top graph is what happens when you take the autocorrelation function of two different PRN numbers.  The lower graph shows the clear correlation spike that was obtained by taking the autocorrelation function of PRN 5 shifted by 350 chips.  From the correlation spike it knows the time it took the code to travel from the satellite to the receiver, therefore it know the distance.  In reality, it is not that easy.  There are clock errors associated both with the satellite and the receiver, and there is the problem with noise. 

 

Figure 2 Two cases of Correlation PRN

 Top: PRN 5 Autocorrelated with PRN 2

Bottom: PRN 5 Autocorrelated with PRN 5 shifted 350 bits

 

Noise in the code lock loop contributes to false correlation spikes.  In the ideal case with no noise, when the correct code is correlated with a time-shifted version of itself, it will produce a correlation spike.  This will be sensed as a voltage spike in the electronics.  In the software for each receiver is a voltage level that distinguishes a correlation spike from a false positive from noise readings.  Everything above that level would be a correlation, and everything below it would be ignored. 

 

The next example adds some noise to the correlation process to better simulate a real world process.  The top graph of Figure 3 is the sum of 7 of the PRN codes while the middle one is the sum of 7 PRNs in addition to the noise.  Notice how the power level of all of the signals in the first graph is below the noise floor.  The last graph is the autocorrelation of PRN5 with the sum of the PRNs and the noise.  Notice how there is still a correlation peak at 350 chips, but there are some other peaks caused by the noise; most notably a little before 350 chips and right after 600 chips.  Depending on where the correlation threshold level is this might be a problem.  In this case the noise level is twenty times higher than the individual signal levels, and the correlation peak can still be determined from the graph.

 

Figure 3 Autocorrelation Example with Moderate Noise

Top:  Sum of 7 PRNs

Middle: Sum of 7 PRNs plus Noise

Bottom: Autocorrelation of the sum of 7 PRNs plus noise with PRN 5 shifted 350 chips

 

The last example in this section shows what sever jamming can do to the autocorrelation process.  The same three graphs are presented once again, but this time, the noise level is right at the tracking threshold of the receiver.  The threshold level for the jammer to signal ratio (J/S) is around 40.  You can see that the maximum correlation peak is no longer at 350 chips where it should be.  Instead, there are several correlation peaks at or above the real one.

 

Figure 4 Autocorrelation Example with Severe Noise

Top:  Sum of 7 PRNs

Middle: Sum of 7 PRNs plus Noise

Bottom: Autocorrelation of the sum of 7 PRNs plus noise with PRN 5 shifted 350 chips

Previous page

Table of contents

Next page