MACsec Intel® FPGA IP User Guide

ID 736108
Date 3/31/2024
Public
Document Table of Contents

5.1.3.2. Multi Packet Mode Data Stream

The example below shows user interface data stream into the MACsec IP as two full packets in Multi Packet Mode. These packets originate from port/stream 0 (based on TID). The data payload of the packets is sent in consecutive cycles without interleaving. In cycle 2, the 2nd packet from port/stream 0 begins at the 5th segment, after an idle segment at the 4th segment following an end of packet from the 1st packet. The start and end of the 1st and 2nd packets can be derived through the TLAST, Tuser_last_segment<N> and TKEEP signals.
Table 28.  Multi Packet Mode with Two Full Packets
AXI-ST Cycle 0 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
TID (TID[5:0]) 0 0 0 0 0 0
TVALID 1 1 1 1 1 1
TLAST 0 0 1 0 0 1
TKEEP All 1 All 1

1111_1111

1111_1111

1111_1111

0000_0000

1111_1111

1111_1111

1111_1111

1111_1111

All 1 All 1

0000_0000

1111_1111

1111_1111

1111_1111

1111_1111

1111_1111

1111_1111

1111_1111

Tuser_last_segment<N> (N from 7 to 0) All 0 All 0 0000_1000 All 0 All 0 0100_0000
TDATA Data Data Data Data Data Data

The example below shows 4 packets interleaved on the user interface streaming data into the MACsec IP. These packets originate from port/stream 0, 2, 3 (based on TID) and interleaving happens every 64B word. The packet from port/stream 0 enters the MACsec IP in cycle 0 and 4, and packets from port/stream 2 enter the MACsec IP in cycle 1, 3, 6, while packets from port/stream 3 enter the MACsec IP in cycle 2 and 5.

The start and end of packet from each port/stream packet can be derived through the TLAST, Tuser_last_segment<N> and TKEEP signals. In Multi Packet Mode we have 2 packets in the same cycle (for example, cycle 3).
Table 29.  Multi Packet Mode with Four Packets Interleaved
AXI-ST Cycle 0 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
TID (TID[5:0]) 0 2 3 2 0 3 2
TVALID 1 1 1 1 1 1 1
TLAST 0 0 0 1 1 1 1
TKEEP All 1 All 1 All 1

1111_1111

1111_1111

1111_1111

0000_0000

1111_1111

1111_1111

1111_1111

1111_1111

All 1 All 1 All 1
Tuser_last_segment<N> (N from 7 to 0) All 0 All 0 All 0 0000_1000 1000_0000 1000_0000 1000_0000
TDATA Data Data Data Data Data Data Data