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

Packet Header

The Packetizer breaks stream frames in to smaller frames called packets. Each packet contains an 8 byte header as follows:

ByteBitsNameDescription
03:0VersionThe packetizer protocol version. Should be 0.
07:4FrameNumber[3:0]Increments with each frame. Used to track missing frames.
17:0FrameNumber[11:4]
27:0PacketNumber[7:0]Resets to 0 with each new frame
37:0PacketNumber[15:8]
47:0PacketNumber[23:16]
57:0TDestTDEST of AXI-Stream frame
67:0TIDTID of AXI-Stream frame
77:0TUserFirstTUSER of first transaction of the AXI-Stream frame

Packet Tail

Each packet also has a 1 byte tail appended:

ByteBitsNameDescription
06:0TUserLastTUSER of of transaction of the AXI-Stream frame. Only valid if EOF=1
07EOFIndicates 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

  • No labels