Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть

Вступ до FPGA: все, що варто знати про програмовані матриці

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

Всім привіт! Мене звати Юрій Грицай, я Software Engineer у львівському офісі GlobalLogic.

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

Що таке FPGA?

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

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

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

‘’Серце’’ FPGA


В цілому, можна виділити три головні елементи, з яких побудовані FPGA: програмовані логічні блоки (CLB,Configurable logic blocks), інтерфейсні блоки вводу-виводу (Input/Output blocks) та матриці внутрішніх зв’язків (Interconnections matrix).
Пропоную детальніше розглянути кожен з елементів.

  • Логічні блоки — це базовий функціональний елемент, це цеглинка, яка може бути сконфігурована в потрібну логічну функцію, елемент пам’яті чи спеціалізоване ядро для виконання чітко визначеної задачі. Набір можливих конфігурацій блоку і визначає технологічний рівень FPGA.


  • Блоки вводу-виводу: слугують для забезпечення зв’язку між виводами корпусу і внутрішніми сигнальними лініями. Ці блоки також можуть бути налаштовані під різні типи інтерфейсів, які вам потрібні для комунікації з різними периферійними елементами.
  • Матриця внутрішніх зв’язків дозволяє об’єднувати різні функціональні блоки в довільній конфігурації:

Як відбувається програмування?


На зображенні показані два різних варіанти конфігурації одного і того самого блоку. В залежності від обраних налаштувань мультиплексорів в результаті отримуються різні функціональні блоки. По своїй суті, файл програми — це набір конфігурацій ключів програмованих логічних блоків

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

Інструменти для програмування

FPGA програмуються за допомогою спеціалізованих комп’ютерних мов HDL (hardware description languages). Це мови поведінкового опису апаратних засобів, де розробник може не описувати конкретні елементи схеми, а програмувати поведінку системи в цілому або конкретного блоку. Серед них найбільшою популярністю користуються мови VHDL і Verilog.
Ось як виглядає код та функціональна симуляція написана на VHDL:

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

У якому випадку краще використовувати FPGA?

В першу чергу, хотів би виділити основні типи процесорів, які можна використовувати в вбудованих системах:

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

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

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

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

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

Як розпочати роботу з FPGA?

Найперший і найголовніший крок — це вибрати контролер з оптимальним набором функцій, які б вирішили вашу конкретну задачу. Сьогодні лідерами серед виробників FPGA на ринку є Xilinx, Intel (Altera) та Lattice. Загалом, ціни коливаються від 15-20$ до тисяч доларів — все залежить від задач, які ви хочете реалізувати за допомогою FPGA. Після обрання вендора наступним кроком, потрібно обрати Development kit, навчальну плату на якій ви можете протестувати створений вами проект,

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

LinkedIn

Похожие статьи

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Товариство а хтось має практичний досвід використання того ж Vitis, поділіться враженнями.

У меня в практике было два случая, когда решения на серийно выпускаемом SoC «делали» решения на FPGA, в результате выпускали устройство аналогичное по функционалу, но сильно дешевле.
Я ожидал где-то у нас на работе увидеть реальное применение FPGA (для прототипирования), но в повседневной работе они не применяются, для верификации дизайна микросхем используются немного другие инструменты. Но зато есть один NIC где есть FPGA на борту, для криптографии, но как я понял, штука очень нишевая.

Кілька слів де ми використовуємо FPGA в компанії Cypress для прототипіювання нових мікросхем. Ми використовуємо готові кіти з мікросхемами Xilinx FPGA різної складності та вартості: для перевірки нескладних блоків використовуємо Xilinx Artix-7 кіт вартістю порядку 100 дол., в якості прототипу процесора на базі ядра ARM Cortex M0+ — Xilinx Kintex-7 за кілька тис. дол, а потужніші системи (2 ядра ARM Cortex M0+, CM4) — Xilinx Ultrascale порядка 10тис., інколи доводиться юзати ще більш потужні і дорогі платформи (до 20тис дол.) для нових продуктів.

Інструменти для роботи (в нашій компанії все пишеться на Verilog, VHDL не використовується):
— Синтез Synplify Pro (найкраще, як на мене)
— Place and Route — Xilinx Vivado
— Симуляція — Aldec-HDL та Questa Sim (часто RTL в поєднанні з кодом на С)
— Відлагодження — Mentor Certus Analyzer (справді крута річ)

Великі проекти збираються довго, 12 годин це нормально, користуємося віддаленими Linux серверами де це має сенс.

По моєму досвіду де ВАРТО використовуавти FPGA:
1. Прототипи нових мікросхем
2. Реалізація нестандартних функціональних блоків/інтерфейсів/протоколів, які не можна реалізувати на наявних контролерах, наприклад, конвертер бітових потоків в дорогих професійних аудіо-ЦАП
3. Нові алгоритми криптографії, які поки що не підтримуються залізом наявних спеціалізованих рішень (ASIC)
4. Проекти, де потрібно обробляти багато паралельних задач (наприклад, багатоканальний демодулятор чи модулятор).

Якщо вашу задачу можна вирішити за допомогою наявних мікросхем (DSP, MCU) — я не бачу сенсу використовувати FPGA в більшості випадків. Це тільки додасть вам різних проблем.

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

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

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

Бо так вже влаштована цивілізація, що саме ігрове застосування вирішує, чи буде підтриманий вектор розвитку.

Ніт. Вирішує оборонна промисловість.

Якби вирішувала оборонна промисловість, в армії водилися б найрозумніші люди. Підняти рівень ПОЧАТКОВОЇ освіти у людей значно простіше, ніж створити спеціаліста в вузькій галузі.

Але чомусь там IQ від 0 до 1.

Altera викоистовується в американських РЕБах.

Саме тому їх і викупив Intel.

Стаття ознайомчого характеру і не передбачала детального висвітлення ні конкретних проекті ні практики використання. В мережі є безліч інфи по цій тематиці, для прикладу ось що реалізовано на маленькій FPGA
www.youtube.com/watch?v=YqtYiuPd6io

Це єдина стаття, чи планується цикл статей?

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

Обробка сигналів в основному. Телеком ітп.
Наприклад відкрийте будь який цифровий осцилограф — 99% там буде fpga

Який доступ до пам’яті? Як зробите так і буде — fpga це як електронну схему збирати з логічних елементів.
От, наприклад задача:
маєте дві 32 бітні шини — треба по черзі комутувати їх на вихідну 32 бітну шину. На процесорі у вас не вийде за один такт переносити стан з входу на вихід
А на FPGA легко — збираєте 32 мультиплексора і все відбувається за один такт
Іншими словами, це для випадків коли процесор неможливо використати через вимоги до затримки (бо процесор послідовно виконує операції), а готового електронного чіпа під вашу задачу нема. До речі, дизайн FPGA потім можна перенести на ASIC — і вашу логічну схему витравлять на кремнії (звісно що це тільки на дуже великі партії підходить)

PS як і FPGA, так і сучасні процесори дизайняться мовами — Verilog, VHDL. Фактично цими засобами ви можете розробити свій процесор з унікальною архітектурою, протестувати на FGPA і потім виготовити вже в кремнії

А на FPGA легко

Вот только это не легко. Как минимум нужно изучить

Verilog, VHDL

.
Научиться на них правильно програмить.
Помимо этого чип FPGA не для мигания светодиодиками не дешевый.
А еще девкиты и куча другого нужно.

Сколько будет стоить минимальный комплект студню для изучения оной темы?

Но в массовом производстве FPGA вполне выгоднее юзания DSP чипов. Вот только можно узнать про вакансии с FPGA в постсовке, а не в Китае или Штатах?

Ну легкість я маю на увазі при умові знання інструменту.
Мультиплекстор реалізовується досить просто і зрозуміло для програміста
Switch case blog.digilentinc.com/...​loads/2014/12/muxcode.png

Вакансії є в слідових кількостях, колись цікавився цією темою. (один знайомий працює дизайнером FPGA у Львові)
Зазвичай FGPA розробляють там де й електроніку, а у Україні якось з цим незадалося, тільки софтовий аутсорс зайшов

Ну вот. Игрушка интересная, но не для нас (хотя в РФ для расейских вояк что-то, наверное, делают).

