Abstract

Software receivers have had a discernable impact on the GNSS research community. Often such receivers are implemented in a compiled programming language, such as C or C++. A software receiver must emulate the digital signal processing (DSP) algorithms executed on dedicated hardware in a traditional receiver. The DSP algorithms, most notably correlation, have a high computational cost; this burden precludes many software receivers from running in real time. However, the computational cost can be lessened by utilizing single instruction multiple data (SIMD) operations found on modern ×86 processors. The following demonstrates how C/C++ compatible code can be written to directly utilize the SIMD instructions. First, an analysis is carried out to demonstrate why real time operation is not possible when using traditional C/C++ code is carried out. Secondly a tutorial outlines how to write and insert ×86 assembly, with SIMD operations, into C/C++ code. Performance gains achieved via SIMD operations are then demonstrated, and pseudo code outlines how SIMD operations can be employed to perform correlation. Finally, a C/C++ compatible SIMD enabled arithmetic library is added to the GPS Toolbox for use in software receivers.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call