Skip to content

Latest commit

 

History

History
438 lines (316 loc) · 21.4 KB

File metadata and controls

438 lines (316 loc) · 21.4 KB

Симулятор подводной акустической коммуникации

(широкополосный LFM chirp, корреляционный приём)

1. Назначение и цель разработки

Симулятор предназначен для моделирования подводной акустической связи с использованием широкополосных линейно-частотно-модулированных (LFM, chirp) сигналов и корреляционного приёма.

Основная цель симулятора — оценка требований к аппаратной части ("железу") подводной системы связи:

  • требуемая акустическая мощность передатчика;
  • динамический диапазон приёмного тракта;
  • параметры трансдусера, LNA, VGA, ADC;
  • параметры TGC (Time Gain Compensation);
  • допустимые дальности и скорости передачи.

Симулятор используется на этапе НИОКР и предварительного проектирования аппаратуры.

2. Общая структура симулятора

Симулятор должен иметь модульную архитектуру и включать следующие блоки:

  • Генератор LFM chirp-сигналов
  • Модель подводного акустического канала
  • Модель потерь в воде
  • Модель приёмного тракта
  • Корреляционный приёмник
  • Блок оценки характеристик и визуализации

3. Сигналы и кодирование информации

3.1 Тип сигнала

  • линейно-частотно-модулированный сигнал (LFM, chirp);
  • широкополосный режим.

3.2 Частотный диапазон

  • нижняя частота: 18 кГц;
  • верхняя частота: 34 кГц;
  • полоса сигнала: 16 кГц.

3.3 Длительность chirp-сигнала

  • минимальная длительность: 2 мс;
  • максимальная длительность: 200 мс;
  • длительность задаётся параметром симуляции.

3.4 Кодирование данных

Информация кодируется наклоном chirp-сигнала:

Бит Тип chirp Частотный ход
1 Восходящий 18 → 34 кГц
0 Нисходящий 34 → 18 кГц

4. Дискретная модель сигнала

4.1 Дискретизация

Частота дискретизации:

$$ f_s \geq 2.5 \cdot f_{max} \quad (f_{max} = 34 \text{ кГц}) $$

Период дискретизации:

$$ T_s = \frac{1}{f_s} $$

4.2 Дискретная модель chirp

$$ s[n] = A \cos\left(2\pi\left(f_0 n T_s + \frac{k(n T_s)^2}{2}\right)\right) $$

где:

  • $f_0$ — начальная частота;
  • $k = \frac{f_1 - f_0}{T_{chirp}}$ — наклон chirp;
  • $T_{chirp} = N T_s$.

5. Модель подводного акустического канала

5.1 Импульсная характеристика

Канал моделируется как многолучевая система:

$$ h[n] = \sum_{i=1}^{L} a_i \delta[n - d_i] $$

где:

  • $a_i$ — амплитуда i-го луча;
  • $d_i = \lfloor r_i / (c T_s) \rfloor$ — задержка;
  • $c$ — скорость звука в воде.

Принятый сигнал:

$$ x[n] = (s * h)[n] + w[n] $$

6. Потери при распространении в воде

6.1 Геометрические потери

Сферическое распространение:

$$ L_{geo}(r) = 20 \log_{10}(r) $$

6.2 Частотно-зависимое поглощение

Используется формула Thorp:

$$ \alpha(f) = \frac{0.11 f^2}{1 + f^2} + \frac{44 f^2}{4100 + f^2} + 2.75 \times 10^{-4} f^2 + 0.003 $$

где $f$ — в кГц, $\alpha$ — дБ/км.

Полные потери:

$$ TL(f, r) = L_{geo}(r) + \alpha(f) r $$

7. Модель приёмного тракта

7.1 Акустический преобразователь (Transducer)

  • полосовая характеристика 18–34 кГц;
  • коэффициент преобразования задаётся параметром модели.

7.2 LNA (Low Noise Amplifier)

$$ x_{LNA}[n] = G_{LNA} x[n] + w_{LNA}[n] $$

7.3 VGA и TGC

$$ x_{VGA}[n] = G_{TGC}[n] x_{LNA}[n] $$

Типовая модель TGC:

$$ G_{TGC}[n] = G_0 e^{\alpha n T_s} $$

7.4 ADC

  • разрядность: 12–16 бит;
  • учитываются квантование и насыщение:

$$ x_{ADC}[n] = Q(x_{VGA}[n]) $$

8. Корреляционный приём

8.1 Опорные сигналы

  • $s_{up}[n]$ — восходящий chirp;
  • $s_{down}[n]$ — нисходящий chirp.

8.2 Корреляция

