RapidIO Intel FPGA IP User Guide

ID 683884
Date 9/15/2021
Public
Document Table of Contents

4.3.3.2. CRC Checking and Removal

The RapidIO specification states that the Physical layer must add a 16-bit CRC to all packets. The size of the packet determines how many CRCs are required.
  • For packets of 80 bytes or fewer—header and payload data included—a single 16-bit CRC is appended to the end of the packet.
  • For packets longer than 80 bytes—header and payload data included—two 16-bit CRCs are inserted; one after the 80th transmitted byte and the other at the end of the packet.

Two null padding bytes are appended to the packet if the resulting packet size is not an integer multiple of four bytes.21

In variations of the RapidIO IP core that include the Transport layer, the Transport layer removes the CRC after the 80th byte (if present), but does not remove the final CRC nor the padding bytes. Therefore, a packet sent to the Avalon® -ST pass-through receiver interface by the Transport layer is two or four bytes longer than the equivalent packet received by the Transport layer from the Avalon® -ST pass-through interface. When processing the received packets, the Logical layer modules must ignore the final CRC and padding bytes (if present). In variations of the RapidIO IP core that include only the Physical layer, the 80th byte CRC of a received packet is not removed.

The receiver uses the CCITT polynomial x16 + x12 + x5 + 1 to check the 16-bit CRCs that cover all packet header bits (except the first 6 bits) and all data payload, and flags CRC and packet size errors.

21 The RapidIO IP core removes the intermediate CRC from the RapidIO packet before it presents it at the Rx passthrough interface. The CRC and the padding at the end of the packet are not removed.