Introduction
This first project introduces you to the Boolean board and the Xilinx Vivado design tool suite. It guides you through downloading and setting up your board and the tools, steps you through the process of creating a new design project, and demonstrates how to program your board. Many useful features of the Vivido design environment are introduced in this project, but it will take several projects to gain experience with all of the features.
The Vivado design tool lets you describe digital circuits using the Verilog or VHDL hardware description languages (we will use Verilog in this course). After you type in a Verilog circuit description, you can check the circuit’s behavior using the built-in simulator, synthesize the circuit description into a form that can be programmed into the FPGA, and then program the FPGA and then interact with the design in the Boolean board. 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 thoroughly 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 Boolean board (or another Real Digital board), and your own desire and initiative.
When designing and implementing circuits in this course, 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);
- type a Verilog description of the design into the Vivado tool;
- simulate the design to verify it works correctly;
- synthesize the design into a “.bit” file that contains a physical description of the circuit that can be programmed into the FPGA;
- transfer the .bit file to the FPGA using Vivado’s “hardware manager” tool to configure/program the FPGA with your circuit;
- 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.
If you are completing projects in an educational setting like a university, you will likely be asked to demonstrate your work to a lab assistant or “assessor” to receive credit. The assessor will assign scores during your demonstration and record them on the project submission forms included with every project. Take a few moments to familiarize yourself with the submissions policies, and remember the assessor will likely ask probing questions about your design during the submission.
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. Depending on your setting, the assessors may check your homework answers (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.
Background
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.
Requirements
1. Complete the first tutorial
This tutorial provides a first experience with the Vivado tool and the Boolean board. 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) the prewritten Verilog and constraints files included in the tutorial. 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
In this tutorial, you will redo all the steps in the first tutorial, but this time, you will create your own circuit using Verilog, and create your own constraints file to map the input and output signals. 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 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 LED15, SW1 turns on LED14, 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 display (SSD) - you may want to read through that document 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 of DISP1 (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 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”.