Aktuální vydání

celé číslo

08

2019

MSV 2019 v Brně

celé číslo

Průvodce návrhem, vývojem a programováním zařízení s FPGA

Tento průvodce návrhem, vývojem a programováním zařízení s obvody FPGA (programovatelná hradlová pole, Field Programmable Gate Array) obsahuje přehled programovacích postupů a používaných architektur pro rychlý vývoj hardwaru na bázi FPGA s inteligentními systémy pro sběr dat (DAQ) řady R a vestavnými řídicími systémy CompactRIO od National Instruments.  

Článek pomůže čtenářům porozumět tomu, jak jim grafické vývojové nástroje v LabVIEW umožní rychlý vývoj rekonfigurovatelných hardwarových logických obvodů a souvisejícího softwaru a jak úspěšně navrhnout architekturu komplexních zařízení zahrnujících obvody FPGA pro zpracování dat v reálném čase a síťovou komunikaci s běžným osobním počítačem. Dokument ilustruje doporučenou softwarovou architekturu a představí čtenářům některé ze stovek funkcí a nástrojů v LabVIEW, které pomáhají při vývoji vestavných zařízení. Tyto integrované hardwarové a softwarové nástroje usnadní vývojářům rychlý a spolehlivý návrh, tvorbu prototypu a použití pokročilých rekonfigurovatelných zařízení s FPGA.  

Úvod do vývoje

LabVIEW lze používat pro rychlý vývoj spolehlivých vestavných systémů s uživatelsky programovatelnými obvody FPGA, s možností zpracovávat data v reálném čase a se síťovým rozhraním pro systémy HMI (Human Machine Interface). Vývoj aplikačního softwarového vybavení pro vestavný systém lze rozdělit do tří fází:

  • vývoj aplikačního softwaru v LabVIEW FPGA pro funkce I/O, časování, synchronizaci, vysokorychlostní řízení a zpracování signálů,
  • vývoj aplikačního softwaru v LabVIEW Real-Time pro deterministické řízení, výpočty s plovoucí řádovou čárkou a komunikaci s hostitelským počítačem po síti,
  • vývoj aplikačního softwaru v LabVIEW pro Windows, který obsahuje grafická uživatelská rozhraní, řízení na nejvyšší úrovni a „logování“ (záznam) dat.

Na obr. 1 je ukázáno rozdělení těchto tří kroků v rámci vestavného systému NI CompactRIO a v rámci inteligentního systému DAQ řady R. Vestavný systém CompactRIO se skládá z I/O modulů řady C, rekonfigurovatelného šasi CompactRIO s obvody FPGA a z řídicího modulu CompactRIO Real-Time, který umožňuje provádět výpočty s plovoucí řádovou čárkou. Šasi komunikuje s RT modulem prostřednictvím interní sběrnice PCI. S rozsahem provozních teplot –40 až +70 °C a schopností vydržet náraz o síle až 50 g představuje CompactRIO mimořádně odolné zařízení vhodné pro použití v provozních podmínkách. 

Vývoj aplikačního programu v LabVIEW FPGA

Prvním krokem je návrh aplikačního programu v LabVIEW FPGA. Zahrnuje práci se vstupně-výstupními moduly a analýzu naměřených signálů. S obvodem FPGA je snadné realizovat pokročilé řídicí algoritmy, které vyžadují vysokorychlostní regulaci, přesné časování, spouštění a synchronizaci úloh. LabVIEW FPGA obsahuje funkční bloky (v LabVIEW nazývané virtuální instrumenty či VI) pro měření a generování analogových i digitálních I/O signálů. Funkce z palety FPGA Device I/O (obr. 2) lze použít pro jakoukoliv úlohu, která vyžaduje práci se signály: může jít o jednoduché čtení analogového vstupu z termočlánku stejně jako o generování signálů s pulzně šířkovou modulací (PWM) pro přesné řízení servomotorů. Vstupně-výstupní moduly, které mj. lze měnit za provozu řídicího systému, měří signály, přizpůsobují je a převádějí na digitální hodnoty, které následně předávají do FPGA.

S LabVIEW FPGA lze hardware přizpůsobit pro vysokorychlostní a přesná měření. Časování v aplikačním programu je možné přesně řídit pomocí časovače Loop Timer. Časovač Loop Timer umožňuje definovat časování smyčky buď v násobcích hardwarového hodinového signálu s rychlostmi v řádu nanosekund, nebo v mikrosekundách či milisekundách. Například s hardwarovým hodinovým signálem o frekvenci 40 MHz lze s časovačem Loop Timer dosáhnout periody smyčky v násobcích 25 ns. Na obr. 3 je jednoduchá funkce v LabVIEW FPGA pro čtení analogového vstupního kanálu a aktualizaci hodnoty digitálního výstupu každé 2 ms.

