Корольов / Теория связи
.pdfПроверочная матрица такого кода имеет вид
H= [α0α1α2...αn−1 ],
асам код носит название кода Хэмминга.
Вкачестве примера выберем код (7, 4, 3), порождающий полином которого g(x)= x3 + x +1 примитивен, а проверочная матрица
0010111 H = [1αα2...α6 ]= 0101110 ,
1001011
с точностью до порядка следования столбцов совпадает с ранее полученной проверочной матрицей (5.17) этого же кода. Смена порядка на обратный объясняется изменением в (5.18) порядка записи степеней переменной x .
2. Порождающий полином g(x) неприводим, но не является примитив-
ным, длина кода n = 2m −1. В этом случае элемент α поля GF(2m ) не обязательно является его корнем, и при отыскании корня возникают дополнительные трудности. Таков, например, полином g(x)= x6 + x3 +1 для кода с n = 9 (табл. 5.5).
Следует прибегнуть к таблицам неприводимых полиномов.
В табл. 5.6 представлены полиномы степеней до 8, заимствованные из [33], где можно найти сведения о полиномах до 34-й степени.
Неприводимые многочлены даны в восьмеричном представлении. Каждую цифру соответствующего многочлену числа следует перевести в трехразрядное двоичное число и рассматривать его разряды как коэффициенты при степенях x многочлена. Например, среди полиномов степени 5 есть восьмеричное число 67. Это означает: 67 =110111 ↔ x5 + x4 + x2 + x +1.
Примитивные многочлены подчеркнуты. Первым среди многочленов данной степени помещен примитивный, и с его помощью строится поле GF(2m ). Перед восьмеричным представлением стоит десятичное число, отде-
ленное точкой и означающее показатель степени примитивного элемента, являющегося корнем следующего за ним полинома, причем большие степени записываются слева. Например, для нахождения корня полинома 6-й степени 127 нужно задать с помощью примитивного полинома 103 поле GF(26 ) и в
221
Таблица 5.6
Неприводимые полиномы над полем GF(2)
Степень m
Восьмеричное представление полиномов
полинома
2 |
1.7 |
|
|
|
|
|
|
3 |
1.13 |
|
|
|
|
|
|
|
|
|
|
|
|
||
4 |
1.23 |
3.37 |
|
|
|
|
|
5.007 |
|
|
|
|
|||
5 |
1.45 |
3.75 |
5.67 |
|
|
|
|
6 |
1.103 |
3.127 |
5.147 |
|
7.111 |
|
9.115 |
|
11.155 |
21.007 |
|
|
|
|
|
7 |
1.211 |
3.217 |
5.235 |
|
7.365 |
|
9.277 |
|
11.325 |
13.203 |
19.303 |
|
21.345 |
|
|
8 |
1.435 |
3.567 |
5.763 |
|
7.551 |
|
9.765 |
|
11.747 |
13.453 |
15.727 |
|
17.023 |
|
19.545 |
|
|
|
|
|
|
|
|
|
21.613 |
23.543 |
25.433 |
|
27.477 |
|
37.537 |
|
|
|
|
|
|
|
|
|
43.703 |
45.471 |
51.037 |
|
85.007 |
|
|
|
|
|
|
|
|
|
|
качестве корня β полинома 127 взять элемент α3 этого поля. Каждый из мно-
гочленов табл. 5.6 является минимальным многочленом указанного перед ним корня.
Многочлен, двойственный неприводимому, также неприводим, а двойственный примитивному – примитивен. Двойственные многочлены не помещены в табл. 5.6, однако могут быть получены из представленных в ней переменой порядка следования коэффициентов при степенях x на обратный. Так, полином, двойственный 67, имеет вид: 111011 ↔ x5 + x4 + x3 + x +1.
Показатель i степени примитивного элемента поля, соответствующий корню двойственного многочлена, определяется как i = 2m −1− j , где j -
степень примитивного элемента – корня приведенного в табл. 5.6 полинома. Поскольку 2m −1 и j нечетны, то i всегда четно. Например, корнем полинома,
222
двойственного полиному |
23, является |
элемент β =α14 , |
так как |
i =15 −1 =14 , двойственного полиному 37 – элемент β =α12 , и т.д. |
|
||
Минимальный многочлен элемента α j включен в таблицу, |
даже если |
||
степень многочлена меньше |
m (т.е. показатель |
j принадлежит циклотомиче- |
скому классу, содержащему меньшее m число компонентов, например, классу K5 (табл. 5.3)). Таким минимальным многочленом корня α5 в поле GF(24 ) явля-
ется 007 второй степени. В табл. 5.6 подобные многочлены начинаются с нуля. 3. Порождающий полином g(x) представляет собой произведение не-
скольких неприводимых многочленов, каждый из которых имеет корни в GF(2m ), и по-прежнему n = 2m −1. Например, g(x)= (x2 + x +1)(x4 + x +1)=
= x6 + x5 + x4 + x3 +1 (табл. 5.5) порождает код (15, 9, 3).
Очевидно, в этом случае среди n − k корней полинома g(x) будут корни каждого из сомножителей, отыскиваемые изложенным выше способом.
4. Общий случай: порождающий полином g(x) либо неприводим, либо
является произведением неприводимых многочленов; длина кода n ≠ 2m −1. Корни многочлена для таких значений n являются элементами не-
которого поля GF(2l ), причем показатели этих элементов принадлежат одно-
му циклотомическому классу K5 по модулю (2l −1). Полином имеет кор-
нями все элементы поля GF(2l ), в том числе и корни полинома xn +1. Следова-
тельно, x2l −1 +1 делится на xn +1, а 2l −1 делится на n (см. 5.3.5), т.е. 2l −1 = nr , где r – целое число, причем одному значению n может соответствовать множество пар чисел (l, r). Например, при n = 9 справедливы равенства 26 −1 = 9 7 ;
и т.д.
Поскольку корни xn +1 лежат в поле GF(2l ), то корни неприводимых полиномов – делителей двучлена xn +1 также принадлежат этому полю, и их следовало бы обозначать показателями j степени примитивного элемента по-
ля GF(2l ), как это делалось в табл. 5.6. По так как одному значению и может отвечать несколько полей GF(2l ), в перечнях кодов [33] корни помечаются
223
отношением j |
. |
|
l |
|
|
Табл. 5.7 содержит заимствованные из [30] двоичные циклические коды |
||
(n,k,d0 ) нечетной длины до n = 23 с указанием нормированных показателей |
j |
|
|
|
l |
корней. Здесь же приведены значения конструктивных расстояний δ , необходимые для изложения материала следующих разделов.
|
|
|
|
|
|
|
|
|
|
Таблица 5.7 |
|
|
|
|
Нормированные показатели корней |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
n |
k |
d0 |
δ |
R |
|
n |
k |
d0 |
δ |
R |
|
7 |
4 |
3 |
3 |
1 |
|
15 |
4 |
8 |
8 |
0,1,3,5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
3 |
4 |
4 |
0,1 |
15 |
3 |
5 |
5 |
1,3,7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
3 |
3 |
3 |
1 |
15 |
2 |
10 |
10 |
0,1,3,7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
2 |
6 |
6 |
0,1 |
17 |
9 |
5 |
4 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
11 |
3 |
3 |
1 |
17 |
8 |
6 |
6 |
0,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
10 |
4 |
4 |
0,1 |
21 |
16 |
3 |
3 |
7,3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
9 |
3 |
3 |
1,5 |
21 |
15 |
4 |
3 |
0,7,3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
9 |
4 |
3 |
3,5 |
|
21 |
14 |
4 |
4 |
0,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
8 |
4 |
4 |
0,1,5 |
|
21 |
13 |
4 |
3 |
7,9,3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
8 |
4 |
3 |
0,3,5 |
|
21 |
12 |
4 |
3 |
0,7,9,3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
7 |
3 |
3 |
1,7 |
|
21 |
11 |
6 |
6 |
0,3,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
7 |
5 |
5 |
1,3 |
|
21 |
10 |
5 |
5 |
7,3,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
6 |
6 |
6 |
0,1,3 |
|
21 |
9 |
5 |
6 |
9,3,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
6 |
6 |
6 |
0,1,7 |
|
21 |
8 |
6 |
6 |
0,9,3,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
5 |
3 |
3 |
1,5,7 |
|
21 |
6 |
7 |
7 |
3,5,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
5 |
7 |
7 |
1,3,5 |
|
23 |
12 |
7 |
5 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
4 |
6 |
6 |
0,1,5,7 |
|
23 |
11 |
8 |
6 |
0,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Например, для кода (9, 3, 3) величина |
j |
=1. Это означает, что корнем |
|
l |
|
порождающего полинома данного кода в поле GF(26 ) является элемент α7 , в |
||
поле GF(212 ) – элемент α455 и т.д. |
|
|
224
В заключение этого раздела обсудим задачу, обратную рассмотренной: по заданным корням требуется построить порождающий полином и код. Такая постановка характерна при формировании БЧХ-кодов.
Пусть β1, β2 ,..., βr – элементы поля GF(2m ), являющиеся заданными корнями,
а M1(x), M2 (x),..., Mr (x) – соответствующие им минимальные многочлены. Каждый из корней является некоторой степенью примитивного элемента поля. Если все показатели степени принадлежат разным циклотомическим классам по модулю (2m −1), то в соответствии с (5.9), (5.10) и (5.11) порождающий полином
r |
|
g(x)= ∏Mi |
(5.20) |
i=1
В общем случае, когда некоторые из заданных корней могут принадлежать одному циклотомическому классу, т.е. находиться между собой в соотношении β, β2 , β4 ,... , порождающий полином (5.20)
g(x)= НОК[M1 (x), M2 (x),..., Mr (x)]. |
(5.21) |
5.4.5. Спектральное описание циклических кодов
Рассмотрим еще один подход к описанию полиномиальных кодов, который основан на использовании дискретного преобразования Фурье (ДПФ) кодовых последовательностей, заданных над конечным полем GF(p). Данный под-
ход, подробно изложенный в [30], позволяет в ряде случаев упростить процедуры кодирования и декодирования.
Пусть V = (v0 ,v1,...,vn−1 ) – последовательность из n элементов конечного по-
ля GF(p), причем n делит pm −1 для некоторого m , и пусть α – примитивный элемент порядка n в расширении поля GF(pm ). Дискретным преобразованием Фурье вектора V над конечным полем GF(p) называется последовательность F (v) = (f0(v), f1(v),..., fn(−v1)) элементов поля GF(pm ) задаваемая равенством
n−1 |
|
f j(v ) = ∑viαij , j = 0,1,..., n −1. |
(5.22) |
i=0
225
В матричной форме ДПФ может быть записано следующим образом
|
|
|
1 |
1 |
1 |
... |
1 |
|
|
|
F (v ) = (v0v1...vn−1 ) |
1 |
α |
α2 |
... |
αn−1 |
. |
|
|
|
... ... |
... |
... ... |
|
||
|
|
|
1 |
αn−1 |
α2(n−1) |
... α(n−1)2 |
|
|
Такое определение аналогично определению ДПФ в поле комплексных |
||||||||
чисел, |
где |
α заменяется на |
корень n -й |
степени из единицы, равный |
||||
− j |
2π |
В связи с такой аналогией оказывается удобным называть индекс |
||||||
exp |
|
|||||||
|
n |
|
|
|
|
|
|
|
i «дискретным временем», а последовательность v0 , v1,..., vn−1 – временной после-
довательностью (функцией). Тогда индекс j можно назвать «частотой», а по-
следовательность f0(v), f1(v),..., fn(−v1) – частотным спектром или просто спектром.
Если векторы V и F (v) |
связаны равенством (5.22), то существует обрат- |
||||
ное преобразование Фурье |
|
|
|
|
|
|
vi = |
1 n−1 (v ) −ij |
. |
(5.23) |
|
|
n |
∑ f j α |
|||
|
|
j=0 |
|
|
|
Равенства (5.22) и (5.23) часто называют парой преобразований Фурье. |
|||||
Укажем на два наиболее важных свойства ДПФ. |
|
||||
1. Пусть U , V и W – |
временные последовательности, |
причем wi =uivi , |
|||
i = 0,1,..., n −1. Тогда |
|
|
|
|
|
n−1
f j(v) = ∑ fk(u ) fn(−vk) . k=0
Справедливо и обратное утверждение. Если
n−1
f j(w) = f j(u ) f j(v ) , i = 0,1,...,n −1, то wi = ∑ulvi −l . l =0
Эти утверждения носят название теорем о свертке в частотной и временной областях.
2. Если вектор V во временной области и его преобразование Фурье F (v) заданыввидеполиномов
V(x)= ∑vi xi
i=0n−1
n−1
и F (v)(z)= ∑ fi(v)zi .
i=0
226
то элемент α j поля GF(pm ) является корнем полинома тогда и только тогда,
когда частотный компонент f j(v ) равен нулю; элемент α− j является корнем
F (v)(z) тогда и только тогда, когда i -я компонента vi равна нулю.
На основе спектрального подхода можно дать еще одно равнозначное определение циклическому коду как множеству таких слов над конечным полем GF(p), у которых все спектральные компоненты, принадлежащие заданному множеству частот, называемых проверочными, равны нулю.
5.4.6. Простейшие блочные линейные коды
Коды длины n и размерности k могут иметь разные значения кодового расстояния d0 и обладать поэтому разной помехоустойчивостью. Оптимальны-
ми называются коды, обеспечивающие при заданных n и k максимальную вероятность правильного приема кодового слова. Они, как правило, имеют наибольшее кодовое расстояние. Числа n и k определяют скорость кода, равную k n двоичных единиц на 1 символ.
При заданной величине кодового расстояния d0 существует нижняя гра-
ница необходимого количества избыточных символов в кодовых комбинациях.
qИС |
(d0 −1) |
|
|
Выражение для нижней границы (n − k )min = log2 |
∑C2ni |
|
получается в результа- |
|
i =0 |
|
|
те приравнивания числа 2(n−k ) −1 различных ненулевых синдромов количеству
qИС |
(d0 −1) |
|
исправляемых кодом ошибок, начиная с их нулевой кратности. |
|
∑C2ni |
|
|
|
i =0 |
|
|
Коды, для которых достигается нижняя граница, называются совершенными или плотноупакованными. Такие коды исправляют все ошибки кратности до qИС включительно и ни одной ошибки более высоких кратностей.
Рассмотрим некоторые простейшие оптимальные коды.
Код с простой проверкой на четность обозначается (n,n −1,2) и содержит слова с одним проверочным символом S = (a1, a2 ,..., an−1,b). Проверочный символ
227
есть сумма по модулю 2 информационных:
b = a1 + a2 +... + an−1 .
Видно, что b =1, если число единиц в информационной последовательности нечетное, и b = 0 , если число единиц – четное. Таким образом, наличие проверочного символа позволяет всем кодовым словам придать общий признак: четность числа единиц в слове.
Порождающая матрица кода имеет n −1 строки n столбцов:
|
1 |
0 |
... |
0 |
1 |
|
G = |
0 |
1 |
... |
0 |
1 |
. |
|
... ... ... ... ... |
|
||||
|
0 |
0 |
... |
1 |
1 |
|
Любые строки матрицы содержат 2 единицы и отличаются значениями символов на двух позициях, поэтому кодовое расстояние равно 2. Следовательно, код может лишь обнаруживать однократные ошибки (qоб = 2).
Проверочная матрица кода содержит одну строку
H = 1 1 ... 1 .
и указывает, что для проверки основного признака кодовых слов надо сложить по модулю 2 все принятые символы.
Декодирование кода основано на проверке четности числа единиц в принятой последовательности Y . Для этого вычисляется синдром, содержащий один компонент
C |
= |
YH |
T = € |
+ € |
+ |
... |
+ |
€ |
|
+ € |
|
|
|
a1 |
a2 |
|
|
an−1 |
b , |
|
|
||||
или с учетом Y = S + E и SH T |
= 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
C = e1 + e2 +... + en . |
|
|
|
|||||||
Значение C = 0 соответствует четному числу единиц в Y . |
|
В этом случае |
||||||||||
принимается решение об отсутствии ошибок, |
|
€ |
= S . Ясно, что |
|||||||||
т.е. полагается S |
|
|||||||||||
при действии ошибки четной кратности C = 0 , |
и данное решение будет непра- |
|||||||||||
вильным. |
|
|
|
|
|
|
|
|
|
|
|
|
Если C =1 , то фиксируется наличие ошибки. Очевидно, |
значение C =1 |
|||||||||||
даст любая ошибка нечетной кратности, |
т.е. |
код обнаруживает часть ошибок |
228
большей кратности, чем qоб =1. Несомненным достоинством этого кода является высокая скорость, характеризуемая величиной (n −1)n .
Код нечетной длины с повторением обозначается (n,1, n), имеет кодовые слова [ab1b2...bn−1 ] с одним информационным символом и n −1 проверочными, кото-
рые повторяют информационный:
b1 = b2 =... = bn−1 = a .
Порождающая матрица состоит из одной строки G = [11...1], так что код с повторением имеет всего два слова: одно содержит только нули, второе – только единицы. Понятно, что кодовое расстояние равно n , отсюда
qоб = n −1, qИС = |
(n −1) |
. |
|||||
|
|
|
|
|
|
2 |
|
Проверочная матрица кода: |
|
|
|
|
|
|
|
|
1 |
1 |
0 |
0 |
... |
0 |
|
|
|
||||||
H = |
1 |
0 |
1 |
0 |
... |
0 |
. |
|
... ... ... ... ... ... |
|
|||||
|
1 |
0 |
0 |
0 |
... |
1 |
|
имеет n −1 строк и n столбцов и указывает, что сумма первого и любого другого символов кодового слова должна равняться 0. Число избыточных символов в коде достигает нижней границы, следовательно, коды нечетной длины с повторением относятся к совершенным.
Проверочная матрица кода (n,n −1,2) с простой проверкой на четность совпадает с порождающей матрицей кода с повторением (n,1, n), а порождаю-
щая матрица первого кода подобна проверочной матрице второго. Такие коды называются дуальными.
Коды Хэмминга имеют кодовое расстояние d0 = 3, исправляют все одно-
кратные ошибки или обнаруживают двукратные, т.е. qоб = 2 , qИС =1. Зависимо-
сти проверочных символов от информационных выбраны так, что каждой однократной ошибке соответствует свое ненулевое значение синдрома. Поэтому для кодов Хэмминга число ненулевых синдромов равно числу символов в кодовых комбинациях (числу однократных ошибок):
229
n = 2n−k −1. |
(5.24) |
Следовательно, для кодов Хэмминга достигается нижняя граница числа (n −k )= log2 (n +1) избыточных символов, а сами коды являются совершенными.
Примеры кодов: (3, 1,3), (7,4, 3), (15, И, 3), (31,26, 3), (63, 57, 3),....
Единственный код Голея (23, 12, 7) завершает ряд совершенных кодов. Расширенный код Хэмминга образуется из совершенного путем добавле-
ния общей проверки на четность, т. е. проверочного символа, равного сумме всех символов кода Хэмминга. Код имеет кодовое расстояние d0 = 4 , что позво-
ляет исправить все однократные и одновременно обнаружить все двукратные ошибки. Такой режим целесообразен, в частности, в системах передачи информации с обратной связью.
При добавлении проверочного символа длина кода становится четной, а соотношение (5.24) преобразуется к виду n = 2n−k −1 . Расширенные коды Хэм-
минга образуют ряд: (4, 1,4), (8,4,4), (16, 11,4), (32, 26,4), (64,57,4),....
Коды этого вида относятся к квазисовершенным, т.е. исправляющим все ошибки кратности по qИС включительно и часть ошибок кратности qИС +1 .
5.5. Коды Боуза-Чоудхури-Хоквингема 5.5.1. МетодызаданиякодовБЧХ
Коды Боуза-Чоудхури-Хоквингема (БЧХ) составляют один из больших классов линейных кодов, исправляющих ошибки. Причем метод построения этих кодов задан явно.
Код БЧХ длины n , исправляющий qИС -кратные ошибки, это циклический блочный код над полем GF(p), корнями порождающего многочлена которого
являются βv , βv+1,..., βv+2qИС−1 , где β – элемент конечного поля v – целое
число.
В соответствии с этим определением и выражением (5.21) порождающий многочлен кода БЧХ может быть представлен наименьшим общим кратным
g(x)= НОК[Mv (x), Mv+1 (x),..., Mv+2qИС−1 (x)],
230