Перейти к содержанию
    

Структура двоичного умножителя

Как реализуются multipliers в имлпементации hardware ?

На хлопский розум могу себе представить по принципу ручного умножения в столбик - т.е. реализация с применением бинарного сложения и сдвига.

А каковы в реальности приципы реализации умножителей ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как реализуются multipliers в имлпементации hardware ?

На хлопский розум могу себе представить по принципу ручного умножения в столбик - т.е. реализация с применением бинарного сложения и сдвига.

А каковы в реальности приципы реализации умножителей ?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

А например при реализации умножителя в FPGA либо в ASIC - неужели дизайнер описывает приведенные выше алгоритмы ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А например при реализации умножителя в 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".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот еще. дизайнер описывает "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

различные виды имплементации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кое-что на русском про алгоритм Бута и алг.умножения на константу art_mult.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит реализация была головной болью создателей синтезаторов, им нужно было закладывать в tool

различные виды имплементации.

 

Да, именно. Хотя Вас никто ограничивать не станет, если захотите написать что-то полностью свое :) Только закладывают их все таки не сколько в tool, это я не совсем правильно выразился, а обычно пишут параметризованные ф-ции, которые уже синтезатор и подставляет на место операторов HDL. У альтеры например LPM_xxxx, у синопсиса - DWxx-yyyyyy, и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...