Код для исправления ошибки
-
Прямая коррекция ошибок (FEC)
- Метод контроля ошибок при передаче данных по ненадежным каналам связи
- Отправитель кодирует сообщение избыточным способом, чаще всего с помощью кода исправления ошибок (ECC)
- Избыточность позволяет обнаруживать и исправлять ошибки
-
История и применение
- Ричард Хэмминг изобрел первый код с исправлением ошибок в 1950 году
- FEC используется в односторонних каналах, многоадресной передаче, соединениях с длительной задержкой
- Применяется в модемах, сотовых сетях, устройствах массового хранения
-
Обработка FEC
- Применяется к цифровому потоку битов или демодуляции несущей
- Декодер Viterbi реализует алгоритм мягкого принятия решений
- Декодеры могут генерировать сигнал частоты битовых ошибок (BER)
-
Типы кодов
- Блочные коды работают с блоками фиксированного размера
- Сверточные коды работают с потоками битов произвольной длины
- Примеры блочных кодов: коды Рида-Соломона, Голея, BCH, многомерной четности, Хэмминга
- Примеры сверточных кодов: коды Витерби, MAP, BCJR
-
Компромисс между надежностью и скоростью
- Кодовая скорость определяет соотношение информационных и избыточных битов
- Низкая скорость кодирования подразумевает надежный код, высокая скорость кодирования — слабый код
- Избыточные биты должны передаваться с использованием тех же ресурсов, что и защищаемая информация
-
Эффективность и ограничения
- Усреднение шума позволяет уменьшить ошибки
- Чередование данных может снизить качество передаваемых кодов
- Большинство систем используют фиксированный канальный код, некоторые адаптируются к условиям канала
-
Современные тенденции
- Современные коды оцениваются по частоте битовых ошибок
- Коды маркеров и водяных знаков исправляют вставки и удаления битов
- Вопрос эффективности ECC с незначительной частотой ошибок при декодировании остается открытым
-
Теорема Шеннона и её значение
- Клод Шеннон доказал, что пропускная способность канала ограничена максимальной скоростью передачи данных.
- Его доказательство основано на гауссовском случайном кодировании.
-
Современные ECC-коды
- Современные коды могут приближаться к пределу Шеннона.
- Внедрение таких кодов сложно, но они обеспечивают компромисс между производительностью и сложностью вычислений.
-
Объединенные ECC-коды
- Классические блочные и сверточные коды объединяются для повышения производительности.
- Итеративное декодирование рекомендуется для больших расстояний.
-
LDPC-коды
- LDPC-коды обеспечивают производительность, близкую к пределу Шеннона.
- Используются в современных стандартах связи, таких как DVB-S2 и WiMAX.
-
Турбо-коды
- Турбо-кодирование объединяет сверточные коды и перемежитель для высокой производительности.
- Используется в CDMA2000 1x и 1xEV-DO.
-
Локальное декодирование и тестирование кодов
- Локально декодируемые коды восстанавливают биты сообщения при просмотре небольшого числа позиций.
- Локально тестируемые коды проверяют близость сигнала к кодовому слову при просмотре небольшого числа позиций.
-
Чередование
- Перемежение используется для повышения производительности кодов.
- Чередование устраняет проблемы с пакетными ошибками.
- Современные итерационные коды, такие как турбо-коды и LDPC-коды, используют чередование.
-
Программное обеспечение для исправления ошибок
- Моделирование ECC в программном обеспечении помогает в разработке и совершенствовании.
- В 5G программное обеспечение ECC может быть размещено в облаке для повышения гибкости и энергоэффективности.
- Примеры программ: AFF3CT, IT++, OpenAir.
-
Коды Бергера
- Код с постоянным весом
- Сверточный код
- Коды расширителя
- Групповые коды
- Коды Голея
- Код Goppa
- Код Адамара
- Код Хагельбаргера
- Код Хэмминга
- Код на основе латинского квадрата
- Лексикографический код
- Линейное сетевое кодирование
- Длинный код
- Код проверки четности с низкой плотностью
- LT-код
- m из n кодов
- Код Нордстрома-Робинсона
- Интерактивный код
- Полярный код
- Raptor code
- Исправление ошибок Рида–Соломона
- Код Рида–Мюллера
- Повторяющийся накопительный код
- Повторяющиеся коды
- Спинальный код
- Код торнадо
- Турбо-код
- Код Уолша–Адамара
- Циклические проверки избыточности
-
Дополнительные ресурсы
- Пакетный код для исправления ошибок
- Скорость кодирования
- Коды стирания
- Обнаружение и исправление ошибок
- Коды для исправления ошибок с обратной связью
- Линейный код
- Квантовая коррекция ошибок
- Декодер с программируемым решением
-
Рекомендации
- Дальнейшее чтение
- Внешние ссылки
- Зоопарк исправления ошибок
- База данных кодов для исправления ошибок
- lpdec: библиотека для декодирования LP и связанных с ней вещей (Python)