Турбо-код
Турбо-код — это класс корректирующих кодов с высокой производительностью, используемых в системах цифровой связи и хранения данных для обнаружения и исправления ошибок, возникающих при передаче информации по каналам с шумами. Относится к помехоустойчивым кодам, способным приближаться к теоретическому пределу пропускной способности канала, известному как предел Шеннона. Основной принцип турбо-кодов заключается в параллельной или последовательной комбинации двух или более простых кодов (обычно свёрточных) с перемежением данных и итеративным декодированием с мягким решением.
История
Концепция турбо-кодов была впервые предложена в 1993 году группой французских исследователей из Национальной школы телекоммуникаций (ENST) в Бресте: Клодом Берру, Аленом Главиё и Пьером Титмажма. Их работа «Near Shannon limit error-correcting coding and decoding: Turbo-codes» была представлена на конференции IEEE International Conference on Communications (ICC) в Женеве. Открытие вызвало значительный резонанс в научном сообществе, поскольку до этого считалось, что достижение предела Шеннона требует использования кодов с очень большой длиной блока, что делает декодирование практически нереализуемым. Турбо-коды продемонстрировали, что итеративное декодирование позволяет достичь близких к теоретическому пределу результатов при умеренной сложности.
Название «турбо» происходит от сходства принципа работы с турбонаддувом в двигателях внутреннего сгорания: процесс декодирования включает обратную связь, где один декодер использует информацию от другого для улучшения результатов, что напоминает рециркуляцию выхлопных газов. В 1994 году Берру, Главиё и Титмажма получили патент на турбо-коды, а в 1998 году — премию IEEE Information Theory Society за выдающийся вклад в теорию информации.
Первоначально турбо-коды применялись в спутниковой связи, где требовалась высокая помехоустойчивость при низких отношениях сигнал/шум. В 2000-х годах они были стандартизированы для ряда систем, включая мобильную связь третьего поколения (3G) и четвёртого поколения (4G LTE). В 2010-х годах турбо-коды начали вытесняться более новыми кодами с низкой плотностью проверок на чётность (LDPC-коды) и полярными кодами, однако остаются широко используемыми в существующих инфраструктурах.
Принцип работы
Кодирование
Турбо-код строится на основе двух или более рекурсивных систематических свёрточных кодеров (RSC), соединённых параллельно или последовательно. Входная последовательность битов длины \(k\) подаётся на первый кодер, а также на перемежитель (interleaver), который переставляет биты в псевдослучайном порядке. Перемежённая последовательность подаётся на второй кодер. Выходные сигналы обоих кодеров, а также исходная систематическая последовательность (некодированные биты) объединяются в общий кодовый блок длины \(n\). Таким образом, скорость кода \(R = k/n\) может быть настроена путём выкалывания (puncturing) — удаления части битов для увеличения скорости.
Декодирование
Декодирование турбо-кодов является итеративным и основано на алгоритме максимальной апостериорной вероятности (MAP, также известный как алгоритм Бала-Кока-Джелинека-Равива, BCJR). Два декодера, соответствующих каждому из кодеров, обмениваются внешней информацией (extrinsic information) — мягкими решениями о вероятности каждого бита, не зависящими от собственных наблюдений декодера. Процесс повторяется несколько итераций (обычно от 4 до 12), после чего принимается окончательное жёсткое решение (0 или 1).
Итеративное декодирование позволяет постепенно уточнять оценки битов, что приводит к значительному снижению вероятности ошибки по сравнению с однократным декодированием. Однако оно требует высокой вычислительной сложности, особенно при большом числе итераций.
Классификация
Турбо-коды можно классифицировать по нескольким признакам:
- По структуре кодеров:
- Параллельные турбо-коды (PCCC) — наиболее распространённый тип, где два кодера работают параллельно над одной последовательностью.
- Последовательные турбо-коды (SCCC) — один кодер обрабатывает выход другого, что может улучшить характеристики при очень низких отношениях сигнал/шум.
- Гибридные схемы — комбинация параллельных и последовательных структур.
- По типу компонентных кодов:
- Свёрточные турбо-коды — классический вариант на основе рекурсивных систематических свёрточных кодов.
- Блочные турбо-коды — используют блочные коды (например, коды Рида-Соломона или БЧХ) в качестве компонентных, часто с итеративным декодированием.
- Турбо-коды с низкой плотностью проверок на чётность (LDPC) — иногда рассматриваются как подкласс, хотя обычно выделяются отдельно.
- По длине блока:
- Короткие (до 1000 бит) — для приложений с низкой задержкой.
- Средние (1000–10000 бит) — для большинства систем связи.
- Длинные (более 10000 бит) — для спутниковой и глубокой космической связи.
Характеристики
Основные параметры турбо-кодов включают:
- Скорость кода \(R\) — отношение числа информационных битов к общему числу битов в кодовом блоке. Типичные значения: 1/2, 1/3, 2/3, 3/4.
- Длина блока \(k\) — число информационных битов. Влияет на задержку и сложность декодирования.
- Число итераций — определяет качество декодирования и вычислительные затраты.
- Перемежитель — тип и размер перемежителя (например, псевдослучайный, квадратичный, S-образный) влияет на эффективность кода.
- Пороговое отношение сигнал/шум — минимальное значение \(E_b/N_0\), при котором вероятность ошибки на бит (BER) падает ниже заданного уровня (например, \(10^{-5}\)).
Турбо-коды демонстрируют BER, близкую к пределу Шеннона, при умеренных длинах блоков (например, 1000–4000 бит). Для скорости 1/2 и длины блока 65536 бит они могут работать на расстоянии менее 0,5 дБ от предела Шеннона. Однако при коротких блоках (менее 100 бит) их эффективность снижается из-за эффекта «ошибки ошибки» (error floor) — резкого замедления снижения BER при высоких отношениях сигнал/шум.
Применение
Турбо-коды нашли широкое применение в различных областях:
- Мобильная связь:
- 3G (UMTS) — турбо-коды используются для каналов с высокой скоростью передачи данных (HSDPA, HSUPA).
- 4G LTE — турбо-коды применяются для каналов данных (PDSCH, PUSCH) с длиной блока до 6144 бит.
- 5G NR — в ранних версиях стандарта турбо-коды использовались для каналов управления, но впоследствии заменены полярными кодами и LDPC.
- Спутниковая связь:
- Стандарты DVB-S2 и DVB-S2X для цифрового телевидения и широкополосного доступа в интернет через спутник.
- Системы связи с глубоким космосом (NASA, ESA) — например, миссии «Кассини-Гюйгенс» и «Марсианский научный лаборатория».
- Беспроводные локальные сети:
- Стандарт IEEE 802.11n (Wi-Fi) — опционально использует турбо-коды для повышения помехоустойчивости.
- Хранение данных:
- Накопители на жёстких магнитных дисках (HDD) — турбо-коды применяются в каналах чтения для коррекции ошибок, вызванных шумами и межсимвольной интерференцией.
- Флэш-память NAND — в контроллерах SSD для повышения надёжности при многоуровневом хранении (MLC, TLC, QLC).
- Аудио- и видеокомпрессия:
- В системах цифрового радиовещания (DAB, DVB-T) для защиты сжатых потоков от ошибок.
Интересные факты
- Турбо-коды стали первым классом кодов, которые практически достигли предела Шеннона, что ранее считалось невозможным для практических систем.
- Идея итеративного декодирования, лежащая в основе турбо-кодов, была независимо предложена в 1970-х годах для декодирования кодов с низкой плотностью проверок на чётность (LDPC), но не получила широкого распространения до появления турбо-кодов.
- В 2004 году турбо-коды были включены в стандарт космической связи CCSDS (Consultative Committee for Space Data Systems) для телеметрии и командных каналов.
- Алгоритм BCJR, используемый в декодерах турбо-кодов, был разработан в 1974 году, но его практическое применение стало возможным только с ростом вычислительных мощностей в 1990-х годах.
Критика и ограничения
Несмотря на высокую эффективность, турбо-коды имеют ряд недостатков:
- Высокая вычислительная сложность — итеративное декодирование требует значительных вычислительных ресурсов, особенно при большом числе итераций и длинных блоках.
- Задержка — из-за итераций и использования перемежителя задержка декодирования может быть значительной, что ограничивает применение в системах реального времени (например, голосовая связь).
- Эффект «ошибки ошибки» — при высоких отношениях сигнал/шум вероятность ошибки может перестать снижаться, что требует использования дополнительных кодов (например, внешнего кода Рида-Соломона).
- Чувствительность к параметрам — эффективность сильно зависит от выбора перемежителя и числа итераций, что требует тщательной настройки.
В 2010-х годах турбо-коды начали вытесняться в новых стандартах (например, 5G NR, Wi-Fi 6) кодами LDPC и полярными кодами, которые обеспечивают более низкую сложность декодирования при аналогичной или лучшей помехоустойчивости, особенно для коротких блоков. Однако турбо-коды остаются важным этапом в развитии теории кодирования и продолжают использоваться в существующих системах.
Источники
- Berrou, C., Glavieux, A., & Thitimajshima, P. (1993). «Near Shannon limit error-correcting coding and decoding: Turbo-codes». IEEE International Conference on Communications.
- Viterbi, A. J. (1998). «An intuitive justification and a simplified implementation of the MAP decoder for convolutional codes». IEEE Journal on Selected Areas in Communications.
- Sklar, B. (2001). «Digital Communications: Fundamentals and Applications». Prentice Hall.
- 3GPP TS 36.212: «Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding».
- CCSDS 131.0-B-3: «TM Synchronization and Channel Coding».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →