Accelerate DSP functions for GNU Radio by implementing them on an FPGA-based PCIe/Thunderbolt co-processor

Victor Omoniyi


Supervised by Frank C Langbein; Moderated by Steven Schockaert

GNU Radio is a versatile open-source Python / C++ based Software Development Toolkit, used by hobbyists and professionals alike, which allows users to interconnect "blocks" to form a flexible, fully customisable transceiver system. LiteX is a Python-based toolset which allows CPUs or SoCs (System-on-a-chip) to be modelled and run on a small "Field Programmable Gate-Array" (FPGA) chip. The chip can be installed on a PCIe / Thunderbolt card, allowing a standard computer to communicate with it, and presenting a wide range of possibilities for use as a parallel-capable co-processor. For this project, access to a working PCIe/Thunderbolt card will be provided. Its aim is to make the card perform useful processing to speed up an operation performed by the host when running GNU Radio. This may be achieved by 1) Adding blocks to GNU Radio which transport data to and from the card, and 2) Implementing existing blocks (such as "Low Pass Filter", "Multiply" etc.) to run on the board, using LiteX (or Migen, Verilog etc.). If successful, the resulting software may optionally be released for real-world use. Ideally, the student should have some previous experience of FPGA programming; however, the project represents a good opportunity to learn software and hardware design on a real system.

Final Report (05/11/2021) [Zip Archive]

Publication Form