Pull to refresh

Comments 37

FPGA достаточно дорогие, но надежные устройства. Они начинают включаться при меньшем напряжении, чем номинальное, выдерживают импульсные наводки, часто короткое замыкание на ножках IO, быстро загружаются и могут использоваться для контроля и управления процессорами и умной периферией.
Цена ПЛИС может варьироваться в промежутке ~10$ -50000$. Надежность понятие крайне растяжимое, начиная с того это flash-based или SRAM-based FPGA, заканчивая конкретным дизайном, который может быть глючным сам по себе. Под меньшим напряжением, видимо понимается питание памяти конфигурации у SRAM-based FPGA, но, извините, это далеко не единственный домен питания, каждый банк питается определённым напряжением для поддержки соответствующего IO-стандарта (вы, кстати, это сами выше писали). По поводу скорости загрузки тоже некорректно, т.к. flash-based не грузятся вообще, а SRAM-based в зависимости от собственного размера и типа интерфейса конфигурации могут как медленно, так и очень-очень быстро. По поводу выдерживания импульсных наводок и КЗ — просто без комментариев… откуда вообще эти данные? Сейчас новички прочтут это и начнут коротить и перегружать выводы ПЛИС на отладочных платах, и будет очень весело отлаживать глюки в дизайне на глючном железе.
Про надежность — это сравнение работающих плат с микроконтроллерами, процессорами и FPGA. И платы с FPGA во всех рассмотренных случаях оказывались наиболее живучими, особенно маленькие PLD серии MAX от Altera/Intel. Ни одного сброса прошивки или зависания за 20 лет работы устройств. А зависания процессоров по разным причинам от питания до наводок на шину — это классический процесс отладки и залатывания дыр в софте.
Нет у FPGA (общих серий, MIL/AEROSPACE градации не рассматриваем, их всёравно нам никто не продаст) повышенной терпимости к КЗ на выходе. И с напряжениями тоже всё не очень вкусно, про 3.3в у современных вообще можно забыть, даже у Cyclone III в аппноуте была отдельная приписка про то, что 3.3в накладывает дикие ограничения на токи и быстродействие, у более свежих таким образом уже и 2.5в пропадает. Скорость загрузки — могу цитату интела привести: «Ого, у вас PCIe поднялось без механизма неполной загрузки и CvP — ну это сугубо ваше везение, и на новых чипсетах так работать не будет.»
Использую Cyclone IV, без проблем работает с 3.3В сигналами.
LVDS по стандарту требует 2.5В, подключить 3.3В софт не даст. Но это не технологическое ограничение. Что делать в таком случае? Варианты: 1) плюнуть на стандарт, и провести собственные тесты на 3.3В, 2) на порядок повысить стоимость и сложность проекта. Я выбрал 1-ый вариант, тк не ответственное применение.

Про +2,5 вольта на LVDS не совсем так. Это требование не стандарта, а производителя конкретной микросхемы. К примеру, в Cyclone 10 GX формировать LVDS могут только банки с питанием +1,8 вольта. В более ранних Cyclone — только банки с питанием +2,5 вольта.

Согласен, ошибался, что это ограничение стандарта.
На мой взгляд, есть два разумных применения ПЛИС:
-Прототипирование кристаллов (с последующим запуском ASIC в серию)
-Построение спецвычислителей/нестандартных контроллеров в малосерийном производстве (когда выпускать свой ASIC экономически нецелесообразно).

Остальные задачи — это из пушки по воробьям, вроде «коммутируем 3,3 В на 2,5 В» или «ПЛИС как супервизор по питанию». Эти задачи решаются очень дешёвыми микросхемами, созданными именно для этого.

А уж «заводите всё на ПЛИС, там разберёмся» — это вообще за гранью. Вы серьёзно считаете, что использование ПЛИС в качестве «коммутатора всего-на-всё» будет дешевле дополнительных 2 или даже 4 слоёв в плате?

ПЛИС — это отличная вещь сама по себе. Вот только не нужно пихать её всюду по поводу и без.
Про разумные применения ПЛИС — предлагаю добавить еще один пункт, построение сложных вычислителей с возможностью изменения алгоритма обработки.
Причем это изменение может быть как следствием исправления ошибки (в ASIC уже ничего не поправишь), так и просто заменой алгоритма шифрования, например.
Так это и ежу понятно, у альтеры были даже серии hardcopy и сервис по заморозке дизайна и выпуску ASICа на этой самой серии, правда этот сервис похоронили с возвращением фирмы обратно в интел.
в ASIC уже ничего не поправишь

Я тоже так думал, но недавно узнал, что можно с помощью фокусированного ионного луча (Focused Ion Beam (FIB)) делать простые доработки: перерезать связь, добавить новую. Дорого, конечно. Но зато можно опробовать некоторые изменения до перезапуска разработки. Сродни перерезанным дорожкам и перемычкам на печатной плате при первом запуске.

Более-менее — поддержу предыдущих ораторов.
Пп. 1-3 — просто высосаны из пальца.
По п. 6, если речь идёт о "сторонних" процессорах (т.е. "от 8086 до ...") — лучше начать с opencores.org, чем с сайта производителя ПЛИС.
Остальное — верно в той или иной мере (которая определяется тиражом производимого прибора).

opencores.org не поддерживает внутрисхемной отладки, которая есть в процессорах с сайта производителя ПЛИС. А она позволяет существенно ускорить отладку — на дворе уже 21 век давно. Не все же светодиодом моргать и в консоль выводить.
В рамках интела не забудьте, что вам прийдется купить лицензию на ARM DS5 (хотябы Altera Edition) для этой отладки, иначе ничего, кроме как приложения через GDB на уже загруженном в АРМе линуксе вы не отладите.

opencores — это лишь агрегатор открытых пректов на ПЛИС. Любой желающий может поместить туда свой проект. Наличие/отсутствие JTAG в ядрах процессоров — это заслуга/недоработка автора проекта. Никто не мешает взять исходники и добавить туда недостающий функционал. С другой стороны JTAG потребует некоторых ресурсов, что может быть критично в общем дизайне, а в продакшен-версии JTAG не нужен совсем.

У FPGA (но не CPLD !) возможная область применения действительно очень широкая. Дешевые FPGA, например, могут полностью вытеснить микроконтроллеры, это экономически и технологически оправдано. Мешает одно — отсутствие адекватных языков описания аппаратуры, ориентированных именно на синтез, а не на моделирование.
Если брать SystemVerilog, то я полностью согласен, но чем классические Verilog/VHDL плохи? Впринципе если в голове держать парадигму «всё параллельно и одновременно +-задержки», то можно довольно быстро въехать.
Классические HDL плохи тем, что на них трудно описывать сложные алгоритмы обработки.
Сначала было трудно, потом привыкли :)
Изнутри HDL-инженера как-то затрудняюсь понять, в чём сложность и чего не хватает в плане «ориентации на синтез».
Классические HDL не сложны, просто недостаточны для решения многих задач, если сравнивать с традиционными языками программирования. Мне интересна эта тема, поэтому провел много экспериментов, пытаясь понять, чего именно не хватает традиционным HDL. Например, сравнивал сложность и громоздкость написания Тетриса на Си для ПК, и на HDL для ПЛИС. Или простого симулятора 2Д физики, включая графический редактор сцен, и тд. Это как раз задачи, для которых хватает ресурсов дешевых ПЛИС (без использования софт-процессора).

Пробовали ли Вы HLS? Если да, то каково впечатление?

Дешевые FPGA, например, могут полностью вытеснить микроконтроллеры, это экономически и технологически оправдано.
А вы не могли бы привести примеры? Какая дешёвая FPGA может вытеснить, скажем, stm32f303cct6?
По цене уже сейчас есть FPGA в районе 5$ на DigiKey, например у EFINIX (сам использую Cyclone IV). Такого выбора АЦП/ЦАП, как в МК, в ПЛИС пока нет, но это обусловлено не технологией, а существующим позиционировании на рынке. Но на FPGA можно, например, реализовать TDC ADC с быстродействием ~200Мвыб/сек при разрядности ~6бит, с минимальной пассивной обвязкой -сам пробовал (можно посмотреть мои посты под ником Leka на форумах ixbt.com, electronix.ru, marsohod.org).
Ну так это ни так не дешевле, ни эдак. Этот МК в рознице в России < $3. Ещё одно удорожание в случае FPGA — это решительное увеличение требований к квалификации разработчика. FPGA могут всякие интересные (и странные) вещи на скоростях, недоступных МК, но, почти всегда, это дорого и нишево.

А что насчёт потребления, как для носимой электроники и IoT?
FPGA сейчас не позиционируются на вытеснение МК, отсюда и разница в ценах. Малопотребляющие FPGA есть у Lattice.
Автор не написал интересного применения ПЛИС: защиты технологий. Во многих больших ПЛИС есть возможность «программировать» их зашифрованным содержимым. Ключ шифрования прошивается в чип, и расшифровка производится внутри него «на лету» при загрузке. Таким образом можно скрыть от любопытных алгоритмы преобразований сигналов или вычислений.
Вот только эта криптография как правило есть только в жирных ПЛИС, ценник которых не очень вкусный.
Часть микросхем имеет интерфейс 1.2В, другая 1.5, 1.8, 2.5, 3.3В...

Угу, а ещё очень приличная их часть имеет интерфейс 5 вольт, и вот тут как раз случается облом… image
Да, и как заметили в комменте выше, с 3,3 В тоже есть определённые проблемы.

Только не надо говорить, что «такие уже мало где используются». Большинство читателей вашей статьи — не инженеры Intel или Realtek, а обычные радиолюбители с паяльником / программисты. А у них очень даже входу такие микросхемы.
1)
Они начинают включаться при меньшем напряжении, чем номинальное, выдерживают импульсные наводки, часто короткое замыкание на ножках IO

Интересно, что есть FPGA, которые не поддерживают горячего включения. Т.е. пока каскады I/O не запитаются, на входы ничего нельзя подавать, иначе от тока на I/O FPGA может повредиться.
См. пример здесь, искать по «Do Not Drive I/O Pins During Power Sequencing»:
www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyclone-10/c10gx-51003.pdf

2)
FPGA (маленький PLD)

Подскажите пожалуйста, есть ли разница между Programmable Logic Device, Complex Programmable Logic Device и Field Programmable Logic Device?

3)
При этом отсутствует избыточность процессора, появляется малое потребление при той же скорости и функциональности

В то же время, FPGA кушает много тока. Одно статическое потребление некоторых FPGA уже поражает. Для ряда приложений, того же Интернета Вещей, микроконтроллер будет намного более выигрышным вариантом по потреблению.

4)
Отладив таким образом вычисления можно заказать ASIC, то есть заказную микросхему, выполняющую те же функции, но дешевле

Не совсем так. Проект, написанный для ПЛИС, можно попытаться перенести в ASIC. Только если в исходном проекте использовались примитивы FPGA (например, блочная память), то эти куски проекта придётся нещадно править. Никто не гарантирует, что под выбранный техпроцесс есть эквивалентные макроэлементы. Далее при синтезе логики под ASIC нужно будет добавлять сканирующую логику (Design for Test), ведь фабрика должна будет проверить готовый чип. Логика должна быть DFT friendly. В проектах для FPGA об этом даже думать не надо. Затем, в FPGA нет такой части, как back-end: не надо думать о целостности сигналов внутри кристалла, SPICE моделировании I/O. Добавление back-end, более объемная верификация требует больше человеко-часов. Уже только это скажется на стоимости разработки. Если приплюсовать сюда стоимость лицензий на инструменты, то получим намного менее привлекательную сумму.
ASIC будет дешевле только за счёт тиража, я бы сказал.
Да, есть такой интересный документ по преобразованию проектов ПЛИС под ASIC:
www.onsemi.com/pub/Collateral/HBD872-D.PDF
Там довольно неплохо описаны все этапы.

5)
гиганты разработки FPGA начали создавать специальное ПО, позволяющее интерактивно переносить части вычислений из программы на C/C++ в FPGA и контролировать быстродействие (HLS, High-Level Synthesis)

HLS всё равно описывает аппаратуру, поэтому нужен определенный стиль кода и описания функций. Нельзя взять любой C++ код, положить его в HLS синтезатор и получить на выходе рабочую логику.
Далее при синтезе логики под ASIC нужно будет добавлять сканирующую логику (Design for Test), ведь фабрика должна будет проверить готовый чип. Логика должна быть DFT friendly. В проектах для FPGA об этом даже думать не надо.

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

Спасибо! Я пока только начал изучать мир проектирования ASIC. У меня сложилось впечатление, что без DFT совсем никак, потому что надо проверить чипы на пластине и отсеять брак.

Я думаю, зависит от сложности цифровой части и архитектуры. Scan-chain, например, позволяет отбраковывать ошибки техпроцесса, когда где-то внутри произошло КЗ дорожек или плохо отлился кремний. В контексте сказанного вами для FPGA разработчику про такое действительно не нужно думать, т.к. он покупает микросхему уже после отбраковки.
Это только часть применений FPGA, с которыми можно столкнуться.
И жаль, что не так много людей ее активно используют и развивают.

давно к ним приглядываюсь, но порог вхождения высокий.
микроконтроллеры проще и быстродействие позволяет закрывать большинство практических задач

По факту в России FPGA используют только военные НИИ для производства радаров, активных фазированных решёток и раций.

И ставят они себе FPGA чип Xilinx Spartan 6.

Причём такие компании базируются в депресняковых промзонах, зарплаты там низкие и куча заморочек типа нет доспупа в интернет.

Поэтому перспектива работать FPGA разработчиков в РФ не особо захватывает дух.

Как по мне лучший учебный проект для изучения FPGA это аудиообработка.

Протопипы сонаров, модуляций, демодуляций.

Вся эспертиза переносится на радио обработку просто заменой adc dac.

Sign up to leave a comment.

Articles