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

Вычисление контрольных битов для кода (7,4)

ПОЗИЦИЯ КОДА

КОНТРОЛЬНЫЕ БИТЫ

С3

С2

С1

3 бит (М1)

0

1

1

5 бит (М2)

1

0

1

6 бит (М3)

1

1

0

7 бит (М4)

1

1

1

СУММИРУЕМЫЕ ПО МОДУЛЮ 2 БИТЫ

М2

М3

М4

М1

М3

М4

М1

М2

М4

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

С1=М1М2М4;

С2=М1М3М4;

С3=М2М3М4.

Приемник проверяет правильность принятого кода, вычисляя следующие выражения:

С11=С1М1М2М4;

С12=С2М1М3М4;

С13=С3М2М3М4.

Построим код Хэмминга для передачи семибитового кода.

Условие 1. Это условие будет выполняться при N=11:

Таким образом, для семи информационных битов (М=7), требуются четыре контрольных бита (С=4).

Условие 2. Определяем местоположение информационных и контрольных битов в коде.

Положение информационных и контрольных битов

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

Номер позиции кода

11

10

9

8

7

6

5

4

3

2

1

Условие 3. Определяем логические выражения для вычисления контрольных битов. Для этого построим таблицу.

Таблица 2

Вычисление контрольных битов для кода (11,4)

ПОЗИЦИЯ КОДА

КОНТРОЛЬНЫЕ БИТЫ

С4

С3

С2

С1

3 бит (М1)

0

0

1

1

5 бит (М2)

0

1

0

1

6 бит (М3)

0

1

1

0

7 бит (М4)

0

1

1

1

9 бит (М5)

1

0

0

1

10 бит (М6)

1

0

1

0

11 бит (М7)

1

0

1

1

СУММИРУЕМЫЕ ПО МОДУЛЮ 2 БИТЫ

М5

М6

М7

М2

М3

М4

М1

М3

М4

М6

М7

М1

М2

М4

М5

М7

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

С1=М1М2М4М5М7;

С2=М1М3М4М6М7;

С3=М2М3М4;

С4=М5М6М7.

Приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4М5М7;

С12=С2М1М3М4М6М7;

С13=С3М2М3М4;

С14=С4М5М6М7.

Рассмотрим примеры передачи информации с использованием кода Хэмминга для случаев, когда ошибки при передаче нет, и когда есть.

Начнем с кода (7,4).

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

Передатчик формирует код Хэмминга:

M4

M3

M2

C3

M1

C2

C1

1

1

0

*

1

*

*

С1=М1М2М4=1⊕0⊕1=0;

С2=М1М3М4=1⊕1⊕1=1;

С3=М2М3М4=0⊕1⊕1=0,

тогда код, передаваемый в канал, будет:

M4

M3

M2

C3

M1

C2

C1

1

1

0

0

1

1

0

Рассмотрим случай, когда не было ошибки при передаче кода.

Тогда точно такой же код принял приемник. Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4=0⊕1⊕0⊕1=0;

С12=С2М1М3М4=1⊕1⊕1⊕1=0;

С13=С3М2М3М4=0⊕0⊕1⊕1=0.

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

Рассмотрим случай, когда была ошибка при передаче кода.

Пусть ошибка произошла в третьем бите, т.е. принят код:

M4

4

M3

3

M2

2

C3

3

M1

1

C2

2

C1

1

1

1

0

0

0

1

0

Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4=0⊕0⊕0⊕1=1;

С12=С2М1М3М4=1⊕0⊕1⊕1=1;

С13=С3М2М3М4=0⊕0⊕1⊕1=0.

Поскольку, значение, составленное из контрольных разрядов, равно 0112, ошибка в бите № 3. Приемник меняет значение этого бита на противоположное.

Теперь рассмотрим код (11,7).

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

Передатчик формирует код Хэмминга:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

1

1

0

*

1

0

1

*

0

*

*

С1=М1М2М4М5М7=0⊕1⊕1⊕0⊕1=1;

С2=М1М3М4М6М7=0⊕0⊕1⊕1⊕1=1;

С3=М2М3М4=1⊕0⊕1=0;

С4=М5М6М7=0⊕1⊕1=0,

тогда код, передаваемый в канал, будет:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

1

1

0

0

1

0

1

0

0

1

1

Рассмотрим случай, когда не было ошибки при передаче кода.

Тогда точно такой же код принял приемник. Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4М5М7=1⊕0⊕1⊕1⊕0⊕1=0;

С12=С2М1М3М4М6М7=1⊕0⊕0⊕1⊕1⊕1=0;

