Модель спектра та водоспад
Тип сценарію spectrum будує L-діапазон глобальної навігаційної супутникової системи (GNSS) і будь-який інший діапазон, який займає спроєктований сигнал (ультрависока частота (UHF), S-діапазон, C-діапазон), як одну спектральну густину потужності (PSD), дає їй змінюватися за заданою часовою шкалою глушників і зводить її до того, що цікавить петлю відстеження: відношення потужності глушника до сигналу (J/S) і ефективне відношення несівної до густини шуму (C/N₀) кожного діапазону. Він малює результат як водоспад (частота впоперек, час донизу, колір для потужності) поруч зі стовпчиками C/N₀ для кожного діапазону, а також читає й записує записи Signal Metadata Format (SigMF), щоб реальний запис можна було оцінити й побудувати поруч із моделлю.
Запишіть вбудований приклад у файл і запустіть його:
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
У робочій копії (checkout) той самий файл запускає kshana scenarios/l-band-waterfall-jamming.toml.
Код: src/spectrum.rs (модель, тип, оцінювач Welch), src/sigmf.rs (кодек записів), src/navsignal.rs (спектри сигналів одиничної площі та коефіцієнт спектрального розділення) і src/leo_signal.rs (пресети проєктування сигналів, які може називати діапазон).
Що моделюється#
| Діапазон | Несівна | Модуляція | Типова потужність прийому | Типова смуга приймача |
|---|---|---|---|---|
gps-l1ca |
1575,42 MHz | двійкова фазова маніпуляція, BPSK(1) | −158,5 dBW (IS-GPS-200) | 2,046 MHz |
galileo-e1 |
1575,42 MHz | мультиплексована двійкова зміщена несівна, MBOC(6,1,1/11), або двійкова зміщена несівна 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 і CL з часовим мультиплексуванням) | −160,0 dBW (IS-GPS-200) | 2,046 MHz |
gps-l5 |
1176,45 MHz | BPSK(10) | −157,9 dBW (IS-GPS-705) | 20,46 МГц |
galileo-e5a |
1176,45 MHz | BPSK(10) | −155,25 dBW (Galileo OS SIS ICD Issue 2,1, Table 12) | 20,46 МГц |
GPS (глобальна система позиціонування) L1 C/A — це код грубого захоплення (coarse/acquisition); L2C — цивільний сигнал L2; IS-GPS-200 та IS-GPS-705 — інтерфейсні специфікації GPS; Galileo OS SIS ICD — Galileo Open Service Signal-in-Space Interface Control Document. Потужності прийому — це мінімуми за специфікаціями; смуги — вибір моделювання. Обидва значення можна перевизначити для кожного діапазону. Без таблиці [[bands]] прогін використовує ці п'ять. GLONASS G1/G2, BeiDou B1/B2 і Galileo E6 серед іменованих діапазонів відсутні.
Запис [[bands]] має одну з трьох форм:
- назва з наведеної вище таблиці з необов'язковими
signal_power_dbw,rx_bandwidth_mhzі, дляgalileo-e1,modulation = "boc11"; signal = "<preset>": сигнал низької навколоземної орбіти (LEO) або репрезентативний проєкт сигналу з бібліотеки пресетів типуleo-signal(LEO-SIGNAL.md) у будь-якому діапазоні, який малюється з усіма компонентами (захоплення, дані, пілот, піднесучі з частотним розділенням) і обмежується смугою передавання; C/N₀ і J/S відносяться до відстежуваної компоненти, аnameлише її позначає. Пресети:xona-x1,xona-x5,iridium-stl,starlink-ku-beacon,centispace-l1,centispace-l5,generic-c-band-leo,generic-uhf,generic-l,generic-s,generic-cіgeneric-c-wide;- власний діапазон: будь-яке
nameізcentre_mhz,modulation(BPSK(n),BOC(m,n)абоMBOC(6,1,p)) іsignal_power_dbw.
Глушники ([[jammers]]) приймають waveform:
cw— тон безперервної хвилі (CW) наcentre_mhz;narrowband— плоский шум у межахbandwidth_mhz;wideband— плоский шум у широкій смузіbandwidth_mhz(загороджувальний глушник): та сама густина, що й уnarrowband, названий окремо, бо типjammingоцінює його як широкосмуговий;chirp— лінійне пилкоподібне розгортанняbandwidth_mhzкожніsweep_period_us;matched— широкосмуговий шум, спектр якого збігається з власною модуляцією діапазонуmatched_to.
Кожен задає або received_power_dbw, або ефективну ізотропно випромінювану потужність eirp_dbw з range_m (і за потреби rx_gain_dbi), що проходить через втрати на трасі у вільному просторі типу jamming. on_s і off_s задають часову шкалу.
Приймач ([receiver]) задає шумовий мінімум, N₀ = k·T_sys із T_sys = T_ant + 290 K × (F − 1) для температури антени T_ant і коефіцієнта шуму F, та поріг відстеження.
Головний водоспад охоплює [grid] (типово від 1160 до 1590 MHz у 430 комірках). Кожен запис [[panels]] (name, f_min_mhz, f_max_mhz, n_freq, типово 200 комірок) додає ще один водоспад у власному діапазоні частот на тій самій часовій шкалі, для спектра, що охоплює кілька діапазонів.
Ланцюг завад#
Для сигналу зі спектром одиничної площі G_s і глушника зі спектром одиничної потужності G_j коефіцієнт спектрального розділення (SSC) у смузі приймача B дорівнює κ = ∫_B G_s(f) G_j(f) df, а ефективне відношення несівної до густини шуму за кількох глушників становить
(C/N₀)_eff = [ 1/(C/N₀) + Σ_j (J/S)_j · κ_j ]⁻¹
(Betz 2001; Kaplan & Hegarty, Understanding GPS/GNSS, 3-тє вид., §9,4). Для одного глушника це точно рівняння протиглушіння типу jamming з Q = 1/(R_c κ); блок jamming_kind_cross_check у звіті запускає власні функції типу jamming на тих самих вхідних даних лінії зв'язку й виводить різницю, яка дорівнює нулю з точністю до округлення.
Звіт також виводить C/N₀, яке дає тип jamming зі своєю таблицею Q. Таблиця містить підручникові значення, зафіксовані в тестах за замкненими формами:
- CW і вузькосмуговий:
Q = 1. Тон CW на несівній C/A маєκ = T_c, тожQ = 1, і таблиця зі спектрами збігаються. У вбудованому прикладі тон дає 17,98 dB-Hz в обох випадках (таблиця давала 19,74, коли містила 1,5). - Широкосмуговий і розгорнутий:
Q = 2, починаючи з 0,36. Це білий шум над головною пелюсткою з потужністю сигналу в смузі, нормованою до одиниці,κ = 1/(2R_c). До 0,36 таблиця містила 1, приблизно на 3 dB песимістичніше (xval/jammer-q/PREREGISTRATION.md).
Модель спектра виводить власні значення зі спектрів:
Q = 1.5для шуму, узгодженого з C/A (κ = 2/(3R_c));Q = 2.2для плоского шуму від нуля до нуля без нормування (2/0.9028).
Тож для цих глушників два виведені значення C/N₀ усе ще відрізняються, за задумом.
Кожна комірка водоспаду — це PSD, усереднена за своєю частотною коміркою та рядком. Чирп усереднюється точно за рядком: цілі розгортання плюс неповне; глушник, що вмикається чи вимикається посеред рядка, зважується за своєю шпаруватістю. Часова шкала C/N₀ використовує ті самі усереднення, тож картинка й числа збігаються. Для кожного діапазону часова шкала подає J/S у смузі (потужність глушника всередині смуги приймача до потужності сигналу). Для кожного глушника й діапазону звіт подає SSC, Q, повне J/S, J/S у смузі та усталене C/N₀.
Вбудований приклад#
scenarios/l-band-waterfall-jamming.toml: часова шкала 60 s, один рядок на секунду, антена 290 K і коефіцієнт шуму 2 dB (мінімум −201,98 dBW/Hz).
- від 10 s до 40 s: чирп 16 MHz навколо L1, розгортання 9 µs, 50 mW на 100 m.
- Від 30 s: тон CW на несівній L1, 10 mW на 1 km.
- Від 45 s: плоский шум 2 MHz на L2, що приймається при −135 dBW.
Що обчислює прогін:
| Діапазон | Номінальне C/N₀ | Мінімальне C/N₀ | Перша втрата | Рядки відстеження |
|---|---|---|---|---|
| gps-l1ca | 43,48 дБ-Гц | 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 | ніколи | 100 % |
| gps-l5 | 44,08 dB-Hz | 44,08 dB-Hz | ніколи | 100 % |
| galileo-e5a | 46,73 дБ-Гц | 46,73 дБ-Гц | ніколи | 100 % |
Тон CW — причина, чому два сигнали L1 розходяться на 40 s. Він потрапляє на пік спектра C/A і тримає C/A на 17,98 dB-Hz, нижче порога 25 dB-Hz. Він потрапляє в нуль спектра MBOC, тож Galileo E1 повертається до свого номінального C/N₀, коли чирп припиняється.
Самі сигнали лежать приблизно на 20 dB нижче шумового мінімуму, тож водоспад показує мінімум і глушники; стовпчики C/N₀ показують, що відновлює зворотне розширення спектра (despreading).
Ті самі глушники керують ланцюговою місією в scenarios/campaign-spectrum-holdover-integrity.toml (див. CAMPAIGNS.md): годинник тримається в режимі holdover, поки діє чирп, а приймач переходить на Galileo E1 під тоном CW.
За межами L-діапазону#
scenarios/multi-band-jamming-waterfall.toml розміщує сигнали позиціонування, навігації та часу (PNT) LEO у чотирьох діапазонах поруч із GPS L1 C/A та Galileo E5a, кожен діапазон із власним глушником, на часовій шкалі 60 s. Водоспад [grid] — це L-діапазон; три [[panels]] додають UHF (від 455 до 475 MHz), S (від 2482 до 2502 MHz) і C (від 5005 до 5035 MHz).
- 10 s: тон CW на несівній UHF, −120 dBW на прийомі.
- 20 s: чирп з прикладу L-діапазону (16 MHz навколо L1, розгортання 9 µs, 50 mW на 100 m).
- 30 s: широкосмуговий шум, 40 MHz навколо 1185 MHz, −118 dBW.
- 40 s: вузькосмуговий шум, 2 MHz на несівній S, −128 dBW.
- 50 s: шум, узгоджений із власним спектром сигналу C-діапазону, −124 dBW.
Що обчислює прогін (C/N₀ спроєктованих сигналів — це C/N₀ відстежуваної компоненти, тож номінальне значення лежить нижче за повну потужність прийому на частку відстежуваної компоненти):
| Діапазон | Сигнал | Несівна | Номінальне C/N₀ | Мінімальне C/N₀ | Рядки відстеження |
|---|---|---|---|---|---|
| generic-uhf | репрезентативний, BPSK(5), −150 dBW | 465 МГц | 49,41 дБ-Гц | 34,38 dB-Hz | 100 % |
| gps-l1ca | мінімум за специфікацією | 1575,42 MHz | 43,48 дБ-Гц | 3,38 dB-Hz | 33 % |
| galileo-e5a | мінімум за специфікацією | 1176,45 MHz | 46,73 дБ-Гц | 38,51 dB-Hz | 100 % |
| xona-x5 | опублікований проєкт, −144,9 dBW | 1190,51625 MHz | 54,51 дБ-Гц | 46,29 dB-Hz | 100 % |
| generic-s | репрезентативний, BPSK(5), −150 dBW | 2492,028 МГц | 49,23 дБ-Гц | 41,69 dB-Hz | 100 % |
| generic-c-band-leo | репрезентативний, BPSK(10), −152 dBW | 5020 МГц | 47,41 дБ-Гц | 40,35 dB-Hz | 100 % |
Лише чирп забирає сигнал (GPS L1 C/A, від 20 s). Кожен інший глушник погіршує лише той діапазон, якого сягає його спектр: наприклад, узгоджений шум C-діапазону має SSC −71,87 dB/Hz із сигналом C-діапазону та нижче −133 dB/Hz з кожним іншим діапазоном.
Той самий механізм керує сценаріями стійкості LEO-PNT (LEO-PNT.md):
scenarios/leo-resilience-js-margin.tomlкроком 5 dB кожні 10 s змінює один загороджувальний глушник 40 MHz на 1185 MHz, починаючи з −125 dBW. GPS L5 втрачається на кроці −105 dBW, Galileo E5a — на −100 dBW, а Xona X5 — на −95 dBW, тоді як репрезентативний сигнал LEO L-діапазону, що приймається при −135 dBW, ще відстежується при −90 dBW: потужність прийому купує запас за J/S децибел за децибел.scenarios/leo-resilience-multiband-diversity.toml— це кампанія-перебір для прогонуspectrumза потужністю загороджувача в діапазоні L5 (CAMPAIGNS.md).scenarios/leo-resilience-gnss-jammed-leo-carries.toml— це ланцюгова кампанія, фази якої читають C/N₀ для GNSS і LEO з прогонівspectrum, з панелями S- і C-діапазонів.
IQ, SigMF і Welch#
[iq] малює модель в один момент як комплексні відліки синфазної та квадратурної складових (IQ), записує їх як запис SigMF (cf32_le або ci16_le), читає запис назад і оцінює його PSD методом Welch (вікно Ханна, 50 % перекриття, усереднені періодограми, масштабовані до густини). Тепловий шум, сигнали та шумоподібні глушники малюються комірка за коміркою з власної густини моделі; тон і чирп малюються як реальні сигнали. Лише з шумоподібними глушниками оцінка Welch лежить у межах 0,1 dB від моделі (медіана). Періодичний чирп — це лінійчастий спектр на частоті розгортання, з пульсацією та хвостами за межами смуги, яких гладка модель не має: у вбудованому прикладі повна потужність збігається в межах 0,02 %, а медіанна комірка відрізняється на 0,5 dB. Знімок — це файл, записаний для аналізу; нічого не передається, і жодне радіообладнання не керується.
[recording] (лише рідні збірки) читає реальний запис SigMF із meta_path (файл даних типово має ту саму основу імені з .sigmf-data), оцінює його PSD і виводить її поруч із моделлю на частотах запису. Файл SigMF не має абсолютного калібрування за потужністю, тому звіт подає медіанний зсув і форму, а не рівень.
У збірці WebAssembly читання файлів недоступне; kshana::sigmf::read і kshana::spectrum::welch_psd працюють із байтами, які надає сторінка.
Докази#
| Твердження | Позначка | Оракул |
|---|---|---|
| PSD сигналів і SSC | VALIDATED | Головна пелюстка BPSK(n) 2n × 1,023 MHz від нуля до нуля; пелюстки BOC(1 1) із центрами на ±1,023 MHz (Betz 2001); SSC −61,86 / −64,87 / −67,88 dB/Hz для C/A×C/A, BOC(1 1)×BOC(1 1), C/A×BOC(1 1) за їхніми замкненими формами Парсеваля, значення, що стоять за опублікованими −61,8 / −64,8 / −67,8 dB/Hz; Q = 1 (CW) і 1,5 (узгоджений) (Kaplan & Hegarty §9,4); записи таблиці типу jamming дорівнюють замкненим формам: CW і вузькосмуговий Q = 1, широкосмуговий і розгорнутий Q = 2 (білий шум над головною пелюсткою, потужність у смузі нормована; 1 до 0,36) |
| Водоспад, J/S і часова шкала C/N₀ | MODELLED | Точно зводиться до ланцюга типу jamming; потужності глушників, часова шкала й смуги є вхідними даними |
| Кодек SigMF і оцінка Welch | MODELLED | Круговий обхід, пряме дискретне перетворення Фур'є, тотожності білого шуму та Парсеваля; у репозиторії немає стороннього запису |
| Багатодіапазонний водоспад зі спроєктованими сигналами та глушниками для кожного діапазону | MODELLED | Зводиться до ланцюга L-діапазону (одно-компонентний діапазон дає ті самі числа, що й до розширення) і до перевірених за еталоном спектрів сигналів; спроєктовані сигнали, глушники та смуги є вхідними даними |
Одне уточнення до поширеного скорочення: пелюстки спектра BOC(1 1) зосереджені на ±1,023 MHz (між нулем несівної та нулем на 2,046 MHz), але максимум PSD припадає на ±0,759 MHz, де tan y = 2y із y = πf/(2R_c). Тести фіксують обидва значення.
Не моделюється#
- Лінійчаста структура коду розширення (лінії 1 kHz у C/A): тон оцінюється за гладкою огинаючою, а не за найближчою лінією коду.
- Автоматичне регулювання підсилення, квантування, пульсове гасіння та режекторна фільтрація.
- Діаграма спрямованості приймальної антени в бік глушника поза межами одного значення підсилення.
- Завади множинного доступу між супутниками одного діапазону.
- Випромінювання спроєктованого сигналу поза його смугою передавання: там його спектр обрізається, тому позасмугове випромінювання не потрапляє в сусідній діапазон.
- Вплив чирпа на петлю за швидкостей розгортання, співмірних зі смугою петлі: його C/N₀ використовує усереднений за рядком спектр.
Посилання#
- J. W. Betz, «Binary Offset Carrier Modulations for Radionavigation», NAVIGATION 48(4), 2001.
- E. D. Kaplan і C. J. Hegarty (ред.), Understanding GPS/GNSS: Principles and Applications, 3-тє вид., Artech House, 2017, §9,4.
- G. W. Hein та ін., «MBOC: The New Optimized Spreading Modulation Recommended for Galileo L1 OS and GPS L1C», Inside GNSS, травень/червень 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, https://sigmf.org/ (джерельний код: https://github.com/sigmf/SigMF).