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

TEOR_inform_19-12-10_2014_01_06_12_12_03_442

.pdf
Скачиваний:
3
Добавлен:
10.02.2015
Размер:
1.39 Mб
Скачать

лучается производящая матрица G0 . В дальнейшем производящая матрица G0 ис-

пользуется как для построения проверочной части b1 br

кода a1 ak

b1 br , так

и для обнаружения и исправления возникших ошибок.

 

 

Определим матрицу

 

 

 

 

 

 

 

 

 

 

C11

C12

C1 k

 

 

C

 

C

 

C

 

 

 

 

 

C

 

21

 

22

 

2 k ,

 

 

 

 

 

 

 

 

 

C

r 1

C

r 2

C

rk

 

 

 

 

 

 

 

 

 

 

 

элементы которой использованы в выражении (5.8), считая, что каноническая

форма матрицы G известна, т.е. G E B . Из соотношения

E CT B получим

 

 

0

0

 

Ci j

b ji .

bi k

Ci j a j

 

 

 

j 1

 

 

 

Определение проверочной части кода bT b1 , ,br .

Положим, известна

информационная часть кода aT a1 , ,ak . Воспользуемся определением систе-

матического кода. Элементы Ci j в выражении (5.8) равны элементам bji матрицы

B , т.е. C BT . Тогда согласно (5.8)

 

b11

b21

 

 

 

 

 

BT

b12

b22

a

 

 

 

 

 

 

 

 

 

b

 

 

b

2 r

 

 

1 r

 

bk 1

bk 2

bk r

a1a2

ak

 

 

 

 

k

 

 

 

 

 

 

j 1bi1 a j

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

bi2 a j

 

 

 

 

j

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

b

a

 

 

 

j

 

 

 

 

 

1 ir

 

j

 

 

 

 

 

b1

 

 

 

 

 

b

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

r

 

 

 

 

 

 

 

 

. (5.11)

Полученные символы bj , j 1, ,r , приписываются справа к информацион-

ной части кода. В результате будет построена кодовая комбинация a1 ak b1 br

Обнаружение и исправление одиночной ошибки. Проверка на наличие или отсутствие ошибки и исправление ошибки основана на свойстве систематического кода, а именно – любая линейная комбинация кодов, входящих в производящую матрицу даѐт также систематический код, Следовательно, достаточно построить алгоритм проверки для кодов производящей матрицы. Используем каноническое представление G0 производящей матрицы. Введем проверочную матрицу в виде

канонической формы

61

x11

x 21

x k ,1

X

1

0

0

x12

x1 r

 

 

x 22

x

 

 

 

 

2 r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x k ,2

x k ,r

,

(5.12)

0

 

0

 

 

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

 

 

 

 

 

 

 

 

элементы которой xi j необходимо определить.

Применим правило: произведение любой разрешѐнной неискажѐнной кодовой комбинации на проверочную матрицу X должно

быть равно кодовой комбинации с нулевыми значениями.

Следовательно, произведение канонической формы производящей матрицы на проверочную матрицу равно нулевой матрице:

 

 

1

0

0

b

11

 

0

1

0

b

 

21

G0

X

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

b

k 1

 

 

 

 

 

 

x11 b11

x12

b12

 

 

b 21

x22

b 22

x21

=

 

 

 

 

 

 

 

 

 

b

 

x

 

b

 

x

 

 

 

 

 

k 1

 

k 1

 

k 2

 

k 2

b1 r

b 2 r

b kr

x1 r

x 2 r

x k r

 

 

x

 

 

 

 

 

 

11

 

 

x

21

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

k ,1

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

b1 r

 

 

b

 

 

 

 

 

2 r

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

k r

 

 

 

 

 

 

x12 x 22

xk ,2

0

1

0

 

0

0

 

0

0

 

 

 

 

0

0

 

x1 rx

2 r

x k ,r

0

 

0

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

0

 

 

 

