Перейти к содержанию

Лабораторная 8.21 — CSS: dechirp и FFT-детектор

Цель

Превратить CSS-сигнал из Lab 8.20 в воспроизводимый детектор символов и количественно оценить его ограничения:

  • построить полный набор символов для выбранного spreading factor;
  • определить идеальное соответствие между символом и FFT-bin;
  • принимать случайные символы после dechirp;
  • измерить вероятность ошибки символа SER в зависимости от SNR;
  • исследовать чувствительность к смещению несущей CFO;
  • использовать отношение первого FFT-пика ко второму как дополнительную меру уверенности детектора.

Структура детектора

flowchart LR
    RX[принятый CSS-символ] --> MIX[dechirp с сопряжённым опорным chirp]
    REF[опорный upchirp] --> MIX
    MIX --> FFT[FFT]
    FFT --> ARGMAX[поиск максимального bin]
    ARGMAX --> MAP[обратное отображение bin → символ]
    MAP --> OUT[принятый символ]

Запуск

python blocks/block_08_modulation_and_synchronization/python/lab_8_21_css_dechirp_fft.py

Генерируемые артефакты

docs/assets/lab821_css_ser_vs_snr.png
docs/assets/lab821_css_ser_vs_cfo.png
docs/assets/lab821_css_example_fft.png
docs/assets/lab821_css_detector_metrics.json

Параметры эксперимента по умолчанию

  • SF=7;
  • полоса 125 кГц;
  • 800 случайных символов на точку;
  • sweep SNR от −18 до 0 дБ;
  • нормированное CFO от −0,45 до +0,45 шага FFT-bin.

Нормированная ось CFO удобна тем, что один шаг FFT-bin равен BW / 2^SF. Поэтому результат можно переносить на другие значения полосы и spreading factor.

Критерии приёмки

Модель и её JSON-отчёт позволяют проверить, что:

  • идеальное отображение «символ → FFT-bin» является взаимно однозначным;
  • тестовый символ принимается правильно;
  • при 0 дБ для фиксированного seed SER равен нулю;
  • в самой шумной точке SER становится явно ненулевым;
  • дробное CFO ухудшает решение ещё до перехода максимума в соседний bin.

Почему нужен SER, а не только SNR

Хороший спектр или достаточно высокий SNR не доказывают работоспособность цифровой линии. Поэтому лабораторная считает реальные ошибки решений. В пакетной версии этот принцип должен быть расширен до BER, PER, вероятности пропуска пакета и вероятности ложной тревоги.

Следующий этап

Пакетная CSS/LoRa-like лабораторная должна добавить:

  • преамбулу из повторяющихся chirp;
  • обнаружение начала пакета;
  • грубую и точную оценку CFO;
  • ошибку частоты дискретизации;
  • sync word и downchirp;
  • BER/PER, пропуски и ложные обнаружения.

Что включить в отчёт

  • График SER от SNR.
  • График чувствительности к нормированному CFO.
  • Пример FFT после dechirp.
  • Количество реально проверенных символов в каждой точке.
  • Объяснение, почему peak-to-second-peak полезен, но не заменяет SER/PER.

Чего ожидать

SER в зависимости от SNR (800 символов на точку, SF = 7):

SNR −18 дБ −15 дБ −12 дБ −9 дБ −6 дБ −3 дБ 0 дБ
SER 0,853 0,636 0,245 0,010 0 0 0

SER в зависимости от нормированного CFO (доля шага бина):

CFO −0,45 −0,30 −0,15 0 +0,15 +0,30 +0,45
SER 0,405 0,078 0,015 0,011 0,019 0,080 0,431
  • Детектор работает ниже уровня шума (SER 1 % при SNR −9 дБ): сжатие чирпа и 128-точечное FFT собирают энергию всего символа в один бин, выигрыш обработки 10*log10(128) = 21 дБ.
  • Половина бина CFO почти разрушает его: при ±0,45 бина энергия делится между двумя бинами, и SER превышает 40 %. Поэтому Лабораторная 8.22 оценивает и убирает CFO до решений по полезной нагрузке.

Упражнения

  1. Повторите развёртку по SNR при SF = 9. На сколько дБ сдвигается кривая и совпадает ли это с 10*log10(512/128)?
  2. При каком CFO (в герцах) канал 125 кГц, SF = 7 теряет половину бина? Сравните со сдвигом генератора 0,3 ppm на 868 МГц.
Ответы (проверены запуском скрипта лабораторной)
  1. При 800 символах на точку кривая SF 9 достигает значения SF 7 при −9 дБ (SER 1,3 %) примерно при −14,4 дБ: сдвиг около 5,5–6 дБ, близко к 10·log10(512/128) = 6,0 дБ. Длинный символ собирает в один бин вчетверо больше энергии.
  2. Один бин: 125 кГц / 128 = 977 Гц, значит, половина бина: 488 Гц. Смещение 0,3 ppm на 868 МГц это 260 Гц, около 0,27 бина: уже в области, где таблица показывает рост SER (0,078 при 0,30 бина и −9 дБ). Два генератора такого качества могут расходиться вдвое сильнее, поэтому приёмник CSS оценивает CFO по преамбуле до решения по символам.