RU2630386C1 - Умножитель по модулю - Google Patents

Умножитель по модулю Download PDF

Info

Publication number
RU2630386C1
RU2630386C1 RU2016146690A RU2016146690A RU2630386C1 RU 2630386 C1 RU2630386 C1 RU 2630386C1 RU 2016146690 A RU2016146690 A RU 2016146690A RU 2016146690 A RU2016146690 A RU 2016146690A RU 2630386 C1 RU2630386 C1 RU 2630386C1
Authority
RU
Russia
Prior art keywords
input
adder
value
multiplier
multiplexer
Prior art date
Application number
RU2016146690A
Other languages
English (en)
Inventor
Вячеслав Иванович Петренко
Заур Хаджи-Муратович Текеев
Original Assignee
федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" filed Critical федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет"
Priority to RU2016146690A priority Critical patent/RU2630386C1/ru
Application granted granted Critical
Publication of RU2630386C1 publication Critical patent/RU2630386C1/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • G06F7/5275Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products using carry save adders

Abstract

Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах для формирования элементов конечных полей. Техническим результатом является сокращение объема используемого оборудования умножителя по модулю за счет исключения из схемы всех умножителей на константу и инверторов. Для этого предлагаемый умножитель по модулю осуществляет данный метод путем выполнения n операций, где n - разрядность модуля. В ходе i-й операции значение z=x⋅y (где x и y - значения входных чисел) сравнивается со значением 2(n-i)⋅p путем вычисления разности z-2(n-i)⋅p, где i=1, …, n. Результатом умножения числа x на число y по модулю p будет являться значение разности, полученное в результате n-й операции. Значение 2(n-i)⋅p вычисляется посредством последовательного умножения значения модуля на 2 путем сдвига на один разряд кода модуля p в сторону старшего. Таким образом, можно исключить из схемы умножители на константу. Диапазон значений входных чисел для данного умножителя определяется размером умножителя и находится в пределах [0, …, (р-1)]. 1 ил.

