Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации

 

Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации относится к области телемеханики, автоматики и вычислительной техники и предназначено для повышения отказоустойчивости и достоверности функционирования устройств хранения и передачи информации и при этом позволяет корректировать все одиночные ошибки в отдельных байтах информации и обнаруживать произвольные ошибки в байтах информации. Это достигается рациональным кодированием исходной двоичной информации и введением входного блока кодирования, выходного блока кодирования, блока вычисления синдрома ошибки, блока элементов И, блока элементов ИЛИ. Илл.1.

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

Известно самокорректирующееся устройство [1], использующие корректирующий код (наиболее часто используется код Хемминга корректирующий одиночную ошибку и обнаруживающий двойную ошибку).

Недостатком устройства является низкая обнаруживающая способность кода, так как обнаруживаются только двойные ошибки.

Наиболее близким по техническому решению является отказоустойчивое устройство хранения и передачи данных, реализующие коды, исправляющие одиночные байты ошибок, обнаруживающие двойные байты ошибок [2], содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутаторы ошибок байтов, корректор, входы устройства подключены к входам узла памяти и к входам входного кодирующего устройства, выходы которого подключены к первым входам блока вычисления синдрома, выходы узла памяти подключены к вторым входам блока вычисления синдрома и к первым входам корректора, выходы блока вычисления синдрома подключены к входам дешифратора, соединенного своими выходами со вторыми входами корректора, выходы корректора являются выходами устройства.

Недостатком устройства является низкая обнаруживающая способность ошибок в устройстве, так как обнаруживаются только двойные байты ошибок.

Целью полезной модели является повышение достоверности функционирования устройства за счет коррекции одиночных байтов и обнаружением ошибок в байтах информации.

Поставленная цель достигается тем, что устройство, содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, отличающаяся тем, что оно дополнительно содержит первый блок элементов ИЛИ, второй блок элементов ИЛИ, инвертор, элемент И, блок элементов И, вход установки устройства в нулевое состояние, вход записи, вход считывания, адресные входы, двадцати четырех разрядные информационные входы, вход синхронизации, информационные выходы, выход сигнала «ошибка», вход установки в нулевое состояние, вход записи, вход считывания, адресные входы, подключены соответственно к первому, второму, третьему и четвертому входам узла памяти, вход синхронизации подключен к пятому входу узла памяти и к первому входу блока элементов И, информационные входы подключены к шестым входам узла памяти и к входам входного блока кодирования который формирует значения контрольных разрядов r 1, r2, r3, r4, r5 , r6, r7, r8 путем сложения по модулю 2 информационных символов x1, x2 , x3, z1, z2, z3, a1, а2, а3, c1, c 2, c3, e1 е2 е3 , f1 f2 f3, g1 g 2 g3, h1 h2 h3 ., поступающих на входы входного блока кодирования, в соответствии с правилом: r1=x1z1 а1 c1e1fig1h1; r2=x2z2а2c2e2f2g2h2; r33z3а3с3е3f3g3h3; r4=x1 z3 а2 а3 c2 e1 е3 f1 f2 g1 g2 g3; r5=x2 x3 z1 а3 c1 с3 е1 е2 f2 g1 g2 g3; r6=x3 z2 z3 a1 c1 c2 e2 f1 f3 g1 g2 g3; r7=x3 z3 а1 а3 c2 e1 f2 g1 g2 g3; r8=x1 x2 z2 a2 а3 c3 е3 f2 f3 g1 g2 g3, которые поступают на седьмые входы узла памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, блока корректоров и к входам выходного блока кодирования, который формирует значения проверочных контрольных разрядов r, r, r, r, r, r r r путем сложения по модулю 2 информационных символов х х х, z z z, a a a, c c c, e e e, f f f, g g g, h h h, поступающих на входы входного блока кодирования с информационных выходов узла памяти, в соответствии с правилом: : rzасefgh; rz, асefgh; rzасefgh; r z а а с e е f fg g; r х z a с сее fg g g; r=x z z а с c e f fg g g; r z а а с е fg g g; r х z а а с е ffg g g, выходы выходного блока кодирования подключены к первым входам блока вычисления синдрома ошибки к вторым входам которого, подключены выходы контрольных разрядов узла памяти, первые выходы блока вычисления синдрома ошибки подключены к первым входам дешифратора, к первым входам коммутатора, к входам первого блока элементов ИЛИ и к первым входам блока коммутаторов, вторые выходы блока вычисления синдрома ошибки подключены к вторым входам дешифратора и к вторым входам первого блока элементов ИЛИ, выходы дешифратора подключены к входам второго блока элементов ИЛИ, при этом первый выход дешифратора подключен к второму входу коммутатора, а вторые выходы подключены к вторым входам блока коммутаторов, выход второго блока элементов ИЛИ через инвертор подключен к первому входу элемента И, второй вход которого подключен к выходу первого блока элементов ИЛИ, выход элемента И является выходом сигнала «ошибка», выходы коммутатора подключены к вторым входам корректора, выходы блока коммутаторов подключены к вторым входам блока корректоров, выходы корректора и блока корректоров подключены к вторым входам блока элементов И, выходы которого являются информационными выходами устройства.

