CIC Decimator (cic_decimator)

CIC (cascading integrating comb) filter combined with decimator.

Design

This component will be deprecated within this OSP in future releases. It is the equivalent of cic_decimator_xs component within OpenCPI SDR Components Library (ocpi.comp.sdr) .

Interface

<?xml version="1.0"?>
<componentspec>
  <property name="cic_order" type="uchar" writable="false" parameter="true" default="3" description="CIC order. Number of comb and integrator stages."/>
  <property name="cic_diff_delay" type="uchar" writable="false" parameter="true" default="2" description="Number of differential delay stages."/>
  <property name="cic_reg_size" type="uchar" writable="false" parameter="true" default="36" description="Internal data size used within the child primitives."/>
  <property name="down_sample_factor" type="ushort" writable="true" default="2" description="Down sampling factor."/>
  <property name="scale_output" type="uchar" writable="true" default="6" description="Output scale factor. CIC output is divided by :math:`2^{\texttt{scale_output}}`."/>
  <property name="flush_length" type="ushort" writable="true" default="0" description="Number of zero samples that should be inserted into the CIC on receipt of a flush opcode."/>
  <port name="input" producer="false" protocol="complex_short_timed_sample-prot"/>
  <port name="output" producer="true" protocol="complex_short_timed_sample-prot"/>
</componentspec>

Ports

Inputs:

  • input: Primary input samples port.

    • Protocol: complex_short_timed_sample-prot

    • Optional: False

Outputs:

  • output: Primary output samples port.

    • Protocol: complex_short_timed_sample-prot

    • Optional: False

Properties

  • cic_order: CIC order. Number of comb and integrator stages.

    • Type: uchar

    • Access:

      • Parameter: True

      • Writable: False

      • Initial: False

      • Volatile: False

    • Default value: 3

  • cic_diff_delay: Number of differential delay stages. Must not be set to zero.

    • Type: uchar

    • Access:

      • Parameter: True

      • Writable: False

      • Initial: False

      • Volatile: False

    • Default value: 2

  • cic_reg_size: Internal data size used within the child primitives.

    • Type: uchar

    • Access:

      • Parameter: True

      • Writable: False

      • Initial: False

      • Volatile: False

    • Default value: 36

  • down_sample_factor: Down sampling factor. Must not be set to zero.

    • Type: ushort

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

    • Default value: 2

  • scale_output: Output scale factor. CIC output is divided by \(2^{\texttt{scale_output}}\). Must not be set greater than \(\texttt{cic_reg_size} - 16\).

    • Type: uchar

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

    • Default value: 6

  • flush_length: Number of zero samples that should be inserted into the CIC on receipt of a flush opcode.

    • Type: ushort

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

    • Default value: 0

Implementations

Dependencies

The dependencies to other elements in OpenCPI are:

There is also a dependency on:

  • ieee.std_logic_1164

  • ieee.numeric_std

  • ieee.math_real

Limitations

Limitations of cic_decimator_xs are:

  • After a timestamp opcode message is received any zero length messages with the sample opcode are discarded until the next valid message with a sample opcode is received. Under all other conditions zero length sample opcode messages are passed directly through.