Implementation of a Software- based GPS Receiver Anthony J. Corbin Dr. In Soo Ahn Thursday, June 25,...
-
date post
15-Jan-2016 -
Category
Documents
-
view
216 -
download
1
Transcript of Implementation of a Software- based GPS Receiver Anthony J. Corbin Dr. In Soo Ahn Thursday, June 25,...
Implementation of a Software-based GPS Receiver
Anthony J. CorbinDr. In Soo Ahn
Friday, April 21, 2023
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
FFTL1 C/A Code
Generator
+/- 10 KHz500 Hz Step
FFT
conj
IFFT SNR > Threshold?
Acquired Satellite
Yes
No
Fine Acquisition Uses the frequency estimate from Coarse
Acquisition to obtain a better estimate The overall functionality is very similar to
Coarse Acquisition
10 L1 C/A Code Samples 2^(n+1)Length FFT Size
Zero AppendL1 C/A Code Generator
FFT
FFT conj
IFFT MAX Index
Sampling Frequency/FFT Size
Carrier Estimate
Tracking
I
Q
Carrier Frequency
Phase Remainder
L1 Code Remainder
Chipping Length Generator
P
E
L
Signal
I_P
I_L
I_E
Q_P
Q_L
Q_E
Code Discriminator
Carrier Discriminator
Delay-Locked Loop [1]
Position Calculation
Ephemeris Data
Pseudoranges
Satellite Positions
.
.
.
.
.
....
....
....
1 111
1
1
1
1
1
1 tc
tc
XZZYYXXSATRCV
SATRCVSATRCVSATRCV
Solve using QR Factorization
Update Receiver Position
Functional Software Diagram
Acquire
Track
Satellite
Satellites
.
.
.
.
Timestamp
Size
Sample
Samples
.
.
.
.
010101
Timestamp
Position
Position
Positioning
.
.
.
.
Acquired Satellites
Pseudoranging
Acquisition
Ephemeris Data Collection
Position Vectorization
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.
sMultipliesMillionms
alignmentsarmsSamples/2.98
3*2*16368
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.
-45
-40
-35
-30
-25
-20
-15
-10
-5
0
5
0 20 40 60 80 100 120 140 160 180 200
-45
-40
-35
-30
-25
-20
-15
-10
-5
0
5
0 200 400 600 800 1000 1200 1400 1600 1800 2000
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.
-60
-50
-40
-30
-20
-10
0
10
20
30
0 5000 10000 15000 20000 25000 30000
Navigation Data
-6000
-4000
-2000
0
2000
4000
6000
0 5000 10000 15000 20000 25000 30000
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
2000
4000
6000
0 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.
0
1
2
3
4
5
6
7
C++ Matlab
Tim
e (M
inu
tes)
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
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.
Estimate pseudoranges.
Estimate new satellite position
given the difference in the
time stamps.
Estimate Position
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 [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.