100G Interlaken Intel® FPGA IP User Guide

ID 683338
Date 9/20/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

5.3. 100G Interlaken IP Core User Data Transfer Interface Signals

Table 18.   100G Interlaken IP Core User Data Transfer Interface

Signal Name

Direction

Width (Bits)

Description

100G Interlaken IP Core Transmit User Interface

itx_chan

Input

8

Transmit logic channel number. The IP core supports up to 256 channels. The 100G Interlaken IP core samples this value only when a bit of itx_sop or itx_sob is high and itx_num_valid has a non-zero value.

itx_num_valid

Input

8

itx_num_valid[7:4] specifies the number of valid 64-bit words in the current packet in the current data symbol. The maximum value of itx_num_valid[7:4] is eight, because a data symbol on the 512 bit wide data path has eight words (8 x 64 bits = 512 bits) .

In non-valid cycles, you must set the value of itx_num_valid[7:4] to zero.

In valid cycles, you must set the value of itx_num_valid[7:4] as follows:

  • 4’b1000 : if all eight words contain valid data from the current packet.
  • 4’b0xxx : where xxx indicates the number of valid words that are part of the current packet, if the number is less than eight. Data is always MSB aligned (left aligned). For example, the value of 4’b0111 indicates that word 0 (bit [63:0]) is not valid.

In dual segment mode, if the value of itx_num_valid[7:4] is four or less (but not zero), the application can hold itx_num_valid[2] high to indicate the current data symbol also includes the first four 64-bit words of a new packet. The only valid values for itx_num_valid[3:0] are 4'b0100 and 4'b0000.

When itx_num_valid[3:0] has the value of 4'b0100, you must also hold itx_sop[0] high.

You must set the value of itx_num_valid to zero in all non-valid cycles, even when itx_ready is not asserted.

itx_sop

Input

2

Indicates the current data symbol on itx_din_words contains the start of a packet (SOP). This signal has the following valid values:

  • 2'b00 —The current data symbol does not contain the start of a packet.
  • 2'b10— If itx_sop[1] has the value of 1, the start-of-packet aligns with the most significant byte (byte 63) of the data.
  • 2'b01— If itx_sop[0] has the value of 1, the start-of-packet aligns with byte 31 of the data.

itx_eopbits

Input

4

Indicates whether the current data symbol contains the end of a packet (EOP) with or without an error, and specifies the number of valid bytes in the current end-of-packet, non-error 8-byte data word, if relevant.

You must set the value of itx_eopbits as follows:

  • 4b’0000: no end of packet, no error.
  • 4b’0001: Error and end of packet.
  • 4b’1xxx: End of packet. xxx indicates the number of valid bytes in the final valid 8-byte word of the packet, as follows:
    • 3b’000: all 8 bytes are valid.
    • 3b’001: 1 byte is valid.
    • ...
    • 3b’111: 7 bytes are valid.

All other values (4'b01xx, 4'b001x) are undefined.

The valid bytes always start in bit positions [63:56] of the final valid data word of the packet.

itx_sob

Input

2

Indicates the current data symbol contains the start of a burst (SOB). If the 100G Interlaken IP core is in Interleaved mode, you are responsible for providing this start of the burst signal. If the100G Interlaken IP core is in Packet mode, the IP core ignores this signal. The 100G Interlaken IP core samples the itx_chan signal during this cycle.

This signal has the following valid values:

  • 2'b00 —The current data symbol does not contain the start of a burst.
  • 2'b10— If itx_sob[1] has the value of 1, the start-of-burst aligns with the most significant byte (byte 63) of the data.
  • 2'b01— If itx_sob[0] has the value of 1, the start-of-burst aligns with byte 31 of the data.

Typically, you use this mode for sending interleaved packets. However, you can still send non-interleaved packets as long as you provide the itx_sob and itx_eob signal values. You are responsible to comply with the BurstMax and BurstMin parameters. If the burst you send is too large, it can overflow the 100G Interlaken transmit buffer.

itx_eob

Input

1

End of the burst. If the 100G Interlaken IP core is in Interleaved mode, you are responsible for providing this end of the burst signal. If the 100G Interlaken IP core is in Packet mode, the IP core ignores this signal. You are responsible to comply with the BurstMax and BurstMin parameters.

itx_din_words

Input

512

The eight 64-bit words of input data (one data symbol). When itx_num_valid has the value of zero, the IP core ignores itx_din_words.

itx_calendar

Input

16 N

Multiple pages (16 bits per page) of calendar input bits. The 100G Interlaken IP Core copies these bits to the in-band flow control bits in N control words that it sends on the Interlaken link. N is the value of the Number of calendar pages parameter, which can be any of 1, 2, 4, 8. or 16. This signal is synchronous with tx_usr_clk, although it is not part of the user data transfer protocol.

itx_ready

Output

1

Flow control signal to back pressure transmit traffic. When this signal is high, you can send traffic to the IP core. When this signal is low, you should stop sending traffic to the IP core within one to four cycles.

