Vím že nic nevím


Programovatelná logická pole (Xilinx CPLD XC95xx)

 


CPLD - Complex programmable logic device - jak na ně ? Nejdřív je potřeba si uvědomit, že programovatelná logická pole NEJSOU mikroprocesory ani mikrokontroléry, ale úplně jiné součástky. Mikroprocesor poměrně pomalu postupně plní instrukce, které čte z paměti. Logické pole je jen hromada logických integrovaných obvodů, jejichž funkci určíme v programovacím softwaru v PC a pak ji do pole „vypálíme“.  Mají blíž k pamětem EEPROM než k procesorům. Ale vlastně ani to není přesné – jsou tak někde „mezi“. Je to spíš uživatelsky programovatelný „zákaznický“ obvod. Programovatelnost ale tady neznamená postupné čtení instrukcí, ale definici toho, jak se obvod bude chovat, jakému zapojení logických obvodů bude odpovídat. Historicky i složitostí lze obvody CPLD zařadit mezi obvody PAL/GAL a FPGA.
Zvolil jsem obvod Xilinx XC9536XL – je to asi nejjednodušší CPLD (a také nejlevnější). Dostupnost je momentálně slabší, ale na e-shopech se dá objednat s čekací dobou cca týden. Pro bastlíře je poněkud nevýhodné, že je k dispozici pouze v provedení SMD, takže jsem k němu zakoupil i adaptér SMD (TQFP44, resp. VQFP44) na DIL. Existuje i verze PLCC, která se dá vložit do soklu, ta ale z trhu rychle mizí. Verze XL pracuje s logikou 3,3V, ale naštěstí je alespoň 5V „tolerantní“, takže 5V signál na vstupu jí neublíží a zpracuje jej jako logickou „1“. Do programovatelného pole ale můžeme „vypálit“ omezený počet logických prvků. S tím je třeba počítat. Zjednodušeně řečeno do XC9536XL můžeme naprogramovat schéma s max. 36ti klopnými obvody. XC9572XL jich může obsahovat 72. Maximální velikost projektu si ale stejně ohlídá programovací software, který je na stránkách firmy Xilinx ke stažení zdarma. Je to bohužel moloch zvící několika gigabajtů. Pro bastlíře by stačila určitě nějaké „lite“ verze…


Po dopatlání SMD součástky na adaptér jsem vyrobil programátor na paralelní port PC (Parallel cable III, schéma je také na stránkách výrobce), který mi ovšem z neznámého důvodu nefungoval. Neb nemám nervy nafukovací, zakoupil jsem programátor Presto na USB, a je klid. Bohužel tímto způsobem nejde vyčíst obsah z CPLD do PC, jde jen programovat z PC do CPLD. Ale aspoň to funguje.
V různých tutoriálech je občas vidět zapojení CPLD s blikající LEDkou. Tyhle příklady svědčí spíš o nepochopení účelu CPLD. Mnohem názornější by byl například na výstupy připojený sedmisegmentový displej LED a na vstupech přepínač(e) DIL (a přesně takto vypadal i můj první funkční pokus). Tak lze demonstrovat třeba dekodér BCD/7segmentů nebo HEX/7 segmentů, sčítačku apod. S externím generátorem hodin (CPLD žádný takový generátor neobsahuje) lze extrémně jednoduše zrealizovat třeba digitální hodiny i s budíkem nebo měřič frekvence a to až do cca 170MHz. To lze sice i s mikrokontrolérem, u hodin však narazíme na problém s časováním, protože mezi hodinovými impulsy musí ještě procesor cyklicky vykonávat svůj program – to lze vyřešit použitím přerušení, ale software se tím dost komplikuje. U čítače nedosáhneme tak vysoké vstupní frekvence a nebo musíme předřadit nějaký další dělič kmitočtu.


Hodiny s CPLD

03.03.2012 09:56

Hodiny s XC9536XL

Tak jsem na univerzálním DPS zbastlil výše zmíněné digitálky s XC9536XL. Bohužel 36 macrocells se ukázalo jako příliš málo pro tenhle úkol :-( Musel jsem jeden čítač a generátor hodin realizovat postaru klasicky s čítačem 74HC390 a 74HC4060 mimo hradlové pole. A i tak stále zápasím s nedostatkem...

—————