RU222880U1 - Устройство для вычисления трансцендентных функций и умножения двоичных чисел - Google Patents

Устройство для вычисления трансцендентных функций и умножения двоичных чисел Download PDF

Info

Publication number
RU222880U1
RU222880U1 RU2023131099U RU2023131099U RU222880U1 RU 222880 U1 RU222880 U1 RU 222880U1 RU 2023131099 U RU2023131099 U RU 2023131099U RU 2023131099 U RU2023131099 U RU 2023131099U RU 222880 U1 RU222880 U1 RU 222880U1
Authority
RU
Russia
Prior art keywords
input
output
multiplexer
data
register
Prior art date
Application number
RU2023131099U
Other languages
English (en)
Inventor
Илья Евгеньевич Тарасов
Петр Николаевич Советов
Original Assignee
федеральное государственное бюджетное образовательное учреждение высшего образования "МИРЭА-Российский технологический университет"
Filing date
Publication date
Application filed by федеральное государственное бюджетное образовательное учреждение высшего образования "МИРЭА-Российский технологический университет" filed Critical федеральное государственное бюджетное образовательное учреждение высшего образования "МИРЭА-Российский технологический университет"
Application granted granted Critical
Publication of RU222880U1 publication Critical patent/RU222880U1/ru

Links

Abstract

Полезная модель относится к специализированным устройствам вычислительной техники и может быть использована в системах автоматизированного управления для вычисления трансцендентных функций и операций над ними по алгоритму CORDIC в одном конфигурируемом конвейере с последовательным вычислением результата умножения или поворота вектора с обобщением регистров и частичным обобщением ресурсов функциональных узлов, что уменьшает ресурсы логических элементов устройства, реализующего такой конвейер, по сравнению с реализацией этих функций в независимых конвейерах. Полезная модель обеспечивает повышение точности и уменьшение массогабаритных размеров при аппаратной реализации.

Description

