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 Error! No text of specified style in document..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. 1 0.5 0 -0.5 -1 0 100 200 300 400 500 600 700 800 900 1000 0 100 200 300 400 500 Chips 600 700 800 900 1000 1 0.5 0 -0.5 -1 Figure 2 Two cases of Correlation PRN Top: PRN 5 correlated with PRN 2 Bottom: PRN 5 correlated 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 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 It does not matter what kind of signal is causing the interference, the receiver just takes it as noise. In the next section, a pseudolite is transmitting on a PRN that is unknown to the receiver. In that case, the receiver acts as you would expect with in band interference.