230 likes | 429 Views
Implementation of a Software-based GPS Receiver. Anthony J. Corbin Dr. In Soo Ahn Friday, June 6, 2014. Overview. Progress Flowcharts Acquisition Tracking Position Calculation Software Organization Changes to Project Objectives Results DLL/PLL Tracking Position Updated Schedule.
E N D
Implementation of a Software-based GPS Receiver Anthony J. Corbin Dr. In Soo Ahn Friday, June 6, 2014
Overview • Progress • Flowcharts • Acquisition • Tracking • Position Calculation • Software Organization • Changes to Project Objectives • Results • DLL/PLL Tracking • Position • Updated Schedule
Progress • MATLAB GPS software [1] has been ported to C++ • This includes: • Coordinate conversion • Tracking loop • Acquisition algorithms • DSP design approach was abandoned due to technical issues which will be discussed later. • C++ code can accurately find a position from stored sample data.
Coarse Acquisition • Coarse acquisition searches around the intermediate frequency in the range +/- 10 KHz with a step of 500 Hz • Frequency Domain Correlation
Fine Acquisition • Uses the frequency estimate from Coarse Acquisition to obtain a better estimate • The overall functionality is very similar to Coarse Acquisition
Changes to Project Objectives • Finding the satellite positions requires an accurate time…requiring collection of at least subframes 1-3 of the ephemeris data • The equation below shows the number of multiplications per second required to track one satellite. This does not include C/A code generation, carrier demodulation, or the overhead involved with sampling. • The DSP considered is clocked at 225 MHz which is simply not fast enough.
USB GPS Dongle • USB 2.0 Interface • Simple software interface
C/A Code Tracking • The graphs to the right show the code error output from the delay-locked loop. • The parameters have been selected in such a way that the loop converges very quickly.
Carrier Tracking • Carrier error is shown on the right with respect. • In this example, the frequency of the carrier appears to be drifting further below the intermediate frequency. • This is an illustration of the Doppler Effect.
Navigation Data • The figures to the right show resolved 50 Hz navigation data. • The top graph shows 32s of data, while the bottom graph shows 3s.
Position Results 51.81 m
Position Results 104.4 m
Current Display • The display currently uses a console window. • A GUI could be written in any language.
Speed • Currently the C++ code requires under a minute (per satellite) to read a full 36 s of satellite data. • Compare this with the Matlab code which takes 6 minutes per satellite.
Intel Threading Building Blocks • Intel’s TBB is a library for creating threaded programs • Platform independent • Relatively easy to use
Real-time Functionality • Taking a direct approach to implementing real-time functionality appears to be extremely difficult (possibly impossible) given current hardware limitations. • However, a possibility exists, which may feasibly yield results.
References • [1] Kai Borre, Dennis M. Akos, Nicolaj Bertelsen, Peter Rinder, and Soren Holdt Jensent, Software-Defined GPS and Galileo Receiver : A Single-Frequency Approach. Birkhauser: Boston, 2007, pp. 29, 83, 105. • [2] SiGe, SE4110L-EK1 Evaluation Board User Guide. • [3] SiGe, SE4110L Datasheet.