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

MM_dlya_LR

.pdf
Скачиваний:
15
Добавлен:
16.07.2022
Размер:
2 Мб
Скачать
☆

-

Если кодирование решает только первую задачу,

код

называют

 

примитивным.

Вторую

задачу

решает

экономный

(статистический)

 

код. Третью задачу решает корректирующий код.

 

 

 

-

Кодер может быть составным и содержать каскадное

соединение

 

относительно простых кодеров, решающих каждый свою задачу.

 

 

-В данной работе исследуются 4 линейных блочных кода:

-примитивный код ASCII;

-код с одной проверкой на чётность (9,8), позволяющий обнаружить ошибки нечётной кратности;

-код Хэмминга (7,4), обнаруживающий 2 ошибки в режиме обнаружения или

исправляющий

1

ошибку

в

режиме

исправ-

ления ошибок;

 

 

 

 

 

•матричный код (25,16), гарантированно обнаруживающий 3ошибки и

 

 

все

ошибки

нечётной

кратности

в

режиме

обнаруже-

 

 

ния,

а также

большинство сочетаний

чётного

числа

ошибок,

 

 

или гарантированно исправляющий 1 ошибку в режиме

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим эти коды.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

Примитивный код ASCII

 

 

 

 

 

 

 

 

 

 

 

 

 

ASCII

(American

Standard

Code

for

Information

Interchange)

-

американский стандартный код обмена информацией.

Каждый

 

символ

кодируется

8-разрядной

комбинацией

двоичных

чисел.

Все

 

комби-

нации являются разрешёнными, их

общее

число

K

=

28

=

256.

Процедура кодирования проста: символы

нумеруются от

0

до

255,

а

номер

записывается

в

двоичной

 

системе

счисления.

Несколько

при-

меров из кодовой таблицы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Символ

 

 

 

 

Номер

 

 

 

Код

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

65

 

 

 

01000001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

90

 

 

 

01011010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А

 

 

 

 

128

 

 

 

10000000

 

 

 

 

 

 

 

 

 

Я

 

 

 

 

159

 

 

 

10011111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Переход

от

номера

к

коду

 

осуществляется

как

обычный

переход

из десятичной в

двоичную системы

счисления. Обозначая L

-

номер,

а

bi - двоичный символ в i-м разряде, имеем:

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

L = bi 2i

 

 

 

 

(1)

 

 

 

 

 

i 0

 

 

 

 

 

 

 

 

 

 

 

Иными словами, каждый разряд

 

имеет «вес»,

равный 2

в

степени

номер этого разряда (счёт ведётся справа).

 

 

 

 

 

 

 

 

 

Для

быстрого

перехода к

двоичному

коду

 

десятичного

числа

удобно пользоваться следующим наглядным методом:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b7

b6

b5

b4

 

b3

b2

 

b1

 

b0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27 = 128

26 = 64

25 = 32

24 = 16

 

23 = 8

22 = 4

 

21 = 2

20 = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Представляя число от 0 до 255 набором «весов» из этой таблицы и

записывая

в соответствующий

разряд

1 -

там,

где

«вес»

взят,

и

0 -

там,

где не взят, получим двоичный код этого числа.

 

 

 

 

 

 

 

 

 

 

 

Так

как

в

примитивном

коде

все

комбинации

разрешены,

 

то

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

 

 

 

 

 

Обозначая

p

-

вероятность

одиночной

ошибки

в

дискретном

канале,

а

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

 

 

 

 

 

 

найдём

вероятность

хотя

бы

одной

ошибки

в

комбинации

из

n

элементов (событие, противоположное событию «ни одной ошибки»):

 

 

 

 

 

 

 

Рк = 1 - (1 - p)n.

 

 

 

 

 

 

 

 

 

(2)

 

 

 

При малых p из (2) получаем приближённую формулу:

 

 

 

 

 

 

 

 

 

Pк ~ pn.

 

 

 

 

 

 

 

 

 

 

(3)

 

 

 

2. Код с одной проверкой на чётность (9,8)

 

 

 

 

 

 

 

 

Теперь

к

8

информационным

 

разрядам

добавляется

девятый.

Общее число комбинаций равно N = 29 = 512 , из них K = 28 = 256 -

разрешённые, а остальные N

-

K

=

256

-

запрещённые. Девятый

символ

 

-

проверочный,

он

 

получается

 

из

 

8

информационных

