Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Умножение в ПЛИС.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Serhiy_UA
В студенческие годы изучал матричные умножители на основе дерева сумматоров. Даже проектировал на логике 133 серии работающие платы матричных умножителей; тогда еще не было возможности применять ни ПЛИС, ни БИС, не MCU. Скорости были 1 МГц для 12*12 в доп.кодах, очень скромные по сегодняшним меркам. Но эта же матрица позволяла и делить...

Интересно было бы узнать, как сейчас это делают в ПЛИС, там 18*18 умножают со скоростью 100 МГц и более, за счет каких схем и структур, какие алгоритмы и ухищрения используются?
Просто любопытно, может, кто знает...
bogaev_roman
Цитата(Serhiy_UA @ Dec 28 2015, 16:03) *
Интересно было бы узнать, как сейчас это делают в ПЛИС, там 18*18 умножают со скоростью 100 МГц и более, за счет каких схем и структур, какие алгоритмы и ухищрения используются?
Просто любопытно, может, кто знает...

Речь идет о встроенных умножителях(DSP модулях), описание нужно смотреть для конкретного семейства в даташите. Хотя для пользователя, мне кажется, важнее скорее знать не структуру, а максимальное быстродействие и умение им пользоваться.
Dmitriyspb
Цитата(Serhiy_UA @ Dec 28 2015, 16:03) *
В студенческие годы изучал матричные умножители на основе дерева сумматоров. Даже проектировал на логике 133 серии работающие платы матричных умножителей; тогда еще не было возможности применять ни ПЛИС, ни БИС, не MCU. Скорости были 1 МГц для 12*12 в доп.кодах, очень скромные по сегодняшним меркам. Но эта же матрица позволяла и делить...

Интересно было бы узнать, как сейчас это делают в ПЛИС, там 18*18 умножают со скоростью 100 МГц и более, за счет каких схем и структур, какие алгоритмы и ухищрения используются?
Просто любопытно, может, кто знает...


Эх вы!=)) Помните еще 133 логику, а интернетом не научились пользоваться......
Инфы очень много... как пример Нажмите сюда! см. стр 14
Serhiy_UA
Может, не совсем полно сформулировал свой вопрос. Меня интересовала внутренняя структура самого умножителя, принципы его схемотехнического построения, ну и главное за счет чего он такой быстрый, то есть что там в нем внутри. Вопрос чисто из любопытства, и никакого практического продолжения не имеет…
По части примеров применения умножителя от Xilinx, что выложил Dmitriyspb, то документ интересный. Или мне так кажется, но как раз Xilinx очень хорошо объясняет, как применять свои ПЛИС, и в этом их большой плюс…
Ну и попутно, в воронежских ПЛИС (аналогов FLEX10K) нет узлов DSP и соответственно готовых встроенных умножителей. Как там обходятся, если что-то надо массово умножать или уже есть российские ПЛИС с блоками DSP…
likeasm
У Воронежа есть ПЛИС с DSP умножителями, нужно повнимательнее поискать.
По поводу умножения на логике, если надо быстро, то конвейер вам в помощь.
Vascom
Схемотехнически это делается точно так же как и на логике. Только вместо "медленной" конфигурироемой логики FPGA этот умножитель представляет собой цельный блок на кристалле, который нельзя переконфигурировать для других задач.
Конечно сам DSP блок немного конфигурируется, но всё равно он содержит уже готовые сумматоры, перемножители, регистры. За счёт этого и достигается высокая скорость, ну и за счёт современных техпроцессов производства ПЛИС.

То же самое умножение можно сделать и на логике FPGA, и работать будет почти с той же скоростью, но занимает гораздо больше места.
Dmitriyspb
Цитата(Serhiy_UA @ Dec 29 2015, 09:42) *
ну и главное за счет чего он такой быстрый, то есть что там в нем внутри.


Понятие быстрые - это весьма относительное понятие. Если Вы сравниваете 133 серию и современные ПЛИС (fpga), то наверное Вам стоит начать разбираться с эволюцией электроники за последние 20 лет. Разберитесь с принципом работы ПЛИС... думаю только тогда вы поймете чем занимались во всем электронном мире последних 20 лет.

Цитата(Serhiy_UA @ Dec 29 2015, 09:42) *
но как раз Xilinx очень хорошо объясняет, как применять свои ПЛИС, и в этом их большой плюс…

