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

 
 
 
Reply to this topicStart new topic
> Как работают быстрые умножители?
BarsMonster
сообщение Sep 13 2011, 12:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-03-10
Из: Россия, Москва
Пользователь №: 55 849



Сабж.
Как сумматор с ускоренным переносом работает - в принципе понятно.
Но как умножение за 1 такт делают (32*32->32/64) - вот это не понятно.
Кто подскажет? Или покажите книжку по этой теме.

Также, для ASIC как генерируются такие схемы? Есть какие-то генераторы? Или руками, на Verilog/VHDL?


--------------------
Потроха микросхем: zeptobars.ru
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 13 2011, 12:13
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(BarsMonster @ Sep 13 2011, 16:09) *
Сабж.
Как сумматор с ускоренным переносом работает - в принципе понятно.
Но как умножение за 1 такт делают (32*32->32/64) - вот это не понятно.

Ровно точно так же.
Умножитель - это каскадный сумматор. То есть комбинационное устройство. Ему такты не нужны.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
BarsMonster
сообщение Sep 13 2011, 13:40
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-03-10
Из: Россия, Москва
Пользователь №: 55 849



Цитата(MrYuran @ Sep 13 2011, 14:13) *
Ровно точно так же.
Умножитель - это каскадный сумматор. То есть комбинационное устройство. Ему такты не нужны.


То что такты не нужны это понятно. Не понятно как куча последовательных сложений успевает пролететь так быстро.
Понятно что можно тут соптимизировать и складывать не "в столбик, последовательно", а парралельно по парам - но все равно, log2(32) = 5 сложений должно пролететь последовательно в любом случае... Ничего другого тут нет?


--------------------
Потроха микросхем: zeptobars.ru
Go to the top of the page
 
+Quote Post
vitus_strom
сообщение Sep 14 2011, 08:40
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 15-10-04
Пользователь №: 877



ключевые слова Booth algorithm + Wallace tree (или более регулярное дерево) + final addition
Go to the top of the page
 
+Quote Post
nikolascha
сообщение Sep 14 2011, 12:19
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 376
Регистрация: 20-06-09
Из: BY
Пользователь №: 50 480



Цитата(BarsMonster @ Sep 13 2011, 15:09) *
Также, для ASIC как генерируются такие схемы? Есть какие-то генераторы? Или руками, на Verilog/VHDL?
Если вы имели в виду генерацию топологии, то у ментора для этого вроде Datapath служит.
Go to the top of the page
 
+Quote Post
BarsMonster
сообщение Sep 14 2011, 12:36
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-03-10
Из: Россия, Москва
Пользователь №: 55 849



Цитата(nikolascha @ Sep 14 2011, 15:19) *
Если вы имели в виду генерацию топологии, то у ментора для этого вроде Datapath служит.


Я в том смысле, что если например разрабатываем DSP:
Мы просто пишем A=B*C+D и за нас все синтезируют (непонятно только как с выбором скорость<>размер), или нужно руками писать правильную реализацию умножения? Т.е. синтезируемая ли это конструкция и если да, то насколько она по дефолту эффективно реализуется?


--------------------
Потроха микросхем: zeptobars.ru
Go to the top of the page
 
+Quote Post
YuryL
сообщение Sep 15 2011, 07:49
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 6-07-04
Из: Минск
Пользователь №: 264



Обычно выбираем стратегию синтеза, метод оптимизации - по площади, по времени ...
Задаем временные ограничения. В соответствии с этими исходными данными синтезатор
выбирает подходящую архитектура модуля. Например, у синопсиса доступно 5 видов
архитектуры умножителей.

Multiplier Synthesis Implementationsa:

csa Carry-save array synthesis model
nbw Either a non-Booth (A_width+B_width ≤ 41) or a Booth Wallace-tree
(A_width+B_width > 41) synthesis modelb
wall Booth-recoded Wallace-tree synthesis model
mcarch MC-inside-DW Wallace-tree DesignWare
csmult MC-inside-DW flexible Booth Wallace DesignWare

During synthesis, Design Compiler will select the appropriate architecture for your constraints.
However, you may force Design Compiler to use one of the architectures described in this table.
Go to the top of the page
 
+Quote Post
BarsMonster
сообщение Sep 15 2011, 09:32
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-03-10
Из: Россия, Москва
Пользователь №: 55 849



Цитата(YuryL @ Sep 15 2011, 10:49) *
Обычно выбираем стратегию синтеза, метод оптимизации - по площади, по времени ...
Задаем временные ограничения. В соответствии с этими исходными данными синтезатор
выбирает подходящую архитектура модуля. Например, у синопсиса доступно 5 видов
архитектуры умножителей.

Multiplier Synthesis Implementationsa:

csa Carry-save array synthesis model
nbw Either a non-Booth (A_width+B_width ≤ 41) or a Booth Wallace-tree
(A_width+B_width > 41) synthesis modelb
wall Booth-recoded Wallace-tree synthesis model
mcarch MC-inside-DW Wallace-tree DesignWare
csmult MC-inside-DW flexible Booth Wallace DesignWare

During synthesis, Design Compiler will select the appropriate architecture for your constraints.
However, you may force Design Compiler to use one of the architectures described in this table.


Вот это няшка, не зря свой хлеб едят :-) Буду изучать.

А кто может подсказать как выглядят современные синтезаторы по сравнению друг с другом по их возможностям синтеза арифметики?
Т.е. у всех такие возможности, или синопсис просто круче всех? )


--------------------
Потроха микросхем: zeptobars.ru
Go to the top of the page
 
+Quote Post
yes
сообщение Sep 20 2011, 13:51
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(BarsMonster @ Sep 14 2011, 16:36) *
Я в том смысле, что если например разрабатываем DSP:
Мы просто пишем A=B*C+D и за нас все синтезируют (непонятно только как с выбором скорость<>размер), или нужно руками писать правильную реализацию умножения? Т.е. синтезируемая ли это конструкция и если да, то насколько она по дефолту эффективно реализуется?


ну собс-но говоря A=B*C+... в конце концов сводится к цепочке суматоров разрядности A
иначе, насколько я понимаю нельзя

а по поводу понимания как утрамбовать внутреннюю логику через CSA, Booth, Wallace и прочее - есть такая старая книжка ASIC the book, и большая часть ее в виде ASIC the website
там все это в картинках для CS стюдентов разрисовано (по моему глава так и называется datapath logic)

так как структуры там регулярные - то автоматизировать это не так уж и сложно - какие-нибудь симплифаи с пресижинами, да и даже квартусы с айсами вполне справляются

---------------------

интереснее, имхо, делитель реализовывать - чтоб он не 1 бит за такт давал, а битов 5
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 00:56
Рейтинг@Mail.ru


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