Scintillations are caused by ionospheric irregularities and affect the amplitude, phase, dispersion, and related parameters of GPS signals. Both L1 and L2 are affected in a somewhat uncorrelated fashion. Adequate understanding of the effects that ionospheric scintillation has on GPS signals is essential in order to produce a GPS receiver that is immune to the degradation of signal caused by these scintillation-related effects. Access to the internal workings of commercial GPS receivers is not provided to users. However, in order to understand, control, and mitigate scintillation effects, it is necessary to have access to tracking loops and associated components such as local oscillator. The software GPS receiver developed by the Center for Remote Sensing, Inc. allows the user to access its internal workings; hence facilitating advanced development of GPS receivers under different conditions. In this paper we present the results of analysis of GPS signals under scintillating conditions. Raw signals under conditions of ionospheric scintillation at Ascension Island have been processed using our software GPS receiver in order to derive the scintillation parameters. The receiver has been configured to provide stable operation during scintillation. We describe the receiver architecture, particularly the portion involving the tracking filters and related components, and demonstrate their performances under scintillating conditions. The software-based approach used by us allows receiver implementations which are suitable for ionospheric monitoring as well as for reliable operation during scintillating conditions. The improved architecture may be used for several other applications.
 Ionospheric scintillations produce amplitude and phase fluctuations even at GPS frequencies. The scintillations are caused by naturally occurring ionospheric plasma density irregularities. The resulting amplitude and phase distortions of the wave front may cause degraded performance in GPS receivers. The decrease in amplitude and the stress due to phase fluctuations may degrade the performance of various tracking loops. Furthermore, because both L1 and L2 frequencies are affected in a somewhat uncorrelated fashion, the performance of L1-assisted tracking of L2 may be affected. Adequate understanding of the scintillation-related effects on GPS signals is essential in order to develop GPS receivers that are immune to the effects.
 The Center for Remote Sensing has developed an open architecture dual-frequency software GPS receiver [Jovancevic et al., 2001]. It is a highly modular design suitable for development and testing of various receiver concepts. Any receiver configuration is implemented by arranging existing modules through a simple point-and-click graphical user interface. The software architecture is particularly suitable for scientific applications that require the addition of specialized processing modules. These new modules can be built and easily integrated using standard C++ coding. The hardware portion of the receiver consists of the front end that is responsible for downconverting and digitizing the received signals. These signals can be processed in real time or stored for postprocessing. A hardware correlator is implemented for real-time processing and integrated with the software portion of the receiver.
 Ionospheric measurement using off-the-shelf GPS receivers is often difficult or impossible owing to the lack of access to the necessary signals such as amplitude and phase of the individual (satellite) GPS signals. Commercial receivers do not provide access to the inner workings of the correlator, tracking loops, local oscillator (LO), or navigation filters. The intermediate products such as code phase, carrier phase, and amplitude for individual satellite signals are essential for adequate processing of ionospheric information. Access to these intermediate products and the controllability of the different components permit development of suitable architecture in order to mitigate scintillation-related effects.
 The open architecture software GPS receiver represents a unique platform because of its openness and easy access to the inner workings of the system. Adding new modules or modifying existing architectures is quick and simple, making the software receiver suitable for ionospheric measurement.
 This paper is organized into four parts. In the first part, we discuss the GPS receiver structure used for ionospheric measurements. The second part defines the procedure for evaluating amplitude and phase scintillation. The third part presents results obtained analyzing the data collected over Ascension Island during March 2001. Finally, the fourth part discusses the receiver structure necessary for reliable operation under scintillating conditions.
