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

Помехоустойчивое кодирование в телекоммуникационных системах. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Министерство цифрового развития, связи и массовых коммуникаций
Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Сибирский государственный университет телекоммуникаций и информатики»
(СибГУТИ)
С. В. Воробьева
А. Е. Колягина
ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ
В ТЕЛЕКОММУНИКАЦИОННЫХ СИСТЕМАХ
Практикум
Новосибирск
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 СВЕРТОЧНЫЕ КОДЫ
Сверточными кодами являются древовидные коды, на которые накладываются дополнительные ограничения по линейности и постоянству во времени. Для сверточных кодов справедлива линейная свертка


 

 

󰇛󰇜
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]