You can consider the inverse of itx_ready to be a FIFO-almost-full indicator. In full duplex mode, itx_ready is low when rx_lanes_aligned is low.

itx_ifc_err

Output

1

Indicates the transmit side user data transfer interface received traffic that the 100G Interlaken IP Core does not support. The IP core asserts the itx_ifc_err signal in the following cases:
  • In Interleaved mode, the IP core receives a burst that exceeds the size of MaxBurst.
  • itx_sop or itx_sob has the invalid value of 2'b11 in a valid data cycle.
  • Two instances of non-zero itx_sop (a start of packet), or two instances of non-zero itx_sob (a start of burst), are separated by fewer than 64 bytes.

The IP core asserts the itx_ifc_err signal for a single clock cycle. The signal pulses within the current burst, with a delay of one or two cycles after the error on the transmit side user data transfer interface.

100G Interlaken IP Core Receive User Interface

irx_chan

Output

8

Receive logic channel number. The IP core supports up to 256 channels. You should sample this value when a bit of irx_sop or irx_sob is high and irx_num_valid has a non-zero value.

irx_num_valid

Output

8

irx_num_valid[7:4] specifies the number of valid 64-bit words in the current packet in the current data symbol. The maximum value of irx_num_valid[7:4] is eight, because a data symbol on the 512 bit wide data path has eight words (8 x 64 bits = 512 bits) .

In valid cycles, the IP core sets the value of irx_num_valid[7:4] as follows:

  • 4’b1000 : if all eight words contain valid data from the current packet.
  • 4’b0xxx : where xxx indicates the number of valid words that are part of the current packet, if the number is less than eight. Data is always MSB aligned (left aligned). For example, the value of 4’b0111 indicates that word 0 (bit [63:0]) is not valid.

In dual segment mode, if the value of irx_num_valid[7:4] is four or less (but not zero), the IP core can hold irx_num_valid[2] high to indicate the current data symbol also includes the first four 64-bit words of a new packet. The only valid values for irx_num_valid[3:0] are 4'b0100 and 4'b0000.

When irx_num_valid[3:0] has the value of 4'b0100, the IP core also holds irx_sop[0] high.

The IP core sets the value of irx_num_valid to zero in all non-valid cycles.

irx_sop

Output

2

Indicates the current data symbol on irx_dout_words contains the start of a packet (SOP). This signal has the following valid values:

  • 2'b00 —The current data symbol does not contain the start of a packet.
  • 2'b10— If irx_sop[1] has the value of 1, the start-of-packet aligns with the most significant byte (byte 63) of the data.
  • 2'b01— If irx_sop[0] has the value of 1, the start-of-packet aligns with byte 31 of the data. This value is valid only in variations configured in dual segment mode.

irx_eopbits

Output

4

Indicates whether the current data symbol contains the end of a packet (EOP) with or without an error, and specifies the number of valid bytes in the current end-of-packet, non-error 8-byte data word, if relevant.

The IP core sets the value of irx_eopbits as follows:

  • 4b’0000: no end of packet, no error.
  • 4b’0001: Error and end of packet.
  • 4b’1xxx: End of packet. xxx indicates the number of valid bytes in the final valid 8-byte word of the packet, as follows:
    • 3b’000: all 8 bytes are valid.
    • 3b’001: 1 byte is valid.
    • ...
    • 3b’111: 7 bytes are valid.

All other values (4'b01xx, 4'b001x) are undefined and are not generated by the IP core.

The valid bytes always start in bit positions [63:56] of the final valid data word of the packet.

irx_sob

Output

2

Start of the burst. The 100G Interlaken IP core indicates the start of the burst. The signal irx_channel is only valid when irx_sob is high. This signal toggles in Packet Mode and in Interleaved Mode.

This signal has the following valid values:

  • 2'b00 —The current data symbol does not contain the start of a burst.
  • 2'b10— If irx_sob[1] has the value of 1, the start-of-burst aligns with the most significant byte (byte 63) of the data.
  • 2'b01— If irx_sob[0] has the value of 1, the start-of-burst aligns with byte 31 of the data.

irx_eob

Output

1

End of the burst. The 100G Interlaken IP core indicates the end of the burst. This signal toggles in Packet Mode and in Interleaved Mode.

irx_dout_words

Output

512

The eight 64-bit words of output data (one data symbol). When irx_num_valid has the value of zero, you should ignore irx_dout_words.

irx_calendar

Output

16 × N

Multiple pages (16 bits per page) of calendar output bits. The value is the in-band flow control bits from N control words on the incoming Interlaken link. N is the value of the Number of calendar pages parameter, which can be any of 1, 2, 4, 8, or 16. This signal is synchronous with rx_usr_clk, although it is not part of the user data transfer protocol.

irx_err

Output

1

Indicates an errored packet. This signal is valid only when irx_eob is asserted.

This signal is only valid in irx_eob cycles if you turn on the Include advanced error reporting and handling parameter.