The AxiStreamBatcher takes incoming AxiStreams and combines multiple frames (packets) into a larger super-frame. The AxiStreamDebatcher does the reverse, deassembling the super-frame into the original frames.
The batching protocol also takes AXI-Stream sideband data (TDEST and TUSER) and inserts it in the data stream as part of the batching format.
Together these features are very useful for sending high rate (>1MHz), small AXI-Stream frame into a CPU.
Version 1 of the packetizer has been designed to allow interleaving of AXI streams
The batcher combines frames in to larger super-frame. The super frame has a 8 (or 16) byte header as follows:
Bits | Name | Description |
---|---|---|
3:0 | VERSION | Version info. Should always be 0x1 |
7:4 | TYPE | 0: 64-bit AXI stream 1: 128-bit AXI stream |
31:16 | SEQ | Packet sequence number of super-frame |
44:32 | TIMEOUT_CFG |
|
Other | Reserved | All reserved bits (undefined) bit set to zero |
Notes
If TYPE = 64-bit AXI stream, then appended tail is 8 bytes.
If TYPE = 128-bit AXI stream, then appended tail is 16 bytes.
Each sub-frame within the super-frame is appended 8 (or 16) byte tail appended:
Bits | Name | Description |
---|---|---|
7:0 | TDEST | TDEST of AXI-Stream frame |
15:8 | TUSER_FIRST | TUSER of the AXI-Stream frame |
23:16 | TUSER_LAST | TUSER of last transaction of the AXI-Stream frame. |
28:24 | LAST_BYTE_CNT | Number of valid bytes in last transaction of frame |
29 | TIMEOUT | Indicates timeout event forced termination of super-frame |
30 | SOF | Indicates that this is the start packet of a frame. |
31 | EOF | Indicates that this is the last packet of a frame. |
63:32 | SIZE | Number of valid bytes in the sub-frame |
Other | Reserved | All reserved bits (undefined) bit set to zero |
If TYPE = 64-bit AXI stream, then appended tail is 8 bytes.
If TYPE = 128-bit AXI stream, then appended tail is 16 bytes.
Larry Ruckman
ruckman@slac.stanford.edu