$$ C_{up}[m] = \sum_n x_{ADC}[n] s_{up}[n - m] $$

$$ C_{down}[m] = \sum_n x_{ADC}[n] s_{down}[n - m] $$

8.3 Принятие решения

$$ M_{up} = \max |C_{up}[m]|, \quad M_{down} = \max |C_{down}[m]| $$

  • если $M_{up} > M_{down}$ → бит 1;
  • иначе → бит 0.

9. Оцениваемые параметры аппаратуры

Симулятор должен позволять оценить:

  • требуемый уровень источника (SL, dB re 1 µPa @1м);
  • требуемую электрическую мощность передатчика;
  • динамический диапазон приёмника;
  • требования к LNA (NF, усиление);
  • диапазон усиления VGA и TGC;
  • минимальную длительность chirp для заданной дальности;
  • BER в зависимости от SNR и дальности.

10. Рабочие диапазоны (ориентиры)

  • дальность связи: 0.5–10 км;
  • оптимальная длительность chirp:
    • до 5 км: 20–100 мс;
    • 5–10 км: 100–200 мс;
  • ориентировочная мощность передатчика:
    • 5 км: единицы–десятки Вт;
    • 10 км: десятки–сотни Вт.

11. Требования к реализации

  • дискретная модель на всём тракте;
  • параметризуемость всех блоков;
  • поддержка пакетного моделирования;
  • экспорт результатов (CSV, MAT);
  • возможность упрощённого и полного режима моделирования.

12. Назначение результатов моделирования

Результаты симуляции используются для:

  • выбора параметров передатчика и приёмника;
  • оценки реализуемости заданной дальности;
  • формирования требований к аппаратной платформе;
  • оптимизации длительности и параметров chirp-сигнала.

13. Статус реализации в SonarCore

Условные обозначения статуса реализации:

  • Реализовано - модель/функция уже есть в 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
- Многолучевая модель - Требуется реализация импульсной характеристики $h[n]$
- Задержка распространения 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 кривой, но нет временной модели $G_{TGC}[n]$
Корреляционный приём
- Согласованная фильтрация core/dsp_model.py DSPModel.matched_filter()
- Корреляция с опорными сигналами core/dsp_model.py Реализовано
- Принятие решения (up/down) - Требуется реализация сравнения $M_{up}$ и $M_{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 флаг)

13.1 Детальные замечания по разделам

3. Сигналы и кодирование информации

📌 Статус реализации в 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-сигналы

4. Дискретная модель сигнала

📌 Статус реализации в 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

5. Модель подводного акустического канала

📌 Статус реализации в 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]$

6. Потери при распространении в воде

📌 Статус реализации в 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
  • Это улучшение, но стоит отметить в документации

7. Модель приёмного тракта

📌 Статус реализации в 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 в зависимости от времени/дальности

8. Корреляционный приём

📌 Статус реализации в 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
  • Модуль декодирования битов из корреляционных максимумов

9. Оцениваемые параметры аппаратуры

📌 Статус реализации в 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 и дальности
  • Модуль оценки параметров аппаратуры с выводом всех требуемых метрик

11. Требования к реализации

📌 Статус реализации в SonarCore:
Реализовано: Дискретная модель, параметризуемость
НЕ реализовано: Пакетное моделирование, экспорт результатов

Реализовано:

  • Дискретная модель на всём тракте: все модули работают с дискретными сигналами
  • Параметризуемость всех блоков: через DTO (Data Transfer Objects)
  • Частично: упрощённый режим через флаг absorption_only в симуляторе

Требуется реализация:

  • Пакетное моделирование: возможность запуска множества симуляций с разными параметрами
  • Экспорт результатов в CSV: таблицы с результатами симуляций
  • Экспорт результатов в MAT (MATLAB): для совместимости с MATLAB
  • Полный режим моделирования: расширенная модель с многолучевостью, шумом и т.д.

13.2 Приоритеты реализации

Высокий приоритет:

  1. ❌ Кодирование данных (up/down chirp для битов) - необходимо для коммуникации
  2. ❌ Принятие решения в корреляционном приёмнике - необходимо для декодирования
  3. ❌ BER в зависимости от SNR - ключевая метрика для оценки качества связи

Средний приоритет: 4. ❌ Многолучевая модель канала - улучшает точность моделирования 5. ⚠️ Временная модель TGC - автоматическое применение TGC к сигналу 6. ❌ Пакетное моделирование - полезно для анализа параметров

Низкий приоритет: 7. ❌ Экспорт результатов (CSV, MAT) - удобно, но не критично 8. ⚠️ Расчет электрической мощности передатчика - дополнительная метрика 9. ❌ Формула Thorp - уже используется более точная Francois-Garrison