The Basics You Need To Know About FPGA Programming

Small processors have become the biggest selling category of computers. They also form the foundation basis of a large number of embedded systems. The first microprocessors that had single-chip installations contained about ten thousand logical gates and ten thousand memory bits. In the present day, FPGAs, or Field Programmable Gate Arrays, make available single chips that contain almost ten million logical gates and ten million memory bits.

FPGA Programming – What is it?

All FPGAs are is a type of reconfigurable and logical block (DSP components, memory elements, logic gates, etc.) and also interconnects. Actually, the process of FPGA programming does the work of re-configuring FPGAs using Verilog/VHDL, or Hardware Description Language., to connect logical blocks. It also interconnects in a particular way, such that it performs specific functionalities (processors, adders, filters, dividers, multipliers, etc.).

FPGA: The Programming Language

The programming language of FPGA is regularly called Hardware Description Language because the language is used to design or describe hardware. VHDL and Verilog HDL are the two most major Hardware Description Languages.

Verilog, deriving from the terms “Verification” and “Logic,” was created originally by D. Warmke and P. Moorby, P. Goel, C.-L. Huang in 1984. This was used to perform simulation and model gates within a logical simulator. The Cadence company acquired Verilog in the year 1990 and it became the IEEE Standard 1364 in the year 1995. In the present day, the common use of Verilog is for the verification and designing of various digital circuit types, along with mixed or analog circuits.

VHDL is a form of Very High Speed and Integrated Circuits (VHSIC) Hardware and Description Language. This was developed initially by the US Defense Department in order to develop and research integrated high-speed circuits within the 1980s. VHDL got recognized as an IEEE standard 1076 in the year 1987. In the present day, VHDL mostly is used to the modeling of analog and digital signal circuits, like FPGA, and also ASICs. The Verilog HDL language is very similar to the C programming language, with regards to keywords, case-sensitive, operators, and other similarities. VHDL is highly similar to the Ada language of programming, especially since it was built initially based on the properties of the Ada language. Even though many similarities remain regarding the syntax of HDLs and programming software languages, the programming of FPGA is absolutely different from standard software programming.

The Key Differences Between Software Programming and FPGA Programming

The explicit and distinct differences between the concept of FPGA programming and the practice of software programming lies in the way the instructions are implemented. With regards to instruction execution, software programming instructions (in languages such as Ada, C, etc.) are executed sequentially, while the instructions within Verilog/VHDL FPGA programming have a parallel execution order (with the exception of blocking assignments within Verilog, as well as variable assignment in VHDL processes). Most importantly, the main purpose of FPGA design or FPGA programming is to design logical digital circuits in order to define behaviors of FPGAs, whereas software programming focuses on the executions of a series of sequential instructions in order to perform specific behaviors in software.

As you begin FPGA programming, it’s essential to not try and implement the same behavior of coding that you would do in software programming. Many technical students take the same software programming practices they use when implementing software, and try to apply it to FPGA programming in order to implement and design digital circuits that are synthesizable on FPGA. This is a very bad habit to develop and execute when it comes to FPGA coding.

The use of synthesizing tools may also take a very long duration process in order to synthesize code of this type. In addition to this, synthesis software has the habit of constantly synthesizing, up until the point that it overflows RAM computers. This overflow will force you to close your software, which also means re-running the software in order to finish your task. Thus, you should start getting into the habit of thinking about the logic circuits you want to use in order to implement the functionality you desire while you perform the actual FPGA programming. This is the reason why when it comes to FPGA programming, normally programmers design the basic logic circuits or architecture that is based on the specification of the project before starting to code.

How Can You Get Started with FPGA Programming? What is the Design Flow of FPGA Programming?

Have a Background in Digital Logic Design

To startup with FPGA programming, it’s important to have an adequate background in digital logic design. In this way, you’ll be familiar with logic gates, logic values, and sequential and combination logical circuits.

VHDL language/Verilog

Following this knowledge, you can add VHDL/Verilog to start programming FPGAs. VHDL/Verilog is the language of the hardware description. As mentioned before, it’s important to forget the concepts of software coding and instead think about logical gates as well as circuits in order to implement the functioning segments that you’ll want to execute on FPGAs. In order to learn the language, it’s important to continue to practice coding and design when you have spare time.


If you want to practice the art of FPGA programming, a critical step is to practice simulation before implementation and synthesis. To perform simulation is the act of verifying the correctness and functionality of the VHDL/Verilog code that you create. Many simulators exist, however, Modelsim is a popular and very common simulator used for the art of functional simulation. In addition, you have to create a test bench that will give every possible combination input value in order to complete design verification. It’s fine if the test bench coding style isn’t too restrictive, like software style coding (i.e. while loops, for loops, etc.) in order to generate the functional simulation input patterns.


After you verify your design successfully in functional simulation, it’s important to start thinking about your next steps of implementation and synthesis. Two very popular implementation and synthesis tools for FPGAs are Quartus II for Intel FPGAs and Xilinx Vivado/ISE Design suite. Tools such as these can be purchased at trusted vendors. Note that you have the ability to simulate designs using these tools. These tools allow code synthesizing and generating bit files used in FPGA programming.

In conclusion, these factors written above are essential to start yourself up with FPGA programming and the concepts of programming performed on FPGA boards. In order to get started, you have to purchase an FPGA board in order to practice programming for FPGA. Make sure you use a trusted vendor such as Direct Components Inc, to purchase the components you need in order to see the action of what is occurring on actual circuits with the code you implement.