Preferences

bhedgeoser parent
How is an fpga different from an emulator? From what I've read it looks like just a microcontroller that emulates a cpu chip.

musicale
I think of it this way in terms of efficiency vs. flexibility vs. cost:

- fixed-function ASICs tend to be very efficient (as they are optimized for a fixed function) but are inflexible; cost can be very low in volume but design and lead time can be high

- FPGAs can provide much of the the functionality and efficiency of fixed-function ASICs, with increased flexibility - and overhead - due to reconfigurability; per-device cost is usually higher than an ASIC but may be good for low-volume designs; design and lead time are much shorter; they're also great for prototyping

- CPUs offer extreme flexibility due to software programmability, with commensurate overhead and potential loss of efficiency; highly optimized for software; (application) design/implementation time is usually lowest, and, for some applications, cost may be cheaper than an FPGA or a low-volume ASIC.

These aren't absolute rules, and there are also other intermediate points like as FPGAs with embedded CPU cores or soft CPU cores, CPUs with reconfigurable logic, etc..

I think it's interesting that over time many functions are "softwarized" when it just becomes cheaper and easier to put them into either a cheap commodity microcontroller or a CPU that is already in your device. I've seen designs (posted on HN I think?) where a vintage hardware CPU is implemented on a cheap modern microcontroller as a sort of drop-in replacement/upgrade for the original hardware.

I also like the flexibility of generic FPGA systems that can implement and/or replicate a range of hardware with highly accurate functionality and timing. It's also fun to design your own CPU and then run code on it at hardware speed, or your own custom network device that runs at line rate (see also programmable switching chips.)

trebligdivad
No, an FPGA is a lot lower level thing; it's basically a bag full of small logic blocks, each one that can only do a very small logic function (something like a 16 entry table lookup?) and some blocks of RAM and IO. The FPGA user has to figure out how to wire those blocks up to do what you want; you can build a micro with it, but you can build most other logic systems as well.
infinityio
I think the critical difference is that the 'emulation' is effectively done in hardware instead of software, so designs can be clocked much higher than traditional emulation (GHz+ speeds)

This item has no comments currently.