template class xf::dsp::aie::fir::sr_sym::fir_sr_sym_graph

#include "fir_sr_sym_graph.hpp"

Overview

fir_sr_sym is a Symmetrical Single Rate FIR filter

These are the templates to configure the Symmetric Single Rate FIR class.

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_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 also by virtue the single rate nature of this function.

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_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<input> coeff; will be added to the FIR.

TP_NUM_OUTPUTS

sets the number of ports to broadcast the output to.

Note: when used, optional port: port<output> out2; will be added to the FIR.

TP_API

specifies if the output interface should be window-based or stream-based.

The values supported are 0 (window API) or 1 (stream API).

Note: due to the data buffering requirement imposed through symmetry, input interface is always set to window.

Auto-infeffed DMA stream-to-window conversion is applied when FIR is connected with an input stream.

template <
    typename TT_DATA,
    typename TT_COEFF,
    unsigned int TP_FIR_LEN,
    unsigned int TP_SHIFT,
    unsigned int TP_RND,
    unsigned int TP_INPUT_WINDOW_VSIZE,
    unsigned int TP_CASC_LEN = 1,
    unsigned int TP_USE_COEFF_RELOAD = 0,
    unsigned int TP_NUM_OUTPUTS = 1,
    unsigned int TP_API = 0
    >
class fir_sr_sym_graph: public graph

// fields

port <input> in
port <output> out
port_conditional <input, (TP_USE_COEFF_RELOAD==1)> coeff
port_conditional <output, (TP_NUM_OUTPUTS==2)> out2

Fields

port <input> in

The input data to the function. This input is either a window API of samples of TT_DATA type or stream API (depending on TP_API). 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

The output data from the function. This output is either a window API of samples of TT_DATA type or stream API (depending on TP_API). Number of output samples is determined by interpolation & decimation factors (if present).

port_conditional <input, (TP_USE_COEFF_RELOAD==1)> coeff

The conditional coefficient data to the function. This port is (generated when TP_USE_COEFF_RELOAD == 1) an array of coefficients of TT_COEFF type.

port_conditional <output, (TP_NUM_OUTPUTS==2)> out2

The output data from the function. This output is (generated when TP_NUM_OUTPUTS == 2) either a window API of samples of TT_DATA type or stream API (depending on TP_API). Number of output samples is determined by interpolation & decimation factors (if present).

Methods

getKernels

kernel* getKernels ()

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

getKernelArchs

unsigned int getKernelArchs ()

Access function to get kernel’s architecture (or first kernel’s architecture in a chained configuration).

fir_sr_sym_graph

fir_sr_sym_graph overload (1)

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

This is the constructor function for the FIR graph with static coefficients.

Parameters:

taps a reference to the std::vector array of taps values of type TT_COEFF.

fir_sr_sym_graph overload (2)

fir_sr_sym_graph ()

This is the constructor function for the FIR graph with reloadable coefficients.