FPGA v průmyslové praxi

Cílem článku je seznámit čtenáře s příkladem použití programovatelných obvodů FPGA v průmyslovém provedení. Popisované řešení využívá systém CompactRIO a SingleBoardRIO firmy National Instruments s obvodem FPGA pro řízení v reálném čase v prostředí LabView.
 

Úvod

 
Využití obvodů FPGA (z angl. Field Programmable Gate Arrays) se v současné době významně přesouvá z laboratoří či zkušeben do průmyslu. Tento přesun byl umožněn zejména implementací a integrací vývojových systémů přímo do prostředí pro návrh řídicích systémů. Uživatel tak má k dispozici poměrně silné nástroje pro navrhování konkrétní úlohy s využitím obvodu FPGA, aniž by musel podrobně znát jeho strukturu a vlastnosti.
 

Průmyslové systémy CompactRIO a SingleBoardRIO

 
Příkladem jsou dvě řady průmyslových řídicích systémů CompactRIO a SingleBoardRIO (Reconfigurable Input/Output), uvedené na trh firmou National Instruments roku 2004, postupně doplňované a rozšiřované. Tyto systémy představují platformu pro vývoj aplikací pracujících v reálném čase a pro pořizování dat. CompactRIO i SingleBoardRIO pracují s procesorem reálného času PowerPC, konkrétně je použit procesor Freescale řady MPC5200, ve spojení s rekonfigurovatelným obvodem FPGA Xilinx.
 
Na obr. 1 je uveden příklad sestavy systému CompactRIO. Je patrná robustní mechanická konstrukce základní sběrnice umožňující vytvořit konkrétní sestavu vložením dalších modulů vstupů a výstupů podle potřeb (na obr. 1 jde o čtyřpozicovou sběrnici, kde je první pozice obsazena vstupním modulem).
 
Na obr. 2 je ukázán malý jednodeskový systém SingleBoardRIO. Tento systém je určen zejména pro vývoj uživatelských systémů a je také cenově výhodnější. Vychází z architektury CompactRIO. Na jednu desku plošného spoje jsou integrovány všechny tři základní součásti: procesor reálného času, obvod FPGA a vstupy a výstupy, ale není zde kovové pouzdro. Tato varianta je určena zákazníkům požadujícím flexibilitu, snadné použití a rychlé uvedení vyvinutého zařízení na trh. Návrhář tak může použít pro vývoj prototypu jednodeskový systém do chvíle, kdy definitivně navrhne počet vstupů a výstupů a algoritmus. Pro konkrétní zařízení potom použije odladěný kód, v mnoha případech beze změn.
 
Na obr. 3 je znázorněno blokové schéma systému CompactRIO. Je odtud patrné, že řízení sběrnice pro komunikaci mezi základní (procesorovou) řídicí jednotkou a moduly vstupů a výstupů (I/O) zprostředkovává programovatelné pole FPGA.
 
Na obr. 4 je pohled na základní desku plošného spoje čtyřpozicové sběrnice cRIO-9101. Na desce se nachází mj. obvod FPGA (pro typ cRIO-9101 jde o obvod Xilinx Virtex-II typu XC2V1000-FG456).
 
Řídicí jednotky jsou osazeny procesorem Freescale řady MPC5200 [11] a pracují s operačním systémem reálného času VxWorks (Wind River [9]).
 
Sběrnice systému CompactRIO je řízena programovatelným obvodem FPGA Xilinx řady Spartan-3, resp. Virtex-II nebo Virtex-5, který umožňuje řídit časově náročné děje a současně je programově obsloužit v grafickém programovacím prostředí LabView. To je však třeba doplnit o softwarové moduly LabView FPGA a LabView Real-Time.
 
