(широкополосный LFM chirp, корреляционный приём)
Симулятор предназначен для моделирования подводной акустической связи с использованием широкополосных линейно-частотно-модулированных (LFM, chirp) сигналов и корреляционного приёма.
Основная цель симулятора — оценка требований к аппаратной части ("железу") подводной системы связи:
- требуемая акустическая мощность передатчика;
- динамический диапазон приёмного тракта;
- параметры трансдусера, LNA, VGA, ADC;
- параметры TGC (Time Gain Compensation);
- допустимые дальности и скорости передачи.
Симулятор используется на этапе НИОКР и предварительного проектирования аппаратуры.
Симулятор должен иметь модульную архитектуру и включать следующие блоки:
- Генератор LFM chirp-сигналов
- Модель подводного акустического канала
- Модель потерь в воде
- Модель приёмного тракта
- Корреляционный приёмник
- Блок оценки характеристик и визуализации
- линейно-частотно-модулированный сигнал (LFM, chirp);
- широкополосный режим.
- нижняя частота: 18 кГц;
- верхняя частота: 34 кГц;
- полоса сигнала: 16 кГц.
- минимальная длительность: 2 мс;
- максимальная длительность: 200 мс;
- длительность задаётся параметром симуляции.
Информация кодируется наклоном chirp-сигнала:
| Бит | Тип chirp | Частотный ход |
|---|---|---|
| 1 | Восходящий | 18 → 34 кГц |
| 0 | Нисходящий | 34 → 18 кГц |
Частота дискретизации:
Период дискретизации:
где:
-
$f_0$ — начальная частота; -
$k = \frac{f_1 - f_0}{T_{chirp}}$ — наклон chirp; -
$T_{chirp} = N T_s$ .
Канал моделируется как многолучевая система:
где:
-
$a_i$ — амплитуда i-го луча; -
$d_i = \lfloor r_i / (c T_s) \rfloor$ — задержка; -
$c$ — скорость звука в воде.
Принятый сигнал:
Сферическое распространение:
Используется формула Thorp:
где
Полные потери:
- полосовая характеристика 18–34 кГц;
- коэффициент преобразования задаётся параметром модели.
Типовая модель TGC:
- разрядность: 12–16 бит;
- учитываются квантование и насыщение:
-
$s_{up}[n]$ — восходящий chirp; -
$s_{down}[n]$ — нисходящий chirp.
- если
$M_{up} > M_{down}$ → бит 1; - иначе → бит 0.
Симулятор должен позволять оценить:
- требуемый уровень источника (SL, dB re 1 µPa @1м);
- требуемую электрическую мощность передатчика;
- динамический диапазон приёмника;
- требования к LNA (NF, усиление);
- диапазон усиления VGA и TGC;
- минимальную длительность chirp для заданной дальности;
- BER в зависимости от SNR и дальности.
- дальность связи: 0.5–10 км;
- оптимальная длительность chirp:
- до 5 км: 20–100 мс;
- 5–10 км: 100–200 мс;
- ориентировочная мощность передатчика:
- 5 км: единицы–десятки Вт;
- 10 км: десятки–сотни Вт.
- дискретная модель на всём тракте;
- параметризуемость всех блоков;
- поддержка пакетного моделирования;
- экспорт результатов (CSV, MAT);
- возможность упрощённого и полного режима моделирования.
Результаты симуляции используются для:
- выбора параметров передатчика и приёмника;
- оценки реализуемости заданной дальности;
- формирования требований к аппаратной платформе;
- оптимизации длительности и параметров chirp-сигнала.
Условные обозначения статуса реализации:
- ✅ Реализовано - модель/функция уже есть в SonarCore
- ❌ НЕ реализовано - требуется реализация
⚠️ Частично реализовано - есть базовая версия, требуется расширение
Сводная таблица статуса реализации:
| Компонент | Статус | Модуль SonarCore | Примечание |
|---|---|---|---|
| Генератор LFM chirp | |||
| - Генерация LFM chirp | ✅ | core/signal_model.py |
SignalModel.generate_chirp() |
| - Оконные функции (Rect, Hann, Tukey) | ✅ | core/signal_model.py |
Реализовано |
| - Дискретная модель | ✅ | core/signal_model.py |
Реализовано |
| - Кодирование данных (up/down chirp) | ❌ | - | Требуется реализация логики выбора chirp по биту |
| Модель канала | |||
| - Геометрические потери | ✅ | core/water_model.py |
calculate_spreading_loss() |
| - Частотно-зависимое поглощение | ✅ | core/water_model.py |
calculate_absorption_loss() (Francois-Garrison) |
| - Формула Thorp | ❌ | - | Используется Francois-Garrison вместо Thorp |
| - Многолучевая модель | ❌ | - | Требуется реализация импульсной характеристики |
| - Задержка распространения | ✅ | core/channel_model.py |
apply_channel_response() |
| Приёмный тракт | |||
| - Трансдусер | ✅ | core/transducer_model.py |
Базовая модель |
| - LNA | ✅ | core/receiver_model.py |
ReceiverModel.process_signal() |
| - VGA | ✅ | core/receiver_model.py |
Реализовано |
| - ADC | ✅ | core/receiver_model.py |
Квантование и насыщение |
| - TGC (Time Gain Control) | core/signal_calculator.py |
Есть расчет TGC кривой, но нет временной модели |
|
| Корреляционный приём | |||
| - Согласованная фильтрация | ✅ | core/dsp_model.py |
DSPModel.matched_filter() |
| - Корреляция с опорными сигналами | ✅ | core/dsp_model.py |
Реализовано |
| - Принятие решения (up/down) | ❌ | - | Требуется реализация сравнения |
| Оценка параметров | |||
| - Уровень источника (SL) | core/signal_path.py |
Частично (через TX sensitivity) | |
| - Электрическая мощность передатчика | ❌ | - | Требуется реализация |
| - Динамический диапазон приёмника | core/receiver_model.py |
Частично (через VGA диапазон) | |
| - Требования к LNA | ✅ | core/receiver_model.py |
NF, усиление |
| - Диапазон усиления VGA и TGC | ✅ | core/signal_calculator.py |
calculate_tgc_curve() |
| - Минимальная длительность chirp | core/optimizer.py |
Частично (через оптимизацию Tp) | |
| - BER в зависимости от SNR | ❌ | - | Требуется реализация |
| Реализация | |||
| - Дискретная модель | ✅ | Все модули | Реализовано |
| - Параметризуемость | ✅ | Все модули | Через DTO |
| - Пакетное моделирование | ❌ | - | Требуется реализация |
| - Экспорт результатов (CSV, MAT) | ❌ | - | Требуется реализация |
| - Упрощённый и полный режим | core/simulator.py |
Частично (через absorption_only флаг) |
📌 Статус реализации в SonarCore:
✅ Реализовано: Генерация LFM chirp-сигналов вcore/signal_model.py
❌ НЕ реализовано: Кодирование данных наклоном chirp (восходящий/нисходящий для битов 1/0)
Реализовано:
- Генерация LFM chirp с параметрами f_start, f_end, Tp
- Оконные функции: Rect, Hann, Tukey
- Дискретная модель сигнала
Требуется реализация:
- Логика выбора типа chirp (up/down) в зависимости от передаваемого бита
- Генерация двух опорных сигналов:
$s_{up}[n]$ и$s_{down}[n]$ - Модуль кодирования/декодирования битов в chirp-сигналы
📌 Статус реализации в SonarCore:
✅ Реализовано: Дискретная модель chirp вSignalModel.generate_chirp()
✅ Реализовано: Частота дискретизации задаётся черезsample_rateв DTO
Реализовано:
- Формула дискретной модели:
$s[n] = A \cos(2\pi(f_0 n T_s + k(n T_s)^2/2))$ - Параметризация через f_start, f_end, Tp, fs
📌 Статус реализации в SonarCore:
✅ Реализовано: Модель канала с затуханием вcore/channel_model.py
❌ НЕ реализовано: Многолучевая модель с импульсной характеристикой$h[n] = \sum_{i=1}^{L} a_i \delta[n - d_i]$
Реализовано:
- Затухание сигнала (transmission loss)
- Задержка распространения (TOF)
- Частотно-зависимое затухание для CHIRP
Требуется реализация:
- Многолучевая модель канала с несколькими лучами
- Импульсная характеристика
$h[n]$ с параметрами$a_i$ и$d_i$ - Свёртка сигнала с импульсной характеристикой:
$x[n] = (s * h)[n] + w[n]$
📌 Статус реализации в SonarCore:
✅ Реализовано: Геометрические потери вcore/water_model.py
✅ Реализовано: Частотно-зависимое поглощение (Francois-Garrison)
❌ НЕ реализовано: Формула Thorp (используется более точная Francois-Garrison)
Реализовано:
- Геометрические потери:
$L_{geo}(r) = 20 \log_{10}(r)$ - Частотно-зависимое поглощение по формуле Francois-Garrison
- Полные потери:
$TL(f, r) = L_{geo}(r) + \alpha(f) r$
Примечание:
- В документации указана формула Thorp, но в коде используется более точная формула Francois-Garrison
- Это улучшение, но стоит отметить в документации
📌 Статус реализации в SonarCore:
✅ Реализовано: LNA, VGA, ADC вcore/receiver_model.py
⚠️ Частично реализовано: TGC (есть расчет кривой, но нет временной модели$G_{TGC}[n]$ )
Реализовано:
- LNA: усиление
$G_{LNA}$ , шум$w_{LNA}[n]$ - VGA: переменное усиление
- ADC: квантование
$Q(x_{VGA}[n])$ и насыщение - Трансдусер: базовая модель с чувствительностью
Частично реализовано:
- TGC: есть расчет оптимальной кривой VGA gain vs distance в
core/signal_calculator.py - Нет временной модели
$G_{TGC}[n] = G_0 e^{\alpha n T_s}$ для применения к сигналу - TGC кривая отображается в GUI, но не применяется автоматически к сигналу
Требуется реализация:
- Временная модель TGC для применения к сигналу
- Автоматическое применение TGC в зависимости от времени/дальности
📌 Статус реализации в SonarCore:
✅ Реализовано: Согласованная фильтрация вcore/dsp_model.py
❌ НЕ реализовано: Принятие решения на основе сравнения$M_{up}$ и$M_{down}$
Реализовано:
- Согласованная фильтрация:
DSPModel.matched_filter() - Корреляция с опорным сигналом
- FFT-based correlation для больших массивов
Требуется реализация:
- Генерация двух опорных сигналов:
$s_{up}[n]$ и$s_{down}[n]$ - Параллельная корреляция с обоими опорными сигналами
- Принятие решения: если
$M_{up} > M_{down}$ → бит 1, иначе → бит 0 - Модуль декодирования битов из корреляционных максимумов
📌 Статус реализации в SonarCore:
⚠️ Частично реализовано: Большинство параметров оцениваются частично
❌ НЕ реализовано: BER в зависимости от SNR и дальности
Реализовано:
- Требования к LNA (NF, усиление): через
ReceiverModel - Диапазон усиления VGA и TGC: через
calculate_tgc_curve() - Частично: уровень источника через TX sensitivity
Частично реализовано:
- Уровень источника (SL): частично через TX sensitivity, но нет прямого расчета SL
- Электрическая мощность передатчика: не рассчитывается напрямую
- Динамический диапазон приёмника: частично через VGA диапазон
- Минимальная длительность chirp: частично через оптимизацию Tp
Требуется реализация:
- Прямой расчет SL (Source Level) в дБ re 1 µPa @1м
- Расчет электрической мощности передатчика
- Расчет BER в зависимости от SNR и дальности
- Модуль оценки параметров аппаратуры с выводом всех требуемых метрик
📌 Статус реализации в SonarCore:
✅ Реализовано: Дискретная модель, параметризуемость
❌ НЕ реализовано: Пакетное моделирование, экспорт результатов
Реализовано:
- Дискретная модель на всём тракте: все модули работают с дискретными сигналами
- Параметризуемость всех блоков: через DTO (Data Transfer Objects)
- Частично: упрощённый режим через флаг
absorption_onlyв симуляторе
Требуется реализация:
- Пакетное моделирование: возможность запуска множества симуляций с разными параметрами
- Экспорт результатов в CSV: таблицы с результатами симуляций
- Экспорт результатов в MAT (MATLAB): для совместимости с MATLAB
- Полный режим моделирования: расширенная модель с многолучевостью, шумом и т.д.
Высокий приоритет:
- ❌ Кодирование данных (up/down chirp для битов) - необходимо для коммуникации
- ❌ Принятие решения в корреляционном приёмнике - необходимо для декодирования
- ❌ BER в зависимости от SNR - ключевая метрика для оценки качества связи
Средний приоритет:
4. ❌ Многолучевая модель канала - улучшает точность моделирования
5.
Низкий приоритет:
7. ❌ Экспорт результатов (CSV, MAT) - удобно, но не критично
8.