ngscopeclient v0.3
Loading...
Searching...
No Matches
Public Member Functions | List of all members
BERTOutputChannel Class Reference

A pattern generator channel of a BERT. More...

#include <BERTOutputChannel.h>

Inheritance diagram for BERTOutputChannel:
Inheritance graph
[legend]
Collaboration diagram for BERTOutputChannel:
Collaboration graph
[legend]

Public Member Functions

 BERTOutputChannel (const std::string &hwname, BERT *bert, const std::string &color="#808080", size_t index=0)
 Initialize the channel.
 
virtual void Refresh (vk::raii::CommandBuffer &cmdBuf, std::shared_ptr< QueueHandle > queue) override
 
virtual bool ValidateChannel (size_t i, StreamDescriptor stream) override
 Check if a stream is allowed to be connected to the given input.
 
BERT * GetBERT () const
 Get the BERT this channel is part of.
 
void SetPattern (BERT::Pattern pattern)
 Set the pattern this channel is generating.
 
BERT::Pattern GetPattern ()
 Get the pattern this channel is currently generating.
 
std::vector< BERT::Pattern > GetAvailablePatterns ()
 Get the set of patterns this channel is capable of generating.
 
bool GetInvert ()
 Get the polarity inversion state of this channel.
 
void SetInvert (bool invert)
 Set the polarity inversion state of this channel.
 
std::vector< float > GetAvailableDriveStrengths ()
 Get the set of amplitudes this channel is capable of outputting.
 
float GetDriveStrength ()
 Get the current nominal amplitude of this channel.
 
void SetDriveStrength (float drive)
 Set the current nominal amplitude of this channel.
 
bool GetEnable ()
 Gets the enable status of this channel.
 
void Enable (bool b)
 Set the enable state of this channel.
 
float GetPreCursor ()
 Gets the TX FFE pre-cursor coefficient.
 
void SetPreCursor (float f)
 Sets the TX FFE pre-cursor coefficient.
 
float GetPostCursor ()
 Gets the TX FFE post-cursor coefficient.
 
void SetPostCursor (float f)
 Sets the TX FFE post-cursor coefficient.
 
int64_t GetDataRate ()
 Gets the data rate of this channel, in symbols per second.
 
void SetDataRate (int64_t rate)
 Sets the data rate of this channel, in symbols per second.
 
virtual PhysicalConnector GetPhysicalConnector () override
 
- Public Member Functions inherited from InstrumentChannel
 InstrumentChannel (Instrument *inst, const std::string &hwname, const std::string &color="#808080", Unit xunit=Unit(Unit::UNIT_FS), size_t index=0)
 
 InstrumentChannel (Instrument *inst, const std::string &hwname, const std::string &color="#808080", Unit xunit=Unit(Unit::UNIT_FS), Unit yunit=Unit(Unit::UNIT_VOLTS), Stream::StreamType stype=Stream::STREAM_TYPE_ANALOG, size_t index=0)
 
virtual void SetDisplayName (std::string name)
 Sets the human-readable nickname for this channel, as displayed in the GUI.
 
virtual std::string GetDisplayName ()
 Gets the human-readable nickname for this channel, as displayed in the GUI.
 
const std::string & GetHwname () const
 Gets the hardware name of the channel (m_hwname)
 
size_t GetIndex () const
 Gets the (zero based) index of the channel.
 
Instrument * GetInstrument () const
 Gets the instrument this channel is part of (if any)
 
void ClearCachedDisplayName ()
 Sets the display name to an empty string, causing a fetch from hardware.
 
void SetData (WaveformBase *pNew, size_t stream)
 Sets the waveform data for a given stream, replacing any previous waveform.
 
virtual Unit GetXAxisUnits ()
 Returns the X axis unit for this channel.
 
virtual Unit GetYAxisUnits (size_t stream)
 Returns the Y axis unit for a specified stream.
 
virtual void SetXAxisUnits (const Unit &rhs)
 Changes the X axis unit for this channel.
 
virtual void SetYAxisUnits (const Unit &rhs, size_t stream)
 Changes the X axis unit for a specified stream.
 