Description

Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах для формирования элементов конечных полей.
Известно устройство для умножения чисел по модулю, содержащее сумматор и мультиплексор (см. пат. РФ №2015537, кл. G06F 7/49, 30.06.1994).
Недостатком данного устройства являются его ограниченные функциональные возможности, а именно ограниченный диапазон значений входных чисел x (0<x≤р-1, где p - значение модуля, по которому производится вычисление), а также отсутствие возможности умножения на число, отличное от двух.
Известно устройство для умножения чисел на два по модулю, содержащее сумматоры, инверторы, умножители и мультиплексор (см. пат. РФ №2299460, кл. G06F 7/523, 05.10.2005).
Недостатком данного устройства являются его ограниченные функциональные возможности, а именно ограниченный диапазон значений входных чисел x (0<x≤(n/2)p-1), а также отсутствие возможности умножения на число, отличное от двух.
Наиболее близким по технической сущности к заявляемому изобретению является устройство для умножения чисел по модулю, содержащее умножитель, сумматоры, инверторы, умножители на константу, мультиплексор (см. пат. РФ №2299461, кл. G06F 7/523, 25.05.2005).
Недостатком данного устройства является большой объем оборудования.
Техническим результатом данного изобретения является сокращение объема оборудования путем исключения из схемы всех умножителей на константу и инверторов.
Для достижения технического результата в умножитель по модулю, состоящий из умножителя, n сумматоров и первого мультиплексора, где n - разрядность кода модуля, причем первый вход устройства подключен к первому входу умножителя и является входом первого умножаемого числа, второй вход устройства подключен ко второму входу умножителя и является входом второго умножаемого числа, выход умножителя подключен к первому информационному входу первого мультиплексора и к первому информационному входу первого сумматора, выход переноса которого подключен к управляющему входу первого мультиплексора, а информационный выход подключен ко второму информационному входу первого мультиплексора, к входу переноса каждого сумматора подключен код записи логической единицы, введено (n-1) мультиплексоров, причем выход переноса i-го сумматора подключен к управляющему входу i-го мультиплексора, а информационный выход i-го сумматора подключен ко второму информационному входу i-го мультиплексора, выход (i-1)-го мультиплексора подключен к первому информационному входу i-го сумматора и к первому информационному входу i-го мультиплексора, где i=2, …, n, выход n - го мультиплексора является выходом устройства, причем вторые информационные входы i-го сумматора соединены со сдвигом на (n-i) разрядов в сторону старшего с входом инверсного кода модуля устройства, а на младшие (n-i) разрядов второго информационного входа i-го сумматора подается код логической единицы, где i=1, …, n.
Сущность изобретения заключается в реализации следующего способа перемножения чисел x и y по модулю p. При перемножении значений входных чисел x и y, представленных в двоичной форме, с последующим приведением полученного значения z=x⋅y по модулю p, значение zi сравнивается со значением 2(n-i)p, где i=1…n - шаг вычислений. Если полученное значение zi≥2(n-i)p, то из zi на i шаге вычислений вычитается значение 2(n-i)р, и значению zi+1 присваивается значение zi-2(n-i)p. Если же zi<2(n-i)p, то значению zi+1 присваивается значение zi. На первом шаге вычислений в качестве значения z1 принимается значение z=x⋅y. На n-м шаге вычислений значение zi является результатом умножения числа x на число y по модулю р. Значение 2(n-i)p вычисляется посредством последовательного умножения значения модуля p на 2 путем сдвига кода модуля на один разряд в сторону старшего. Таким образом, можно исключить из схемы умножители на константу. Результатом умножения числа x на число y по модулю p будет являться значение разности, полученное в результате n-й операции. Предлагаемый умножитель по модулю осуществляет данный метод путем выполнения n операций, где n - разрядность модуля.
На фиг. 1 представлена схема умножителя по модулю.
Умножитель по модулю содержит умножитель 1, n сумматоров 2, n мультиплексоров 3. Входы 4 и 5 служат для подачи двоичных кодов умножаемых чисел x и y, вход 7 служит для подачи инвертированного двоичного кода модуля p, входы 8 и 9 служат для подачи логических единиц. Выход 6 является выходом устройства.
Умножитель по модулю работает следующим образом.
На вход 4 подается двоичный код числа x, на вход 5 - двоичный код числа y, причем оба числа принадлежат диапазону [0, …, (р-1)], где p - модуль. Данные коды подаются на входы умножителя 1, который на выходе формирует двоичный код числа z=x⋅y. Код числа z поступает на первый информационный вход первого сумматора 2 и на первый информационный вход первого мультиплексора 3. С входа 7 инвертированный двоичный код модуля p подается на вторые информационные входы сумматоров 2, начиная с n-го, причем на каждый последующий сумматор значение модуля p поступает со сдвигом на один разряд в сторону старшего путем непосредственного сдвига. При этом для перевода инверсного кода модуля в сумматорах 2 в дополнительный код необходимо подать на вход переноса 8 каждого сумматора логические единицы в младшие разряды в количестве, равном количеству сдвигов инвертированного кода модуля p относительно первоначального значения. Таким образом, на второй информационный вход каждого i-го сумматора 2 поступает код значения
Figure 00000001
, где i - номер сумматора.
В общем виде i-й сумматор 2 осуществляет операцию, описываемую выражением:
Figure 00000002
, где с - результат суммирования, z=x⋅y - результат умножения входных чисел, i - номер сумматора,
Figure 00000001
- инверсный код степени (n-i) модуля. Старший разряд сформированного значения с поступает на выход переноса i-го сумматора 2, остальные разряды представляют разность z-2(n-i)⋅p и поступают на информационный выход (i+1)-го сумматора 2.
Когда значение z превышает значение 2(n-i)⋅p, на выходе переноса i-го сумматора 2 будет формироваться логическая «1», которая будет поступать на управляющий вход i-го мультиплексора 3. Тогда i-й мультиплексор 3 будет переключать на выход значение с выхода i-го сумматора 2. Если значение z окажется меньше значения 2(n-i)⋅p, то на выходе переноса i-го сумматора 2 сформируется логический «0». При поступлении на управляющий вход i-го мультиплексора 3 логического «0» с выхода переноса i-го сумматора 2, i-й мультиплексор 3 переключит на выход значение с выхода (i-1)-го мультиплексора 3. Значение с выхода n-го мультиплексора на выходе устройства 6 будет представлять результат умножения числа x на число y по модулю p.
Рассмотрим работу умножителя на примере.
Пусть х=510-01012, y=310=00112, z=x⋅y=1510=11112, р=710=01112,
Figure 00000003
. Поскольку разрядность модуля равна трем, то умножение по модулю будет произведено с использованием трех сумматоров 2. Как показано выше, i-й сумматор 2 формирует значение
Figure 00000002
, поэтому на второй информационный вход третьего сумматора поступает
Figure 00000004
, второго сумматора
Figure 00000005
, первого сумматора
Figure 00000006
. С учетом единиц, записываемых в младшие разряды с входа 8, значения слагаемых на сумматорах 2 будут выглядеть следующим образом: 10002 на третьем сумматоре, 100012 на втором сумматоре и 1000112 - на первом сумматоре. Тогда первый сумматор 2 сформирует значение с1=0011112+1000112+1 = 01100102, второй - с2 = 011112+100012+1 = 1000012, третий - с3 = 00012+10002+1 = 010102.
Как видно из примера, на выходе переноса первого сумматора 2 сформировано значение «0», поэтому на вход второго сумматора 2 поступит значение с информационного выхода умножителя 1, на выходе переноса второго сумматора 2 сформировано значение «1», поэтому на вход третьего сумматора 3 поступит значение с информационного выхода второго сумматора, равное 000012, на выходе третьего сумматора 2 сформировано значение «0», поэтому на выход 6 третьего мультиплексора 3 поступит значение с информационного выхода второго сумматора 2, равное 000012=110. Так как (5⋅3)≡1(mod7), то правильность работы устройства очевидна.
Эффективность сокращения затрат на оборудование при использовании данного устройства определяется сокращением всех умножителей на константу и инверторов.

