# VHDL

On this page you will find a series of tutorials introducing FPGA design with VHDL. These tutorials take you through all the steps required to start using VHDL and are aimed at total beginners.

If you haven’t already done so, it is recommended that you read the posts which introduce the FPGA development process first. These give an overview of all the stages required to design an FPGA. This information will give you some important basic background knowledge which will help with these tutorials.

### Using Entity, Architecture and Library in VHDL Designs

In the first post in this series we talk about how VHDL designs are structured and how this relates to the hardware being described.

### An Introduction to VHDL Data Types

In this post we talk about the different types we can use in VHDL as well as the methods we can use to convert them.

### VHDL Record, Array and Custom Types

In this post we talk about the methods we can use to create custom data types in VHDL

### VHDL Logical Operators and Signal Assignments for Combinational Logic

In this post we look at the coding techniques which we can use to describe basic combinatorial logic circuits using VHDL.

### Using VHDL Process Blocks to Model Sequential Logic

In this post we discuss the coding methods we can use to model basic sequential logic circuits using VHDL.

### How to Write a Basic Testbench using VHDL

In this post we talk about testing our VHDL based designs using basic test benches.

### Loops, Case Statements and If Statements in VHDL

In this post we discuss some of the coding techniques we can use within a VHDL process to write more complex logic circuits.

### Using Procedures, Functions and Packages in VHDL

In this post we discuss subprograms and how we use them to write more efficient VHDL code.

### Writing Reusable VHDL Code using Generics and Generate Statements

In this post we look at how we use generics and generate statements to write reusable VHDL components.

### Using Protected Types and Shared Variables in VHDL

In this post we talk about writing objected oriented code in VHDL using shared variables and protected types