Software-aided receiver techniques are often associated with military tactical radios. But such flexible technology also holds great promise for L1-ban civilian Global Positioning System (GPS) receivers. Of course, low-cost RF receiver circuitry is still needed with the software, and the model MAX2741 integrated circuit (IC) from MAXIM Integrated Products (Sunnyvale, CA) serves as a compact and inexpensive RF front end for the receiver.

Software techniques for GPS are paving the way for positioning capability in a wide range of communications and navigation systems.1,2 Thanks to the development of very-large-scale-integration (VLSI) technology, GPS receivers using powerful central processing units (CPUs) and digital signal processing (DSP) can receive and decode GPS signals in real time with the help of software. These software-based GPS receivers offer considerable flexibility—in modifying settings to accommodate new applications without hardware redesign, in using the same board design for different frequency plans, and in implementing future upgrades. As an example, this article will focus on challenges of integrating GPS receiver capabilities with code-division-multiple-access (CDMA) communications systems.

A complete GPS system includes the constellation of satellites, the ground-control station, and user equipment (receivers). The constellation has 24 satellites, each identified by a unique pseudorandom-noise (PRN) code. For civilian GPS applications, these satellites communicate over the L1 band located at 1.57542 GHz.

A GPS receiver must acquire signals from at least four satellites to establish a reliable position. Acquisition and tracking of the signals is very complex, because each one varies with time as well as receiver location. The RF front end of a software-based GPS receiver (Fig. 1) first amplifies a weak incoming signal with a low-noise amplifier (LNA), and then downconverts the signal to a lower intermediate frequency (IF) of approximately 4 MHz. Frequency downconversion is accomplished via superheterodyne techniques, by mixing the input RF signal with the local-oscillator (LO) signal, using one or two mixer stages of conversion. The resulting analog IF signal is converted to a digital IF signal by an analog-to-digital converter (ADC).

To significantly reduce the development time needed for GPS applications, the LNA, mixer, and ADC are available in an IC solution, model MAX2741.3 The two-stage receiver IC supports receiver sensitivity of –185 dBW for successful GPS operation indoors. The IC provides 80-dB cascaded gain with a cascaded noise figure of 4.7 dB. It has a 50dB IF automatic-gain-control (AGC) range and can tolerate CDMA out-of-band jammer levels as high as +13 dBm and –90-dBm in-band jammers at its input. It is supplied in a small 28-pin thin QFN package and runs from a 2.7-to- 3.0-V supply. It features an SPI control interface.

The MAX2741 L1-band GPS receiver IC amplifies an incident 1575.42MHz GPS signal that exceeds its sensitivity level, downconverts it to a first IF of 37.38 MHz, further amplifies it, and then downconverts to a second IF of 3.78 MHz. An internal 2- or 3-b ADC (selectable as 1-b sign, 1- or 2-b magnitude) samples the second IF and outputs a digitized signal to a baseband processor. The integrated frequency synthesizer enables flexible frequency planning, allowing the same GPS circuit board to implement any fixed reference frequency from 2 to 26 MHz, with a change of settings. The integrated reference oscillator enables operation with either a crystal or a temperature-compensated crystal oscillator (TCXO).

Traditional GPS receivers implement acquisition, tracking, and bit-synchronization operations in an application-specific integrated circuit (ASIC), but a software GPS receiver provides flexibility by implementing those blocks in software rather than hardware. By simplifying the hardware architecture, software makes the receiver smaller, cheaper, and more power-efficient. Software can be written in C/C++, MATLAB, and other languages, and ported into all operating systems (embedded OS, PC, Linux, and DSP platforms). Thus, software GPS receivers offer the greatest flexibility for mobile handsets, portable digital assistants (PDAs), and similar applications.

For civilian L1-band applications, the GPS system is actually a simple spread-spectrum communication system.4 Figure 2 shows the signal generation block for civilian applications. First, the 50-b/s navigation message is repeated 20 times to produce a 1000-b/s bit stream, then the repeated signal is spread by a unique Coarse/Acquisition (C/A) code with a length of 1023 chips (the rate at which the pseudorandom noise code is applied). The result is a baseband signal of 1.023 Mchips/s. As a result of this spread-spectrum approach, the total processing gain (G) of the GPS system can resolve a signal well below the thermal noise level.

Each satellite is assigned a unique C/A or Gold code.5 Because the Gold code exhibits excellent auto-correlation and cross-correlation properties, it is widely used in CDMA communication systems such as wideband CDMA (WCDMA), CDMA2000, and other variants. The baseband signal is processed with binary-phase-shift-keying (BPSK) modulation, then upconverted to the L1 band for transmission.

Because GPS is a CDMA communications system, the receiver must synchronize the pseudorandom-noise (PRN) code as a prerequisite to demodulating the data. Code synchronization is usually achieved in two steps: code acquisition for the coarse-code alignment and code-phase tracking for the fine alignment.6

More explicitly, a GPS receiver must first determine whether it has line-of-sight visibility to certain satellites. Each satellite is distinguished by a unique C/A code (Gold code). When the satellite is visible, acquisition determines the signal’s frequency and code phase, which in turn establishes the corresponding demodulation parameters. The received-signal frequency varies due to the Doppler effect,7 which causes the frequency to deviate from its nominal value by 5 to 10 kHz, depending on the speed of the satellite with respect to the receiver.

Page Title

The purpose of signal acquisition is to coarsely determine the carrier frequency and also the C/A code phase, which denotes the start of the C/A code in the data block. Common methods of acquisition include the serial search, which is ideal for hardware implementation due to its simple logic architecture, and frequency-domain parallel code-phase acquisition, whose low computation complexity makes it suitable for software implementation.

