Ту́рбо-код — параллельный каскадный блоковый систематический код, способный исправлять ошибки, возникающие при передаче цифровой информации по каналу связи с шумами.
Турбо-код состоит из каскада параллельно соединённых систематических кодов. Эти составляющие называются компонентными кодами. В качестве компонентных кодов могут использоваться свёрточные кодыкоды ХеммингаРида — СоломонаБоуза — Чоудхури — Хоквингема и другие. В зависимости от выбора компонентного кода турбо-коды делятся на свёрточные турбо-коды (англ. Turbo Convolutional Codes, ТСС) и блоковые коды-произведения (англ. Turbo Product Codes, TPC). Согласно последним исследованиям и разработкам, наилучшие практические результаты достигаются при использовании турбокодов на основе кодов Хэмминга или кодов Боуза-Чоудх-ури-Хоквингема.
Энергетический выигрыш, получаемый при использовании турбокодирования в канале с белым гауссовским шумом, составляет от 2 до 4 дБ по сравнению с другими распространенными методами (например, по сравнению с каскадным кодом)
Очевидно, что при энергетическом выигрыше в 3 дБ мощность передатчика может быть уменьшена в 2 раза при прочих равных условиях, либо допустимый коэффициент шума приемника может быть увеличен на 3 дБ
Энергетический выигрыш в 3 дБ позволяет увеличить дальность связи на 40%, либо сократить размеры приемной или передающей антенны на 30%, поскольку коэффициент усиления и эффективная площадь антенны связаны следующим соотношением
Турбо-коды были разработаны в 1993 году и являются классом высокоэффективных помехоустойчивых кодов с коррекцией ошибок, используются в электротехнике и цифровой связи, а также нашли своё применение в спутниковой связи и в других областях, в которых проектировщики ищут способы достижения максимальной скорости передачи данных по каналу связи с шумами в ограниченной полосе частот.
Турбо-коды были предложены К. Берроу (C. Berrou), А. Главьё (A. Glavieux) и П. Ситимашимой (P. Thitimajshima) (англ. Ecole Nationale Superieure des Telecommunications de Bretagne (ENST), Высшая национальная школа телекоммуникаций Бретани (Франция)) в 1993 году в статье «Кодирование и декодирование с исправлением ошибок вблизи предела Шеннона: турбо-коды» (англ. «Near Shannon Limit Error-correcting Coding and Decoding: Turbo-code»
Отмечу преимущества и недостатки  турбо-кодов.  Основное их замечательное свойство состоит в том, что среди всех практически используемых современных методов коррекции ошибок турбо-коды наиболее близко подходят к границе Шеннона теоретическому пределу максимальной пропускной способности зашумленного канала (так же достаточно близко к ней подходят и коды с низкой плотностью проверок на чётность, но их в данной теме рассматривать я не буду).  Другие их преимущества состоят в том, что турбо-коды позволяют увеличить скорость передачи информации, не требуя увеличения мощности передатчика, или они могут быть использованы для уменьшения требуемой мощности при передаче с заданной скоростью. Важным преимуществом турбо-кодов является независимость сложности декодирования от длины информационного блока, что позволяет снизить вероятность ошибки декодирования путём увеличения его длины.
Рис.1.Теоритическая взаимосвязь по Шеннону максимальной пропускной способности канала с ОСШ #
Из недостатков основным является относительно высокая сложность декодирования и большая задержка, которые делают их неудобными для некоторых применений. Но, например, для использования в спутниковых каналах этот недостаток не является определяющим, так как длина канала связи сама по себе вносит задержку, вызванную конечностью скорости света.Ещё один важный недостаток турбо-кодов — сравнительно небольшое кодовое расстояние (то есть минимальное расстояние между двумя кодовыми словами в смысле выбранной метрики). Это приводит к тому, что, хотя при большой входной вероятности ошибки (то есть в плохом канале) эффективность турбо-кода высока, при малой входной вероятности ошибки эффективность турбо-кода крайне ограничена. Поэтому в хороших каналах для дальнейшего уменьшения вероятности ошибки применяют не турбо-коды, а LDPC-коды.
Главный принцип турбо-кодирования – использование двух параллельно работающих элементарных кодеров. При этом информационный блок кодируется дважды, причем второй раз — после предварительного случайного перемежения (перемешивания, перетасовывания и т.п.).
При декодировании кодированный блок можно "расщепить" на два кодовых блока. Это обстоятельство позволяет использовать два декодера, каждый из которых производит декодирование своего кодового блока. Декодированная информация с выхода первого (второго) декодера используется в качестве априорной информации для второго (первого) декодера с целью уточнения результата декодирования. Подобную операцию можно производить многократно. В этом состоит принцип турбо- или итеративного декодирования. 
Турбокоды используют «мягкий вход»-«мягкий выход». Это означает что, чем информационнее последовательность для второго кодирующего устройства, тем более некоррелированный информационный обмен между декодерами. Это позволяет осуществить непрерывное усовершенствование способности кода к исправлению ошибок, процесс декодирования повторяется, чтобы передать больше информации от выхода одного декодера к входу следующего.

Кодер

Рис.2. Кодер #
Один из вариантов построения кодера приведен на рис.2, и, как видно, он представляет собой параллельное соединение двух рекурсивных систематических сверточных кодеров (Recursive Systematic Convolutional Codes — RSC). Оба кодера работают со скоростью равной 1/2. Это означает, что на информационный бит на входе RSC кодер откликается двумя битами на выходе. Значение бита на систематическом выходе верхнего кодера совпадает со значением входного бита, а на втором выходе формируется проверочный бит. На вход второго кодера с выхода перемежителя поступает бит, номер которого j зависит от номера i на входе перемежителя по псевдослучайному закону (i,j=1,..k). (Для этого блок из k информационных символов предварительно перед операцией кодирования должен быть записан в память.) У нижнего кодера систематический выход не используется, а на втором выходе формируется второй проверочный бит. С выхода всего турбо-кодера на модулятор сначала поступает бит с систематического выхода верхнего кодера, а затем два проверочных бита: сначала с верхнего кодера, затем – с нижнего. В результате кодовая скорость r всего турбо-кодера в целом оказывается равной 1/3. В любом случае благодаря использованию систематических сверточных кодеров в кодовом блоке можно явно выделить систематическую и проверочные части. Более того, можно считать, что в канал связи передаются два кодовых блока: первый кодовый блок, состоящий из информационной части и проверочной части верхнего кодера, и второй кодовый блок, состоящий из перемешанной информационной части и проверочной части нижнего кодера. Структура перемежителя сравнительно слабо влияет на его эффективность.

Декодер

Рис. 3. Турбо-декодер. Три итерации (Q=3) #
Рис. 4. Турбо-декодер. Одна итерация #
Из рассмотрения принципа кодирования ясно, что при декодировании блок можно "расщепить" на два кодовых блока, причем информационные части этих двух блоков в силу систематического кодирования и с учетом перемежения идентичны. Значит можно использовать два декодера, каждый из которых производит декодирование своего кодового блока. Информационные части каждого из двух кодовых блоков идентичны, декодированную информацию первого (второго) декодера c учетом перемежения можно использовать в качестве априорной информации для второго (первого) декодера с целью уточнения результата декодирования, тем самым как бы замыкая обратную связь между декодерами двух кодовых блоков. Подобную операцию можно производить многократно. В этом и состоит принцип турбо- или итеративного декодирования. Оптимальный декодер должен быть построен на основе критерия минимума вероятности ошибочного декодирования. Однако построение такого декодера из-за наличия перемежителя встречает трудности. Идея итеративного под-оптимального декодирования оказалась исключительно эффективна.
Вариант построения итеративного декодера представлен на рис. 3 и 4. Декодер для каждой итерации (рис. 4) представляет собой каскадное соединение двух элементарных декодеров: первого и второго. Каждый из этих декодеров выносит решение о переданном символе на основе критерия максимальной апостериорной вероятности (Maximum A Posteriori — MAP), чем обеспечивается минимум вероятности ошибочного декодирования каждым элементарным декодером. На первой итерации от демодулятора на вход первого декодера поступают оценки ("мягкие" решения) символов от демодулятора систематической и первой проверочной частей первого кодового блока. На выходе первого декодера формируется оценка ("мягкое" решение) информационного символа, которая затем используется в качестве априорной информации о нем для второго декодера. Этот декодер производит оценку символа с выхода перемежителя на основе проверочной части второго кодового слова. На второй и последующих итерациях (рис. 3) декодирования эта оценка обновляется и используется как априорная информация о переданном символе для первого декодера. Таким образом, на вход каждого из двух элементарных декодеров поступают "мягкие" решения, результат декодирования на выходе элементарного декодера – также "мягкое" решение. По этой причине такие схемы получили название декодеров с мягким входом и мягким выходом (Soft Input Soft Output — SISO)4. Окончательное принятие решения о переданном информационном символе выносится нижним декодером. Окончание процесса декодирования происходит либо после выполнения заданного количества Q итерационных циклов, либо после того, как величина поправки результата декодирования достигнет установленного порога.
Вычислительная сложность турбо-декодера в расчете на один информационный бит не зависит от длины информационного блока и сравнима со сложностью декодера Витерби для сверточного кода.

Перемежение в турбо-кодах

 В перемежителях по псевдослучайному закону происходит перемешивание поступающих бит. В турбо-кодах используется перемежение отдельных битов, которое подобно случайным перестановкам. Причём впоследствии, при операциях декодирования этот закон перемежения будет считаться известным. Полученные последовательности поступают на входы кодеров.
Задача перемежителя — преобразовать входную последовательность так, чтобы комбинации бит X0, соответствующие кодовым словам с низким весом (весом называется число ненулевых бит кодового слова) на выходе первого кодера, были преобразованы в комбинации, дающие кодовые слова с высоким весом на выходах остальных кодеров. Таким образом кодеры получают на выходе кодовые слова с различными весами. При кодировании формируются кодовые слова так, чтобы получалось максимально возможное среднее расстояние между ними (расстоянием между двумя кодовыми словами называется число бит, в которых они различаются). Из-за того что кодовые блоки формируются из почти независимых частей, на выходе турбо-кодера среднее расстояние между кодовыми словами больше, чем минимальное расстояние для каждого компонентного кодера, а следовательно растёт эффективность кодирования.
Перестановка для каждой указанной длины блока k задается определенным переупорядочиванием целых чисел 1,2...,k как предусмотрено следующим алгоритмом (ECSS-E-ST-50-01C). k = 8 * k0, где k0 = одному из следующих значений : 223, 223 * 2, 223 * 4, 223 * 5, в зависимости от необходимой глубины перемежителя
 Применение
Компаниями France Telecom и Telediffusion de France запатентован широкий класс ТК. Более того, ТК утверждены для помехоустойчивого кодирования несколькими cтандартами космической связи, а также мобильной связи третьего поколения.
Схема кодирования с кодерами на 16 состояний (K=5), максимальной длиной перемежения 16384 и кодовыми скоростями r=1/2,1/3,1/4,1/6 утверждена в 1999 г. американским комитетом CCSDS (Consultative Committee for Space Data Systems) в стандарте передачи телеметрической информации с космических аппаратов. В феврале 2000 г. консорциум DVB утвердил ТК в стандарте DVB-RCS для передачи информации по обратному спутниковому каналу (Return Channel for Satellite — RCS), т.е. в направлении от спутника к абоненту. ТК формируются на основе циклического рекурсивного систематического сверточного кодера (Circular Recursive Systematic Convolutional — CRSC). Использование стандарта совместно с вещательным стандартом DVB-S позволяет проектировать полноценную широкополосную систему спутникового интерактивного цифрового телевидения. Компанией TurboConcept в партнерстве с европейским спутниковым оператором Eutelsat разработан турбо-декодер TC1000 в соответствии со стандартом DVB-RCS. Использование ТК принято также в новом стандарте спутниковой системы связи Inmarsat.
В нарождающихся универсальных мобильных системах (IMT-2000) третьего поколения (3G), предназначенных для передачи и приема мультимедийной информации, ТК также получили широкое применение. В стандарте cdma2000 для высокоскоростного режима передачи информации (больше 14.4 кбит/с) как к абоненту (forward link), так и от абонента (reverse link) используется ТК с 8-ю состояниями (K=4) и кодовыми скоростями r=1/2,1/3,1/4 [15]. В стандарте UMTS для высокоскоростного режима передачи информации (больше 32 кбит/с) и приема с высоким качеством (BER около 10-6) используется ТК с 8-ю состояниями (K=4) и двумя кодовыми скоростями r=1/2 и 1/3 (рис. 5).
Рис. 5. Турбо-кодер, используемый в стандарте UMTS для мобильных систем третьего поколения #
 Список источников.
  1. http://www.ebiblioteka.lt/resursai/Uzsienio%20leidiniai/Voronezh/mat/2004-02/mat0402_02.pdf
  2. http://www.telemultimedia.ru/art.php?id=77
  3. http://www.wireless-e.ru/articles/technologies/2006_1_63.php
  4. http://ru.wikipedia.org/wiki/%D0%A2%D1%83%D1%80%D0%B1%D0%BE-%D0%BA%D0%BE%D0%B4
  5. http://jre.cplire.ru/iso/oct09/1/text.html
Эта статья является первой моей работой на данную тему. Надеюсь, сведения, представленные в ней помогут вам понять, что же такое турбо-коды и для чего они используются
З.Ы. С удовольствием учту пожелания по поводу статьи, вдруг кто-то захочет получить какую-то более конкретную информацию