Aktuální vydání

celé číslo

12

2021

Automatizace v chemickém a petrochemickém průmyslu

Průtokoměry a regulační ventily

celé číslo

Prostředky pro navrhování logických systémů pro obvody FPGA

číslo 7/2006

Prostředky pro navrhování logických systémů pro obvody FPGA

Logický systém pro programovatelné hradlové pole (Field Programmable Gate Array – FPGA) lze obecně navrhnout dvěma způsoby: popisem v jazyku typu HDL (Hardware Description Language) nebo zakreslením obvodového schématu logického systému. Nejčastějším způsobem v současné době je použití některého jazyka typu HDL. Na tomto poli existují dva silné standardy nabízející návrhářům téměř shodné možnosti, a to u nás velmi rozšířený jazyk VHDL a jazyk Verilog, oblíbený zejména na americkém kontinentě. Rozšíření obou jazyků je srovnatelné a jednotlivá vývojová prostředí také oba jazyky zpravidla podporují. Pro návrh jednodušších hradlových polí lze použít i jednodušší jazyky typu HDL, jako jsou ABEL, PALASM a některé další.

Obr. 1.

Jazyk VHDL

Jazyk VHDL (Very High Speed Integrated Circuit Hardware Description Language) byl standardizován IEEE v roce 1987 (standard 87) s následnou aktualizací v roce 1993 (standard 93). K jeho základním vlastnostem patří možnost návrhu kombinačních a sekvenčních logických obvodů. Tyto dvě kategorie jsou řešeny rozdílnými skupinami příkazů. Kombinační logické obvody jsou vytvářeny pomocí tzv. souběžných příkazů (concurrent statements), které se provádějí paralelně, nezávisle na pořadí zapsaných řádků. Podobně pro návrh sekvenčních logických obvodů je k dispozici množina sekvenčních příkazů a konstrukce process, do které se tyto příkazy zapisují. Je nutné upozornit, že i přes shodu některých klíčových slov a syntaktickou podobnost např. s jazykem C nejsou jazyky typu HDL jazyky programovací. Například příkaz pro provedení cyklu FOR, který znají programátoři z mnoha programovacích jazyků a který způsobí „postupné“ opakování příkazů v těle programu, vede ve VHDL k několikanásobnému vygenerování anebo propojení logiky uvnitř FPGA (obr. 1).

Obr. 2.

Obr. 1. Ukázka syntézy zápisu ve VHDL do struktury logického obvodu
Obr. 2. Popis struktury čtyřbitového synchronního čítače (vpravo dole) dvěma způsoby nabízenými jazykem VHDL

Jazyk VHDL nabízí pro jednotlivé moduly dva způsoby popisu: behaviorální (model chování) a strukturální (model propojení). Rozdíl je ukázán na obr. 2 na popisu obvodu čítače: při použití modelu propojení je čítač definován jako soubor jednodušších komponent a jejich vzájemných vazeb, zatímco u modelu chování se pouze zadá požadovaná logická funkce a o výslednou strukturu se postará syntezátor. Syntézou se v tomto pojetí myslí převod z popisu vyšší úrovně jazyka typu HDL na úroveň základních logických obvodů, tj. hradel a klopných obvodů.

Návrh v podobě schématu

Je možné polemizovat o tom, zda v současné době, kdy jsou k dispozici výkonné jazyky typu HDL s jasnými výhodami ověřenými praxí, má ještě smysl kreslit schéma zapojení logického obvodu. Jazyk VHDL je standardizován, je tedy snadno přenositelný, téměř nezávislý na cílové platformě a zkušený návrhář snadno provede úpravy i v obyčejném textovém editoru. Přesto si schéma zachovává jednu výhodu, a tou je přehlednost vycházející z grafického vyjádření informace. Vhodným řešením může být kombinovaný návrh (mixed design) s hierarchickou strukturou dokumentů, na jejímž vrcholu je právě schéma s hlavními bloky logického systému popsanými jazykem typu HDL nebo opět schématem.

Obr. 3.

Obr. 3. Prostředí editoru schémat návrhového systému Xilinx ISE

Při kreslení schématu může návrhář využívat knihovnu návrhového systému, ve které najde řádově až stovky součástek, rozdělených do skupin podle funkcí. Z těch si může sestavit své vlastní specializované součástky a vytvářet tak hierarchickou strukturu logického obvodu (obr. 3).

Stavový diagram jako popis logického obvodu

K návrhu konečných automatů přehlednou grafickou formou popisu lze s výhodou použít stavové diagramy. Stavový diagram se v číslicových systémech realizuje vždy jako sekvenční logický obvod, který se může nacházet v jednom z množiny stavů. Tato množina je konečná (odtud název) a přechod mezi jednotlivými stavy závisí na logických hodnotách vstupů v okamžiku aktivní hrany řídicího (taktovacího) signálu (obr. 4).

Stavový diagram lze většinou přeložit do některého z jazyků typu HDL. Tím se spojují přednosti HDL s názorností grafického způsobu návrhu. Použití stavového diagramu je výhodné při návrhu řadičů, tedy řídicích jednotek logických systémů a subsystémů.

Implementace návrhu

