Коли можна використовувати FPGA, а мікроконтролери / DSP не використовувати?


28

Я повинен вибрати між курсом на вдосконалених мікроконтролерах і курсом на розширених FPGA.

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

Чи можете ви придумати деякі програми / продукти / проекти, в яких мікроконтролера або DSP було б недостатньо, і чому?

Камери? Високошвидкісні камери? Високошвидкісна обробка зображення?


4
Основними причинами є майже 1. 100% детерміновані реакції, 2. великий потенціал паралелізму. Однак у багатьох проектах є FUGA- процесор, який є основним процесором, оскільки програмувати шалену логіку для процесора набагато простіше, ніж це для апаратних засобів.
Дзарда

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

Я шукаю додатки, де мікроконтролерів у більшості випадків було б недостатньо, або де FPGA був очевидним вибором.
Джолле

4
Кому з вас було легше зрозуміти на вступному курсі? Тоді виберіть передовий на іншому, оскільки (можливо) ви зможете вивчити легший самостійно.
woliveirajr

Відповіді:


21

Дивіться також FPGA проти мікроконтролерів

Висока швидкість обробки зображень або відео - хороший приклад. Або обробляти "зображення", які не є простими оптичними зображеннями, такими як радари або лазерні системи.

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

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

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

Ви також можете захотіти його для периферійних пристроїв або поговорити про швидкісну цифрову шину. Ви не можете розігнати HDMI в мікроконтролер або вийти з нього. Ви не можете створити карту PCI навколо однієї.


16

Ну, я обробляю HD відео в режимі реального часу в FPGA. Дещо з того, що я роблю, можна зробити в мікросхемі GPU, але не на мікроконтролері або DSP. FPGA більш гнучка.

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

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


14

Коротше кажучи, FPGA є хорошими там, де вам потрібно виконати невелику обробку на великій кількості даних, а процесори - хороші там, де вам потрібно виконати багато обробки на невеликих даних.

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

У аудіопотоку не так багато даних, але якщо вам потрібно виконати розпізнавання мови на ньому, ви віддасте перевагу процесору перед FPGA.

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

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

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


12

Як правило, ви використовуєте мікроконтролер, коли він може виконати роботу. Мікроконтролер виконує логіку, виконуючи послідовні вказівки.

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


8

Одне з прикладів, про яке я ще не бачив, - це мікроелектронна інженерія або розробка мікросхем MCU / CPU / GPU / ASIC. Ці мікросхеми часто прототипуються шляхом їх проектування в HDL, а потім реалізуються в FPGA. Це робить їх легшими, дешевшими та швидшими для тестування та модифікації, перш ніж остаточно використовувати HDL для створення макета, необхідного для виробництва фактичного кремнію в процесорі або ASIC.

Коментолог згадав про це у формі чіп-програм з основним ядром (хоча вони мали друк і називали їх сортуючими чіпами). Ви можете взяти ARM / 8051 / тощо. soft-core та будь-які програмні периферійні пристрої, які вам потрібні, і по суті створити власний власний мікроконтролер, реалізований у FPGA. Тоді, якщо припустити, що у вас є ресурси, ви могли б перенести це у власний мікроконтролер.

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


6

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

В основному все, де вимоги до термінів знаходяться в наносекундах, потребують FPGA або ASIC.


5

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

Конкретний приклад: Кен Перлін пропонує апаратну реалізацію свого симплексного алгоритму шуму. Це можна зробити порівняно швидко за допомогою традиційного процесора або мікроконтролера, але можна зробити дуже швидко за допомогою спеціального обладнання. Оскільки я сумніваюся, що DSP буде працювати для цього, найпростішою річчю буде FPGA. Важким способом, звичайно, було б виготовити для вас справжній фізичний чіп, який є надзвичайно дорогим. http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

Одна з відповідей, яких немає тут - Збір даних. Якщо ви хочете використовувати АЦП для вибірки сигналу (наприклад, радіочастотного сигналу) на частоті 200 МГц і обробляти його, мікроконтролер просто не зможе обробляти дані досить швидко. Типова плата DAQ FPGA прийматиме, фільтруватиме, виконуватиме DDC та передаватиме дані РФ у процесор із значно нижчою частотою. FPGA також можуть виконувати операції FFT та каналізацію в радіочастотному спектрі.

Іншим додатком є ​​маршрутизація пакетів, наприклад, пристрій, який управляє одним (або декількома) інтерфейсами EAnet XAUI, що працюють зі швидкістю 10 Гбіт / с кожен. Ці FPGA фільтрують і планують черги пакетів для різних напрямків. Мікроконтролер / звичайний процесор не зможе обробляти пропускну здатність цих інтерфейсів.


4

Принципова причина того, що мікропроцесори та мікроконтролери можуть зробити стільки з порівняно невеликою кількістю мікросхем, полягає в тому, що якщо мікро лише потрібно виконати якийсь складний обчислення 1000 разів на секунду, і це займе 20 мікросекунд (тому мікро буде працювати над обчисленням 2 % часу), більшість апаратних засобів, які будуть використані для цього розрахунку, можна використовувати для інших цілей, решту 98% часу. Таким чином, мікроконтролери можуть використовувати скромну кількість обладнання для виконання дуже великої кількості різних функцій, доки функції не потрібні одночасно.

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


1

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


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


Наприклад, ви хочете реалізувати програмований звуковий еквалайзер, а найважчу обчислювальну частину, таку як FFT, можна реалізувати за допомогою функціонального блоку замість обчислення програмного забезпечення. Але деякі прості завдання, такі як LCD, інтерфейс вводу / виводу, може виконати MCU. І FPGA дозволяє одночасно мати вбудовані системні та апаратні блоки MCU одночасно.

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