Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации
Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации относится к области телемеханики, автоматики и вычислительной техники и предназначено для повышения отказоустойчивости и достоверности функционирования устройств хранения и передачи информации и при этом позволяет корректировать все одиночные ошибки в отдельных байтах информации и обнаруживать произвольные ошибки в байтах информации. Это достигается рациональным кодированием исходной двоичной информации и введением входного блока кодирования, выходного блока кодирования, блока вычисления синдрома ошибки, блока элементов И, блока элементов ИЛИ. Илл. 1.
Полезная модель относится к вычислительной технике и может быть использовано для повышения достоверности функционирования запоминающих устройств.
Известно самокорректирующееся устройство [1], использующие корректирующий код (наиболее часто используется код Хемминга корректирующий одиночную ошибку и обнаруживающий двойную ошибку).
Недостатком устройства является низкая обнаруживающая способность кода, так как обнаруживаются только двойные ошибки.
Наиболее близким по техническому решению является отказоустойчивое устройство хранения и передачи данных, реализующие коды, исправляющие одиночные ошибки, обнаруживающие двойные независимые ошибки и обнаруживающие одиночные байты ошибок [2], содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутаторы ошибок байтов, корректор, входы устройства подключены к входам узла памяти и к входам входного кодирующего устройства, выходы которого подключены к первым входам блока вычисления синдрома, выходы узла памяти подключены к вторым входам блока вычисления синдрома и к первым входам корректора, выходы блока вычисления синдрома подключены к входам дешифратора, соединенного своими выходами со вторыми входами корректора, выходы корректора являются выходами устройства.
Недостатком устройства является низкая обнаруживающая способность ошибок в устройстве, так как обнаруживаются только двойные независимые ошибки и обнаруживающие одиночные байты ошибок.
Целью полезной модели является повышение достоверности функционирования устройства за счет коррекции одиночных ошибок, и обнаружения произвольных ошибок байтах информации.
Поставленная цель достигается тем, что устройство, содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, отличающаяся тем, что оно дополнительно содержит первый блок элементов ИЛИ, второй блок элементов ИЛИ, инвертор, элемент И, блок элементов И, вход установки устройства в нулевое состояние, вход записи, вход считывания, адресные входы, двадцати четырех разрядные информационные входы, вход синхронизации, информационные выходы, выход сигнала «ошибка», вход установки в нулевое состояние, вход записи, вход считывания, адресные входы, подключены соответственно к первому, второму, третьему и четвертому входам узла памяти, вход синхронизации подключен к пятому входу узла памяти и к первому входу блока элементов И, информационные входы подключены к шестым входам узла памяти и к входам входного блока кодирования который формирует значения контрольных разрядов r1, r 2, r3, r4, r5, r6 путем сложения по модулю 2 информационных символов x1 x2x3, z1z2z3 , a1a2a3, c1c 2c3, e1e2e3 , f1f2f3; g1g 2g3, h1h2h3 , поступающих на входы входного блока кодирования, в соответствии с правилом: r1=x1z1
a1
с1
e1
f1
g1
h1; r2=x2
z2
a2
с2
e2
f2
g2
h2; r3=x3
z3
a3
с3
e3
f3
g3
h3; r4=x1
z3
a2
с2
c3
e1
e3
f1
f2
g1
g2
g3; r5=x2
z1
a3
с1
c3
e1
e2
f2
f3
g1
g2
g3; r6=x3
z2
a1
с1
c2
e2
e3
f1
f3
g1
g2
g3 которые поступают на седьмые входы узла памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, блока корректоров и к входам выходного блока кодирования, который формирует значения проверочных контрольных разрядов r1П, r2П, r3П, r 4П, r5П, r6П путем сложения по модулю 2 информационных символов x1Пx2Пx3П , z1Пz2Пz3П, a1Пa 2Пa3П, c1Пc2Пc3П , e1Пe2Пe3П, f1Пf 2Пf3П, g1Пg2Пg3П , h1Пh2Пh3П, поступающих на входы входного блока кодирования с информационных выходов узла памяти, в соответствии с правилом: r1П=x1П
z1П
a1П
с1П
e1П
f1П
g1П
h1П; r2П=x2П
z2П
a2П
с2П
e2П
f2П
g2П
h2П; r3П=x3П
z3П
a3П
с3П
e3П
f3П
g3П
h3П; r4П=x1П
z3П
a2П
c2П
c3П
e1П
e3П
f1П
f2П
g1П
g2П
g3П; r5П=x2П
z1П
a3П
c1П
c3П
e1П
e2П
f2П
f3П
g1П
g2П
g3П; r6П=x3П
z2П
a1П
c1П
c2П
e2П
e3П
f1П
f3П
g1П
g2П
g3П; выходы выходного блока кодирования подключены к первым входам блока вычисления синдрома ошибки к вторым входам которого, подключены выходы контрольных разрядов узла памяти, первые выходы блока вычисления синдрома ошибки подключены к первым входам дешифратора, к первым входам коммутатора, к входам первого блока элементов ИЛИ и к первым входам блока коммутаторов, вторые выходы блока вычисления синдрома ошибки подключены к вторым входам дешифратора и к вторым входам первого блока элементов ИЛИ, выходы дешифратора подключены к входам второго блока элементов ИЛИ, при этом первый выход дешифратора подключен к второму входу коммутатора, а вторые выходы подключены к вторым входам блока коммутаторов, выход второго блока элементов ИЛИ через инвертор подключен к первому входу элемента И, второй вход которого подключен к выходу первого блока элементов ИЛИ, выход элемента И является выходом сигнала «ошибка», выходы коммутатора подключены к вторым входам корректора, выходы блока коммутаторов подключены к вторым входам блока корректоров, выходы корректора и блока корректоров подключены к вторым входам блока элементов И, выходы которого являются информационными выходами устройства.
На фиг.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 путем сложения по модулю 2 информационных символов x1x2 x3, z1z2z3, a 1a2a3, c1c2 c3, e1e2e3, f 1f2f3; g1g2 g3, h1h2h3., поступающих на входы входного блока 2 кодирования, в соответствии с правилом: r1=x1z1
a1
с1
e1
f1
g1
h1; r2=x2
z2
a2
с2
e2
f2
g2
h2; r3=x3
z3
a3
с3
e3
f3
g3
h3; r4=x1
z3
a2
с2
c3
e1
e3
f1
f2
g1
g2
g3; r5=x2
z1
a3
с1
c3
e1
e2
f2
f3
g1
g2
g3; r6=x3
z2
a1
с1
c2
e2
e3
f1
f3
g1
g2
g3, которые поступают на седьмые входы узла 1 памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, 8 блока 9 корректоров и к входам выходного блока 3 кодирования, который формирует значения проверочных контрольных разрядов r1П, r2П, r3П , r4П, r5П, r6П путем сложения по модулю 2 информационных символов x1Пx2П x3П, z1Пz2Пz3П, a 1Пa2Пa3П, c1Пc2П c3П, e1Пe2Пe3П, f 1Пf2Пf3П, g1Пg2П g3П, h1Пh2Пh3П поступающих на входы входного блока 3 кодирования с информационных выходов узла 1 памяти, в соответствии с правилом: r1П=x 1П
z1П
a1П
с1П
e1П
f1П
g1П
h1П; r2П=x2П
z2П
a2П
с2П
e2П
f2П
g2П
h2П; r3П=x3П
z3П
a3П
с3П
e3П
f3П
g3П
h3П; r4П=x1П
z3П
a2П
c2П
c3П
e1П
e3П
f1П
f2П
g1П
g2П
g3П; r5П=x2П
z1П
a3П
c1П
c3П
e1П
e2П
f2П
f3П
g1П
g2П
g3П; r6П=x3П
z2П
a1П
c1П
c2П
e2П
e3П
f1П
f3П
g1П
g2П
g3П выходы выходного блока 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 памяти, в данном случае, представляет собой статическое полупроводниковое оперативное устройство памяти и предназначен для хранения кодовых наборов: УК=x1x2x3, z 1z2z3, a1a2 a3, c1c2c3, e 1e2e3 f1f2f 3, g1g2g3, h1 h2h3r1r2r3 r4r5r6, полученных при кодировании исходных двадцати четырех разрядных двоичных наборов.
Входной блок 2 кодирования предназначен для формирования значений контрольных разрядов r1, r2, r3 , r4, r5, r6 путем сложения по mod2 информационных символов в соответствии с правилом:
r1=x1z1
a1
с1
e1
f1
g1
h1; r2=x2
z2
a2
с2
e2
f2
g2
h2; r3=x3
z3
a3
с3
e3
f3
g3
h3; r4=x1
z3
a2
с2
c3
e1
e3
f1
f2
g1
g2
g3; r5=x2
z1
a3
с1
c3
e1
e2
f2
f3
g1
g2
g3; r6=x3
z2
a1
с1
c2
e2
e3
f1
f3
g1
g2
g3.
Выходной блок 3 кодирования предназначен для формирования значений проверочных контрольных разрядов r1П, r2П, r3П, r 4П, r5П, r6П, путем сложения по mod2 информационных символов, полученных при считывании информации с узла 1 памяти в соответствии с правилом:
r 1П=x1Пz1П
a1П
с1П
e1П
f1П
g1П
h1П; r2П=x2П
z2П
a2П
с2П
e2П
f2П
g2П
h2П; r3П=x3П
z3П
a3П
с3П
e3П
f3П
g3П
h3П; r4П=x1П
z3П
a2П
c2П
c3П
e1П
e3П
f1П
f2П
g1П
g2П
g3П; r5П=x2П
z1П
a3П
c1П
c3П
e1П
e2П
f2П
f3П
g1П
g2П
g3П; r6П=x3П
z2П
a1П
c1П
c2П
e2П
e3П
f1П
f3П
g1П
g2П
g3П,
Блок 4 вычисления синдрома ошибки предназначен для обнаружения ошибки в кодовом наборе при считывании информации с узла 1 памяти путем сложения по mod2 значений контрольных разрядов r1, r2, r 3, r4, r5 и r6 считываемых с вторых выходов узла 1 памяти, соответственно с значениями контрольных разрядов r1П, r2П, r3П, r 5П, и r6П сформированных на выходах выходного блока 3 кодирования.
Результат поразрядного сложения:
1=r1
r1П;
2=r2
r2П;
3=r3
r3П;
4=r4
r4П;
5=r5
r5П;
6=r6
r6П.
Нулевой результат суммы свидетельствует об отсутствии ошибки, и ее наличии в противном случае.
Выходы 1,
2
3 блока 4 вычисления синдрома ошибки, позволяют определяют конфигурацию ошибки (вектор ошибки
1
2
3 содержащий единичные значения в тех разрядах, которые соответствуют ошибочным разрядам в блоке информации), выходы
4,
5
6 определяют блок информационных разрядов в котором произошла ошибка.
Дешифратор 7 формирует единичное значение сигнала на одном из свих выходов в соответствии с таблицей:
Таблица. 1 | ||||||||||
Значения синдромов для кода (30,6), исправляющего одиночные ошибки. | ||||||||||
![]() | Безошибочный блок инфор - и 000 | Значение первой части контрольных разрядов | Значения проверок второй части контрольных разрядов | |||||||
Ошибочный блок информации | Х | Z | A | C | E | F | G | H | ||
1 | 100 | 100 | 100 | 010 | 001 | 011 | 110 | 101 | 111 | 000 |
2 | 010 | 010 | 010 | 001 | 100 | 101 | 011 | 110 | 111 | 000 |
3 | 001 | 001 | 001 | 100 | 010 | 110 | 101 | 011 | 111 | 000 |
Если значение синдрома ошибки не соответствует значениям, представленным в таблице, то произошла не корректируемая ошибка (сигналы на выходе дешифратора имеют нулевые значения).
В этом случае, о наличии не корректируемой ошибки свидетельствует наличие единичного значения сигнала на выходе первого блока 10 элементов ИЛИ и отсутствие единичного значения сигнала на выходе второго элемента 11 ИЛИ.
Корректор 8 (блок 9 корректоров) предназначены для исправления корректируемой ошибки, путем сложения по mod2 одноименных разрядов блока информации имеющего ошибку с значением вектора ошибки.
Устройство работает следующим образом. Перед началом работы устройства на вход 15 "установки в нулевое состояние" подается единичный сигнал, который переводит устройство в нулевое состояние.
При записи информации в узел 1 памяти, подаются единичные сигналы на вход 20 синхронизации, вход 16 записи, адресные входы 18 и информационные входы 19.
Входной блок 2 информации формирует значения контрольных разрядов по правилу:
r1=x1z1
a1
с1
e1
f1
g1
h1; r2=x2
z2
a2
с2
e2
f2
g2
h2; r3=x3
z3
a3
с3
e3
f3
g3
h3; r4=x1
z3
a2
с2
c3
e1
e3
f1
f2
g1
g2
g3; r5=x2
z1
a3
с1
c3
e1
e2
f2
f3
g1
g2
g3; r6=x3
z2
a1
с1
c2
e2
e3
f1
f3
g1
g2
g3.
Пример. Допустим, необходимо закодировать двоичный набор:
Тогда первая часть и вторая часть контрольных разрядов, сформированных относительно полученного кодового набора, соответственно равны:
r1=1, r2 =0, r3=1, r4=1, r5=1, r 6=1.
При отсутствии ошибки, значение кодового набора записанного в узле 1 памяти равно считанному (переданному кодовому набору):
В этом случае на выходе блока 4 вычисления синдрома ошибки имеем нулевые значения сигналов.
Пусть, произошла одиночная ошибка в первом разряде третьего блока информации (А=0*01), тогда выходной блок 3 кодирования сформирует относительно полученного кодового набора значения контрольных разрядов:
r1П=0, r 2П=0, r3П=1.
r3П=00
0
0
0
1
1
0
1
1
1
0=1;
r4П=01
1
1
0
1
1
1
1
1
1
0=1;
r6П=11
1
0
0
1
1
0
1
1
1
0=0;
В блоке 4 вычисления синдрома ошибки складываются, переданные контрольные разряды с контрольными разрядами, сформированными относительно полученного кодового набора, в результате получим синдром ошибки:
В этом случае, первая часть синдрома оказывает на ошибочный разряд блока информации, вторая часть синдрома указывает ошибочный блок А (см. табл.1).
На выходе дешифратора 7 появится единичное значение сигнала, которое открывает элементы И блока 7 коммутаторов, при этом значения вектора ошибки поступает на входы блока корректоров 9 где складывается по mod2 со значениями разрядов третьего блока информации:
В результате имеем правильное значение информации.
Пусть произошла одиночная ошибка в первом разряде первого блока информации, одиночная ошибка во втором разряде четвертого блока информации и тройная ошибка в пятом блоке информации.
В этом случае, значения контрольных разрядов, сформированные выходным блоком 3 кодирования относительно полученного двоичного набора равны:
r1П =0, r2П=1, r3П=0,
r 3П=0, r4П=1, r6П=1.
Значение синдрома ошибки, полученные блоком 4 вычисления синдрома ошибки равно: .
В этом случае, на выходе первого блока 10 элементов ИЛИ появится единичное значение сигнала, на всех выходах дешифратора 7 присутствует нулевое значение сигнала, по этому, на выходе второго блока 11 элементов ИЛИ так же имеем нулевое значение сигнала, а на выходе инвертора 12 единичное значение сигнала, которое открывает элемент 12 И с выхода которого снимается сигнал «ошибка».
Таким образом, в предлагаемом устройстве хранения информации корректируются одиночные ошибки в отдельном блоке информации и обнаруживаются байты ошибок, за исключением ошибок трансформируемых в корректируемые.
ИСТОЧНИКИ ИНФОРМАЦИИ
1. Щербаков Н.С. Достоверность работы цифровых устройств. М: Машиностроение, 1989, с.82, рис.39., 224 с.
2. Щербаков Н.С. Достоверность работы цифровых устройств. М: Машиностроение, 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 блока по информации получается циклической заменой строк матрицы по аналогии с матрицей, содержащей в своих строках по одной единице.
Аналогичным образом строятся матрицы кодирования, содержащие в своих строках различные сочетания из трех единиц и.т.д.
Окончательно имеем матрицу кодирования, каждый элемент которой содержит единицу. Построим так же, дополнительную матрицу кодирования, каждый элемент которой содержит нули.
Полученные таким образом значения контрольных разрядов позволяют построить код, корректирующий одиночные ошибки и обнаруживать ошибки большей кратности.
Для коррекции ошибок в блоке информации кратности b, проведем модификацию полученных матриц кодирования (за исключением матриц содержащих все единицы и все нули), для чего разобьем полученную совокупность матриц кодирования попарно и, в каждой паре изменим (инвертируем) по одному одноименному элементу.
Используя модифицированные матрицы кодирования, получим проверки, определяющие значения контрольных разрядов для каждого блока информации, путем сложения по mod2 элементов соответствующих единичным значениям в столбцах полученных матриц.
Объединяя по модулю по mod2 одноименные контрольные проверки для всех блоков информации, получим значения контрольных разрядов для второй части контрольных разрядов кодового набора.
Таким образом, кодовый набор передается в виде:
Результат сложения по mod2 переданных значений контрольных разрядов ,
и контрольных разрядов
,
сформированных относительно полученных информационных разрядов даст значение синдрома ошибки, включающего две части:
Значение синдрома ошибки Sf определяет вектор ошибки (ошибочные разряды в блоке информации), а значение синдрома ошибки Sg определяет номер ошибочного блока (байта) информации.
Стратегия декодирования заключается на следующих положениях:
1.Sf=0; | Sg=0. | Ошибок нет. |
2. Sf=0; | Sg![]() | Произошла ошибка в контрольных разрядах. |
3. Sf![]() | S g![]() | Произошла ошибка в информационных байтах (в одном байте - корректируемая, в двух - обнаруживаемая). |
Таким образом, разработанный код, при оптимальном числе контрольных разрядов 2b обладает свойствами характерными для кодов Рида-Соломона и при этом позволяет:
- использовать процедуру линейного кодирования;
- повысить быстродействие кодирования и декодирования информации.
Пример: Допустим, имеем двадцати четырех разрядный двоичный набор, который разобьем на блоки информации по три разряда в каждом блоке:
У= x1x2 x3, z1z2z3, a 1a2a3, c1c2 c3, e1e2e3, f 1f2f3; g1g2 g3, h1h2h3.
Построим исходные матрицы кодирования для каждого блока информации:
Складывая по mod2 элементы столбцов матриц, соответствующие единичным значениям, получим проверки, позволяющие получить значения контрольных разрядов для соответствующих блоков информации.
В результате значения второй части контрольных разрядов формируется проверками:
Полученные значения контрольных разрядов, совместно с значениями первой части контрольных разрядов, сформированных путем сложения одноименных информационных разрядов блоков информации, позволяют иметь корректирующий код, исправляющий одиночные ошибки в любом блоке информации и обнаруживать ошибки большей кратности.
В результате имеем код (30,6) корректирующий одиночные ошибки и обнаруживающий ошибки большей кратности.
Таблица. 1 | ||||||||||
Значения синдромов для кода (30,6), исправляющего одиночные ошибки. | ||||||||||
![]() | Безошибочный блок инфор -и 000 | Значение первой части контрольных разрядов | Значения проверок второй части контрольных разрядов | |||||||
Ошибочный блок информации | Х | Z | A | C | E | F | G | H | ||
1 | 100 | 100 | 100 | 010 | 001 | 011 | 110 | 101 | 111 | 000 |
2 | 010 | 010 | 010 | 001 | 100 | 101 | 011 | 110 | 111 | 000 |
3 | 001 | 001 | 001 | 100 | 010 | 110 | 101 | 011 | 111 | 000 |
4 | 110 | 110 | 110 | 011 | 101 | 110 | 101 | 011 | 000 | 000 |
5 | 101 | 101 | 101 | 110 | 011 | 101 | 011 | 110 | 000 | 000 |
6 | 011 | 011 | 011 | 101 | 110 | 011 | 110 | 101 | 000 | 000 |
![]() | 111 | 111 | 111 | 111 | 111 | 000 | 000 | 000 | 111 | 000 |
Анализ представленной таблицы показывает, что в случае возникновения одиночной ошибки, значения второй части синдромов для блоков информации различаются между собой, что позволяет корректировать данные ошибки.
При возникновении ошибок большей кратности или в нескольких информационных блока значения синдромов неразличимы, в этом случае ошибка обнаруживается.
При этом, выделенные синдромы указывают на наличие не корректируемой ошибки, не выделенные синдромы, указывают блок информации, содержащий соответствующую одиночную корректируемую ошибку.
Пример. Допустим, необходимо закодировать двоичный набор:
Подставляя, в полученные выражения формирования второй части контрольных разрядов, значения соответствующих разрядов двоичного набора получим:
Складывая, одноименные информационные разряды блоков информации, получим первую часть контрольных разрядов 101.
Таким образом, безошибочный кодовый набор передается в виде:
Пусть, произошла одиночная ошибка в первом разряде третьего блока информации (А), тогда первая часть и вторая часть контрольных разрядов, сформированных относительно полученного кодового набора равны соответственно:
Складывая, переданные контрольные разряды с контрольными разрядами, сформированными относительно полученного кодового набора, получим синдром ошибки:
В этом случае, первая часть синдрома оказывает на ошибочный разряд блока информации, вторая часть синдрома указывает ошибочный блок (см. табл.1).
Таким образом, предлагаемый метод построения корректирующих кодов, обнаруживающих и корректирующих ошибки в байтах информации, позволяют исключить процедуру деления и умножения, необходимую при использовании циклических кодов и заменить ее на линейную, повысить быстродействие кодирования и декодирования информации, обеспечить требуемый уровень обнаружения и коррекции ошибок.
Литература:
1. Щербаков Н.C. Достоверность работы цифровых устройств. М: Машиностроение, 1989, с.122, рис.45., 224 с.
Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации, содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, отличающееся тем, что оно дополнительно содержит первый блок элементов ИЛИ, второй блок элементов ИЛИ, инвертор, элемент И, блок элементов И, вход установки устройства в нулевое состояние, вход записи, вход считывания, адресные входы, 24-разрядные информационные входы, вход синхронизации, информационные выходы, выход сигнала «ошибка», вход установки в нулевое состояние, вход записи, вход считывания, адресные входы, подключены соответственно к первому, второму, третьему и четвертому входам узла памяти, вход синхронизации подключен к пятому входу узла памяти и к первому входу блока элементов И, информационные входы подключены к шестым входам узла памяти и к входам входного блока кодирования, который формирует значения контрольных разрядов r1, r 2, r3, r4, r5, r6 путем сложения по модулю 2 информационных символов x1 x2x3, z1z2z3 , a1a2a3, c1c 2c3, e1e2e3 , f1f2f3, g1g 2g3, h1h2h3 ., поступающих на входы входного блока кодирования, в соответствии с правилом: r1=x1z1
a1
с1
e1
f1
g1
h1; r2=x2
z2
a2
с2
e2
f2
g2
h2; r3=x3
z3
a3
с3
e3
f3
g3
h3; r4=x1
z3
a2
с2
c3
e1
e3
f1
f2
g1
g2
g3;
r5=x2z1
a3
с1
c3
e1
e2
f2
f3
g1
g2
g3; r6=x3
z2
a1
с1
c2
e2
e3
f1
f3
g1
g2
g3, которые поступают на седьмые входы узла памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, блока корректоров и к входам выходного блока кодирования, который формирует значения проверочных контрольных разрядов r1П, r2П, r3П, r 4П, r5П, r6П путем сложения по модулю 2 информационных символов x1Пx2Пx3П , z1Пz2Пz3П, a1Пa 2Пa3П, c1Пc2Пc3П , e1Пe2Пe3П, f1Пf 2Пf3П, g1Пg2Пg3П , h1Пh2Пh3П, поступающих на входы входного блока кодирования с информационных выходов узла памяти, в соответствии с правилом: r1П=x1П
z1П
a1П
с1П
e1П
f1П
g1П
h1П; r2П=x2П
z2П
a2П
с2П
e2П
f2П
g2П
h2П; r3П=x3П
z3П
a3П
с3П
e3П
f3П
g3П
h3П; r4П=x1П
z3П
a2П
c2П
c3П
e1П
e3П
f1П
f2П
g1П
g2П
g3П; r5П=x2П
z1П
a3П
c1П
c3П
e1П
e2П
f2П
f3П
g1П
g2П
g3П; r6П=x3П
z2П
a1П
c1П
c2П
e2П
e3П
f1П
f3П
g1П
g2П
g3П;, выходы выходного блока кодирования подключены к первым входам блока вычисления синдрома ошибки к вторым входам которого подключены выходы контрольных разрядов узла памяти, первые выходы блока вычисления синдрома ошибки подключены к первым входам дешифратора, к первым входам коммутатора, к входам первого блока элементов ИЛИ и к первым входам блока коммутаторов, вторые выходы блока вычисления синдрома ошибки подключены к вторым входам дешифратора и к вторым входам первого блока элементов ИЛИ, выходы дешифратора подключены к входам второго блока элементов ИЛИ, при этом первый выход дешифратора подключен к второму входу коммутатора, а вторые выходы подключены к вторым входам блока коммутаторов, выход второго блока элементов ИЛИ через инвертор подключен к первому входу элемента И, второй вход которого подключен к выходу первого блока элементов ИЛИ, выход элемента И является выходом сигнала «ошибка», выходы коммутатора подключены к вторым входам корректора, выходы блока коммутаторов подключены к вторым входам блока корректоров, выходы корректора и блока корректоров подключены к вторым входам блока элементов И, выходы которого являются информационными выходами устройства.