BUILDING GPS RECEIVER’S CORRELATION FUNCTIONS WITH KOTLIN PROGRAMMING LANGUAGE
A GPS receiver uses signal correlation in order to decode and determine navigation signals. This article explains and builds correlation mechanisms that are used in GPS receivers with software approach. The correlation functions are written with Kotlin programming language. In GPS satellites, before broadcasting, the signal is modulated with the C/A code, where the C/A code is a pseudo-random signal. It is unique for each satellite, because the generation process of the C/A code depends on the satellite's index in the table of "Gold" numbers. The aggregated signal field will be formed near the GPS receiver's antenna. By iterating through the numbers of satellites a receiver generates all kinds of C/A codes locally for each satellite and starts the correlation process in order to filter this summary signal near the antenna. For correlation, the GPS receiver uses different types of correlation functions. In this article, cross correlation and circular correlation will be discussed, and the process will be achieved with a software approach. This method allows to better explain the correlation process with digital signals, and most probably in the future, receivers will rely on the software approach instead of hardware. All functions that are written in this article are open source and available on GitHub.