Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В связи , сверточный код представляет собой тип коррекции ошибок коды , который генерирует символы четности с помощью скользящего применения булевой полиномиальной функции к потоку данных. Скользящее приложение представляет собой «свертку» кодировщика над данными, что дает начало термину «сверточное кодирование». Скользящий характер сверточных кодов облегчает решетчатое декодирование с использованием неизменяемой во времени решетчатой ​​диаграммы. Не зависящее от времени решетчатое декодирование позволяет сверточным кодам декодироваться с мягким решением максимального правдоподобия с разумной сложностью.

Возможность выполнять экономичное декодирование с мягким решением с максимальным правдоподобием является одним из основных преимуществ сверточных кодов. Это контрастирует с классическими блочными кодами, которые обычно представлены изменяющейся во времени решеткой и поэтому обычно декодируются с жестким решением. Сверточные коды часто характеризуются базовой кодовой скоростью и глубиной (или памятью) кодера . Базовая кодовая скорость обычно задается как , где - скорость исходных входных данных, а - скорость передачи данных закодированного потока выходного канала. меньше, чем потому, что канальное кодирование добавляет избыточность во входные биты. Память часто называют «ограничивающей длиной» , где вывод является функцией текущего ввода, а также предыдущего.входы. Глубина также может быть задана как количество элементов памяти в полиноме или максимально возможное количество состояний кодировщика (обычно:) .

Сверточные коды часто называют непрерывными. Однако можно также сказать, что сверточные коды имеют произвольную длину блока, а не являются непрерывными, поскольку в большинстве случаев сверточное кодирование в реальном мире выполняется на блоках данных. Сверточно-кодированные блочные коды обычно используют завершение. Произвольную длину блока сверточных кодов можно также противопоставить классическим блочным кодам , которые обычно имеют фиксированную длину блока, которая определяется алгебраическими свойствами.

Кодовая скорость сверточного кода обычно изменяется посредством выкалывания символов . Например, сверточный код с «материнской» кодовой скоростью может быть проколот до более высокой скорости, например, просто не передавая часть кодовых символов. Производительность сверточного кода с проколами обычно хорошо масштабируется в зависимости от передаваемой четности. Возможность выполнять экономичное декодирование с мягким решением для сверточных кодов, а также гибкость длины блока и кодовой скорости сверточных кодов делают их очень популярными для цифровой связи.

История [ править ]

Сверточные коды были введены в 1955 году Питером Элиасом . Считалось, что сверточные коды можно декодировать с произвольным качеством за счет вычислений и задержки. В 1967 году Эндрю Витерби определил, что сверточные коды могут быть декодированы с максимальной вероятностью с разумной сложностью с использованием инвариантных во времени решетчатых декодеров - алгоритма Витерби . Позже были разработаны другие алгоритмы декодирования на основе решеток , включая алгоритм декодирования BCJR .

Рекурсивные систематические сверточные коды были изобретены Клодом Берроу примерно в 1991 году. Эти коды оказались особенно полезными для итеративной обработки, включая обработку конкатенированных кодов, таких как турбокоды . [1]

Используя "сверточную" терминологию, классический сверточный код можно рассматривать как фильтр с конечной импульсной характеристикой (FIR), а рекурсивный сверточный код можно рассматривать как фильтр с бесконечной импульсной характеристикой (IIR).

Где используются сверточные коды [ править ]

Этапы кодирования каналов в GSM. [2] Блочный кодировщик и проверка четности - часть обнаружения ошибок. Сверточный кодер и декодер Витерби - часть исправления ошибок. Interleaving и Deinterleaving - разделение кодовых слов увеличивается во временной области и позволяет избежать скачкообразных искажений.

Сверточные коды широко используются для обеспечения надежной передачи данных во многих приложениях, таких как цифровое видео , радио, мобильная связь (например, в сетях GSM, GPRS, EDGE и 3G (до 3GPP Release 7) [3] [4] ) и в спутниковой. коммуникации . [5] Эти коды часто реализуются в сочетании с кодом жесткого решения, особенно кодом Рида – Соломона . До появления турбокодов такие конструкции были наиболее эффективными, приближаясь к пределу Шеннона .

Сверточное кодирование [ править ]

