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 8.82K
×
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 6.11K
×
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 3.85K
×
Verilog® HDL: Overview

Background and History

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

eye 2.58K
×
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 3.71K
×
Electric Charges, Voltage, and Current

Fundamentals of Electricity

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

eye 2.52K
×
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 3.52K
×
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 5.29K
×
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 3.78K
×
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 2.74K
×
SR-Latch

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 6.45K
×
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 13.1K
×
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 6.53K
×
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 19.7K
×
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 2.76K
×
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 8.50K
×
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 1.73K
×
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 1.96K
×
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 7.63K
×
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 2.47K
×
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 18.4K
×
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 4.31K
×
Multiplexers

Data Selectors

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

eye 6.48K
×
Binary Decoders

Demultiplexers

An in-depth examination of binary decoders and demultiplexers.

eye 3.08K
×