1.0 An Easy First Microblaze Project in Vivado - Flashing LEDs with a Character Received Over the UART
If you're like me, after toying around with some simple RTL code-based projects in an attempt to learn how to use Vivado and program your VC707, you were asking yourself, "How the hell am I supposed to do anything useful with this thing???". I mean, VHDL and Verilog are so low level that it feels like it would take weeks to write even a simple finite state machine! Luckily, we can actually do a lot of really cool things on the Virtex 7 (or whatever board you're using) without writing a single line of Verilog or VHDL!
To do these cool things, we can implement a "soft-core" Microblaze processor on the FPGA. This processor can run standard .ELF (Executable Linker Format) files that are generated from C code. The tool that makes this possible is the Starter Development Kit. If you haven't done a "Hello World" program there, I highly recommend doing one now to get yourself familiar with the tool.
1.1 What are we going to do in this tutorial?
What we're going to do here is generate a soft-core processor on the Virtex 7. It'll come with memory and peripherals and all that good stuff. Once we've created that, we'll be able to write some nice, easy C code to control things.
1.2 What Do I Need For This Tutorial?
To follow along with this tutorial, you'll need the following:
- A VC707 development board. Actually, any board should work. But these instructions are specific to the VC707. If you want to follow along with a different board, it should be as simple as specifying your default part during the New Project Wizard.
- The Vivado Design Suite. This includes Vivado and the Xilinx SDK. I did this tutorial with 2015.1, but it should work with similar versions.
- A JTAG or USB-to-UART cable to program the VC707.
- A terminal program to send characters over the UART.
Table Of Contents
- Part 1: Getting Started
- Part 2: Creating the Project in Vivado
- Part 3: Creating the Block Diagram
- Part 4: Building the Application in SDK
- Part 5: Running the Application in SDK