Operator FIRoperatorNxM

Operator Library: Filter

The operator FIRoperatorNxM calculates the sum of the multiplication of the input kernel elements with parameterizable coefficients. The coefficients can be defined using parameter Coefficients.

Lets have a look at an example. Assume the following Sobel filter coefficients H to detect vertical edges

This filter is applied to the following image I

For the pixel at position I(2,2) = 31 we get the following result at output O

To generate the required input kernel use operators such as FIRkernelNxM, LineNeighboursNx1 or PixelNeighbours1xM.

Operator Restrictions

  • ImageWidth < 2*Parallelism are not allowed

  • Empty images i.e. images with no pixels are not allowed.

  • Empty lines or varying line lengths are not allowed.

I/O Properties

Property Value
Operator Type O
Input Link I, kernel input
Output Link O, data output

Supported Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 63] unsigned, [2, 63] signed auto1
Arithmetic {unsigned, signed} auto2
Parallelism any as I
Kernel Columns any 1
Kernel Rows any 1
Img Protocol {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} as I
Color Format VAF_GRAY as I
Color Flavor FL_NONE as I
Max. Img Width any as I
Max. Img Height any as I

1

The required output bit width is automatically determined from the input bit width, arithmetic and coefficients.

The output bit width must not exceed 64 bit.

2

The output arithmetic is automatically determined from the input arithmetic and the coefficients. The output is signed if either the input is signed or at least one coefficient is signed.

Parameters

Coefficients
Type static/dynamic read/write parameter
Default identity
Range

This parameter defines the coefficients of the filter kernel. Signed and unsigned integer values are allowed.

If the input kernel size of the operator is changed, the coefficients will also change. Check the coefficients after changing the input kernel size.

The coefficient values may not cause the output bit width to exceed 64 bit.

CoefficientsType
Type static parameter
Default SIGNED
Range SIGNED, UNSIGNED

This parameter defines the signedness of the coefficients.

It is only evalutated for dynamic coefficients. Static coefficients are always signed.

CoefficientsMaxBits
Type static parameter
Default 16
Range [2, 16]

This parameter defines the size of dynamic coefficients in bits. It is unused for static coefficients.

Reducing this value can save resources. It should be set to a size which is sufficient for all expected dynamic coefficients. This parameter is static. It can not be changed during runtime.

ImplementationType
Type static parameter
Default LUT
Range (AUTO, EmbeddedALU, LUT)

Parameter ImplementationType influences the implementation strategy of the operator, i.e., which logic elements are used for implementing the operator.

You can select one of the following values:

AUTO: When the operator is instantiated, the optimal implementation strategy is selected automatically based on the parametrization of the connected links.

EmbeddedALU: The operator uses embedded arithmetic logic elements of the FPGA that are not LUT based.

LUT: The operator uses the LUT logic of the FPGA.

[Note] Use AUTO in General

Normally, the parameter should be set to AUTO. In special cases, i.e., if one kind of FPGA ressource runs short in a design, you can manually influence the FPGA resource management using the values EmbeddedALU and/or LUT.

Examples of Use

The use of operator FIRoperatorNxM is shown in the following examples: