Receiving PRBS Frames
PRBS receive paths verify stream data integrity and collect error counters after a transport or processing chain.
When receive state should be visible to operators, GUIs, or remote clients
through the tree, PyRogue provides pyrogue.utilities.prbs.PrbsRx. It wraps
the underlying rogue.utilities.Prbs checker and exposes the receive
counters as Variables.
The direct rogue.utilities.Prbs form remains the smaller fit for scripts
and standalone graphs that only need a checker endpoint.
PRBS receive paths commonly check streams generated by FPGA firmware/VHDL implementations.
Common Controls
Most receive setups are shaped by:
rxEnableEnable or disable checking.checkPayloadControl whether payload contents are verified.widthandtapsMatch the generator or firmware PRBS settings.PrbsPairUse this when one node should own both the transmit and receive wrappers for a loopback or paired-end validation setup.
The direct Rogue endpoint provides the lower-level receive-side methods such as
getRxCount(), getRxErrors(), getRxBytes(), setWidth(width), and
setTaps(taps).
Using PrbsRx In A Tree
pyrogue.utilities.prbs.PrbsRx is the tree-managed form of the PRBS
checker.
Use it when receive counters, payload-check settings, and link-health state
should be visible in the PyRogue tree. For loopback tests where both sides
should live under one node, pyrogue.utilities.prbs.PrbsPair packages the
same transmit and receive wrappers together.
Python Direct-Utility Example
import rogue.utilities as ru
import rogue.utilities.fileio as ruf
# Replay captured frames from file.
fread = ruf.StreamReader()
# Create PRBS checker endpoint.
prbs = ru.Prbs()
# Feed replayed stream into checker.
prbs << fread
# Replay full split-file sequence and wait for completion.
fread.open("myFile.dat.1")
fread.closeWait()
# Summarize checker statistics.
print(f"Received {prbs.getRxCount()} frames")
print(f"Received {prbs.getRxErrors()} errors")
Python Tree-Managed Example
import pyrogue.utilities.fileio as puf
import pyrogue.utilities.prbs as pup
# Add tree-managed replay source and PRBS receiver.
fread = puf.StreamReader()
root.add(fread)
prbs = pup.PrbsRx()
root.add(prbs)
# Route replayed stream into tree-managed PRBS checker.
fread >> prbs
C++ PRBS Receiver Example
#include <rogue/utilities/fileio/StreamReader.h>
#include <rogue/utilities/Prbs.h>
namespace ru = rogue::utilities;
namespace ruf = rogue::utilities::fileio;
// Create replay source and PRBS checker.
auto fread = ruf::StreamReader::create();
auto prbs = ru::Prbs::create();
// Feed replayed stream into checker.
*prbs << fread;
// Replay full split-file sequence and wait for completion.
fread->open("myFile.dat.1");
fread->closeWait();
// Summarize checker statistics.
printf("Received %u frames\n", prbs->getRxCount());
printf("Received %u errors\n", prbs->getRxErrors());