И ты ничего не ответил на вопрос о первоначальных вложениях для изучения оного. Это для тех, кто точно валить собрался.
Для тех, кто не планирует валить тратить время на эту тему просто глупо. Изучить изучит, а работы нет и не предвидится.

И таких тем море. По которым есть работа в Штатах или Китае, и совсем нет в большей части мира.

Та поріг входження я б не сказав що особливо більший ніж в якомусь C++
Verilog це по-суті як асемблер, вивчив кілька команд, а далі вже збираєш схему
В режимі хоббі за тижні два розібрався з нуля до написання модуля для роботи з РК дисплеєм (там досить хитрі послідовності треба генерувати для ініціалізацїі та виводу)
photos.app.goo.gl/mtXJJw8XTYd4X7hB6

photos.app.goo.gl/GXb7UtczhLa4N4g38

И сколько это всё барахло стоит?

Никто и не говорит, что сложнее, он просто в корне другой. С другими подходами и идеологией.
Более того, тот же матлаб умеет сам в верилог твой матлабовский код переводить. Т.е. скачиваешь матлаб с рутреккера и играешься с FPGA даже без глубокого знания и понимания верилога. Но даже тот же матлаб распространен в СЩА, Китае и даже Иране, но не здесь. Здесь питон и стартапы на туториалах из инета.

китайський девборд на Cyclone IV десь 40 доларів
з периферії є чіп оперативки, VGA вихід, PS2 порт клавіатури, COM порт, світлодіоди, перемикачі

ну з Матбалу без знання верілогу не думаю що дуже продуктивно щось розробляти. Починаючи з деякої межі воно таке нагенерить, що ніякої FPGA не вистачить
Це як працювати з ORM взагалі без знання SQL

А еще осциллограф. Как я понял без него с FPGA делать нечего.

А вот чтобы влезть в просто ембедед (вакансии встречаются и тут) достаточно ардуинки или подобного за 1 бакс и несколько таких же копеечных датчиков.

Но, если ты написал статью с целью, чтобы увеличить количество любителей FPGA тут, то ты ее написал ужасно. Правильнее было бы сделать статью в стиле: берем вон ту дешевую платку, ставим вон тот опенсурсный софт и пишем вот такой простой код и вот у вас уже текст на экранчике или вот такая фильтрация 16 звуковых каналов в параллель.

Стаття не моя, я просто радіолюбитель який теж цим цікавиться :)
Писав би по-іншому звісно.
По-правильному у Verilog треба спочатку писати testbench (це як unit test) який задає вхідні і вихідні сигнали, і девелопати спочатку в симуляторі, тільки потім вже на залізі перевіряти як щось не так працює. Але я тут полінувався і все на залізі ганяв (я хоббіст, мені можна:D )

та в ембедед теж без осцилографа як без очей (мій 4 канальний 100 мгц — 600 доларів, ціна смартфону)

Стаття не моя

Но ты ее выдал за свою и теперь отгребаешь.

В ембедед уже давно можно без осциллографов. Не всем, конечно, тем кто платки разрабатывает без них никак, но таких на всю Украину 10 человек. Остальные на С или С++ просто программят под уже готовые и отлаженные платки с микроконтроллерами. Некоторые вообще на Питоне, ибо на платке линух крутится.
А чтобы понять отличия микроконтроллеров от PC достаточно ардуинки или stm32.

пфф. де я видав за свою і чому відгрібаю?
я пишу своє враження як радіолюбителя, дуже цікаво попрацювати з інструментами якими навіть проектують процесори. Читаю у вільний час книгу
Digital Design and Computer Architecture (Цифровая схемотехника и архитектура компьютера)
Там є в кінці навіть написання свого процесора. це ж офігенно як на цій картинці:
apikabu.ru/img_n/2012-09_4/wy3.jpg

Ну я в тобой скопированной статье выше увидел только балшит про «ох-сть» FPGA.

Де скопійована мною стаття? Я жодного відношення не маю до топікстартера
Якщо ви про пост з прикладом про 32 бітні шини — то це мій приклад

Тогда извиняюсь. А подумал, что ты и есть TC, только под другим ником (вот такое ощущение возникло у меня).