Claims (1)

  1. Умножитель по модулю, состоящий из умножителя, n сумматоров и первого мультиплексора, где n - разрядность кода модуля, причем первый вход устройства подключен к первому входу умножителя и является входом первого умножаемого числа, второй вход устройства подключен ко второму входу умножителя и является входом второго умножаемого числа, выход умножителя подключен к первому информационному входу первого мультиплексора и к первому информационному входу первого сумматора, выход переноса которого подключен к управляющему входу первого мультиплексора, а информационный выход подключен ко второму информационному входу первого мультиплексора, к входу переноса каждого сумматора подключен код записи логической единицы, отличающийся тем, что в устройство введено (n-1) мультиплексоров, причем выход переноса i-го сумматора подключен к управляющему входу i-го мультиплексора, а информационный выход i-го сумматора подключен ко второму информационному входу i-го мультиплексора, выход (i-1)-го мультиплексора подключен к первому информационному входу i-го сумматора и к первому информационному входу i-го мультиплексора, где i=2, …, n, выход n-го мультиплексора является выходом устройства, причем вторые информационные входы i-го сумматора соединены со сдвигом на (n-i) разрядов в сторону старшего с входом инверсного кода модуля устройства, а на младшие (n-i) разряды второго информационного входа i-го сумматора подается код логической единицы, где i=1, …, n.
RU2016146690A 2016-11-28 2016-11-28 Умножитель по модулю RU2630386C1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2016146690A RU2630386C1 (ru) 2016-11-28 2016-11-28 Умножитель по модулю

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2016146690A RU2630386C1 (ru) 2016-11-28 2016-11-28 Умножитель по модулю

Publications (1)

Publication Number Publication Date
RU2630386C1 true RU2630386C1 (ru) 2017-09-07

Family

ID=59797876

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016146690A RU2630386C1 (ru) 2016-11-28 2016-11-28 Умножитель по модулю

Country Status (1)

Country Link
RU (1) RU2630386C1 (ru)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2006919C1 (ru) * 1991-08-01 1994-01-30 Государственный научно-исследовательский институт точного электронного приборостроения Устройство для умножения s-ичных цифр в позиционно-остаточной системе счисления
RU2015537C1 (ru) * 1991-10-29 1994-06-30 Вячеслав Иванович Петренко Умножитель на два по модулю
US5784306A (en) * 1996-06-28 1998-07-21 Cirrus Logic, Inc. Parallel multiply accumulate array circuit
RU2299461C1 (ru) * 2005-10-05 2007-05-20 Вячеслав Иванович Петренко Умножитель по модулю

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2006919C1 (ru) * 1991-08-01 1994-01-30 Государственный научно-исследовательский институт точного электронного приборостроения Устройство для умножения s-ичных цифр в позиционно-остаточной системе счисления
RU2015537C1 (ru) * 1991-10-29 1994-06-30 Вячеслав Иванович Петренко Умножитель на два по модулю
US5784306A (en) * 1996-06-28 1998-07-21 Cirrus Logic, Inc. Parallel multiply accumulate array circuit
RU2299461C1 (ru) * 2005-10-05 2007-05-20 Вячеслав Иванович Петренко Умножитель по модулю

Similar Documents

Publication Publication Date Title
Mohan et al. Residue Number Systems
Gokhale et al. Design of Vedic-multiplier using area-efficient Carry Select Adder
EP0447245A2 (en) Bit-serial division method and apparatus
Kalaiyarasi et al. Design of an efficient high speed radix-4 Booth multiplier for both signed and unsigned numbers
Jain et al. Binary division algorithm and high speed deconvolution algorithm (Based on Ancient Indian Vedic Mathematics)
RU2299461C1 (ru) Умножитель по модулю
RU2717915C1 (ru) Вычислительное устройство
RU2630386C1 (ru) Умножитель по модулю
RU2348965C1 (ru) Вычислительное устройство
KR101136972B1 (ko) 타원곡선 암호 연산 방법
RU2696223C1 (ru) Арифметико-логическое устройство для формирования остатка по произвольному модулю от числа
RU2626654C1 (ru) Умножитель по модулю
RU2653263C1 (ru) Арифметико-логическое устройство для умножения чисел по модулю
KR100670780B1 (ko) 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법
RU2324972C2 (ru) Устройство для формирования остатка по произвольному модулю от числа
RU2661797C1 (ru) Вычислительное устройство
Parashar et al. Fast combinational architecture for a vedic divider
RU2804380C1 (ru) Конвейерный вычислитель
RU2791440C1 (ru) Конвейерный формирователь остатков по произвольному модулю
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Nadjia et al. High throughput parallel montgomery modular exponentiation on FPGA
RU2485574C1 (ru) Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов
RU2797164C1 (ru) Конвейерный умножитель по модулю
KR100564764B1 (ko) 유한체 다항식 곱셈 장치 및 그 방법
RU2785032C1 (ru) Накапливающий сумматор для синтезаторов частот