SDR receiver compatible with HPSDR


This version of the Red Pitaya SDR receiver emulates a Hermes module with six receivers. It may be useful for projects that require six receivers compatible with the programs that support the HPSDR/Metis communication protocol.

The HPSDR/Metis communication protocol is described in the following documents:


The FPGA configuration consists of six identical digital down-converters (DDC). Their structure is shown on the following diagram:

HPSDR receiver

The main problem in emulating the HPSDR hardware with Red Pitaya is that the Red Pitaya ADC sample rate is 125 MSPS and the HPSDR ADC sample rate is 122.88 MSPS.

To address this problem, this version contains a set of FIR filters for fractional sample rate conversion.

The resulting I/Q data rate is configurable and four settings are available: 48, 96, 192, 384 kSPS.

The tunable frequency range covers from 0 Hz to 61.44 MHz.

The projects/sdr_receiver_hpsdr directory contains two Tcl files: block_design.tcl, rx.tcl. The code in these files instantiates, configures and interconnects all the needed IP cores.

The projects/sdr_receiver_hpsdr/filters directory contains the source code of the R scripts used to calculate the coefficients of the FIR filters.

The projects/sdr_receiver_hpsdr/server directory contains the source code of the UDP server (sdr-receiver-hpsdr.c) that receives control commands and transmits the I/Q data streams to the SDR programs.


This SDR receiver should work with most of the programs that support the HPSDR/Metis communication protocol:

Getting started

Running CW Skimmer Server and Reverse Beacon Network Aggregator

Building from source

The installation of the development machine is described at this link.

The structure of the source code and of the development chain is described at this link.

Setting up the Vivado environment:

source /opt/Xilinx/Vivado/2016.4/

Cloning the source code repository:

git clone
cd red-pitaya-notes

Building sdr_receiver_hpsdr.bit:

make NAME=sdr_receiver_hpsdr tmp/sdr_receiver_hpsdr.bit

Building sdr-receiver-hpsdr:

arm-linux-gnueabihf-gcc -static -O3 -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard projects/sdr_receiver_hpsdr/server/sdr-receiver-hpsdr.c -o sdr-receiver-hpsdr -D_GNU_SOURCE -lm -lpthread

Building SD card image zip file:

source helpers/