Кодовый контроль по модулю относится к аппаратурным методам контроля и отличается от числового тем, что контрольное устройство выполняет действия с наименьшими остатками от суммы цифр двоичного числа без учёта занимаемого ими разряда. Слова входного алфавита контролируемого устройства, представленные в виде А=an an-1 ... a1 a0, преобразуются при этом в контрольные характеристики Sа в соответствии со следующим соотношением [14]:
Sа = [p-1 - mod p] mod p ,
где р - выбранный модуль контроля; = Na - сумма цифр слова А.
Вычет Sа является дополнением до величины p-1 наименьшего остатка от суммы цифр слова А по модулю р. Это делается для того, чтобы обнаруживать потерю слова А вместе с его контрольной характеристикой Sа.
Кодовый метод контроля может быть использован для проверки правильности выполнения арифметических и логических операций, передачи и хранения информации. Корректирующими свойствами он не обладает, так как веса разрядов при получении контрольной характеристики не учитываются. Частным случаем кодового контроля является широко распространённый контроль на чётность (нечётность). В этом случае происходит суммирование цифр слова по модулю 2. Особенностью кодового контроля является то, что при проверке правильности выполнения операций контролирующее устройство зависит от контролируемого, так как необходимо учитывать все возникающие переносы.
Контроль выполнения операций при кодовом контроле основан на следующем свойстве двоичного представления чисел: общее количество единиц слагаемых равно сумме единиц результата и возникших в процессе сложения переносов.
Обозначив для операции С = А + В через Nа, Nb, Nc количество единиц в числах А, В и С соответственно, а через Nп - количество переносов, возникающих при сложении, будем иметь
Na + Nb = Nc + Nп .
Преобразуя это выражение и переходя к остаткам по модулю р, получаем
(Na + Nb - Nп) º Nc mod p .
Обозначив
Na º Sa mod p ; Nb º Sb mod p ;
Nc º Sc mod p ; Nп º Sп mod p ,
получим контрольное соотношение для проверки правильности операции сложения
Sa + Sb - Sпº Sc mod p .
При ориентации на модуль р = 2 (чётность), как наиболее распространённый, соотношение проверки правильности операции сложения можно записать следующим образом:
SaÅ SbÅ Sп= Sc.
Применительно к операции сложения кодовый контроль по модулю 2 состоит в следующем (рис.16.11). Необходимо для слов А и В найти контрольные характеристики (разряды чётности) Sa и Sb; параллельно с вычислением суммы С=А+В получить сумму S0 = SaÅ Sb. Кроме того, по мере возникновения переносов в сумматоре, сформировать величину Sпи сложить её с S0 по модулю 2, получив предполагаемую контрольную характеристику суммы S'c. Результат операции С свернуть и произвести сравнение Sc= S'c. При несовпадении Sc и S'c вырабатывается сигнал ошибки. Так же, как и при числовом контроле по модулю, контрольные характеристики Sa и Sb могут вычисляться заблаговременно, записываться в специально отведённые разряды и всюду сопровождать основные информационные разряды.
Рис.16.11. Схема контроля операции сложения
кодовым контролем по модулю 2
Пример 16.3. Для заданных двоичных чисел А = 01100111 и В = 01010011 определить контрольные коды самих чисел, их суммы и возникающих при суммировании переносов, если модуль кодового контроля р=2 (чётность). Произвести кодовый контроль операции сложения.
Решение. Контрольные коды заданных чисел:
Sa = mod p = 5 mod 2 = 1 ,
Sb = mod p = 4 mod 2 = 0 .
Произведём операцию сложения двоичных чисел, определим их сумму и число возникающих переносов:
Nп = 4, Sп = 4 mod p = 4 mod 2 = 0 .
Sc = mod p = 5 mod 2 = 1 .
Осуществим проверку правильности выполнения операции сложения:
S'c= SaÅ SbÅ Sп = 1 Å 0 Å 0 = 1 .
Контрольные коды Sc и S'cсовпадают, что свидетельствует о правильности выполнения операции.
Ответ:Sa = 1, Sb = 0, Sп = 0, Sc = S'c =1.
Поскольку операция арифметического умножения состоит из ряда сложений, а операция деления - из ряда сложений и вычитаний, то, контролируя правильность каждого сложения-вычитания, можно проконтролировать правильность выполнения данных операций.