template class xf::dsp::aie::fir::decimate_sym::fir_decimate_sym_graph

#include "fir_decimate_sym_graph.hpp"

Overview

fir_decimate_sym is a Symmetrical Decimation FIR filter

These are the templates to configure the symmetrical decimator FIR class. Note: Margin size should not be included in TP_INPUT_WINDOW_VSIZE.

Parameters:

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 and must be an integer multiple of the TP_DECIMATE_FACTOR value.
TP_DECIMATE_FACTOR is an unsigned integer which describes the decimation factor of the filter, the ratio of input to output samples. TP_DECIMATE_FACTOR must be in the range 2 to 3. For larger factors, use the fir_decimate_asym library element.
TP_SHIFT is 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 divided by TP_DECIMATE_FACTOR by virtue the decimation factor. TP_INPUT_WINDOW_VSIZE must be an integer multiple of TP_DECIMATE_FACTOR The resulting output window size must be a multiple of 256bits.
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 is an implementation trade-off between performance and data bank resource. When set to 0, the FIR performance may be limited by load contention. When set to 1, two ram banks are used for input.
TP_USE_COEFF_RELOAD

allows the user to select if runtime coefficient reloading should be used. This currently is only available for single kernel filters. When defining the parameter:

  • 0 = static coefficients, defined in filter constructor
  • 1 = reloadable coefficients, passed as argument to runtime function
template <
    typename TT_DATA,
    typename TT_COEFF,
    unsigned int TP_FIR_LEN,
    unsigned int TP_DECIMATE_FACTOR,
    unsigned int TP_SHIFT,
    unsigned int TP_RND,
    unsigned int TP_INPUT_WINDOW_VSIZE,
    unsigned int TP_CASC_LEN = 1,
    unsigned int TP_DUAL_IP = 0,
    unsigned int TP_USE_COEFF_RELOAD = 0,
    unsigned int TP_NUM_OUTPUTS = 1
    >
class fir_decimate_sym_graph: public graph

// fields

port <input> in
port <output> out

Fields

port <input> in

The input data to the function. This input is a window API of samples of TT_DATA type. The number of samples in the window is described by TP_INPUT_WINDOW_VSIZE. Note: Margin is added internally to the graph, when connecting input port with kernel port. Therefore, margin should not be added when connecting graph to a higher level design unit. Margin size (in Bytes) equals to TP_FIR_LEN rounded up to a nearest multiple of 32 bytes.

port <output> out

A window API of TP_INPUT_WINDOW_VSIZE/TP_DECIMATE_FACTOR samples of TT_DATA type.

Methods

getKernels

kernel* getKernels ()

Access function to get pointer to kernel (or first kernel in a chained configuration).

fir_decimate_sym_graph

fir_decimate_sym_graph (const std::vector <TT_COEFF>& taps)

This is the constructor function for the symmetrical decimator FIR graph.

Parameters:

taps
  • a pointer to the array of taps values of type TT_COEFF. Due to symmetry, only the first half of the supplied taps array (plus any odd centre tap) is used by this class. The remaining coefficients are inferred by symmetry.