Software Defined GPS Receiver Sam Price Advisor: Dr. In Soo Ahn
Why use a software defined GPS receiver? Test and implement algorithms Test and implement algorithms Implement on multiple platforms Implement on multiple platforms Reduce cost of hardware Reduce cost of hardware Software upgrades Software upgrades Reduce development time Reduce development time
Overview of GPS
Telemetry Hello Echo Hey its 1:00 Hey its 1:06 Hey its 1:12
?Known
? ? ?
Signal properties L MHz L MHz Navigation MessagesNavigation Messages Coarse-Acquisition (C/A) codeCoarse-Acquisition (C/A) code Encrypted Precision P(Y) codeEncrypted Precision P(Y) code L MHz L MHz P(Y) codeP(Y) code Military applicationsMilitary applications
Signal information Navigation messages Navigation messages Ephemeris informationEphemeris information Time of dayTime of day 50Hz50Hz C/A code C/A code Unique to each satelliteUnique to each satellite 1.023MHz1.023MHz OrthogonalOrthogonal
BPSK Binary phase-shift keying Carrier wave Data signal Output
GPS signal Carrier wave MHz C/A code 1.023MHz Navigation data 50 Hz X
Orthogonality Source Incoming Sum Product
C/A code (cont)
Hardware used SiGe GN3S Sampler v1 Cypress Semiconductor EZ-USB FX2 SiGe Semiconductor SE4120
Previous project by Tony Corbin Sample Buffer Acquisition Tracking Decode Calculate position Sampler 30 seconds Buffer 600MB Acquisition: 50 seconds /20ms Tracking: 3½ Min/30 sec Provide a single position update.
Acquisition
Tracking algorithm D(t) Cos(F t) Cos(F t) = ½ D(t)Cos(0) + ½ D(t) cos(2F t) CA(t) N(t) Cos(F t) D(t) = CA(t) N(t) Signal Carrier Frequency Off Cos(A)Cos(A) = ½ Cos(0)+ ½ Cos(2A)
Tracking algorithm Early Prompt Late E P L
Tracking algorithm (cont) Early Prompt Late
Tracking algorithm Reference C/A code Prompt Data Early Data Late Data
Tracking improvement Early Late 1 1 Data Data Prompt
Decoding the data
Final result
High level overview of design Fine Tracking / Decoding Sampler Buffer Course Coarse Acquisition Fine Fine Acquisition Acquisition Position Updates
Current real-time open source software OSGPS OSGPS C Multiple driversMultiple drivers LinuxLinux GPS-SDR GPS-SDR C++C++ USRPUSRP LinuxLinux MacMac Current project Current project C++C++ GN3S v1GN3S v1 WindowsWindows
Comparison to previous project FeaturePrevious projectCurrent project Continuous updatesNo1 second updates Buffer size600 MB30 MB Tracking time210 sec / 30 sec22 sec / 30 sec Hot startYes Maximum data set40 sec40 min Sampling frequency300Hz offCalibrated
Conclusions Successfully implemented real-time software defined GPS receiver Successfully implemented real-time software defined GPS receiver Implemented on windows Implemented on windows 60m average position error 60m average position error Approximately 1 second position updates Approximately 1 second position updates 50% average CPU usage 50% average CPU usage Warm start implemented Warm start implemented
Future recommendations. Investigate improvements of acquisition, and tracking on GPU / FPGA Investigate improvements of acquisition, and tracking on GPU / FPGA Optimize acquisition stage Optimize acquisition stage Analysis of multipath effects Analysis of multipath effects Weak signal tracking Weak signal tracking Purchase of USRP2 Purchase of USRP2 Control sampling rateControl sampling rate preprocess data on FPGApreprocess data on FPGA Reuse for other communication projects.Reuse for other communication projects.
References Borre, Kai et.al. Software-Defined Gps and Galileo Receiver. Basel: Birkhhäuser, Borre, Kai et.al. Software-Defined Gps and Galileo Receiver. Basel: Birkhhäuser, Tsui, James. Fundamentals of Global Positioning System Receivers. Hoboken: John Wiley & Sons Inc, Tsui, James. Fundamentals of Global Positioning System Receivers. Hoboken: John Wiley & Sons Inc, 2005.
Thank You Dr. In Soo Ahn Dr. Yufeng Lu Dr. Aleksander Malinowski Michele Bavaro Northrop Grumman
Any Questions?