Here at Digilent we frequently talk about the different applications and uses for FPGAs, but admittedly we rarely cover another topic… what exactly is an FPGA? In an attempt to address this question, today we will provide a brief overview of just that.
FPGAs, or Field Programmable Gate Arrays, are devices that allow one to create their own digital circuits. They provide a cost-effective way to repeatedly test new designs. From the Introduction to FPGA Boards article on the Digilent Wiki:
The FPGA can be configured many thousands of times into a virtually unlimited number of circuits, making it an ideal tool for learning about digital circuits and systems. In fact, FPGA’s have gained wide acceptance in the electronics industry for the same reason—they can quickly be configured into virtually any circuit (and even entire computer systems), allowing engineers to thoroughly study designs before they are built commercially.
FPGAs provide a valuable and accessible way to prototype designs, as opposed to designing a custom ASIC (Application Specific Integrated Circuit). Because the FPGA is reusable, and the architecture is not fixed, the designer is able to iterate and optimize as needed, without risking often insurmountable costs and long prototyping lead times.
This is part of why they are such a popular choice for learning and personal use.
To get started designing a custom application, we recommend a low cost development board such as the Arty from Digilent. Digilent FPGA boards can be programmed in two ways: directly from a PC via a USB cable and from an on-board Platform Flash ROM that is also user-programmable itself. The Xilinx chips can be programmed using the “JTAG” port (JTAG being an acronym for the “Joint Test Action Group,” which is a group composed of member companies interested in ensuring that test and programming ports evolve to use a common interface). JTAG ports are commonly used for moving test data between computers and integrated circuits, and they are increasingly used for transferring configuration data as well. It is in the programming stage that custom designs can be implemented in the hardware.
If you happen to have any experience with microcontrollers, some of this may sound a bit familiar. However, FPGAs are different, as you have control over the hardware in addition to the software. Even though FPGAs are a bit more complicated at times, the greater degree of control is often worth it.