сложением разрядов по модулю 2:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b8 =b0+b1+b2+b3+b4+b5+b6+b7

 

 

 

 

 

 

(4)

 

 

 

Из (4) видно, что проверочный разряд Ъ8 равен нулю, если среди информационных

символов

 

чётное

число

 

единиц,

 

 

и

 

единице

 

-

если

число

единиц

нечётное.

Таким

образом,

в

 

кодовой

комбинации

число

единиц

всегда

чётное.

Следовательно,

если

в

канале

произойдёт

одна

ошибка,

то

число

 

единиц

 

станет

нечётным.

Комбинации,

содержащие

нечётное

число

единиц,

являются

 

запрещёнными,

их

ровно

половина.

Появление

на

приёме

запрещённой

 

комбинации

-

признак ошибки. Если в канале

произойдут

одновременно

2

ошибки

в

одной кодовой комбинации, число единиц

останется

чётным,

и

такая

ситуация

окажется

незамеченной

декодером,

так

же,

как

и

появление

4,

6 или

8

(т.

е. чётного числа)

ошибок.

Ошибки

же

нечётной

кратности

(1, 3, 5, 7, 9) будут обнаружены.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вероятность

необнаруженной

 

ошибки

 

(Рно)

 

равна

 

сумме

вероятностей того, что произойдут 2, 4, 6 или 8 ошибок. При n = 9

 

 

 

 

 

 

 

 

Рно = C92 Р2(1 - Р)7+ C94 Р4(1 - Р)5+

 

 

 

 

 

 

 

 

 

+

C

6

9

 

 

 

При малых p, второго, получаем

Рно ͂36Р2.

P 6 (1 - P)3+ C98 P8 (1 - P).

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

(5)

3.

Код Хемминга (7,4)

 

 

 

 

 

Коды

Хемминга

получаются

по

следующему правилу: n

=

2r

-1,

где n

-

общее число

разрядов, r

-

число проверочных разрядов

и

n

- r

- число информационных разрядов. Рассмотрим случай r = 3 .

 

 

 

Из семи двоичных разрядов 4 информационных, следовательно, число разрешённых комбинаций K = 24 = 16. Общее число комбинаций N = 27 = 128, число запрещённых комбинаций N - K = 112. Три проверочных разряда получаются из информационных таким образом, чтобы соблюдалось

условие

их

линейной

независимости.

Например:

 

b4= b0+ b1 + b2,

 

 

 

b5 = b1 + b2+ b3,

(6)

 

 

b6= b0+ b2+ b3.

 

 

Таким

образом,

каждый из 7

символов участвует хотя бы

в одной

проверке (символ b2 участвует в трёх проверках). Эти же равенства (6) используются как

проверочные

 

при

 

приёме

 

кодовой

 

комбинации.

Если

в

одном

из

разрядов

содержится

ошибка,

то те равенства, в

которых он участвует, не соблюдаются. Так

как равенств

три,

то

возможны 8 вариантов ситуаций. В

ситуации, когда все равенства

выполняются,

кодовая

комбинация

или

принята

 

безошибочно,

или

в

канале произошли ошибки, приведшие

к

новой

разрешённой

кодовой

комбинации, т.е.

ошибка

в

кодовой

комбинации не обнаружена. В

другом

случае,

в зависимости от

того,

какая

 

из

оставшихся

 

семи

ситуаций

имеет

место

в

конкретном

опыте, декодер определяет, какой

из

семи

элементов

принят

 

неверно.

Например,

 

если

не

выполняются

все три проверки, то это указывает на b2, а если не выполняется только

 

 

 

 

одна

проверка,

например, b4,, то это

указывает на то, что произошла

ошибка в самом проверочном символе, в данном случае это b4.

 

 

 

 

 

 

 

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

исправлены

 

путём

 

замены

 

ошибочного

 

элемента

 

на

противоположный.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Двойные ошибки обнаруживаются, но не исправляются.

 

 

 

 

 

 

 

Таким

образом,

код

 

Хемминга

может

использоваться

в

 

двух

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

 

 

 

 

 

 

В

режиме

исправления

ошибок

 

исправляются

все

 

одиночные

ошибки

в

кодовой

комбинации,

следовательно,

вероятность

 

остаточ-

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

вероятности

того,

что

 

в

кодовой

комбинации произойдёт более одной ошибки:

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pk 1 C7i

pi (1 p)7 i 1 (1 p)7 7 p(1 p)6

 

