Amazon Video

Introduction to FPGA Part 1 – What is an FPGA? | Digi-Key Electronics

A field-programmable gate array (FPGA) is an integrated circuit (IC) that lets you implement custom digital circuits. You can use an FPGA to create optimized digital logic for things like digital signal processing (DSP), machine learning, and cryptocurrency mining. Because of the FPGA’s flexibility, you can often implement entire processors using its digital logic. You can find FPGAs in consumer electronics, satellites, and in servers used to perform specialized calculations.

In this series, we will see how an FPGA works and demonstrate how to create custom digital logic using the Verilog hardware description language (HDL).

In this first episode, we examine why you might use an FPGA over other solutions, such as a microcontroller. Additionally, we present several example FPGA applications and cover the basic design flow for creating a digital design in an FPGA.

A written version of this video can be found here:

All code examples and solutions for this series can be found here:

You will need an iCE40 development board for this series. Any of the boards supported by apio ( should work. That being said, I recommend the iCEstick (, which is what I will use in the videos. You will also need a breadboard, jumper wires, and some pushbuttons.

An FPGA is made up of many programmable logic blocks (PLBs) that can be configured and connected together to create a large number of digital circuits. You create your desired digital circuit using an HDL (we will use Verilog). The synthesis tool converts your HDL into a gate-level representation of the circuit. The place-and-route tool converts that representation into actual configuration information for your particular FPGA.

Throughout the series, we will use the apio tool ( to manage the build and upload process. Apio relies on underlying tools to complete these steps:

– Synthesis:
– Simulation:
– Place and route:
– Package: icepack (as part of Project IceStorm:
– Upload: iceprog (as part of Project IceStorm:

Many times, a microcontroller, microprocessor, or graphics processing unit (GPU) is capable of accomplishing the job. However, you sometimes need custom digital logic for your particular application, which is where an FPGA can be helpful. Here are some potential applications:

– Parallel I/O operations
– Data acquisition (DAQ)
– Specialized computations
– Custom processor

Note: while yosys officially supports Verilog-2005, you can find other open source tools capable of synthesizing other HDLs. For example the GHDL project ( supports VHDL.

In the next episode, we will install the apio toolset and upload our first FPGA design.

Product Links:

Related Videos:

Related Project Links:

Related Articles:

Learn more: –
Digi-Key’s Blog – TheCircuit
Connect with Digi-Key on Facebook
And follow us on Twitter

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.