Arria® 10 or Cyclone® 10 GX Avalon® Memory-Mapped (Avalon-MM) DMA Interface for PCI Express* Solutions User Guide

ID 683425
Date 9/10/2024
Public
Document Table of Contents

5.1.1. Avalon-MM DMA Interfaces when Descriptor Controller Is Internally Instantiated

This configuration results from selecting both Enable Avalon-MM DMA and Instantiate internal descriptor controller in the component GUI.

The following figure shows the Avalon-MM DMA Bridge, implemented in soft logic. It interfaces to the Hard IP for PCIe through Avalon® -ST interfaces.

Note: In the following diagrams and text descriptions, the terms Read and Write are from the system memory perspective. Thus, a Read transaction reads data from the system memory and writes it to the local memory in Avalon® -MM address space. A Write transaction writes the data that was read from the local memory in Avalon® -MM address space to the system memory.
Figure 21. Avalon-MM DMA Bridge Block Diagram with Optional Internal Descriptor Controller
The steps for doing a DMA Write are:
  1. The CPU writes registers in the Descriptor Controller to start the DMA.
  2. The Descriptor Controller instructs the Read DMA Module to fetch the descriptor table.
  3. The Read DMA Module forwards the descriptor table to the Descriptor Controller.
  4. The Descriptor Controller instructs the Write DMA Module to transfer data.
  5. The Write DMA Module transfers data from FPGA to system memory.
  6. The Write DMA Module notifies the Descriptor Controller of the completion of the data transfer using the done bit.
  7. The Descriptor Controller updates the status of the descriptor table in system memory.
  8. The Descriptor Controller sends an MSI interrupt to the host.
The steps for doing a DMA Read are:
  1. The CPU writes registers in the Descriptor Controller to start the DMA.
  2. The Descriptor Controller instructs the Read DMA Module to fetch the descriptor table.
  3. The Read DMA Module forwards the descriptor table to the Descriptor Controller.
  4. The Descriptor Controller instructs the Read DMA Module to transfer data.
  5. The Read DMA Module transfers data from system memory to FPGA.
  6. The Read DMA Module notifies the Descriptor Controller of the completion of the data transfer using the done bit.
  7. The Descriptor Controller updates the status of the descriptor table in system memory.
  8. The Descriptor Controller sends an MSI interrupt to the host.

When the optional Descriptor Controller is included in the bridge, the Avalon-MM bridge includes the following Avalon® interfaces to implement the DMA functionality:

  • PCIe Read DMA Data Master (rd_dma): This is a 256-bit wide write only Avalon-MM master interface which supports bursts of up to 16 cycles with the rd_dma* prefix. The Read Data Mover uses this interface to write at high throughput the blocks of data that it has read from the PCIe* system memory space. This interface writes descriptors to the Read and Write Descriptor table slaves and to any other Avalon® -MM connected slaves interfaces.
  • PCIe Write DMA Data Master (wr_dma): This read-only interface transfers blocks of data from the Avalon-MM domain to the PCIe system memory space at high throughput. It drives read transactions on its bursting Avalon-MM master interface. It also creates PCIe Memory Write (MWr) TLPs with data payload from Avalon® -MM reads. It forwards the MWr TLPs to the Hard IP for transmission on the link. The Write Data Mover module decomposes the transfers into the required number of Avalon-MM burst read transactions and PCIe MWr TLPs. This is a bursting, 256-bit Avalon-MM interface with the wr_dma prefix.
  • PCIe Read Descriptor Table Slave (rd_dts): This is a 256-bit Avalon-MM slave interface that supports write bursts of up to 16 cycles. The PCIe Read DMA Data Master writes descriptors to this table. This connection is made outside the DMA bridge because the Read Data Mover also typically connects to other Avalon-MM slaves. The prefix for this interface is rd_dts.
  • PCIe Write Descriptor Table Slave (wr_dts): This is a 256-bit Avalon-MM slave interface that supports write bursts of up to 16 cycles. The PCIe Read DMA Data Master writes descriptors to this table. The PCIe Read DMA Data Master must connect to this interface outside the DMA bridge because the bursting master interface may also need to be connected to the destination of the PCIe Read Data Mover. The prefix for this interface is wr_dts.
  • Descriptor Controller Master (DCM): This is a 32-bit, non-bursting Avalon-MM master interface with write-only capability. It controls the non-bursting Avalon-MM slave that transmits single DWORD DMA status information to the host. The prefixes for this interface are wr_dcm and rd_dcm.
  • Descriptor Controller Slave (DCS): This is a 32-bit, non-bursting Avalon-MM slave interface with read and write access. The host accesses this interface through the BAR0 Non-Bursting Avalon-MM Master, to program the Descriptor Controller.
    Note: This is not a top-level interface of the Avalon-MM Bridge. Because it connects to BAR0, you cannot use BAR0 to access any other Avalon-MM slave interface.