0

 

0 .

(5.13)

 

 

 

 

0

 

 

 

 

 

 

b11

b 21

b k ,1

X

1

0

0

b12

b1 r

b 22

b

 

 

2 r

 

 

 

 

b k ,2

 

 

 

b k ,r .

0

 

0

 

1

 

0

 

 

 

 

 

 

0

 

1

 

 

 

 

 

Из соотношения (5.13) следует, что xi j bi j , и

каноническая форма проверочной матрицы имеет вид

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

Положим, aT a1 a2 ak b1 b2 br - зарегистрированная кодовая комбинация.

Произведение зарегистрированной кодовой комбинация aT на проверочную матрицу X имеет

62

вид

aT

X

k

i 1ai bi 1 b1

k

i 1ai bi 2 b.2

k

i 1ai bir br

 

 

 

 

S1

 

 

 

 

S2

 

 

 

 

 

 

 

 

 

 

 

 

 

Sr

 

 

 

 

 

 

S . (5.14)

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

ки.

Если в принятой кодовой комбинации нет однократных ошибок, то вектор ошибок S равен нулю. Вектор S называется синдромом ошибки (совокупностью симптомов) Синдром S не равен нулю, если в кодовой комбинации присутствуют ошибки.

Код однократной ошибки равен «1» в каком либо разряде и «0» во всех остальных 10 0 , 010 0 , , 0 01. Код ошибки суммируется по модулю 2 с информационным символом и в результате получается искажѐнная кодовая комбинация

a1 1 a2 ak b1b2 br или a1 a2 1 ak b1b2 br , или , или a1 a2 ak b1b2 br 1 и тогда вектор ошибок S не равен нулю.

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

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

Пример 5.2. Положим необходимо произвести кодирование пятиразрядных двоичных кодов с исправлением однократной ошибки, ( s 1). Записать производящую матрицу

1.Из неравенства (5.6) определим необходимое число разрядов n и число проверочных символов r .

2n k 1 n ,

n 9 , r = 4.

2. Из неравенства (5.3) определяется минимальное кодовое расстояние ds ì èí 3 .

63

3.Определяются требования к проверочной подматрице B канонической формы производящей матрицы G0 (5.10).

3.1Число единиц в кодовых последовательностях, входящих в подматрицу B должно быть не менее 2.

3.2Кодовое расстояние между любыми двумя кодовыми последовательностями, входящими в подматрицу B , должно быть не менее 1.

4.Выпишем все четырѐхразрядные коды, удовлетворяющие условиям 3.1 и

3.2:

0011, 0101, 0110, 0111, 1001, 1010, 1011, 1100, 1101, 1110, 1111.

5.Информационная часть производящей матрицы – единичная матрица раз-

 

 

 

 

 

 

 

 

 

 

 

 

мерности [5 5]. Выберем произвольно пять кодов из

 

 

1 0 0 0 0 0 1 1 1

пункта 4 и образуем каноническую форму G0 произ-

 

 

0 1 0 0 0 1 0 1 0

 

 

 

G

0

0

1

0

0

1

1

1

1

 

водящей матрицы G .

0

 

0

0

0

1

0

0

0

1

1

 

6. Всего можно образовать 25 32 пятиразряд-

 

 

 

0

0

0

0

1

1

1

0

1

 

 

 

 

 

ных кода. Пять кодовых комбинаций уже использо-

вано, нулевая комбинация известна. Остальные 25 5 1 26 комбинаций находятся как линейные комбинации строк, входящих в производящую матрицу. На-

 

 

1 0 0 0 0 0111

пример, возьмѐм 1-ю, 2-ю и 4-ю строки производящей матри-

 

 

 

G0 и сложим их поразрядно по модулю 2. Результат сло-

 

 

01 0 0 0 1 01 0

цы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 01 0 0 011

жения записан в последнюю строчку.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7. Используя матрицу G0 , запишем каноническую форму

 

 