Полезная модель относится к специализированным устройствам вычислительной техники и может быть использована в системах автоматизированного управления для вычисления трансцендентных функций и операций над ними по алгоритму CORDIC в одном конфигурируемом конвейере с последовательным вычислением результата умножения или поворота вектора с обобщением регистров и частичным обобщением ресурсов функциональных узлов, что уменьшает ресурсы логических элементов устройства, реализующего такой конвейер, по сравнению с реализацией этих функций в независимых конвейерах.
Известно асинхронное устройство CORDIC алгоритма для цифросигнальных процессоров [RU 2691854, С1, G06F 7/544 18.06.2019], содержащее блок увеличения числа однотипных данных, блок инициализации и условного перехода итераций, базовый блок вычислений, сдвиговый регистр, первое арифметически-логическое устройство, второе арифметически-логическое устройство, регистр обратной связи, формирователь тактовых сигналов, формирователь снижения выходных данных, при этом, входом служит, по меньшей мере, один вход блока увеличения числа однотипных данных, выход которого соединен с первым входом второго арифметически-логического устройства, выход формирователя тактовых сигналов соединен с первым входом блока инициализации и условного перехода итераций и вторым входом сдвигового регистра, выход которого соединен со вторым входом блока инициализации и условного перехода итераций, выход которого соединен с первым входом сдвигового регистра, вторым входом и четвертым входом первого арифметически-логического устройства, выход базового блока вычислений соединен с первым входом и третьим входом первого арифметически-логического устройства и соединен со вторым входом второго арифметически-логического устройства, первый выход и второй выход первого арифметически-логического устройства соединены соответственно с третьим входом и четвертым входом второго арифметически-логического устройств, выход которого соединен с входом регистра обратной связи и входом формирователя снижения выходных данных, выход регистра обратной связи соединен с входом базового блока вычислений, и выход формирователя снижения выходных данных служит выходом устройства и соединен с управляющим входом блока увеличения числа однотипных данных.
Недостатком этого технического решения является относительно высокая сложность.
Наиболее близким по технической сущности к предложенному является устройство для вычисления тригонометрических функций [RU 2691854, С1, G06F 7/544 18.06.2019], содержащее регистр приращений косинуса, регистр приращений синуса, регистр синуса, регистр косинуса, счетчик аргумента, генератор тактовых импульсов, первый и второй преобразователь прямого кода в дополнительный и блок памяти, вход которого соединен с выходом счетчика аргумента, а выход - с первыми входами регистров синуса и косинуса, вторые входы которых подключены к первому выходу генератора тактовых импульсов, второй выход которого соединен с первыми входами регистров приращения синуса и косинуса, выходы которых подключены к третьим входам регистра синуса и регистра косинуса соответственно, выход регистра косинуса соединен со вторым входом регистра приращений синуса, выход регистра синуса через преобразователь прямого кода в дополнительный соединен со вторым входом регистра приращений косинуса, при этом, второй преобразователь прямого кода в дополнительный включенный между выходом регистра косинуса и вторым входом регистра приращений синуса.
Недостатками устройства являются относительно низкая точность вычислений и ограниченные функциональные возможности.
Задачей изобретения является создание устройства, совмещающего вычисление трансцендентных функций и результата умножения входных операндов, обладающего большими функциональными возможностями при меньших затратах ресурсов.
Требуемый технический результат заключается в повышении точности, расширении функциональных возможностей и в уменьшении массогабаритных характеристик устройства при его аппаратной реализации в виде специализированного устройства.
Поставленная задача решается, а требуемый технический результат достигается тем, что устройство содержит N последовательно соединенных идентичных вычислительных блока, имеющих общий тактовый вход (вход CLK) и каждый из которых имеет первый вход данных (вход данных A), второй вход данных (вход данных B) и третий вход данных (вход данных С), а также первый выход данных (выход данных QA), второй выход данных (выход данных QB) и третий выход данных (выход данных QC), причем, первый вход данных соединен с входом первого элемента сдвига вправо, с входом элемента сдвига влево, с первым входом первого сумматора и с первым входом первого выходного мультиплексора, второй вход данных соединен с входом второго элемента сдвига вправо, с первым входом второго сумматора и с первым входом второго выходного мультиплексора, третий вход данных соединен с первым входом третьего сумматора, выход первого элемента сдвига вправо соединен с первым входом второго мультиплексора, выход второго элемента сдвига вправо соединен с первым входом первого мультиплексора, выход элемента сдвига влево соединен с вторым входом третьего мультиплексора, выход регистра хранения константы соединен с первым входом третьего мультиплексора, второй вход первого мультиплексора, второй вход второго мультиплексора и третий вход третьего мультиплексора подключены являются входами подачи «0», выход первого мультиплексора соединен с вторым входом первого сумматора, выход второго мультиплексора соединен с вторым входом второго сумматора, выход третьего мультиплексора соединен с вторым входом третьего сумматора, выход первого сумматора соединен с вторым входом первого выходного мультиплексора, выход второго сумматора соединен с вторым входом второго выходного мультиплексора, выход третьего сумматора соединен с входом третьего регистра, выход первого выходного мультиплексора соединен с входом первого регистра, выход второго выходного мультиплексора соединен с входом второго регистра, выход первого выходного регистра является первым выходом данных, выход второго выходного регистра является вторым выходом данных, выход третьего выходного регистра является третьим выходом данных, а тактовый вход соединен с тактовыми входами первого, второго и третьего выходных регистров.
На чертеже представлены:
на фиг. 1 – схема устройства для вычисления трансцендентных функций и умножения двоичных чисел;
на фиг. 2 – схема вычислительного блока;
на фиг. 3 - временные диаграммы сигналов последовательного умножителя;
на фиг. 4 - иллюстрация алгоритма работы устройства;
на фиг. 5 – результаты моделирования устройства в режиме вычисления синуса и косинуса при линейно изменяющейся фазе;
на фиг. 6 - результаты моделирования устройства в режиме вычисления произведения при линейно нарастающем аргументе (вычисление квадрата входного значения).
На схеме устройства для вычисления трансцендентных функций и умножения двоичных чисел обозначены:
1-1… 1-N - вычислительные блоки;
2 – первый элемент сдвига вправо;
3 – второй элемент сдвига вправо;
4 – элемент сдвига влево;
5 – первый мультиплексор;
6 – второй мультиплексор;
7 – третий мультиплексор;
8 – регистр хранения константы;
9 – первый сумматор;
10 – второй сумматор;
11 – третий сумматор;
12 – первый выходной мультиплексор;
13 – второй выходной мультиплексор;
14 – первый выходной регистр (выходной регистр QA);
15 – второй выходной регистр (выходной регистр QB);
16 – третий выходной регистр (выходной регистр QC).
Устройство для вычисления трансцендентных функций и умножения двоичных чисел содержит N последовательно соединенных аналогичных вычислительных блоков 1-1 … 1-N, имеющих общий тактовый вход и каждый из которых имеет первый вход данных (вход данных A), второй вход данных (вход данных B) и третий вход данных (вход данных С), а также первый выход данных (выход данных QA), второй выход данных (выход данных QB) и третий выход данных (выход данных QC), причем, первый вход данных соединен с входом первого элемента сдвига 2 вправо, с входом элемента сдвига 4 влево, с первым входом первого сумматора 9 и с первым входом первого выходного мультиплексора 12, второй вход данных соединен с входом второго элемента сдвига 3 вправо, с первым входом второго сумматора 10 и с первым входом второго выходного мультиплексора 13, третий вход данных соединен с первым входом третьего сумматора 11, выход первого элемента сдвига вправо 2 соединен с первым входом второго мультиплексора 6, выход второго элемента сдвига 3 вправо соединен с первым входом первого мультиплексора 5, выход элемента сдвига 4 влево соединен с вторым входом третьего мультиплексора 7, выход регистра 8 хранения константы соединен с первым входом третьего мультиплексора 7, второй вход первого мультиплексора 5, второй вход второго мультиплексора 6 и третий вход третьего мультиплексора 7 подключены являются входами подачи «0», выход первого мультиплексора 5 соединен с вторым входом первого сумматора 9, выход второго мультиплексора 6 соединен с вторым входом второго сумматора 10, выход третьего мультиплексора 7 соединен с вторым входом третьего сумматора 11, выход первого сумматора 9 соединен с вторым входом первого выходного мультиплексора 12, выход второго сумматора соединен с вторым входом второго выходного мультиплексора 13, выход третьего сумматора 11 соединен с входом третьего регистра 16, выход первого выходного мультиплексора 12 соединен с входом первого регистра 14, выход второго выходного мультиплексора 13 соединен с входом второго регистра 15, выход первого выходного регистра 14 является первым выходом вычислительного блока, выход второго выходного регистра 15 является вторым выходом вычислительного блока, выход третьего выходного регистра 16 является третьим выходом вычислительного блока, а тактовый вход соединен с тактовыми входами первого 14, второго 15 и третьего 16 выходных регистров.
Устройство для вычисления трансцендентных функций и умножения двоичных чисел работает следующим образом.
Предварительно обоснуем алгоритм, реализованный в его работе.
В устройстве используется совмещение алгоритмов последовательного умножения и вычисления трансцендентных функций по алгоритму CORDIC в одном конвейере с обобщением регистров и частичным обобщением ресурсов функциональных узлов. Целью является повышение точности, расширение функциональных возможностей и уменьшение ресурсов схемы, реализующей такой конвейер, по сравнению с реализацией этих функций в независимых конвейерах.
Принцип последовательного умножения, реализуемого в устройстве, представлен частным случаем умножения на фиг. 3 в виде временных диаграмм сигналов.
Из диаграммы следует, что при умножении числа на 1 результатом является само число, а при умножении на 0 результатом является 0. Для получения таких произведений достаточно выполнить операцию логическое И над первым числом и одним из разрядов второго числа. После сдвига полученных результатов их необходимо сложить. Операция сложения с одновременным сдвигом чисел может быть повторена последовательно в течение N тактов, где N соответствует разрядности второго из чисел. Из примера видно, что количество тактов для умножения равно разрядности второго числа.
Это позволяет реализовать в работе устройства алгоритм для вычисления тригонометрических функций без потери точности, вызванной приближенным разложением в ряд.
Алгоритм основан на том, что при вращении координат некоторого вектора отслеживаются как угол поворота вектора, так и связанные с ним координаты конца этого вектора (x; y), которые при единичной длине вектора представляют собой косинус и синус от угла поворота. Иллюстрация к алгоритму показана на фиг. 4.
При повороте вектора (x; y) с углом к оси абсцисс α на угол ϕ его новые координаты (x’; y’) станут равны:
x’ = cos (α + φ) = cos α ⋅ cos φ – sin α ⋅ sin φ
y’ = sin (α + φ) = sin α ⋅ cos φ + cos α ⋅ sin φ
Вынесем за скобку cos φ:
x’ = cos φ (x ⋅ 1 – y ⋅ tg φ)
y’ = cos φ (y ⋅ 1 + x ⋅ tg φ)
Выражение tg φ в скобках появилось из-за того, что при вынесении cos φ понадобилось сначала умножить sin φ на дробь cos φ / cos φ. Выражение cos φ в числителе оказалось возможным вынести за скобку, при этом оставшиеся sin φ / cos φ образовали функцию tg φ.
Отсюда следует, что поворот будет производиться только на такие углы, для которых tg φ равен целой степени двойки (т.е. 1, ½, ¼, 1/8 и т.д.). В этом случае умножение x⋅tg φ равносильно сдвигу x на 0, 1, 2, 3… позиции вправо. Аналогично выполняется вычисление y⋅tg φ.
Таким образом, умножение на синус и косинус в устройстве оказалось заменено на умножение на 1 и умножение на степени двойки, которое может быть выполнено сдвигом.
Имея набор углов поворота φ, тангенсы которых равны целой степени двойки, можно последовательными поворотами на положительные и отрицательные углы добиться того, чтобы суммарный угол поворота стал равен некоторому значению. Для этого необходимо учесть, что:
x’ = cos (α – φ) = cos α ⋅  cos φ + sin α  ⋅ sin φ
y’ = sin (α – φ) = sin α  ⋅ cos φ – cos α  ⋅ sin φ
Имея таблицу углов, и проинициализировав x = 1, y = 0, можно повернуть угол φ максимально близко к искомому углу φ0, заданному в качестве аргумента. Если после очередного поворота φ > φ0, то на следующей итерации поворот происходит на отрицательный угол. Таким образом, методом последовательного приближения φ устремляется φ0, а его координаты x, y естественным образом представляют косинус и синус угла φ.
На каждой итерации за скобки выносится cos φ, на которую производится умножение. Однако, поскольку значения углов на каждой итерации известны, итоговое произведение можно вычислить заранее и учесть его при коррекции результата. Также можно инициализировать x значением, обратным произведению всех величин cos φ.
В предложенном устройстве используется подобие операций на шаге умножения и на шаге поворота вектора по алгоритму CORDIC. Поскольку обе операции подразумевают сдвиги и сложения, в каждом блоке устройства размещаются три сумматора, входные операнды которых выбираются мультиплексорами. Также для работы CORDIC каждый блок устройства имеет постоянный коэффициент k, соответствующий арктангенсу угла поворота на этом шаге алгоритма.
Входными данными блока являются значения регистров A, B, C предыдущего блока (или входные данные для первого блока устройства), которые обозначаются как Ai-1, Bi-1, Ci-1 соответственно.
Для операции CORDIC входными операндами сумматоров являются:
Первый сумматор 9:
1-й операнд: Ai-1
2-й операнд:
B shra (i-1) при C i-1 >= 0
-B shra (i-1) при C i-1 < 0
Второй сумматор 10:
1-й операнд: Bi-1
2-й операнд:
-A shra (i-1) при C i-1 >= 0
A shra (i-1) при C i-1 < 0
Третий сумматор 11:
1-й операнд: Сi-1
2-й операнд:
-ki-1 при C i-1 >= 0
ki-1 при C i-1 < 0
На входе конвейера в режиме работы устройства:
Вход A – константа, равная длине единичного вектора в выбранном масштабе
Вход B – 0
Вход C – угол поворота в двоичном виде, приведенный к диапазону первого квадранта углов, представленный в том же формате и диапазоне, в котором заданы константы ki на отдельных стадиях конвейера.
По завершению работы первый регистр 14 содержит cos входного угла, а второй регистр 15 – sin входного угла, домноженные на произведение косинусов углов, заданных их арктангенсами на всех последовательных стадиях конвейера.
Для операции последовательного умножения входными операндами сумматоров являются:
Первый сумматор 9:
1-й операнд: Ai-1
2-й операнд: 0
Второй сумматор 10:
1-й операнд: Bi-1
2-й операнд: 0
Третий сумматор 11:
1-й операнд – Сi-1
2-й операнд:
Ai-1 shl i при B(i) i-1 = 1
0 при B(i) i-1 = 0
Где B(i) – значение i-го разряда входного операнда B
На входе конвейера в режиме умножения:
Вход A – первый операнд
Вход B – второй операнд
Вход C – 0 (начальное значение накапливаемой суммы)
По завершению работы третий регистр 16 содержит произведение входных операндов.
Работа устройства смоделирована в логическом симуляторе AMD/Xilinx Vivado Simulator. В режиме проверки работы алгоритма CORDIC на вход C устройства подается линейно нарастающий цифровой код, соответствующий аргумента угла. Выходы QA и QB устройства формируют цифровые коды, равные синусу и косинусу аргумента соответственно, как показано на рис. 5. В режиме проверки работы умножения на входы A и B устройства подавался одинаковый линейно нарастающий цифровой код, а на вход C константа, равная 0. Выходы QA и QB устройства формируют цифровые коды, равные результату умножения входов, что при равенстве входов соответствует входному значению, возведенному в квадрат. График выходных значений устройства в режиме проверки умножения показан на рис. 6. Это подтверждает достижение требуемого технического результата, заключающегося в повышении точности и расширении функциональных возможностей. При этом, для реализации двух алгоритмов на базе одного и того же набора регистров достаточно использовать три сумматора и набор мультиплексоров 4-в-1, а также мультиплексора 2-в-1, переключающие выходные операнды A и B. В то же время при независимом исполнении устройств для реализации алгоритма CORDIC требуется три сумматора, а для реализации умножения один сумматор. Поэтому устройство позволяет уменьшить число элементов для выполнения операций, что позволяет уменьшить массогабаритные характеристики устройства при его аппаратной реализации.

Claims (1)

  1. Устройство для вычисления трансцендентных функций и умножения двоичных чисел, содержащее N последовательно соединенных идентичных вычислительных блоков, имеющих общий тактовый вход и каждый из которых имеет первый вход данных, второй вход данных и третий вход данных, а также первый выход данных, второй выход данных и третий выход данных, причем первый вход данных соединен с входом первого элемента сдвига вправо, с входом элемента сдвига влево, с первым входом первого сумматора и с первым входом первого выходного мультиплексора, второй вход данных соединен с входом второго элемента сдвига вправо, с первым входом второго сумматора и с первым входом второго выходного мультиплексора, третий вход данных соединен с первым входом третьего сумматора, выход первого элемента сдвига вправо соединен с первым входом второго мультиплексора, выход второго элемента сдвига вправо соединен с первым входом первого мультиплексора, выход элемента сдвига влево соединен с вторым входом третьего мультиплексора, выход регистра хранения константы соединен с первым входом третьего мультиплексора, второй вход первого мультиплексора, второй вход второго мультиплексора и третий вход третьего мультиплексора являются входами подачи «0», выход первого мультиплексора соединен с вторым входом первого сумматора, выход второго мультиплексора соединен с вторым входом второго сумматора, выход третьего мультиплексора соединен с вторым входом третьего сумматора, выход первого сумматора соединен с вторым входом первого выходного мультиплексора, выход второго сумматора соединен с вторым входом второго выходного мультиплексора, выход третьего сумматора соединен с входом третьего регистра, выход первого выходного мультиплексора соединен с входом первого регистра, выход второго выходного мультиплексора соединен с входом второго регистра, выход первого выходного регистра является первым выходом данных, выход второго выходного регистра является вторым выходом данных, выход третьего выходного регистра является третьим выходом данных, а тактовый вход соединен с тактовыми входами первого, второго и третьего выходных регистров.
