Aktuální vydání

celé číslo

04

2024

Průmyslové roboty a automatizace výrobních a montážních linek

celé číslo

Programovatelná logika proniká do všech oblastí číslicové techniky

číslo 2/2006

Programovatelná logika proniká do všech oblastí číslicové techniky

Jaromír Kolouch

V článku je uveden stručný přehled současného stavu v oblasti programovatelné logiky, konkrétně obvodů PLD a FPGA. Snahou autora bylo zdůraznit skutečnost, že se tyto obvody dostávají do pozice skutečného partnera mikroprocesorů a mikrořadičů, stávají se standardní součástí moderních číslicových zařízení a že jejich zavedení nevyžaduje téměř žádné finanční prostředky kromě prostředků na nákup příslušných obvodů a levného programovacího kabelu, a ovšem i určitého počátečního úsilí nutného ke zvládnutí této techniky.

1. Úvod

S rozšiřujícím se používáním číslicových metod řešení nejrůznějších úloh se do popředí zájmu dostávají takové způsoby realizace číslicových systémů, které umožňují dosáhnout dostatečně velké míry jejich integrace. V současnosti jsou velmi často používány mikroprocesory a mikrořadiče (tzv. mikrokontroléry) a tam, kde je rozsah opakované výroby dostatečný, také speciální, jednoúčelové integrované obvody (Application Specific Integrated Circuit – ASIC). Nejčastěji se nyní při realizaci číslicových systémů používají tyto prvky:

  • číslicové obvody ze standardních řad 74, 4000 apod.,
  • mikroprocesory a mikrořadiče,
  • programovatelné obvody (Programmable Logic Device – PLD), včetně programovatelných hradlových polí (Field Programmable Gate Array – FPGA),
  • speciální obvody (ASIC).

Obvody ze standardních řad se převážně používají již jen v drobných zařízeních, popř. pro zajištění funkcí s malým rozsahem číslicové části.

Mikroprocesory a mikrořadiče se vyrábějí ve velkých sériích, a jsou proto relativně levné a spolehlivé. Lze je velmi dobře využít tam, kde nejsou příliš velké požadavky na rychlost odezvy. Toto omezení vyplývá z principu jejich funkce, který vyžaduje provedení několika (nebo i velkého množství) výpočetních instrukcí k tomu, aby se ze vstupních dat vytvořila příslušná odezva, a to i tam, kde potřeba řešení s použitím algoritmu (postupných kroků vykonávaných v čase) nevyplývá z povahy řešeného problému. Pokud však rychlost běžných mikroprocesorů nedostačuje, je třeba sáhnout k jiným řešením. Jedním z nich je provedení časově kritických částí algoritmu v podpůrných obvodech, jejichž sortiment je odborné veřejnosti dobře znám: komunikační obvody, řadiče přerušení atd. Tyto obvody však již nejsou vyráběny v takovém rozsahu jako dříve a občas se vyskytují problémy s dostupností typů, které by mohly daný problém vyřešit. Někdy lze použít speciální mikroprocesory, které však jsou často výrazně dražší.

Tam, kde mikroprocesory a mikrořadiče z určitého důvodu nevyhovují, se nabízí řešení s využitím programovatelných logických obvodů (tzv. programovatelná logika). Na tyto obvody lze pohlížet jako na standardní obvody realizované, i se vzájemným propojením, na jednom křemíkovém čipu. Tak lze spojit vysoký stupeň integrace, charakteristický pro procesory, s výrazně větší rychlostí odezvy, která odpovídá realizaci algoritmu kombinační nebo jednoduchou sekvenční logikou. Donedávna byly z této skupiny běžně dostupné především obvody SPLD (Simple PLD), jejichž nejznámějšími představiteli jsou obvody řady GAL, popř. dosud asi méně známé obvody typu CPLD (Complex PLD). Přestože stupeň integrace naposled jmenovaných je obvykle větší než u obvodů standardních řad, mělo toto řešení ještě nedávno několik podstatných nevýhod, jako je zejména výrazně větší spotřeba energie v porovnání se standardními obvody vyráběnými technikou CMOS, obvykle vyšší cena, potřeba speciálních programovacích přístrojů, nutnost použití ne právě levných vývojových systémů a simulátorů a nezbytnost naučit se s touto technikou pracovat.

2. Současný stav programovatelné logiky

