Смоленский колледж телекоммуникаций (филиал

advertisement
Смоленский колледж телекоммуникаций (филиал)
федерального государственного образовательного бюджетного учреждения
высшего профессионального образования
«Санкт-Петербургский государственный университет телекоммуникаций им. проф.
М.А.Бонч-Бруевича»
О.О. Шаманова
Методические рекомендации по выполнению практических заданий
на тему:
«Методы помехоустойчивого кодирования»
Смоленск
2014
Содержание:
1. Краткие сведения по методам помехоустойчивого кодирования
3
2. Практические задания и их порядок выполнения
6
2.1. Систематический код
6
2.2. Циклический код
11
2.3. Код Хэмминга
17
2.4. Итеративный код
24
2.5. Каскадный код
30
3. Литература
33
2
1. Краткие сведения по методам помехоустойчивого кодирования
Реальные
системы
передачи
данных
не
совершенны.
Применяя
информационную технику, мы должны учитывать возможность возникновения
ошибок при передаче и хранении информации. Это в первую очередь относится к:
 хранению информации на носителях с высокой плотностью записи (CDROM, DVD и т.д.)
 передаче данных при ограниченной мощности сигнала (спутниковая и
мобильная связь)
 передаче информации по сильно зашумленным каналам (мобильная
связь, высокоскоростные проводные линии связи)
 каналам связи с повышенными требованиями к надежности информации
(вычислительные сети, линии передачи со сжатием данных).
Во всех вышеперечисленных случаях, используются коды, контролирующие
ошибки. Теория помехоустойчивого кодирования для каждого конкретного канала
позволяет выбрать наиболее эффективный метод обнаружения исправления ошибок.
С этой задачей успешно справляются корректирующие коды.
Корректирующие коды
Блочные
разделимые
непрерывные
неразделимые
разделимые
систематические
Циклические
неразделимые
несистематические
Хэмминга
Итеративные
Каскадные
Рис. 1. Классификация корректирующих кодов
Корректирующие коды строятся так, что для передачи сообщения используются
3
не все кодовые комбинации, а лишь определенные. Остальные кодовые комбинации
используются для обнаружения и исправления ошибок при неправильном
воспроизведении некоторого числа символов. Корректирующие свойства кодов
достигаются введением в кодовые комбинации дополнительных (избыточных)
символов,
при
этом
доля
вводимой
избыточности,
по
сравнению
с
обнаруживающими кодами, существенно возрастает.
Блочные коды. При использовании блочных кодов каждая буква сообщения
(или последовательность из k символов, соответствующая этой букве) передается
в виде отдельных кодовых комбинаций (блоков) равной длины из n символов.
Кодирование и декодирование каждого блока осуществляется независимо друг от
друга.
Непрерывные коды предназначены для исправления пачек (пакетов) ошибок.
Для этих кодов характерно, что операции кодирования и декодирования
осуществляются над непрерывной последовательностью символов, без разделения ее
на независимые блоки. Формирование проверочных символов в таких кодах
осуществляется по рекуррентным правилам, поэтому непрерывные коды часто
называют
рекуррентными,
перемежаются
с
или
цепными.
информационными
Причем,
символами
по
проверочные
символы
всей
кодовой
длине
последовательности, подчиняясь одному и тому же рекуррентному соотношению.
В разделимых кодах (как для блочных, так и для непрерывных) четко
разграничена
роль
отдельных
символов.
Одни
символы
являются
информационными, другие являются проверочными и служат для обнаружения и
исправления ошибок. Информационные и проверочные символы занимают во всех
кодовых комбинациях одни и те же позиции. Разделимые блочные коды часто
обозначают в виде (n, k), где n указывает значность кода (число разрядов в блоке), k число информационных символов (разрядов) в блоке.
В неразделимых кодах нет четкого разделения символов в комбинациях на
информационные и проверочные.
Систематические, или линейные, коды составляют наиболее обширную группу
разделимых кодов. В таких кодах проверочные символы образуются в результате
проведения линейных операций над определенными информационными символами.
К наиболее простым двоичным систематическим кодам относятся коды Хэмминга,
4
циклические и итеративные.
В несистематических кодах проверочные символы представляют суммы
подблоков длиной l, на которые разделена последовательность информационных
символов. Такой код способен обнаружить серийные ошибки с длиной серии, не
превосходящей l . К несистематическим кодам относится каскадный код.
5
2. Практические задания
2.1. Систематический код
Цель работы:
Получить практические навыки по кодированию
информации
систематическими кодами.
Вопросы домашней подготовки:
1. Что такое полином?
2. Что такое систематический код?
3. Какая матрица является порождающей (образующей)?
4. Что такое транспонирование?
Задание:
Построить производящую матрицу линейного кода (n,k), где n,k выбираются
согласно таблицы 1. Из полученной производящей матрицы построить проверочную
матрицу. Определить число разрешенных и запрещенных комбинаций, а также
минимальное кодовое расстояние полученного (n,k) кода. Показать, каким образом
можно получить все разрешенные комбинации циклического (n,k) кода.
Таблица 1
№ вар.
Размер
1
2
3
4
5
6
7
8
9
10
(13,8) (12,7) (11,6) (10,5) (8,4) (11,7) (10,6) (11,6) (12,7) (13,8)
матрицы
Вид
полинома
№ вар.
Размер
х5+x2+1
11
12
13
х4+x2+1
14
15
16
х5+x4+x2+x+1
17
18
(11,5) (12,6) (10,4) (13,7) (14,8) (13,6) (12,5) (11,4)
19
20
(10,3) (14,7)
матрицы
Вид
полинома
х6+x4+х+1
х7+x5+x2+x
6
Порядок выполнения работы:
Пусть необходимо построить производящую матрицу кода (9,5) с образующим
полиномом Р (х) = х4 + х + 1. Производящая матрица кода (9,5) будет состоять из
единичной матрицы размерности 5x5 и из матрицы размерности 5x4, составленной из
проверочных элементов, т.е. она будет содержать 5 строк и 9 столбцов. Единичная
матрица имеет следующий вид:
10000
01000
1(5×5) = 0 0 1 0 0
00010
00001
Таким образом, задача сводится к нахождению проверочных элементов, к
каждой из 5 записанных в матрицу информационных кодовых комбинаций. Для
нахождения проверочных элементов к комбинации 1 0 0 0 0 необходимо дописать 4
нуля, так как максимальная степень образующего полинома равна 4 и разделить на
образующий полином для получения 4-разрядного остатка, который и представляет
проверочные элементы:
1 0 0 0 0.0 0 0 0 1 0 0 1 1
10011
(x4+x+1)
10011
=00110
00000
=01100
00000
= 11000
10011
=10110
10011
= 0 1 0 1 - остаток R (x)
Для получения проверочных элементов к кодовым комбинациям 01000, 00100 и
последующих, необходимо также разделить их на образующий полином, однако эти
остатки получаются уже при делении кодовой комбинации 10000 (как проделано
выше), если деление заканчивать на 1,2 и т.д. шагов раньше. Все эти 5 остатков в
7
примере выделены жирным шрифтом. Таким образом, образующая матрица для
данного случая будет иметь следующий вид:
10000 0101
01000 1011
G (9,5) = 0 0 1 0 0 1 1 0 0
00010 0110
00001 0011
Для получения из найденной производящей матрицы проверочной необходимо
учитывать следующее. Во-первых, проверочная матрица кода (9,5) будет содержать 4
строки и 9 столбцов. Во-вторых, она будет состоять из единичной матрицы
размерности 4x4 и из матрицы размерности 4x5, которая получается из матрицы 5x4
(составленной из проверочных элементов, входящих в матрицу (9,5) путем ее
транспонирования, т.е. когда строки и столбцы меняются местами).
Следуя этим правилам, можно записать, что матрица проверок Н (9,5) имеет
следующий вид:
01100 1000
Н (9,5) =
1 0 1 1 0 0 10 0
01011 0010
11001 0001
*
**
Для нахождения разрешенных и запрещенных комбинаций
воспользуемся
формулами.
Число разрешенных комбинаций кода (9,5) определяется как Мр = 2k = 25= 32.
Число запрещенных Мз = Мо – Мр = 2n – 2k = 29 - 25 = 512 – 32 = 480.
Минимальное кодовое расстояние определяется по матрице проверок Н и равно
минимальному числу столбцов, при сложении которых по модулю 2 получается чисто
нулевой столбец (если есть 2 одинаковых столбца, то dmin = 2, если нет, то путем перебора
dmin > 3). В данном примере одинаковых столбцов нет, а при сложении 3-х столбцов,
отмеченных *, получается 0, т.е. для данного кода dmin =3.
Для получения всех 32 разрешенных комбинаций этого кода необходимо
воспользоваться образующей матрицей, где 5 разрешенных комбинаций (5 строк)
имеются в явном виде, а остальные разрешенные комбинации получаются при помощи
8
сложения в различных сочетаниях строк этой матрицы.
Так, например, при сложении 1 и 2-й строк получаем разрешенную комбинацию
11000.1110; 3,4 и 5-й получаем 00111.1001 и т. д.
Содержание отчета:
1. Цель и наименование работы;
2. Ответы на вопросы домашней подготовки;
3. Ответы на контрольные вопросы
4. Свойства порождающих матриц.
Контрольные вопросы:
1. В чем преимущество систематического линейного кода?
2. Достоинства использования порождающих матриц;
3. Какое утверждение справедливо для линейных кодов?
4. Что называется проверочной матрицей?
5. По каким тактам работает кодирующее устройство линейного кода?
Приложение
Систематический код - это код, который создает определенное количество
избыточных символов для добавления к исходным символам входных данных.
Любой блочный линейный код (n,m) можно описать с помощью порождающей
матрицы размерностью m - строк и n - столбцов. По определению порождающей
(образующей) матрицей является матрица, составленная из любой совокупности
векторов линейного кода, образующих базис пространства. Отсюда следует, что
такая совокупность векторов базисного пространства может быть представлена
только линейно-независимыми кодовыми комбинациями.
Порождающая матрица
В качестве строк порождающей матрицы (n,m) кода можно взять любые n
линейно-независимых комбинаций этого кода. Один и тот же код можно определить
с помощью нескольких порождающих матриц.
Достоинства использования порождающих матриц.
1. Описание линейных кодов с помощью порождающих матриц выгодно - из9
за компактного описания.
2. Использование порождающих матриц позволяет создать универсальный
алгоритм кодирования блочных кодов путём комбинирования строк этой матрицы.
Свойства порождающих матриц.
1. Для того, чтобы линейный код имел минимальное кодовое расстояние d,
необходимо чтобы все строки порождающей матрицы имели вес (количество
единичных разрядов) не менее d.
2. При перестановке строк порождающей матрицы, генерируемый ей код не
меняется.
3. Перестановка столбцов порождающей матрицы приводит к эквивалентному
коду, отличающемуся от исходных комбинаций, но сохраняющему все свойства
исходного кода. Это справедливо для каналов связи с независимыми ошибками.
4. Если поразрядно сложить по модулю 2 некоторую строку порождающей
матрицы с другой строкой этой матрицы, то код не изменяется.
Реализация кодирующего устройства
Схема кодирующего устройства линейного (7,4) кода представлено на рис. 2.
Рис. 2. Кодирующее устройство линейного кода (7,4)
Это устройство работает по тактам:
1. В сдвигающий регистр заносятся параллельно четыре информационные
позиции кода A1 = 0, А2 = 1, A3 = 0, А4 = 0 .
2. С помощью сумматоров по модулю два вычисляются значения контрольных
разрядов и заносятся в А5 = 1, А6 = 0, А7 = 1, соответственно.
10
3. Кодирование
закончено.
Код
0100101
уходит
бит
за
битом
в
канал
связи, начиная с разряда А1.
2.2. Циклический код
Цель работы:
Получить практические навыки в построении кодирующих и
декодирующих устройств в телекоммуникационных сетях.
Вопросы домашней подготовки:
1. Что называется полиномом?
2. Из чего состоит кодовая комбинация циклического кода?
3. Как найти проверочные разряды?
Задание:
1.Объяснить правило выбора образующего полинома P(x).
4.2.Объяснить какие полиномы называются примитивными.
4.3.Определить минимальное число проверочных единичных элементов r и длину
кодовой комбинации n. Для циклического кода
с минимальным кодовым
расстоянием d0=3 заданы число информационных единичных элементов k=4 и их
исходная последовательность.
4.4.Построить кодовую комбинацию циклического кода F(x).
4.5.Проверить правильность построения кодовой комбинации циклического кода
путем деления F(x) на выбранный образующий полином.
4.6.Построить структурную схему кодирующего устройства для выбранного кода.
4.7.Определить количество обнаруживаемых ошибок для циклического кода с
минимальным кодовым расстоянием d0=3.
Порядок выполнения работы:
Для того чтобы полиномы, отображающие кодовые комбинации циклического
кода, имели нужные свойства, необходимо выполнение двух условий:
1. полиномы Pr (x) должны быть неприводимыми, т.е. не делиться ни на какой
другой полином;
11
2. двучлен вида хn+1 должен делиться на Pr (x) без остатка.
Это
свойство
существенно
упрощает
аппаратурную
реализацию
кода.
Обнаружение ошибок в циклическом коде производиться делением принятой
кодовой комбинацией на кодовую комбинацию образующего полинома (вид его
должен быть известен на приеме). Остаток от деления R(х) играет роль синдрома.
Если R(х) ≠ 0, то считается, что произошли ошибки. Если R(х) = 0, то кодовая
комбинация принята правильно.
Примитивными полиномами называются полиномы, для которых существуют
зависимость n = 2r – 1. Это означает, что при возникновении ошибки в одном из n
разрядов кодовой комбинации число различных остатков также будет равно n.
Признаком примитивных полиномов является наличие остатка.
Длину кодовой комбинации определяем из выражения:
2 k ≤ 2 n / (n+1)
(1)
где: n – длина кодовой комбинации;
k – число информационных единичных элементов.
Число проверочных единичных элементов определяем по формуле:
r=n–k
(2)
где: r – число проверочных элементов.
Из таблицы 3 выбираем вид образующего полинома r:
Таблица 3. Вид образующего полинома
r
Pr(x)
2
x2+x+1
3
x3+x+1
x3+x2+1
4
X4+x2+1
x4+x3+1
5
x5+x4+x3+x2+1
x5+x4+x2+x+1
6
x6+x+1
x6+x2+x+1
7
x7+x2+1
x7+x3+x2+x+1
12
x7+x4+x3+x2+1
x8+x7+x6+x5+x2+x+1
8
x8+x4+x3+x1+1
x8+x6+x5+x+1
x9+x5+x3+x2+1
9
x9+x8+x7+x6+x5+x3+1
x10+x4+x3+x+1
10
x10+x9+x6+x5+x4+x3+x+1
Строим кодовую комбинацию циклического кода F(x), используя запись
двоичными
элементами.
К
исходной
комбинации
дописываем
r
нулей.
Информационные элементы заданы в таблице 4:
Таблица 4.
Вариант
Информационные элементы
1
10100
2
10000
3
11110
4
11100
5
11010
6
11000
7
10110
8
10010
9
10111
10
11111
Например, информационные элементы имеют вид 10111, а образующий
полином х4 + х + 1. Строим кодовую комбинацию циклического кода F(x), используя
запись двоичными элементами. К исходной комбинации дописываем 4 нуля, т. к.
степень полинома равна 4.
13
101110000 |10011
10011
10100
01000
00000
10000
10011
00110
00000
01100
00000
1100 - остаток R(х)
Полная кодовая комбинацию циклического кода F(x) = 101111100
Проверим правильность построения кодовой комбинации циклического кода
путём деления F(x) на выбранный образующий полином Pr (x).
101111100 |10011
10011
10100
01001
00000
10011
10011
00000
00000
00000
00000
0000
Строим схему кодирующего устройства (рис. 3). Число ячеек сдвигающего
регистра выбирается равным степени образующего полинома, а число сумматоров
по модулю 2 на единицу меньше его веса (числа членов образующего полинома). В
рассматриваемом примере должно быть два сумматора и 3 регистра.
14
Рис. 3 Схема кодирующего устройства
Количество обнаруживаемых ошибок t0 циклического кода найдём по
формуле:
d0 = t0 + 1
Так как минимальное кодовое расстояние d0 = 3, то
t0 = 2
Количество исправляющих ошибок tи определяется по формуле:
d0 = 2tи + 1
tи = 1
Содержание отчета:
1. Цель и наименование работы;
2. Ответы на вопросы домашней подготовки;
3. Ответы на контрольные вопросы
4. Схема кодирующего устройства
Контрольные вопросы:
1. Каково необходимое условие для того, чтобы код был способен обнаруживать
ошибки?
2. Определите, содержит или нет принятая кодовая комбинация циклического кода
1111000 ошибки, если Pr(х)=х3+х2+1.
15
3. Как исправляются ошибки в циклических кодах?
4. Расскажите правило построения кодирующих устройств.
5. Достоинства и недостатки циклического кода.
Приложение
Многочлен (или полином) - алгебраическое выражение, представляющее
сумму или разность нескольких одночленов.
Построение кодирующего устройства циклического кода. В циклических
кодах
формирование
проверочной
группы
элементов
кодовой
комбинации
происходит делением полинома G(x)xr на образующий полином Рг(х).
Принцип построения такого устройства рассмотрим на примере кода (9,5) с
образующим полиномом Р(х)= х4+х+1. Пусть кодируется группа, информационный
полином которой имеет вид G(x) = х4+х2+х+1. Поскольку операция умножения на хr
означает добавление к соответствующей кодовой комбинации г нулей, то никакого
специального устройства не требуется, а сдвиг на г=4 разряда осуществляется
обычным регистром задержки. В данном примере регистр задержки имеет четыре
ячейки. Деление производится в многотактном фильтре. Элементы информационной
группы подаются на вход первой ячейки регистра, начиная со старшего разряда.
Через четыре такта элемент старшего разряда появится на выходе регистра. С пятым
тактом выходная ячейка будет свободна от поступления элементов информационной
группы и в регистр вводится группа проверочных элементов, представляющая
остаток от деления R (х).
Формирователь проверочной группы представляет собой сдвигающий регистр
с обратными связями между ячейками. Эти связи реализуются через сумматоры по
модулю 2. Указанная схема выполняет деление G(x)xr на Рг(х). Делимое в виде
кодовой группы, представляющей полином G(x)xr, подается на вход сдвигающего
регистра, а полином Рг(х) вводится в регистр в виде соответствующей подобранной
структуры обратных связей через сумматоры. Проверочная группа элементов
последовательно формируется на выходе регистра.
16
2.3. Код Хэмминга
Цель работы: Получить практические навыки по построению кода Хемминга.
Вопросы домашней подготовки:
1. К какому коду относится код Хемминга?
2. Перечислите правила сложения по модулю два
3. Что такое проверочный вектор?
Задание:
1. Определите наличие ошибок в принятой кодовой комбинации, вид синдрома
и номер элемента, в котором произошла ошибка. Исходные данные приведены в
таблице 5.
Таблица 5
№ варианта
переданная кодовая
принятая кодовая
комбинация
комбинация
1
1010100
1010110
2
0101011
0101111
3
1000111
1000110
4
1101100
1101110
5
0011101
1011101
6
0000000
0000001
7
1110001
1010001
8
1100010
1000010
9
0011101
1011101
10
1111111
1110111
2. Дана информационная часть кода Хемминга (выбрать из таблицы 6 согласно
варианту). Необходимо определить проверочные позиции и построить кодовую
комбинацию кода Хемминга.
17
Таблица 6
№ варианта
Информационная часть
1
110010010001
2
111000101000
3
010111001110
4
101010000110
5
011101011110
6
110011000011
7
101011010101
8
111101001001
9
101110100001
10
011111101011
Порядок выполнения работы:
Задание 1:
Переданная кодовая комбинация имеет вид а1, а2, а3, а4, а5, а6, а7 = 1000111. В
результате действия помех на приемном конце имеем а'1,а'2,а'3,а'4,а'5,а'6,а'7 = 1100111.
Произведем проверки:
а*5 = а'1
а'2
а'4 = 1
1
0=0
а*6 = а'1
а'3
а'4 = 1
0
0=1
а*7 = а'1
а'2
а'3 = 1
1
0=0
В то же время а'5 = 1, а'6 = 1, а'7 = 1 , т.е. А*5 ≠ а'5 , а*7≠ а'7, что говорит о
наличии ошибок в принятой кодовой комбинации. Найдем вид синдрома по
формулам:
b1 = а'5
а*5 = 1
b2 = а'6
а*6 = 0
b3 = а'7
а*7 = 1.
Комбинация b3 b2 b1 называется синдромом (проверочным вектором). Равенство
нулю всех элементов синдрома указывает на отсутствие ошибок или на то, что
18
кодовая комбинация принята с ошибками, которые превратили ее в другую
разрешенную. Последнее событие имеет существенно меньшую вероятность, чем
первое.
Вид нулевого синдрома определяется характером ошибок в кодовой
комбинации. В нашем случае вид синдрома зависит от местоположения одиночной
ошибки. В таблице 7 отражено соответствие между местоположением одиночной
ошибки для кода, заданного матрицей, и видом синдрома.
Таблица 7
Номер элемента,
1
2
3
4
5
6
7
111
101
110
011
001
010
100
в котором произошла
ошибка
Вид синдрома
Таким образом, зная вид синдрома, можно определить место, где произошла
ошибка, и исправить принятый элемент на противоположный.
Передавалась кодовая комбинация 1000111. Принятая кодовая комбинация
1100111. Синдром имеет вид 101. Исказился второй элемент (а2). Изменим второй
элемент на противоположный
1100111
0100000
1000111
Полученная в результате исправления ошибки кодовая комбинация совпадает с
переданной.
Рассмотренный код гарантированно обнаруживает двукратные ошибки, а
исправляет только однократные ошибки.
Задание 2:
Рассмотрим по шагам процесс построения кода: информационная
(пусть
часть
кода
это будет последовательность 010110111100 длиной m = 12 элементов)
располагается на информационных позициях (номера - 3, 5, 6, 7, 9, 10, 11, 12, 13, 14,
15, 17), см. рисунок 4
19
1
2
3
4
0
5
6
7
1
0
1
8
9
10
11
12
13
14
15
1
0
1
1
1
1
0
16
17
0
Рис. 4. Первый шаг. Заполнение информационных разрядов
Первая проверочная позиция кода А1 заполняется так (рис. 5). Первая позиция
дополняет до четного числа единиц позиции с номерами - 3,5,7,9, 11, 13, 15, 17, то
есть все позиции с нечетными номерами. Или, что то же самое, эта позиция
заполняется так, чтобы сумма по модулю 2 всех нечетных позиций кода была бы
равна 0:
А1
А3
А5
А1
0
А7
1
А9
1
А11
1
1
А13
1
А15
0
А17 = 0.
0=0
Контрольный разряд А1 должен иметь значение единица (А1 = 1).
1
1
2
3
4
0
5
6
7
1
0
1
8
9
10
11
12
13
14
15
1
0
1
1
1
1
0
16
17
0
А1
Рис. 5. Второй шаг. Заполнение первого контрольного разряда А1
Вторая проверочная позиция кода А2 заполняется так: вторая позиция
дополняет до четного числа единиц информационные позиции с номерами 3, 6, 7,10,
11, 14, 15. Или, что то же самое, эта позиция заполняется так, чтобы сумма по
модулю 2 всех перечисленных позиций кода была бы равна 0:
А2
А3
А6
А2
0
А7
0
А10
1
А11
0
1
А14
1
А15 = 0.
0 = 0.
Контрольный разряд А2 должен иметь значение единица (А2 = 1).
Четвёртая проверочная позиция дополняет до четного числа единиц
следующие позиции кода: 5, 6, 7, 12, 13, 14, 15 или:
А4
А5
А4
А6
1
А7
0
А12
1
А13
1
1
А14
1
А15 = 0.
0 = 0.
Контрольный разряд А4 должен иметь значение единица (А4 = 1).
Восьмая проверочная позиция дополняет до четного числа единиц следующие
позиции кода: 9, 10, 11, 12, 13, 14, 15 или:
20
А8
А9
А10
А8
1
А11
0
А12
1
1
А13
1
1
А14
А15 = 0.
0 = 0.
Контрольный разряд А8 должен иметь значение единица (А8 =1).
И, наконец, последняя, шестнадцатая проверочная позиция должна дополнять до
четного числа единиц следующие позиции кода: 17, то есть А16
А17 = 0, и
поскольку А17 = 0, следовательно, А 16 = 0.
В итоге построена одна комбинация кода Хэмминга (n=17, m=12):
1 1 0 1 1 0 11 1 0 1 1 1 1 0 0 0.
В этой комбинации проверочные разряды выделены жирным шрифтом и
подчёркнуты.
1
2
3
4
5
6
7
8
9
10
11 12
1
1
0
1
1
0
1
1
1
0
1
1
13
14
15
16
17
1
1
0
0
0
Рис. 6. Структура кода Хемминга
Содержание отчета:
1. Цель и наименование работы;
2. Ответы на вопросы домашней подготовки;
3. Ответы на контрольные вопросы
4. Поясните построение кода Хэмминга
5. Выполненное задание
Контрольные вопросы:
1. Что такое синдром? Как его вычислить?
2. Поясните код (7,4);
3. Перечислите отличия систематических и несистематических кодов;
4. Перечислите отличия разделимых и неразделимых кодов;
5. Назначение непрерывных кодов
Приложение
Код Хемминга. Рассмотрим в качестве примера код Хемминга с кодовым
расстоянием dо = 3. Пусть число сообщений, которое необходимо передать, равно 16.
21
Тогда необходимое число информационных элементов k = 1оg2N2 = 4. Можно
выписать все 16 кодовых комбинаций, включая нулевую (0000). Это один из
возможных способов задания исходного (простого) кода. Другой способ заключается
в выписывании только четырех кодовых комбинаций простого кода в виде матрицы,
называемой единичной
1000
0100
0010
0001
Суммируя по модулю два в различном сочетании кодовые комбинации, входящие
в единичную матрицу, можно получить 15 кодовых комбинаций, 16-я - нулевая.
Кодовые комбинации, составляющие матрицу, линейно независимы. Можно было бы
составить матрицу и из других кодовых комбинаций (лишь бы они были линейно
независимыми). Ненулевые комбинации A1, A2, A3, A4, линейно независимые, если
q1A1
q2A
2
q3A3
q4A4 ≠ 0, где qi є {0,1} при условии, что хотя бы один из
коэффициентов qi ≠ 3. Дополним каждую кодовую комбинацию проверочными
элементами так, чтобы обеспечивалось q3 = 3. Будем иметь в виду также тот факт, что к
числу разрешенных комбинаций корректирующего кода принадлежит и комбинация
0000 ... 0, называемая нулевой. Очевидно, что в числе добавляемых проверочных
элементов должно быть не менее двух единиц. Тогда общее число единиц в каждой
комбинации кода получим не меньше трех и комбинации, полученные нами, будут
отличаться от нулевой, по крайней мере, в трех элементах. Добавим по две единицы к
каждой строке матрицы
100011
010011
001011
000111
Складывая строки 1 и 2 матрицы по модулю два 100011
010011
110000,
видим, что они отличаются только в двух элементах, т.е. заданное кодовое расстояние
не обеспечивается. Дополним каждую строку проверочными элементами так, чтобы
22
d0= 3. Тогда матрица примет вид:
1000111
0100101
0010011
0001110
Добавляемые проверочные элементы могут быть записаны и в другом порядке.
Необходимо лишь обеспечить d0 = 3.
Матрицу называют производящей или порождающей, матрицей кода (7,4),
содержащего семь элементов, из которых четыре - информационных. Обычно матрицу
обозначают буквой G с индексом, указывающим, к какому коду она относится (в нашем
случае G(7,4)). Производящая матрица состоит из двух матриц - единичной (размерности
г* k) и С(r,k), содержащей r столбцов и k строк. Суммируя в различном сочетании строки
матрицы, получаем все (кроме нулевой) комбинации корректирующего кода с d0 = 3.
Обозначим элементы комбинации полученного семиэлементного кода a1,a2, a3,
a4, a5,a6, a7, из которых
a1,a2, a3, a4 - информационные и a5,a6, a7 - проверочные.
Последние могут быть получены путем суммирования по модулю два определенных
информационных элементов. Разумеется, правило формирования проверочного
элемент а для любой кодовой комбинации одинаково.
Найдем правило формирования элемента а5, пользуясь матрицей. Из первой строки
следует, что в суммировании должен обязательно участвовать элемент а1 (только в этом
случае а5=1), из второй - что элемент а3 в суммировании не должен участвовать, а из
четвертой - что элемент а4 должен участвовать в суммировании. Итак,
а5 = а1
а2
а4
Уравнения для а6 и а7 по анологии записываются в виде:
а6 = а1
а3
а4
а7 = а1
а2
а3
Алгоритм формирования проверочных элементов a5, a6, a7 может быть задан
матрицей, называемой проверочной. Эта матрица содержит r строк и n столбцов.
Применительно к сформированному нами коду (7,4) она имеет вид:
23
1101100
Н(7,4) = 1011010
1110001
Единицы, расположенные
на
местах,
соответствующих
информационным
элементам матрицы Н(7;4), указывают на то, какие информационные элементы должны
участвовать
в
формировании
проверочного
элемента.
Единица
на
месте,
соответствующем проверочному элементу, указывает, какой проверочный элемент
получается при суммировании по модулю два информационных элементов. Так, из
первой строки следует равенство
а1
а2
а4 = а5
Процедура обнаружения ошибок основана на использовании проверок.
Очевидно,
что
проверочные
элементы,
сформированные
из
принятых
информационных, при отсутствии ошибок должны совпадать с принятыми
проверочными.
2.4. Итеративный код
Цель работы: Получить практические навыки построения итеративных кодов
Вопросы домашней подготовки:
1. Что такое избыточность?
2. Назначение итеративных кодов?
3.Что такое четность и нечетность?
Задание:
1. Построить итеративный код, представляющий собой произведение двух кодов с
проверкой на четность согласно варианту из таблицы №8
2. Исправить ошибку в кодовой комбинации согласно варианту таблицы№9
Таблица 8
№ вар.
Передаваемые сообщения
1
а1=1101011; а2=1001011; а3=0011010; а4=1000101; а5=1110101; а6=1111101
2
а1=0110100; а2=1110011; а3=1010111; а4=0001101; а5=1100110; а6=0011010
24
3
а1=0011010; а2=1111001; а3=0001110; а4=0101010; а5=1111111; а6=0000000
4
а1=1011100; а2=1100101; а3=1111001; а4=1011101; а5=1100011; а6=0000111
5
а1=0101001; а2=1001011; а3=1110001; а4=0011010; а5=0000011; а6=1110010
6
а1=0101000; а2=1011010; а3=0110101; а4=0001100; а5=1100101; а6=0011010
7
а1=1010110; а2=0011010; а3=0011010; а4=1011010; а5=1110101; а6=0001101
8
а1=1010110; а2=1101011; а3=1101011; а4=0100010; а5=0000110; а6=0101110
9
а1=0101110; а2=1101011; а3=1011010; а4=0101001; а5=0101101; а6=0100101
10
а1=0110101; а2=1101001; а3=1100101; а4=0011010; а5=1011101; а6=1001010
11
а1=0010110; а2=1000101; а3=1100101; а4=0010110; а5=1001010; а6=0011010
12
а1=1100000; а2=0011110; а3=0100110; а4=1101111; а5=0101101; а6=0011010
13
а1=1011101; а2=0011110; а3=0011010; а4=0110101; а5=1001011; а6=1111101
14
а1=0100101; а2=0011010; а3=1100101; а4=0011010; а5=1101011; а6=0110010
15
а1=0000110; а2=1111010; а3=0011010; а4=1100101; а5=0011001; а6=0011010
16
а1=0011010; а2=1111011; а3=0110101; а4=1110010; а5=1101001; а6=0011010
17
а1=0010100; а2=1010101; а3=0000000; а4=1111111; а5=1110101; а6=1011110
18
а1=0100101; а2=0000110; а3=0110100; а4=1000101; а5=1101001; а6=1011100
19
а1=0100101; а2=1110100; а3=1111010; а4=0101101; а5=0111010; а6=1100101
20
а1=0010100; а2=1101011; а3=0011010; а4=0100101; а5=1010101; а6=1001101
1
2
3
4
5
6
15 21
9
13
5
26 31 36 25 12 33 41 39
возникли ошибки
№ вар.
Параметры кода, где
Таблица 9
7
8
9
10 11 12 13 14 15 16 17 18 19 20
8
14
2
24 36
4
19
Порядок выполнения работы:
Задание 1:
Требуется построить итеративный код, представляющий собой произведение
25
двух кодов с проверкой на четность.
Возьмем для определенности неизбыточный двоичный код соответствующий
четырем передаваемым сообщениям
00010
11001
10011
10000
Особенностью этого совокупного кода является то, что его можно рассматривать
как четыре кодовые комбинации длиной по пять (m2=5) позиций, каждая. Можно этот
же код рассматривать, как 5 кодовых комбинаций, расположенных столбцами. Но в
этом случае длина (m1=4) каждой комбинации равна 4 информационным позициям. В
соответствии с описанием выше методикой построим интерактивный код.
0 0 0 1 0 1
1 1 0 0 1 1
1 0 0 1 1 1
1 0 0 0 0 1
1 1 0 0 0 0
Задание 2
Пусть во время передачи кода возникла одиночная ошибка (01) в девятой
позиции 000101111011100111100001110000.
0 0 0 1 0 1
1 1 1 0 1 1
1 0 0 1 1 1
1 0 0 0 0 1
1 1 0 0 0 0
При приёме этого кода и записи его в матрицу декодирующего устройства,
искаженный элемент окажется на пересечении второй строки и третьего столбца.
Обнаружим и исправим ошибку в кодовой комбинации. Для этого следует
выполнить следующие действия:
1. Проверим строки на чётность, для чего в каждой строке найдем сумму
элементов кода по модулю 2.
26
Sj = aj1
aj2
S1 = 0
aj3
aj4
0
1
0
1
0
1
1
1
1
1
0
0
1
0
0
0
0
aj5
bj
S1 = 0
S2 = 1
1
1
S2 = 1
S3 = 1
0
0
S3 = 0
S4 = 1
0
0
S4 = 0
S5 = 1
1
0
S5 = 0
Четному количеству единиц соответствует нулевое значение. Значит, ошибка во
второй строке, так как S2 = 1.
2. Проверим столбцы на чётность, для чего в каждой строке найдём сумму
элементов кода по модулю 2.
Rj = a1i
R1 = 0
a2i
a3i
a4i
ci
1
1
1
1
0
1
0
0
0
0
0
0
1
0
R1 = 0
R2 = 0
1
0
R2 = 0
R3 = 0
1
0
R3 = 1
R4 = 1
0
1
R4 = 0
R5 = 0
1
1
R5 = 0
R6 = 1
1
1
R6 = 0
Ошибка в третьем столбце, потому что R3=1.
27
3. На пересечении второй строки и третьего столбца расположен элемент a23.
Этот элемент нарушает чётность строки и столбца.
000
10 1
111
0 1 1 ← S2 = 1
100
11 1
100
00 1
110
00 0
↑
R3 = 1
4. Для восстановления кодовой комбинации элемент a23 следует инвертировать
(10).
Рассмотренная выше процедура (алгоритм) декодирования кодовой комбинации
корректирует любую одиночную ошибку.
Все двойные ошибки, большое число ошибок большей кратности, чем 2
обнаруживаются при проверке строк и столбцов на чётность и формируют защитный
отказ.
Содержание отчета:
1. Цель и наименование работы;
2. Ответы на вопросы домашней подготовки;
3. Ответы на контрольные вопросы
4. Выполненное задание
Контрольные вопросы:
1. Что такое S и R?
2. Что такое внутренний код?
3. К каким кодам относятся итеративные коды?
4. Правила сложения по модулю два?
5. Назначение систематических и несистематических кодов
Приложение
Идея итеративных кодов принадлежит Элайесу. Второе название этих кодов –
28
произведение кодов. Суть метода проще всего рассмотреть на примере произведения
двух простейших кодов с проверкой на чётность, в соответствии с изложенной ниже
методикой.
Информационные
символы
сообщений
aij
располагаются
в
виде
прямоугольника, как показано в табл.10
Таблица 10.
…
a1,m2
a21
а22
… a1i
…
a2,m2
…
…
…
…
…
… aj1
…
am1,1
am1,2
… am1,1
…
дополнительные
элементы
aj,m2
…
…
Формируются
aj2
…
aj1
…
…
… a1i
…
a12
…
a11
am1,m2
кода
b1,b2,…,bm1,
которые
обеспечивают проверку соответствующих строк на чётность (см.табл.11)
Таблица 11
3.
… a1i
a2,m2
…
b2
…
aj1
aj2
… aj1
aj,m2
…
bj
…
…
am1,1
am1,2
… am1,1
…
…
…
…
…
а22
…
a21
…
b1
…
a1,m2
…
…
… a1i
…
a12
…
a11
am1,m2 bm1
…
Формируются дополнительные элементы кода с1,с2,…,сm2, которые
обеспечивают проверку соответствующих столбцов на чётность (см.табл.12)
Таблица 12
a1,m2
b1
a21
A22
…
a1i
…
a2,m2
b2
…
aj,m2
…
am1,1
am1,2
…
am1,1
…
am1,m2
с1
c2
…
ci
…
Сm2
…
…
bj
…
aj1
…
…
…
aj2
…
…
aj1
…
…
…
…
a1i
…
…
…
a12
…
a11
bm1
29
4.Формируются, так называемая, проверка проверок-d, которая дополняет до
четного значения коды столбцов и строк (см.табл.13)
a1,m2
b1
a21
A22
…
a1i
…
a2,m2
b2
…
…
…
…
…
…
aj1
aj2
…
aj1
…
aj,m2
bj
…
…
…
…
…
a1i
…
…
…
a12
…
a11
…
Таблица 13
am1,1
am1,2
…
am1,1
…
am1,m2
bm1
с1
c2
…
ci
…
Сm2
d
В итоге, в табл.13 построен итеративный код, представляющий собой
произведение двух кодов с проверкой на чётность. Аналогично можно построить
итеративный код с проверкой на нечётность.
2.5. Каскадный код
Цель работы: Получить практические навыки построения каскадных кодов
Вопросы домашней подготовки:
1. Назначение каскадных кодов?
2. Назначение кодера и декодера?
3.Что такое одиночная ошибка?
Задание:
Построить каскадный код согласно варианту из таблицы №14
Таблица 14
№ вар.
Количество и вид сообщения
1
Х0=1011, Х1=0011, Х2=1010, Х3=0111
2
Х0=00110, Х1=00111, Х2=01010, Х3=11111
30
3
Х0=011101, Х1=110010, Х2=110010, Х3=000111
4
Х0=1011, Х1=0101, Х2=0110, Х3=1001
5
Х0=10001, Х1=01110, Х2=11001, Х3=00110
6
Х0=101010, Х1=001100, Х2=101011, Х3=011001
7
Х0=0100, Х1=0111, Х2=0001, Х3=1110
8
Х0=11001, Х1=01101, Х2=00011, Х3=11100
9
Х0=111110, Х1=001100, Х2=010101, Х3=001100
10
Х0=0101, Х1=1111, Х2=0011, Х3=0110
11
Х0=11001, Х1=00011, Х2=01010, Х3=10101
12
Х0=110011, Х1=110000, Х2=001111, Х3=101010
13
Х0=111000, Х1=010101, Х2=110101, Х3=110010
14
Х0=1110001, Х1=0011010, Х2=0101010, Х3=1010101
15
Х0=1110011, Х1=1011010, Х2=0110101, Х3=1001011
16
Х0=1101011, Х1=1100101, Х2=0110101, Х3=1111001
17
Х0=0101110, Х1=1001010, Х2=1001101, Х3=1101011
18
Х0=01011, Х1=01101, Х2=10110, Х3=00001
19
Х0=1100101, Х1=1100010, Х2=0011010, Х3=1111010
20
Х0=1111010, Х1=0000101, Х2=0111010, Х3=1100101
Порядок выполнения работы:
Построить каскадный код, если передаются четыре сообщения Х0=00000,
Х1=10011, Х2=11100, Х3=01111
Осуществим кодирование каждого символа сообщения следующим образом.
Символ 1 заменим на код 111, а символ 0 на код 000. Коды 000 и 111 имеют расстояние
d=3, и способны исправлять любые одиночные ошибки. Замены 0000, 1111
называют внутренним кодированием. Подставим внутренние коды в сообщения и
получим следующий код :
Х0  000 000 000 000 000
Х1  111 000 000 111 111
Х2  111 111 111 000 000
Х3  000 111 111 111 111
31
Источник
информационных
символов
Х1
Кодер
внешнего
кода
10011
Кодер
внутреннего
кода
111 000 000 111 111
Рис. 7 Схема кодирования каскадного кода
Содержание отчета:
1. Цель и наименование работы;
2. Ответы на вопросы домашней подготовки;
3. Ответы на контрольные вопросы
4. Схема кодирования каскадного кода
Контрольные вопросы:
1. Чем заменяется символ 1??
2. Что такое внутренний код?
3. К каким кодам относятся каскадные коды?
4. Чем заменяется символ 0?
5. Назначение систематических и несистематических кодов
32
Литература
Основная:
1.Акулиничев, Ю.П. Теория и техника передачи информации: учебное пособие/
Ю.П. Акулиничев, А.С. Бернгардт. – Томск: Эль Контент, 2012. – 210 с. – ISBN 9785-4332-0035-7
2. Основы инфокоммуникационных технологий: учебное пособие для вузов /
В.В.Величко, Г.П. Катунин, В.П. Шувалов; под ред. В.П. Шувалова. – М.: Горячая
линия – Телеком, 2009. – 718 c. – ISBN 978-5-9912-0055-4 13. Пуговкин, А.В.
Телекоммуникационные системы: учебное пособие / А.В.Пуговкин – Томск:
Томский государственный университет систем управления и радиоэлектроники,
2008 - 202 с. – ISBN 5-86889-337-9
3. Таненбаум, Э. Компьютерные сети: учебное пособие / Э.Таненбаум. – 4-е
изд. – СПб.: Питер, 2010. – 992 с.: ил. – ISBN 5-318-00492-х
Дополнительная:
4. Голицына, О.Л., Максимов Н.В., Партыка Т.Л., Попов И.И. Информационные
технологии: учебник / О.Л. Голицына, Н.В. Максимов, Т.Л. Партыка, И.И. Попов. 2-е изд., перераб. и доп. – М.: ФОРУМ: ИНФРА-М, 2008 . – 608 с.: ил. - ISBN 978-591134-178-7
5. Гук, М.Ю. Аппаратные средства IBM PC. Энциклопедия / М.Ю.Гук. – 3-е изд.
– СПб.: Питер, 2008. – 1072 с.: ил. ISBN 978-5-46901-182-8
6. Куприянов, А.И. Основы защиты информации : учебное пособие для студ.
учеб. заведений / А.И.Куприянов, А.В.Сахаров, В.А.Шевцов. – 3-е изд., стер. – М. :
Издательский центр «Академия», 2008. – 256 с. – ISBN 978-5-7695-5761-3
7. Максимов, Н.В. Компьютерные сети: учебное пособие для студентов
учреждений среднего профессионального образования / Н.В. Максимов, И.И. Попов.
– 3-е изд., испр. и доп. – М.: ФОРУМ, 2008. – 448 с.: ил. – ISBN 978-5-91134-235-7
8. Пуговкин, А.В. Телекоммуникационные системы: учебное пособие / А.В.
Пуговкин – Томск: Томский государственный университет систем управления и
радиоэлектроники, 2008 – 202 с. – ISBN 5-86889-337-9
33
Download