4 ms·
You can program an FPGA to work like a microprocessor, or pretty much any other digital circuit that fits. They are great for teaching students about computers
by pitaj 8y ago
You can program an FPGA to work like a microprocessor, or pretty much any other digital circuit that fits. They are great for teaching students about computers and hardware design languages.
Most FPGAs are essentially grids of little devices which are programmed to map a certain input pattern to a certain output pattern. Like, 0000 -> 0101, 0101 -> 1111. They emulate logic gates. When you program an FPGA, you are both programming these maps, and setting the connections between them.
(Note: efficient means processing power / electrical power)
ASICs, on the other hand, are custom-built ICs which are designed to very efficiently perform one task, like performing SHA hashes or h.264 decoding.
FPGAs can be more efficient than full-fledged processors because they can make use of custom combinational (combinations of gates) logic along with sequential (clocked) logic. ASICs can be more efficient than FPGAs.
Essentially, there's a tradeoff between development cost, unit cost, efficiency, and flexibility.
flexibility development cost unit cost efficiency
processor ++ ++ - -
FPGA + + -- +
ASIC -- -- ++ ++
- leowoo91 8y agoI think scoring is not right because FPGA should be more flexible than processor and processor should be more efficient than FPGA. You might be considering a specific use case where FPGA would take over.
- pitaj 8y ago> FPGA should be more flexible than processor I disagree. Processors can be programmed in many sophisticated languages and have many built-in features that either don't come in similarly priced FPGA, or you'd have to program into the FPGA itself. > processor should be more efficient than FPGA It depends on the workload. Some things, processors might be more efficient at. But FPGAs have the upper hand at many things because they can use combinational logic.
- gh02t 8y ago> ASICs, on the other hand, are custom-built ICs which are designed to very efficiently perform one task, like performing SHA hashes or h.264 decoding. ASICs aren't necessarily task specific, you can do whatever you want in an ASIC. Your unit cost analysis isn't quite right either, because what really matters is scale. The primary cost tradeoff between an FPGA and an ASIC is strongly dependent on manufacturing scale. ASICs have high design and tooling costs, but low unit cost after that. FPGAs on the other hand have much lower initial cost, but higher unit cost. Whether or not it makes sense to use an ASIC depends largely on whether or not you're going to ship enough units to amortize the setup costs, hence why a lot of manufacturers often design a single ASIC to be used across multiple products.
- jrockway 8y agoEven then, FPGAs are now pretty inexpensive at scale. Open up your favorite $5000 oscilloscope and it will probably have a proprietary ASIC. Open up your favorite $400 oscilloscope and it just has an off-the-shelf FPGA. Mine even runs Linux, apparently. (As an aside, I broke my $400 'scope about a month after purchasing it. One of the rotary encoders just stopped turning and is now jammed and it would be quite the undertaking to repair it. I learned my lesson.)
- pitaj 8y ago> ASICs aren't necessarily task specific, you can do whatever you want in an ASIC. I mean, it's stands for "application specific" so it's really just a matter of semantics. > Your unit cost analysis isn't quite right either Yeah I realize now my unit cost analysis is confusing. `++` means "best unit cost" aka "least expensive". I forgot to go into the scale issue more, which is where FPGAs can really come into the equation as a good middle ground between unit cost at scale and development cost.