Proces implementace navrženého logického obvodu (návrhu) je závislý na technologii a konkrétním typu cílové součástky. Probíhá v principu ve čtyřech fázích:

  • překladu (translation), který připravuje vstupní dokumenty (popis obvodu, netlist) pro implementaci obvodu do cílové součástky (zčásti zahrnuje např. optimalizaci návrhu a elektrickou kontrolu zapojení),

  • mapování (mapping) je proces, při kterém se jednotlivé části logiky přiřazují fyzickým prostředkům použitého FPGA,

  • rozmísťování (placing), kdy se navržené logické bloky rozmísťují do struktury čipu s ohledem na možnost jejich propojení navzájem a s bloky vstupu a výstupu,

  • propojování (routing) rozmístěných bloků, obvykle řešené integrovanými nástroji pro automatické rozmísťování a propojování; tyto procesy jsou při realizaci časově nejnáročnější, zejména u rozsáhlých zapojení; některé návrhové prostředky obsahují také nástroje pro ruční rozmístění a propojení, se kterými lze někdy dosáhnout lepších výsledků (typicky pro časově kritické cesty).

Obr. 4.

Obr. 4. Příklad návrhu řadiče zabezpečovacího systému s použitím stavového diagramu

Po úspěšné implementaci je možné pro daný typ součástky vygenerovat konfigurační soubor. Ten buď může být binární pro přímé nahrání do FPGA s použitím programovacího kabelu, nebo může mít některou z forem vhodných pro programování externí konfigurační paměti (.mcs, .hex apod).

V konečné fázi se daný konfigurační soubor nahraje do cílové součástky. Vývojové prostředky bývají vybaveny odpovídajícím nástrojem také pro tuto proceduru.

Verifikace návrhu

Nedílnou součástí každého projektu číslicového systému je verifikace návrhu. Její časová náročnost může být srovnatelná se samotným návrhem. Logický postup přitom vede od simulace až k diagnostickým metodám na reálném zapojení s FPGA. V návrhových prostředcích těchto obvodů je simulace podporována, a to funkční i tzv. časová (obr. 5).

Obr. 5.

Obr. 5. Okno simulátoru ModelSim používaného pro funkční i časovou simulaci

Funkční simulace pracuje s ideálními vlastnostmi použitých logických prvků, jejich nulovým zpožděním a také s nulovým zpožděním signálu na propojovacích signálových cestách mezi prvky. Funkční simulace je relativně rychlá. Zejména u složitějších návrhů s potenciální možností vzniku logických hazardů však nemusí podat pravdivé výsledky. V takovém okamžiku přichází na pomoc časová simulace, kterou lze spustit až po implementaci projektu, a do které již postupují předpokládané hodnoty zpoždění jednotlivých prvků a signálových cest s rozlišením až na jednotky pikosekund.

Obr. 6.

Obr. 6. Okno logického analyzátoru ChipScope

Typickým nástrojem pro diagnostiku reálného zapojení obvodu je logický analyzátor. Jeho použití se však omezuje jen na ty signály, které v daném návrhu jsou, nebo alespoň mohou být (jsou-li ještě volné vývody) vyvedeny vně FPGA. Mimořádnou výhodou, kterou přináší programovatelná logika, je v tomto případě možnost integrace technických diagnostických prostředků do navrhovaného logického systému. Tímto způsobem lze s použitím nějakého datového kanálu definovaného uživatelem získat přístup k informacím o momentálních vnitřních stavech obvodu. Vhodným kanálem může být sériový port nebo třeba port VGA. Velmi efektivní nástroj pro tento účel nabízí firma Xilinx pod označením ChipScope (obr. 6), při jehož použití lze vytvořit makro logického analyzátoru uvnitř FPGA a získaná data přenést do počítače tímtéž kabelem, kterým se obvod konfiguruje.

Perspektiva FPGA

Obvody programovatelné logiky se dnes používají v mnoha oblastech, ve kterých je požadován velký výpočetní výkon, možnost rekonfigurování hardwaru, vysoký stupeň integrace, zpracování velkého počtu signálových linek atd. Technika FPGA je relativně dostupná, někteří výrobci těchto součástek poskytují volně ke stažení omezené verze návrhových systémů na svých webových stránkách. Na internetu lze rovněž najít nejrůznější příklady maker v jazycích VHDL nebo Verilog, oblíbených procesorů 8051, rozhraní UART, USB, Firewire, obvodů pro číslicové zpracování signálů a další. Mnoho výrobců také vyrábí vývojové desky s FPGA. Tyto desky již bývají osazeny fyzickými rozhraními standardizovaných analogových i číslicových portů a jednoduchými ovládacími a zobrazovacími prvky, ke kterým musí návrhář doplnit řadič, popř. další logiku dovnitř FPGA. Deska s jedním programovatelným obvodem tak může realizovat úplný výpočetní systém s vestavěným procesorem, pamětí, komunikačními rozhraními a pro danou úlohu speciálně vytvořenými logickými bloky (koprocesory, hardwarové kodeky atd.) představujícími samostatný vestavný řídicí systém (embedded control system).

Ing. Vladimír Kašík, Ph.D.,
katedra měřicí a řídicí techniky FEI VŠB – Technická univerzita Ostrava
(vladimir.kasik@vsb.cz)