На фиг.1 представлена блок-схема устройства. Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации содержит: узел 1 памяти, входной блок 2 кодирования, выходной блок 3 кодирования, блок 4 вычисления синдрома ошибки, дешифратор 5, коммутатор 6, блок 7 коммутаторов, корректор 8, блок 9 корректоров, первый элемент 10 ИЛИ, второй элемент 11 ИЛИ, инвертор 12, элемент 13 И, блок 14 элементов И, вход 15 установки в нулевое состояние, вход 16 записи, вход 17 считывания, адресные входы 18, информационные входы 19, вход 20 синхронизации, информационные выходы 21, выход 22 сигнала "ошибка".

Вход 15 установки в нулевое состояние, вход 16 записи, вход 17 считывания, адресные входы 18, подключены соответственно к первому, второму, третьему и четвертому входам узла 1 памяти, вход 20 синхронизации подключен к пятому входу узла 1 памяти и к первому входу блока 14 элементов И, информационные входы 19 подключены к шестым входам узла 1 памяти и к входам входного блока 2 кодирования, который формирует значения контрольных разрядов r1, r2, r 3, r4, r5, r6, r7 , r8 путем сложения по модулю 2 информационных символов x1, x2, x3, z1, z 2, z3, a1, а2, а3 , c1, c2, c3, e1 е2 е3, f1 f2 f 3, g1 g2 g3, h1 h2 h3., поступающих на входы входного блока 2 кодирования, в соответствии с правилом: r1 =x1z1 а1 c1e1 f1g1 h1; r2=x2z2а2c2e2f2g2h2; r33z3а3с3е3f3g3h3; r4=x1 z3 а2 а3 c2 e1 е3 f1 f2 g1 g2 g3; r5=x2 x3 z1 а3 c1 с3 е1 е2 f2 g1 g2 g3; r6=x3 z2 z3 a1 c1 c2 e2 f1 f3g1 g2 g3; r7=x3 z3 а1 а3 c2 e1 f2 g1 g2 g3; r8=x1 x2 z2 a2 а3 c3 е3 f2 f3 g1 g2 g3, которые поступают на седьмые входы узла 1 памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, 8 блока 9 корректоров и к входам выходного блока 3 кодирования, который формирует значения проверочных контрольных разрядов r, r, r , r, r, r, r , r путем сложения по модулю 2 информационных символов x, x, x, z , z, z, a, а , а, c, c, c , e е е, f f f, g g g, h h h , поступающих на входы входного блока 3 кодирования с информационных выходов узла 1 памяти, в соответствии с правилом: rz, асefgh; rzасefgh; rzасefgh; r z а а с e е f fg g; r х z a с сее fg g g; r=x z z а с C e f fg g g; r z а а с е fg g g; r х z а а с е ffg g g, выходы выходного блока 3 кодирования подключены к первым входам блока 4 вычисления синдрома ошибки, к вторым входам которого, подключены выходы контрольных разрядов узла 1 памяти, первые выходы блока 4 вычисления синдрома ошибки подключены к первым входам дешифратора 5, к первым входам коммутатора 6, к входам первого блока 10 элементов ИЛИ и к первым входам блока 7 коммутаторов, вторые выходы блока 4 вычисления синдрома ошибки подключены к вторым входам дешифратора 5 и к вторым входам первого блока 10 элементов ИЛИ, выходы дешифратора 5 подключены к входам второго блока 11 элементов ИЛИ, при этом первый выход дешифратора 5 подключен к второму входу коммутатора 6, а вторые выходы подключены к вторым входам блока 7 коммутаторов, выход второго блока 11 элементов ИЛИ через инвертор 12 подключен к первому входу элемента 13 И, второй вход которого подключен к выходу первого блока 10 элементов ИЛИ, выход элемента 13 И является выходом сигнала «ошибка», выходы коммутатора 6 подключены к вторым входам корректора 8, выходы блока 7 коммутаторов подключены к вторым входам блока 9 корректоров, выходы корректора 8 и блока 9 корректоров подключены к входам блока 14 элементов И, выходы которого являются информационными выходами 21 устройства.

