FPGA Cookbook

Hardware Description Languages (HDL)

As the name suggests, these languages are used to describe more or less complex circuits. The first HDLs were developed in the 80s with the basic idea that you can simulate digital circuits before you actually build them. The currently most used and probably the most advanced HDLs are VHDL and Verilog. But over time, FPGAs and CPLDs became cheaper and different projects were started with the aim of making this technology accessible to everyone. Based on the basic idea that many roads lead to Rome, several HDLs with different focuses have also been developed in recent years.

Verilog (Verilog HDL) and VHDL (VHSIC HDL)

VHDL is the short name for Very High Speed Integrated Circuit Hardware Description Language. Verilog and VHDL are languages for the description of digital systems. Both were developed in the early 80’s and are the defacto standard in the industry. Since not everyone is interested in the historical background at this point, I refer to Wikipedia.

Wikipedia VHDL: https://en.wikipedia.org/wiki/VHDL
Wikipedia Verilog: https://en.wikipedia.org/wiki/Verilog

Advantages of HDLs

One of the advantages of HDLs (probably the main benefit) is that the circuit described in the editor can be simulated first. This way, you can rule out many errors before you integrate the described circuit into a more complex circuit. You can even write tests in the more advanced editors and have the calculated timings displayed at every important point. So you can estimate in advance whether the circuit works as it should or not. With sufficient experience, you can even intervene in the automatic creation of the circuits and thus further improve the result. And if, despite all efforts, an error still occurs or if the requirements change, the circuit can simply be “reprogrammed”. So these fixes or improvements does not require any changes to the circuit board itself.

The main difference between PLs and DLs

It is important to understand the main difference between a programming language and a description language. With a programming language (such as C++) you can write a program with loops and objects and a situation-related program flow. With a hardware description language (such as VHDL or Verilog) you can configure a FPGA to be the cpu on which the program runs.