processors in demanding
applications? This is a vital
question, and its answer shines
light on why FPGAs are
increasingly proliferating in
electronic equipment these days.
For starters, programmable
logic devices are capable of
working at much higher clock
rates than eight- and even 32-bit
FPGAs easily clock at 200 to 300
MHz, and more specialized
devices such as the UltraSCALE™
products from Xilinx (see Figure
2) can handle clock frequencies
close to a GHz. This brings with
it raw power which is even more
magnified when one realizes that
FPGAs do not require so many
clock cycles to execute
algorithms as processors do.
Instead, they are simply an
interconnection of gates,
transforming bits and bytes on-the-fly in real time. Thus,
complicated algorithms that require many instructions can
be profitably implemented in an FPGA, where processing
is only limited by the propagation delay of logic gates (and
a small overhead from gate interconnections). These
features can and do make FPGAs blazingly fast when
compared to microcontrollers.
Another advantage that FPGAs have over
microcontrollers is in the sheer profusion of I/O pins they
have. Whereas a typical microcontroller may give you 20
to 30 I/O pins, even a low-end FPGA typically provides
around 50 I/O pins. Larger FPGAs sport hundreds of pins
(see Figure 3), so you almost never run out of
connectivity with the external world.
As an aside, the large number of pins means that
FPGAs come in advanced multi-pin packages such as high
pin count quad flat packs and dense ball grid arrays. This
makes it difficult to solder them to PCBs (printed circuit
boards), but as we will see in Part 2, there are ways
Added to that is the flexibility with which one can use
the I/O pins. Thus, one set of pins can handle signals at
3.3V logic levels, whereas another set handles signals at
2.5V or even 1.8V. You can mix and match I/O banks
such that it is easy to perform logic level translation from
one standard to another. Note that 5V logic levels are
usually not supported on current FPGA chips.
Yet another attractive feature of FPGAs is the large
amount of logic resources they make available at very
reasonable costs. Even a small FPGA costing about $5
comes with the logic equivalent of tens of thousands of
gates. Larger devices easily give
you access to millions of gates
inside a single chip. The logic
resources can, of course, be
interconnected (configured) in
any way you like to realize
almost any digital function; be it
as simple as a basic AND-OR-NOT logic expression or an
entire Ethernet controller.
What is more, given the large
number of I/O pins and logic
elements, you can put a lot of
completely different digital
designs in a single FPGA. This is
very useful where one wants to
consolidate a number of different
digital ICs into a single physical
package. This approach saves
money and space, making
systems smaller, lighter, and
cheaper. Logic consolidation is a
big reason for the increasing
sales of FPGAs for commercial,
industrial, and military products.
Finally, over time, FPGAs have grown into veritable
SoCs so that other useful functions (besides just an array
of uncommitted logic elements) now come integrated on
the chip. Commonly available features include phase
locked loops (PLLs) for generating almost any frequency
on a chip, embedded memory blocks, fixed (and even
floating point) multipliers, and analog-to-digital converters
High-end FPGAs also feature integrated high speed
serial data transceivers. Using these integrated functional
blocks with user defined logic, one can build extremely
complex digital systems on a single chip.
When first introduced, FPGAs may look daunting.
How do you go about building useful systems with
something that is basically just an array of logic elements?
It turns out that this is simpler than one might imagine.
You can certainly use a gate-level circuit diagram for
simple circuits, but that will probably not end up using
even 1% of the logic resources available in modern
FPGAs. Proper utilization of the power of FPGAs demands
a radically different approach to describing circuit
The secret lies in using a hardware description
language (HDL) to describe the desired functionality.
There are several of these around but two — VHDL and
Verilog — are, by far, the most common HDLs; they are
employed by 99% of FPGA users around the world. Here
is the fun part — an HDL allows a developer to describe
the desired system in a high-level form without worrying
about its exact implementation in terms of logic gates.
40 October 2017
FIGURE 3. Top and bottom of a ball grid
array (BGA) FPGA package showing large
numbers of mainly I/O pins.
(Courtesy of Lattice Semiconductor Corporation.)