Complex Combiner (complex_combiner_s_xs)

Combines two real inputs to create a complex output.

Design

The mathematical representation of the implementation is given in (118).

(118)\[z[n] = x[n] + j*y[n]\]

In (118):

  • \(x[n]\) is the input values which are mapped to the real axis.

  • \(y[n]\) is the input values which are mapped to the imaginary axis.

  • \(z[n]\) is the output values.

Block diagram outlining complex combiner implementation.

Figure 398: Complex combiner implementation.

Interface

<?xml version="1.0"?>
<componentspec>
  <property name="input_real_opcode_passthrough" type="bool" writable="false" parameter="true" default="true"
    description="When true, opcodes from the real port are passed to the output. When false, opcodes from the imaginary port are
      passed to the output."/>
  <port name="input_real" producer="false" protocol="short_timed_sample-prot"/>
  <port name="input_imaginary" producer="false" protocol="short_timed_sample-prot"/>
  <port name="output" producer="true" protocol="complex_short_timed_sample-prot"/>
</componentspec>

Ports

Inputs:

  • input_real: Input samples port for values mapped to the real axis.

    • Protocol: short_timed_sample-prot

    • Optional: False

  • input_imaginary: Input samples port for values mapped to the imaginary axis.

    • Protocol: short_timed_sample-prot

    • Optional: False

Outputs:

  • output: Primary output samples port.

    • Protocol: complex_short_timed_sample-prot

    • Optional: False

Properties

  • input_real_opcode_passthrough: When true, opcodes from the real port are passed to the output. When false, opcodes from the imaginary port are passed to the output.

    • Type: bool

    • Access:

      • Parameter: True

      • Writable: False

      • Initial: False

      • Volatile: False

    • Default value: true

Implementations

Example Application

<?xml version="1.0"?>
<application done="file_write">
  <instance component="ocpi.core.file_read" connect="complex_combiner_s_xs" to="input_real">
    <property name="filename" value="input_real.bin"/>
  </instance>
  <instance component="ocpi.core.file_read" connect="complex_combiner_s_xs" to="input_imaginary">
    <property name="filename" value="input_imaginary.bin"/>
  </instance>
  <instance component="ocpi.comp.sdr.math.complex_combiner_s_xs" connect="file_write"/>
  <instance component="ocpi.core.file_write">
    <property name="filename" value="output.bin"/>
  </instance>
</application>

Dependencies

The dependencies to other elements in OpenCPI are:

There is also a dependency on:

  • ieee.std_logic_1164

  • ieee.numeric_std

Limitations

Limitations of complex_combiner_s_cs’s use are:

  • None.

Testing

Tested platforms: None

Component testing not completed.