MicroZed Chronicles: SCU35 and Accelerometer.
- Adam Taylor
- 5 days ago
- 4 min read
Recently, I have been doing a lot of work with the SCU35 and the Spartan UltraScale+ FPGA it features. Much of this work revolves around precision robotics, I/O expansion, and environmental monitoring.
The SCU35 offers extensive communication capabilities, including four Pmods, two Raspberry Pi HATs, two Clicks, HSIO, a shield, and Ethernet. When it comes to sensors, it provides an I2C accelerometer and a current sensor, while memory-wise, it provides HyperRAM and, of course, the configuration memory.
One of the things I want to explore is the Click interface and the accelerometer. As such, I thought I would use an Eth Wizard Click to stream out the accelerometer data.
However, you might have noticed I mentioned the SCU35 has an Ethernet connector, so why would I use the Eth Wizard Click? The answer is resource optimisation. I could implement lwIP; however, that would require considerable memory and FPGA resources to implement AXI Ethernet Lite. This is not an efficient use of device resources. As such, for simple Ethernet applications that send basic communication, control, and data, an external device like the W5500 is ideal. To interface with the W5500, all we need is an SPI interface and some simple driver software. All the heavy lifting, so to speak, is provided by the W5500.
For this application, I will be using a MicroBlaze V; however, in the simplest case, this interfacing with the W5500 over SPI could be implemented with an FSM coupled with a preconfigured block RAM that contains configuration information.
With this in mind, I created a simple Vivado project that implemented a MicroBlaze V, AXI IIC for the accelerometer, and an AXI Quad SPI interface for the Eth Wizard Click.
The final design is shown below and is provided on my GitHub repository.

As Vivado is board-aware for the clock and the AXI IIC accelerometer, we only need to define the constraints for the AXI Quad SPI, which is connected to Click slot 2.
set_property IOSTANDARD LVCMOS33 [get_ports {spi_rtl_ss_io[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports spi_rtl_io0_io]
set_property IOSTANDARD LVCMOS33 [get_ports spi_rtl_io1_io]
set_property IOSTANDARD LVCMOS33 [get_ports spi_rtl_sck_io]
set_property PACKAGE_PIN aa4 [get_ports {spi_rtl_ss_io[0]}]
set_property PACKAGE_PIN V4 [get_ports spi_rtl_io0_io]
set_property PACKAGE_PIN W4 [get_ports spi_rtl_io1_io]
set_property PACKAGE_PIN y4 [get_ports spi_rtl_sck_io]
The accelerometer fitted on the SCU35 is the LIS2DE12. This is a MEMS accelerometer that provides, as you would expect, three-axis sensing.
To create the application, the next step is to create a Vitis platform and application based on the hardware platform just created in Vivado.

With that completed, we need to create several software elements:
Configure the W5500 and create a simple driver such that it can transmit data passed to it. We can use the datasheet as a good starting point for what we need.
Configure the LIS2DE12 and start reading parameters back from the device.
Create an application which reads the LIS2DE12 and sends the data over the W5500.
On a whim, as I sat down to write the W5500 driver, I decided to ask ChatGPT5 if it could create a driver. I was rather surprised when the driver that popped out worked the first time. The only change I needed to make was to the AXI Quad SPI device identifier used for configuration.
This driver provided a simple function that sends a number of bytes over UDP to a predefined address.
The accelerometer driver determines a connection to the device by reading the WHO_AM_I register and then configuring the accelerometer.
The main application defines the UDP settings and calls the initialisation function for the W5500 and accelerometer. Once this is complete, the accelerometer data is sent out over the UART and Eth Wizard Click.
All of the code is available in the Git repository, along with a Python script which, when run on a host machine, will receive the data over Ethernet and plot it.



This is a nice, simple project that leaves a lot of the FPGA resources unallocated and therefore available for other applications.
In another blog soon, we will take a look at the current sensor and how we can use it to monitor the power our applications consume.
UK FPGA Conference
FPGA Horizons - October 7th 2025 - THE FPGA Conference, find out more here.
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