The AxiStreamPacketizer takes incoming AxiStreams and breaks them into smaller sub-frames (packets). The AxiStreamDepacketizer does the reverse, reassembling a packetized stream into the original frames. The packetization protocol also takes AXI-Stream sideband data (TDEST, TID, TUSER) and inserts it in the data stream as part of the packetization format. Together these features are very useful for sending an AXI-Stream over an external transport such as UDP.
The Packetizer breaks stream frames in to smaller frames called packets. Each packet contains an 8 byte header as follows:
Byte | Bits | Name | Description |
---|---|---|---|
0 | 3:0 | Version | The packetizer protocol version. Should be 0. |
0 | 7:4 | FrameNumber[3:0] | Increments with each frame. Used to track missing frames. |
1 | 7:0 | FrameNumber[11:4] | |
2 | 7:0 | PacketNumber[7:0] | Resets to 0 with each new frame |
3 | 7:0 | PacketNumber[15:8] | |
4 | 7:0 | PacketNumber[23:16] | |
5 | 7:0 | TDest | TDEST of AXI-Stream frame |
6 | 7:0 | TID | TID of AXI-Stream frame |
7 | 7:0 | TUserFirst | TUSER of first transaction of the AXI-Stream frame |
Each packet also has a 1 byte tail appended:
Byte | Bits | Name | Description |
---|---|---|---|
0 | 6:0 | TUserLast | TUSER of of transaction of the AXI-Stream frame. Only valid if EOF=1 |
0 | 7 | EOF | Indicates that this is the last packet of a frame. |
Ben Reese