Таблица 4.7 Некоторые примитивные полиномы
m |
|
|
|
f ( X ) |
m |
|
|
|
f ( X ) |
||
|
|
|
|
|
|
|
|
|
|
||
3 |
1 |
X X 3 |
|
|
14 |
1 |
X X 6 |
X 10 |
X 14 |
||
4 |
1 |
X |
X 4 |
|
|
15 |
1 |
X |
X 15 |
|
|
5 |
1 X 2 |
X 5 |
|
|
16 |
1 X X 3 |
X 12 |
X 16 |
|||
6 |
1 |
X X 6 |
|
|
17 |
1 |
X 3 |
X 17 |
|
|
|
7 |
1 |
X 3 |
X 7 |
|
|
18 |
1 |
X 7 |
X 18 |
|
|
8 |
1 |
X 2 |
X 3 |
X 4 |
X 8 |
19 |
1 |
X X 2 |
X 5 |
X 19 |
|
9 |
1 |
X 4 |
X 9 |
|
|
20 |
1 |
X 3 |
X 20 |
|
|
10 |
1 |
X 3 |
X 10 |
|
|
21 |
1 |
X 2 |
X 21 |
|
|
11 |
1 |
X 2 |
X 11 |
|
|
22 |
1 |
X |
X 22 |
|
|
12 |
1 |
X X 4 |
X 6 |
X 12 |
23 |
1 |
X 5 |
X 23 |
|
|
|
13 |
1 |
X X 3 |
X 4 |
X 13 |
24 |
1 |
X X 2 |
X 7 |
X 24 |
||
Таким образом, из (4.33) и (4.34) следует, что 3 представляется в виде |
|
взвешенной суммы всех |
- членов более низкого порядка. Фактически так |
можно представить все степени . Для рассматриваемого случая в соответствии с рисунком 4.13 и выражением (4.33) необходимо представить значения
элементов поля |
4 , 5 , |
6 через |
значения |
0 , |
1, |
3 . |
Результаты |
таких |
|
представлений приведены ниже. С учетом уравнения (4.34) получим |
|
||||||||
|
|
4 |
3 |
(1 |
) |
|
2. |
|
(4.35,а) |
Используя результаты уравнения (4.35,а) определим |
|
|
|
|
|||||
|
|
5 |
4 |
( |
2 ) |
2 |
3. |
|
(4.35,б) |
Из уравнений (4.34) и (4.35) получаем |
|
|
|
|
|
|
|||
|
|
|
5 |
1 |
2. |
|
|
|
(4.35,в) |
Используя результат уравнения (4.35,в), получим |
|
|
|
|
|||||
|
6 |
5 |
(1 |
2 ) |
|
2 |
3 |
1 2. |
(4.35,г) |
А теперь из уравнения (4.35.г) вычисляем |
|
|
|
|
|
||||
|
7 |
6 |
|
(1 2 ) |
|
3 |
1 |
0. |
(4.35,д) |
131
Так как, в соответствии с (4.35,д) |
7 |
0 , то восемью элементами |
|
конечного поля GF(23) будут |
|
|
|
0, o , 1, 2 , |
3 , |
4 , 5 , 6 . |
(4.36) |
Отображение элементов поля в базисные элементы, которое описывается уравнением (4.31), можно проиллюстрировать с помощью схемы линейного регистра сдвига с обратной связью (Linear Feedback Shift Register — LFSR) (рис. 4.14). Схема генерирует (при m = 3) 2m -1 ненулевых элементов поля и, таким образом, обобщает процедуры, описанные в уравнениях (4.35)-(4.36). Следует отметить, что показанная на рис. 4.14 обратная связь соответствует коэффициентам полинома f (X ) 1 X X 3 , как и в случае двоичных циклических кодов.
Пусть вначале схема находится в некотором состоянии, например, 100. При выполнении правого сдвига на один такт можно убедиться, что каждый из элементов поля (за исключением нулевого), показанных на рис. 4.13, циклически будет появляться в разрядах регистра сдвига. На данном конечном поле GF(23) можно определить две арифметические операции – сложение и умножение. В таблице 4.8 показана операция сложения, а в табл. 4.9 – операция умножения, но только для ненулевых элементов. Правила суммирования следуют из уравнений (4.34) и (4.35); и их можно доказать, обратившись к рисунку 4.13, поскольку сумму двух элементов поля можно рассчитать путем сложения (по модулю 2) соответствующих коэффициентов их базисных элементов. Правила умножения, указанные в таблице 4.9, следуют из обычной процедуры, в которой произведение элементов поля вычисляется путем сложения по модулю (2m - 1) их показателей степеней или, для данного случая, по модулю 7.
X0 |
X1 |
X2 |
X3 |
T1 |
T2 |
T3 |
Рис. 3.18 Отображение элементов поля Галуа в базисные элементы
132
Таблица 3.6 Операция сложения для GF(8) при f (X ) |
1 |
X |
X 3 |
||||||||
|
|
0 |
1 |
2 |
3 |
4 |
|
|
5 |
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
3 |
6 |
1 |
5 |
|
|
4 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
3 |
0 |
4 |
0 |
2 |
|
|
6 |
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
6 |
4 |
0 |
5 |
1 |
|
|
3 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
1 |
0 |
5 |
0 |
6 |
|
|
2 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
5 |
2 |
1 |
6 |
0 |
|
|
0 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
4 |
6 |
3 |
2 |
0 |
|
|
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
2 |
5 |
0 |
4 |
3 |
|
|
1 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 3.7 Операция умножения для GF(8) при f (X ) |
1 |
|
X |
X 3 |
|||||||
|
|
0 |
1 |
2 |
3 |
4 |
|
|
5 |
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
2 |
3 |
4 |
|
|
5 |
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
2 |
3 |
4 |
5 |
|
|
6 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
2 |
3 |
4 |
5 |
6 |
|
|
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
3 |
4 |
5 |
6 |
0 |
|
|
1 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
4 |
5 |
6 |
0 |
1 |
|
|
2 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
5 |
6 |
0 |
1 |
2 |
|
|
3 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
6 |
0 |
1 |
2 |
3 |
|
|
4 |
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
4.6.2 Кодирование Рида-Соломона
В уравнении (3.32) представлена наиболее распространенная форма
записи кодов Рида-Cоломона через параметры n,k,t |
и |
некоторое |
|
положительное число m >2 |
|
|
|
(n,k) (2m |
1,2m 1 2t). |
|
(4.37) |
Здесь n k 2t – число контрольных |
символов, а t |
— |
количество |
ошибочных битов в символе, которые может исправить код. Генерирующий полином для кода Рида-Соломона имеет следующий вид
P(X ) A |
A X |
A X 2 |
... A |
X 2t 1 |
X 2t . |
(4.38) |
0 |
1 |
2 |
2t 1 |
|
|
|
Степень полиномиального генератора равна числу контрольных символов. Коды Рида-Соломона являются подмножеством кодов БХЧ, которые обсуждались выше и показаны в таблице 4.5. Поэтому связь между степенью полиномиального генератора и числом контрольных символов, как и в кодах БХЧ, не должна оказаться неожиданностью. В этом можно убедиться, подвергнув проверке любой генератор из таблицы 4.7. Поскольку
133
полиномиальный генератор имеет порядок 2t, мы должны иметь в точности 2t последовательные степени , которые являются корнями полинома. Обозначим корни Р(X) как 2t . Нет необходимости начинать именно с корня это
можно сделать с помощью любой степени .
Возьмем к примеру код (7, 3) с возможностью коррекции двухсимвольных ошибок. Мы выразим полиномиальный генератор через 2t = п - k = 4 корня следующим образом
P( X ) ( X )( X |
2 )( X |
3 )( X |
4 ) |
|
||
( X 2 |
( |
2 ) X |
3 )( X 2 |
( 3 |
4 ) X |
7 ) |
( X 2 |
4 X |
3 )( X 2 |
6 X |
0 ) |
|
(4.39) |
X 4 |
( 4 |
6 ) X 3 ( 3 |
10 0 ) X 2 ( 4 |
9 ) X 3 |
||
X 4 |
3 X 3 |
0 X 2 |
1 X |
3. |
|
|
Поменяв порядок расположения членов полинома на обратный и заменив знаки "минус" на "плюс", так как над двоичным полем +1 = -1, полиномиальный генератор Р(X) можно будет представить следующим образом
P(X ) 3 1X 0 X 2 3 X 3 X 4. |
(4.40) |
Кодирование в систематической форме.
Так как код Рида-Соломона является циклическим, кодирование в систематической форме аналогично процедуре двоичного кодирования, разработанной в разделе, посвященном циклическим кодам. Мы можем осуществить сдвиг полинома сообщения D(Х) в крайние правые k разряды регистра кодового слова и произвести последующее прибавление полинома четности (или остатка от деления) R(Х) в крайние левые n-k разряды. Поэтому мы умножаем D(Х) на X n k , проделав алгебраическую операцию таким образом, что D(Х) оказывается сдвинутым вправо на п - k позиций. В разделе посвященном циклическому кодированию это показано на примере двоичного кодирования. Далее мы делим X n k D(X) на полиномиальный генератор Р(X), что можно записать следующим образом
X n k D( X ) |
Q( X ) |
R( X ) |
, или |
|
P( X ) |
P( X ) |
|||
|
|
(4.41)
X n k D( X ) Q( X )P( X ) R( X ).
134
Здесь Q(X) и R(Х) — это частное и остаток от полиномиального деления. Как и в случае двоичного кодирования, остаток будет четным. Уравнение (4.41) можно переписать следующим образом
R(X ) X n k D(X ) по модулю P(X ). |
(4.42) |
Результирующий полином кодового слова T(X), с учетом уравнений (4.41) и (4.42), можно переписать следующим образом
T (X ) R(X ) X n k D(X ). |
(4.43) |
Продемонстрируем шаги, подразумеваемые уравнениями (4.42) и (4.43), закодировав в соответствии с рисунком 4.13 сообщение из трех символов
010 |
010 |
010 |
(4.44) |
1 |
3 |
5 |
|
|
|
|
|
|
|
|
|
с помощью кода Рида-Соломона (7,3), генератор которого определяется уравнением (4.40).
Сначала мы |
умножаем |
(сдвиг |
вверх) |
полином |
сообщения |
||||||||
D(X ) |
1X 0 |
3 X |
|
5 X 2 |
|
на |
|
X n k |
X 4 , |
|
что |
|
дает |
X n k D(X ) |
1X 4 |
3 X 5 |
5 X 6 . |
Далее поделим |
такой |
сдвинутый |
вверх |
||||||
полином |
сообщения |
на |
полиномиальный |
генератор |
из |
уравнения |
(4.40), |
||||||
P(X ) |
3 |
1X |
0 X 2 |
3 X 3 |
X 4 . |
Полиномиальное |
деление |
недвоичных |
|||||
коэффициентов – это еще более утомительная процедура, чем ее двоичный аналог (см. пример в подразделе по циклическому кодированию), поскольку операции сложения (вычитания) и умножения (деления) для них выполняются согласно таблиц 4.8 и 4.9. Для рассматриваемого случая полиномиальное деление даст в результате следующий полиномиальный остаток (полином четности):
R(X ) 0 2 X 4 X 2 6 X 3. |
(4.45) |
Затем, из уравнения (4.43), полином кодового слова можно записать следующим образом
T(X ) 0 2 X 4 X 2 6 X 3 1X 4 3 X 5 5 X 6. (4.46)
Систематическое кодирование с помощью (n-k) разрядного регистра сдвига.
135