Using USB port in PYNQ-Z2


I am aiming to utilize the USB port on the PYNQ-Z2 to connect an event-based camera with a specialized EVT data format. I need to send the data To the Programmable Logic (PL) to effectively process this data. I’ve conducted extensive research, however, I am encountering confusion regarding whether I should incorporate AXI-USB in the block diagram design within Vivado or rely on the DMA and AXI DMA, as outlined in the PYNQ DMA tutorial (Tutorial: PYNQ DMA (Part 1: Hardware design)), and use the python libraries of PYNQ(which libary and driver?) to initialize the USB device and get data.
My specific inquiry pertains to the use of AXI-USB, is it necessary or not?. Additionally, I’m curious about the absence of tutorials addressing USB functionalities, AXI-USB usage, and guidance on employing USB for off-the-shelf devices. Any insights or recommended tutorials on these aspects would be greatly appreciated (How to connect pins and set the configurations).

Thanks alot

Hi @Azadeh,

Welcome to the PYNQ community.

The USB port in the PYNQ-Z2 is connected to the PS, so the USB IP is not needed in block design.

The USB will be handled by the ARM processor and then you can move the data to the PL for further processing.


Hi Mario,
Thanks alot for yuor guidance. Would you please guide me, how can I move the data from usb port to DMA?

Hi @Azadeh,

I suggest you check the DMA tutorials.

For more details about using your USB based camera you can check Linux forums. In the getting started notebooks, you should be able to find many notebooks that capture from webcam. As an example PYNQ/pynq/notebooks/common/usb_webcam.ipynb at master · Xilinx/PYNQ · GitHub