10 replies already so I'll try to cover some new ground and dispel a few myths.

FPGAs have a huge dynamic range, from the tiny 48 pin Lattice Ice40 parts to the XIlinx Ultra Scale Behemoths. They go in price from (in 1k off type volumes) from a few $ to a few k$, and use from less than 1mA to 10A or more.

The decision to use a big one will commit you to a M$ + path to development. I can do more than 10 commercial projects a year using little ones.

No point offering advice here on the big ones - if you're spending that kind of money you'll have a team that can cope.

Little FPGA's (Lattice Ice40, Lattice ECP2, Lattice MachXO.., Altera MAX10 and the like) can all be developed using free software tools and very cheap programmer/debugger hardware. Lattice really do have the biggest range of low cost parts.

If you think you might need more than 5 74xxxx style logic chips, or need programmable flexibility later then consider an ICE40. I just used one to glue together a few audio chips and provide a weird interface (1.8V with sync pulse in an unusual place in the data stream) to a third party device. You could never do it with a processor but you don't need a lot of logic - this design used about 1000LUTs. That was enough to do the glue logic and configure the audio chips by SPI on start up - no processor required.

For more complicated stuff where you might need to do some maths the Altera MAx10s are nice - they do a complete range from 2k to 50k LUTs all available in 144 pin TQFP and 3.3V single supply operation. Built in EEPROM for boot up and, in my opinion, the nicest of the free toolsets. I've just used one to control the ADC and do the major grunt work of the maths in an 8 channel hybrid analogue and digital Lock In Amplifier. The great thing about the FPGA is the ease with which you can add features like providing synch signal to lock the switching power supplies to the ADC sampling rate, whilst at the same time doing loss free fixed point maths (on this application the data size expands as it goes through processing to 70 bits wide before it gets down to the speed at which the micro can munch it as floats). This job uses an Altera MAX10, about 6k LUTs as well as on chip RAM and multipliers.

Unlike one of the other contributors to this thread, I've never used a processor core on an FPGA, preferring to use separate micros communicating via SPI, memory ports etc.

For me the key things are:

when you need or may need flexibility (which is often because of 'political' rather than engineering reasons.

when you would otherwise need multiple chip glue logic (the cost hierarchy in development is software, HDL, physical logic)

when there are complicated interfaces that standard micros don't support

when micros or DSPs are'nt fast enough

when you only have time/money for one pcb spin and a lot of stuff to link up on it - if it's feasible to put an FPGA in as the core of your system the flexibility can often mop up a great many problems that may crop up.

MK