Для сверточного кодирования данных начните с k регистров памяти , каждый из которых содержит один входной бит. Если не указано иное, все регистры памяти начинаются с значением 0. Кодер имеет п по модулю 2 сумматоров ( по модулю 2 сумматор может быть реализован с помощью одного булева XOR ворот , где логика: 0 + 0 = 0 , 0+ 1 = 1 , 1 + 0 = 1 , 1 + 1 = 0 ) и n образующих полиномов - по одному на каждый сумматор (см. Рисунок ниже). Входной бит m 1подается в крайний левый регистр. Используя полиномы генератора и существующие значения в оставшихся регистрах, кодер выводит n символов. Эти символы могут быть переданы или проколоты в зависимости от желаемой кодовой скорости. Теперь сдвиньте все значения регистров вправо ( m 1 переместится в m 0 , m 0 переместится в m -1 ) и дождитесь следующего входного бита. Если нет оставшихся входных битов, кодировщик продолжает сдвиг, пока все регистры не вернутся в нулевое состояние (завершение битов сброса).

Изображение 1. Нерекурсивный, несистематический сверточный кодер со скоростью 1/3 с длиной ограничения 3

На рисунке ниже скорость 1 / 3 ( м / п ) кодер с длиной кодового ограничения ( K ) из 3. порождающих полиномов являются G 1 = (1,1,1), G 2 = (0,1,1) , и G 3 = (1,0,1) . Следовательно, выходные биты вычисляются (по модулю 2) следующим образом:

п 1 = м 1 + м 0 + м -1
п 2 = м 0 + м -1
п 3 = м 1 + м -1 .

Сверточные коды могут быть систематическими и несистематическими:

  • систематически повторяет структуру сообщения перед кодированием
  • несистематические изменения исходной структуры

Несистематические сверточные коды более популярны из-за лучшей помехоустойчивости. Это относится к свободному расстоянию сверточного кода. [6]

  • Краткая иллюстрация несистематического сверточного кода.

  • Краткая иллюстрация систематического сверточного кода.

Рекурсивные и нерекурсивные коды [ править ]

Кодировщик на картинке выше - нерекурсивный кодировщик. Вот пример рекурсивного, и поэтому он допускает структуру обратной связи:

Изображение 2. Системный рекурсивный сверточный кодер с 8 состояниями скорости 1/2. Используется как составной код в 3GPP 25.212 Turbo Code.

Пример кодировщика является систематическим, потому что входные данные также используются в выходных символах (Выход 2). Коды с выходными символами, не включающими входные данные, называются несистематическими.

Рекурсивные коды обычно являются систематическими, и, наоборот, нерекурсивные коды обычно несистематичны. Это не строгое требование, а обычная практика.

Пример кодировщика в Img. 2. кодер с 8 состояниями, потому что 3 регистра будут создавать 8 возможных состояний кодера (2 3 ). Соответствующая решетка декодера обычно также использует 8 состояний.

Рекурсивные систематические сверточные коды (RSC) стали более популярными из-за их использования в турбо-кодах. Рекурсивные систематические коды также называются псевдосистематическими кодами.

Другие коды RSC и примеры приложений включают:

Изображение 3. Рекурсивный систематический сверточный (RSC) код с двумя состояниями. Также называется «аккумулятор».

Полезно для реализации кода LDPC и в качестве внутреннего составляющего кода для последовательных конкатенированных сверточных кодов (SCCC).

Изображение 4. Рекурсивный систематический сверточный код с четырьмя состояниями.

Полезно для SCCC и многомерных турбокодов.

Изображение 5. Рекурсивный систематический сверточный код (RSC) с шестнадцатью состояниями.

Полезен в качестве составляющего кода в турбокодах с низким коэффициентом ошибок для таких приложений, как спутниковые каналы. Также подходит как внешний код SCCC.

Импульсная характеристика, передаточная функция и длина ограничения [ править ]

Сверточный кодировщик называется так, потому что он выполняет свертку входного потока с импульсными характеристиками кодировщика :

где x - входная последовательность, y j - последовательность из выхода j , h j - импульсная характеристика для выхода j и обозначает свертку.

Сверточный кодировщик - это дискретная линейная инвариантная во времени система . Каждый выход энкодера может быть описан его собственной передаточной функцией , которая тесно связана с полиномом генератора. Импульсный отклик связан с передаточной функцией через Z-преобразование .

Передаточные функции для первого (нерекурсивного) кодировщика:

