How Do I Do Something That's Actually Useful on the MicroZed?
When I started working with the MicroZed, I began like any good student should. I read everything I could get my hands on, followed some basic tutorials, and scoured the Xilinx forums. But when it came time to put everything together to actually "do something useful", I realized I was in way over my head.
How was I supposed to get data from an Ethernet port into the algorithm I wrote in Vivado HLS? What the hell were all those DMA settings showing up in the DMA configuration widget? How does one write an HLS algorithm that doesn't send its results back to the MicroZed's ARM processor using DMA? These were the questions that were racking my brain.
It took me a really long time reading through a ton of different sources to answer these questions. So I figured I'd write a tutorial that covers all the hurdles I had to jump over in the hopes that it'll save other people some time.
A (Relatively) Simple Project to Start
The project I'm going to cover in this tutorial involves sending some data from a computer to the MicroZed over Ethernet, having the MicroZed run that data through a simple algorithm running in the Programmable Logic, and then sending the results back to computer on that same Ethernet link. It looks something like this.
Sounds easy, right? Shoot...I wish it was. I would have had more time to watch Key and Peele skits on the internet if it was.
The Tools You'll Need
Part of the reason this is difficult is that it involves using three different Xilinx tools, and each one of those tools has a thick ass manual that would take you weeks to read through. To get our application working, we'll need to do the following:
- Write our data processing algorithm in Vivado High Level Synthesis and turn it into an IP product that Vivado Design Suite can ingest.
- Build a block design in Vivado Design Suite that describes how the data is going to flow from the ARM microprocessor (after being received by a UDP server) to our algorithm.
- Write our UDP server, DMA mover, and interrupt handler in Xilinx SDK. This code will run on the ARM processor inside the MicroZed.
So the bad news is that the 3 products above will cost you more than a top-notch washer/dryer combo. The good news is that once you've convinced your boss to buy them all, this tutorial will help you understand how these three applications can be used together to create a fully-functional system.
My real hope is that if you can get through this tutorial then you can figure out how to make your own application that runs data through the MicroZed.
This tutorial will be broken down into chapters and sections that follow the enumeration in the previous section.