Frequency Xlating FIR Filter
Mischer, Tiefpassfilter und Dezimierung in einem einzigen Block — Funktionsweise, Parameter und Ein-/Ausgänge.
1. Beschreibung des Blocks
Der Frequency Xlating FIR Filter (filter.freq_xlating_fir_filter_*) verschiebt ein Signal per Mischung auf eine neue Mittenfrequenz, filtert es anschließend mit einem FIR-Tiefpass und dezimiert es — alles in einem einzigen, optimierten Verarbeitungsschritt. Er ist der Standardblock zur Kanalselektion aus einem breitbandigen Empfangssignal, etwa im USB-Sprachempfänger, wo er die Empfangsfrequenz festlegt und das gewünschte Seitenband heraustrennt.

Die drei Schritte laufen in fester Reihenfolge ab: Zuerst wird das Signal um center_freq gemischt (die Zielfrequenz landet dabei auf 0 Hz), danach mit den übergebenen taps tiefpassgefiltert und schließlich um den Faktor decim dezimiert. Diese Kombination ersetzt eine sonst nötige Kette aus Rotator, Low Pass Filter und Keep 1 in N durch einen einzigen Block.
2. Technischer Einsatz
- Kanalselektion aus breitbandigem Empfang: Typischer Einsatzfall ist ein SDR, das einen großen Frequenzbereich am Stück empfängt (z. B. per RTL-SDR oder USRP), aus dem ein einzelner, schmalbandiger Kanal herausgefiltert und gleichzeitig auf eine niedrigere, praktikable Abtastrate heruntergerechnet wird.
- Alternative zur Hardware-Abstimmung: Statt den HF-Tuner neu einzustellen, kann bei ausreichender Empfangsbandbreite auch softwareseitig innerhalb des bereits empfangenen Spektrums retuned werden — nützlich, wenn mehrere Kanäle gleichzeitig aus einem einzigen breitbandigen Datenstrom extrahiert werden sollen.
decim=1: Auch ohne Ratenänderung sinnvoll einsetzbar, wenn nur gemischt und gefiltert werden soll, die Abtastrate aber erhalten bleiben muss.
3. Parameter und Dimensionierung
| Parameter | Typ/Einheit | Bedeutung | Dimensionierungshinweis |
|---|---|---|---|
decim (Decimation) |
int | Dezimierungsfaktor | Ausgangsrate = samp_rate / decim; decim=1 für reines Retuning ohne Ratenänderung |
taps |
Vektor (reell oder komplex, je nach Typ) | FIR-Tiefpass-Koeffizienten | typischerweise per Low Pass Filter Taps (firdes.low_pass()) erzeugt; Grenzfrequenz und Übergangsbreite bestimmen Selektivität und Tap-Zahl (siehe FIR-Filter) |
center_freq (Center Frequency) |
Hz | Frequenz, die auf 0 Hz gemischt wird | entspricht der gewünschten Empfangs-/Zielfrequenz relativ zur Mittenfrequenz des Eingangssignals |
samp_rate (Sample Rate) |
Hz | Abtastrate des Eingangssignals | muss exakt mit der tatsächlichen Eingangsrate übereinstimmen |
4. Ein- und Ausgänge
| Port | Richtung | Typ | Bedeutung |
|---|---|---|---|
in |
Eingang | complex, float oder int16 (je nach gewählter Blockvariante) | zu verschiebendes/filterndes Signal |
freq |
Eingang (Message, optional) | PMT | setzt center_freq zur Laufzeit über eine Nachricht statt über einen Callback — praktisch, wenn die Retune-Frequenz aus einer message-basierten Blockkette kommt (z. B. von einem AFC-Regelkreis) statt über einen GUI-Regler |
out |
Ausgang | immer complex | gemischtes, gefiltertes und dezimiertes Signal, unabhängig vom Eingangstyp |
Über set_center_freq()/center_freq() und set_taps()/taps() lassen sich Mittenfrequenz und Taps auch als GRC-Callbacks binden, sodass sich beide Werte über GUI-Elemente (z. B. einen QT GUI Range-Regler) zur Laufzeit ändern lassen, ohne den Flowgraph neu zu starten.
5. Weitere wichtige Aspekte
Ausgang immer komplex: Unabhängig davon, ob der Eingang reell (float/int16) oder bereits komplex ist, liefert der Block immer ein komplexes Ausgangssignal — die Mischung erzeugt zwangsläufig eine komplexe Basisbanddarstellung.
Gruppenlaufzeit nach Retuning beachten: Nach einer Änderung von center_freq (per Callback oder über den freq-Port) braucht der interne Filter etwas, bis sich das Signal eingeschwungen hat. Als Faustregel gilt die Gruppenlaufzeit len(taps) // 2 Samples — im Block-Test sind das bei 241 Taps 120 Samples.
Block-Test: Freq Xlating FIR Filter
Messung mit synthetischem Testsignal: Störerunterdrückung, Gruppenlaufzeit und Spektrum vor/nach dem Block.
Rotator Block
Der Baustein, mit dem sich die hier fest eingebaute Frequenzverschiebung auch einzeln nachbauen lässt.
Decimating & Interpolating FIR Filter
Dieselbe Filterung mit Dezimierung bzw. Interpolation, aber ohne die zusätzliche Frequenzverschiebung.
Tiefpass-Filter-Blöcke
Wie die Taps für den Frequency Xlating FIR Filter typischerweise erzeugt werden.
USB-Sprachempfänger für 144,300 MHz
Praxiseinsatz: Der Block legt hier die Empfangsfrequenz fest und filtert das Seitenband heraus.