Free EASY FPGA Verilog course for beginners

Free EASY FPGA Verilog course for beginners

FREE EASY FPGA Verilog course for beginners

The EASY FPGA Verilog course for complete beginners is now online 🚀!

I know from my own experience and also from my students that Verilog and FPGAs can be very hard to understand when you are a complete beginner 😰. The steep learning curve combined with the fact that most procedural programming languages are easier to learn, make many Hardware Description Languages beginners focus their attention and future careers in other industries (read more here about the industry job shortage).

This course is the result of my 10 years of Hardware Description Languages experience as well as more than 5 years teaching beginners to interact with Verilog and FPGAs. When I was first starting out in this field I wish I had step-by-step Verilog design and simulation guidance for simple FPGA projects that can be implemented on most development boards.

This set of practical Verilog projects provide full video guidance and the downloadable resources you need to implement the first FPGA projects on your development board. Even if you don’t have a development board you can still simulate the projects and gain precious know-how about FPGA programming.

 

How is the FPGA Verilog course structured?

Each practical FPGA project has an article with two YouTube videos containing the following:

✅ Project overview and theoretical intro

✅ Verilog coding and Modelsim simulation (FREE link to Modelsim Intel FPGA Edition provided)

✅ FPGA project using Intel Quartus and FPGA demo using the DE1-SoC development board

✅ Downloadable resources so YOU can replicate the project on your development board.

Who this course is for ?

✅ Computer Science, Electrical & Computer Engineering (ECE), Telecommunications, and Microelectronics, students who want to learn Verilog for their projects and faculty assignments
✅ Electronics and Microelectronics hobbyists who want to learn the Verilog Hardware Description Language
✅ Beginners who aspire to a career as a Digital Design Engineer or a Functional Verification Engineer using Verilog
✅ Beginners in digital microelectronics and digital circuits design curious about the Verilog Hardware Description language

List of Verilog FPGA projects

Switches to LEDs
Multiplexer to LEDs
Binary Adder to 7 Segment Display
Hamming Single Error Correction Double Error Detection
FPGA Blinky LED
Pushbutton Counter with Debounce
Linear Feedback Shift Register
Verilog BCD Timer
Finite State Machine
✅ Pulse Width Modulation (TODO)
✅ VGA Controller (TODO)

But just like the song says 🤘 “A little less conversation and a little more action!”…

Let’s start the EASY FPGA course and jumpstart your Verilog and FPGAs learning!

Design a 4bit Gray counter using Verilog

Design a 4bit Gray counter using Verilog

What you’ll learn from this easy Verilog tutorial?

Project 1:

Design using Verilog a 4bit Gray encoder, a 4bit Gray decoder and simulate a testbench for them using Modelsim Intel FPGA Edition. 

Project 2:

Design using Verilog a 4bit Gray counter, and simulate a testbench for it using Modelsim Intel FPGA Edition. 

Note: You can download the Verilog design and testbench files at the end of the article. 

Gray Codes Introduction

 These binary codes were invented by Frank Gray and are now widely used to prevent spurious (glitchy) outputs from electromechanical switches, in error correction in digital communications systems or inside digital circuits for transmitting data between blocks that operate at different clock speeds (clock domain crossing).  The codes are also called Reflected Binary codes and their special property is that two successive values differ only by 1bit. There is a very high chance that all the processors in the devices around you having this type of circuit inside because their internal blocks usually operate at different frequencies depending on their functionality.

Let’s look at the rotary position encoder from the left. It has only 1bit changing under the yellow circles. This assures that only 1bit can be misinterpreted by a reading sensor when translating from one position to another. You can read a more detailed article here. To build a Nbit Gray code is quite easy and it starts from the Nbit-1 Gray values. Let’s make a simple example for a 3bit Gray code!

  1. We first need the 2bit Gray values: 00,  01,  11,  10
  2. Next create the reflected (mirrored) values: 10,  11,  01,  00
  3. Prefix old entries with 0: 000,  001,  011,  010
  4. Prefix new entries with 1: 110,  111,  101,  100
  5. Concatenate the two sets: 000,  001,  011,  010, 110,  111,  101,  100

How to create 3bit Gray codes starting from 2bit Gray codes

Gray-to-Binary and Binary-to-Gray converters are quite easy to implement in hardware. If you want to see a detailed explanation about how this circuit is created started from the truth table, I recommend this article.

4bit Binary-to-Gray and Gray-to-Binary converters

We’ll now focus on implementing a 4bit Binary-to-Gray a Gray-to-Binary converter using Verilog and Modelsim Intel FPGA Edition.

4bit Binary-to-Gray and Gray-to-Binary converters

Watch this simple, practical video and implement the Gray encoder / decoder and a testbench for them in no time!

Download the files

Gray Counter

First In First Out (FIFO) modules are the most popular blocks used to pass data between clock domains that run at different frequencies. FIFOs have a data write and a data read port which need to communicate between them how much data there is to exchange and if the FIFO is full or empty. Gray counters are extremely useful here because a normal binary counter would create many transient (glitchy) states when the write / read pointers are passed from one clock domain to another. A normal binary counter has several bits changing between two consecutive states. If we consider the propagation delay of each bit, we can have a multitude of incorrect values of the write / read pointers that could be captured in the other clock domain. For Gray counters only one bit changes between two consecutive multi-bit values so a “wrong” binary value cannot propagate thus assuring reliable operation. Let’s implement a 4bit Gray counter and a testbench for it using Verilog and Modelsim Intel FPGA Edition!

I hope you have enjoyed this practical Verilog tutorial. If you’d like to receive more articles like this from me, I invite you joining Ovisign’s newsletter!

error: Content is protected !!