ASIC проти FPGA
Польовий програмований масив воріт може розглядатися як етап прототипування інтегральних схем для конкретних додатків: ASIC дуже дорогі у виробництві, і після його виготовлення немає повернення назад (як найдорожчий фіксований кошт - це маски [різновид виготовлення "трафарету "] та їх розвиток). FPGA перепрограмуються багато разів, однак через те, що для досягнення вашої мети підключений загальний масив воріт, він не оптимізований як ASIC. Крім того, FPGA - це споконвічно динамічні пристрої, тому що якщо ви вимкнете її, ви втратите не тільки поточний стан, але і конфігурацію. Зараз існують плати, які додають чіп FLASH та / або мікроконтролер для завантаження конфігурації при запуску, тому це, як правило, є менш важливим аргументом. І ASIC, і FPGA можна налаштувати за допомогою апаратних мов опису, а іноді FPGA використовуються для кінцевого продукту. Але, як правило, ASIC починають працювати, коли дизайн закріплений.
FPGA проти мікроконтролера
Що стосується різниці між мікроконтролером та FPGA, ви можете вважати мікроконтролер ASIC, який в основному обробляє код у FLASH / ROM послідовно. Ви можете зробити мікроконтролери з FPGA, навіть якщо він не оптимізований, але не навпаки. FPGA підключаються так само, як електронні мікросхеми, так що ви можете мати справді паралельні схеми, як не в мікроконтролері, де процесор перестрибує з коду в інший, щоб імітувати досить хороший паралелізм. Однак оскільки FPGA розроблені для паралельних завдань, писати послідовний код не так просто, як у мікроконтролері.
Наприклад, зазвичай, якщо ви пишете в псевдокоді "нехай C - це XOR B", на FPGA, який буде переведено на "побудувати ворота XOR з лего цегли, що містяться (таблиці пошуку та засувки), і підключити A / B як вхідні дані і C як вихід ", який оновлюватиметься кожен тактовий цикл, незалежно від того, використовується C чи ні. В той час, як на мікроконтролері, який буде переведений на "інструкцію читання - це XOR змінних за адресою A та адресою B оперативної пам'яті, результат зберігається за адресою C. Завантажте регістри арифметичних логічних одиниць, а потім попросіть ALU зробити XOR, потім Скопіюйте вихідний регістр за адресою C ОЗУ ". З боку користувача, обидві інструкції містили 1 рядок коду. Якби ми це робили, ТІЛЬШЕ інше, у HDL нам слід було б визначити, що називається Процес штучно робити послідовності - окремо від паралельного коду. Тоді як у мікроконтролері нічого робити. З іншого боку, щоб отримати "паралелізм" (налаштування і виведення дійсно) з мікроконтролера, вам потрібно буде жонглювати нитками, що не є банальним. Різні способи роботи, різні цілі.
Підсумовуючи:
ASIC vs FPGA: фіксований, дорожчий для невеликої кількості продуктів (дешевший для великих обсягів), але більш оптимізований.
ASIC проти мікроконтролерів: звичайно, як порівняння інструменту з молотком.
FPGA проти мікроконтролера: не оптимізовано для послідовної обробки коду, але може виконувати справді паралельні завдання також дуже легко. Взагалі FPGA програмуються в HDL, мікроконтролери в C / Assembly
Кожен раз, коли швидкість паралельних завдань є проблемою, візьміть FPGA, розвиньте свій дизайн і, нарешті, зробіть його ASIC, якщо він з часом дешевший для вас (масове виробництво). Якщо послідовні завдання добре, візьміть мікроконтролер. Я думаю, ви могли б зробити ще більш специфічний інтелектуальний додаток від цього, якщо це здешевить і для вас. Найкращим рішенням, мабуть, буде трохи обох.
Який швидкий пошук після написання цього дав мені:
FPGA проти мікроконтролерів, на цьому самому форумі