(7)

 

 

 

 

 

 

 

i 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для малых p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рк ͂21 p2.

 

 

 

 

 

 

 

 

(8)

 

 

 

 

 

В

режиме

обнаружения

ошибок

 

гарантированно

обнаруживаются

две

ошибки,

т.е.

вероятность

необнаруженной

 

ошибки

определяется

как

вероятность

того,

что

в

принятой

кодовой

комбинации

будет

более

двух ошибочных элементов:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pно

1 C7i pi (1 p)7 i

1 (1 p)7 7 p(1 p)6

21p(1 p)5

 

(9)

 

 

i 3

Для малых p

 

 

 

PH0͂35p3.

 

 

 

 

 

 

 

 

 

(10)

 

 

4.

Матричный код (25,16)

 

 

 

 

 

 

 

 

 

 

 

Из

 

25

 

двоичных

 

разрядов

16

являются

информационными,

следовательно, из общего числа

N

=

225

= 33554432 возможных

комбинаций

K

 

= 216

=

65536

являются

разрешёнными,

а

остальные

N - K = 33554432 - 65536 = 33488896 - запрещёнными.

 

 

 

 

 

 

 

Матричный

 

код

строится

следующим

 

образом

(рис.1).

Из

16

информационных символов строится матрица размерностью (4 х 4).

 

 

 

 

Далее

к каждой

 

строке

и к каждому столбцу добавляется один символ

проверки на чётность. Последний

элемент

с

номером

24

представляет

собой

 

символ

проверки

на

чётность

всех

информационных

элементов.

Этот

символ

также

получается

путём

сложения по

модулю

2

всех

проверочных

элементов

в

столбце 4 или в строке 4 (это свойство

следует

 

из

 

свойства

 

ассоциативности

операции

сложения

по

модулю 2).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На рис.1 в рамку заключены информационные символы, остальные символы -

проверочные.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В

канал

передаются

символы

bi (i

=

0, 24) по строкам,

по

столб-

цам или сначала все информационные, а затем все проверочные.

 

 

 

 

 

 

 

номер

0

1

2

3

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

b0

b1

b2

b3

 

b4

 

 

 

 

 

 

 

 

 

 

1

 

 

b5

b6

b7

b8

 

b9

 

 

 

 

 

 

 

 

 

 

2

 

 

b10

b11

b12

b13

 

b14

 

 

 

 

 

 

 

 

 

 

3

 

 

b15

b16

b17

b18

 

b19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

b20

b21

b22

b23

b24

 

 

 

 

 

 

 

Рис. 1. Схема построения кодовой комбинации матричного кода

Матричный код, так же

как

и

код

Хэмминга,

может

использо-

ваться в двух режимах: обнаружения и исправления.

 

 

 

 

 

В

 

режиме

исправления

матричный

код (25,16)

 

позволяет

гаран-

тированно

исправить

1

ошибку.

Это

делается

следующим

образом:

любая

одиночная

ошибка

приводит

к

несоблюдению

правила

чётности

в некоторой i-й строке и

j-м столбце,

перекрестие i-й строки

и j-го

столбца

 

точно

указывает

на

ошибочный

элемент,

 

который заменяется

на противоположный.

Таким

образом,

вероятность

 

остаточной

ошибки

при

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

равна

вероятности

появления

в

кодовой

комбинации двух и более ошибок:

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

Pk

1 C25i pi (1 p)7 i

1 (1 p)25 25 p(1 p)24

(11)

 

 

 

i 0

 

 

 

 

 

 

 

 

 

 

 

При малых значениях p

 

 

 

 

 

 

 

 

 

 

 

Рк ͌300p2.

 

 

 

 

 

 

 

 

(12)

 

Врежиме обнаружения матричный код (25,16)

тированно

обнаружить все ошибки

нечётной

кратности

ошибки, а также большинство сочетаний чётного числа ошибок.

 

Вероятность

 

необнаруженной

ошибки

можно

вероятностью того, что в принятой

кодовой

комбинации

ошибок:

 

 

 

 

 

 

 

 

 

P

 

12

C

 

p

 

(1 p)

 

 

 

 

2i

2i

25 2i

 

 

 

 

 

 

 

 

 

но

 

 

25

 

 

 

 

 

 

 

 

i 2

 

 

 

 

 

 

 

 

Для малых p

Рно ͌12650p4.

позволяет гаран-

(1,3,5,….25), 2