11 01 0 111 0

 

 

 

 

проверочной матрицы X.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

1

 

 

8. На основе проверочной матрицы X и принятой ко-

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

со-

 

 

 

 

1

0

1

0

довой комбинации a

T

a

 

a

 

a

 

a

b

b

 

b

 

b

4

 

 

 

 

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

3

 

4

 

5 1

2

 

2

 

 

 

 

 

 

0

0

1

1

 

ставим систему проверочных уравнений, используя (5.14),

 

X

1

1

0

1

 

 

 

a2 a3 a5 b1 = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

 

 

 

 

a3 a5

b2 = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

 

 

 

a1

 

a2 a3

a4

b3 = 0,

 

 

 

 

 

 

 

 

(5.15)

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3 a4

a5

b4 = 0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

 

 

 

 

 

 

 

 

 

 

Если принятая кодовая комбинация не содержит одиночной ошибки, то син-

дром S равен нулю. Определим синдромы ошибок для каждого символа кодовой

комбинации. Например, синдром ошибки для символа a1

получим, заменив символ

a1 во всех уравнениях (5.15) на «1»,а остальные символы на «0» и выполнив

 

 

сло-

 

Таблица 5.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

жение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

по мо-

 

a1

 

 

a2

 

a3

 

 

a4

 

a5

 

 

b1

 

b2

 

 

b3

 

 

b4

 

 

 

 

дулю

2,

по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лучим

0111

 

 

1010

 

1111

 

 

0011

 

1101

 

1000

0100

0010

 

0001

 

 

код

 

 

 

 

 

 

 

 

 

 

 

 

 

0111,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

64

который соответствует синдрому S1 , (Таблица 5.1). Точно также можно получить синдромы ошибок для других символов a i .

Положим, принятая кодовая комбинация равна aT

 

11 01 0 111 0 .

Подставим

 

значения символов вектора

aT

в систему проверочных

1 0 0 1=0

уравнений (5.15) и получим синдром ошибки S, равный ну-

1 0 0 1=0

лю.

 

 

 

 

 

1 1 0 1

 

 

 

 

T

-

1=0

9. Введѐм однократную ошибку a5 1 в вектор a

a* T 11 011 111 0 . Во всех

проверочных уравнениях

1 0 1 0

 

 

 

 

 

 

0=0

символ a5 изменяется на обратный символ. После подста-

 

* T

в систему проверочных урав-

 

новки символов вектора a

нений получим значение синдрома S 5 = 1101.

 

 

 

 

 

 

Как известно, значение синдрома, не равное нулю, одно-

1 0 1 1=1

значно определяет номер разряда в кодовой комбинации. В

1 0 1 1=1

 

 

* T

следует

 

приведѐнном примере пятый разряд в векторе a

 

1 1 0 1 1=0

изменить на обратный и получится первоначальный вектор

1 0 1 1 0=1

T

 

 

 

 

 

 

a .

 

 

 

 

 

Число синдромов, не равных нулю, равно числу разрядов принятой кодовой комбинации. Синдромы для символов кодовой комбинации

aT a1 a2 a3 a4 a5 b1 b2 b2 b4 имеют вид, приведѐнный в таблице 5.1.

Указанные синдромы сохраняются для любых кодовых комбинаций, полученных по построенной производящей матрице. Например, для кода aT 0 01 0 0 1111 система проверочных уравнений примет вид

0 1 0 1 = 0,

0 1 0 1 = 0, 0 0 1 0 1 = 0 ,

0 1 0 0 1 = 0 .

Если произошла ошибка, скажем, в первом разряде, получим код a* T1 010 0 1111 . Система проверочных уравнений примет вид

0 1 0 1 = 0,

1 1 0 1 = 1, 1 0 1 0 1 = 1,

1 1 0 0 1 = 1.

Синдром S1 = 0111 для первого разряда не изменился с изменением кодовой ком-

бинации. С изменением производящей матрицы изменяются и синдромы.

65

5.1.2 Систематический код Хемминга

Соотношение между числом информационных символов k , числом исправляемых ошибок s и числом символов кодовой комбинации отображается неравенством (5.6). Хемминг предложил использовать знак равенства

 

 

 

 

 

2n

 

 

2k .

 

(5.15)

 

 

 

1 s

 

 

 

 

 

 

 

Cni

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

Таблица 5.2*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

7

 

15

 

 

31

 

63

127

255

 

 

 

 

 

 

 

 

 

 

 

 

 

k

4

 

11

 

 

26

 

57

120

247

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

3

 

4

 

 

 

5

 

6

7

8

 

 

 

 

 

 

 

 

 

 

 

Rr

0.4286

 

0.2667

 

0.1613

0.0952

0.0551

0.0314

 

Это предложение выполняется только для определѐнных соотношений k , s и n . В таблице 5.2 приведены решения уравнения (5.15) для целых k , n и s =1.

Коды C 7 , 4 имеют минимальное кодовое расстояние dì èí 3 и позволяют исправить одиночную ошибку. Коды C 15,11 имеют минимальное кодовое расстояние dì èí 4, обнаруживают двукратную ошибку и позволяют исправить оди-

ночную ошибку.

Второе предложение Хемминга касается построения проверочной матрицы [Березюк Справочник]. Проверочная матрица должна состоять из столбцов, являющихся кодом номера столбца в двоичном представлении. Например, для кода C 15,11 проверочная матрица будет иметь вид

0

0

0

0 0

0 0

1

1

1

1

1

1

1

1

 

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

 

H

0 1

1

0

0

1

1

0

0

1

1

0

0

1

1

 

 

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

 

 

 

В отличие от проверочной матрицы G0 , в которой проверочные символы занимают позиции после информационных символов, проверочные символы в матрице H занимают позиции кратные степени два 20 , 21 , 22 , , 2 r 1 и обозначены жирными

единицами. Уравнения для определения проверочных символов получаются из матрицы H , умножением его на вектор h , hT =(h1 ,h2 , …, h15 ):

h = h

3

h

5

h

7

h

9

h

h

h ,

 

1

 

 

 

 

 

 

11

13

15

 

h 2= h

3

h

6

h

7

h

 

h

h

h ,

 

 

 

 

12

13

14

15

(5.16)

h 4 = h

 

h

 

h

 

h

h

h

h ,

5

6

7

 

 

 

 

 

 

 

 

 

 

10

11

13

15

 

h 8 = h9

h10 h11 h12 h13 h14 h15 .

 

66

Синдром ошибки составляется из проверочных символов и указывает номер позиции символа, в которой произошла ошибка. Если задана информационная

часть кода aT a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 , необходимо определить значения проверочных символов на 1-ой, 2-ой, 4-ой и 8-ой позициях пятнадцатиразряд-

ного кода vT h1 h2 a1 h4 a2 a3 a4 h8 a5 a6 a 7 a8 a9 a10 a11 .

Пример 5.3 Используем код C 15,11 с информационной частью

aT 11010010111 . Составим таблицу 5.3, в первой строке – номера символов

(разрядов) в кодовой комбинации, во второй – позиции проверочных и значения информационных символов.

Таблица 5.3

Номер

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

символа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

символы

h1

h 2

1

h 4

1

0

1

h 8

0

0

1

0

1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подставим значения символов согласно таблице 5.3 в систему равенств (5.16) и получим значения проверочных символов h1, h 2 , h 4, h 8 .

h1 = h3 h5 h7 h9 h11 h13 h15 = 1 1 1 0 1 1 1 =0, h 2= h3 h6 h7 h12 h13 h14 h15 = 1 0 1 0 1 1 1 =1,

h 4 = h 5 h6 h7 h10 h11 h13 h15 = 1 0 1 0 1 1 1 =1,

h 8 = h 9 h 10 h11 h 12 h13 h 14 h15 = 0 0 1 0 1 1 1 = 0,

Кодер канала выдает последовательность символов vT 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 .

Проверка правильности вычислений – произведение H v = 0 0

0 0 T . Если про-

изошла однократная ошибка, скажем в третьем разряде, декодер выдает двоичный

код ошибки 0 0 1 1, если ошибка в десятом разряде вектора,

код ошибки равен

1 0 1 0 .

 

5.2 Циклические коды

Циклические коды являются разновидностью систематических кодов. Они получили широкое распространение из-за простоты кодирования и декодирования. Все разрешѐнные кодовые комбинации производящей матрицы могут быть получены циклическим сдвигом одной разрешѐнной комбинации, называемой образующей для данного кода.

Любой n -разрядный код можно представить в виде полинома степени n 1

G x an 1 xn 1 an 2 xn 2 a1 x a0 x0 ,

67

G ' x an 2

где x - основание счисления,

ai - коэффициенты, принимающие значения «0» или «1», если x 2.

Например, комбинацию 110101 можно записать как

G x 1x5 1x4 0 x3 1x2 0 x1 1 x5 x4 x2 1 .

Циклический сдвиг эквивалентен умножению многочлена G x на x .

Действительно,

x G x an 1 xn an 2 xn 1 a1 x2 a0 x1.

Но в кодовой комбинации должно быть всего n членов, причѐм степень полинома не должна превышать n 1. Чтобы удовлетворить этому условию, положим

xn x0 1 . Тогда получим

xn 1 a1 x2 a0 x1 an 1 ,

т.е. получили циклический сдвиг. Если код, выраженный в виде полинома, принадлежит разрешѐнной кодовой комбинации, то кодовая комбинация, полученная циклическим сдвигом, также принадлежит разрешѐнной кодовой комбинации. Из ус-

ловия того, что xn 1 имеем

 

 

 

 

 

 

 

 

 

xn 1 0 .

 

 

 

(5.16)

Пусть имеется полином

P

x a

xr a

xr 1

a

x a

степени r .

 

r

r

r 1

 

1

0

 

Среди полиномов Pr x выделим полиномы, которые делятся только лишь на са-

мого себя и на 1. Такие полиномы называются простыми или неприводимыми. Рассмотрим неприводимый полином Pr x и различные кодовые комбина-

ции, выраженные в виде полиномов Gn 1 x степени n 1. Из всей совокупности полиномов Gn 1 x к числу разрешѐнных кодовых комбинаций отнесѐм только те, которые делятся без остатка на полином Pr x . Определѐнный таким образом полином Pr x степени r называется образующим.

Циклическими n,k кодами называются коды, каждая кодо-

вая комбинация которых, выраженная в виде полинома, имеет степень, не превышающую n 1, и нацело делится на образующий полином Pr x степени r n k .

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

Каноническая форма производящей матрицы G0 размерности [ k n ] (5.10) состоит из зеркального отражения единичной подматрицы размерности [ k k ] , ( матрица отражения [Марпл]), и проверочной подматрицы размерности [ k r ] .

68

 

 

0

0

1

0

 

0

 

 

 

 

0

1

0

0

 

0

 

 

G

.

(5.23)

1

 

 

 

 

1

0

0

0

 

0

 

 

 

 

 

 

Каждую строку матрицы G1разделим на неприводимый полином Pr ( x ) ,

дающий n остатков, и заменим нули в соответствующей строке проверочной части матрицы на остаток R . Результирующая матрица G1 будет производящей матри-

цей циклического кода C ( n , k ) .

Пример 5.5. Пусть n = 7, k = 4, r = 3. Первоначальное значение производящей матрицы имеет вид

 

 

0

0

0

1

0

0

0

 

Выберем образующий полином

 

 

 

 

0

0

1

0

0

0

0

 

