AlexZabr 0 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба Как реализуются multipliers в имлпементации hardware ? На хлопский розум могу себе представить по принципу ручного умножения в столбик - т.е. реализация с применением бинарного сложения и сдвига. А каковы в реальности приципы реализации умножителей ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба Как реализуются multipliers в имлпементации hardware ? На хлопский розум могу себе представить по принципу ручного умножения в столбик - т.е. реализация с применением бинарного сложения и сдвига. А каковы в реальности приципы реализации умножителей ? Такой по принципу ручного умножения в столбик существует. Характеризуется наименьшей площадью и наибольшей тормознутостью. Еще есть например алгоритм Бута (Booth), алгоритм с деревом Уоллеса (Wallace tree). Есть их совместное применение - booth-wallace multiplier. Ищется гуглем и изучается, так как тут описывать их в подробностях займет слишком много места :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба Такой по принципу ручного умножения в столбик существует. Характеризуется наименьшей площадью и наибольшей тормознутостью. Еще есть например алгоритм Бута (Booth), алгоритм с деревом Уоллеса (Wallace tree). Есть их совместное применение - booth-wallace multiplier. Ищется гуглем и изучается, так как тут описывать их в подробностях займет слишком много места :) Спасибо, понял. Т.е. кроме миниатюрного но тормознутого "столбика" - остальные решения не тривальны... :glare: А например при реализации умножителя в FPGA либо в ASIC - неужели дизайнер описывает приведенные выше алгоритмы ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба А например при реализации умножителя в 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". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexZabr 0 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба Ну вот еще. дизайнер описывает "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 4 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба кое-что на русском про алгоритм Бута и алг.умножения на константу art_mult.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 2 мая, 2007 Опубликовано 2 мая, 2007 · Жалоба Значит реализация была головной болью создателей синтезаторов, им нужно было закладывать в tool различные виды имплементации. Да, именно. Хотя Вас никто ограничивать не станет, если захотите написать что-то полностью свое :) Только закладывают их все таки не сколько в tool, это я не совсем правильно выразился, а обычно пишут параметризованные ф-ции, которые уже синтезатор и подставляет на место операторов HDL. У альтеры например LPM_xxxx, у синопсиса - DWxx-yyyyyy, и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться