Scalable Scatter-Gather DMA Intel® FPGA IP User Guide

ID 823097
Date 4/07/2025
Public
Document Table of Contents

3.5. DMA Arbiter

The DMA Arbiter module is responsible to grant permission to push data out from internal FIFO modules for different source agents in round-robin basis:
  • For DMA PCIe mode, the decision on granting permission for a read or write transfer is based on available credits advertised by TX Credit Controller.
  • For DMA SoC mode, the decision on granting permission for a read or write transfer is equal weighted if the subsequent AXI4 subordinate is ready to receive the data.

Considering the following example where there is a number of pending read and write transfers issued:

  1. Prefetcher Engine has 2 pending command transfers.
  2. MSI-X Controller has 1 pending command transfer.
  3. H2D device agent 0 has 2 pending command transfers.
  4. D2H device agent 0 has 1 pending command transfers.

The round-robin arbitration process is expected to be happen as below:

  • 1st transaction: Granted one command transfer from Prefetcher Engine.
  • 2nd transaction: Granted one command transfer from MSI-X Controller.
  • 3rd transaction: Granted one command transfer from H2D device agent 0.
  • 4th transaction: Granted one command transfer from D2H device agent 0.
  • 5th transaction: Granted one command transfer from Prefetcher Engine.
  • 6th transaction: Granted one command transfer from H2D device agent 0.
Note: All source agents have equal priority, and the DMA Arbiter is not expected to continuously grant permission to the same source agent while it still has some pending requests in the FIFO.

In this case, assuming the earliest command received in time was from Prefetcher Engine, so a permission was granted to push out one transfer from its internal FIFO first. For subsequent 2nd to 4th transactions, the sequence ordering is interchangeable if the next granted agent was different with the current one. For 5th and 6th transactions, the sequence ordering is interchangeable as you only have one remaining command from both Prefetcher Engine and H2D device agent 0. The rule of thumb here is that the DMA Arbiter grants these two agents again only after going through the other agents that have pending requests to be transferred as well.