Hi all! I recently presented the PYNQ image that I created for the Analog Devices Pluto SDR / AntSDR E200 at the 2024 GNU Radio Conference, and @jgoldsmith suggested that I post the project on this forum as well.
I started my project by creating a PYNQ image for the Pluto SDR, with the hope of creating a low-cost alternative to the RFSoC 4x2 kit for learning FPGA acceleration in software defined radio. The Pluto SDR has a few constraints that make porting PYNQ somewhat difficult. For starters, the ADI firmware for the Pluto SDR is created using Buildroot, not PetaLinux. My first task was converting the Linux system configuration into a PetaLinux BSP for compatibility with the PYNQ sdbuild flow.
The PYNQ root filesystem was much too large to fit into the 32 MB of flash memory onboard the Pluto. I solved this issue by hosting the root filesystem and boot files on an external USB storage drive, and then booted the system manually from the U-Boot console by loading the kernel into RAM and pointing to an external rootfs.
The Linux drivers for the AD936x RFIC family are not in mainline Linux, so the Analog Devices fork of the Linux kernel had to be integrated into the PYNQ build flow as well. I solved this problem by integrating the meta-adi Yocto layer into my PetaLinux BSP.
These steps all worked, and I was able to boot into PYNQ running on my Pluto. Hereâs an image of what the hardware setup looks like:
I ran into some issues when actually loading overlays, which I believe are related to some missing device tree nodes. Iâm still working on solving that issue.
I also created a fork of the MicroPhase PYNQ image for their AntSDR E200 with some significant improvements. I added a PYNQ userspace package for the Analog Devices IIO software, which allows PYNQ systems to interface with IIO devices both locally and from remote IIO contexts. I used the AntSDR E200 to create a demonstration FM radio hardware accelerator using PYNQ and GNU Radio. You can see a video demo of this in the recording of my GNU Radio Conference presentation that Iâve linked below.
I think that combining PYNQ with low-cost SDRs has a lot of potential for enabling simple integration of hardware acceleration into RF signal processing. By using PYNQ and the Jupyter notebook interface, DSP functions can be easily loaded into the datapath to offload high-rate computations before the samples are streamed to a host computer.
Here are a few links to check out if youâre interested in this project:
- Pluto-PYNQ GitHub repository
- AntSDR E200 PYNQ GitHub repository
- 2024 GNU Radio Conference submission
- 2024 GNU Radio Conference presentation recording
My GNU Radio Conference presentation goes into more detail, and I have a longer slide deck that I can share upon request (the file size is too large to upload to this post).
Thanks for reading!