CombinerV1
CombinerV1 combines individual Rogue stream frames into a Batcher v1
super-frame. It is the software inverse of SplitterV1.
For conceptual guidance, see Batcher Protocol Combiner.
Protocol reference: https://confluence.slac.stanford.edu/x/th1SDg
Python binding
This C++ class is also exported into Python as rogue.protocols.batcher.CombinerV1.
Python API page: - CombinerV1
CombinerV1 objects in C++ are referenced by the following shared pointer typedef:
-
typedef std::shared_ptr<rogue::protocols::batcher::CombinerV1> rogue::protocols::batcher::CombinerV1Ptr
[header]
The class description is shown below:
-
class CombinerV1 : public rogue::interfaces::stream::Master, public rogue::interfaces::stream::Slave
[header] Combines individual frames into a batcher v1 super-frame.
Protocol reference: https://confluence.slac.stanford.edu/x/th1SDg
CombinerV1is the software inverse ofSplitterV1. It collects individual Rogue stream frames and packs them into a single batcher v1 super-frame with the appropriate super-header and per-record tails.The
widthparameter controls the AXI stream width encoding:0 = 16-bit (header=2, tail=8)
1 = 32-bit (header=4, tail=8)
2 = 64-bit (header=8, tail=8)
3 = 128-bit (header=16, tail=16)
4 = 256-bit (header=32, tail=32)
5 = 512-bit (header=64, tail=64)
Threading model:
No internal worker thread is created.
acceptFrame()queues frames;sendBatch()builds and emits the super-frame.
Public Functions
-
explicit CombinerV1(uint8_t width)
[header] [impl] Constructs a
CombinerV1instance.Creator.
- Parameters:
width – AXI stream width encoding (0-5).
Accepts a frame and immediately queues it for batching.
Accept a frame from master.
- Parameters:
frame – Input frame to be included in the next batch.
Public Static Functions
-
static void setup_python()
[header] [impl] Registers Python bindings for this class.
Setup class in python.
-
static std::shared_ptr<rogue::protocols::batcher::CombinerV1> create(uint8_t width)
[header] [impl] Creates a
CombinerV1instance.Class creation.
Company : SLAC National Accelerator Laboratory
Description : AXI Batcher V1 Combiner (SW Batcher) (https://confluence.slac.stanford.edu/x/th1SDg)
Builds a batcher v1 super-frame from individual frames. This is the software inverse of the SplitterV1 unbatcher.
Super-frame layout (same as FW batcher):
[Super Header][Record0 Data][Record0 Tail][Record1 Data][Record1 Tail]…
Super Header: Byte 0: Bits 3:0 = Version = 1 Bits 7:4 = Width = 2 * 2 ^ val Bytes Byte 1: Bits 15:8 = Sequence # for debug Rest of width padded with zeros
Frame Tail: Tail size is max(width, 8 bytes). Padded with zeros. Word 0: bits 31:0 = size (payload bytes) Word 1: bits 7:0 = Destination bits 15:8 = First user bits 23:16 = Last user bits 31:24 = Width (bits 3:0 = width encoding, bits 7:4 = 0)
This file is part of the rogue software platform. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of the rogue software platform, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the LICENSE.txt file.
- Parameters:
width – AXI stream width encoding (0-5).
- Returns:
Shared pointer to the created combiner.