Programovatelné logické pole Programovatelné logické pole jsou široce využívanou a efektivní cestou pro realizaci rozsáhlých kombinačních a sekvenčních logických obvodů. Jejich hlavní výhodou je vysoký stupeň integrace obvodu, který tak soustřeďuje v jednom pouzdře všechny prvky nutné pro běh obvodu. Počet ekvivalentních hradel ( tzn. kolika hradly je možno obvod nahradit při plném využití obvodu ) se pohybuje od několika set až do několika milionů. Rychlost obvodů se běžně pohybuje okolo 5 ns. Vnitřní propojení mezi jednotlivými prvky obvodu a tedy jeho funkce je programovatelná. Programování se provádí na PC návrhem schéma vnitřního zapojení v grafické podobě pomocí standardních symbolů známých z běžné logiky nebo textově v jazyce VHDL. Některé obvody umožňují programování již osazených obvodů přímo na desce plošného spoje bez nutnosti vyjímání obvodu nebo speciálního programátoru. LED Tlačítka V testovací desce je použit obvod Xilinx XC 9572 který má tyto vlastnosti: LED +3,3V 0V Napájení 555 CPLD XC9536XL LED LED Konektor programování Počet ek. hradel :1600 Rychlost: 10 ns Počet I/O : 34 Napájení: 5 V Obvod je programovatelný přímo na desce přes rozhraní JTAG a obsahuje paměť Flash pro uložení konfigurace pole. Je udáván počet přeprogramování až 10 tisíc Obr. 1 - Rozložení prvků testovací desky Generování hodinové frekvence, která je pro výukové účely nastavena na přibližně 30 Hz, je zajištěno časovačem 555. Při tvorbě schémat je vhodné seznámit se s funkcí v podrobné nápovědě k jednotlivým prvkům po stisku tlačítka Symbol Info v editoru schémat. Podrobný popis základních kroků s vývojovým prostředím je na konci tohoto souboru. Úkoly: 1) Logická funkce AND Realizujte jednoduchou logickou funkci AND. Vstupem funkce jsou údaje z tlačítek, výstup připojte na LED diody. Popis postupu realizace naleznete u úkolu č.4 Čítač, podrobný popis krok za krokem na konci tohoto souboru. Pozn. k řešení: LED diody svítí při logické nule ( L ) na příslušném výstupu, stisknuté tlačítko vytvoří na vstupu logickou nulu ( L ). Tlačítka jsou připojena na vstupy P26 a P27, generátor hodin 555 je na vstupu P5 ( zatím v této úloze není využit )
2) Klopný obvod D Seznamte se s funkcí klopného obvodu typu D a jeho využití jako paměti. Realizujte zapojení které při stisku tlačítka SW1 zaznamená hodnotu zadanou tlačítkem SW2. Pozn. k řešení: Klopný obvod typu D reaguje při vzestupné hraně signálu na svém hodinovém vstupu C. SW2 připojte na vstup D, SW1 na vstup C, výstup na libovolnou LED diodu. 3) Klopný obvod D jako dělič kmitočtu Realizujte obvod pro dělení kmitočtu koeficienty 2, 4,8 pomocí klopného obvodu typu D. Jako vstupní signál použijte nejprve libovolné tlačítko a dále pak hodinový generátor 555 připojený na vstupu P5. 4) Čítač Realizujte 16. bitový čítač hodinové frekvence generátoru 555 a jeho výstup připojte na LED. Vstupní frekvenci čítače vydělte 2 pomocí klopného obvodu typu D. Výstupy čítače zobrazte na LED diody. Čítač nulujte po stisknutí libovolného tlačítka. Pozn. k řešení: Při použití tlačítka si povšimněte ne vždy správné funkce čítače např. jednomu stisku neodpovídá zvětšení o 1. Je to způsobeno mechanickými zákmity tlačítka při stisknutí. Postup realizace A) Nakreslení schéma V programovacím prostředí Xilinx Project Navigator vytvořte nový projekt (schéma) pro obvod XC9536 XL (device), pouzdro PC44 ( package ), rychlost 10 ns ( speed grade ). V editoru schéma postupujte takto: 1) rozmístění součástek Bloky čítače najdete v knihovně counters, napájecí napětí a zem v general, mezi výstup čítače a výstupní piny obvodu zařaďte invertor ( knihovna Logic ), klopný obvod je v knihovně Flip-Flops. Diody na přípravku svítí při logické nule na výstupu obvodu. Frekvenci pro 16 bitový čítač. Vstupní frekvenci obvodu vydělte 2 pomocí klopného obvodu typu D. 2) propojení obvodů vodičem 3) pojmenování vstupních a výstupních signálů 4) uložení souboru a ukončení editoru
INV VCC CB16CE INV16 D FDC Q Q[15:0] CE CEO C TC CLR Vystup(15:0) Vstup C CLR GND Obr.2 Schéma zapojení GND B) Přiřazení vývodů Pravým tlačítkem na volbě Assign package pins vyvolejte menu a vyberte Rerun All v záložce User Constrains. Tím dojde k přeložení projektu a spuštění editoru přiřazení vývodů. V editoru rozložení vývodů přiřaďte vstupní a výstupní vývody. Vstupní vývod (generátor hodinových impulsů ) připojte na vstup P5 (na horní straně druhý zleva ), výstupy na libovolné diody. Výsledek uložte a editor ukončete. V Project Navigatoru vyberte položku Generate programming file v založce Implement Design, pravým tlačítkem se vyvolá menu kde vyberte Rerun All. Tím se spustí závěrečná kompilace. C) Naprogramování obvodu Programovací software se spouští na pracovní ploše ikonou Device programming. V úvodním nastavení programátoru ponechejte přednastavené hodnoty ( Boundary-Scan Mode a Automatically connect to cable... ). Automaticky dojde k nalezení obvodu XC9536XL a otevře se okno pro výběr souboru pro nahrání, kde vyberte vygenerovaný soubor s příponou.jed z příslušného adresáře. Vyberte symbol obvodu a z menu vyvolaného pravým tlačítkem vyberte Program... a potvrďte. Během asi 10 s dojde k naprogramování obvodu a okamžitému spuštění. 5) Prodloužení vstupního impulsu V číslicové technice se vyskytují krátké impulsy obtížně zaznamenatelé při měření. Tyto krátké impulsy je třeba prodloužit aby je bylo možné zjistit např. rozsvícením LED. Realizujte zapojení které prodlouží krátký impuls. Modifikujte obvod tak aby jej bylo možné použít pro registraci náběžné nebo sestupné hrany sledovaného signálu. Pozn. k řešení: Použijte klopný obvod typu D pro registraci hrany sledovaného signálu, pro prodloužení impulsu použijte čítač čítající signál hodinového generátoru 555. Po uplynutí nastavené doby musí čítač nastavit klopný obvod D do původního stavu aby byl obvod připravený na další příchozí puls. Čítač použijte 8 bitový, jako signál nulování pro klopný obvod D lze použít signál čítače TC který udává že čítač dopočítal do svého maximálního rozsahu. Pro generování krátkého vstupního impulsu použijte libovolné tlačítko.
6) Simulace inkrementálního snímače - IRC Inkrementální snímač je snímač polohy. Jeho výstupem jsou dva signály A a B které mají tvar podle Obr. 3. Při vývoji aplikací s IRC je možné využít i simulovaného signálu IRC pokud IRC není k dispozici. Obr. 3 Signál inkrementálního snímače Realizujte zapojení pro simulaci IRC. Vstupní signál je hodinový signál generátoru 555, výstup připojte na LED. Pozn. k řešení: Povšimněte si že oba výstupní signály jsou vyděleny 2, signál výstup1 reaguje na náběžnou hranu a signál výstup 2 na sestupnou hranu hodinového signálu. Další informace o programovatelných logických polích včetně možnosti bezplatného stáhnutí software WebPack naleznete na http://www.xilinx.com/
Podrobný návod krok za krokem Spustit Project Navigator File -> New Project Zvolit název projektu a umístění ( POZOR program neumí pracovat s dlouhými názvy souborů a adresářů ). Vybrat způsob kreslení Schematic.
Volba typu obvodu: Device family XC9500XL CPLDs, device XC9536xl, package PC44, speed grade -10 Přidání nového schématu do projektu.
Zvolení Schematic a napsání jména souboru se schématem do File Name Potvrdit
Nyní je schéma přidáno do projektu V dalších oknech pouze potvrzujeme.
Otevře se okno projektu
a zároveň s ním Editor schémat stiskem Symbols se otevře knihovna součástek Umístíme součástky, otáčet vybranou součástku je možné stiskem CTRL+R
Propojíme vodičem přepneme do režimu propojování
Umístíme vstupy a výstupy - Změna názvu vstupu a výstupu ( toto není nutné ale zpřehlední další práci ) dvojím kliknutím na vstupní nebo výstupní symbol
Název vstupního signálu změníme na Vstup, výstupního na Výstup(15:0)
Uložit a uzavřít Xilinx ECS ( editor schémat ). Následuje přiřazení pinů. Je třeba spustit překlad projektu pravým tlačítkem na Assign package pins a vybráním z kontextového menu -->Rerun All na této položce a potvrdit vytvoření nového souboru Editor pinů - Vstup přetáhneme z tabulky na P5, výstupy na libovolné bílé piny
Uložit a uzavřít editor pinů. V Project Navigatoru vybereme soubor schématu ( mojeschema ) -> pravým tlačítkem z menu na Generate programming file spustíme závěrečný překlad vybráním Rerun All. Až překlad proběhne, na pracovní ploše spustíme programovací software ikonou Device programming. Ponecháme přednastavené hodnoty
Automaticky bude nalezeno připojené zařízení a položen dotaz na programovací soubor. Přípona.jed soubor je v adresáři Vašeho projektu
Pravé tlačítkem na symbolu obvodu vyvoláme menu a vybereme -> Program Potvrdíme Počkáme asi 10 vteřin
Naprogramování bylo úspěšné. Obvod se sám spustí. Další informace o programovatelných logických polích včetně možnosti bezplatného nahrání software WebPack naleznete na http://www.xilinx.com/