FPGA интересная и нужная хрень, но работы в постсовке по нему нет и не будет. Вот те же сверточные сетки на него отлично кладутся — GoogleTPU.

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

Без осцилографа і аналізатора логіки це мазохізм

FPGA, як я його розумію, фактично і є мультиплексор. Це основна його роль.
А сутність FPGA майже на 100% софтова, цим він власне і корисний, що на відміну від складних для тестування процесорів, він дозволяє винести найбільш електрично (та температурно) навантажену частину на окремий компонент, отримати бажану швидківть за рахунок паралелізації — в той самий час мати ЛЕГКО ЗАМІНЮВАНИЙ універсальний компонент, який швидко тестується.

Неочевидний момент: FPGA можна паралелізувати. Тобто поставити 2 та більше мікросхем поряд, і якщо одна з них виходить з ладу, перемкнути на іншу, і досить швидко. Може навіть автоматично за результатом автотесту.

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

Помимо этого чип FPGA не для мигания светодиодиками не дешевый.

Ну не знаю, меня недавно носом тыцнули в фпга кит за 50 баксов, куда можно линукс поставить.

у Львові є фірма де всякі маленькі Low power consumption чіпи конфігурують
Але загалом для України це як рокет сайнс, такі речі рідко на аутсорс віддають

А нащо там саме FPGA, поясни, в чому вигода? Від якої суми «будь-який цифровий осцилограф» ти маєш на увазі?

«Я не настоящий сварщик»
Але як розумію десь в таких задачах пригодиться:
dou.ua/...​rums/topic/31242/#1911390

Можете ще свій процесор спроектувати, з якоюсь унікальною езотеричною системою команд, наприклад для мови Branfuck- це ж офігенно мати таку можливість :D
apikabu.ru/img_n/2012-09_4/wy3.jpg

В нас керування моторами в цирку (Xilinx).

Ще пробуємо об’єднати кілька камер, із специфіною попередньою обробкою (Lattice).

16 штук для початку.

Там специфічне фільтрування потрібне, щоб на хост не качати непотрібні частини зображень, і специфічний мультиплексинг для того ж. Реальний час.

Щось дуже все таємно. 90% — вікі, 10% — development kit, практики використання і — нічого не висвітлено

Після обрання вендора наступним кроком, потрібно обрати Development kit, навчальну плату на якій ви можете протестувати створений вами проект,

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

У випадку з FPGA Development Kit все не так і Development Kit лише придатний щоб на ньому поперемикати світлодіоди. А якщо я хочу поширити своє рішення, то мені буде треба розробити якусь свою плату.

Іншою мовою у світі FPGA між Hello World та продакшеном прірва. Виправте мене якщо я помиляюсь.

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

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

Тому треба якусь хай доморощену і малу, але FPGA в якійсь малінці-ардуїнці.

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

Чому прірва? В чому складність розробити плату? Мільйони радіолюбителів цим займаються

В чому складність розробити плату?

Відсутність необхідних знань та навичок.

В електроніці Development Kit це не те саме що Qt (інструмент)
Development kit це як демка для перевірки концепцій, тестування прототипу, навчання

Чому прірва?
Development kit це як демка для перевірки концепцій

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

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

Слушне зауваження.

Для програмістів (особливо тих хто для розробки використовує Linux) це дуже болісний процес, коли не можно просто розгорнути середовище за дві три команди з консолі, а треба десь реєструватись завантажувати гігібайтні пакети які призначені лише для якогось окремого проекту.

Мабуть не збирали проекти на С, С++. Бо там також тточення кількома рядками настроюється досить рідко.

Хтось тут на форумі недавно писав, що в Україні FPGA-розробники нікому не потрібні :)

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

По очень простой причине. Требует минимальные вложения и гарантирует максимальную маржу на простой перепродаже тушек.

що власне тре робити вна неньці на ФПГА?
скільки будуть платити ФПГА розробнику? мінімалка хоть буде?

