Читая о ПЛИС, если я правильно понимаю, это в основном полностью настраиваемые схемы логических вентилей. Будучи этим, с ними можно создать что угодно. Можно спроектировать все максимально адаптированным образом и, следовательно, достичь тех же целей гораздо более эффективным способом, который можно получить с помощью микроконтроллера. Имея это, похоже, что FPGA побеждает микроконтроллер в любое время, в любой день. Итак, мой вопрос: если FPGA действительно такие крутые, что мешает им быть гораздо более распространенными, чем микроконтроллеры? С этой точки зрения мне кажется, что ПЛИС должны были давно уничтожить микроконтроллеры. Так почему же это не так? Это стоимость, сложность программирования ПЛИС или что-то еще?
microcontroller
fpga
Утка
источник
источник
Ответы:
Вы игнорируете множество факторов, влияющих на выбор дизайна:
Основное преимущество ПЛИС по сравнению с микро - это то, что они быстрее и могут выполнять больше задач параллельно. Кроме этого, вы бы предпочли использовать микро. Поэтому в процессе проектирования вы обычно начинаете с микро, а затем неохотно переходите к FPGA, когда вам действительно нужна скорость и / или одновременная высокоскоростная работа. Даже тогда вы реализуете только критические по скорости детали в ПЛИС и оставляете функции управления на более низкой скорости и тому подобное в микроуровне.
источник
Одно из различий, которое я здесь не видел, заключается в том, что ПЛИС используются и ведут себя совершенно иначе, чем процессоры.
FPGA действительно хорош в выполнении одной и той же задачи, снова и снова. Например, обработка видео, аудио или радиосигналов. Или маршрутизация пакетов Ethernet. Или моделирование потока жидкости. В любой ситуации, когда вы получаете очень много одинаковых данных, вам очень быстро приходится работать с ними одинаково. Или вы хотите запустить один и тот же алгоритм несколько раз. FPGA действительно не имеет «задач», которые запускаются и останавливаются [1], вся ее работа заключается в том, чтобы делать то же самое с любыми данными, которые они получают, в течение всего времени, пока они включены. Он не меняет передачи, больше ничего не делает. Это конечный работник производственной линии. Он будет делать то же самое неоднократно, так быстро, как только может, навсегда.
Процессоры, с другой стороны, являются воплощением гибкости. Они могут быть запрограммированы на все что угодно, и они могут быть запрограммированы на одновременное выполнение нескольких разных действий. У них есть задачи, которые запускаются и останавливаются, они переключают передачи, многозадачны, постоянно переключаются и меняют функции.
FPGA и CPU - полная противоположность. Товар ЦП - это время - он должен делать вещи быстрее. Чем быстрее работает ваше приложение, тем лучше.
Товар FPGA - это космос. Ваша FPGA настолько велика, и есть только так много доступных ворот для выполнения желаемой задачи. В большинстве случаев проблема больше в размере, чем в скорости [2].
Можно заставить FPGA действовать как процессор. Вы можете поместить IP-ядро ЦП в ПЛИС, однако это очень трудно оправдать из-за причин, описанных другими [3]. ПЛИС и ЦП являются противоположностями, оба имеют свои сильные и слабые стороны, и в результате оба имеют свое место.
Примечания:
1) ПЛИС может быть спроектирована для выполнения различных задач, но даже тогда это будет конкретный номер, для которого она была предварительно разработана.
2) Скорость также является спецификацией FPGA. Это действительно компромисс между скоростью и размером.
3) Установка ЦП в ПЛИС выполняется относительно часто, однако это делается в каждом конкретном случае, в зависимости от конкретных приложений. Например, если вам нужен действительно крошечный микроконтроллер и у вас есть дополнительное пространство для ПЛИС.
И наконец: этот ответ является большим упрощением - ПЛИС используются чрезвычайно разнообразными и сложными способами, и это очень краткий обзор того, как они используются в целом.
источник
Как говорит Олин, что-то вроде микро более эффективно для многих задач, и вы почти всегда найдете микро, используемый везде, где есть FPGA. Площадь используемого кремния (что приводит к нелинейной стоимости) и энергопотребление значительно меньше. По этой причине нередко внедряется «мягкий» MCU на ПЛИС, но стоимость и производительность такого микроаппарата не впечатляют.
Некоторые современные ПЛИС содержат одно или несколько «жестких» ядер, таких как вездесущая серия ARM. Кроме того, они могут содержать выделенные блоки памяти, поскольку действительно неэффективно выделять память из шлюзов. 32-разрядный микроядер занимает небольшую часть кремниевой площади в типичной ПЛИС, что дает представление об относительных затратах.
Разработка значительно сложнее, и IP, как правило, не так свободно доступен, как для микро- и специализированных решений SOC, например, контроллеров LCD, интерфейсов PCI, Ethernet MAC. Отчасти это объясняется тем, что, раскрывая логические описания HDL, они передают дизайн, а не только его реализацию. Другая причина заключается в том, что производительность зависит от компоновки логики в ПЛИС, что требует больших усилий при разработке.
Еще одним осложнением является то, что большинство сложных ПЛИС основаны на ОЗУ для конфигурации, а стоимость процесса такова, что для хранения конфигурации и памяти программы для любого MCU на борту требуется внешняя энергонезависимая память. Эта память должна быть загружена в ОЗУ при включении питания.
ПЛИС являются чрезвычайно полезными инструментами в наборе инструментов, но они не собираются заменять микроконтроллеры или микросхемы ASIC в ближайшее время.
источник
Лучшее использование кремния для работы - это ASIC, ничего не теряется, но у них огромная кривая обучения, NRE и негибкость.
Есть два способа встроить гибкость в чип. а) Иметь ALU с оптимизированным пространством и использовать его снова и снова на сохраненных данных. Это называется MCU и требует обширной области кремния, которая «ничего не делает», памяти программ, широких шин, идущих от устройства к устройству, и переключателей доступа к шине. б) иметь мелкозернистую логику с несколькими дополнительными оптимизированными для пространства частями, такими как множители, небольшие ОЗУ и простые процессоры. Это называется FPGA и требует огромной площади кремния, которая «ничего не делает», программируемых переключателей и линий связи.
Очевидно, что с этими структурами MCU лучше всего работают для задач, которые можно разбить на последовательные порции, а FPGA лучше всего работают для задач, требующих высокоскоростной параллельной работы. Когда применение тяжелое, а стоимость зависит от стоимости кремния, именно так будут естественным образом использоваться эти два типа.
Когда применение является легким, но большим объемом, в стоимости преобладает упаковка, а не кремний, и любой тип является жизнеспособным. У Altera есть несколько очень маленьких FPGA с очень низким энергопотреблением, чтобы конкурировать с MCU за доллар.
Для приложений с небольшим объемом стоимость разработки имеет тенденцию доминировать, и там выигрывают MCU, при условии, что они имеют скорость
источник
С точки зрения энергопотребления и использования кремния FPGA очень плох по сравнению с микропроцессором.
FPGA потребляет большую часть своей кремниевой области в схемах логической конфигурации, что не относится к микро. Должно быть гораздо больше доступных соединений, чем было бы необходимо для специализированной реализации микропроцессора.
FPGA потребляет больше энергии, чем специализированная ASIC, такая как микропроцессор, поскольку логика реализована не так эффективно.
Любая функция, которая может быть реализована в FPGA, может быть выполнена более эффективно, дешевле, с меньшим энергопотреблением, меньшим пространством на плате и т. Д. В специализированной ASIC. Это при условии, что объемы достаточно велики, чтобы компенсировать NRE.
источник
Микропроцессорные dsystems и более поздние микроконтроллеры смогли достичь огромной степени функциональности благодаря своей способности использовать множество отдельных элементов схемы для выполнения множества различных задач в разное время. Я думаю, что поучительно сравнить аркадный автомат Tank, созданный в 1976 году, с игрой Combat, которая работает на втором в мире игровом автомате с микропроцессорным управлением Atari 2600. Несмотря на некоторые различия в игровом процессе, аппаратное обеспечение Atari 2600 было разработано по существу. реализовать игры типа Tank с минимальными затратами; тот факт, что можно было играть в разные игры, вставляя разные картриджи с ПЗУ, был приятным бонусом.
Игра Tank позволяет двум игрокам водить танки по экрану и стрелять друг в друга. Он имеет счетчики «проскальзывания» для позиции X и Y каждого танка, позиции X и Y выстрелов каждого игрока, счетчик вверх / вниз для угла каждого игрока и угла выстрела каждого игрока, счетчик для счета каждого игрока, растровый луч X и Y счетчики положения и множество схем управления поверх этих вещей. Он имеет аппаратное обеспечение для извлечения данных игрового поля из ПЗУ и его отображения, а также имеет аппаратное обеспечение для извлечения фигур для танков двух игроков и партитур из ПЗУ и их отображения.
Atari 2600 имеет счетчик скольжения для горизонтальных положений каждого из двух игровых объектов, каждого из двух ракетных объектов, и одного дополнительного объекта, называемого «мячом», который не используется в бою, но используется в некоторых других играх. Для каждого из объектов проигрывателя имеется аппаратное обеспечение для вывода шаблона, сохраненного в 8-разрядной защелке, а также «задержанной» восьмибитной защелки для каждого игрока, которая копируется в основную 8-разрядную защелку всякий раз, когда другой игрок Форма обновлена. Он также имеет горизонтальный счетчик положения луча и 20-битную защелку в форме игрового поля, которая выводится на экран дважды за строку сканирования, при этом правая копия отображается как повтор или отражение левого. У него есть оборудование для обнаружения коллизий, но не для того, чтобы что-либо делать из-за них. Это не не имеет аппаратного обеспечения для вертикальных положений любых объектов, а также для вертикального положения растрового луча (!), а также не имеет аппаратного обеспечения, связанного с ведением счета, отображением счета, продолжительностью игры и т. д.
Все функции, для которых аппарат 2600 опускается, обрабатываются программным обеспечением в картридже. Необходимо только проверять вертикальное положение каждого объекта по отношению к положению растрового луча один раз на строку сканирования, необходимо только обновлять счет игрока и оставшееся игровое время не более одного на кадр, оценки игроков сохраняются на линиях сканирования над игровым полем. и, следовательно, может использовать то же оборудование, которое используется для игрового поля и т. д.
Обычный подход к реализации игры типа «Танк» в ПЛИС состоит в том, чтобы использовать разные схемы для различных функций почти так же, как это делал аркадный автомат 1976 года. Такой подход будет работать, но использовать значительное количество оборудования. Подход, основанный на микропроцессоре, может исключить более половины этого оборудования в обмен на добавление микропроцессора, который, вероятно, будет содержать меньше схем, чем заменяемое оборудование (2600 может реализовывать игры гораздо более сложные, чем Tank, для которых потребуется намного больше оборудования). если они не использовали микропроцессор).
ПВМ превосходна в тех случаях , когда нужно устройство , которое может выполнять много простых задач одновременно . Микропроцессорные (или микроконтроллерные) системы, как правило, лучше, однако, в тех случаях, когда необходимо выполнить много задач, но их не нужно обрабатывать одновременно, поскольку они позволяют легко использовать небольшое количество схемотехники для достижения большого количества различных целей.
источник
Это полностью стоимость. Когда микро может стоить всего 30 центов, дешевая ПЛИС находится на территории за 5 долларов. Стоимость может показаться не такой высокой, но если вы сделаете миллион новеньких игрушек, чтобы продать их по 10 долларов, цена ПЛИС убьет вашу прибыль.
источник
Просто чтобы добавить к другим очень хорошим ответам, я думаю, что принятие FPGA также является вопросом предметной области: например, для нейроморфных устройств платы FPGA становятся довольно повсеместными, потому что существует огромная потребность в параллелизме, что является сильной стороной ПЛИС.
Если вы экстраполируете тенденцию, которую мы наблюдаем для нейроморфных устройств, можно представить, что другие поля, которые основаны или критически требуют параллелизма, вероятно, примут FPGA намного больше. Так что, возможно, FPGA не станет повсеместной для продуктов потребительского уровня, но это может быть для определенных областей, как, кажется, в настоящее время это происходит для нейроморфных устройств.
источник