61
Свёрточные коды Чумаков В.В. Нижегородский государственный университет им. Н.И. Лобачевского Факультет вычислительной математики и кибернетики Учебно-исследовательская лаборатория "Информационные технологии"

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

  • Upload
    mauve

  • View
    106

  • Download
    5

Embed Size (px)

DESCRIPTION

Нижегородский государственный университет им. Н.И. Лобачевского Факультет вычислительной математики и кибернетики Учебно-исследовательская лаборатория "Информационные технологии". Свёрточные коды. Чумаков В.В. Введение. - PowerPoint PPT Presentation

Citation preview

Page 1: Свёрточные коды

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

Чумаков В.В.

Нижегородский государственный университет им. Н.И. Лобачевского

Факультет вычислительной математики и кибернетикиУчебно-исследовательская лаборатория

"Информационные технологии"

Page 2: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 2-61

Введение

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

Page 3: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 3-61

Древовидные и решетчатые коды

Длина кадра информационных символов k0Длина кадра кодового слова n0Скорость кода R=k0/n0Ёмкость кодера mДлина кодового ограничения v=mk0Информационная длина слова k=(m+1)k0Кодовая длина блока n=(m+1)n0

Логика

КИСОкно кодирования

КодерККС

Page 4: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 4-61

Древовидные и решетчатые коды

Определение. Древовидный (n0,k0)-код - это отображение на себя множества полубесконечных последовательностей элементов из GF(q), такое, что если для любого M первые Mk0 компонент двух полубесконечных последовательностей совпадают, то первые Mn0 компонент отображений этих последовательностей тоже совпадают.

Page 5: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 5-61

Древовидные и решетчатые кодыКонечность длины кодового ограничения. Древовидный (n0,k0)-код с конечной длиной кодового ограничения v, длиной слова k=v+k0 и кодовой длиной блока n называется решетчатым (n,k)-кодом.Постоянство во времени. Если две различные последовательности совпадают, но имеется временной сдвиг, то соответствующие им кодовые последовательности совпадают с тем же сдвигом.Линейность. Кодовая последовательность линейной комбинации информационных последовательностей совпадает с той же линейной комбинацией соответствующих кодовых последовательностей.Систематичность. Каждый кадр информационных символов составляет первые k0 символов первого из кадров кодовой последовательности, на которые влияет данный кадр информационных символов.

Page 6: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 6-61

Древовидные и решетчатые коды

Определение. Постоянный во времени древовидный (n0,k0)-код, имеющий конечную длину слова k, называется скользящим блоковым (n,k)-кодом. Определение. Линейный скользящий блоковый (n,k)-код называется свёрточным (n,k)-кодом. Свёрточный (n,k)-код, удовлетворяющий условию систематичности, называется систематическим свёрточным (n,k)-кодом.

Page 7: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 7-61

Древовидные и решетчатые коды

Информационныебиты

+ +

Кодовые биты

Информационныебиты

+

+

Кодовые биты+

n0=2, k0=1

n=12, k=6,v=5

n0=2, k0=1

n=6, k=3,v=2

G(x)=[1 x5+x3+1]

G(x)=[x2+x+1 x2+1]

Page 8: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 8-61

Древовидные и решетчатые коды

Решетчатая диаграмма свёрточного (6,3)-кода

00 00 00 00 00 00

11 11 11 11 11 11

10 10 10 10 10

01 01 01 01 01

11 11 11 11

00 00 00 00

01 01 01 01

10 10 10 10

0 1 2 3 4 5 600

10

01

11

ВремяСостояние

Page 9: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 9-61

Древовидные и решетчатые коды

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

Page 10: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 10-61

Древовидные и решетчатые коды

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

Page 11: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 11-61

Описание с помощью многочленов

Свёрточный ((m+1)n0,(m+1)k0)-код над GF(q) с длиной кодового ограничения v=mk0 можно генерировать с помощью n0k0 фильтров с конечным импульсным откликом (КИО-фильтров) над GF(q). Каждый КИО-фильтр может быть представлен многочленом степени не выше m.

n0=3, k0=1

КИО

КИО

КИО

Выходной регулирующий

буфер

Page 12: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 12-61

Описание с помощью многочленов