RU2023131099U 2023-11-28 Устройство для вычисления трансцендентных функций и умножения двоичных чисел RU222880U1 (ru)

Publications (1)

Publication Number Publication Date
RU222880U1 true RU222880U1 (ru) 2024-01-22

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1705822A1 (ru) * 1989-11-09 1992-01-15 Научно-исследовательский институт автоматики Научно-производственного объединения автоматики Устройство дл вычислени функций
US20050125479A1 (en) * 2003-12-08 2005-06-09 Luciano Zoso Hardware for performing an arithmetic function
US8862650B2 (en) * 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
RU2614931C1 (ru) * 2016-02-25 2017-03-30 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Устройство для вычисления тригонометрических функций
RU2691854C1 (ru) * 2017-12-21 2019-06-18 Акционерное общество "Ангстрем" (АО "Ангстрем") Асинхронное устройство cordic алгоритма для цифро-сигнальных процессоров

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1705822A1 (ru) * 1989-11-09 1992-01-15 Научно-исследовательский институт автоматики Научно-производственного объединения автоматики Устройство дл вычислени функций
US20050125479A1 (en) * 2003-12-08 2005-06-09 Luciano Zoso Hardware for performing an arithmetic function
US8862650B2 (en) * 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
RU2614931C1 (ru) * 2016-02-25 2017-03-30 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Устройство для вычисления тригонометрических функций
RU2691854C1 (ru) * 2017-12-21 2019-06-18 Акционерное общество "Ангстрем" (АО "Ангстрем") Асинхронное устройство cordic алгоритма для цифро-сигнальных процессоров

