Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

Классификация корректирующих кодов

В каналах с помехами эффективным средством повышения достоверности передачи сообщений является помехоустойчивое кодирование. Оно основано на применении специальных кодов, которые корректируют ошибки, вызванные действием помех. Код называется корректирующим, если он позволяет обнаруживать или обнаруживать и исправлять ошибки при приеме сообщений. Код, посредством которого только обнаруживаются ошибки, носит название обнаруживающего кода. Исправление ошибки при таком кодировании обычно производится путем повторения искаженных сообщений. Запрос о повторении передается по каналу обратной связи. Код, исправляющий обнаруженные ошибки, называется исправляющим, кодом. В этом случае фиксируется не только сам факт наличия ошибок, но и устанавливается, какие кодовые символы приняты ошибочно, что позволяет их исправить без повторной передачи. Известны также коды, в которых исправляется только часть обнаруженных ошибок, а остальные ошибочные комбинации передаются повторно.

Для того чтобы «од обладал корректирующими способностями, в кодовой последовательности должны содержаться дополнительные (избыточные) символы, предназначенные для корректирования ошибок. Чем больше избыточность кода, тем выше его корректирующая способность.

Помехоустойчивые коды могут быть построены с любым основанием. Ниже рассматриваются только двоичные коды, теория которых разработана наиболее полно.

Все известные в настоящее время коды могут быть разделены

на две большие группы: блочные и непрерывные. Блочные коды характеризуются тем, что последовательность передаваемых символов разделена на блоки операции кодирования и декодирования в каждом блоке производятся отдельно. Отличительной особенностью непрерывных кодов является то, что первичная последовательность символов, несущих информацию, непрерывно преобразуется по определенному закону в другую последовательность, содержащую избыточное число символов. Здесь процессы кодирования и декодирования не требуют деления кодовых символов на блоки.

Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

Рис. Классификация корректирующих кодов

Разновидностями как блочных, так и непрерывных кодов являются разделимые и неразделимые коды. В разделимых кодах всегда можно выделить информационные символы, содержащие передаваемую информацию, и контрольные (проверочные) символы, которые являются избыточными и служат ‘исключительно для коррекции ошибок. В неразделимых кодах такое разделение символов провести невозможно.

Наиболее многочисленный класс разделимых кодов составляют линейные коды. Основная их особенность состоит в том, что контрольные символы образуются как линейные комбинации информационных символов.

Принципы помехоустойчивого кодирования

В теории помехоустойчивого кодирования важным является  вопрос об использовании  избыточности для корректирования возникающих при  передаче ошибок. Здесь   удобно   рассмотреть блочные моды, в которых всегда имеется возможность выделить отдельные кодовые комбинации. Напомним, что для равномерных кодов, которые в дальнейшем только и будут изучаться, число возможных комбинаций равно M=2n, где п — значность кода. В обычном некорректирующем коде без избыточности, например в коде Бодо, число комбинаций М выбирается равным числу сообщений алфавита источника М0и все комбинации используются для передачи информации. Корректирующие коды строятся так, чтобы число комбинаций М превышало число сообщений источника М0. Однако в. этом случае лишь М0комбинаций из общего числа  используется для передачи  информации. Эти  комбинации называются разрешенными, а остальные М—М0комбинаций носят название запрещенных. На приемном конце в декодирующем устройстве известно, какие комбинации являются разрешенными и какие запрещенными. Поэтому если переданная разрешенная комбинация в результате ошибки преобразуется в некоторую запрещенную комбинацию, то такая ошибка будет обнаружена, а при определенных условиях исправлена. Естественно, что ошибки, приводящие к образованию другой разрешенной комбинации, не обнаруживаются.

Различие между комбинациями равномерного кода принято характеризовать расстоянием, равным числу символов, которыми отличаются комбинации одна от другой. Расстояние d между двумя комбинациями  и  определяется количеством единиц в сумме этих комбинаций по модулю два. Например,

Для любого кода d. Минимальное расстояние между разрешенными комбинациями ,в данном коде называется кодовым расстоянием d.

Расстояние между комбинациями  и  условно обозначено на рис. 2а, где показаны промежуточные комбинации, отличающиеся друг от друга одним символом. B общем случае некоторая пара разрешенных комбинаций  и , разделенных кодовым расстоянием d, изображается на прямой рис. 2б, где точками указаны запрещенные комбинации. Для того чтобы в результате ошибки комбинация  преобразовалась в другую разрешенную комбинацию , должно исказиться d символов.

Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

Рис. Геометрическое представление разрешенных и запрещенных кодовых комбинаций

При искажении меньшего числа символов комбинация  перейдет в запрещенную комбинацию и ошибка будет обнаружена. Отсюда следует, что ошибка всегда обнаруживается, если ее кратность, т. число искаженных символов в кодовой комбинации,

Процедура исправления ошибок в процессе декодирования сводится к определению переданной комбинации по известной принятой. Расстояние между переданной разрешенной комбинацией и принятой запрещенной комбинацией d0 равно кратности ошибок g. Если ошибки в символах комбинации происходят независимо относительно друг друга, то вероятность искажения некоторых g символов в n-значной комбинации будет равна:

где — вероятность искажения одного символа. Так как обычно <<1, то вероятность многократных ошибок уменьшается с увеличением их кратности, при этом более вероятны меньшие расстояния d0. В этих условиях исправление ошибок может производиться по следующему правилу. Если принята запрещенная комбинация, то считается переданной ближайшая разрешенная комбинация. Например, пусть образовалась запрещенная комбинация  (см. рис. 2б), тогда принимается решение, что была передана комбинация. Это. правило декодирования для указанного распределения ошибок является оптимальным, так как оно обеспечивает исправление максимального числа ошибок. Напомним, что аналогичное правило используется в теории потенциальной помехоустойчивости при оптимальном приеме дискретных сигналов, когда решение сводится к выбору того переданного сигнала, который ib наименьшей степени отличается от принятого. Нетрудно определить, что при таком правиле декодирования будут исправлены все ошибки кратности