Это был как раз я.. Это громко сказано — не нужны. На самом деле есть простое объяснение этому явлению,- мелкотемье разработок! FPGA на самом деле штука серьёзная и просто не имеет конкурентов. Но под их использование нужна дерзкая задача, которая не решается лобовым решением на контроллерах! И еще,- забудьте о слове «программирование» для FPGA ! Это КОНФИГУРИРОВАНИЕ архитектуры! Если там есть программирование, то только если в ней на борту есть процессор и надо писать программу. Но это ДРУГАЯ задача. В основном это схемотехника! А HDL — это язык описания аппаратуры! Разве что микропрограммные автоматы вас развлекут... И не вздумайте сравнивать ремесло например программиста на С с HDL-дизайнером! Это разные Вселенные!.. Есть этапы, которых нет в традиционном программировании! Начиная от оптимизации дизайна с верификацией и заканчивая меж-клоковыми переходами и борьбой с задержками (констрейны) и метастабильным состоянием. Имея опыт таких этапов вы сможете пробовать себя в создании ASIC. Дизайн-бюро сможет вас привлечь к работе. Советую вам освоиться с HDL CODER, особенно если вы сильны в математике. Это новое качество творчества с FPGA....

И еще,- забудьте о слове «программирование» для FPGA !

Есть опыт использование Intel’овских FPGA для OpenCL. Но оптимизатор там — тихий ужас коппиляция из OpenCL C/C++ в FPGA шла около 3 часов(!!!). В конце концов получил 10% выигрыша по сравнению с работой этого же kernel’а на интелловских GPU (CoffeeLake). Ну и стоимость устройства была под 5К-10К.

Ну и как тут уже упоминали — это числодробилки, если прокачивать данные — будет очень медленно.

Лично для себя отметил — пока отложить лет на 5, потом пересмотреть FPGA.

Хм... Это еще фигня! 3 часа не срок... Я в курсе на счет OpenCL. Это как раз способ сделать эту работу формальной. Якобы программирование... В итоге все равно получается АРХИТЕКТУРА! Тут важно понимать, что все происходит параллельно! Прелесть FPGA в возможности обработки данных «на лету», в ходе перекачек данных. Ну а конвейеризация делает этот процесс высокопроизводительным.

NVidia CUDA вже підбирається і до FPGA ніші, ось приклад:
habr.com/ru/post/513138

Предполагаю, что для них лучшим вариантом будет eASIC..

Еще в 2010-2011 году я искал как войти в это направление — именно коммерческая разработка, предложений по работе на тот момент практически не было (на пальцах одной руки) и оплата на тот момент на уровне гораздо ниже программиста. На рынке США, Израиль — это очень востребованное направление, особенно военка :) Насчет применений — то с чем в жизни бытовой столкнулся — в машине блок управления усилителя руля перебирал (дорожки надо было пропаять), так вот там стояла FPGA Xilinx.

Что за машина была? Такой кустарщины не допускают в автопроме уже давно.

Lada Конина ( Калина ) в 2012; а так Spartan 3AN до сих пор дома в наличии

Ah, ok. На Лады правила мирового автопрома не действуют %)

FPGA присутствует чаще чем мы думаем. В некоторых дорогих опциях по сбору данных с камер / датчиков изначально стояли ПЛИС. Возможно поэтому пакеты таких опций стоили более 10 k$. В системах помощи водителю R&D версии интерфейсов в системах сбора данных используют ПЛИС (AutoSens 2019). Это не массмаркет и не тиражируется на 1 млн штук, но имеет место быть, когда это выгоднее сделать на ПЛИС пока ещё нет специализрованных микрсохем.
На большой серверной комутационной плате 19″ от Cisco, я насчитал FPGA аж трёх разных проиводиетелй Xilinx (что-то дешёвое типа Spartan-3 или Kintex), Altera (Max 2) и Lattice. Но там на плате по разводке было видно, что делали разные отделы и кто на чём умеет, тот то и ставит.

Так для использования в прототипировании никто не возражает. Проблема FPGA в продакшене была в том, что они нанадёжны для mission critical, сейчас xilinx даже космические радиозащищённый FPGA выпускает, но там цена такая, что можно фабрику свою с нуля построить, это для абсолютно единичных применений.

ФПГА и ПЛИС, ну це як 64бітСоК і ардуіна 8 біт

Подписаться на комментарии