Модель спектра и водопад
Вид сценария 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
В рабочей копии тот же файл запускает kshana scenarios/l-band-waterfall-jamming.toml.
Код: src/spectrum.rs (модель, вид, оцениватель Уэлча), src/sigmf.rs (кодек записей), src/navsignal.rs (спектры сигналов единичной площади и коэффициент спектрального разделения) и src/leo_signal.rs (предустановки конструкции сигнала, которые может назвать диапазон).
Что моделируется#
| Диапазон | Несущая | Модуляция | Принимаемая мощность по умолчанию | Полоса приёмника по умолчанию |
|---|---|---|---|---|
gps-l1ca |
1575,42 МГц | двоичная фазовая манипуляция, BPSK(1) | −158,5 дБВт (IS-GPS-200) | 2,046 МГц |
galileo-e1 |
1575,42 МГц | мультиплексированная двоичная офсетная несущая, MBOC(6,1,1/11), или двоичная офсетная несущая BOC(1 1) | −157,25 дБВт (Galileo OS SIS ICD Issue 2,1, Table 12) | 14,322 МГц |
gps-l2c |
1227,60 МГц | BPSK(1) (коды CM и CL с временным мультиплексированием) | −160,0 дБВт (IS-GPS-200) | 2,046 МГц |
gps-l5 |
1176,45 МГц | BPSK(10) | −157,9 дБВт (IS-GPS-705) | 20,46 МГц |
galileo-e5a |
1176,45 МГц | BPSK(10) | −155,25 дБВт (Galileo OS SIS ICD Issue 2,1, Table 12) | 20,46 МГц |
GPS (глобальная система позиционирования) L1 C/A — это код грубого захвата; L2C — гражданский сигнал L2; IS-GPS-200 и IS-GPS-705 — интерфейсные спецификации GPS; Galileo OS SIS ICD — Interface Control Document сигнала в пространстве открытой службы Galileo. Принимаемые мощности — это минимумы по спецификации; полосы — выбор моделирования. Оба параметра можно переопределить для каждого диапазона. Без таблицы [[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 МГц в 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, 3rd ed., §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 дБ-Гц в обоих случаях (таблица давала 19,74, когда содержала 1,5). - Широкополосная и качающаяся:
Q = 2, начиная с 0,36. Это белый шум по главному лепестку при нормировке мощности сигнала в полосе к единице,κ = 1/(2R_c). До 0,36 таблица содержала 1, что примерно на 3 дБ пессимистично (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 с, одна строка в секунду, антенна 290 К и коэффициент шума 2 дБ (пол −201,98 дБВт/Гц).
- С 10 с по 40 с: чирп 16 МГц вокруг L1, развёртки по 9 мкс, 50 мВт на расстоянии 100 м.
- С 30 с: тон CW на несущей L1, 10 мВт на расстоянии 1 км.
- С 45 с: плоский шум 2 МГц на L2, принимаемый при −135 дБВт.
Что вычисляет прогон:
| Диапазон | Номинальное C/N₀ | Минимальное C/N₀ | Первая потеря | Строки со слежением |
|---|---|---|---|---|
| gps-l1ca | 43,48 дБ-Гц | 3,23 дБ-Гц | 10 с | 17 % |
| galileo-e1 | 44,73 дБ-Гц | 4,44 дБ-Гц | 10 с | 50 % |
| gps-l2c | 41,98 дБ-Гц | 36,86 дБ-Гц | никогда | 100 % |
| gps-l5 | 44,08 дБ-Гц | 44,08 дБ-Гц | никогда | 100 % |
| galileo-e5a | 46,73 дБ-Гц | 46,73 дБ-Гц | никогда | 100 % |
Тон CW объясняет, почему два сигнала L1 расходятся на 40 с. Он попадает на пик спектра C/A и удерживает C/A на 17,98 дБ-Гц, ниже порога 25 дБ-Гц. Он попадает в нуль спектра MBOC, поэтому Galileo E1 возвращается к своему номинальному C/N₀, когда чирп прекращается.
Сами сигналы лежат примерно на 20 дБ ниже шумового пола, поэтому водопад показывает пол и источники помех; полосы C/N₀ показывают, что восстанавливает сжатие спектра.
Те же источники помех управляют сквозной миссией в scenarios/campaign-spectrum-holdover-integrity.toml (см. CAMPAIGNS.md): пока включён чирп, часы работают в режиме holdover, а под тоном CW приёмник переходит на Galileo E1.
За пределами L-диапазона#
scenarios/multi-band-jamming-waterfall.toml помещает сигналы позиционирования, навигации и времени (PNT) на LEO в четырёх диапазонах рядом с GPS L1 C/A и Galileo E5a, каждый диапазон со своим источником помех, на хронологии в 60 с. Водопад [grid] — это L-диапазон; три [[panels]] добавляют UHF (от 455 до 475 МГц), S (от 2482 до 2502 МГц) и C (от 5005 до 5035 МГц).
- 10 с: тон CW на несущей UHF, принимаемый при −120 дБВт.
- 20 с: чирп из примера для L-диапазона (16 МГц вокруг L1, развёртки по 9 мкс, 50 мВт на расстоянии 100 м).
- 30 с: широкополосный шум, 40 МГц вокруг 1185 МГц, −118 дБВт.
- 40 с: узкополосный шум, 2 МГц на несущей S, −128 дБВт.
- 50 с: шум, согласованный с собственным спектром сигнала C-диапазона, −124 дБВт.
Что вычисляет прогон (C/N₀ разработанных сигналов относится к отслеживаемой компоненте, поэтому номинальное значение лежит ниже полной принимаемой мощности на долю отслеживаемой части):
| Диапазон | Сигнал | Несущая | Номинальное C/N₀ | Минимальное C/N₀ | Строки со слежением |
|---|---|---|---|---|---|
| generic-uhf | репрезентативный, BPSK(5), −150 дБВт | 465 МГц | 49,41 дБ-Гц | 34,38 дБ-Гц | 100 % |
| gps-l1ca | минимум по спецификации | 1575,42 МГц | 43,48 дБ-Гц | 3,38 дБ-Гц | 33 % |
| galileo-e5a | минимум по спецификации | 1176,45 МГц | 46,73 дБ-Гц | 38,51 дБ-Гц | 100 % |
| xona-x5 | опубликованная конструкция, −144,9 дБВт | 1190,51625 МГц | 54,51 дБ-Гц | 46,29 дБ-Гц | 100 % |
| generic-s | репрезентативный, BPSK(5), −150 дБВт | 2492,028 МГц | 49,23 дБ-Гц | 41,69 дБ-Гц | 100 % |
| generic-c-band-leo | репрезентативный, BPSK(10), −152 дБВт | 5020 МГц | 47,41 дБ-Гц | 40,35 дБ-Гц | 100 % |
Сигнал отнимает только чирп (GPS L1 C/A, с 20 с). Каждый другой источник помех ухудшает только тот диапазон, до которого доходит его спектр: например, согласованный шум C-диапазона имеет SSC −71,87 дБ/Гц с сигналом C-диапазона и ниже −133 дБ/Гц с каждым другим диапазоном.
Тот же механизм управляет сценариями устойчивости LEO-PNT (LEO-PNT.md):
scenarios/leo-resilience-js-margin.tomlступенчато увеличивает один заградительный источник помех 40 МГц на 1185 МГц на 5 дБ каждые 10 с, начиная с −125 дБВт. GPS L5 теряется на ступени −105 дБВт, Galileo E5a — на −100 дБВт, Xona X5 — на −95 дБВт, тогда как репрезентативный сигнал LEO в L-диапазоне, принимаемый при −135 дБВт, всё ещё отслеживается при −90 дБВт: принимаемая мощность покупает запас по 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 методом Уэлча (окно Ханна, перекрытие 50 %, усреднённые периодограммы, масштабирование по плотности). Тепловой шум, сигналы и шумоподобные источники помех рисуются по ячейкам из собственной плотности модели; тон и чирп рисуются как реальные формы волны. При одних лишь шумоподобных источниках помех оценка Уэлча лежит в пределах 0,1 дБ от модели (медиана). Периодический чирп — это линейчатый спектр на частоте его развёртки, с рябью и хвостами за краями его полосы, которые гладкая модель опускает: во встроенном примере полная мощность согласуется в пределах 0,02 %, а медианная ячейка отличается на 0,5 дБ. Моментальный снимок — это файл, записанный для анализа; ничего не передаётся, и никакое радиооборудование не управляется.
[recording] (только нативные сборки) читает реальную запись SigMF из meta_path (файл данных по умолчанию имеет то же имя с .sigmf-data), оценивает её PSD и печатает её рядом с моделью на частотах записи. У файла SigMF нет абсолютной калибровки мощности, поэтому отчёт даёт медианное смещение и форму, а не уровень.
В сборке WebAssembly чтение файлов недоступно; kshana::sigmf::read и kshana::spectrum::welch_psd работают с байтами, которые предоставляет страница.
Доказательства#
| Утверждение | Метка | Оракул |
|---|---|---|
| PSD сигналов и SSC | VALIDATED | главный лепесток BPSK(n) 2n × 1,023 МГц от нуля до нуля; лепестки BOC(1 1) с центрами на ±1,023 МГц (Betz 2001); SSC −61,86 / −64,87 / −67,88 дБ/Гц для C/A×C/A, BOC(1 1)×BOC(1 1), C/A×BOC(1 1) по их замкнутым формам Парсеваля, значения, лежащие за опубликованными −61,8 / −64,8 / −67,8 дБ/Гц; 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 и оценка Уэлча | MODELLED | Круговые преобразования, прямое дискретное преобразование Фурье, тождества для белого шума и Парсеваля; сторонних записей в репозитории нет |
| Многодиапазонный водопад с разработанными сигналами и источниками помех по диапазонам | MODELLED | Сводится к цепочке L-диапазона (однокомпонентный диапазон даёт те же числа, что и до расширения) и к проверенным спектрам сигналов; разработанные сигналы, источники помех и полосы — входные данные |
Одно уточнение к распространённому упрощению: лепестки спектра BOC(1 1) центрированы на ±1,023 МГц (между нулём несущей и нулём на 2,046 МГц), но максимум PSD лежит на ±0,759 МГц, где tan y = 2y при y = πf/(2R_c). Тесты закрепляют оба значения.
Не моделируется#
- Линейчатая структура расширяющего кода (линии 1 кГц у C/A): тон оценивается относительно гладкой огибающей, а не ближайшей линии кода.
- Автоматическая регулировка усиления, квантование, гашение импульсов и режекторная фильтрация.
- Диаграмма направленности приёмной антенны в сторону источника помех сверх одного значения усиления.
- Помехи множественного доступа между спутниками одного диапазона.
- Излучение разработанного сигнала за пределами его полосы передачи: его спектр там усекается, поэтому внеполосное излучение не доходит до соседнего диапазона.
- Влияние чирпа на петлю при скоростях развёртки, сопоставимых с полосой петли: его C/N₀ использует усреднённый по строке спектр.
Литература#
- J. W. Betz, "Binary Offset Carrier Modulations for Radionavigation," NAVIGATION 48(4), 2001.
- E. D. Kaplan and C. J. Hegarty (eds.), Understanding GPS/GNSS: Principles and Applications, 3rd ed., 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, May/June 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).