LED blinker
Introduction
For my experiments with the USB104 A7 board, I'd like to have the following development environment:
- recent version of the Vitis Core Development Kit
- recent version of the Debian distribution on the development machine
- basic project with all the USB104 A7 peripherals connected
- mostly command-line tools
- shallow directory structure
Here is how I set it all up.
Pre-requirements
My development machine has the following installed:
- Debian 12 (amd64)
- Vitis Core Development Kit 2025.1
Here are the commands to install all the other required packages:
apt-get update
apt-get --no-install-recommends install \
  bc binfmt-support bison build-essential ca-certificates curl \
  debootstrap device-tree-compiler dosfstools flex fontconfig git \
  libgtk-3-0 libncurses-dev libssl-dev libtinfo5 parted qemu-user-static \
  squashfs-tools sudo u-boot-tools x11-utils xvfb zerofree zip xc3sprogSource code
The source code is available at
https://github.com/pavel-demin/usb104-a7-notes
This repository contains the following components:
- Makefile that builds everything (almost)
- cfg directory with constraints and board definition files
- cores directory with IP cores written in Verilog
- projects directory with Vivado projects written in Tcl
- scripts directory with Tcl scripts for Vivado
All steps of the development chain and the corresponding scripts are shown in the following diagram:

Getting started
Setting up the Vitis and Vivado environment:
source /opt/Xilinx/2025.1/Vitis/settings64.shCloning the source code repository:
git clone https://github.com/pavel-demin/usb104-a7-notes
cd usb104-a7-notesBuilding led_blinker.bit:
make NAME=led_blinker bitConfiguring the FPGA:
make NAME=led_blinker runReprogramming FPGA
It is possible to reprogram the FPGA using the xc3sprog program:
xc3sprog -v -c jtaghs1_fast tmp/led_blinker.bit