Co je FPGA? Koncepty, definice, programovací pravidla a základy pro začátečníky

FPGA znamená "Field Programmable Gate Array" a představuje obrovskou řadu ventilů, které lze kdykoliv a kdekoliv naprogramovat a přestavět. Mnozí uživatelé stále nechápou, co je FPGA. "Obrovská sada bran" - zjednodušený popis modelu. Některé FPGA mají vestavěné pevné disky: řadiče paměti, vysokorychlostní komunikační rozhraní a koncové body PCIe. Uvnitř FPGA existuje mnoho ventilů, které lze volně propojit. Princip práce je víceméně podobný připojení jednotlivých čipů logických prvků. FPGA vyrábí přední společnosti na světě, Xilinx, Altera a Microsemi.

Historie vývoje FPGA

FPGA průmysl vzrostl z naprogramovaných trvalých paměti PROM a PLD logických zařízení. V roce 1970 společnost Philips vynalezla programovatelnou matici. Při konstrukci takového FPGA, který sestával ze dvou plánů, bylo dosaženo specifické implementace logických obvodů: funkční kabelové "I" nebo "OR". To jí dal možnost realizovat funkce jako součet produkce.


Altera byla založena v roce 1983, a v roce 1984 vydala první v průmyslu, které mohou přeprogramovat logické jednotky - EP300 s krystalovým oknem v balení, které nám umožnil použití UV lampy matrici, aby se odstranily EPROM štítek. K překonání problémů spojených nákladů a rychlosti, byl vyvinut programovatelná logická pole, která obsahovala pouze jeden programovatelný „A“, která byla zavedena do pevných „nebo“ brány. PAL aPLA spolu s dalšími variantami jsou seskupeny jako jednoduchá programovatelná logická zařízení SPLD. Takové FPGA, integrované do jednoho čipu s poskytnutými propojkami pro softwarové připojení bloků, byly použity pro splnění rostoucích technologických požadavků. Jsou nazývány integrované PLD a vyvinuté firmou Altera.


Tranzistory - jiná třída elektronických zařízení založená na programovatelných maskách bránících polí. Jsou tvořeny tranzistorovými poli, která mohou být připojena pomocí uživatelských vodičů. Ustoupili do logických bloků a nyní může uživatel naladit na místě, ne ve výrobní laboratoři. Myšlenka vzniku prvního komerčně životaschopného FPGA patří ke spoluzakladatelům Xilinx Ross Freeman a Bernard Wondershmitt. XC2064 byl vynalezen v roce 1985 a sestával ze 64 přizpůsobitelných logických bloků se 3 referenčními tabulkami. Poskytuje moderní představu o tom, co je FPGA. To bylo na konci roku 1980, kdy experiment Steva Casselmana na počítačové tvorbě s 600 000 přeprogramovanými branami našel sponzory v oddělení námořní války Spojených států a poté získal patent v roce 1992.
Do konce roku 1990 došlo k velké konkurenci ve výrobě FPGA, pak se podíl Xilinxu na trhu začal snižovat. Hráči, jako jsou Actel, Altera, Lattice, QuickLogic, Cypress, Lucent a SiliconBlue, získali svou pozici na globálním trhu FPGA spolu s Xilinxem. V roce 1997 se Adrian Thompson podařilo kombinovat programování FPGA a technologii genetického algoritmu s FPGA, začínající novou éru Evolvable.
Dnešní FPGA se stala docela dostpřístupné, v souvislosti s nimiž se stále zvyšuje popularita na spotřebitelských trzích. Sestávají z množiny logických buněk, které se nazývají vyhledávací tabulky LUT, obklopené propojenou sítí, která poskytuje flexibilní systém, který může implementovat prakticky libovolný digitální algoritmus.

Principy programování

Programování FPGA pro začátečníky je proces studování, plánování, navrhování a implementace řešení na FPGA. Počet a typ plánování se liší od programu po program. Vytvoření dokumentu s požadavky a vytvoření návrhu dokumentu, vysvětlující, jak bude navržené řešení implementováno, může být velmi užitečné pro řešení potenciálních problémů.
Čas strávený při vytváření kvalitního dokumentu projektu jej v budoucnu zachrání při refaktorování, ladění a opravách chyb. Implementace programového řešení FPGA zahrnuje projektování projektu pomocí jedné z metod implementace projektu. Mezi nimi jsou schémata nebo kód HDL, například Verilog nebo VHDL. FPGA může programovat zdrojový soubor na fyzické zařízení FPGA pomocí programovacích nástrojů FTP Altera. Zavedení návrhu s využitím schémat již není v průmyslu používáno. Syntéza a programování se téměř úplně staraly o nástroje dodavatele, jako jsou konfigurační nástroje ISE a Vivado a laboratoř Numato Lab.

Rychlost registru přenosu RTL

RTL udává přenosovou rychlost registru. Vývojář se také může setkat s termíny Register Transfer Logic nebo Register Transfer Language, to vše znamenáto samé v kontextu návrhu zařízení. RTL - je vyšší úroveň abstrakce digitálního designu hardwaru, který je někde mezi modelováním čistě behaviorální na jednom konci a čistě strukturální brány úrovni - na straně druhé. Simulace brány znamená popis hardwaru s použitím základních ventilů, což je docela oslabující. RTL lze považovat za analogický termín "pseudokód" použitý v programovacím rámci FPGA. Návrh hardwaru můžete označit jako sled kroků nebo datových toků z jedné sady registrů do další v každém hodinovém cyklu. RTL je také nazýván "datový tok". Jakmile je návrh RTL je připraven, je to jednodušší, aby se změnil v reálném kódu HDL, pomocí jazyky, jako je Verilog, VHDL, SystemVerilog nebo jiného programovacího jazyka. FPGA je mnohem více než jen sada bran. I když je možné vytvořit logické schémata jakékoliv složitosti, uspořádání a propojení logických prvků. Je to způsob, jak vyjádřit logiku v jednoduchém formátu, který může být nakonec přeměněn na řadu prvků. Dvěmi populárními metodami jsou: zavedení schématu a popis jazyka zařízení HDL. Než se to stalo široce používáním, inženýři navrhli všechno prostřednictvím schémat. Byly velmi jednoduché pro malé projekty, ale bolestně neřízené - pro ty velké. Představte si, jak inženýři společnosti Intel připravují obvod pro Pentium s miliony bran. Je nepřijatelně obtížné.

Verilog je popis HDL hardwaru, který můžete použítdigitální obvody v textové podobě. Učení Verilog není tak obtížné, pokud má uživatel zkušenost s programováním. VHDL je další populární HDL, široce používaný v průmyslu. Verilog a VHDL mají víceméně stejné uznání na trhu, ale uživatelé obvykle vybírají Verilog, protože je snadné se učit a má syntaktickou podobnost s jazykem C.

Programovací technologie

FPGA lze považovat za stavební bloky, které umožňují správné nastavení zařízení. Jedná se o speciální formu PLD s vyšší hustotou a rozšířenou funkčností v kratším časovém rámci pomocí CAD. FPGA jsou k dispozici v různých verzích založených na použité programovací technologii. Mohou být naprogramovány pomocí:
  • Antifuse Technology.
  • Programování založené na technologii Flash od společnosti Actel.
  • FPGA lze přeprogramovat několik tisíckrát, což trvá několik minut v samotném poli pro přeprogramování a má trvalou paměť.
  • FPGA založená na SRAM, která nabízí neomezené přeprogramování a velmi rychlou rekonfiguraci nebo částečnou rekonfiguraci během samotné práce s malým počtem dalších obvodů. Většina z těchto společností, jako jsou Altera, Actel, Atmel a Xilinx, vyrábí tato zařízení.

    Konfigurované logické bloky

    Bez ohledu na různé výrobce a několik různých architektur a funkčních sad, většina FPGA má společný přístup. Hlavní bloky komponent FPGA jsou flexibilní programovatelný "logický blok" (CLB), obklopený programovatelnými "blokyI /O "s hierarchií směrovacích kanálů, které spojují různé bloky na desce.
    Kromě toho mohou obsahovat knihovny DLL pro přidělování a řízení hodin a paměti RAM vybraného bloku s hlavním stavebním blokem logické buňky. Ten se skládá z generátoru vstupních funkcí, logiky přenosu a uložení prvků. Generátory jsou implementovány ve formě referenčních tabulek a závisí na vstupu. Například Xilinx Spartan II má 4 vstupní LUTs, poskytující každou 16X1-bitovou synchronní RAM s využitím multiplexerů jako posuvných registrů pro zachycení dat v dávkovém režimu. Úložné prvky jsou citlivé na okraje spouštěčů nebo na úroveň zámků. Fragmentace FPGA:
  • Aritmetická logika zahrnuje bránu XOR, která pracuje s plným sčítačem a přiděluje logické přenosové linky.
  • Block I /O a směrovací matice. Tato jednotka má vstupy a výstupy, které podporují širokou škálu standardů a rozhraní pro signalizaci.
  • Základní blok I /O je zobrazen níže. Pufr pod vstupní a výstupní cestou vysílá signály do vnitřní logiky a konečné platformy přímo nebo přes spoušť. Jsou konfigurovány tak, aby vyhovovaly různým standardům alarmu, které mohou být definovány uživatelem a instalovány zvenčí.

    Směrovací matice

    Na libovolné montážní lince určuje pomalý segment celkový výkon. Směrovací algoritmy se používají k rozvoji nejúčinnějších způsobůzajištění optimálního výkonu. Směrování se provádí na různých úrovních, jako je místní, směrovací účelu mezi CLB, směrování IO mezi bloky a CLB, věnované směrování pro určité třídy signálu, aby se maximalizovala produktivita a globální směrování distribuce hodiny a další signály s velmi velkým rozvětvení . Rodiny mají také velký FPGA blok RAM struktury pro doplnění distribuované LUT RAM, jejíž velikost se mění pro různá zařízení FPGA.

    Provedení FPGA poskytuje v podstatě stejný přístup jako každého systému VLSI, fáze, které jsou konstrukce, modelování chování, syntéza, simulace po syntéze, překlady, mapování a směrování, a další analýza, jako je například synchronizace modelovací a statickou synchronizační analýzu. Počítač design vypadá řádný a položil tašku, ale ve skutečnosti je nedokonalá umístění a směrování, což snižuje produktivitu. Vždy můžete použít více tranzistorů pro zvýšení výkonu FPGA. Oblast služeb je vysoká. Instalace více tranzistorů znamená, že jsou možné velké konstrukce. Únik je vážný problém pro FPGA a zároveň je předmětem zájmu. Asynchronní FPGA architektura vykazuje lepší výsledky v kombinaci s řetězovým procesním technologii, která snižuje globální vstupy a zvyšuje propustnost.

    Problémy s kvalitou a branami

    Bezpečnost systému byla vždyhlavní problém, protože kód by měl být otevřen pokaždé, když je načten do FPGA. Tato flexibilita činí FPGA potenciální hrozbou pro škodlivé modifikace ve výrobním procesu, takže šifrování bitových proudů se dostalo na pomoc včas. Často nezkušení designéři a uživatelé jsou konfrontováni s dilematem o tom, jak silný je FPGA pro jejich vývoj. Výrobci často uvádějí metriky, například "počet bran". Programování Xilinx FPGA například používá 3 metriky pro měření objemů FPGA, maximálních logických prvků, maximálních bitů paměti a typického rozsahu bran. Zatímco jsou konzistentní, migrace mezi modely je poněkud zjednodušující, ale zřídka nabízí přesná srovnání mezi různými dodavateli kvůli různorodosti v architektuře a kvůli rozdílům ve výkonu. Nejlepším ukazatelem je porovnat typ a množství poskytnutých logických zdrojů. Kromě toho musí vývojář plně pochopit, co přesně je od zařízení vyžadováno, protože se výrobci mohou pochlubit funkcemi, které budou nejméně důležité pro práci. Například Stratix II EP2S180 z Altera má asi 186.576 LUT se 4 vstupy a Xilinx Virtex-4 obsahuje XC4VLX200 podle 178176. Nicméně, v případě, že konstrukce vyžaduje jen 177.000. LUT, bude stačit.
    Pokud je RAM - žádoucí metrika pro návrháře, ani Xilinx XC4VLX200 6 Mbps nebo 9 Mbps Altera EP2S180 není lepší, ve srovnání s méně než inzerované, staršího modelu XC4VFX140 99 Mbps.

    Programovací jazyky a software

    Programování FPGA Altera pro začátečníky začíná výběrem jazyka. Možnost C, C ++ neboSystém C vám umožňuje využívat schopnosti největších zařízení a současně dosáhnout podobnosti realistické vývojové grafiky. Schopnost používat návrh založený na C pro FPGA je zajištěna HLS (syntéza na vysoké úrovni), která je na průlomu po mnoho let s nástrojem jako je Handle-C. v poslední době se stala skutečností díky skutečnosti, že velké dodavatelé společnosti Altera a Xilinx nabízejí HLS ve svých souborech nástrojů Spectra-Q a Vivado HLx. K dispozici je řada dalších programových implementací programu Altera FPGA pro začátečníky založené na C, jako je OpenCL, který je určen pro vývojáře softwaru, kteří chtějí zvýšit produktivitu s FPGA bez hlubokého pochopení návrhu FPGA. Stejně jako u HDL, HLS má omezení při používání programovacích přístupů FPGA k C, stejně jako u tradičních HDL, musí vývojáři pracovat s podmnožinou jazyka. Například je obtížné syntetizovat a provádět systémová volání, protože je třeba se ujistit, že vše je omezené a má pevnou velikost. V HLS je hezké, že si můžete navrhnout své vlastní algoritmy s plovoucí čárou a existuje nástroj pro konverzi HLS s pohyblivou řádovou čárkou na pevný. Programování FPGA s Xilinx není vůbec těžké. Můžete si ji zakoupit zakoupením produktů Xilinx zdarma nebo podle cenově specifického modelu. K tomuto videu můžete přistupovat na webu profilu, který jasně ukazuje postup použití. Ze všech společností, které mohou být vybrány při hledání programovatelných polí, je Xilinx rozhodně nejlepší ze všech. Jsou tvůrci tohoto produktu, a to pořádmnoho let ho zlepšilo. Firmware se stal silnějším než kdy předtím.

    Fáze návrhu

    FPGA programování lze provádět online, protože platforma je dobře prezentována na internetu. Při nastavení FPGA je prvním krokem navrhnout obvod, pro který jsou požadovány znalosti digitální elektroniky. Na rozdíl od programování je mnohem obtížnější začít řezat kód, pokud není architektura programu jasná. Jakmile se ukáže, že je nutné provést implementaci, začněte popisovat schéma pomocí jednoho z jazyků: Verilog nebo VHDL. Skutečnost, že se paradigma mění, je, že nejsou nazývány programovacími jazyky FPGA, ale jsou jazyky popisu. Vzhledem ke složitosti testování digitálních obvodů je obvykle v této fázi, kdy banky používají testy, které simulují chování zařízení. Tento typ nástroje vám umožňuje kdykoli vidět stav signálu a zkontrolovat, zda existují přechody s požadovanými výsledky.
    Třetí etapa známá jako syntéza schématu je jedním z klíčových. Vybírá použité prvky a jejich propojení podle popisných souborů. V této fázi potřebujete nástroje, které ve většině situací zjednodušují a automatizují úkoly.

    Hardware a ladění

    Intel Quartus Prime Software Suite Lite Edition - software pro návrh FPGA. Je to ideální pro začátečníky, protože je lze stáhnout zdarma a nepotřebujete licenční soubor. Software můžete stáhnout na webových stránkách výrobce. Velikost (několik gigabajtů) z nichStahování a instalace mohou trvat déle. Chcete-li minimalizovat čas a požadované místo na disku se doporučuje stahovat pouze ty prvky, které jsou nezbytné pro vlastní aplikace. Po výzvě ke stažení, odstraňte krabici «Vybrat vše» a vybrat pouze Kvartus Prime a podporovat Cyclone AV zařízení. Algoritmus pro projekt:
  • Otevřete průvodce novým projektem.
  • Zvolte Další & gt; Katalog & gt; & gt; Název objektu nejvyšší úrovně.
  • ​​
  • vyberte adresář pro uložení projektu, například „Blink“ a umístěte jej do složky intelFPGA_lite, ale může být umístěna kdekoliv a klepněte na tlačítko „Další“.
  • Po zobrazení výzvy k vytvoření adresáře zvolte "Ano".
  • Zvolte "Prázdný projekt" a klikněte na tlačítko "Další".
  • Přidat soubory a "Další."
  • upravuje rodinnou jednotku a základní desku, rozhodli rodinu - Cyclone V, spotřebiče - Cyclone V SE, databáze, název zařízení: 5CSEBA6U2317.
  • vyberte konkrétní zařízení, je třeba stisknout tlačítko nahoru /dolů a zobrazí se seznam podporovaných zařízení až do 5CSEBA6U2317.
  • Uživatel může být nutné rozšířit pole „Name“ pro zobrazení v plné název zařízení, klepněte na tlačítko „Další“.
  • Při nastavování nástrojů EDA, pomocí standardních nástrojů, takže žádné změny nebudou, klepněte na tlačítko „Další“ a „Dokončit“. Zobrazí se souhrnná obrazovka.
  • Vytvořte soubor HDL se zavedením Verilog jako HDL.
  • Přejděte na kartu Soubor (hlavní okno) a vyberte možnost Nový.
  • Vyberte soubor Verilog HDL a klepněte na tlačítko OK.
  • Zvolte Soubor & gt; "Uložit jako".
  • Vyberte název souboru. Toto je název souboru nejvyšší úrovně a měl by odpovídat názvu projektu.
  • Klikněte na tlačítko "Uložit".
  • Vytvořte modul Verilog.
  • Zkopírujte a vložte níže uvedený kód Verilog do okna blink.v a uložte kódový soubor.
  • Klepněte pravým tlačítkem myši na položku Analýza a syntéza a potom klepněte na tlačítko Start, čímž provedete ověření syntaxe a syntézy Verilog.
  • Pokud je proces úspěšně dokončen, spolu s analýzou a syntézou se zobrazí zelená značka. Pokud dojde k chybě, zkontrolujte syntaxi a ujistěte se, že se přesně shoduje s kódovým blokem uvedeným výše. Všichni zkušení programátoři vědí, že složité programy, dokonce i podprogramy, nefungují správně poprvé. Abstraktivní schopnost člověka na základě zkušeností mu umožňuje najít řešení bez obav o nejmenší detaily. Ale přísná pravda spočívá v tom, že fyzický systém, do kterého je program zapuštěn, vyžaduje, aby každý malý detail byl vzat v úvahu dříve, než to všechno funguje. S vývojem softwarových nástrojů pro vývoj FPGA, zejména od tradičních dodavatelů a nezávislých poskytovatelů nástrojů: Synplicity, FPGA - se stále častěji stává populárním každodenně. Nyní FPGA začala zahrnovat specializovaný hardware, který zákazníkovi poskytne potřebné funkce, což snižuje náklady výrobců. Takže v budoucnu se v budoucnu může objevit konkurence mezi tvrdými a levnými systémy s flexibilními jádry. Očekává se, že v blízké budoucnosti se náklady sníží ještě víc kvůli popularitě FPGAobčas se zvýší. Výrobci začali experimentovat s koncepcí vložení FPGA do integrovaných obvodů pro vytvoření hybridního zařízení. Důraz je kladen na směrování propojení a menší změny jsou pozorovány v architekturách CLB. Vzhledem k tomu, že FPGA stále obsahují procesory, nová generace vyžaduje nejen znalost hardwaru digitálního designu, ale i zkušenosti vývojářů v procesu jednorázového programování FPGA. Obecně se očekává, že FPGA odveze tržní podíl v zařízeních ASIC a stane se dominantní technologií, která zahrnuje mnoho aplikací z různých oblastí.

    Související publikace