Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Помехоустойчивое кодирование в телекоммуникационных системах. Практикум
.pdf
Министерство цифрового развития, связи и массовых коммуникаций
Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Сибирский государственный университет телекоммуникаций и информатики»
(СибГУТИ)
С. В. Воробьева
А. Е. Колягина
ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ
В ТЕЛЕКОММУНИКАЦИОННЫХ СИСТЕМАХ
Практикум
Новосибирск
2022

УДК 621.391(076.5)
Утверждено редакционно-издательским советом СибГУТИ
Рецензент к.т.н., доц. В.Л. Савиных
Воробьева, С. В. Помехоустойчивое кодирование в телекоммуникационных системах : практикум / С. В. Воробьева, А. Е. Колягина ; Сибирский
государственный университет телекоммуникаций и информатики, кафедра
радиотехнических систем. – Новосибирск, 2022. – 65 с.
Исследуются вопросы повышения помехоустойчивости приема дискретных
сообщений путем использования помехоустойчивых кодов для обнаружения и
исправления ошибок в принимаемой информации; оценивается эффективность
устройств защиты от ошибок в дискретных каналах связи.
Приводятся задания для предварительных расчетов и вопросов для
самостоятельной подготовки, требования к оформлению отчета. Имеются
приложения необходимого теоретического материала соответствующих
разделов курса. Практикум предназначен для выполнения лабораторных работ.
Практикум предназначен для студентов всех форм обучения направлений
11.03.02 – «Инфокоммуникационные технологии и системы связи», 11.03.01 –
«Радиотехника», 11.05.01 – «Радиоэлектронные системы и комплексы», 11.05.02
– «Радиоэлектронные системы специального назначения».
© Воробьева С.В., Колягина А.Е., 2022
© Сибирский государственный университет
телекоммуникаций и информатики, 2022
2

3
ОГЛАВЛЕНИЕ
1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ........................................................................... 4
1.1 ПРИНЦИПЫ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ ......................... 4
1.2 ЛИНЕЙНЫЕ ДВОИЧНЫЕ БЛОЧНЫЕ КОДЫ ................................................ 5
1.3 ЦИКЛИЧЕСКИЕ КОДЫ ..................................................................................... 8
1.4 СВЕРТОЧНЫЕ КОДЫ ...................................................................................... 10
Лабораторная работа №1 ......................................................................................... 14
Лабораторная работа №2 ......................................................................................... 21
Лабораторная работа №3 ......................................................................................... 28
Лабораторная работа №4 ......................................................................................... 35
Лабораторная работа №5 ......................................................................................... 38
Лабораторная работа №6 ......................................................................................... 45
Лабораторная работа №7 ......................................................................................... 49
Практические задания к разделу 1 .......................................................................... 57
Практические задания к разделу 2 .......................................................................... 59
Практические задания к разделу 3 .......................................................................... 63
СПИСОК ЛИТЕРАТУРЫ ........................................................................................ 64

