Spectrummodel en waterfall
De scenariosoort spectrum bouwt de L-band van het Global Navigation Satellite System (GNSS), en elke andere band die een ontworpen signaal bezet (ultra-high frequency (UHF), S-band, C-band), op als één vermogensspectrale dichtheid (PSD), laat die veranderen over een gescripte jammertijdlijn en reduceert haar tot wat een trackinglus belangrijk vindt: de jammer-tot-signaalverhouding (J/S) en de effectieve draaggolf-ruisdichtheidsverhouding (C/N₀) van elke band. Hij tekent het resultaat als een waterfall (frequentie horizontaal, tijd verticaal, kleur voor vermogen) naast C/N₀-balken per band, en hij leest en schrijft Signal Metadata Format (SigMF)-opnamen, zodat een echte opname kan worden geschat en naast het model kan worden geplot.
Schrijf het meegeleverde voorbeeld naar een bestand en voer het uit:
kshana example l-band-waterfall-jamming > l-band-waterfall-jamming.toml
kshana l-band-waterfall-jamming.toml
# writes .result.json, .chart.svg, .report.html and .report.json next to the file
In een checkout voert kshana scenarios/l-band-waterfall-jamming.toml hetzelfde bestand uit.
Code: src/spectrum.rs (het model, de soort, de Welch-schatter), src/sigmf.rs (de opnamecodec), src/navsignal.rs (de signaalspectra met eenheidsoppervlak en de spectrale scheidingscoëfficiënt) en src/leo_signal.rs (de voorinstellingen voor signaalontwerp die een band kan noemen).
Wat wordt gemodelleerd#
| Band | Draaggolf | Modulatie | Standaard ontvangen vermogen | Standaard ontvangerbandbreedte |
|---|---|---|---|---|
gps-l1ca |
1575,42 MHz | binary phase-shift keying, BPSK(1) | −158,5 dBW (IS-GPS-200) | 2,046 MHz |
galileo-e1 |
1575,42 MHz | multiplexed binary offset carrier, MBOC(6,1,1/11), of binary offset carrier BOC(1.1) | −157,25 dBW (Galileo OS SIS ICD Issue 2,1, Table 12) | 14,322 MHz |
gps-l2c |
1227,60 MHz | BPSK(1) (CM- en CL-codes in tijdmultiplex) | −160,0 dBW (IS-GPS-200) | 2,046 MHz |
gps-l5 |
1176,45 MHz | BPSK(10) | −157,9 dBW (IS-GPS-705) | 20,46 MHz |
galileo-e5a |
1176,45 MHz | BPSK(10) | −155,25 dBW (Galileo OS SIS ICD Issue 2,1, Table 12) | 20,46 MHz |
GPS (Global Positioning System) L1 C/A is de coarse/acquisition-code; L2C is het civiele L2-signaal; IS-GPS-200 en IS-GPS-705 zijn de GPS-interfacespecificaties; Galileo OS SIS ICD is het Galileo Open Service Signal-in-Space Interface Control Document. De ontvangen vermogens zijn de minimumwaarden uit de specificatie; de bandbreedtes zijn modelleringskeuzes. Beide kunnen per band worden overschreven. Zonder tabel [[bands]] gebruikt de run deze vijf. GLONASS G1/G2, BeiDou B1/B2 en Galileo E6 horen niet bij de benoemde banden.
Een item [[bands]] heeft een van drie vormen:
- een naam uit de tabel hierboven, met optioneel
signal_power_dbw,rx_bandwidth_mhzen, voorgalileo-e1,modulation = "boc11"; signal = "<preset>": een signaalontwerp voor een lage baan om de aarde (LEO) of een representatief ontwerp uit de voorinstellingenbibliotheek van de soortleo-signal(LEO-SIGNAL.md), in een willekeurige band, getekend met elke component (acquisitie, data, pilot, subdraaggolven met frequentieverdeling) en bandbegrensd tot zijn zendbandbreedte; C/N₀ en J/S verwijzen naar de gevolgde component, ennamelabelt haar alleen. De voorinstellingen zijnxona-x1,xona-x5,iridium-stl,starlink-ku-beacon,centispace-l1,centispace-l5,generic-c-band-leo,generic-uhf,generic-l,generic-s,generic-cengeneric-c-wide;- een aangepaste band: elke
namemetcentre_mhz,modulation(BPSK(n),BOC(m,n)ofMBOC(6,1,p)) ensignal_power_dbw.
Jammers ([[jammers]]) nemen een waveform aan:
cw: een continugolftoon (CW) bijcentre_mhz;narrowband: vlakke ruis overbandwidth_mhz;wideband: vlakke ruis over een bredebandwidth_mhz(een barragejammer): dezelfde dichtheid alsnarrowband, apart benoemd omdat de soortjamminghaar als breedband beoordeelt;chirp: een lineaire zaagtandsweep vanbandwidth_mhzelkesweep_period_us;matched: breedbandruis waarvan het spectrum de eigen modulatie van de bandmatched_tois.
Elk geeft ofwel received_power_dbw, ofwel een effectief isotroop uitgestraald vermogen eirp_dbw met een range_m (en optioneel rx_gain_dbi), dat door het padverlies in vrije ruimte van de soort jamming gaat. on_s en off_s scripten de tijdlijn.
De ontvanger ([receiver]) bepaalt de ruisondergrens, N₀ = k·T_sys met T_sys = T_ant + 290 K × (F − 1) voor antennetemperatuur T_ant en ruisgetal F, en de trackingdrempel.
De hoofd-waterfall beslaat [grid] (standaard 1160 tot 1590 MHz in 430 bins). Elk item [[panels]] (name, f_min_mhz, f_max_mhz, n_freq, standaard 200 bins) voegt een extra waterfall toe over zijn eigen frequentiebereik op dezelfde tijdlijn, voor een spectrum dat meerdere banden overspant.
De interferentieketen#
Voor een signaal met eenheidsoppervlakspectrum G_s en een jammer met eenheidsvermogensspectrum G_j is de spectrale scheidingscoëfficiënt (SSC) over de ontvangerband B gelijk aan κ = ∫_B G_s(f) G_j(f) df, en de effectieve draaggolf-ruisdichtheid met meerdere jammers is
(C/N₀)_eff = [ 1/(C/N₀) + Σ_j (J/S)_j · κ_j ]⁻¹
(Betz 2001; Kaplan & Hegarty, Understanding GPS/GNSS, 3e druk, §9,4). Voor één jammer is dit exact de anti-jamvergelijking van de soort jamming met Q = 1/(R_c κ); het blok jamming_kind_cross_check van het rapport voert de eigen functies van de soort jamming uit op dezelfde linkinvoer en toont het verschil, dat nul is op afronding na.
Het rapport toont ook de C/N₀ die de soort jamming geeft met zijn Q-tabel. De tabel bevat de leerboekwaarden, in de tests vastgepind op de gesloten vormen:
- CW en smalband:
Q = 1. Een CW-toon op de C/A-draaggolf heeftκ = T_c, dusQ = 1, en de tabel en de spectra komen overeen. In het meegeleverde voorbeeld geeft de toon bij beide 17,98 dB-Hz (de tabel gaf 19,74 toen hij 1,5 bevatte). - Breedband en gesweept:
Q = 2, sinds 0,36. Dat is witte ruis over de hoofdlob met het signaalvermogen in de band genormaliseerd op één,κ = 1/(2R_c). De tabel bevatte 1 tot 0,36, ongeveer 3 dB te pessimistisch (xval/jammer-q/PREREGISTRATION.md).
Het spectrummodel leidt zijn eigen waarden af uit de spectra:
Q = 1.5voor ruis die bij C/A past (κ = 2/(3R_c));Q = 2.2voor vlakke ruis van nul tot nul zonder de normalisatie (2/0.9028).
Dus voor die jammers verschillen de twee getoonde C/N₀-waarden nog steeds, met opzet.
Elke waterfallcel is de PSD gemiddeld over zijn frequentiebin en zijn rij. Een chirp wordt exact over de rij gemiddeld, hele sweeps plus de gedeeltelijke; een jammer die midden in een rij aan- of uitgaat, wordt gewogen naar zijn inschakelduur. De C/N₀-tijdlijn gebruikt dezelfde gemiddelden, zodat beeld en cijfers overeenstemmen. Per band meldt de tijdlijn de J/S in de band (jammervermogen binnen de ontvangerbandbreedte gedeeld door het signaalvermogen). Per jammer en band geeft het rapport de SSC, Q, totale J/S, J/S in de band en de stationaire C/N₀.
Het meegeleverde voorbeeld#
scenarios/l-band-waterfall-jamming.toml: een tijdlijn van 60 s, één rij per seconde, een antenne van 290 K en een ruisgetal van 2 dB (ondergrens −201,98 dBW/Hz).
- 10 s tot 40 s: een chirp van 16 MHz rond L1, sweeps van 9 µs, 50 mW op 100 m.
- Vanaf 30 s: een CW-toon op de L1-draaggolf, 10 mW op 1 km.
- Vanaf 45 s: vlakke ruis van 2 MHz op L2, ontvangen met −135 dBW.
Wat de run berekent:
| Band | Nominale C/N₀ | Minimale C/N₀ | Eerste verlies | Rijen met tracking |
|---|---|---|---|---|
| gps-l1ca | 43,48 dB-Hz | 3,23 dB-Hz | 10 s | 17 % |
| galileo-e1 | 44,73 dB-Hz | 4,44 dB-Hz | 10 s | 50 % |
| gps-l2c | 41,98 dB-Hz | 36,86 dB-Hz | nooit | 100 % |
| gps-l5 | 44,08 dB-Hz | 44,08 dB-Hz | nooit | 100 % |
| galileo-e5a | 46,73 dB-Hz | 46,73 dB-Hz | nooit | 100 % |
De CW-toon is de reden dat de twee L1-signalen bij 40 s uiteen gaan lopen. Hij valt op de piek van het C/A-spectrum en houdt C/A op 17,98 dB-Hz, onder de drempel van 25 dB-Hz. Hij valt in de nul van het MBOC-spectrum, dus Galileo E1 keert terug naar zijn nominale C/N₀ wanneer de chirp stopt.
De signalen zelf liggen ongeveer 20 dB onder de ruisondergrens, dus de waterfall toont de ondergrens en de jammers; de C/N₀-balken tonen wat despreading terugwint.
Dezelfde jammers sturen een geschakelde missie in scenarios/campaign-spectrum-holdover-integrity.toml aan (zie CAMPAIGNS.md): de klok houdt stand (holdover) zolang de chirp aan staat, en de ontvanger valt onder de CW-toon terug op Galileo E1.
Voorbij de L-band#
scenarios/multi-band-jamming-waterfall.toml plaatst LEO-signalen voor positiebepaling, navigatie en tijdsynchronisatie (PNT) in vier banden naast GPS L1 C/A en Galileo E5a, elke band met zijn eigen jammer, op een tijdlijn van 60 s. De waterfall [grid] is de L-band; drie [[panels]] voegen UHF (455 tot 475 MHz), S (2482 tot 2502 MHz) en C (5005 tot 5035 MHz) toe.
- 10 s: een CW-toon op de UHF-draaggolf, −120 dBW ontvangen.
- 20 s: de chirp van het L-bandvoorbeeld (16 MHz rond L1, sweeps van 9 µs, 50 mW op 100 m).
- 30 s: breedbandruis, 40 MHz rond 1185 MHz, −118 dBW.
- 40 s: smalbandruis, 2 MHz op de S-draaggolf, −128 dBW.
- 50 s: ruis die past bij het eigen spectrum van het C-bandsignaal, −124 dBW.
Wat de run berekent (de C/N₀ van de ontworpen signalen is die van de gevolgde component, dus de nominale waarde ligt onder het totale ontvangen vermogen met het aandeel van het gevolgde deel):
| Band | Signaal | Draaggolf | Nominale C/N₀ | Minimale C/N₀ | Rijen met tracking |
|---|---|---|---|---|---|
| generic-uhf | representatief, BPSK(5), −150 dBW | 465 MHz | 49,41 dB-Hz | 34,38 dB-Hz | 100 % |
| gps-l1ca | specificatieminimum | 1575,42 MHz | 43,48 dB-Hz | 3,38 dB-Hz | 33 % |
| galileo-e5a | specificatieminimum | 1176,45 MHz | 46,73 dB-Hz | 38,51 dB-Hz | 100 % |
| xona-x5 | gepubliceerd ontwerp, −144,9 dBW | 1190,51625 MHz | 54,51 dB-Hz | 46,29 dB-Hz | 100 % |
| generic-s | representatief, BPSK(5), −150 dBW | 2492,028 MHz | 49,23 dB-Hz | 41,69 dB-Hz | 100 % |
| generic-c-band-leo | representatief, BPSK(10), −152 dBW | 5020 MHz | 47,41 dB-Hz | 40,35 dB-Hz | 100 % |
Alleen de chirp neemt een signaal weg (GPS L1 C/A, vanaf 20 s). Elke andere jammer verslechtert alleen de band die zijn spectrum bereikt: de aangepaste ruis van de C-band heeft bijvoorbeeld een SSC van −71,87 dB/Hz met het C-bandsignaal en onder −133 dB/Hz met elke andere band.
Hetzelfde mechanisme stuurt de scenario's voor LEO-PNT-veerkracht aan (LEO-PNT.md):
scenarios/leo-resilience-js-margin.tomlverhoogt een barragejammer van 40 MHz bij 1185 MHz elke 10 s met 5 dB vanaf −125 dBW. GPS L5 gaat verloren bij de stap van −105 dBW, Galileo E5a bij −100 dBW en Xona X5 bij −95 dBW, terwijl een representatief LEO-L-bandsignaal dat met −135 dBW wordt ontvangen nog steeds trackt bij −90 dBW: ontvangen vermogen koopt J/S-marge dB voor dB.scenarios/leo-resilience-multiband-diversity.tomlis een campagnesweep van een runspectrumover het vermogen van een barrage in de L5-band (CAMPAIGNS.md).scenarios/leo-resilience-gnss-jammed-leo-carries.tomlis een geschakelde campagne waarvan de fasen de GNSS- en LEO-C/N₀ uit runsspectrumlezen, met panelen voor S- en C-band.
IQ, SigMF en Welch#
[iq] tekent het model op één tijdstip als complexe in-phase- en quadratuur-samples (IQ), schrijft ze als een SigMF-opname (cf32_le of ci16_le), leest de opname terug en schat haar PSD met de methode van Welch (Hann-venster, 50 % overlap, gemiddelde periodogrammen, dichtheidsgeschaald). Thermische ruis, signalen en ruisachtige jammers worden bin voor bin getekend uit de eigen dichtheid van het model; een toon en een chirp worden als echte golfvormen getekend. Met alleen ruisachtige jammers ligt de Welch-schatting binnen 0,1 dB van het model (mediaan). Een periodieke chirp is een lijnenspectrum op zijn sweepsnelheid, met rimpel en staarten voorbij zijn bandranden die het gladde model weglaat: in het meegeleverde voorbeeld komt het totale vermogen binnen 0,02 % overeen en verschilt de mediane bin 0,5 dB. De snapshot is een bestand dat voor analyse wordt geschreven; er wordt niets uitgezonden en er wordt geen radiohardware aangestuurd.
[recording] (alleen native builds) leest een echte SigMF-opname uit meta_path (het gegevensbestand heeft standaard dezelfde stam met .sigmf-data), schat haar PSD en toont die naast het model op de frequenties van de opname. Een SigMF-bestand heeft geen absolute vermogenskalibratie, dus het rapport geeft de mediane offset en de vorm, geen niveau.
In de WebAssembly-build zijn de bestandsleesacties niet beschikbaar; kshana::sigmf::read en kshana::spectrum::welch_psd werken op bytes die de pagina aanlevert.
Bewijs#
| Bewering | Label | Onafhankelijke referentie |
|---|---|---|
| Signaal-PSD's en SSC's | VALIDATED | BPSK(n)-hoofdlob 2n × 1,023 MHz van nul tot nul; BOC(1.1)-lobben gecentreerd op ±1,023 MHz (Betz 2001); SSC's −61,86 / −64,87 / −67,88 dB/Hz voor C/A×C/A, BOC(1.1)×BOC(1.1), C/A×BOC(1.1) uit hun gesloten Parseval-vormen, de waarden achter de gepubliceerde −61,8 / −64,8 / −67,8 dB/Hz; Q = 1 (CW) en 1,5 (aangepast) (Kaplan & Hegarty §9,4); de tabelitems van de soort jamming zijn gelijk aan de gesloten vormen: CW en smalband Q = 1, breedband en gesweept Q = 2 (witte ruis over de hoofdlob, vermogen in de band genormaliseerd; 1 tot 0,36) |
| Waterfall, J/S en C/N₀-tijdlijn | MODELLED | Valt exact terug op de keten van de soort jamming; de jammervermogens, de tijdlijn en de bandbreedtes zijn invoer |
| SigMF-codec en Welch-schatting | MODELLED | Heen-en-terugreizen, een directe discrete Fouriertransformatie, identiteiten voor witte ruis en van Parseval; er zit geen opname van derden in de repository |
| Multiband-waterfall met ontworpen signalen en jammers per band | MODELLED | Valt terug op de keten van de L-band (een band met één component geeft dezelfde getallen als vóór de uitbreiding) en op de aan een externe referentie getoetste signaalspectra; de ontworpen signalen, jammers en bandbreedtes zijn invoer |
Eén correctie op een gangbare vereenvoudiging: de lobben van het BOC(1.1)-spectrum zijn gecentreerd op ±1,023 MHz (tussen de draaggolfnul en de nul bij 2,046 MHz), maar het maximum van de PSD ligt op ±0,759 MHz, waar tan y = 2y met y = πf/(2R_c). De tests leggen beide vast.
Niet gemodelleerd#
- Lijnstructuur van de spreidingscode (de lijnen van 1 kHz van C/A): een toon wordt beoordeeld tegen de gladde omhullende, niet tegen de dichtstbijzijnde codelijn.
- Automatische versterkingsregeling, kwantisatie, pulsonderdrukking en notchfiltering.
- Het ontvangstantennepatroon in de richting van de jammer, voorbij één versterkingscijfer.
- Interferentie door meervoudige toegang tussen satellieten van één band.
- De emissies van een ontworpen signaal buiten zijn zendbandbreedte: zijn spectrum wordt daar afgekapt, dus er bereikt geen emissie buiten de band een naburige band.
- Het effect van een chirp op de lus bij sweepsnelheden die vergelijkbaar zijn met de lusbandbreedte: zijn C/N₀ gebruikt het over de rij gemiddelde spectrum.
Referenties#
- J. W. Betz, "Binary Offset Carrier Modulations for Radionavigation," NAVIGATION 48(4), 2001.
- E. D. Kaplan en C. J. Hegarty (red.), Understanding GPS/GNSS: Principles and Applications, 3e druk, Artech House, 2017, §9,4.
- G. W. Hein et al., "MBOC: The New Optimized Spreading Modulation Recommended for Galileo L1 OS and GPS L1C," Inside GNSS, mei/juni 2006.
- P. D. Welch, "The Use of Fast Fourier Transform for the Estimation of Power Spectra," IEEE Transactions on Audio and Electroacoustics 15(2), 1967.
- IS-GPS-200, IS-GPS-705; Galileo OS SIS ICD.
- SigMF-specificatie, https://sigmf.org/ (bron: https://github.com/sigmf/SigMF).