Naučit se programovat pro FPGA pomocí SystemVerilog. FPGA. Pojďme pochopit, jak programovatelné logické obvody fungují a proč jsou dobré.Využití PLS v moderních zařízeních

FPGA (Programmable Logic Integrated Circuit) je integrovaný obvod určený k sestavení digitálních obvodů z popisu ve speciálním programovacím jazyce. Jinými slovy, FPGA je čip, který vypadá, že obsahuje spoustu prvků jako 74HCxx. Jaké přesně tyto logické prvky budou, jaká spojení mezi nimi budou a jaká spojení bude mít výsledný obvod s vnějším světem, se určí ve fázi programování FPGA.

Poznámka: Pokud se mi podařilo zjistit, v ruštině jsou dnes pojmy FPGA a FPGA (Field-Programmable Gate Array, User-Programmable Gate Array) považovány za zaměnitelné, což bude dále v textu používáno. Nicméně stojí za to vědět o existenci alternativního pohledu, podle kterého je FPGA (FPGA) jednou z odrůd FPGA (PLD, Programmable Logic Device).

Základy FPGA

K programování FPGA se používají jazyky pro popis hardwaru (HDL, Hardware Description Language). Mezi nimi jsou nejoblíbenější Verilog (a jeho dialekty, zejména SystemVerilog), stejně jako VHDL. Jazyky jsou si v mnoha ohledech podobné, ale mají odlišnou syntaxi a liší se v některých detailech. Pokud je Verilog C ve světě popisu hardwaru, pak je VHDL v souladu s tím Pascal. Pokud vím, VHDL je poněkud méně populární, zejména kvůli své výřečnosti ve srovnání s Verilogem. Mezi výhody VHDL (nebo nevýhody, podle koho) můžeme jmenovat přísný statické psaní. Verilog někdy umožňuje implicitní přetypování. Abychom pokračovali v analogii s C a Pascalem, jazyky nejsou tak odlišné, že se je nemůžete naučit oba.

Na tento moment Předními výrobci FPGA jsou Altera (nyní ve vlastnictví Intelu) a Xilinx. Podle informací z různých zdrojů dohromady ovládají minimálně 80 % trhu. Dalšími hráči, kteří stojí za zmínku, jsou Actel (získaný společností Microsemi), Lattice Semiconductor, Quicklogic a SiliconBlue. S hardwarem Xilinx můžete pracovat pouze z vývojového prostředí Xilinx (tzv. Vivado) a vývojové prostředí Altra (nazývané Quartus) rozumí pouze hardwaru Altera. Tedy plný vendor lock a při výběru konkrétního FPGA pro váš projekt automaticky vybíráte vývojové nástroje odpovídajícího výrobce, jejich technická podpora, dokumentaci, licenční podmínky softwaru, zásady týkající se ukončení podpory hardwaru a tak dále.

FPGA se často používají v úlohách, kde chcete výrazně urychlit určité výpočty jejich implementací přímo do hardwaru. Například FPGA našly široké uplatnění v oblasti zpracování signálu, řekněme v osciloskopech, spektrálních analyzátorech, logických analyzátorech, generátorech signálů, softwarově definovaném rádiu a dokonce i některých monitorech. Konkrétně LimeSDR používá Altera Cyclone IV a osciloskop Rigol DS1054Z používá Xilinx Spartan-6 a také ProASIC 3 od společnosti Actel. Mezi další aplikace, o kterých jsem slyšel, patří počítačové vidění, rozpoznávání řeči a bioinformatika. Existují další projekty, zejména pro vývoj webových serverů a DBMS běžících na FPGA. Ale pokud vím, tento směr je stále velmi experimentální.

Xilinx nebo Altera?

Jak přísloví praví, nejlepší linux ten, který používá váš kolega Linuxový guru.

Můj přítel, FPGA guru v osobě Dmitrije Oleksyuka, mi poradil, abych začal s vývojovou deskou Arty Artix-7 od Digilent. FPGA v něm použité je Artix-7 od Xilinx. Samotný Digilent do Ruska nedodává, ale zařízení je k dispozici také na AliExpress, i když se znatelným navýšením (oficiální cena je 99 $). Prodává se také na eBay. Jedná se o poměrně výkonnou desku, která však stojí poměrně rozumné peníze.

Zábavný fakt! Pokud chcete pouze programovat ve Verilog nebo VHDL, přísně vzato, nemusíte kupovat žádnou desku FPGA. Nejprve se můžete omezit na simulátor, jehož práce bude popsána níže.

Jednou ze zajímavých vlastností desky je uspořádání patic způsobem kompatibilním s Arduino shieldy. Součástí desky je také vložka, se kterou můžete získat licenci pro Vivado, která otevírá všechny jeho možnosti. Licence je platná jeden rok od okamžiku aktivace a je také vázána na jeden počítač podle typu OS a MAC adresy.

Při dodání. Slyšel jsem, že zařízení s FPGA na palubě mají velkou šanci, že neprojdou celnicí. Obchod AliExpress, odkaz na který jsem uvedl výše, dodává desky do Ruska přes kurýrní služba SPSR. K proclení bylo nutné vyplnit online formulář s údaji o pasu (pouze údaje, bez fotografie) a kontaktním telefonem, jak vyžaduje současná ruská legislativa. Poté byla tabule doručena kurýrem přímo ke dveřím bez jakýchkoliv dotazů.

Instalace Vivado

Vývojové prostředí Vivado je k dispozici ke stažení z webu Xilinx. Psychicky se připravte na to, že se před stažením budete muset zaregistrovat a vyplnit o sobě poměrně podrobný formulář. Stáhněte si archiv s názvem „Vivado HLx 2017.2: Stažení jednoho souboru instalátoru operačního systému“. Nepleťte si to náhodou s některými „řešeními Vivado Lab“, to rozhodně není to, co potřebujete. Archiv váží více než 20 GB, takže musíme být trpěliví.

Rozbalte archiv a spusťte instalační program. Nainstalujte Vivado HL System Edition. Jeho plná verze zabere 47 GB místa na disku. Osobně jsem odškrtl Software Development Kit a ponechal podporu pouze pro zařízení řady 7, což snížilo velikost na 12 GB. Když se podívám trochu dopředu, poznamenám, že tato konfigurace se ukázala jako zcela dostatečná.

Před spuštěním Vivado k němu musíte přidat podporu Arty Artix-7, protože po vybalení o této desce nic neví. Dělá se něco takového:

