Project Introduction to the Real Digital Boards, Vivado, and Verilog

Introduction to FPGA Development



This first project introduces you to your Real Digital board and the Xilinx Vivado design tool suite. It guides you through downloading and setting up the tools and your board, and steps you through the process of creating a new design project. Many useful features of the Vivido design environment are introduced and used in this project, but it will take several projects to gain experience with all of the features.

The Vivado design tool lets you use the Verilog “hardware description language” (or HDL) to design any given digital circuit on your computer. After you type in a Verilog description of your circuit, you can use Vivado’s built-in logic simulator to check its behavior and verify it was designed correctly. After the design simulates correctly, you can “synthesize” it into a physical description that can be programmed onto your board. Then, after the board is programmed, you can physically interact with your design. This last step, interacting with the actual design in hardware, is often the most important and revealing step in verifying overall design performance.

The ability to quickly and easily design, simulate and synthesize a digital circuit on your personal computer is hugely empowering. You can check your understanding of any design, validate any given circuit’s performance, probe behaviors that seem incorrect or mysterious, and gain a deeper understanding of circuits and design methods, all from your personal computer, and at your own pace. If you really want to learn and develop your skills as a digital design engineer, you will find no better learning environment than the Vivado tool, a Real Digital platform, and your own desire and initiative.

When designing and implementing projects using the Vivado and a Real Digital board, the general flow is: understand the design goals and specifications; capture the design in an engineering formalism like a truth table, state diagram, and/or block diagram (this is usually a pencil-and-paper activity); enter the design into Vivado using Verilog (or VHDL); simulate and verify the design; synthesize the design so it can be implemented on a specific device ; program the design onto the device; and finally, interact with the design to verify that it meets the original design specification.

With a little practice, you will find the tools, although complex, will not hinder your progress - you will be limited only by your knowledge base, your tenacity, and your creativity. The first few projects will introduce the Vivado tools a little at a time, but by the third project, you will be familiar with all the tools needed to perform all required steps.

After completing the project requirements and challenges, you must demonstrate your work to the lab assistant to receive credit. The assistant will assign points during your demo using the project submission form, and then the submission form must be turned in for credit. Take a few moments to familiarize yourself with the submissions policy, and print out the submission form before demonstrating your work to the assistant.

Every project also includes a set of homework problems. These problems are meant to reinforce the concepts presented in lecture, and they also serve as guides for the kinds of problems that might appear on tests. You should complete the homework problems along with the design projects, because the TA’s will check your homework (and assign points) at the same time they check your design submissions.

Before you begin, you should:

  • Have a Real Digital board;
  • Have a PC running Linux or Windows with internet access;
  • Have an hour or two to get your design environment up and running.

After you’re done, you should:

  • Have the Xilinx Vivado tool installed and running;
  • Know how to set up a project in Vivado;
  • Know how to enter a basic Verilog circuit description;
  • Know how to connect GPIO devices to your circuit.;
  • Be able to configure an FGPA on a Real Digital platform from Vivado.


This first project introduces the Xilinx Vivado design software that you will be using throughout the course. Vivado provides a complete, self-contained design environment that lets you create and simulate Verilog circuit descriptions, and then synthesize and download them to your board for hardware validation.

The topic documents to the right provide background information that is relevant to this project. Background topics are presented in modules so they can be read, referenced, or passed over as preferred. In general, it’s a good idea to read through them all because often times they contain needed information that’s not presented in the top-level project flows.


1. Complete the first tutorial

TUTORIAL: First Vivado Project

This tutorial provides a first experience with the Vivado tool and a Real Digital platform. It steps through the entire circuit definition flow: creating a new Vivado project; entering a verilog hardware description; creating a constraints file to map inputs/outputs to device pins; synthesizing the design; creating a “.bit” programming file; and programming a device. In order to focus on the tool flow, you can copy-and-paste (and/or download) prewritten Verilog and constraints files. After completing the tutorial, your board will have been configured with the demo program, you will see various flashing patterns on the LEDs and seven-segment display.

2. Complete the second tutorial

TUTORIAL:Controlling LEDs with Switches

In this tutorial, you will redo all the steps in the first tutorial, but this time, you will create your simple circuit using Verilog and create your own constraints file to map the input and output (I/O). After you program your device, SW0 should control LED0.

3. Modify your code to turn on all LEDs

Modify your code to connect all slide switches to all green LEDs on your board, with each slide switch turning on the LED above it.

4. Reverse the order

Instead of turning on the LED above each switch, reverse the order so SW0 turns on LED11, SW1 turns on LED10, etc. Can you do this by modifying your Verilog source file? Or by modifying the xdc constraints file? Would either work? Try it! Try both!

5. Illuminate the seven-segment display

One of the topic documents above provides some useful background information on the seven-segment displays (SSD) - you may want to have some familiarity with this kind of device before working on this requirement.

Connect the first eight slide switches to the seven segments and decimal point on the seven-segment display, and connect the four pushbuttons to the four anodes (the anodes act like “on/off” switches for the individual digits). Press the buttons and verify that segments illuminate according to the settings of the slide switches.


1. Drive an RGB LED using pushbuttons

Connect three pushbuttons to the three leds (Red, Green, and Blue) that are included in one of the RGB LEDs. Drive the individual colors only when the corresponding pushbutton is pressed. Notice how you can produce a variety of colors by pressing multiple buttons simultaneously!

2. Include a “Master ON/OFF” switch

Drive an RGB LED from three pushbuttons as in challenge 1, but include a switch as a master on/off switch. Drive the LEDs with the pushbuttons when the switch outputs a “1”, and ignore the pushbuttons (leave the LEDs dark) when the switch is a “0”.