We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Showing results for 
Search instead for 
Did you mean: 
Registered: ‎10-19-2017

Basic Linux PCIe Express Project

Hey, my boss wants to do read and write using PCIe from Linux. He said this can be done in the PS. From what I have read however, I believe PCIe needs to be configured in the PL and from Linux you need to use a PCIe AXI driver to interface with other chips via PCIe. Can someone with more experience confirm this? Secondly, can someone provide instructions/resources about how I could use Vivado to create a design that configures the PCIe block and properly connects it to the processing system?

Tags (4)
0 Kudos
1 Reply
Registered: ‎03-22-2016

Re: Basic Linux PCIe Express Project

It depends a lot on your design. Are you talking about putting a PCIe FPGA device into a PC, or about using a Zynq embedded device that has a PCIe master to interface with a PCIe device (FPGA or otherwise)?


If you're using a PCIe FPGA and just trying to read/write from a normal PC running Linux, here are some useful resources. As of around 2016.1, Xilinx has a (FREE!) PCIe DMA IP and a kernel module driver that, IMO, "just works". Using these resources and a KCU105, I was able to get PCIe DMA transfers working in under a day:


DMA for PCIe

AR# 65444 Xilinx PCI Express DMA Drivers and Software Guide

Getting the Best Performance with Xilinx's DMA for PCI Express (Video)

AR# 68049 DMA Subsystem for PCI Express (Vivado 2016.3) - Performance Numbers

DMA for PCI Express (Video)


Now, if I could just get AXI DMA working anywhere near as easily...

0 Kudos