We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 62069

Vivado 2014.2 XADC - How do I use the XADC with a DMA controller?


Using the XADC block with the AXI4 Stream (AXIS) interface will generate an endless packet on an AXI-Stream: there is no TLAST.
In software, I want to be able to transfer a certain amount of data (for example 64MB) to DDR.

However, the Xilinx LogiCORE IP DMA AXI core needs a TLAST signal, both in simple mode and in SG-mode.
The data path would look like:
XADC -> XADC-interface core -> DMA (S2MM) -> Interconnect -> HP0 (FPGA to Processor) -> DDR
What can be done to overcome this issue?


A TLAST signal is a requirement for a DMA S2MM interface to make it function correctly.

As a result, a TLAST signal is needed to use a DMA controller.

This is also the recommended signal (as per AXI4 Stream Spec) to indicate a packet boundary.
You can do the following to work around this issue:

Create an IP block that would insert a TLAST signal on the XADC AXI4 Stream.

There are two methods to achieve this, either write the RTL, or write the C code for Vivado HLS to generate the RTL for you.

The second approach is slightly easier as this will also create the IP to use in Vivado IP Integrator (for example).
Attached to this Answer Record is a Vivado HLS example

The source file + script is packaged as well as the already generated IP that you can reuse as-is.

To regenerate the IP, open a " Vivado HLS 2014.2 Command Prompt" and execute the command below:
vivado_hls -f run_hls.tcl

The output IP will be in directory proj_tlast_inserter_zynq/solution1/impl/ip.

If you check the C code, it does insert TLAST every 256 inputs (1<<8).

Note that this design has not been tested thoroughly.

Check out the documentation that is available on the XADC usage as found in the Xilinx Documentation Navigator tool.
For example, xapp1183 and xapp1203 should provide good insights.

xapp1183 confirms the above approach.

It used an RTL IP to generate the same type of block to insert the TLAST.

AR# 62069
Date Created 09/17/2014
Last Updated 03/26/2015
Status Active
Type General Article
  • Vivado Design Suite
  • Vivado Design Suite - 2014.2
  • XADC Wizard