Tagged: rust

FutureSDR: An Async SDR Framework Implemented in Rust

FutureSDR is an experimental open source SDR framework (similar to GNU Radio) that is being developed by Bastian Bloessl. The idea behind the framework is that it is implemented in Rust, which is a programming language that supports async (asynchronous) code. The end result to the user should be faster, more portable and lower latency digital signal processing (DSP) code. The framework is still in the early stages with there being very few DSP blocks available, but as per his blog new blocks are slowly being implemented by contributors. 

Bastian has created a presentation introducing the framework. It will only be interesting to programmers, and DSP coders, but it shows the possible software engineering improvements that we could see applied to SDR DSP code in the future. 

An experimental asynchronous SDR runtime for heterogeneous architectures that is:

  • Extensible: custom buffers (supporting accelerators like GPUs and FPGAs) and custom schedulers (optimized for your application).
  • Asynchronous: solving long-standing issues around IO, blocking, and timers.
  • Portable: Linux, Windows, Mac, WASM, Android, and prime support for embedded platforms through a REST API and web-based GUIs.
  • Fast: SDR go brrr!

FutureSDR supports Blocks with synchronous or asynchronous implementations for stream-based or message-based data processing. Blocks can be combined to a Flowgraph and launched on a Runtime that is driven by a Scheduler. It includes:

  • Single and multi-threaded schedulers, including examples for application-specific implementations.
  • Portable GPU acceleration using the Vulkan API (supports Linux, Windows, Android, …).
  • User space DMA driver for Xilinx Zynq to interface FPGAs.