LabVIEW FPGA Module obsahuje velmi výkonné a snadno použitelné funkce pro výpočty s pevnou řádovou čárkou, díky kterým lze I/O signály zpracovávat přímo na FPGA. Nabídka FPGA Math & Analysis obsahuje široké spektrum funkcí, jako je např. diskrétní PID regulátor pro úlohy s vysokorychlostní regulací, VI Sine Generator pro generování jednotlivých bodů harmonického průběhu prostřednictvím přímé digitální syntézy nebo VI Discrete Normalized Integrator pro integraci diskrétního vstupního signálu pomocí dopředné Eulerovy integrace. Nabídka obsahuje také pomocné funkce, jako např. VI Linear Interpolation, která počítá lineární interpolaci pro odhad funkce mezi dvěma známými body. Na obr. 4 jsou ukázány některé z pokročilých IP funkčních bloků, jež obsahuje softwarový modul LabVIEW FPGA. Funkce z kategorie Saturation Arithmetic lze použít k ošetření přetečení hodnoty integer při matematických operacích na FPGA. Tyto funkce je možné nastavit tak, aby měly v okamžiku přetečení maximální či minimální hodnotu dovolenou daným datovým typem, což usnadňuje vývoj aplikačního softwaru pro zpracování digitálních signálů (DSP) v obvodu FPGA. Na obr. 5 je jako příklad funkce Saturation Add. Softwarový modul LabVIEW FPGA obsahuje také funkci Interrupt, znázorněnou na obr. 6, pro usnadnění synchronizace časování a přenosu dat do hostitelských aplikačních programů v LabVIEW Real-Time.

Pokročilé funkce obsažené v modulu LabVIEW FPGA umožňují práci s jazykem HDL (Hardware Description Language) a čtení a zápis do paměti FIFO na FPGA (obr. 7). HDL je nízkoúrovňový textově založený programovací jazyk, který se používá pro návrh hardwaru FPGA. Obvodům FPGA je vlastní paralelní architektura, která dovoluje vykonávat několik smyček současně, aniž by bylo ovlivněno jejich časování. Ve spojení s programováním v LabVIEW, které je založeno na datových tocích, a s moduly řady C CompactRIO se simultánním vzorkováním se tak tvorba řídicích systémů s deterministickými paralelními regulačními smyčkami stává přímočarým procesem. Například při použití LabVIEW FPGA a systému CompactRIO lze paralelně provozovat několik regulačních smyček PID, aniž by se zpomalil běh aplikačního programu. 

Vývoj aplikačního softwaru v LabVIEW Real-Time

LabVIEW Real-Time je výkonný nástroj používaný pro deterministické výpočty s plovoucí řádovou čárkou při zpracování dat změřených v FPGA. Paleta funkcí FPGA Interface (obr. 8) obsahuje funkce pro snadnou komunikaci v reálném čase mezi FPGA a hostitelským aplikačním programem reálného času či aplikačním programem pod Windows. Registry FPGA se snadno vytvářejí prostřednictvím vložení ovládacího prvku či indikátoru na čelní panel aplikačního programu FPGA. Následně do nich lze zapisovat či je číst vysokou rychlostí za běhu programu.

Při vývoji hostitelského aplikačního programu se nejprve použije funkce Open FPGA Reference, která otevře a spustí určený aplikační program FPGA, popř. naváže spojení s aplikačním programem FPGA, který již běží. Prvek FPGA Read/Write Control se používá pro čtení dat z indikátorů FPGA či pro zápis hodnot do ovládacích prvků. Na obr. 9 je příklad jednoduchého hostitelského programu, který komunikuje s programem FPGA z obr. 3.

Postup popisující všechny kroky při tvorbě aplikačního programu LabVIEW FPGA a VI s hostitelským programem reálného času naleznou zájemci v průvodci CompactRIO Tutorial.

S LabVIEW Real-Time lze deterministicky používat více než sto funkcí pro řízení a zpracování signálů obsažených v LabVIEW, jako jsou např. PID regulace, fuzzy logika, společná analýza signálu v časové a kmitoč­tové oblasti, analýza zvuku a vibrací atd.

Na obr. 10 je ukázána doporučená architektura pro pokročilý aplikační program reál­ného času. Časově kritická regulační smyčka obsahuje funkce pro komunikaci s FPGA a provádí veškeré nezbytné deterministické kroky. Smyčka s běžnou prioritou obsahuje komunikační funkce a používá se ke komunikaci s LabVIEW pro Windows a ukládání všech hodnot.

Metoda sdílených proměnných v LabVIEW velmi usnadňuje deterministické sdílení dat mezi smyčkami a automatické publikování hodnot prostřednictvím sítě Ethernet pro tvorbu distribuovaných systémů CompactRIO s několika uzly (obr. 11). Modul Datalogging and Supervisory Control (DSC) pro LabVIEW tyto možnosti ještě rozšiřuje, neboť umožňuje automaticky zaznamenávat hodnoty sdílených proměnných do databáze pro archivaci.

