close-circle
Close

200x speedup in tracking

A project log for Full Stack GPS Receiver

From raw RF samples of the GPS L1 C/A signal to a position fix, in a completely open fashion

Mike "Hamster" Field 04/26/2017 at 22:230 Comments

GREAT NEWS - A REAL-TIME VERSION WILL BE POSSIBLE

The initial version of the software was slow - it took over 6 hours to process 200 seconds of 16Mb/s data. This was expected, as the system was processing one bit at a time, one channel at a time, and was made that way to allow me to get the techniques correct before focusing on performance.

I've completed a new version of the channel tracking code (in the fast_fsgps directory) that now processes data in 'gulps' of 32 bits at a time.

This greatly speeds things up, and I can now process the same dataset in 110 seconds.

Debugging this code was one of the harder things I've done. I hit odd compiler behavior (you can't shift an 'int' 32 bits) and just my own stupidity a few times, but it now works cleanly and very quick.

Now to incorporate the NAV message code, to get position fixes in real time.

It will also make control loop tuning a lot quicker to test.

PS. I Just notice that I left some debugging code in place, where math was replaced with a loop to help find a fault. It is now 300x faster!

Discussions