Авторизация


...

Кто на сайте?

Сейчас 125 гостей и 2 зарегистрированных пользователей на сайте

  • inmiernikwesto

Статистика

-Посетители : 23739
-Материалы : 209

Пользователь сайта продает...

  PIC18F25K22

Пользователь сайта покупает...

Помехоустойчивое кодирование на примере кода Хэмминга

Автор: Иван Шевченко (R1ZK) Просмотров: 2883

 

Обычно код Хэмминга характеризуется двумя целыми числами, например, (11,7) используемый при передаче 7-битных ASCII-кодов. Такая запись говорит о том, что при передаче 7-битного кода используется 4 контрольных бита (7+4=11). При этом предполагается, что имела место ошибка в одном бите и что ошибка в двух или более битах существенно менее вероятна. С учетом этого исправление ошибки осуществляется с определенной вероятностью. Я буду привязываться не к семи, а к восьми битам полезной информации. В этом случае 4-х бит на контрольную сумму достаточно с лихвой, т.к. с помощью четырёх бит можно адресоваться к 16 бит, а в приведенном ниже примере применяется только 12 (8+4=12).

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

Попытаюсь объяснить суть кодирования… Четыре контрольных бита представляют собой контрольную сумму ненулевых битов кодируемого числа и должны занимать в байте позиции, определяемые целой степенью 2 (8, 4, 2, 1). К примеру: в байте 8ххх4х21 цифрами указаны эти позиции. Для преобразования необходимо старший полубайт числа перенести в младший полубайт дополнительного регистра, т.к. позиции 3, 5-7 займёт младший полубайт числа, а позиции 8, 4, 2, 1 займут биты контрольной суммы. Если при приёме один какой-либо бит был принят неправильно, то в контрольной сумме ненулевых битов будет номер позиции бита ошибки, который необходимо проинвертировать. Если ошибка произойдет при передаче более чем одного бита, код Хэмминга при данной избыточности окажется бесполезен.

 

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

Все вопросы на форум.

Случайные статьи....

Prev Next

Сетевой вольтметр в разветвителе

08-07-2012 wws63

Сетевой вольтметр в разветвителе

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

Преобразование однобайтного двоичного числа в трёхзначное десятичное ч…

23-07-2011 Николай Викторов

Преобразование однобайтного двоичного числа в трёхзначное десятичное число в «пиках» 18 серии

  Была необходимость применить подпрограмму «Преобразование однобайтного двоичного числа в трёхзначное десятичное число» в «пиках» 18 серии. Для этого пришлось подправить код. Дело в том , что команда «incf» в пиках 16 серии увеличивает значение регистра f на 1 и...

Настенные часы – термометр с большими индикаторами

12-02-2016 wws63

Настенные часы – термометр с большими индикаторами

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

Блок управления печи с увлажнением

06-04-2011 Александр Милевский

Блок управления печи с увлажнением

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


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru