Getting Started with FPGA

Project 1: Introduction to Digital Engineering and FPGA Board

This project sets up your FPGA board for use and shows you the steps in starting project files. It also gives you some basic knowledge on Digital Engineering. This is a getting started project with very little hands on with your board but is a good reference if you ever forget how to start your projects.

eye 16.9K
Switch Controlled Leds

Project 2: Use Switches to Control LEDs

In this project, you will design and implement a circuit that controls an LED on your FPGA board with a slide switch. This project demonstrates how to use Verilog HDL to design a digital circuit and implement it on an FPGA board.

eye 13.4K
Design Simple Logic Circuit

Project 3: Guess the Logic

In this project, you will download a bit file to your board to configure the FPGA with four different logic circuits. The circuits use buttons and switches for inputs, and LEDs for outputs. You must probe the logic circuits by applying all possible combinations of input signals. From the results of applying all possible combinations you will be able to write logic equations that describe the circuits' behaviors. You will then rewrite the equations using Verilog HDL and re-implement them on FPGA and compare the circuit behavior with the given bit-file.

eye 12.2K
Verilog® HDL: Overview

Background and History

Introduces the topic of Verilog® Hardware Description Language (HDL) and explains the history.

eye 6.91K
Verilog® HDL: The First Example

Module, I/O Ports, Bus, and Assign

An example of how to use Verilog® HDL. Includes information on module, I/O ports, bus, and assign statements.

eye 13.2K
Electric Charges, Voltage, and Current

Fundamentals of Electricity

Explains electrical fundamentals covering the topics of charge, voltage, and current.

eye 7.07K
Simple Combinational Circuit Design

Project 4: Majority of Five

How could you find a majority of the vote if each voter of five has a switch to vote for yes or no? The logic is fairly simple and will be used in this project. Any time there are three or more of the five who vote yes, then there is a majority and the LED needs to turn on.

eye 11.4K
Describe Combinational Logic Behaviorally

Project 5: Multiplexer, Decoder, Encoder, and Shifter

In this project, you will design a multiplexer, a decoder, an encoder, and a shifter using Verilog HDL. Instead of building the circuit using logic operators, you will learn to describe a circuit behaviorally according to the functionality you wish the circuit to perform.

eye 10.5K
Hierarchical Design in Verilog

Project 6: A Simple Communication System

In this project, you will design a 4-to-1 Mux and a decoder with an enable signal as a De-Mux to implement a simple serial data transmitter. Both Mux and De-mux will be implemented in two Verilog files for future re-use. Another Verilog file will be used to wrap up the Mux and De-Mux to form a communication sytem. This hierarchical design methodology will help manage design complexity, promote design reuse, and allow parallel development.

eye 16.6K
Simulate Glitch and Delay

Project 7: Simulate Glitch and Delay in Combinational Circuits

In this project, we are going to examine the delay in combinational circuits. We are going to tell the simulator of the delay of each gate in Verilog and simulate the circuits to see how delay can affect the behavior of a combinational circuit.

eye 9.90K

Project 8: Simulate SR-Latch

Latches are the fundamental bi-stable memory circuit in digital systems to store data and indicate the state of the system. In this project, we are going to implement and simulate the basic NAND cell of an SR-Latch and see how it functions.

eye 42.8K
Use Flip-Flops to Build a Clock Divider

Project 9: Blinking LEDs

Flip-flop is an edge-triggered memory circuit. In this project, we will implement a flip-flop behaviorally using Verilog, and use a bunch of flip-flops to implement a clock divider that blinks the LEDs.

eye 25.5K
Design Arithmetic Circuits

Project 10: Comparator, Adder, Multiplier, and ALU

In this project, we will design the arithmetic circuits in FPGA. We will build a 4-bit magnitude comparators, a ripple-carry adder, and a multiplier circuit. You can challenge yourself by integrating all those circuits together with some multiplexer to build an arithmetic logic unit (ALU).

eye 14.2K
Counter and Clock Divider

Project 11: Counter and Clock Divider Revisit

A lot of interesting things can be built by combining arithmetic circuits and sequential elements. In this project, we are going to provide arithmetic circuits with timing reference by integrating arithmetic circuits with flip-flops. In the first part, we are going to use an adder with a register file (an array of flip-flops) to implement a counter that increase the number by 1 when rising edge of the clock arrives. In the second part, we are going to revisit clock divider and implement a clock divider whose frequency can be more precisely calculated compared to the clock divider that we implemented in the previous projects.

eye 78.4K
State Machine

Project 12: Serial Adder

In this project, we are going to design a serial adder. Serial Adder is a circuit that performs binary addition bit by bit, i.e. instead of presenting both operands at the inputs of an adder at the same time, the operands are fed into the serial adder bit by bit and generates the answer on the fly. To design such a circuit, we are going to use the state diagram as the formalism to describe the behavior of the circuit, and then translate the state diagram into Verilog code.

eye 8.03K
Control Seven Segment Display with Push Buttons

Design Challenge 1

In this challenge you will be asked to use push buttons to control the seven segment display on your FPGA board. Each digit of the seven segment display is composed of 7 LEDs arranged in a "figure 8" pattern with another LED for the decimal point. When the buttons are not pressed, all LEDs should be on. When a button is pressed, a digit should turn off.

eye 15.6K
Control Light with Multiple Switches

Design Challenge 2

In this challenge you will be asked to control a single light with multiple switches. An LED on-board is used to emulate the light, and 4 slide switches are used to emulate the switches.

eye 4.03K
Temperature Indicator

Design Challenge 3

In this challenge you will be asked to build and minimize a combinational circuit using K-Map that outputs a signal when temperature is in a specific range.

eye 4.64K
Seven Segment Display Controller

Design Challenge 4

In this design challenge, you are going to finish a seven-segment decoder circuit that can can drive the 4-digit 7sd device on the Digilent board. We will take a hierarchical design approach to this problem, and the modules you designed in this design challenge will be reused in other projects as well.

eye 18.8K
Shift Registers

Design Challenge 5

In this design, you are going to use a chain of flip-flop to implement a shifter register. The shifter register will be clocked using the clock divider you build in previous projects.

eye 6.63K
VGA Display Controller

Design Challenge 6

In this design, you are going to be asked to do a VGA Controller to display something on your monitor. Actually, VGA controller is a quite simple design which only requires two counters and several comparators.

eye 52.3K
Stop Watch

Design Challenge 7

In this design challenge, you are going to be asked to put combinational circuit, sequential circuits and state machine together and design a stop watch on the FPGA board.

eye 9.67K

Data Selectors

An in-depth examination of data selectors, or more commonly called multiplexers (or simply muxes).

eye 30.2K
Binary Decoders


An in-depth examination of binary decoders and demultiplexers.

eye 12.2K