Как работи FPGA програмирането?

Съществува много тънка граница между хардуер и софтуер. Когато създавате хардуер за джаджи като компютри, трябва да сте сигурни, че той работи и изпълнява код.

Field Programmable Gate Array (FPGA) е форма на хардуерна архитектура, която позволява на потребителите да персонализират схеми от всяко място и по всяко време.

Да научите как работи програмирането на FPGA ще бъде ценно, ако искате да продължите кариера в областта на компютърните науки или технологиите.

В тази статия ще опишем какво е FPGA програмиране, как работи и къде се прилага и ще споделим различни ресурси, за да хвърлим повече светлина върху него.

FPGA програмиране

FPGA е интегрална схема (IC) с конфигурируеми логически блокове и набор от други функции, които могат да бъдат програмирани и препрограмирани от потребителя.

Фразата „програмируем на място“ показва, че способностите на FPGA не са твърдо свързани, а регулируеми. По този начин потребителите могат да променят функциите на веригата по всяко време, за да отговорят на техните специфични дизайнерски намерения.

FPGA програмирането може да се опише като процес на създаване на изчислителни решения с помощта на FPGA.

Програмистът трябва да планира, проектира и изпълни архитектурата на портите, за да създаде функционална верига, която отговаря на нуждите на потребителите. Крайната цел на програмирането на FPGA е да се създаде хардуерна верига, която генерира специфичен изход при включване.

Платките на FPGA са проектирани да имитират поведението на вериги в реалния свят. По този начин такива платки се използват най-често от екипа за осигуряване на качеството за тестване на нови продукти. Една FPGA система ще има различни хардуерни елементи.

Логическите порти действат като градивни елементи на FPGA на основно ниво. Логическите порти извършват булеви операции върху входни и изходни данни. Има и ресурси за маршрутизиране, които маршрутизират сигнали от една точка до друга.

Случаи на използване на FPGA програмиране

Програмирането на FPGA стана много привлекателно за разработчиците в съвременния свят.

По-долу са някои от случаите на употреба;

#1. Проектиране на ASIC

Разработчиците вече могат да проектират специфични за приложения интегрални схеми (ASIC). ASIC станаха много популярни в света на биткойн копаене.

  9 най-добри PlayStation VR игри за завладяващо изживяване

Дизайнът на FPGA улеснява коригирането на грешки. Красотата на FPGA е, че можете да го използвате като модел за други проекти и по този начин да спестите време и ресурси в дългосрочен план.

#2. Сектор на възобновяемата енергия

Възобновяемата енергия от вятър и слънце става все по-популярна в свят, изправен пред предизвикателството на глобалното затопляне. Подстанциите за пренос и разпределение (T&D) изискват ефективни енергийни мрежи, за да могат интелигентните мрежи да работят оптимално.

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

#3. Космонавтика и отбрана

Понякога самолетите летят през тежки условия. По този начин производствените компании произвеждат радиационно-твърди и толерантни към радиация FPGA, които предлагат повече надеждност, производителност и изисквания за жизнения цикъл на екстремни среди, отколкото традиционните ASIC реализации.

#4. Сървърни приложения

Центровете за данни/сървърите се превърнаха в нещо, тъй като търсенето на скорост на обработка на данни се увеличава с всеки изминал ден. Данните трябва да се обработват в реално време, дори при ограничено пространство и времеви ограничения.

FPGA, чрез BRAM, може да предложи свързаност с външни елементи за съхранение на данни, ускорявайки обработката на данни на чипове.

Ползи от програмирането на FPGA

  • FPGA могат да се преконфигурират. Трябва да се има предвид използваемостта на FGPA. Можете да конфигурирате едно и да го преконфигурирате, за да се използва в друго приложение.
  • FGPA изисква по-малко ръчна намеса. Софтуерът се справя със задачи за маршрутизиране, синхронизиране и поставяне в среда на FGPA. Такива задачи могат да отнемат време и да са сложни, ако се обработват ръчно.
  • FPGA идват като празни платна. За разлика от традиционните ASIC с предварително дефинирани функции, FPGA могат да бъдат препрограмирани за различни случаи на употреба. По този начин един инженер може да програмира такава система за различни случаи на употреба, използвайки HDL (Език за проектиране на хардуер).
  • Прототипиране. ASIC са скъпи за производство и една проста грешка може да бъде много скъпа. Преди да пуснете своя ASIC на пазара, важно е да се уверите, че вашата система е функционална и отговаря на целите, за които е проектирана. FPGA са препрограмируеми, което означава, че можете да тествате, докато не получите правилния дизайн.

Как да програмираме FPGA

Проектите, използвани за изпълнение на FPGA, са основно кодирани в езици за описание на хардуер (HDL), като SystemVerilog, Verilog и VHDL.

#1. Verilog

Verilog е идеален, ако искате да програмирате FPGA в рамките на няколко реда код. Този език е сравним с C, въпреки че е предназначен за хардуерна архитектура. Verilog е създаден, за да направи HDL по-гъвкав и здрав.

  AT&T таксува ли резервна SIM карта?

#2. SystemVerilog

SystemVerilog е създаден като разширение на Verilog. Това е както език за проверка на хардуера, така и език за описание на хардуера. С този език можете да описвате хардуерни модели, да ги конвертирате в цифров код и след това да ги качите в FPGA система за изпълнение на определени задачи.

#3. VHDL