Это ошибочное суждение, у Altera тоже все идентично описано (не хуже).

Цитата(Serhiy_UA @ Dec 29 2015, 09:42) *
Вопрос чисто из любопытства, и никакого практического продолжения не имеет…


просто поговорить?
Serhiy_UA
Цитата(Dmitriyspb @ Dec 29 2015, 11:38) *
...Вам стоит начать разбираться с эволюцией электроники за последние 20 лет. Разберитесь с принципом работы ПЛИС... думаю только тогда вы поймете чем занимались во всем электронном мире последних 20 лет.

Уважаемый, Dmitriyspb,
CPLD и FPGA от Xilinx и Altera я постоянно занимаюсь с 2000 года, проектов достаточно много. Давайте не отклоняться от темы, я ее уже достаточно уточнил…

Dmitriyspb
Цитата(Serhiy_UA @ Dec 29 2015, 12:20) *
Уважаемый, Dmitriyspb,
CPLD и FPGA от Xilinx и Altera я постоянно занимаюсь с 2000 года, проектов достаточно много. Давайте не отклоняться от темы, я ее уже достаточно уточнил…


А откуда такие вопросы? За 16 лет не удалось разобраться с принципом построения цифровых устройств на базе ПЛИС? С их компиляторами и т.п?
Fat Robot
Поищите Wallace tree, Booth multiplier. В открытом доступе много статей и студенческих проектов. Библиотеки стандартых ячеек содержат примитивы как раз для этой реализации схем умножения.

P.S. fpga-программисты такие программисты.

Цитата(Serhiy_UA @ Dec 28 2015, 17:03) *
Интересно было бы узнать, как сейчас это делают в ПЛИС, там 18*18 умножают со скоростью 100 МГц и более, за счет каких схем и структур, какие алгоритмы и ухищрения используются?
Просто любопытно, может, кто знает...
Serhiy_UA
Цитата(Dmitriyspb @ Dec 29 2015, 12:42) *
А откуда такие вопросы? За 16 лет не удалось разобраться с принципом построения цифровых устройств на базе ПЛИС? С их компиляторами и т.п?

Прочтите еще раз мои вопросы. Там не спрашиваются принципы построения цифровых устройств на ПЛИС. Не идет речь о компиляции и т.п.. Также я не спрашиваю никого о том, куда ушли мои последние 16 лет…
Если затрудняетесь сказать, что и как внутри самих умножителей, так не нужно плодить пустые посты, и заговаривать тему. Тема не тривиальная и достаточно интересна и по логике и по схемотехнике, но пока еще не раскрыта…

to Fat Robot
Спасибо, уже то что надо!
Есть ключевое слово!
Vascom
А чем мой ответ не устроил?
Alex11
Цитата
А чем мой ответ не устроил?

Ну, например,полным отсутствием конкретики: "содержит уже готовые сумматоры, перемножители, регистры" - а что он еще может содержать?
- радиостанция на лампах или транзисторах?
- для непонятливых повторяю - радиостанция на бронетранспортере.
Вопрос же достаточно корректно поставлен - по какой именно структуре делаются современные умножители для повышения скорости.
Я, к сожалению, сам ответа не знаю - не интересовался вопросом.
Vascom
Ответ - по самой простой структуре, дереву сумматоров. Как у вас в начале темы. Обычная комбинаторная логика.
Это же самый простой и быстрый алгоритм умножения. Все остальные либо требуют несколько тактов либо оказываются быстрее лишь для ряда чисел, а не для всех вариантов множителей.

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

Какая ещё конкретика нужна?
В качестве референса можно взять небольшой код с умножителем и сгенерировать нетлист не для FPGA, а для ASIC и убедиться, что умножение делается не "особыми схемами и алгоритмами", а обычным матричным перемножителем.
Serhiy_UA
Цитата(Vascom @ Dec 29 2015, 14:43) *
А чем мой ответ не устроил?

Понимаете, Vascom, хотелось бы найти на структурном уровне описание внутренностей современных умножителей со всеми примененными в них арифметическими и схемными финтами, и которые однозначно применены в DSP блоках ПЛИС, и еще лучше знать в каком семействе.
Арифметических финтов в таких умножителях достаточно и они поучительны сами по себе. А лично мне также интересны в их развитии, как знающему с чего это начиналось....