4
1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
1.1 ПРИНЦИПЫ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ
Корректирующими или избыточными кодами называют коды, которые
позволяют обнаруживать ошибки и исправлять ошибки и стирания,
возникающие при передаче дискретных сообщений. Для корректирующих кодов
число комбинаций N удовлетворяет неравенству
(1.1)
(в дальнейшем будем рассматривать только двоичные коды, для которых
m=2). При этом часть кодовых комбинаций используется для кодирования (эти
кодовые комбинации называются разрешенными, их число р), а другая
часть при кодировании не используется. Число неиспользованных при
кодировании комбинаций, называемых запрещенными, равно р или .
В n-разрядной кодовой комбинации корректирующего кода
символов являются информационными, символов – проверочными
(избыточными). Легко заметить, что число разрешенных кодовых комбинаций
р
. (1.2)
Избыточностью равномерного блочного кода является величина
(1.3)
а относительной скоростью кода
к
(1.4)
При избыточном кодировании ошибки обнаруживаются, если переданная
разрешенная комбинация превращается в одну из запрещенных. Для
декодирования с обнаружением ошибок множество принимаемых кодовых
комбинаций разбивается на подмножества, из которых подмножества
,...,
содержат каждое по одной (разрешенной) кодовой комбинации, а
поддмножество
все остальные (запрещенные) комбинации.
При декодировании с исправлением ошибок множество B разбивается на
К неперекрывающихся подмножеств: ,...,
.
Если принята кодовая комбинация, принадлежащая подмножеству
, то
считается, что передавалась кодовая комбинация . В подмножество
следует
включить те запрещенные комбинации, которые наиболее вероятно могут
образоваться из переданной разрешенной комбинации
.
Если минимальное расстояние по Хеммингу между разрешенными
кодовыми комбинациями
мин
то код позволяет обнаружить ошибку, а в
кодовой комбинации число ошибочно принятых символов удовлетворяет
условию
мин
(1.5)
Следовательно, максимальная кратность обнаруживаемых ошибок
мин
.
Блочный корректирующий код исправляет ошибки, если их число
мин
(1.6)
Максимальная кратность полностью исправляемых ошибок

5
и
мин
принечетном
мин
мин
причетном
мин
При декодировании с исправлением ошибок и стираний могут быть
исправлены и ошибок, с стираний, если их число удовлетворяет
условию
и
мин
с.
В общем случае код с расстоянием
мин
исправляет произвольное число
стираний
с
число ошибок
и
и обнаруживает ошибок
и
при условии, что
и с
мин
1.2 ЛИНЕЙНЫЕ ДВОИЧНЫЕ БЛОЧНЫЕ КОДЫ
Линейный двоичный код длины n – это код, для которого сумма по модулю
2-х любых разрешенных кодовых комбинаций также является разрешенной
комбинацией.
Если формирование кодовой комбинации осуществляется в два этапа,
причем на первом этапе образуются кодовые комбинации примитивного кода, а
на втором по определенному правилу к ним добавляются избыточные
(контрольно-проверочные) символы, то код называется систематическим.
Проверочные символы
пр
формируются по правилу
пр
(1.7)
где
; k – число информационных символов; r – число
избыточных символов. Суммирование в (1.7) осуществляется по модулю 2 для
двоичного кода.
Коэффициент
, если информационный символ
участвует в
образовании проверочного символа
пр
В противном случае
.
Совокупность коэффициентов
удобно задать в виде матрицы размерностью
rk (r – строк, k – столбцов)
(1.8)
Проверочные символы в этом случае задаются соотношением

6
пр
(1.9)
Здесь b-матрица-строка заданной кодовой комбинации;
–
транспонированная матрица коэффициентов
.
Линейный код можно получить линейным суммированием по модулю 2
любых k линейно независимых кодовых комбинаций.
Матрица, состоящая из k строк, образованных этими комбинациями,
называется порождающей или производящей и имеет размерность kn. В общем
случае порождающая матрица G записывается так:
(1.10)
Здесь -j-й информационный символ i-й кодовой комбинации при ,
или j-й проверочный символ i-й кодовой комбинации при .
В качестве линейно независимых удобно использовать кодовые
комбинации, содержащие лишь один ненулевой символ. В этом случае
порождающая матрица G с учетом (1.9) принимает вид
(1.11)
где – единичная матрица порядка k; – матрица коэффициентов
.
Множество кодовых комбинаций кода, заданного порождающей матрицей
(1.11) является также множеством линейных комбинаций строк этой матрицы.
Линейный код длины n с k информационными символами и с r=n-k
проверочными символами обозначается (n, k).
Кодовую комбинацию такого кода можно записать как
прпрпр
k r=n-k
где
– информационные символы;
пр
– проверочные символы.
Линейный (n, k) код можно задать проверочной матрицей H, имеющей
размерность rn. Эта матрица имеет следующий вид:
(1.12)
В каждой строке проверочной матрицы на позициях информационных
символов стоят коэффициенты
,а на позициях проверочных символов –
единицы и нули, причем единица указывает, какой именно проверочный символ
соответствует совокупности коэффициентов данной строки.

7
Для каждой кодовой комбинации (n, k) -кода матричное произведение
(1.13)
Таким образом, совокупность кодовых комбинаций (n, k) -кода – это
множество всех последовательностей b, для которых выполняется условие (1.13).
Это соотношение лежит в основе процедуры декодирования линейных кодов.
Проверочная матрица (n, k)-кода является порождающей матрицей нового
линейного (n, n-k)-кода, содержащего
комбинаций, т. е.
.
Такой (n, n-k)-код называется двойственным для исходного (n, k)-кода. Из (1.13)
следует, что
(1.14)
Это условие означает, чего двойственные коды (n, k) и (n, n-k) являются
ортогональными.
Избыточность линейного двоичного кода
, (1.15)
где r=n-k – число проверочных символов.
«Оптимальным» является код (n, k), обеспечивающий наименьшую
вероятность ошибочного декодирования среди всех кодов той же длины n и
избыточности r/n.
Совершенные коды – это коды, которые свою избыточность расходуют на
исправление ошибок заданной кратности t. Квазисовершенным называется код,
который, кроме того, исправляет некоторую часть ошибок кратности t+1,
Обнаружение ошибок при использовании линейных кодов основано на
проверке соотношений (1.7): по принятой кодовой комбинации составляются
контрольные суммы по модулю 2
пр
конт
,
(1.16)
(здесь - -й знак принятой кодовой комбинации
) и сопоставляется с
проверочными символами принятой кодовой комбинации. Совокупность чисел
пр
пр
конт
для данной кодовой комбинации называется синдромом
Декодирование принятой кодовой комбинации может быть осуществлено
с помощью проверочной матрицы Н. Если принята комбинация
.
то синдром С
можно определить равенством
.
Таким образом, синдром – это вектор-строка с r компонентами
(по одной для каждого проверочного символа). Если b – переданная кодовая
комбинация, а
- принятая, то сумма их по модулю
2
называется
шумовой последовательностью. При этом
.
При правильном приеме все элементы синдрома равны нулю. Отличие
хотя бы одного элемента синдрома от нуля означает, что произошла ошибка.
При декодировании с исправлением ошибок по виду синдрома можно
определить разряд кодовой комбинации, в котором произошла ошибка.

8
1.3 ЦИКЛИЧЕСКИЕ КОДЫ
Линейный двоичный код, которому принадлежат кодовые комбинации,
полученные путем циклической перестановки символов, называется
циклическим.
Кодовый вектор циклического кода представляют полиномом (n-1)
степени:
где коэффициенты
ринимают значения 0 или 1. При таком представлении кодовый вектор,
полученный из b циклической перестановкой элементов, можно рассматривать
как результат умножения полинома b (х) на х, если считать, что
= 1.
Полином наименьшей степени среди всех полиномов, соответствующих
кодовым комбинациям циклического кода, называется порождающим
полиномом Коэффициенты
равны 0 или
1.
Степень порождающего полинома определяет число проверочных
символов в кодовой комбинации. Число ненулевых членов полинома g(x)
определяет предельное для данного кода
.
Зная порождающий полином, можно построить все кодовые комбинации
циклического кода, а также устройства кодирования и декодирования. На
порождающий полином должен делиться без остатка двучлен
.
Полученный результат определяет проверочный полином
h(x) = (
-1)/g(x)
(1.17)
Порождающий полином g (х) и проверочный полином h(х) являются
ортогональными, так как при
-1
=0 они удовлетворяют условию
g(x)h(x) =0 (1.18)
При отсутствии ошибок в кодовой комбинации циклического кода должно
выполняться условие
(1.19)
Невыполнение условия (1.19), т. е.
0
, является признаком
ошибки.
Декодер Меггитта представляет собой синдромный декодер,
исправляющий одиночные ошибки, в памяти которого с целью упрощения
хранится только один синдром ошибки S15(x) = x3 (соответствует
последовательности ошибок e15(x) = x14), синдромы остальных одиночных
ошибок циклически сдвигаются в регистре синдрома до совпадения с S15(x);
число циклов сдвига i (i = 0,1,2,…14) плюс единица равно номеру искаженного
кодового элемента. Структурная схема декодера Меггитта показана на рисунке
1.1.

