Авторизация


...

Кто на сайте?

Сейчас 84 гостей и один зарегистрированный пользователь на сайте

  • sundbarr

Статистика

-Посетители : 25302
-Материалы : 210

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

  Стенд для освоения программирования МК AVR

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

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

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

 

Обычно код Хэмминга характеризуется двумя целыми числами, например, (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

Программирование c нуля в AVRStudio 5 (ч.4)

26-02-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.4)

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

Эмулятор коммутатора DS2413.

18-06-2012 Sergey Roslik

Эмулятор коммутатора DS2413.

    DS2413 - двухканальный адресуемый 1-Wire коммутатор. Выходы программируемого порта ввода-вывода представляют собой выходы с открытым стоком, имеют нагрузочную способность 20 мА и максимально допустимое приложенное напряжение 28 В. Управление и считывание состояний порта ввода-вывода осуществляется по определенному командному...

Переделка оптического звукового выхода в коаксиальный

04-09-2014 Николай Викторов

Переделка оптического звукового выхода в коаксиальный

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

Flash память программ МК PIC18XXXX

13-05-2011 Super User

Все микроконтроллеры семейства  PIC18XXXX  имеют встроенную  энергонезависимую Flash память программ, доступную для чтения, записи и стирания. В отличии от  EEPROM памяти данных, память программ побайтно можно только считать. Запись можно производить только блочно, по 8 байт т.е. записывать нужно не...


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

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