Stream::StreamType GetType (size_t stream)
 Returns the type of a specified stream.
 
size_t GetStreamCount ()
 Get the number of data streams.
 
std::string GetStreamName (size_t stream)
 Gets the name of a stream (for display in the UI)
 
WaveformBase * GetData (size_t stream)
 Get the contents of a data stream.
 
uint8_t GetStreamFlags (size_t stream)
 Get the flags of a data stream.
 
float GetScalarValue (size_t stream)
 Gets the value of a scalar data stream.
 
void SetScalarValue (size_t stream, float value)
 Sets the value of a scalar data stream.
 
uint64_t GetDigitalScalarValue (size_t stream)
 Gets the value of a scalar data stream.
 
uint64_t GetDigitalWidth (size_t stream)
 Gets the width of a digital data stream.
 
void SetDigitalWidth (size_t stream, uint64_t width)
 Set the width of a digital data stream.
 
void SetDigitalScalarValue (size_t stream, uint64_t value)
 Sets the value of a scalar data stream.
 
WaveformBase * Detach (size_t stream)
 Detach the capture data from this channel.
 
virtual bool ShouldPersistWaveform ()
 Determine whether the channel's waveform(s) should be persisted to a session file.
 
virtual DownloadState GetDownloadState ()
 Returns the current download state of this channel.
 
virtual float GetDownloadProgress ()
 returns the current completion of the download (on the range [0, 1]), if not DOWNLOAD_UNKNOWN
 
virtual double GetDownloadStartTime ()
 returns the start time of a download, if we are DOWNLOAD_IN_PROGRESS; undefined, otherwise
 
- Public Member Functions inherited from FlowGraphNode
void DetachInputs ()
 Disconnects all inputs from the node without releasing them.
 
size_t GetInputCount ()
 Get the number of input ports.
 
std::string GetInputName (size_t i)
 
void SetInput (size_t i, StreamDescriptor stream, bool force=false)
 Connects a stream to the input of this node.
 
void SetInput (const std::string &name, StreamDescriptor stream, bool force=false)
 
bool HasInput (StreamDescriptor desc)
 Checks if the given stream is connected to at least one of our inputs.
 
StreamDescriptor GetInput (size_t i)
 Gets the descriptor for one of our inputs.
 
std::shared_ptr< InputConstraint > GetInputConstraints (size_t i)
 Get the constraints on one of our inputs.
 
FilterParameter & GetParameter (std::string s)
 
bool HasParameter (std::string s)
 Checks if we have a parameter with a given name.
 
ParameterMapType::iterator GetParamBegin ()
 Returns an iterator to the beginning of our parameter map.
 
ParameterMapType::iterator GetParamEnd ()
 Returns an iterator to the end of our parameter map.
 
size_t GetParamCount ()
 Returns the number of parameter we have.
 
virtual YAML::Node SerializeConfiguration (IDTable &table)
 Serializes this trigger's configuration to a YAML string.
 
virtual void LoadParameters (const YAML::Node &node, IDTable &table)
 Load configuration from a save file.
 
virtual void LoadInputs (const YAML::Node &node, IDTable &table)
 
bool IsDownstreamOf (std::set< FlowGraphNode * > nodes)
 Determines if this node is downstream of any of the specified other nodes.
 
virtual uint32_t GetExecutionCapabilitiesMask ()
 Returns a bitmask of ExecutionCapabilities fields.
 
bool HasMessages () const
 Checks if this graph has any messages.
 
const std::vector< FlowGraphNodeMessage > & GetMessages () const
 Walking through any messages.
 
const FlowGraphNodeMessage * GetMostSevereMessage () const
 
void AddSink (size_t stream, FlowGraphNode *node)
 
void RemoveSink (size_t stream, FlowGraphNode *node)
 
const std::set< FlowGraphNode * > & GetSinks (size_t stream)
 
sigc::signal< void()> signal_parametersChanged ()
 
sigc::signal< void()> signal_inputsChanged ()
 

Additional Inherited Members