А по поводу применения DSP блоков, хорошую ссылку дал выше Dmitriyspb, мне такая до этого еще не поподала.
Vascom
Логично предположить, что конкретная разводка DSP-модуля - тайна за семью печатями. И её раскрытие будет восприниматься как промышленный шпионаж.
Fat Robot
Это не так. См. Wallace tree или здесь более детальное сравнение.

Если нет лицензии на "продвинутую" реализацию арифметических блоков, то, да, будет синтезироваться умножитель c простейшей реализацией Carry-save array. См. DW02_mult.

Цитата(Vascom @ Dec 29 2015, 15:19) *
Ответ - по самой простой структуре, дереву сумматоров.
Это же самый простой и быстрый алгоритм умножения.
В качестве референса можно взять небольшой код с умножителем и сгенерировать нетлист не для FPGA, а для ASIC и убедиться, что умножение делается не "особыми схемами и алгоритмами", а обычным матричным перемножителем.
Vascom
Хорошо, убедили sm.gif

Но всё же считаю маловероятным узнать конкретную реализацию умножителя в DSP блоке FPGA.
Dmitriyspb
Цитата(Serhiy_UA @ Dec 29 2015, 14:21) *
А по поводу применения DSP блоков, хорошую ссылку дал выше Dmitriyspb, мне такая до этого еще не поподала.


Вы читали эту доку? Может вы разберетесь что там написано и вопросов не останется?!

Читайте доку, там все есть...
Corner
Цитата(Dmitriyspb @ Dec 29 2015, 15:00) *
Вы читали эту доку? Может вы разберетесь что там написано и вопросов не останется?!
Читайте доку, там все есть...

Вот вот. Все украдено до нас...
Fat Robot
Я читал, но не смог отыскать в документе 'Spartan-6 FPGA DSP48A1 Slice', по какой именно схеме реализован умножитель в DSP блоке. Везде, где рассматривается умножитель, он представляется законченным вычислительным узлом.

Может быть вы подскажете?

Цитата(Dmitriyspb @ Dec 29 2015, 16:00) *
Вы читали эту доку? Может вы разберетесь что там написано и вопросов не останется?!

Читайте доку, там все есть...
x736C
Serhiy_UA, порекомендую следующие материалы.

DSP with FPGA
Ссылка тут выкладывалась неоднократно.
К ней идет CD-ROM с примерами.

А также Altera Advanced Synthesis Cookbook.
Алгоритмы умножения расписаны достаточно подробно.

По поводу DSP-блоков.
МСМ, не думаю, что они содержат какие-то алгоритмические трюки.
На eetimes была неплохая статья:
В ней приводится следующая цитата из научной статьи.
"In this paper, we have presented empirical measurements quantifying the gap between FPGAs and ASICs for core logic. We found that for circuits implemented purely using the LUT based logic elements, an FPGA is approximately 35 times larger and between 3.4 to 4.6 times slower on average than a standard-cell implementation".

Думаю, в этом все и дело.
Tiro
Цитата(Fat Robot @ Dec 29 2015, 21:31) *
Я читал, но не смог отыскать в документе 'Spartan-6 FPGA DSP48A1 Slice', по какой именно схеме реализован умножитель в DSP блоке. Везде, где рассматривается умножитель, он представляется законченным вычислительным узлом.


Есть другая дока (устаревшая) xapp467.pdf, в ней есть упоминание на стр. 2 абзац 2. Вы знали biggrin.gif
Dmitriyspb
Цитата(Fat Robot @ Dec 29 2015, 21:31) *
Я читал, но не смог отыскать в документе 'Spartan-6 FPGA DSP48A1 Slice', по какой именно схеме реализован умножитель в DSP блоке. Везде, где рассматривается умножитель, он представляется законченным вычислительным узлом.

Может быть вы подскажете?


Я вот одного не могу понять?! А какая практическая ценность в знании того как в ПЛИС реализуют умножители.

Собирая автомобиль механик не задумывается о том из каких пород металла сделан подшипники. Главное тип и его характеристики. Если все это подходит к характеристикам ТЗ, то какая разница из какого и как металла сделана та или иная деталь.

Тут большинство инженеров - люди имеющие прикладные возможности, т.е. важно не как ты делал, а чтобы "работало хорошо" biggrin.gif

Если Вам интересна эта наука, то копайте буржуйский интернет. Начните с ведущих производителей ПЛИС (Xilinx, Altera). Там много информации в том числе и по этой теме. Все остальное догадки и голая теория,которая как известно имеет существенные отличия от практических реализаций.