Возможно также построение таких кодов, в которых часть ошибок исправляется, а часть только обнаруживается. Так, в соответствии с рис. 2в ошибки кратности  исправляются, а ошибки, кратность которых лежит в пределах только обнаруживаются. Что касается ошибок, кратность которых сосредоточена в пределах , то они обнаруживаются, однако при их исправлении принимается ошибочное решение — считается переданной комбинация А вместо Aили наоборот.

Существуют двоичные системы связи, в которых решающее устройство выдает, кроме обычных символов 0 и 1, еще так называемый символ стирания. Этот символ соответствует приему сомнительных сигналов, когда затруднительно принять определенное решение в отношении того, какой из символов 0 или 1 был передан. Принятый символ в этом случае стирается. Однако при использовании корректирующего кода возможно восстановление стертых символов. Если в кодовой комбинации число символов  оказалось равным gc, причем

а остальные символы приняты без ошибок, то такая комбинация полностью восстанавливается. Действительно, для восстановления всех символов  необходимо перебрать всевозможные сочетания из gc символов типа 0 и 1. Естественно, что все эти сочетания, за исключением одного, будут неверными. Но так как в неправильных сочетаниях кратность ошибок , то согласно неравенству (7. 1) такие ошибки обнаруживаются. Другими словами, в этом случае неправильно восстановленные сочетания из gc символов совместно с правильно принятыми символами образуют запрещенные комбинации и только одно- сочетание стертых символов даст разрешенную комбинацию, которую и следует считать как правильно восстановленную.

Если , то при восстановлении окажется несколько разрешенных комбинаций, что не позволит принять однозначное решение.

Таким образом, при фиксированном кодовом расстоянии максимально возможная кратность корректируемых ошибок достигается в кодах, которые обнаруживают ошибки или. восстанавливают стертые символы. Исправление ошибок представляет собой более трудную задачу, практическое решение которой сопряжено с усложнением кодирующих и декодирующих устройств. Поэтому исправляющие «оды обычно используются для корректирования ошибок малой кратности.

Корректирующая способность кода возрастает с увеличением d. При фиксированном числе разрешенных комбинаций Мувеличение d возможно лишь за счет роста количества запрещенных комбинаций:

что, в свою очередь, требует избыточного числа символов r=n—k, где k — количество символов в комбинации кода без избыточности. Можно ввести понятие избыточности кода и количественно определить ее по аналогии с (6. 12) как

