An ASIC, an application specific IC or chip is targeted towards a use case (or use cases). It means it is specifically designed functionality which can be sold in high volume. An ASIC consists of analog and/or digital functionality connected to the pads of the chip. These pads are connected via bond wires to the pins visible outside a chip . Examples are stepper motor drivers in the automotive industry, xDSL modems in consumer electronics, VPU’s for vision processing and deep learning. An ASIC is a fixed design (hence the first time right goal for cost reasons). Routing of the logic is final, but most of the time, small bugs can be fixed with spare gates (good tactic to foresee those) and a partial new mask set (reconnecting).
An FPGA is an ASIC. An FPGA can be reconfigured. Many different digital designs can be put on the same chip by downloading a new FPGA bitstream. An FPGA has cells and interconnection which is determined by that bitstream. The bitstream makes the necessary connections inside to implement your design. Since the FPGA is configurability built on top of an ASIC, they are less optimal in gates per mm2, power and speed than having the same design in ASIC. But for development, prototyping (for ASIC) and for low volume products, FPGA is a cheaper solution than an ASIC. An ASIC is only cost effective in high volume, especially in the latest technology.
A general microcontroller is a controller that takes programmed instructions and executes them. They range from very simple to very complex. The main thing is you write a program and the controller executes it. Every controller has an instruction set that allows you to use the features the controller has. Arithmetic for example, add and subtract. A microcontroller design described in HDL (hardware description language) can be targeted towards an FPGA, you can configure the FPGA and use the FPGA with the microcontroller design. You can also put more data processing next to the microcontroller in the FPGA. The microcontroller can also be targeted towards an ASIC. Several microcontrollers, PIC comes to mind, are just a microcontroller in a chip, ready to be put on a PCB for example. Microcontrollers are heavily used in system on chip designs (FPGA and/or ASIC) because the program that runs on the microcontroller can be changed. For ASIC, usually the program for a controller resides in an EEPROM outside the ASIC but there are also ASIC’s with for example