Узел 1 памяти, в данном случае, представляет собой статическое полупроводниковое оперативное устройство памяти и предназначен для хранения кодовых наборов: УК=x1 x2 x3, z 1 z2 z3, a1 а2 а3, c1 c2 c3, е 1, е2, e3, f1 f2 f3, g1 g2 g3, h 1 h2 h3, r1 r2 r3 r4 r4 r6 r 7 r8, полученных при кодировании исходных двадцати четырех разрядных двоичных наборов.

Входной блок 2 кодирования предназначен для формирования значений контрольных разрядов r1 r2 r3 r4 r4 r6 r7 r8, путем сложения по mod2 информационных символов в соответствии с правилом: : r1=x1z1 а1 c1e1f1g1h1; r2=x2z2а2c2e2f2g2h2; r33z3а3с3е3f3g3h3; r4=x1 z3 а2 а3 c2 e1 е3 f1 f2 g1 g2 g3; r5=x2 x3 z1 а3 c1 с3 е1 е2 f2 g1 g2 g3; r6=x3 z2 z3 a1 c1 c2 e2 f1 f3g1 g2 g3; r7=x3 z3 а1 а3 c2 e1 f2 g1 g2 g3; r8=x1 x2 z2 a2 а3 c3 е3 f2 f3 g1 g2 g3,.

Выходной блок 3 кодирования предназначен для формирования значений проверочных контрольных разрядов r, r, r, r, r, r, r, r, путем сложения по mod2 информационных символов, полученных при считывании информации с узла 1 памяти в соответствии с правилом: rzасefgh; rz, асefgh; rzасefgh; r z а а с e е f fg g; r х z a с сее fg g g; r=x z z а с C e f fg g g; r z а а с е fg g g; r х z а а с е ffg g g,

Блок 4 вычисления синдрома ошибки предназначен для обнаружения ошибки в кодовом наборе при считывании информации с узла 1 памяти путем сложения по mod2 значений контрольных разрядов r1 r2 r 3 r4 r4 r6 r7 r8 считываемых с вторых выходов узла 1 памяти, соответственно с значениями контрольных разрядов r, r , r, r, r, r , r, r, сформированных на выходах выходного блока 3 кодирования.

Результат поразрядного сложения:

1=r1r;

2=r2r;

3=r3r;

4=r4r;

5=r5r;

6=r6r;

7=r7r;

8=r8r;

Нулевой результат суммы свидетельствует об отсутствии ошибки, и ее наличии в противном случае.

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

Дешифратор 7 формирует единичное значение сигнала на одном из своих выходов в соответствии с таблицей:

Таблица 1.
Значения синдромов ошибок кода (30,8) исправляющего байты ошибок в блоке информации и обнаруживающего ошибки в произвольных блоках информации.
п/пБезошибочный блок инфор-и 000 Значение первой части контрольных разрядов Значения проверок второй части контрольных разрядов
Ошибочны и блок информацииХZ Ас ЕF GН
1 100100 100010100000110 011001101010100 1111000000
2 010010 010010010110001 101110110011011 1110100000
3 001001 011101011011011 010011000100101 1110100000
4 110110 110000110110111 110101011001111 0001000000
5 101101 111111111011101 001010101110001 0000100000
6 011011 001101001101010 111111110111110 0001000000
111 11110110 110110110010011 001110101011110 00000

