МНОГОРАЗРЯДНЫЙ ПАРАЛЛЕЛЬНЫЙ СУММАТОР ПО МОДУЛЮ С ПОСЛЕДОВАТЕЛЬНЫМ ПЕРЕНОСОМ
MULTIDIGIT PARALLEL SUMMATOR BY MODULE WITH SEQUENTIAL CARRY

Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах цифровой обработки сигналов и в криптографических приложениях.
Известен последовательный многоразрядный сумматор, который содержит n-разрядные сдвиговые регистры операндов X и Y, регистр результата S, одноразрядный сумматор SM и двухступенчатый D-триггер для запоминания переноса. (Бабич Н.П., Жуков И.А. Основы цифровой схемотехники: Учебное пособие. - М.: Издательский дом «Додэка-XXI», Киев.: «МК-Пресс», 2007. - рисунок 4,45 с.176).
Недостатком данного сумматора являются ограниченные функциональные возможности, а именно невозможность суммирования по модулю.
Наиболее близким по технической сущности к заявляемому изобретению является многоразрядный параллельный сумматор с последовательным переносом, содержащий n одноразрядных параллельных сумматоров с соответствующими связями (см. Пухальский Г.И., Новосельцева Т.Я. Проектирование дискретных устройств на интегральных микросхемах: Справочник. - М.: Радио и связь, 1990. Рисунок 3.45, с.133).
Недостатком данного сумматора являются ограниченные- функциональные возможности, а именно невозможность суммирования по модулю.
Цель изобретения - расширение функциональных возможностей устройства за счет введения операции суммирования по модулю.
Для достижения поставленной цели в многоразрядный параллельный сумматор по модулю с последовательным переносом, состоящий из n одноразрядных параллельных сумматоров, где n - максимальный разряд чисел суммирования, причем на первые входы сумматоров подается двоичный код первого числа суммирования, на вторые входы сумматоров подается двоичный код второго числа суммирования, на вход переноса числа первого сумматора подается логический ноль, выход переноса числа i-го сумматора подключен ко входу переноса числа (i+1)-го сумматора, где i=1, … n-1 - номер сумматора, информационные выходы n сумматоров являются информационными выходами устройства, введен (n+1)-й одноразрядный параллельный сумматор по модулю, а первые n одноразрядных параллельных сумматоров выполнены в виде одноразрядных параллельных сумматоров по модулю, входы модуля всех одноразрядных параллельных сумматоров по модулю являются входами модуля устройства, управляющие входы которых подключены к выходу переноса модуля n+1-го одноразрядного параллельного сумматора, на вход первого и второго чисел суммирования (n+1)-го одноразрядного параллельного сумматора по модулю подаются логические нули, выход переноса числа n-го одноразрядного параллельного сумматора по модулю подключен ко входу переноса числа (n+1)-го одноразрядного параллельного сумматора по модулю, на вход переноса модуля первого одноразрядного параллельного сумматора по модулю подается логическая единица, выход переноса модуля i-го одноразрядного параллельного сумматора по модулю подключен ко входу переноса модуля (i+1)-го одноразрядного параллельного сумматора по модулю, где i=1, … n, информационный выход n+1 сумматора является информационным выходом устройства. При этом одноразрядный параллельный сумматор по модулю состоит из двух одноразрядных параллельных сумматоров, двух логических элементов НЕ, двух логических элементов И и одного логического элемента ИЛИ, причем первый вход первого одноразрядного параллельного сумматора является входом первого числа суммирования устройства, второй вход является входом второго числа суммирования устройства, третий вход является входом переноса числа устройства, информационный выход подключен ко второму входу второго одноразрядного параллельного сумматора и ко второму входу первого логического элемента И, а выход переноса является выходом переноса числа устройства, код модуля подается на вход первого логического элемента НЕ, выход которого подключен к первому входу второго одноразрядного параллельного сумматора, третий вход которого соединен со входом переноса модуля устройства, информационный выход подключен ко второму входу второго логического элемента И, а выход переноса является выходом переноса модуля устройства, управляющий вход устройства подключен к первому входу второго логического элемента И и ко входу второго логического элемента НЕ, выход которого подключен к первому входу первого логического элемента И, выходы первого и второго логических элементов И подключены ко входам логического элемента ИЛИ, выход которого является информационным выходом устройства. Одноразрядный параллельный сумматор по модулю состоит из двух одноразрядных параллельных сумматоров, двух логических элементов НЕ, двух логических элементов И и одного логического элемента ИЛИ, причем первый вход первого одноразрядного параллельного сумматора является входом первого числа суммирования устройства, второй вход является входом второго числа суммирования устройства, третий вход является входом переноса числа устройства, информационный выход подключен ко второму входу второго одноразрядного параллельного сумматора и ко второму входу первого логического элемента И, а выход переноса является выходом переноса числа устройства, код модуля подается на вход первого логического элемента НЕ, выход которого подключен к первому входу второго одноразрядного параллельного сумматора, третий вход которого соединен со входом переноса модуля устройства, информационный выход подключен ко второму входу второго логического элемента И, а выход переноса является выходом переноса модуля устройства, управляющий вход устройства подключен к первому входу второго логического элемента И и ко входу второго логического элемента НЕ, выход которого подключен к первому входу первого логического элемента И, выходы первого и второго логических элементов И подключены ко входам логического элемента ИЛИ, выход которого является информационным выходом устройства.
Сущность изобретения заключается в реализации следующего способа суммирования по модулю.
а
a
1
n
1
n
1
n+1
1
n+1
1
n+1
1
n+1
1
n+1
1
n+1
1
n+l
1
n+1
1
n+l
При сложении двух чисел, представленных в виде двоичных кодов А (, …, ) и В (b, …, b) образуется сумма С (с, …, c). Чтобы найти результат суммирования чисел А и В по модулю М (m, … m), необходимо найти решение разности С (с, …, c) - М(m, …, m). Если полученное значение отрицательно, то S(s, …, s)=С(с, …, c), если положительное, то S(s, …, s)=С(с, …, c) - М(m, …, m).
На фиг.1 представлена схема многоразрядного параллельного сумматора по модулю с последовательным переносом.
i
i
0
i
0
i
0
Out
Многоразрядный параллельный сумматор по модулю с последовательным переносом содержит n+1 одноразрядных параллельных сумматоров 1 по модулю, где n количество разрядов чисел суммирования. На вход А n сумматоров 1 подается код числа А, на вход В n сумматоров 1 подается код числа В. На входы А и В n+1-ого сумматора 1 подаются логические нули. На вход М всех сумматоров 1 подается код числа М. На вход Р первого сумматора 1 подается логический ноль, на вход РМ первого сумматора 1 - логическая единица. Выход Р j-го сумматора 1 соединен со входом P (j+1)-го сумматора 1, выход РМ j-го сумматора 1 соединен со входом PM (j+1)-го сумматора 1, где j=1, …, n. Выход РМ (n+1)-го сумматора 1 является выходом переноса pm устройства, который соединен с управляющим входом W всех n+1 сумматоров 1. Выходы S всех сумматоров 1 являются информационными выходами устройства.
На фиг.2. представлена схема одноразрядного параллельного сумматора 1 по модулю.
Одноразрядный параллельный сумматор 1 по модулю состоит из двух одноразрядных параллельных сумматоров 2, двух логических элементов НЕ 5, двух логических элементов И 3 и одного логического элемента ИЛИ 4, причем первый вход первого одноразрядного параллельного сумматора 2 является входом первого числа суммирования устройства, второй вход является входом второго числа суммирования устройства, третий вход является входом переноса числа устройства, информационный выход подключен ко второму входу второго одноразрядного параллельного сумматора 2 и ко второму входу первого логического элемента И 3, а выход переноса является выходом переноса числа устройства, код модуля подается на вход первого логического элемента НЕ 5, выход которого подключен к первому входу второго одноразрядного параллельного сумматора 2, третий вход которого соединен со входом переноса модуля устройства, информационный выход подключен ко второму входу второго логического элемента И 3, а выход переноса является выходом переноса модуля устройства, управляющий вход устройства подключен к первому входу второго логического элемента И 3 и ко входу второго логического элемента НЕ 5, выход которого подключен к первому входу первого логического элемента И 3, выходы первого и второго логических элементов И 3 подключены ко входам логического элемента ИЛИ 4, выход которого является информационным выходом устройства.
1
n
1
n
1
n+1
1
n
1
n
1
n
1
n
1
n+1
Многоразрядный параллельный сумматор по модулю с последовательным переносом работает следующим образом. На информационные входы сумматоров 1 подаются в двоичном виде коды чисел суммирования А(а, …, a) и В(b, …, b) и код модуля М(m, …, m). Последовательно для каждого разряда каждым одноразрядным параллельным сумматором по модулю 1 формируется перенос числа и перенос модуля. Если сигнал на выходе переноса модуля (n+1)-го одноразрядного параллельного сумматора 1 по модулю равен единице, то из суммы (А+В) вычитается значение модуля, в противном случае два числа А(а, …, a) и В(b, …, b) суммируются обычным способом. При этом последовательно поразрядно формируется результат суммирования двух чисел А(а, …, a) и В(b, …, b) по модулю М(m, …, m).
Рассмотрим работу сумматора на примере.
10
2
10
2
10
2
Пусть А=6=110, В=4=110, M=9=1001. Воспользовавшись таблицей истинности полного одноразрядного сумматора 1 по модулю (табл.1), найдем промежуточные и конечный результаты суммирования по модулю. Устройство для данного примера будет содержать четыре одноразрядных параллельных сумматора по модулю.
2
2
2
0
0
0
0
0
0
0
2
10
На входы четырех сумматоров подаются коды чисел А=110, В=110, М=1001. На выходе первого сумматора Р=0, РМ=0. На выходе второго сумматора Р=0, РМ=1. На выходе третьего сумматора Р=1, РМ=1. На выходе четвертого сумматора РМ=1 эта единица поступает на все входы W всех четырех сумматоров. В результате на выходе первого сумматора S=1, на выходе второго сумматора S=0, на выходе третьего сумматора S=0, на выходе четвертого сумматора S=0, на выходе устройства появляется число 0001=1.
Проверим: 6+4=10, 10≡1 mod 9.
i
i
i
i
0
0
0
0
Одноразрядный параллельный сумматор 1 по модулю работает следующим образом. На вход А подается разряд первого числа суммирования А, на вход В - второго числа суммирования В. Вход P служит входом переноса числа P, вход PM - входом переноса модуля PM. На вход М подается разряд модуля М. Вход W является управляющим входом W. Выход P является выходом переноса P, выход PM - выходом переноса модуля PM. Выход S является информационным выходом. Устройство работает в соответствии с таблицей истинности (Табл.1). Если на вход W поступает логический ноль, то в результате S=A+B, если логическая единица, то S=(A+B)-M.
Таблица 1.
Таблица истинности полного одноразрядного сумматора по модулю.
А
B
P<sub>i</sub>
P<sub>O</sub>
M
PM<sub>i</sub>
W
PM<sub>0</sub>
S
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
1
1
1
0
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0
1
1
1
0
0
0
0
0
1
0
1
1
0
0
0
0
0
1
1
1
1
0
0
0
1
1
0
0
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
1
1
1
0
1
1
0
0
0
0
0
0
1
0
1
0
0
0
1
0
1
1
1
1
0
0
0
0
1
0
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
1
0
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
1
0
0
0
0
1
0
1
1
1
1
0
1
0
1
0
1
0
0
0
1
0
0
1
0
1
1
0
1
1
1
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
1
1
1
0
1
0
1
1
0
0
0
0
1
1
0
0
0
0
1
0
0
1
1
0
1
1
1
0
0
0
1
1
0
1
1
1
1
0
1
1
1
0
0
0
0
0
1
0
1
1
0
1
1
0
1
1
1
1
1
0
0
0
1
0
1
1
1
1
0
0
0
1
1
1
1
1
1
0
1
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
1
" Г
0
1
0
0
0
0
0
1
1
0
1
1
0
1
0
0
1
0
1
0
0
1
0
0
0
1
1
0
0
1
1
1
0
0
1
0
1
1
0
1
1
0
0
1
0
1
А
B
P<sub>i</sub>
P<sub>O</sub>
M
PM<sub>i</sub>
W
PM<sub>O</sub>
S
1
1
1
1
0
0
1
1
0
0
0
0
0
1
0
1
0
0
0
1
0
0
1
0
1
0
1
1
0
0
0
1
0
1
0
1
1
1
0
1
1
0
1
0
0
0
0
1
0
1
0
1
0
1
0
1
1
1
1
0
1
0
0
1
0
1
1
1
0
1
0
0
1
1
1
1
1
0
1
0
1
0
0
0
0
0
1
1
1
0
0
1
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
1
0
1
1
1
0
0
0
1
0
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
1
1
0
1
1
1
0
1
1
1
1
0
1
1
1
1
0
0
0
0
1
1
1
0
1
0
1
0
0
1
1
1
1
0
1
0
0
0
1
1
1
1
0
1
1
0
1
1
1
1
0
1
0
0
1
0
1
1
1
1
0
0
1
1
1
1
1
1
0
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0