GNU Radio Companion · Block

Tiefpass-Filter-Blöcke (Filter & Taps)

Low Pass Filter und Low Pass Filter Taps in GRC 3.10 — Funktionsweise, Parameter, Dimensionierung und die Filterung reeller und komplexer Signale.

GRC 3.10 bietet zwei eng verwandte Tiefpass-Blöcke, die auf der Funktion firdes.low_pass() basieren: Low Pass Filter ist der aktive Verarbeitungsblock (Filterentwurf + Signalverarbeitung), während Low Pass Filter Taps ein reiner Variablen-Block ist, der lediglich die Filterkoeffizienten (Taps) berechnet.

1. Beschreibung der Blöcke

Low Pass Filter (filter.fir_filter_*) ist ein kombinierter Block: Er berechnet beim Start des Flowgraphs die Filterkoeffizienten basierend auf den Grenzfrequenzen, der Übergangsbreite und dem gewählten Fenster und wendet diese direkt auf den durchlaufenden Signalstrom an. Details zu den mathematischen Grundlagen findest du im Artikel Tiefpassfilter.

Low Pass Filter Block

Low Pass Filter Taps (firdes.low_pass() als GRC-Variable) führt exakt dieselbe mathematische Berechnung der Koeffizienten durch, besitzt aber keine Signal-Ein- oder Ausgänge. Er erzeugt ein Array (float_vector bzw. real_taps), das als Parameter an andere Blöcke übergeben werden kann (z. B. an einen Frequency Xlating FIR Filter).

Low Pass Filter Taps Block


2. Technischer Einsatz

  • Wann „Low Pass Filter" (Block): Der Standardfall zur Rauschreduzierung, Kanalselektion oder Dezimierung direkt im Signalpfad. Wenn du ein Signal einfach von hochfrequenten Anteilen befreien willst, ist dies der richtige Block.
  • Wann „Low Pass Filter Taps" (Variable): Wird benötigt, wenn der eigentliche Filtervorgang in einem anderen Block stattfindet, der Taps als Parameter erwartet. Typisches Beispiel ist der Frequency Xlating FIR Filter, welcher Frequenzverschiebung, Filterung und Dezimierung in einem einzigen Schritt vollzieht und ein fertiges Taps-Array als Input verlangt.
  • Reelle Koeffizienten: Da ein Tiefpassfilter standardmäßig symmetrisch um $0\text{ Hz}$ liegt, sind die berechneten Taps immer reelle Zahlen (im Gegensatz zu asymmetrischen Bandpässen, die komplexe Taps erfordern).

3. Parameter und Dimensionierung

Beide Blöcke teilen sich die folgenden Kernparameter für den Filterentwurf:

Parameter Typ/Einheit Bedeutung Dimensionierungshinweis
samp_rate Hz Abtastrate des Eingangssignals muss exakt mit der Rate des eingehenden Datenstroms übereinstimmen
cutoff_freq Hz Grenzfrequenz (3dB-Punkt) Frequenzen oberhalb dieser Grenze werden gedämpft. Muss < samp_rate / 2 sein
width (Transition Width) Hz Übergangsbreite Übergangsbereich vom Durchlass- zum Sperrbereich. Kleiner = steiler, bedeutet aber eine höhere Tap-Zahl und mehr Rechenleistung ($N \approx A_{sb}/(22 \cdot \Delta f/f_s)$)
gain linear Gesamtverstärkung des Filters Standard ist 1.0 (keine Pegeländerung im Durchlassbereich)
win (Window) Enum Fensterfunktion Hamming, Hann, Blackman, Rectangular oder Kaiser. Bestimmt die Nebensprechdämpfung (siehe Fensterfunktionen)
beta Kaiser-Beta nur bei Auswahl des Kaiser-Fensters aktiv; steuert den Kompromiss zwischen Flankensteilheit und Sperrdämpfung

4. Ein- und Ausgänge

Der Low Pass Filter Taps-Block besitzt keine Anschlüsse. Für den Low Pass Filter-Verarbeitungsblock stehen folgende Typen zur Verfügung:

FIR Type Eingangstyp Ausgangstyp Taps-Art
Complex->Complex (Decimal) complex complex reell (float)
Float->Float (Decimal) float float reell (float)
Float->Complex (Decimal) float complex reell (float)

Hinweis zur Dezimation/Interpolation: Die Blöcke erlauben es, direkt beim Filtern eine Dezimation (Herabsetzen der Abtastrate) oder Interpolation (Erhöhen der Abtastrate) durchzuführen, was die Recheneffizienz erheblich steigert.


5. Weitere wichtige Aspekte

  • Echtzeit-Anpassung: Über Callbacks wie set_taps() können die Grenzfrequenz oder die Übergangsbreite zur Laufzeit verändert werden (z. B. durch einen QT GUI Range-Schieberegler). GNU Radio berechnet die Taps im Hintergrund neu, ohne dass der Datenstrom unterbrochen wird.
  • Grenzwerte: Setze die Übergangsbreite (width) niemals zu klein an (z. B. < 10 Hz bei Megahertz-Abtastraten). Dies führt zu einer astronomisch hohen Tap-Zahl, die den Computer durch Überlastung zum Stillstand bringt.