MicroZed Chronicles: Remote AXI Control via UART
- Adam Taylor

- 4 hours ago
- 3 min read
I’ve been meaning to take a closer look at our new Spartan-7 Tile Rev B and the Tile Carrier Card for a while now. They’ve been sitting on my lab bench while I’ve been wrapping up work from recent conferences and client projects, so this week, I finally found the time.

The Spartan-7 Tile Rev B is an evolution of the original Rev A design. It includes a revised boot-mode selection switch in place of a jumper and features a slightly different pinout to support discrete JTAG. The accompanying Tile Carrier Card hosts two Pmods that connect directly to the Tile, along with a Raspberry Pi Compute Module 5 (CM5) that provides stimulus and test vectors during evaluation.
For this test, I wanted to demonstrate the Tile’s flexibility and explore how some of our IP cores perform in this setup. My goal was to create a simple UART-to-AXI interface and connect it to a set of LEDs.
UART-to-AXI Interface
The interface is written entirely in RTL and allows me to read or write over an AXI network using a UART connection. This turns out to be incredibly useful for testing designs running on the Spartan-7 Tile from the CM5 compute module.
Using this approach, I can keep the Tile and Carrier Card located remotely and still connect to them over the network — for example, using VS Code and SSH, which is part of my regular workflow.
To get started, I implemented a simple UART that provides AXI-Streaming interfaces for input and output. This makes it easy to send and receive data from the programmable logic.

Protocol Conversion and AXI Transactions
Next, I added a protocol conversion module that receives bytes over AXI Stream and translates them into AXI read or write transactions.
By using AXI-Streaming interfaces on these protocol blocks, it’s easy to swap the UART for other serial protocols such as I²C, SPI, or QSPI if needed for different test environments.

In this design, the output of the protocol block drives a bank of LEDs connected to the Pmod ports. The software running on the Raspberry Pi CM5 controls these LEDs to create a “breathing” effect — the lights gradually brighten and dim in sequence.
PWM Control and Register Interface
To achieve the breathing effect, I implemented six pulse-width modulators (PWMs) within the FPGA design. These are connected to the Pmods and controlled via AXI registers.

To support this, an AXI-to-register module breaks out the AXI interface into a set of 32-bit registers. Each PWM is controlled by writing to its corresponding register.

With this in place, the software simply sends a series of register writes to update the PWM duty cycles and generate the desired LED behavior.

The resource utilisation is pretty efficient as well.

Wrapping Up
The complete design is available on my GitHub if you’d like to take a closer look or experiment with it yourself.
I’ll be revisiting this baseline design soon as part of a new project idea I’m planning for the Tile Carrier Card!
FPGA Conference
FPGA Horizons US East - April 28th, 29th 2026 - THE FPGA Conference, find out more here.
FPGA Journal
Read about cutting edge FPGA developments, in the FPGA Horizons Journal or contribute an article.
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:
Upcoming Webinars Timing, RTL Creation, FPGA Math and Mixed Signal
Professional PYNQ Learn how to use PYNQ in your developments
Introduction to Vivado learn how to use AMD Vivado
Ultra96, MiniZed & ZU1 three day course looking at HW, SW and PetaLinux
Arty Z7-20 Class looking at HW, SW and PetaLinux
Mastering MicroBlaze learn how to create MicroBlaze solutions
HLS Hero Workshop learn how to create High Level Synthesis based solutions
Perfecting Petalinux learn how to create and work with PetaLinux OS
Boards
Get an Adiuvo development board:
Adiuvo Embedded System Development board - Embedded System Development Board
Adiuvo Embedded System Tile - Low Risk way to add a FPGA to your design.
SpaceWire CODEC - SpaceWire CODEC, digital download, AXIS Interfaces
SpaceWire RMAP Initiator - SpaceWire RMAP Initiator, digital download, AXIS & AXI4 Interfaces
SpaceWire RMAP Target - SpaceWire Target, digital download, AXI4 and AXIS Interfaces
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




