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


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


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

А например при реализации умножителя в FPGA либо в ASIC - неужели дизайнер описывает приведенные выше алгоритмы ?
SM
Цитата(Саша 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".
Саша Z
Цитата(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
различные виды имплементации.
Doka
кое-что на русском про алгоритм Бута и алг.умножения на константу Нажмите для просмотра прикрепленного файла
SM
Цитата(Саша Z @ May 2 2007, 15:13) *
Значит реализация была головной болью создателей синтезаторов, им нужно было закладывать в tool
различные виды имплементации.


Да, именно. Хотя Вас никто ограничивать не станет, если захотите написать что-то полностью свое smile.gif Только закладывают их все таки не сколько в tool, это я не совсем правильно выразился, а обычно пишут параметризованные ф-ции, которые уже синтезатор и подставляет на место операторов HDL. У альтеры например LPM_xxxx, у синопсиса - DWxx-yyyyyy, и т.п.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.