1.Кодирование. Кодирование –это осуществляемая по определенным правилам преобразование дискретного сообщения в дискретный сигнал.Цель кодирование канала связи и достоверности передачи информации. Дискретный сигнал передается в виде каодовых комбинаций состоящих из n малых символов.Если n=const/ Различают параллельное и последовательное передачи комбинаций. Часто коды образуются по закону кодовых комбинаций. Nm=anmn…..+a0m0 A=0(m-1)-коэфициенты. При образование кодов с различными свойствами необходимо выполнять над кодовыми операциями отличающимися от традиционной математики. 1)сложение заменяется на суммирование по модулю 2. 2)умножение традиционное умножение заменяется на символическое при котором суммирование заменяется суммирование по модулю 2 3)деление выполняется традиционно образом,вычитаение заменяется по модулю 2. Непомехозащищенный код Коды в которых искажении любого разряда не может быть обнаружено.Называется непомехозащищенным.В таких кодах искажение разряджа приводит к образованию к другой разрещенной комбинации и поэтому не может быть обнаружены. 1.Натуральный двоичный код во всех сочетаниях(НДК) Перевод 10-ных натуральных чисал в двоичное число 2.Единично двоичный код каждый разряд 10-го число передатся соответсвующими количеством единиц. 347=0000000111 0000001111 0001111111 3.Двоично десятичный код Каждый разряд десятичного числа предстваляется четырехрязрядным двоичной комбинацией 347=0011 0100 0111 4.Единичный код(число импульсный код) Десятичное число предствляется соотвествующим количеством единиц. Например выходной сигнал турбированного расходомера. 2. Кодовые маски. Кодовая маска - это устройство, используемое в преобразователях угловых и линейных перемещений для преобразования последних в код. В зависимости от используемого физического принципа бывают оптические, магнитные и электрические кодовые маски. Недостатком кодовой маски натурального двоичного кода является возможность возникновения больших погрешностей во время перехода из одного положения в другое. Данная погрешность обусловлена несовершенством аппаратуры. Так, при переходе щеток из положения 5 (0101) в положение 6 (0110) ошибка считывания может возникнуть в двух младших разрядах. Фактически могут быть прочитаны кодовые комбинации 0100, 0101, 0110 и 0111, что соответствует положениям диска 4, 5, 6 и 7 соответственно. Из них комбинации 0100 и 0111 являются ложными. Указанного недостатка лишена кодовая маска, в которой чередование проводящих и непроводящих участков подчинено закону кода Грея. В данном коде соседние кодовые комбинации различаются только в одном разряде. Код Грея образуется из комбинации двоичного кода путем суммирования по модулю два с точно такой же комбинацией, смещенной на один разряд влево или вправо. Младший бит отбрасывается. Пример: перевести натуральный двоичный код 1011 в код Грея. 1011 1011 ⊕ 1011 или ⊕ 1011 1110𝟏 1110𝟏 1011 (НДК) = > 1110 (код Грея) Перевод кода Грея в натуральный десятичный код. Старший разряд НДК равен старшему разряду кода Грея. Каждый последующий разряд НДК образуется путем суммирования по модулю два разрядов кода Грея, начиная со старшего и заканчивая рассматриваемым разрядом. Пример: преобразовать КГ в НДК. Код Грея при передачи непомехозащищенный. Т.к. код Грея, как и НДК, является кодом на все сочетания, то любая ошибка при передачи вызывает появление другой. Недостатки: - сложность перевода в десятичный код и обратно (ч/з НДК) - код Грея не арифиметический. (Нет постоянных весов разрядов, т.е. нельзя выполнять арифметические действия) 3. Помехозащитные свойства кодов Обнаружение ошибок – способность кода устанавливать при приеме факт наличия ошибки в полученной кодовой комбинации. При этом кодовая комбинация бракуется, не используется. Исправление ошибок – свойство кодов определять координаты ошибок в полученной кодовой комбинации. Такие ошибки м/б скорректированы, исправлены, а кодовая комбинация может использоваться по назначению. Для иллюстрации помехозащитных свойств кодов, Хемминг предложил геометрич. модель кодов. Согласно этой модели n-разрядный код представляется в виде многогранника, в вершинах которого располагаются все возможные кодовые комбинации из n-разрядов. Причем соседние (соединяются ребром) КК различаются только в одном разряде. Расстояние между произвольными кодовыми комбинациями, определяемое как количество пройденных ребер, называется кодовым расстоянием – d. Кодовое расстояние соответствует числу разрядов, в которых они различаются между собой. Для определения кодового расстояния можно просуммировать рассматриваемые КК по модулю 2 и определить вес результата – w. Вес КК w – это количество единиц (1) в КК. Кодовое расстояние будет соответствовать весу суммы по модулю 2. Пример: определить кодов. расст. м/у комбинациями 10111010 11001001 01110011 d=w=5 Помехозащитные свойства кодов (количество обнаруживаемых r и количество исправляемых ошибок s) определяются кодовым расстоянием между разрешенными КК. Связь помехозащитных свойств и код.расст.: 1) Одноразрядный код n=1 N=2n=2 - Отрезок d=1 0 0 0 1 В случае одноразрядного – непомехозащитный код. 2) 2-хразрядн.код n=2 10 N=2n=4 - квадрат 11 1 00 01 2.1.) Пусть разрешены все КК - d=1 10 прав.прием 10 11 или 00 (ошибки не могут быть обнаружены, т.к. искаженные комбинации тоже разрешены) При d=1 – код непомехозащитный 2.2.) d=2 , Разреш. 00 и 11 Запрещ. 01 и 10 00 прав.прием 00 01 или 10 – одиночная ошибка. Обнаружение одиночной ошибки 11 – двойная ошибка. Не обнаруживается, т.к. возникает др. разреш. КК 3) 3-х разрядный код Это куб короче. Рисуйте сами)) 3.1.) d=1. Код непомехозащитный, т.к. на все сочетания 3.2.) Разреш все КК с d=2. Разр – 000 011 101 110 Запр - 111 100 010 001 -одиноч ошибка обнаруживается -двойная ошибка не обнаруж, т.к. возникает др.разреш.КК 3.3.) пусть разреш только две КК с d=3 Разр – 000 111 Запрещ – остальные 000 000 Одиноч ош. – обнаруживается Двойная ош. – 000 011 обнаруж Тройная ош. – не обнаруж. Ошибки в каналах связи носят вероятностный характер. Пусть P-вероятность искажения одного разряда КК. P<<1 – вероят. Одиноч ошибки P2<<P – вер двойной ошибки Учитывая данное свойство, появляется возможность исправления ошибок. Так, например, если при передаче 000 - > 001 премник может сделать вывод, что • • Это одиноч ошибка от 000 Это двойн. ошибка от 111 Вероятность 2-го события << вероятности 1го события, приемник принимает решение, что это одиноч ошибка КК 000 и исправляет ее. Итоги: d=1 – код непомехозащитный (r=0 s=0) d=2 – обнаруж. одиноч. ошибок (r=1 s=0) d=3 – 1) r=2 2) r=1, s=1 d= r+s+1 – обнаружить и исправить больше ошибок –невозможно. Следствие: Пусть код обнаруживает, но не исправляет S=0 d=r+1 r=d-1 – макс. число обнаруж. ошибок. Пусть код исправляет макс.кол-во ошибок: r=s d=r+s+1=2s+1 Максимальное число исправл.ошибок s=(d-1)/2 4. Коды с обнаружением ошибок. Это коды в которых используется кодовое расстояние d>=2. Существует 2 способа повышения кодового расстояния: 1) Использует не все комбинации натурального двоичного кода (часть запрещают) 2) Способ заключается в том, что к информационной части кода на все сочетания добавляется контрольная часть. Код с защитой по паритету (защитой на четность или нечетность) 1. Кодирование Информационная часть кода – натуральный двоичный код на все сочетания. При кодировании к ней добавляется один контрольный разряд, который доводит информационную часть при защите на четность до четного числа единиц, а при защите на нечетность до нечетного числа единиц. Пример: 1) защитить на четность к.к. 10111 => 10111 [0] , где [0] – контрольный разряд. Контрольный разряд равен сумме по модулю 2 информационных разрядов. 2) защитить на нечетность к.к. 10111 => 10111 [1], где [1]-контрольный разряд. Он равен инверсии суммы по модулю 2 информационный разрядов. 2. Декодирование При декодировании проверяется четность (при защите на четность) или нечетность (при защите на нечетность) полученной кодовой комбинации. Если проверка проходит успешно, то контрольный разряд отбрасывается, а информационный разряд используется по назначению. Если проверка не проходит, то к.к. бракуется. Пример: пусть декодируется защищенная на четность к.к. 10111 0. Сумма по модулю 2 всех цифр=0 => правильный прием Была например помеха и на приеме получили: 100110. Сумма по модулю 2 всех разрядов = 1 => ошибка, бракуем к.к. Данный код позволяет обнаруживать нечетное количество ошибок. 5) Корреляционный код Кодирование: Информ часть – НДК. К каждому информационному разряду добавляется контрольный разряд инверсный информационному. Пример: образовать корреляционный код ля информ части 1011 101110011010 Декодирование: на приемной стороне проверяется каждая пара разрядов на совпадение символов. Если в пределах всех пар символы не совпадают, то принимается решение о правильном приеме. Если в пределе хотя бы 1 пары получены одинаковые символы то код бракуется Пример: 10001010 – брак Данный код обнаруживает одиночные и многократные ошибки за исключением двойной ошибки в педелах пары 6. Инверсный код Информационная часть кода представляет собой код на все сочетания. Кодирование: к информационной части кода добавляется точно такая же контрольная часть при четной информационной части. При нечетной информационной части контрольная часть инверсно информационной. Пример: Образовать инверсный код для след.информационной части 1) 1011111 информационная часть содержит четное количество единиц, значит контрольная часть совпадает с информационной. Инверсный код будет иметь: 1011111 => 1011111 1011111 – инверсный код 2) 1010001 информационная часть имеет нечетное количество единиц, контрольная часть инвертируется 1010001 => 1010001 0101110 Декодирование. На приемной стороне проверяется четность информационной части: - если она четная, то контрольная часть сохраняется в таком же виде, в каком получена -если информационная часть нечетная, то полученная контрольная часть инвертируется. После этого производится поразрядное сравнение информационной и контрольной частей. - если все разряды совпадают, то принимается решение о правильном приеме: контрольная часть отбрасывается, информационная используется как положено. - если хотя бы один разряд не совпадает, то полученная кодовая комбинация бракуется. Пример. Пусть получена кодовая комбинация 1) 10100010101110 Инфор. часть: 1010001 контр.часть инверсируется 1010001 Все разряды совпадает, значит ошибок нет 2) 10100010100110 произошла ошибка в контроль.части Инфор. часть: 1010001 контр.часть инверсируется 1011001 Не все разряды совпадают, произошла ошибка => код бракуется 3) 10101010101110 произошла ошибка в инфор. части Инфор. часть: 1010101 контр.часть инверсируется 0101110 => ошибка =>брак 7. Код с постоянным весом. Избыточность кода Код с постоянным весом – это код, в котором разрешенные кодовые комбинации имеют постоянное количество единиц. Наиболее часто используются 5-разрядный код с 2-мя единицами и 7-разрядный с 3-мя единицами. 5! 5∗4 = = 10 𝑁 = 𝐶52 = 2! 3! 1 ∗ 2 Общее количество 5-разрядных комбинаций =32, где 10 разрешенных и 22 запрещенных. 7! 7∗6∗5 = = 35 𝑁 = 𝐶73 = 3! 4! 1 ∗ 2 ∗ 3 Общее число 7-разрядных комбинаций 128, где 35 разрешенных комбинаций. Приемник проверяет вес полученной кодовой комбинации (КК). Если КК соответствует заданному, => правильный прием, иначе бракуем код. Примеры: 10100, 11000, 10001 и т.д. Не обнаруживаются двойные ошибки типа смещения, когда 0 превращается в 1 и 1 в 0. Частный случай кода с постоянным весом – позиционный код, где число разрешенных комбинаций равен числу разрядов. 1000000 0100000 0010000 ………... 0000001 Избыточность кодов. Пусть n0 – число разрядов информ части k – число разрядов контрольной части n = n0 + k – длина закодированной КК Под избыточностью понимают отношение числа крнтрольных разрядов к общему числу разрядов закодированной КК. И= 𝑘 𝑛 − 𝑛0 𝑛0 = =1− 𝑛 𝑛 𝑛 8. Итеративный код Кодирование: Информ.часть записывается в виде матрицы определенных размеров. Затем строки и столбцы матрицы защищаются на четность. После этого информ. и контр. Разряды построчно передаются в линию. Построчное чтение матрицы - это и есть итеративный код. Декодирование: На приемной стороне осуществляется проверка полученного итеративного кода на четность. Если проверка проходит, то принимают решение о правильном приеме: контрольная часть отбрасывается, информ. передается куда надо. Если проверка не проходит, то итеративный код записывается в виде матрицы, контролируется четность ее строк и столбцов. Пересечение «дефектных» строк и столбцов дает координату ошибки. Она исправляется. Пример: Пусть информ. часть кода: 101110011110 1 0 1 1 k1 1 0 0 1 k2 1 1 1 0 k3 K4k5k6k7 k8(защита защит) k1=1+0+1+1=1 k2=0 . . k7=0 k8=k1+k2+k3 – сумма по модулю 2 всех информационных разрядов 1011 1 1001 0 1110 1 1100 0 Итеративный код будет: 10111100101110111000- данный код всегда четный. Пусть в процессе передачи произошла ошибка : 10111110101110111000 10111 + 11010 11101 + 11000 + +-+++ Данный код позволяет обнаружить и исправлять все одиночные ошибки. 9. Код Хемминга с исправлением одиночных ошибок. При d=3 код Хемминга обнаруживает и исправляет одиночные ошибки. При d=4 код Хемминга исправляет одиночные ошибки и обнаруживает двойные ошибки. Информационная часть кода- код на все сочетания. Длина инф. части= n0. К информационной части по определенному правилу добавляются к-контрольных разрядов. В результате получается К.К. длиной n= n0+k. Состояние правильного приема и координаты одиночных ошибок указываются с помощью к-разрядного двоичного кода. Состояние правильного приема одно единственное. В n-разрядном коде возможно n= n0+k одиночных ошибок. К-разрядный код должен описывать состояние правильного приема и состояние ошибок, т.е число возможных к.к. к-разрядных, должно быть не меньше чем 2^k>= n0+k+1 (формула 1) . Единица описывает состояние правильного приема. Каждая к-разрядная комбинация описывает свое состояние или координату одиночной ошибки. 1. Кодирование 1)По заданной длине инф. части n0 по формуле (1) определяют количество контрольных разрядов к. 2) Расставляем контрольные символы среди информационных n01 n02 n03 n04 K1k2 n01k2 k3 n02 12 3 4 Контрольные разряды расставляются на позициях 2^i, Где i=1,2,3 … 3) Определяется состав контрольных символов. Составляем матрицу: K1 n01 n02 n04 K2 n01 n03 n04 K3 n02 n03 n04 Контрольные разряды доводят строки матрица до четного числа единиц суммированием всей этой херни по модулю 2 по строкам ебать. После этих махинаций он определен. Пример ебать: N0=1011 1) n0=4 => k=3 2) k1 k2 1 k3 0 1 1 3)k1 1 0 1 k1=0 K2 1 1 1 k2=1 K3 0 1 1 k3=0 Итог: 0 1 1 0 0 1 1 2. Декодирование ебать 1)На приемной стороне полученная к.к записывается в матрицу как это было сделано выше. K1 n01 n02 n04 K2 n01 n03 n04 K3 n02 n03 n04 2) Суммируем по модулю 2 строки матрицы. Двоичный код (a3 a2 a1)2=N10 будучи переведенным в десятичное число указывает координату ошибки N10 . Если N=0 соответствует отсутствию ошибок заебачему приему и передаче. Пример: Пусть получили к.к. 011 0011 1. Составляем матрицу 0101=0 1 1 1 1 =0 0 0 1 1=0 (0 0 0)=0 => охуенный прием. Если получили координату ошибки, то есть определенное десятичное число например 5, то это указан номер разряда в котором находится ошибка, инвертируем его к ебеням и радуемся жизни. 10. Код Хемминга с исправлением одиночных ошибок и обнаружением двойных ошибок Данный код образуется по описанному выше правилу. Дополнительно вводится один контрольный разряд, доводящий кодовую комбинацию до четного числа единиц. Полученный код подвергается - общей проверки на четность - проверка по строкам матрицы На приемной стороне возможные следующие ситуации: 1. Правильный прием: общая проверка проходит, проверка по строкам матрицы дает нулевую координату. 2. В процессе передачи произошла одиночная ошибка. Общая проверка не проходит, проверка по строкам матрицы дает координату ошибки, она может быть исправлена. 3. В процессе передачи произошла двойная ошибка. Общая проверка проходит, проверка по строкам матрицы дает координату ошибки. Это признак двойной ошибки. Кодовая комбинация бракуется. 11. Циклические коды Данные коды позволяют обнаруживать и исправлять любое заданное количество ошибок. При образовании ЦК используются образующие (генераторные) многочлены (полиномы). Эти многочлены обладают свойством неприводимости, т.е. по аналогии с простыми числами их нельзя разложить на множители (делятся на 1 или на самого себя): m+1, m2+1, m3+m+1… Кодирование: ЦК образуется путем добавления к информационной части кода G(m) k контрольных разрядов, где k – старшая степень порождающего многочлена P(m) Пусть G(m) – информационная часть, P(m) – порождающий многочлен в степени k Умножим G(m) на mk и разделим на P(m): G(m)𝑚𝑘 𝑅(𝑚) = 𝑄(𝑚) + P(m) P(m) Умножим обе части на P(m) и прибавим к обеим частям остаток 𝑅(𝑚) G(m)𝑚𝑘 + 𝑅(𝑚) = 𝑄(𝑚)P(m) Пример: образовать циклический код для G(m)=m4+m3+m (11010), P(m)= m3+m+1 (1011) G(m)m3=( m4+m3+m) m3=m7+m6+m4 (1101) G(m)𝑚𝑘 + 𝑅(𝑚) = m7+m6+m4+m=11010010 𝑄(𝑚)P(m) = (m4+m3+m2+m) (m3+m+1) Декодирование: Если используется код с исправлением s ошибок, то на приемной стороне осуществляют деление ЦК на порождающий многочлен. Если остаток равен 0, то прием правильный. Если нет, то вес остатка w ≤ s и полученный ЦК складывают по модулю 2 с этим остатком и в результате получают исправленную кодовую комбинацию. Если w>s, то полученный ЦК сдвигают на 1 разряд влево (старший разряд переносится в младший). После этого сдвинутая кодовая комбинация вновь делится на порождающий многочлен. Полученный остаток снова сравнивается с s. Циклические сдвиги и сравнение w и s производят до тех пор, пока не выполнится условие w ≤ s. После этого последняя сдвинутая комбинация ЦК складывается по модулю 2 с последним остатком, выполняется обратные циклические сдвиги результата вправо. В итоге получится скорректированная комбиация ЦК. Пример: пусть инф.часть равна G(m)=1010, P(m)=1011 S=1 ЦК 1010 011 получен с ошибкой: 1110 011 Делим полученный код на P(m) Суммирование по модулю 2 сдвинутого ЦК с остатком 1001111 + 1 1001110 1010 011 12. Кодопреобразователи циклического кода При последовательном соединении Д-триггеров образуется регистр сдвига. Каждый тактовый фронт вызывает смещение кодовой комбинации на 1 разряд вправо. Кодопреобразователь ЦК образуется в соответствии с заданным порождающим многочленом. Пусть задан P(m) = mn + mn-1 + … + m2 + m + 1, тогда соответствующий кодопреобразователь имеет соответстующий вид: Количество триггеров равно старшей степени порождающего многочлена P(m). Если в P(m) какое-либо слагаемое отсутствует, то перед соответствующим триггером сумматор не ставится. Порядок работы: в течение первых n0 тактов информационная часть кода G(m) поступает в КП, при этом ключи К1 и К2 находятся в положении 1. В это время в КП формируется контрольная часть кода. Одновременно с этим в G(m) поступает на выход КП. Ключи К1 и К2 переводятся в положение 2, при этом сумматоры становятся повторителями, а КП превращается в регистр сдвига. В течение последующих k-тактов контрольная часть кода поступает из регистра сдвига на выход КП вслед за информационной частью. 13. Оптимальный код Принцип построения оптимального кода Шеннона-Фано следующий. 1. Сообщения, входящие в ансамбль, располагаются в строку (в столбец) по мере убывания вероятностей. 2. Выбирается основание кода K. 3. Все сообщения ансамбля разбиваются на K групп с равными суммарными вероятностями внутри каждой группы. Всем сообщениям первой группы в качестве первого символа присваивается 0, сообщениям второй группы – символ 1, а сообщениям Kй группы – символ (K – 1); тем самым обеспечивается равная вероятность появления всех символов 0, 1,…, K на первой позиции в кодовых словах. 4. Каждая из групп делится на K подгрупп с равной суммарной вероятностью в каждой подгруппе. Всем сообщениям первых подгрупп в качестве второго символа присваивается 0, всем сообщениям вторых подгрупп – 1, а сообщениям K -х подгрупп – символ (K – 1). 5. Процесс продолжается до тех пор, пока в каждой подгруппе не окажется по одной комбинации. Пример 1. Пусть дан ансамбль сообщений Построить двоичный оптимальный код. Оптимальный код строится в соответствии с приведенными правилами: Наиболее вероятное сообщение кодируется самым коротким сигналом. Для двоичного кода условие оптимальности выглядит так: С другой стороны, То есть в данном случае nCP = HИ. Полученный оптимальный код является неравномерным. Возникает проблема распознавания сообщений в сигнале. В этом случае для упрощения процедуры декодирования сообщений по принятой последовательности символов необходимо выполнить условие однозначной различимости кодовых комбинаций. Один из способов выполнения этого условия заключается в таком построении кодовых слов, чтобы никакая кодовая комбинация не являлась началом другой. Альтернативой этому служит введение специальных разделительных знаков, которые должны выдаваться в конце каждого кодового слова. Для передачи таких префиксов понадобится еще какой-то символ, помимо 1 и 0, что приведет к увеличению основания кода. Различимость кодов Шеннона-Фано достигается первым методом. Таким образом, при кодировании методом Шеннона-Фано любой последовательности символов можно поставить в соответствие ряд сообщений, что легко проверить.