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.
Bestseller
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
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++).
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
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
00:40

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
00:28
+ Hardware Description Languages
4 lectures 09:31

Get to know HDLs and their use.

What exactly is a Hardware Description Language?
02:34

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

Concurrent Design
02:12

Meet the two industry standard HDLs out there.

Verilog and VHDL
03:39

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

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

Let's start our refresher on digital circuit design!

Digital Circuit Design
02:02

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

Logic Gates
00:47

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

Boolean Algebra
00:16

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
04:12
Combinational Logic - Logic with Multiplexers
02:54
Combinational Logic - Logic with Demultiplexers
02:01
Combinational Logic - Inside Multiplexers and Demultiplexers
02:56
Arithmetic with Gates
05:43
Sequential Logic
05:52
Tri-State Buffers
05:04
+ The Verilog Hardware Description Language
6 lectures 21:48

Learn about concurrent logic in Verilog modules.

Before we start...
02:55

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

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

Learn about descriptive modules and test bench modules.

Verilog Code Structure
03:52

Learn about the elements in a descriptive module.

Descriptive Modules
04:26

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

Test Bench Modules
06:43
Some details about Verilog
00:47
+ Software Tutorial
2 lectures 07:52
EDA Tools
02:34
Typical Steps in EDA Suites
05:18
+ Quick Overview of EDA Playground
8 lectures 39:31
Creating a Playground
04:41
Setting up a Playground
04:19

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

Entering Descriptive Code
06:44
Entering Test Bench Code
03:23
Entering display System Tasks
05:24
Simulating with display Tasks
04:28
Simulating with EPWave
05:29
Simulating with GTKWave
05:03
+ Quick Overview of Modelsim
6 lectures 21:53
Download and Installation Tips
04:04
Compiling
04:36
Simulation Setup
01:39
Waveform Simulation
05:58
More on Timescales
03:52
More Features
01:44
+ Coding Elements of Verilog
16 lectures 40:32

Learn about the net elements of Verilog.

Wires and Registers
02:16

Learn the syntax to represent Logical Values in Verilog.

Number Representation: Logic Values
03:51

Learn the syntax to represent integers in Verilog.

Number Representation: Integers
03:25

Learn about these primitives of Verilog.

Logic Gates
01:07
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
00:54

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

Data Assignments
01:47

Learn one way to implement multiplexers and demultiplexers in Verilog.

Multiplexers and Demultiplexers
00:19
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.
if-else
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
03:41

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

Tri-State Buffer Implementation in Verilog
01:10

Learn how to implement state machines in Verilog.

Sequential Logic
07:21
Sequential Logic Example in Verilog
01:03
Blocking vs Nonblocking Assignments
03:18

Go ahead and download the code to try it yourself!

Assignment example in EDA Playground
02:44
Blocking Results
03:14
Nonblocking Results
03:21
Nonintuitive Results
01:00
+ A Combinational System Example
8 lectures 23:31
Let's make a 4-bit Adder!
02:19

Download the code for your own simulations.

Preview 04:52
Simulating with Multiple Source Files
01:47
Simulation
00:52
Test Bench
01:52
Propagation Delays
04:12

Code Available for Download!

An Alternative Implementation in Modelsim
03:23
Multiple Bit Signals in Modelsim
04:14
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!
01:27

Source code available for download :)

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