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

лабы / лаба 2 / 00_лаба_3_2_опк_отчёт

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

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

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

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

___________________________________________________________________

Факультет

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

Кафедра

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

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

«Исследование процессов кодирования и декодирования циклических кодов»

Выполнил

 

 

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

_________________________

Велит А.И.

Проверила

 

 

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

_________________________

Минаева О.Н.

Москва 2025

1. ЦЕЛЬ РАБОТЫ

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

2.РАСЧЁТНАЯ ЧАСТЬ

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

Вариант: 4

Порождающий многочлен g(x):

gnum=721

Общее число бит n=15 ;

Число полезных бит k=7 ;

Блок полезной информации:

ax=[1 0 1 1 1 0 1]

Кодовое слово с ошибкой:

c'x=[1 0 0 0 1 1 0 0 1 0 0 0 1 1 1]

2.2 Порождающая и проверочные матрицы

Образующая матрица систематического кода состоит из двух подматриц: единичной и подматрицы остатков:

||G|| ||IkkRkr||

(1)

Подматрица остатков содержит k=7 строк длиной r=8

бит каждая:

 

r1

 

 

 

r

2

 

(2)

Rkr

 

 

 

. .

 

 

rk

 

 

Строки подматрицы можно вычислить как остатки от деления:

ri xn -i mod gx

(3)

Двоичные коэффициенты образующего полинома:

gnum=721 => gx=[1 1 1 0 1 0 0 0 1]

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

gpoly(x)→x8 +x7 +x6 +x4 +1

Произведем деление по формуле 3. Полученные строки подматрицы остатков R:

1 1 1 0 1 0 0 0

 

0 1 1 1 0 1 0 0

 

 

0 0 1 1 1 0 1 0

 

 

 

Rkr=

0 0 0 1 1 1 0 1

 

1 1 1 0 0 1 1 0

 

0 1 1 1 0 0 1 1

 

 

1 1 0 1 0 0 0 1

 

 

 

Тогда порождающая матрица примет вид:

1 0 0 0 0 0 0 1 1 1 0 1 0 0 0

 

0 1 0 0 0 0 0 0 1 1 1 0 1 0 0

 

 

0 0 1 0 0 0 0 0 0 1 1 1 0 1 0

 

 

 

G=

0 0 0 1 0 0 0 0 0 0 1 1 1 0 1

 

0 0 0 0 1 0 0 1 1 1 0 0 1 1 0

 

0 0 0 0 0 1 0 0 1 1 1 0 0 1 1

 

 

0 0 0 0 0 0 1 1 1 0 1 0 0 0 1

 

 

 

Проверочная матрица в систематическом виде строится на основе матрицы Gn ,k , а именно:

Hn ,k RkrT Ir , где Ir – единичная матрица.

1 0 0 0 1 0 1 1 0 0 0 0 0 0 0

1 1 0 0 1 1 1 0 1 0 0 0 0 0 0

1 1 1 0 1 1 0 0 0 1 0 0 0 0 0

H= 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0

1 0 1 1 0 0 0 0 0 0 0 1 0 0 0

0 1 0 1 1 0 0 0 0 0 0 0 1 0 0

0 0 1 0 1 1 0 0 0 0 0 0 0 1 0

0 0 0 1 0 1 1 0 0 0 0 0 0 0 1

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

Необходимо закодировать следующую информационную последовательность:

ax=[1 0 1 1 1 0 1]

Кодирование осуществляется по следующему закону:

cx ax xr +ax xr mod gx

(4)

Умножение следующего вида ax xr можно представить как сдвиг всех символов влево на r=8 разрядов:

axxr=[1 0 1 1 1 0 1 0 0 0 0 0 0 0 0]

Остаток деления ax xr mod gx будет следующим:

div_ax_xrRemT =[1 1 1 1 1 0 0 0]

Выполнение сложения ax xr +ax xr mod gx :

cx axxrT div_ax_xrRem T =[1 0 1 1 1 0 1 1 1 1 1 1 0 0 0]

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

cpoly(x)→x14+x12+x11+x10+x8 +x7 +x6 +x5 +x4 +x3

Блок схема кодера представлена на рисунке 2.3.1.

Рисунок 2.3.1 – Блок-схема кодера

2.4 Декодирование кодовых слов

При декодировании вычисляется синдром sx как остаток от деления

cxmod gx :

sx cxmod gx

(5)

Поделим кодовое слово cx, найденное в предыдущем пункте, на

порождающий полином. Вычисленный остаток от деления:

syndrom_cxgxT =[0 0 0 0 0 0 0 0]

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

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

syndrom_c'xgxT =[0 0 1 1 1 0 1 0]

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

Переданная ax и принятая cx комбинации связаны соотношением:

cx ax+ex

(6)

, где ex – ошибочный вектор;

Так как, axmod gx 0 (переданное кодовое слово при делении на

порождающий полином, всегда будет давать 0) имеем соотношение, аналогичное формуле вычисления синдрома:

sx cxmod gx

sx ax+ex mod gx

sx axmod gx +exmod gx

sx exmod gx

(7)

Таким образом, синдром зависит только от ex, а значит, по синдрому можно определить где произошла ошибка.

Создадим матрицу синдромов и соответствующих им векторов ошибок.

Пусть ex xi , где i 0,1 n-1 – позиция ошибки. Тогда, синдром sx:

sx xi mod gx

(8)

Вычислим остатки от деления xi на gx

для всех i и составим таблицу

синдромов:

 

Таблица 2.4.1 – таблица синдромов

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

whatSymbolError_c'x=“Ошибкабыланайденавсимволе 3”

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

ei=[0 0 1 0 0 0 0 0 0 0 0 0 0 0 0]

epoly(x)→x12

Исправление кодового слова с ошибкой, используя вектор ошибки:

c'x c'x ei=[1 0 1 0 1 1 0 0 1 0 0 0 1 1 1]

Определение синдрома ошибки для исправленного кодового слова:

syndrom_c'xgxT =[0 0 0 0 0 0 0 0]

Он равен нулю, что говорит о том, что кодовое слово было исправлено.

Далее на рисунке 2.4.1 представлена блок-схема декодера.

Рисунок 2.4.1 – Блок-схема декодера

3.ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

3.1Проверка кодовых слов

Проведение кодирования в программе Labor2.exe.

Рисунок 3.3.1 – Результаты проверки кодирования компьютерным моделированием

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

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

Проведем проверку строк подматрицы остатков образующей матрицы.

Рисунок 3.2.1 – Результаты проверки строк подматрицы остатков компьютерным моделированием

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

3.3 Проверка декодирования ошибочного кодового слова

Проведем проверку декодирования ошибочного кодового слова в программе Labor2.exe.

Рисунок 3.3.1 – Результаты проверки декодирования ошибочного кодового слова компьютерным моделированием

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

3.4 Проверка декодирования исправленного кодового слова

Проведем проверку декодирования исправленного кодового слова в программе Labor2.exe.

Рисунок 3.4.1 – Результаты проверки декодирования исправленного кодового слова компьютерным моделированием

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

4.ВЫВОДЫ

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

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

Все предварительные (ручные) расчеты были проверены и подтверждены в программе Labor2.

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