6.6 PRU-ICSS
The Programmable Real-Time Unit Subsystem and Industrial Communication Subsystem (PRU-ICSS) consists of:
- Two 32-bit load/store RISC CPU cores — Programmable Real-Time Units (PRU0 and PRU1)
- Data RAMs per PRU core
- Instruction RAMs per PRU core
- Shared RAM
- Peripheral modules
- Interrupt controller (ICSS_INTC).
The programmable nature of the PRU cores, along with their access to pins, events and all device resources, provides flexibility in implementing fast real-time responses, specialized data handling operations, custom peripheral interfaces, and in offloading tasks from the other processor cores of the device.
The device has integrated two identical PRU subsystems (PRU-ICSS_0 and PRU-ICSS_1).
The PRU cores within each PRU-ICSS have access to all resources on the SoC through the Interface Master port, and the external host processors can access the PRU-ICSS resources through the Interface Slave port. The 32-bit interconnect bus connects the various internal and external masters to the resources inside the PRU-ICSS. The PRU cores within the subsystems also have access to all resources on the SoC through the TeraNet DMA Interconnect. A subsystem local Interrupt Controller — ICSS_INTC handles system input events and posts events back to the device-level host CPUs.
The PRU cores are programmed with a small, deterministic instruction set. Each PRU can operate independently or in coordination with each other and can also work in coordination with the device-level host CPU. This interaction between processors is determined by the nature of the firmware loaded into the PRU’s instruction memory.
The PRU subsystem includes the following main features:
- Two PRU CPUs:
- 20 Enhanced General-Purpose Inputs (EGPI) and 20 Enhanced General-Purpose Outputs (EGPO)
- Asynchronous capture [Serial Capture Unit (SCU)] with EnDat 2.2 protocol and Sigma-Delta demodulation support
NOTE: There is no Sigma-Delta modulator inside the PRU. However, Sigma-Delta support is enabled through digital filtering hardware in the PRU to perform Sinc filtering.
- Multiplier with accumulation (MAC)
- CRC16 and CRC32 HW accelerator
- 16-KB program RAM per PRU CPU (signified IRAM0 for PRU0 and IRAM1 for PRU1) with ECC
- 8-KB data RAM per PRU CPU (signified RAM0 for PRU0 and RAM1 for PRU1) with ECC
- Two high-performance master (initiator) ports on the TeraNet_DMA interconnect — one per PRU
- 64-KB general purpose memory RAM (signified RAM2) with ECC, shared between PRU0 and PRU1
- One Scratch-Pad (SPAD) memory:
- 3 Banks of 30 × 32-bit registers
- Broadside direct connect between PRU cores within subsystem. Optional address translation for PRU transaction to External Host
- 16 software events generated by two PRUs
- One Ethernet MII_RT module (ICSS_MII_RT_CFG) with two MII ports and configurable connections to PRUs
- One MDIO Port (ICSS_MII_MDIO) to control external Ethernet PHY
- One Industrial Ethernet Peripheral (IEP) to manage/generate Industrial Ethernet functions:
- One Industrial Ethernet 64-bit timer with 9 capture and 16 compare events with slow and fast compensation
- 16550-compatible UART with a dedicated 192-MHz clock to support 12-Mbps PROFIBUS
- Enhanced Capture Module (eCAP_0)
- Interrupt Controller (ICSS_INTC):
- Up to 64 input events supported
- Supports up to to 10 interrupt channels
- Generation of 10 Host interrupts: 2 Host interrupts to PRU0 and PRU1, 1 Host interrupt to PRU-ICSS_0 and PRU-ICSS_1, 7 Host interrupts exported from the ICSS for signaling the Arm interrupt controllers (pulse and level provided)
- Each system event can be enabled and disabled
- Each host event can be enabled and disabled
- Hardware prioritization of events
- One 32-bit VBUSP slave (target) port for memory mapped register and internal memories access
- Two (master and slave) 32-bit VBUSP ports for low-latency interface between PRU-ICSS subsystems
- Flexible power management support
- Integrated 32-bit interconnect
- All memories support ECC
For more information, see section Programmable Real-Time Unit Subsystem and Industrial Communication Subsystem (PRU-ICSS) in chapter Processors and Accelerators of the Device TRM.