QMTECH XC7Z020 Notes
Source Issues

Multiband FT8 receiver

Short description

This project implements a standalone multiband FT8 receiver with all the FT8 signal processing done by the QMTECH XC7Z020 board in the following way:

Hardware

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

FT8 receiver

The DDC output contains complex 32-bit floating-point data at 4000 samples per second.

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

Software

The write-c2-files.c program accumulates 236000 samples at 4000 samples per second for each of the sixteen bands and saves the samples to sixteen .c2 files.

The recorded .c2 files are processed with the FT8 decoder.

The decode-ft8.sh script launches write-c2-files and ft8d one after another. This script is run every minute by the following cron entry in ft8.cron:

* * * * * cd /dev/shm && /media/mmcblk0p1/apps/sdr_receiver_ft8_77_76/decode-ft8.sh >> decode-ft8.log 2>&1 &

GPS interface

A GPS module can be used for the time synchronization and for the automatic measurement and correction of the frequency deviation.

The PPS signal should be connected to the pin 5 of the extension connector JP5.

The measurement and correction of the frequency deviation is disabled by default and should be enabled by uncommenting the following line in ft8.cron:

* * * * * cd /dev/shm && /media/mmcblk0p1/apps/common_tools/update-corr.sh 77.76 >> update-corr.log 2>&1 &

Getting started

Configuring FT8 receiver

All the configuration files and scripts can be found in the apps/sdr_receiver_ft8_77_76 directory on the SD card.

To enable uploads, the CALL and GRID variables should be specified in upload-ft8.sh. These variables should be set to the call sign of the receiving station and its 6-character Maidenhead grid locator.

The frequency correction ppm value can be adjusted by editing the corr parameter in write-c2-files.cfg.

The bands list in write-c2-files.cfg contains all the FT8 frequencies. They can be enabled or disabled by uncommenting or by commenting the corresponding lines.

Building from source

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/settings64.sh

Cloning the source code repository:

git clone https://github.com/pavel-demin/qmtech-xc7z020-notes
cd qmtech-xc7z020-notes

Building sdr_receiver_ft8_77_76.bit:

make NAME=sdr_receiver_ft8_77_76 bit

Building SD card image zip file:

source helpers/build-all.sh