Каковы различия и сходства между FPGA, ASIC и общими микроконтроллерами?


25

Я прочитал этот пост, и он не отвечает на мой вопрос в полном объеме:

Я думаю о микроконтроллере как о чем-то, что имеет некоторую память, регистры и может обрабатывать набор инструкций, таких как LOAD, STORE и ADD. Он содержит логические элементы и тому подобное, чтобы выполнять свою роль, но его главная задача - быть универсальным процессором битов. Я думаю о Microntroller как о системе взаимосвязанных ASIC-конструкций для создания возможности хранения и обработки инструкций.

Я рассматриваю устройство ASIC как схему, которая была специально сконструирована с использованием логических и электрических компонентов для выполнения одной единственной задачи, без какой-либо другой задачи и без дополнительного аппаратного обеспечения.

Я рассматриваю устройство FPGA как устройство ASIC (низкоуровневое устройство) + кучу неиспользованных вещей, оставшихся для реализации конкретной таблицы истинности.

Несмотря на свое название, FGPA чувствует себя очень «специфичным для приложения», так как он должен быть перемонтирован для выполнения новой и другой задачи. Это приводит к путанице с ASIC. Хотя в случае перемонтирования ПЛИС, все необходимое оборудование должно присутствовать. Кроме того, FPGA предназначены для программирования, но не для этого ли предназначен микроконтроллер?

Пост, на который я ссылаюсь, также упоминает о ЛПВП, с которым я знаком. Разве HDL нельзя использовать как для ASIC, так и для FPGA, а также для прокси-сервера для разработки всего микроконтроллера?


1
Не очень понятно, какой у вас вопрос. Вы читали похожие вопросы по FPGA против ASIC? HDL действительно используется для разработки ASIC и реализаций FPGA, и вы можете создать микроконтроллер на HDL.
pjc50

3
Altera предлагает бесплатную книгу под названием FPGA для чайников , которая хорошо объясняет разницу между FPGA, ASIC и микроконтроллерами.
Ккрамбо

@kkrambo Ты называешь меня манекеном? :) Извините, не удержался ... Я проверю.
user58446

Я добавил слово «сходство» к названию вопроса, потому что кажется, что есть мелкие технические подробности жаргона, которые могут запутать, как соотносятся три разных устройства: например, одно устройство может содержать одно из двух других устройств, или оно может содержать много аналогичные компоненты, но отличаются в некотором важном аспекте. Это уже было затронуто некоторыми из существующих ответов. Спасибо.
user58446

Ответы:


28

ASIC против FPGA

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

FPGA против микроконтроллера

Что касается различия между микроконтроллером и FPGA, вы можете считать микроконтроллер ASIC, который в основном последовательно обрабатывает код во FLASH / ROM. Вы можете создавать микроконтроллеры с ПЛИС, даже если они не оптимизированы, но не наоборот. ПЛИС подключены так же, как электронные схемы, так что вы можете иметь действительно параллельные схемы, а не как в микроконтроллере, где процессор перепрыгивает с одного фрагмента кода на другой, чтобы имитировать достаточно хороший параллелизм. Однако поскольку FPGA были разработаны для параллельных задач, писать последовательный код не так просто, как в микроконтроллере.

Например, как правило, если вы пишете в псевдокоде «пусть C будет XOR B», на FPGA, которая будет преобразована в «построить вентиль XOR с содержащимися в нем лего-кирпичами (таблицы поиска и защелки), и подключите A / B в качестве входов». и C в качестве выхода ", который будет обновляться каждый тактовый цикл независимо от того, используется ли C или нет. В то время как на микроконтроллере, который будет переведен в «инструкцию чтения - это XOR переменных по адресу A и адресу B RAM, результат для хранения по адресу C. Загрузите регистры арифметической логики, затем попросите ALU сделать XOR, затем скопировать регистр вывода по адресу С ОЗУ ". На стороне пользователя обе инструкции представляли собой 1 строку кода. Если бы мы делали это, ТОГДА что-то еще, в HDL нам пришлось бы определять то, что называется процессом для искусственного выполнения последовательностей - отдельно от параллельного кода. Тогда как в микроконтроллере делать нечего. С другой стороны, чтобы получить «параллелизм» (на самом деле настраивая и выводя) из микроконтроллера, вам нужно было бы манипулировать потоками, что не является тривиальным Разные способы работы, разные цели.

В итоге:

ASIC против FPGA: фиксированный, более дорогой для небольшого количества продуктов (более дешевый для больших объемов), но более оптимизированный.

ASIC против микроконтроллера: конечно, как сравнивать инструмент с молотком.

FPGA против микроконтроллера: не оптимизирован для последовательной обработки кода, но также может очень легко выполнять действительно параллельные задачи. Обычно FPGA программируются на HDL, микроконтроллеры на C / Assembly.

Всякий раз, когда скорость параллельных задач является проблемой, возьмите FPGA, доработайте свой дизайн и, наконец, сделайте его ASIC, если он будет дешевле для вас в долгосрочной перспективе (массовое производство). Если с последовательными задачами все в порядке, возьмите микроконтроллер. Я полагаю, что из этого вы могли бы сделать еще более специфическую для конкретного приложения микросхему, если она будет дешевле для вас в долгосрочной перспективе. Лучшим решением, вероятно, будет и то и другое.

Какой быстрый поиск после написания этого дал мне: введите описание изображения здесь введите описание изображения здесь

FPGA против микроконтроллеров, на этом самом форуме


14

