Устройство коррекции ошибок в модулярном коде на основе расширения системы оснований
DEVICE FOR ERRORS CORRECTION IN MODULAR CODE BASED ON BASIC SYSTEM EXPANSION

Заявленное изобретение относится к вычислительной технике и, в частности к непозиционным компьютерным устройствам, и предназначено для обеспечения требуемой точности при вычислении с использованием модулярного кода.
i
i
n+1
Известно устройство расширения оснований модулярного кода [1] (Патент РФ №2562366, Устройство расширения оснований модулярного кода), которое имеет вход устройства, первый блок умножителей, который содержит n умножителей по модулю p(z), где i=1, 2,…, n, первый блок памяти для хранения ортогональных весов m(z); второй блок умножителей, который содержит n умножителей по модулю p(z), второй блок памяти для хранения , сумматор по модулю два, выход устройства.
Недостатком устройства является невозможность выполнения процедуры исправления ошибок, возникающих в процессе работы вычислительного устройства, функционирующего в модулярных кодах.
Целью изобретения является расширение функциональных возможностей устройства, то есть проведения коррекции ошибок кодом полиномиальной системы классов вычетов (ПСКВ), на основе использования операций расширения оснований.
Техническим результатом, достигнутым при осуществлении заявленного изобретения, является расширение функциональных возможностей устройства, позволяющих исправлять ошибки в кодовой комбинации ПСКВ на основе выполнения операции расширения оснований.
Указанный технический результат достигается за счет введения блока регистров, состоящего из n+2 регистров, предназначенных для хранения остатков, где n - количество информационных оснований ПСКВ, n+1 и n+2 - контрольные основания ПСКВ, блока вычисления второго контрольного остатка, структура которого соответствует структуре прототипа [1], двух сумматоров вычисления синдрома ошибки, блока памяти, предназначенного для хранения вектора ошибки, n+2 корректирующих сумматоров, с помощью которых происходит исправление ошибки по модулю два.
i
i
i
Используя коды ПСКВ, можно операцию сложения, вычитания и умножения двух операндов, представленных в полиномиальной форме A(z) и B(z), свести к выполнению этих операций над соответствующими остатками α(z) и β(z). При этом в ПСКВ эти операции производятся независимо по каждому из модулей p(z), что указывает на параллелизм данной алгебраической системы.
Кроме того, особенность ПСКВ состоит еще и в том, что независимость обработки информации по основаниям ПСКВ позволяет не только повысить скорость и точность обработки, но также и обеспечить обнаружение и коррекцию ошибок в процессе функционирования вычислительного устройства.
i
В ПСКВ в качестве оснований системы используются неприводимые полиномы p(x), где i=1, 2, …, n, любой полином А(х), удовлетворяющий условию
раб
где  - рабочий диапазон системы, degP(x) - степень полинома, можно однозначно представить в виде набора остатков
i
i
где α(x)=А(x)modp(x); i=1, 2, …, n.
1
2
n
n+1
n+2
Для обнаружения и исправления однократных ошибок в модулярном коде полинома А(x)=(α(x),α(x),…,α(x)) вводят два контрольных основания p(x) и p(x), которые удовлетворяют условию
Наличие двух контрольных оснований позволяет определить местоположение ошибки и ее глубину в коде ПСКВ.
*
Возникновение ошибки в непозиционной кодовой конструкции A(z) переводит ее из подмножества разрешенных комбинаций в подмножество запрещенных. Согласно китайской теореме об остатках (КТО) значение ошибочного полинома A(z) в этом случае определяется выражением
j
j
где  - полный диапазон кода ПСКВ; Δα(z) - глубина ошибки по j-му основанию кода ПСКВ; B(z) - ортогональный базис j-го основания кода ПСКВ; j=1, 2, …, n+2.
*
раб
Анализ выражения (4) показывает, что местоположение ошибочного полинома A(z) относительно рабочего диапазона P(z) определяется величиной второго слагаемого.
Рассмотрим алгоритм перевода из безызбыточного полиномиального модулярного кода в позиционный код согласно КТО имеем
i
i
i
i
где В(z)=m(z)P(z) - ортогональный базис; m(z) - вес ортогонального базиса;  - ранг кода ПСКВ.
Воспользуемся определением ортогональных базисов, тогда выражение (5) можно представить в виде
i
i
i
A
Умножение остатка α(z) на вес ортогонального базиса m(z) выполняется по модулю p(z), что позволяют отказаться от вычисления ранга r(z) при использовании китайской теоремы об остатках при переводе к позиционному коду.
1
n
n+1
n+2
Чтобы осуществить поиск и коррекцию ошибки в коде ПСКВ на основе расширения системы оснований, необходимо, используя остатки по рабочим основаниям (α(z), …, α(z)), вычислить остатки по контрольным основаниям p(z) и p(z).
n+1
Тогда для вычисления первого контрольного остатка  по основанию p(z) используем следующее выражение
n+2
Вычисление второго контрольного остатка  по основанию p(z) определяется выражением
n+1
n+2
1
2
n+1
n+2
После этого вычисленные остатки  и  складываются по модулю два с остатками α(z) и α(z), которые входят в состав комбинации кода ПСКВ A(z)=(α(z), α(z), …, α(z), α(z)). В результате получается синдром ошибки, который определит местоположение и глубину ошибки в коде
Если полученный синдром будет равен нулю, то это означает, что код ПСКВ не содержит ошибки. Если синдром будет отличен от нуля, то это будет означать, что код ПСКВ содержит ошибку.
Структура устройства коррекции ошибок в модулярном коде на основе расширения системы оснований представлена на фиг. 1.
i
i
n+m
Устройство содержит блок регистров, состоящий из n+2 регистров 1.1, …, 1.n+2, который подключен к входу устройства, на который подается код ПСКВ. Регистры предназначены для хранения остатков кода ПСКВ. Для вычисления остатков по контрольным основаниям используется блок 2.1 вычисления первого контрольного остатка и блок 2.2 вычисления второго контрольного остатка. Структура этих блоков одинаковая. Каждый из блоков содержит первый 3.m блок умножителей, где m=1, 2, в состав которого входят n умножителей по модулю p(z) 3.m.i, где i=1, 2, …, n, первый блок 4.m памяти для хранения ортогональных весов m(z); второй блок умножителей 5.m, который содержит n умножителей по модулю p(z), второй блок памяти 6.m для хранения , сумматор 7.m по модулю два. Устройство содержит также два сумматора вычисления синдрома ошибки 8.1 и 8.2, блок памяти 9, предназначенный для хранения вектора ошибки, n+2 корректирующих сумматора 10.1, …, 10.n+2, выходы которых являются выходом устройства.
i
i
i
i
n+1
n+2
n+1
n+2
Причем вход устройства подключен к входам регистров 1.1, …, 1.n+2. Выход i-го регистра 1.i, где i=1, 2, …, n, предназначенного для хранения информационного остатка α(z), подключен к первому входу соответствующего умножителя по модулю p(z) 3.1.i блока 2.1 вычисления первого контрольного основания и 3.2.i блока 2.2 вычисления второго контрольного основания. Ко второму входу этих умножителей по модулю p(z) 3.1.i и 3.2.i соответственно подключены выходы первых блоков памяти 4.1 и 4.2. Выходы умножителей по модулю p(z) 3.1.i и 3.2.i подключены соответственно к первым входам умножителей 5.1.i по модулю p(z) и 5.2.i по модулю p(z), входящих в состав второго блока умножителей 5.1 и 5.2 соответственно. Вторые входы умножителей 5.1.i по модулю p(z) и 5.2.i по модулю p(z) соединены с выходами второго блока памяти 6.1 и 6.2, а выходы подключены к входам сумматора по модулю два 7.1 и 7.2 блока 2.1 вычисления первого контрольного основания и блока 2.2 вычисления второго контрольного основания. Выходы сумматоров по модулю два 7.1 и 7.2 соответственно подключены к первым входам сумматоров вычисления синдрома ошибки 8.1 и 8.2, вторые входы которых соединены с выходами регистров 1.n+1 и 1.n+2. Выходы сумматоров вычисления синдрома ошибки 8.1 и 8.2 подключены соответственно к входам блока памяти 9, выходы которого подключены соответственно ко вторым входам корректирующих сумматоров 10.1, …, 10.n+2. Первые входы корректирующих сумматоров 10.1 …, 10.n+2 подключены к соответствующим выходам регистров 1.1-1.n+2. Выход корректирующих сумматоров 10.1, …, 10.n+2 являются выходом устройства.
1
2
n
n+1
n+2
i
i
i
i
i
i
i
n+1
n+2
n+1
n+2
n+1
Устройство работает следующим образом. На вход устройства поступает модулярный код α(z), α(z), …, α(z), α(z), α(z). Данные остатки записываются в регистры 1.1-1.n+2. Информационный остаток α(z), где i=1, 2, …, n с выхода регистра 1.i подается на первый вход умножителя 3.1.i, первого блока 3.1 умножителей блока 2.1 вычисления первого контрольного остатка и на первый вход умножителя 3.2.i, первого блока 3.2 умножителей блока 2.2 вычисления второго контрольного остатка. На второй вход умножителя по модулю p(z) 3.1.i и 3.2.i подается с выходов первых блоков памяти 4.1 и 4.2 значения базиса m(z). С выхода умножителя по модулю p(z) 3.1.i и 3.2.i соответственно первого блока умножителей 3.1 и 3.2 снимаются значения α(z)m(z)modp(z), которые затем подаются на первый вход умножителя по модулю p(z) 5.1.i второго блока умножителей 5.1 и вход умножителя по модулю p(z) 5.2.i второго блока умножителей 5.2. На вторые входы этих умножителей, выполняющих умножение по модулю p(z) и p(z) соответственно, поступают значения , и , которые хранились в втором блоке памяти 6.1 и 6.2. С выхода умножителя по модулю p(z) 5.1.i, второго блока умножителей 5.1 блока 2.1 вычисления первого контрольного остатка снимается значение
n+2
С выхода умножителя по модулю p(z) 5.2.i, второго блока умножителей 5.2 блока 2.2 вычисления второго контрольного остатка снимается значение
Вычисленные значения произведения соответственно подаются на входы сумматора 7.1 и 7.2 по модулю 2. На выходе сумматора 7.1 по модулю два блока 2.1 вычисления первого контрольного остатка появляется значение остатка  в расширенной системе оснований. На выходе сумматора 7.2 по модулю два блока 2.2 вычисления второго контрольного остатка появляется значение остатка  в расширенной системе оснований.
Вычисленное значение остатка  поступает на первый вход сумматора 8.1 вычисления синдрома ошибки. На второй вход сумматора 8.1 вычисления синдрома с выхода регистра 1.n+1 подается значение контрольного основания , комбинации поступившей на вход устройства.
n+2
Вычисленное значение остатка  поступает на первый вход сумматора 8.2 вычисления синдрома ошибки. На второй вход сумматора 8.1 вычисления синдрома с выхода регистра 1.n+2 подается значение контрольного основания α(z), комбинации, поступившей на вход устройства.
1
2
1
2
n
n+1
n+2
С выхода сумматора 8.1 вычисления синдрома ошибки значение синдром ошибки S поступает на первый вход блока памяти 9. С выхода сумматора 8.2 вычисления синдрома ошибки значение синдром ошибки S поступает на второй вход блока памяти 9. С выхода блока памяти 9 снимается значение, которое предназначено для исправления ошибки в коде ПСКВ. Данное значение поступает на вторые входы корректирующих сумматоров по модулю два 10.1, …, 10.n+2. На первые входы этих сумматоров по модулю два 10.1, …, 10.n+2 подаются значения остатков кода ПСКВ α(z), α(z), …, α(z), α(z), α(z) с выходов регистров 1.1, …, 1.n+2 соответственно. С выходов сумматоров по модулю два 10.1, …, 10.n+2 откорректированный код ПСКВ подается на выход устройства.
4
2
4
3
2
4
3
4
i
2
3
4
5
Рассмотрим пример. Пусть задано расширенное поле Галуа GF(2), в котором определены информационные основания p(z)=z+1, p(z)=z+z+1, p(z)=z+z+z+z+1, расширяем систему оснований за счет введения двух контрольных оснований p(z)=z+z+1 и р(z)=z+z+1. В этом случае .
При этом полный диапазон составляет:
полн
15
Р(z)=z+1.
конт45
8
7
5
4
3
Р(z)=z+z+z+z+z+z+1.
i
i
Определим значения рабочих оснований P(z) и m(z):
1
2
3
6
4
3
2
P(z)=p(z)⋅p(z)=z+z+z+z+1
2
1
3
5
P(z)=p(z)⋅p(z)=z+1
3
1
2
3
P(z)=p(z)⋅p(z)=z+1,
1
2
3
2
m(z)=1; m(z)=z+1; m(z)=z+z+1.
i
Следовательно, ортогональные базисы В(z) соответственно равны
1
1
1
6
4
3
2
B(z)=m(z)⋅P(z)=z+z+z+z+1;
2
2
2
6
5
B(z)=m(z)⋅P(z)=z+z+z+1;
3
3
3
5
4
3
2
B(z)=m(z)⋅P(z)=z+z+z+z+z+1.
6
Воспользуемся полином A(z)=z. В модулярном коде полином представляет A(z)=(1, 1, z).
4
5
4
3
4
Расширяем систему оснований за счет введения двух контрольных оснований p(z)=z+z+1 и p(z)=z+z+1.
n+1
4
4
3
Первое основание расширения системы p(z)=р(z)=z+z+1
i
4
Вычислим значения P(z)modp(z). Тогда имеем
Определим произведение  они соответственно равны
Подставляем полученные значения в выражение (7)
n+1
4
4
4
3
3
2
Результат расширения по основанию p(z)=p(z)=z+z+1 получили остаток α(z)=z+z+z+1. Проведем проверку и определим остаток исходного полинома
n+2
5
4
Второе основание расширения p(z)=p(z)=z+z+1.
i
5
Вычислим значения P(z)modp(z). Тогда имеем
Определим произведение  Они соответственно равны
Подставляем полученные значения в выражение (8)
n+2
5
5
4
3
2
Результат расширения по основанию p(z)=p(z)=z+z+1 - остаток α(z)=z+z. Проведем проверку и определим остаток исходного полинома
Таким образом, расширенная комбинация избыточного кода ПСКВ будет иметь вид
3
2
3
2
A(z)=(1, 1, z, z+z, z+z+z+1).
3
2
3
2
Если на вход устройства и обнаружения ошибки, использующего разработанный алгоритм расширения системы оснований, поступит A(z)=(1, 1, z, z+z, z+z+z+1), то синдром ошибки будет равен
Так как синдром ошибки равен нулю, следовательно, проверяемая комбинация кода ПСКВ не содержит ошибки.
Рассмотрим ситуацию, когда проверяемая комбинация ПСКВ содержит ошибку по первому основанию и ее глубина равна Δα(z)=1. Тогда значение первого остатка равно Ошибочная комбинация модулярного кода ПСКВ имеет вид
*
3
2
3
2
A(z)=(0, 1, z, z+z,z+z+z+1).
Определим произведение  для данной ошибочной комбинации кода ПСКВ
Вычислим первый контрольный остаток, подставив значения в выражение (7)
n+1
4
4
3
Результатом расширения по основанию p(z)=p(z)=z+z+1 является остаток .
Вычислим второй контрольный остаток, подставив значения в выражение (8)
n+2
5
4
Результатом расширения по основанию p(z)=p(z)=z+z+1 является остаток
Выполним проверку комбинации путем вычисления синдрома ошибки, имеем
1
2
1
i
Проверяемая комбинация содержит ошибки, так как синдром ошибки отличен от нуля. В таблице 1 приведены значения глубины и местоположения ошибки в коде ПСКВ по рабочим основаниям и соответствующего им синдрома ошибки S(z) и S(z). Данные в таблице приведены в шестнадцетеричной системе счисления. По значению синдрома ошибки определяем, что ошибка произошла по первому основанию p(z)=z+1, а ее глубина равна Δα(z)=1. Значит, вектор ошибки будет равен e(z)=(1, 0, 0, 0, 0).
Для коррекции ошибки необходимо данный вектор ошибки сложить с ошибочной комбинацией кода ПСКВ. Имеем
4
1
2
4
3
Если ошибка произойдет по первому контрольному основанию p(z)=z+z+1, то значение первой составной синдрома S(z) будет показывать глубину ошибки, а значение S(z) будет равняться нулю.
5
2
1
4
Если ошибка произойдет по второму контрольному основанию p(z)=z+z+1, то значение второй составной синдрома S(z) будет показывать глубину ошибки, а значение первой составляющей синдрома S(z) будет равняться нулю.