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

лабы / лаба 3 / 00_лаба_4_3_опк_отчёт

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

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

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

Московский технический университет связи и информатики

___________________________________________________________________

Факультет

«Радио и телевидение»

Кафедра

«Радиотехнических систем (РТС)»

Лабораторная работа №3 по дисциплине «Основы помехоустойчивого кодирования»

«Исследование процессов кодирования и декодирования кодов РидаСоломона»

Выполнил

 

 

Студент группы БРВ2201

_________________________

Велит А.И.

Проверила

 

 

Старший преподаватель

_________________________

Минаева О.Н.

Москва 2025

1. Цель работы

Цель работ – получение практических навыков по формированию поля Галуа для построения кодов Рида-Соломона, изучение алгоритмов формирования кодовых слов; изучение процессов декодирования кодов Рида-Соломона, алгоритма обнаружения и исправления ошибок в кодовых словах.

2.Предварительный расчет

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

Вариант: 4

Образующий неприводимый полном для построения поля Галуа:

В двоичном коде:

gx_bin=[1 0 0 0 0 0 1 1]

В восьмеричном коде:

gx_oct=203

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

gx_poly(x)→x7 +x+1

Разрядность m=7 ;

Количество символов в кодовом слове (блоке) циклического кода n 15;

Количество обнаруживаемых и исправляемых ошибок в блоке t 2;

2.2 Построение поля Галуа GF(2m)

Необходимо построить поле Галуа GF(M), где M 2m=128 ;

Его i-тый определяется как степень примитивного элемента alpha 10 (2 в двоичной СС) по модулю образующего полинома поля, то есть остаток от деления степени примитивного элемента на образующий полином поля:

ai 10i mod gx

(1)

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

Вычисленное по формуле поле Галуа GF:

 

0

0

0

0

0

0

1

 

 

 

0

0

0

0

0

1

0

 

 

 

0

0

0

0

1

0

0

 

 

 

 

 

 

0

0

0

1

0

0

0

 

 

0

0

1

0

0

0

0

 

GF=

 

0 1 0 0 0 0 0

 

 

 

1

0

0

0

0

0

0

 

 

 

0

0

0

0

0

1

1

 

 

 

 

 

0

0

0

0

1

1

0

 

 

 

0

0

0

1

1

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Всего в данном поле есть 2m-1=127 строк.

2.3 Многочлен кода Рида-Соломона с корнями в виде степеней примитивного элемента

По варианту имеется следующая битовая последовательность:

codeInf=[0 0 1 0 0 1 0 1 1 0 0 1 0 1]

В рассчитанной таблице необходимо найти элементы поля Галуа, равные приведённым шестизначным кодам из битовой последовательности:

codeInfInPrimitivesT =[64 26]

Тогда кодируемую информацию можно выразить в форме элементов

Галуа:

apoly(x)→α64 x+α26

Добавим к битовой последовательности 9 нулевых символов:

codeInfWithZerosT =[0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 …]

Были получены 11 m=77 бит блока. Им будет соответствовать полином:

apoly_11cw(x)→α64 x1026 x9

Этот полином и будет использоваться при помехоустойчивом кодировании для расчёта по 11 информационным символам 4-х

проверочных как коэффициентов полинома – остатка от деления: xr a(x) .

g(x)

2.4 Нахождение порождающего многочлена Рида-Соломона

Образующий полином Рида-Соломона можно найти по теореме Безу:

2 t

 

gx ∏ x-αi →gx x-α4 x-α3 x-α2 (x-α)

(2)

i=1

 

Раскроем скобки:

gx x4 - α4 3 2 +α x3 + α7 6 4 3 x2 - α9 8 7 6 x+α10

Далее необходимо сложить соответствующие степени примитивного элемента из поля Галуа, которые находятся в скобках перед каждым xn , где n - степень.

koefCreat0

 

T

T

T

GFmtrx1

T T

=[0 0 1 1 1 1 0]

GFmtrx4

 

GFmtrx3

GFmtrx2

 

 

 

 

 

 

 

 

 

koefCreat1

 

T

T

T

GFmtrx3

T T

=[1 0 1 1 0 1 1]

GFmtrx7

 

GFmtrx6

GFmtrx4

 

 

 

 

 

 

 

 

 

koefCreat2

 

T

T

T

GFmtrx6

T T

=[1 0 0 1 0 0 1]

GFmtrx9

 

GFmtrx8

GFmtrx7

 

 

 

 

 

 

 

 

 

Для всех вычисленных последовательностей найдем соответствующую им степень примитивного элемента в поле Галуа:

22 numsPrimitiveOfKoefs= 73

27

Тогда порождающий полином примет вид:

gcretePoly(x)→x4 22 x3 73 x2 27 x+α10

2.5 Кодирование битовой информационной последовательности

Кодирование в кодах Рида-Соломона выполняется по следующей формуле:

cx xr ax+xr axmod gx

(3)

Выполним умножение xr ax, тогда полином информационной последовательности примет вид:

apoly_15cw(x)→α64 x1426 x13

Для выполнения деления полиномов в поле Галуа используется программа Pdiv256.exe, в силу сложности вычислений. Данная программа также предоставляет возможность проверить примитивные элементы поля Галуа. Указав в программе порождающий полином поля Галуа и вычисленный m+1=8 элемент, программа высчитывает остальные строки поля Галуа. Сравним любой элемент в поле Галуа из программы и вычисленный ручным методом:

Рисунок 1 – Часть вычисленных программой элементов поля Галуа

Сравним элементы α108:

GFmtrx108=[0 0 1 1 0 0 1]

Элементы совпадают, значит, вычисления были сделаны правильно.

Теперь выполним деление xr axmod gx в данной программе:

Рисунок 2 – Остаток от деления, вычисленный программой

Полином остатка:

p(x)→α83 x3 91 x2 72 x+α31

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

c(x)→α64 x1426 x1383 x3 91 x2 72 x+α31

2.5 Декодирование кодового слова

Выполним декодирование вычисленного кодового слова. Заданное кодовое слово должно иметь синдром равный нулю. Получить синдром ошибки можно по следующей формуле:

sx(x) c(x) mod(g(x))

(4)

Поделим кодовое слово на порождающий полином с помощью программы:

Рисунок 3 – Синдром ошибки кодового слова, вычисленный программой

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

2.6 Декодирование кодового слова с ошибкой

Необходимо внести ошибку во втором бите первого символа кодового слова c(x).

Последовательность первого символа представляет собой:

frstSyblSeq=[0 0 1 0 0 1 0]

Внесем ошибку:

frstSyblSeqerrT =[0 1 1 0 0 1 0]

Теперь

данная

последовательность соответствует уже не степени

pow=64

, а pownew

=109 . Тогда полином с ошибкой будет выглядеть:

 

 

0

c'(x)→α109 x1426 x1383 x3 91 x2 72 x+α31

Для кодового слова с ошибкой найдем синдром ошибки, делается это по формуле 4. Выполним деление в программе:

Рисунок 4 – Синдром ошибки кодового слова с ошибкой, вычисленный программой

Вычисленный полином синдрома ошибки:

s(x)→α114 x3 7 x2 80 x+α118

3.Выводы

Врезультате выполнения лабораторной работы были получены практические навыки по формированию поля Галуа для построения кодов Рида-Соломона, были изучены алгоритмы формирования кодовых слов; были изучены процессы декодирования кодов Рида-Соломона, алгоритм обнаружения и исправления ошибок в кодовых словах.

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