Sanjeev Gunawardena, Air Force Institute of Technology

View Abstract Sign in for premium content


Satnav SDRs presents a conundrum for developers. On the one hand, in order to support advanced and evolving signal processing schemes, they need to be highly configurable such that all aspects of their internal architecture are easily modifiable by the end user. On the other hand, due to the below-noise-floor and relatively high bandwidth signals that satnav SDRs process, accelerated numerical processing capabilities of the host platform must be leveraged through aggressive optimization in order to achieve acceptable runtimes. Achieving both flexibility and fast runtimes simultaneously in a low SWaP-C platform has largely been an elusive goal. However, it is observed that the majority of satnav signal processing algorithms can be broken down into a set of coarse-gained building blocks (objects). Hence, if the problem of efficiently instantiating and interconnecting these objects at runtime based on a high-level user specification can be solved, and considerable effort is spent on optimizing these reusable objects, then the goal could be realized. This is the premise of this paper. It introduces a JSON-based scheme for specifying advanced satnav SDRs. This specification is used to instantiate the SDR in Python. Python bindings are used to bridge to multi-threaded and vectorized implementations of the objects to yield fast runtimes on modern CPUs. This same approach can be used to accelerate implementations of these objects targeting GPUs, FPGAs and emerging high performance heterogenous processors. With the approach presented in this paper, high performance satnav SDRs with advanced signal processing capabilities can be implemented using only JSON specifications without having to write a single line of software code.