VHDL е кратката форма за Език за описание на хардуера на много високоскоростна интегрална схема. С VHDL можете да опишете хардуера на FPGA, позволявайки на потребителите да го моделират и симулират, преди да го кодират в действителния хардуер.

Програмирането с VHDL улеснява определянето на потенциални грешки във веригата, които потребителите могат да коригират преди окончателното кодиране. VHDL позволява на потребителите да пишат своя структуриран код.

Синтезът на високо ниво (HLS), където дизайнът се извършва в подмножество на C, а компилаторът трансформира кода в код на Verilog, е популярен сред разработчиците, които искат да програмират FPGA.

По този начин разработчиците могат да използват езиците, с които владеят, за да проектират FPGA чрез унифицирани софтуерни платформи.

#4. Python

Този многофункционален език за програмиране може да се използва за програмиране на FPGA. За да постигне това, Python използва PYNQ, проект с отворен код, който улеснява работата с платформи на AMD.

#5. C и C++

C-базираните езици са идеални за проектиране на FPGA поради синтеза на високо ниво (HLS). Компилаторът AMD Vivado™ HLS предлага среда за програмиране, споделяща ключови технологии със специализирани и стандартни процесори, което оптимизира C-базирани програми.

#6. AI платформи като TensorFlow и PyTorch

Инженерите използват обучени модели за дълбоко обучение от Pytorch или Tensorflow, за да компилират за FPGA ускорение. Такъв подход елиминира нуждата от хардуерно програмиране на ниско ниво, като същевременно постига светкавично бързо компилиране.

Кодът, написан на нормални езици за програмиране, като Python, C или C++, се синтезира и преобразува в патентовани описания на свързване чрез инструменти за синтез.

Полученият файл, съдържащ описанието на взаимното свързване, е известен като битов поток. Битовият поток описва как да конфигурирате FPGA (как да свържете джапанки, портове и различни елементи на цифрови схеми чрез матрицата за свързване на FPGA).

FPGA имат вградена конфигурация, която чете битстрийм файла и съответно конфигурира FPGA. Конфигурационната верига може да чете файла с побитов поток чрез различни подходи, като паралелна флаш памет, JTAG и серийна флаш памет.

Производителите на FPGA платки предоставят софтуер/инструкции, които разработчиците използват за конфигуриране/програмиране на системите.

Повечето FPGA системи могат да бъдат препрограмирани толкова пъти, колкото е възможно. Единственото ограничение е, когато такива системи са повредени от условия, които не отговарят на спецификациите, като износване, температура или високо напрежение.

  9 смарт часовника WearOS с най-добро съотношение цена/качество, които да закупите веднага

Можете да научите повече за програмирането на FPGA чрез тези ресурси за обучение

Ресурси за обучение

#1. FPGA програмиране за начинаещи

Тази книга ви въвежда в света на FPGA програмирането с помощта на SystemVerilog. Подходът на преподаване е базиран на проекти, където разработвате приложения от реалния свят като клавиатура и калкулатор.

Книгата представя архитектурата на FPGA, преди да проучи как да напишем SystemVerilog RTL. Тази книга също така ви запознава с основите на компютърната математика, конвейера и паралелизма. Книгата също засяга теми за напреднали като AXI и интерфейс на клавиатурата с PS/2.

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

#2. FPGA за софтуерни програмисти

Тази книга въвежда софтуерните инженери в света на FPGA и преконфигурируемата технология. Книгата започва с представяне на FPGA и неговия програмен модел. Това е и книгата, която да използвате, ако искате да научите как FPGA внедряват различни приложения без процеси на проектиране на хардуер на ниско ниво.

Книгата дава реалистично усещане за проблемите, които отговарят на FPGA и как да се прилагат решения от гледна точка на софтуерния инженер. Ориентираният към потребителя подход в тази книга улеснява разбирането къде FPGA технологията е приложима и как. Целевите читатели на тази книга са софтуерни дизайнери и инженери по проектиране на FPGA.

#3. Начало на FPGA: Програмиране на метал

Тази книга учи читателите как да използват BeMicro MAX 10 за изграждане на температурен сензор, сензор за движение, температурен сензор и автомобилен дисплей KITT от Knight Rider. Книгата е лесна за начинаещи и подходяща за хора без умения по програмиране или диплома по електроника.

Книгата въвежда FPGA и обяснява разликите им от микроконтролери или ASIC. Това е и ресурсът, който да ви запознае с това как да настроите инструментална верига и да използвате VHDL за програмиране на FPGA. Книгата е идеална за ентусиасти на електрониката и Raspberry Pi, които искат практическо въведение в света на FPGA.

#4. Програмиране на FPGA: Първи стъпки с Verilog

Тази книга е идеална, ако никога не сте взаимодействали с Verilog и FPGA. Ако програмирането на FPGA е нов термин за вас, това е добро място да започнете. Типичните образци, като броячи и 7-сегментни дисплеи, ще накарат обучаемите да стъпят правилно.

Книгата запознава обучаемите с Verilog и предлага различни междинни примери като VGA. Този ресурс може да не е идеален, ако вече имате познания за Verilog и FPGA. Тази книга се предлага във версии за Kindle и Paperback.

Заключение

FPGA могат понякога да се представят по-добре от GPU в приложения за дълбоко обучение с ниска латентност. Програмирането на FPGA е основно умение, тъй като FPGA може да се използва в потребителска електроника, индустриална автоматизация и военни приложения, наред с много други приложения. FPGA все още се развиват и можем само да чакаме да ги видим фино настроени за повече случаи на употреба и по-добра производителност.