FIR Filter

Description of the FIR Filter component in Schematic Editor.

Component Icon

Figure 1. FIR Filter icon

Description

FIR (Finite Impulse Response) filters are a discrete implementation of a transfer function composed by only zeros. It offers some advantages in comparison with IIR (Infinite Impulse Response) filters, such as:
  • It is possible to achieve zero phase filters
  • It is always stable
  • It does not require feedback loop
  • It is easy to digitally implement
  • The transient response always has a finite duration

FIR filters can be described by the following differential equation:

Where M is a finite integer number. The equation above can be graphically represented by the z-domain block diagram on Figure 2.

Figure 2. Block diagram of a 'N' order FIR filter

Ports

  • Input (in)
    • Original input signal.
      • Supported types: uint, int, real.
      • Vector support: yes.
  • Output (out)
    • Filtered signal.
      • Supported types: uint, int, real, and inherit.
        • o Output type is set from component’s parameter Signal out type or inherited from signal processing circuit.
      • Vector support: yes
        • Vector length is inherited from the input signal.

Properties

  • Numerator
    • Type in the coefficients of the desired FIR filter.
  • Initial states
    • Type in the initial value of each state of the input signal.

      Accepted initial states can be either scalar, vector with only one element, or vector with as many elements as there is filter coefficients

  • Signal out type
    • Chose the type of the output signal of the component. This property can be set to “real”, “int”, “uint”, or “inherit”.
  • Execution rate
    • Type in the desired signal processing execution rate. This value must be compatible with other signal processing components of the same circuit: the value must be a multiple of the fastest execution rate in the circuit. There can be up to four different execution rates, but they must all be multiple of the basic simulation timestep. To specify the execution rate, you can use either decimal (e.g. 0.001) or exponential values (e.g. 1e-3) in seconds. Alternatively, you can type in ‘inherit’ in which case the component will be assigned execution rate based on the execution rate of the components it is receiving input from.