FPGA проти мікроконтролерів [закрито]


36

Я працював над родиною Ардуїно (конкретно Сангвіно), побудував кілька простих пристроїв і простий фототроп. Таким чином, мені дуже зручно з мікроконтролерами - зокрема, з Atmel. Мені цікаво дізнатися, чим відрізняються FPGA від стандартних мікроконтролерів. Я з технічного походження (програмування на C / C ++) і тому хотів би отримати технічні відповіді. Тільки майте на увазі, що я новачок (щодо мого досвіду роботи з електромережі) в галузі електроніки. :)

Я пройшов цей запит, і це було добре, але я шукаю більш глибокі деталі.

Спасибі! Sushrut.


Додаток - Чи є в реальному світі хороші приклади, що використовують гібридні архітектури, тобто комбінування fpga з мікроконтролерами?
Sushrut J Mair

Sushrut J Mair - Зазвичай, коли у вас є FPGA і вам потрібен Micro, мікропроцесор реалізується в FPGA.
Коннор Вольф

Так, підроблене ім’я, погодився. Однак я хотів знайти будь-які реальні випадки, коли і FPGA, і MCU використовуються для проектування системи. Ідея полягає в тому, що частина проекту FPGA використовується для реалізації "еволюціонуючого" г / ж, який відповідає і перетворюється відповідно до зміни входів у систему, в той час як основну логічну обробку здійснює MCU.
Sushrut J Mair

Відповіді:


48

Проектування для FPGA вимагає мови опису обладнання (HDL). ЛПВЩ зовсім не схожий на C. У той час як програма С - це послідовна серія інструкцій і повинна домогтися себе для досягнення паралельного виконання, HDL описує паралельний ланцюг і повинен підкоряти себе для досягнення послідовного виконання. Це зовсім інший світ, і якщо ви спробуєте побудувати схему в FPGA, думаючи, як розробник програмного забезпечення, це зашкодить.

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

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

FPGA - це мокра мрія дизайнера макетів на друкованій платі. Вони надзвичайно налаштовані. У вас може бути безліч різних логічних інтерфейсів (LVTTL, LVCMOS, LVDS тощо), різної напруги та навіть потужності приводу (тому вам не потрібні резистори серійного закінчення). Шпильки міняються; Ви коли-небудь бачили адресну шину MCU, де шпильки були розкидані навколо чіпа? Твоєму дизайнеру друкованих плат, мабуть, доведеться скинути купу віатів, щоб правильно зв’язати всі сигнали разом. За допомогою FPGA дизайнер друкованої плати може потім запускати сигнали в мікросхему в будь-якому зручному для цього порядку, і тоді конструкція може бути анотована до ланцюжка інструментів FPGA.

У FPGA також є багато приємних іграшних іграшок. Одним з моїх улюблених є диспетчер цифрових годин у чіпах Xilinx. Ви подаєте йому один тактовий сигнал, і він може отримати від нього ще чотири, використовуючи широкий спектр множників частоти та дільників, все з незайманим 50% робочим циклом і 100% у фазі ... і він навіть може враховувати перекос годинника, який виникає через затримки розповсюдження, зовнішні до чіпа!

EDIT (відповідь на доповнення):

Ви можете розмістити "м'яке ядро" в FPGA. Ви буквально з'єднуєте мікроконтролер, або, швидше за все, ви, мабуть, кидаєте чужий ланцюг у свій дизайн, як, наприклад, PicoBlaze або MicroBlaze або Nios Altera в Xilinx. Але, як і компілятори C-> VHDL, ці ядра, як правило, трохи роздуті та повільні порівняно з використанням FSM та шляхів передачі даних, або власне мікроконтролером. Інструменти розробки можуть також додати значної складності в процесі проектування, що може бути поганою справою, коли FPGA вже є надзвичайно складними чіпами.

Існують також деякі FPGA, які мають вбудовані "жорсткі ядра", як-от серія Virtex4 Xilinx, які мають справжній, виділений IBM PowerPC з тканиною FPGA навколо нього.

EDIT2 (відповідь на коментар):

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

З цим набагато простіше, тому MCU, безумовно, мають своє місце, працюючи в тандемі з FPGA. Оскільки простіше писати C, ви можете написати "мізки" або центральний алгоритм у MCU, тоді як FPGA може реалізувати під алгоритми, які можуть потребувати прискорення. Постарайтеся помістити речі, які змінюються, в код C, оскільки це простіше змінити, а FPGA залиште більш присвяченим типом речі, які не змінюватимуться часто.

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

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

Нарешті, деякі MCU розроблені для використання з "зовнішнім майстром", як FPGA. Cypress створює декілька USB-процесорів, які мають 8051 всередині, але наміром є, щоб USB-дані вироблялися / споживалися, наприклад, FPGA.


Це гарна інформація, дякую. Я чув про компілятори HDL на C / C ++. Ви їх взагалі пробували?
Sushrut J Mair

Вони ... добре. Для одного логічного блоку це не дуже погано. Але я б не написав цілого дизайну через такий тип компілятора. Вони не надто ефективні, тому що мови настільки неймовірно різні ... ви повинні використовувати спеціальні умови, вони не просто приймають старий код ANSI C.
ajs410

Дякую, це корисно. Я замовив комплект Brev Dev набір для решітки XP2 Brevic. Я маю намір спробувати деякі компілятори HDL до C, як тільки мені буде зручно з базовими концепціями проектування FPGA.
Sushrut J Mair

Щойно побачив відповідь на мій додаток в оригінальному запиті. Дякую - так ви хочете сказати, що практично кажучи (принаймні з сучасними технологіями), гібридна архітектура стандартного MCU + FPGA має дуже малу додаткову вартість, щоб бути дійсно корисною в реальних ситуаціях?
Sushrut J Mair

Дивовижно. Дякую ajs410. Я сподіваюсь провести кілька тижнів, завантажуючи себе в fpga, перш ніж потрапляти у захоплюючі можливості гібридної арки!
Sushrut J Mair

10

"приклади в реальному світі ... поєднання FPGA з мікроконтролерами?"

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

  • Камера Elphel ; Elphel Project Wiki має Xilinx (R) Spartan 3e 1200K воротами FPGA та процесор ETRAX FS, що працює з GNU / Linux.
  • TS 7500 має 5000 LUT Lattice FPGA і 250MHz Cavium ARM9 процесор , який може працювати під Linux.
  • Balloon дошка має Xilinx Spartan FPGA і процесор ARM
  • кілька SBC-дисків Teeny weeny включають як FPGA, так і процесор
  • У Armadeus Проект по Віке документи дошки кілька дощок як з Xilinx Spartan-3 FPGA і процесором 400 МГц ARM9.
  • Зручний рада Blackfin , включає в себе як Xilinx Spartan 3e FPGA і процесор 600 МГц Analog Devices Blackfin® ADSP-BF537. (У нього немає MMU, тому він не може запустити повний Linux, але він може запускати uClinux).
  • "Minimig" (міні - Аміго) включає в себе Xilinx Spartan-3 FPGA, а M68000 CPU, і невеликий PIC MCU як діючий контролер диска.

4

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

Однак кілька продуктів розмивають лінії. Деякі приклади:

  1. Більші FPGA, як правило, мають вбудовані жорсткі процесори (більші проекти часто так чи інакше потребують їх) так само, як вони мають оперативну пам'ять та блоки множника
  2. Деякі мікроконтролери спрямовані на паралельні операції (XMOS XS1, Atmel Xmega, GreenArray, Parallax Propeller)
  3. Деякі чіпи розроблені як гібриди (Cypress PSoC, Atmel FPSLIC)

Виходячи з необхідного тла програмування, це цілком коригування дизайну апаратних засобів, оскільки вам потрібно отримати переваги FPGA. Однак ви знайдете цей досвід корисним і в іншому місці.


1

Насправді немає різниці між MCU, як AVR, та програмованим на FPGA. На сайті OpenCores є VHDL код для AVR, який може використовуватися в FPGA. Ви можете вивчити його і побачити, як він працює, і навіть спробувати його на тренажері, не купуючи відповідну плату FPGA.


1
Часто я виявляю, що FPGA повинні працювати з меншою тактовою частотою для одного MCU, інакше вони будуть значно дорожчі. У більш дорогому випадку ви можете легко реалізувати додаткове обладнання між контролером і зовнішніми штифтами, що часто цілком варто.
Кортук

Якщо FPGA все одно потрібна в системі, MCU є "безкоштовним".
Леон Геллер

1

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

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