RU2368942C2 - Устройство для формирования остатка по произвольному модулю - Google Patents
Устройство для формирования остатка по произвольному модулю Download PDFInfo
- Publication number
- RU2368942C2 RU2368942C2 RU2007124282/09A RU2007124282A RU2368942C2 RU 2368942 C2 RU2368942 C2 RU 2368942C2 RU 2007124282/09 A RU2007124282/09 A RU 2007124282/09A RU 2007124282 A RU2007124282 A RU 2007124282A RU 2368942 C2 RU2368942 C2 RU 2368942C2
- Authority
- RU
- Russia
- Prior art keywords
- modulo
- input
- adders
- adder
- inputs
- Prior art date
Links
Images
Landscapes
- Error Detection And Correction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах для формирования элементов конечных полей и в криптографических приложениях. Техническим результатом является повышение быстродействия. Устройство содержит блок формирователей частичных остатков по модулю, блок умножителей по модулю и блок сумматоров по модулю. 3 н.п. ф-лы, 3 ил.
Description
Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах для формирования элементов конечных полей и в криптографических приложениях.
Известно устройство для формирования остатка по произвольному модулю от числа, содержащее регистры, элементы ИЛИ, вычислитель, схемы сравнения, мультиплексор, элемент задержки, сумматор, группу блоков элементов И и блок постоянной памяти со связями (см. авт. св. СССР №1633495, кл. H03M 7/18, 1991).
Недостатком известного устройства является низкая надежность, так как для его реализации требуется большой объем оборудования.
Наиболее близким по технической сущности к заявляемому изобретению является комбинационный рекуррентный формирователь остатков, содержащий комбинационный формирователь частичных остатков, блок ключей и блок сумматоров по модулю (см. патент РФ №2029435, кл. 6 H03M 7/18, 20.02.1995, бюл. №5).
Недостатком данного устройства является низкое быстродействие.
Целью изобретения является повышение быстродействия.
Сущность изобретения заключается в реализации следующего способа формирования остатка по произвольному модулю.
Пусть требуется сформировать остаток r от числа А по модулю р.
Число А может быть представлено в позиционной системе счисления в виде
где ai, - коэффициенты, принимающие значения 0 или 1, n - количество разрядов в представлении числа А. Это выражение может быть представлено в следующем виде:
Из теории чисел известно, что операция приведения по модулю инвариантна к сложению и умножению, т.е. величина остатка не зависит от того, вычислен он от суммы (произведения) или от каждого слагаемого (сомножителя), а затем соответствующие частичные остатки просуммированы (перемножены) и от результата вычислен остаток по модулю.
В таком виде значительно облегчается задача нахождения остатка r от числа A.
Для вычисления остатка от числа А по модулю р достаточно в выражении (2) просуммировать частичные остатки по модулю р от чисел 22i(a2i+12+a2i), где - при n четном и при n нечетном. Частичные остатки получаются в результате умножения частичного остатка от 22i по модулю р на число
(a2i+12+a2i). Способ вычисления частичных остатков от 22i по модулю р состоит в следующем. Вычисление частичного остатка от 22i заключается в умножении на четыре частичного остатка от 22(i-1) и приведение результата по модулю р. Операция умножения на четыре может быть реализована сдвигом всех разрядов числа на два разряда влево. Операция приведения по модулю реализуется следующим образом. Если число не превышает величину р, то оно остается без изменения. Если оно лежит в интервале от р до 2р-1, то из него вычитается модуль р. Если число лежит в интервале от 2р до 3р-1, то из него вычитается удвоенный модуль р. Если число лежит в интервале от 3р до 4р-1, то из него вычитается утроенный модуль р. Способ умножения частичного остатка от 22i по модулю p на число (a2i+12+a2i) состоит в следующем. Частичный остаток от 22i по модулю р, умноженный на a2i+12, складывается с частичным остатком от 22i по модулю р, умноженный на a2i. Если полученный результат не превышает величину р, то оно остается без изменения. Если оно лежит в интервале от p до 2р-1, то из него вычитается модуль р. Если число лежит в интервале от 2р до 3p-1, то из него вычитается удвоенный модуль р. Суммирование по модулю р частичных остатков происходит последовательно.
На фиг.1 представлена схема устройства для формирования остатка по произвольному модулю от числа; на фиг.2 - формирователя частичных остатков; на фиг.3 - умножителя по модулю.
Устройство формирования остатка по произвольному модулю от числа (фиг.1) содержит блок 1 формирователей частичных остатков, блок 2 умножителей по модулю и блок 3 сумматоров по модулю. Входы 4 служат для подачи двоичного кода числа А. Выход 5 является выходом остатка устройства формирования остатка по произвольному модулю от числа.
Блок 1 формирователей частичных остатков (фиг.1) содержит n/2 формирователей частичных остатков 6, соединенных последовательно, причем на вход первого формирователя частичных остатков 6 подан код единицы, разряд которого сдвинут на два разряда влево. Выходы разрядов предыдущего формирователя частичных остатков 6 подаются на входы последующего формирователя частичных остатков 6 со сдвигом на два в сторону старших. Выходы каждого формирователя частичных остатков 6 являются информационными выходами формирователя. Блок 2 умножителей по модулю (фиг.1) содержит n/2 умножителей по модулю 7, на информационные входы которых подаются коды с выходов формирователей частичных остатков 6. Блок 3 сумматоров по модулю (фиг.1) содержит n/2 сумматоров по модулю 8, на информационные входы которых подаются коды с выходов умножителей по модулю 7 и с выходов предыдущего сумматора по модулю 8, причем на первый сумматор по модулю 8 подаются два младших разряда кода числа А.
Каждый формирователь частичных остатков (фиг.2) содержит три сумматора 12 и мультиплексор 13. На входы переносов трех сумматоров 12 подается код единицы. На первые информационные входы трех сумматоров 12 подается код с выхода формирователя частичных остатков 6. Вход 9 служит для подачи инверсного кода модуля, вход 10 - для подачи инверсного кода удвоенного кода модуля, вход 11 - для подачи инверсного кода утроенного кода модуля.
Каждый умножитель 7 по модулю (фиг.3) содержит два ключа 16, которые управляются разрядами кода числа А, три сумматора 17 и мультиплексор 18. Вход 14 служит для подачи инверсного кода модуля, вход 15 - для подачи инверсного кода удвоенного кода модуля.
Устройство для формирования остатка по произвольному модулю от числа работает следующим образом.
На вход первого формирователя частичных остатков 6 подается код единицы, сдвинутый на два разряда в сторону старших, выходы разрядов предыдущего формирователя частичных остатков 6 подключены к входам последующего формирователя частичных остатков 6 со сдвигом на два разряда в сторону старших. Таким образом на выходах блока формирования частичных остатков 1 формируются частичные остатки по модулю р от числа 22i, где при n четном и при n нечетном.
Код числа А через входы 4 поступает на управляющие входы умножителя 7 по модулю. Умножитель 7 по модулю умножает частичный остаток по модулю р от числа 22i на число (a2i+12+a2i), где ai коэффициенты двоичного кода числа А, и вычисляет частичный остаток по модулю р от полученного результата. Блок сумматоров 3 по модулю суммирует по модулю р частичные остатки и число (а12+а0). Результат суммирования выдается на информационные выходы 5 устройства для формирования остатка по произвольному модулю от числа.
Формирователь частичных остатков работает следующим образом. На первые информационные входы трех сумматоров 12 и на первый информационных вход мультиплексора 13 подается частичный остаток ti-1 по модулю р от числа 22(i-l), сдвинутый на два разряда в сторону старших. На входы переносов трех сумматоров 12 подается код единицы. На второй вход первого сумматора 12 подается инверсный код модуля р. На второй вход второго сумматора 12 подается инверсный код удвоенного модуля р. На второй вход третьего сумматора 12 подается инверсный код утроенного модуля р. Первый сумматор 12 выполняет операцию . Сигнал со старшего (k+1)-го разряда полученного значения, где k - количество разрядов инверсного двоичного кода модуля р, поступает на выход переноса первого сумматора 12. Остальные разряды представляют собой разность (ti-1-р). Второй сумматор выполняет операцию . Сигнал со старшего (k+1)-го разряда полученного значения, где k - количество разрядов инверсного двоичного кода удвоенного модуля р, поступает на выход переноса второго сумматора 12. Остальные разряды представляют собой разность (ti-1-2р). Третий сумматор выполняет операцию . Сигнал со старшего (k+1)-го разряда полученного значения, где k - количество разрядов инверсного двоичного кода утроенного модуля р, поступает на выход переноса третьего сумматора 12. Остальные разряды представляют собой разность (ti-1-3р). Если на выходе переноса третьего сумматора 12 сигнал равен "1", то на выходе формирователя частичных остатков будет разность (ti-1-3р). Если на выходе переноса третьего сумматора 12 сигнал равен "0", а на выходе переноса второго сумматора 12 сигнал равен "1", то на выходе формирователя частичных остатков будет разность (ti-1-2р). Если на выходе переноса третьего сумматора 12 сигнал равен "0" и на выходе переноса второго сумматора 12 сигнал равен "0", а на выходе переноса первого сумматора 12 сигнал равен "1", то на выходе формирователя частичных остатков будет разность (ti-1-р). Если на выходе переноса третьего сумматора 12 сигнал равен "0", на выходе переноса второго сумматора 12 сигнал равен "0" и на выходе переноса первого сумматора 12 сигнал равен "0", то на выходе формирователя частичных остатков будет число ti-1.
Умножитель по модулю работает следующим образом. Коэффициенты ai+1 и ai, через входы 4 поступают на управляющие входы двух ключей 16. На информационные входы двух ключей подается частичный остаток ti по модулю р от числа 22t. В зависимости от того, на управляющий вход какого из ключей 16 поступает логическая "1", тот из ключей 16 оказывается открытым и коммутирует на свои выходы значения с информационных входов, которые поступают на входы первого сумматора 17. Причем на первый вход первого сумматора 17 поступает значение, сдвинутое на один разряд влево. На выходе первого сумматора оказывается результат умножения частичного остатка t1, по модулю р от числа 22i на число (a2i+12+a2i,). Результат вычисления поступает на первые входы второго и третьего сумматоров 17. На входы переносов второго и третьего сумматоров 17 подается код единицы. На второй вход второго сумматора 17 подается инверсный код модуля р. На второй вход третьего сумматора 17 подается инверсный код удвоенного модуля р. Второй сумматор 17 выполняет операцию . Сигнал со старшего (k+1)-го разряда полученного значения, где k - количество разрядов инверсного двоичного кода модуля р, поступает на выход переноса второго сумматора 17. Остальные разряды представляют собой разность (ti-р). Третий сумматор выполняет операцию Сигнал со старшего (k+1)-го разряда полученного значения, где k - количество разрядов инверсного двоичного кода удвоенного модуля р, поступает на выход переноса третьего сумматора 17. Остальные разряды представляют собой разность (ti-2р). Если на выходе переноса третьего сумматора 17 сигнал равен "1", то на выходе умножителя по модулю будет разность (ti-2p). Если на выходе переноса третьего сумматора 17 сигнал равен "0", а на выходе переноса второго сумматора 17 сигнал равен "1", то на выходе умножителя по модулю будет разность (ti-р). Если на выходе переноса третьего сумматора 17 сигнал равен "0" и на выходе переноса второго сумматора 17 сигнал равен "0", то на выходе умножителя по модулю будет число ti.
Рассмотрим работу устройства формирования остатка по произвольному модулю от числа на примере.
Пусть A=4910=1100012, p=910=0010012. Первый формирователь частичных остатков формирует значение частичного остатка от 22 по модулю р, который равен 0001002. Второй формирователь частичных остатков формирует частичный остаток от 24 по модулю р, который равен 0001112. Первый умножитель по модулю производит умножение частичного остатка, полученного на первом формирователе частичных остатков, и коэффициентов а2=0 и а3=0. В результате получается значение, равное 0. Первый сумматор по модулю выполняет операцию сложения полученного значения и коэффициентов а0=1 и 2а1=00 и находит остаток по модулю р. В результате получается значение, равное 1. Второй умножитель по модулю производит умножение частичного остатка, полученного на втором формирователе частичных остатков, и коэффициентов а4=1 и a5=1. В результате получается значение, равное 000011. Второй сумматор по модулю выполняет операцию сложения полученного значения и результата с первого сумматора по модулю и находит остаток по модулю р. В результате получается значение, равное 1002=410.
49=9·3+4
Claims (3)
1. Устройство для формирования остатка по произвольному модулю, содержащее блок формирователей частичных остатков и блок сумматоров по модулю, причем на первый формирователь частичных остатков блока формирователей частичных остатков подается код единицы, выход каждого формирователя частичных остатков соединен с входом последующего формирователя частичных остатков и является соответствующим информационным выходом блока формирователей частичных остатков, второй вход каждого сумматора по модулю блока сумматоров по модулю соединен с выходом предыдущего сумматора по модулю, выход последнего сумматора по модулю является выходом устройства для формирования остатков по произвольному модулю, отличающееся тем, что в него введен блок умножителей по модулю, содержащий t умножителей по модулю, где , если n четное, и , если n нечетное, n - разрядность входного числа, управляющие входы которых соединены с входами двоичного кода числа, причем два младших разряда числа подаются на второй вход первого сумматора по модулю, блок формирователей частичных остатков содержит t формирователей частичных остатков, блок сумматоров по модулю содержит t сумматоров по модулю, t выходов блока формирователей частичных остатков соединены соответственно с информационными входами умножителей по модулю блока умножителей по модулю, t выходов которого соединены соответственно с информационными входами блока сумматоров по модулю, являющихся первыми входами сумматоров по модулю.
2. Формирователь частичных остатков, содержащий три сумматора и мультиплексор, причем первые входы сумматоров и мультиплексора соединены с входом формирователя частичных остатков, второй вход первого сумматора соединен с входом инверсного кода модуля, второй вход второго сумматора соединен с входом инверсного кода удвоенного модуля, второй вход третьего сумматора соединен с входом инверсного кода утроенного модуля, на входы переносов всех сумматоров подается код единицы, входы мультиплексора соединены с информационными выходами и выходами переноса всех сумматоров, выход мультиплексора соединен с выходом формирователя частичных остатков.
3. Умножитель по модулю, содержащий мультиплексор, три сумматора, два ключа, информационные входы которых соединены с входом умножителя по модулю, на управляющие входы ключей подаются разряды кода числа, а выходы соединены с входами первого сумматора, выход которого соединен с первыми входами второго и третьего сумматоров, второй вход второго сумматора соединен с входом инверсного кода модуля, второй вход третьего сумматора соединен с входом инверсного кода двойного модуля, на входы переносов второго и третьего сумматоров подается код единицы, информационные выходы всех сумматоров и выходы переноса второго и третьего сумматоров соединены с входами мультиплексора, выход которого соединен с выходом умножителя по модулю.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2007124282/09A RU2368942C2 (ru) | 2007-06-27 | 2007-06-27 | Устройство для формирования остатка по произвольному модулю |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2007124282/09A RU2368942C2 (ru) | 2007-06-27 | 2007-06-27 | Устройство для формирования остатка по произвольному модулю |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| RU2007124282A RU2007124282A (ru) | 2009-01-10 |
| RU2368942C2 true RU2368942C2 (ru) | 2009-09-27 |
Family
ID=40373694
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RU2007124282/09A RU2368942C2 (ru) | 2007-06-27 | 2007-06-27 | Устройство для формирования остатка по произвольному модулю |
Country Status (1)
| Country | Link |
|---|---|
| RU (1) | RU2368942C2 (ru) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0308963A2 (en) * | 1987-09-25 | 1989-03-29 | Kabushiki Kaisha Toshiba | Remainder computing system and method |
| SU1633495A1 (ru) * | 1989-05-31 | 1991-03-07 | Ставропольское высшее военное инженерное училище связи им.60-летия Великого Октября | Устройство дл формировани остатка по произвольному модулю от числа |
| RU2015537C1 (ru) * | 1991-10-29 | 1994-06-30 | Вячеслав Иванович Петренко | Умножитель на два по модулю |
| RU2025897C1 (ru) * | 1992-03-16 | 1994-12-30 | Вячеслав Иванович Петренко | Вычислительное устройство |
| RU2029435C1 (ru) * | 1992-03-16 | 1995-02-20 | Вячеслав Иванович Петренко | Комбинационный рекуррентный формирователь остатков |
-
2007
- 2007-06-27 RU RU2007124282/09A patent/RU2368942C2/ru not_active IP Right Cessation
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0308963A2 (en) * | 1987-09-25 | 1989-03-29 | Kabushiki Kaisha Toshiba | Remainder computing system and method |
| SU1633495A1 (ru) * | 1989-05-31 | 1991-03-07 | Ставропольское высшее военное инженерное училище связи им.60-летия Великого Октября | Устройство дл формировани остатка по произвольному модулю от числа |
| RU2015537C1 (ru) * | 1991-10-29 | 1994-06-30 | Вячеслав Иванович Петренко | Умножитель на два по модулю |
| RU2025897C1 (ru) * | 1992-03-16 | 1994-12-30 | Вячеслав Иванович Петренко | Вычислительное устройство |
| RU2029435C1 (ru) * | 1992-03-16 | 1995-02-20 | Вячеслав Иванович Петренко | Комбинационный рекуррентный формирователь остатков |
Also Published As
| Publication number | Publication date |
|---|---|
| RU2007124282A (ru) | 2009-01-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4660066B2 (ja) | 剰余乗算するための装置 | |
| RU2348965C1 (ru) | Вычислительное устройство | |
| EP1672481B1 (en) | Division and square root arithmetic unit | |
| US6662201B1 (en) | Modular arithmetic apparatus and method having high-speed base conversion function | |
| RU2717915C1 (ru) | Вычислительное устройство | |
| EP1049002A2 (en) | Method and apparatus for efficient calculation of an approximate square of a fixed-precision number | |
| RU2368942C2 (ru) | Устройство для формирования остатка по произвольному модулю | |
| RU2029435C1 (ru) | Комбинационный рекуррентный формирователь остатков | |
| KR101136972B1 (ko) | 타원곡선 암호 연산 방법 | |
| RU2316042C1 (ru) | Устройство для умножения чисел по произвольному модулю | |
| RU2299461C1 (ru) | Умножитель по модулю | |
| RU2356086C2 (ru) | Вычислительное устройство | |
| RU2324972C2 (ru) | Устройство для формирования остатка по произвольному модулю от числа | |
| RU2804380C1 (ru) | Конвейерный вычислитель | |
| RU2661797C1 (ru) | Вычислительное устройство | |
| RU2012137C1 (ru) | Устройство для формирования остатка по произвольному модулю от числа | |
| KR100946256B1 (ko) | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 | |
| RU2007037C1 (ru) | Рекуррентный формирователь остатков по произвольному модулю | |
| RU2791440C1 (ru) | Конвейерный формирователь остатков по произвольному модулю | |
| RU2840231C1 (ru) | Умножитель чисел по произвольному модулю | |
| RU2797164C1 (ru) | Конвейерный умножитель по модулю | |
| RU2626654C1 (ru) | Умножитель по модулю | |
| RU2839987C1 (ru) | Умножитель чисел по произвольному модулю | |
| Ercegovac et al. | Design and FPGA implementation of radix-10 algorithm for division with limited precision primitives | |
| RU2797163C1 (ru) | Конвейерный вычислитель |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20090628 |