Iqstream max calculator (iqstream_max_calculator)

iqstream_max_calculator is an asset in the ocpi.assets.util_comps component library. Implementations include iqstream_max_calculator HDL Worker (iqstream_max_calculator.hdl) and iqstream_max_calculator RCC Worker (iqstream_max_calculator.rcc). Tested platforms include Rocky9, xsim.

Design

in/out ports

Messages are passed directly from the in port to the out port. Backpressure is transfered to the in port from the out port.

max I is valid Property

Indicates max_I is valid. Will be false if no data has been received on in\verb port since either a) the last read of max_I or b) the worker first went into the operating state.

max Q is valid Property

Indicates max_Q is valid. Will be false if no data has been received on in port since either a) the last read of max_I or b) the worker first went into the operating state.

max I Property

Max I value observed on in port. Value will be -32768 when worker first enters the operating state and will be reset to -32768 after each read. max_I_is_valid should always be read prior to reading this property because max_I_is_valid will immediately be set to false once max_I is read.

max Q Property

Max Q value observed on in port. Value will be -32768 when worker first enters the operating state and will be reset to -32768 after each read. max_Q_is_valid should always be read prior to reading this property because max_I_is_valid will immediately be set to false once max_Q is read.

Interface

<!-- This is the spec file (OCS) for: iqstream_max_calculator
     Add component spec attributes, like "protocol".
     Add property elements for spec properties.
     Add port elements for i/o ports -->
<!-- max_I_is_valid    Indicates max_I is valid. Will be false if no data has
                       been received on in port since either a) the last read of
                       max_I or b) the worker first went into the operating
                       state.
     max_Q_is_valid    Indicates max_Q is valid. Will be false if no data has
                       been received on in port since either a) the last read of
                       max_I or b) the worker first went into the operating
                       state.
     max_I             Max I value observed on in port. Value will be -32768
                       when worker first enters the operating state and will be
                       reset to -32768 after each read. max_I_is_valid should
                       always be read prior to reading this property because
                       max_I_is_valid will immediately be set to false once
                       max_I is read.
     max_Q             Max Q value observed on in port. Value will be -32768
                       when worker first enters the operating state and will be
                       reset to -32768 after each read. max_Q_is_valid should
                       always be read prior to reading this property because
                       max_I_is_valid will immediately be set to false once
                       max_Q is read.
-->
<ComponentSpec>
  <!-- The max_I_is_valid/max_Q_is_valid properties are *intentionally* placed
       above max_I/max_Q in this XML file to ensure that they are read before
       the reset behavior caused by max_I/max_Q property reads. -->
  <Property Name="max_I_is_valid" Type="bool"
                                  Volatile="true"
                                  Description="Indicates max_I is valid."/>
  <Property Name="max_Q_is_valid" Type="bool"
                                  Volatile="true"
                                  Description="Indicates max_Q is valid."/>
  <Property Name="max_I" Type="short"
                         Volatile="true"
                         Description="Max I value observed on in port since last read."/>
  <Property Name="max_Q" Type="short"
                         Volatile="true"
                         Description="Max Q value observed on in port since last read."/>
  <DataInterfaceSpec Name="in" Producer="false"
                               Protocol="iqstream_protocol.xml"/>
  <DataInterfaceSpec Name="out" Producer="true"
                                Protocol="iqstream_protocol.xml"
                                Optional="true"/>
</ComponentSpec>

Properties

  • max_I_is_valid: Indicates max_I is valid.

    • Type: bool

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

    • Default value: None

  • max_Q_is_valid: Indicates max_Q is valid.

    • Type: bool

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

    • Default value: None

  • max_I: Max I value observed on in port since last read.

    • Type: short

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

    • Default value: None

  • max_Q: Max Q value observed on in port since last read.

    • Type: short

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

    • Default value: None

Ports

Inputs:

  • in

    • Protocol: iqstream_protocol.xml

    • Optional: False

Outputs:

  • out

    • Protocol: iqstream_protocol.xml

    • Optional: True

Implementations

  • iqstream_max_calculator (HDL)

  • iqstream_max_calculator (RCC)

Dependencies

The dependencies to other elements in OpenCPI are:

  • assets/components/util_comps/iqstream_max_calculator.hdl/iqstream_max_calculator.cc

  • assets/components/util_comps/iqstream_max_calculator.hdl/iqstream_max_calculator.vhd

Limitations

Limitations of iqstream_max_calculator are:

  • None.

Testing

No unit test for this component exists. However, a hardware-in-the-loop application (which is NOT a unit test) exists for testing purposes (see assets/applications/iqstream_max_calculator_test).