Welcome to the Low Frequency Receiver flight software repository for the Solar Orbiter probe!
The Solar Orbiter mission, launched in February 2020, aims to study the Sun and its environment in unprecedented detail. One of its key instruments is the Radio Plasma Wave instrument where the Low Frequency Receiver (LFR) is a subsystem, which is designed to measure electric and magnetic fields from quasi DC to 10 kHz. The LFR will provide crucial information about the solar wind and the Sun's magnetic field, which are important for understanding space weather and its effects on Earth.
This repository contains the flight software for the LFR instrument, which is responsible for controlling the instrument, acquiring data, and transmitting it to RPW DPU. The software has been developed by a team of experts in space instrumentation and software engineering, and has undergone rigorous testing and validation to ensure its reliability and performance in the harsh space environment.
We invite you to explore this repository and learn more about the LFR instrument and its flight software. Whether you are a scientist, engineer, or space enthusiast, we hope that this software will inspire you and contribute to our understanding of the Sun and its environment.
The LFR flight software (FSW) is designed to run on a LEON3-FT CPU which is implemented in an RTAX-4000D FPGA. The FSW utilizes RTEMS 4.10 for efficient multitasking between data processing, telemetry handling, and housekeeping. Additionally, the FSW configures and manages our custom System-on-Chip (SoC), enabling the execution of complex computations that are not feasible to implement on a Field-Programmable Gate Array (FPGA). You can find our RTL code here, our specific board top is here.
The LFR SOC design harnesses the computational power of the RTAX-4000D FPGA to implement a range of digital filters, which enable the production of several aliasing-free data flows. For each data flow, the SOC generates waveform snapshots at precise time intervals, performs Fast Fourier Transforms (FFTs), and computes spectral matrices (see slide 26 in this presentation). The SOC also leverages our custom DMA library to write the generated snapshots and spectral matrices directly into CPU memory.
While not explicitly shown in the diagram below, it's worth noting that the CPU operates at a relatively low clock speed of 25MHz. As a result, the majority of computations are performed inside the FPGA, with only the averaging of Spectral Matrices and computation of Basic Parameters executed on the CPU within the Flight Software. This architecture is designed to optimize the computational efficiency of the system while minimizing the workload on the CPU. By offloading as much computational work as possible to the FPGA, which is optimized for high-speed data processing, the system can perform complex computations in real time despite the limitations of the CPU.
- LFR_basic-parameters/basic_parameters.c contains LFR basic parameters computation code.
- src/processing/ASM/spectralmatrices.c contains LFR Spectral Matrices averaging, compression and calibration code.
- src/tc_tm/tc_handler.c contains LFR Space Wire Telecommands handling.
- src/hw/wf_handler.c contains LFR waveform DMA accelerator related code.
A Docker image is available here, which we use to produce binaries that are uploaded to LFR. To build the software, run the following commands:
meson setup -Dlpp-destid=false -Doptimization=s --cross-file=sparc-cross.ini . build
cd build
ninja
- 3.2.0.24 Used from launch until 14/03/2023, this is the baseline software
- 3.3.0.16 Used from 14/03/2023 until now. This version fixes a few bugs and introduces calibration matrices used to correct several effects such as E-Field and B-Field antennae misalignment.