March 19, 2024

Panoradio Source Code

SD Card and Linux Operating System

The SD card contains the linux OS and other low-level components, such as the kernel, bootloader, etc. It requires a FAT and a ext4 partition. A good tutorial on how to set up a SD card for the Zedboard is Diglent’s “Getting Started With Embedded Linux – Zedboard”.

Panoradio’s low-level files: panoradio_kernel_devtree_bootimg.zip, contains pre-compiled

  • kernel (uImage)
  • devicetree (devicetree.dtb)
  • boot image (boot.bin): contains fsbl, u-boot and bitstream (pre-implemented FPGA design)

that are to be copied onto the FAT partition of the SD card.

Linux OS: Linaro 12.11, for installation information for the root filesystem see Avnet Tutorial (page 68-70)

C++/Qt Software for SDR Control

The software archive sdr_software.zip consists of

  • stipcores: Drivers for the IP Cores as C++ lib, incl. doxygen documentation
  • radio_control: Main SDR control software as QtCreator Project in C++, Qt and Qwt, incl. doxygen documentation
  • Scripts for activating and deactivating the soundcard

First, build the stipcores library with the simple makefile. Second, import the main SDR control software into QtCreator and build. Requires installation of fftw library, Qt (Panoradio uses version 4.8.1, e.g. qt4-dev-tools), Qwt 5 (e.g. libqwt5-qt4 and libqwt5-qt4-dev) and the QtCreator (qtcreator)

FPGA Design

The FPGA design sources panoradio_hardware_design.zip consists of the main project v_panoradio_hdmi and supporting IP cores and has been created with Vivado 2013.4. The main v_panoradio_hdmi contains the panoradio design, that has been integrated into the widely spread HDMI reference design for Zynq.

Archive content:

  • v_asrc: Asynchronous sample rate converter
  • v_audio_adder: Adds the (signed) data of two dual-channel AXIS
  • v_audio_infusion: IP core to interface the audio of the HDMI design to the Panoradio
  • v_axis_clock_crossing: Clock domain crossing for AXI Stream
  • v_axis_mux: A simple multiplexer for AXI Streams
  • v_axis_probe: Provides simple access to AXI Stream data without affecting the stream
  • v_bidirectional_io_buffer: Wrapper for Xilinx’s IOBUF tristate IO buffer
  • v_data_capture: Memory to record AXI stream data with AXI Lite interface for the PS for reading
  • v_data_capture_dual: Same as v_data_capture, but for two channel simultaneously (e.g. IQ)
  • v_data_interface_adc: High speed data interface to the ADC
  • v_dds_axi_interface: Provides an AXI Lite interface to the DDS core (which has only AXIS by default)
  • v_decimation_by_2: Simple data decimation by a factor of 2 for AXIS
  • v_impulse_stimulator: Generates step and impulse excitation at the radio’s input for testing
  • v_iq_mixer: Simple IQ mixer with AXIS ports
  • v_signal_scaling: Amplifies or attenuates data in an AXIS
  • v_spi_module_ad: Control interface to the ADC
  • v_weaver_demod: Weaver demodulator for SSB reception
  • synchronization_ffs: Two flip-flop synchronizer
  • v_panoradio_hdmi: Main project

To open the main project navigate to zynq_design/v_panoradio_hdmi/projects/adv7511/zed and open the .xpr project file (no need to execute the build script, which belongs to the original HDMI reference design).