Při sestavování vhodné konfigurace lze volit z několika variant řídicích jednotek CompactRIO, lišících se kmitočtem použitého procesoru (195 až 533 MHz), velikostí paměti RAM (32 až 128 MB), velikostí paměti CompactFlash (64 až 2 GB) a kombinací použitých možných komunikačních rozhraní (Ethernet, USB, RS-232). Vlastní šasi lze volit podle velikosti úlohy buď čtyřpozicové, nebo osmipozicové. Podrobnější přehled alternativ je možné nalézt na stránkách [8].
 
Ve starších systémech CompactRIO (např. NI-9101) je použit obvod FPGA firmy Xilinx typu Virtex-II (konkrétně XC2V1000) s 1 milionem hradel. Další informace lze získat na stránkách výrobce [10].
 
V novější řadě systémů CompactRIO jsou použity obvody FPGA řady Virtex-5, konkrétně LX-30, LX-50 nebo LX-85. Systémy SingleBoardRIO jsou osazeny obvody FPGA řady Spartan-3. Rovněž jejich vlastnosti lze získat na stránkách [10].
 
Na obr. 5 je znázorněna architektura programových prostředků CompactRIO. Nadřazený počítač (Host PC) komunikuje síťovými prostředky s částí programu řešící úlohu běžné (tedy nízké) priority. Úlohou FPGA je vykonávat zejména časově kritické smyčky, kdy se výhodně uplatňuje technické řešení (hardware) zadané úlohy namísto programového.
 

Konfigurace CompactRIO a SingleBoardRIO

 
Práce se systémem CompactRIO (a obdobně se systémem SingleBoardRIO) je poměrně intuitivní a vychází z koncepce jeho struktury. Stručně zde bude popsána práce s projektem v prostředí LabView využívajícím FPGA.
 
Projekt se otevře z obrazovky Getting Started postupem File » New Project. V nové obrazovce Project Explorer se zvolí úloha postupem Project » New » Targets and Devices. Je-li CompactRIO připojen, lze spustit automatické načtení konfigurace postupem podle obr. 6.
 
Po chvíli se v obrazovce Project Explorer zobrazí zjištěná konfigurace připojeného zařízení. Je odtud patrná IP adresa jednotky RIO (zobrazený údaj 172.20.39.5) a typy jednotlivých modulů zasunutých do konkrétních pozic (slotů) sběrnice (šasi).
 
Kdyby zařízení nebylo připojeno (např. vytváří-li uživatel nový projekt bez připojení skutečného zařízení), zaškrtne se v obrazovce Add target and Devices volba New target or device a následně se cílová konfigurace v dialogu ručně nastaví.
 

Vytvoření úlohy pro FPGA

 
Pro vytvoření úlohy pro FPGA je třeba v obrazovce Project Explorer kliknout pravým tlačítkem myši na položku FPGA Target a v následně zobrazeném (pop-up) menu zvolit New » VI (je-li třeba vytvořit nový VI – virtuální instrument) nebo Add » File (je-li třeba pracovat s již dříve vytvořeným VI). Dále se pracuje běžným způsobem, programové prostředí LabView nabízí palety funkcí rozšířené o funkce pro práci s FPGA. Nesmí se zapomenout vytvořený VI uložit (např. pod jménem FPGA1.vi).
 
Na obr. 7 je blokový diagram jednoduchého VI s těmito funkcemi: po zavolání se přečte stav digitálních vstupů DI0 a DI1 modulu 1 a zapíše se na digitální výstupy DO0 a DO1 modulu 4. Dále se provede funkce porovnání (komparace) uvedených dvou digitálních signálů; při jejich nerovnosti se rozsvítí indikátor.
 
Po uložení vytvořeného VI pro FPGA je třeba vrátit se na obrazovku Project Explorer a zde obdobným postupem jako při vytváření VI pro FPGA připravit VI pro obsluhu celého zařízení (tzv. Host VI). Klikne se pravým tlačítkem myši na položku RIO a v zobrazeném (pop-up) menu se zvolí New » VI (je-li třeba vytvořit nový VI) nebo Add » File (je-li třeba pracovat s již dříve vytvořeným VI). Nyní se běžným způsobem pracuje s VI v programovém prostředí LabView. Pro spolupráci mezi tímto nadřízeným VI a FPGA se použije funkce z palety FPGA Interface: pro otevření Open FPGA VI Reference, pro zavření Close FPGA VI Reference, pro čtení nebo zápis dat Read/Write Control, popř. další. Opět je třeba vytvořený VI uložit (např. pod jménem RIO1.vi).
 
