Fpga Embedded Design Verilog

Tags: FPGA

Learn FPGA embedded application design starting with the basics and leaving with your own working designs.

Last updated 2022-01-10 | 4.6

- Design hardware behavior with the Verilog Hardware Description Language
- Simulate Verilog Modules.
- The curriculum will take you by the hand through learning Verilog.

What you'll learn

Design hardware behavior with the Verilog Hardware Description Language
Simulate Verilog Modules.
The curriculum will take you by the hand through learning Verilog.
In the series
you'll learn how to simulate your designs
how to make them real in an FPGA
and finally how to design and use your own Soft Processor
This first course is about the Verilog Hardware Description Language.
This is NOT a System Verilog course. However
learning Verilog is a starting point if you want to learn System Verilog (Similar to learning C prior to C++).

* Requirements

* Basic programming knowledge sometimes helps
* but the case of no programming experience can be an advantage since you will learn something other than traditional sequential programming.
* Although a refresher is provided in this course
* some basic digital electronics knowledge always helps. Not necessarily advanced stuff
* just the basics: Logic gates
* maybe flip flops
* counters
* tristate buffers
* etc.
* Ultimately
* an FPGA development board will come in handy to build and test your projects. We'll use it starting at the second course in the series.

Description

Do you feel you've learned enough about microcontrollers? Do you want to learn more embedded application design techniques? How about a technique that will allow you to design high-performance systems the way professional equipment designers do?

If you're still interested, this curriculum is for you. The FPGA Embedded Design series will teach you the exquisite art of FPGA design. 


So what is an FPGA anyway?

Before moving on, let me tell you that an FPGA is not a microcontroller. It's not a computer. Well, at least not if you don't want it to be a microcontroller or computer.


The simplest explanation of an FPGA I've found is that it's a shape shifter! It's an integrated circuit that will behave as the logic circuit you'd like, and the way of letting it know the desired behavior is, yes, you guessed it, through programming. 

But you will not do this with a Programming Language, but with a Hardware Description Language


In this course, you'll learn Verilog, which is one of the most widely used Hardware Description Languages (along with VHDL). You'll learn the concurrent paradigm in the Verilog code and how to design digital systems with this powerful language. You'll also learn that there are many purposes of an HDL: System design, simulation, implementation in either a traditional chip, or the popular FPGA alternative.


Don't let this opportunity pass. Take the first step into the other side of embedded systems: FPGA Embedded Design.

Who this course is for:

  • Anyone who wants to learn FPGA design.
  • Arduino Makers who want to take the next step into embedded systems.
  • Hardware engineers who would like to learn about the exciting field of FPGA design
  • This course is not for experienced embedded engineers specialized in FPGAs.

Course content

11 sections • 81 lectures

Course Structure Preview 03:25

Learn the logistics of the course.

Instructor Introduction Preview 00:40

Meet the instructor. See the big picture.

Motivation: Hardware Design Preview 03:00

Learn about the FPGA design process and why it's useful.

Motivation: Let's make a CPU! Preview 00:44

Let's set a goal for this whole body of knowledge. Let's think big: How about designing your own microprocessor?

Let's review the typical blocks inside a CPU and how they can all be designed, simulated and implemented with a Hardware Description Language.

Motivation: CPU Design Preview 01:27

Useful Software Preview 00:28

In this course we'll perform a lot of simulations, so it's important that you choose your development platform, which typically consists of hardware and software. 

What exactly is a Hardware Description Language? Preview 02:34

Get to know HDLs and their use.

Concurrent Design Preview 02:12

Learn how concurrent design of hardware differs from traditional sequential design of software.

Verilog and VHDL Preview 03:39

Meet the two industry standard HDLs out there.

Other HDLs Preview 01:06

There are many other HDLs out there, but you'll be fine with Verilog and maybe VHDL.

Digital Circuit Design Preview 02:02

Let's start our refresher on digital circuit design!

Logic Gates Preview 00:47

Logic gates are the basic foundation element of digital design, and correspond to logical operations such as AND, OR and XOR.

Boolean Algebra Preview 00:16

Boolean algebra is a very basic tool in computer science for pretty much everything. Let's see some important details.

Combinational Logic - Muxes and Demuxes Preview 04:12

Multiplexers and demultiplexers are two of the most popular building blocks of combinatorial logic. Let's learn about their use.

