Навіщо застосовувати мікроконтролер у FPGA?


16

Зараз я "розслідую" FPGA, що вони можуть зробити, як вони це роблять і т.д.

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

Отже, моє запитання:
я хотів би знати, яка мета виконання таких реалізацій? Навіщо використовувати мікроконтролер, реалізований у FPGA, замість того, щоб мати мікро-борт? Які переваги? А можливо також і які недоліки?


Багато з них використовують консервовані IP ядра, однак прокат власних може бути чудовим досвідом навчання.
Кріс Страттон

1
@ChrisStratton - Чи можете ви розповісти більше або опублікувати посилання про консервовані ядра IP? Так, я впевнений, що це може бути чудовим досвідом навчання. Але це одна з причин, що я задаю це питання. Цікаво, чи це щось більше, ніж просто досвід навчання.
Джеймс C

1
Більшість людей, що роблять це, використовують щось на кшталт Microblaze, Picobloze, Nios II тощо. - це в основному конструкції процесорів "у бляшанці" (бібліотеці), які ви можете ліцензувати та розмістити у своєму проекті. Контраст буде розвивати себе у джерелі HDL, можливо, з блок-схеми, представленої у вашій типовій лекції CS101. Існує ціла низка цікавих практичних завдань, з якими можна перетворити малюнок лекції на робочий апарат.
Кріс Страттон

1
Дивіться відкриті ядра для безлічі прикладів ядер CPU з відкритим кодом.
RBerteig

3
Я маю приклад. У нас був мікроконтролер застарілий для старого продукту. Ми не змогли знайти відповідний мікроконтроллер, що відповідає заміні, з правильною сумішшю периферійних пристроїв. Використання FPGA з вбудованим процесором дозволило нам реалізувати ідеальну суміш периферійних пристроїв на FPGA.
kkrambo

Відповіді:


24

Переваги:

  • надзвичайно швидкий інтерфейс між мікроконтролером та будь-яким користувальницьким інтерфейсом або логікою вводу / виводу на мікросхемі.
  • налаштовані інтерфейси процесора та налагодження
  • Крім того, часто простіша логіка керування, ніж написання коду управління з, скажімо, VHDL

Недоліки:

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

3
Додаткова перевага: простіший дизайн, одна менша кількість мікросхем.
DoxyLover

4
Додаткова нижня сторона: ліцензування більше IP
Михайло

Як щодо споживання електроенергії як недоліків?
Крейг МакКуїн

@CraigMcQueen Теоретично можливо створити мікроконтролер у FPGA, який ще не вироблявся як окремий апарат. У цьому випадку для порівняння немає споживання енергії. У будь-якому випадку, це занадто специфічний пристрій, щоб бути загальним вгору / вниз.
Щогла

Усі дуже хороші коментарі. І добре, я б сказав, що FPGA, як правило, мають велике енергоспоживання, оскільки використання логіки, як правило, дуже далеко від 100% у макроелементі. Це трохи компенсується тим фактом, що ПЛІС можуть використовувати складні методи мінімізації потужності. Процеси виготовлення (технології) можуть бути досить схожими між FPGA та процесором тієї ж епохи. Процесори мають виділені блоки пам'яті, а також FPGA. Чи відповідають вони вашим потребам, добре, залежить від того, наскільки вам пощастило знайти FPGA, що точно відповідає вашим потребам.
PkP

26

Якщо ваш проект буде використовувати FPGA для бурхливої ​​роботи, і він має запасну ємність, чому б ви пішли за рахунок додаткового чіпа, коли ви зможете просто реалізувати його в FPGA?

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


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

13

На додаток до відповідей Majenko та PkP:

Ця тенденція вбудовування процесора в FPGA дизайн призвела до декількох різнорідних систем, таких як:

  • Сім'я Xilinx 'Zynq-7000
  • FPGA з Arria / Cyclon / Stratix SoC від Altera
  • SmartFusion MicroPemi FPGA

На ринку також є чіп Intel Atom + Altera FPGA: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

Більшість безкоштовних мікроконтролерів для FPGA страждають від поганої підтримки ланцюга інструментів. Вбудовані процесори ARM поставляються із підтримкою відстеження / налагодження, компіляторами (ланцюжок інструментів gcc) та повною підтримкою Linux. Ось опитування, представлене на FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482

Правка 1:
Існує також клас пристроїв PSoC (програмована система на чіпі) від Cypress. Ці пристрої включають мікроконтролер (M8C, 8051, ARM Cortex M0 або Cortex M3) та класичні контролери або пристрої інтеграції вводу / виводу SoC (I²C, SPI, таймер, CAN, DAC, ADC, OpAmp, ...) та програмовані частина. Ця частина не настільки програмована на дрібне зерно, як класичні FPGA, але її можна використовувати для впровадження додаткових контролерів вводу / виводу або вбудованих апаратних прискорювачів. PSoC дозволяє використовувати аналогові компоненти у своєму дизайні.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