С13=С3М2М3М4=0⊕1⊕0⊕1=0;

С14=С4М5М6М7=0⊕0⊕1⊕1=0.

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

Рассмотрим случай, когда была ошибка при передаче кода.

Пусть ошибка произошла во втором бите, т.е. принят код:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

1

1

0

0

1

0

1

0

0

0

1

Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4М5М7=1⊕0⊕1⊕1⊕0⊕1=0;

С12=С2М1М3М4М6М7=0⊕0⊕0⊕1⊕1⊕1=1;

С13=С3М2М3М4=0⊕1⊕0⊕1=0;

С14=С4М5М6М7=0⊕0⊕1⊕1=0.

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

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

E10=Е0⊕<сложенные по модулю 2 все остальные биты принятого кода>.

Если E10=0, то ошибок нет. Если значение, полученное из контрольных разрядов, не равно 0 и E10=1, то имеет место одиночная ошибка, позиция которой определяется значением контрольных разрядов. Если значение С≠0 и E10=0 , то имеет место двойная ошибка.

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

Для кода (11,7) формат блока информации:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

Е0

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

Передатчик формирует код Хэмминга:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

Е0

1

1

0

*

1

0

1

*

0

*

*

*

С1=М1М2М4М5М7=0⊕1⊕1⊕0⊕1=1;

С2=М1М3М4М6М7=0⊕0⊕1⊕1⊕1=1;

С3=М2М3М4=1⊕0⊕1=0;

С4=М5М6М7=0⊕1⊕1=0,

Е0=С1С2М1С3М2М3М4С4М5М6М7=1⊕1⊕0⊕0⊕1⊕0⊕⊕1⊕0⊕0⊕1⊕1=0,

тогда код, передаваемый в канал, будет:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

Е0

1

1

0

0

1

0

1

0

0

1

1

0

Рассмотрим случай, когда не было ошибки при передаче кода.

Тогда точно такой же код принял приемник. Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4М5М7=1⊕0⊕1⊕1⊕0⊕1=0;

С12=С2М1М3М4М6М7=1⊕0⊕0⊕1⊕1⊕1=0;

С13=С3М2М3М4=0⊕1⊕0⊕1=0;

С14=С4М5М6М7=0⊕0⊕1⊕1=0,

Е10= Е0С1С2М1С3М2М3М4С4М5М6М7=

=0⊕1⊕1⊕0⊕0⊕1⊕0⊕1⊕0⊕0⊕1⊕1=0.

Поскольку значение, составленное из контрольных битов, равно 0, и Е10=0, ошибки нет, и код передается от приемника далее.

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

Пусть ошибка произошла во втором бите (не считая Е0, т.е. в С2) и принят код:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

Е0

1

1

0

0

1

0

1

0

0

0

1

0

Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4М5М7=1⊕0⊕1⊕1⊕0⊕1=0;

С12=С2М1М3М4М6М7=0⊕0⊕0⊕1⊕1⊕1=1;

С13=С3М2М3М4=0⊕1⊕0⊕1=0;

С14=С4М5М6М7=0⊕0⊕1⊕1=0,

Е10= Е0С1С2М1С3М2М3М4С4М5М6М7=

=0⊕1⊕0⊕0⊕0⊕1⊕0⊕1⊕0⊕0⊕1⊕1=1.

Поскольку значение Е10=1 и значение, составленное из контрольных разрядов, равно 00102, то ошибка во втором бите. Приемник меняет значение этого бита на противоположное.

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

Пусть ошибка произошла во втором (т.е. в С2) и в пятом битах (т.е. М2) и принят код:

M7

M6

M5

C4

M4

M3

M2

C3

M1

C2

C1

Е0

1

1

0

0

1

0

0

0

0

0

1

0

Теперь приемник проверяет правильность передачи кода, вычисляя следующие выражения:

С11=С1М1М2М4М5М7=1⊕0⊕0⊕1⊕0⊕1=1;

С12=С2М1М3М4М6М7=0⊕0⊕0⊕1⊕1⊕1=1;

С13=С3М2М3М4=0⊕0⊕0⊕1=1;

С14=С4М5М6М7=0⊕0⊕1⊕1=0,

Е10= Е0С1С2М1С3М2М3М4С4М5М6М7=

=0⊕1⊕0⊕0⊕0⊕0⊕0⊕1⊕0⊕0⊕1⊕1=0.

Поскольку значение Е10=0 и значение, составленное из контрольных разрядов, равно 01112≠0, то произошла двойная ошибка. Приемник не передает код далее, а запрашивает от источника повторную передачу этого блока информации.