Praktika_4
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра РС
отчет
по лабораторной работе №4
по дисциплине «Основы построения инфокоммуникационных систем»
Тема:
Студент гр. 0182 |
|
Матросов Р.М. |
Преподаватель |
|
Маркелов О.А. |
Санкт-Петербург
2023
Цель работы:
1. Получение информационных символов, представив номер фамилии в списке группы, 4-х разрядным двоичным позиционным кодом.
2. Для этих информационных символов получить кодовое слово тремя способами.
Теоретические сведения
Кодом называется множество кодовых слов – последовательностей символов, которым соответствуют определенные сообщения источника информации. Если это множество является линейным подпространством, то код называется линейным. Код предназначен для обнаружения и исправления ошибок, возникающих из-за помех в канале связи.
Для
простоты ограничимся рассмотрением
систематических линейных кодов, у
которых кодовые слова имеют вид:
,
где
– информационные символы (биты),
– проверочные (избыточные, контрольные).
Число k это размерность кода как линейного подпространства или число информационных символов.
Число n– длина кода, или число символов в кодовом слове, или размерность линейного пространства, в котором расположен код.
Эти
числа входят в обозначение кода (
.
Они определяют количество избыточных
символов
и скорость кода
.
Параметром, определяющим помехоустойчивость кода, служит его кодовое расстояние. Кодовым расстоянием кода называется минимальное расстояние Хэмминга между любой парой несовпадающих кодовых слов
.
Расстояние
Хэмминга есть число позиций, в которых
один вектор отличается от другого. Чем
больше кодовое расстояние, тем выше
помехоустойчивость кода. Иногда в
таблицах хороших линейных кодов кодовое
расстояние включают в обозначение кода
На
практике помехоустойчивость кода
оценивается числами
и
.
Эти числа показывают, что код способен
обнаружить все ошибки, кратность которых
,
или исправить все ошибки кратности
.
Кратность ошибки — это число искаженных
символов в принятой комбинации.
Например,
при
код способен исправить все однократные
ошибки (их n
штук),
все двукратные (их
штук) и все
трехкратных,
где ( ) – число сочетаний из n
по3.
Между этими числами и кодовым расстоянием существует связь:
,
если решается только задача обнаружения
ошибок,
,
если код используется только для
исправления ошибок,
причем
,
если ошибки малой кратности исправляются,
а более высокой обнаруживаются.
Способы задания линейного кода
Способы
задания линейного кода определяют
структуру кодера, который для
систематических кодов должен по известным
информационным битам
найти проверочные
и сформировать кодовое слово
.
Способы задания линейного кода есть способы задания линейного подпространства размерности k в пространстве размерности n.
Вектор, принадлежащий подпространству, имеет только k независимых координат, а остальные зависимы от них. Поэтому каждый проверочный бит bi есть линейная комбинация некоторых, вполне определенных информационных, например bi = a1 + a3 + a6. Благодаря свойствам сложения по модулю 2 последовательность a1, a3, a6, bi содержит четное число 1. Поэтому bi часто называют битами контроля четности. Для задания кода такие соотношения должны быть определены для всех контрольных бит.
Любое
подпространство (код) может быть задано
с помощью базиса, содержащего k
линейно
независимых векторов (кодовых слов).
Если кодовые слова
выписать
в столбик, то получим матрицу
размерности
.
Для
сообщения источника в виде вектора
слово
линейного кода может быть получено по
формуле
.
Кодовое
слово представляет собой произведение
информационного вектора
на матрицу
,
которую по этой причине называют
порождающей
матрицей
линейного кода.
С
каждым линейным подпространством
связана матрица H,
содержащая n
столбцов
и
строк и проектирующая любое кодовое
слово на перпендикуляр к этому
подпространству. Поэтому для любого
кодового слова справедливо
,
где нулевой вектор содержит разрядов, а индекс T означает транспонирование матрицы, чтобы матричное произведение было выполнимо.
Это свойство использует декодер для проверки: принадлежит ли наблюдаемый на выходе канала сигнал коду или нет. Поэтому матрица H называется проверочной.
Таким образом, линейный код может быть задан как порождающей и проверочной матрицами, так и соотношениями, устанавливающими связь между проверочными и информационными символами кодовых слов.
Способы задания кода (7,4)
В
таблицах хороших циклических кодов
указано, что код (7,4) образуется с помощью
порождающего многочлена
.
При этом достигается кодовое расстояние
,
и корректирующая способность оценивается
числами
.
Кодовое
слово систематического, разделимого
кода
содержит 4 информационных символов
и 3 проверочных
.
Число
кодовых слов
,
а число последовательностей на выходе
канала
.
Порождающая матрица может быть записана в виде:
.
Проверочные биты слов в каждой строке матрицы могут быть получены с помощью алгоритма кодирования информационных символов этой строки.
Связь проверочных символов с информационными задается уравнениями:
,
,
.
Проверочная матрица кода (7,4) имеет вид:
.
Проверить, что для любого кодового слова
.
Кодирование циклическим кодом (7,4)
Получилм информационные символы, представив выданный вариант «17» в четырехразрядном двоичном виде
1710 =110 = 00012
A = а1а2а3а4 = 00012
Получим кодовое слово тремя способами:
Порождающая матрица:
,
Связь проверочных символов с информационными задается уравнениями
b1= а1 ⊕ а2 ⊕ а3 = 0 ⊕ 0 ⊕ 0 = 0
b2 = а4 ⊕ а2 ⊕ а3 = 1 ⊕ 0 ⊕ 0 = 1
b3 = а1 ⊕ а2 ⊕ а4 = 0 ⊕ 0 ⊕ 1 = 1
C = а1, а2, а3, а4, b1, b2, b3, = 0001011
Алгоритм кодирования циклическим систематическим кодом
А(х) = х2 ⊕ х1 ⊕ х0 = х2 ⊕ х ⊕ 1
Произведем сдвиг информационных символов. А(х) сдвигается влево на n – k разрядов: A(x) · xn-k
xn-k = x7-4 = x3
А(х) · x3 = х5 ⊕ х4 ⊕ х3
B(x) = A(x) · xn-k mod g(x), где g(x) = х3 ⊕ х1 ⊕ 1
С(х) = A(x) · xn-k ⊕ B(x)
С(х) = х5 ⊕ х4 ⊕ х3 ⊕ х1 = 00010012
Проверим, что для любого кодового слова CHT = 0
,
Моделирование работы кодера
Рис.1 – Модель кодера
Рис.2 – Работа кодера при подаче на вход сигнала (0001)
Декодер циклического кода (7,4)
Рис.3 – Структурная схема модели декодера
Работа декодера при одной ошибке:
Ошибка задаётся многочленом xi, где находится из сравнения
i = (# + L) mod7
# = 17, L = 5
i = 22 mod 7 = 1 => Ошибка задаётся многочленом x1
Рис.4 – Работа декодера при подаче на вход сигнала (0001011) и вектора ошибок (0000010)
Декодер регистрирует и исправляет ошибку
С = (0001011) – отправленное сообщение
Y = (0001001) – принятое сообщение
e = (0000010) – вектор ошибки
v = (0001011) – исправлена одна ошибка
Работа декодера при двух ошибках:
Ошибка задаётся многочленом xi(1 + xF), где находится из сравнения
i = (# + L) mod7. F – удовлетворяет неравенству i + F < 7
i = 1, F = 3 => Ошибка задаётся многочленом x4 + x1
Рис.5 – Работа декодера при подаче на вход сигнала (0001011) и вектора ошибок (0010010)
Декодер регистрирует и исправляет ошибку, но в неправильном месте
С = (0001011) – отправленное сообщение
e = (0000100) – вектор ошибки
u = (0011101) – ошибки не исправлены, добавлена одна новая ошибка
Работа декодера при трёх ошибках:
Рис.6 - Работа декодера при подаче на вход сигнала (0001011) и вектора ошибок (0101010)
Декодер регистрирует и исправляет ошибку, но в неправильном месте
С = (0001011) – отправленное сообщение
Y = (0100001) – принятое сообщение
e = (0010000) – вектор ошибки
u = (0110001) – ошибки не исправлены, добавлена одна новая ошибка
Рис.7 – Работа декодера при подаче на вход сигнала (0001011) и вектора ошибок (0110001)
Декодер не регистрирует и не исправляет ошибку
С = (0001011) – отправленное сообщение
Y = (0111010) – принятое сообщение
e = (0000000) – вектор ошибки
u = (0111010) – ошибки не исправлены
Рис.8 – Работа декодера при подаче на вход сигнала (0001011) и вектора ошибок (1100010)
Декодер не регистрирует и не исправляет ошибку
С = (0001011) – отправленное сообщение
Y = (1101001) – принятое сообщение
e = (0000000) – вектор ошибки
u = (1101001) – ошибки не исправлены
Вывод
В ходе лабораторной работы были получены информационные символы кодового слова, используя свой порядковый номер в списке группы. На основании информационных символов были получены проверочные символы, используя 3 разных способа. Во всех трёх случаях кодовые слова совпали, а равенство С· НТ выполнилось.
Далее было проведено моделирование декодера в 4 различных случаях его работы: без ошибок, с однократной, двухкратной, трёхкратной и такой трёхкратной, что декодер не выдаёт сообщение об ошибке. В случае отсутствия ошибки декодер работает стабильно. При наличии однократной ошибки он её обнаруживает и исправляет, получая в итоге верное сообщение. При наличии двухкратной ошибки декодер обнаруживает её, но неправильно исправляет принятое сообщение. При наличии трёхкратной ошибки и при ненулевом синдроме декодер работает как в случае с двухкратной ошибкой. При наличии трехкратной ошибки с нулевым синдромом декодер не обнаруживает ошибку и не исправляет ее.