Передаточными функциями для второго (рекурсивного) кодировщика являются:

Определить m по

где для любой рациональной функции ,

.

Тогда т является максимальным из полиномиальных степеней из , а ограничение длина определяются как . Например, в первом примере длина ограничения равна 3, а во втором - 4.

Диаграмма решетки [ править ]

Сверточный кодировщик - это конечный автомат . Кодер с n двоичными ячейками будет иметь 2 n состояний.

Представьте, что кодировщик (показанный на Рисунке 1 выше) имеет «1» в левой ячейке памяти ( m 0 ) и «0» в правой ( m -1 ). ( m 1 на самом деле не является ячейкой памяти, поскольку представляет текущее значение). Обозначим такое состояние цифрой «10». В соответствии с входным битом кодер на следующем повороте может преобразовать либо в состояние «01», либо в состояние «11». Можно видеть, что не все переходы возможны для (например, декодер не может преобразовать из состояния «10» в «00» или даже остаться в состоянии «10»).

Все возможные переходы можно показать, как показано ниже:

Изображение 6. Решетчатая диаграмма кодировщика на рис.1. Путь через решетку показан красной линией. Сплошные линии указывают переходы, когда вводится «0», а пунктирные линии - когда вводится «1».

Фактическая закодированная последовательность может быть представлена ​​как путь на этом графике. Один допустимый путь показан красным в качестве примера.

Эта диаграмма дает нам представление о декодировании : если полученная последовательность не соответствует этому графику, значит, она была получена с ошибками, и мы должны выбрать ближайшую правильную (подходящую к графику) последовательность. Настоящие алгоритмы декодирования используют эту идею.

Свободное расстояние и распределение ошибок [ править ]

Теоретические кривые частоты ошибок по битам кодированного QPSK (рекурсивного и нерекурсивного, мягкое решение), канал аддитивного белого гауссова шума. Кривые выделяются небольшими размерами из-за примерно одинаковых свободных расстояний и веса.

Свободное расстояние [7] ( д ) есть минимальное расстояние Хемминг между различными закодированными последовательностями. Коррекции способности ( т ) сверточного кода является число ошибок , которые могут быть исправлены с помощью кода. Его можно рассчитать как

Поскольку сверточный код не использует блоки, а обрабатывает непрерывный поток битов, значение t применяется к количеству ошибок, расположенных относительно близко друг к другу. То есть несколько групп t ошибок обычно могут быть исправлены, когда они относительно далеко друг от друга.

Свободное расстояние можно интерпретировать как минимальную длину ошибочного «пакета» на выходе сверточного декодера. Тот факт, что ошибки появляются в виде «пакетов», следует учитывать при разработке конкатенированного кода с внутренним сверточным кодом. Популярным решением этой проблемы является чередование данных перед сверточным кодированием, чтобы внешний блочный код (обычно код Рида – Соломона ) мог исправить большую часть ошибок.

Декодирование сверточных кодов [ править ]

Кривые коэффициента битовых ошибок для сверточных кодов с различными вариантами цифровой модуляции ( QPSK, 8-PSK , 16-QAM, 64-QAM ) и алгоритмами LLR [8] [9] . (Точное [10] и Примерное [11] ) над каналом аддитивного белого гауссовского шума.

Существует несколько алгоритмов декодирования сверточных кодов. При относительно малых значений к , то алгоритм Витерби повсеместно используются , поскольку она обеспечивает максимальное правдоподобие производительность и высокий параллелизуемая. Таким образом, декодеры Витерби легко реализовать в аппаратном обеспечении СБИС и в программном обеспечении ЦП с наборами инструкций SIMD .

Коды с большей длиной ограничения более практично декодируются с помощью любого из нескольких алгоритмов последовательного декодирования , из которых наиболее известен алгоритм Фано . В отличие от декодирования Витерби, последовательное декодирование не является максимальным правдоподобием, но его сложность лишь незначительно увеличивается с увеличением длины ограничения, что позволяет использовать строгие коды с большой длиной ограничения. Такие коды использовались в программе Pioneer в начале 1970-х годов для Юпитера и Сатурна, но уступили место более коротким кодам, декодированным по Витерби, обычно объединенным с большими кодами исправления ошибок Рида-Соломона, которые сужают общую кривую коэффициента ошибок по битам и дают чрезвычайно низкий уровень остаточных необнаруженных ошибок.

