Main Content

DVB-S2 HDL PL Header Recovery Using Analog Devices AD9361/AD9364

This example shows how to deploy a DVB-S2 time, frequency, and phase synchronization and PL header recovery algorithm. This example uses DVB-S2 PL header recovery in a hardware-software (HW/SW) co-design implementation targeted on the Analog Devices AD9361/AD9364 radio platform.

For a list of supported radio hardware platforms, see Hardware Support. Due to limited hardware resources, this example does not support Avnet ZedBoard and FMCOMMS2/3/4.

Introduction

This example uses the PL header recovery implementation from the DVB-S2 HDL PL Header Recovery (Wireless HDL Toolbox) example to deploy a hardware-software (HW/SW) co-design implementation targeted on the Analog Devices AD9361/AD9364 radio platform. This figure shows a conceptual overview of the example.

  • Digital Video Broadcasting Satellite Second Generation (DVB-S2) modems operate in C (4-8 GHz), Ku (12-18 GHz) and Ka (26-40 GHz) frequency bands. According to the DVB-S2 standard, the satellite transponder bandwidth ranges from 1 MHz to 72 MHz. The model in this example operates at a symbol rate of 25 Mbaud with a root raised cosine (RRC) filter roll-off factor of 0.35. For a MATLAB® implementation of end-to-end DVB-S2 receiver, see the End-to-End DVB-S2 Simulation with RF Impairments and Corrections (Satellite Communications Toolbox) example.

Setup

To work with the HW/SW co-design workflow, you must install and configure additional support packages and third-party tools. For more information, see Installation for Hardware-Software Co-Design.

Hardware Generation Model

This Simulink® model is a hardware generation model of the DVB-S2 transmit and physical layer (PL) header recovery algorithm for targeting software-defined radio (SDR) platforms. From this model, you can generate an HDL code for the programmable logic (PL) and generate a template software interface model using HDL Workflow Advisor. Using the template software interface model, you can generate an application that runs on the processing system (PS). This diagram shows a hardware subsystem and a sample test harness.

Open the model.

HW/SW Partitioning

The DVB-S2 PL Header Recovery HDL subsystem contains the functionality to be implemented on the PL. The ARM processor pulls the status signals information from the FPGA and displays the information on the host.

DVB-S2 PL Header Recovery HDL

The DVB-S2 PL Header Recovery HDL subsystem is based on the DVB-S2 HDL PL Header Recovery (Wireless HDL Toolbox) example and adds additional functionality to integrate the model with the Zynq® hardware architecture.

The Tx-LUT_Channel_Rx subsystem includes the LUT Based Tx subsystem, PL Header Recovery model reference, and Channel subsystem.

  • The LUT Based Tx subsystem stores the DVB-S2 Tx transmitter waveform generated using the zynqRadioHWSWDVBS2PLHeaderRecoveryAD9364SL_init script.

  • The Channel subsystem introduces additive white Gaussian noise (AWGN) and introduces carrier frequency offset (CFO) using the NCO (DSP HDL Toolbox) block. For more information on the AWGN generation used in this subsystem, see the HDL Implementation of AWGN Generator (Wireless HDL Toolbox) example.

Simulate Hardware Generation Model

Because the model contains several HDL-optimized blocks that use sample-based signals for simulation, running the model can take a while. After the simulation starts, double-click the Control Scope to see the Tx Filtered Spectrum, Rx In frequency offset time scope, Correlation Time Scope, Header and Data Constellation plots.

To enable the AWGN channel between the DVB-S2 Transmitter and Receiver, set enableNoise to true. You can control the channel by using the channel impairments CFO, CPO, and EsNodB. When overAir is set to true, the DVB-S2 signals are transmitted and received externally through the Tx and Rx antennas, where the channel impairments are added over the air in real time.

When the simulation behavior of the hardware subsystem is satisfactory, you can generate and integrate the HDL IP core with the SDR reference design and generate software for the ARM processor.

Generate IP Core

To generate the HDL IP core, right-click the DVB-S2 PL Header Recovery HDL subsystem and select HDL Code > HDL Workflow Advisor.

  • Expand 1. Set Target and click 1.1. Set Target Device and Synthesis Tool. In the right pane, set Target workflow to IP Core Generation and Target platform to ZC706 and FMCOMMS2/3/4.

  • Click 1.2. Set Target Reference Design. In the right pane, set Reference design to Receive and Transmit path. For this example, use the default settings in the Reference design parameters pane.

  • Click 1.3. Set Target Interface. In the right pane, under the Target platform interface table pane map the DUT signals to the interface signals available in the reference design. Because this example uses a single channel, configure the channel 1 connections and AXI register interfaces as shown in these figures.

  • Click 1.4. Set Target Frequency. In the right pane, set Target Frequency (MHz) to 61.44. For this example, use the default settings in the Set Target Frequency pane.

  • Click 2. Prepare Model for HDL Code Generation. In the right pane, click Run All. The app prepares the model for HDL code generation by performing design checks.

  • Click 3. HDL Code Generation. In the right pane, click Run All. The app generates HDL code for the IP core.

Next, continue to use the HDL Workflow Advisor to generate the software interface model and block library.

Generate Software Interface Model and Block Library

  • Expand 4. Embedded System Integration. This step integrates the newly generated IP core project into the Zynq SDR reference design, generates the corresponding bitstream, and loads the bitstream onto the board.

  • Click 4.1. Create Project. In the right pane, click Run This Task. The app creates a project for the embedded system tool.

  • Click 4.2. Generate Software Interface. In the right pane, click Run This Task. The app generates a software interface library and a template software interface model.

Software Interface Library

The library contains the AXI Interface block generated from the DVB-S2 PL Header Recovery HDL subsystem. This block exposes only the AXI-lite control ports but not the data ports. The data ports are present on the transmitter and receiver blocks corresponding to your hardware selected in 1.1. Set Target Device and Synthesis Tool. The data ports of the transmitter and receiver blocks represent the streaming data interface between the FPGA user logic and ARM processor.

When using the library blocks in a downstream model, you must configure the parameters correctly for your application. Take into account that any updates to the DVB-S2 PL Header Recovery HDL subsystem are automatically propagated to the library blocks in the downstream model when you run 4.2. Generate Software Interface again.

Template Software Interface Model

You can use the generated template software interface model as a starting point for full SW targeting, for example, in external mode simulation or full deployment. Because HDL Workflow Advisor overwrites the generated model each time you run 4.2. Generate Software Interface, consider saving the generated model under a unique name and develop your software algorithm in the newly saved model.

Generate and Load Bitstream

The last steps of the HDL Workflow Advisor generate a bitstream for the PL and download the bitstream onto the board.

  • Click 4.3. Build FPGA Bitstream. In the right pane, click Run This Task. The app generates a bitstream for the PL. You can execute this step in an external shell by selecting Run build process externally. This selection allows you to continue using MATLAB while building the FPGA image. After the basic project checks complete, the app marks this check with a green checkmark. However, you must wait until the external shell displays a successful bitstream build before moving on to the next step.

  • Click 4.4. Program Target Device. In the right pane, click Run This Task. The app downloads the bitstream onto the device. Before continuing with this step, call the zynq function to ensure that MATLAB has the correct physical IP address for the radio hardware:

>> devzynq = zynq('linux','192.168.3.2','root','root','/tmp');

By default, the physical IP address of the radio hardware is 192.168.3.2. If you alter the radio hardware IP address during the hardware setup process, you must supply that address instead.

Alternatively, if you want to load the bitstream outside the HDL Workflow Advisor, create a SDR radio object by using sdrdev object and use the downloadImage function. The type of object you create depends on the Target platform setting in the 1.1. Set Target Device and Synthesis Tool pane.

  • If the selected radio platform is ADI RF SOM, ZC706 and FMCOMMS2/3/4, or ZCU102 and FMCOMMS2/3/4, create an AD936x radio object.

>> radio = sdrdev('AD936x');
  • If the selected radio platform is ZC706 and FMCOMMS5, create an FMCOMMS5 radio object.

>> radio = sdrdev('FMCOMMS5');

Download the bitstream using the radio object interfacing the selected radio device.

>> downloadImage(radio,'FPGAImage', ...
     'hdl_prj\vivado_ip_prj\vivado_prj.runs\impl_1\system_top.bit')
     % Path to the generated bitstream

DVB-S2 Software Interface Model

The software interface model is based on the generated template software interface model.

Open the model.

The model is configured for the Xilinx Zynq-7000 Based Board target. You can use this target for the ADI RF SOM or ZC706 and FMCOMMS2/3/4/5 radio platforms. For the ZCU102 and FMCOMMS2/3/4 radio platform, you must reconfigure the model by selecting Zynq UltraScale+ MPSoC ZCU102 IIO Radio in Model Settings (Ctrl+E) > Hardware Implementation > Hardware board or by double-clicking the provided Select Hardware Board Target.

Run Design on Zynq Board

You can run the DVBS2 software interface model in Monitor & Tune mode. In this mode, you can control the configuration from the Simulink model. Alternatively, to deploy the design on the board disconnected from Simulink, click Build Deploy & Start.

Host Interface Model

The ARM sends the DVBS2 Receiver output data and receiver status signals directly back to the host over the Ethernet link by using UDP Send blocks. The IP address of the UDP Send block must be the IP address of the host, by default, '192.168.3.1'. If you alter the IP address during the hardware setup process, you should apply that address instead.

This interface model, which runs on the host, illustrates how to receive data from the hardware platform and how to postprocess it.

Open the model.

When the host interface model successfully runs, the model displays the receiver status signals information from the FPGA.

To see the constellation plot, double-click the Control Scope. By default the software interface model sets modcod to 12 and overAir to false.

When the model is running on hardware, changing the overAir signal results in distorted constellation plot and status information. To switch between loopback modes, stop the simulation and toggle the overAir to select the desired mode. The following constellation plot is obtained when overAir is true.

Related Topics