FPGA могут быть «перемонтированы» путем перепрограммирования. FPGA загружает свою конфигурацию в настраиваемые логические ячейки при питании . Это означает, что он может быть перепрограммирован без изменений в оборудовании.

ASIC могут быть перемонтированы только путем модификации фотолитографических масок на кремниевом литейном заводе.

Микроконтроллер - это тип ASIC, который выполняет программу и в результате может выполнять общие функции. Однако, если вы хотите изменить набор команд или сделать что-то подобное, вы должны изменить фактическую схему микросхемы микросхемы.


Разница между FPGA и MCU более размыта. По сути, FPGA на аппаратном уровне - это множество маленьких ячеек SRAM, все они подключены к плотной матрице мультиплексоров. По сути, FPGA - это целая куча дискретной логики, которую можно «перемонтировать» электронным способом **, просто перепрограммировав мультиплексоры и ячейки SRAM.

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

Микроконтроллер - это реализация определенной логической конфигурации. Причина, по которой они у нас есть, заключается в том, что благодаря реализации MCU непосредственно в кремнии, общий объем требуемого пространства кремниевой матрицы может быть значительно оптимизирован, и может быть достигнута определенная оптимизация производительности, которая запрещает требуемую «универсальность» FPGA. Это позволяет значительно сократить производственные затраты на MCU, и в результате общий MCU намного дешевле, чем FPGA, способная содержать эквивалентную логику.


ПВМ является полезным в некоторых приложениях, поскольку они могут реализовать логические структуры таким образом , что микроконтроллеры не могут. Например, если вам нужно добавить X1 + Y1, X2 + Y2, X3 + Y3 и X4 + Y4, MCU должен будет выполнять каждую операцию в последовательности *. FPGA может просто иметь 4 отдельных ALU одновременно , поэтому она может выполнять одну и ту же операцию за четверть времени (при условии, что два устройства работают с одинаковой частотой).

Это то место, где FPGA (или ASIC, предназначенные для одной и той же задачи) действительно могут сиять, потому что вы можете делать много, много вещей одновременно , что один процесс может делать только последовательно.

* (примечание: я игнорирую некоторые вещи, такие как SIMD здесь)


Я не думаю, что различие между FPGA и ASIC нечеткое; в ПЛИС схемы, «проводка» которых может быть изменена, работают одновременно и независимо. MCU имеет большое количество схем, проводка которых не может быть изменена, поведение которых контролируется с помощью информации, доступ к которой осуществляется по частям из массива программируемой памяти. В любой момент времени ЦП, как правило, сможет выполнять только одну операцию из списка от нескольких тысяч до нескольких миллиардов вариантов, но MCU будет спроектирован таким образом, чтобы объединение таких операций в последовательности позволяло выполнять полезная работа.
суперкат

Спасибо. ОЧЕНЬ близок к тому, чтобы стать ответом ... хотя и через 10 месяцев. +1 внести исправления.
user58446

6

Это хороший вопрос,

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

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

FPGA обычно используются для генерации проектов, предназначенных для ASIC. Разница между ними заключается в том, что если вы хотите обновить внутреннюю работу FPGA или добавить / удалить функциональные блоки, все, что вам нужно сделать, это обновить прошивку, это не может быть сделано на ASICs, поскольку внутренняя работа была передана кремнию, это не реконфигурируемо.

Короче говоря, с микропроцессором вы используете одно и то же аппаратное обеспечение для запуска разных программ, с FPGA вы переконфигурируете аппаратное обеспечение для выполнения различных функций, а микросхемы ASIC похожи на микроконтроллер, в котором аппаратное обеспечение не может быть изменено, но обычно оно предназначено для выполнения единственная функция чрезвычайно эффективно.

Как ASIC, так и FPGA могут содержать микроконтроллеры, и если они это делают, вы можете писать программы для них, как если бы вы были автономным микроконтроллером, примером этого является встроенный процессор Altera NIOS II.

Если это все еще сбивает с толку, дайте мне знать, что по этому поводу неясно, и я сделаю все возможное, чтобы уточнить мой ответ.

цыганский


3

ну, никакой FPGA не программируется электрическими сигналами, если они ведут себя как определенный набор вентилей, некоторые FPGA включают флэш-память для хранения этой конфигурации, некоторые нет и должны перепрограммироваться после каждого сброса питания.

ASIC сходит с уже настроенной производственной линии.

Ошибки FPGA могут быть исправлены с помощью обновления прошивки, ошибки ASIC экономически не могут быть исправлены.


2

Несмотря на свое название, FGPA чувствует себя очень "специфичным для приложения", так как он должен быть перемонтирован для выполнения новой и другой задачи.

Это противоположно тому, что означает «конкретное приложение». Вы можете использовать FPGA для более чем одного приложения, перемонтировав его. Вы не можете изменить ASIC, поэтому он может быть применен только к одной задаче (эта задача может реализовывать микроконтроллер).

Хотя в случае перемонтирования ПЛИС, все необходимое оборудование должно присутствовать.

Не уверен, что это значит. Обычно есть программный интерфейс для перепрограммирования FPGA. Это ASIC, который требует миллионов [денежных единиц] оборудования.

FPGA предназначены для программирования, но разве не для этого предназначен микроконтроллер?

Микроконтроллер позволяет программировать последовательное программное обеспечение для фиксированного оборудования. Как обычный компьютер, но очень маленький и ограниченный в ресурсах. FPGA позволяет программировать любое оборудование, которое вы хотите, используя HDL.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.