- Public Types inherited from InstrumentChannel
enum  PhysicalConnector {
  CONNECTOR_BANANA_DUAL , CONNECTOR_BMA , CONNECTOR_BNC , CONNECTOR_K ,
  CONNECTOR_K_DUAL , CONNECTOR_N , CONNECTOR_SMA
}
 
enum  VisibilityMode { VIS_HIDE , VIS_AUTO , VIS_SHOW }
 Selects how the channel should be displayed in e.g. the ngscopeclient filter graph editor.
 
enum  DownloadState {
  DOWNLOAD_UNKNOWN , DOWNLOAD_NONE , DOWNLOAD_WAITING , DOWNLOAD_IN_PROGRESS ,
  DOWNLOAD_FINISHED
}
 Enum values to be mapped to GetDownloadState() int result value for specific channel download states. More...
 
- Public Types inherited from FlowGraphNode
enum class  ExecutionCapabilities {
  None = 0 , CommandBufferAppend = 1 , CommandBufferTailCall = 2 , VulkanOnly = 4 ,
  DynamicShader = 8
}
 
typedef std::map< std::string, FilterParameter > ParameterMapType
 Short name for a map of strings to parameters.
 
- Public Attributes inherited from InstrumentChannel
std::string m_displaycolor
 Display color (HTML hex notation with optional alpha channel: #RRGGBB or ##RRGGBBAA)
 
enum InstrumentChannel::VisibilityMode m_visibilityMode
 
- Protected Member Functions inherited from InstrumentChannel
virtual void ClearStreams ()
 Clears out any existing streams.
 
virtual size_t AddStream (Unit yunit, const std::string &name, Stream::StreamType stype, uint8_t flags=0)
 Adds a new data stream to the channel.
 
- Protected Member Functions inherited from FlowGraphNode
virtual void OnInputChanged (size_t i)
 Called when a new input is connected to the node.
 
WaveformBase * GetInputWaveform (size_t i)
 Gets the waveform attached to the specified input.
 
SparseAnalogWaveform * GetSparseAnalogInputWaveform (size_t i)
 Gets the analog waveform attached to the specified input.
 
UniformAnalogWaveform * GetUniformAnalogInputWaveform (size_t i)
 Gets the analog waveform attached to the specified input.
 
SparseDigitalWaveform * GetSparseDigitalInputWaveform (size_t i)
 Gets the digital waveform attached to the specified input.
 
UniformDigitalWaveform * GetUniformDigitalInputWaveform (size_t i)
 Gets the digital waveform attached to the specified input.
 
virtual void CreateInput (const std::string &name)
 Gets the digital bus waveform attached to the specified input.
 
template<class T , class... Args>
void CreateInput (const std::string &name, Args &&... args)
 
std::string GetInputDisplayName (size_t i)
 Gets the display name for one of our inputs.
 
void ClearMessages ()
 Remove any messages left over from the last graph refresh.
 
void AddMessage (const FlowGraphNodeMessage &msg)
 Attach a new message to the node.
 
void AddMessage (Severity severity, const std::string &title, const std::string &message)
 Attach a new message to the node.
 
void AddErrorMessage (const std::string &err)
 Add a new error message.
 
void AddErrorMessage (const std::string &title, const std::string &err)
 Add a new error message with a title.
 
- Protected Attributes inherited from InstrumentChannel
Instrument * m_instrument
 The instrument we're part of (may be null in the case of filters etc)
 
std::string m_hwname
 Hardware name of the channel.
 
std::string m_displayname
 Display name (user defined, defaults to m_hwname).
 
size_t m_index
 Zero based index of the channel within the instrument.
 
Unit m_xAxisUnit
 Unit of measurement for our horizontal axis (common to all streams)
 
std::vector< Stream > m_streams
 Configuration data for each of our output streams.
 
- Protected Attributes inherited from FlowGraphNode
std::vector< std::shared_ptr< InputDescriptor > > m_inputs
 Input ports.
 
std::vector< std::set< FlowGraphNode * > > m_sinks
 The nodes (if any) that each of our streams drives.
 
ParameterMapType m_parameters
 
sigc::signal< void()> m_parametersChangedSignal
 Signal emitted when the set of parameters changes.
 
sigc::signal< void()> m_inputsChangedSignal
 Signal emitted when the set of inputs changes.
 
std::vector< FlowGraphNodeMessage > m_messages
 

Detailed Description

A pattern generator channel of a BERT.

Constructor & Destructor Documentation

◆ BERTOutputChannel()

BERTOutputChannel::BERTOutputChannel ( const std::string &  hwname,
BERT *  bert,
const std::string &  color = "#808080",
size_t  index = 0 
)

Initialize the channel.

Parameters
hwnameHardware name of the channel
parentBERT the channel is part of
colorInitial display color of the channel
indexNumber of the channel

Member Function Documentation

◆ Enable()

void BERTOutputChannel::Enable ( bool  b)
inline

Set the enable state of this channel.

Parameters
bTrue to enable the channel, false to disable

◆ GetAvailableDriveStrengths()

std::vector< float > BERTOutputChannel::GetAvailableDriveStrengths ( )
inline

Get the set of amplitudes this channel is capable of outputting.

Amplitudes are in nominal volts P-P with all TX equalizer taps set to zero.

◆ GetDriveStrength()

float BERTOutputChannel::GetDriveStrength ( )
inline

Get the current nominal amplitude of this channel.

Amplitudes are in nominal volts P-P with all TX equalizer taps set to zero.

◆ GetPhysicalConnector()

InstrumentChannel::PhysicalConnector BERTOutputChannel::GetPhysicalConnector ( )
overridevirtual

Reimplemented from InstrumentChannel.

◆ GetPostCursor()

float BERTOutputChannel::GetPostCursor ( )
inline

Gets the TX FFE post-cursor coefficient.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

◆ GetPreCursor()

float BERTOutputChannel::GetPreCursor ( )
inline

Gets the TX FFE pre-cursor coefficient.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

◆ Refresh()

void BERTOutputChannel::Refresh ( vk::raii::CommandBuffer &  cmdBuf,
std::shared_ptr< QueueHandle >  queue 
)
overridevirtual

Reimplemented from InstrumentChannel.

◆ SetDataRate()

void BERTOutputChannel::SetDataRate ( int64_t  rate)
inline

Sets the data rate of this channel, in symbols per second.

Depending on the clocking architecture of the instrument, this may affect other channels.

For example, on MultiLane BERTs all channels share a single timebase. Antikernel Labs BERTs are based on Xilinx FPGAs and channels are divided into quads which each share some clocking resources.

Parameters
rateDesired data rate

◆ SetDriveStrength()

void BERTOutputChannel::SetDriveStrength ( float  drive)
inline

Set the current nominal amplitude of this channel.

Parameters
driveDesired amplitude; nominal volts P-P with all TX equalizer taps set to zero.

◆ SetInvert()

void BERTOutputChannel::SetInvert ( bool  invert)
inline

Set the polarity inversion state of this channel.

Parameters
invertNew inversion state (true = invert, false = normal polarity)

◆ SetPattern()

void BERTOutputChannel::SetPattern ( BERT::Pattern  pattern)
inline

Set the pattern this channel is generating.

Parameters
patternThe new pattern

◆ SetPostCursor()

void BERTOutputChannel::SetPostCursor ( float  f)
inline

Sets the TX FFE post-cursor coefficient.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

Parameters
fPost-cursor coefficient

◆ SetPreCursor()

void BERTOutputChannel::SetPreCursor ( float  f)
inline

Sets the TX FFE pre-cursor coefficient.

Equalizer coefficients are are normalized so that 0 is the lowest possible tap value and 1 is the highest possible tap value. Some instruments allow negative values (which invert the sign of the tap).

The exact mapping of normalized coefficients to FFE gain steps is instrument specific and may be nonlinear.

Parameters
fPre-cursor coefficient

◆ ValidateChannel()

bool BERTOutputChannel::ValidateChannel ( size_t  i,
StreamDescriptor  stream 
)
overridevirtual

Check if a stream is allowed to be connected to the given input.

Reimplemented from FlowGraphNode.


The documentation for this class was generated from the following files: