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

лабы / лаба 3 / Форма отчёт ЛР 3

.docx
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
301.59 Кб
Скачать

Московский Технический Университет Связи и Информатики

Кафедра радиотехнических систем

Лабораторный практикум по дисциплине

ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ

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

Исследование процессов кодирования и

декодирования кодов Рида-Соломона

Выполнил:

студент группы ПС0601

Яшин П.А.

Проверил:

доц. Русанов В.Э.

Москва 2011

Цель работы:

1. Получение практических навыков по формированию поля Галуа для построения кодов Рида-Соломона, изучение алгоритмов формирования кодовых слов.

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

Исходные данные:

а) тип кода – код Рида Соломона на основе поля Галуа GF(16), построенного на основе многочлена g(x)= , примитивный элемент GF 010

б) разрядность 4 бита;

б) n =15 длина кодового слова (блока) циклического кода ;

в) k=11 - длина информационного слова (блока) циклического кода;

г) t=2 - кратность обнаруживаемых и исправляемых ошибок.

д) кодируемая информация – Ф (первая буква фамилии)

Выполнение работы:

Получим элементы поля Галуа GF(16), построенного на основе многочлена g(x)= , примитивный элемент GF 010.

100000000000000000000000 | 10011

10011 1001101011110

010110 α4

00000

01100 α5

00000

00000 α6

10011

00010 α7

10011

00000 α8

00000

10100 α9

10011

01111 α10

00000

11101 α11

10011

11110 α12

10011

11110 α13

10011

10010 α14

10011

00010 α0

00000

01100 α1

α-∞

α0

α1

α2

α3

α4

α5

α6

α7

α8

α9

α10

α11

α12

α13

α14

0

1

2

4

8

15

15

15

13

10

10

7

14

12

13

9

0000

0001

0010

0100

1000

1111

1111

1111

1111

0111

1011

1111

1111

1111

1001

1001

Согласно варианту 8 бит кодируемой информации 1111.1110. Получим 11 четырёхзначных элемента поля GF(16), добавив к 8 информационным битам ещё 36, в итоге имеем: 1001.0100.0000.0000.0000.0000.0000.0000.0000.0000.0000,

При записи в виде полинома со степенями элементов GF(16), получим:

a(x)=α14*x10+ α2*x9

Запишем образующий полином кода Рида-Соломона g(x)по теореме Безу:

Применив правила операций над элементами поля GF, окончательно получим g(x):

Кодовое слово формируется по правилу: , где

, где r- число исправляемых символов по 4 бита

Кодовое слово, переданное в канал можно представить в виде полинома

или в виде набора двоичных символов: с=1001.0100.0000.0000.0000.0000.0000.0000.0000.0000.0000.0010.0010.1101.1110

В ходе передачи информация были повреждены два блока по 4 бита, именно столько может исправить наш код Рида-Соломона. Для упрощения ручного вычисления синдрома пусть это будут предпредпоследняя и предпоследняя группы бит по 4:

с`=1001.0100.0000.0000.0000.0000.0000.0000.0000.0000.0000. 0010.1101.0010.1110

В полиномиальном виде:

Синдром, согласно которому происходит исправление ошибки, находится как остаток от деления c`(x) на g(x)

Этапы деления до сноса проверочных символов в нашем случае повторяют процедуру вычисления остатка от деления a(x) xr на g(x), поэтому опущены. Дальнейшие операции приведены ниже:

В результате вычислений получаем синдром в форме полинома:

В двоичной форме s=0000.1111.1111.0000

Проверим правильность выполнения ручных операций

с помощью программы из комплекта ЛР.

Для проверки будем закладывать в программу необходимые многочлены в виде степеней элементов поля Галуа при степенях x.

R

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Например:

можно записать в виде:

E2RRRRRRRRR11DB

Здесь R заменяет символ , то есть показатель степени при нулевом элементе

Получение проверочных символов как остатка от деления a(x)*xr/g(x):

Числитель до дел: E2RRRRRRRRRRRRR Знаменатель до дел: 0D63A

Делим:i=14

Div Proizv=C1*A: EC529RRRRRRRRRR

Текущее делимое: 7529RRRRRRRRRR

Делим:i=13

Div Proizv=C1*A: 75DA2RRRRRRRRR

Текущее делимое: ED2RRRRRRRRR

Делим:i=11

Div Proizv=C1*A: EC529RRRRRRR

Текущее делимое: 1129RRRRRRR

Делим:i=10