Если значение синдрома ошибки не соответствует значениям, представленным в таблице, то произошла не корректируемая ошибка (сигналы на выходе дешифратора имеют пулевые значения).

В этом случае, о наличии не корректируемой ошибки свидетельствует наличие единичного значения сигнала на выходе первого блока 10 элементов ИЛИ и отсутствие единичного значения сигнала на выходе второго элемента 11 ИЛИ.

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

Устройство работает следующим образом. Перед началом работы устройства на вход 15 "установки в нулевое состояние" подается единичный сигнал, который переводит устройство в нулевое состояние.

При записи информации в узел 1 памяти, подаются единичные сигналы на вход 20 синхронизации, вход 16 записи, адресные входы 18 и информационные входы 19.

Входной блок 2 информации формирует значения контрольных разрядов по правилу:

Пример. Допустим, необходимо закодировать двоичный набор:

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

При отсутствии ошибки, значение кодового набора записанного в узле 1 памяти равно считанному (переданному кодовому набору):

В этом случае на выходе блока 4 вычисления синдрома ошибки имеем нулевые значения сигналов.

Пусть, произошла одиночная ошибка в первом разряде третьего блока информации (А=0*01), тогда выходной блок 3 кодирования сформирует относительно полученного кодового набора значения контрольных разрядов:

r=0, r=0, r=0, r=0, r=0, r =0, r=0, r=0.

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

В этом случае, первая часть синдрома оказывает на ошибочный разряд блока информации, вторая часть синдрома указывает ошибочный блок А (см. табл.1).

Ha выходе дешифратора 7 появится единичное значение сигнала, которое открывает элементы И блока 7 коммутаторов, при этом значения вектора ошибки поступает на входы блока корректоров 9 где складывается по mod2 со значениями разрядов третьего блока информации:

- скорректированное значение блока информации А.

В результате имеем правильное значение информации.

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

В этом случае, значения контрольных разрядов, сформированные выходным блоком 3 кодирования относительно полученного двоичного набора равны:

Значение синдрома ошибки, полученные блоком 4 вычисления синдрома ошибки равно: S=111 10000.

В этом случае, на выходе первого блока 10 элементов ИЛИ появится единичное значение сигнала, на всех выходах дешифратора 7 присутствует нулевое значение сигнала, по этому, на выходе второго блока 11 элементов ИЛИ так же имеем нулевое значение сигнала, а на выходе инвертора 12 единичное значение сигнала, которое открывает элемент 12 И с выхода которого снимается сигнал «ошибка».

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

ИСТОЧНИКИ ИНФОРМАЦИИ

1. Щербаков Н.C. Достоверность работы цифровых устройств. М: Машиностроение, 1989, с.82, рис.39., 224 с.

2. Щербаков Н.C. Достоверность работы цифровых устройств. М: Машиностроение, 1989, с.122, рис.45., 224 с.

Приложение к заявке на полезную модель: «Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации»

1. Введение и постановка задачи

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

К таким кодам следует отнести коды [1]:

- исправляющие одиночные ошибки и обнаруживающие одиночные байты ошибок;

- коды, исправляющие одиночные ошибки, обнаруживающие двойные независимые ошибки и обнаруживающие одиночные байты ошибок;

- коды, исправляющие одиночные байты ошибок;

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

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

Код Рида-Соломона (PC) - это блочный код (w, N), позволяющий обнаруживать и исправлять ошибки в байтах. Входным словом для него является блок из w байтов, выходным - кодовое слово из N байтов, состоящее из w исходных и N-w проверочных байтов. При этом гарантировано, что при декодировании в кодовом слове будут обнаружены и исправлены t=(N-w)/2 байтов независимо от их расположения внутри кодового слова. Кодирующее устройство PC реализуется на основе регистра сдвига с 2t байтовыми элементами памяти и обратными связями. Процесс кодирования и декодирования сводится к операциям сложения и умножения по модулю.

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

2. Разработка линейного корректирующего кода с исправлением одиночных ошибок в байте информации и обнаружением ошибок в байтах информации

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

Для получения кодового расстояния, позволяющего обеспечить исправление одиночных и обнаружение двойные байтов ошибок, используем 2b контрольных разрядов (оптимальное число контрольных разрядов для кодов Рида-Соломона, решающих данную задачу), в которых реализуется сложение по mod2 одноименных разрядов блоков (байтов) информации.