Combinational Logic - Logic with Multiplexers Preview 02:54

Combinational Logic - Logic with Demultiplexers Preview 02:01

Combinational Logic - Inside Multiplexers and Demultiplexers Preview 02:56

Arithmetic with Gates Preview 05:43

Adders with Gates Preview 04:31

Sequential Logic Preview 05:52

Tri-State Buffers Preview 05:04

Before we start... Preview 02:55

Learn about concurrent logic in Verilog modules.

No, Wait. This is all concurrent! Preview 03:05

It's very important that you understand how the concurrent model works.

Verilog Code Structure Preview 03:52

Learn about descriptive modules and test bench modules.

Descriptive Modules Preview 04:26

Learn about the elements in a descriptive module.

Test Bench Modules Preview 06:43

Learn about the organization of a test bench module and how to use one.

Some details about Verilog Preview 00:51

Creating a Playground Preview 04:41

Setting up a Playground Preview 04:19

Entering Descriptive Code Preview 06:44

The code is available for download for you to follow along if you want.

Entering Test Bench Code Preview 03:23

Entering display System Tasks Preview 05:24

Simulating with display Tasks Preview 04:28

Simulating with EPWave Preview 05:29

Simulating with GTKWave Preview 05:03

Download and Installation Tips Preview 04:04

Compiling Preview 04:36

Simulation Setup Preview 01:39

Waveform Simulation Preview 05:58

More on Timescales Preview 03:52

More Features Preview 01:44

Wires and Registers Preview 02:16

Learn about the net elements of Verilog.

Number Representation: Logic Values Preview 03:51

Learn the syntax to represent Logical Values in Verilog.

Number Representation: Integers Preview 03:25

Learn the syntax to represent integers in Verilog.

Logic Gates Preview 01:07

Learn about these primitives of Verilog.

The Basics

Put what you've just learned so far to the test!

Higher-Level statements Preview 00:54

Learn an easier way to enter your circuit behavior in Verilog.

Data Assignments Preview 01:47

Learn your options when it comes to performing different assignments in Verilog.

Multiplexers and Demultiplexers Preview 00:19

Learn one way to implement multiplexers and demultiplexers in Verilog.

case statements

Tinker with what you've just learned! This time you'll see a case implementation of the majority function.

if-else

Let's see a demultiplexer implemented with an if-else statement.

Hardwired assign

Let's see the assign keyword in action!

Tri-State Buffers in Veriog Preview 03:41

Learn how to make Tri-State Buffers in Verilog.

Tri-State Buffer Implementation in Verilog Preview 01:10

Let's see an implementation of Tri-State Buffers in Verilog.

Sequential Logic Preview 07:21

Learn how to implement state machines in Verilog.

Sequential Logic Example in Verilog Preview 01:03

Blocking vs Nonblocking Assignments Preview 03:18

Assignment example in EDA Playground Preview 02:44

Go ahead and download the code to try it yourself!

Blocking Results Preview 03:14

Nonblocking Results Preview 03:21

Nonintuitive Results Preview 01:00

Let's make a 4-bit Adder! Preview 02:19

A Verilog Implementation Preview 04:52

Download the code for your own simulations.

Simulating with Multiple Source Files Preview 01:47

Simulation Preview 00:52

Test Bench Preview 01:52

Propagation Delays Preview 04:12

An Alternative Implementation in Modelsim Preview 03:23

Code Available for Download!

Multiple Bit Signals in Modelsim Preview 04:14

Design an ALU

An Arithmetic Logic Unit is one of the main elements inside a CPU. It's a combinational circuit that takes in an operation code and two operands, and outputs the result of performing the selected operation on the provided operands at all times. Your task is to design an ALU.

Let's make an Up/Down Counter! Preview 01:27

A Verilog Implementation Preview 02:50

Source code available for download :)

Simulation Preview 01:46

Design a Digital Clock

In this assignment, you'll design the sequential part that makes a digital clock work.

Think of all the things we learned! Preview 01:58

Let's take a moment to look back and think of all the things we learned in this course.

What's Next Preview 02:25

Listen to the next steps we recommend in your journey on FPGA embedded applications!

Farewell Preview 00:41

Verilog Basics Assessment

Test yourself in Verilog basic concepts.

Bonus Lecture: LabsLand and more from Closure Labs! Preview 01:04