Scalable Scatter-Gather DMA Intel® FPGA IP User Guide

ID 823097
Date 1/27/2025
Public
Document Table of Contents

3.1.1.4. PCIe* TX Scheduler

The TX Scheduler module performs the following tasks:

  • Performs arbitration between different TLPs coming from different modules:
    • Memory read or write from TLP Constructor module:
      • H2D (host to device) Agents
      • D2H (device to host) Agents
      • Prefetcher Engine
      • MSI-X Controller
    • Memory Read Completion from BAM(BAR1) Agent
    • Memory Read Completion from BAR0 Agent
  • Reads out TLPs from internal FIFO modules based on the advertised partner's credits from TX Credit Controller. Additional to that, the TX Scheduler monitors the occupancy of reordering buffer resided in the TLP Completer apart from Non-posted credits before sending any memory read request to PCIe host. If a TLP type is blocked due to a lack of the corresponding RX buffer space from the PCIe host, other TLP types may bypass it per the PCIe transaction ordering rules.
  • Performs Packing according to the Header Packing scheme defined in the GTS AXI Streaming Intel® FPGA IP for PCI Express. The SSGDMA supports simple packing scheme where the header always start from Byte Index 0. This rule constraints only one packet can be sent per cycle.
  • Generates dummy completion TLP(for posted/MEMWR TLP) to TLP Completer which eventually routes to the agents upon transfer completion to PCIe Host. This is to ensure the agents only initiate write-back response to PCIe Host after all data are successfully transferred to Host memory.
The table below shows the mapping of the header and data for a 256-bit wide Tdata defined in the PCIe* IP.
Table 7.  Simple Packing Scheme with 256-bit Tdata Bus
Tdata [255:0]
16B 16B
Header Upper 16 bytes Header Lower 16 bytes
Data Data