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, TID, 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 |
11:8 | CRC | 0: No CRC |
31:16 | SEQ | Packet sequence number of super-frame |
44:32 | TIMEOUT_CFG |
|
Other | Reserved | All reserved bits (undefined) bit set to zero |
If TYPE = 64-bit AXI stream, then header is 8 bytes.
If TYPE = 128-bit AXI stream, then header is 16 bytes.
Each packet within the super-frame is appended 8 byte tail appended:
Bits | Name | Description |
---|---|---|
7:0 | TDEST | TDEST of AXI-Stream frame |
15:8 | TID | TID of AXI-Stream frame |
23:16 | TUSER_FIRST | TUSER of the AXI-Stream frame |
31:24 | TUSER_LAST | TUSER of last transaction of the AXI-Stream frame. |
44:32 | TIMER_VALUE |
|
45 | SOF | Indicates that this is the start packet of a frame. |
46 | EOF | Indicates that this is the last packet of a frame. |
56:48 | LAST_BYTE_CNT | Number of valid bytes in last transaction of 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.
0xedb88320
) is used; the CRC is initialized with 0xffffffff
(and bits are processed in lsb->msb order).
Header | Data | Tail (32 lsb) |
---|---|---|
0x8000000000000222 | 0xAFFECAFEFEEDBEEF | 0x00080102 |
yields a CRC of 0x9c9c571e
and is transmitted as
0x8000000000000222
0xAFFECAFEFEEDBEEF
0x1E579C9C00080102
Larry Ruckman
ruckman@slac.stanford.edu