Na obr. 8 je znázorněn výřez z blokového diagramu RIO1.vi, který otevře spolupráci s programovou částí umístěnou na FPGA, přečte získaná data a ta potom zobrazí. V popsaném případě jde o jednoduché přenesení hodnoty výsledku komparace x y). Na obr. 9 je pohled na obrazovku Project Explorer s vloženými VI: FPGA1.vi (zvýrazněný), resp. RIO1.vi (třetí položka zdola). Nakonec se projekt uloží příkazem File » Save.
 
Před spuštěním hlavní aplikace (Host VI, v popisovaném případě to je RIO1.vi) je nutné ještě zajistit překlad kódu do obvodu FPGA. Nástroje FPGA v prostředí LabView obsahují rovněž překladač do jazyka VHDL, vytvořený ve spolupráci s firmou Xilinx (jejíž obvody jsou v zařízení CompactRIO použity).
 
Překlad lze spustit několik způsoby: lze např. vyvolat menu kliknutím pravým tlačítkem na položce FPGA1.vi (zvýrazněná položka v obrazovce Project Explorer na obr. 9) a v něm zvolit Compile. Nutno připomenout, že překlad FPGA kódu může podle složitosti trvat od několika minut až po několik hodin.
 

Závěr

 
Článek přináší čtenáři informace pro stručné seznámení s vlastnostmi a možností využití významného a široce použitelného nástroje z knihovny aplikací LabView, kterým bezesporu využití FPGA je. Autor se rovněž snažil uvést na jednom místě i některé zdroje dalších souvisejících informací k pochopení celé problematiky.
 
Literatura:
[1] KMIT, P.: PAC – další generace řídicích automatů. Automatizace, 2005, 48, č. 3, s. 188.
[2] KMIT, P.: PAC – nástup generace řídicích automatů. Automa, 2005, č. 3. Dostupné na <http://automa.cz/index.php?id_document=30378>, cit. 16. 9. 2010.
[3] MEŠKO, B. – OREŠKOVIĆ, O. – HUSNJAK, O.: NI LabVIEW a CompactRIO řídí chod elektráren. Automatizace, 2007, 50, č. 11, s. 710–711.
[4] VALA, R.: RIO – revoluce v měření, řízení a automatizaci. Automa, 2006, č. 2. Dostupné na <http://automa.cz/index.php?id_document=30937>, cit. 16. 9. 2010.
[5] VLACH, J.: Začínáme s LabVIEW. Sdělovací technika, 2008, č. 4, s. 20–21.
[6] VLACH, J. a kol.: Začínáme s LabVIEW. BEN Praha, 2008.
[7] VLACH, J.: Stavebnice FPGA Xilinx/Digilent Spartan-3E Starter Kit a LabVIEW. Sdělovací technika, 2010, č. 4, s. 27–29.
 
Webové odkazy:
 
Ing. Jaroslav Vlach
 
 
Obr. 1. CompactRIO NI-9101 s řídicí jednotkou NI-9002 a vstupním modulem NI-9425
Obr. 2. SingleBoardRIO NI-9602
Obr. 3. Zjednodušené blokové schéma systému CompactRIO
Obr. 4. Pohled na základní desku plošného spoje sběrnice cRIO-9101
Obr. 5. Architektura programových prostředků CompactRIO
Obr. 6. Postup otevření nového projektu
Obr. 7. Příklad jednoduchého VI pro FPGA (FPGA1.vi)
Obr. 8. Výřez z blokového diagramu jednoduchého VI pro spolupráci s FPGA (RIO1.vi)
Obr. 9. Výsledný obsah obrazovky Project Explorer