SDR transceiver


The SDR transceiver consists of two SDR receivers and of two SDR transmitters.

The implementation of the SDR receivers is quite straightforward:

The SDR receiver is described in more details at this link.

The SDR transmitters consist of the similar blocks but arranged in an opposite order:

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

The I/Q data rate is configurable and five settings are available: 20, 50, 100, 250, 500 and 1250 kSPS.

The basic blocks of the digital down-converters (DDC) and of the digital up-converters (DUC) are shown in the following diagram:

SDR transceiver

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


The projects/sdr_transceiver/server directory contains the source code of the TCP server (sdr-transceiver.c) that receives control commands and transmits/receives the I/Q data streams (up to 2 x 32 bit x 1250 kSPS = 76.3 Mbit/s) to/from the SDR programs.

The projects/sdr_transceiver/extio directory contains the source code of the ExtIO plug-in.

The projects/sdr_transceiver/gnuradio directory contains GNU Radio blocks and a few flow graph configurations for GNU Radio Companion.

Getting started with GNU Radio

sudo apt-get install gnuradio
git clone
cd red-pitaya-notes/projects/sdr_transceiver/gnuradio
gnuradio-companion trx_am.grc

Getting started with SDR# and HDSDR

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 Vitis and Vivado environment:

source /opt/Xilinx/Vitis/2023.1/

Cloning the source code repository:

git clone
cd red-pitaya-notes

Building sdr_transceiver.bit:

make NAME=sdr_transceiver bit

Building SD card image zip file:

source helpers/