Jiøí Král
ØEENÉ PØÍKLADY VE VHDL HRADLOVÁ
POLE
FPGA
Praha 2010
PRO ZAÈÁTEÈNÍKY
Upozornìní! Váení ètenáøi, na naí webové adrese: http://shop.ben.cz/cz/121309 v sekci download, se nachází soubory ke staení: : ke staení vývojové prostøedí ISE WebPack 10.1 (pozor soubor WebPack.zip 14 MB) : ke staení soubory (.brd, .sch) k Pøíloze 2 (Priloha2.zip) : barevné obrázky z Pøílohy 1 (121309obr.zip)
Ing. Jiøí Král
Øeené pøíklady ve VHDL Hradlová pole FPGA pro zaèáteèníky
Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnoována jakoukoli formou (tisk, fotokopie, mikrofilm nebo jiný postup), zadána do informaèního systému nebo pøenáena v jiné formì èi jinými prostøedky. Autor a nakladatelství nepøejímají záruku za správnost titìných materiálù. Pøedkládané informace jsou zveøejnìny bez ohledu na pøípadné patenty tøetích osob. Nároky na odkodnìní na základì zmìn, chyb nebo vynechání jsou zásadnì vylouèeny. Vechny registrované nebo jiné obchodní známky pouité v této knize jsou majetkem jejich vlastníkù. Uvedením nejsou zpochybnìna z toho vyplývající vlastnická práva. Vekerá práva vyhrazena © Ing. Jiøí Král, Praha 2010 © Nakladatelství BEN technická literatura, Vìínova 5, Praha 10 Jiøí Král: Øeené pøíklady ve VHDL Hradlová pole FPGA pro zaèáteèníky BEN technická literatura, Praha 2010 1. vydání
ISBN 978-80-7300-257-2
Obsah ÚVOD ........................................................................................................... 4 ZAÈÍNÁME PROGRAMOVAT .............................................................................. 6 1. program Hello world ......................................................................... 7 2. program sèítaèka ................................................................................. 17 3. program blikající ledka ....................................................................... 21 4. program bìící svìtlo .......................................................................... 26 5. program morseovka ............................................................................ 31 6. program sedmisegmentový displej ..................................................... 37 7. program sedmisegmentový displej jinak ............................................ 43 8. program sèítaèka s displejem .............................................................. 46 9. program stopky ................................................................................... 51 10. program hodiny................................................................................. 60 11. program budík ................................................................................... 67 12. program zvuk .................................................................................... 78 13. program PWM .................................................................................. 81 14. program PWM jinak ......................................................................... 86 15. program efekt .................................................................................... 89 16. program øízení otáèek motoru ........................................................... 94 17. program øízení otáèek motoru s reverzací ........................................ 99 18. program obousmìrný port typu otevøený kolektor ......................... 104 19. program pamìti ............................................................................... 109 20. program Digital Clock Manager ..................................................... 117 21. program asynchronní led ................................................................ 120 ZÁVÌR ....................................................................................................... 122 LITERATURA A JINÉ ZDROJE ........................................................................ 122 PØÍLOHA ................................................................................................... 123
A
Obsah a úvod
3
Úvod Hradlová pole vdy patøila do sféry profesionálù a ti, pro které je elektronika koníèkem, se jim, bohuel, vyhýbali. Dùvody byly a i nadále zùstávají rùzné. U první generace hradlových polí to jistì bylo i proto, e nabízené funkce nebyly pøíli pokroèilé, a kdy u bylo potøeba, dal se daný problém øeit pomocí klasických integrovaných obvodù. Pozdìji ji byly nabízeny i hodnì sloité monosti, ale hradlová pole se tím vzdálila tomu, co musí koníèek poskytovat. Hru a zábavu. Proto se øada amatérských elektronikù vìnuje hrátkám s jednoèipovými mikropoèítaèi, ale hradlová pole jsou pro nì bílým místem. To je jistì koda, protoe souèasná hradlová pole 3. generace, hovoøí se o nich jako o FPGA, ji jsou schopny poskytnout i tu potøebnou zábavu. A také tvùrèí seberealizaci, která mùe snadno pøejít do profesionální podoby. Protoe spektrum aplikací hradlových polí má trvale vzestupnou tendenci, jistì není nikdy pozdì se zaèít jejich programování vìnovat. Tato kníka vám formou øeených pøíkladù ukáe, jak zaèít. Pokud vás tato problematika zaujme, mùe vás nasmìrovat i z hlediska profesní orientace. Jak zaèít V úvodu je tøeba si poloit otázku, co vechno budete potøebovat. Tato otázka je velmi komplexní a patøí k ní i potøeba vstupních znalostí. Dùleitá je i volba techniky, se kterou budete pracovat. Pøesto, e v principu je moné uèit se programování s prakticky libovolným hradlovým polem, je volba rozhodující pro mnoství komplikací, se kterými se pozdìji setkáte.
Obr. 1
Co potøebujete?
Je tedy tøeba vyjasnit si, s jakým hradlovým polem budete pracovat, jak je dostupný potøebný hardware a software a v neposlední øadì je to i dostupnost získání rady v okamiku, kdy nebudete vìdìt jak dál. Je tøeba si uvìdomit, e úvaha, která vede k výslednému rozhodnutí, je velmi subjektivní. Vstupní znalosti Hradlová pole patøí mezi digitální obvody. Proto je vhodné, ale nikoliv nutné, mít alespoò základní znalosti èíslicové techniky. Ty lze, samozøejmì kromì koly, získat studiem odborné literatury, napø. [1] nebo [2]. V dobì internetu vak existuje nepøeberná øada zdrojù, kde je moné si doplnit potøebné vìdomosti. V krajním pøípadì staèí zadat neznámý pojem do vyhledávaèe a najít vhodný odkaz. Praktické zkuenosti ukazují, e je opravdu moné postupovat od programování ve VHDL k rozvoji znalostí èíslicové techniky. Hardware Tuto kapitolu je nutné zaèít u vlastních hradlových polí a jejich výrobcù. Není pøíli tìch, kteøí tyto souèástky zvládají. Mezi ty hlavní patøí firmy Xilinx, Altera, Lattice a Actel. Poøadí je uvedeno podle velikosti produkce. Existují vak jetì i dalí, minoritní výrobci. Za zmínku stojí firmy Silicon Blue, Achronix a Abound Logic.
4
Jiøí Král: ØEENÉ PØÍKLADY VE VHDL Hradlová pole FPGA
A
Samozøejmì výrobci mají ve své nabídce øadu typù, z nich si konstruktéøi mohou vybírat. Není vak pøedmìtem této knihy probírat jednotlivé nabízené øady a typy. Podrobnosti je moné nalézt na webových stránkách výrobcù [3] a [9]. Vlastní hradlové pole tedy budeme dále povaovat za danou vìc. K jednotlivým typùm existují nìkolikaset stránkové dokumentace a kromì rozsahu je monou komplikací, e jsou v angliètinì. Obecné principy je moné nastudovat v dostupné literatuøe, napø. [10]. Samotné hradlové pole vak nestaèí. A na výjimky musí být doplnìno o konfiguraèní pamì. V kadém pøípadì potøebujeme zdroj hodinových impulzù a nìjaké periferie nebo alespoò konektory, které by umonily je pøipojit. Také je nutné nezapomenout na programátor, který nám zajistí zavedení programu do hradlového pole, pøípadnì do konfiguraèní pamìti. Pokud k tomu zohledníme jetì otázku pouzder, kdy v naprosté vìtinì pøípadù nelze uvaovat o vlastnoruèním zapájení, je rozumné poøídit si ke zkouení nìco z výroby profesionálù. Ti vyrábí tzv. kity. Jedná se o desku ploného spoje, která je osazena hradlovým polem a vím, co je k vlastní funkci nezbytné. Kromì toho je kit vybaven rùznými periferiemi. Ovem problém je, co vybrat, protoe nabídka je velmi iroká. Pro zaèáteèníka, který v tuto chvíli v hradlových polích objevil svého koníèka, bude zøejmì rozhodujícím kriteriem podpora výrobce, dostupnost, cena a podpora komunity. Urèitì bude dobré vybírat z nabídky velkého výrobce, kde je pøedpoklad, e vyberete nìco, co je rozíøené a tudí veobecnì známé. Nejvìtím výrobcem hradlových polí FPGA je jednoznaènì firma Xilinx. Podporu ze strany tohoto výrobce je moné ohodnotit jako velmi dobrou. Kity s hradlovými poli firmy Xilinx nabízí øada výrobcù. Zajímavé jsou napø. ty, které vyrábí firma Digilent [11]. Dostupné jsou buï pøímo u výrobce, nebo u dodavatelù. Podle typu hradlového pole a sloitosti kitu je i rùzná cena. Pro první seznámení s hradlovými poli zøejmì výbìr padne na nìkterý z tzv. low cost typù. Z produkce firmy Xilinx to bude nìkterý z øady Spartan3 nebo Spartan3E. Zde je vak tøeba upozornit na rychlost dalího vývoje a tak je dnes moné uvaovat i o typu Spartan6, který výrobce rovnì øadí mezi low cost. V nejnovìjí nabídce je kit Spartan-6 FPGA SP601 Evaluation Kit. V této chvíli vak jsou tøi dùvody, proè není moné pøedpokládat okamité pouití. Nejsou praktické zkuenosti, vybavení kitu je velmi omezené a v neposlední øadì je to cena. Podporu komunity je moné hledat na rùzných diskusních fórech. Jedno je pøímo na stránkách firmy [12]. Dalí je napø. [13]. Pokud má být pøedchozí shrnutí konkretizováno, lze z nabídky vybrat tøi typy kitù, které jsou uvedeny v pøíloze. Vývojové prostøedí Programování hradlových polí je kvalitativnì nìco úplnì jiného, ne známe z postupù ve vyích programovacích jazycích. Je tøeba vykonat øadu postupných krokù od zadání a po naprogramování obvodu. Proto kadý výrobce poskytuje software, který nám toto vechno umoòuje. Souhrnnì pak tento sw nazýváme vývojové prostøedí. Vývojové prostøedí je tedy nástroj programátora. Je zvykem poskytovat základní funkce zdarma, by pouze po pøedchozí registraci a s rùznì omezenou dobou platnosti licence. Je tøeba zdùraznit nepøenositelnost vývojových prostøedí mezi jednotlivými výrobci. Vzhledem k naznaèené orientaci na hradlová pole firmy Xilinx je tedy logické vyuití vývojového prostøedí od tée firmy. To je nabízeno pod názvem ISE Web Pack. Samozøejmì i tento software podléhá velké dynamice vývoje. I kdy jsou jednotlivé verze velmi podobné, pøesto jsou nìkteré zmìny velmi zásadní. Navíc rozsah funkcí vývojového prostøedí neumoòuje jednoduchý návod na jeho pouití. Proto bývá zvykem nabídnout vhodný tutoriál. Pro zaèáteèníky se pak nutnì jedná o velmi rozsáhlý materiál, kterým by velmi narostl rozsah této kníky. Aby k tomu nedolo a zároveò byla zachována aktuálnost této knihy, je zpracovaný tutoriál v elektronické podobì k dispozici na stránkách nakladatelství.
A
Obsah a úvod
5
Programovací jazyky Zvládnutí dneních hradlových polí pøedpokládá zvládnutí vhodného programovacího jazyka. Ty hlavní v souèasné dobì existují dva, VHDL a Verilog. Oba jsou rovnocenné, co se poskytovaných funkcí týká, i kdy se samozøejmì navzájem lií. Pro rozhodnutí, kterému jazyku se vìnovat, je moné v podstatì jen kritérium rozíøení toho kterého jazyka. Jazyk Verilog dominuje v Asii a v USA. V Evropì (a tedy i u nás) je pøevaha jazyka VHDL. Je tøeba zmínit, e existují snahy pøenést programování na úroveò programovacích jazykù C nebo C++. Jazyk VHDL Jazyk VHDL byl pùvodnì vyvinut pøedevím pro modelování a simulaci rozsáhlých èíslicových systémù na základì zadání ministerstva obrany USA. Tento vývoj zaèal v roce 1981 a první vydání se objevilo v roce 1987 ve formì standardu IEEE Std 10761987. Dnes nejpouívanìjí verze je z roku 1993 a to pøesto, e je následovaly v letech 1999, 2000 a 2002 jetì dalí tøi verze. V této dobì je oèekáván nový standard. Ten vak jistì nebude mít vliv na aktuálnost toho, co si v této knize ukáeme. Blií podrobnosti o historii a vývoji jazyka VHDL je moné si pøeèíst v rùzné literatuøe, napø. [10]. Pro nás je podstatné, e nám jazyk VHDL umoní popsat øeení, které je tzv. syntetizovatelné. Tedy takové, které budeme schopni pøevést do podoby konfiguraèního souboru. Tento soubor nám pak po zavedení do hradlového pole zajistí fyzickou funkci respektující zadání. Základní vlastnosti jazyka VHDL jsou následující: • • • • •
Otevøený standard. Návrh mùe být zahájen bez znalosti cílového obvodu. Pøenositelnost kódu. Umonuje pøímou simulaci. Umoòuje implementaci do vybraného obvodu.
K zadání, které má program realizovat, pøistupuje jazyk VHDL jako k èerné skøíòce. Tu pak popisuje zvnìjku a zevnitø. Zvnìjku je to propojení pomocí tzv. vstupních a výstupních portù. Uvnitø pak je to popis chování, které zajiuje poadovanou funkcionalitu. Pokud se podíváme na monosti jazyka VHDL, musíme konstatovat, e jsou velmi rozsáhlé. Protoe vak tato kníka je urèena pro zaèáteèníky, je tøeba souèasnì zdùraznit, e není nutné znát vechno. U z mála lze vytvoøit zajímavé programy. Zaèínáme programovat Je známou zkueností, e programování se nedá nauèit teoreticky. Proto dále budeme postupovat øeením pøíkladù. Tento postup bude samozøejmì od nejjednoduího ke sloitìjím. Ná postup bude vyuívat jen to, co je bezpodmíneènì nutné. Jedná se o následující kroky. • • • •
Zaloení projektu. Vytvoøení zdrojových souborù. Kontrola syntaxe, tedy jestli vývojové prostøení rozumí tomu, co jsme napsali. Simulace. Ta nám slouí k odhalení, zda vývojové prostøedí nerozumí naemu programu jinak, ne jsme to mysleli. • Vytvoøení ucf souboru, který nám popisuje fyzické propojení naeho obvodu na vývody z pouzdra. • Vygenerování konfiguraèního souboru bit (pro hradlové pole) nebo mcs (pro konfiguraèní pamì). Tutoriál ukazuje mnohem více moností vývojového prostøení, ale to pøesahuje zámìr této knihy.
6
Jiøí Král: ØEENÉ PØÍKLADY VE VHDL Hradlová pole FPGA
A