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.

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.

VHDL Code Quiz - Part 1

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.

VHDL Tutorial Code Quiz - Part 2

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.

VHDL Code Quiz - Part 3

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.

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!

FPGA and VHDL Fast-Track:
Hands-On for Absolute Beginners
Lattice iCEstick and 7 segment display

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.

VHDL for FPGA Engineers

Other resources

Here are a few other blogs and VHDL tutorial sites online: