top of page
Adiuvo Engineering & Training logo
MicroZed Chronicles icon

MicroZed Chronicles: Remote AXI Control via UART

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.

ree

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.

ree

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.

ree

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.


ree

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.


ree

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.


ree

The resource utilisation is pretty efficient as well.


ree

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:



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

  • Other Adiuvo Boards & Projects.


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



bottom of page