What Is An FPGA?
Digital circuits nowadays have thousands of logic gates inside of them.
To achieve such complex systems like stock trading systems, electronic warfare processing systems and even digital signal processing systems you need thousands of logic gates and probably even more.
As an engineer, how do you go about designing, testing and manufacturing these systems?
Today I am going to explain what an FPGA is and why we use them.
What is an FPGA?
An FPGA is an integrated circuit that is used to implement digital logic circuits.
These circuits can be as simple as an AND gate, or as complex as a fighter jet radar system.
FPGA is an acronym which stands for Field Programmable Gate Array.
The great thing about FPGAs is that they are programmable.
You can describe the type of digital logic circuit that you want, program that description into the FPGA and the FPGA will implement the logic elements necessary to achieve the same function as the digital logic circuit you described.
Basic Elements Of An FPGA
All FPGAs are made of a matrix of configurable logic blocks.
These logic blocks are connected to each other via programmable interconnects.
Configurable Logic Block (CLB) — A small section of the FPGA that has logic elements inside of it such as multiplexors, flip flops, shift registers, adders etc.
Programmable Interconnect — A piece of logic that can connect or disconnect the signals from one CLB to another CLB
All CLBs have what are called Lookup Tables (LUT for short) in them. Lookup tables can implement any piece of combinatorial logic that you can think of.
Lookup Table (LUT) — A lookup table is an assortment of multiplexors that cascade and connect to one another. Through the use of multiplexors, you can create any combinatorial truth table you can think of in digital logic design.
What can I do with an FPGA?
Anything that requires custom digital logic designs you can use an FPGA for.
FPGAs are really good at processing a lot of data quickly.
If you need data computed quickly, FPGAs can most likely do it.
Here is a list of different use cases for FPGAs.
- Aerospace and Defense
- Software defined radio
- Speech recognition
- Image processing in cars and displays
- Vehicle networking and connectivity
- Cable boxes like the ones you get from Optimum or Verizon
- Digital signal processing applications
- Data center servers, routers and switches
- Data mining systems
- High performance computing
- Industrial motor control
- High frequency trading on the stock market to make the big bucks $$$.
- Ultrasound in the medical field
- Base Stations for wireless communications
How Do I design with an FPGA?
To start off any design you need requirements.
What does your digital system need to do?
After you have your requirements you create what’s called a block diagram.
Block diagrams help you to see the whole picture of the digital system you want to create and how everything fits together.
A block diagram is top level view of what the whole system looks like.
To actually start designing the digital logic system to be implemented in the FPGA, you must learn how to code in what’s called a Hardware Description Language (HDL for short).
Now this is not like a normal programming language like C++ or JAVA.
A HDL describes a digital circuit.
The most common hardware description languages out there are…
- System Verilog
Once you code up a description of the circuit you want to implement, you must compile your code, and simulate it to see if it works.
Assuming your simulation comes back successful, you can now move onto what is called synthesis.
Synthesis takes your code description of the your circuit and turns it into an actual design. This is all done on the computer through software tools.
Once you have synthesized your design you need go through what is called place and route.
Place and route is where the software tools will take your synthesized circuit and determines the best way to fit it into the FPGA to meet the engineers design requirements.
There are other parts of place and route that I won’t go into here such as timing. That would require another post.
If you get past place and route with no errors then you can generate what is called the bitstream and program your FPGA! Now your design is loaded into the FPGA and it should work (keyword here is should).
If your design doesn’t work the way you expected, you can always go back and rewrite the code and reprogram the FPGA. This is the single biggest advantage of FPGAs.
Here is a step-by-step of the process I just talked about.
- Block Diagram
- Code design in hardware description language
- Compile code and simulate
- Place and Route
- Generate Bitstream
- Program Device
- Pray that you didn’t mess up (But its okay because you can reprogram the FPGA)
Where Can I Get An FPGA?
The two biggest suppliers of FPGAs are Xilinx and Intel.
There are other companies that create FPGAs such as Lattice and Microsemi.
You can buy evaluation boards from Amazon, Digikey, Mouser and most other electronic parts distributors.
There is your quick introduction to FPGAs.
I hope I gave you a quick idea of what FPGAs are and what you can use them for.
FPGAs are integrated circuits that can be used to implement a digital logic system.
The FPGA implements that system by configuring its basic elements, configurable logic blocks to create the circuit functionality.
Check out some of my other articles on Medium.