Ставропольский государственный аграрный университет Кафедра информационных систем ЗАДАНИЕ И МЕТОДИЧЕСКИЕ УКАЗАНИЯ НА ПРАКТИЧЕСКОЕ ЗАНЯТИЕ по учебной дисциплине «Инфокоммуникационные системы и сети» для студентов направления 09.03.02 «Информационные системы и технологии» Занятие №1. Методы кодирования Обсуждено на заседании кафедры ИСиТ “ ” 2015 г. Протокол № Ставрополь, 2015 г. УЧЕБНЫЕ И ВОСПИТАТЕЛЬНЫЕ ЦЕЛИ 1. Уметь рассчитывать помехоустойчивый циклический код. 2. Уметь представлять сигналы с помощью различных методов модуляции ВРЕМЯ – 180 минут. УЧЕБНО-МАТЕРИАЛЬНОЕ ОБЕСПЕЧЕНИЕ 1. Методические разработки. 2. Класс ПЭВМ. УЧЕБНЫЕ ВОПРОСЫ ТЕОРЕТИЧЕСКОЯ ЧАСТЬ Основные принципы помехоустойчивого кодирования. Количество разрядов n кодовой конструкции называется длиной кода. Вес - это количество единиц, содержащихся в кодовой конструкции. Степень отличия любых двух кодовых конструкций характеризуется кодовым расстоянием d, оно выражается числом позиций в которых одна кодовая конструкция (к.к.) отлична от другой. d определяется как сумма по модулю два этих к.к. +mod21101101 0010100 1111001 (w =5 d = 5 Ошибки появляющиеся в канале из-за помех проявляются в замене 0 на 1 и 1 на 0. Ошибка в одном разряде называется однократной. Экспериментальные исследования показали, что ошибки как правило группируются в пачке различной длины. Пачка ошибок - это участок последовательности, начинающийся и кончающийся неправильно принятыми символами. Внутри пачки могут быть и правильные символы. Для указания места ошибки используют вектор ошибки (e). Вектор ошибки n - разрядного кода представляет собой n - разрядную последовательность единицы в которой указывают положение искаженных символов. Вес вектора ошибки we определяет кратность ошибки. Сложение по модулю два искаженной к.к и вектора ошибки дают исходную неискаженную комбинацию. Помехоустойчивое кодирование обеспечивается за счет введения избыточности, т.е. из n символов к.к используется только k разрешенных. Циклические коды Циклические коды удобно рассматриввать не только в виде двоичного кода, но и в полиномиальной форме. В соответствии с этим двоичная комбинация записывается в виде степенного ряда аргумента х, а ее символы являются коэффициентами полинома. 6543210 В = 1101011 х6+х5+х3+х+1 Использование полиминомиальной формы позволяет свести действия над комбинациями к действиям с полиномами. Операции над полиномами: 1.Сложение 5 4 2 + х +х +х +х х3+х2+х+1 х5+х4+х3+1 2. Вычитание совершается аналогично. 3. Умножение полиномов производится по mod(хn+1), т.е. за результат берется остаток от деления результата обычного умножения полиномов на двучлен хn+1 Пример: произвести умножение числа х5+х4+х2+х на полином х2+1. Причем в канале связи используется шестиразрядный код - n = 6. х5+х4+х2+х х2+1 х7+х6+х4+х3 х5+х4+х2+х1 х7+х6+х3+х2+х| х6+1 х7+х х+1 6 5 3 2 х +х +х +х х6+1 х5+х3+х2+1 -результат. Циклические коды задаются порождающими полиномами. Роль образующего полинома выполняют неприводимые многочлены (делятся на себя и на единицу). Его невозможно представить в виде произведения других полиномов. Если принять условие, что порождающий полином Р(х) является делителем двучлена хn+1, то принадлежность кодовой комбинации к разрешенным определяется безостаточным делением этой к.к. на порождающий (образующий) многочлен. Циклический код может быть получен путем умножения k -значного кода на порождающий полином со степенью р = n - k. Методика выбора порождающего полинома: Порождающий полином выбирается из таблицы неприводимых полиномов, он должен удовлетворять требованиям: 1. Степень порождающего полинома определяется количеством проверочных символов. 2. Вес полинома должен быть не менее d(min). Методики получения разрешенных кодограмм циклического кода 1. Разрешенная кодограмма образуется путем умножения исходной комбинации k - 1 степени на порождающий полином. (-) информационные символы перемешаны с проверочными L(11) = 1011 = x3+x+1 B(11) = |L(11)*p(x)| +mod(xn+1) = x3+x+1 x3+x+1 x6+x4+x3 x4+x2+x x3+x+1 x6+x2+1 B(11) = 1000101 -неразделенная к.к. 2. К.к. простого k - значного кода умножается на одночлен степени n-k L(x)*x(n-k) =. После этого полученное произведение делится на порождающий многочлен, т.е L(x)*x(n-k) = = остаток, который дописывается к исходной к.к. Р(х) 3 2 L(13) = 1101 =x +x +1 (x3+x2+1)*x3 = x6+x5+x3 |x3+x+1 x6+x4+x3 x3+x2+x+1 5 4 x +x x5+x3+x2 x4+x3+x2 x4+x2+x x3+x x3+x+1 1 B(13) = 1101001 Обнаружение и исправление ошибок в циклическом коде Для обнаружения и исправления ошибок в кодограмме, принятой из канала, используется порождающий полином. Если принятая циклическая кодограмма делится без остатка на порождающий полином , то можно сделать вывод – данная кодограмма является разрешенной. Если остаток от деления этой кодограммы отличен от нуля, то в данном случае используется следующая методика обнаружения и исправления ошибок в циклическом коде: 1. Обнаружение и исправление ошибок в циклическом коде производится по остаткам от деления принятой комбинации на порождающий полином. Нулевой остаток свидетельствует о правильности кодограммы. Для того, чтобы найти ошибочный разряд в принятой кодограмме необходимо выполнить следующие действия: Принятую комбинацию делят на порождающий полином. 2. Подсчитывают вес остатка Wост . Если вес остатка Wост меньше или равен кратности исправляемых ошибок, то принятую комбинацию складывают по модулю 2 с полученным остатком, Сумма дает исправленную комбинацию. 3. Если Wост больше кратности исправляемых ошибок, то производят циклический сдвиг принятой комбинации В(х) влево на один разряд. Комбинацию, полученную в результате сдвига, делят на порождающий полином. Если в результате повторного деления окажется, что вес остатка не превосходит кратность исправляемых ошибок, то делимое суммируют с остатком и производят циклический сдвиг вправо на один разряд. Полученная в результате комбинация уже не содержит ошибки. 4. Если после первого циклического сдвига и последующего деления остаток получается с весом Wост превышающим кратность ошибки, то повторяют операцию по пункту 3 до тех пор, пока не будет его вес меньше или равным кратности исправляемых ошибок. В этом случае полученную в результате последнего циклического сдвига комбинацию суммируют с остатком и производят циклический сдвиг вправо ровно на столько разрядов, на сколько была сдвинута суммарная с последним остатком комбинация относительно принятой комбинации В(х). Рассмотрим пример декодирования запрещенной кодограммы. Порождающий полином имеет следующий вид Р(х) = х3+х+1. Разделим полученную комбинацию 1110010 на порождающий полином, представленный в двоичной виде (1011). 1110010 1011 1011 1010 1011 1 1 0 (Wост = 2 > 1) Вес полученного остатка превышает кратность исправляемых ошибок. Следовательно, согласно представленной методики, осуществляем циклический сдвиг принятой комбинации В(х) влево на один разряд и производим деление на порождающий полином. Получаем, 1100101 1011 1011 1111 1011 1000 1011 1 1 1 (Wост = 3 > 1) Так как полученный остаток имеет вес равным трем, то произведем сдвиг полученной комбинации еще на один разряд влево и разделим результат на порождающий полином. Получаем, 1001011 1011 1011 1001 1011 1 0 1 (Wост = 2 > 1) Проведем еще один сдвиг влево и полученную кодовую комбинацию разделим на порождающий полином. Получаем, 10111 1011 1011 0 0 1 (Wост = 1 = 1) Полученный остаток прибавляем к делимому и производим ровно столько же сдвигов в вправо. В результате получим исходную разрешенную комбинацию 1100 010. ЗАДАНИЕ НА ЗАНЯТИЕ 1. Представить исходную последовательность символов 1101100001011001 в потенциальном коде без возвращения к нулю, биполярном коде с альтернативной инверсией, биполярном импульсном коде, манчестерском коде, потенциальном коде 2B1Q. Результаты представить в виде временных диаграмм. 2. Получить список разрешенных кодовых комбинаций циклического кода (7,4) методом циклического сдвига и линейного комбинирования, если задана одна из комбинаций В1=0011101. 3. Обнаружить, какие из принятых кодовых комбинаций В1=0011010, В2=0010100, В3=1010011 циклического кода, образующий полином которого F(x)=x3+x2+1 ошибочные. Исправить однократные ошибки. 4. Представить исходную последовательность символов 11011000000110010111 методом скрэмблирования согласно соотношения Bi = Ai Bi-2 Bi-5. 5. Получить список разрешенных кодовых комбинаций циклического кода (7,4) методом умножения на порождающий полином F(x)=x3+x+1. 6. Обнаружить, какие из принятых кодовых комбинаций В1=0101110, В2=0101100, В3=1101110 циклического кода, образующий полином которого F(x)=x3+x2+1 ошибочные. Исправить однократные ошибки. 7. Восстановить исходную последовательность по результирующей последовательности 11001101000111010101 на основании обратного соотношения Ci = Bi Bi-2 Bi-5. 8. Получить список разрешенных кодовых комбинаций циклического кода (7,4) методом деления на порождающий полином F(x)=x3+x2+1 и приписывания остатка. 9. Обнаружить, какие из принятых кодовых комбинаций В1=1001101, В2=1100101, В3=1000101 циклического кода, образующий полином которого F(x)=x3+x+1 ошибочные. Исправить однократные ошибки. 10. Представить исходную последовательность символов 1101100001011001 в потенциальном коде без возвращения к нулю, биполярном коде с альтернативной инверсией, биполярном импульсном коде, манчестерском коде, потенциальном коде 2B1Q. Результаты представить в виде временных диаграмм. 11. Получить список разрешенных кодовых комбинаций циклического кода (7,4) методом циклического сдвига и линейного комбинирования, если задана одна из комбинаций В1=1011001. 12. Обнаружить, какие из принятых кодовых комбинаций В1=1111010, В2=1100010, В3=1101010 циклического кода, образующий полином которого F(x)=x3+x2+1 ошибочные. Исправить однократные ошибки. 13. Представить исходную последовательность символов 11011000000110010111 методом скрэмблирования согласно соотношения Bi = Ai Bi-3 Bi-6. 14. Получить список разрешенных кодовых комбинаций циклического кода (7,4) методом умножения на порождающий полином F(x)=x3+x2+1. 15. Обнаружить, какие из принятых кодовых комбинаций В1=1110111, В2=1101111, В3=1111111 циклического кода, образующий полином которого F(x)=x3+x+1 ошибочные. Исправить однократные ошибки. 16. Восстановить исходную последовательность по результирующей последовательности 11001101000111010101 на основании обратного соотношения Ci = Bi Bi-3 Bi-6. 17. Получить список разрешенных кодовых комбинаций циклического кода (7,4) методом деления на порождающий полином F(x)=x3+x+1 и приписывания остатка. 18. Обнаружить, какие из принятых кодовых комбинаций В1=1100101, В2=1101101, В3=1000101 циклического кода, образующий полином которого F(x)=x3+x2+1 ошибочные. Исправить однократные ошибки.