P ( x ) x3 x 1 1011, который дает 7 ос-

G

.

3

1

 

0

1

0

0

0

0

0

 

татков при делении кода ошибки на образую-

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

0

0

0

 

щий полином. Разделим коды строк производя-

 

 

 

 

щей матрицы G1 на код образующего поли-

Таблица 5.6

Номер строки

1

2

3

4

 

 

 

 

 

Код остатка

011

110

111

101

 

 

 

 

 

матрицы

 

 

 

 

нома P ( x ) . В результате имеем четыре ос-

3

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

 

 

0

0

0

1

0

1

1

 

 

 

0

0

1

0

1

1

0

 

G

.

1

 

0

1

0

0

1

1

1

 

 

 

1

0

0

0

1

0

1

 

 

 

 

Полученная производящая матрица состоит из четырѐх строк (кодов). Все ос-

тальные 24 4 1=11 кодов, кроме кода 0000000, могут быть получены линейной комбинацией строк производящей матрицы G1.

5.2.1 Обнаружение однократной ошибки

Циклический код относится к классу систематических кодов. Ранее было показано, что при обнаружении одиночной ошибки минимальное кодовое расстояние равно dì èí 2. Это значит, достаточно одного дополнительного разряда в кодовой

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

69

Код однократной ошибки ( x ) представляет полином вида ( x ) xi , где 0 i n 1. Код ошибки суммируется по модулю два с одним из символов n-

разрядной кодовой комбинации f ( x ) :

 

 

 

h ( x ) f ( x ) ( x ) .

 

 

(5.17)

Среди всех неприводимых полиномов P

x полином вида

P

x x 1 об-

r

 

1

 

ладает наименьшей степенью. Двоичный код, соответствующий этому полиному, записывается как 11. При делении любого полинома степени r 1на полином P1 x имеется единственный остаток, равный «0» или «1». Остаток, равный «1» -

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

Образование кода. Положим ( a1 a2 ak b1 ) - код, проверочный символ которого

b1 неизвестен. Разделим кодовую комбинацию ( a1 a2 ak

b1 ) на код 11 неприво-

димого полинома

P

x .

В результате деления получится остаток.

Проверочный

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

символ b1

заменяется остатком.

 

 

 

 

 

 

 

 

 

 

 

1

0

1

b

 

1

1

 

Например, пусть кодовая комби-

 

1

0

0

0

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

нация 101 представляет инфор-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

1

1

1

1

 

 

 

1 1

 

мационные символы. На рисунке

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.6 представлена процедура оп-

 

0

1

0

 

 

 

 

 

0

1

1

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

ределения значения символа b1.

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Последняя строка

на этом ри-

 

 

 

0

1

0

 

 

 

 

 

0 0

b1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сунке – остаток,

равный нулю,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

Рис. 5.6 Процедура оп-

 

 

 

 

 

 

поэтому символ b1=0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ределение значения

 

 

Оста-

 

0

1

 

 

 

 

 

На рисунке 5.7 представле-

 

 

 

 

символа b1.

 

 

 

 

 

 

ток

 

 

 

 

 

 

 

 

 

 

 

на процедура обнаружения од-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.7 Процедура

 

нократной ошибки.

Ошибка в коде обозначена жирным

 

обнаружения одно-

 

шрифтом. В результате деления кода с ошибкой на непри-

 

кратной ошибки

 

 

водимый полином P1 x

образовался остаток, равный «1» -

 

 

 

 

 

 

 

 

 

 

 

признак ошибки.

5.2.2 Исправление однократной ошибки

Исправление одиночной ошибки связано с определением разряда, в котором произошла ошибка. Это производится на основании анализа остатков от деления

многочленов ошибок ( x ) xi на неприводимый полином Pr x . Каждому остат-

ку соответствует один из разрядов кодовой комбинации, в которой произошла ошибка. Чем больше остатков, тем больше ошибок можно исправить. Наибольшее

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]