Go to file
Ionut Podgoreanu f41391fa93 axi_dmac: Add support for DMA Scatter-Gather
This commit introduces a different interface to submit transfers, using
DMA descriptors.

The structure of the DMA descriptor is as follows:

struct dma_desc {
    u32 flags,
    u32 id,
    u64 dest_addr,
    u64 src_addr,
    u64 next_sg_addr,
    u32 y_len,
    u32 x_len,
    u32 src_stride,
    u32 dst_stride,
};

The 'flags' field currently offers two control bits:
- bit 0: if set, the transfer will complete after this last descriptor
  is processed, and the DMA core will go back to idle state; if cleared,
  the next DMA descriptor pointed to by 'next_sg_addr' will be loaded.
- bit 1: if set, an end-of-transfer interrupt will be raised after the
  memory segment pointed to by this descriptor has been transferred.

The 'id' field corresponds to an identifier of the descriptor.

The 'dest_addr' and 'src_addr' contain the destination and source
addresses to use for the transfer, respectively.

The 'x_len' field contains the number of bytes to transfer,
minus one.

The 'y_len', 'src_stride' and 'dst_stride' fields are only useful for
2D transfers, and should be set to zero if 2D transfers are not
required.

To start a transfer, the address of the first DMA descriptor must be
written to register 0x47c and the HWDESC bit of CONTROL register must
be set. The Scatter-Gather transfer is queued similarly to the simple
transfers, by writing 1 in TRANSFER_SUBMIT.

The Scatter-Gather interface has a dedicated AXI-MM bus configured for
read transfers, with its own dedicated clock, which can be asynchronous.

The Scatter-Gather reset is generated by the reset manager to reset the
logic after completing any pending transactions on the bus.

When the Scatter-Gather is enabled during runtime, the legacy cyclic
functionality of the DMA is disabled.

Signed-off-by: Ionut Podgoreanu <ionut.podgoreanu@analog.com>
2023-12-04 14:34:33 +02:00
.github .github/workflows: Rename branch name for GitHub actions 2023-11-17 12:56:26 +02:00
docs SPI Engine: Add execution delay documentation (#1230) 2023-11-28 18:08:51 -03:00
library axi_dmac: Add support for DMA Scatter-Gather 2023-12-04 14:34:33 +02:00
projects ad7616_sdz: Add axi_clkgen 2023-11-09 14:43:20 +02:00
scripts adi_env.tcl: Update Quartus Pro version to 23.2.0 2023-11-20 11:28:39 +02:00
.gitattributes Update .gitattributes 2016-02-12 14:27:35 +02:00
.gitignore docs: update link roles, .gitignore 2023-09-27 14:36:34 -03:00
LICENSE LICENSE_*: Update the year and format of the copyright 2023-07-11 15:12:28 +03:00
LICENSE_ADIBSD LICENSE_ADIBSD: Add short identifier 2023-09-07 10:45:49 +03:00
LICENSE_ADIJESD204 Add LICENSE_ADIJESD204. Delete jesd204/README.md 2023-09-07 10:45:49 +03:00
LICENSE_BSD-1-Clause LICENSE_*: Update the year and format of the copyright 2023-07-11 15:12:28 +03:00
LICENSE_GPL2 license: Add top level license files 2017-05-29 09:57:39 +03:00
LICENSE_LGPL License: Update LGPL to version 2.1 2020-03-06 16:07:18 +02:00
Makefile Makefiles: Update header with the appropriate license 2021-09-16 16:50:53 +03:00
README.md docs: Update README, misspelings, and improvements 2023-10-06 09:23:50 -03:00
quiet.mk Make system: Be explicit in license that cover the make/build system 2021-09-16 16:50:53 +03:00

README.md

ADI HDL Logo

Build Status Build Status

GitHub Pages EngineerZone Analog Wiki


HDL Reference Designs

Analog Devices Inc. HDL libraries and projects for various reference design and prototyping systems. This repository contains HDL code (Verilog or VHDL) and the required Tcl scripts to create and build a specific FPGA example design using Xilinx and/or Intel tool chain.

Support

The HDL is provided "AS IS", support is only provided on EngineerZone.

If you feel you can not, or do not want to ask questions on EngineerZone, you should not use or look at the HDL found in this repository. Just like you have the freedom and rights to use this software in your products (with the obligations found in individual licenses) and get support on EngineerZone, you have the freedom and rights not to use this software and get datasheet level support from traditional ADI contacts that you may have.

There is no free replacement for consulting services. If you have questions that are best handed one-on-one engagement, and are time sensitive, consider hiring a consultant. If you want to find a consultant who is familiar with the HDL found in this repository - ask on EngineerZone.

Getting started

This repository supports reference designs for different Analog Devices boards based on Intel and Xilinx FPGA development boards or standalone.

Building documentation

Install the documentation tools.

(cd docs ; pip install -r requirements.txt)

Build the libraries (recommended).

(cd library ; make)

Build the documentation with Sphinx.

(cd docs ; make html)

The generated documentation will be available at docs/_build/html.

Prerequisites

or

Please make sure that you have the required tool version.

How to build a project

For building a project (generate a bitstream), you have to use the GNU Make tool. If you're a Windows user please checkout this page, to see how you can install this tool.

To build a project, checkout the latest release, after that just cd to the project that you want to build and run make:

cd projects/fmcomms2/zc706
make

A more comprehensive build guide can be found under the following link: https://wiki.analog.com/resources/fpga/docs/build

Software

In general all the projects have no-OS (baremetal) and a Linux support. See no-OS or Linux for more information.

Which branch should I use?

Use already built files

You can download already built files and use them as they are. They are available on this link.
The files are built from master branch whenever there are new commits in HDL or Linux repositories.

⚠️ Pay attention when using already built files, since they are not tested in HW!

License

In this HDL repository, there are many different and unique modules, consisting of various HDL (Verilog or VHDL) components. The individual modules are developed independently, and may be accompanied by separate and unique license terms.

The user should read each of these license terms, and understand the freedoms and responsibilities that he or she has by using this source/core.

See LICENSE for more details. The separate license files cab be found here:

Comprehensive user guide

See HDL User Guide for a more detailed guide.