Кодирование с использованием сверточных кодов


Сверточные коды

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

При использовании сверточных кодов поток данных разбивается на гораздо меньшие блоки длиной k символов (в частном случае k0 = 1), которые называются кадрами информационных символов.

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

Развитие теории и практики сверточных кодов заметно отличается от развития блочных кодов. При построении блочных кодов и методов их декодирования широко использовались алгебраические методы. В случае сверточных кодов это не так. Большинство хороших сверточных кодов было найдено путем просмотра с помощью ЭВМ большого числа кодов и последующего выбора кодов с хорошими свойствами. Декодирование сверточных кодов производится методами, близкими к методам максимального правдоподобия, причем в этом случае они реализуются достаточно просто.

Основными характеристиками сверточных кодов являются величины:

- k0 – размер кадра информационных символов;

- n0 – размер кадра кодовых символов;

- m – длина памяти кода;

- k = (m+1) × k0 - информационная длина слова;

- n = (m+1) × n0 - кодовая длина блока.

Кодовая длина блока - это длина кодовой последовательности, на которой сохраняется влияние одного кадра информационных символов.

Наконец, сверточный код имеет еще один важный параметр - скорость R = k/n, которая характеризует степень избыточности кода, вводимой для обеспечения исправляющих свойств кода.

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

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

Примеры схем кодеров для систематического (8,4) и несистематического сверточных (6,3)-кодов приведены на рис. 4.1 и 4.2.

Рис. 4.1 Рис. 4.2

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

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

Импульсная переходная характеристика фильтра (ИПХ) (а кодер сверточного кода, по сути дела, является фильтром) есть реакция на единичное воздействие вида = (10000..... Для кодеров, изображенных на рис. 4.1 и 4.2, соответствующие импульсные характеристики будут иметь вид:

Hа = (11.00.00.01.00.00… , (4.1)

Hб = (11.10.11.00.00.00… . (4.2)

Еще одна форма задания сверточных кодов – это использование порождающих полиномов, однозначно связанных с ИПХ эквивалентного фильтра:

Hа(x) = 1 + x + x7, (4.3)

Hб(x) = 1 + x + x2 + x4 + x5. (4.4)

При этом кодовая последовательность U на выходе сверточного кодера получается в результате свертки входной информационной последовательности m с импульсной переходной характеристикой H.

Рассмотрим примеры кодирования последовательностей с использованием импульсной характеристики эквивалентного фильтра.

Пусть m = (110 ... , тогда для кодера с ИПХH = (11.00.00.01.00.00....

U = 11.00.00.01.00.00…
11.00.00.01.00…

U = 11.11.00.01.01.00.00… ,

или m = (1011000…

U = 11.00.00.01.00.00.00…
11.00.00.01.00…
11.00.00.01…

U = 11.00.11.10.00.01.01.00… .

Иногда удобнее рассматривать полный порождающий полином сверточного кода G(x) как совокупность нескольких многочленов меньших степеней, соответствующих ячейкам выходного регистра кодера. Так, для кодера рис. 4.2 соответствующие частичные порождающие полиномы будут следующими:

G1(x) = 1 + x + x2, (4.5)

G2(x) = 1 + x2. (4.6)

Пусть, например, кодируется последовательность m = (1010… . Соответствующий информационный полином запишется как m(x) = 1 + x2.

Тогда на входе первой ячейки выходного регистра при кодировании будет последовательность U 1 = (11011000… , которой соответствует полином U1(x) = 1 + x + x3 + x4, а на входе второй ячейки — U 2 = (10001000… и, соответственно, полином U2 (x) = 1 + x4.

Легко заметить, что при этом справедливы равенства

U1(x) = m(x) × G1(x), (4.7)

U2(x) = m(x)× G2(x). (4.8)

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

Таблица 4.1

G1 G2

В качестве примера кодера с k0 ¹ 1 можно привести кодер сверточного (12,9) кода Вайнера-Эша с параметрами: k0 = 3, n0 = 4, k = 9, n = 12, R = ¾ (рис. 2.3).

Рис. 4.3

Пусть, например, m = (100.000.000.... Тогда кодовое слово U = =(1001.0001.0001.0000.... ). Видно, что это – систематический код, в котором к трем информационным символам добавляется один проверочный, зависящий от значений информационных символов не только текущего кадра, но и двух предшествующих кадров. При этом влияние одного кадра информационных символов распространяется на 12 символов кодовой последовательности, то есть кодовая длина блока для этого кода n = 12.