Většinu z uvedených nevýhod programovatelných obvodů, ne-li všechny, již lze pokládat za překonanou. Obvody řady GAL se v současnosti používají jen v případech, kde jejich nevýhody, tedy značná spotřeba a přece jen dosti omezený rozsah integrace, nejsou podstatné. Tam, kde jsou na řešení kladeny větší požadavky, se v poslední době výrazně prosazují CPLD a FPGA. Spotřeba energie těchto obvodů je již srovnatelná se spotřebou standardních obvodů typu CMOS. Nejvýznamnější výrobci v poslední době uvedli na trh řady CPLD a FPGA za velmi příznivou cenu. Téměř všechny tyto obvody (s výjimkou řady GAL) jsou programovatelné, tak jak jsou zabudovány v systému, při použití počítače připojeného levným programovacím kabelem – jsou označovány známou zkratkou ISP (In-System Programmable) –, a návrhové systémy pro práci s velkou částí z nich jsou zdarma dostupné na internetu (zakoupit příslušné programové vybavení je zpravidla nutné jen pro práci s nejvýkonnějšími typy FPGA, představujícími špičku této techniky). O nezbytnosti trvale se seznamovat s novou technikou a odpovídajícími postupy v současnosti snad není pochyb; tím ztrácí význam i poslední z uvedených námitek. V současné době je již na našich vysokých technických školách výuka v oblasti programovatelných obvodů samozřejmostí a základní informace z tohoto oboru poskytují svým žákům i mnohé střední školy. To také vytváří tlak na současné konstruktéry, aby drželi krok s dobou.

Zejména FPGA se v poslední době prudce vyvíjejí. Tento stav lze přirovnat snad jen k situaci při zavádění mikrořadičů do běžné výbavy konstruktérů číslicových systémů. Donedávna byly tyto obvody poměrně drahé, nepříliš snadno dostupné a práce s nimi nebyla příliš snadná. Používaly se tedy především k řešení úloh, u nichž nebylo kritické hledisko ceny a kde nejdůležitějším kritériem byly technické vlastnosti realizovaného systému. V poslední době však všichni známí výrobci uvedli na trh obvody určené pro široké použití a za ceny, které v mnoha případech činí programovatelné obvody ohledně ceny srovnatelné s řešením s mikrořadiči, a v mnoha případech dokonce i cenově výhodnější. Jak již bylo uvedeno, CPLD jsou svým rozsahem integrace vyhovující pro menší a méně náročné konstrukce, přičemž jejich rozsah odpovídá stovkám až desetitisícům ekvivalentních hradel. Na tyto obvody navazují FPGA s rozsahem až tisíckrát větším. Přitom cena FPGA s ekvivalentem statisíců hradel je i při kusovém odběru v řádu stokorun. Uvedené obvody jsou u nás snadno dostupné, přestože se zatím ještě neprodávají v běžné maloobchodní prodejní síti. Pozoruhodné je, že se množí úlohy, kdy se s použitím FPGA realizují konstrukce představující mikrořadiče, takže algoritmy vyvinuté pro ně jsou téměř přímo použitelné i při řešení s FPGA. Přitom lze v FPGA vedle mikrořadičů současně realizovat i ty struktury, které by při použití tradičních mikrořadičů bylo nutné připojit v podobě vnějších podpůrných obvodů, a lze tak dále zvýšit stupeň integrace se všemi příznivými důsledky, které z toho vyplývají.

