top of page
Writer's pictureAdam Taylor

MicroZed Chronicles : QDMA and the V80

So far on our journey of exploring the Alveo V80 we have examined the hardware and software elements necessary for creating the AVED which we can use as a base to build upon.

 

Of course, the AVED applications running in the Alveo V80 is only half of the application as we need to be able to communicate and control with the Alveo V80 from our host.

 

To do this we need to use the AMD PCI Express Multi Queue DMA (QDMA), this provides high performance DMA access to the Alveo V80 using PCI Express.

 

We can obtain the Linux driver from the AMD github, with associated documentation which explains split between the User Space and Kernel Space.

 

The QDMA driver is split into four main elements

 

  1. QDMA HW Access  - This is the lowest level of the driver, providing register access, resource management and mailbox handling.

  2. Lidqdma – this provides a set of APIs for QDMA IP configuration, management and transfers. Libqdma leverages the QDMA HW access APIs.

  3. Driver Interface – This provides a Linux PCI driver interface and character driver interface to enable the user space access. The driver interface leverages the APIs provided by libqdma.

  4. User Space Applications  - Several example applications are provided which demonstrate host to card transfer, card to host transfer, along with performance demonstrations.

To ensure our host system is capable of supporting the QDMA drivers it should comply with the systems requirements.

 

In the remainder of this article we will walk through building and installing the QDMA drivers.  The first thing we need to do is ensure we have necessary dependencies, in this case we need libaio.

 

We can install it with the following command

 

sudo apt-get install libaio libaio-devel


The next step is to clone the Xilinx DMA drivers into out file system

Before we can build the driver we need to add in the V80 PF PCIe ID add the line below to the end of the PF section of the file PCI_ids.h within the source code.

 

{ PCI_DEVICE(0x10ee, 0x50b5), },        /** V80 */

We can then build the driver and applications using the command

make clean && make


This will run through and build the driver, and the applications we can use to operate with the Alveo V80.  Just as we did with the AVED and using that as a starting point for development of the Vivado design, we can also use the software applications also as starting points or indicators.


However, the documentation available provides example of how to create system level configurations, allocate queues and instantiate virtual functions. Long with providing documentation for each of the six provided applications.


Having examined how we can develop the AVED for the Alveo V80 and now install the QDMA drivers for  Linux, in our final blog looking at the V80 we will be looking at the different applications to which we can deploy the Alveo V80.

Workshops and Webinars


If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include



Boards

Get an Adiuvo development board



Embedded System Book   


Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here   Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.



Sponsored by AMD

0 comments

Comments


bottom of page