Spektrummodell und Wasserfall
Die Szenarioart spectrum baut das L-Band des Global Navigation Satellite System (GNSS) und jedes andere Band, das ein entworfenes Signal belegt (Ultrahochfrequenz (UHF), S-Band, C-Band), als eine einzige spektrale Leistungsdichte (PSD) auf, lässt sie sich über eine geskriptete Störsender-Zeitleiste verändern und reduziert sie auf das, was eine Verfolgungsschleife interessiert: das Störer-Signal-Verhältnis (J/S) und das effektive Träger-Rauschleistungsdichte-Verhältnis (C/N₀) jedes Bandes. Sie zeichnet das Ergebnis als Wasserfall (Frequenz quer, Zeit nach unten, Farbe für Leistung) neben C/N₀-Balken je Band und liest und schreibt Aufzeichnungen im Signal Metadata Format (SigMF), sodass eine reale Aufzeichnung geschätzt und neben dem Modell dargestellt werden kann.
Schreiben Sie das mitgelieferte Beispiel in eine Datei und führen Sie es aus:
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 einem Checkout führt kshana scenarios/l-band-waterfall-jamming.toml dieselbe Datei aus.
Code: src/spectrum.rs (das Modell, die Art, der Welch-Schätzer), src/sigmf.rs (der Aufzeichnungs-Codec), src/navsignal.rs (die Signalspektren mit Einheitsfläche und der spektrale Trennungskoeffizient) und src/leo_signal.rs (die Voreinstellungen für den Signalentwurf, die ein Band benennen kann).
Was modelliert wird#
| Band | Träger | Modulation | Standard-Empfangsleistung | Standard-Empfängerbandbreite |
|---|---|---|---|---|
gps-l1ca |
1575,42 MHz | binäre Phasenumtastung, BPSK(1) | −158,5 dBW (IS-GPS-200) | 2,046 MHz |
galileo-e1 |
1575,42 MHz | gemultiplexter binärer Offset-Träger, MBOC(6,1,1/11), oder binärer Offset-Träger BOC(1.1) | −157,25 dBW (Galileo OS SIS ICD Issue 2,1, Tabelle 12) | 14,322 MHz |
gps-l2c |
1227,60 MHz | BPSK(1) (CM- und CL-Codes im Zeitmultiplex) | −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, Tabelle 12) | 20,46 MHz |
GPS (Global Positioning System) L1 C/A ist der Grob-/Erfassungscode; L2C ist das zivile L2-Signal; IS-GPS-200 und IS-GPS-705 sind die GPS-Schnittstellenspezifikationen; Galileo OS SIS ICD ist das Interface Control Document des Galileo Open Service Signal-in-Space. Die Empfangsleistungen sind die Mindestwerte der Spezifikation; die Bandbreiten sind Modellierungsentscheidungen. Beide lassen sich je Band überschreiben. Ohne eine [[bands]]-Tabelle verwendet der Lauf diese fünf. GLONASS G1/G2, BeiDou B1/B2 und Galileo E6 gehören nicht zu den benannten Bändern.
Ein Eintrag [[bands]] hat eine von drei Formen:
- ein Name aus der obigen Tabelle, mit optionalem
signal_power_dbw,rx_bandwidth_mhzund, fürgalileo-e1,modulation = "boc11"; signal = "<preset>": ein Signalentwurf für die niedrige Erdumlaufbahn (LEO) oder ein repräsentativer Signalentwurf aus der Voreinstellungsbibliothek der Artleo-signal(LEO-SIGNAL.md), in jedem Band, gezeichnet mit jeder Komponente (Erfassung, Daten, Pilot, frequenzgeteilte Unterträger) und auf seine Sendebandbreite bandbegrenzt; C/N₀ und J/S beziehen sich auf die verfolgte Komponente, undnamebeschriftet sie nur. Die Voreinstellungen sindxona-x1,xona-x5,iridium-stl,starlink-ku-beacon,centispace-l1,centispace-l5,generic-c-band-leo,generic-uhf,generic-l,generic-s,generic-cundgeneric-c-wide;- ein eigenes Band: jedes
namemitcentre_mhz,modulation(BPSK(n),BOC(m,n)oderMBOC(6,1,p)) undsignal_power_dbw.
Störsender ([[jammers]]) nehmen eine waveform:
cw– ein Dauerstrichton (CW) beicentre_mhz;narrowband– flaches Rauschen überbandwidth_mhz;wideband– flaches Rauschen über eine breitebandwidth_mhz(ein Breitbandstörsender): dieselbe Dichte wienarrowband, getrennt benannt, weil die Artjamminges als breitbandig bewertet;chirp– ein linearer Sägezahn-Sweep vonbandwidth_mhzallesweep_period_us;matched– Breitbandrauschen, dessen Spektrum die eigene Modulation des Bandesmatched_toist.
Jeder gibt entweder received_power_dbw an oder eine effektive isotrope Strahlungsleistung eirp_dbw mit einer range_m (und optional rx_gain_dbi), die durch die Freiraumdämpfung der Art jamming geht. on_s und off_s skripten die Zeitleiste.
Der Empfänger ([receiver]) legt den Rauschteppich fest, N₀ = k·T_sys mit T_sys = T_ant + 290 K × (F − 1) für die Antennentemperatur T_ant und die Rauschzahl F, sowie die Verfolgungsschwelle.
Der Hauptwasserfall deckt [grid] ab (Standard 1160 bis 1590 MHz in 430 Bins). Jeder Eintrag [[panels]] (name, f_min_mhz, f_max_mhz, n_freq, Standard 200 Bins) fügt auf derselben Zeitleiste einen weiteren Wasserfall über seinen eigenen Frequenzbereich hinzu, für ein Spektrum, das mehrere Bänder umfasst.
Die Störungskette#
Für ein Signal mit dem Einheitsflächen-Spektrum G_s und einen Störsender mit dem Einheitsleistungs-Spektrum G_j ist der spektrale Trennungskoeffizient (SSC) über das Empfängerband B gleich κ = ∫_B G_s(f) G_j(f) df, und die effektive Träger-Rauschleistungsdichte mit mehreren Störsendern ist
(C/N₀)_eff = [ 1/(C/N₀) + Σ_j (J/S)_j · κ_j ]⁻¹
(Betz 2001; Kaplan & Hegarty, Understanding GPS/GNSS, 3. Aufl., §9,4). Für einen Störsender ist dies genau die Anti-Jam-Gleichung der Art jamming mit Q = 1/(R_c κ); der Block jamming_kind_cross_check des Berichts führt die eigenen Funktionen der Art jamming mit denselben Streckeneingaben aus und gibt die Differenz aus, die bis auf Rundung null ist.
Der Bericht gibt außerdem das C/N₀ aus, das die Art jamming mit ihrer Q-Tabelle liefert. Die Tabelle enthält die Lehrbuchwerte, in den Tests an die geschlossenen Formen festgeschrieben:
- CW und Schmalband:
Q = 1. Ein CW-Ton auf dem C/A-Träger hatκ = T_c, alsoQ = 1, und die Tabelle und die Spektren stimmen überein. Im mitgelieferten Beispiel ergibt der Ton aus beiden 17,98 dB-Hz (die Tabelle ergab 19,74, als sie 1,5 enthielt). - Breitband und gesweept:
Q = 2, seit 0,36. Das ist weißes Rauschen über die Hauptkeule, wobei die Signalleistung im Band auf eins normiert ist,κ = 1/(2R_c). Die Tabelle enthielt bis 0,36 den Wert 1, etwa 3 dB zu pessimistisch (xval/jammer-q/PREREGISTRATION.md).
Das Spektrummodell leitet seine eigenen Werte aus den Spektren ab:
Q = 1.5für an C/A angepasstes Rauschen (κ = 2/(3R_c));Q = 2.2für flaches Rauschen von Nullstelle zu Nullstelle ohne die Normierung (2/0.9028).
Für diese Störsender unterscheiden sich die beiden ausgegebenen C/N₀-Werte also weiterhin, absichtlich.
Jede Wasserfallzelle ist die über ihr Frequenz-Bin und ihre Zeile gemittelte PSD. Ein Chirp wird über die Zeile exakt gemittelt, ganze Sweeps plus der partielle; ein Störsender, der mitten in einer Zeile ein- oder ausschaltet, wird mit seiner Einschaltdauer gewichtet. Die C/N₀-Zeitleiste verwendet dieselben Mittelwerte, sodass Bild und Zahlen übereinstimmen. Je Band meldet die Zeitleiste das J/S im Band (Störerleistung innerhalb der Empfängerbandbreite über der Signalleistung). Je Störsender und Band gibt der Bericht den SSC, Q, das gesamte J/S, das J/S im Band und das stationäre C/N₀ an.
Das mitgelieferte Beispiel#
scenarios/l-band-waterfall-jamming.toml: eine Zeitleiste von 60 s, eine Zeile je Sekunde, eine Antenne mit 290 K und eine Rauschzahl von 2 dB (Teppich −201,98 dBW/Hz).
- 10 s bis 40 s: ein Chirp von 16 MHz um L1, Sweeps von 9 µs, 50 mW bei 100 m.
- Ab 30 s: ein CW-Ton auf dem L1-Träger, 10 mW bei 1 km.
- Ab 45 s: flaches Rauschen von 2 MHz auf L2, empfangen mit −135 dBW.
Was der Lauf berechnet:
| Band | Nominales C/N₀ | Minimales C/N₀ | Erster Verlust | Zeilen mit Verfolgung |
|---|---|---|---|---|
| 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 | nie | 100 % |
| gps-l5 | 44,08 dB-Hz | 44,08 dB-Hz | nie | 100 % |
| galileo-e5a | 46,73 dB-Hz | 46,73 dB-Hz | nie | 100 % |
Der CW-Ton ist der Grund, warum sich die beiden L1-Signale bei 40 s trennen. Er trifft auf das Maximum des C/A-Spektrums und hält C/A bei 17,98 dB-Hz, unter der Schwelle von 25 dB-Hz. Er trifft auf die Nullstelle des MBOC-Spektrums, sodass Galileo E1 zu seinem nominalen C/N₀ zurückkehrt, wenn der Chirp endet.
Die Signale selbst liegen etwa 20 dB unter dem Rauschteppich, sodass der Wasserfall den Teppich und die Störsender zeigt; die C/N₀-Balken zeigen, was die Entspreizung zurückgewinnt.
Dieselben Störsender treiben eine verkettete Mission in scenarios/campaign-spectrum-holdover-integrity.toml (siehe CAMPAIGNS.md): Die Uhr läuft im Holdover, solange der Chirp an ist, und der Empfänger weicht unter dem CW-Ton auf Galileo E1 aus.
Jenseits des L-Bandes#
scenarios/multi-band-jamming-waterfall.toml legt LEO-Signale für Positionierung, Navigation und Zeitgebung (PNT) in vier Bändern neben GPS L1 C/A und Galileo E5a, jedes Band mit eigenem Störsender, auf eine Zeitleiste von 60 s. Der Wasserfall [grid] ist das L-Band; drei [[panels]] fügen UHF (455 bis 475 MHz), S (2482 bis 2502 MHz) und C (5005 bis 5035 MHz) hinzu.
- 10 s: ein CW-Ton auf dem UHF-Träger, mit −120 dBW empfangen.
- 20 s: der Chirp des L-Band-Beispiels (16 MHz um L1, Sweeps von 9 µs, 50 mW bei 100 m).
- 30 s: Breitbandrauschen, 40 MHz um 1185 MHz, −118 dBW.
- 40 s: Schmalbandrauschen, 2 MHz auf dem S-Träger, −128 dBW.
- 50 s: Rauschen, angepasst an das eigene Spektrum des C-Band-Signals, −124 dBW.
Was der Lauf berechnet (das C/N₀ der entworfenen Signale ist das der verfolgten Komponente, sodass der nominale Wert um den verfolgten Anteil unter der gesamten Empfangsleistung liegt):
| Band | Signal | Träger | Nominales C/N₀ | Minimales C/N₀ | Zeilen mit Verfolgung |
|---|---|---|---|---|---|
| generic-uhf | repräsentativ, BPSK(5), −150 dBW | 465 MHz | 49,41 dB-Hz | 34,38 dB-Hz | 100 % |
| gps-l1ca | Mindestwert der Spezifikation | 1575,42 MHz | 43,48 dB-Hz | 3,38 dB-Hz | 33 % |
| galileo-e5a | Mindestwert der Spezifikation | 1176,45 MHz | 46,73 dB-Hz | 38,51 dB-Hz | 100 % |
| xona-x5 | veröffentlichter Entwurf, −144,9 dBW | 1190,51625 MHz | 54,51 dB-Hz | 46,29 dB-Hz | 100 % |
| generic-s | repräsentativ, BPSK(5), −150 dBW | 2492,028 MHz | 49,23 dB-Hz | 41,69 dB-Hz | 100 % |
| generic-c-band-leo | repräsentativ, BPSK(10), −152 dBW | 5020 MHz | 47,41 dB-Hz | 40,35 dB-Hz | 100 % |
Nur der Chirp nimmt ein Signal weg (GPS L1 C/A, ab 20 s). Jeder andere Störsender verschlechtert nur das Band, das sein Spektrum erreicht: Das angepasste Rauschen im C-Band hat zum Beispiel einen SSC von −71,87 dB/Hz mit dem C-Band-Signal und unter −133 dB/Hz mit jedem anderen Band.
Dieselbe Maschinerie treibt die LEO-PNT-Resilienzszenarien (LEO-PNT.md):
scenarios/leo-resilience-js-margin.tomlstuft einen Breitbandstörsender von 40 MHz bei 1185 MHz alle 10 s um 5 dB hoch, beginnend bei −125 dBW. GPS L5 geht bei der Stufe −105 dBW verloren, Galileo E5a bei −100 dBW und Xona X5 bei −95 dBW, während ein repräsentatives LEO-L-Band-Signal, das mit −135 dBW empfangen wird, bei −90 dBW noch verfolgt: Empfangsleistung kauft J/S-Marge dB für dB.scenarios/leo-resilience-multiband-diversity.tomlist ein Kampagnen-Sweep eines Laufsspectrumüber die Leistung eines Breitbandstörsenders im L5-Band (CAMPAIGNS.md).scenarios/leo-resilience-gnss-jammed-leo-carries.tomlist eine verkettete Kampagne, deren Phasen das GNSS- und das LEO-C/N₀ aus Läufenspectrumlesen, mit Panels für S- und C-Band.
IQ, SigMF und Welch#
[iq] zeichnet das Modell zu einem Zeitpunkt als komplexe Gleichanteil-und-Quadratur-Abtastwerte (IQ), schreibt sie als SigMF-Aufzeichnung (cf32_le oder ci16_le), liest die Aufzeichnung zurück und schätzt ihre PSD nach Welchs Methode (Hann-Fenster, 50 % Überlappung, gemittelte Periodogramme, dichteskaliert). Thermisches Rauschen, Signale und rauschartige Störsender werden Bin für Bin aus der eigenen Dichte des Modells gezogen; ein Ton und ein Chirp werden als reale Wellenformen gezeichnet. Bei nur rauschartigen Störsendern liegt die Welch-Schätzung innerhalb von 0,1 dB am Modell (Median). Ein periodischer Chirp ist ein Linienspektrum bei seiner Sweep-Rate, mit Welligkeit und Ausläufern jenseits seiner Bandkanten, die das glatte Modell auslässt: Im mitgelieferten Beispiel stimmt die Gesamtleistung innerhalb von 0,02 % überein, und das mediane Bin weicht um 0,5 dB ab. Der Schnappschuss ist eine für die Analyse geschriebene Datei; nichts wird gesendet, und es wird keine Funkhardware angesteuert.
[recording] (nur native Builds) liest eine reale SigMF-Aufzeichnung aus meta_path (die Datendatei hat standardmäßig denselben Stamm mit .sigmf-data), schätzt ihre PSD und gibt sie neben dem Modell bei den Frequenzen der Aufzeichnung aus. Eine SigMF-Datei hat keine absolute Leistungskalibrierung, daher gibt der Bericht den medianen Versatz und die Form an, keinen Pegel.
Im WebAssembly-Build sind die Dateizugriffe nicht verfügbar; kshana::sigmf::read und kshana::spectrum::welch_psd arbeiten mit Bytes, die die Seite liefert.
Nachweise#
| Aussage | Kennzeichnung | Unabhängige Referenz |
|---|---|---|
| Signal-PSDs und SSCs | VALIDATED | BPSK(n) Hauptkeule 2n × 1,023 MHz von Nullstelle zu Nullstelle; BOC(1.1)-Keulen zentriert bei ±1,023 MHz (Betz 2001); SSCs −61,86 / −64,87 / −67,88 dB/Hz für C/A×C/A, BOC(1.1)×BOC(1.1), C/A×BOC(1.1) aus ihren geschlossenen Parseval-Formen, den Werten hinter den veröffentlichten −61,8 / −64,8 / −67,8 dB/Hz; Q = 1 (CW) und 1,5 (angepasst) (Kaplan & Hegarty §9,4); die Tabelleneinträge der Art jamming entsprechen den geschlossenen Formen: CW und Schmalband Q = 1, Breitband und gesweept Q = 2 (weißes Rauschen über die Hauptkeule, Leistung im Band normiert; 1 bis 0,36) |
| Wasserfall, J/S- und C/N₀-Zeitleiste | MODELLED | Reduziert sich exakt auf die Kette der Art jamming; die Störsenderleistungen, die Zeitleiste und die Bandbreiten sind Eingaben |
| SigMF-Codec und Welch-Schätzung | MODELLED | Rundläufe, eine direkte diskrete Fourier-Transformation, Identitäten für weißes Rauschen und Parseval; im Repository liegt keine Aufzeichnung eines Dritten |
| Mehrband-Wasserfall mit entworfenen Signalen und Störsendern je Band | MODELLED | Reduziert sich auf die L-Band-Kette (ein Band mit einer einzigen Komponente liefert dieselben Zahlen wie vor der Erweiterung) und auf die validierten Signalspektren; die entworfenen Signale, Störsender und Bandbreiten sind Eingaben |
Eine Korrektur einer gängigen Kurzformel: Die Keulen des BOC(1.1)-Spektrums sind bei ±1,023 MHz zentriert (zwischen der Trägernullstelle und der Nullstelle bei 2,046 MHz), aber das Maximum der PSD liegt bei ±0,759 MHz, wo tan y = 2y mit y = πf/(2R_c) gilt. Die Tests legen beides fest.
Nicht modelliert#
- Linienstruktur des Spreizcodes (die 1-kHz-Linien von C/A): Ein Ton wird gegen die glatte Hüllkurve bewertet, nicht gegen die nächste Codelinie.
- Automatische Verstärkungsregelung, Quantisierung, Pulsaustastung und Notch-Filterung.
- Das Empfangsantennendiagramm in Richtung des Störsenders über einen einzelnen Gewinnwert hinaus.
- Mehrfachzugriffsstörung zwischen Satelliten eines Bandes.
- Aussendungen eines entworfenen Signals außerhalb seiner Sendebandbreite: Sein Spektrum wird dort abgeschnitten, sodass keine Außerbandaussendung ein Nachbarband erreicht.
- Die Wirkung eines Chirps auf die Schleife bei Sweep-Raten, die mit der Schleifenbandbreite vergleichbar sind: Sein C/N₀ verwendet das zeilengemittelte Spektrum.
Referenzen#
- J. W. Betz, "Binary Offset Carrier Modulations for Radionavigation", NAVIGATION 48(4), 2001.
- E. D. Kaplan und C. J. Hegarty (Hrsg.), Understanding GPS/GNSS: Principles and Applications, 3. Aufl., 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, Mai/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-Spezifikation, https://sigmf.org/ (Quelle: https://github.com/sigmf/SigMF).