Project showcase

Recent developments

Soapy SDR

SoapySDR is an open-source generalized C/C++ API and runtime library for interfacing with SDR devices. Application creators can use SoapySDR to interface with most SDR devices out there, and hardware vendors can easily add support for their hardware using the plugin architecture. Read more about the project at the SoapySDR project webpage.

Pothos dataflow software suite

Design, test, and deploy dataflow topologies. Topologies can be distributed across hosts. Pothos boasts an elegant framework API, as well as a fully-functional graphical topology designer.

GNURadio work

Over the years, I have contributed greatly to the GNU Radio project. Check the sections below to read about individual contributions.

GNURadio advanced scheduler

GRAS is a improved scheduler for GNU Radio to support DMA devices, better buffer management, advanced message passing, and mimimal boilerplate when creating new blocks. Many of the concepts developed in GRAS have made their way into Pothos. Read more about GRAS and its features.

GREx

GREx is a set of processing blocks that use the GNURadio advanced scheduler. These blocks demonstrate and take advantage of many of the unique features found in GRAS. Read more about GREx and its features.

GRExtras

GRExtras is aset of extensions and features for GNU Radio. GRExtras was at attempt to implement new features on top of GNU Radio without any in-tree modifications. Such features include, message passing, authoring processing blocks in python, and several blocks that demonstrated the GRExtras features. GRExtras was developed along side GRAS, and many of the GRExtras blocks motivated the blocks in the GREx project. Read more about the GRExtras project.

GNURadio companion

I developed the GNURadio companion (GRC) as a graphical topology designer for GNU Radio. The development begain back in my university days under a technology fellowship, but I continued on with the work as a volunteer effort -- including a major rewrite which is the current incarnation of GRC available today.

Wx display widgets

I developed a set of graphical display widgets for GNURadio using OpenGL and WxPython. These widgets replaced the original display sinks in GNURadio for better looks, better controls, and OpenGL acceleration. Visit my Personal WX GUI showcase.

VOLK - Vector-Optimized Library of Kernels

VOLK is really two parts: 1) a collection of SIMD processing kernels and 2) framework for managing those kernels. I was responsible for the development of the VOLK framework. The framework does the following:

  • Compilation of processing kernels across all possible compiler architecture flags
  • Runtime detection of hosts's processing architecture -- which SIMD instructions are supported?
  • Runtime selection of processing kernels based on processing architecture.
  • Profiling of kernels to select the best performing on a particular host.

Read more about VOLK on the official VOLK wiki page.

GNURadio CMake and MSVC support

The old autotools-based build system was getting out of hand and too complicated to maintain. I converted the entire GNU Radio build project to use CMake, as well as modifications to build under Visual Studio. Both of these developments are now a core part of mainline GNU Radio.

Misc

FlexHDR

FlexHDR is a graphical tool for creating FPGA topologies in VHDL and Verilog. The design tool is largely based around the GNURadio Companion, and largely responsible for a major rewrite of the GNURadio Companion -- to support both tools.

Last edited: Wed, Jul 5 2023 - 08:29AM