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