В результате поучим кодовый набор;

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

В этом случае число байтов информации определяется по формуле:

w=2b

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

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

b×b.

Для первого блока информации матрица кодирования имеет вид:

или

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

Для второго и третьего информационных блоков, матрицы кодирования имеет вид соответственно:

или

или

Не трудно заметить, что очередная матрица кодирования получается в результате циклической замены строк матрицы кодирования.

В результате получаем b исходных матриц кодирования, содержащих в своих строках по одной единице.

Для информационных блоков, начиная с b+1 блока, матрицы кодирования включают различные сочетания двух единиц в блоке информации:

Значения контрольных разрядов формируются сложением по mod2 элементов столбцов, соответствующих единичным значениям.

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

Каждая очередная матрица кодирования для блоков информации, начиная с b+2 блока по С2b - блок информации получается циклической заменой строк матрицы по аналогии с матрицей, содержащей в своих строках по одной единице.

Аналогичным образом строятся матрицы кодирования, содержащие в своих строках различные сочетания из трех единиц и.т.д.

Окончательно имеем матрицу кодирования, каждый элемент которой содержит единицу. Построим так же, дополнительную матрицу кодирования, каждый элемент которой содержит нули.

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

Объединяя по модулю по mod2 одноименные контрольные проверки для всех блоков информации, получим значения контрольных разрядов для второй части контрольных разрядов кодового набора.

Таким образом, кодовый набор передается в виде:

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

Значение синдрома ошибки Sf определяет вектор ошибки (ошибочные разряды в блоке информации), а значение синдрома ошибки Sg определяет номер ошибочного блока (байта) информации.

Стратегия декодирования заключается на следующих положениях:

1. S f=0; Sg=0. Ошибок нет.

2. S f=0; Sg0. Произошла ошибка в контрольных разрядах или не корректируемая ошибка в байтах информации.

3. Sf0; Sg0 (Sg=0). Произошла ошибка в информационных байтах (в одном байте - корректируемая, в двух - обнаруживаемая).

Таким образом, разработанный код, при оптимальном числе контрольных разрядов обладает свойствами характерными для кодов Рида-Соломона и при этом позволяет:

- использовать процедуру линейного кодирования;

- повысить быстродействие кодирования и декодирования информации.

Пример: Допустим, имеем двадцати четырех разрядный двоичный набор, который разобьем на блоки информации по три разряда в каждом блоке:

У=х1 х2 х3, z 1 z2 z3, a1 а2 а3, c1 c2 c3, e 1 е2 е3, f1 f2 f3, g1 g2 g3, h 1 h2 h3.

Построим исходные матрицы кодирования для каждого блока информации:

Складывая по mod2 элементы столбцов матриц, соответствующие единичным значениям, получим проверки, позволяющие получить значения контрольных разрядов для соответствующих блоков информации.

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

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

В результате имеем код (30,6) корректирующий одиночные ошибки и обнаруживающий ошибки большей кратности.

Анализ представленной таблицы показывает, что в случае возникновения одиночной ошибки, значения второй части синдромов для блоков информации различаются между собой, что позволяет корректировать данные ошибки.

Таблица. 1
Значения синдромов для кода (30,6), исправляющего одиночные ошибки.
п/пБезошибочный блок инфор-и 000 Значение первой части контрольных разрядов Значения проверок второй части контрольных разрядов
Ошибочный блок информацииХ ZA CE FG H
1100 100100 010001 011110 101111 000
2010 010010 001100 101011 110111 000
3001 001001 100010 110101 011111 000
4110 110110 011101 110101 011000 000
5101 101101 110011 101011 110000 000
6011 011011 101110 011110 101000 000
111 111111 111111 000000 000111 000

При возникновении ошибок большей кратности или в нескольких информационных блока значения синдромов неразличимы, в этом случае ошибка обнаруживается.

При этом, выделенные синдромы указывают на наличие не корректируемой ошибки, не выделенные синдромы, указывают блок информации, содержащий соответствующую одиночную корректируемую ошибку.

Пример. Допустим, необходимо закодировать двоичный набор:

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

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

