Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эксплуатация СВТ / Мет_указ1.doc
Скачиваний:
36
Добавлен:
02.06.2015
Размер:
574.46 Кб
Скачать

31

Построение памяти повышенной надежности Корректирующие коды

В ряде ЭВМ повышенной надежности в ОП, ВЗУ, при передаче информации по каналам связи в сетях ЭВМ применяют корректирующие коды, позволяющие не только обнаруживать, но и автоматически исправлять ошибки. К таким кодам относятся:

  • код Хэмминга;

  • групповые коды;

  • циклические коды и др.

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

Разрядность контрольного кода определяется из соотношения

2r  n + 1 или 2r - r - 1  k,

где k - число разрядов информационного слова;

r - число дополнительных контрольных разрядов;

n = r + k - передаваемое кодовое число.

Следовательно, если r=5, то можно контролировать от 11 до 26 информационных разрядов, а при r=6 от 27 до 57 разрядов.

Для образования контрольного кода Хэмминга (КХ) используется проверочная матрица Н размерности r x n, где r - число контрольных бит; n = k + r, где k - разрядность информационного слова; n - длина кодового слова, записываемого в память.

Рассмотрим одну из методик формирования модифицированного кода Хэмминга.

Данный код является избыточным и разделимым.

Матрица Н кода КО-ОД должна удовлетворять следующим условиям:

1) векторы-столбцы матрицы Н не должны быть нулевыми и должны отличаться друг от друга;

2) сумма двух векторов-столбцов матрицы Н не должна равняться нулю или любому третьему вектору-столбцу матрицы Н.

Рассмотрим процесс формирования контрольного кода и синдрома ошибок на примере 5-разрядного информационного слова. Для контрольного кода потребуется четыре дополнительных разряда (2r - r - 1  n) и один дополнительный бит для определения двойной ошибки:

d4 d3 d2 d1 d0 - информационное слово;

с4 c3 с2 с1 c0 - номер бита кода Хэмминга;

СТ С3 С2 С1 С0 - контрольный код Хэмминга, где бит СТ необходим для обнаружения двойной ошибки.

В соответствии со сформулированными требованиями разработаем проверочную матрицу для данного примера.

Исходной является вспомогательная матрица Но, состоящая из возрастающих двоичных чисел (начиная с единицы) и читаемых сверху вниз (табл. 1.1).

Таблица 1.1. Исходная матрица Но Таблица 1.2. Этап 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

…………

…………

…………

…………

………….

0 0 0 0 1

0 0 0 1 0

0 0 1 0 0

0 1 0 0 0

1 0 0 0 0

На основании матрицы Но строится матрица Н в два этапа:

  • на первом этапе путем перестановки столбцов матрицы Но так, чтобы в подматрице справа образовалась единичная подматрица размерностью r x r (табл. 1.2);

  • на втором этапе из оставшихся столбцов вычеркиваются те, которые не удовлетворяют требованию 2 для формирования проверочной матрицы Н (табл. 1.3).

Для определения контрольного кода Хэмминга (КХ) для данной проверочной матрицы составим булевы выражения для формирования бит кода Хэмминга С0, С1, С2, С3 и СТ (система выражений 1).

d4 d3 d2 d1 d0

c4 c3 c2 c1 c0

A A A

B B B

C C C

D D D

F F F F F

1

1

1

1

1

В табл. 2 приведены примеры внесения одиночных и двойных ошибок в разряды считанного информационного слова или кода Хэмминга СT-С0 (отмечено звездочкой и выделением жирным шрифтом). Синдром ошибки ST-S0 может быть получен сложением по модулю 2 считанного из ОЗУ контрольного кода и вновь полученного контрольного кода от считанного информационного слова:

ST-S0 = (CT-C0)считанный  (СT-С0)полученный.

Существует несколько алгоритмов для нахождения вектора ошибок Е по синдрому ошибки с определением двойной ошибки или с выделением всех ошибок, кроме одиночных, в группу неисправимых ошибок. В табл. 3 приведен алгоритм определения типа ошибки по синдрому ошибки.

Таблица 2. Примеры коррекции ошибок по синдрому

Исходное число

d4 d3 d2 d1 d0

1 0 1 1 1

Код Хэмминга

СТ С3 С2 С1 С0

1 0 0 1 1

Синдром ошибки

ST S3 S2 S1 S0

Местоположение

и тип ошибки

(вектор ошибки)

1 0 1 0* 1

1 0 1 1 0*

1 1* 1 1 1

0* 0 1 1 1

1 0 1 1 1

1 0 1 1 1

1 0 1 1 1

1 0 1 0* 0*

0 1 0 1 0

0 1 1 1 1

0 0 0 0 0

0 1 1 0 0

0* 0 0 1 1

1 0 0 0* 1

1 1* 0 1 1

1 0 1 1 0

1 1 0 0 1

1 1 1 0 0

1 0 0 1 1

1 1 1 1 1

1 0 0 0 0

0 0 0 1 0

0 1 0 0 0

0 0 1 0 1

d1 00010 . 00000

d0 00001 . 00000

d3 01000 . 00000

d4 10000 . 00000

CT 00000 . 10000

C1 00000 . 00010

C3 00000 . 01000

Двойная ошибка

Таблица 3. Типы ошибок по синдрому

ST

Биты S3-S0

Тип ошибки

0

Все нули

Нет ошибки

1

Все нули

Ошибка бита CT

1

Один бит или

более равен 1

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

0

Один бит равен 1

Ошибка бита С3-С0

0

Более одного бита равны 1

Двойная ошибка

Другой алгоритм для обнаружения и исправления одиночной ошибки в информационном слове и в битах контрольного кода Хэмминга без выделения двойной ошибки (без бита СТ) можно представить в следующем виде:

1) проверяется условие S3-S0 = S = 0. Если S=0, то считанное слово безошибочное;

2) если S  0, необходимо найти соответствие между синдромом ошибки и столбцом матрицы Н. Поиск выполняется с помощью дешифратора или ПЗУ;

3) если S совпадает с i-м столбцом матрицы Н, то это значит, что i-й бит кодового слова содержит ошибку и должен быть исправлен путем его инвертирования;

4) если S не совпадает ни с одним из столбцов матрицы Н, то ошибка неисправима (двойная или большей кратности).

Например, если считано слово:

Слово Код Хэмминга Синдром ошибки

1 0 1 0*1 1 0 1 0 1 0 0 1

т.е. вектор ошибки Е=00010 . 0000 и синдром ошибки S=1001 совпадает с первым столбцом матрицы Н, то это свидетельствует об ошибке в этой позиции кодового слова (бит d1).

Соседние файлы в папке Эксплуатация СВТ