И алгоритм Витерби, и алгоритм последовательного декодирования возвращают трудные решения: биты, которые образуют наиболее вероятное кодовое слово. Приблизительную меру достоверности можно добавить к каждому биту с помощью алгоритма Витерби с мягким выходом . Максимальные апостериорные мягкие решения (MAP) для каждого бита могут быть получены с помощью алгоритма BCJR .

Популярные сверточные коды [ править ]

Регистр сдвига для полинома сверточного кода (7, [171, 133]). Филиалы: , . Все математические операции должны выполняться по модулю 2.
Теоретические кривые коэффициента битовых ошибок кодированного QPSK (мягкое решение), канал аддитивного белого гауссова шума. Более длинные ограничения дают более мощные коды, но сложность алгоритма Витерби возрастает экспоненциально с увеличением длины ограничений, ограничивая использование этих более мощных кодов миссиями в дальний космос, где дополнительная производительность легко стоит повышенной сложности декодера.

Фактически в промышленности используются заранее заданные структуры сверточных кодов, полученные в ходе научных исследований. Это связано с возможностью выбора катастрофических сверточных кодов (вызывает большее количество ошибок).

Особенно популярный сверточный код, декодированный по Витерби, используемый, по крайней мере, с тех пор, как программа Voyager имеет длину ограничения 7 и скорость r 1/2. [12]

Mars Pathfinder , Mars Exploration Rover и зонд Cassini на Сатурн используют 15 баллов и скорость 1/6; этот код работает примерно на 2 дБ лучше, чем более простой код, при стоимости декодирования в 256 раз (по сравнению с кодами миссии Voyager).

Сверточный код с длиной ограничения 2 и скоростью 1/2 используется в GSM как метод исправления ошибок. [13]

Проколотые сверточные коды [ править ]

Сверточные коды с кодовыми скоростями 1/2 и 3/4 (и длина ограничения 7, мягкое решение, 4-QAM / QPSK / OQPSK). [14]

Сверточный код с любой скоростью кода может быть разработан на основе полиномиального выбора; [15] однако на практике часто используется процедура исключения для достижения требуемой кодовой скорости. Прокалывание - это метод, используемый для создания кода скорости m / n из «базового» кода с низкой скоростью (например, 1 / n ). Это достигается удалением некоторых битов на выходе кодировщика. Биты удаляются согласно матрице выкалывания . Наиболее часто используются следующие матрицы прокалывания:

Например, если мы хотим создать код со скоростью 2/3, используя соответствующую матрицу из приведенной выше таблицы, мы должны взять базовый вывод кодера и передать каждый первый бит из первой ветви и каждый бит из второй. Конкретный порядок передачи определяется соответствующим стандартом связи.

Проколотые сверточные коды широко используются в спутниковой связи , например, в системах ИНТЕЛСАТ и цифрового видеовещания .

Проколотые сверточные коды также называют «перфорированными».

Турбокоды: замена сверточных кодов [ править ]

Турбокод с кодами компонентов 13, 15. [16] Турбокоды получили свое название, потому что декодер использует обратную связь, как турбодвигатель. Перестановка означает то же, что и перемежение. C1 и C2 - рекурсивные сверточные коды. Рекурсивные и нерекурсивные сверточные коды не так сильно различаются по производительности BER, однако рекурсивный тип реализован в сверточных кодах Turbo из-за лучших свойств чередования. [17]

Простые сверточные коды, декодированные по Витерби, теперь уступают место турбокодам , новому классу повторных коротких сверточных кодов, которые близко подходят к теоретическим ограничениям, налагаемым теоремой Шеннона, с гораздо меньшей сложностью декодирования, чем алгоритм Витерби для длинных сверточных кодов, которые потребуются. за такую ​​же производительность. Конкатенация с внешним алгебраическим кодом (например, кодом Рида – Соломона ) решает проблему минимальных уровней ошибок, присущих конструкциям турбокодов.

См. Также [ править ]

  • Квантовый сверточный код