Огляд PSoC: PSoC


10

Якщо вам просто знадобився мікроконтролер і не було FPGA, було б незвично використовувати FPGA з мікропрограмою мікроконтролера. Однак не всі проекти ростуть у цьому напрямку. У багатьох завданнях очевидна потреба в FPGA, але зрештою натрапляють на завдання, яке насправді не підходить для рішення VHDL. Іноді проблему просто найкраще вирішує центральний процесор. Або іноді це навпаки: деякі завдання просто не підходять для центрального процесора - їм потрібен паралелізм.

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

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


9

Існує кілька поважних причин існування мікропроцесора або мікроконтролера в FPGA. Ось три:

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

  2. Ви впроваджуєте велику систему, яка вимагає апаратних швидкостей FPGA (швидше, ніж програмне забезпечення, яке виконується на мікропроцесорі), але для вашого дизайну потрібна складна державна машина, яка легше реалізується за допомогою програмного забезпечення, що працює на простому процесорі, як Xilinx PicoBlaze ніж у апаратній FSM. Зауважте, що PicoBlaze може працювати так само швидко, як 240 МГц, за останніми технологічними технологіями FPGA, і що процесор PicoBlaze виконує інструкцію кожні два тактових цикли, тож ви отримуєте швидку, послідовну машину, яка легко програмується в програмному забезпеченні.

  3. Розширюючись на (2), вам потрібна державна машина, яка може обробляти переривання. Процесори справді хороші для цього, оскільки вони вже знають, як безпечно зберегти та відновити стан до та після обслуговування переривання.

Ось одне застереження: Якщо ви хочете швидкий процесор зі стандартним набором інструкцій та великою екосистемою розвитку, то вам потрібен швидкий, жорсткий процесор, як два ARM Cortex-A9s у Soil Xilinx Zynq. Тканина FPGA в Zynq SoC все ще дозволяє створювати більше ядер процесора в програмованій логіці, але ARM Cortex-A9s може запускати стандартні операційні системи, такі як Linux та стандартні IDE, такі як Android.

Між ARM Cortex-A9 і PicoBlaze є багато м'яких процесорів, які можна реалізувати за допомогою програмованої логіки, доступної з багатьох джерел. Дехто любить прокручувати власні процесори, і це чудова освітня діяльність. Однак мікропроцесорам потрібні інструменти для розробки програмного забезпечення, а створення / налагодження цих інструментів вимагає наказів більше, ніж створення самого процесора. Ви завжди повинні торгувати можливою перевагою користувальницького мікропроцесора проти часу та зусиль, необхідних для створення / налагодження ядра процесора та інструментів.

Повне розкриття: Я працюю на Xilinx, але я впевнений, що не заявляв, що FPGA завжди є рішенням. Якщо 50-центовий мікроконтролер може виконати цю роботу, вам краще скористатися цим. FPGA та Zynq SoC - це проекти, які потребують важкого підйому поза можливостями мікроконтролерів.


Ласкаво просимо, Стівен!
PkP

1
Хороша відповідь, але кому потрібна державна машина, яка може обробляти переривання? Переривання є необхідним злом для процесорів, що виконують витяг-декодування, оскільки обробка зовнішнього стимулу вимагає виключного використання процесора для запуску ISR. У FPGA зовнішній стимул обробляється в окремому логічному блоці, тоді як державна машина також продовжує працювати; немає потреби в збереженні та відновленні стану. В основному, переривання - це недосконале рішення проблеми, якої ЛПВП не має в першу чергу.
Бен Войгт

Ви, звичайно, правильні для апаратних апаратних машин, Бен. Ви завжди можете підключити штифт "переривання" як інший вхід стан-машини. Однак багато складних державних машин просто більш зрозумілі, коли реалізовані з процесором під керуванням C, або принаймні більш зрозумілі для деяких розробників. Ось тоді вам потрібно перерва.
Стівен Лейбсон

2

Іноді ви можете використовувати FPGA, оскільки у вас є програмне забезпечення, яке працює на давно застарілому та недоступному фізичному процесорі, який ви хочете відновити. Хоча це не сумісно з штифтами (хоча бачено кріплення в стилі DIP), це дозволяє вам бути точними. Чиста програмна емуляція товарного мікропроцесора навряд чи буде такою. Наприклад, apple2fpga

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