Лабораторная 8.13 — DSSS: захват и processing gain¶
Цель¶
Построить direct-sequence spread-spectrum канал:
- сгенерировать maximal PN sequence длиной 127;
- выполнить spreading/despreading BPSK;
- найти начало по корреляции;
- измерить processing gain против AWGN и narrowband interferer;
- получить BER с количеством сравнённых битов.
Зачем это нужно¶
Прямое расширение спектра (DSSS) умножает каждый бит данных на быструю псевдослучайную последовательность чипов. Результат занимает гораздо более широкую полосу при гораздо меньшей спектральной плотности мощности, что даёт три вещи: устойчивость к узкополосным помехам, возможность работать ниже уровня шума (приёмник коррелирует с известным кодом) и точный тайминг по пику корреляции. Это основа GPS, CDMA и 802.11b, и та же идея, применённая к чирпам это LoRa/CSS из работ 8.20–8.22. Здесь вы строите механизм и измеряете, что он делает и, не менее важно, чего не делает.
Запуск¶
python blocks/block_08_modulation_and_synchronization/python/lab_8_13_dsss_processing_gain.py
Артефакты¶
docs/assets/lab813_dsss_autocorrelation.png
docs/assets/lab813_dsss_acquisition.png
docs/assets/lab813_dsss_ber.png
docs/assets/lab813_dsss_metrics.json
Чего ожидать¶
Для 127-чиповой m-последовательности (7-разрядный LFSR):
| Величина | Значение |
|---|---|
Номинальный выигрыш обработки 10·log10(127) |
21,04 дБ |
| Наибольшая внепиковая автокорреляция | 0,0079 (= 1/127) |
| Захват (при SNR −8 дБ) | обнаруженный старт 73, истинный 73, ошибка 0 чипов |
| Подавление узкополосной помехи | 38,2 дБ (помеха +10 дБ J/S) |
BER в зависимости от Eb/N0 (20 000 бит на точку):
| Eb/N0 | BER, только AWGN | BER, с тоном +10 дБ J/S |
|---|---|---|
| −6 дБ | 0,240 | 0,244 |
| −3 дБ | 0,154 | 0,159 |
| 0 дБ | 0,079 | 0,077 |
| 3 дБ | 0,0249 | 0,0246 |
| 6 дБ | 0,0030 | 0,0027 |
| 9 дБ | 0 | 5e-5 (1 ошибка) |
Главное это то, чего здесь нет:
- Столбец AWGN это обычный BPSK. Теоретические значения: 0,079 при 0 дБ и 0,0024 при 6 дБ, и работа их воспроизводит. Расширение спектра не даёт выигрыша по BER в чисто белом шуме: расширяя сигнал, мы расширяем и шум, который он должен превзойти. 21 дБ «выигрыша обработки» это не улучшение чувствительности в AWGN.
- Выигрыш проявляется против помех. Тон на 10 дБ сильнее сигнала меняет BER не больше, чем шум Монте-Карло: демодулятор расширения размазывает тон по всей полосе, а полезный бит сворачивается в одно значение; измеренное подавление это 38 дБ, больше номинальных 21 дБ; насколько больше, зависит от положения тона относительно спектра кода.
- Захват работает при SNR −8 дБ, где поотсчётный взгляд на сигнал видит один шум: пик корреляции (усиление 127) отчётливо поднимается над боковыми лепестками 1/127.
- Цена это полоса: этот сигнал занимает в 127 раз больше полосы, чем данные.
Упражнения¶
- Поднимите помеху до
J/S = 30 дБ. При каком уровне BER начинает расти и как это соотносится с 21 дБ выигрыша обработки? - Замените 127-чиповый код на 31-чиповый (5-разрядный LFSR). Что произойдёт с выигрышем обработки, внепиковой автокорреляцией и надёжностью захвата?
- Задержите локальный код на один чип и измерьте BER. Что это говорит о том, зачем вообще нужен захват?
Ответы (проверены запуском скрипта лабораторной)
- При Eb/N0 = 9 дБ BER остаётся 0 до J/S = 20 дБ, затем растёт: 5e-5 при 22 дБ, 1e-4 при 25 дБ и 1,6e-3 при 30 дБ. Это порядок обработочного выигрыша 21 дБ: когда помеха превышает сигнал больше чем на выигрыш, остаток после сжатия спектра сравним с шумом. Для этой конкретной частоты тона подавление при сжатии даже 38 дБ, поэтому BER растёт плавно, а не скачком.
- Обработочный выигрыш падает с 21,0 до 14,9 дБ (
10·log10(31)), а подавление того же тона с 38,2 до 11,2 дБ. Внепиковая периодическая автокорреляция обеих m-последовательностей по модулю равна 1, то есть −29,8 дБ относительно пика для 31 чипа против −42 дБ для 127. Захват при SNR −8 дБ на 200 попытках удаётся 188 раз с 31 чипом и 200 раз со 127: короткий код собирает меньше энергии на корреляцию. - BER 0,51: код, сдвинутый на один чип, почти не коррелирует с собой (внепиковое значение −1/127), поэтому сжатие спектра возвращает шум. Выигрыш расширения существует только при совмещении местного кода с точностью до доли чипа: именно это и обеспечивает захват до того, как можно читать данные.
Интерпретация¶
Код длиной 127 имеет двухуровневую циклическую автокорреляцию и номинальный gain 10·log10(127) ≈ 21 dB. Корреляция обеспечивает acquisition, а despreading распределяет узкополосную помеху по выходной полосе. Цена: высокая chip rate, полоса и дополнительная PN/correlator-логика.