I read somewhere that large organizations use FPGA boards for various purposes. What are the concrete use cases for FPGA boards (especially in those industries)?
- The Jaguar main dash display uses an FPGA to rotate and frame double the input image, which is received via FPD-link.
- We use an FPGA that emulates FPD-link for testing
- For a prototype for a specific major automaker, they wanted us to make a POC of a 4k display, used in the dash. (those gauges and dials would be sharp!). We drove the 4k display with an FPGA for the prototype because at the time there were no automotive-qualified chips available. (while the FPGAs we used are automotive qualified)
- Microsoftuses them in machine learning.
The reason to use FPGAs is generally when you want to drive a digital bus (like FPD-link or the parallel pins driving a display) at a low level, and no commercially available ASICs quite meet your needs. Or when you want to do a large, parallel, specialized calculation (like a neural network) and specialized ASICs are not available. (right now, TPUs are not available to Microsoft and I guess they don’t want to spend the money to pay for their own version of the chips)
They are heavily used in satellites and spacecraft for the reason that specific FPGAs are radiation-hardened and space certified, while most ASICs are not.
With that said, I’ve personally tried to do things with FPGAs, and similar tasks with microcontrollers. Don’t resort to an FPGA if you have any other choice.
These days, FPGAs have enough gates that you can code a microcontroller into an FPGA. You can often drastically reduce the parts count on a board by emulating other devices inside the FPGA.
This has a big advantage when your product has a very long lifespan (industrial control, aviation, etc). If your parts go obsolete and you need to create a new version of your board, if all of the important guts are in an FPGA, you just pick a new FPGA and design your board around that, and re-use all (or at least most) of your existing FPGA code.
You can also often implement control algorithms in an FPGA with faster response times and lower latencies than using a microcontroller solution. The FPGA can also often use less power, since its gates only execute the control algorithm and don’t have to execute the entire instruction fetch/decode/execute/write generic algorithm of a microcontroller.
In my personal experience, one definite down side of using an FPGA over a microcontroller is that you do occasionally get these weird glitches in the conversion from VHDL to hardware that you don’t get using a microcontroller and firmware.
Those glitches sound expensive. Also the BOM added for a single FPGA can be tens of dollars. In the automotive industry, the BOM for an entire board is frequently under $100 or just over. The only part on the board that is more than $10 is usually the main SOC, which is typically 30-50. (something like Qualcomm’s 8155, which is the automotive rated 855, is probably on the upper end of that range.)
So at least in the industry I currently work in they are rarely used in production. Reusing FPGA code does sound like it might work, although reusing very high level code that runs in a VM (and/or you have formally proven) sounds more viable. (and is done all the time, huge chunks of Android are this way)
I can’t remember where I read it, but some companies use FPGA’s for very fast parallel text based searching that compare entire sequences of characters to multiple other sequences of characters simultaneously.
This isn’t the one I had read about before, but it is a company with a product that uses FPGA for parallel text/string search:
http://titan-ic.com/faqs
The new Apple Mac Pro computer will have an optional FPGA-based board for high-performance video encoding: Unboxing the tech of the new Mac Pro by Damian Allen - ProVideo Coalition
FPGAs are increasingly used in data centers: Intel pushes FPGAs into the data center | ZDNET
Blackmagic Design uses the Xilinx Kintex-7 FPGA in some of their cameras. This allows field upgrading with new functionality that would be too performance-critical for regular software implementation, such as partial debayer of raw video.
Ham radio manufacturer Elecraft implements most of the functionality of this software-defined spectrum display via an FPGA: https://www.universal-radio.com/used/UA09Alrg.jpg
I work for a company that builds gimbaled cameras for aircraft. We use FPGAs for some specialized image processing.
I’ve also worked on scientific instruments that require an FPGA for fast Fourier transforms (FFTs). For those who aren’t familiar with the math, FFTs are used to transform signals from the time domain to the frequency domain (and vice-versa). This is a really common operation in signal processing.
Oh, another use. Basically every oscilloscope or logic analyzer you see (save analog scopes which are now rare) there is one or multiple FPGAs inside. High speed signal capture needs custom and very fast circuitry, but these scopes aren’t made in large enough volumes to fab an ASIC for this role. (Mostly, some low cost logic analyzers use a microcontroller)
Wouldn’t it have been nifty if you had said what FPGA stands for? Yes, we can Google it, but why should we have to?
I have used FPGAs for decades as part of my design and characterization flow. On the design side for validating Verilog code and on the characterization code for implementing evaluation boards. I pretty much just throw an FPGA on my evaluation board and hook up all the digital pins from my chip; I can be getting the board built while I am figuring out the RTL for the FPGA.
While we have sold a few of the evaluation boards with the FPGAs, our product is integrated circuits so we do not use FGPAs in a product.
Because everyone who uses one calls it an FPGA. Calling it a Field Programmable Gate Array would be kinda weird.
Wikipedia link for those who do not know what it is:
VHDL=Very High Speed Integrated Circuit Hardware Description Language
BOM=Bill of Materials (basically, the list of parts that go on the circuit board)
SOC=System On Chip
All of these terms are almost always abbreviated.
Microprocessor designers use FPGAs to build simulation models of the processor, on which you can run tests much faster than you can on software simulation.
Back before FPGAs there were PLDs (Programmable Logic Devices) which were one-time programmable. They used fuses for programming, not the memory of the FPGA. They were heavily used in the #5ESS switch, though I don’t know for what exactly.
I have a patent of a method of verifying that you have the right version of the PLD - which basically used an XOR gate.
Could you please define nifty for me? I suppose I could look it up, but really I shouldn’t have to.
Moderator Note
Don’t be snarky to someone in GQ just because they don’t know something, even if your name is Snarky_Kong. And let’s face it, if you don’t have some knowledge of electronics design, you probably don’t know what an FPGA is. GQ is for factual information, not snark.
The bottom-line answer to the question is that a custom chip (ASIC) would be nice for lots and lots of applications, and they’re cheap in volumes, but very expensive to produce the first one. If you have need that doesn’t have the volumes to support developing an ASIC, then an FPGA is the obvious answer.
In my experience they’re pretty universally used for concept prototyping, and used in the final product when volumes don’t justify an ASIC (and the performance of an FPGA is adequate; ASICs will be much faster).
I will add a common acronym that I used but did not define:
RTL = Register Transfer Language, a synonym for hardware description language which is used to describe the detailed functionality of a digital circuit. Most common are Verilog (originally a trade name) and VHDL.
VHDL is actually a compound acronym - it expands to VHSIC Hardware Description Language. VHSIC was a DoD funded effort to develop Very High Speed Integrated Circuits that started in the 1980s. VHDL was an outgrowth of this program, and having DoD origins is strongly influenced by the Ada programming language.
Because if you need to Google the acronym, it’s unlikely you’ll have the expertise needed to answer the question in the first place.
But there are people who like to read the thread even though they aren’t able to answer.
In this case, it doesn’t matter much what FPGA stands for. For those unfamiliar with the term, it’s like having a single (large) computer chip that can be reconfigured do whatever digital circuit tasks you need. It’s in-between the slow software-centered approach of a microprocessor or microcontroller, and what would be faster but much more tedious to build circuit board.
Is the following correct?
There are two main uses for FPGAs:
(1) To avoid the time and expense of designing a custom chip;
(2) To allow dynamic reprogramming so the same chip can do different tasks.
The second case can be further subdivided:
(2a) To avoid the cost of a general-purpose microprocessor;
(2b) To achieve a low-cost high-speed multi-function processor otherwise difficult or impossible to achieve.
For me, (2b) seems like the most interesting case. Examples of (2b) in the thread seem to be image processing (or other signal processing); and high-speed text search. Are there other examples?