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

4.7.1.4. 100G Interlaken IP Core Dual Segment Interleaved Data Transfer Transmit Example

Figure 15. Dual Segment Data Transfer on Transmit Interface in Interleaved Mode

This example illustrates the expected behavior of the 100G Interlaken IP core application interface transmit signals during dual segment transfers of three data bursts in interleaved mode.

The figure shows three data bursts in dual segment mode on the TX user data transfer interface. In cycle 1, the application asserts itx_sop[1] and itx_sob[1], indicating that this cycle is both the start of the burst and the start of the packet, and that data starts from the most significant byte of the data symbol. The application drives the value of 2 on itx_chan to indicate the data originates from channel 2.

In cycle 2, the following two events occur:

  • The first data burst completes. The application asserts itx_eob, indicating the data the application transfers to the IP core in this clock cycle is the end of the burst. The value the application drives on itx_num_valid[7:4] indicates that one word in this data symbol is valid data associated with this burst. In addition, the application drives itx_eopbits to the value of 4'b0000 to indicate that the data the application transfers to the IP core in this clock cycle is not the end of the packet. Therefore, all bytes in this data word are valid.
  • A second data burst starts at Word 3. This transfer is a dual segment transfer, as is allowed whether or not the IP core is configured in dual segment mode on the RX side. The application asserts itx_sop[0] and itx_sob[0], indicating that this cycle is both the start of the burst and the start of the packet, and that data in this burst and packet starts from Byte 31 of the data symbol. The application drives the value of 3 on itx_chan to indicate the data originates from channel 3. The value of itx_num_valid[3:0] is 4'b0100, indicating this data transfer is a dual segment data transfer—that it begins at Word 3. The value of itx_num_valid[7:4] has no relevance for the data words in this burst that appear in this data symbol, except to indicate the previous burst includes no data in these words of the data symbol (Words 3 through 0), and therefore, that they are available for the second data burst. As is required, the dual segment data transfer places valid data in all four words in the least significant half of the data symbol.

In cycles 3 and 4, the second data burst continues with no EOB or EOP indication. The IP core does not sample the value of itx_chan in these clock cycles, and its value is therefore a Don't Care. The value on itx_num_valid[7:4] indicates that all eight words in each of these data symbols are valid data associated with this burst.

In cycle 5, the following two events occur:

  • The second data burst completes. The application asserts itx_eob, indicating the data transfered in this clock cycle is the end of the burst. The value the application drives on itx_num_valid[7:4] indicates that four words in this data symbol are valid data associated with this burst. In addition, the value the application drives on itx_eopbits indicates the data is the end of the packet, and that all eight bytes of the final data word are valid data bytes.
  • A third data burst starts at Word 3. This transfer is a dual segment transfer, as is allowed whether or not the IP core is configured in dual segment mode on the RX side. The application asserts itx_sob[0], indicating that this cycle is the start of the burst and that data in this burst starts from Byte 31 of the data symbol. However, the application does not assert itx_sop[0], indicating this burst is not the first burst in the packet. The value the application drives on itx_chan indicates the data originates from channel 2. Therefore, we can conclude this data burst is the second burst in a packet from channel 2. The value the application drives on itx_num_valid[3:0] is 4'b0100, indicating this data transfer is a dual segment data transfer—that it begins at Word 3. The value of itx_num_valid[7:4] has no relevance for the data words in this burst that appear in this data symbol, except to indicate the previous burst includes no data in these words of the data symbol (Words 3 through 0), and therefore, that they are available for the second data burst. As is required, the dual segment data transfer places valid data in all four words in the least significant half of the data symbol.

In cycle 6, the third data burst completes. The application asserts itx_eob, indicating the data transfered in this clock cycle is the end of the burst. The value on itx_num_valid[7:4] indicates that five words in this data symbol are valid data associated with this burst. In addition, the value the application drives on itx_eopbits indicates the data is the end of the packet, and that all eight bytes of the final data word are valid data bytes. Because the data from this burst occupies words 7 through 3 of the data symbol, another burst cannot start in the current data symbol.

In dual segment mode as in single segment mode, if the IP core is in Interleaved mode, you can transfer a packet without interleaving—if you do not toggle the channel number during the packet transfer, the packet is not interleaved with another packet. However, you must still assert the itx_sob and itx_eob signals correctly to maintain the proper burst boundaries.

If you do not drive the itx_sob and itx_eob signals, the 100G Interlaken IP Core does not operate properly and the transmit FIFO may overflow, since in this mode the internal logic is looking for itx_sob and itx_eob assertion for insertion of proper burst control words.