A block diagram of the serial-search mode (Fig. 3) shows that the received signal is first downconverted to inphase and quadrature (I and Q) components. A pair of I-Q correlators then correlate the I and Q baseband signals with the locally generated PN sequence. After integrating over the duration of one bit, the I-Q correlator outputs are summed to provide an output-decision variable.

Whenever the decision variable exceeds a certain threshold value, the system assumes the corresponding acquisition was successful, and proceeds to the tracking mode. Otherwise, the relative phase of the locally generated PN sequence and the oscillator frequency are adjusted to update the decision variable, and the above process is repeated. The simple logic structure of the serial-search method makes it feasible for implementation in an ASIC, but for software implementations it is not practical because the search space is huge. Assuming the system tolerates a 500 Hz carrier-frequency offset and the Doppler frequency is 10 kHz, the search space for a software implementation is roughly 2 10000/500 1023 = 40,920. Obviously, a serial-search acquisition would be difficult in software.

Another acquisition method, called frequency-domain parallel code-phase acquisition, exhibits low complexity in a software implementation (Fig. 4). The basic philosophy is to combine the Doppler-frequency and code-phase searches into one, which, after an FFT transform of the PRNcode, reflects all code-phase information into the frequency domain. We then need only to search the space over the Doppler-frequency offset, there-by implementing a fast and effective software search.

First, the incoming signal is multiplied with the locally generated sine and cosine carrier waves—the in-phase (I) and quadrature (Q) signal components, respectively. The I and Q components are then combined as a complex input to a Fast Fourier Transform (FFT) block. The result of this FFT is multiplied with the conjugate of an FFT transform of the PRN code (the PRN generator generates a code with zero code phase). In practice, the FFT operation and generation of PRN code can be tabulated to reduce computation complexity.

Finally, the product of the incoming signal and local code, which represents the correction between the incoming and carrier frequencies, is applied to an inverse Fourier transform whose squared output feeds back to the decision logic. The FFT-based frequency domain has proven to be a low consumer of computation. For the example mentioned earlier, the complexity of acquisition is roughly 20000/500 = 40 FFT operations. Figure 5 illustrates an FFT-based parallel-code acquisition for the cases of satellite visible (a) and invisible (b).

Thus, the serial-search method has the simple logic and control architecture necessary for a convenient ASIC implementation. The huge search space, however, imposes complexity on the software algorithm. The serial-search method is therefore not a good choice for software GPS receivers. In contrast, the low complexity of the parallel-code acquisition method makes it ideal for the software implementation. Its logic architecture, however, is far more complex than that of the serial-search method, making it difficult to implement in an ASIC.

The acquisition process establishes a coarse alignment of the GPS signal’s frequency and code phase parameters. The purpose of tracking, therefore, is to refine this alignment so the system can demodulate the data with exact code phase and frequency information. Tracking includes code-phase tracking and carrier-frequency tracking. Code tracking is accomplished with the delay locked loop (DLL) shown in Fig. 6.

The DLL circuit multiplies the incoming signal by three local replicas of the PRN code (positioned in time at ±0.5 chip), which represent early, prompt, and late arrivals with respect to the incoming signal. After integration, each of these signals represents a correlation between the incoming signal and a local replica. The one with the highest correlation value is then selected and retained (Fig. 7). Carrier-frequency tracking is carried out by a phase-locked loop (PLL) or Costas loop.7 The purpose of carrier tracking is to tune the locally generated frequency to the exact frequency of the incoming signal.

After acquisition and tracking have established the initial synchronization, it becomes possible to decode the navigation bits. Data demodulation begins by despreading the 1.023-Mchip/s input signal to a 1000-b/s bit stream. Bit synchronization is then invoked to recover the 50-b/s information from the 1000b/s stream.

For bit synchronization, it is necessary to identify the beginning of a bit in time. That is accomplished by finding the zero-crossing edge (at 0 V), which indicates the beginning of a bit. When that edge is known, it is possible to partition the 1000-b/s input stream at 20-ms intervals, knowing that the duration of a navigation data message (50 b) is 20 ms (Fig. 8). Finally, the bit samples in a 20-ms interval are summed and averaged to decode the navigation data.

Of course, every solution has benefits and drawbacks. Although they provide a great deal of flexibility, software-driven GPS receivers also require a high-performance processor and moderate amounts of memory.
MAXIM Integrated Products, Inc., 120 San Gabriel Dr., Sunnyvale, CA 94086; (408) 7377600, FAX: (408) 737-7194,


  1. E. Kaplan, Understanding GPS Principles and Applications, Artech House Publishers, Norwood, MA, 1996.
  2. T.J. Bao-Yen, Fundamentals of Global Positioning System Receivers, C A Software Approach, Wiley, New York, 2000.
  3. Data sheet for the MAX2741, MAXIM Integrated Products, Sunnyvale, CA, Internet:
  4. Andy Viterbi, Principles of Spread Spectrum Communications, Addison-Wesley, Cambridge, MA, 1995.
  5. R. Gold, “Co-optimal binary sequences for spread spectrum multiplexing,” IEEE Transactions on Information Theory, Vol. IT-13, pp. 619–621, October 1967.
  6. R.E. Ziemer and R. L. Peterson, Digital Communications and Spread Spectrum Systems, Macmillan, New York, 1985.
  7. J.G. Proakis, Digital Communications, 3rd edition, McGraw-Hill, New York, 1995.