Таким образом, безошибочный кодовый набор передается в виде:

Пусть, произошла одиночная ошибка в первом разряде третьего блока информации (А), тогда первая часть и вторая часть контрольных разрядов, сформированных относительно полученного кодового набора равны соответственно:

Складывая, переданные контрольные разряды с контрольными разрядами, сформированными относительно полученного кодового набора, получим синдром ошибки:

В этом случае, первая часть синдрома оказывает на ошибочный разряд блока информации, вторая часть синдрома указывает ошибочный блок (см. табл. 1).

3. Разработка линейного корректирующего кода с исправлением ошибок в байте и обнаружением ошибок в произвольных байтах информации

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

Например, попарно разобьем исходную совокупность матриц кодирования информации, на пары: XF; EZ; АС.

В матрицах XF инвертируем элементы второго столбца третьей строки, в матрицах EZ инвертируем элементы третьего столбца третьей строки, в матрицах АС инвертируем элементы первого столбца третьей строки.

В результате, получим совокупность модифицированных матриц кодирования информации:

Используя полученные матрицы, выпишем проверки для контрольных разрядов соответствующих блоков информации (складываются по mod2 элементы столбцов матриц имеющие единичные значения, при этом номер элемента соответствует номеру строки матрицы):

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

В табл.2 представлены соответствующие значения синдромов кода (30,6) для ошибок различной кратности.

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

Таблица 2.
Значения синдромов ошибок ко/да (30,6) исправляющего кратные ошибки в блоке информации и обнаруживающего ошибки в двух блоках информации.
п/пБезошибочный блок инфор-и 000 Значение первой части контрольных разрядов Значения проверок второй части контрольных разрядов
Ошибочный блок информацииХ ZA сE FG H
1100 100100 010001 011110 101111 000
2010 010010 001100 101011 110111 000
3001 001011 101110 010100 001111 000
4110 110110 011101 110101 011000 000
5101 101111 111111 001010 100000 000
6011 011001 100010 111111 111000 000
111 111101 110011 100001 010111 000

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

Если, изменить порядок построения модифицированных матриц кодирования информации, например, попарно объединить исходные матрицы на ХЕ, FZ, АС и матрицах ХЕ инвертировать элементы первого столбца третьей строки, в матрицах FZ инвертировать элементы третьего столбца третьей строки, в матрице А инвертировать элемент второго столбца первой строки, а в матрице С инвертировать элемент второго столбца третьей строки, то получим 26 неразличимых синдромов ошибок.

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

Для повышения корректирующей способности кода, необходимо ввести дополнительные проверки (контрольные разряды).

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

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

Таблица 3
Значения синдромов ошибок кода (30,8) исправляющего байты ошибок в блоке информации и обнаруживающего в произвольных блоках информации.
п/пБезошибочный блок инфор-и 000 Значение первой части контрольных разрядов Значения проверок второй части контрольных разрядов
Ошибочны и блок информацииХZ AC ЕF GН
1 100100 100010100000110 011001101010100 1111000000
2 010010 010010010110001 101110110011011 1110100000
3 001001 011110110 110110100110001 001011110100000
4110 11011000 011011011111010 101100111100010 00000
5101 10111111 111101110100101 010111000100001 00000
6011 01100110 100110101011111 111011111000010 00000
111 11110110 110110110010011 001110101011110 00000

Введение дополнительных проверок существенно повышает обнаруживающие способности кода. Так, например, при возникновении одиночной ошибки в первом разряде блока информации X, одиночной ошибки во втором разряде блока Z, двойной ошибки в первом и втором разряде блока S, тройной ошибки в блоке G получим значение синдрома ошибки S=111 10000, характеризующего наличие некорректируемой ошибки.

При необходимости, полученный код допускает минимизацию контрольных разрядов, так удаляя первый контрольный разряд второй части контрольных разрядов r1g получим корректирующий код (30,7), корректирующий ошибки в байте информации и обнаруживающий ошибки в двух блоках информации (см. таюл.4).