оценить сверху

будет 4, 6, ...

(13)

(14)

Домашнее задание

1.

В

качестве

номера

кодируемого

 

символа

 

выбирается

число

M = L + 99, где L - число, задаваемое преподавателем. Закодировать число M 8-

разрядным примитивным кодом.

 

 

 

 

 

 

 

 

2.

Закодировать комбинацию, полученную в п. 1,

кодом

с

одной

проверкой на чётность (9,8).

 

 

 

 

 

 

 

 

3.

Закодировать

комбинацию,

полученную в п. 1,

двумя

4-разряд-

ными кодовыми комбинациями кода Хемминга (7,4).

 

 

 

 

 

 

4.

Взять

в

качестве

 

номера

кодируемого

 

символа

 

число

N =

L'+ 30000, где L' - число, образованное

тремя последними

цифрами

студенческого

билета,

закодировать

его

примитивным

 

кодом.

Полученную комбинацию закодировать матричным кодом (25,16).

 

 

 

5.

Используя

формулы

для

расчёта

вероятностей

ошибки

 

декоди-

рования и необнаруженной ошибки, по значениям p из табл. 1построить графики зависимости Рк = f (p) и Рно = f (p).

Порядок выполнения работы

Работа содержит 4 раздела:

6.Исследование примитивного кода ASCII.

7.Исследование кода с одной проверкой на чётность.

8.Исследование кода Хемминга (7,4)

9.Исследование матричного кода (25,16)

Содержание отчёта

4.Выполненное домашнее задание.

5.Графики зависимостей Рк (p) и Рно (p).

6.

Выводы

по

графикам

о

помехоустойчивости

и

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

 

 

 

7.

 

 

 

 

 

 

 

 

Контрольные вопросы

 

 

 

 

 

 

1.

В чём

сущность

и

цели

операции

кодирования

сообщений

в

каналах связи? Какие виды кодов Вы знаете?

 

 

 

 

2.

Как

осуществляется

примитивное

кодирование?

Приведите

несколько примеров.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

Как

определить

вероятность

 

ошибки

 

декодирования

 

при

использовании

примитивного

 

кода,

если

известна

вероятность

 

ошибки

одного элемента p и число разрядов n?

 

 

 

 

 

 

 

 

 

 

4.

Как

строится

код

с

 

проверкой

на

чётность?

Приведите

 

несколь-

ко примеров.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.

Каков

общий

принцип

обнаружения

ошибок

с

помощью

избы-

точного кода? Приведите примеры.

 

 

 

 

 

 

 

 

 

 

 

 

6.

Чему

равно

кодовое

 

расстояние

у

кода

с

проверкой

на

чётность? Может ли такой

 

код

обнаруживать

ошибки

(если

 

да,

то

сколько)? Исправлять ошибки?

 

 

 

 

 

 

 

 

 

 

 

 

 

7.

Каков

общий

принцип

исправления

ошибок

с

помощью

избы-

точного кода? Приведите примеры.

 

 

 

 

 

 

 

 

 

 

 

 

8.

Сколько ошибок может обнаружить код Хемминга (7,4)?

 

 

 

 

Сколько

ошибок

он

может

 

исправить?

Свяжите

это

с минимальным

кодовым расстоянием по Хеммингу.

 

 

 

 

 

 

 

 

 

 

 

 

9.

Опишите

процедуру

 

кодирования

с

помощью

кода

Хемминга

(7,4) и проиллюстрируйте её на конкретном примере.

 

 

 

 

 

 

 

 

10. Что

такое

синдром

 

ошибки?

Составьте

таблицу

синдромов

для

кода Хемминга (7,4).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11. Опишите

процедуру

 

декодирования

с

 

исправлением

 

оди-

ночной ошибки для кода Хемминга (7,4) и приведите конкретный

 

 

 

 

 

пример.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12. Как

определить

 

вероятность

 

ошибки

 

декодирования

 

при

использовании кода Хемминга (7, 4), если известна вероятность ошибочного приема одного элемента p?

13. Как строится матричный код (25,16) ? Как с его помощью производится обнаружение и исправление ошибок? Приведите пример, когда декодер не может обнаружить ошибки.

14.

Какие

коды

называются

линейными?

Относятся

ли

к

ним

коды, изучаемые в данной работе?

 

 

 

 

 

 

15.

Что

такое

вес

кодовой

комбинации?

Свяжите

минимальный

