Implementation of a Software- based GPS Receiver Anthony J. Corbin

Download Report

Transcript Implementation of a Software- based GPS Receiver Anthony J. Corbin

Implementation of a Software based GPS Receiver

Anthony J. Corbin Dr. In Soo Ahn Friday, April 24, 2020

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 L1 C/A Code Generator FFT

conj

+/- 10 KHz 500 Hz Step FFT IFFT SNR > Threshold?

No Yes 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 10 L1 C/A Code Samples Length 2^(n+1) FFT Size L1 C/A Code Generator Zero Append FFT

conj

IFFT MAX Index Sampling Frequency/FFT Size Carrier Estimate

Tracking

Carrier Frequency I Q Phase Remainder Signal P Chipping Length Generator L1 Code Remainder E Q_P Q_E I_P Carrier Discriminator I_E Code Discriminator I_L L Q_L

Delay-Locked Loop [1]

Position Calculation

Ephemeris Data Pseudoranges Satellite Positions       

X RCV

  1 .

X SAT

1 .

.

Y RCV

  1

Y SAT

1 .

.

.

Z RCV

  1

Z SAT

.

1 .

.

1 .

    .

.

    

X

    .

.

c

t

              1  

RCV

 

SAT

1 .

.

.

c

t

 1       Solve using QR Factorization Update Receiver Position

Functional Software Diagram

010101

.

.

.

.

Timestamp Size

Sample Samples

Acquisition

.

.

.

.

Acquire Track

Satellite Satellites

Pseudoranging Ephemeris Data Collection

Acquired Satellites

Timestamp Position

Position

Position Vectorization

.

.

.

.

Positioning

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

* 3

alignments

 98 .

2

Million ms Multiplies

/

s

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.

-25 -30 -35 -40 -45 -10 -15 -20 5 0 0 -5 200 400 600 800 1000 1200 1400 1600 1800 2000 - 30 - 35 - 40 - 45 - 10 - 15 - 20 - 25 5 0 0 - 5 20 40 60 80 100 120 140 160 180 200

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.

-30 -40 -50 -60 30 20 10 0 0 -10 -20 5000 10000 15000 20000 25000 30000

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.

6000 4000 2000 0 0 -2000 -4000 -6000 6000 4000 2000 0 0 -2000 -4000 -6000 5000 10000 15000 20000 25000 30000 500 1000 1500 2000 2500 3000

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.

7 6 5 4 1 0 3 2 C++ Matlab Tracking

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 given the difference in the time stamps.

Estimate pseudoranges.

Collect 36s of data with a timestamp.

Extract ephemeris data and calculate initial position.

Collect a small data sample with a timestamp.

Use the current carrier estimate to perform a frequency domain correlation with 1 ms of the small sample Using the entire small sample estimate the current carrier frequency and save it.

Updated Schedule

Week 1/23-1/26 GPS Acquisition Software 1/27-2/2 Activity Develop C++ Tracking Algorithm 2/3-2/9 2/24-3/1 Develop C++ Tracking Algorithm 2/10-2/16 Develop software to calculate position 2/17-2/23 Documentation and software design Redevelop software with updated design using lessons learned from initial development 3/2-3/8 Continue redevelopment 3/9-3/15 3/30-4/5 Debug and document redesign 3/16-3/22 Continue debugging and documenting 3/23-3/29 Design display Develop and test display 4/6-4/12 4/27-5/3 Develop and test display 4/13-4/19 System debugging and documentation 4/20-4/26 System debugging and documentation System debugging and documentation

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.