Similar Documents

Publication Publication Date Title
Maharatna et al. Virtually scaling-free adaptive CORDIC rotator
JP7292297B2 (ja) 確率的丸めロジック
Raveendran et al. A novel parametrized fused division and square-root POSIT arithmetic architecture
RU222880U1 (ru) Устройство для вычисления трансцендентных функций и умножения двоичных чисел
CN109284085B (zh) 一种基于fpga的高速模乘和模幂运算方法及装置
Rudagi et al. Comparative analysis of radix-2, radix-4, radix-8 CORDIC processors
CN113778379A (zh) 一种基于cordic的低复杂度硬件系统和应用方法
Naregal et al. Design and implementation of high efficiency vedic binary multiplier circuit based on squaring circuits
CN110506255B (zh) 节能型可变功率加法器及其使用方法
Givaki et al. High-performance deterministic stochastic computing using residue number system
RU2595906C1 (ru) Устройство для вычисления функций
RU2804380C1 (ru) Конвейерный вычислитель
RU2797163C1 (ru) Конвейерный вычислитель
Selianinau An efficient implementation of the CRT algorithm based on an interval-index characteristic and minimum-redundancy residue code
Deepika et al. Microarchitecture based RISC-V Instruction Set Architecture for Low Power Application
Nielsen Number systems and digit serial arithmetic
Tervo Development of a GF (2) math coprocessor
SU1756887A1 (ru) Устройство дл делени чисел в модул рной системе счислени
RU188000U1 (ru) Вероятностное устройство нахождения аналитической вероятности для полной группы несовместных событий в неориентированном графе
San et al. Development and Result Verification of a Multi-Bit Binary Parallel-Prefix Adder-Subtractor
Yang et al. Equivalence of Hardware and Software: A case study for solving polynomial functions
RU2649955C1 (ru) Функциональный преобразователь
Givaki et al. Hardware Efficient FIR Filter Architectures Using Accurate Unary Stochastic Computing
Tiwari et al. Advanced Approach for CORDIC Architecture Using Carry Select Adder
SU579612A1 (ru) Устройство дл вычислени функции вида ух