FPGA Embedded Design, Part 1 - Verilog
4.3 (537 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
1,927 students enrolled

FPGA Embedded Design, Part 1 - Verilog

Learn FPGA embedded application design starting with the basics and leaving with your own working designs.
4.3 (537 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
1,927 students enrolled
Last updated 6/2020
English [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 3.5 hours on-demand video
  • 8 articles
  • 5 downloadable resources
  • 1 Practice Test
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Design hardware behavior with the Verilog Hardware Description Language
  • Simulate Verilog Modules.
  • The FPGA Embedded Design curriculum will take you by the hand through learning Verilog, 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 will take place in a series of courses. 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++).
  • 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.

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
Expand all 74 lectures 03:42:53
+ Introduction
6 lectures 09:44

Learn the logistics of the course.

Preview 03:25

Meet the instructor. See the big picture.

Instructor Introduction

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

Preview 03:00

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.

Preview 00:44

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. 

Useful Software
+ Hardware Description Languages
4 lectures 09:31

Get to know HDLs and their use.

What exactly is a Hardware Description Language?

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

Concurrent Design

Meet the two industry standard HDLs out there.

Verilog and VHDL

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

Other HDLs
+ [Optional] Refresher on Digital Circuit Design
11 lectures 36:18

Let's start our refresher on digital circuit design!

Digital Circuit Design

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

Logic Gates

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

Boolean Algebra

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

Combinational Logic - Muxes and Demuxes
Combinational Logic - Logic with Multiplexers
Combinational Logic - Logic with Demultiplexers
Combinational Logic - Inside Multiplexers and Demultiplexers
Arithmetic with Gates
Sequential Logic
Tri-State Buffers
+ The Verilog Hardware Description Language
6 lectures 21:48

Learn about concurrent logic in Verilog modules.

Before we start...

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

No, Wait. This is all concurrent!

Learn about descriptive modules and test bench modules.

Verilog Code Structure

Learn about the elements in a descriptive module.

Descriptive Modules

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

Test Bench Modules
Some details about Verilog
+ Software Tutorial
2 lectures 07:52
EDA Tools
Typical Steps in EDA Suites
+ Quick Overview of EDA Playground
8 lectures 39:31
Creating a Playground
Setting up a Playground

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

Entering Descriptive Code
Entering Test Bench Code
Entering display System Tasks
Simulating with display Tasks
Simulating with EPWave
Simulating with GTKWave
+ Quick Overview of Modelsim
6 lectures 21:53
Download and Installation Tips
Simulation Setup
Waveform Simulation
More on Timescales
More Features
+ Coding Elements of Verilog
16 lectures 40:32

Learn about the net elements of Verilog.

Wires and Registers

Learn the syntax to represent Logical Values in Verilog.

Number Representation: Logic Values

Learn the syntax to represent integers in Verilog.

Number Representation: Integers

Learn about these primitives of Verilog.

Logic Gates
Put what you've just learned so far to the test!
The Basics
3 questions

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

Higher-Level statements

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

Data Assignments

Learn one way to implement multiplexers and demultiplexers in Verilog.

Multiplexers and Demultiplexers
Tinker with what you've just learned! This time you'll see a case implementation of the majority function.
case statements
2 questions
Let's see a demultiplexer implemented with an if-else statement.
2 questions
Let's see the assign keyword in action!
Hardwired assign
2 questions

Learn how to make Tri-State Buffers in Verilog.

Tri-State Buffers in Veriog

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

Tri-State Buffer Implementation in Verilog

Learn how to implement state machines in Verilog.

Sequential Logic
Sequential Logic Example in Verilog
Blocking vs Nonblocking Assignments

Go ahead and download the code to try it yourself!

Assignment example in EDA Playground
Blocking Results
Nonblocking Results
Nonintuitive Results
+ A Combinational System Example
8 lectures 23:31
Let's make a 4-bit Adder!

Download the code for your own simulations.

Preview 04:52
Simulating with Multiple Source Files
Test Bench
Propagation Delays

Code Available for Download!

An Alternative Implementation in Modelsim
Multiple Bit Signals in Modelsim
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.
Design an ALU
3 questions
+ A Sequential System Example
3 lectures 06:03
Let's make an Up/Down Counter!

Source code available for download :)

A Verilog Implementation
In this assignment, you'll design the sequential part that makes a digital clock work.
Design a Digital Clock
1 question