Ссылки [ править ]

  •  Эта статья включает  материалы, являющиеся общественным достоянием, из документа Управления общих служб : «Федеральный стандарт 1037C» .
  1. Бенедетто, Серджио и Гвидо Монторси. « Роль рекурсивных сверточных кодов в турбокодах ». Electronics Letters 31.11 (1995): 858-859.
  2. ^ Eberspächer J. et al. GSM-архитектура, протоколы и сервисы. - John Wiley & Sons, 2008. - стр.97.
  3. ^ Проект партнерства третьего поколения (сентябрь 2012 г.). «3GGP TS45.001: Группа технических спецификаций Сеть радиодоступа GSM / EDGE; Физический уровень на радиотракте; Общее описание». Проверено 20 июля 2013.
  4. ^ Халонен, Тимо, Хавьер Ромеро и Хуан Мелеро, ред. Характеристики GSM, GPRS и EDGE: эволюция в сторону 3G / UMTS. John Wiley & Sons, 2004. - с. 430
  5. ^ Бутман, С. А., Л. Дж. Дойч и Р. Л. Миллер. «Производительность составных кодов для миссий в дальний космос». Отчет о ходе работы по телекоммуникациям и сбору данных 42-63, март – апрель 1981 (1981): 33-39.
  6. ^ Мун, Тодд К. "Кодирование с исправлением ошибок". Математические методы и алгоритмы. Джон Уайли и сын (2005). - п. 508
  7. ^ Мун, Тодд К. " Кодирование с исправлением ошибок ". Математические методы и алгоритмы. Джон Вили и сын (2005). - с.508.
  8. ^ LLR против демодуляции жесткого решения (MathWorks)
  9. ^ Оценка BER для жесткого и мягкого решения декодирования Витерби (MathWorks)
  10. ^ Цифровая модуляция: точный алгоритм LLR (MathWorks)
  11. ^ Цифровая модуляция: приблизительный алгоритм LLR (MathWorks)
  12. ^ Бутман, С. А., Л. Дж. Дойч и Р. Л. Миллер. «Производительность составных кодов для миссий в дальний космос». Отчет о ходе работы по телекоммуникациям и сбору данных 42-63, март – апрель 1981 (1981): 33-39.
  13. ^ Глобальная система мобильной связи (GSM)
  14. ^ Проколотое сверточное кодирование (MathWorks)
  15. ^ https://www.mathworks.com/help/comm/ref/poly2trellis.html
  16. ^ Турбо-код
  17. Бенедетто, Серджио и Гвидо Монторси. « Роль рекурсивных сверточных кодов в турбокодах ». Electronics Letters 31.11 (1995): 858-859.

Внешние ссылки [ править ]

  • Он-лайн учебник: Теория информации, логический вывод и алгоритмы обучения , написанный Дэвидом Дж. К. Маккеем , обсуждает сверточные коды в главе 48.
  • Страница кодов исправления ошибок (ECC)
  • Объяснения Matlab
  • Основы сверточных декодеров для улучшения цифровой связи
  • Сверточные коды (MIT)
  • Теория информации и кодирование (TU Ilmenau) обсуждает сверточные коды на странице 48.

Дальнейшее чтение [ править ]

Публикации [ править ]

  • Фрэнсис, Майкл. «Декодирование блока Витерби - завершение решетки и оконечный бит». Xilinx XAPP551 v2. 0, DD (2005): 1-21.
  • Чен, Цинчунь, Вай Хо Моу и Пинчжи Фань. «Некоторые новые результаты по рекурсивным сверточным кодам и их приложениям». Семинар по теории информации, 2006. ITW'06 Chengdu. IEEE. IEEE, 2006 г.
  • Фибиг, Калифорния, и Патрик Робертсон. «Мягкое решение и декодирование со стиранием в системах с быстрой скачкообразной перестройкой частоты со сверточными кодами, турбокодами и кодами Рида-Соломона». IEEE Transactions on Communications 47.11 (1999): 1646-1654.
  • Бхаскар, Видхьячаран и Лори Л. Джойнер. «Характеристики проколотых сверточных кодов при асинхронной связи CDMA в условиях идеального отслеживания фазы». Компьютеры и электротехника 30,8 (2004): 573-592.
  • Модестино Дж. И Шоу Муи. «Производительность сверточного кода в канале с замираниями Rician». IEEE Transactions on Communications 24.6 (1976): 592-606.
  • Чен, Ю-Лонг и Че-Хо Вэй. «Оценка производительности сверточных кодов с MPSK на каналах с замираниями Rician». IEE Proceedings F-Communications, Radar and Signal Processing. Vol. 134. №2. ИЭПП, 1987.