What is an FPGA?

Short for field-programmable gate array, an FPGA is a semiconductor device on which you can define its function after manufacturing. You can program features and reconfigure hardware for new applications on the FPGA even after it has been sent out and installed in a system “in the field.” Hence, “field programmable!” The “gate arrays” half of the acronym, on the other hand, refers to two-dimensional arrays of logic gates. Logic gates, which perform simple logic operations on signals, can be linked together to do meaningful computations. FPGAs thus allow designers and engineers a lower risk, cost- and time-effective way to change how parts of a system work, as opposed to changing other integrated circuits like ASICs and ASSPs. Basically, an FPGA gives users flexibliity when it comes to designs. It withstands changes without incurring huge amouts of cost or risk of delays.

Unlike the early days of FPGAs, FPGAs today are comprised of much smaller subsystems, as designers placed more power into a smaller space. Thus, these smaller components can compute faster and utilize less power. Current FPGAs have programmable logic elements, aptly coined logic elements (LEs). The LEs can do logic operations as basic as “and” and “or,” or connect to create a complex function.

Even though it’s not practical to solely use an FPGA for basic operations like “and,” “or,” or “not” when an FPGA has much powerful capabilities, operating the hardware is not actually as complicated as it may appear. Though we spoke of logic gates and elements to aid in construction of simple or complex functions, FPGA designers have actually done a good amount of the work already. The already programmed functions, such as peripheral component interconnect Express (PCI) controllers, dynamic random access memory (DRAM) controllers, etc., can be customized and tailored to the users’ needs.

To better understand an FPGA, it is worthwhile understanding what components make up the device. There are three pieces: a register, a logic gate, and a wire. A register remembers information until it is told to remember something else. A logic gate executes simple logic operations on signals. A wire connects a register and a logic gate.