V FPGA (a částečně i v moderních CPLD) lze v současnosti najít mnoho speciálních bloků a podpůrných funkcí, které výrazně usnadňují a zjednodušují konstrukce, v nichž jsou použity. K nim je možné počítat zejména:

  • paměti RAM nebo ROM, přičemž druhé z nich se zpravidla realizují jako RAM, jejíž počáteční obsah se stanovuje při programování (u FPGA se častěji mluví o konfigurování) a do níž se pak nic nezapisuje, takže původní obsah zůstává beze změny,

  • bloky pro kmitočtovou syntézu dovolující ze signálu o základním kmitočtu získaného z oscilátoru vytvořit signály s kmitočty rovnými jeho násobkům nebo podílům nebo i kombinaci těchto operací, signály fázově posunuté s hrubým či jemným fázovým rozlišením, s korekcí střídy a s mnoha dalšími podobnými úpravami,

  • vstupní a výstupní (I/O) obvody podporující několik standardů, a to nejen standardy odpovídající technikám TTL či CMOS, ale i standardy používané např. u dynamických RAM (to usnadňuje připojování takových pamětí tam, kde vnitřní bloková paměť v FPGA nestačí), i moderní standardy pro nesymetrické i diferenční signály určené pro všeobecné použití nebo pro sériovou komunikaci, jako jsou např. standardy LVPECL (Low Voltage Positive Emitter Coupled Logic) nebo LVDS (Low Voltage Differential Signaling); u jednoho obvodu (s výjimkou nejjednodušších) je obvykle možné současně použít několik standardů (to odstraňuje dřívější nutnost používat převodníky) a většinu vývodů lze naprogramovat podle potřeby jako vstupy, výstupy nebo jako obousměrné vývody,

  • bloky podporující snížení příkonu, není-li zapotřebí využívat nejrychlejší mód činnosti,

  • různé speciální bloky, jako jsou bloky I/O pro velmi rychlou komunikaci s přenosovou rychlostí i větší než 10 Gb/s nebo vestavěné procesory,

  • mnoho dalších, vyplývajících ze specifických potřeb obvodů s velkým stupněm integrace, velkým počtem vývodů, malou půdorysnou plochou a podobnými vlastnostmi charakteristickými pro programovatelné obvody, přičemž mnoho z nich má programovatelné varianty, takže si uživatel může zvolit konfiguraci co nejlépe vyhovující jeho potřebě.

3. Návrhové systémy a příprava vstupních dat

Pro vkládání vstupních údajů do návrhových systémů, tedy pro popis navrhované konstrukce, se v současnosti stále častěji používají jazyky typu HDL (Hardware Description Language), z nichž nejznámější jsou VHDL a Verilog, patřící k uznávaným standardům. Lze říci, že téměř neexistuje moderní návrhový systém, který by tyto jazyky nepodporoval, takže popis, tzv. zdrojový text, vytvořený v jednom systému, je možné (někdy s drobnými úpravami) přenést do jiného systému a pracovat s programovatelnými obvody od jiného výrobce. Uvedené jazyky jsou poměrně mohutné nástroje a dovolují vyjádřit téměř vše, s čím se lze v číslicové technice setkat. Aktivně je zvládnout v plném rozsahu není právě snadné, ale naprostá většina konstruktérů to ani nepotřebuje. Situaci je možné přirovnat k práci s textovými editory, jako je např. Word: znalosti potřebné pro psaní běžných textů lze získat během krátké doby, a je-li zapotřebí něco speciálního, lze to nalézt v nápovědě nebo v odborné literatuře. Již zmíněná přenositelnost zdrojových textů je sice sympatická vlastnost tohoto způsobu popisu, z pohledu praxe však je vhodné poznamenat, že když se začne pracovat s obvody určitého výrobce, seznámí se uživatel se sortimentem jeho výrobků a s podrobnostmi jejich vnitřního uspořádání i příslušného návrhového systému, který práci s těmito obvody podporuje, a uživatele obvykle přinutí k přechodu k jinému výrobci až skutečně pádné důvody. Je to podobné jako v jiných oblastech techniky: pro řešení nepříliš složitých problémů lze vystačit s vcelku nenáročným seznámením, ale čím více výhod programovatelných obvodů logiky je třeba využít, tím hlubší znalosti struktury konkrétních obvodů a návrhových systémů budou nezbytné. Přínos přenositelnosti je však rovněž v tom, že po nalezení popisu toho, co je právě potřebné, v literatuře nebo např. na internetu většinou není složité přizpůsobit získaný popis sortimentu obvodů a systému, s nimiž se pracuje.

Moderní návrhové systémy také obsahují několik programových prostředků, které usnadňují práci s nimi – tzv. průvodce (wizard) apod. Například zdrojový text ve VHDL je obecně možné zapsat s použitím téměř libovolného textového editoru. Je-li však používán např. systém ISE firmy Xilinx, tento systém může automaticky vytvořit značnou část formálně vyžadovaných částí popisu, které není pro začátečníka zcela snadné syntakticky správně sestavit. Totéž platí pro mnoho dalších částí popisu, jako je použití speciálních bloků, vkládání komponent apod.

