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

 
 
 
Reply to this topicStart new topic
> Реализация умножителей на LE в Cyclone II
РРоман
сообщение Feb 1 2008, 08:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Столкнулся с такой странностью: в некоторых случаях умножитель на LE дает большую Fmax, чем аналогичный умножитель с меньшей разрядностью! В частности это справедливо для Cyclone II-6 с умножителями 30х30(113МГц) и 28х28(94МГц). Замечено, что при этом существенно сокращается критический путь, но за счет чего? Пока мне не удалось найти никакой информации в AppNotes по этому поводу. Можеть кто-нибудь подскажет в чем дело?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Feb 1 2008, 08:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(РРоман @ Feb 1 2008, 11:06) *
Столкнулся с такой странностью: в некоторых случаях умножитель на LE дает большую Fmax, чем аналогичный умножитель с меньшей разрядностью! В частности это справедливо для Cyclone II-6 с умножителями 30х30(113МГц) и 28х28(94МГц). Замечено, что при этом существенно сокращается критический путь, но за счет чего? Пока мне не удалось найти никакой информации в AppNotes по этому поводу. Можеть кто-нибудь подскажет в чем дело?

Разница в разрядности невелика, скорее всего - разница в раскладке.
Go to the top of the page
 
+Quote Post
РРоман
сообщение Feb 8 2008, 06:21
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(DmitryR @ Feb 1 2008, 11:56) *
Разница в разрядности невелика, скорее всего - разница в раскладке.


Поясните пожалуйста что Вы понимаете под раскладкой?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Feb 8 2008, 09:41
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(РРоман @ Feb 8 2008, 09:21) *
Поясните пожалуйста что Вы понимаете под раскладкой?

Взаимное расположение элементов на кристалле.
Go to the top of the page
 
+Quote Post
РРоман
сообщение Feb 8 2008, 10:14
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(DmitryR @ Feb 8 2008, 12:41) *
Взаимное расположение элементов на кристалле.

Возможно, но не похоже, чтобы это было просто результатом "удачного размещения". Описанная ситуация повторяется для нескольких серий ПЛИС, различных емкостей, градаций скорости и т.п. Такое впечатление, что в архитектуре или алгоритме синтеза заложен какой-то фокус, позволяющий существенно сократить критический путь при достижении некоторой разрязрядности умножителя.
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Feb 9 2008, 17:21
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Только что взял пустой проект и мегавизардом создал умножитель на LE, который сделал top level entity. результаты Longest tpd:
28*28 - 29.139ns
30*30 - 30.976ns
оба unsigned, без конвеера.
кристалл EP2C5F256C6
Quartus II 6.1

Может причина в другой части проекта?
Go to the top of the page
 
+Quote Post
РРоман
сообщение Feb 12 2008, 07:00
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(Artem_Petrik @ Feb 9 2008, 20:21) *
Только что взял пустой проект и мегавизардом создал умножитель на LE, который сделал top level entity. результаты Longest tpd:
28*28 - 29.139ns
30*30 - 30.976ns
оба unsigned, без конвеера.
кристалл EP2C5F256C6
Quartus II 6.1

Может причина в другой части проекта?


Прошу прощения, я не указал, что на входе умножителя стоят регистры (описаны на Verilog ), и на выходе также регистр (pipeline =1). Если интересно, прикрепляю файлы описаний.
Полученные мною результаты:
family CYCLONEII
device EP2C35F484C6
Width: 22 x 22 LE Usage: 607 Fmax: 110.05 MHz ( period = 9.087 ns )
Width: 24 x 24 LE Usage: 714 Fmax: 105.88 MHz ( period = 9.445 ns )
Width: 26 x 26 LE Usage: 833 Fmax: 99.72 MHz ( period = 10.028 ns )
Width: 28 x 28 LE Usage: 948 Fmax: 94.75 MHz ( period = 10.554 ns )
Width: 30 x 30 LE Usage: 1,074 Fmax: 113.25 MHz ( period = 8.830 ns )
Прикрепленные файлы
Прикрепленный файл  mult.rar ( 1.73 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Feb 14 2008, 20:03
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Да, действительно, у меня примерно такая же картина, правда цифры немного другие.
Смотрел структуру умножителя в RTL viewer-е, принципиальных различий не обнаружил. Однако должен отметить, что регистр
Цитата
и на выходе также регистр (pipeline =1)

стоит совсем не на выходе, а примерно в середине структуры. Это и логично, самый длинный путь нужно разбить пополам. Так вот, видимо при 30 битном умножении этот регистр стоит ближе к середине, чем при 28 битном. Издержки универсальности описания видимо.

Попробовал такой финт: умножитель описал как 30-битный, но младшие 2 бита установил в 0. Лишняя логика соптимизировалась, и получилось LE как в 28-битном, а скорость осталась как в 30-битном.
Единственное, что нельзя гарантировать что эффективность такой "оптимизации" сохранится на последующих версиях квартуса, точнее мегафункции, хотя и маловероятно, что ее кто-то будет переписывать
Go to the top of the page
 
+Quote Post
РРоман
сообщение Feb 17 2008, 15:05
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(Artem_Petrik @ Feb 14 2008, 23:03) *
Однако должен отметить, что регистр pipeline=1
стоит совсем не на выходе, а примерно в середине структуры. Это и логично, самый длинный путь нужно разбить пополам. Так вот, видимо при 30 битном умножении этот регистр стоит ближе к середине, чем при 28 битном. Издержки универсальности описания видимо.


Огромное спасибо за подсказку!!! Получается, что я неправильно описал устройство, но за то получились интересные выводы... :-)
Go to the top of the page
 
+Quote Post
vetal
сообщение Feb 17 2008, 15:23
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



хм... для чистоты эксперимента надо входам и выходам умножителя ставить virtual pin = true. Провел эксперимент на maxii - 28*28 медленнее 30*30!
Go to the top of the page
 
+Quote Post
РРоман
сообщение Feb 19 2008, 17:18
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Похоже, что Artem_Petrik все же прав, без pipeline никаких скачков нет, все линейно:
Width: 24 x 24 LE Usage: 756 Fmax: 62.96 MHz ( period = 15.882 ns )
Width: 28 x 28 LE Usage: 996 Fmax: 58.38 MHz ( period = 17.130 ns )
Width: 32 x 32 LE Usage: 1,265 Fmax: 53.01 MHz ( period = 18.866 ns )
Width: 36 x 36 LE Usage: 1,569 Fmax: 44.16 MHz ( period = 22.644 ns )

PS Virtal Pins тоже добавил, спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:02
Рейтинг@Mail.ru


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