Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации
Иллюстрации
Показать всеИзобретение относится к области вычислительной техники и может быть использовано для повышения отказоустойчивости и достоверности функционирования устройств хранения и передачи информации. Технический результат заключается в осуществлении возможности коррекции всех одиночных ошибок в отдельных байтах информации и обнаружении произвольных ошибок в байтах информации. Устройство содержит узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, первый элемент ИЛИ, второй элемент ИЛИ, инвертор, элемент И, блок элементов И, вход установки в нулевое состояние, вход записи, вход считывания, адресные входы, информационные входы, вход синхронизации, информационные выходы, выход сигнала "ошибка". 1 ил., 2 табл., 1 прил.
Реферат
Изобретение относится к вычислительной технике и может быть использовано для повышения достоверности функционирования запоминающих устройств.
Известно самокорректирующееся устройство [1], использующее корректирующий код (наиболее часто используется код Хемминга, корректирующий одиночную ошибку и обнаруживающий двойную ошибку).
Недостатком устройства является низкая обнаруживающая способность кода, так как обнаруживаются только двойные ошибки.
Наиболее близким по техническому решению является отказоустойчивое устройство хранения и передачи данных, реализующее коды, исправляющие одиночные ошибки, обнаруживающие двойные независимые ошибки и обнаруживающие одиночные байты ошибок [2], содержащие узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутаторы ошибок байтов, корректор, входы устройства подключены к входам узла памяти и к входам входного кодирующего устройства, выходы которого подключены к первым входам блока вычисления синдрома, выходы узла памяти подключены к вторым входам блока вычисления синдрома и к первым входам корректора, выходы блока вычисления синдрома подключены к входам дешифратора, соединенного своими выходами со вторыми входами корректора, выходы корректора являются выходами устройства.
Недостатком устройства является низкая обнаруживающая способность ошибок в устройстве, так как обнаруживаются только двойные независимые ошибки и обнаруживающие одиночные байты ошибок.
Целью изобретения является повышение достоверности функционирования устройства за счет коррекции одиночных ошибок и обнаружения произвольных ошибок байтах информации.
Поставленная цель достигается тем, что устройство, содержащее узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, отличается тем, что оно дополнительно содержит первый блок элементов ИЛИ, второй блок элементов ИЛИ, инвертор, элемент И, блок элементов И, вход установки устройства в нулевое состояние, вход записи, вход считывания, адресные входы, 24-разрядные информационные входы, вход синхронизации, информационные выходы, выход сигнала «ошибка», вход установки в нулевое состояние, вход записи, вход считывания, адресные входы подключены соответственно к первому, второму, третьему и четвертому входам узла памяти, вход синхронизации подключен к пятому входу узла памяти и к первому входу блока элементов И, информационные входы подключены к шестым входам узла памяти и к входам входного блока кодирования который формирует значения контрольных разрядов r1, r2, r3, r4, r5, r6 путем сложения по модулю 2 информационных символов x1 x2 x3, z1 z2 z3, a1 a2 a3, c1 c2 c3, e1 e2 e3, f1 f2 f3, g1 g2 g3, h1 h2 h3, поступающих на входы входного блока кодирования, в соответствии с правилом:
которые поступают на седьмые входы узла памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, блока корректоров и к входам выходного блока кодирования, который формирует значения проверочных контрольных разрядов r1П, r2П, r3П, r4П, r5П, r6П путем сложения по модулю 2 информационных символов x1П x2П x3П, z1П z2П z3П, a1П a2П a3П, c1П c2П c3П, e1П e2П e3П, f1П f2П f3П, g1П g2П g3П, h1П h2П h3П, поступающих на входы входного блока кодирования с информационных выходов узла памяти, в соответствии с правилом:
выходы выходного блока кодирования подключены к первым входам блока вычисления синдрома ошибки, к вторым входам которого подключены выходы контрольных разрядов узла памяти, первые выходы блока вычисления синдрома ошибки подключены к первым входам дешифратора, к первым входам коммутатора, к входам первого блока элементов ИЛИ и к первым входам блока коммутаторов, вторые выходы блока вычисления синдрома ошибки подключены к вторым входам дешифратора и к вторым входам первого блока элементов ИЛИ, выходы дешифратора подключены к входам второго блока элементов ИЛИ, при этом первый выход дешифратора подключен к второму входу коммутатора, а вторые выходы подключены к вторым входам блока коммутаторов, выход второго блока элементов ИЛИ через инвертор подключен к первому входу элемента И, второй вход которого подключен к выходу первого блока элементов ИЛИ, выход элемента И является выходом сигнала «ошибка», выходы коммутатора подключены к вторым входам корректора, выходы блока коммутаторов подключены к вторым входам блока корректоров, выходы корректора и блока корректоров подключены к вторым входам блока элементов И, выходы которого являются информационными выходами устройства.
На фиг.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, r3, r4, r5, r6 путем сложения по модулю 2 информационных символов x1 х2 х3, z1 z2 z3, a1 а2 а3, c1 с2 с3, e1 е2 е3, f1 f2 f3, g1 g2 g3, h1 h2 h3, поступающих на входы входного блока 2 кодирования, в соответствии с правилом:
которые поступают на седьмые входы узла 1 памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, 8 блока 9 корректоров и к входам выходного блока 3 кодирования, который формирует значения проверочных контрольных разрядов r1П, r2П, r3П, r4П, r5П, r6П путем сложения по модулю 2 информационных символов x1П х2П х3П, z1П z2П z3П, a1П а2П а3П, c1П с2П с3П, e1П е2П е3П, f1П f2П f3П, g1П g2П g3П, h1П h2П h3П, поступающих на входы входного блока 3 кодирования с информационных выходов узла 1 памяти, в соответствии с правилом:
выходы выходного блока 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 памяти, в данном случае, представляет собой статическое полупроводниковое оперативное устройство памяти и предназначен для хранения кодовых наборов: УK=x1 х2 х3, z1 z2 z3, a1 а2 а3, c1 с2 с3, e1 е2 е3, f1 f2 f3, g1 g2 g3, h1 h2 h3 r1 r2 r3 r4 r5 r6, полученных при кодировании исходных двадцатичетырехразрядных двоичных наборов.
Входной блок 2 кодирования предназначен для формирования значений контрольных разрядов r1, r2, r3, r4, r5, r6 путем сложения по mod2 информационных символов в соответствии с правилом:
Выходной блок 3 кодирования предназначен для формирования значений проверочных контрольных разрядов r1П, r2П, r3П, r4П, r5П, r6П путем сложения по mod2 информационных символов, полученных при считывании информации с узла 1 памяти в соответствии с правилом:
Блок 4 вычисления синдрома ошибки предназначен для обнаружения ошибки в кодовом наборе при считывании информации с узла 1 памяти путем сложения по mod2 значений контрольных разрядов r1, r2, r3, r4, r5 и r6, считываемых с вторых выходов узла 1 памяти, соответственно с значениями контрольных разрядов r1П, r2П, r3П, r5П и 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 | Значение первой части контрольных разрядов | Значения проверок второй части контрольных разрядов | |||||||
Ошибочный блок информации | X | 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 | 010 | 101 | 011 | 111 | 000 |
Если значение синдрома ошибки не соответствует значениям, представленным в таблице, то произошла не корректируемая ошибка (сигналы на выходе дешифратора имеют нулевые значения).
В этом случае, о наличии не корректируемой ошибки свидетельствует наличие единичного значения сигнала на выходе первого блока 10 элементов ИЛИ и отсутствие единичного значения сигнала на выходе второго элемента 11 ИЛИ.
Корректор 8 (блок 9 корректоров) предназначен для исправления корректируемой ошибки путем сложения по mod2 одноименных разрядов блока информации, имеющего ошибку с значением вектора ошибки.
Устройство работает следующим образом. Перед началом работы устройства на вход 15 "установки в нулевое состояние" подается единичный сигнал, который переводит устройство в нулевое состояние.
При записи информации в узел 1 памяти подаются единичные сигналы на вход 20 синхронизации, вход 16 записи, адресные входы 18 и информационные входы 19.
Входной блок 2 информации формирует значения контрольных разрядов по правилу:
Пример. Допустим, необходимо закодировать двоичный набор:
.
Тогда первая часть и вторая часть контрольных разрядов, сформированных относительно полученного кодового набора, соответственно равны:
r1=1, r2=0, r3=1, r4=1, r5=1, r6=1.
.
При отсутствии ошибки значение кодового набора, записанного в узле 1 памяти, равно считанному (переданному кодовому набору):
.
В этом случае на выходе блока 4 вычисления синдрома ошибки имеем нулевые значения сигналов.
Пусть произошла одиночная ошибка в первом разряде третьего блока информации (А=0*01), тогда выходной блок 3 кодирования сформирует относительно полученного кодового набора значения контрольных разрядов:
r1П=0, r2П=0, r3П=1.
В блоке 4 вычисления синдрома ошибки складываются переданные контрольные разряды с контрольными разрядами, сформированными относительно полученного кодового набора, в результате получим синдром ошибки:
.
В этом случае первая часть синдрома оказывает на ошибочный разряд блока информации, вторая часть синдрома указывает ошибочный блок A (см. таблицу 1).
На выходе дешифратора 7 появится единичное значение сигнала, которое открывает элементы И блока 7 коммутаторов, при этом значение вектора ошибки поступает на входы блока корректоров 9, где складывается по mod2 со значениями разрядов третьего блока информации:
В результате имеем правильное значение информации.
Пусть произошла одиночная ошибка в первом разряде первого блока информации, одиночная ошибка во втором разряде четвертого блока информации и тройная ошибка в пятом блоке информации:
.
В этом случае значения контрольных разрядов, сформированные выходным блоком 3 кодирования относительно полученного двоичного набора, равны:
r1П=0, r2П=1, r3П=0,
r3П=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 одноименных разрядов блоков (байтов) информации.
В результате получим кодовый набор:
,
Значения контрольных разрядов r1 f r2 f…rb f, r1 g r2 g……rb g позволяют сформировать значение синдрома ошибки, при этом первая часть контрольных разрядов r1 f r2 f…rb f определяет вектор ошибки (ошибочные разряды в блоке информации), а значение второй части контрольных разрядов r1 g r2 g……rb g предназначено для определения номера ошибочного блока (байта) информации.
В этом случае число байтов информации определяется по формуле:
w=2b
В связи с этим возникает необходимость формирования совокупности проверок (разработки правила кодирования информации), позволяющих определить блок информации, содержащий ошибку.
С этой целью для каждого блока информации выберем свою совокупность проверок, обнаруживающих ошибку, используя матрицу кодирования размерности
b×b.
Для первого блока информации матрица кодирования имеет вид:
или
В этом случае для первого блока информации значения контрольных разрядов соответственно равны r1 1=х1; r2 1=х2; …rb 1=xb.
Для второго и третьего информационных блоков матрицы кодирования имеют вид соответственно:
или
или
Не трудно заметить, что очередная матрица кодирования получается в результате циклической замены строк матрицы кодирования.
В результате получаем b исходных матриц кодирования, содержащих в своих строках по одной единице.
Для информационных блоков, начиная с b+1 блока, матрицы кодирования включают различные сочетания двух единиц в блоке информации:
Значения контрольных разрядов формируются сложением по mod2 элементов столбцов, соответствующих единичным значениям.
Так, например, если первый столбец больше не содержит единиц, то значение первого контрольного разряда равно: r1 i=m1⊕m2⊕m3.
Каждая очередная матрица кодирования для блоков информации, начиная с b+2 блока по C2 b-блок информации получается циклической заменой строк матрицы по аналогии с матрицей, содержащей в своих строках по одной единице.
Аналогичным образом строятся матрицы кодирования, содержащие в своих строках различные сочетания из трех единиц и т.д.
Окончательно имеем матрицу кодирования, каждый элемент которой содержит единицу. Построим также дополнительную матрицу кодирования, каждый элемент которой содержит нули.
Полученные таким образом значения контрольных разрядов позволяют построить код, корректирующий одиночные ошибки, и обнаруживать ошибки большей кратности.
Для коррекции ошибок в блоке информации кратности b проведем модификацию полученных матриц кодирования (за исключением матриц, содержащих все единицы и все нули), для чего разобьем полученную совокупность матриц кодирования попарно и в каждой паре изменим (инвертируем) по одному одноименному элементу.
Используя модифицированные матрицы кодирования, получим проверки, определяющие значения контрольных разрядов для каждого блока информации, путем сложения по mod2 элементов, соответствующих единичным значениям в столбцах полученных матриц.
Объединяя по модулю по mod2 одноименные контрольные проверки для всех блоков информации, получим значения контрольных разрядов r1 g r2 g……rb g для второй части контрольных разрядов кодового набора.
Таким образом, кодовый набор передается в виде:
Результат сложения по mod2 переданных значений контрольных разрядов ri f, ri g контрольных разрядов ri fП, ri gП, сформированных относительно полученных информационных разрядов, даст значение синдрома ошибки, включающего две части:
Значение синдрома ошибки Sf определяет вектор ошибки (ошибочные разряды в блоке информации), а значение синдрома ошибки Sg определяет номер ошибочного блока (байта) информации.
Стратегия декодирования заключается на следующих положениях:
1. Sf=0; Sg=0. Ошибок нет.
2. Sf=0; Sg≠0. Произошла ошибка в контрольных разрядах.
3. Sf≠0; Sg≠0 (Sg=0). Произошла ошибка в информационных байтах (в одном байте - корректируемая, в двух - обнаруживаемая).
Таким образом, разработанный код при оптимальном числе контрольных разрядов 2b обладает свойствами, характерными для кодов Рида-Соломона, и при этом позволяет:
- использовать процедуру линейного кодирования;
- повысить быстродействие кодирования и декодирования информации.
Пример. Допустим, имеем 24-разрядный двоичный набор, который разобьем на блоки информации по три разряда в каждом блоке:
Y=x1 х2 х3, z1 z2 z3, a1 а2 а3, c1 с2 с3, е1 е2 е3, f1 f2 f3, g1 g2 g3, h1 h2 h3.
Построим исходные матрицы кодирования для каждого блока информации:
, , , ,
, , , .
Складывая по mod2 элементы столбцов матриц, соответствующие единичным значениям, получим проверки, позволяющие получить значения контрольных разрядов для соответствующих блоков информации.
X→r1 1=x1, r2 1=x2, r3 1=x3; E→r1 5=e1⊕e3, r2 5=e1⊕e2, r3 5=e2⊕e3;
Z→r1 2=z3, r2 2=z1, r3 2=z2; F→r1 6=f1⊕f2, r2 6=f2⊕f3, r3 6=f1⊕f3;
A→r1 3=a2, r2 3=a3, r3 3=a1; G→r1 7=g1⊕g2⊕g3, r2 7=g1⊕g2⊕g3, r3 7=g1⊕g2⊕g3;
C→r1 4=c2⊕c3, r2 4=c1⊕c3, r3 4=c1⊕c2; H→r1 8=0, r2 8=0, r3 8=0.
В результате значение второй части контрольных разрядов формируется проверками:
Полученные значения контрольных разрядов, совместно с значениями первой части контрольных разрядов, сформированных путем сложения одноименных информационных разрядов блоков информации, позволяют иметь корректирующий код, исправляющий одиночные ошибки в любом блоке информации, и обнаруживать ошибки большей кратности.
В результате имеем код (30,6), корректирующий одиночные ошибки и обнаруживающий ошибки большей кратности.
Таблица 1 | ||||||||||
Значения синдромов для кода (30,6), исправляющего одиночные ошибки | ||||||||||
№ п/п | Безошибоч-ныйблок инфор -и 000 | Значение первой части контрольных разрядов | Значения проверок второй части контрольных разрядов | |||||||
Ошибочный блок информации | X | 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 |
Анализ представленной таблицы показывает, что в случае возникновения одиночной ошибки значения второй части синдромов для блоков информации различаются между собой, что позволяет корректировать данные ошибки.
При возникновении ошибок большей кратности или в нескольких информационных блоках значения синдромов неразличимы, в этом случае ошибка обнаруживается.
При этом выделенные синдромы указывают на наличие не корректируемой ошибки, не выделенные синдромы указывают блок информации, содержащий соответствующую одиночную корректируемую ошибку.
Пример. Допустим, необходимо закодировать двоичный набор:
.
Подставляя в полученные выражения формирования второй части контрольных разрядов значения соответствующих разрядов двоичного набора, получим:
r1 g=0⊕0⊕0⊕0⊕0⊕1⊕1⊕0⊕1⊕1⊕1⊕0=1;
r2 g=0⊕1⊕1⊕1⊕0⊕1⊕1⊕1⊕1⊕1⊕1⊕0=1;
r3 g=1⊕1⊕1⊕1⊕0⊕1⊕1⊕0⊕1⊕1⊕1⊕0=1.
Складывая одноименные информационные разряды блоков информации, получим первую часть контрольных разрядов 101.
Таким образом, безошибочный кодовый набор передается в виде:
.
Пусть произошла одиночная ошибка в первом разряде третьего блока информации (A), тогда первая часть и вторая часть контрольных разрядов, сформированных относительно полученного кодового набора, равны соответственно:
r1 f=0, r2 f=0, r3 f=1.
r1 g=0⊕0⊕0⊕0⊕0⊕1⊕1⊕0⊕1⊕1⊕1⊕0=1;
r2 g=0⊕1⊕1⊕1⊕0⊕1⊕1⊕1⊕1⊕1⊕1⊕0=1;
r3 g=1⊕1⊕1⊕0⊕0⊕1⊕1⊕0⊕1⊕1⊕1⊕0=0.
Складывая переданные контрольные разряды с контрольными разрядами, сформированными относительно полученного кодового набора, получим синдром ошибки:
.
В этом случае первая часть синдрома оказывает на ошибочный разряд блока информации, вторая часть синдрома указывает ошибочный блок (см. таблицу 1).
Таким образом, предлагаемый метод построения корректирующих кодов, обнаруживающих и корректирующих ошибки в байтах информации, позволяет исключить процедуру деления и умножения, необходимую при использовании циклических кодов, и заменить ее на линейную, повысить быстродействие кодирования и декодирования информации, обеспечить требуемый уровень обнаружения и коррекции ошибок.
Литература
1. Щербаков Н.С. Достоверность работы цифровых устройств. М.: Машиностроение, 1989, с.122, рис.45., 224 с.
Устройство хранения и передачи данных с исправлением одиночных ошибок в байте информации и обнаружением произвольных ошибок в байтах информации, содержащее узел памяти, входной блок кодирования, выходной блок кодирования, блок вычисления синдрома ошибки, дешифратор, коммутатор, блок коммутаторов, корректор, блок корректоров, отличающееся тем, что оно дополнительно содержит первый блок элементов ИЛИ, второй блок элементов ИЛИ, инвертор, элемент И, блок элементов И, вход установки устройства в нулевое состояние, вход записи, вход считывания, адресные входы, двадцатичетырехразрядные информационные входы, вход синхронизации, информационные выходы, выход сигнала «ошибка», вход установки в нулевое состояние, вход записи, вход считывания, адресные входы подключены соответственно к первому, второму, третьему и четвертому входам узла памяти, вход синхронизации подключен к пятому входу узла памяти и к первому входу блока элементов И, информационные входы подключены к шестым входам узла памяти и к входам входного блока кодирования, который формирует значения контрольных разрядов r1, r2, r3, r4, r5, r6 путем сложения по модулю 2 информационных символов x1, x2 x3, z1 z2 z3, a1 a2 a3, c1 c2 c3, e1 e2 e3, f1 f2 f3, g1 g2 g3, h1 h2 h3, поступающих на входы входного блока кодирования, в соответствии с правилом r1=x1⊕z1⊕a1⊕c1⊕e1⊕f1⊕g1⊕h1; r2=x2⊕z2⊕a2⊕c2⊕e2⊕f2⊕g2⊕h2; r3=x3⊕z3⊕a3⊕c3⊕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, которые поступают на седьмые входы узла памяти, информационные выходы узла памяти подключены соответственно к первым входам корректора, блока корректоров и к входам выходного блока кодирования, который формирует значения проверочных контрольных разрядов r1П, r2П, r3П, z4П, r5П, r6П путем сложения по модулю 2 информационных символов x1П x2П x3П, z1П z2П z3П, a1П a2П a3П, c1П c2П c3П, e1П е2П е3П, f1П f2П f3П, g1П g2П g3П, h1П h2П h3П, поступающих на входы входного блока кодирования с информационных выходов узла памяти, в соответствии с правилом r1П=x1П⊕z1П⊕a1П⊕c1П⊕e1П⊕f1П⊕g1П⊕h1П; r2П=x2П⊕z2П⊕a2П⊕c2П⊕e2П⊕f2П⊕g2П⊕h2П; r3П=x3П⊕z3П⊕a3П⊕c3П⊕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П, выходы выходного блока кодирования подключены к первым входам блока вычисления синдрома ошибки, к вторым входам которого подключены выходы контрольных разрядов узла памяти, первые выходы блока вычисления синдрома ошибки подключены к первым входам дешифратора, к первым входам коммутатора, к входам первого блока элементов ИЛИ и к первым входам блока коммутаторов, вторые выходы блока вычисления синдрома ошибки подключены к вторым входам дешифратора и к вторым входам первого блока элементов ИЛИ, выходы дешифратора подключены к входам второго блока элементов ИЛИ, при этом первый выход дешифратора подключен к второму входу коммутатора, а вторые выходы подключены к вторым входам блока коммутаторов, выход второго блока элементов ИЛИ через инвертор подключен к первому входу элемента И, второй вход которого подключен к выходу первого блока элементов ИЛИ, выход элемента И является выходом сигнала «ошибка», выходы коммутатора подключены к вторым входам корректора, выходы блока коммутаторов подключены к вторым входам блока корректоров, выходы корректора и блока корректоров подключены к вторым входам блока элементов И, выходы которого являются информационными выходами устройства.