Description of some GNU Radio blocks

Frequency Xlating FIR Filter

GRC block



Frequency Xlating FIR Filter is a block that:

  1. performs frequency translation on the signal,

  2. downsamples the signal by running a decimating FIR filter on it.

It can be used as a channelizer: it can select a narrow bandwidth channel from the wideband receiver input.



Type: It selects the type of the input and the output, and also the filter taps.

If you have Real taps, then your FIR filter will be symmetric in the frequency domain. Some examples on filter characteristics:


If you have Complex taps, then your FIR filter will not have to be symmetric in the frequency domain. Some examples on filter characteristics:


Decimation: the integer ratio between the input and the output signal’s sampling rate. Example:

Input sample rate = 240000
Decimation factor = 5
Output sample rate = 240000 ÷ 5 = 48000

See also: decimation.

Center frequency: the frequency translation offset frequency.

In practice, it is the frequency offset of the signal if interest to be selected from the input.



Taps: the vector of the complex or real taps of the FIR filter.

If you generate the filter coefficients with a custom filter design tool, e.g. MATLAB:

[0.1, -0.2, 0.3, -0.2, 0.1]

If you do not want to filter anyway (but if you still decimate, the output will suffer from aliasing, see decimation):


You can also generate them by using python code.

Use this if you selected a type with real taps:

firdes.low_pass(1,samp_rate,samp_rate/(2*decimation), transition_bw)

Use this if you selected a type with complex taps:

firdes.complex_band_pass(1, samp_rate, -samp_rate/(2*decimation), samp_rate/(2*decimation), transition_bw)

Note: transition_bw is the transition bandwidth of the filter in Hz. The lower it is, the more taps the function will generate, and the more CPU time it will take to apply this filter. This parameter will determine the CPU usage and thus the execution speed of the block.

Sample rate: The sample rate of the input signal.

Example flowgraph



If you set decimation above 1, then the sampling rate of the block’s output signal will differ from the input sampling rate.

You will have to set the sampling rate of all the blocks connected to its output correctly!


Speed considerations

You might also consider using the Frequency Xlating FFT Filter instead of this block.

The speed of these two blocks compare differently in different applications, as it depends on the decimation factor and the length of the filter.

See this article for more information.