.. index:: pair: class; xf::dsp::aie::fir::interpolate_hb::fir_interpolate_hb_graph
.. _doxid-classxf_1_1dsp_1_1aie_1_1fir_1_1interpolate__hb_1_1fir__interpolate__hb__graph:
.. _cid-xf::dsp::aie::fir::interpolate_hb::fir_interpolate_hb_graph:
template class xf::dsp::aie::fir::interpolate_hb::fir_interpolate_hb_graph
==========================================================================
.. toctree::
:hidden:
.. code-block:: cpp
:class: overview-code-block
#include "fir_interpolate_hb_graph.hpp"
Overview
~~~~~~~~
fir_interpolate_hb is a Halfband Interpolation FIR filter
These are the templates to configure the halfband interpolator FIR class.
.. rubric:: Parameters:
.. list-table::
:widths: 20 80
*
- TT_DATA
-
describes the type of individual data samples input to and output from the filter function. This is a typename and must be one of the following:
int16, cint16, int32, cint32, float, cfloat.
*
- TT_COEFF
-
describes the type of individual coefficients of the filter taps.
It must be one of the same set of types listed for TT_DATA and must also satisfy the following rules:
* Complex types are only supported when TT_DATA is also complex.
* 32 bit types are only supported when TT_DATA is also a 32 bit type,
* TT_COEFF must be an integer type if TT_DATA is an integer type
* TT_COEFF must be a float type if TT_DATA is a float type.
*
- TP_FIR_LEN
- is an unsigned integer which describes the number of taps in the filter. TP_FIR_LEN must be in the range 4 to 240 inclusive and must satisfy (TP_FIR_LEN +1)/4 = N where N is a positive integer.
*
- TP_SHIFT
-
describes power of 2 shift down applied to the accumulation of FIR terms before output.
TP_SHIFT must be in the range 0 to 61.
*
- TP_RND
-
describes the selection of rounding to be applied during the shift down stage of processing. TP_RND must be in the range 0 to 7 where
* 0 = floor (truncate) eg. 3.8 Would become 3.
* 1 = ceiling e.g. 3.2 would become 4.
* 2 = round to positive infinity.
* 3 = round to negative infinity.
* 4 = round symmetrical to infinity.
* 5 = round symmetrical to zero.
* 6 = round convergent to even.
* 7 = round convergent to odd.
Modes 2 to 7 round to the nearest integer. They differ only in how they round for values of 0.5.
*
- TP_INPUT_WINDOW_VSIZE
-
describes the number of samples in the window API used for input to the filter function.
The number of values in the output window will be TP_INPUT_WINDOW_VSIZE multiplied by 2 by virtue the halfband interpolation factor.
Note: Margin size should not be included in TP_INPUT_WINDOW_VSIZE.
*
- TP_CASC_LEN
-
describes the number of AIE processors to split the operation over.
This allows resource to be traded for higher performance. TP_CASC_LEN must be in the range 1 (default) to 9.
*
- TP_DUAL_IP
-
allows 2 input ports to be connected to FIR, increasing available throughput.
Depending on TP_API, additional input ports functionality differs. If TP_API is set to use streams, then
TP_DUAL_IP is an implementation trade-off between performance and data bank resource.
When TP_DUAL_IP is set to 0, the FIR performance may be limited by load contention.
When TP_DUAL_IP is set to 1, two ram banks are used for input.
If TP_API is set to use streams, then:
When TP_DUAL_IP is set to 0, single stream will be connected as FIRs input.
When TP_DUAL_IP is set to 1, two stream inputs will be connected.
In such case data should be organized in 128-bit interleaved pattern, e.g.:
* samples 0-3 to be sent over stream0 for cint16 data type,
* samples 4-7 to be sent over stream1 for cint16 data type.
*
- TP_USE_COEFF_RELOAD
-
allows the user to select if runtime coefficient reloading should be used.
When defining the parameter:
* 0 = static coefficients, defined in filter constructor,
* 1 = reloadable coefficients, passed as argument to runtime function.
Note: when used, optional port: ``port coeff;`` will be added to the FIR.
*
- TP_NUM_OUTPUTS
-
sets the number of ports over which the output is sent.
This can be 1 or 2. It is set to 1 by default.
Depending on TP_API, additional output ports functionality differs. For Windows API, additional output provides flexibility in connecting FIR output with multiple destinations. Additional output ``out2`` is an exact copy of the data of the output port ``out`` .
With Stream API, the additional output port increases the FIR's throughput.
Data is sent in a 128-bit interleaved pattern, e.g. :
* samples 0-3 is sent over stream0 for cint16 data type,
* samples 4-7 is sent over stream1 for cint16 data type.
Note: when used, optional port: ``port