Proč FPGA?

Proč se zabývat FPGA? K čemu jsou domácímu bastliči a jak je může využít?

Na úvod rovnou upozorňuju, že na tomto webu neřeším a nechci řešit FPGA pro profesionální použití. Mojí cílovou skupinou nejsou lidé, co navrhují profesionálně průmyslová zapojení s FPGA. Naopak chci cílit na běžného kutila hobbistu elektromaniaka, co se doma ohání pájkou a staví si elektronická zařízení takříkajíc pro vlastní radost.

K čemu takovému člověku může být FPGA?

Předpokládám, že máte zkušenosti s programovatelnými logickými poli typu PAL, GAL. V těchto obvodech je několik logických buněk (makrocells), propojených pomocí programovatelné matice. V ní určíte, jaké vstupní signály jdou v jaké formě do jaké buňky. Můžete tak vytvořit mnohavstupové kombinační i sekvenční logické obvody a jedním obvodem GAL/PAL nahradit několik SSI a MSI obvodů (74xx). V amatérské praxi se hojně používají například v mikroprocesorových systémech, kde jeden obvod dokáže nahradit kombinační logiku pro výběr pamětí.

O úroveň výš jsou obvody CPLD, které nahrazují více GAL najednou. Nabízejí mnohem víc vývodů než GAL, a ty největší zástupci nabízejí programovatelné zapojení několika set tisíc hradel. Na rozdíl od GALů, které se programují v programátoru, se CPLD většinou programují už „na místě“ pomocí rozhraní JTAG. Typickými zástupci jsou obvody MAX od Altery nebo XC9500 / CoolRunner od Xilinx. Obvody CPLD bývají ještě kompatibilní s 5V logikou (jak které, XC9500 spíš ano, CoolRunner už ne).

FPGA (Field Programmable Gate Array) je z tohoto pohledu „ještě komplexnější CPLD“. Konfigurace nebývá naprogramovaná přímo v obvodu, ale uložená v externí sériové FLASH. FPGA nabízejí i pokročilé funkční bloky, jako jsou hardwarové násobičky, PLL, RAM…

Do jednoho obvodu FPGA tak nenaprogramujete jen kombinační logiku, ale klidně i vlastní mikroprocesor, k němu i malou paměť, k tomu všemu i řadič displeje, interface pro klávesnici, dokážete uložit obsah ROM – a v jednom FPGA tak máte celý počítač! Příkladem budiž Multicomp Granta Searla (použil kit s EP2C5, který lze sehnat za ceny kolem 450 Kč).

Pro amatérské použití se nehodí nejnovější a nejvýkonnější obvody. Jejich schopnosti jsou daleko před potřebami amatérské praxe a jejich cena vysoko nad možnostmi amatérské peněženky. Ale i v té spodní, dostupné části spektra nalezneme dostatek obvodů pro konstrukci vemi zajímavých zařízení.

Jak začít s FPGA?

Budeme potřebovat několik základních věcí:

  1. FPGA – na pokusy či prototypování nejlépe v podobě nějakého kitu.
  2. Vývojové prostředí
  3. Programátor JTAG (pro Alteru USB Blaster), pokud není součástí kitu
  4. Naučit se jazyk

Téměř ve všech bodech máte na výběr ze dvou hlavních variant. Tedy:

Xilinx, nebo Altera?

Dva největší výrobci FPGA. Jejich řady jsou do určité míry srovnatelné, ale navzájem nekompatibilní. Od Xilinxu pravděpodobně využijete řadu Spartan, konkrétně obvody z řad Spartan 3 a Spartan 6. Od Altery pak řadu Cyclone, konkrétně Cyclone II a Cyclone IV. Platí, že vyšší řada nabízí větší obvody s více logickými celky, do kterých se vejde větší a složitější konstrukce. Volba výrobce ovlivní i další rozhodování: Podle výrobce použijete vývojové prostředí (ISE WebPack nebo Quartus II), a každý výrobce používá jiný JTAG. Jazyky naštěstí můžete použít u obou stejné. Neexistuje obecná rada, jestli Xilinx nebo Altera. Já dlouho upřednostňoval Xilinx, teď mi připadají kity s Alterou dostupnější a propracovanější. Styl práce se zas tak moc neliší. Pokud s FPGA začínáte, zvolte si jednu z těchto možností, později to můžete změnit. A jestli nevíte jakou, vyberte Alteru – důvod je, že na eBay koupíte levné čínské programátory pro Alteru levněji než levné čínské programátory pro Xilinx. Navíc se mi zdá, že Quartus od Altery překládá VHDL rychleji než Xilinx ISE.

VHDL, nebo Verilog?

Další rozhodování se bude týkat použitého jazyka. VHDL i Verilog jsou použitelné jazyky pro všechny FPGA i CPLD, je tedy na vás, co si vyberete. Oba jazyky jsou si do určité míry podobné svými schopnostmi a přístupem. Pro začátek si ale vyberte jeden, a ten se naučte. Pokud nevíte jaký, bude to VHDL. VHDL je populárnější v Evropě, v USA spíš Verilog. VHDL je trošku víc přístupný lidem, kteří mají zkušenost s programováním. Jinak je to oblíbené dilema, o kterém se lze mnoho hodin přít. (Pro klid duše: Ano, lze použít komponentu, napsanou ve Verilogu, ve vlastním projektu v VHDL, a je to snadné, snadné.)

Nic jiného?

Existují i další výrobci FPGA, existují i další jazyky, ale pro amatérskou praxi si vyberete z výše uvedených eventualit. V ČR nejčastěji Xilinx + VHDL, nebo Altera + VHDL.

Začínáme…

S čím tedy začít? Za sebe doporučím:

banner