Programmable Logic and Boosting Performance
Internal peripherals in MCUs have undergone a drastic change. For a long time, most MCUs contained just ROM and RAM (sometimes, a rudimentary timer). But now, MCUs contains many more internal peripherals such as SPI, I2C, UART, timer/counters and PWMs. Incidentally, even with these additional peripherals, most of these MCUs cost less than a dollar to make. Another leap in the embedded technology world is a transition from 8 bit CPUs to 32 bit CPUs.
Even with these developments, there is still a place for programmable logic in embedded development. A programmable logic device does not have a defined function when it is manufactured. This means, it can be reconfigured as the user wants. The idea is not to replace the CPU. That cannot be done. But the efficiency of the CPU can certainly be increased. You will usually find such devices in products where cost is a factor. You can also use them as co-processors for low level tasks, sparing the CPU for high requirements tasks.
The bottom line is, using programmable logic controllers in MCUs can give you a big boost in performance. There is a lot to be done to fuse programmable logic with CPU functionality. Embedded engineers who understand the significance of this and adopt it will be at the cutting edge of IoT technology.