Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_chast2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
422.91 Кб
Скачать

2.3.6. Код Хемминга

Рассмотрим код Хемминга, исправляющий одиночные ошибки.

Код Хемминга, как и любой код содержит комбинацию m информационных и = n-m избыточных символов. Избыточная часть кода строится так, чтобы при декодировании можно было установить не только наличие ошибки, но и ее положение. Это достигается путем многократной проверки принятой комбинации на четность, количество проверок равно значению избыточных символов . При каждой проверке охватывается часть информационных символов и один из избыточных, при этом получают один контрольный символ. Если результат проверки дает четное число, то контрольному символу присваивается значение 0, если нечетное - 1. В результате всех проверок получается - разрядное двоичное число, указывающее номер искаженного символа. Для исправления ошибки значение этого символа (бита) изменяется на обратное.

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

2m  2n/(1+ n). (2.7)

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

Таблица 2.4

№ п./п.

Символы разрядов контрольного

числа

4

(ст)

3

2

1

(мл)

0

1

2

3

4

5

6

7

8

9

10

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

0

1

1

0

0

1

1

0

0

1

0

1

0

1

0

1

0

1

0

1

0

Как видно из таблицы 2.4, если младший разряд контрольного числа содержит 1, то искажение должно быть в одной из нечетных позиций кодовой комбинации. Следовательно, первой проверкой должны быть охвачены символы с нечетными номерами. Если результат второй проверки даст 1, то получим 1 во втором разряде контрольного числа. Следовательно, второй проверкой должны быть охвачены символы с номерами, содержащими 1 во втором разряде двоичной записи этого номера: 2, 3, 6, 7, 10 и т.д. Аналогично при третьей проверке проверяться символы, номера которых в двоичной записи содержат 1 в третьем разряде: 4, 5, 6, 7, 12 и т.д.

Такие рассуждения позволяют образовать таблицу 2.5 проведения проверок.

Таблица 2.5

№ проверки

номера проверяемых позиций

номера позиций

контрольных символов

1

2

3

4

1,3,5,7,9,11,13...

2,3,6,7,10...

4,5,6,7,12...

8,9,10,11,12...

1

2

4

8

Если символы проверяемой кодовой комбинации обозначить через ai, то проверочные суммы Si можно записать следующим образом:

S1 = а1 Å а3 Å а5 Å а7 Å а9 Å .....

S2 = а2 Å а3 Å а6 Å а7 Å а10 Å .....

S3 = а4 Å а5 Å а6 Å а7 Å а12 Å .....

S4 = а8 Å а9 Å а10 Å а11 Å а12 Å .....

Номер позиции символа, в котором произошла ошибка в процессе приема-передачи комбинации, определяется следующим двоичным числом: N2=....Si....S4 S3 S2 S1.

С целью упрощения операций кодирования и декодирования целесообразно выбирать такое размещение проверочных символов в кодовой комбинации, при котором каждый из них включается в минимальное число проверяемых групп (лучше в одну группу). Нетрудно отметить из таблицы 2.4, что символы 1, 2, 4, 8......2n встречаются в каждой группе только один раз. Это связано с тем, что они являются степенью числа 2 и их двоичный код в таблице 4 содержит только одну единицу. Эти символы стоят на первом месте в правой части выражений для Si. Таким образом, в коде Хемминга символы а1, а2, а4, а8.... должны быть проверочными, а символы а3, а5, а7, а9.... - информационными.

При передаче значения проверочных символов устанавливаются в кодовой комбинации такими, чтобы суммы Si равнялись нулю (т.е. были бы четными числами), т.е. значения проверочных символов а1, а2, а4.... выбираются из условия равенства Si нулю.

Представим в качестве примера в коде Хемминга двоичную комбинацию 10010. Для нее число информационных символов m=5, при этом максимальное число передаваемых кодов равно 32. Разрядность кода Хемминга для m=5 должна быть равной 9 (n=9). Для девятиразрядного кода символы а1, а2, а4 и а8 являются проверочными, а символы а3, а5, а6, а7 и а9 - информационными. Для заданного кода а3=0, а5=1, а6=0, а7=0 и а9=1, тогда:

S1 = а1 Å 0 Å 1 Å 0 Å 1 = а1 Å 0=0, откуда следует, что а1=0;

S2 = а2 Å 0 Å 0 Å 0 = а2 Å 0=0, т.е. а2 =0;

S3 = а4 Å 1 Å 0 Å 0 = а4 Å 1=0, т.е. а4 = 1.

Аналогично: а8 = 1.

Следовательно, код Хемминга для кода 10010 будет равен 110011000.

Если при приеме-передаче произошла однократная ошибка в пятом символе, т.е. код при приеме принял значение 110001000, то в результате первой проверки будет получено число 1, в результате второй - 0, третьей - 1 и четвертой - 0. Таким образом, в результате проверок будет получено контрольное число 0101, указывающее на искажение пятого символа, принятой кодовой комбинации.

Если произойдет однократная ошибка приема-передачи первого символа кодовой комбинации, то сумма S1 будет равна 1, а остальные суммы будут равны 0. Полученное контрольное число N будет равно 0001, что указывает на искажение первого символа принятого кода. Аналогичные контрольные числа будут получены при искажениях 2-го, 3-го и т.д. символов кода. Отметим, что для исправления ошибки принятой кодовой комбинации необходимо лишь изменить значение искаженного символа на противоположное.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]