Architecturally FPGAs are essentially a sea of gates which can be reconfigured to build almost any digital circuit that one can imagine. This great flexibility along with the ability to reconfigure the device with different designs at-will makes FPGA a better choice compared to ASICs (Application Specific Integrated Circuit) for a lot of applications.
For example, a deep learning, AI or application acceleration system can re-program a single FPGA with different algorithms at different times to achieve the best performance. An ASIC would not be as flexible in such situations.
In certain applications, the number of individual units manufactured would be very small. Designing and manufacturing ASICs for these applications can be prohibitively expensive. In such situations, FPGA can offer very cost effective but robust solutions.
Below are some of the potential applications of FPGAs in no particular order.
Industrial, medical and Scientific Instruments
Audio/Video and Image processing and broadcasting
High-performance computing, AI, and Deep Learning
Military and Space applications
Networking, packet processing, and other communications
I think they are not cheap. But sometimes you can’t do something in software, and you need hardware for it. And when you are below a certain point in your required volume an FPGA is MUCH cheaper than an ASIC. Also, while developing ASICs this allows – before a final state is reached – much higher turn-around times.