При независимых ошибках вероятность определенного сочетания g ошибочных символов в n-значной кодовой комбинации выражается ф-лой ((7. 2), а количество всевозможных сочетаний g ошибочных символов в комбинации зависит от ее длины и определяется известной формулой числа сочетаний

Отсюда полная вероятность ошибки кратности g, учитывающая все сочетания ошибочных символов, равняется:

Используя (7. 7), можно записать формулы, определяющие вероятность отсутствия ошибок в кодовой комбинации, т. вероятность правильного приема

и вероятность правильного корректирования ошибок

Здесь суммирование ‘Производится по всем значениям кратности ошибок g, которые обнаруживаются и исправляются. Таким образом, вероятность некорректируемых ошибок равна:

Анализ ф-лы (7. 8) показывает, что при малой величине Р0и сравнительно небольших значениях п наиболее вероятны ошибки малой кратности, которые и необходимо корректировать в первую очередь.

Вероятность Р, избыточность  и число символов n являются основными характеристиками корректирующего кода, определяющими, насколько удается повысить помехоустойчивость передачи дискретных сообщений и какой ценой это достигается.

Общая задача, которая ставится при создании кода, заключается, в достижении наименьших значений Р и. Целесообразность применения того или иного кода зависит также от сложности кодирующих и декодирующих устройств, которая, в свою очередь, зависит от п. Во многих практических случаях эта сторона вопроса является решающей. Часто, например, используются коды с большой избыточностью, но обладающие простыми правилами кодирования и декодирования.

В соответствии с общим принципом корректирования ошибок, основанным на использовании разрешенных и запрещенных комбинаций, необходимо сравнивать принятую комбинацию со всеми комбинациями данного кода. В результате М сопоставлений и принимается решение о переданной комбинации. Этот способ декодирования логически является наиболее простым, однако он требует сложных устройств, так как в них должны запоминаться все М комбинаций кода. Поэтому на практике чаще всего используются коды, которые позволяют с помощью ограниченного числа преобразований принятых кодовых символов извлечь из них всю информацию о корректируемых ошибках. Изучению таких кодов и посвящены последующие разделы.

Систематические коды

Изучение конкретных способов помехоустойчивого кодирования начнем с систематических кодов, которые в соответствии с классификацией (рис. 1) относятся к блочным разделимым кодам, т. к кодам, где операции кодирования осуществляются независимо в пределах каждой комбинации, состоящей из информационных и контрольных символов.

Остановимся кратко на общих принципах построения систематических кодов. Если обозначить информационные символы буквами с, а контрольные — буквами е, то любую кодовую комбинацию, содержащую k информационных и r контрольных символов, можно представить последовательностью:, где с и е в двоичном коде принимают значения 0 или 1.

Читайте также:  На серверах Steam есть ошибки, которые не могут обработать запрос данных с кодом 15

Процесс кодирования на передающем конце сводится к образованию контрольных символов, которые выражаются в виде линейной функции информационных символов:

Здесь  — коэффициенты, равные 0 или 1, а  и  — знаки суммирования по модулю два. Значения  выбираются по определенным правилам, установленным для данного вида кода. Иными словами, символы е представляют собой суммы по модулю два информационных символов в различных сочетаниях. Процедура декодирования принятых комбинаций может осуществляться различными” методами. Один из них, так называемый метод контрольных чисел, состоит в следующем. Из информационных символов принятой кодовой комбинации  образуется по правилу (7. 9) вторая группа контрольных символов

Затем производится сравнение обеих групп контрольных символов путем их суммирования по модулю два:

Полученное число X называется контрольным числом или синдромом. С его помощью можно обнаружить или исправить часть ошибок. Если ошибки в принятой комбинации отсутствуют, то все суммы, а следовательно, и контрольное число X будут равны. нулю. При появлении ошибок некоторые значения х могут оказаться равным 1. В этом случае , что и позволяет обнаружить ошибки. Таким образом, контрольное число Х определяется путем r проверок на четность.

Для исправления ошибок знание одного факта их возникновения является недостаточным. Необходимо указать номер ошибочно принятых символов. С этой целью каждому сочетанию исправляемых ошибок в комбинации присваивается одно из контрольных чисел, что позволяет по известному контрольному числу определить место положения ошибок и исправить их.

Контрольное число X записывается в двоичной системе, поэтому общее количество различных контрольных чисел, отличающихся от нуля, равно. Очевидно, это количество должно быть не меньше числа различных сочетаний ошибочных символов, подлежащих исправлению. Например, если код предназначен для исправления одиночных ошибок, то число различных вариантов таких ошибок равно. В этом случае должно выполняться условие

Формула (7. 11) позволяет при заданном количестве информационных символов k определить необходимое число контрольных символов r, с помощью которых исправляются все одиночные ошибки.

Код с чётным числом единиц. Инверсионный код

Рассмотрим некоторые простейшие систематические коды, применяемые только для обнаружения ошибок. Одним из кодов подобного типа является код с четным числом единиц. Каждая комбинация этого кода содержит, помимо информационных символов, один контрольный символ, выбираемый равным 0 или 1 так, чтобы сумма единиц в комбинации всегда была четной. Примером могут служить пятизначные комбинации кода Бодо, к которым добавляется шестой контрольный символ: 10101,1 и 01100,0. Правило вычисления контрольного символа можно выразить на

основании (7. 9) в следующей форме:. Отсюда вытекает, что для любой комбинации сумма всех символов по модулю два будет равна нулю (— суммирование по модулю):

Это позволяет в декодирующем устройстве сравнительно просто производить обнаружение ошибок путем проверки на четность. Нарушение четности имеет место при появлении однократных, трехкратных и в общем, случае ошибок нечетной кратности, что и дает возможность их обнаружить. Появление четных ошибок не изменяет четности суммы (7. 12), поэтому такие ошибки не обнаруживаются. На основании ,(7. 8) вероятность необнаруженной ошибки равна:

К достоинствам кода следует отнести простоту кодирующих и декодирующих устройств, а также малую. избыточность , однако последнее определяет и его основной недостаток — сравнительно низкую корректирующую способность.

Значительно лучшими корректирующими способностями обладает инверсный код, который также применяется только для обнаружения ошибок. С принципом построения такого кода удобно ознакомиться на примере двух комбинаций: 11000, 11000 и 01101, 10010. В каждой комбинации символы до запятой являются информационными, а последующие — контрольными. Если   количество единиц в информационных символах четное, т. сумма этих

равна нулю, то контрольные символы представляют собой простое повторение информационных. В противном случае, когда число единиц нечетное и сумма (7. 13) равна 1, контрольные символы получаются из информационных посредством инвертирования, т. путем замены всех 0 на 1, а 1 на 0. Математическая форма записи образования контрольных символов имеет вид. При декодировании происходит сравнение принятых информационных и контрольных символов. Если сумма единиц в принятых информационных символах четная, т. , то соответствующие друг другу информационные и контрольные символы суммируются по модулю два. В противном случае, когда c’=1, происходит такое же суммирование, но с инвертированными контрольными символами. Другими словами, в соответствии с (7. 10) производится r проверок на четность:. Ошибка обнаруживается, если хотя бы одна проверка на четность дает 1.

Анализ показывает, что при  наименьшая кратность необнаруживаемой ошибки g=4. Причем не обнаруживаются только те ошибки четвертой кратности, которые искажают одинаковые номера информационных и контрольных символов. Например, если передана комбинация 10100, 10100, а принята 10111, 10111, то такая четырехкратная ошибка обнаружена не будет, так как здесь все значения  равны 0. Вероятность необнаружения ошибок четвертой кратности определяется выражением

Для g>4 вероятность необнаруженных ошибок еще меньше. Поэтому при достаточно малых вероятностях ошибочных символов ро можно полагать, что полная вероятность необнаруженных ошибок

Коды Хэмминга

К этому типу кодов обычно относят систематические коды с расстоянием d=3, которые позволяют исправить все одиночные ошибки (7.

Рассмотрим построение семизначного кода Хэмминга, каждая комбинация которого содержит четыре  информационных и триконтрольных символа. Такой код, условно обозначаемый (7. 4), удовлетворяет неравенству (7. 11)    и   имеет   избыточность

Если информационные символы с занимают в комбинация первые четыре места, то последующие три контрольных символа образуются по общему правилу (7. 9) как суммы:

Декодирование осуществляется путем трех проверок на четность (7. 10):

Так как х равно 0 или 1, то всего может быть восемь контрольных чисел Х=х1х2х3: 000, 100, 010, 001, 011, 101, 110 и 111. Первое из них имеет место в случае правильного приема, а остальные семь появляются при наличии искажений и должны использоваться для определения местоположения одиночной ошибки в семизначной комбинации. Выясним, каким образом устанавливается взаимосвязь между контрольными числами я искаженными символами. Если искажен один из контрольных символов:  или , то, как следует из (7. 15), контрольное число примет соответственно одно из трех значений: 100, 010 или 001. Остальные четыре контрольных числа используются для выявления ошибок в информационных символах.

Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

Порядок присвоения контрольных чисел ошибочным информационным символам может устанавливаться любой, например, как показано в табл. Нетрудно показать, что этому распределению контрольных чисел соответствуют коэффициенты , приведенные в табл.

Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

Если подставить коэффициенты  в выражение (7. 15), то получим:

При искажении одного из информационных символов становятся равными единице те суммы х, в которые входит этот символ. Легко проверить, что получающееся в этом случае контрольное число согласуется с табл. Нетрудно заметить, что первые четыре контрольные числа табл. 1 совпадают со столбцами табл. Это свойство дает возможность при выбранном распределении контрольных чисел составить таблицу коэффициентов. Таким образом, при одиночной ошибке можно вычислить контрольное число, позволяющее по табл. 1 определить тот символ кодовой комбинации, который претерпел искажения. Исправление искаженного символа двоичной системы состоит в простой замене 0 на 1 или 1 на 0. B качестве примера рассмотрим передачу комбинации, в которой информационными символами являются , Используя ф-лу (7. 14) и табл. 2, вычислим контрольные символы:

Передаваемая комбинация при этом будет. Предположим, что принята комбинация — 1001, 010 (искажен символ ). Подставляя соответствующие значения в (7. 16), получим:

Вычисленное таким образом контрольное число  110 позволяет согласно табл. 1 исправить ошибку в символе.

Здесь был рассмотрен простейший способ построения и декодирования кодовых комбинаций, в которых первые места отводились информационным символам, а соответствие между контрольными числами и ошибками определялось таблице. Вместе с тем существует более изящный метод отыскания одиночных ошибок, предложенный впервые самим Хэммингом. При этом методе код строится так, что контрольное число в двоичной системе счисления сразу указывает номер искаженного символа. Правда, в этом случае контрольные символы необходимо располагать среди информационных, что усложняет процесс кодирования. Для кода (7. 4) символы в комбинации должны размещаться в следующем порядке: , а контрольное число вычисляться по формулам:

Так, если произошла ошибка в информационном символе с’5 то контрольное  число , что соответствует  числу 5 в двоичной системе.

В заключение отметим, что в коде (7. 4) при появлении многократных ошибок контрольное число также может отличаться от нуля. Однако декодирование в этом случае будет проведено неправильно, так как оно рассчитано на исправление лишь одиночных ошибок.

Циклические коды

Важное место среди систематических кодов занимают циклические коды. Свойство цикличности состоит в том, что циклическая перестановка всех символов кодовой комбинации  дает другую комбинацию  также принадлежащую этому коду. При такой перестановке символы кодовой комбинации перемещаются слева направо на одну позицию, причем крайний правый символ переносится на место крайнего левого символа. Например,.

Комбинации циклического кода, выражаемые двоичными числами, для удобства преобразований обычно определяют в виде полиномов, коэффициенты которых равны 0 или 1. Примером этому может служить следующая запись:

Помимо цикличности, кодовые комбинации обладают другим важным свойством. Если их представить в виде полиномов, то все они делятся без остатка на так называемый порождающий полином G(z) степени , где k-значность первичного кода без избыточности, а п-значность циклического кода

Построение комбинаций циклических кодов возможно путем умножения комбинации первичного кода A*(z) ,на порождающий полином G(z):

Умножение производится по модулю zn и в данном случае сводится к умножению по обычным правилам с приведением подобных членов по модулю два.

В полученной таким способом комбинации A(z) в явном виде не содержатся информационные символы, однако они всегда могут быть выделены в результате обратной операции: деления A(z) на G(z).

Другой способ кодирования, позволяющий представить кодовую комбинацию в виде информационных и контрольных символов, заключается в следующем. К комбинации первичного кода дописывается справа г нулей, что эквивалентно повышению полинома A*(z) на ,г разрядов, т. умножению его на гг. Затем произведение zrA*(z) делится на порождающий полином. B общем случае результат деления состоит из целого числа Q(z) и остатка R(z). Отсюда

Вычисленный остаток К(г) я используется для образования комбинации циклического кода в виде суммы

Для примера рассмотрим циклический код c n = 7, k=4, r=3 и G(z)=z3-z+1=1011. Необходимо закодировать комбинацию A*(z)=z*+1 = 1001. Тогда zA*(z)=z+z= 1001000. Для определения остатка делим z3A*(z) на G(z):

Читайте также:  Не удалось проверить подпись Cades Bes ошибка неправильное значение хеша код 0x80091007

Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

В А(z) высшие четыре разряда занимают информационные символы, а остальные при — контрольные.

Контрольные символы в циклическом коде могут быть вычислены по общим ф-лам (7. 9), однако здесь определение коэффициентов  затрудняется необходимостью выполнять требования делимости А(z) на порождающий полином G(z).

Процедура декодирования принятых комбинаций также основана на использовании полиномов G(z). Если ошибок в процессе передачи не было, то деление принятой комбинации A(z) на G(z) дает целое число. При наличии корректируемых ошибок в результате деления образуется остаток, который и позволяет обнаружить или исправить ошибки.

Кодирующие и декодирующие устройства циклических кодов в большинстве случаев обладают сравнительной простотой, что следует считать одним из основных их преимуществ. Другим важным достоинством этих кодов является их способность корректировать пачки ошибок, возникающие в реальных каналах, где действуют импульсные и сосредоточенные помехи или наблюдаются замирания сигнала.

В теории кодирования весом кодовых комбинаций принято называть. количество единиц, которое они содержат. Если все комбинации кода имеют одинаковый вес, то такой код называется кодом с постоянным весом. Коды с постоянным весом относятся к классу блочных неразделимых кодов, так как здесь не представляется возможным выделить информационные и контрольные символы. Из кодов этого типа наибольшее распространение получил обнаруживающий семизначный код 3/4, каждая разрешенная комбинация которого имеет три единицы и четыре нуля. Известен также код 2/5. Примером комбинаций кода 3/4 могут служить следующие семизначные последовательности: 1011000, 0101010, 0001110 и т.

Декодирование принятых комбинаций сводится к определению их веса. Если он отличается от заданного, то комбинация принята с ошибкой. Этот код обнаруживает все ошибки нечетной краткости и часть ошибок четной кратности. Не обнаруживаются только так называемые ошибки смещения, сохраняющие неизменным вес комбинации. Ошибки смещения характеризуются тем, что число искаженных единиц всегда равно числу искаженных нулей. Можно показать, что вероятность необнаруженной ошибки для кода 3/4 равна:

при                                                                                (7. 18)

В этом коде из общего числа комбинаций М = 27=128 разрешенными являются лишь , поэтому в соответствии с (7. 6) коэффициент избыточности

Код 3/4 находит применение при частотной манипуляции в каналах с селективными замираниями, где вероятность ошибок смещения невелика.

Непрерывные коды

Из непрерывных кодов, исправляющих ошибки, наиболее известны коды Финка—Хагельбаргера, в которых контрольные символы образуются путем линейной операции над двумя или более информационными символами. Принцип построения этих кодов рассмотрим на примере простейшего цепного кода. Контрольные символы в цепном коде формируются путем суммирования двух информационных символов, расположенных один относительно другого на определенном расстоянии:

;                                                                             (7. 19)

Расстояние между информационными символами l=k-i определяет основные свойства кода и называется шагом сложения. Число контрольных символов при таком способе кодирования равно числу информационных символов, поэтому избыточность кода =0,5. Процесс образования последовательности контрольных символов показан на рис. символы разметаются  между информационными символами с задержкой на два шага сложения.

Число коррекции кода Хэмминга равно нулю (или семи) при отсутствии ошибки. коды для коррекции. Теория передачи сигналов

Рис. Образование и размещение контрольных символов в цепном коде Финка—Хагельбаргера

При декодировании из принятых информационных символов по тому же правилу (7. 19) формируется вспомогательная последовательность контрольных символов е”, которая сравнивается с принятой последовательностью контрольных символов е’ (рис. 36). Если произошла ошибка в информационном символе, например, c’k, то это вызовет искажения сразу двух символов e”k и e”km, что и обнаружится в результате их сравнения с  и e’km. Отсюда по общему индексу k легко определить и исправить ошибочно принятый информационный символ с’Ошибка в принятом контрольном символе, например, e’k приводит к несовпадению контрольных последовательностей лишь в одном месте. Исправление  такой ошибки не требуется.

Важное преимущество непрерывных кодов состоит в их способности исправлять не только одиночные ошибки, но я группы (пакеты) ошибок. Если задержка контрольных символов выбрана равной 2l, то можно показать, что максимальная длина исправляемого пакета ошибок также равна 2l при интервале между пакетами не менее 6l+1. Таким образом, возможность исправления длинных пакетов связана с увеличением шага сложения, а следовательно, и с усложнением кодирующих и декодирующих устройств.

Вопросы для повторения

Как могут быть  классифицированы  корректирующие коды?

Каким образом исправляются ошибки в кодах, которые только их обнаруживают?

В чем состоят основные принципы корректирования ошибок?

Дайте определение кодового расстояния.

При каких условиях код может обнаруживать или исправлять ошибки?

Как используется корректирующий код в системах со стиранием?

Какие характеристики определяют корректирующие способности кода?

Как осуществляется построение кодовых комбинаций в систематических кодах?

На чем  основан  принцип  корректирования  ошибок  с использованием  контрольного числа?

Объясните метод построения кода с четным числом единиц.

Как осуществляется процедура кодирования в семизначном коде Хэмминга?

Почему семизначный код 3/4 не обнаруживает ошибки смещения?

Каким образом производится непрерывное кодирование?

От чего зависит длина пакета исправляемых ошибок в коде Финка—Хагельбаргера?

Понятие о корректирующих кодах
• Обрабатываемая информация представляется
различными комбинациями из двух символов 0 и 1;
поэтому любой процесс кодирования состоит из
преобразования чисел и слов в соответствующие
последовательности символов 1 и 0. Код – это совокупность всех комбинаций из
определенного количества символов (кодового
алфавита), которые избраны для представления
информации. Каждая такая комбинация называется
кодовой комбинацией. • Общее число кодовых комбинаций в данном коде
может быть равно или меньше числа всех
возможных комбинаций из данного количества
символов.

Коды равномерные и неравномерные
• Равномерные – коды, в которых все комбинации
имеют одинаковое количество знаков. • Неравномерные –коды, в которых количество
знаков может быть различным. Примером такого
кода может служить телеграфный код Морзе. • При помощи n двоичных знаков, очевидно,
можно получить 2n кодовых комбинаций. В
зависимости от того, все возможные 2n кодовые
комбинации задействованы для представления
информации или нет, коды подразделяются на
простые и корректирующие (избыточные).

Простые коды
• Простые – коды, в которых используются все возможные 2n
комбинации, полученные при помощи n двоичных знаков. • В таком коде всякая ошибка, состоящая в изменении 0 на 1
или 1 на 0, превращает одну информационную комбинацию в
другую. Для обнаружения и исправления ошибки в таком коде
необходима дополнительная информация. • Пример. Пусть n=3. Тогда количество возможных кодовых
комбинаций 2n = 8. Простой код для n=3 будет иметь
следующий вид:
000
001
010
011
100
101
110
111

Корректирующие коды
• Корректирующие – коды, в которых лишь некоторая часть
всех возможных 2n комбинаций, полученных при помощи
n двоичных знаков, используется для представления
информации. • В таком коде все остальные кодовые комбинации
являются запрещенными, и их появление свидетельствует
о наличии ошибки. Любая одиночная ошибка в таком
коде превращает информационную комбинацию в
запрещенную. • Пример. Пусть n=3, но из всех возможных кодовых
комбинаций, представленных в предыдущем примере,
только четыре изображают числа от 0 до 3, а остальные
считаются запрещенными. Такой корректирующий код
будет иметь следующий вид:
000
011
101

Корректирующие коды
• Корректирующие коды можно разделить на
систематические и несистематические. • Систематические – такие n-значные коды,
которые содержат постоянное количество m
информационных и k = n m избыточных
знаков, причем эти знаки занимают одни и те же
позиции во всех кодовых комбинациях. • Несистематические – такие коды, в которых
знаки закодированного числа или слова
разделить на информационные и контрольные
невозможно.

Корректирующие коды
• Основными характеристиками корректирующих кодов
являются их избыточность и корректирующая
способность. Избыточность кода определяется по формуле k = n – m ,
где n – общее число знаков в коде;
m – число информационных знаков, необходимых для
изображения
N чисел или слов в простом коде, определяемое по
формуле
m = log2 N;
k – число контрольных знаков. Например, для кода из примера: m = log2 4 = 2; k =1. Часто для характеристики кода применяют понятие
относительная избыточность, которая определяется из
соотношения R = k / m.

Корректирующие коды
• Корректирующая способность кода количественно
может быть определена вероятностью обнаружения или
исправления ошибок различных типов. Разработка кодов,
имеющих максимальную корректирующую способность
при заданной избыточности, а также кодов,
обеспечивающих заданную корректирующую способность
при минимальной избыточности, – одна из важнейших
задач теории кодирования. • Корректирующая способность кода связана с понятием
кодового расстояния. Прежде чем сформулировать
определение кодового расстояния, введем понятие о весе
кодовой комбинации. • Вес, W(A), кодовой комбинации A определяется
количеством содержащихся в ней двоичных единиц. • Пример:
для А = 111001, W (A) = ai = 4.

Корректирующие коды
• Кодовое расстояние между двумя кодовыми
комбинациями определяется числом позиций, в которых
их элементы не совпадают. • Это означает, что кодовое расстояние между
комбинациями А и В равно весу некоторой третьей
комбинации С, полученной поразрядным сложением
двух этих комбинаций в соответствии со следующей
формулой:
W(C) = W(A B) = ( ai bi). • Пример. Пусть есть кодовая комбинация А = 111001 и
кодовая комбинация В = 100101, тогда
111001
100101
________
C = 011100 W(C) = 3, кодовое расстояние между А и В.

Корректирующие коды
• Минимальное кодовое расстояние кода – это
минимальное расстояние между двумя любыми
комбинациями в этом коде. • Если, например, в коде есть хотя бы одна пара
комбинаций, которые отличаются друг от друга
только в одной позиции, то минимальное
расстояние этого кода = 1. Так, для простого
кода из первого примера = 1, а для
корректирующего кода из второго примера
= 2. Рассмотрим некоторые корректирующие коды.

Код с проверкой на четность
• Простейший корректирующий код – код с проверкой на четность,
который образуется добавлением к группе информационных
разрядов одного избыточного, значение которого выбирается таким
образом, чтобы сумма единиц в кодовой комбинации, т. вес
кодовой комбинации, была всегда четна. • Пример. Рассмотрим код с проверкой на четность, образованный
добавлением контрольного разряда к простому коду из примера. Информационные
Контрольный
разряды
разряд

000

1
001
1
2
010
1
3
011

4
100
1
5
101

6
110

Код с проверкой на четность
• Таким образом, если в простом коде число 4 имеет
изображение 100, то в коде с проверкой на четность оно
будет изображаться комбинацией 1001. • Минимальное кодовое расстояние кода с проверкой на
четность = 2. Такой код обнаруживает все одиночные
ошибки и групповые ошибки нечетной кратности, так как
четность количества единиц в этом случае будет также
нарушаться. • Следует отметить, что при кодировании целесообразно
число единиц в кодовой комбинации делать нечетным и
проводить контроль на нечетность, в этом случае любая
комбинация, в том числе и изображающая нуль, будет
иметь хотя бы одну единицу, что дает возможность отличить
полное отсутствие информации от передачи нуля.

Читайте также:  Отказ датчика температуры всасываемого воздуха в двигатель

Код Хэмминга
• Код Хэмминга представляет собой систематический
код, имеющий большую относительную избыточность,
нежели код с проверкой на четность и предназначен
либо для исправления одиночных ошибок (при = 3),
либо для иcправления одиночных и обнаружения без
исправления двойных ошибок (при = 4). • N – значный код Хэмминга, имеет m информационных
разрядов и k – контрольных. • Число контрольных разрядов должно удовлетворять
соотношению k >= log 2 (n +1),
Откуда
m <= n – log 2 (n + 1)

Код Хэмминга
• Код Хэмминга строится таким образом, что к
имеющимся информационным разрядам кодовой
комбинации добавляется вычисленное по
вышеприведенной формуле количество контрольных
разрядов, которые формируются путем подсчета
четности суммы единиц для определенных групп
информационных разрядов. • При приеме такой кодовой комбинации из полученных
информационных и контрольных разрядов путем
аналогичных подсчетов четности составляют
корректирующее число, которое равно нулю, при
отсутствии ошибки, либо указывает номер ошибочного
разряда.

• Принят код: 111100 исправлено 110100 – ошибка по
корректирующему числу в разряде 4;
111010 исправлено 101010 – ошибка по
корректирующему числу в разряде 5;
100000 исправлено 000000 – ошибка по
корректирующему числу в разряде 6
Цифра

1
2
3
4
5
6
7
Простой код
000
001
010
011
100
101
110
111
Код Хэмминга
6 5 4 3 2 1
0 0 0 0 0 0
0 0 0 1 1 1
0 1 1 0 0 1
0 1 1 1 1 0
1 0 1 0 1 0
1 0 1 1 0 1
1 1 0 0 1 1
1 1 0 1 0 0

К существующим k контрольным разрядам может еще
добавляться (k+1)-й разряд, обеспечивающий
дополнительный контроль по четности всей кодовой
комбинации. При проверке информации после ее приема возможны три
случая:
• отсутствие ошибок – корректирующее число равно 0, общая
четность суммы единиц кодовой комбинации правильна;
• одиночная ошибка – контроль общей четности кодовой
комбинации обнаруживает ошибку, корректирующее число
указывает номер искаженного разряда (если
корректирующее число равно нулю, то ошибка произошла в
разряде общей четности);
• двойная ошибка – корректирующее число не равно нулю,
контроль общей четности кодовой комбинации не
обнаруживает ошибки.

• Код Хэмминга – это алгоритм, который позволяет
закодировать какое-либо информационное
сообщение определённым образом и после
передачи (например по сети) определить
появилась ли какая-то ошибка в этом сообщении
(к примеру из-за помех) и, при возможности,
восстановить это сообщение. • Таким образом, код Хэмминга самоконтролирующийся и
самокорректирующийся код. Построен он
применительно к двоичной системе счисления.

• Рассмотрим самый простой алгоритм Хемминга,
который может исправлять лишь одну ошибку. • Существуют модификации данного алгоритма,
позволяющие обнаруживать (и если возможно
исправлять) большее количество ошибок. • Код Хэмминга состоит из двух частей. • Первая часть кодирует исходное сообщение, вставляя
в него в определённых местах контрольные биты
(вычисленные особым образом). • Вторая часть получает входящее сообщение и заново
вычисляет контрольные биты (по тому же алгоритму,
что и первая часть). Если все вновь вычисленные
контрольные биты совпадают с полученными, то
сообщение получено без ошибок. Иначе делается
вывод о наличии ошибки и при возможности ошибка

Логика алгоритма
• Допустим, есть сообщение из двух символов: «ha»,
которое необходимо передать без ошибок. Чтобы
сообщение закодировать при помощи Кода Хэмминга,
сначала необходимо представить его в бинарном виде. • Надо определиться с длиной информационного слова, то
есть длиной строки из нулей и единиц, которая будет
кодироваться. Допустим, длина слова будет равна 16. • Таким образом, любое исходное сообщение необходимо
разделить на блоки по 16 бит, которые будут потом
кодироваться отдельно друг от друга. • Т. один символ занимает 8 бит, то в кодируемое слово
помещается два ASCII символа. В рассматриваемом
случае получили один бинарный блок 16 бит: «ha».

• Необходимо вставить контрольные биты. Они
вставляются в строго определённых местах — это
позиции с номерами, равными степеням двойки. • В нашем случае (при длине информационного
слова в 16 бит) это будут позиции 1, 2, 4, 8, 16. Соответственно, получилось 5 контрольных бит
(выделены красным цветом):
• Таким образом, длина всего сообщения
увеличилась на 5 бит. До вычисления самих
контрольных бит им присваивается значение «0».

Вычисление контрольных бит. • Значение каждого контрольного бита зависит от
значений информационных бит, но не от всех, а
только от тех, которые этот контрольных бит
контролирует. • Для того, чтобы понять, за какие биты отвечает
каждых контрольный бит, необходимо понять
простую закономерность: контрольный бит с
номером N контролирует все последующие N
бит через каждые N бит, начиная с позиции N.

• Здесь знаком «X» обозначены те биты, которые
контролирует контрольный бит, номер которого
справа. • То есть, к примеру, бит номер 12 контролируется
битами с номерами 4 и 8. • Чтобы узнать какими битами контролируется бит
с номером N надо разложить N по степеням
двойки.

• Как же вычислить значение каждого
контрольного бита?
• Делается это просто: берут каждый контрольный
бит и смотрят, сколько среди контролируемых
им битов единиц, получают некоторое целое
число и, если оно чётное, то ставят ноль, в
противном случае ставят единицу.

Декодирование и исправление ошибок. • Теперь, допустим, закодированное сообщение пришло с
ошибкой. Пусть 11-ый бит передался неправильно:
• Алгоритм декодирования заключается в том, что
необходимо заново вычислить все контрольные биты (так
же как при кодировании) и сравнить их с контрольными
битами, которые были получены. Посчитав контрольные
биты с неправильным 11-ым битом, получаем :
• Контрольные биты под номерами: 1, 2, 8 не совпадают с
такими же контрольными битами, которые были
получены. Теперь, сложив номера позиций неправильных
контрольных бит (1 + 2 + 8 = 11), получаем позицию
ошибочного бита. Инвертировав его и отбросив
контрольные биты, получаем исходное сообщение в
первозданном виде!

Параметры кода Хэмминга
• Параметры кода указываются так: (7, 4). Это означает, что
длина кодового слова равна 7 битам, а длина сообщения
– 4 бита. • В зависимости от количества информационных и
проверочных разрядов в кодовых словах существуют коды
Хэмминга (7,4), (9,5), (11, 7), (15, 11), (31, 26), (63, 57) и т. • Общий вид формулы, по которой определяются виды
кодов Хэмминга по соотношению числа информационных
символов к проверочным: (2x − 1, 2x − x − 1), где x –
натуральное число. • При декодировании есть вероятность, что исходное
сообщение нельзя будет восстановить, в случае
превышения числом ошибок корректирующей
способности кода. • Однако помехоустойчивость закодированной
информации всё равно выше, чем у незакодированной.

• Требуется написать кодировщик, который будет
получать на вход 11 бит данных, кодировать их и
возвращать 15 бит выходной информации. параметр кода Хэмминга (15, 11). Возвращает кодер 16 бит (кодовое слово):
• кодовое слово дополняется одним битом слева,
чтобы длина была равна степени двойки. Сейчас
этот бит никак не используется. Можно его
использовать как бит чётности и получить так
называемый дополненный код Хэмминга.

Dim preDataIn As New BitArray(11)
For i As Integer = 0 To 10
If (b. Count > i) Then preDataIn(i) = b(i)
Else Exit For
End If
Next
Dim dataIn As New BitArray(preDataIn)
‘процесс кодирования – сложение по модулю 2 бит информационного слова. Dim codeWord As New BitArray(16)
‘Младший разряд не используется. codeWord(0) = False
‘Вычисление первого проверочного символа:
codeWord(1) = dataIn(0) Xor dataIn(1) Xor dataIn(3) Xor dataIn(4) Xor
dataIn(6) Xor dataIn(8) Xor dataIn(10)
‘Вычисление второго проверочного символа:
codeWord(2) = dataIn(0) Xor dataIn(2) Xor dataIn(3) Xor dataIn(5) Xor
dataIn(6) Xor dataIn(9) Xor dataIn(10)

‘Вычисление третьего проверочного символа:
codeWord(4) = dataIn(1) Xor dataIn(2) Xor dataIn(3) Xor dataIn(7) Xor dataIn(8)
Xor dataIn(9) Xor dataIn(10)
‘Вычисление четвертого проверочного символа:
codeWord(8) = dataIn(4) Xor dataIn(5) Xor dataIn(6) Xor dataIn(7) Xor dataIn(8)
Xor dataIn(9) Xor dataIn(10)
‘Информационные символы:
codeWord(3) = dataIn(0)
codeWord(5) = dataIn(1)
codeWord(6) = dataIn(2)
codeWord(7) = dataIn(3)
codeWord(9) = dataIn(4)
codeWord(10) = dataIn(5)
codeWord(11) = dataIn(6)
codeWord(12) = dataIn(7)
codeWord(13) = dataIn(8)
codeWord(14) = dataIn(9)
codeWord(15) = dataIn(10)
Return codeWord

Dim codeWord As New BitArray(b) ’16 бит входных данных
‘ Процесс декодирования – это сложение по модулю 2 бит
информационного слова, по весу полученных единиц в результате –
получение позиции ошибки. Dim syndrome As New BitArray(4)
‘Вычисление первого проверочного символа из полученного кодового
слова и далее сравнение его с полученным. syndrome(0) = codeWord(3) Xor codeWord(5) Xor codeWord(7)
Xor codeWord(9) Xor codeWord(11) Xor codeWord(13) Xor
codeWord(15) Xor codeWord(1)
‘Вычисление второго проверочного символа из полученного кодового
слова и далее сравнение его с полученным. syndrome(1) = codeWord(3) Xor codeWord(6) Xor codeWord(7)
Xor codeWord(10) Xor codeWord(11) Xor codeWord(14) Xor
codeWord(15) Xor codeWord(2)
‘Вычисление третьего проверочного символа из полученного кодового
слова и далее сравнение его с полученным. syndrome(2) = codeWord(5) Xor codeWord(6) Xor codeWord(7)
Xor codeWord(12) Xor codeWord(13) Xor codeWord(14) Xor
codeWord(15) Xor codeWord(4)

‘Результат декодирования с учетом коррекции (11 бит выходных данных):
Dim outData As New BitArray(11)
outData(0) = codeWord(3) Xor correction(0)
outData(1) = codeWord(5) Xor correction(1)
outData(2) = codeWord(6) Xor correction(2)
outData(3) = codeWord(7) Xor correction(3)
outData(4) = codeWord(9) Xor correction(4)
outData(5) = codeWord(10) Xor correction(5)
outData(6) = codeWord(11) Xor correction(6)
outData(7) = codeWord(12) Xor correction(7)
outData(8) = codeWord(13) Xor correction(8)
outData(9) = codeWord(14) Xor correction(9)
outData(10) = codeWord(15) Xor correction(10)
Dim masks(31) As Integer
masks(0) = BitVector32. CreateMask()
For i As Integer = 1 To 31
masks(i) = BitVector32. CreateMask(masks(i – 1))
Next
Dim v As New BitVector32
For i As Integer = 0 To 10
v(masks(i)) = outData(i)
Next
Dim decoded As Integer = v. Data
Return decoded

Консольная программа, кодирующая и
декодирующая код (15, 11)
• Для проверки кодировщика и декодировщика
кода Хэмминга (15, 11), используя
вышеописанные функции, надо написать
консольную программу, можно использовать
любую среду разработки (Delphi, Visual Studio). Вводится 11-разрядное число (от 0 до 0x7FF или
2047), и на выходе получаем 16-разрядное
число, представленное в виде двух байтов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *