6. СТРУКТУРА СВЕРТОЧНЫХ КОДОВ И АЛГОРИТМ ДЕКОДИРОВАНИЯ ВИТЕРБИ
Методы кодирования и декодирования, описанные в предыдущих главах, относились лишь к блоковым кодам. При таких кодах информационная последовательность разбивается на отдельные блоки, которые кодируются независимо друг от друга. Таким образом, закодированная последовательность становится последовательностью независимых кодовых слов одинаковой длины. При использовании сверточных кодов ситуация другая. Дополнительные символы для таких кодов зависят от ряда предшествующих информационных символов. Таким образом, передаваемая последовательность становится одним полубесконечным кодовым словом.
Развитие теории сверточных кодов заметно отличалось от развития теории блоковых кодов. При построении хороших классов блоковых кодов и разработке алгоритмов декодирования весьма существенным оказывается использование алгебраических методов. В случае сверточных кодов это не так. Многие хорошие сверточные коды были найдены путем просмотра (с помощью ЭВМ) большого числа кодов и последующего выбора кодов с хорошими свойствами. Кроме того, не существует методов декодирования сверточных кодов, аналогичных алгебраическим методам исправления кратных ошибок, изложенным в гл. 5. В настоящей главе
будет дан алгоритм максимального правдоподобия для декодирования сверточных кодов (алгоритм Витерби), а в гл. 7 будут приведены другие важные методы декодирования сверточных кодов.
Сверточное кодирование, применяемое вместе с декодированием Витерби, стало в настоящее время одним из наиболее широко используемых методов исправления ошибок. Причина этого состоит как в простоте реализации, так и в относительно большом достигаемом при этом выигрыше от кодирования. Этот сравнительно большой выигрыш объясняется в основном той легкостью, с которой алгоритм можно строить в расчете на использование демодулятора с мягким решением, увеличивающим выигрыш примерно на 2 дБ по сравнению с демодулятором с жестким решением. Сам алгоритм Витерби базируется, по существу, на последовательной, рекуррентной структуре сверточного кодера, и детальный анализ алгоритма во многом помогает понять, как свойства кода влияют на характеристики систем кодирования. В этой главе будет установлена важная связь между кодами и алгоритмами декодирования. Далее будут изложены некоторые методы оценки характеристик кодов, основанные на этой связи, которые в свою очередь помогут в решении важной задачи оптимального выбора требуемых аппаратных затрат при заданных характеристиках. Наконец, будут приведены некоторые кривые, иллюстрирующие ряд практически интересных ситуаций.