Таблица 4
Значения синдромов ошибок кода (30,7) исправляющего байты ошибок в блоке информации и обнаруживающего ошибки в двух блоках информации.
п/пБезошибочный блок инфор-и 000 Значение первой части контрольных разрядов Значения проверок второй части контрольных разрядов
Ошибочны и блок информацииХZ Ас ЕF GН
1 100100 00011000 01101100 10100100 11100000
2 010010 10010101 00010111 11001011 11010000
3 001001 11100110 10111001 00010101 11010000
4 110110 10001101 01111010 01101111 00100000
5 101101 11111110 11010101 10110001 00010000
6 011011 01100011 10101111 11011110 00100000
111 1110110 10111100 00110111 10101110 0000

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

Литература:

1. Щербаков Н.С. Достоверность работы цифровых устройств. М: Машиностроение, 1989, с.122, рис.45., 224 с.

Устройство хранения и передачи данных с исправлением ошибок в байте информации и обнаружением ошибок в байтах информации, содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, отличающееся тем, что оно дополнительно содержит первый блок элементов ИЛИ, второй блок элементов ИЛИ, инвертор, элемент И, блок элементов И, вход установки устройства в нулевое состояние, вход записи, вход считывания, адресные входы, двадцатичетырехразрядные информационные входы, вход синхронизации, информационные выходы, выход сигнала «ошибка», вход установки в нулевое состояние, вход записи, вход считывания, адресные входы, подключены соответственно к первому, второму, третьему и четвертому входам узла памяти, вход синхронизации подключен к пятому входу узла памяти и к первому входу блока элементов И, информационные входы подключены к шестым входам узла памяти и к входам входного блока кодирования, который формирует значения контрольных разрядов r1, r 2, r3, r4, r5, r6 , r7, r8 путем сложения по модулю 2 информационных символов x1, x2, x3, z1 , z2, z3, a1, а2, а3, c1, c2, c3, e 1 е2 е3, f1 f2 f3, g1 g2 g3, h 1 h2 h3, поступающих на входы входного блока кодирования, в соответствии с правилом: r1=x 1z1а1c1e1fig1h1; r2=x2z2а2c2e2f2g2h2; r33z3а3с3е3f3g3h3; r4=x1 z3 а2 а3 с2 e1 е3 f1 f2 g1 g2 g3; r5=x2 x3 z1 а3 c1 с3 е1 е2 f2 g1 g2 g3; r6=x3 z2 z3 a1 c1 c2 e2 f1 f3 g1 g2 g3; r7=x3 z3 а1 а3 c2 e1 f2 g1 g2 g3; r8=x1 x2 z2 a2 а3 c3 е3 f2 f3 g1 g2 g3, которые поступают на седьмые входы узла памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, блока корректоров и к входам выходного блока кодирования, который формирует значения проверочных контрольных разрядов r, r, r, r, r, r r r путем сложения по модулю 2 информационных символов х х х, z z z, a a a, c c c, e e e, f f f, g g g, h h h, поступающих на входы входного блока кодирования с информационных выходов узла памяти, в соответствии с правилом: rz, асefgh; rzасefgh; rzасefgh; r z а а с e е f fg g; r х z a с сее fg g g; r=x z z а с C e f fg g g; r z а а с е fg g g; r х z а а с е ffg g g, выходы выходного блока кодирования подключены к первым входам блока вычисления синдрома ошибки к вторым входам которого подключены выходы контрольных разрядов узла памяти, первые выходы блока вычисления синдрома ошибки подключены к первым входам дешифратора, к первым входам коммутатора, к входам первого блока элементов ИЛИ и к первым входам блока коммутаторов, вторые выходы блока вычисления синдрома ошибки подключены к вторым входам дешифратора и к вторым входам первого блока элементов ИЛИ, выходы дешифратора подключены к входам второго блока элементов ИЛИ, при этом первый выход дешифратора подключен к второму входу коммутатора, а вторые выходы подключены к вторым входам блока коммутаторов, выход второго блока элементов ИЛИ через инвертор подключен к первому входу элемента И, второй вход которого подключен к выходу первого блока элементов ИЛИ, выход элемента И является выходом сигнала «ошибка», выходы коммутатора подключены к вторым входам корректора, выходы блока коммутаторов подключены к вторым входам блока корректоров, выходы корректора и блока корректоров подключены к вторым входам блока элементов И, выходы которого являются информационными выходами устройства.



 

Наверх