вес кодовой комбинации линейного кода с кодовым расстоянием dк.

 

 

 

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

 

 

 

Лабораторная работа № 7

Цель работы: изучение принципа формирования комбинаций избыточного циклического (n,k)-кода, метода обнаружения и исправления ошибок в принятой комбинации и построение кодирующего и декодирующего устройств.

Основные сведения о циклических кодах

Двоичный код - сочетание единиц и нулей, соответствующих определенному символу или цифре, которую надо передать.

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

Одним из методов борьбы с ошибками - является введение избыточности (добавляются проверочные разряды).

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

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

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

Для простых (безызбыточных) кодов dmin = 1.

Минимальное кодовое расстояние dmin связано с числом или кратностью обнаруживаемых и исправляемых t ошибок следующим образом:

d min 1d min 2t 1

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

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

Избыточностью кода называется отношение

r

n

, где r - число проверочных

разрядов; n - длина кодовой комбинации, а (1

r

) называют скоростью кода.

 

 

 

n

Для исправления однократной ошибки (t =1) число проверочных разрядов должно

отвечать неравенству:

 

 

r log2(n + 1) или 2r (n + 1).

 

(1)

В общем случае, при исправлении ошибок кратности t, число проверочных разрядов должно отвечать неравенству:

 

t

r log

i

2 (1 Cn ),

 

i 1

где

C

m

n

 

n! m!(n

m)!

.

Алгоритм формирования комбинаций циклического (n, k)-кода

При построении двоичных циклических кодов кодовые комбинации длины n принято представлять в виде полиномов степени (n -1):

F(x) = an-1xn-1 + an-2xn-2 + ...+ a1x + a0,

где a0, a1, ...,an-1 - коэффициенты, принимающие значения 0 или 1. Например, кодовую комбинацию 1001101 можно записать в виде:

F(x) = x6 + x3 + x2 + 1.

Поэтому циклические коды часто называют полиномиальными кодами.

Название циклического кода происходит от его основного свойства, заключающегося в том, что циклический сдвиг элементов разрешенной кодовой

комбинации дает также разрешенную кодовую комбинацию, принадлежащую этому же циклическому коду (например, 1000111 0001111 0011110 и т. д.). Другое свойство циклического кода состоит в том, что при суммировании по модулю два (mod2) двух разрешенных кодовых комбинаций также образуется разрешенная кодовая комбинация.

Циклический код в его полиномиальном представлении можно определить как множество многочленов степени (n -1) и меньше, каждый из которых делится без остатка на некоторый многочлен P(x) степени r, называемый образующим или порождающим многочленом кода.

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

двоичными коэффициентами и, как правило, должен быть примитивным.

 

Рассмотрим построение комбинации систематического циклического

(n,k)-

кода. Будем полагать, что порождающий многочлен задан. Алгоритм формирования циклического кода будет следующим:

1) G(x)x(n - k), то есть информационный полином G(x) умножается на x в степени равной степени порождающего многочлена r = (n - k). Умножение полинома на xr означает сдвиг на r разрядов влево.

2)

G(x)x

(n - k)

 

 

= Q(x) +

P(x)

 

R(x)

P(x)

,

то есть произведение G(x)x(n-k) делится на

порождающий многочлен P(x) и определяется частное Q(x) и остаток от деления R(x). Степень R(x) всегда ниже степени порождающего многочлена.

3) F(x) = G(x)x(n-k) R(x), то есть комбинация циклического кода строится как совокупность информационных элементов и приписанных к ним со стороны младших разрядов элементов остатка (проверочных элементов).

Рассмотрим пример построения циклического кода для информационного полинома вида G(x) = x4 + x2 + x. Этот информационный полином G(x) соответствует двоичной кодовой комбинации 10110.

Пусть порождающий многочлен имеет вид: P(x) = x4 + x + 1. В соответствии с неравенством (1) максимальная длина кодовой комбинации циклического кода n = 2r - 1 равна 15 (полный код). Однако, на практике часто выбирают длину комбинации n1 < 2r - 1. Образующийся при этом циклический код называют укороченным. Следует иметь ввиду, что укорочение происходит за счет уменьшения числа информационных разрядов k.

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

В нашем примере разрядность исходного кода (информационного полинома G(x)) равна 5. Число проверочных разрядов определяется степенью порождающего многочлена (у нас - это 4). В итоге разрядность комбинации циклического кода равна 9, то есть мы получим укороченный код (9, 5).

