The Basic VHDL tutorial series covers the most important features of the VHDL language. This VHDL course for beginners will help you understand the fundamental principles of the language. It is a primer for you to be able to excel at VHDL.
If you are unsure of what VHDL is, start here: What is VHDL?
How to get started
No hardware is required, meaning you can start right away! The VHDL tutorial exercises are run only in a VHDL simulator. I use the ModelSim VHDL simulator in this series.
Questa is just another version of ModelSim. They look identical, and you won’t notice any difference. Use whichever you have.
Your first step should be to install a VHDL simulator:
Click here and choose one of the free Questa options!
Questa is the most common VHDL simulator and, therefore, the one you will most likely encounter in your first job. Being familiar with the industry standard of simulators is advantageous. You can put that on your resume to make it more relevant.
Course material
Use the form below to download the course material Zip with exercises and answers.
I recommend that you use the .vhd files in the exercise folder as a starting point for each of the lessons. This will save you from repeating the same code over and over.
Get free access to the Basic VHDL Course
Download the course material and get started.
You will receive a Zip with exercises for the 23 video lessons as VHDL files where you fill in the blanks, code answers, and a link to the course.
By submitting, you consent to receive marketing emails from VHDLwhiz (unsubscribe anytime).
For each lesson, open the corresponding .vhd file from the exercises folder. You only need to replace the TODO comments with your code to complete each exercise. You are only allowed to peek at the .vhd file from the answers folder if you run into problems 🙂
Exercises
Each of the tutorials covers one basic concept. Start by clicking the first banner to get your development environment up and running. Try out the exercises on your own computer.
Start with number 1 and work your way down to number 23, which is the final one. After each section, you can take the VHDL quiz to test your skills as you progress.
You can ask questions and discuss the tutorials in our private Facebook group.
Click the images below to get started!
Part 1
In part 1 of the VHDL tutorial series, you will become familiar with the tools of the trade. If you haven’t done so already, you will begin by installing the VHDL simulator and code editor.
You will write and run your first VHDL program in the very first tutorial. You will learn the core features of the VHDL language, such as printing text to the console, and three different loop statements.
We will explore some peculiarities that arise due to the fact that VHDL is a parallel programming language made for creating digital logic. You will learn how to operate the most important tool that the digital logic engineer has, namely the VHDL simulator.
Install a VHDL simulator and editor for free
Your first VHDL program:
Hello World!
How to delay time in VHDL:
Wait For
How to use Loop and Exit in VHDL
How to use a For-Loop in VHDL
How to use a While-Loop in VHDL
Part 2
Now that you are starting to get familiar with the VHDL language, it is time to dive deeper into some of the concepts that are unique to hardware description languages.
You will learn how a bit, the value that can be carried by a single wire, can be represented in VHDL. You will also see that while VHDL has variables, like any other programming language, signals are actually the preferred storage unit in digital design.
After this section, you will know the difference between a signal and a variable. You will also have touched on the subject of inter-process communication by using signals and sensitivity lists.
How a signal is different from a variable in VHDL
How to use Wait On and Wait Until in VHDL
How to use conditional statements in VHDL:
If-Then-Elsif-Else
How to create a process with a Sensitivity List in VHDL
How to use the most common VHDL type:
std_logic
How to create a signal vector in VHDL:
std_logic_vector
Part 3
In part 3 you will learn how integer numbers are represented in VHDL. You will see how the fine-grained control we have over bits in VHDL can be used to your advantage. We will explore some of the pitfalls of working with numbers at the bit level.
You will learn how to create a module in VHDL. You will also learn about some basic building blocks of digital design; the multiplexer and the flip-flop.
After this section, you will know the difference between a concurrent process and a clocked process in VHDL.
How to use Signed and Unsigned in VHDL
How to create a Concurrent Statement in VHDL
How to use a Case-When statement in VHDL
How to use Port Map instantiation in VHDL
How to use Constants and Generic Map in VHDL
How to create a Clocked Process in VHDL
Part 4
In the last section of this VHDL course, we will start by creating a fully functional timekeeping module in VHDL. You will learn the difference between simulation time and real-time in VHDL.
You will use what you have learned to solve a real-life problem. We will create a traffic lights control system for managing a road intersection. While doing so, you will learn about one of the most important concepts in digital design, the finite-state machine.
Finally, you will learn to factor out repetitive code into subprograms like functions and procedures. Divide and conquer is the only viable strategy for surviving as a VHDL engineer in the long run.
How to create a Timer in VHDL
How to use a Procedure in VHDL
How to create a
Finite-State Machine
in VHDL
How to use a Function in VHDL
How to use an
Impure Function
in VHDL
How to use a Procedure in a Process in VHDL
Where to go from here
First of all, congratulations to you for completing the Basic VHDL Tutorial. Well done!
With your newly acquired VHDL skills, it’s time to take things a bit further. You should get your hands on a development board if you are serious about VHDL and FPGAs. FPGA development boards can cost as little as $25. One such board which I have used a lot and recommend is the Lattice iCEstick.
I’m using the Lattice iCEstick in the advanced Dot Matrix FPGA course and in the Fast-Track beginner’s VHDL course. Read more about the Fast-Track VHDL and FPGA course below!
Are you familiar with programming but new to VHDL?
Do you need a short introduction to this unfamiliar subject?
Is your schedule full with no time left to study?
Understand the basics of FPGA development using VHDL in a few evenings! This course is for IT professionals and students who need a fast run-down of the subject. With this course and the low-cost Lattice iCEstick development board, you will be developing real hardware within hours.
Click here to read more and enroll:
FPGA and VHDL Fast-Track: Hands-On for Absolute Beginners
Join the Facebook group
You can ask questions about these tutorials in our private Facebook group. Click the image below to join the Facebook group! Remember to answer the two simple questions when you request to join.
Other resources
Here are a few other blogs and VHDL tutorial sites online: