Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Корольов / Теория связи

.pdf
Скачиваний:
229
Добавлен:
10.02.2016
Размер:
8.73 Mб
Скачать
i =1,2,...,2k

равновероятных информационных последовательностях ее оптимальное решение дает метод максимального правдоподобия. Функция правдоподобия как вероятность получения данного вектора Y при передаче кодовых слов si ,

на основании (5.14) определяется вероятностями появления векторов

ошибок:

 

Y

 

 

 

= p(E

q

i (1p)n qi ,

p

S

 

 

)= p

 

 

i

 

 

i

 

 

 

 

 

 

 

 

 

где qi – вес вектора Ei =Y + Si

 

 

 

 

 

 

 

 

 

 

Y S

 

максимальна при минимальном qi . На

Очевидно, вероятность p

 

 

 

 

 

 

 

i

 

 

основании принципа максимального правдоподобия оценкой является кодо-

S

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

(НВ):

=Y + EHB .

S

Если несколько векторов ошибок Ei имеют равные минимальные веса,

то наивероятнейшая ошибка EHB определяется случайным выбором среди них.

В качестве расстояния между двумя кодовыми комбинациями принимают так называемое расстояние Хэмминга, которое численно равно количеству символов, в которых одна комбинация отлична от другой, т.е. весу (числу ненулевых компонентов) разностного вектора. Расстояние Хэмминга между принятой последовательностью Y и всеми возможными кодовыми словами 5, есть функция весов векторов ошибок Ei :

d(Si ,Yi )= n (si, j + yi )= n

ei, j = qi .

j=1

j=1

 

Поэтому декодирование по минимуму расстояния, когда в качестве оценки берется слово, ближайшее к принятой последовательности, является декодированием по максимуму правдоподобия.

Таким образом, оптимальная процедура декодирования для симметрично-

211

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

который затем вычитается (в двоичном канале - складывается по модулю 2) из

Y :

→ → = + .

Y EHB S Y EHB

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

Широко распространены линейные коды, называемые так потому, что их кодовые слова образуют линейное подпространство над конечным полем. Для двоичных кодов естественно использовать поле характеристики p = 2 . Принад-

лежность принятой комбинации Y известному подпространству является тем признаком, по которому выносится решение об отсутствии ошибок( EHB = 0 ).

Так как по данному коду все пространство последовательностей длины n разбивается на смежные классы (см. 5.3.2), то для каждого смежного класса можно заранее определить вектор ошибки минимального веса, называемый лидером смежного класса. Тогда задача декодера состоит в определении номера смежного класса, которому принадлежит Y , и формировании лидера этого класса.

5.4.2. Параметры линейного кода

Помехоустойчивое кодирование сообщений дискретного источника информации [25, 33] заключается в том, что поступающие k -символьные информационные комбинации A = (a1,a2 ,..., ak ) дополняются n k избыточными симво-

лами до n -символьных кодовых комбинаций S = (s1, s2 ,..., sn ). В процессе передачи последних по каналу связи под действием помех отдельные символы кодовой комбинации искажаются и трансформируются на приемной стороне в другие

212

символы из используемого для передачи алфавита.

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

Линейные коды обозначаются (n,k,d0 ). Здесь n – длина кода, число сим-

волов в кодовых словах или размерность пространства кодовых комбинаций; k

– число информационных символов или размерность кода; n k – количество проверочных или избыточных символов. Числа n и k определяют относитель-

ную скорость передачи информации кодом, равную k n двоичных единиц на 1

символ кодовой комбинации.

Третий параметр линейного кода – кодовое расстояние d0 характеризует корректирующую способность помехоустойчивого кода и вводится как минимальное из расстояний Хэмминга (см. 5.4.1) при попарном сравнении кодовых слов. С кодовым расстоянием связаны кратности обнаруживаемых qоб и исправ-

ляемых qис ошибок, произошедших в пределах одной кодовой комбинации: d0 qоб +1 или d0 2qис +1.

Число qоб указывает, что код способен обнаруживать все конфигурации вектора ошибки, вес которых q qоб . Число qис указывает, что код способен ис-

правлять все конфигурации вектора ошибки, вес которых q qис .

При совмещении процедур обнаружения и исправления ошибок, причем qоб > qис соотношение между d0 , qоб и qис имеет вид:

d0 qоб + qис +1.

При фиксированных n и k большей помехоустойчивостью обладают коды с большим кодовым расстоянием. Линейные коды достаточно хорошо изучены и сведены в таблицы [30, 33].

213

5.4.3. Полиномиальные циклические коды

Весьма плодотворным оказалось представление n -символьных комбинаций линейных кодов в виде полиномов степени n 1. Для этого перенумеруем символы в кодовых комбинациях так, чтобы каждому кодовому слову S = (sn1, sn2 ,..., s0 ) можно было сопоставить многочлен S = sn1xn1 + sn2 xn2 +... + s0 , и символы слова являлись коэффициентами многочлена. Например, кодовому слову 100101 соответствует многочлен x5 + x +1. Такой код, получивший название полиномиального, можно определить как множество всех многочленов степени n 1 , содержащих в качестве множителя некоторый многочлен g(x),

называемый порождающим многочленом кода. Иными словами, полиномиальный код (n,k,d0 ) есть множество всех многочленов степени n 1 или меньше,

делящихся на g(x), т.е. S(x)= g(x)A(x). Степень полинома g(x) равна n k , а ко-

личество символов в соответствующем ему кодовом слове – (n k +1).

Например, g(x)= x3 + x +1 1011 порождает множество полиномов вида

S(x)= g(x)A(x)= (x3 + x +1)(a3 x3 +a2 x2 +a1x +a0 )= a3 x6 +a2 x5 + +(a1 +a3 )x4 +(a0 +a2 +a3 )x3 +(a1 +a2 )x2 +(a0 +a1 )x +a0 ,

т.е. код (7, 4, 3).

Естественно в качестве A(x) взять полином, соответствующий информа-

ционной комбинации A = (a1,a2 ,...,ak ), т.е. принять ai в качестве информационных символов. Однако недостаток такого способа кодирования заключается в том, что получаемый код оказывается несистематическим, т.е. не имеет четкого разделения разрядов на информационные и избыточные.

На практике используется другой способ получения полиномов S(x) по информационному полиному A(x) и порождающему полиному g(x) [25, 33]:

S(x)= A(x)xnk + R(x),

(5.15)

где R(x) – остаток от деления полинома

A(x)xnk

на g(x). В этом случае S(x)

также делится на g(x) без остатка, а следовательно,

S является кодовым словом

систематического кода (n,k,d0 ). Полином

R(x)

соответствует комбинации

B = (b1,b2 ,...,bnk ) символов, называемых проверочными.

214

Связь между структурой g(x) и кодовым расстоянием d0 порождаемого им кода достаточно проста. Для того чтобы задаваемый полиномом g(x) код имел кодовое расстояние d0 , количество отличных от нуля коэффициентов g(x)

должно быть не менее d0 . Действительно, с одной стороны, нулевая кодовая комбинация, соответствующая S(x)0 , принадлежит любому линейному коду, в

том числе и задаваемому полиномом g(x), так как при A(x)= 0 остаток R(x) от деления A(x)xnk на g(x) также равен нулю. С другой стороны, кодовая комби-

нация вида 0 0...g(x)...0 , т.е. содержащая комбинацию, соответствующую g(x) в

(n k +1) смежных разрядах и нули в остальных, делится на g(x) и тоже принад-

лежит порождаемому им коду. Эти комбинации должны отличаться не менее чем в d0 разрядах, а значит, g(x) должен иметь не менее d0 единиц.

Весьма важный в практическом отношении подкласс полиномиальных кодов составляют циклические коды, обладающие тем свойством, что циклическая перестановка символов в кодовом слове дает другое слово, но того же кода. Порождающий полином g(x) циклического кода должен быть делителем много-

члена xn +1. Убедимся в этом.

Пусть кодовое слово S2 получено из S1 путем циклического сдвига сим-

волов влево, а самый левый символ переведен на освободившееся место на правом конце. Если S1 имеет в качестве левого символа 0, то циклический сдвиг эквивалентен только умножению S1(x) на x : S2 (x)= xS1(x). Очевидно, если S1(x)

делится на g(x), то и S2 (x) также делится на g(x).

Если левый символ S1 равен 1, то циклический сдвиг влево эквивалентен умножению S1(x) на x , вычитанию из произведения члена xn и добавлению единицы в младший разряд: S2 (x)= xS1(x)xn +1 = xS1(x)(xn 1).

Ясно, что для делимости S2 (x) на g(x) необходимо, чтобы многочлен xn +1 также делился на g(x) (сложение и вычитание здесь эквивалентны).

В табл. 5.5 приведено разложение полинома xn +1 над GF(2) на неприводимые многочлены для значений n 31 . Более обширные сведения за-

215

интересованный читатель сможет найти в [30]. Таблица позволяет выбирать порождающие полиномы g(x) в зависимости от числа n символов в коде и k

информационных символов, поскольку степень g(x) равна n k .

Любой делитель полинома xn +1 или любое произведение делителей мо-

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

Например, при

n =15 g(x)= x4 + x +1 и g(x)= x4 + x3 +1 порождают код (15,11,3)

– код Хэмминга

с кодовым расстоянием d0 = 3;

код

(15,7,5) порождается

полиномом

g(x)= (x4

+ x +1)(x4

+ x3 + x2 + x +1);

код

 

(15,5,7)

полиномом

g(x)= (x2

+ x +1)(x4

+ x +1)(x4 + x3 + x2 + x +1);

код

(15,4,8)

полиномом

g(x)= (x +1)(x2 + x +1)(x4 + x +1)(x4 + x3 + x2 + x +1) и т.д.

Для n = 3,5,11,13,19,29 разложение имеет вид: xn +1 = (x +1)(xn1 + xn2 +... + x +1), что определяет лишь два типа кодов этих длин.

1. Коды (n,n 1,2) с простой проверкой на четность, кодовым расстоянием d0 = 2 и порождающим полиномом g(x)= x +1, позволяющим лишь обнаружи-

вать ошибки нечетной кратности.

2. Коды (n,1, n) нечетной длины с повторением, d0 = n , g(x)= xn1 + xn2 +... + x +1.

 

 

В таблице отсутствуют разложения для четных n .

Но поскольку

(xm +1)(xm +1)= x2m + xm + xm +1 = (x2m +1),

то

при

четном

n

полином

(x

n

 

n 2

 

n 2

 

 

 

 

 

 

 

 

+1)= x

 

+1 x

 

+1 и может быть сведен к произведению полиномов нечет-

 

 

 

 

 

 

 

 

 

 

 

 

 

ных степеней. Например, (x6 +1)= (x3 +1)(x3 +1)= (x +1)(x2 + x +1)(x +1)(x2 + x +1).

 

 

Неприводимые полиномы, являющиеся примитивными, подчеркнуты в

табл. 5.5.

 

 

 

 

 

 

 

 

 

 

 

 

Полином h(x),

удовлетворяющий равенству

(xn +1)= g(x)h(x),

называется

проверочным полиномом и тоже может быть использован для формирования кода.

216

Таблица5.5

 

 

Разложение полинома xn +1 на делители

 

 

 

n

 

Делители полинома xn +1

 

 

 

7

 

(x +1)(x3 + x +1)(x3 + x2 +1)

 

 

 

9

 

(x +1)(x2 + x +1)(x6 + x3 +1)

 

 

 

15

 

(x +1)(x2 + x +1)(x4 + x +1)(x4 + x3 +1)(x4 + x3 + x2 + x +1)

 

 

 

17

 

(x +1)(x8 + x5 + x4 + x3 + x +1)(x8 + x7 + x6 + x4 + x2 + x +1)

 

 

 

21

 

(x +1)(x2 + x +1)(x3 + x +1)(x3 + x2 +1)(x6 + x4 + x2 + x +1)(x6 + x5 + x4 + x2 +1)

 

 

 

23

 

(x +1)(x11 + x10 + x6 + x5 + x4 + x2 +1)(x11 + x9 + x7 + x6 + x5 + x +1)

 

 

 

25

 

(x +1)(x4 + x3 + x2 + x +1)(x20 + x15 + x10 + x5 +1)

 

 

 

27

 

(x +1)(x2 + x +1)(x6 + x3 +1)(x18 + x9 +1)

 

 

 

31

 

(x +1)(x5 + x3 +1)(x5 + x2 +1)(x5 + x4 + x3 + x2 +1)(x5 + x4 + x3 + x +1)×

 

 

×(x5 + x4 + x2 + x +1)(x5 + x3 + x2 + x +1)

 

 

 

 

Еще

один способ задания кода основан на использовании порождающей

или проверочной матриц. Порождающая матрица G имеет k строк и n столбцов, содержит k базисных линейно независимых кодовых комбинаций. Наиболее удобна для пользования каноническая форма порождающей матрицы. Ее строки в своей информационной части образуют квадратную k ×k единичную матрицу.

Sδ1

G = ...Sδ 2

Sδk

 

1

0

...

0

b11

b12

... b1nk

 

 

=

0

1

...

0

b21

b22

...

b2nk

.

(5.16)

 

... ... ... ... ... ... ... ...

 

 

 

0

0

...

1

bk1

bk 2

...

bknk

 

 

Любая другая комбинация кода может быть получена как взвешенная (с весами ai от источника сообщений) сумма строк порождающей матрицы:

S = a1Sδ1 +a2Sδ 2 +... +ak Sδk .

соответствует произведению матриц

S = AG .

Так, для двоичного кода (7, 4, 3) порождающая матрица имеет вид:

217

1000101 G7×4 = 01001110010110 .

0001011

Очевидна связь между порождающим полиномом g(x) и строками матри-

цы G . Избыточные символы bi первой строки в соответствии с (5.15) есть оста-

ток от деления n -символьной комбинации 100 ... 0 на g(x), второй –остаток от деления комбинаций 010 ... 0 и т.д.

Проверочная матрица H имеет n k строк и n столбцов и связана с порождающей матрицей уравнением

HGT = 0 ,

где T – символ транспонирования. Эквивалентное уравнение имеет вид:

GHT = 0 .

Для двоичного кода (7, 4, 3)

H =

1110100

.

(5.17)

0111010

 

1101001

 

 

Кодирование с помощью проверочной матрицы производится на основе уравнений:

k

SH T = 0 или bj = aihij , j =1,2,..., n k ,

i =1

где hij – элемент i -й строки и j -го столбца матрицы H .

Обнаружение и исправление на приемной стороне системы передачи информации части ошибок, произошедших в кодовых комбинациях в процессе передачи, составляет сущность декодирования. При сравнительно небольшой длине кодовых слов распространены так называемые неалгебраические методы декодирования [26]. Они основаны на анализе остатков от деления принятых комбинаций на порождающий полином g(x) или реализации системы оценок каждого из принятых символов, построенной на основе порождающей или проверочной матриц.

Вопросы организации кодеров и декодеров в зависимости от структуры

218

полиномов g(x) и h(x), а также матриц G и H достаточно подробно рассмот-

рены в монографиях [3, 26]. Однако при больших длинах используемых кодов подобные методы декодирования реализуются слишком громоздко. Кроме того, мажоритарные или пороговые декодеры, основывающиеся на анализе системы оценок каждого символа принятой комбинации, имеют тот недостаток, что необходимую систему оценок удается составить не для всех кодов.

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

5.4.4. Циклические коды и корни полиномов

Поскольку многочлен S(x) каждого кодового слова делится на порож-

дающий полином g(x), то корни g(x), при подстановке в g(x) обращающие его в 0, являются также и корнями многочлена S(x). Число таких корней равно сте-

пени порождающего полинома n k .

Следовательно, многочлен S(x) с коэффициентами из поля GF(p) будет кодовым словом в том и только в том случае, если элементы β1, β2 ,..., βnk из рас-

ширения GF(pm ) являются его корнями.

Установим связь элементов проверочной матрицы H с корнями порождающего полинома g(x), а также обсудим, как находить сами корни и, наоборот,

по заданным корням определять порождающий полином.

Заметим прежде, что до сих пор использовалась запись полиномов с расположенной слева старшей степенью переменной x . Такая форма записи была удобна для выполнения простейших алгебраических действий над полиномами: сложения, умножения, деления полиномов. Однако при предстоящем рассмотрении алгебраических процедур декодирования предпочтительна обратная запись многочленов, начиная с нулевой степени переменной.

Условие S(βj )= 0 в развернутом виде означает

219

GF(2).
S(β p )= S p (β).

 

 

 

n1

 

 

 

 

 

 

 

s0βj0 + s1β1j +... + sn2βjn2 + sn1βjn1 = s j βij = 0 , j =

 

.

(5.18)

1, n k

 

 

 

i=1

 

 

 

 

 

 

 

Такая запись эквивалентна матричной

 

 

 

 

 

 

 

 

SH T = 0 ,

 

 

 

 

 

 

(5.19)

Где

 

 

 

 

 

 

 

 

 

 

 

β0

β

β2

...

βn1

 

 

 

 

 

 

 

1

1

1

 

1

 

 

 

 

 

H =

β20

β2

β22

...

β2n1

 

.

 

 

...

...

...

... ...

 

 

 

 

 

 

βn0k

βnk

βn2k

...

βnnk1

 

 

 

Выражение (5.19) является определением проверочной матрицы H [3]. Строки H содержат степени корней порождающего полинома g(x), а следова-

тельно, и корней кодовых многочленов. Каждый элемент H есть m - символьный столбец p -ичного представления корня – элемента поля GF(pm ).

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

выми являются строки, соответствующие множеству β, β p , β p2 , β p3 ,... корней од-

ного циклотомического класса показателей (см. 5.3.5). Функциональная зависимость подобных строк вытекает из свойства многочленов над конечным полем

GF(p):

Из каждого такого множества корней β, β p , β p2 , β p3 ,... следует выбрать по одному (любому), и соответствующие им строки оставить в матрице, а остальные удалить как функционально зависимые от удерживаемых.

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

1. Порождающий полином g(x) неприводим и примитивен, а длина кода n = 2m 1. Коды таких длин называют примитивными независимо от вида порождающего полинома.

Очевидно, в этом случае g(x) может быть использован в качестве поли-

нома, задающего поле GF(2m ). Корнем его является примитивный элемент поля

α, а показатели всех корней принадлежат одному циклотомическому классу.

220

Соседние файлы в папке Корольов