Tutorials › ZDMA Firmware Flashing
ZDMA Firmware Flashing Guide
How to flash firmware onto the ZDMA’s two FPGAs using Xilinx Vivado.
Before You Flash: the two chips
The ZDMA contains two chips with different jobs, each with its own firmware. We call them FPGA0 and FPGA1.
FPGA0 — PCIe / DMA Handles PCIe communication and implements the DMA function. This firmware is public in PCILEECH-FPGA; you can make limited modifications or buy firmware from others. When people say “firmware,” they usually mean this FPGA0 part.
FPGA1 — Thunderbolt Converts FPGA0’s data into the Thunderbolt protocol. It does not take part in the actual DMA function. Its firmware is not public — you must use the firmware we provide, and it must match the driver version installed on the control computer. Mismatched firmware and drivers will not work. After updating FPGA1 firmware, you must reinstall the matching driver.
Flashing Steps
- Install Vivado. You can install it on the computer that has the ZDMA, or on a second computer. We recommend a second computer — the steps below assume that.
Download Vivado 2022.2 Full Vivado install walkthrough





- Connect JTAG. Use a normal USB-C data cable to connect the ZDMA’s JTAG port to the second computer running Vivado.

- Open Vivado.
- Open Hardware Manager from the Vivado start screen.
- Open target. Make sure the USB cable is connected to the JTAG port of the ZDMA device.
- Flash using the Vivado Hardware Manager (shown below). Make sure you flash
xc7a100t_0and select memory partis25lp128f.


Choose the correct chip! Flashing FPGA0 and FPGA1 uses the same steps — the only difference is the chip model. FPGA0 =xc7a100t_0, FPGA1 =xc7a100t_1. Double-check you selected the right one before flashing. - Power cycle. After flashing, turn off the main computer, disconnect power, wait 10 seconds, then turn it back on.
After flashing FPGA1 You must reinstall the Thunderbolt driver of the same version as the FPGA1 firmware in order to call DMA normally.