Při zcela prvních krocích v oblasti programovatelné logiky je možná ještě vhodnější začít s nižším jazykem, jako je např. ABEL, který také podporuje velká většina návrhových systémů. Tento jazyk má syntaxi vycházející ze struktury PLD, pro niž je určen, což usnadňuje představit si za textovým popisem způsob jeho implementace v cílovém obvodu. V literatuře se právem často zdůrazňuje, že má-li z popisu vzniknout efektivně syntetizovaný obvod, je třeba mít při vytváření popisu představu o tom, jak bude vypadat výsledek syntézy. Jazyky VHDL nebo Verilog pracují s vyšším stupněm abstrakce, což dovoluje zaměřit se jako na cílové obvody také na FPGA. Souvislost popisu v těchto jazycích s výsledkem syntézy však při tomto stupni abstrakce již není tak zřejmá.

V současné době není velký problém najít literaturu potřebnou k prvnímu seznámení s uvedenými jazyky na internetu. Stačí do prohlížeče zadat název jazyka a objeví se mnoho odkazů na tituly, z nichž některé jsou psány i v češtině. Pro úsporu času lze využít nabídku kursů, které opět lze nejlépe vyhledat na internetu, např. pod heslem BTIC. Z knižních titulů lze použít např. publikaci [1], popř. skripta [2].

4. Současné typy obvodů CPLD a FPGA

Mezi nejznámější výrobce programovatelných obvodů patří firmy Altera, Lattice, Xilinx, popř. některé další, známé spíše z jiných oblastí sortimentu, jako je Atmel nebo Actel. K programovatelným obvodům typů CPLD a FPGA, u nás nejlépe dostupným i v malém množství vhodném k seznámení s touto technikou a k prvním vývojovým pracím, patří zejména obvody vyráběné firmou Xilinx. Místní dodavatele lze snadno vyhledat s použitím internetu. Obvody CPLD řady XC9500XL firmy Xilinx mají snadno pochopitelnou strukturu, která je podrobně vysvětlena v dokumentaci k této řadě dostupné na internetu, takže jsou velmi vhodné pro ty, kdo chtějí s programovatelnými obvody začít pracovat. V dalším textu jsou proto stručně shrnuty nejdůležitější poznatky o programovatelných obvodech této firmy. Podobné údaje o PLD od jiných výrobců čtenář snadno najde opět na internetu.

Jak již bylo uvedeno, pro první pokusy je asi nejvhodnější řada obvodů CPLD s označením XC9500XL. Jde o obvody s napájecím napětím jádra 3,3 V, lze je však bez problémů propojovat i s obvody napájenými z napětí 5 V. Napájecí napětí pro bloky I/O může být 3,3 V nebo 2,5 V, takže k těmto CPLD lze připojovat i obvody CMOS s daným napájecím napětím bez použití speciálních převodníků. Tuto vlastnost mají i obvody jiných řad typů CPLD a FPGA (někdy však s omezenou odolností k napětí 5 V). Navíc je, zejména u větších FPGA, možné současně používat několik napájecích napětí. Výhodné také je, že napájecí napětí lze připojovat (s určitými malými výjimkami) postupně v libovolném pořadí. V uvedené řadě jsou obvody s 36 až 288 makrobuňkami (ekvivalent 800 až 6 400 hradel). Cenově jsou obvody této řady srovnatelné s levnými procesory (obvody s větším počtem makrobuněk jsou dražší).

Obvody řady XC2C (zvané coolrunners) jsou určeny pro úlohy, kde důležitým kritériem je malá spotřeba energie. Z tohoto hlediska jsou velmi podobné tradičním obvodům CMOS. Ohledně logické funkce jsou srovnatelné s řadou XC9500XL při mírně vyšších cenách.

Z FPGA firmy Xilinx je cenově nejdostupnější řada Spartan-3 a nejnověji řada Spartan-3E, pro úlohy s důrazem na malou spotřebu řada Spartan-3L. Vedle strukturních prvků určených k realizaci běžných logických funkcích jsou v nich obsaženy bloky pro kmitočtovou syntézu (Digital Clock Manager – DCM) a bloky RAM, dovolují implementaci procesorů bez přídavných vnějších součástek. Vývody I/O jsou uspořádány do osmi bank, z nichž každá může mít své vlastní napájecí napětí v rozsahu od 1,2 do 3,3 V. Každý vývod může být individuálně nakonfigurován pro kterýkoliv z osmnácti nesymetrických nebo osmi diferenčních standardů s napětím odpovídajícím příslušné bance.

