Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПДС с поиском.doc
Скачиваний:
294
Добавлен:
15.03.2015
Размер:
17.88 Mб
Скачать

8.2. Представление сверточного кодера

Чтобы иметь возможность описывать сверточный код, необходимо определить коди­рующую функцию G(m) так, чтобы по данной входной последовательности m можно было быстро вычислить выходную последовательность U. Для реализации сверточного кодирования используется несколько методов; наиболее распространенными из них являются графическая связь, векторы, многочлены связи, диаграмма состояния, древовид­ная и решетчатая диаграммы. Все они рассматриваются ниже.

8.2.1. Представление связи

При обсуждении сверточных кодеров в качестве модели будем использовать свер­точный кодер, показанный на рис. 8.3. На этом рисунке изображен сверточный ко­дер с длиной кодового ограничения К = 3. В нем имеется п = 2 сумматора по модулю 2; следовательно, степень кодирования кода k/n равна 1/2. При каждом по­ступлении бит помещается в крайний левый разряд, а биты регистра смещаются на одну позицию вправо. Затем коммутатор на выходе дискретизирует выходы всех сумматоров по модулю 2 (т.е. сначала верхний сумматор, затем нижний), в резуль­тате чего формируются пары кодовых символов, образующих кодовое слово, свя­занное с только что поступившим битом. Это выполняется для каждого входного бита. Выбор связи между сумматорами и разрядами регистра влияет на характери­стики кода. Всякое изменение в выборе связей приводит в

результате к различным кодам. Связь, конечно же, выбирается и изменяется не произвольным образом. За­дача выбора связей, дающая оптимальные дистанционные свойства, сложна и в об­щем случае не решается; однако для всех значений длины кодового ограничения, меньших 20, с помощью компьютеров были найдены хорошие коды .

В отличие от блочных кодов, имеющих фиксированную длину слова п, в сверточ­ных кодах нет определенного размера блока. Однако с помощью периодического от­брасывания сверточным кодам часто принудительно придают блочную структуру. Это требует некоторого количества нулевых разрядов, присоединенных к концу входной последовательности данных, которые служат для очистки (или промывки) регистра сдвига от бит данных. Поскольку добавленные нули не несут дополнительной информации, эффективная степень кодирования будет ниже k/n. Чтобы степень кодирования оставалась близкой к k/n, период отбрасывания чаще всего делают настолько боль­шим, насколько это возможно.

Один из способов реализации кодера заключается в определении п векторов связи, по одному на каждый из п сумматоров по модулю 2. Каждый вектор имеет размерность К и описывает связь регистра сдвига кодера с соответствующим сумматором по модулю 2. Единица на i-й позиции вектора указывает на то, что соответствующий разряд в регистре сдвига связан с сумматором по модулю 2, а нуль в данной позиции указывает, что связи между разрядом и сумматором по модулю 2 не существует. Для кодера на рис. 8.3 можно записать вектор связи g1 для верхних связей, а g2 — для нижних: g1=1 1 1, g2=1 0 1.

8.2.1.1. Реакция кодера на импульсное возмущение

Мы можем описать кодер через его импульсную характеристику, т.е. в виде отклика кодера на единичный проходящий бит. Рассмотрим содержимое регистра (рис. 8.3) при прохождении через него двоичной единицы.

Содержимое регистра кодера и формирование выходной последовательности при входной последовательности 1 0 0 … представляется следующей таблицей:

Предположим теперь, что вектор сообщения m = 1 0 1 закодирован с использовани­ем сверточного кода и кодера, показанного на рис. 8.3. Введены три бита сообще­ния, по одному в момент времени t1 ,t2 и t3, как показано на рис. 8.4. Затем для очистки регистра в моменты времени t4 и t5 введены - 1) = 2 нуля, что в результа­те приводит к смещению конечного участка на всю длину регистра. Последователь­ность на выходе выглядит следующим образом: 1 1 1 0 0 0 1 0 1 1, где

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

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

Последовательность на выходе при единице на входе называется откликом кодера на импульсное возмущение, или его импульсной характеристикой. Для входной последо­вательностиm = 1 0 1 данные на выходе могут быть найдены путем суперпозиции или линейного сложения смещенных во времени входных "импульсов".

Обратим внимание на то, что эти данные на выходе такие же, как и на рис. 8.4, что указывает на линейность сверточных кодов — точно так же как и в блочных кодах. Название сверточный кодер (convolutional encoder) возникло именно вследст­вие этого свойства генерации данных на выходе кодера с помощью линейного сложения (или свертки) смещенных во времени импульсов входной последовательности m с импульс­ной характеристикой кодера. Сверточные коды и сверточные кодеры описываются с помощью порождающей мат­рицы сверточного кода бесконечного порядка:

G = ,

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

u = m G.

Данное выражение является матричной формой процедуры дискретной свертки.