cd ~/ opt/ xilinx/ Vivado/ 2017.2 / data/ boards/ board_files
wget https:// github.com/ Digilent/ vivado-boards/ archive/ master.zip
rozbalit master.zip
mv vivado-boards-master/ new/ board_files/* ./
rm -r vivado-boards-master
rm master.zip

Někde také stahujeme a ukládáme soubor Arty_Master.xdc. Budeme to potřebovat později. Soubor obsahuje popis LED diod, spínačů atd. umístěných na desce. Bez něj nebude blikání LED diod na Verilog snadné.

První projekt na SystemVerilog

Ve Vivado říkáme Soubor → Nový projekt... Jako typ projektu vyberte projekt RTL, zaškrtněte políčko V tuto chvíli neuvádět zdroje. V dialogu pro výběr typu desky najděte v seznamu Arty.

Nejprve do projektu přidejte dříve stažený soubor XDC. Zkopírujte jej do adresáře s projektem. Pak řekneme Soubor → Přidat zdroje... → Přidat nebo vytvořit omezení → Přidat soubory, najít kopii souboru a kliknout na Dokončit. Ve stromu souboru projektu (Zdroje) se ve skupině Omezení objeví soubor Arty_Master.xdc nebo jakkoli jste kopii pojmenovali. Otevřete jej a odkomentujte všechny řádky ve skupinách Hodinový signál, Přepínače a LED diody.

Dále řekneme Soubor → Přidat zdroje… → Přidat nebo vytvořit zdroje návrhu → Vytvořit soubor. V typu souboru vyberte SystemVerilog, do názvu souboru zadejte něco jako ahoj. Říkáme dokončit. Dále se zobrazí dialogové okno Define Module, které vás vyzve ke kliknutí na rozhraní modulu. Dialog je celkem zbytečný, protože je pohodlnější udělat to samé přímo v kódu, takže klikněte na Storno.

Ve zdrojovém stromu najdeme nový soubor ahoj.sv, bude to ve skupině Design Sources. Otevřete a napište následující kód:

`časové měřítko 1ns/1ps

modul ahoj(
vstupní logika CLK100MHZ,
vstupní logika [ 3 : 0 ] sw,
výstupní logika [3:0] led
) ;

vždy @ (posedge CLK100MHZ)
začít
if (sw[ 0 ] == 0 )
začít
vedený<= 4"b0001 ;
konec
jiný
začít
vedený<= 4"b0000 ;
konec
konec

koncový modul

Pokud bylo vše provedeno správně, v této fázi bude Vivado vypadat nějak takto (klikací, PNG, 71 KB):

Sestavení programu probíhá ve dvou fázích – syntéza a implementace. Ve fázi syntézy je program převeden do abstraktního obvodu logických hradel a dalších prvků. Ve fázi implementace se rozhoduje o tom, jak flashovat tento obvod do konkrétního hardwaru.

Začněme syntézu vyslovením Flow → Run Synthesis nebo jednoduše stisknutím F11. V pravém horním rohu uvidíte indikaci, že proces probíhá. V závislosti na vašem počítači a složitosti programu to může trvat poměrně dlouho. Na mém notebooku byla syntéza výše uvedeného programu dokončena asi za 10 sekund. Pokud nyní řeknete Flow → Open Synthesized Design, můžete vidět krásný obrázek, jako je tento:

Je čas blýsknout se naší deskou. Říkáme Flow → Run Implementation, pak Flow → Generate Bitstream. Desku připojíme k počítači přes USB, ve Vivado řekneme Flow → Open Hardware Manager → Open target → Auto Connect → Program device. Budete muset zadat cestu k bitovému souboru. U mě to bylo následovně:

./first-project.runs/impl_1/hello.bit

Říkáme Program. Nyní LED LD4 na desce svítí, pokud je spínač SW0 spuštěn (viz foto desky výše). Pokud je spínač zvednutý, LED se nerozsvítí. Jednoduché, samozřejmě, ale je to „ahoj, světe“, co jste čekali? :)

Simulace

Simulace je virtuální provádění kódu Verilog nebo VHDL přímo na vašem počítači, bez jakýchkoli FPGA. Jedná se jak o ladicí nástroj, tak o jakýsi rámec pro pokrytí kódu testy.

Když jsem simulaci vyzkoušel, první věc, kterou jsem zjistil, bylo, že mi nefunguje. Záznamy byly jednoduché:

CHYBA: Nepodařilo se zkompilovat vygenerovaný soubor C [...]xsim_1.c.

U této chyby našel Google jen nejrůznější nesmysly ve stylu „zkuste deaktivovat antivirus“. Výsledkem bylo, že přidání příznaku -v 2 do skriptu ~/opt/xilinx/Vivado/2017.2/bin/xelab pomohlo vyřešit problém. S jeho pomocí jsem zjistil, že Clang, jehož binárku s sebou Vivado nese, havaruje s následující chybou:

/a/long/path/to/clang: chyba při načítání sdílených knihoven:
libncurses.so.5: nelze otevřít soubor sdíleného objektu: Žádný takový soubor nebo
adresář

A tato chyba a její řešení jsou již popsány na Arch Wiki. Osobně jsem právě zkopíroval již existující soubor z adresáře Vivado_HLS:

cp ~/opt/xilinx/Vivado_HLS/2017.2/lnx64/tools/gdb_v7_2/libncurses.so.5\
~/opt/xilinx/Vivado/2017.2/lib/lnx64.o/libncurses.so.5

... po kterém vše fungovalo. Takže teď vlastně příklad simulace.

Analogicky k tomu, jak jsme dříve vytvořili hello.sv, vytvoříme nový soubor hello_sim.sv ve skupině Zdroje simulace. Do souboru zapíšeme následující kód:

`časové měřítko 1ns/1ps

modul hello_sim() ;
logika clck_t;
logika [ 3 : 0 ] sw_t;
logika [ 3 : 0 ] led_t;

Ahoj hello_t(clck_t, sw_t, led_t) ;

počáteční začátek
clck_t<= 0 ;
sw_t<= 4"b0000 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
tvrdit (led_t === 4"b0001 ) ;

Sw_t<= 4"b0001 ; # 1 ; clck_t <= 1 ; # 1 ; clck_t <= 0 ; # 1 ;
tvrdit (led_t === 4"b0000 ) ;
konec

koncový modul

Ve zdrojovém stromu klikněte pravým tlačítkem na soubor a vyberte Vlastnosti zdrojového uzlu. V části Použité zrušte zaškrtnutí políček Syntéza a Implementace. Nechceme, aby nějaké testy zanesly naše daleko od gumového FPGA, že?

Nyní říkáme Flow → Run Simulation → Run Behavioral Simulation. Ve výsledku uvidíte něco takového:

Je vidět, že když je sw nula, led je jedna a naopak. V tomto případě se všechny změny odehrávají na hraně hodinového signálu. Zdá se, že program funguje správně. No, nic nepadlo na tvrzení, která jako by napovídala.

Závěr

Archiv s výše popsaným projektem lze stáhnout. Jako další zdroje informací bych doporučil následující:

  • Pokud vás zajímají podrobnosti o hardwaru, věnujte pozornost

Představte si, že procesor místo provádění specifické sady instrukcí bude přestavěn pro každý program a přemění algoritmus přímo na hardware. Přesně takhle fungují FPG. V dnešním článku vám prozradím, jak je to vůbec možné a seznámím vás s různými metodami návrhu FPGA.

Pro začátek musíte trochu porozumět digitální logice čipů ASIC, ale začít s nimi je velmi obtížné a drahé a je lepší začít s FPGA.

Co je FPGA?

FPGA znamená field-programmable gate array (user-programmable gate arrays, FPGA). Obecněji se jim říká FPGA – programovatelné logické integrované obvody.

Pomocí FPGA můžete doslova navrhovat digitální mikroobvody, když sedíte doma s dostupnou ladicí deskou na stole a vývojářským softwarem za několik tisíc zelených rublů. Existují ale i bezplatné možnosti. Poznámka: je to navrhovat, ne programovat, protože na výstupu dostaneme fyzický digitální obvod, který provádí určitý algoritmus na úrovni hardwaru, a ne program pro procesor.

Funguje následovně. K dispozici je hotová deska plošných spojů se sadou rozhraní, která jsou napojena na čip FPGA nainstalovaný na desce, něco jako tato cool deska pro datové centrum nebo tato debugovací deska pro školení.

Dokud nenakonfigurujeme FPGA, uvnitř čipu prostě není žádná logika pro zpracování dat z rozhraní, a proto samozřejmě nebude nic fungovat. Ale v důsledku návrhu vznikne firmware, který po nahrání do FPGA vytvoří digitální obvod, který potřebujeme. Tímto způsobem můžete vytvořit 100G Ethernet řadič, který bude přijímat a zpracovávat síťové pakety.

Důležitou vlastností FPGA je jeho rekonfigurovatelnost. Řekněme, že nyní potřebujeme 100G Ethernetový řadič a za týden lze stejnou desku použít k implementaci čtyř nezávislých 25G Ethernetových rozhraní.

Na trhu jsou dva přední výrobci čipů FPGA: známý Intel a Xilinx. Ovládají 58 a 42 % trhu. Zakladatelé společnosti Xilinx vynalezli svůj první čip FPGA již v roce 1985. Intel vstoupil na trh poměrně nedávno – v roce 2015, kdy pohltil Altera, která byla založena ve stejné době jako Xilinx. Technologie Altera a Xilinx jsou si v mnoha ohledech podobné, stejně jako vývojová prostředí. S produkty Xilinx jsem pracoval častěji, takže se nenechte překvapit jeho neustálou zmínkou v článku.

FPGA jsou široce používány v různých oblastech: spotřební elektronika, telekomunikační zařízení, akcelerační desky pro použití v datových centrech, robotika, prototypování čipů ASIC. Níže se podívám na několik příkladů.

Podíváme se také na technologii, která zajišťuje rekonfiguraci hardwaru, seznámíme se s procesem návrhu a podíváme se na jednoduchý příklad implementace hardwarového čítače ve Verilog. Pokud máte nějakou vývojovou desku FPGA, měli byste být schopni to replikovat sami. Pokud není deska, můžete se stále seznámit s Verilog simulací provozu obvodu na vašem počítači.

Princip činnosti FPGA

Čip FPGA je stejný vlastní čip ASIC, skládající se ze stejných tranzistorů, ze kterých jsou sestaveny klopné obvody, registry, multiplexory a další logické prvky pro konvenční obvody. Samozřejmě je nemožné změnit pořadí, ve kterém jsou tyto tranzistory zapojeny. Ale architektonicky je mikroobvod postaven tak chytrým způsobem, že je možné měnit přepínání signálů mezi většími bloky: říká se jim CLB - programovatelné logické bloky.

Je také možné změnit logickou funkci, kterou CLB plní. Toho je dosaženo díky tomu, že celý čip je prostoupen buňkami statické paměti RAM konfigurace. Každý bit této paměti buď řídí nějaký druh klíče pro přepínání signálu, nebo je součástí pravdivostní tabulky logické funkce, kterou CLB implementuje.

Vzhledem k tomu, že konfigurační paměť je postavena pomocí technologie Static RAM, za prvé, když je FPGA zapnuto, je nutné čip nakonfigurovat a za druhé lze čip překonfigurovat téměř nekonečně mnohokrát.

Velmi zjednodušená 2D struktura čipu bez konfigurační paměti

CLB jsou umístěny v přepínací struktuře, která definuje spojení mezi vstupy a výstupy CLB.

Schéma spínací matice

Na každém průsečíku vodičů je šest spínacích spínačů ovládaných vlastními konfiguračními paměťovými buňkami. Otevřením některých a uzavřením jiných můžete zajistit různé přepínání signálů mezi CLB.

CLB

CLB se velmi zjednodušeně skládá z bloku, který definuje booleovskou funkci z několika argumentů (říká se tomu Look Up Table, LUT) a spouštěče (flip-flop, FF). V moderních FPGA má LUT šest vstupů, ale obrázek ukazuje tři pro jednoduchost. Výstup LUT je přiveden na výstup CLB buď asynchronně (přímo) nebo synchronně (přes FF klopný obvod běžící na systémových hodinách).

Princip implementace LUT

Je zajímavé podívat se na princip implementace LUT. Mějme nějakou booleovskou funkci y = (a & b) | ~ c . Jeho schéma zapojení a pravdivostní tabulka jsou uvedeny na obrázku. Funkce má tři argumenty, takže nabývá 2^3 = 8 hodnot. Každému z nich odpovídá vlastní kombinace vstupních signálů. Tyto hodnoty jsou vypočítány programem pro vývoj firmwaru FPGA a zapsány do speciálních konfiguračních paměťových buněk.

Hodnota každé buňky je přiváděna na její vstup výstupního multiplexeru LUT a vstupní argumenty booleovské funkce se používají k výběru té či oné hodnoty funkce. CLB je nejdůležitějším hardwarovým zdrojem FPGA. Počet CLB v moderních FPGA čipech se může lišit a závisí na typu a kapacitě čipu. Xilinx zemřel s počtem CLB od čtyř tisíc do tří milionů.

Kromě CLB je uvnitř FPGA řada dalších důležitých hardwarových prostředků. Například hardwarové vícenásobné akumulační jednotky nebo DSP jednotky. Každý z nich může provádět operace násobení a sčítání na 18bitových číslech v každém hodinovém cyklu. U špičkových krystalů může počet DSP bloků přesáhnout 6000.

Dalším zdrojem jsou bloky vnitřní paměti (Block RAM, BRAM). Každý blok může uložit 2 KB. Celková kapacita takové paměti může v závislosti na krystalu dosahovat od 20 KB do 20 MB. Stejně jako CLB jsou bloky BRAM a DSP spojeny přepínací tkaninou a rozkládají se po celé matrici. Propojením bloků CLB, DSP a BRAM lze získat velmi efektivní obvody pro zpracování dat.

Výhody FPGA

První čip FPGA vytvořený společností Xilinx v roce 1985 obsahoval pouze 64 CLB. V té době byla integrace tranzistorů na čipech mnohem nižší než nyní a digitální zařízení často využívala čipy s „rozptýlenou logikou“. Existovaly samostatné mikroobvody pro registry, čítače, multiplexery a násobiče. Pro konkrétní zařízení byla vytvořena specifická deska plošných spojů, na kterou byly tyto nízkointegrační mikroobvody instalovány.

Použití FPGA umožnilo tento přístup opustit. I FPGA s 64 CLB výrazně šetří místo na desce plošných spojů a dostupnost rekonfigurace přidala možnost aktualizovat funkčnost zařízení po výrobě za provozu, jak se říká „v terénu“ (odtud název - pole -programovatelné hradlové pole).

Vzhledem k tomu, že uvnitř FPGA lze vytvořit jakýkoli hardwarový digitální obvod (hlavní je dostatek zdrojů), jednou z důležitých aplikací FPGA je prototypování čipů ASIC.

Vývoj ASIC je velmi složitý a nákladný, náklady na chyby jsou velmi vysoké a otázka testování logiky je kritická. Proto jednou z vývojových fází, ještě před zahájením prací na fyzické topologii obvodu, bylo jeho prototypování na jednom či více FPGA čipech.

Pro vývoj ASIC se vyrábí speciální desky obsahující mnoho vzájemně propojených FPGA. Prototypový mikroobvod pracuje na výrazně nižších frekvencích (možná desítky megahertzů), ale umožňuje ušetřit na identifikaci problémů a chyb.

Podle mého názoru však existují zajímavější aplikace FPGA. Flexibilní struktura FPGA umožňuje implementaci hardwarových obvodů pro vysokorychlostní a paralelní zpracování dat s možností změny algoritmu.


Porovnání hardwarových platforem

Zamysleme se nad tím, jak se CPU, GPU, FPGA a ASIC zásadně liší. CPU je univerzální, můžete na něm spustit jakýkoli algoritmus, je nejflexibilnější a nejsnáze se používá díky obrovskému množství programovacích jazyků a vývojových prostředí.

Zároveň díky všestrannosti a sekvenčnímu provádění instrukcí CPU klesá výkon a zvyšuje se spotřeba obvodu. To se děje proto, že pro každou užitečnou aritmetickou operaci CPU provádí mnoho dalších operací souvisejících se čtením instrukcí, přesouváním dat mezi registry a mezipamětí a dalšími pohyby.

Na druhé straně je ASIC. Na této platformě je požadovaný algoritmus implementován hardwarově přímým připojením tranzistorů, všechny operace se týkají pouze provádění algoritmu a nelze jej nijak změnit. Z toho plyne maximální výkon a nejnižší spotřeba energie platformy. Ale přeprogramovat ASIC je nemožné.

Napravo od CPU je GPU. Tyto čipy byly původně navrženy pro grafické zpracování, ale nyní se používají také pro všeobecné účely výpočetní těžby. Skládají se z tisíců malých výpočetních jader a provádějí paralelní operace s polem dat.

Pokud lze algoritmus paralelizovat, pak GPU může dosáhnout významného zrychlení ve srovnání s CPU. Na druhou stranu sekvenční algoritmy budou implementovány hůře, takže platforma se ukáže být méně flexibilní než CPU. K vývoji pro GPU také potřebujete speciální dovednosti, znát OpenCL nebo CUDA.

Konečně FPGA. Tato platforma kombinuje efektivitu ASIC se schopností měnit program. FPGA nejsou univerzální, ale existuje třída algoritmů a úloh, které na nich ukážou lepší výkon než na CPU nebo dokonce GPU. Složitost vývoje pro FPGA je vyšší, ale nové vývojové nástroje tuto mezeru zmenšují.

Rozhodující výhodou FPGA je schopnost zpracovávat data ihned po jejich příchodu s minimálním zpožděním odezvy. Jako příklad si můžete představit chytrý síťový router s velkým počtem portů: když na jeden z jeho portů dorazí ethernetový paket, je třeba před výběrem výstupního portu zkontrolovat mnoho pravidel. Možná budete muset změnit některá pole v balíčku nebo přidat nová.

Použití FPGA umožňuje tento problém vyřešit okamžitě: bajty paketu právě začaly přicházet na čip ze síťového rozhraní a jeho hlavička je již analyzována. Použití procesorů zde může výrazně zpomalit rychlost zpracování síťového provozu. Je jasné, že routery mohou mít vlastní ASIC, které funguje nejefektivněji, ale co když se pravidla pro zpracování paketů budou muset změnit? Pouze FPGA mohou dosáhnout požadované flexibility v kombinaci s vysokým výkonem.

FPGA se tedy používají tam, kde je potřeba vysoký výkon zpracování dat, nejkratší doba odezvy a nízká spotřeba energie.

FPGA v cloudu

V cloud computingu se FPGA používají pro rychlé výpočty, zrychlení síťového provozu a přístup k datovým polím. To také zahrnuje použití FPGA pro vysokofrekvenční obchodování na burzách. Do serverů jsou vloženy FPGA desky s PCI Express a optickým síťovým rozhraním od Intelu (Altera) nebo Xilinx.

FPGA jsou skvělé pro kryptografické algoritmy, porovnávání sekvencí DNA a vědecké úkoly, jako je molekulární dynamika. Microsoft již dlouho používá FPGA k urychlení vyhledávací služby Bing a také k organizaci Software Defined Networking v cloudu Azure.

Boom strojového učení také nešetřil FPGA. Xilinx a Intel nabízejí nástroje založené na FPGA pro práci s hlubokými neuronovými sítěmi. Umožňují vám získat firmware FPGA, který implementuje konkrétní síť, přímo z rámců jako Caffe a TensorFlow.

To vše si navíc můžete vyzkoušet, aniž byste opustili svůj domov a používali cloudové služby. Například od Amazonu si můžete pronajmout virtuální stroj s přístupem k desce FPGA a jakýmkoli vývojovým nástrojům, včetně strojového učení.

FPGA na hraně

Jaké další zajímavé věci dělají FPGA? Proč nic nedělají! Robotika, samořídící auta, drony, vědecké přístroje, lékařské vybavení, spotřebitelská mobilní zařízení, chytré CCTV kamery a tak dále.

Tradičně byly FPGA používány pro digitální zpracování jednorozměrných signálů (a soutěžily s DSP procesory) v radarových zařízeních, rádiových transceiverech. S rostoucí integrací a výkonem čipů se platformy FPGA stále více používají pro vysoce výkonné výpočty, jako je zpracování 2D signálu na okraji cloudu.

Tento koncept je nejsnáze pochopitelný na příkladu dopravní kamery s rozpoznáváním SPZ. Můžete si vzít kameru se schopností přenášet video přes Ethernet a zpracovávat stream na vzdáleném serveru. S rostoucím počtem kamer se bude zvyšovat i zatížení sítě, což může vést k selhání systému.

Místo toho je lepší implementovat rozpoznávání SPZ na počítači nainstalovaném přímo v těle videokamery a přenášet čísla SPZ do cloudu v textovém formátu. K tomu si dokonce můžete vzít relativně levná FPGA s nízkou spotřebou energie, abyste si vystačili s baterií. Zároveň zůstává možnost měnit provozní logiku FPGA např. při změně standardu SPZ.

Co se týče robotiky a dronů, v této oblasti je důležité především splnit dvě podmínky – vysoký výkon a nízkou spotřebu energie. Platforma FPGA je ideální a lze ji využít zejména k vytvoření letových ovladačů pro drony. Už vyrábějí UAV, která se mohou rozhodovat za chodu.

Vývoj projektu na FPGA

Existují různé úrovně provedení: nízká, bloková a vysoká. Nízká úroveň zahrnuje používání jazyků jako Verilog nebo VHDL, ve kterých řídíte vývoj na úrovni přenosu registrů (RTL). V tomto případě vytvoříte registry jako v procesoru a definujete logické funkce, které mezi nimi mění data.

Obvody FPGA vždy pracují na konkrétních hodinových frekvencích (typicky 100-300 MHz) a na úrovni RTL definujete chování obvodu až na frekvenci systémových hodin. Výsledkem této pečlivé práce jsou návrhy, které jsou co nejúčinnější z hlediska výkonu, spotřeby zdrojů FPGA a spotřeby energie. To však vyžaduje vážné dovednosti v návrhu obvodů ai s nimi je proces pomalý.

Na úrovni bloků se zabýváte především propojováním hotových velkých bloků, které provádějí určité funkce, abyste získali potřebnou funkcionalitu systému na čipu.

Na vysoké úrovni designu již nekontrolujete data v každém taktu, ale místo toho se soustředíte na algoritmus. Existují kompilátory nebo překladače z C a C++ na úroveň RTL, například Vivado HLS. Je docela chytrý a umožňuje převést širokou třídu algoritmů na hardwarovou úroveň.

Hlavní výhodou tohoto přístupu oproti RTL jazykům je urychlení vývoje a zejména testování algoritmu: C++ kód lze spouštět a ověřovat na počítači, což bude mnohem rychlejší než testování změn algoritmu na úrovni RTL. Samozřejmě musíte platit za pohodlí - schéma nemusí být tak rychlé a zabere více hardwarových prostředků.

Často jsme ochotni zaplatit tuto cenu: pokud použijeme překladač správně, efektivita tím příliš neutrpí a moderní FPGA mají dostatek zdrojů. V našem světě s kritickým ukazatelem doby uvedení na trh se to ukazuje jako oprávněné.

Často je potřeba zkombinovat všechny tři vývojové styly v jednom designu. Řekněme, že potřebujeme vyrobit zařízení, které bychom mohli zabudovat do robota a dát mu schopnost rozpoznávat objekty ve videostreamu – například dopravní značky. Vezmeme čip video snímače a připojíme jej přímo k FPGA. Pro ladění můžeme použít HDMI monitor, rovněž připojený k FPGA.

Snímky z kamery budou do FPGA přenášeny přes rozhraní, které je jasně definováno výrobcem snímače (zde nefunguje USB), zpracovány a zobrazeny na monitoru. Ke zpracování snímků budete potřebovat framebuffer, který je obvykle umístěn v externí paměti DDR nainstalované na desce plošných spojů vedle čipu FPGA.


Typické blokové schéma návrhu FPGA

Pokud výrobce video senzoru neposkytne Interface IP pro náš čip FPGA, budeme jej muset zapsat sami v RTL, přičemž budeme počítat hodinové cykly, bity a bajty v souladu se specifikací protokolu přenosu dat. Nejspíše vezmeme hotové bloky Preprocess, DDR Controller a HDMI IP a jejich rozhraní jednoduše připojíme. A blok HLS, který vyhledává a zpracovává příchozí data, můžeme napsat v C++ a vysílat je pomocí Vivado HLS.

S největší pravděpodobností budeme ještě potřebovat nějakou hotovou knihovnu detektoru a klasifikátoru dopravních značek, upravenou pro použití v FPGA. V tomto příkladu samozřejmě uvádím velmi zjednodušený vývojový diagram návrhu, který však správně odráží logiku provozu.

Podívejme se na cestu návrhu od psaní RTL kódu po získání konfiguračního souboru pro načtení do FPGA.

Cesta návrhu

Takže napíšete RTL kód, který implementuje obvod, který chcete. Před testováním na skutečném hardwaru se musíte ujistit, že je správný a správně řeší požadovaný problém. K tomu se používá RTL modelování v simulátoru na počítači.

Vezmete svůj obvod, prozatím prezentovaný pouze v RTL kódu, a umístíte ho na virtuální lavici, kde aplikujete sekvence digitálních signálů na vstupy obvodu, zaznamenáte výstupní diagramy, časové závislosti výstupních signálů a porovnáte s očekávanými výsledky. Obvykle najdete chyby a vrátíte se k psaní RTL.

Dále je logicky ověřený kód přiváděn jako vstup do programu syntezátoru. Převádí textový popis obvodu do propojeného seznamu digitálních prvků z knihovny dostupné pro danou matrici FPGA. Tento seznam zobrazí položky, jako jsou LUT, spouštěče a spojení mezi nimi. V této fázi ještě nejsou prvky vázány na konkrétní hardwarové zdroje. Chcete-li to provést, musíte na obvod uložit omezení - zejména určit, ke kterým fyzickým I/O pinům čipu FPGA jsou připojeny logické vstupy a výstupy vašeho obvodu.

Tato omezení také vyžadují, abyste specifikovali, při jakých rychlostech hodin musí obvod pracovat. Výstup syntezátoru a soubor s omezením jsou odeslány do Implementačního procesoru, který mimo jiné zpracovává místo a cestu.

Proces Place váže každý dosud anonymní prvek z netlistu ke konkrétnímu prvku uvnitř čipu FPGA. Dále začíná svou práci proces Route, který se snaží najít optimální zapojení těchto prvků pro odpovídající konfiguraci přepínací matice FPGA.

Place a Route fungují na základě omezení, která jsme na obvod umístili: I/O piny a rychlost hodin. Perioda hodin má velmi silný vliv na implementaci: neměla by být menší než časové zpoždění na logických hradlech v kritickém obvodu mezi dvěma po sobě jdoucími klopnými obvody.

Často není možné tento požadavek okamžitě splnit, a pak se musíte vrátit do počáteční fáze a změnit kód RTL: například se pokusit snížit logiku v kritickém řetězci. Jakmile je implementace úspěšně dokončena, víme, které prvky kam jdou a jak jsou propojeny.

Teprve poté se spustí proces vytváření binárního souboru firmwaru FPGA. Zbývá jej nahrát do skutečného hardwaru a zkontrolovat, zda funguje podle očekávání. Pokud se v této fázi objeví problémy, znamená to, že modelování bylo neúplné a všechny chyby a nedostatky nebyly v této fázi odstraněny.

Můžete se vrátit do fáze simulace a simulovat nouzovou situaci, a pokud to nefunguje, jako poslední možnost je přímo v pracovním hardwaru poskytnut ladicí mechanismus. Můžete určit, které signály chcete v průběhu času sledovat, a návrhové prostředí vygeneruje další obvody logického analyzátoru, které sedí na čipu vedle vašeho návrhu, připojují se k signálům, které vás zajímají, a ukládají jejich hodnoty v průběhu času. . Uložené časové diagramy požadovaných signálů lze stáhnout do počítače a analyzovat.

Článek se pokouší zjistit složení průvodní dokumentace k vyvíjeným digitálním modulům pro programovatelné logické integrované obvody (FPGA). Vývojáři musí tuto průvodní dokumentaci poskytnout spotřebiteli/zákazníkovi pro úspěšné další použití vyvinutého digitálního modulu ve svých projektech ve fázi návrhu digitálních zařízení na FPGA.

Úvod

Na jakou projektovou dokumentaci by se tedy měl vývojář zeptat, pokud zákaznická společnost nebo podnik nebo jiný vývojář následně použije ve svých projektech „cizí“ vyvinuté zařízení? Tento článek může sloužit jako „cheat sheet“ k tomu, abychom nejprve správně vydali technické specifikace pro vývoj digitálního zařízení pro FPGA a poté požádali vývojáře o projektovou dokumentaci již vyvinutého digitálního zařízení. Na základě předchozích zkušeností s prací s projektovou dokumentací podnik nebo firma obvykle používá následující normy a regulační dokumenty:

  • GOST 2.102-68 ESKD. Druhy a úplnost projektové dokumentace.
  • GOST 15.101-98. Systém pro vývoj a zavádění produktů do výroby. Postup při provádění výzkumných prací.
  • GOST R 15.201-20-00. Systém pro vývoj a zavádění produktů do výroby. Výrobky pro průmyslové a technické účely. Postup pro vývoj a uvedení výrobků do výroby.

Zpravidla se jednalo o soubory firmwaru a program (popis digitálního zařízení ve VHDL/Verilog nebo soubor digitálních obvodů vyvinutých v editoru obvodů využívajících knihovní prvky digitální logiky, jako jsou klopné obvody, registry, čítače, dekodéry , atd.) na CD nebo DVD a pokyny k programování. To je vše.

Autor se například potýkal s následujícím problémem. Jeden ze zaměstnanců vyvinul komplexní vícemodulové digitální zařízení. Popsal jsem všechny moduly ve VHDL a podíval se na cyklogramy provozu těchto modulů a digitálního zařízení jako celku na dobrém a drahém osciloskopu. O souborech Test Bench a možnosti provádět simulace nevěděl nebo je neuměl psát, mimochodem k projektu a popisům modulů také nebyly žádné připomínky. Situace může být ještě horší, pokud jsou moduly reprezentovány digitálními obvody navrženými v editoru obvodů s využitím knihovních prvků. Zde leží jedna z hlavních nevýhod: kromě samotného vývojáře je nepravděpodobné, že by někdo jiný pochopil toto digitální zařízení, zvláště pokud je projekt vícemodulový a popis každého modulu je více než 100 řádků nebo více než jeden monitor. obrazovka. To znamená, že pokud jiný vývojář chce zavést takto již vyvinuté digitální zařízení pro FPGA do nového vývoje nebo projektu, musí opět věnovat čas vývoji tohoto digitálního zařízení.

Historie problému návrhu pro FPGA

V současné době je trh FPGA jedním z nejdynamičtěji se rozvíjejících. FPGA se používají v mnoha průmyslových odvětvích. V tuto chvíli neexistuje žádná jednoznačná metodika, která by uspokojila všechny vývojáře hardwaru pro získání konfigurace FPGA na základě funkčního modelu zařízení na systémové úrovni. Nejoblíbenějším přístupem k řešení tohoto problému je použití technologie jádra IP (Intellectual Property Cores). IP jádra jsou hotové komponenty, které usnadňují jejich začlenění do vlastního projektu a vytvoření komplexnějšího systému. Tento přístup má jednu významnou nevýhodu - připojení IP jader k elementární bázi. Každé IP jádro je optimalizováno pro konkrétní sérii čipů od konkrétního výrobce, což výrazně zhoršuje možnost přenosu již vytvořených zařízení z jedné elementové základny do druhé. Uzavřená povaha komerčních CAD architektur znemožňuje přidávat vlastní funkční modely zařízení na systémové úrovni a na jejich základě odvozovat modely zařízení na úrovni přenosu registru (RTL). Vývoj digitálního modulu se provádí ve formě digitálního obvodu nakresleného v editoru obvodů s použitím výrobcem vestavěné CAD knihovny základních obvodových prvků, jako jsou klopné obvody, dekodéry, čítače, sčítačky atd.

Dalším oblíbeným přístupem, který umožňuje přechod z funkčního modelu na úrovni systému na model zařízení na úrovni přenosu registrů, je použití návrhových jazyků na systémové úrovni (SLDL). Mezi takové jazyky patří SystemC, Handel-C, VHDL, Verilog, System Verilog. Hlavní výhodou je nezávislost na hardwarové základně, ve které bude zařízení implementováno.

Hardwarový vývojář tak na jedné straně při použití technologie IP core dostává kvalitní řešení, ale striktně vázané na hardwarový základ, ve kterém je zařízení implementováno. Na druhou stranu, při použití jazyků pro popis hardwaru na systémové úrovni je implementace zařízení nezávislá na hardwaru. Z výše uvedeného vyplývá, že v současné době je důležité pro urychlení procesu návrhu digitálních modulů společně využívat jazyk popisu hardwaru a IP jádra výrobce (Xilinx, Altera, Actel atd.) a vývojářských společností třetích stran. Při použití digitálních modulů od výrobců třetích stran někdy chybí informace v průvodní dokumentaci.

Poskytování informací o vyvíjeném digitálním modulu pro FPGA

V závislosti na metodice získání konfigurace FPGA na základě funkčního modelu zařízení na systémové úrovni může vývojář rozlišit následující typy digitálních modulů pro FPGA:

  • Software - vyvinutý digitální modul, předávaný spotřebiteli ve formě popisu v jazyce popisu hardwaru (VHDL, Verilog) a/nebo vyvinutý v Schematic Editor pro další použití v programech pro automatizovanou syntézu logických obvodů a optimalizovaný pro funkční parametry .
  • Firmware - digitální modul vyvinutý vývojářem třetí strany, nazývaný IP jádro, přenášený k zákazníkovi ve formě logického obvodu (netlist) založeného na knihovně logických prvků výrobce FPGA a optimalizovaný pro funkční a elektrické parametry.

Ve fázi vývoje dokumentace je na základě osobních zkušeností nutné vypracovat kromě obvyklé projektové dokumentace a specifikací prováděných v souladu s GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, dokumentaci pro všechny typy modely (systémové, logické, obvodové inženýrství) vytvořené ve fázích návrhu digitálních zařízení na FPGA.

Jinými slovy, sada konstrukční dokumentace digitálního zařízení pro FPGA musí kromě souboru s firmwarem, programových pokynů a zaznamenaného projektu na CD/DVD obsahovat také doprovodnou dokumentaci.

Stůl. Seznam oddílů průvodní dokumentace

Název sekce Pohled
Software Firmware
Obecná informace
Účel a rozsah O R
Specifikace O O
Popis resetovacích signálů O O
Popis synchronizačních signálů O O
Popis rozhraní O R
Časové diagramy R O
Popis řídicích registrů O O
Strukturní (funkční) schéma R R
Průvodce programováním O O
FPGA model nebo rodina,
výrobce společnosti
R O
Prezentace digitálního modulu
pro návrh logiky na FPGA
RTL model O Ne
Logický model Ne O
Omezení návrhu O O

Zde je seznam sekcí (tabulka), které by měly být zahrnuty v průvodní dokumentaci k projektu digitálního modulu pro FPGA. U každého oddílu jsou uvedeny známky potřeby zahrnout oddíl do sady dokumentů:

  • „O“ je povinná sekce;
  • „P“ je část doporučená pro doručení.

Doporučené formáty souborů pro odeslání podpůrné dokumentace jsou MS Word, PDF (nejlepší formát), HTML. Popisné soubory v jazyce popisu hardwaru (VHDL, Verilog) a/nebo vyvinuté v Schematic Editoru jsou poskytovány ve formě požadované CAD softwarem pro vývoj. Výjimkou může být dodatečné poskytnutí v grafickém formátu (JPEG, BMP) souborů digitálních obvodů vyvinutých v Schematic Editoru.

Obecná informace

Tato část popisuje obecné informace o vyvíjeném digitálním modulu ve formě popisu:

  • funkční schéma a jeho dílčí bloky/části;
  • resetovací signály, synchronizace;
  • aplikovaná rozhraní;
  • řídicí registry;
  • časový diagram;
  • programování.

Účel a rozsah

Je určen účel digitálního modulu a oblasti jeho použití.

Specifikace

Je uveden popis jeho hlavních technických charakteristik, jako je výkon, spotřeba energie pro konkrétní čip FPGA, počet obsazených bran a typ použitého čipu FPGA. Kromě toho je uveden CAD software výrobce FPGA použitý při vývoji digitálního modulu a software používaný pro modelování a ověřování. U všech používaných programů je uvedena verze a nainstalované aktualizace. Grafické znázornění digitálního modulu ve formě „černé skříňky“ je opatřeno označením externích vstupů/výstupů a je uveden stručný popis jejich účelu.

Popis resetovacích signálů

Podrobnosti o resetovacích signálech jsou uvedeny níže:

  • Seznam externích a interních resetovacích signálů.
  • Časové parametry a časové diagramy resetovacích signálů.
  • Případné obvody pro generování interních resetovacích signálů jsou součástí digitálního modulu.
  • Vztahy s jinými signály (zejména synchronizačními signály).

Popis synchronizačních signálů

Zde jsou podrobnosti o synchronizačních signálech:

  • popis externích synchronizačních signálů;
  • parametry časování synchronizačních signálů;
  • popis vnitřních synchronizačních signálů a schéma jejich generování;
  • časové vztahy mezi synchronizačními signály z různých zdrojů;

Popis rozhraní

Jsou uvedeny vlastnosti použití všech rozhraní obsažených ve vyvíjeném digitálním modulu, nejlépe sjednocených pro organizaci interakce s ostatními uzly systému na čipu. Dodatečně je uveden internetový odkaz na kompletní popis standardního rozhraní, případně popis samotného rozhraní. V současné době jsou rozhraní AMBA, PLB a Wishbone akceptována jako jednotná rozhraní pro digitální moduly.

Časové diagramy

Jsou poskytovány potřebné informace pro organizaci výměny dat prostřednictvím rozhraní a dalších vstupů/výstupů digitálního modulu: grafické znázornění časových diagramů, popis protokolů přenosu dat, požadavky na externí signály dodávané do digitálního modulu (doba trvání, frekvence atd.) a další informace.

Popis řídicích registrů

Je uveden popis všech řídicích registrů digitálního modulu. Typický popis řídicího registru obsahuje jméno registru, adresu registru v interním adresovém prostoru, počáteční hodnotu po odstranění signálu reset, typ přístupu (čtení/zápis) a popis vnitřních polí.

Strukturní (funkční) schéma

Je poskytnut obrázek vnitřní struktury spojení hlavních vnitřních uzlů/bloků digitálního modulu a jejich stručný textový popis. Dále je uveden popis hlavních vnitřních bloků digitálního modulu. Účelem tohoto dokumentu je poskytnout spotřebiteli informace nezbytné k pochopení principů činnosti digitálního modulu.

Počet popsaných bloků a rozsah popisu určuje vývojář digitálního modulu. Je výhodné, aby minimální počet popsaných modulů odpovídal počtu prvků strukturálního (funkčního) schématu digitálního modulu.

Typický popis vnitřní jednotky obsahuje:

  • účel bloku;
  • strukturální (funkční) schéma bloku (je-li to nutné);
  • provozní režimy a algoritmy;
  • diagramy pracovní doby;
  • organizace blokového managementu;
  • organizace komunikace s ostatními bloky;
  • jakékoli další informace.

Průvodce programováním

Poskytuje všechny potřebné informace o procesu programování pomocí CAD softwaru výrobce digitálního modulu v FPGA, potřebné nástroje pro vývoj a ladění softwaru a softwarové knihovny.

FPGA model nebo rodina, výrobce

U Firmware digitálního modulu je uveden výrobce FPGA, model nebo rodina FPGA a jeho rychlostní charakteristiky. U digitálního modulu Software jsou uvedeny informace o množství zabraných zdrojů a požadavcích na použité FPGA.

Reprezentace digitálního modulu pro návrh logiky

Článek pojednával o potížích při používání „cizího“ projektu ve VHDL – nedostatku vhodných pokynů pro pojmenování a pravidel pro psaní programů. Také byly uvedeny obecné pokyny pro jména, dobré způsoby psaní programů a pokyny pro syntézu. Pokud v budoucnu plánujete pokračovat ve vývoji nebo upgradu na vlastní pěst, měli byste tyto otázky co nejpodrobněji prodiskutovat s vývojářem, než začne vyvíjet RTL model digitálního modulu na FPGA. To platí zejména pro typ softwarového digitálního modulu na FPGA. Tato část článku popisuje obecné požadavky na celý projekt vyvíjeného digitálního modulu na FPGA. Zde jsou otázky, kterým byste měli věnovat pozornost při sestavování technických specifikací pro vývoj digitálního modulu na FPGA, a to se týká zejména přenosu pracovních výsledků.

RTL model

Digitální modul, popsaný v syntetizované podmnožině jazyka Verilog nebo VHDL a/nebo vyvinutý v Schematic Editoru, je určen pro použití ve fázi syntézy logiky FPGA. Software je dodáván ve formě projektu sestaveného digitálního modulu v CAD softwaru výrobce FPGA. Pro digitální modul Firmware je model RTL poskytován na základě samostatné smlouvy.

Kromě souborů modelu RTL se přenášejí následující:

  • Návod k použití modelu.
  • Popis paměťových bloků zahrnutých v modelu, včetně typu paměti, velikosti, počtu paměťových bloků, hierarchického názvu paměťového bloku.
  • Popis procesu vytváření hotových jader pomocí programů k jejich vytvoření (například CoreGenerator pro Xilinx ISE). Při absenci popisů mohou existovat omezení pro přepracování a aplikaci v důsledku technologie a závislosti výrobce.
  • V případě použití mikroprocesoru od výrobce (například od Altera - procesor Nios; od Xilinx - Microblaze, mikroprocesory PowerPC) je nutný popis procesu konfigurace jádra procesoru a jeho periferií.
  • Sada testů (soubory Test Bench) pro ověření a simulaci digitálního modulu, napsaných ve Verilog a/nebo VHDL a/nebo System Verilog.
  • Jakékoli další doplňující informace.

Logický model

Model je seznam obvodů popsaných pomocí jazyků Verilog nebo VHDL na základě knihovny výrobce FPGA a je dodáván pro Firmware digitálního modulu.

Kromě souborů logického modelu se přenášejí následující:

  • Návod k použití tohoto modelu.
  • Sada testů (soubory Test Bench) pro ověření a simulaci digitálního modulu, napsaných ve Verilog a/nebo VHDL a/nebo System Verilog.
  • Průvodce prací se sadou testů pro modelování a ověřování digitálního modulu.
  • Jakékoli další doplňující informace.

Omezení návrhu

Návrhová omezení jsou poskytnuta jako soubor popisující sadu omezení uložených digitálnímu modulu, když je zahrnut do logického modelu systému na čipu. Tato sada obsahuje omezení hodin, omezení časování, omezení interakce digitálního modulu s jinými moduly a provozní podmínky digitálního modulu. Preferován je formát Synopsis Design Constraints (SDC) nebo CAD formát výrobce FPGA.

Ukázkový seznam omezení pro synchronizační signály:

  • časový diagram (Clock waveform);
  • nestabilita hodinového kmitočtu (jitter);
  • změna fáze hodinového kmitočtu;
  • trvání spínacích časů (přechodové časy);
  • časové diagramy odvozených hodinových průběhů;
  • jakékoli další doplňující informace.

Pro softwarové a firmwarové digitální moduly je vyžadována sada omezení pro synchronizační signály.

Ukázkový seznam časových omezení:

  • Časy příjezdu na vstupy;
  • čas výskytu signálů na výstupech (Požadované časy na výstupech);
  • Vícekolové stezky;
  • falešné cesty;
  • trvání přepínacích časů datových signálů (doby přechodu datových signálů);
  • jakékoli další doplňující informace.

Závěr

Následující soubor průvodní dokumentace pro vyvinuté digitální moduly pro FPGA je poskytován na základě dohody mezi spotřebitelem a vývojářem. Vývojář nejčastěji poskytuje digitální modul popsaný ve VHDL, Verilog, System Verilog a/nebo vyvinutý v editoru obvodů. Pokud jde o další dokumentaci, odpověď vývojáře je nejčastěji následující: „Digitální modul funguje, tak si ho vezměte a používejte. Na popisu obvodu v hardwarovém jazyce není nic složitého: můžete na to přijít sami."

Podle názoru autora můžete přijít na cokoli, vše závisí na touze a stráveném čase a čas strávený pochopením projektu „někoho jiného“ pro již vyvinutý digitální modul je přímo úměrný zkušenostem s popisem zařízení ve VHDL, Verilog a znalost digitálních a mikroprocesorových obvodů. Tomu se lze vyhnout, pokud se nejprve dohodnete s vývojářem na složení průvodní dokumentace, pak se používání digitálního modulu ve vašem projektu zjednoduší a jeho implementace proběhne rychleji.

Abychom to shrnuli, autor by rád poznamenal, že při formulaci úkolu vyvinout digitální zařízení na FPGA by se mělo dodržovat doporučení uvedená v článku, pak nevzniknou problémy při opětovném použití nebo upgradu dříve vyvinutého digitálního zařízení.

Literatura

  1. Denisov A. Několik tipů pro navrhování digitálních zařízení na VHDL pro FPGA // Komponenty a technologie. 2009. č. 12.
  2. GOST 2.102-68 ESKD. Druhy a úplnost projektové dokumentace.
  3. GOST 2.114-95 ESKD. Technické podmínky.
  4. GOST 15.101-98. Systém pro vývoj a zavádění produktů do výroby. Postup při provádění vědeckovýzkumné práce.
  5. GOST R 15.201-20-00. Systém pro vývoj a zavádění produktů do výroby. Výrobky pro průmyslové a technické účely. Postup pro vývoj a uvedení výrobků do výroby.

POUŽÍVÁNÍ FPGA V MODERNÍCH ZAŘÍZENÍCH

Tupikov Pavel Andrejevič

Student 5. ročníku katedry ART, Omská státní technická univerzita, Ruská federace, Omsk

V dnešní době se v různých moderních zařízeních stále častěji používají programovatelné logické integrované obvody (FPGA), což je způsobeno skutečností, že FPGA mají oproti běžným digitálním čipům značné výhody. Mezi tyto výhody patří:

· Dočasné vlastnosti produktu jsou zlepšeny.

· Cena produktu klesá.

· Rozměry produktu jsou zmenšeny.

· Zvyšuje se spolehlivost produktu (snižuje se počet diskrétních čipů)

Zvyšuje flexibilitu produktu (FPGA lze vždy přeprogramovat)

Architektura FPGA má složitou strukturu (obr. 1)

Obrázek 1. Vnitřní struktura FPGA

Jak je patrné z obrázku 1, hlavní část FPGA se skládá z programovatelných logických bloků a programovatelných vnitřních zapojení.

Proces programování (firmwaru) FPGA spočívá ve vytvoření nezbytných spojení mezi vstupy a výstupy zařízení.

Dnes existují dva světoví lídři ve výrobě FPGA. Jde o americké společnosti Xilinx a Altera.

Každá společnost nabízí svůj vlastní CAD software pro práci s FPGA. Xilinx nabízí sadu Xilinx Software Development Kit (SDK). Altera nabízí Max+Plus II a Quartus II a také modelovací systém ModelSim.

K vytváření programů firmwaru se obvykle používají jazyky pro popis provozu hardwaru, nejběžnější jazyky jsou dnes:

Verilog HDL.

Jazyk VHDL je nejobtížnější se naučit, ale zároveň má největší schopnosti na funkční a behaviorální úrovni abstrakce, ale má méně schopností na strukturální úrovni abstrakce ve srovnání s Verilog HDL; knihovna VITAL byla vyvinuta pro rozšířit možnosti jazyka VHDL (obr. 2).


Obrázek 2. Úrovně abstrakce Verilog A VHDL

Příkladem práce jazyka Verilog HDL je program implementovaný na FPGA CYCLONE III EP3C5E1444C8N stojanu Mini-DiLab, jehož celkový pohled je na Obr. 3.


Obrázek 3. Celkový pohled na desku Mini - DiLab

Tento program implementuje sekvenční spínání led0-led7 LED s možností zvýšení pohybu „světla“ pomocí tlačítek pba a pbb, stejně jako ovládání rychlosti spínání pomocí přepínačů sw0, sw1.

//Text programu

modul projekt( výstup vedený, vstup clk_25 MHz, vstup pba vstup pbb

vstup sw);

// Účel interních propojení projektu

drát s1;

drát s2;

drát s3;

// Volání dalších souborů (podprogramů) připojených k projektu

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Counter counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

koncový modul// konec programu

Podprogram tr

modul tr(out, set, res); // Vytvořte program

// Přiřazení vstupů/výstupů

výstupreg ven;

vstup soubor;

vstup res;

// Inicializace

počáteční

začít

Ven<= 1"d0;

// Hlavní kód programu

vždy @(negedge nastavit nebo negedge res)

začít

-li(~(set))

Ven<= 1"d1;

jiný

Ven<= 1"d0;

koncový modul // Konec programu

Čítač podprogramů

modul counter(con, q, clk,up); // Spuštění programu

výstupreg ošidit;

výstup q = con;

vstup nahoru, clk;

// Hlavní kód programu

vždy @(posedge clk)

začít

-li(clk)

-li(nahoru)

Ošidit<= con - 1"d1;

jiný

Ošidit<= con + 1"d1;

koncový modul//Konec programu

Podprogram mx (multiplexer)

modul mx ( výstupní reg A, vstup v, vstup zatížení);

// Hlavní kód programu

vždy @*

začít

pouzdro(zatížení)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

koncový případ

koncový modul // Konec programu

Podprogram dc3_8 (multiplexer)

modul dc3_8(ven, dovnitř); // Spuštění programu

// Přiřazení vstupů/výstupů

výstupní reg ven;

vstupní vodič v;

// Hlavní kód programu

vždy @*

začít

pouzdro(v)

3"d0: out = 8"b11111110;

3"d1: out = 8"b11111101;

3"d2: out = 8"b11111011;

3"d3: out = 8"b11110111;

3"d4: out = 8"b11101111;

3"d5: out = 8"b11011111;

3"d6: out = 8"b10111111;

3"d7: out = 8"b01111111;

koncový případ

koncový modul // Konec programu

Program byl implementován v CAD softwaru Quartus II.

Po zkompilování programu kompilátor negeneroval v programu chyby ani komentáře související s analýzou a syntaxí programu (obr. 4).


Obrázek 4. Okno zprávy projektu

Komentáře kompilátoru naznačují, že pro Quartus II neexistuje žádná licence (pro školení byla použita bezplatná verze programu) a chybí soubory potřebné pro modelování projektu.

RTL Struktura tohoto projektu je znázorněna na Obr. 5.


Obrázek 5. Realizace projektu ( RTL struktura)

Jak je znázorněno na Obr. 6 v tomto programu je využita pouze malá část možností tohoto FPGA.

Obrázek 6. Část FPGA zapojená do projektu

Závěry: Programovatelné logické integrované obvody lze použít v mnoha zařízeních. Abychom se s nimi naučili pracovat, znalost jazyků pro popis hardwaru (Verilog HDL a VHDL) by měla být zavedena do vzdělávacího programu specializací souvisejících s návrhem a konstrukcí elektronických zařízení.

Bibliografie:

1. Grushevitsky R.I. Návrh systémů na programových logických čipech / R.I. Grushevitsky, A.X. Mursaev, E.P. Ponurý. Petrohrad: BHV Petersburg, 2002. - 608 s.

2. Kolomov D.A. Počítačem podporované konstrukční systémy Altra MAX+plus II a Quartus II. Stručný popis a návod / D.A. Kolomov, R.A. Myalk, A.A. Zobenko, A.S. Filippov. M.: IP RadioSoft, 2002. - 126 s.

3. Maxfield K. Návrh na FPGA. Kurz pro mladého bojovníka./ K. Maxfield. M.: Nakladatelství "Dodeka-XXI", 2007. - 408 s. (překlad z angličtiny).