реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Структура двоичного умножителя, Не уверен правильный ли форум выбрал, может больше отностиься к матема
Саша Z
сообщение May 2 2007, 12:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Как реализуются multipliers в имлпементации hardware ?
На хлопский розум могу себе представить по принципу ручного умножения в столбик - т.е. реализация с применением бинарного сложения и сдвига.
А каковы в реальности приципы реализации умножителей ?
Go to the top of the page
 
+Quote Post
SM
сообщение May 2 2007, 13:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Саша Z @ May 2 2007, 13:57) *
Как реализуются multipliers в имлпементации hardware ?
На хлопский розум могу себе представить по принципу ручного умножения в столбик - т.е. реализация с применением бинарного сложения и сдвига.
А каковы в реальности приципы реализации умножителей ?


Такой по принципу ручного умножения в столбик существует. Характеризуется наименьшей площадью и наибольшей тормознутостью. Еще есть например алгоритм Бута (Booth), алгоритм с деревом Уоллеса (Wallace tree). Есть их совместное применение - booth-wallace multiplier. Ищется гуглем и изучается, так как тут описывать их в подробностях займет слишком много места smile.gif
Go to the top of the page
 
+Quote Post
Саша Z
сообщение May 2 2007, 13:29
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(SM @ May 2 2007, 14:18) *
Такой по принципу ручного умножения в столбик существует. Характеризуется наименьшей площадью и наибольшей тормознутостью. Еще есть например алгоритм Бута (Booth), алгоритм с деревом Уоллеса (Wallace tree). Есть их совместное применение - booth-wallace multiplier. Ищется гуглем и изучается, так как тут описывать их в подробностях займет слишком много места smile.gif


Спасибо, понял. Т.е. кроме миниатюрного но тормознутого "столбика" - остальные решения не тривальны... glare.gif

А например при реализации умножителя в FPGA либо в ASIC - неужели дизайнер описывает приведенные выше алгоритмы ?
Go to the top of the page
 
+Quote Post
SM
сообщение May 2 2007, 14:01
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Саша Z @ May 2 2007, 14:29) *
А например при реализации умножителя в FPGA либо в ASIC - неужели дизайнер описывает приведенные выше алгоритмы ?


Ну вот еще. дизайнер описывает "a=b*c", а синтезатоh исходя из констрейнов выбирает наиболее подходящую реализацию. Как правило полностью автоматически. И не только разложения умножителя, а и сумматоров, вычитателей и прочей арифметики. Более того, ситезаторы могут уметь понимать всякие аттрибуты, указывающие на желаемую схему разложения. Вот пример для синопсиса, верилога и ручного указания имплементации:

Код
always @(in1 or in2) begin
/* synopsys resource r0:
   map_to_module = ”DW01_add”,
   implementation = ”cla”,
   ops = ”a1”; */
sum <= in1 + in2; //synopsys label a1
end



тут синтезатору явно задается, что надо для операции, помеченной меткой "a1" использовать модуль DW01_add из синтетической библиотеки, причем выбрать имплементацию "CLA" - "Carry Look-Ahead".
Go to the top of the page
 
+Quote Post
Саша Z
сообщение May 2 2007, 14:13
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(SM @ May 2 2007, 15:01) *
Ну вот еще. дизайнер описывает "a=b*c", а синтезатоh исходя из констрейнов выбирает наиболее подходящую реализацию. Как правило полностью автоматически. И не только разложения умножителя, а и сумматоров, вычитателей и прочей арифметики. Более того, ситезаторы могут уметь понимать всякие аттрибуты, указывающие на желаемую схему разложения. Вот пример для синопсиса, верилога и ручного указания имплементации:

Код
always @(in1 or in2) begin
/* synopsys resource r0:
   map_to_module = ”DW01_add”,
   implementation = ”cla”,
   ops = ”a1”; */
sum <= in1 + in2; //synopsys label a1
end

тут синтезатору явно задается, что надо для операции, помеченной меткой "a1" использовать модуль DW01_add из синтетической библиотеки, причем выбрать имплементацию "CLA" - "Carry Look-Ahead".


Ага, понял, спасибо.
Значит реализация была головной болью создателей синтезаторов, им нужно было закладывать в tool
различные виды имплементации.
Go to the top of the page
 
+Quote Post
Doka
сообщение May 2 2007, 14:13
Сообщение #6


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



кое-что на русском про алгоритм Бута и алг.умножения на константу Прикрепленный файл  art_mult.pdf ( 379.68 килобайт ) Кол-во скачиваний: 582


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
SM
сообщение May 2 2007, 14:20
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Саша Z @ May 2 2007, 15:13) *
Значит реализация была головной болью создателей синтезаторов, им нужно было закладывать в tool
различные виды имплементации.


Да, именно. Хотя Вас никто ограничивать не станет, если захотите написать что-то полностью свое smile.gif Только закладывают их все таки не сколько в tool, это я не совсем правильно выразился, а обычно пишут параметризованные ф-ции, которые уже синтезатор и подставляет на место операторов HDL. У альтеры например LPM_xxxx, у синопсиса - DWxx-yyyyyy, и т.п.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 09:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016