The ePIE vector table on each CPU is duplicated into these two parts:
- Main ePIE Vector Table mapped
from 0xD00 to 0xEFF in the C28x memory space
- Redundant ePIE Vector Table
mapped from 0x1000D00 to 0x1000EFF in the C28x memory space
Following is the behavior of accesses
to the ePIE memories:
- Data Writes to Main Vector Table:
Writes to both memories
- Data Writes to Redundant Vector
Table: Writes only to the Redundant Vector Table
- Vector Fetch: Data from both the
vector tables are compared
- Data Read: Can read the Main and
Redundant vector table separately
On every vector fetch from the ePIE, a
hardware comparison (no cycle penalty is incurred to do the comparison) of both the
vector table outputs is performed and if there is a mismatch between the two vector
table outputs, the following occurs:
- If the PIEVERRADDR register
(default value 0x3F FFFF) is not initialized, the default error handler at
address 0x3FFFBE gets executed. But, when the PIEVERRADDR register is
initialized to the address of the user-defined routine, the user-defined routine
is executed instead of the default error handler.
Note: Each CPU has a copy of the PIE Vector Fetch Error Handler
register (CPU1.PIEVERRADDR and CPU2.PIEVERRADDR).
- Hardware also generates EPWM Trip
signals that trips the PWM outputs using TRIPIN15.
- An NMI to the other CPU is sent, if the current mismatch is during a vector
fetch. For example, on an NMI vector fetch error for CPU2 an NMI is also fired
to CPU1.NMIWD.
If there is no mismatch, the correct
vector is jammed onto the C28x program control.