Frequency Xlating FIR Filter Block
Het GNU Radio Frequency Xlating FIR Filter blok is een veelzijdig en efficiënt signaalverwerkingsblok dat filtering, frequentieverschuiving en decimering in één operatie combineert. Het wordt vaak gebruikt in software-defined radio (SDR)-toepassingen voor taken zoals kanaalselectie, bandverschuiving en het verlagen van de samplefrequentie.
Hoe Werkt Het?
- Frequentieverschuiving:
- Het blok voert een frequentieverschuiving uit door het ingangssignaal te mengen (vermenigvuldigen) met een complexe sinusoïde e−j2πfct, waarbij fc de centrumfrequentie (verschuivingsfrequentie) is.
- Dit verschuift het spectrum van het ingangssignaal, waardoor de gewenste frequentieband naar de basisband wordt verplaatst (gecentreerd rond 0 Hz).
- Het is een beetje vergelijkbaar met het analoge Direct Conversion ontvangst principe.
- Filtering:
- Na de frequentieverschuiving wordt een Finite Impulse Response (FIR)-filter toegepast op het signaal. Dit filter wordt gedefinieerd door een set coëfficiënten (taps) die door de gebruiker worden opgegeven.
- Het FIR-filter verwijdert ongewenste frequenties en selecteert de gewenste kanaal- of frequentieband.
- Decimering:
- Om de rekenbelasting en de uitvoer-samplefrequentie te verminderen, ondersteunt het blok decimering, waarbij de samplefrequentie met een gehele factor N wordt verminderd.
- Dit gebeurt door elke N-de sample van het gefilterde signaal te behouden en de rest te verwijderen.
Invoerparameters:
- Centrumfrequentie (fc): De frequentie waarop het signaal moet worden verschoven.
- FIR Taps: De coëfficiënten van het FIR-filter die worden gebruikt voor kanaalselectie.
- Decimeringsfactor: Bepaalt hoeveel de uitvoer-samplefrequentie wordt verlaagd.
De verschillende (wiskundige) bewerkingen in het Frequency Xlating FIR Filter
- Mengen:
- Het ingangssignaal x(t) wordt vermenigvuldigd met de complexe sinusoïde: xverschoven(t) = x(t) ⋅ e−j2πfct
- Hierdoor wordt de gewenste frequentieband naar de basisband verschoven (menging).
- Filteren:
- Het verschoven signaal wordt gevouwen met de FIR-filtertaps:
y(t) = ∑k=0 tot L−1 hk ⋅ xverschoven(t−k) - Hierbij zijn hk de FIR-filtercoëfficiënten en L de lengte van het filter.
- Het verschoven signaal wordt gevouwen met de FIR-filtertaps:
- Decimatie:
- Elke N-de sample wordt behouden om de samplefrequentie te verlagen:
ygedecimeerd[n] = y[n⋅N]
- Elke N-de sample wordt behouden om de samplefrequentie te verlagen:
Voordelen:
- Efficiëntie: Combineert drie operaties (mengen, filteren en decimatie) in één, wat de rekenefficiëntie verhoogt.
- Flexibiliteit: Door de FIR-taps zelf te definiëren, kan het filter worden aangepast aan specifieke toepassingen.
- Kanaalselectie: Hiermee is het eenvoudig om specifieke frequentiebanden uit een complex signaal te isoleren en te verwerken.
Voorbeeldgebruik:
Stel dat je een breedband-ingangssignaal hebt met meerdere kanalen en je een specifiek kanaal wilt isoleren op fc=1 MHz met een bandbreedte van 200 kHz, en je wilt de uitvoer decimeren met een factor 10. Dan kun je:
- fc = 1 MHz instellen om het gewenste kanaal naar de basisband te verschuiven.
- Een FIR-filter ontwerpen met een doorlaatband van 200 kHz.
- Decimatie instellen op 10 om de samplefrequentie te verlagen en efficiëntie te verbeteren.
Belangrijke Opmerkingen:
- Het blok verwerkt complexe (IQ) signalen, wat standaard is in SDR-toepassingen.
- Een goed ontwerp van het filter is cruciaal voor effectieve kanaalselectie en het voorkomen van aliasing.
- GNU Radio biedt tools zoals firdes om FIR-filtertaps te ontwerpen.
Dankzij deze combinatie van mogelijkheden is het Frequency Xlating FIR Filter een essentieel hulpmiddel in moderne SDR-systemen.
Voorbeeld
Dit is een configuratie voor een Frequency Xlating FIR Filter in GNU Radio om een enkelzijband (USB) signaal rond 14200 kHz te extraheren uit een inkomende frequentieband van 14 MHz – 15 MHz. De uitvoer zal worden gesampled op 192 kHz.
Stap-voor-stap instellingen
- Inkomende parameters:
- Inkomend signaal: breedbandig, 14 MHz – 15 MHz.
- Samplefrequentie (input): 2 MHz (of hoger).
- Gewenst signaal:
- Centrumfrequentie: 14200 kHz (14.2 MHz).
- Bandbreedte: ~3 kHz (typisch voor USB).
- Uitgangsparameters:
- Samplefrequentie (output): 192 kHz.
Parameterconfiguratie
- Taps (FIR-filtercoëfficiënten)
Gebruik een banddoorlaatfilter met een bandbreedte van 3 kHz rond 14200 kHz. Je kunt firdes gebruiken om deze taps te genereren:
- Center Frequency
Stel dit in op 14200 kHz (14.2 MHz). Dit verschuift het gewenste signaal naar het nulpunt (DC, 0 Hz).
- Decimation
Bepaal de decimeringsfactor om van de inkomende samplefrequentie (2 MHz) naar de gewenste uitvoerfrequentie (192 kHz) te gaan:
Decimering = Input Sample Rate / Output Sample Rate = 2 MHz / 192 kHz =10,4167
Omdat de decimering een geheel getal moet zijn, gebruik je 10 of 11. Bij 10 is de output-samplefrequentie: 2 MHz / 10 = 200 kHz.
Gebruik daarna een Rational Resampler om van 200 kHz naar 192 kHz te gaan.
(interpolatie 24 en decimering 25)
- Samplefrequentie (input)
De input moet gesampled zijn op 2 MHz (of een andere hoge frequentie die de bandbreedte
Meer info over dit blok op de GNU Radio site.