Кодирование по Хэммингу

Код Хэмминга

Совершенные коды

Известно всего два совершенных кода. Это код Хэмминга и код Голея (12, 24), исправляющий 8 ошибок на блок. Более точно, код Хэмминга — это группа совершенных кодов с dmin = 3.

Коды Хемминга —линейные коды с минимальным расстоянием 3, то есть способные исправить одну ошибку на блок.

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

Исходными данными для кодирования является произвольная двоичная последовательность, например как это изображено на рис. 16

Исходная битовая последовательность

№ бита                                           n
значение бита                                              

Рис. 16.

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

n = 2r ‑ r - 1,

где r – любое целое число, большее 2. Эти блоки будем называть «блоки исходного кода» и обозначать ai.

Положим для определенности r = 4, тогда n = 11. Блоки исходного кода изображены на рис. 17.

Разделение битовой последовательности на блоки исходного кода

Рис. 17.

Далее исходные коды расширяют до m бит каждый, дополняя r контрольными битами. Полученные m-битные коды образуются так:

· Позиции с номерами 2i (i = 1, 2, …r) резервируются под контрольные биты;

· в остальные биты копируется исходный код в порядке следования его битов.

Расширенные блоки будем называть «блок кода» и обозначать bi. Расширение исходного кода для r = 4 и n = 15 продемонстрировано на рис. 18.

Расширение блоков исходного кода контрольными разрядами

Расширенные блоки
№ бита расш. кода № бита исх. кода Блоки
b1 b2 bn
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           

Рис. 18

Затем вычисляют контрольные разряды. Для вычисления нужна вспомогательная матрица M размером (2r – 1) строк и r столбцов. Матрица заполняется по строкам, в каждую строку записывают двоичное представление чисел от 1 до 2r – 1, младшие биты пишут ПЕРВЫМИ. Такая матрица для r = 4 показана на рис. 19. Далее вычисляются контрольные разряды ci, для этого из матрицы M выбираются и побитно суммируются все строки, номера которых совпадают с номерами ненулевых бит блока кода bi. Полученная строка из r битов записывается в контрольные разряды блока кода bi в порядке следования битов, как показано на рис.19.

Вычисление контрольных разрядов ci можно представить матричным умножением

ci = (bi)T×M,

здесь (bi)T — строка-блок расширенного кода, где контрольные биты равны 0.

Блоки кода можно вновь преобразовать в последовательность бит и передавать по каналу связи.

Код Хемминга способен детектировать и исправлять 1 (одну) ошибку на блок.

Вычисление контрольных разрядов

Рис. 19.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: