Какво е FPGA? Концепции, дефиниции, правила за програмиране и основи за начинаещи

FPGA означава "Field Programmable Gate Array" и представлява огромен набор от клапани, които могат да бъдат програмирани и възстановявани по всяко време и навсякъде. Много потребители все още не разбират какво е FPGA. "Огромен набор от врати" - опростено описание на модела. Някои FPGA имат вградени твърди дискове: контролери за памет, високоскоростни комуникационни интерфейси и PCIe крайни точки. Вътре в FPGA, има много клапани, които могат да бъдат свързани свободно заедно. Принципът на работа е повече или по-малко подобен на свързването на отделни чипове с логически елементи. FPGA се произвеждат от водещи компании в света, Xilinx, Altera и Microsemi.

История на разработката на FPGA

Индустрията FPGA е нараснала от програмирани постоянни PROM памет и PLD логически устройства. През 1970 г. Philips изобретява програмируема полева матрица. При проектирането на такава FPGA, която се състоеше от два плана, беше постигната специфична реализация на логически схеми: функционален кабел "I" или "OR". Това й даде възможност да реализира функцията под формата на сума от продукти.


Altera е създадена през 1983 г., а през 1984 г. произвежда първата в индустрията, която може да препрограмира логическо устройство - EP300 с кварцов прозорец в пакета, което позволява използването на ултравиолетова лампа на матрицата за премахване на EPROM тага. За да се преодолеят трудностите на цената и скоростта, беше разработена програмируема логика на масива, която включваше само един програмируем "I", въведен във фиксираната врата "OR". PAL иPLA, заедно с други варианти, са групирани като прости програмируеми SPLD логически устройства. Такива FPGA, интегрирани в един чип с предоставени междусистемни връзки за софтуерно свързване на блоковете, са били използвани, за да отговорят на нарастващите технологични изисквания. Те се наричат ​​интегрирани PLD и са разработени от Altera.


Транзистори - друг клас електронни устройства, базирани на програмируеми маски на решетки. Те се състоят от транзисторни масиви, които могат да бъдат свързани с потребителски проводници. Те отстъпиха на логически блокове и сега потребителят може да се настройва на място, а не в производствената лаборатория. Идеята за развитието на първата комерсиално жизнеспособна FPGA принадлежи на съоснователите на Xilinx Ross Freeman и Bernard Wondershmitt. XC2064 е изобретен през 1985 г. и се състои от 64 персонализирани логически блока с 3 референтни таблици. Той осигурява модерно разбиране за това какво е FPGA. Това беше в края на 1980 г., когато експериментът на Стив Каселман за създаване на компютър с 600 000 препрограмирани порти откри спонсори във Военноморската служба на Военноморските сили на САЩ и след това получи патент през 1992 г.
До края на 1990 г. в производството на FPGA имаше голяма конкуренция, след което пазарният дял на Xilinx започна да намалява. Участници като Actel, Altera, Lattice, QuickLogic, Cypress, Lucent и SiliconBlue, взеха своята ниша на световния пазар FPGA заедно с Xilinx. През 1997 г. Ейдриън Томпсън успява да комбинира програмирането на FPGA и генетичния алгоритъм с FPGA, като започва новата ера на Evolvable.
Днес FPGA стана съвсем достатъчнодостъпни, във връзка с които продължават да придобиват популярност на потребителските пазари. Те се състоят от набор от логически клетки, наречени LUT таблици за търсене, заобиколени от взаимосвързана мрежа, която осигурява гъвкава система, която може да приложи практически всеки цифров алгоритъм.

Принципи на програмиране

Програмирането на FPGA за начинаещи е процес на изучаване, планиране, проектиране и внедряване на решение на FPGA. Броят и видът на планирането варират в зависимост от програмата. Създаването на документ с изисквания и създаването на проектен документ, обясняващо как ще бъде приложено предложеното решение, може да бъде много полезно за решаване на потенциални проблеми.
Времето, което се изразходва за създаване на качествен проектен документ, ще го спести в бъдеще при рефакториране, отстраняване на грешки и отстраняване на грешки. Реализацията на FPGA програмиране включва проектиране на проект, използвайки един от методите за изпълнение на проекта. Сред тях са схеми или HDL код, като Verilog или VHDL. В FPGA могат да програмират файла източник на FPGA физическо устройство с помощта на FTP програмиране Altera. Въвеждането на дизайн с използването на схеми вече не се използва в индустрията. Синтезът и програмирането почти напълно се погрижиха за инструментите на доставчиците, като например инструментите за конфигуриране ISE и Vivado и лабораторията Numato.

Норма на RTL трансферния регистър

RTL показва скоростта на трансфер на регистъра. Разработчикът може да срещне и термините Регистър на трансферната логика или Регистрирай езика за прехвърляне, всички те означаватедно и също нещо в дизайна на оборудването. RTL е абстракция на по-високо ниво за дигитален дизайн на хардуер, който се намира някъде между строго поведенческа симулация в единия край и чисто структурен на ниво портал - от друга. Симулация на врати означава описание на хардуера с използване на основни клапани, което е доста изтощаващо. RTL може да се разглежда като аналог на термина "псевдокод", използван в програмната рамка на FPGA. Можете да опишете хардуерния дизайн като поредица от стъпки или потоци от данни от един набор от регистри до следващия във всеки тактов цикъл. RTL също се нарича дизайн на "потока от данни". Веднага след като проектът RTL е готов, е по-лесно да го превърнете в истински HDL код, използвайки езици като Verilog, VHDL, SystemVerilog или друг хардуерен език. FPGA е много повече от набор от порти. Въпреки че е възможно да се изграждат логически схеми от всяка сложност, организиране и свързване на логически елементи. Това е начин за изразяване на логика в прост формат, който в крайна сметка може да се трансформира в масив от елементи. Два популярни метода за това са: въвеждане на схемата и езиковото описание на оборудването HDL. Преди да се използва широко, инженерите са проектирали всичко чрез схеми. Те бяха много прости за малки проекти, но болезнено неуправлявани - за големите. Представете си как инженерите на Intel нарисуват верига за Pentium, с милиони портали! Това е неприемливо трудно.

Verilog е описание на HDL хардуер, за който можете да използватецифрови схеми в обикновен текст. Изучаването на Verilog не е толкова трудно, ако потребителят има опит в програмирането. VHDL е друг популярен HDL, широко използван в индустрията. Verilog и VHDL имат повече или по-малко същото признание на пазара, но потребителите обикновено избират Verilog, защото е лесен за изучаване и има синтактично сходство с C езика.

Технологии за програмиране

РРОА могат да се разглеждат като градивни елементи, които ви позволяват да направите правилната настройка на оборудването. Това е специална форма на PLD с по-голяма плътност и разширена функционалност в по-кратък период от време, използвайки CAD. FPGA се предлагат в различни версии на базата на използваната технология за програмиране. Те могат да бъдат програмирани с помощта на:
  • Antifuse Technology.
  • Програмиране въз основа на технологията на Flash устройството от Actel.
  • FPGA може да бъде препрограмирано няколко хиляди пъти, което отнема няколко минути в самото поле за препрограмиране и има енергонезависима памет.
  • базирана на SRAM FPGA, която предлага неограничено препрограмиране и много бързо преконфигуриране или частично преконфигуриране по време на самата работа с малък брой допълнителни вериги. Повечето от тези компании, като Altera, Actel, Atmel и Xilinx, произвеждат тези устройства.

    Конфигурирани логически блокове

    Независимо от различните производители и няколко различни архитектури и набори от функции, повечето FPGA имат общ подход. Основните съставни блокове на FPGA са гъвкави програмируеми "логически блок" (CLB), заобиколени от програмируеми "блокове"I /O "с йерархия на маршрутизиращи канали, които свързват различни блокове на дъската.
    В допълнение, те могат да се състоят от DLL за разпределяне и управление на часовете и RAM на избрания блок с основния строителен блок на логическата клетка. Последният се състои от генератор на входни функции, логиката на прехвърляне и съхранение на елементи. Генераторите се изпълняват под формата на референтни таблици и зависят от входа. Например, Xilinx Spartan II има 4 входни LUTs, осигуряващи всеки 16X1-битов синхронен RAM, използвайки мултиплексори като регистрите за смяна за улавяне на данни в пакетния режим. Елементите за съхранение са чувствителни към краищата на тригерите или до нивото на ключалките. Фрагментация на FPGA:
  • Аритметичната логика включва XOR шлюз за работа с пълен суматор и разпределяне на логически прехвърлящи линии.
  • Блок I /O и матрица за маршрутизация. Това устройство има входове и изходи, които поддържат широк спектър от стандарти и интерфейси за сигнализация.
  • Основният I /O блок е показан по-долу. Буферът под входните и изходните пътеки изпраща сигнали към вътрешната логика и крайната платформа директно или чрез спусъка. Те са конфигурирани да отговарят на различни поддържани стандарти за аларми, които могат да бъдат дефинирани от потребителя и инсталирани отвън.

    Матрица за маршрутизиране

    На всяка поточна линия бавният сегмент определя общата производителност. Алгоритмите за маршрутизиране се използват за разработване на най-ефективните начиниосигуряване на оптимална работа. Маршрутизирането се извършва на различни нива, като локално, общо предназначение между различни CLB, I /O маршрутизиране между блокове и CLB, специализирано маршрутизиране за определени класове сигнали, за да се увеличи производителността, и Global Routing за часовник и други сигнали с много големи разклонения. , Семействата FPGA имат и голяма блокова структура на RAM, за да допълнят разпределената LUT RAM, чийто размер варира за различните FPGA устройства.

    Дизайнът на FPGA включва по същество същия подход като всяка VLSI система, чиито основни етапи са проектиране, симулация на поведението, синтез, симулация след синтеза, излъчване, картографиране и маршрутизиране, както и допълнителен анализ като симулация на синхронизация. и статичен синхронизационен анализ. На компютъра дизайнът изглежда добре подреден и облицован с плочки, но всъщност има несъвършено разположение и маршрутизация, което води до намаляване на производителността. Винаги можете да използвате повече транзистори, за да увеличите производителността на FPGA. Областта на обслужване е висока. Инсталирането на повече транзистори означава, че са възможни големи проекти. Течът е сериозен проблем за FPGA и в същото време представлява интерес. Използването на FPGA асинхронна архитектура показва по-добри резултати в комбинация с конвейерна технология, която намалява глобалните входове и подобрява пропускателната способност.

    Въпроси, свързани с качеството и гаранциите

    Сигурността на системата винаги е билаосновният проблем, тъй като кодът трябва да се отваря всеки път, когато се зарежда в FPGA. Тази гъвкавост прави FPGA потенциална заплаха за злонамерени модификации в производствения процес, така че криптирането на потоците от битови потоци идва навреме. Често неопитни дизайнери и потребители са изправени пред дилемата за това колко мощна е FPGA за тяхното развитие. Производителите често посочват показатели, например "броя на портите". Например, Xilinx FPGA програмиране използва 3 метрики за измерване на FPGA обеми, максимални логически елементи, максимални битове на паметта и типичен набор от шлюзове. Макар и да са последователни, миграцията между моделите е донякъде опростена, но рядко предлага точни сравнения между различните доставчици, поради разнообразието в архитектурата и поради разликите в производителността. Най-добрият индикатор е да се сравни вида и количеството на предоставените логически ресурси. В допълнение, разработчикът трябва напълно да разбере какво точно се изисква от устройството, тъй като производителите могат да се похвалят с функции, които ще бъдат най-малко важни за работа. Например, Stratix II EP2S180 на Altera има около 186576 LUTs с 4 входа, а Xilinx Virtex-4 XC4VLX200 съдържа съответно 178176. Въпреки това, ако проектирането изисква само 177 000 LUT, това ще бъде достатъчно.
    Ако RAM е желаната метрика за дизайнера, тогава нито 6 Mbit Xilinx XC4VLX200, нито 9 Mbit Altera EP2S180 ще бъдат по-добри от по-малко рекламирания, по-стар модел XC4VFX140 с 99 Mbit.

    Програмни езици и софтуер

    Програмиране FPGA Altera за начинаещи започва с избора на език. Вариант В, C ++ или. \ TSystem C ви позволява да използвате възможностите на най-големите устройства и в същото време да постигнете сходството на реалистичните графики за развитие. Възможността за използване на C-базирания дизайн за FPGA се осигурява от HLS (синтез на високо ниво), който е на пробив в продължение на много години с инструмент като Handle-C. наскоро тя се превърна в реалност, благодарение на факта, че големите доставчици на Altera и Xilinx предлагат HLS в своите инструменти Spectra-Q и Vivado HLx съответно. Предлагат се редица други програмни реализации на програмата Altera FPGA за начинаещи, базирани на C, като OpenCL, който е предназначен за разработчици на софтуер, които искат да увеличат производителността с FPGA без задълбочено разбиране на FPGA дизайна. Както при HDL, HLS има ограничения при използването на FPGA програмиращи подходи към C, както при традиционните HDL, разработчиците трябва да работят с подмножество на езика. Например, трудно е да се синтезират и приложат системни обаждания, тъй като трябва да се уверите, че всичко е ограничено и има фиксиран размер. В HLS е хубаво, че можете да проектирате свои собствени алгоритми с плаваща запетая и има инструмент за преобразуване с плаваща запетая HLS към фиксиран. Програмирането на FPGA с Xilinx изобщо не е трудно. Можете да го получите, като закупите продуктите на Xilinx безплатно или на специфичен за цената модел. Можете да получите достъп до видеоклипа на сайта на профила, който ясно показва процедурата за използване. От всички компании, които могат да бъдат избрани, когато търсят програмируеми масиви, Xilinx определено е най-доброто от всички. Те са създателите на този продукт и след товамного години са го направили подобрение. Firmware стана по-мощен от всякога.

    Етапи на проектиране

    Програмирането на FPGA може да се извършва онлайн, тъй като платформата е добре представена в интернет. При създаването на FPGA, първата стъпка е да се създаде схема, за която се изискват знания за цифровата електроника. За разлика от програмирането, е много по-трудно да започнете да режете код, ако архитектурата на програмата не е ясна. Веднага след като стане ясно, че е необходимо да се приложи, започнете да описвате схемата, използвайки един от езиците: Verilog или VHDL. Фактът, че парадигмата се променя, е, че те не се наричат ​​езици за програмиране на FPGA, а са езиците на описанието. Поради сложността на тестване на цифрови схеми, обикновено на този етап банките използват тестове, които симулират поведението на оборудването. Този тип инструмент ви позволява да видите състоянието на сигнала по всяко време и да проверите дали има преходи с желаните резултати.
    Третият етап, известен като синтез на схемата, е един от ключовите. Той избира използваните елементи и техните взаимовръзки в съответствие с файловете за описание. За този етап са ви необходими инструменти, които в повечето случаи опростяват и автоматизират задачите.

    Хардуер и отстраняване на грешки

    Intel Quartus Prime Software Suite Lite Edition - софтуер за проектиране на FPGA. Той е идеален за начинаещи, тъй като може да бъде изтеглен безплатно и не е необходим лицензен файл. Можете да изтеглите софтуера на уебсайта на производителя. Размерът (няколко гигабайта) от тяхИзтеглянето и инсталирането може да отнеме много време. За да минимизирате времето и необходимото дисково пространство, се препоръчва да изтегляте само онези елементи, които са необходими за персонализирани задачи. При поискване, файловете за изтегляне, премахнете отметката "Select All" и изберете само Quartus Prime и поддържайте Cyclone V устройството. Алгоритъм за проекта:
  • Отворете съветника за нов проект.
  • Изберете Следващ & gt; Каталог & gt; & gt; Назовете обекта от най-високо ниво.
  • ​​
  • Изберете директория за разположение на проекта, например, "Blink" и го поставете в папката intelFPGA_lite, но можете да я поставите навсякъде и да кликнете върху "Next".
  • Когато бъдете подканени да създадете директория, изберете "Да".
  • Изберете "Празен проект" и натиснете "Напред".
  • Добавяне на файлове и „Напред“.
  • Настройте семейството, устройството и платката, като изберете следното: фамилия - Циклон V, устройство - Cyclone V SE, база, име на устройството: 5CSEBA6U2317.
  • За да изберете конкретно устройство, трябва да щракнете върху стрелките нагоре /надолу, за да видите списък на поддържаните устройства, докато се появи 5CSEBA6U2317.
  • Потребителят може да се наложи да разшири полето „Име“, за да види пълното име на устройството, щракнете върху „Напред“.
  • При настройка на инструмента EDA се използват стандартните инструменти, така че няма да се правят промени, щракнете върху "Next" и "Done". Появява се екран с резюме.
  • Създайте HDL файл с въвеждането на Verilog като HDL.
  • Отидете в раздела Файл (главен прозорец) и изберете Нов.
  • Изберете Verilog HDL File и натиснете OK.
  • Изберете Файл & gt; „Запазване като“.
  • Изберете име на файл. Това е името на файла от най-високо ниво и трябва да съвпада с името на проекта.
  • Кликнете върху „Запазване“.
  • Създаване на модул Verilog.
  • Копирайте и поставете Verilog кода по-долу в прозореца на blink.v и след това запишете файла с код.
  • Щракнете с десния бутон върху Analysis and Synthesis (Анализ и синтез) и след това щракнете върху Start (Старт), за да изпълните Verilog синтаксис и проверка за синтез.
  • Ако процесът приключи успешно, заедно с анализа и синтеза, се показва зелена отметка. Ако е направена грешка, проверете синтаксиса и се уверете, че точно съответства на кода, посочен по-горе. Всички опитни програмисти знаят, че сложни програми, дори подпрограми, не работят правилно от първия път. Абстракционната способност на човек, основана на опита, му позволява да намери решение, без да се притеснява за най-малките детайли. Но строгата истина е, че физическата система, в която е вградена програмата, изисква всеки малък детайл да бъде взет под внимание преди всичко да работи. С разработването на софтуерни инструменти за развитие на FPGA, главно от традиционните доставчици, както и от независими доставчици на инструменти: Synplicity, FPGA - става все по-популярен ден след ден. Сега FPGA започна да включва специализиран хардуер, за да предостави на клиента необходимите функции, като намали разходите за производителите. Така в бъдеще конкуренцията между твърдите и евтини системи с гъвкави ядра може да се появи в бъдеще. Очаква се в близко бъдеще разходите да намалят още повече поради популярността на FPGAще се увеличава понякога. Производителите започнаха да експериментират с концепцията за вграждане на FPGA в интегрални схеми, за да създадат хибридно устройство. Фокусът все още е върху маршрутизационните връзки и по-малки промени се наблюдават в CLB архитектурите. Тъй като FPGA продължават да включват процесори, новото поколение изисква не само познаване на хардуера на цифровия дизайн, но и опита на разработчиците в процеса на еднократно програмиране на FPGA. Като цяло се очаква, че FPGA ще отнеме пазарния дял в устройствата на ASIC и ще стане доминираща технология, която обхваща много приложения от различни области.

    Свързани публикации