Div Proizv=C1*A: 1E74BRRRRRR

Текущее делимое: 7CEBRRRRRR

Делим:i=9

Div Proizv=C1*A: 75DA2RRRRR

Текущее делимое: E2E2RRRRR

Делим:i=8

Div Proizv=C1*A: EC529RRRR

Текущее делимое: 7CR9RRRR

Делим:i=7

Div Proizv=C1*A: 75DA2RRR

Текущее делимое: EDD2RRR

Делим:i=6

Div Proizv=C1*A: EC529RR

Текущее делимое: 17R9RR

Делим:i=5

Div Proizv=C1*A: 1E74BR

Текущее делимое: 17EBR

Делим:i=4

Div Proizv=C1*A: 1E74B

Текущее делимое: 11DB

Остаток: 11DB

Числитель: E2RRRRRRRRRRRRR

Знаменатель: 0D63A

Частное: E7RE17E7E11

Остаток: 11DB

Результат совпадает с ручными вычислениями

Проверка деления c(x)/g(x) без ошибки в канале:

Числитель до дел: E2RRRRRRRRR11DB Знаменатель до дел: 0D63A

Делим:i=14

Div Proizv=C1*A: EC529RRRRRRRRRR

Текущее делимое: 7529RRRRRR11DB

Делим:i=13

Div Proizv=C1*A: 75DA2RRRRRRRRR

Текущее делимое: ED2RRRRR11DB

Делим:i=11

Div Proizv=C1*A: EC529RRRRRRR

Текущее делимое: 1129RRR11DB

Делим:i=10

Div Proizv=C1*A: 1E74BRRRRRR

Текущее делимое: 7CEBRR11DB

Делим:i=9

Div Proizv=C1*A: 75DA2RRRRR

Текущее делимое: E2E2R11DB

Делим:i=8

Div Proizv=C1*A: EC529RRRR

Текущее делимое: 7CR911DB

Делим:i=7

Div Proizv=C1*A: 75DA2RRR

Текущее делимое: EDD51DB

Делим:i=6

Div Proizv=C1*A: EC529RR

Текущее делимое: 1713DB

Делим:i=5

Div Proizv=C1*A: 1E74BR

Текущее делимое: 1E74B

Делим:i=4

Div Proizv=C1*A: 1E74B

Текущее делимое:

Остаток: RRRR

Числитель: E2RRRRRRRRR11DB

Знаменатель: 0D63A

Частное: E7RE17E7E11

Остаток: RRRR

Остаток нулевой, ошибки в канале не было – значит c(x) сформирован правильно

Проверка деления с ошибкой в полиноме при 2 и 1 степенях:

Числитель до дел: E2RRRRRRRRR1D1B Знаменатель до дел: 0D63A

Делим:i=14

Div Proizv=C1*A: EC529RRRRRRRRRR

Текущее делимое: 7529RRRRRR1D1B

Делим:i=13

Div Proizv=C1*A: 75DA2RRRRRRRRR

Текущее делимое: ED2RRRRR1D1B

Делим:i=11

Div Proizv=C1*A: EC529RRRRRRR

Текущее делимое: 1129RRR1D1B

Делим:i=10

Div Proizv=C1*A: 1E74BRRRRRR

Текущее делимое: 7CEBRR1D1B

Делим:i=9

Div Proizv=C1*A: 75DA2RRRRR

Текущее делимое: E2E2R1D1B

Делим:i=8

Div Proizv=C1*A: EC529RRRR

Текущее делимое: 7CR91D1B

Делим:i=7

Div Proizv=C1*A: 75DA2RRR

Текущее делимое: EDD5D1B

Делим:i=6

Div Proizv=C1*A: EC529RR

Текущее делимое: 171A1B

Делим:i=5

Div Proizv=C1*A: 1E74BR

Текущее делимое: 1E26B

Делим:i=4

Div Proizv=C1*A: 1E74B

Текущее делимое: CCR

Остаток: RCCR

Числитель: E2RRRRRRRRR1D1B

Знаменатель: 0D63A

Частное: E7RE17E7E11

Остаток: RCCR

Результаты совпали с ручным расчётом

Выводы: в ходе работы была освоена методика построения полей Галуа и работы с их элементами. На практике была проведена операция кодирования/декодирования Рида-Соломона. Из-за ошибки в канале синдром отличен от нуля. Произошло две групповых ошибки, обе могут быть исправлены.

8

Соседние файлы в папке лаба 3