100G Interlaken Intel® FPGA IP User Guide

ID 683338
Date 10/31/2022
Public
Document Table of Contents

4.8.2.1. 100G Interlaken IP Core Receiver Side Example With Errors and In-Band Calendar Bits

Figure 19.  100G Interlaken IP Core Receiver Side Single Segment Example With irx_err Errors

This example illustrates the expected behavior of the 100G Interlaken IP core application interface receive signals during a packet transfer in single segment mode with CRC or other errors. In the example, the errored packet transfer is followed by two idle cycles and a non-errored packet transfer.

This figure illustrates the attempted transfer of a 179 -byte packet on the RX user data transfer interface to channel 2, after the 100G Interlaken IP Core receives the packet on the Interlaken link and detects corruption. Following the errored packet, the IP core transfers an uncorrupted packet to channel 3.

In cycle 1, the 100G Interlaken IP Core asserts irx_sop[1] when data is ready on irx_dout_words. When the 100G Interlaken IP Core asserts irx_sop[1] , it also asserts the correct value on irx_chan to tell the application the data channel destination of the data. In this example, the value 2 on irx_chan tells the application that the data should be sent to channel number 2.

During the SOP cycle (labeled with data value d1) and the cycle that follows the SOP cycle (labeled with data value d2), the 100G Interlaken IP Core holds the value of irx_num_valid[7:4] at 4'b1000 . In the following clock cycle, labeled with data value d3, the 100G Interlaken IP Core holds the following values on critical output signals:

  • irx_num_valid[7:4] at the value of 4'b0111 to indicate the current data symbol contains seven 64-bit words of valid data.
  • irx_eopbits[3] high to indicate the current cycle is an EOP cycle.
  • irx_eopbits[2:0] at the value of 3'b011 to indicate that only three bytes of the final valid data word are valid data bytes.

This signal behavior, in the absence of the irx_err flag, would correctly transfer a data packet with the total packet length of 179 bytes from the 100G Interlaken IP Core.

However, the 100G Interlaken IP Core marks the burst as errored by asserting the irx_err signal, even though the irx_eopbits signal would appear to indicate the packet is valid.

The application is responsible for discarding the errored packet when it detects that the IP core has asserted the irx_err signal.

Following the corrupted packet, the IP core waits two idle cycles and then transfers a valid 139 -byte packet.