9
Рисунок 1.1 – Декодер Меггитта циклического кода (15,11)
Декодер работает следующим образом. Кодовое слово (с ошибками или без
них) в виде последовательности из 15 двоичных символов поступает в буферный
регистр и одновременно в регистр синдрома, где производится деление этого
слова на производящий многочлен кода g(x) = x4+x+1, в результате чего
вычисляется синдром ошибки
: , , ,
– символы синдрома.
Ошибка обнаруживается, если хотя бы символ синдрома не равен нулю.
Исправление ошибок производится в следующих 15 циклах. Если Sj(x) =
S15(x), то ошибка в первом синдроме кодового слова, который находится в 15-й
ячейке буферного регистра. Тогда в первом цикле схема {И} выдает единицу и в
сумматоре по модулю 2 на выходе буферного регистра корректируется первый
символ кодового слова. Если ошибка в другом символе, то производится
циклический сдвиг синдрома Sj(x) в регистре синдрома по цепи обратной связи с
учетом того, что вход декодера на циклах исправления ошибок отключен. В
каждом i-м цикле проверяется равенство S
j+i
(x) = S15(x) и в благоприятном случае
на выходе схемы {И} появляется минус коррекции ошибки, инвертирующий
символ на выходе буферного регистра.
Для кода Голея (23,12): g(x) = x11+x9+x7+x6+x5+x+1 множество ошибок, вес
(кратность) которых не превышает трех, покрывается тремя
последовательностями ошибок e1 (x) = 0, e17 (x) = x16, e18 (x) = x17, имеющих
синдромы:
;
;
.
Декодер отслеживает синдром ошибок, отличающийся от
не более
чем на трех позициях, а также синдромы ошибок, отличающиеся от
и
не более чем в двух позициях.

10
Рисунок 1.2 – Декодер Касами-Рудольфа циклического кода (23,12)
Декодирование производится в течение двух циклов. В первом цикле в
течение 23 тактов производится запись принятого кодового слова в буферный
регистр (п1=0) и вычисление синдрома ошибки в синдромном регистре (п2=0). Во
втором цикле (п1=1) из 23 тактов производится поиск и исправление ошибок
путем циклического сдвига синдрома ошибки и его сравнения с покрывающими
синдромами в анализаторе синдрома. Одновременно циклически сдвигается
кодовое слово в буферном регистре.
Позиции ошибок обнаруживаются при удовлетворении какого-либо из
неравенств в анализаторе синдрома; на выходе соответствующей схемы
анализатора появляется сигнал, по которому выход синдромного регистра
подключается (п2=1) к сумматору в цепи циклического сдвига буферного
регистра для исправления ошибок. Если срабатывает вторая или третья схема
анализатора, то дополнительно исправляются ошибки в 17-й или 18-й ячейках
буферного регистра в соответствии с номером покрывающего синдрома;
одновременно производится стирание этого синдрома в синдромном регистре.
После 23-го цикла производится проверка состояния синдромного регистра и,
если остаток не превышает двух единиц, его содержимое используется для
коррекции состояний первых 11 ячеек буферного регистра.
На этом декодирование заканчивается и на выход выдаются
информационные символы, расположенные в первых 11 ячейках буферного
регистра; одновременно на вход может подаваться новое кодовое слово (п1=0).
1.4 СВЕРТОЧНЫЕ КОДЫ
Сверточными кодами являются древовидные коды, на которые
накладываются дополнительные ограничения по линейности и постоянству во
времени. Для сверточных кодов справедлива линейная свертка
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
