SDR receiver
Interesting links
Some interesting links on digital signal processing and software defined radio:
Hardware
The FPGA configuration consists of sixteen identical digital down-converters (DDC). Their structure is shown in the following diagram:
The 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 490 MHz.
The projects/sdr_receiver_77_76 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_77_76/filters directory contains the source code of the R scripts used to calculate the coefficients of the FIR filters.
Software
The projects/sdr_receiver_77_76/server directory contains the source code of the TCP server (sdr-receiver.c) that receives control commands and transmits the I/Q data streams to the SDR programs.
The SDR SMEM repository contains the source code of the TCP client (tcp_smem.lpr), ExtIO plug-in (extio_smem.lpr) and other programs and plug-ins. The following diagram shows an example of how these programs and plug-ins can be used:
The tcp_smem
program runs on a computer. It receives the I/Q data streams over the network and transfers them to other programs and plugins via shared memory.
Antenna
I use simple indoor antennas made from a single loop of non-coaxial wire. Their approximate scheme is shown in the following diagrams:
Getting started
- Connect an antenna to the SMA connector on the ADC board.
- Download SD card image zip file (more details about the SD card image can be found at this link).
- Copy the contents of the SD card image zip file to a micro SD card.
- Optionally, to start the application automatically at boot time, copy its
start.sh
file fromapps/sdr_receiver
to the topmost directory on the SD card. - Install the micro SD card in the QMTECH XC7Z020 board and connect the power.
- Download and install SDR# or HDSDR.
- Download and unpack the SDR SMEM zip file.
- Start
tcp_smem.exe
, enter the IP address of the QMTECH XC7Z020 board and press the Connect button. - Copy
extio_smem.dll
into the SDR# or HDSDR installation directory. - Start SDR# or HDSDR.
- Select SMEM from the Source list in SDR# or from the Options [F7] → Select Input menu in HDSDR.
- Press Play icon in SDR# or press Start [F2] button in HDSDR.
Running CW Skimmer Server and Reverse Beacon Network Aggregator
- Install CW Skimmer Server.
- Download and unpack the SDR SMEM zip file.
- Make a copy of the
tcp_smem.exe
program and rename the copy totcp_smem_1.exe
. - Start
tcp_smem.exe
andtcp_smem_1.exe
, enter the IP addresses of the QMTECH XC7Z020 board and press the Connect button. - Copy
intf_smem.dll
to the CW Skimmer Server program directory (C:\Program Files (x86)\Afreet\SkimSrv
). - Make a copy of the
SkimSrv
directory and rename the copy toSkimSrv2
. - In the
SkimSrv2
directory, renameSkimSrv.exe
toSkimSrv2.exe
and renameintf_smem.dll
tointf_smem_1.dll
. - Install Reverse Beacon Network Aggregator.
- Start
SkimSrv.exe
andSkimSrv2.exe
, configure frequencies and your call sign. - Start Reverse Beacon Network Aggregator.
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_77_76.bit
:
make NAME=sdr_receiver_77_76 bit
Building SD card image zip file:
source helpers/build-all.sh