ИМХО, но русский инженер (воспитанник ушедшей великой эпохи) почему-то считает для себя должным заниматься наукой на ровном месте вместо того, чтобы начать работать biggrin.gif biggrin.gif biggrin.gif

Вы планируете начать "синтезировать на листочке в клеточку" свой сверхбыстрый умножитель? Будете использовать диаграммы Вейча, СКНФ, СДНФ? smile3046.gif

Инженер должен разобраться с вопросом на столько глубоко на сколько это требует этот сам вопрос. А у Вас просто интерес и отсутствие желание копать интернет. Вы хотите найти человека, который Вам красиво все расскажет (еще и на русском языке).



Serhiy_UA
Цитата(x736C @ Dec 30 2015, 00:20) *
Serhiy_UA, порекомендую следующие материалы.

Все скачал, большое спасибо!
Книга DSP with FPGA очень, очень нужная!

Всех с 2016 годом!
Счастья, успехов, благополучия!
Leka
Цитата(Dmitriyspb @ Dec 30 2015, 09:54) *
Я вот одного не могу понять?! А какая практическая ценность в знании того как ...

cranky.gif
Действительно, зачем продавцу в супермаркете/слесарю на конвейере/разводчику печатных плат/программисту/и тд - знать интегралы и прочую ерунду?
Зачем математика/физика/химия в школе, если есть калькулятор/википедия/роспотребнадзор?
Kolya
Я кенечно не поддерживаю вашей иронии по поводу знания устройства тех же DSP блоков. Ибо занимался до недавнего разработкой безопасных схем с самотестированием и там очень критично было знание вплоть до транзисторов устройства всех компонентов, задействованных в проекте. Может человеку действительно такое нужно.
Dmitriyspb
Цитата(Leka @ Dec 30 2015, 13:16) *
cranky.gif
Действительно, зачем продавцу в супермаркете/слесарю на конвейере/разводчику печатных плат/программисту/и тд - знать интегралы и прочую ерунду?
Зачем математика/физика/химия в школе, если есть калькулятор/википедия/роспотребнадзор?


Тут не шло речи о интегралах, математике, физике и химии.

А вы знаете как реализован умножитель на ПЛИС?



Цитата(Kolya @ Dec 30 2015, 14:58) *
Я кенечно не поддерживаю вашей иронии по поводу знания устройства тех же DSP блоков. Ибо занимался до недавнего разработкой безопасных схем с самотестированием и там очень критично было знание вплоть до транзисторов устройства всех компонентов, задействованных в проекте. Может человеку действительно такое нужно.


Возможно, но он писал, что ему просто интересно.
Leka
Цитата(Dmitriyspb @ Dec 30 2015, 16:01) *
А вы знаете как реализован умножитель на ПЛИС?

Нет. Да и ПЛИС тут ни при чем, вопрос потом ТС уточнил:
Цитата
интересовала внутренняя структура самого умножителя, принципы его схемотехнического построения, ну и главное за счет чего он такой быстрый

Вопрос достаточно четко сформулирован, и понятно, что в даташитах на ПЛИС ответа не найти. Понятно также, что ТС интересует популярное изложение базовых принципов, чтобы получить общее представление. Подсказка, куда смотреть.
Зачем тут ссылки на даташиты, и прочий оффтопик?
Fat Robot
Практическая ценность, Dmitriyspb, - доступными способами познавать многообразие мира, и не быть ограниченным балаболом, который чего-то не может понять, но при этом указывает, кто и что должен делать.

Успехов

Цитата(Dmitriyspb @ Dec 30 2015, 09:54) *
Я вот одного не могу понять?! А какая практическая ценность

Инженер должен
Dmitriyspb
Цитата(Fat Robot @ Dec 30 2015, 17:22) *
ограниченным балаболом,

Успехов

Взаимно.

Вы вряд ли будете успешны

Цитата(Leka @ Dec 30 2015, 16:21) *
Нет.


Думаю что тут мало кто ответит на этот вопрос. Лень ТС искать, а тут спросил и ему быстренько написали. Так редко бывает
Corner
Никто пока ничего быстрее не придумал, кроме логического И со сдвигом и сложения результатов. Плюс, коррекция, если числа знаковые.
А в железе, используются блоки, соптимизированные по структуре. В них вместо ЛУТов используется готовая схема, которая все это делает раз в 3... 5 быстрее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.