VHDL TUTORIAL for beginners

This tutorial is intended for beginners who wish to learn VHDL.


Hardware Description Language ( HD) is used to model digital circuils using codes. VHDL is one such code ( Verilog is another type). We will not go into the details of the programming language itself which you can find in other tutorials or in books. Instead, we will give examples of working code and real life examples.

After following this tutorial, you should be able to write VHDL codes for simple as well as moderate complexity circuits. To begin the tutorial, you need a tool so that you can compile your program and execute the simulation. While there are a number of tools available, we have chosen Xilinx for this tutorial. It has a nice User Interface and is great for learning as well as for designing professional FPGAs. The drawback is that - it is very big in size - so downloading takes a huge lot of time. Most of the concepts presented in the tutoriaL should also apply to other tools as well.

You can download the Free Xilix ISE tutorial from the site


This one is a paid verion http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm - that you do not need

Scroll down to Windows indtaller. You will need a corporate account to be able to download. It is a big 6.2 GB File so be pateint. It will typically take 6 to 8 hours on a decent connection. The best thing to do would be to start download so that it is ready by the time you get up.

So take a good nap and come back once you have downloaded it.

Some more Commentary on VHDL

VHDL stands VHSIC hardware description language and was originally developed for the US Department of Defense in order to document the behavior of the ASICs that supplier companies were including in defence equipment.

The Defense department required as much of the syntax as possible to be based on Ada. As a result of this VHDL borrows heavily from the Ada programming language in both concepts and syntax.

The initial version of VHDL, designed to IEEE standard 1076-1987, included a wide range of data types, including numerical (integer and real), logical (bit and boolean), character and time, plus arrays of bit called bit_vector and of character called string.

A problem not solved by this edition, however, was "multi-valued logic", where a signal's drive strength (none, weak or strong) and unknown values are also considered. This required IEEE standard 1164, which defined the 9-value logic types: scalar std_logic and its vector version std_logic_vector.

The updated IEEE 1076, in 1993, made the syntax more consistent, allowed more flexibility in naming, extended the character type to allow ISO-8859-1 printable characters, added the xnor operator, etc.[specify]

Minor changes in the standard (2000 and 2002) added the idea of protected types (similar to the concept of class in C++) and removed some restrictions from port mapping rules.

Throughout this tutorial will will cover the aspects of the hardware design rather than the language.