# Is Satellite Ahead of Terrestrial in Deploying NOMA for Massive Machine-Type Communications?
## 5 Ongoing R&D
### Putting an IoT Gateway in Space
#### 5.4.1 On-Board NOMA Demodulator Implementation  
The use of GPU-based solutions for the on-board digital signal processing represents the next frontier in the development of cost-effective small satellites easily adaptable to different scenarios thanks to the flexibility of a fully software-based payload. Key features of the proposed low-power on-board GPU for real-time demodulation are as follows:  
* Combining advanced access, modulation and coding techniques with a fully programmable SDR/GPU architecture;
* Allowing multiple applications to be tested and validated and/or a continuous upgrade and optimization of on-board performance;
* Reducing the obsolescence of on-board processing satellite infrastructures thanks to the possibility to upgrade the firmware;
* Leveraging upon high-performance VLSI chipset widely used for artificial intelligence (AI), 3D gaming, blockchain processing, video encoding and other computationally intensive applications. The processing power of those chipsets is rapidly growing and de facto promises to sustain the future operational system performance;
* Leveraging upon the first on-ground advanced communication system which uses a full SDR/GPU-based gateway system already deployed in four continents. The on-board CPU/GPU platform can also be used to operate different return and forward link air interfaces, thus maximizing the flexibility and scalability of the solution. Figure 20 shows how the on-board CPU/GPU module can be integrated with the other components of a small satellite. The codebase for E-SSA signal demodulation is developed based on an inherited code from the available E-SSA demodulator, running on similar NVIDIA cards. Optimization efforts are needed to maximize the performance of the demodulator:  
* Adapting and optimizing the telecommunication performances by maximizing the achievable throughput while, at the same time, minimizing the DC consumption;
* Rewriting part of the software to better cope with the flying environment where radiation occasionally causes software errors (i.e., bitflips). In relation to the latter point, any satellite on-board embedded electronic system is expected to carry out its mission despite faults that may occur due to, e.g., high-energy particles and cosmic radiation. Fault tolerance to such events can be created by design at two levels [30]. Firstly, this can be achieved at the hardware level by means of parallel processing units (PPUs) that run the same micro-code and are provided with the same input. Whenever their output differs, this means that a failure has occurred. Recovery is conducted in the hardware by means of a voting system (with three or more parallel units, the correct result is assumed to be the one given by the majority) or roll-back (the last batch of instructions is executed again, until the same result is achieved from all). Secondly, at the software level, an error detection and correction (EDAC) approach should be implemented. This can be conducted by storing the checksum of all routines and static data structures and periodically checking that there have been no bitflips. The design, development and validation of such a complex embedded system implementing such protections is quite high, and rarely justified. In this case, re-use of COTS hardware or software is problematic because these protection measures are not imple  
Figure 20: The satellite CPU/GPU payload implementing on-board E-SSA demodulator. mented in typical commercial products (with very few exceptions, e.g., micro-controllers for high-power electric systems). Furthermore, it is not possible to benefit from mature, stable and proven software stacks coming from the open-source community [31]. In particular, in [32], the authors highlight the advantages of using open-source software, especially the Linux Operating System, on COTS hardware, as a means to achieve short development cycles and, hence, foster innovation in the space segment. A possible way to add redundancy at the sub-system level without re-designing the whole demodulator is the following.