6.6.6.5.1 Data ID Monitors

According to the CSI-2 Specification, each CSI-2 line contains information regarding Data Type (DT) and Virtual Channel (VC) identification. Yet, each CSI-2 frame is identified uniquely by its virtual channel. In fact, a frame can contain different lines using different data types.

This fact imposes some restriction on how errors are monitored for CSI-2 lines. To have a mechanism to identify these errors, it is required to have the knowledge of the DT and VC pairs that are active on the CSI-2 link. These errors are monitored in the following registers:

  • CSI_DATA_IDS_1
  • CSI_DATA_IDS_VC_1
  • CSI_DATA_IDS_2
  • CSI_DATA_IDS_VC_2
Figure 6-60. Definition of Data ID

The CSI_DATA_IDS and CSI_DATA_IDS_VC register s, if selected during core configuration, must be programmed during controller initialization only.

For further details, detect the protocol layer errors and report the errors as follows:

  • Analyze the data type field of the headers of short and long packets, and raise an error whenever an unrecognized or unimplemented one is found. This corresponds to ERR_ID and is reported for each virtual channel, independently (ERR_ID_VCx fields in CSI_INT_ST_DATA_ID).
  • Take note of the occurrence of payload CRC error detections in any of the packets that are received between a Frame Start and its corresponding Frame End. When the Frame End is received, ERR_FRAME_DATA error is raised for the virtual channel where the frame has been received, if at least one payload CRC error has been detected in some packet of that frame (ERR_FRAME_DATA_VCx fields in CSI_INT_ST_CRC_FRAME_FATAL).
  • Analyze the headers of short packets, aiming to match Frame Start with Frame End and Line Start with Line End packets by the corresponding Frame Number or Line Number.
    • If there are two consecutive Frame Start packets or two consecutive Frame End ones, or even if the Frame Number of a Frame End packet is not the same as for the last received Frame Start (all verified in the same virtual channel), an ERR_F_BNDRY_MATCH error is raised (ERR_F_BNDRY_MATCH_VCx fields in CSI_INT_ST_BNDRY_FRAME_FATAL).
    • If the frame number in a Frame Start packet is not incremented by 1 relatively to the previous one, for some virtual channel, an ERR_F_SEQ error is raised. The exception is that if the Frame Number is 0, frame numbering is inactive; if it is 1, the frame numbers restart. Therefore, the error is not raised in these exceptions (ERR_F_SEQ_VCx fields in CSI_INT_ST_SEQ_FRAME_FATAL).
    • If there are two consecutive Line Start packets or two consecutive Line End ones, or even if the line number of a Line End packet is not the same as for the last received Line Start (all verified in the same virtual channel), an ERR_L_BNDRY_MATCH error is raised for each data ID of long packets that have been received in between and that match the data IDs that are programmed in the register bank (ERR_L_BNDRY_MATCH_DIx fields in CSI_INT_ST_LINE, where DIx corresponds to the data ID programmed in CSI_DATA_IDS_1, CSI_DATA_IDS_2, CSI_DATA_IDS_VC1, CSI_DATA_IDS_VC_2).
    • The line number of each Line Start packet is saved, according to its virtual channel. Later, when a long packet is received for the same virtual channel, if its data ID is programmed in the register bank and if that line number is out of the expected sequence for that data ID, an ERR_L_SEQ error is raised for that data ID. Prior to raising any ERR_L_SEQ error, the increment between successive lines for a given data ID has to be determined. For that, at least two consecutive lines of a given data ID must be received without errors after each frame starts, so that the difference between those two line numbers can be used to determine the increment of the line numbers to expect for that data ID (ERR_L_SEQ_DIx fields in CSI_INT_ST_LINE, where DIx corresponds to the data ID programmed in CSI_DATA_IDS_1, CSI_DATA_IDS_2, CSI_DATA_IDS_VC1, CSI_DATA_IDS_VC_2).

All the errors described previously can trigger one of the two interrupt pins. Any of these errors can be independently masked to inhibit the generation of interrupts.