Content originally posted in LPCWare by ab73 on Tue Jul 21 05:32:45 MST 2015
Some things are simple in HDL implementation, using very small FPGA resources, but become complex and expensive when trying implementing them in software.
Others things are simple and inexpensive in software implementation, but complex and expensive in FPGA.
Typical application include both kinds of things interconnected. First kind of things not limited to standard functions, that usually implemented by typical microcontroller peripheral.
CPU itself is expensive for FPGA implementation, it require large FPGA and will spend much power.
Unfortunately, FPGA vendors provide chips with hard-wired CPUs only for expensive FPGA chips.
Unfortunately, there are no good interfaces available in cheap microcontrollers for intensive communication with off-chip FPGA, but such interfaces easily implementable in very small FPGA (usually called CPLD).
Unfortunately, even very small FPGAs are not available on-chip in modern cheap microcontrollers.
I have experience with FPGA, and making custom UARTs,Timers, SPI interfaces, etc. as needed for me in Verilog is simpler for me than learning how to use already available complex and redundant in many features peripheral for my purpose. Many things are easier to make them from ground, than make it from more complex things, because complex things require much effort for learning before using them.
Most MCU Vendors paying royalties to ARM, and this not problem for making cheap microcontrollers.
I think problem of availability of inexpensive tools is temporal problem, as well as problem of patents related to FPGA technology.