m = 101000
Время
u1
t1 |
|
|
1 |
0 |
0 |
|
u2
u1
t2 |
|
|
0 |
1 |
0 |
|
u2
u1
t3 |
|
|
1 |
0 |
1 |
|
u2
u1
t4 |
|
|
0 |
1 |
0 |
|
|||||
|
|
|
|
|
|
u2
u1
t5 |
|
|
0 |
0 |
1 |
|
u2
u1
t6 |
|
|
0 |
0 |
0 |
|
u2
Выход
u1 |
u2 |
1 |
1 |
1 0
00
10
1 1
0 0
Рис. 5.3 Процесс сверточного кодирования сообщения m кодером (2, 1, 3)
151
Предположим теперь, что вектор сообщения m = 1 0 1 0 0 0 закодирован с использованием сверточного кода и кодера, показанного на рис. 5.2, а. Введены шесть бит сообщения, по одному в моменты времени t1 ,
– t6 , как показано на рисунке 5.3. Затем для очистки регистра в моменты времени t4 и t5 введены (К - 1) = 2 нуля, что в результате приводит к смещению конечного участка на всю длину регистра. Последовательность на выходе выглядит следующим образом: 11 1 0 0 0 1 0 1 1 00, где крайний левый символ представляет первую передачу.
Полиномиальное представление.
Иногда связи кодера описываются с помощью полиномиального генератора, аналогичного используемому в главе 4 для описания реализации обратной связи регистра сдвига циклических кодов. Сверточный кодер можно представить в виде набора из п полиномиальных генераторов, по одному для каждого из п сумматоров по модулю 2. Каждый полином имеет порядок К - 1 или меньше и описывает связь кодирующего регистра сдвига с соответствующим сумматором по модулю 2, почти так же как и вектор связи. Коэффициенты возле каждого слагаемого полинома порядка (К - 1) равны либо 1, либо 0, в зависимости от того, имеется ли связь между регистром сдвига и сумматором по модулю 2. Для кодера на рис. 5.2, а можно записать полиномиальный генератор g1 (X) для верхних связей, a g2 (X) – для нижних
g ( X ) |
1 |
X X 2 |
|
1 |
|
|
|
g |
( X ) |
1 |
X 2 |
2 |
|
|
|
Здесь слагаемое самого нижнего порядка в полиноме соответствует входному разряду регистра. Выходная последовательность находится следующим образом
U(X ) m(X )g1(X ) чередуется с m(X )g2 (X ).
Прежде всего, выразим вектор сообщения m = 1 0 1 0 0 0 в виде полинома, т.е. т(Х) = 1 + X2. Тогда выходящий полином U(X), или выходящая последовательность U кодера (рис. 5.2. а) для входного сообщения m может быть найдена следующим образом
В этом примере мы начали обсуждение с того, что сверточный кодер можно трактовать как набор регистров сдвига циклического кода. Мы представили кодер в виде полиномиальных генераторов, с помощью которых описываются циклические коды. Однако мы пришли к той же последовательности на выходе, что и на рис. 5.3.
152
m( X )g ( X ) |
(1 |
X 2 )(1 |
X |
X 2 ) |
1 |
X X 3 |
X 4 |
|
|
||
1 |
|
|
|
|
|
|
|
|
|
|
|
m( X )g |
( X ) |
(1 |
X 2 )(1 |
X 2 ) 1 |
X 4 |
|
|
|
|
||
|
2 |
|
|
|
|
|
|
|
|
|
|
m( X )g ( X ) 1 |
X |
|
0 X 2 |
|
X 3 |
X 4 |
0X 5 |
||||
1 |
|
|
|
|
|
|
|
|
|
|
|
m( X )g |
( X ) 1 |
0 X |
|
0 X 2 |
|
0 X 3 |
X 4 |
0X 5 |
|||
|
2 |
|
|
|
|
|
|
|
|
|
|
U ( X ) |
|
(1,1) (1,0) X |
(0,0) X 2 |
(1,0) X 3 |
(1,1) X 4 |
(0,0) X 5 |
|||||
U |
|
11 |
10 |
|
00 |
|
10 |
11 |
00 |
||
5.2 Представление состояния и диаграмма состояний
Сверточный кодер принадлежит классу устройств, известных как конечный автомат (finite-state machine). Это общее название дано системам, обладающим памятью о прошедших сигналах. Прилагательное конечный показывает, что существует ограниченное число состояний, которое может возникнуть в системе. Что имеется в виду под состоянием (state) в системах с конечным их числом. В общем смысле состояние включает наименьшее количество информации, на основе которой вместе с текущими входными данными можно определить данные на выходе системы. Состояние дает некоторое представление о прошлых событиях (сигналах) и об ограниченном наборе возможных выходных данных в будущем Будущие состояния
ограничиваются |
прошлыми состояниями. Для сверточного кода |
со |
скоростью кодирования 1/п состояние представлено содержимым К - |
1 |
|
крайних правых разрядов (рис. 5.3). Знание состояния плюс знание следующих данных на входе является необходимым и достаточным условием для определения данных на выходе.
Итак, пусть состояние кодера в момент времени t1 , определяется как Xi mi 1,mi 2,...,mi K 1. i-я ветвь кодовых слов U, полностью опре-
деляется состоянием Xi и введенными в настоящее время битами mi . Таким образом, состояние Xi описывает предысторию кодера для определения данных на его выходе. Состояния кодера считаются Марковскими в том смысле, что вероятность P(Xi 1 Xi ,..., X0 ) нахождения в состоянии Xi + 1,
определяемая всеми предыдущими состояниями, зависит только от самого последнего состояния Хi , т.е. она равна P(Xi 
Одним из способов представления простых кодирующих устройств является диаграмма состояния (state diagram). Представление кодера, изображенного на рис. 5.2, а, в виде диаграммы состояний показано на рис. 5.4. Состояния, показанные в рамках диаграммы, представляют собой возможное содержимое К - 1 крайних правых разрядов регистра, а пути между состояниями – кодовые слова ветвей на выходе, являющиеся результатом переходов между такими состояниями. Состояния регистра выбраны
153
следующими: а = 00, b = 10, с = 01 и d = 11. Диаграмма, показанная на рис. 5.4, иллюстрирует все возможные смены состояний для кодера, показанного на рис. 5.2, а. Существует всего два исходящих из каждого состояния перехода, соответствующие двум возможным входным битам. Далее для каждого пути между состояниями записано кодовое слово на выходе, связанное с переходами между состояниями.
00
|
|
a = 00 |
|
|
|
Выходное слово |
||
11 |
|
|
|
|
кодера |
|||
|
11 |
|
|
|||||
|
|
00 |
|
|
|
|||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||
b = 10 |
|
|
|
c = 01 |
|
Состояние кодера |
||
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
01 |
|
01 |
|
|
|
|||
d = 11 |
Условные обозначения |
|||||||
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
Входной бит 0 |
|
|
|
10 |
|
Входной бит 1 |
|
|
Рис. 5.4 Диаграмма состояний сверточного кодера (2, 1, 3)
При изображении путей, сплошной линией принято обозначать путь, связанный с нулевым входным битом, а пунктирной линией – путь, связанный с единичным входным битом. Отметим, что за один переход невозможно перейти из данного состояния в любое произвольное. Так как за единицу времени перемещается только один бит, существует только два возможных перехода между состояниями, в которые регистр может переходить за время прохождения каждого бита. Например, если состояние кодера — 00, при следующем смещении возможно возникновение только состояний 00 или 10.
Рассмотрим диаграмму состояний сверточного кодера (3, 2, 2), схема которого представлена на рис. 5.2, б. Первые два входных бита могут быть 00, 01, 10, 11, а соответсвующие выходные биты – 000, 010, 111, 101. Когда следующая пара входных бит, входит в кодер, первая пара передвигается в следующую ячейку. Соответствующие выходные биты зависят от пары битов переместившихся во вторую ячейку и новой пары входных битов. Диаграмма состояний для этого кодера приведена на рис. 5.4.1.
154
|
|
|
|
|
|
100 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Выходное слово |
|
|
|
|
|
|
|
b = 00 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
кодера |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
010 |
|
|
|
|
|
|
|
|
|
001 |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||||
110 |
|
|
|
111 |
|
|
|
|
|
|||||
|
|
111 |
|
|
001 |
|
|
|
|
|
||||
000 |
a = 00 |
|
|
|
|
|
|
c = 01 |
010 |
|||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
101 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|||||
011 |
011 |
|
|
100 |
|
|
|
|
Состояние кодера |
|||||
|
|
|
|
|
|
|
|
|
|
|
||||
101 |
|
|
|
|
|
|
|
|
|
|
000 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
d = 00 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
|
|
|
|
|
||
Рис. 5.4.1 Диаграмма состояний сверточного кодера (3, 2, 2)
5.3 Древовидные диаграммы
Несмотря на то, что диаграммы состояний полностью описывают кодер, по сути, их нельзя использовать для легкого отслеживания переходов кодера в зависимости от времени, поскольку диаграмма не представляет динамики изменений. Древовидная диаграмма (tree diagram) прибавляет к диаграмме состояния временное измерение. Древовидная диаграмма сверточного кодера, показанного на рис. 5.2, а, изображена на рис. 5.5. В каждый последующий момент прохождения входного бита процедура кодирования может быть описана с помощью перемещения по диаграмме слева направо, причем каждая ветвь дерева описывает кодовое слово на выходе. Правило ветвления для нахождения последовательности кодовых слов следующее: если входным битом является нуль, то он связывается со словом, которое находится путем перемещения в следующую (по направлению вверх) правую ветвь; если входной бит – это единица, то кодовое слово находится путем перемещения в следующую (по направлению вниз) правую ветвь.
Предполагается, что первоначально кодер содержал одни нули. Диаграмма показывает, что если первым входным битом был нуль, то кодовым словом ветви на выходе будет 00, а если первым входным битом была единица, то кодовым словом на выходе будет 11. Аналогично, если первым входным битом была единица, а вторым – нуль, на выходе вторым словом ветви будет 10.
Если первым входным битом была единица и вторым входным битом была единица, вторым кодовым словом на выходе будет 01. Следуя этой
155