Выполним первую операцию построения систематического циклического кода - умножения на x4 информационного полинома G(x). Получим полином G(x)x4 = x8 + x6 + x5.

Умножению информационного полинома G(x) на x4 соответствует добавление справа четырех нулей к двоичному представлению G(x), т.е. 101100000.

Вторая операция - деление G(x)x4 на порождающий многочлен P(x):

 

x8 + x6 + x5

 

x4 + x +1

x8 + x5 + x4

 

x4 + x2 + 1 = Q(x)

 

 

x6

+ x4

 

 

x6

+ x3

+x2

 

 

 

 

x4 + x3 + x2

 

 

 

x4 + x + 1

x3 + x2 + x +1 = R(x),

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

Здесь операция вычитания заменяется операцией сложения по mod 2. Операция суммирования по mod 2 выполняется по следующему алгоритму:

1 1 = 0; 0 0 = 0; 1 0 = 1; 0 1= 1

Та же операция деления в двоичном коде имеет вид:

 

1 0 1 1 0 0 0 0 0

1 0 0 1 1

1 0 0 1 1

 

1 0 1 0 1

 

 

 

0 1 0 1 0 0

 

 

1 0 0 1 1

 

 

 

0 1

1 1 0 0

 

 

 

1

0 0 1 1

 

1 1 1 1=R(x)

Третья операция - построение комбинации циклического кода F(x):

F(x) = G(x)x(n-k)

R(x) =

x8

x6 x5

x3

x2 x 1

 

 

 

G(x)x

4

 

R(x)

 

 

 

 

Полученный результат в двоичном коде имеет вид:

10110

G(x)

1111

R(x)

Сделаем проверку полученного циклического кода, представленного полиномом F(x), делением этого полинома на порождающий многочлен P(x). Остаток от деления должен быть нулевым.

x8 + x6 + x5 + x3 + x2 + x + 1

x4 + x +1

x8 + x5 + x4

x

4

+ x

2

+ 1

 

 

 

x6 + x4 + x3 + x2 + x + 1

x6 + x3 + x2

x4 + x + 1

x4 + x + 1

R(x)= 0

Та же операция в двоичном коде:

 

1 0 1 1 0 1 1 1 1

1 0 0 1 1

1 0 0 1 1

1 0 1 0 1

 

0 1 0 1 1 1

1 0 0 1 1

0 1 0 0 1 11 0 0 1 1

R(x)= 0

Итак, для заданного информационного кода G(x) разрядностью 5 получен укороченный циклический код разрядностью 9, т. е. код (n, k) = (9, 5). Минимальное кодовое расстояние (расстояние Хэмминга) для этого кода равно dmin = 3, то есть он позволяет обнаруживать все ошибки кратностью 2 или исправлять однократные ошибки (t = 1). В режиме обнаружения данный код может обнаруживать и часть ошибок более высокой кратности.

Общее число кодовых комбинаций рассматриваемого кода Nобщ = 29 = 512; число разрешенных кодовых комбинаций Nразр = 25 = 32; число запрещенных кодовых

комбинаций Nзапр = Nобщ - Nразр = 480.

Избыточность данного кода равна

r4

0,4(4),

n 9

а кодовая скорость -

(1

r

)

5

0,5(5).

 

n

9

 

 

 

 

 

 

Для получения всех ненулевых разрешенных комбинаций (для кода (9,5) – это 25-

1=31)

составляют порождающую матрицу

Gn,k называемую также образующей или

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

I

k ,k

 

размерности k,k (для

кода (9,5) – это 5,5) и матрицы

Rk ,n k

проверочных элементов размерности k,n-k (для

кода (9,5) – это 5 , 4).

Единичная матрица имеет вид:

 

 

10000

 

 

 

 

01000

 

 

 

 

 

 

 

 

I

5,5

 

00100

 

 

 

 

 

 

 

00010

 

 

 

 

 

 

 

00001

 

 

 

 

 

Для нахождения строк

матрицы Rk ,n k проверочных элементов выполняется

деление многочлена вида x n на порождающий многочлен. Полученные на каждом шаге деления остатки и являются строками проверочной матрицы Rk ,n k . Пример

получения проверочных элементов для кода (9,5) и порождающего многочлена

P(x)=10011 имеет вид:

100000000

10011

10011

10011

00110

00000

01100

00000

Соседние файлы в предмете Теория передачи сигналов