Multi Channel DMA Intel® FPGA IP for PCI Express* User Guide

ID 683821
Date 7/30/2024
Public
Document Table of Contents

3.1.1. H2D Data Mover

The Host-to-Device Data Mover (H2DDM) module transfers data from the host memory to local memory through the PCIe Hard IP and the Avalon-MM Write Master/Avalon-ST Source interface.

There are two modes of usage for the H2DDM: queue descriptors fetching and H2D data payload transfer.

When used for descriptor fetching, the destination of the completion data is internal descriptor FIFOs where descriptors are stored before being dispatched to the H2DDM or D2HDM for actual data transfer.

When used for data payload transfer, the H2DDM generates Mem Rd TLPs based on descriptor information such as PCIe address (source), data size, and MRRS value as follows:
  • First MemRd to the MRRS address boundary
  • Following with MemRd’s of full MRRS size
  • Last MemRd of the remaining partial MRRS
The received completions are re-ordered to ensure the read data is delivered to user logic in order.
When a descriptor is completed, that is, all read data has been received and forwarded to the Avalon-MM Write Master / Avalon-ST Source interface, The H2DDM performs the housekeeping tasks that include:
  • Schedule MSI-X for a completed queue, if enabled
  • Schedule Writeback Consumed Head Pointer for a completed queue, if enabled
  • Update Consume Head Pointer for software polling

MSI-X and Writeback are memory write to host via the D2HDM to avoid race condition due to out-of-order writes. Based on the updated status, software can proceed with releasing the transmit buffer and reuse the descriptor ring entries.