AXI Multichannel DMA Intel® FPGA IP for PCI Express* User Guide

ID 817911
Date 7/22/2024
Public
Document Table of Contents

4.5.3. BAM AXI-MM Master (bam_mm_initatr)

The BAM bypasses the AXI MCDMA IP for PCI Express and provides a way for a Host to perform bursting PIO read/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 interface address mapping is as follows:

BAM address = {vf_active, pf[PF_NUM_W-1:0], vf[VF_NUM_W-1:0], bar_num[2:0], address}

  1. vf_active: This indicates that SRIOV is enabled.
  2. pf[PF_NUM_W-1:0]: This denotes the physical function number decoded from the PCIe header. PF_NUM_W, which is defined as ($clog2(Number of PFs)) is a parameter in the RTL design chosen to limit the number of wires on the user interface of the Multichannel DMA IP. This reduces the overhead associated with unnecessary wiring.
  3. vf[VF_NUM_W-1:0]: This denotes the virtual function number decoded from the PCIe header. VF_NUM_W, which is defined as ($clog2(Number of VFs)) is a parameter in the RTL design chosen to limit the number of wires on the user interface of the Multichannel DMA IP. This reduces the overhead associated with unnecessary wiring.
  4. bar_num[2:0]: This denotes the BAR number decoded from the PCIe header.
  5. address: Number of bits required for BAR2 size requested across all Functions (PFs and VFs). Example: If BAR2 is selected as 4 MB, the address size is 22 bits.

Interface Clock: axi_mm_clk

DWIDTH:
  • 1024 bits for Gen5 1x16
  • 512 bits for Gen5 2x8, Gen4 1x16, Gen3 1x16
  • 256 bits for Gen4 2x8, Gen3 2x8
Note: For the Root Port: In the Root Port mode, the AXI-MM address output from BAM is the same as the one received on the PCIe AXI-ST RX Interface (st_rx).
Table 26.  BAM AXI-MM Master Interface
Signal Name Direction Description
Write Address Channel
bam_axi_mm_awvalid Output

Write address valid.

This signal indicates that the channel is signaling valid write address and control information.

bam_axi_mm_awready Input

Write address ready.

This signal indicates that the slave is ready to accept an address and associated control signals.

bam_axi_mm_awid[3:0] Output

Write address ID.

This signal is the identification tag for the write address group of signals. The default value is 0.

bam_axi_mm_awaddr[n:0] Output

Write address.

The write address gives the address of the first transfer in a write burst transaction.

Refer to the BAM address mapping for the actual address width.

bam_axi_mm_awlen[7:0] Output

Burst length.

The burst length gives the exact number of transfers in a burst.

This information determines the number of data transfers associated with the address.

bam_axi_mm_awsize[2:0] Output

Burst size.

This signal indicates the size of each transfer in the burst.

bam_axi_mm_awburst[1:0] Output

Burst type.

The burst type and the size information determine how the address for each transfer within the burst is calculated. The Intel FPGA supports only the INCR burst type.

bam_axi_mm_awlock Output Lock type.

Tied to '0'.

bam_axi_mm_awprot[2:0] Output

Protection type.

This signal indicates the privilege and security level of the transaction, and whether the transaction is a data access or an instruction access. (not used)

Write Data Channel
bam_axi_mm_wvalid Output

Write Data Valid

bam_axi_mm_wready Input

Write Data Ready

Indicates the receiver can accept write data

bam_axi_mm_wdata[DWIDTH-1:0] Output

Write data

bam_axi_mm_wstrb[DWIDTH/8-1:0] Output

Write strobes

bam_axi_mm_wlast Output

Write last

Write Response Channel
bam_axi_mm_bvalid Input

Write Response Valid

bam_axi_mm_bready Output

Write Response Ready

bam_axi_mm_bid[3:0] Input

Response ID

This signal is the ID tag of the write response.

bam_axi_mm_bresp[1:0] Input

Write Response

Read Address Channel
bam_axi_mm_arvalid Output

Read address valid. This signal indicates that the channel is signaling valid read address and control information.

bam_axi_mm_arready Input

Read address ready. This signal indicates that the slave is ready to accept an address and associated control signals

bam_axi_mm_arid[3:0] Output

Read address ID. This signal is the identification tag for the read address group of signals. The default value is 0.

bam_axi_mm_araddr[n:0] Output

Read address. The read address gives the address of the first transfer in a read burst transaction.

Refer to the BAM address mapping for the actual address width.

bam_axi_mm_arlen[7:0] Output

Burst length. The burst length gives the exact number of transfers in a burst.

bam_axi_mm_arsize[2:0] Output

Burst size. This signal indicates the size of each transfer in the burst.

bam_axi_mm_arburst[1:0] Output Burst type.

The burst type and the size information determine how the address for each transfer within the burst is calculated. The Intel FPGA supports only the INCR burst type.

bam_axi_mm_arlock Output Lock type.

Tied to '0'.

bam_axi_mm_arprot[2:0] Output

Protection type.

This signal indicates the privilege and security level of the transaction, and whether the transaction is a data access or an instruction access. (not used)

Read Data Channel
bam_axi_mm_rvalid Input

Read data valid.

This signal indicates that the channel is signaling the read data is valid.

bam_axi_mm_rready Output

Read data ready.

This signal indicates that the master can accept the read data and response information.

bam_axi_mm_rid[3:0] Input

Read ID tag.

This signal is the identification tag for the read data group of signals generated by the slave.

bam_axi_mm_rdata[DWIDTH-1:0] Input

Read Data

bam_axi_mm_rresp[1:0] Input

Read response.

This signal indicates the status of the read transfer. EXOKAY is not supported on Intel FPGA. (Per the AXI specification, EXOKAY means the Exclusive read succeeded. This response is only permitted for an Exclusive read).
  • 2'b00: OKAY
  • 2'b01: EXOKAY
  • 2'b10: SLVERR
  • 2'b11: DECERR
bam_axi_mm_rlast Input

Read last.

This signal indicates the last transfer in a read burst.