Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как работают быстрые умножители?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Разработка цифровых, аналоговых, аналого-цифровых ИС
BarsMonster
Сабж.
Как сумматор с ускоренным переносом работает - в принципе понятно.
Но как умножение за 1 такт делают (32*32->32/64) - вот это не понятно.
Кто подскажет? Или покажите книжку по этой теме.

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

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


То что такты не нужны это понятно. Не понятно как куча последовательных сложений успевает пролететь так быстро.
Понятно что можно тут соптимизировать и складывать не "в столбик, последовательно", а парралельно по парам - но все равно, log2(32) = 5 сложений должно пролететь последовательно в любом случае... Ничего другого тут нет?
vitus_strom
ключевые слова Booth algorithm + Wallace tree (или более регулярное дерево) + final addition
nikolascha
Цитата(BarsMonster @ Sep 13 2011, 15:09) *
Также, для ASIC как генерируются такие схемы? Есть какие-то генераторы? Или руками, на Verilog/VHDL?
Если вы имели в виду генерацию топологии, то у ментора для этого вроде Datapath служит.
BarsMonster
Цитата(nikolascha @ Sep 14 2011, 15:19) *
Если вы имели в виду генерацию топологии, то у ментора для этого вроде Datapath служит.


Я в том смысле, что если например разрабатываем DSP:
Мы просто пишем A=B*C+D и за нас все синтезируют (непонятно только как с выбором скорость<>размер), или нужно руками писать правильную реализацию умножения? Т.е. синтезируемая ли это конструкция и если да, то насколько она по дефолту эффективно реализуется?
YuryL
Обычно выбираем стратегию синтеза, метод оптимизации - по площади, по времени ...
Задаем временные ограничения. В соответствии с этими исходными данными синтезатор
выбирает подходящую архитектура модуля. Например, у синопсиса доступно 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.
BarsMonster
Цитата(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.


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

А кто может подсказать как выглядят современные синтезаторы по сравнению друг с другом по их возможностям синтеза арифметики?
Т.е. у всех такие возможности, или синопсис просто круче всех? )
yes
Цитата(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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.