Modèle de spectre et diagramme en cascade
Le type de scénario spectrum construit la bande L du système mondial de navigation par satellite (GNSS), et toute autre bande qu'occupe un signal conçu (ultra haute fréquence (UHF), bande S, bande C), sous la forme d'une seule densité spectrale de puissance (PSD), la laisse évoluer selon une chronologie de brouilleurs scriptée, et la réduit à ce qui importe à une boucle de poursuite : le rapport brouilleur sur signal (J/S) et le rapport effectif porteuse sur densité de bruit (C/N₀) de chaque bande. Il présente le résultat sous forme de diagramme en cascade (fréquence en abscisse, temps en ordonnée, couleur pour la puissance) à côté de barres de C/N₀ par bande, et il lit et écrit des enregistrements au format Signal Metadata Format (SigMF), de sorte qu'une capture réelle puisse être estimée et tracée à côté du modèle.
Écrivez l'exemple fourni dans un fichier et exécutez-le :
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
Dans une copie de travail, kshana scenarios/l-band-waterfall-jamming.toml exécute le même fichier.
Code : src/spectrum.rs (le modèle, le type, l'estimateur de Welch), src/sigmf.rs (le codec d'enregistrement), src/navsignal.rs (les spectres de signal d'aire unité et le coefficient de séparation spectrale) et src/leo_signal.rs (les préréglages de conception de signal qu'une bande peut nommer).
Ce qui est modélisé#
| Bande | Porteuse | Modulation | Puissance reçue par défaut | Largeur de bande du récepteur par défaut |
|---|---|---|---|---|
gps-l1ca |
1575,42 MHz | modulation par déplacement de phase binaire, BPSK(1) | −158,5 dBW (IS-GPS-200) | 2,046 MHz |
galileo-e1 |
1575,42 MHz | porteuse à décalage binaire multiplexée, MBOC(6,1,1/11), ou porteuse à décalage binaire 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) (codes CM et CL multiplexés dans le temps) | −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 est le code d'acquisition grossière ; L2C est le signal civil L2 ; IS-GPS-200 et IS-GPS-705 sont les spécifications d'interface du GPS ; Galileo OS SIS ICD est le document de contrôle d'interface du signal dans l'espace du service ouvert de Galileo. Les puissances reçues sont les minimums de spécification ; les largeurs de bande sont des choix de modélisation. Les deux peuvent être remplacées par bande. Sans table [[bands]], l'exécution utilise ces cinq. GLONASS G1/G2, BeiDou B1/B2 et Galileo E6 ne figurent pas parmi les bandes nommées.
Une entrée [[bands]] prend l'une de trois formes :
- un nom du tableau ci-dessus, avec
signal_power_dbwetrx_bandwidth_mhzfacultatifs et, pourgalileo-e1,modulation = "boc11"; signal = "<preset>": une conception de signal en orbite terrestre basse (LEO) ou représentative, tirée de la bibliothèque de préréglages du typeleo-signal(LEO-SIGNAL.md), dans n'importe quelle bande, tracée avec chaque composante (acquisition, données, pilote, sous-porteuses à répartition en fréquence) et limitée en bande à sa largeur de bande d'émission ; C/N₀ et J/S se rapportent à la composante poursuivie, etnamene fait que l'étiqueter. Les préréglages sontxona-x1,xona-x5,iridium-stl,starlink-ku-beacon,centispace-l1,centispace-l5,generic-c-band-leo,generic-uhf,generic-l,generic-s,generic-cetgeneric-c-wide;- une bande personnalisée : tout
nameaveccentre_mhz,modulation(BPSK(n),BOC(m,n)ouMBOC(6,1,p)) etsignal_power_dbw.
Les brouilleurs ([[jammers]]) prennent un waveform :
cw— une tonalité à onde continue (CW) àcentre_mhz;narrowband— bruit plat surbandwidth_mhz;wideband— bruit plat sur unbandwidth_mhzlarge (un brouilleur à large bande de type barrage) : la même densité quenarrowband, nommé à part parce que le typejammingle note comme à large bande ;chirp— un balayage linéaire en dents de scie debandwidth_mhztoutes lessweep_period_us;matched— bruit à large bande dont le spectre est la modulation propre de la bandematched_to.
Chacun donne soit received_power_dbw, soit une puissance isotrope rayonnée équivalente eirp_dbw avec une range_m (et facultativement rx_gain_dbi), qui passe par l'affaiblissement de propagation en espace libre du type jamming. on_s et off_s pilotent la chronologie par script.
Le récepteur ([receiver]) fixe le plancher de bruit, N₀ = k·T_sys avec T_sys = T_ant + 290 K × (F − 1) pour une température d'antenne T_ant et un facteur de bruit F, ainsi que le seuil de poursuite.
Le diagramme en cascade principal couvre [grid] (par défaut de 1160 à 1590 MHz en 430 cases). Chaque entrée [[panels]] (name, f_min_mhz, f_max_mhz, n_freq, par défaut 200 cases) ajoute un autre diagramme en cascade sur sa propre plage de fréquences, sur la même chronologie, pour un spectre qui couvre plusieurs bandes.
La chaîne d'interférence#
Pour un signal de spectre d'aire unité G_s et un brouilleur de spectre de puissance unité G_j, le coefficient de séparation spectrale (SSC) sur la bande du récepteur B est κ = ∫_B G_s(f) G_j(f) df, et la densité effective porteuse sur bruit avec plusieurs brouilleurs est
(C/N₀)_eff = [ 1/(C/N₀) + Σ_j (J/S)_j · κ_j ]⁻¹
(Betz 2001 ; Kaplan & Hegarty, Understanding GPS/GNSS, 3e éd., §9,4). Pour un brouilleur, c'est exactement l'équation anti-brouillage du type jamming avec Q = 1/(R_c κ) ; le bloc jamming_kind_cross_check du rapport exécute les fonctions propres du type jamming sur les mêmes entrées de liaison et affiche la différence, qui est nulle à l'arrondi près.
Le rapport affiche aussi le C/N₀ que donne le type jamming avec sa table de Q. La table contient les valeurs de manuel, épinglées dans les tests sur les formes fermées :
- CW et bande étroite :
Q = 1. Une tonalité CW sur la porteuse C/A aκ = T_c, doncQ = 1, et la table et les spectres concordent. Dans l'exemple fourni, la tonalité donne 17,98 dB-Hz des deux côtés (la table donnait 19,74 lorsqu'elle contenait 1,5). - Large bande et balayé :
Q = 2, depuis 0,36. C'est un bruit blanc sur le lobe principal avec la puissance du signal dans la bande normalisée à un,κ = 1/(2R_c). La table contenait 1 jusqu'à 0,36, soit environ 3 dB de pessimisme (xval/jammer-q/PREREGISTRATION.md).
Le modèle de spectre tire ses propres valeurs des spectres :
Q = 1.5pour un bruit adapté au C/A (κ = 2/(3R_c)) ;Q = 2.2pour un bruit plat de zéro à zéro sans la normalisation (2/0.9028).
Ainsi, pour ces brouilleurs, les deux valeurs de C/N₀ affichées diffèrent encore, par construction.
Chaque cellule du diagramme en cascade est la PSD moyennée sur sa case de fréquence et sa ligne. Un chirp est moyenné exactement sur la ligne, balayages entiers plus le balayage partiel ; un brouilleur qui s'allume ou s'éteint au milieu d'une ligne est pondéré par son rapport cyclique. La chronologie de C/N₀ utilise les mêmes moyennes, de sorte que l'image et les nombres concordent. Par bande, la chronologie rapporte le J/S dans la bande (puissance du brouilleur dans la largeur de bande du récepteur sur la puissance du signal). Par brouilleur et par bande, le rapport donne le SSC, Q, le J/S total, le J/S dans la bande et le C/N₀ en régime établi.
L'exemple fourni#
scenarios/l-band-waterfall-jamming.toml : une chronologie de 60 s, une ligne par seconde, une antenne de 290 K et un facteur de bruit de 2 dB (plancher −201,98 dBW/Hz).
- De 10 s à 40 s : un chirp de 16 MHz autour de L1, balayages de 9 µs, 50 mW à 100 m.
- À partir de 30 s : une tonalité CW sur la porteuse L1, 10 mW à 1 km.
- À partir de 45 s : bruit plat de 2 MHz sur L2, reçu à −135 dBW.
Ce que calcule l'exécution :
| Bande | C/N₀ nominal | C/N₀ minimal | Première perte | Lignes en poursuite |
|---|---|---|---|---|
| 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 | jamais | 100 % |
| gps-l5 | 44,08 dB-Hz | 44,08 dB-Hz | jamais | 100 % |
| galileo-e5a | 46,73 dB-Hz | 46,73 dB-Hz | jamais | 100 % |
La tonalité CW explique pourquoi les deux signaux L1 se séparent à 40 s. Elle tombe sur le pic du spectre C/A et maintient le C/A à 17,98 dB-Hz, sous le seuil de 25 dB-Hz. Elle tombe dans le creux du spectre MBOC, de sorte que Galileo E1 retrouve son C/N₀ nominal quand le chirp s'arrête.
Les signaux eux-mêmes se situent environ 20 dB sous le plancher de bruit, de sorte que le diagramme en cascade montre le plancher et les brouilleurs ; les barres de C/N₀ montrent ce que récupère le désétalement.
Les mêmes brouilleurs pilotent une mission enchaînée dans scenarios/campaign-spectrum-holdover-integrity.toml (voir CAMPAIGNS.md) : l'horloge tient en holdover pendant que le chirp est actif, et le récepteur bascule sur Galileo E1 sous la tonalité CW.
Au-delà de la bande L#
scenarios/multi-band-jamming-waterfall.toml place des signaux de positionnement, navigation et synchronisation temporelle (PNT) en LEO dans quatre bandes à côté de GPS L1 C/A et de Galileo E5a, chaque bande avec son propre brouilleur, sur une chronologie de 60 s. Le diagramme en cascade [grid] est la bande L ; trois [[panels]] ajoutent l'UHF (455 à 475 MHz), la bande S (2482 à 2502 MHz) et la bande C (5005 à 5035 MHz).
- 10 s : une tonalité CW sur la porteuse UHF, −120 dBW reçus.
- 20 s : le chirp de l'exemple en bande L (16 MHz autour de L1, balayages de 9 µs, 50 mW à 100 m).
- 30 s : bruit à large bande, 40 MHz autour de 1185 MHz, −118 dBW.
- 40 s : bruit à bande étroite, 2 MHz sur la porteuse S, −128 dBW.
- 50 s : bruit adapté au spectre propre du signal en bande C, −124 dBW.
Ce que calcule l'exécution (le C/N₀ des signaux conçus est celui de la composante poursuivie, de sorte que la valeur nominale se situe sous la puissance totale reçue de la part de la composante poursuivie) :
| Bande | Signal | Porteuse | C/N₀ nominal | C/N₀ minimal | Lignes en poursuite |
|---|---|---|---|---|---|
| generic-uhf | représentatif, BPSK(5), −150 dBW | 465 MHz | 49,41 dB-Hz | 34,38 dB-Hz | 100 % |
| gps-l1ca | minimum de spécification | 1575,42 MHz | 43,48 dB-Hz | 3,38 dB-Hz | 33 % |
| galileo-e5a | minimum de spécification | 1176,45 MHz | 46,73 dB-Hz | 38,51 dB-Hz | 100 % |
| xona-x5 | conception publiée, −144,9 dBW | 1190,51625 MHz | 54,51 dB-Hz | 46,29 dB-Hz | 100 % |
| generic-s | représentatif, BPSK(5), −150 dBW | 2492,028 MHz | 49,23 dB-Hz | 41,69 dB-Hz | 100 % |
| generic-c-band-leo | représentatif, BPSK(10), −152 dBW | 5020 MHz | 47,41 dB-Hz | 40,35 dB-Hz | 100 % |
Seul le chirp prive d'un signal (GPS L1 C/A, à partir de 20 s). Chacun des autres brouilleurs ne dégrade que la bande que son spectre atteint : le bruit adapté en bande C, par exemple, a un SSC de −71,87 dB/Hz avec le signal en bande C et inférieur à −133 dB/Hz avec chacune des autres bandes.
La même mécanique pilote les scénarios de résilience LEO-PNT (LEO-PNT.md) :
scenarios/leo-resilience-js-margin.tomlfait croître par paliers un brouilleur à large bande de 40 MHz à 1185 MHz de 5 dB toutes les 10 s à partir de −125 dBW. GPS L5 est perdu au palier de −105 dBW, Galileo E5a à −100 dBW et Xona X5 à −95 dBW, alors qu'un signal LEO représentatif en bande L reçu à −135 dBW poursuit encore à −90 dBW : la puissance reçue achète de la marge de J/S dB pour dB.scenarios/leo-resilience-multiband-diversity.tomlest un balayage de campagne d'une exécutionspectrumsur la puissance d'un brouilleur à large bande en bande L5 (CAMPAIGNS.md).scenarios/leo-resilience-gnss-jammed-leo-carries.tomlest une campagne enchaînée dont les phases lisent le C/N₀ du GNSS et du LEO à partir d'exécutionsspectrum, avec des panneaux en bandes S et C.
IQ, SigMF et Welch#
[iq] trace le modèle à un instant donné sous forme d'échantillons complexes en phase et en quadrature (IQ), les écrit comme un enregistrement SigMF (cf32_le ou ci16_le), relit l'enregistrement et estime sa PSD par la méthode de Welch (fenêtre de Hann, recouvrement de 50 %, périodogrammes moyennés, mise à l'échelle en densité). Le bruit thermique, les signaux et les brouilleurs de type bruit sont tirés case par case à partir de la densité propre du modèle ; une tonalité et un chirp sont tracés comme des formes d'onde réelles. Avec seulement des brouilleurs de type bruit, l'estimation de Welch se situe à moins de 0,1 dB du modèle (médiane). Un chirp périodique est un spectre de raies à sa fréquence de balayage, avec une ondulation et des queues au-delà de ses bords de bande que le modèle lisse omet : dans l'exemple fourni, la puissance totale concorde à 0,02 % près et la case médiane diffère de 0,5 dB. L'instantané est un fichier écrit pour l'analyse ; rien n'est émis et aucun matériel radio n'est piloté.
[recording] (builds natifs seulement) lit un véritable enregistrement SigMF depuis meta_path (le fichier de données prend par défaut le même radical avec .sigmf-data), estime sa PSD et l'affiche à côté du modèle aux fréquences de l'enregistrement. Un fichier SigMF n'a pas d'étalonnage de puissance absolue ; le rapport donne donc le décalage médian et la forme, non un niveau.
Dans le build WebAssembly, les lectures de fichiers ne sont pas disponibles ; kshana::sigmf::read et kshana::spectrum::welch_psd travaillent sur des octets fournis par la page.
Preuves#
| Affirmation | Étiquette | Référence indépendante |
|---|---|---|
| PSD et SSC des signaux | VALIDATED | lobe principal de BPSK(n) 2n × 1,023 MHz de zéro à zéro ; lobes de BOC(1 1) centrés à ±1,023 MHz (Betz 2001) ; SSC de −61,86 / −64,87 / −67,88 dB/Hz pour C/A×C/A, BOC(1 1)×BOC(1 1), C/A×BOC(1 1) à partir de leurs formes fermées de Parseval, les valeurs derrière les −61,8 / −64,8 / −67,8 dB/Hz publiés ; Q = 1 (CW) et 1,5 (adapté) (Kaplan & Hegarty §9,4) ; les entrées de la table du type jamming égalent les formes fermées : CW et bande étroite Q = 1, large bande et balayé Q = 2 (bruit blanc sur le lobe principal, puissance dans la bande normalisée ; 1 jusqu'à 0,36) |
| Diagramme en cascade, J/S et chronologie de C/N₀ | MODELLED | Se réduit exactement à la chaîne du type jamming ; les puissances des brouilleurs, la chronologie et les largeurs de bande sont des entrées |
| Codec SigMF et estimation de Welch | MODELLED | Allers-retours, transformée de Fourier discrète directe, identités du bruit blanc et de Parseval ; aucun enregistrement tiers n'est dans le dépôt |
| Diagramme en cascade multibande avec signaux conçus et brouilleurs par bande | MODELLED | Se réduit à la chaîne en bande L (une bande à composante unique donne les mêmes nombres qu'avant l'extension) et aux spectres de signal validés ; les signaux conçus, les brouilleurs et les largeurs de bande sont des entrées |
Une correction à un raccourci courant : les lobes du spectre BOC(1 1) sont centrés à ±1,023 MHz (entre le creux de la porteuse et le creux à 2,046 MHz), mais le maximum de la PSD se trouve à ±0,759 MHz, où tan y = 2y avec y = πf/(2R_c). Les tests épinglent les deux.
Non modélisé#
- La structure de raies du code d'étalement (les raies de 1 kHz du C/A) : une tonalité est notée par rapport à l'enveloppe lisse, non à la raie de code la plus proche.
- Le contrôle automatique de gain, la quantification, la suppression d'impulsions et le filtrage réjecteur.
- Le diagramme de l'antenne de réception en direction du brouilleur au-delà d'un seul chiffre de gain.
- L'interférence d'accès multiple entre satellites d'une même bande.
- Les émissions d'un signal conçu en dehors de sa largeur de bande d'émission : son spectre y est tronqué, si bien qu'aucune émission hors bande n'atteint une bande voisine.
- L'effet d'un chirp sur la boucle pour des vitesses de balayage comparables à la largeur de bande de la boucle : son C/N₀ utilise le spectre moyenné par ligne.
Références#
- J. W. Betz, "Binary Offset Carrier Modulations for Radionavigation", NAVIGATION 48(4), 2001.
- E. D. Kaplan et C. J. Hegarty (dir.), Understanding GPS/GNSS: Principles and Applications, 3e éd., 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/juin 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.
- Spécification SigMF, https://sigmf.org/ (source : https://github.com/sigmf/SigMF).