Лабораторная 8.6 — Сравнение BER помехоустойчивого кодирования с перемежением¶
Цель¶
Сравнить BER для нескольких вариантов канала при одном и том же SNR:
- некодированная передача (базовый уровень);
- свёрточный код (жёсткий декодер Витерби);
- блочный код с разреженными проверками чётности (типа LDPC);
- с перемежением и без него при пакетных помехах.
Зачем это нужно¶
Всё остальное в этом блоке борется с искажением до решения. Помехоустойчивое кодирование это дополняющий инструмент: добавить на передатчике структурированную избыточность, чтобы приёмник смог исправить ошибки, оставшиеся после наилучшей возможной синхронизации. Цена это полоса (код со скоростью 1/2 удваивает число канальных бит) и сложность декодера; награда это выигрыш кодирования (coding gain): тот же BER при меньшем SNR. В реальных каналах бывают и пакеты ошибок (замирания, помехи, потерянный отсчёт), а большинство декодеров гораздо лучше справляются с разбросанными ошибками, чем с их сериями. Перемежение (interleaving) распределяет пакет ошибок по многим кодовым словам, так что каждое видит лишь несколько ошибок. Эта работа собирает все три идеи на одном графике.
Исполняемый файл¶
| Файл | Назначение |
|---|---|
blocks/block_08_modulation_and_synchronization/python/lab_8_6_channel_coding_ber_comparison.py |
кривые BER по точкам SNR |
Запуск из корня репозитория:
python blocks/block_08_modulation_and_synchronization/python/lab_8_6_channel_coding_ber_comparison.py
Сгенерированные артефакты¶
docs/assets/lab86_channel_coding_ber.png
docs/assets/lab86_channel_coding_metrics.json
Что демонстрирует эта работа¶
- Выигрыш кодирования относительно некодированной передачи.
- Влияние пакетных помех на декодеры с жёсткими решениями.
- Почему перемежение помогает при пакетных, а не чисто беспамятных процессах ошибок.
Чего ожидать¶
Модель: BPSK в AWGN плюс редкие пакеты шума (вероятность 0,012 на старт, длина 10 бит, шум пакета в 6 раз выше уровня AWGN), 80 кадров × 240 информационных бит на точку SNR. Свёрточный код: скорость 1/2, K = 3, генераторы (7, 5) в восьмеричной записи, с жёстким декодером Витерби; «LDPC-подобный» код: крошечный (36, 24) код с разреженными проверками чётности (скорость 2/3) и декодером с переключением бит (жёсткие решения; надёжность канала лишь упорядочивает переключения). Ось SNR на переданный канальный бит, поэтому кодированной схеме не добавляют энергии за избыточность. Запуск по умолчанию печатает:
| SNR | без кода | свёрточный | свёрточный + перемежитель | LDPC-подобный | LDPC-подобный + перемежитель |
|---|---|---|---|---|---|
| 0 дБ | 1,92e-1 | 2,35e-1 | 2,68e-1 | 1,98e-1 | 1,98e-1 |
| 2 дБ | 1,39e-1 | 1,20e-1 | 1,45e-1 | 1,39e-1 | 1,43e-1 |
| 4 дБ | 9,20e-2 | 6,46e-2 | 5,86e-2 | 8,80e-2 | 8,72e-2 |
| 6 дБ | 6,69e-2 | 3,76e-2 | 1,74e-2 | 5,86e-2 | 5,88e-2 |
| 8 дБ | 4,33e-2 | 2,87e-2 | 8,39e-3 | 4,45e-2 | 4,67e-2 |
Что говорят эти числа (и чего не говорят):
- Кодирование окупается лишь выше нескольких дБ. При 0 дБ свёрточный код хуже некодированной передачи (0,235 против 0,192): слишком много канальных ошибок перегружают декодер с жёсткими решениями. Точка пересечения здесь около 2 дБ.
- Перемежение: главный победитель против пакетов ошибок. При 6 дБ оно более чем вдвое снижает BER свёрточного кода (3,8e-2 → 1,7e-2), а при 8 дБ: примерно в 3,4 раза (2,9e-2 → 8,4e-3), потому что 10-битный пакет, превышающий исправляющую способность кода, теперь распределён по многим кодовым словам. При 0–2 дБ перемежение не помогает: там ошибки определяются AWGN, а не пакетами.
- Компактный LDPC-подобный код в этом запуске практически не даёт выигрыша (5,9e-2 против 6,7e-2 без кода при 6 дБ и чуть хуже при 8 дБ). Кодовое слово из 36 бит с декодированием переключением бит слишком короткое и слабое; считайте это демонстрацией структуры (разреженные проверки, итеративное декодирование), а не свидетельством того, что LDPC-коды не работают. Настоящие LDPC-коды используют тысячи бит и мягкое (LLR) декодирование.
- Статистические пределы. Каждая точка: около 19 200 информационных бит, поэтому BER около 1e-2 имеет относительную неопределённость порядка 10 %; не читайте малые различия (например 1,98e-1 против 1,97e-1) как реальные.
Упражнения¶
- Поставьте
burst_probabilityв 0 и перезапустите. Помогает ли перемежение свёрточному коду по-прежнему? Объясните почему да или почему нет. - Увеличьте
burst_lengthс 10 до 30. Какой вариант деградирует первым и как меняется выигрыш от перемежителя? - Сравните кодированную и некодированную кривые при равной энергии на информационный бит, а не на канальный бит (скорость 1/2 стоит 3 дБ, скорость 2/3: около 1,8 дБ). Сдвигаются ли точки пересечения и на сколько?
Ответы (проверены запуском скрипта лабораторной)
- Нет. Без пачек свёрточный код даёт большой выигрыш (при 6 дБ: 4,2e-4 против 2,3e-2 без кодирования; при 8 дБ ни одной ошибки на 19 200 битах), а перемежитель ничего не меняет (3,6e-4, в пределах статистического разброса). Перемежитель разносит только сгруппированные ошибки; независимые ошибки AWGN уже разнесены.
- Деградирует всё: пачки по 30 бит, начинающиеся с вероятностью 0,012, покрывают примерно треть бит (0,012 × 30). BER без кодирования при 8 дБ растёт с 4,3e-2 до 1,1e-1, а кодированные варианты до 6 дБ не лучше некодированного; при малом SNR перемежитель даже вредит (0,37 против 0,30 при 0 дБ). Только при 8 дБ перемежитель ещё помогает свёрточному коду (0,115 → 0,076). Когда пачек больше, чем декодер может исправить на глубине перемежителя, их разнесение лишь разносит ущерб.
- По оси информационного бита кривые со скоростью 1/2 сдвигаются на 3 дБ вправо, со скоростью 2/3: примерно на 1,76 дБ, и картина меняется. Свёрточный код без перемежителя больше нигде в таблице не обгоняет некодированную передачу: его точка 6 дБ на бит канала (3,8e-2) становится 9 дБ на информационный бит, где некодированная передача уже около 3,5e-2. С перемежителем он всё ещё выигрывает, но пересечение переезжает примерно с 2 дБ в промежуток между 7 и 9 дБ. LDPC-подобный код везде хуже некодированного. Выигрыш кодирования нужно указывать на информационный бит, иначе код выглядит лучше, чем есть.
Чек-лист отчёта¶
- Приложены кривые BER для всех вариантов.
- Выделены точки SNR, где выигрыш кодирования виден лучше всего.
- Сравнено качество с перемежением и без него.
- Объяснены ограничения компактной LDPC-подобной и жёсткодекодерной модели.