Project 1.1 Introduction to the Blackboard, Vivado, and Verilog

Introduction to FPGA Development

5654

Introduction

This first project introduces you to the Blackboard and the Xilinx Vivado design tool suite. It guides you through downloading and setting up the tools and the Blackboard, 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 into the Blackboard. 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, the Blackboard, and your own desire and initiative.

When designing and implementing projects using the Vivado and the Blackboard, 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 configure the Blackboard; program the design into the Blackboard; 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.

As you complete the deliverables in the various projects, you must demonstrate your work to the lab assistant to receive credit. The assistant will assign points during your demo using the project submission forms, and these forms must be submitted for credit. You should take a few moments to familiarize yourself with the submissions policiy.

Background

The main intent of this first project is to introduce the design tools that you’ll be using throughout the course. At the same time, you should build some basic awareness of electric circuits and the related terms and definitions. Please read through the listed topic documents.

If you haven’t already done so, download and install the Xilinx tools. One of the background topics provides some additional information on downloading the proper tool.

Requirements

1. Complete the first tutorial

Complete the first tutorial TUTORIAL: First Vivado Project.
This tutorial provides a first experience with the Vivado tool and the Blackboard. It steps through the entire circuit definition flow: creating a new Vivado project; creating a constraints file; synthesizing the design; creating a “.bit” pgoramming file; and programming the Blackboard. 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 Blackboard 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

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 own simple Verilog and constraints files. After you program your Blackboard, SW0 should control LED0.

3. Modify your code to turn on all eight LEDs

Modify your code to connect all 8 slide switches to all 8 green LEDs on you Blackboard, with each slide switch turning on the LED above it. Note that LEDs 4-7 are three-color LED packages, but the green LEDs can be accessed individually (or if you prefer, you can tie the signals of switches 4-7 to all three LEDs in each package to produce a white LED light as shown in the video).

4. Reverse the order

Instead of turning on the LED above each switch, reverse the order so SW0 turns on LED7, SW1 turns on LED6, 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

The topic document provides some useful background information on the seven-segment display. TOPIC: Seven Segment Display Illumination
Connect the 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.

Challenges

1. Drive an RGB LED (LED7) using pushbuttons

Connect three pushbuttons to the three leds (Red, Green, and Blue) that are included in LED7. Drive the individual LEDs (LED7) only when the corresponding pushbutton is pressed.

2. Include a “Master ON/OFF” switch

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