Recent Posts
- Can smart instruments help predictive maintenance?
- What’s holding up use of hydrogen as a fuel?
- How do I find/choose a system integrator for a mechatronics project?
- How do Hall sensors work?
- What is a successive approximation ADC?
- Where can I pursue machine vision training?
- What is a magnetic multipole?
- How does a digital filter work?
- Is a chemistry background important for a mechatronics engineer?
- How old is the RCA connector standard?
Recent Comments
- ARYAM on How do I find/choose a system integrator for a mechatronics project?
- Mikel Lozano on What is the ideal background for a mechatronics engineer?
- Hero999 on Is ac current more dangerous than dc?
- Jon Hind on How old is the RCA connector standard?
- wpolk on How can I get a master’s degree in automation and control?
Most Commented On
- For a fail-safe 24 V dc auxilary supply, is it better to use 12 batteries of 2 V each, or two 12 V batteries? (3)
- How old is the RCA connector standard? (2)
- What are top-down and bottom-up design methods? (2)
- What is the ideal background for a mechatronics engineer? (2)
- Would highway automation work for a highway designated for automated cars only? (2)
Archives
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
Blog
What’s an FPGA, and what’s it good for?
August 13, 2007
FPGA stands for “field programmable gate array,” which is pretty self-explanatory. An FPGA is an integrated circuit containing a large number of “logic blocks,” which the user can program (and in most cases re-program) to provide the functions of logic gates. A sufficiently large (measured by total number of logic blocks) FPGA can be programmed to embody any Boolean algebraic expression. They are “field programmable” when their characteristics are such that they can be reprogrammed by electrical circuits sourcing relatively low voltages and currents compatible field deployment. Many also include registers for use as memory elements.
FPGAs’ advantages over competing means to create computing engines include relatively high speed, real-time performance, rapid and inexpensive reconfigurability, and low cost in small unit volumes. Most commonly, FPGAs are used to create digital signal processing (DSP) engines for prototype or low-production-volume real-time embedded systems. Alternatives include application specific integrated circuits (ASICs), which tend to perform the same computations at higher speeds. ASICs, however, are not reprogrammable (unless part of the circuitry includes FPGA functionality), and are more expensive in low unit volumes.
Often, embedded system designers plan their designs for FPGAs, which are a better choice at the prototype and pilot production stages, then port them to ASICs or full-custom ICs when the design has been tested out and production volumes become high enough to make economic sense. FPGAs also make good platforms for special purpose systems requiring higher speed real-time performance than is possible using microprocessor-based computing engines.
Being programmable, FPGAs require a program written (typically) in the VHDL hardware description language. While VHDL is a human-readable language, most developers prefer to use more general-purpose tools, such as those available from
Users then test the FPGA-based hardware system to make sure that the algorithm works as required. The FPGA’s reprogrammability allows users to modify and retest the algorithm rapidly and at low cost through many iterations until the code has been optimized.
For pilot production, FPGAs provide an inexpensive option when unit volumes are too low to justify the cost of designing an ASIC or custom IC. As production volumes rise, the FPGA’s VHDL program provides the starting point for the high-volume chip’s design.
FPGAs also can make sense as a component of a high-volume design that may be expected to undergo firmware revisions. For example, an ASIC incorporating an FPGA block can accommodate additional features or addition of optional system hardware that may not be available when the system originally was deployed. Adding the new functionality only requires downloading a new VHDL program, not replacing the entire chip.
High-speed real-time control is an obvious application for FPGAs, including many mechatronic applications. Industrial control systems are often one-of-a-kind designs and often require revisions. Single-chip embedded controllers based on large FPGAs can have much smaller footprints than microprocessor-based systems as well.
Of course, any complex relay-based control system can be readily replaced with a small FPGA and power amplifiers to drive high-current loads. Such a replacement system can generally be expected to take up a small fraction of the space, use a fraction of the electricity, and switch at vastly higher speeds. And, reprogramming an FPGA is simpler, faster and easier than rewiring a relay bank.
Posted by Charlie Masi on August 13, 2007 | Comments (0)



