Показанный алгоритм восстанавливает принятый полином Z(X), выдавая
ˆ |
и в конечном счете, |
в итоге предполагаемое кодовое слово T X |
декодированное сообщение.
Поскольку символы сообщения содержатся в крайних правых k = 3 символах, декодировано будет следующее сообщение
|
|
|
010 |
010 |
010 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
1 |
3 |
|
|
5 |
|
|
|
|
|
|
|
|
|
ˆ |
|
ˆ |
|
|
|
ˆ |
|
|
|
|
|
|
|
|
|
|
|
|
T ( X ) |
Z ( X ) E( X ) T ( X ) E( X ) E( X ), |
|
|
|
|
|
|
|
|
|
||||||||
Z ( X ) |
(100) |
(001) X |
(011) X 2 |
(100) X 3 |
(101) X 4 |
(110) X 5 |
|
(111) X 6 , |
|
|||||||||
ˆ |
(000) |
(000) X |
(000) X |
2 |
(001) X |
3 |
(111) X |
4 |
(000) X |
5 |
(000) X |
6 |
, |
|||||
E( X ) |
|
|
|
|
|
|||||||||||||
ˆ |
(100) |
(001) X |
(011) X |
2 |
(101) X |
3 |
|
(010) X |
4 |
(110) X |
5 |
(111) X |
6 |
|
|
|||
T ( X ) |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
0 |
2 X 4 X 2 |
6 X 3 |
|
|
1 X 4 |
|
3 X 5 5 X 6 . |
|
|
|
(4.80) |
||||||
Это сообщение в точности соответствует тому, которое было выбрано для этого примера (смотри уравнение (4.44)).
Эффективность кодирования – это снижение необходимого отношения Eb/N0 для системы с кодированием по сравнению с системой без кодирования (при одном и том же виде модуляции) для достижения заданной вероятности ошибок. Часто этот параметр называют энергетическим выигрышем кода – ЭВК.
ЭВК Eb / N0 без код. Eb / N0 с код. , дБ. |
(4.81) |
В таблице 4.11 приведены значения ЭВК для некоторых блочных кодов при использовании в гауссовом канале модуляции BPSK, вероятности ошибки 10-5 при отношении Eb/N0.= 9,6 дБ без использования кодирования.
Таблица 4.11 Значения ЭВК блочных кодов
Тип кода |
Хэмминг |
Хэмминг |
Хэмминг |
Голея |
БЧХ |
БЧХ |
|
а |
а |
а |
|
|
|
Парамет |
(7, 4), |
(15, 1), |
(31, 26), |
(24, 12), |
(127, 36), |
(127, 64), |
ры кода |
t = 1 |
t = 1 |
t = 1 |
t = 3 |
t = 15 |
t = 10 |
ЭВК |
0,8 |
1,6 |
1,9 |
2,3 |
2,5 |
3,4 |
|
|
|
146 |
|
|
|
В таблице 4.12 приведены значения требуемого отношения Eb/N0 для блочного кода Рида-Соломона при использовании в гауссовом канале модуляции 32-MFSK с возможностью коррекции t символов и n = 31.
Таблица 4.12 Значения Eb/N0 |
для кода Рида-Соломона |
|
|||
Значения t |
1 |
|
2 |
4 |
8 |
Значения Eb/N0 |
6,15 |
|
5,65 |
5,35 |
5,9 |
147
5. СВЕРТОЧНЫЕ КОДЫ
Блочные коды являются одним из двух видов кодов с коррекцией ошибок, широко используемых при беспроводной передаче. Второй вид – это сверточные коды. Блочный код (п, k) обрабатывает данные блоками по k бит, генерируя на выходе блок из п бит (п > k) для каждого k -битовго блока на входе. Если прием и передача данных происходят относительно непрерывным потоком то блочный код (в частности, с большим значением п) может быть не так удобен как код, который генерирует избыточные биты непрерывно. В последнем случае обнаружение и исправление ошибок выполняется непрерывно, и именно в этом состоит преимущество сверточных кодов[8, 17, 18, 21].
Сверточный код задается тремя параметрами: п, k и К. Код (п, k, К) обрабатывает входящие данные порциями по k бит и генерирует выходную последовательность, состоящую из п бит для каждых k бит входа. До этого момента принципы работы сверточных и блочных кодов не отличаются. Для сверточных кодов п и k, как правило, являются очень малыми числами. Разница между двумя типами кодов состоит в том, что сверточные коды используют память, которая характеризуется длиной кодового ограничения К. По сути, текущая п – битовая входная последовательность кода (п, k, К) зависит не только от значений текущего входного блока, состоящего из k бит, но также и от предыдущих (К -1) k - битовых блоков. Следовательно, текущая выходная п -битовая последовательность является функцией последних (K k) входных битов.
Свѐрточный код создаѐтся прохождением передаваемой информационной последовательности через линейный сдвиговый регистр с конечным числом состояний. В общем, регистр сдвига состоит из К (k -битовых) ячеек и линейного преобразователя, состоящего из п функциональных генераторов и выполняющего алгебраические функции как показано на рисунке. 5.1.
Входные данные к кодеру, которые считаются двоичными, продвигаются вдоль регистра сдвига по k бит за раз. Число выходных битов для каждой k - битовой входной последовательности равно п. Следовательно, кодовая скорость, определѐнная как Rc = k/n, согласуется с определением скорости блочного кода. Параметр К называется длиной кодового ограничения (или кодовым ограничением) свѐрточного кода и указывает число разрядов в регистре сдвига.
5.1 Представление сверточного кодера
Чтобы иметь возможность описывать сверточный код, необходимо определить кодирующую функцию G(m) так, чтобы по данной входной последовательности m можно было быстро вычислить выходную последовательность U. Для реализации сверточного кодирования используется несколько методов; наиболее распространенными из них являются графическая
148
связь, векторы, полиномы связи, диаграмма состояния, древовидная и решетчатая диаграммы. Все они рассматриваются ниже.
Kk ячеек
1 2 |
k |
1 2 |
k |
1 2 |
k |
k |
|
|
|
|
|
информа |
|
|
|
|
|
ционных |
|
|
|
|
|
бит |
|
|
|
|
|
1 |
2 |
3 |
n |
Кодированная последовательность
Рис. 5.1 Сверточный кодер
Представление связи
При обсуждении сверточных кодеров в качестве модели будем использовать сверточный кодер, показанный на рисунке 5.2, а. На этом рисунке изображен сверточный кодер (2, 1, 3) с длиной кодового ограничения К = 3. В нем имеется п =2 сумматора по модулю 2; следовательно, скорость кодирования кода k/n равна 1/2. При каждом поступлении входной бит помещается в крайний левый разряд, а биты регистра смещаются на одну позицию вправо. Затем коммутатор на выходе дискретизирует выходы всех сумматоров по модулю 2 (т.е. сначала верхний сумматор, затем нижний), в результате чего формируются пары кодовых символов, образующих кодовое слово, связанное с только что поступившим битом. Это выполняется для каждого входного бита. На рисунке 5.2, б представлена схема сверточного кодера с параметрами (3, 2, 2).
Выбор связи между сумматорами и разрядами регистра влияет на характеристики кода. Всякое изменение в выборе связей приводит в результате к различным кодам. Связь, конечно же, выбирается и изменяется не произвольным образом. Задача выбора связей, дающая оптимальные дистанционные свойства, сложна и в общем случае не решается; однако для всех значений длины кодового ограничения, меньших 20, с помощью компьютеров были найдены хорошие коды [18].
В отличие от блочных кодов, имеющих фиксированную длину слова п, в сверточных кодах нет определенного размера блока.
149
Вход |
|
|
Выход |
Вход |
|
|
|
|
1 |
Выход |
|
|
|
|
|
2 |
|
||||
1 |
2 |
3 |
|
1 |
2 |
1 |
2 |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
3 |
|
|
а) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
б) |
|
|
|
|
Рис. 5.2 Сверточный кодер (2, 1, 3) а) и (3, 2, 2) б)
Один из способов реализации кодера заключается в определении п векторов связи, по одному на каждый из п сумматоров по модулю 2. Каждый вектор имеет размерность К и описывает связь регистра сдвига кодера с соответствующим сумматором по модулю 2. Единица на i-й позиции вектора указывает на то, что соответствующий разряд в регистре сдвига связан с сумматором по модулю 2, а нуль в данной позиции указывает, что связи между разрядом регистра и сумматором по модулю 2 не существует Для кодера на рисунке 5.2,а можно записать вектор связи (генераторный полином) g1 для верхних связей, a g2 – для нижних
g1 |
111, |
g2 |
101 |
|
в |
восьмеричной |
форме |
(5.1) |
|
g1 |
7, |
g2 5 |
|
|
Аналогичным образом можно записать генераторные полиномы для кодера на рис. 5.2, б, учитывая, что в этом кодере каждый раз два бита поступают на вход регистров сдвига, а на выходе генерируется три бита
g1 |
1011, |
g2 |
1101, |
|
g3 1010, |
в |
восьмеричной форме |
|
|||
g1 |
13, |
g2 |
15, |
g3 |
12 |
|
|
|
150 |
|
|