Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП Кодирование ТЕОРИЯ 2012-весна.doc
Скачиваний:
17
Добавлен:
04.09.2019
Размер:
1.37 Mб
Скачать

4. Двухмерный контроль паритета

Двухмерный контроль паритета позволяет:

  1. Обнаруживать и исправлять одиночные ошибки.

  2. Обнаруживать двойные ошибки.

Способность приемника обнаруживать и исправлять ошибки называют прямым исправлением ошибок (Forward Error Correction, FEC). Двухмерный контроль паритета применяются в устройствах хранения данных. Такие методы При двухмерном контроле вычисляются множественные биты паритета четности.

Кодирование данных и передача по линии связи :

  1. Данное, состоящее из (nm)-разрядов разбивается на n-фрагментов, состоящих из m-разрядов.

Например, данное, состоящее из 16-разрядов, разбивается на 4 фрагмента длиной по 4 разряда (n = 4 фрагмента, m = 4 разряда).

Фрагмент 3

Фрагмент 2

Фрагмент 1

Фрагмент 0

  1. Фрагменты образуют прямоугольную матрицу, содержащую 4 строки и 4 столбца.

J3

J 2

J 1

J 0

I3

I2

I1

I0

где , , , – номера строк; , , , – номера столбцов.

Соответствие прямоугольной матрицы и исходного сообщения приведено в таблице.

Фрагмент 3

(строка I3)

Фрагмент 2

(строка I2)

Фрагмент 1

(строка I1)

Фрагмент 0

(строка I0)

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

  1. Для каждой строки и столбца вычисляются биты паритета четности.

J3

J 2

J 1

J 0

PI

I3

РI3

I2

РI2

I1

РI1

I0

РI0

PJ

РJ3

РJ2

РJ1

РJ0

где РI3, РI2, РI2 , РI0 - паритеты строк; РJ3, РJ2, РJ1, РJ0 - паритеты столбцов.

  1. Для всех битов паритета строк и столбцов вычисляется дополнительный бит паритета паритетов РIJ строк и столбцов паритета .

    J3

    J 2

    J 1

    J 0

    PI

    I3

    РI3

    I2

    РI2

    I1

    РI1

    I0

    РI0

    PJ

    РJ3

    РJ2

    РJ1

    РJ0

    РIJ

  2. Из фрагментов и битов паритета, содержащих (n+1)∙(m+1)-разрядов, образуется сообщение:

РI3 РI2 РI2 РI0 РJ3РJ2РJ1РJ0РIJ.

  1. Передающий узел посылает по линии связи сообщение:

РI3 РI2 РI2 РI0 РJ3РJ2РJ1РJ0РIJ.

.

Прием и проверка данных:

  1. Приемный узел принимает сообщение:

РI3 РI2 РI2 РI0 РJ3РJ2РJ1РJ0РIJ.

  1. Сообщение разбивается на (n + 1) - фрагментов, состоящих из (m + 1) - разрядов:

J3

J 2

J 1

J 0

PI

I3

РI3

I2

РI2

I1

РI1

I0

РI0

PJ

РJ3

РJ2

РJ1

РJ0

РIJ

3. Для каждой строки вычисляются синдромы SI3, SI2, SI1, SI0, SР. Для каждого столбца вычисляются синдромы SJ3, SJ2, SJ1, SJ0, SР

J3

J 2

J 1

J 0

PI

SI

I3

РI3

SI3

I2

РI2

SI2

I1

РI1

SI1

I0

РI0

SI0

PJ

РJ3

РJ2

РJ1

РJ0

РIJ

SРIJ

SJ

SJ3

SJ2

SJ1

SJ0

SРJI

  1. Проверка на наличие ошибок:

- если все синдромы равны нулю, то ошибки нет;

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

Например, если синдромы SI2 = 1 и РJ0 =1, то на пересечении строки I2 и столбца J0 находится испорченный бит D8, который может быть исправлен.

J3

J 2

J 1

J 0

PI

SI

I3

РI3

SI3

I2

РI2

SI2

I1

РI1

SI1

I0

РI0

SI0

PJ

РJ3

РJ2

РJ1

РJ0

РIJ

SРIJ

SJ

SJ3

SJ2

SJ1

SJ0

SРJI

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

Например, если синдромы строк SI2 = 1, SI0 = 1 и столбцов SJ3 = 1, РJ0 =1, то на пересечении строк I2, I0 и столбцов J3, J0 находятся биты , D8, , ,которые не могут быть идентифицированы, а поэтому и исправлены.

J3

J 2

J 1

J 0

PI

SI

I3

РI3

