Learn Vivado from Top to Bottom - Your Complete Guide
4.1 (593 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
2,730 students enrolled

Learn Vivado from Top to Bottom - Your Complete Guide

The complete guide for implementing designs on Xilinx FPGAs using Vivado Design Suite, for beginners and advanced users
4.1 (593 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
2,730 students enrolled
Created by Jordan Christman
Last updated 1/2017
English [Auto]
Current price: $48.99 Original price: $69.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 4 hours on-demand video
  • 12 articles
  • 11 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Use Vivado confidently and proficiently.
  • Understand the steps required to take their FPGA design from start to finish.
  • Implement a micro blaze softcore processor on their FPGA.
  • Generate HDL designs from c based code, using Vivado’s high level synthesis tool.
  • Download and install Xilinx’s Vivado Design Suite, we will cover how to do this is the course if you are unsure of how to do so.
  • Understand or familiar with what an FPGA is and how they operate.
  • Interested in FPGA development and design.

The Vivado design suite is the set of tools provided by Xilinx and is used to design, program, and debug Xilinx’s line of FPGAs. This course covers all of the different aspects and capabilities of the Vivado design suite. This course covers everything from the very basics to the more complex topics. This course is designed so that the student who has no experience with Vivado can take the course by starting with the very basics topics such as creating projects and design files. There are also more advanced topics so that the experienced student can learn things like how to create and program a soft core processor using the tools provided by Xilinx. This course covers many topics, including:

  • Downloading & Installing Vivado (I will be using a Windows machine, however you can install this on a Linux machine as well)
  • Creating Projects
  • Simulating Your Hardware Designs
  • Using Existing IP Cores
  • Creating & Managing Your Custom IP Cores
  • Creating and Programming a Micro Blaze soft core processor
  • Programming your Development Board
  • Automating Vivado Using Tool Command Line (tcl) Scripts
  • Creating Your Own Design Constraints
  • Converting Your C Code to a Hardware Design

Vivado contains many tools and this course will cover all of them, including:

  • Vivado's Hardware Manager - This is used to load the hardware designs onto the FPGA or on board memory.
  • Vivado's Simulator - This is what is used to simulate and verify that your design is working as expected.
  • Integrated Logic Analyzer (ILA)- This is used to act as a virtual oscilloscope while your design is running on the actual hardware target.
  • Vivado's High Level Synthesis - This tool read C based code and converts it to a HDL based design.
  • Xilinx's Software Development Kit (SDK) - This is the tool used to write C code that will run on the soft core processor implemented on the FPGA.

This course is laid out in such a way that each section takes on a specific topic or tool associated with Vivado. There are downloadable files that will have the students interact with Vivado so that they can get a hands on learning experience. The students will complete a hardware design project that will take them through all of the design steps neccasary so that they can start implementing their own idea's on Xilinx FPGAs using Vivado Design Suite. Vivado is a very powerful tool that has a lot to offer and this course is designed to help aid you in learning how to use this powerful tool.

Who this course is for:
  • Anyone who works with Xilinx’s FPGAs.
  • Anyone who has an interest in understanding the tools used to implement designs on Xilinx FPGAs.
  • Altera based designers who would like to migrate to Xilinx based designs.
  • Makers who want to get started with FPGA development.
  • Students who are taking a course that requires FPGA design or development.
Course content
Expand all 70 lectures 04:26:31
+ Introduction
4 lectures 12:54

This lecture introduces the course and explains everything that will be covered. This lecture also explains the course layout and what you can expect from this course.

Preview 02:00

This lecture introduces the Vivado Tool Suite and gives a quick summary of its capabilities.

Introduction to the Vivado Tool Suite

In this lecture you will see step-by-step how to download and install the Vivado design suite on your computer.

Preview 07:17

This lecture discusses the development boards and FPGA’s that are currently supported by Vivado.

Supported FPGAs and Development Boards
+ Vivado Basics
11 lectures 37:14

This lecture explains what you will see when you open Vivado for the first time.

Preview 02:50

This lecture will walk you through step-by-step on how to create a RTL project in Vivado. RTL projects are what we use to create designs we want to implement on the FPGA.

Preview 02:24

If there is a project that someone sends you that they created in Xilinx ISE, this lecture explains how to import that project and work on it inside of Vivado.

Importing a Xilinx ISE Project Into Vivado

This lecture walks through and shows students how to create a new project that is based off a predefined Vivado template.

Create a Project From a Predefined Template

This lecture shows how to access the example projects in Vivado. These projects are very useful for looking around and getting a better understanding of what can all be accomplished in Vivado.

Vivado Example Project

This lecture will walk you through how to add existing design files to your project. This is useful if you are developing the design in a separate program or received a design from someone else.

Preview 03:00

This lecture walks through the steps of creating new design files, simulation files, constraints files, etc… 

Creating New Files

In this lecture Vivado block designs are introduced and explained. You will walk through how to create them as well as use them to create your designs.

Working with Block Designs in Vivado

This lecture walks you through the required steps to create a bit stream file. This file is what is loaded onto your FPGA in order to configure it to operate as specified by your design.

Generating the FPGA Configuration File

This lecture shows where to find the FPGA configuration file and how to use Vivado’s Hardware Manager to locate and program your development board.

Programming Your Development Board

This lecture introduces Xilinx’s document navigator. Xilinx documentation navigator is an extremely powerful tool that allows you to find the most up to date documentation regarding all kinds of HDL/device specific topics.

Documentation Navigator
+ Pin Planning Tool
6 lectures 18:29

This lecture introduces Vivado’s pin planning tool and explains ways in which it can be used.

I/O Pin Planning Tool Introduction

In this lecture students are shown step-by-step how to create a pin planning project in Vivado.

Create an I/O Pin Planning Project

This lecture shows students how to create I/O ports and to place them on specific pins.

Create and Place I/O Ports

This lecture walks through the steps required to perform a design rules check on the pin placement selections.

Perform a Design Rules Check

This lecture shows how to check for simultaneous switching noise based on your pin placements.

Report Simultaneous Switching Noise SSN

In this lecture I will show you how to generate a constraints file based off your pin placement selections. I also will show you how this tool can create the top level HDL file for your design.

Generate Contraints File and Top Level HDL File
+ Intellectual Property (IP) Cores
14 lectures 01:00:47

In this lecture I will explain what an IP core is and how they are used when developing hardware. 

Introduction to IP Cores

In this lecture I will give a quick demonstration of why one would want to use IP cores over traditional Hardware Descriptive Language (HDL) programming.

Using IP Cores

This lecture shows step by step how to take hardware design files inside your Vivado project and turn them into IP cores. These IP cores can be placed in a block design inside Vivado.

Create IP Cores from a Specific Directory

This lecture explains how to create a custom IP core from a block design inside your Vivado project. This IP core can be saved into your custom IP core repository to be used again and again.

Create IP Cores from a Block Design

This lecture introduces the AXI interface and how it is used. We will use the AXI interface so that our IP cores can be controlled by the Micro Blaze softcore processor. We will actually use AXI IP cores in the “Working with Softcore Processor” section.

AXI Interface Explained

This lecture explains how to create an AXI IP core so that you can interface your IP core with a Micro Blaze soft core processor. The AXI IP cores can also be interfaced with the hard ARM cores located on Xillinx’s System on Chip (SoC) such as the Zynq.

Create an AXI IP Core Peripheral Step 1

This lectures walks through the steps of interfacing your HDL design with the AXI IP core generated HDL files.

Creating an AXI IP Core Peripheral - Step 2

This lecture walks through the steps of locating and placing your custom IP core with an AXI interface.

Create an AXI IP Core Peripheral Step 3

This lectures shows students how they can customize their IP cores. This lecture also shows how to attach a PDF document to their IP Core.

Customizing IP Cores

In this lecture I will walk through the steps required to create your own IP core repository. These custom IP Core repositories are nice because you can then reuse your designs from various projects.

Creating a Custom IP Core Repository

This lecture suggests different ways you can structure your IP core repository so that as you add more and more IP cores you can still stay organized.

IP Core Repository Directory Structure

At this point you know how to create your own IP cores from a block design, a specific directory, as well as creating IP cores with an AXI interface. In this lecture I am going to show you how to add IP cores to a specific repository.

Adding IP Cores to Your Repository

This lecture walks through the steps in how to add a IP core to your custom directory.

Adding a Custom IP Core Repository to a Vivado Project

This lecture talks about the types of maintenance that is required for an IP repository.

Managing a Custom IP Core Repository
+ IP Core Design Examples
4 lectures 17:55

This lecture shows step-by-step how to customize and initialize the FPGA’s internal block RAM using IP cores available through Vivado.

Configure Internal FPGA Block RAM (BRAM)

This lecture walks through the steps required to generate an external memory interface for your design. This is very useful when you plan on implementing a softcore processor or other memory heavy design.

Xilinx Memory Interface Generator (MIG) IP Core

When working with large designs and integrating soft/hard core processors, multiple AXI IP cores will likely be used. This lecture shows how to connect multiple of these IP cores to a single AXI master, which is usually a processor.

Connecting Multiple AXI Peripherals to a Single Master

Vivado has a neat tool that is useful for increasing productivity as well as keeping your block designs clean. In this lecture you will be shown how to utilize Vivado’s auto-router and regenerate your block designs.

Using Vivado's Connection Automation and Regerating Block Design Layouts
+ Working with Design Constraints
3 lectures 07:36

This is an introduction to design constraints, it explains what they are, were and how they are used. This lecture also explains what will be covered in this section.

What are Design Constraints

This lecture shows how to add I/O constraints to your design. I/O constraints include the logic level, physical pin location, as well as the type of signal implemented on the specified pin.

Applying I/O Constraints

Complex designs typically require multiple clocks running at different frequencies. This lecture shows how to add new clocks to your design at various frequencies.

Creating Clock Constraints
+ Automating Vivado
5 lectures 14:22

This lecture walks through and introduces as well as explains what a TCL script is and does. This is a powerful skillset to have as many other engineering tools use TCL scripts.

TCL Script Introduction

There are several ways to create a project in Vivado, the most straightforward being to use the new project wizard. However, if you are creating a lot of projects and they all are using the same parts / settings then creating a custom TCL will save a lot of time. In this lecture you will be shown step-by-step how to use TCL scripts to create a Vivado Project.

Build a Vivado Project Using TCL Scripts

This lecture shows how to create a block design, add IP cores to the newly created block design, and connect the IP cores all from a TCL script. These TCL scripts can be used again and again throughout different projects.

Populate a Block Design Using TCL Scripts

This lecture will show how to add custom TCL scripts to your IP core. These TCL scripts can then be used to add further customization to your IP cores.

Using TCL Scripts in Your Custom IP Core

When working with revision control software its ideal to have the smallest file sizes possible. Instead of checking in entire projects and generated files, it’s possible to only check in TCL scripts and source files. This lecture will show you how to generate a TCL script that will re-generate your project and block design.

How to Create Your Own Custom TCL Scripts
+ Hardware Design Debugging and Verification
7 lectures 37:32

This lecture discusses the required format of a test bench file for use in the Vivado Tool Suite. There are several example test benches included as well.

Creating Simulation Files (Test Benches)

In this lecture a step-by-step example is shown on how to simulate your design using Vivado’s internal simulation tool. This is a very powerful tool that can be used when trying to debug and verify your design prior to the actual implementation.

Simulating Your Designs in Vivado

This lectures shows ways to manipulate the simulated waveform for analysis. There are step-by-steps showing how to do the following:

- Zooming in/out or to a specific region
- Measuring time between signal edges
- Adding waves to the window
- Saving a waveform configuration file
- Change the format of a signal (radix)

Modifying the Simulation Waveform

While your troubleshooting / simulating your design using Vivado’s simulator you may need to generate inputs without having to modify the test bench. This lecture shows how to force an input or internal signal to a specified value to help aid in the debugging process.

Forcing Signal Values for Simulation

This lecture explains the different tools provided in the Vivado Tool Suite that are available to help you debug and verify that your design is working properly. Debugging hardware design is extremely challenging, but Vivado has some very powerful tools available to help you test and verify your design.

Vivado Debugging Tools Introduction

The Integrated Logic Analyzer Core is a logic analyzer that resides in your FPGA design while running. This core has many capabilities that an external logic analyzer would contain as well. In this lecture I am going to show you how to use the ILA debugging core.

How to Use the Integrated Logic Analyzer (ILA) Core for Debugging

The virtual I/O core is very useful for debugging designs; it can be used to see what is happening while your design is running. This is very useful because there are occasions when your simulation works but your design does not. In this lecture I am going to show you how to use the VIO debugging core.

How to Use the Virtual I/O (VIO) Core for Debugging
+ Working with Soft Core Processors
2 lectures 11:06

In this lecture we walk through the steps of creating a softcore processor project in Vivado. We will be using the MicroBlaze softcore processor.

Creating Your First Softcore Processor Project

This lecture walks through the steps of creating a basic softcore processor project. In this example we will be instantiating a MicroBlaze softcore processor in our FPGA. 

Add AXI Peripherals to Your MicroBlaze Processor
+ High Level Synthesis Tool
1 lecture 02:48

This lecture introduces Vivado’s High Level Synthesis tool, which is used to turn functional c code into a HDL design. This is a very powerful tool which can greatly speed up your development time. 

High Level Synthesis Tool Introduction