Які відмінності та схожість між FPGA, ASIC та General Microcontrollers?


25

Я прочитав цей пост, і він не відповідає на моє запитання в повному обсязі:

Я думаю, що мікроконтролер - це все, що має деяку пам’ять, реєструє і може обробляти набір інструкцій, таких як ЗАВАНТАЖЕННЯ, Зберігання та додавання. Він містить логічні ворота і такі, щоб виконувати свою роль, але головне його завдання - бути універсальним процесором бітів. Я думаю про Microntroller як систему взаємопов'язаних конструкцій ASIC для створення можливості зберігання та обробки інструкцій.

Я вважаю пристрій ASIC як ланцюг, який був спеціально побудований з використанням логічних та електричних компонентів для виконання однієї задачі, не маючи на увазі іншого завдання, а також додаткового обладнання.

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

Незважаючи на свою назву, FGPA відчуває себе дуже "специфічним для додатків", оскільки його потрібно перемотувати для виконання нового та іншого завдання. Це призводить до плутанини з ASIC. Хоча у випадку підключення FPGA все необхідне обладнання повинно бути присутнім. Крім того, FPGA призначені для програмування, але хіба це не те, для чого призначений мікроконтролер?

Повідомлення вище, на яке я посилався, також згадує ЛПВЩ, з яким я знайомий. Чи не можна використовувати HDL як для ASIC, так і для FPGA, а також проксі для розробки всього мікроконтролера?


1
Не дуже зрозуміло, у чому ваше питання. Чи читали ви пов'язані запитання щодо FPGA проти ASIC? HDL насправді використовується для проектування ASIC та FPGA реалізацій, і ви можете спроектувати мікроконтролер в HDL.
pjc50

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

@kkrambo Ти називаєш мене пустушкою? :) Вибачте, не втримався ... Я перевірю це.
користувач58446

Я додав слово "подібність" до назви питання, тому що, здається, є невеликі технічні деталі жаргону, які можуть заплутати, як співвідносяться три різні пристрої: наприклад, один пристрій може містити один з двох інших пристроїв, або він може містити багато подібні компоненти, але відрізняються деяким важливим аспектом. На це вже торкнулися деякі відповіді. Дякую.
користувач58446

Відповіді:


28

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 проти мікроконтролерів, на цьому самому форумі


14

FPGA можна "повторно з'єднати" шляхом повторного програмування. FPGA завантажує його конфігурацію в налаштовані логічні комірки під час живлення . Це означає, що його можна перепрограмувати без будь-яких змін обладнання.

ASIC можна знову підключити, змінивши фотолітографічні маски на ливарному силіконі.

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


Різниця між FPGA та MCU більш нечітка. По суті, те, що є FPGA, на апаратному рівні - це безліч малих комірок SRAM, які всі пов'язані з щільною матрицею мультиплексорів. В основному, FPGA - це ціла купа дискретної логіки, яка може бути електронною «перев’язати» **, просто перепрограмувавши мультиплексори та комірки SRAM.

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

Мікроконтролер - це реалізація певної логічної конфігурації. Причина у нас полягає в тому, що, використовуючи MCU безпосередньо в кремнію, загальний об'єм необхідного для кремнієвого штампу може бути значно оптимізований, і можуть бути зроблені певні оптимізації продуктивності, які вимагають "загальної" FPGA. Це дозволяє значно скоротити виробничі витрати MCU, і, як результат, звичайний MCU набагато дешевший, ніж FPGA, здатний містити еквівалентну логіку.


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

Ось де FPGA (або ASIC, призначені для однієї і тієї ж задачі) дійсно можуть сяяти в тому, що ви можете робити багато, багато речей одночасно , що один процес може робити лише послідовно.

* (зауважте: тут я ігнорую деякі речі типу SIMD)


Я не думаю, що відмінність FPGA / ASIC нечітка; у FPGA схеми, проводку яких можна змінити, працюють одночасно та незалежно. MCU має велику кількість мікросхем, проводку яких неможливо змінити, поведінка яких керується за допомогою інформації, доступ до якої можна отримати з програмованого масиву пам'яті. У будь-який момент часу процесор, як правило, зможе виконати лише одну операцію зі списку від кількох тисяч до кількох мільярдів варіантів, але MCU буде розроблений таким чином, що компіляція таких операцій послідовно дозволить зробити це корисна робота.
supercat

Дякую. ДУЖЕ близько до того, щоб стати відповіддю ... хоча 10 місяців пізніше. +1, щоб внести поправку.
користувач58446

6

Це гарне запитання,

В основному мікроконтролер і ASIC мають апаратне забезпечення (яке часто називають кремнієм), яке встановлено в камені і не може бути змінене. FPGA може бути налаштована на представлення багатьох апаратних засобів (це може включати мікроконтролери).

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

FPGA, як правило, використовуються для генерації конструкцій, прихильних ASIC, різниця між ними полягає в тому, що якщо ви хочете оновити внутрішню роботу FPGA або додати / видалити функціональні блоки, все, що вам потрібно зробити, це оновити прошивку, це не може це робиться на ASIC, оскільки внутрішні вироби були присвячені кремнію, його не можна налаштувати.

Отже, коротко кажучи, з мікропроцесором ви використовуєте одне і те ж обладнання для запуску різних програм, за допомогою FPGA ви переконфігуруєте обладнання для виконання різних функцій, а ASIC - як мікроконтролер, завдяки чому апаратне забезпечення не може бути змінено, але зазвичай призначене для виконання одна функція надзвичайно ефективно.

Як ASIC, так і FPGA можуть містити мікроконтролери, і якщо вони є, ви можете писати програми для них так само, як і окремий мікроконтролер, прикладом цього є вбудований процесор Altera NIOS II.

Якщо це все ще заплутано, дайте мені знати, що про це незрозуміло, і я зроблю все можливе, щоб уточнити свою відповідь.

Циганка


3

добре, жодна FPGA не програмується електричними сигналами, якщо вони ведуть себе як певна колекція воріт, деякі FPGA включають флеш-пам’ять для зберігання цієї конфігурації, деякі не мають і повинні бути перепрограмовані після кожного скидання живлення.

ASIC виходить з уже налаштованої виробничої лінії.

Помилки FPGA можна виправити за допомогою оновлення мікропрограмного забезпечення, помилки ASIC не можна економно відремонтувати.


2

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

Це протилежне тому, що означає "конкретний додаток". Ви можете використовувати FPGA для декількох додатків, повторно з'єднавши його. Ви не можете змінити ASIC, тому він може бути застосований лише до одного завдання (це завдання може бути реалізацією мікроконтролера).

Хоча у випадку підключення FPGA все необхідне обладнання повинно бути присутнім.

Не впевнений, що це означає. Зазвичай існує програмний інтерфейс для перепрограмування FPGA. Це ASIC, який вимагає мільйонів [валютної одиниці] обладнання.

FPGA призначені для програмування, але хіба це не те, для чого призначений мікроконтролер?

Мікроконтролер дозволяє програмувати послідовне програмне забезпечення для фіксованого обладнання. Так само, як звичайний комп’ютер, але дуже маленький і ресурс обмежений. FPGA дозволяє програмувати будь-яке обладнання, яке ви хочете, використовуючи HDL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.