Aller AU_Plus FPGA Module

PCIe DMA Speed test on the Aller AU-Plus

1 views December 12, 2025 megha-m 0

Introduction

In computer hardware, Direct Memory Access (or DMA) is a feature that allows peripheral devices to access main memory, without burdening the processor. PCIe stands for “Peripheral Component Interconnect Express”, and is a serial expansion bus standard for interconnecting peripheral devices, as the name suggests. In this article, we will see how to implement a simple design to read and write data to Aller AU-Plus FPGA Board which acts as a PCI Express endpoint device. Aller features an M.2 form factor M-key slot which is a computer storage interface based on the PCI Express standard. We will use Xilinx’s DMA for PCI Express (PCIe) Subsystem or XDMA IP core in this example design. We will also demonstrate the PCIe DMA functionality in this article.

Prerequisites:

Hardware:

  • Aller AU-Plus FPGA Module
  • Aller AU-Plus Carrier
  • Xilinx Platform Cable USB
  • USB type C cable
  • Host PC with Linux or Windows (Linux preferred)

Software:

  • Vivado Design Suite (version 2024.1)

Creating PCIe DMA Design in Vivado

Please follow the reference article up to the section titled “Controlling the GPIOs.” This includes completing the Vivado design and confirming device detection with lspci in Linux.

In step 6 of building the PCIe DMA design , apply the following minor change.

In the PCIe ID tab, change the Base Class Menu to "Memory controller" and the Sub Class Interface Menu to "Other Memory Controller".

In the PCIe:BARs tab, enable the PCIe to AXI Lite Master Interface, 64 bit enable and change the scale to Gigabytes. And click OK.

Note: Due to the modification in the PCIe:ID settings, your lspci -vv output will identify the device as a Flash Memory Controller, as mentioned earlier. After detecting the device, continue following the remaining steps in that section exactly as described.

 

Performing the PCIe speed test in Linux using the Aller AU-Plus.

Setting Up the Xilinx DMA IP Linux Drivers

Download the dma_ip_drivers folder and extract it to a preferred location.

Navigate to:

XDMA → linux-kernel → xdma

and compile the driver using:

make

Next, go to the tools directory and run:

make

Then navigate to the tests directory and execute the following commands:

sudo ./load_driver.sh
sudo ./run_test.sh

 

Running the PCIe DMA Throughput Test

To measure the PCIe DMA throughput, simply download the provided script and run “sudo python3 Aller_throughput_x4.py” command in the terminal. The script automatically performs the transfers and displays the calculated average throughput.

PCIe DMA Loopback Test

To perform the PCIe DMA loopback test, simply download the provided script and run “sudo python3 pcie_loopback_gui.py” command in the terminal. The tool writes 1 MB of data from the host to the FPGA (H2C), reads the same amount back from the FPGA (C2H), checks if the data matches, and displays the measured throughput.

Was this helpful?

Leave A Comment
*
*