Overview
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.
Details
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 |
15113:0] | Increments with each frame. Used to track missing frames. |
02312 |
|
2 | 7:0 | PacketNumber[7:0] | Resets to 0 with each new frame |
3 | 7:0 | PacketNumber[15:8] |
| |
|
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 |
Packet Tail
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. |
Notes
- We steal the MSB of tUserLast to indicate EOF. EOF=0 indicates that there are more packets left in the frame.
- Having tUserLast/EOF in a tail allows the packetizer to function in streaming fashion and not have to buffer each packet worth of data in a FIFO.
- TDest, TId and TUserFirst are placed in the header of every packet, even though they don’t change after the first packet of the frame.
- TUserLast data is only valid if the EOF bit is 1
...
Contact
Ben Reese
bareese@slac.stanford.edu