The number of peripherals that can be embedded into a SoC is limited by space and cost considerations. Having all types of peripheral controllers increases the cost and complexity. That makes inclusion of the peripheral controllers a real big challenge in the SoC design. The programmable core along with general purpose IO pins allow customized peripheral controllers. These programmable cores, not only allow system integrators with option to implement the peripheral controllers, but also implement proprietary business logic to improve the system performance.
This paper illustrates one such implementation using the Programmable Real-time Sub-System (PRUSS) in AM18xx series of SoCs from Texas Instruments.