2. Receiver Structure
 A block diagram of a GPS receiver is shown in Figure 1. The analog equipment consists of an antenna and an RF front end, responsible for reception, filtering, frequency downconversion, and A/D conversion of incoming satellite signals [Kaplan, 1996]. Two digital signals are produced, one for each frequency: L1 and L2. A number of digital receiver channels (usually not more than 12) each track one of the visible satellites and collect navigation data transmitted by them. Finally, these data along with timing information are passed to the navigation block, which extracts almanac and ephemeris information from navigation data and performs a position calculation based on pseudorange measurements from the satellites.
 For real-time GPS acquisition and tracking, preprocessing of the sampled GPS signal is required. The preprocessing may be performed using various correlators or by block processing using fast Fourier transform (FFT). Both field programmable gate array (FPGA) and digital signal processor (DSP) units can be used as preprocessors. The preprocessor software is downloaded from the host processor (i.e., a personal computer). The hardware correlators were implemented using Xilinx FPGA. The software correlator is translated from C++ to very high speed integrated circuit hardware description language (VHDL) for programming of the FPGA correlator. The FPGA correlator accepts signed data from the A/D converter and processes the data for early, prompt, and late code phase tracking. The results are accumulated and input to the software portion of the receiver at a reduced data rate. The correlators also perform the time measurement for pseudorange calculations. Both C/A and P codes are generated in the correlator preprocessor. It also performs carrier mixing and in-phase (I) and quadrature (Q) signal accumulation. It may be programmed for beam forming, beam steering, and other preprocessing activities for interference rejection and multipath measurements and mitigation. Similar performance may also be achieved using DSP preprocessors. A DSP preprocessor for block processing has been developed, and a DSP-based tracking system is being planned.
 The digital processing is responsible for acquiring and tracking the GPS satellites. First, the algorithm performs a search for satellites in view, or if valid almanac information and approximate receiver position and time are available, estimates which satellites are visible and attempts to acquire them. After acquisition, the code phase and Doppler shift of each acquired satellite are used to initialize the tracking loops. These loops (carrier and code loops) are updated continuously so that satellite and receiver dynamics can be tracked. Also, the receiver must be synchronized with the 50 bps bit stream transmitted from each satellite in order to obtain navigation data defining the satellite orbits and other relevant parameters. In addition, the receiver must be able to determine satellite pseudoranges and pseudorange rates correctly (timing information). The pseudoranges and pseudorange rates are collected and passed to the navigation block.
 The navigation block calculates position when a sufficient number of satellites are tracked. It updates the receiver's state vector using Kalman filtering. It can also aid acquisition by estimating Doppler shift and satellite positions when a new satellite is being acquired or during reacquisition.
 A more detailed block diagram of GPS signal tracking structure is shown in Figure 2. Here the real input signal is first multiplied by sine and cosine to generate I and Q signals, respectively. Next, early, prompt, and late code generator outputs are multiplied by the I and Q signals and integrated. The integrator outputs are passed to carrier and code discriminators and from there to carrier and code loop filters. Numerically controlled oscillators (NCOs) are used to track carrier and code phases. Carrier and code NCO biases are at the nominal IF frequency and code chipping rate respectively. Carrier aiding is used to help the code tracking loops track the signal dynamics by scaling the carrier Doppler shift to the appropriate code rate. The carrier tracking loop can be a frequency-locked loop (FLL), phase-locked loop (PLL), or FLL-assisted PLL with loop bandwidth controlled by the user.
 The software GPS receiver is implemented using the IMPULSETM development software built at the Center for Remote Sensing. The software is written in C++ and provides a tool to design, simulate, test, and implement various systems by using building blocks. Each block has inputs and outputs with precisely defined transfer functions between them. Inputs and outputs are connected through channels, which can be attached to a plotting module to represent channel data graphically. There are various plotting modules implemented, such as time plot, sliding plot, I-Q plot, etc. In addition, there is a probe module that displays channel data numerically. Each module has additional parameters that are modified before or during the receiver operation.
 The software has a variety of general purpose modules. These modules include clocks, multiplexers, oscillators, amplifiers, multipliers, adders, various math functions, digital filters, integrators, file input and output modules, and visualization modules. The modules may be arranged and connected interactively with the graphical user interface. Thus any configuration of the modules can be realized through simple point-and-click operations. In addition to these modules, GPS-specific modules are used for receiver development or for GPS signal generation under various scenarios.
 Ionospheric measurement requires processing of the amplitude and phase of the GPS signal (see http://www.navcen.uscg.gov/pubs/gps/icd200/icd200cw1234.pdf). The amplitude of the despread GPS signal is measured using prompt I and Q correlator outputs. These outputs are processed to eliminate as much noise influence on the amplitude as possible since only the amplitude fluctuations owing to scintillation are of interest. The phase of the GPS signal is obtained by integrating carrier tracking loop output. A tradeoff between eliminating as much phase noise as possible and simultaneously measuring the phase scintillation due to the ionosphere must be carefully considered. A wider carrier tracking loop bandwidth will measure phase scintillation with higher frequency; however, it will also permit more noise to corrupt the measurement. Alternately, narrower loop bandwidth filters more noise but restricts phase measurement to lower frequencies. In addition to this, very low frequency processes, such as satellite and receiver oscillator drifts with satellite Doppler shift, must be removed prior to final processing by applying a high-pass filter with very low cutoff frequency (typically 0.1 Hz or lower). The low-frequency cutoff is important for ionospheric physics because, unlike amplitude scintillation that is Fresnel filtered, the low-frequency phase fluctuations contain important information about the structure of the irregularities. Ideally, one should attempt to maintain the information down to DC. Because a filter is used, it is prudent to specify the cutoff frequency of or associated with every parameter derived from phase measurement.
 Selection of carrier tracking loop type is another important issue. A pure FLL is not useful in producing the phase measurement necessary for ionospheric scintillation monitoring because this type of loop never actually achieves a phase lock. The reason for this is that FLL tracks the carrier frequency and not the carrier phase. This is illustrated in Figure 3 for a GPS signal that is amplitude scintillating. The blue curve represents the detrended carrier phase measurement using FLL. The red curve represents the detrended phase measurement using PLL. The PLL maintains the phase lock of the signal while minimizing the difference between the phase of the incoming signal and locally generated carrier replica. (The nonzero difference shown in Figure 3 is due to signal noise.) FLL never achieves phase lock with the incoming signal. This is reflected in the fluctuating phase difference.
 Even though a pure PLL provides a phase lock and therefore represents the best loop for carrier phase measurement, this type of loop is not sufficiently robust in high phase scintillation periods during which a loop may lose lock. As a compromise, an FLL-assisted PLL loop is used to obtain the robust performance and a quality phase measurement. Following a deep amplitude scintillation fade, the FLL is particularly important in order to recover the signal quickly. PLL alone will often completely lose the signal after these brief fades. This is illustrated in Figures 4–6 using the same 10 s data sample with a different receiver tracking loop configuration. The signal corresponds to satellite pseudo-random noise (PRN) 24 with sample taken on Ascension Island on 18 March 2001 at about 2300 LT. Figure 4 shows the performance of FLL carrier tracking loop, and prompt I and Q signals (taken from the correlator output at 1KHz rate), represented by blue and red traces respectively, never actually attain phase lock (in which case the Q signal should remain approximately zero). However, at approximately 35 s, there is a brief deep amplitude fade, after which the loop quickly pulls the signal back into the frequency lock. Figure 5 shows the performance of PLL tracking loop. Here the signal is in a phase lock until the deep fade occurs, after which the signal loses both phase and frequency lock. Finally, Figure 6 shows the performance of FLL-assisted PLL loop that achieves the phase lock and quickly recovers after the deep fade. FLL bandwidth used in the above examples was 1 Hz, while PLL bandwidth was 25 Hz.
3. Scintillation Measurement
 Amplitude scintillation is measured by calculating the index S4, which is derived from signal intensity of GPS signals received from satellites. Signal intensity is actually receiver signal power, measured so that its value does not fluctuate with noise power. Signal intensity (SI) is the difference between narrow band power (NBP) and wide band power (WBP) measured over the 20 ms interval [Fremouw et al., 1978]
where Ii and Qi are the 1 KHz in-phase and quadrature samples. This eliminates most of the noise influence on the signal intensity. S4 index is calculated using
where E is the expected value (or time average) over the user-specified integration (SI) period.
 Phase scintillation is measured by calculating the standard deviation σϕ of carrier phase from GPS signals received from satellites. The carrier phase measurement is filtered using a high-pass filter with cutoff frequency of 0.1 Hz to remove low-frequency effects such as Doppler shift and oscillator drift. The standard deviation is also calculated over the user-specified integration period.
4. Measurement Results
 The results presented are generated using the data recorded over Ascension Island on 18 March 2001 at approximately 2300 LT. The GPS signal on L1 was downconverted to 4.309 MHz and sampled at 2 MHz using 1 bit A/D converter. The data sample contained 8 satellites and was approximately 2700 s long. The receiver was configured to use FLL-assisted PLL as a carrier tracking loop with FLL loop bandwidth of 1 Hz and PLL loop bandwidth of 25 Hz. Figure 7 shows the receiver location and the satellite ground tracks.
Figures 8–11 show the calculated S4 index and standard deviation w for four satellites (PRNs 8, 27, 24, and 7). The integration period was 60 s. Note that the vertical scaling on S4 index plot in Figure 10 is twice that on the remaining figures. The phase measurement used to calculate σϕ was filtered using the high-pass filter with cutoff frequency of 0.1 Hz to remove Doppler shift and oscillator drift. The spikes inσϕ plots represent brief loss of the phase lock. All satellites depicted show a great deal of amplitude scintillation except for satellite PRN 7. Apparently the scintillating region was located in the Northern Hemisphere, where satellites 8, 27, and 24 were currently located.
5. Ionospheric Scintillation Mitigation
 To obtain the best carrier phase measurement used for kinematic processing, the receiver should employ the pure PLL loop for carrier tracking. The bandwidth of this loop should be small in order minimize noise. The drawback of this architecture is that it is not robust in the presence of ionospheric scintillation, during which the receiver may completely lose lock on the signal. FLL-assisted PLL, properly designed, will improve receiver robustness at the cost of introducing additional noise into the phase measurement. To obtain a better solution to this problem, an adaptive carrier tracking loop may be used. The loop normally operates using only the PLL portion with a tight bandwidth. When phase and amplitude scintillation are detected, loop bandwidth is adaptively increased to accommodate new signal conditions. When a deep amplitude fade occurs, there is no signal to track, which causes PLL alone to lose lock. At this point the FLL portion of the loop is activated in order to facilitate recovering the signal after it reemerges from the fade. The adaptive FLL-assisted PLL receiver described above is currently under development at CRS.
 We have developed an open architecture software GPS receiver that can be used for a variety of applications, particularly for ionospheric measurement. A structure of the receiver was presented with comparison of three carrier tracking loops and their performances when used for ionospheric phase measurement. Performances of receivers under scintillating conditions and the ionospheric parameters derived therefrom are dependent on receiver architecture. Software receivers allow a standardized architecture for analysis and intercomparison of ionospheric and related events. They also permit superior architectures to be built for understanding and mitigating these effects in operational systems. We have used the receiver under scintillating conditions and demonstrated its ability to measure ionospheric scintillation parameters for the data collected over Ascension Island. The receiver tracking loops were configured to optimize measurement accuracy while providing robust performance.
 The authors wish to thank Bob McCoy, Edward Kennedy, and Doug Harry of the Office of Naval Research for their support. Partial support for this work came from the HAARP program (ONR N00014-00C-0549).