Přímý přístup do paměti (DMA – Direct Memory Access) pro LabVIEW FPGA je způsob vysokorychlostního přenosu dat, který usnadňuje programování a zvyšuje výpočetní výkon programu. Při použití DMA lze snadno přenášet hodnoty signálu vzorkovaného vysokou rychlostí z paměti FPGA do paměti hostitelského počítače s operačním systémem reálného času, a to s minimálními požadavky na využití CPU. Používání vyrovnávací paměti FIFO (First In – First Out) v režimu DMA je velmi efektivní, jelikož FPGA automaticky přenáší data do paměti hostitelského počítače prostřednictvím sběrnice PCI. DMA je také užitečná pro odlaďování programů pro FPGA, jelikož umožňuje každý registr v programu FPGA vzorkovat rychlostí až 40 MHz, v závislosti na počtu kanálů.

Pro přenos dat z jednoho bodu je vhodná metoda FPGA Read/Write Control, která byla vysvětlena v předchozích odstavcích (obr. 9). 

Vývoj aplikačního softwaru v LabVIEW pro Windows

Posledním krokem je návrh uživatelského rozhraní aplikačního programu. V grafickém prostředí LabVIEW je tvorba uživatelského rozhraní s profesionálním vzhledem snadná, stejně jako jeho připojení k vestavným systémům prostřednictvím komunikační sítě. Uživatelské rozhraní (HMI) v LabVIEW může obsahovat grafy, měřidla, tlačítka, posuvníky a číselné ovládací prvky. Na obr. 13 je HMI pro úlohu řešenou s CompactRIO, která čte hodnotu z inkrementálního snímače na motoru a počítá rychlost a zrychlení motoru.

Spolu programem v LabVIEW pro Windows lze pro ukládání velkého objemu dat použít také NI DIAdem – databázi, která se snadno integruje s LabVIEW a obsahuje funkce pro správu dat, analýzu a tvorbu protokolů.

Je rovněž možné využít modul LabVIEW Datalogging and Supervisory Control (DSC). Modul DSC pro LabVIEW je vhodný pro vývoj distribuovaných systémů určených pro monitoring a řízení či pro automatické ukládání hodnot ze sdílených proměnných do databáze. Pomocí modulu LabVIEW DSC lze prohlížet aktuální i historické záznamy proměnných, nastavovat alarmy a události, nastavovat zabezpečení aplikačních programů, snadno přistupovat na PLC či jiná zařízení prostřednictvím OPC či jiného průmyslového protokolu, vytvářet operátorská rozhraní pro rozlehlé distribuované systémy s mnoha uzly a efektivně ukládat hodnoty proměnných do databáze. Modul DSC obsahuje intuitivní průvodce a dialogová okna, která uživateli pomohou při rychlém vývoji spolehlivých aplikačních programů s velkým počtem kanálů. 

Závěr

CompactRIO je výkonný systém, který lze dokonale přizpůsobit „na míru“ požadavkům dané úlohy. Softwarové prostředí LabVIEW FPGA umožňuje navrhovat prostřednictvím vysokoúrovňového grafického programovacího jazyka hardware pro vysoce náročné úlohy zahrnující vstupy a výstupy, komunikaci a regulaci. Vývojové nástroje LabVIEW uživatelům pomohou rychle zprovoznit navržené zařízení, neboť nabízejí výkonnou sadu nástrojů pro grafické programování se stovkami vestavěných funkcí pro řízení pohybu, PID regulaci, logické funkce a analýzu signálů.

National Instruments (Czech Republic), s. r. o.

Obr. 1. Schéma vestavného systému na bázi CompactRIO

Obr. 2. Paleta funkcí FPGA Device I/O

Obr. 3. Typická úloha v LabVIEW s časovačem pro smyčku I/O řešená pomocí FPGA

Obr. 4. Paleta funkcí z kategorie FPGA Math & Analysis

Obr. 5. Funkce Saturation Add

Obr. 6. Funkce Interrupt v LabVIEW FPGA

Obr. 7. HDL Interface Node v LabVIEW FPGA

Obr. 8. Paleta funkci FPGA Interface

Obr. 9. Jednoduchy hostitelsky program pro komunikaci s FPGA

Obr. 10. Typicka architektura pro pokročile ulohy CompactRIO

Obr. 11. Deterministická komunikace mezi vlákny reálného času je snadná díky sdíleným proměnným

Obr. 12. DMA usnadňuje přenos dat z paměti s rychle vzorkovaným průběhem

Obr. 13. Uživatelske rozhrani v LabVIEW pro Windows