Если входной поток записать как многочлен (может быть, бесконечной степени), то работа фильтра может быть описана как умножение многочленов, то есть кодер, а потому и сам код, могут быть представлены множеством из k0n0 многочленов, порождающих код. Эти многочлены называются порождающими многочленами. Степень порождающих многочленов не превосходит m. При k0>1 некоторые порождающие многочлены могут равняться нулю.

Пусть gij(x),i=1…k0, j=1…n0 - множество порождающих многочленов. Оно может быть записано в виде матрицы размера k0*n0, называемой порождающей матрицей.

Page 13: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 13-61

Описание с помощью многочленов

Дадим формальные понятия параметров кода.Определение. Длиной кодового ограничения свёрточного кода, задаваемого матрицей [gij(x)], называется величина

0

1

)]([degmaxk

iijj xgv

Информационной длиной кодового слова называется]1)([degmax ,0 xgkk ijji

]1)([degmax ,0 xgnn ijji

Кодовой длиной блока называется

Page 14: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 14-61

Описание с помощью многочленовБудем рассматривать входной кадр как k0 параллельно поступающих символов, а последовательность входных кадров как k0 параллельных последовательностей символов. Они могут быть представлены k0 информационными многочленами di(x), i=1,…,k0, или вектором таких многочленов: d(x) = [d1(x),…,dk0(x)]. Аналогично выходное кодовое слово может быть представлено вектором c(x) = [c1(x),…,cn0(x)]. Теперь операцию кодирования можно записать в компактной форме:

c(x)=d(x)G(x)

Проверочной матрицей H(x) называется ((n0 - k0)* n0)-матрица, удовлетворяющая условию G(x)HT(x)=0.Вектор синдромных многочленов определяется уравнением s(x)=v(x)HT(x). Он имеет размерность (n0 - k0).

Page 15: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 15-61

Описание с помощью многочленов

Систематический кодер для свёрточного кода имеет порождающую матрицу из многочленов вида

[E P(x)], где E – единичная матрица размера k0*k0, а P(x) – матрица размера k0*(n0-k0). Для систематических свёрточных кодов проверочную матрицу можно сразу записать в видеH(x)=[-PT(x) E], где E – единичная матрица размера (n0-k0)*(n0-k0).

Page 16: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 16-61

Описание с помощью многочленов

Рассмотрим важный частный случай k0=1. Упростим обозначения, положив

G(x)=[g1(x),…,gn0(x)] и cj(x)=d(x)gj(x), j=1…n0.

Для систематического кода g1(x)=1.

Определение. Свёрточный код, порождающие многочлены g1(x),…,gn0(x) которого удовлетворяют условию НОД [g1(x),…,gn0(x)]=xa при некотором a, называется некатастрофическим свёрточным кодом. В противном случае он называется катастрофическим свёрточным кодом.

Page 17: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 17-61

Описание с помощью многочленовБез ограничения общности можно считать xa=1, так как невыполнение этого равенства просто эквивалентно введению во все фильтры задержки, что, очевидно, бессмысленно.Некатастрофический свёрточный код при отсутствии ошибок можно декодировать, используя алгоритм Евклида, согласно которому существую многочлены a1(x),…,an0(x) такие, что

a1(x)g1(x) +…+ an0(x)gn0(x)=1.

Поэтому если многочлен поступающих данных d(x) кодируется по формуле cj(x)=d(x)gj(x), то d(x) можно восстановить, используя соотношение

a1(x)c1(x) +…+ an0(x)cn0(x)=d(x).

Page 18: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 18-61

Описание с помощью многочленов

Задача нахождения хорошего свёрточного кода эквивалентна задаче поиска «хорошего» множества взаимно простых многочленов. Найти произвольное множество взаимно простых многочленов нетрудно, а вот найти множество, которое хорошо исправляет ошибки, действительно трудно.

Page 19: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 19-61

Описание с помощью многочленов

Некатастрофический код можно определить через различных (k0*k0)-подматриц матрицы G(x). Пусть detl(x) – определитель l-й подматрицы.

Определение. Свёрточный код с матрицей порождающих многочленов G(x), определители detl(x), l=1,…, подматриц которой удовлетворяют условию

НОД [detl(x), l=1,…, ]=xa

при некотором a, называется некатастрофическим свёрточным кодом. В противном случае он называется катастрофическим свёрточным кодом.

0

0

kn

0

0

kn

0

0

kn

Page 20: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 20-61

Описание с помощью многочленов

Некатастрофический код может быть обращён, то есть существует (n0*k0)-матрица G*(x) такая, что

G*(x)G(x)= xaE,

где E – единичная матрица размера k0*k0. Найти G*(x) в общем случае затруднительно.Для систематических кодов условия некатастрофичности всегда выполняются.

Page 21: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 21-61

Исправление ошибок и понятия расстояния

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

Page 22: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 22-61

Исправление ошибок и понятия расстояния

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

Page 23: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 23-61

Исправление ошибок и понятия расстоянияВ любом декодере может случиться так, что в связи

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

Page 24: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 24-61

Исправление ошибок и понятия расстояния

Число символов, которые декодер может хранить в памяти, называется шириной окна декодирования. Увеличение ширины окна декодирование приводит к улучшению характеристик до достижения насыщения (~3n).Свёрточный код характеризуется несколькими минимальными расстояниями, определяемыми длинами начальных сегментов кодовых слов, между которыми вычисляется расстояние. Мера расстояния определяется таким образом, что если при декодировании двух сегментов получается один и тот же первый информационный кадр, то эти сегменты считаются эквивалентным.

Page 25: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 25-61

Исправление ошибок и понятия расстоянияОпределение. Минимальное расстояние Хэмминга

для любых начальных сегментов длины l кадров всех пар кодовых слов, отличающихся начальным кадром, называется l-м минимальным расстоянием свёрточного кода и обозначается d*

l. Если l = m+1, то оно называется просто минимальным расстоянием и обозначается d*. Последовательность d*

1, d*2, d*

3, … называется дистанционным профилем свёрточного кода.

Очевидно, что функция d*l является монотонной.

Вследствие линейности свёрточного кода одно из двух кодовых слов может быть нулевым. В этом случае l-е минимальное расстояние равно минимальному из всех весов сегментов длины l кадров кодовых слов с ненулевым первым кадром. Оно может быть вычислено по маркированной решётке.

Page 26: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 26-61

Исправление ошибок и понятия расстояния

Если в первых l кадрах произошло не более t ошибок, и 2t< d*

l, то ошибки, которые появились в первом кадре, могут быть исправлены. При t=m+1 такой код называется свёрточным кодом, исправляющим t ошибок на длине блока.Определение. Свободным расстоянием свёрточного кода называется .Определение. Свободной длиной свёрточного кода называется длина имеющего наименьший вес ненулевого начального сегмента кодовой последовательности свёрточного кода.

ll dd max

Page 27: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 27-61

Матричное описание свёрточных кодов

Пусть свёрточный код задан матрицей G(x)=[gij(x)].

Запишем многочлены gij(x) в виде

gij(x)=gij0 + gij1x +…+ gijlxl.

Для построения порождающей матрицы коэффициенты gijl упорядочиваются в виде матрицы. Пусть при каждом l Gl=[gijl]. является (k0*n0)-матрицей. Тогда порождающая матрица свёрточного кода имеет следующий вид:

G0 G1 G2 … Gm 0 0G0 G1 Gm-1… Gm 0 00

0G = …

………

Page 28: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 28-61

Матричное описание свёрточных кодов

В случае систематического кода G0=[E P0], при l>0 Gl=[0 Pl]. Структура этих матричных выражений соответствует работе регистра сдвига кодера.Проверочной матрицей является любая матрица H, удовлетворяющая условиям G*l H*l=0, l=0,1,2…, где G*l и H*l – главные миноры порядка l матриц G и H.

Page 29: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 29-61

Некоторые простые свёрточные кодыНе существует конструктивных методов поиска свёрточных кодов с большой длиной кодового ограничения. Большинство известных и используемых в настоящее время лучших свёрточных кодов было найдено с помощью ЭВМ.Класс двоичных свёрточных кодов, исправляющих одну ошибку и называемых кодами Вайнера-Эша, аналогичен классу кодов Хэмминга. Для каждого натурального m существует ((m+1)2m,(m+1)(2m-1))-код Вайнера-Эша, определяемый проверочной матрицей H’(2m-1,2m-1-m)-кода Хэмминга. Это – проверочная [m*(2m-1)]-матрица, в которой все столбцы различны и ненулевые. Определим множество [1*(2m-1)]-матриц P1,…,Pm через строки H’. Обозначим через P0 [1*(2m-1)]-матрицу, все элементы которой равны единице. Тогда проверочная матрица кода Вайнера-Эша запишется в следующем виде:

Page 30: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 30-61

Некоторые простые свёрточные коды

Теорема. Минимальное расстояние кода Вайнера-Эша равно 3. Таким образом, он является свёрточным кодом, исправляющим одну ошибку.

P0 1 0 0 0 0 0 …

P1 0 P0 1 0 0 0

P2 0 P1 0 P0 1 0

Pm 0 …

0 0 Pm 0

Page 31: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 31-61

Алгоритмы синдромного декодирования

Предположим, что принята бесконечная последовательность, состоящая из кодового слова и шума: v = c+e. Синдром s = vHT = eHT имеет бесконечную длину. Декодер вычисляет компоненты s по мере поступления v, исправляя ошибки и сбрасывая компоненты, вычисленные давно. Декодер содержит таблицу возможных сегментов синдромов и соответствующих сегментов конфигураций шума. Найдя в таблице полученный сегмент синдрома, декодер имеет возможность исправить начальный сегмент кодового слова.

Page 32: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 32-61

Алгоритмы синдромного декодирования

Декодер для свёрточного (6,3)-кода

Принятыебиты

+

Регулирующий буфер

Проверка на наличие одногоиз следующих синдромов:

100100100011100

100011001111110

+

++

Проверка на наличие одногоиз следующих синдромов:

100100100011100

100011001111110

+ +

+

+

Да

Да+

+

Page 33: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 33-61

Алгоритмы синдромного декодирования

Таблица декодирования для свёрточного (6,3)-кода

0110000001100000000000

0000011000000110000000

0101010110101010110110

1000110011111101101011001110111011010010010001010011100

Конфигурация ошибок СиндромТретий кадр Второй кадр Первый кадр

Page 34: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 34-61

Алгоритмы синдромного декодирования

Декодер исправляет две ошибки в шести первых битах. Вклад каждой исправленной ошибки устраняется из регистра синдрома с помощью обратной связи. Так как код несистематический, то информационные символы восстанавливаются по исправленному кодовому слову. Для восстановления информации используется следующее соотношение:1 = НОД (x2+x+1,x2+1) = x(x2+x+1) + (x+1)(x2+1)

Page 35: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 35-61

Алгоритмы синдромного декодирования

После исправления первого кадра нужно изменить синдром таким образом, чтобы он не вызвал ошибочного исправления в следующем кадре. Существуют два способа: - после каждого исправления ошибки устанавливается нулевое состояние регистра синдрома. - из регистра синдрома вычитается корректирущий синдром.Приведённый декодер не является полным, так как таблица декодирования содержит не все возможные синдромы. Для исправления других конфигураций ошибок можно увеличивать синдромную память или длину блока кода.

Page 36: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 36-61

Коды для исправления пакетов ошибок

Пакетом ошибок длины t называется любая последовательность из t символов, из которых первый и последний не равны нулю. В бесконечно длинном слове, принятом декодером, может появиться много ошибок. Примем, что эти ошибки собраны в пакеты различной длины. Если пакеты ошибок находятся друг от друга достаточно далеко, то декодер в любой момент времени содержит лишь один пакет ошибок. Свёрточный код, для которого декодер может исправлять любой изолированный пакет ошибок длины t, называется свёрточным кодом, способным исправлять пакеты ошибок длины t.

Page 37: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 37-61

Коды для исправления пакетов ошибок

Очевидно, что любой свёрточный (n,k)-код, исправляющий t ошибок, будет исправлять пакет ошибок длины t. Свёрточный код для исправления более длинных пакетов может быть получен перемежением. Чтобы получить свёрточный (jn,jk)-код из (n,k)-кода, возьмём j одинаковых (n,k)-кодеров и построим кодовые слова, чередуя их выходные символы. Если исходный код может исправлять пакеты ошибок длины t, то код-перемежение может исправлять пакеты ошибок длины jt.Если g(x) - порождающий многочлен исходного кода, то g(xj) - порождающий многочлен кода-перемежения.

Page 38: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 38-61

Коды для исправления пакетов ошибок

Определение. пусть t и n0 - любые положительные целые числа. Кодом Ивадаре называется исправляющий пакеты ошибок двоичный систематический свёрточный код со следующей порождающей (n0-1)*n0)-матрицей:

)(1...00.........

)(0...10)(0...01

)(

1

2

1

0xg

xgxg

xG

n

где

Коды Ивадаре называются свёрточными ((m+1)n0,(m+1)(n0-1))-кодами с числом кадров m, равным (t+1)(2n0-1)-2.

1,...,1,)( 01))(1(3)2)(1( 00 nixxxg intiint

i

Page 39: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 39-61

Коды для исправления пакетов ошибок

Проверочная матрица такого кода:

]1)(...)()([)( 121 0xgxgxgxH n

Так как n0-k0=1, то имеется только один синдромный многочлен

1

0

3)2)(1(1))(1(1

1

000

0

0

0)(][)()()()()(

n

ii

iintintn

n

inii xexxxexexexgxs

Пусть пакет начинается в первом кадре и содержит tn0 битов. Он может захватывать (t+1) кадров. Докажем, что код Ивадаре может исправлять такой пакет ошибок. Для этого покажем, что декодер может восстановить по синдрому пакет ошибок, и что встретившийся в более позднем кадре пакет ошибок не вызовет сбоя в работе декодера.

Page 40: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 40-61

Коды для исправления пакетов ошибок

Кодер для (72,48)-кода Ивадаре с n0=3, t=4 и m+1=24.

+ +

+24-разрядный регистр сдвига

20-разрядный регистр сдвига

Page 41: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 41-61

Коды для исправления пакетов ошибокОбозначим через c1(x) и c2(x) многочлены информационных битов, а через c3(x) - многочлен проверочных битов. Соответствующими многочленами ошибок будут e1(x), e2(x) и e3(x).

s(x) = e3(x) + (x4+x19)e2(x) + (x9+x23)e1(x),

где для пакета ошибок, начинающегося в первом кадре,

e3(x) = e30 + e31x + e32x2 + e33x3,

e2(x) = e20 + e21x + e22x2 + e23x3 + e24x4,

e1(x) = e10 + e11x + e12x2 + e13x3 + e14x4.

Порождающие многочлены выбраны так, чтобы на каждый бит синдрома влиял лишь один ошибочный бит.

Page 42: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 42-61

Коды для исправления пакетов ошибокКаждый бит многочлена e2(x) воздействует на синдром дважды: за его первым появлением следует отклик с задержкой на 15 битов. Аналогично каждый бит многочлена e1(x) воздействует на синдром дважды: за его первым появлением следует отклик с задержкой на 14 битов. Так как e24 и e10 не могут одновременно быть ненулевыми, то эти пары ошибок не перекрываются. Каждый бит многочлена e13(x) воздействует на синдром один раз. За его первым появлением следуют только нули - один с задержкой на 14 битов, другой - с задержкой на 15 битов. Эти нули определяют e3(x).

Если в действительности пакет ошибок начинается в l-м кадре, то синдром сдвигается вправо на l битов, и перед ним вставляется l нулей. Эта конфигурация не будет воспринята декодером как пакет ошибок, начинающийся в первом кадре.

Page 43: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 43-61

Коды для исправления пакетов ошибокДекодер для (72,48)-кода Ивадаре с n0=3, t=4 и m+1=24.

+ +

+v1(x) - регистр

v2(x) - регистр+

+

+Регулировка

++

+ s4 +

I

Синдромный регистр

s0

Page 44: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 44-61

Коды для исправления пакетов ошибок

Первые четыре бита синдрома зависят лишь от ошибок в принятых проверочных битах, поэтому для хранения синдрома может быть использован 16-разрядный регистр.Сначала декодер исправляет второй бит каждого кадра пакета ошибок, затем возвращается к началу пакета и исправляет первый бит. Поэтому в декодере имеется 4-разрядный регистр сдвига, в котором хранится c2(x) после исправления.

Page 45: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 45-61

Коды для исправления пакетов ошибокДля исправления ошибки в v2(x) декодер проверяет компоненты s4 и s19 синдрома. Если обе компоненты равны единице, то правый бит v2(x) является ошибочным. В потоке данных и в синдроме делаются исправления. Пакет ошибок e3(x), начинающийся в более позднем кадре, не может вызвать сбоя, так как отклик e3(x) равен нулю.

Параллельно с этим для исправления ошибки в v1(x) декодер проверяет компоненты s5 и s19 синдрома. Если обе компоненты равны единице, а s4 равен нулю, то правый бит v1(x) является ошибочным. В потоке данных и в синдроме делаются исправления. Пакет ошибок e3(x), начинающийся в более позднем кадре, не может вызвать сбоя, так как отклик e3(x) равен нулю. В силу выбора способа проверки ещё не исправленный бит e2(x) также не может вызвать сбоя.

Page 46: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 46-61

Коды для исправления пакетов ошибок

Для правильного исправления пакетов ошибок длины 12 необходимо, чтобы до 29-го кадра не происходило ошибок. То есть, если между пакетами ошибок есть 24 свободных от ошибок кадра (72 бита), то декодер будет успешно исправлять любые пакеты ошибок длины 12.

Page 47: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 47-61

Алгоритм декодирования ВитербиАлгоритм декодирования Витерби является полным алгоритмом декодирования свёрточных кодов. Практически он употребляется для двоичных кодов с малой длиной кодового ограничения.Алгоритм Витерби является эффективной реализацией процедуры декодирования по минимуму расстояния. Выберем окно декодирования ширины b, превышающей длину блока n, вычислим все кодовые слова длины b, сравним принятое слово с каждым из них и выберем кодовое слово, ближайшее к принятому слову. Первый информационный кадр выбранного кодового слова берём в качестве первого информационного кадра декодированного кодового слова. Этот кадр затем кодируется вновь и вычитается из принятого слова. После этого в декодер вводится следующий кадр кодового слова и процесс повторяется.

Page 48: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 48-61

Алгоритм декодирования Витерби

В основе алгоритма Витерби лежит принцип Беллмана. Декодер Витерби итеративно обрабатывает кадр за кадром, двигаясь по решётке кода и пытаясь повторить путь кодера. В каждый момент времени декодер по принятой последовательности определяет наиболее правдоподобный путь к каждому узлу и определяет расстояние между этими путями и принятой последовательностью. Это расстояние называется мерой расходимости пути. Наиболее правдоподобный путь к узлу N очередного временного кадра определяется как наиболее правдоподобное из продолжений путей к узлам Ni предыдущего временного кадра рёбрами (Ni,N) решётки.

Page 49: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 49-61

Алгоритм декодирования Витерби

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

Page 50: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 50-61

Алгоритмы поиска по решётке

Можно улучшить характеристики свёрточного кода, увеличив длину кодового ограничения. Декодер Витерби, однако, быстро становится непрактичным: при длине кодового ограничения 10 декодер двоичного кода должен помнить до 1024 выживших путей. Для того, чтобы ослабить влияние больших длин кодового ограничения, была разработана стратегия, игнорирующая маловероятные пути по решётке, пока они остаются маловероятными. При такой стратегии не принимается решений о том, чтобы окончательно оставить некоторый путь. Время от времени декодер возвращается назад, чтобы продолжить оставленный ранее путь.

Page 51: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 51-61

Алгоритмы поиска по решётке

Все такие стратегии известны под общим названием последовательного декодирования. Последовательное декодирование имеет довольно общий характер и может использоваться в самых разных каналах.Алгоритм последовательного декодирования является «в меру жадным». В отличие от декодера Витерби, последовательный декодер на каждом уровне находится в конкретном узле. Он анализирует следующий временной кадр, выбирая ближайшее в смысле расстояния Хэмминга ребро к принятому кадру, и переходит в узел на следующем уровне.

Page 52: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 52-61

Алгоритмы поиска по решётке

При наличии ошибок декодер может случайно выбрать неправильную ветвь. Если он продолжает следовать по ложному пути, то через некоторое время он обнаружит, что происходит слишком много ошибок. Последовательный декодер вернётся назад на несколько кадров и начнёт исследовать альтернативные пути до тех пор, пока не найдётся правдоподобный путь. Затем декодер продолжит движение по новому пути.При прохождении b кадров решётки принимается окончательное решение относительно самого старого кадра. Он выводится из окна, и в рассмотрение вводится очередной кадр решётки.

Page 53: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 53-61

Алгоритмы поиска по решёткеНаиболее известным алгоритмом поиска по решётке является алгоритм Фано. В этом алгоритме требуется знать верхнюю оценку p вероятности появления ошибок в канале (p<1/2). Пока декодер движется по правильному пути, число ошибок, встреченных в первых l кадрах, не превосходит pn0l. Определим перекошенное расстояние формулой

t(l) = pn0l - d(l),

где d(l) - расстояние Хэмминга между принятым словом и текущим путём по решётке. Для правильного пути t(l) положительно и возрастает. Если вдруг t(l) станет уменьшаться, то декодер заключает, что в некотором узле он выбрал ошибочное ребро, и возвращается по решётке, проверяя другие пути.

Page 54: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 54-61

Алгоритмы поиска по решётке

Для того, чтобы решить, когда t(l) начнёт уменьшаться, декодер использует текущий порогT = D*h, гдеD - приращение порога, а h = [t(l)/D].В алгоритме Фано требуется, чтобы рёбра, выходящие из каждого узла, были пронумерованы согласно некоторому правилу. Наиболее общим является правило минимума расстояния. Рёбра упорядочиваются в соответствии с их расстояниями Хэмминга до соответствующего кадра принятого слова. Вообще может быть использован любой фиксированный порядок (например, лексикографический).

Page 55: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 55-61

Алгоритмы поиска по решётке

Основой декодера, реализованного на алгоритме Фано, является копия кодера с несколькими вспомогательными ячейками памяти. Декодер пытается подать символы в копию кодера так, чтобы на его выходе появилось кодовое слово, достаточно близкое к принятому слову. После каждой итерации он может обратиться к последнему кадру, поданному в копию кодера. На основе сравнения t(l) и T он может изменить информацию в этом кадре, вернуться к более раннему кадру или ввести новый кадр.

Page 56: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 56-61

Алгоритмы поиска по решётке

Для того, чтобы гарантировать конечность работы декодера, достаточно доказать два утверждения: - если декодер не может найти альтернативный путь, он двигается назад к узлу, в котором было установлено текущее значение порога, и понижает его. - декодер не будет повышать порог до тех пор, пока не достигнет ранее неисследованного узла.

Page 57: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 57-61

Алгоритмы поиска по решётке

Что касается первого утверждения, очевидно, что если декодер не может найти новое ребро, от которого он может двигаться вперёд, то он должен в конце концов возвратиться к указанному узлу. Если в предшествующем некоторому узлу кадре перекошенное расстояние t(l-1) меньше текущего значения порога T, то порог был увеличен в l-м кадре.

Page 58: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 58-61

Алгоритмы поиска по решёткеДля того, чтобы доказать второе утверждение, заметим, что после понижения порога на D декодер ищет следующие рёбра в том же порядке, что и до этого, пока не найдёт то место, в котором перекошенное расстояние, ранее бывшее меньше порога, становится больше него. До этого момента порог T не может измениться. Действительно, после понижения порога на D перекошенное расстояние в тех узлах, где оно превышало первоначальный порог, всегда будет меньше T+D. Когда декодер продвинется в новую часть дерева, он обязательно достигнет состояния, в котором t(l-1)<T+D и t(l) T. В этой точке порог повышается. Это и является тестом для определения того, новый ли узел был посещён, и нет необходимости помнить все посещённые узлы.

Page 59: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 59-61

Задания

Приводятся ссылки на книгу:Р.Блейхут. Теория и практика

кодов,контролирующих ошибки.(гл.12 «Свёрточные коды»)

Задания:12.1, 12.3, 12.5, 12.6 (а,в), 12.7, 12.8(г), 12.9

Page 61: Свёрточные коды

ИТЛаб ВМК ННГУ Свёрточные коды 61-61

Контакты:

Нижегородский университет,Факультет вычислительной математики и кибернетики,

Учебно-исследовательская Лаборатория "Информационные технологии"

603950, Нижний Новгород, пр. Гагарина, 23, р.т.: +7 (8312) 65-48-59,

E-mail: [email protected]