lab_4_OPIS
.docx
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра РС
отчет
по лабораторной работе №4
по дисциплине «Основы построения инфокоммуникационных систем»
Тема: ЦИКЛИЧЕСКИЙ КОД ХЭММИНГА
Вариант № 11
Студент гр. 0182 |
|
Бронников Д.Д. |
Преподаватель |
|
Маркелов О.А. |
Санкт-Петербург
2023
Цель работы
1. Получение информационных символов, представив номер фамилии в списке группы, 4-х разрядным двоичным позиционным кодом.
2. Для этих информационных символов получить кодовое слово тремя способами.
Теоретические сведения
Кодом называется множество кодовых слов – последовательностей символов, которым соответствуют определенные сообщения источника информации. Если это множество является линейным подпространством, то код называется линейным. Код предназначен для обнаружения и исправления ошибок, возникающих из-за помех в канале связи.
В систематических линейных кодах кодовые слова имеют вид:
,
где
– информационные символы (биты),
– проверочные (избыточные, контрольные).
Число k это размерность кода как линейного подпространства или число информационных символов. Число n – длина кода, или число символов в кодовом слове, или размерность линейного пространства, в котором расположен код.
Эти числа входят
в обозначение кода (
.
Они определяют количество избыточных
символов
и скорость кода
.
Параметром, определяющим помехоустойчивость кода, служит его кодовое расстояние. Кодовым расстоянием кода называется минимальное расстояние Хэмминга между любой парой несовпадающих кодовых слов
.
Расстояние Хэмминга есть число позиций, в которых один вектор отличается от другого. Чем больше кодовое расстояние, тем выше помехоустойчивость кода.
На практике
помехоустойчивость кода оценивается
числами
и
.
Эти числа показывают, что код способен
обнаружить все ошибки, кратность которых
,
или исправить все ошибки кратности
.
Кратность ошибки — это число искаженных
символов в принятой комбинации.
Между этими числами и кодовым расстоянием существует связь:
,
если решается только задача обнаружения
ошибок,
,
если код используется только для
исправления ошибок,
причем
,
если ошибки малой кратности исправляются,
а более высокой обнаруживаются.
Способы задания линейного кода
Способы задания
линейного кода определяют структуру
кодера, который для систематических
кодов должен по известным информационным
битам
найти проверочные
и сформировать кодовое слово
.
Способы задания линейного кода есть способы задания линейного подпространства размерности k в пространстве размерности n.
Любое подпространство
(код) может быть задано с помощью базиса,
содержащего k
линейно
независимых векторов (кодовых слов).
Если кодовые слова
выписать в столбик,
то получим матрицу
размерности
.
Для сообщения
источника в виде вектора
слово
линейного кода может быть получено по
формуле
.
Кодовое слово
представляет собой произведение
информационного вектора
на матрицу
,
которую по этой причине называют
порождающей
матрицей линейного
кода.
С каждым линейным
подпространством связана матрица H,
содержащая n
столбцов и
строк и проектирующая любое кодовое
слово на перпендикуляр к этому
подпространству. Поэтому для любого
кодового слова справедливо
,
где нулевой вектор содержит разрядов, а индекс T означает транспонирование матрицы, чтобы матричное произведение было выполнимо.
Это свойство использует декодер для проверки: принадлежит ли наблюдаемый на выходе канала сигнал коду или нет. Поэтому матрица H называется проверочной.
Таким образом, линейный код может быть задан как порождающей и проверочной матрицами, так и соотношениями, устанавливающими связь между проверочными и информационными символами кодовых слов.
Способы задания кода (7,4)
В таблицах хороших
циклических кодов указано, что код (7,4)
образуется с помощью порождающего
многочлена
.
При этом достигается кодовое расстояние
,
и корректирующая способность оценивается
числами
.
Кодовое слово
систематического, разделимого кода
содержит 4 информационных символов
и 3 проверочных
.
Число кодовых слов
,
а число последовательностей на выходе
канала
.
Порождающая матрица может быть записана в виде:
.
Проверочные биты слов в каждой строке матрицы могут быть получены с помощью алгоритма кодирования информационных символов этой строки.
Связь проверочных символов с информационными задается уравнениями:
,
,
.
Проверочная матрица кода (7,4) имеет вид:
.
Проверить, что для любого кодового слова
.
Кодирование циклическим кодом (7,4)
Получение кода в соответствии с заданием
Вариант 11: 1110 = 10112
A = а1а2а3а4 = 10112
Кодовое слово можно получить тремя способами:
Порождающей матрицей:
,
С помощью связи проверочных символов с информационными задается уравнениями:
b1= а1 ⊕ а2 ⊕ а3 = 1 ⊕ 0 ⊕ 1 = 0
b2 = а4 ⊕ а2 ⊕ а3 = 1 ⊕ 0 ⊕ 1 = 0
b3 = а1 ⊕ а2 ⊕ а4 = 1 ⊕ 0 ⊕ 1 = 0
C = а1, а2, а3, а4, b1, b2, b3, = 1011000
С помощью алгоритма кодирования циклическим систематическим кодом:
А(х) = х3 ⊕ х1 ⊕ х0 = х3 ⊕ х ⊕ 1
Cдвиг информационных символов. А(х) сдвигается влево на n – k разрядов: A(x) · xn-k
xn-k = x7-4 = x3
А(х) · x3 = х6 ⊕ х4 ⊕ х3
B(x) = A(x) · xn-k mod g(x), где g(x) = х3 ⊕ х1 ⊕ 1
B(x) = 0
С(х) = A(x) · xn-k ⊕ B(x)
С(х) = х6 ⊕ х4 ⊕ х3 = 10110002
Проверка, что для кодового слова CHT = 0
;
Моделирование работы кодера
Рис. 1 – Модель кодера
Рис. 2 – Работа кодера при подаче на вход сигнала (1011)
Декодер циклического кода (7,4)
Рис. 3 – Структурная схема модели декодера
В канале действует однократная ошибка
Ошибка задаётся многочленом xi, где i находится из сравнения:
i = (# + L) mod7; # = 11, L = 5
i = 16 mod 7 = 2 => Ошибка задаётся многочленом x2. Однако, в процессе выполнения работы была допущена ошибка и работа выполнена верно, но для L = 2 => x6.
Рис. 4 – Работа декодера при подаче на вход сигнала (1011000) и вектора ошибок (0100000)
Декодер регистрирует и исправляет ошибку:
С = (1011000) – отправленное сообщение;
Y = (1111000) – принятое сообщение;
e = (0100000) – найденные ошибки;
out = (1011000) – исправлена одна ошибка.
В канале действует двукратная ошибка
Ошибка задаётся многочленом xi(1 + xF), где i находится из сравнения:
i = (# + L) mod 7. F – удовлетворяет неравенству i + F < 7
i = 1, F = 1 => Ошибка задаётся многочленом x6 + x7 (измерения снова не совсем верные, x6 + x5).
Рис. 5 – Работа декодера при подаче на вход сигнала (1011000) и вектора ошибок (0110000)
Декодер регистрирует и исправляет ошибку, но в неправильном месте
С = (1011000) – отправленное сообщение;
e = (0000001) – найденные ошибки;
Y = (1101000) – принятое сообщение;
out = (1101001) – ошибки не исправлены, добавлена одна новая ошибка.
Работа декодера при трёх ошибках с фиксацией декодера:
Рис. 6 – Работа декодера при подаче на вход сигнала (1011000) и вектора ошибок (0111000)
Декодер регистрирует и исправляет ошибку, но в неправильном месте:
С = (1011000) – отправленное сообщение;
e = (0000001) – найденные ошибки;
Y = (1100000) – принятое сообщение;
out = (1100001) – ошибки не исправлены, добавлена одна новая ошибка.
Работа декодера при трёх ошибках без фиксации декодера
Рис. 7 – Работа декодера при подаче на вход сигнала (1011000) и вектора ошибок (1000101)
Декодер не регистрирует и не исправляет ошибку:
С = (1011000) – отправленное сообщение;
e = (0000000) – найденные ошибки;
Y = (0011101) – принятое сообщение;
out = (0011101) – ошибки не исправлены.
Вывод
В ходе лабораторной работы были получены информационные символы кодового слова, используя свой порядковый номер в списке группы. На основании информационных символов были получены проверочные символы, используя 3 разных способа. Во всех трёх случаях кодовые слова совпали, а равенство С· НТ выполнилось.
Далее было проведено моделирование декодера в 4 различных случаях его работы: без ошибок, с однократной, двухкратной, трёхкратной и такой трёхкратной, что декодер не выдаёт сообщение об ошибке. В случае отсутствия ошибки декодер работает стабильно. При наличии однократной ошибки он её обнаруживает и исправляет, получая на выходе верное сообщение. При наличии двукратной ошибки декодер обнаруживает её, но неправильно исправляет принятое сообщение. При наличии трёхкратной ошибки и при ненулевом синдроме декодер работает как в случае с двухкратной ошибкой. При наличии трехкратной ошибки с нулевым синдромом декодер не обнаруживает ошибку и не исправляет ее.