Pro velmi náročné úlohy je určena řada Virtex-4, která se dále dělí na tři větve, jejichž podrobnější popis přesahuje rámec tohoto článku. Uveďme jen to, že k blokům pro řady Spartan-3 přibývají transceivery pro vysokorychlostní přenos dat, vestavěné procesory Power-PC, podpůrné bloky pro implementaci signálových procesorů a mnoho dalších. Cena obvodů této řady je výrazně vyšší; to odpovídá jejich užitné hodnotě a skutečnosti, že některé rysy těchto obvodů dovolují vyvinout řešení, která téměř nemají srovnatelnou alternativu.

V dosavadním výkladu nebyly zmíněny starší řady obvodů. Neplatí zdánlivá samozřejmost, že by starší a jednodušší typy měly být levnější, je tomu naopak. Je to především důsledek stále se rozvíjející technologie výroby, zejména zmenšujících se rozměrů struktur na čipu (v současné době se moderní FPGA vyrábějí v rastru 90 nm), a patrně také zvyšující se sériovosti výroby, protože tyto obvody pronikají do oblastí, kde jejich použití bylo dříve neekonomické. Při úvahách o tom, které typy obvodů použít ve vznikajícím projektu, by tedy měl být zvolen nejnovější z nich.

Pro konfigurování FPGA, tedy pro definování stavu programovatelných prvků, které určuje funkci obvodu a musí proběhnout vždy po připojení napájecího napětí, vyrábí firma Xilinx odpovídající tzv. konfigurační paměti, jejichž cena je zlomkem ceny příslušného FPGA. U řady Spartan-3E, která je určena pro cenově kritické aplikace, lze ke konfigurování použít i jiné široce používané a velmi levné sériové paměti.

Firma Xilinx dodává své obvody v pouzdrech určených pro povrchovou montáž. Jsou mezi nimi pouzdra s tradičními okrajovými vývody i pouzdra s kuličkovými vývody na spodní straně pouzdra (BGA).

K vývoji aplikačních programů lze z webové stránky firmy Xilinx bezplatně stáhnout návrhový systém WebPACK, který podporuje všechny obvody typu CPLD firmy Xilinx a většinu jednodušších FPGA této firmy.

Rozsah článku nedovoluje podrobněji popsat CPLD a FPGA dalších výrobců. Zasloužila by si to zejména firma Altera, jejíž výrobky mají vlastnosti srovnatelné s parametry výrobků firmy Xilinx, a také další firmy jako Lattice nebo Actel (pro případné zájemce jsou na konci článku uvedeny některé internetové odkazy).

V současné době se rozvíjí nabídka tzv. jader IP (Intellectual Property), což jsou odladěné konstrukce, které jsou v jednodušších případech volně k dispozici na webu. Využití složitějších z nich je podmíněno zakoupením licence. Tento proces je možné přirovnat k situaci ze začátků číslicové techniky, kdy vznikaly nové typy integrovaných obvodů. Podobně lze nyní získat hotové funkční bloky v podobě jader IP, „naskládat„ je do FPGA, doplnit vlastní konstrukcí a propojit do funkčního celku.

5. Závěr

Závěrem lze konstatovat, že programovatelné logické obvody jsou mohutným a stále dostupnějším nástrojem, který v důsledku snižování ceny a zlepšování užitných vlastností rychle proniká do oblastí, kde se tradičně využívaly buď obvody s nižším stupněm integrace, nebo ASIC, a stává se tak partnerem mikroprocesorů a mikrořadičů. Konstruktér číslicových zařízení, který chce vytvářet konstrukce na úrovni doby, nemůže tuto techniku pominout. Podrobný přehled jejího aktuálního stavu lze najít např. ve velmi zdařilé publikaci [3].

Literatura:
[1] WAKERLY, J. F.: Digital Design Principles and Practices. 4th Edition, Prentice Hall, 2005.
[2] KOLOUCH, J.: Programovatelné logické obvody a návrh jejich aplikací v jazyku VHDL. Skriptum FEKT VUT v Brně, Brno, 2005.
[3] MAXFIELD, C.: The Design Warrior’s Guide to FPGAs. Elsevier, 2004.

Odkazy na internet:
http://www.altera.com
http://www.latticesemi.com
http://www.xilinx.com

doc. Ing. Jaromír Kolouch, CSc.
(kolouch@feec.vutbr.cz)

Doc. Ing. Jaromír Kolouch, CSc., pracuje v ústavu radioelektroniky Fakulty elektrotechniky a komunikačních technologií VUT v Brně. Zabývá se číslicovou technikou, zejména používáním programovatelných obvodů. V pedagogické oblasti působí jako garant předmětů Impulzová a číslicová technika a Programovatelné logické obvody.