This tutorial is intended as a simple introduction to FPGAs using the Xilinx ZYNQ SoC FPGA. The board used in the examples is the ZedBoard, but you could use pretty much any ZYNQ development board that supports Pmod interfaces. The tutorial uses the Digilent PmodENC and PmodSSD peripheral boards. Links to these products are provided below. You can find out about the ZedBoard at http://www.zedboard.org.
You can purchase a ZedBoard from Avnet Express for $395, or from Digilent for $495 ($319 Academic). A good alternative board for this tutorial is the ZYBO board (also from Digilent). It is $189 ($125 Academic). The main difference between the boards is that the ZedBoard has an FMC expansion connector and a more powerful FPGA. This tutorial will also uses two Digilent Pmod boards. The PmodENC rotary encoder and the PmodSSD seven segment display.
You can follow along with the tutorial using either Linux or Windows. I use Linux so the examples may be biased in that direction. However, I will also try to provide links and tips for using Windows.
You will need to download the Xilinx Vivado software from the Xilinx website. Make sure you download release 2014.4 or later. The ZedBoard comes with a license for the ZYNQ 7020 part on the board. Follow the directions that come with the board to redeem your license.
Before starting on this tutorial, you should do the first tutorial on the ZedBoard site. That will get you familiar with using the Vivado IDE. Specifically you need to learn how to create a project and program the board. Once you have mastered that, you can get started on the tutorials here.
- Tutorial 1: The Simplest FPGA in the World
- Tutorial 2: Simulation
- Tutorial 3: More Simulation, and an Important Topic
- Tutorial 4: Driving the Seven Segment Display
- Tutorial 5: The Other Digit
- Tutorial 6: Counting the Seconds
- Tutorial 7: Counting the Seconds, the Human Edition
- Tutorial 8: Stopwatch
- Tutorial 9: Measuring Button Bounce
- Tutorial 10: Completing the Bounce Measure Design
- Tutorial 11: A Debounce Circuit
- Tutorial 12: Rotary Encoder
- Tutorial 13: Creating an IP Component
- Tutorial 14: Building an ARM FPGA
- Tutorial 15: A Software Stopwatch
- Tutorial 16: Static Timing
- Tutorial 17: Starting Audio (or a really complicated wire)
- Tutorial 18: I2S Receiver
- Tutorial 19: I2S Transmitter
- Tutorial 20: I2S Loopback
- Tutorial 21: Having some fun
- Tutorial 22: Embedded Linux – Hardware
- Tutorial 23: Embedded Linux – PetaLinux
- Tutorial 24: Embedded Linux – Controlling a SPI device
- Tutorial 25: Debugging Linux Applications from SDK
- Tutorial 26: Controlling a SPI device using the ZYNQ SPI controller
- Tutorial 27: Booting PicoZed using eMMC FLASH