Scalable Scatter-Gather DMA Intel® FPGA IP User Guide

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

3.3.3. Agent Controller

The Agent Controller module performs the following tasks:

  • Extracts the information from the descriptor instruction passed in from Descriptor Engine. Refer to the tables in Data Descriptor and Responder Descriptor for the definition of each field type.
  • Calculates the number of read or write transfers required by considering the following criteria:
    • Total payload length requested from the descriptor instruction.
    • For DMA PCIe mode:
      • MPS from PCIe Host for write transfers.
      • MRRS from PCIe Host for read transfers.
    • For DMA SoC mode:
      • For read and write requests, the maximum burst size issued at the Host AXI-4 interface can be up to 4096 bytes based on the Maximum Transfer Length parameter you configure.
  • Forwards corresponding instructions (address, payload length, number of read or write requests) to Constructor to issue read/write requests.
  • Forwards corresponding instructions (address, payload length, sop, eop, number of read or write requests) to MM or ST source/sink agent interfacing with user logic.
  • Coordinates the reset sequence for each module when software reset is issued:
    • Asserts the q_resetting bit to indicate the initialization of reset cycle when q_sw_reset_req bit is set by software.
    • Assert the q_agent_control_paused bit when the q_pause_agent_control bit is set by software.
    • Completes any occurring transaction before proceeding to stop issuing responses and read descriptors further from descriptor engine.
    • De-asserts the q_en bit to prevent descriptor engine to receive or forward further descriptors or responses from or to Prefetcher Engine.
    • Completes any occurring transaction to or from Constructor before proceeding to stop the Constructor.
    • Toggles ready to high for Responder to flush out any occurring response packets from Router.
    • Reset all registers to initial states and erase all contents from descriptor engine's buffers.
    • De-assert the q_resetting bit to indicate the completion of reset cycle.