SI3

I2

РI2

SI2

I1

РI1

SI1

I0

РI0

SI0

PJ

РJ3

РJ2

РJ1

РJ0

РIJ

SРIJ

SJ

SJ3

SJ2

SJ1

SJ0

SРJI

Сборка исходного сообщения:

  1. При отсутствии ошибки из принятого сообщения собирается исходное данное .

  2. При наличии одной ошибки:

- собирается исходное сообщение

;

- для синдромов SI3, SI2, SI1, SI0, SJ3, SJ2, SJ1, SJ0 в таблице приведены идентификаторы ошибок:

Синдромы

строк

Идентификатор

ошибки строки

Синдромы

столбцов

Идентификатор

ошибки столбца

SI3

SI2

SI1

SI0

SJ3

SJ2

SJ1

SJ0

8

4

2

1

8

4

2

1

0

0

0

0

Ошибки нет

0

0

0

0

Ошибки нет

0

0

0

1

Ошибка строки 0

0

0

0

1

Ошибка столбца 0

0

0

1

0

Ошибка строки 1

0

0

1

0

Ошибка столбца 1

0

1

0

0

Ошибка строки 2

0

1

0

0

Ошибка столбца 2

1

0

0

0

Ошибка строки 3

1

0

0

0

Ошибка столбца 3

Для синдромов SI3, SI2, SI1, SI0, SJ3, SJ2, SJ1, SJ0 рассчитывается идентификатор ошибки, который является номером N ошибочного бита данного:

N = 4∙KI + KJ = 4∙ log2 (WI) + log2 (WJ),

где WI - вес синдромов строк SI3, SI2, SI1, SI0; WJ - вес синдромов столбцов SJ3, SJ2, SJ1, SJ0.

Например. Рассчитать номер ошибочного бита N для синдрома строк SI3SI2SI1SI0 = 01002 = 410 и синдрома столбцов SJ3SJ2SJ1SJ0 = 00012 = 110:

N = 4∙ log2 (410) + log2 (110) = 4∙ 2 + 0 = 8.

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

Фрагмент 3

(строка I3)

Фрагмент 2

(строка I2)

Фрагмент 1

(строка I1)

Фрагмент 0

(строка I0)

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

J3

J 2

J 1

J 0

J3

J 2

J 1

J 0

J3

J 2

J 1

J 0

J3

J 2

J 1

J 0

Пример. Применить двухмерный контроль паритета для исходного сообщения 0001 0010 0100 1100.

Кодирование данных и передача по линии связи :

  1. Сообщение разбивается на четыре фрагмента, для которых вычисляются паритеты четности

J3

J 2

J 1

J 0

PI

I3

0

0

0

1

1

I2

0

0

1

0

1

I1

0

1

0

0

1

I0

1

1

0

0

0

PJ

1

0

1

1

1

2. Передающий узел собирает из фрагментов сообщение 00011 00101 01001 11000 10111 и посылает его по линии связи.

Прием и проверка данных:

1. Приемный узел принимает сообщение 00011 00101 01001 11000.

2. Сообщение разбивается на фрагменты, для которых рассчитываются синдромы 0001 0010 0100 1100

J3

J 2

J 1

J 0

PI

SI

I3

0

0

0

1

1

0

I2

0

0

1

0

1

0

I1

0

1

0

0

1

0

I0

1

1

0

0

0

0

PJ

1

0

1

1

1

0

SJ

0

0

0

0

0

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

  2. Исходное сообщение равно 0001 0010 0100 1100.

Прием и проверка данных (с одной ошибкой):

1. Приемный узел принимает сообщение 00011 00101 11001 11000.

2. Сообщение разбивается на фрагменты, для которых рассчитываются синдромы

J3

J 2

J 1

J 0

PI

SI

I3

0

0

0

1

1

0

I2

0

0

1

0

1

0

I1

1

1

0

0

1

1

I0

1

1

0

0

0

0

PJ

1

0

1

1

1

0

SJ

1

0

0

0

0

  1. Расчет номера ошибочного бита N для синдрома строк SI3SI2SI1SI0 = 00102 = 210 и синдрома столбцов SJ3SJ2SJ1SJ0 = 10002 = 810:

N = 4∙ log2 (210) + log2 (810) = 4∙ 1 + 3 = 7.

Получаем ошибку в восьмом бите .

  1. Восстановление данного 0001 0010 1100 1100.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

0

0

0

1

0

0

1

0

1

1

0

0

1

1

0

0

  1. Исправление ошибки, выполняется инверсией бита :

0001 0010 100 1100 = 0001 0010 0100 1100.