VIEWS: 42 PAGES: 23 POSTED ON: 6/12/2012
Implementation of a Software- based GPS Receiver Anthony J. Corbin Dr. In Soo Ahn Monday, June 11, 2012 Overview Progress Flowcharts Acquisition Tracking Position Calculation Software Organization Changes to Project Objectives Results DLL/PLL Tracking Position Updated Schedule Progress MATLAB GPS software  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 L1 C/A Code FFT conj Generator IFFT SNR > Threshold? No +/- 10 KHz Yes FFT 500 Hz Step Acquired Satellite Fine Acquisition Uses the frequency estimate from Coarse Acquisition to obtain a better estimate The overall functionality is very similar to Coarse Acquisition FFT IFFT MAX Index 10 L1 C/A Code Samples Length 2^(n+1) FFT Size Carrier Estimate Sampling Frequency/FFT Size L1 C/A Code Generator Zero Append FFT conj Tracking Signal Phase Remainder Carrier Frequency I Q Carrier I_P Discriminator P Q_P L1 Code Chipping Length Generator I_E Remainder E Q_E Code Discriminator I_L L Q_L Delay-Locked Loop  Position Calculation Ephemeris Data Satellite Positions X RCV X SAT 1 YRCV YSAT 1 Z RCV Z SAT 1 1 X 1 RCV SAT 1 ct 1 1 1 1 . . Pseudoranges . . . . . . . . . . ct . . . . . Solve using QR Update Receiver Factorization Position Functional Software Diagram Timestamp 010101 Size Sample . . . . Samples Timestamp Position Position . . Acquire . Track . Position Vectorization Positioning Satellite . . . . Acquisition Satellites Pseudoranging Ephemeris Data Collection Acquired Satellites 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. 16368 Samples * 2 arms * 3alignments 98.2 Million Multiplies/ s ms USB GPS Dongle USB 2.0 Interface Simple software interface C/A Code Tracking The graphs to the 5 0 0 200 400 600 800 1000 1200 1400 1600 1800 2000 right show the -5 -10 -15 code error output -20 -25 from the delay- -30 -35 locked loop. -40 -45 The parameters 5 have been selected 0 0 20 40 60 80 100 120 140 160 180 200 -5 -10 in such a way that -15 -20 the loop converges -25 -30 very quickly. -35 -40 -45 Carrier Tracking Carrier error is shown on the right with respect. In this example, the 30 20 frequency of the 10 carrier appears to be 0 0 5000 10000 15000 20000 25000 30000 -10 drifting further below -20 -30 the intermediate -40 frequency. -50 -60 This is an illustration of the Doppler Effect. Navigation Data The figures to the 6000 4000 right show resolved 2000 50 Hz navigation 0 0 5000 10000 15000 20000 25000 30000 data. -2000 -4000 The top graph -6000 shows 32s of data, 6000 while the bottom 4000 graph shows 3s. 2000 0 0 500 1000 1500 2000 2500 3000 -2000 -4000 -6000 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 7 (per satellite) to 6 read a full 36 s of 5 satellite data. Time (Minutes) 4 Tracking 3 Compare this with 2 the Matlab code 1 which takes 6 0 C++ Matlab 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. Real-time Functionality Estimate Position Estimate new satellite position Estimate given the pseudoranges. difference in the time stamps. Use the current carrier Extract ephemeris Collect a small estimate to perform a Collect 36s of data data and calculate data sample with a frequency domain with a timestamp. initial position. timestamp. correlation with 1 ms of the small sample Using the entire small sample estimate the current carrier frequency and save it. Updated Schedule Week Activity 1/23-1/26 GPS Acquisition Software 1/27-2/2 Develop C++ Tracking Algorithm 2/3-2/9 Develop C++ Tracking Algorithm 2/10-2/16 Develop software to calculate position 2/17-2/23 Documentation and software design 2/24-3/1 Redevelop software with updated design using lessons learned from initial development 3/2-3/8 Continue redevelopment 3/9-3/15 Debug and document redesign 3/16-3/22 Continue debugging and documenting 3/23-3/29 Design display 3/30-4/5 Develop and test display 4/6-4/12 Develop and test display 4/13-4/19 System debugging and documentation 4/20-4/26 System debugging and documentation 4/27-5/3 System debugging and documentation References  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.  SiGe, SE4110L-EK1 Evaluation Board User Guide.  SiGe, SE4110L Datasheet.
Pages to are hidden for
"Implementation of a Software-based GPS Receiver - PowerPoint"Please download to view full document