FPGA-like approach for microcontroller peripherals implementation

Content originally posted in LPCWare by ab73 on Tue Jul 21 01:10:48 MST 2015Why peripherals in modern microcontrollers still not replaced by FPGA-like area, where designer may simply write all that he wants in Verilog or VHDL?Modern peripherals trying to be extremelly universal, become very complex, suffering from many unclear details not covered by documentation, require huge time for learning and fitting to it simple things, needed for particular application, suffer from incompatibility between microcontrollers, but still very far from universality, achievable by FPGA-like design of same footprint.

Typical set of peripheral, really needed for application, usually below 10% of entire set of peripherals of modern microcontroller, to which that application may fit. This overhead looks not less than FPGA overheads vs. hard-wired logic implementation of all that needed for application.

Atmel was tryed this approach early times, when FPGA technologies was not yet well established and popular as now. Now this approach looks much more attractive, but why microcontroller vendors not trying it now?.

Content originally posted in LPCWare by ab73 on Tue Jul 21 03:05:01 MST 2015But most typical peripherals like timers,PWMs,uarts,SPI,I2C are simple things, implementable in very small array. Size, cost and power overheads related to FPGA technology comparable with overheads of current redundancy of peripherals in count, types, and features, needed to cover most possible application needs.

Vendors spent much effort developing it's own tools and user guides for it's own peripherals, but this is not needed in FPGA approach, where most tools may be third-party, and operation of perperipherals clearly defined by their simple HDL code and higly portable.

Content originally posted in LPCWare by TheFallGuy on Tue Jul 21 04:09:20 MST 2015[list] [*]The FPGA incumbants have huge numbers of patents, meaning any MCU vendor is going to have to pay a royalty to them. [*]Good/reliable FPGA tools are expensive. [*]Where are you going to get your FPGA implementation of a peripheral from? If you want one that works (as opposed to one that may work, and you will have to debug) you are going to have to pay for a commercial implementation, or spend a very long time implementing it yourself [*]FPGA implementations are much less efficient in terms of power and size than a custom circuit [*]Most modern MCUs have peripherals that can be disabled, so you do not bear the power cost of a peripheral that you are not using[/list]

It all adds up to be a very expensive way to add a peripheral.

Taking your theory to its logical conclusion, why would you ever use anything other than an FPGA?

Content originally posted in LPCWare by ab73 on Tue Jul 21 05:32:45 MST 2015Some 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.