Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите разобраться с F_max при использовании lpm_mult
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
vea
Здравствуйте!

Есть простейший модуль на верилоге - только умножитель 32x32. Использую lpm_mult через мегавизард квартуса (11sp2).
Хочу, естественно, добиться максимальной скорости. Использую аппаратные умножители и оптимизацию по скорости:

lpm_hint = "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=5"

Пробую разные значения lpm_pipeline = 3, 4, 5, 6, 8.
Максимальное значение (222 МГц) при 4.
При остальных - меньше. Я могу представить, почему уменьшается f_max при lpm_pipeline = 3, но почему он также уменьшается при 6 или 8?

Заметил, что при использовании беззнакового умножения скорость растет. Почему - также не совсем понятно.
Подскажите, в какую сторону искать?
bogaev_roman
vea Вы забыли указать тип кристалла и скорость, а так же каким образом Ваш умножитель реализуется. Например в stratixiv по умолчанию скорее всего будет использоваться 36-Bit Multiplier (Half-DSP Block) в виде суммы 4 умножителей
http://www.altera.com/literature/hb/strati...x4_siv51004.pdf (с. 19), но в других случаях возможны другие варианты - вплоть до реализации на обычных ячейках с распаралеливанием (хоть собственного производства, хоть с помощью настроек), так что смотрите конкретный даташит для Вашей плисины и там же можно посмотреть максимально возможную частоту для аппаратных DSP/умножителей - http://www.altera.com/literature/hb/strati...x4_siv54001.pdf (с 49) - 480, 440, 380МГц в зависимости от спид грейта.
vea
bogaev_roman, спасибо.

Кристалл - циклон 4.
Согласно квартусу - используется четыре умножителя 18х18.
Согласно даташиту - максимальная скорость работы этих умножителей - 250 МГц (именно в режиме 18х18).

Но я нигде не могу найти упоминаний об особенностях умножения со знаком- а скорость падает значительно, стоит включить lpm_representation = "SIGNED"
bogaev_roman
Цитата(vea @ Jul 12 2012, 12:33) *
bogaev_roman, спасибо.
Согласно квартусу - используется четыре умножителя 18х18.

Да, 4 аппаратных умножителя, но после них стоят сумматоры - не аппаратные (и если используется signed, то реализуются они по другому), причем разрядность максимального (если он нераспаралелен) - 35 (ну или сколько там). Таким образом скорость падает, как мне кажется именно на сумматорах (при знаковых числах там же еще дополнительные манипуляции типа инвертирования, арифметику уже подзабыл). Посмотрите цепочку максимального пути в timequest (она скорее всего именно на сумматоре) и реализацию после синтеза, а потом фиттера - станет все яснее. Получается, что пайплайн дробит еще и сумматоры, кроме добавления триггеров после умножителей и после каждого сумматора в цепочке.
vea
Как оказалось, решающее влияние на значение fmax имеет не pipline, a параметр MAXIMIZE_SPEED. По всей видимости, как раз он отвечает за эффективность (в том или ином смысле) использования сумматоров.

Судя по полученным результатам, для достижения максимального значения fmax нужно установить

pipeline=4
MAXIMIZE_SPEED=9

bogaev_roman, спасибо за помощь!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.