SDFEC-PYNQ
This design offers an environment to evaluate the Soft Decision Forward Error Correction (SD-FEC) IPs using PYNQ and a ZCU111 board. Based on work by Andy Dow (Xilinx; Edinburgh), it allows us to play with a configurable data path including:
- A data source including BPSK, QPSK, QAM-16, and QAM-64 modulation schemes
- An encoding/decoding pair of SD-FEC blocks with a set of different LDPC codes
- An AWGN channel model with configurable noise power
Getting started
This repository is only compatible with the PYNQ image v2.4.1 for ZCU111.
We supply pre-built wheels with all tagged releases. These can be installed directly with pip.
pip3 install https://github.com/Xilinx/SDFEC-PYNQ/releases/download/v1.0_$BOARD/rfsoc_sdfec-1.0-py3-none-any.whl
The wheel is just a self-contained archive, so we must ask the module to copy its notebooks to the filesystem after installation.
python3 -c 'import rfsoc_sdfec; rfsoc_sdfec.install_notebooks()'
The notebook should now be available in rfsoc_sdfec/
.
Building the wheel
NOTE: Build this on an x86 machine that has Vivado on the path and a license for the SD-FEC IP. You can generate the required license by following this link.
We release pre-built wheels for every tagged release. If you want to build your own wheel, this can be done from a Linux PC with Python3 and Vivado 2018.3 installed. Clone this repo and use make to build the wheel:
git clone https://github.com/Xilinx/SDFEC-PYNQ.git
cd SDFEC-PYNQ
BOARD=ZCU111 make wheel
The wheel is built in the dist
folder.