GTS AXI Multichannel DMA IP for PCI Express User Guide

ID 847470
Date 5/06/2025
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

A.1.2. Bursting Master (BAM)

The BAM bypasses the DMA engine of the GTS AXI MCDMA IP and provides a way for the Host to perform bursting PIO reads/writes to the user logic. The BAM converts memory read and write TLPs initiated by the remote link partner and received over the PCIe link into AXI-MM burst read and write transactions and sends back CplD TLPs for read requests it receives. The BAM supports both 128-bit and 256-bit data widths to achieve bandwidths required for Gen3 x4 and Gen4 x4. The completions are always expected in order from the user logic/Platform Designer fabric. The BAM supports bursts of up to 512 bytes and up to 32 outstanding read requests.

BAM Address Mapping

You can choose to map any BAR register other than BAR0 of the physical function to the BAM for the user application. The BAM interface address mapping is as follows:

BAM address = {vf_active, pf, vf, bar_num, bam_addr}

  1. vf_active: This indicates that SRIOV is enabled.
  2. pf [PF_NUM-1:0]: Physical function number decoded from the PCIe header received from the HIP. PF_NUM, which is ($clog2(Number of PFs)), is the RTL design parameter you select such that the IP only allocates the required number of bits on the AXI-MM side to limit the number of wires on the user interface. Example: If the number of PFs you selected is 4, the PF_NUM is 2.
  3. vf [VF_NUM-1:0]: Virtual function number decoded from the PCIe header received from the HIP. VF_NUM, which is ($clog2(Number of VFs)), is the RTL design parameter you select such that the IP only allocates the required number of bits on the AXI-MM side to limit the number of wires on the user interface. Example: If the total number of VFs across all PFs you selected is 32, the VF_NUM is 5.
  4. bar_num [2:0]: This denotes the BAR number where the AXI-Stream transaction was received.
  5. bam_addr [ADDR_SIZE-1:0]: Lower address based on the maximum aperture size amongst all the BARs. Example: If BAR3 is selected as 16 MB and BAR2 is 4 GB, the ADDR_SIZE = 32 corresponding to BAR2.

Example: If the transaction was received for BAR3 (maximum aperture of 4 GB) of PF2/VF1 where you have enabled only 3 PFs and 25 VFs, the BAM address is {1'b1, 2'b10, 5'b00001, 3'b011, bam_addr[31:0]}.

Note: In Root Port mode, the AXI-MM address output from BAM is the same as the one received on the GTS AXI Streaming IP AXI Streaming interface.