VYSOKÉ UENÍ TECHNICKÉ V BRN BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKANÍCH TECHNOLOGIÍ ÚSTAV RADIOELEKTRONIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF RADIO ELECTRONICS PÍDAVNÝ DISPLEJ LCD K LABORATORNÍMU PÍPRAVKU S PROGRAMOVATELNÝM OBVODEM ADDITIONAL LCD Display for Laboratory Kit with a Programmable Device DIPLOMOVÁ PRÁCE MASTER’S THESIS AUTOR PRÁCE Bc. Jaroslav Pajskr AUTHOR VEDOUCÍ PRÁCE doc. Ing. Jaromír Kolouch, CSc. SUPERVISOR BRNO, 2008 2 3 LICENNÍ SMLOUVA POSKYTOVANÁ K VÝKONU PRÁVA UŽÍT ŠKOLNÍ DÍLO uzavená mezi smluvními stranami: 1. Pan/paní Jméno a píjmení: Bc. Jaroslav Pajskr Bytem: Husova 1402, Hradec Králové 8, 500 08 Narozen/a (datum a místo): 24. prosince 1983 v Hradci Králové (dále jen „autor“) a 2. Vysoké uení technické v Brn Fakulta elektrotechniky a komunikaních technologií se sídlem Údolní 53, Brno, 602 00 jejímž jménem jedná na základ písemného povení dkanem fakulty: prof. Dr. Ing. Zbynk Raida, pedseda rady oboru Elektronika a sdlovací technika (dále jen „nabyvatel“) l. 1 Specifikace školního díla 1. Pedmtem této smlouvy je vysokoškolská kvalifikaní práce (VŠKP):  disertaní práce  diplomová práce  bakaláská práce  jiná práce, jejíž druh je specifikován jako ...................................................... (dále jen VŠKP nebo dílo) Název VŠKP: Pídavný displej LCD k laboratornímu pípravku s programovatelným obvodem Vedoucí/ školitel VŠKP: doc. Ing. Jaromír Kolouch, CSc. Ústav: Ústav radioelektroniky Datum obhajoby VŠKP: __________________ VŠKP odevzdal autor nabyvateli*:  v tištné form – poet exemplá: 2  v elektronické form – poet exemplá: 2 2. Autor prohlašuje, že vytvoil samostatnou vlastní tvrí inností dílo shora popsané a specifikované. Autor dále prohlašuje, že pi zpracovávání díla se sám nedostal do rozporu s autorským zákonem a pedpisy souvisejícími a že je dílo dílem pvodním. 3. Dílo je chránno jako dílo dle autorského zákona v platném znní. 4. Autor potvrzuje, že listinná a elektronická verze díla je identická. * hodící se zaškrtnte 4 lánek 2 Udlení licenního oprávnní 1. Autor touto smlouvou poskytuje nabyvateli oprávnní (licenci) k výkonu práva uvedené dílo nevýdlen užít, archivovat a zpístupnit ke studijním, výukovým a výzkumným úelm vetn poizovaní výpis, opis a rozmnoženin. 2. Licence je poskytována celosvtov, pro celou dobu trvání autorských a majetkových práv k dílu. 3. Autor souhlasí se zveejnním díla v databázi pístupné v mezinárodní síti  ihned po uzavení této smlouvy  1 rok po uzavení této smlouvy  3 roky po uzavení této smlouvy  5 let po uzavení této smlouvy  10 let po uzavení této smlouvy (z dvodu utajení v nm obsažených informací) 4. Nevýdlené zveejování díla nabyvatelem v souladu s ustanovením § 47b zákona . 111/ 1998 Sb., v platném znní, nevyžaduje licenci a nabyvatel je k nmu povinen a oprávnn ze zákona. lánek 3 Závrená ustanovení 1. Smlouva je sepsána ve tech vyhotoveních s platností originálu, piemž po jednom vyhotovení obdrží autor a nabyvatel, další vyhotovení je vloženo do VŠKP. 2. Vztahy mezi smluvními stranami vzniklé a neupravené touto smlouvou se ídí autorským zákonem, obanským zákoníkem, vysokoškolským zákonem, zákonem o archivnictví, v platném znní a pop. dalšími právními pedpisy. 3. Licenní smlouva byla uzavena na základ svobodné a pravé vle smluvních stran, s plným porozumním jejímu textu i dsledkm, nikoliv v tísni a za nápadn nevýhodných podmínek. 4. Licenní smlouva nabývá platnosti a úinnosti dnem jejího podpisu obma smluvními stranami. V Brn dne: 30. kvtna 2008 ……………………………………….. ………………………………………… Nabyvatel Autor 5 Abstrakt Dležitou souástí íslicového zaízení je rozhraní, kterým uživatel mže kontrolovat stav zaízení, pípadn ho nastavovat. Existuje mnoho zpsob realizace takového rozhraní. Vtšinou se volí takové ešení, které postauje a je nejjednodušší. Nejastji je rozhraní realizováno pomocí displeje. Tato práce se zabývá návrhem desky pro pipojení vhodného LCD displeje k programovatelnému obvodu, návrhem ovládacího algoritmu displeje a návrhem jednoduchého rozhraní pro ovládání displeje. V práci jsou dva návrhy ovládání displeje. První využívá procesor PicoBlaze, ve kterém jsou implementovány všechny požadované funkce. Druhý je realizován stavovými automaty napsanými jazyku VHDL, který je ekvivalentní k prvnímu návrhu, ale proti prvnímu návrhu je rychlejší a vyžaduje mén hardwarových prostedk. Klíová slova Grafický LCD displej, Spartan 3, PicoBlaze, VHDL Abstrakt The main part of the digital application is its user interface. Users can check the status of the programme or change its state. There are many ways to obtain a suitable interface. During the design stage the simplest interface is chosen that provides the necessary functions. In most cases the interface contains a display. This diploma thesis deals with the design of an extension board to plug in a display to a programmable device, a control algorithm for the display and the design of a simple display interface. There are two ways to design software. The first of them is achieved by the processor PicoBlaze, which contains all the required functions. The second solution is by the state machine written in VHDL language. Both solutions can be used in the same way, but the latter solution is quicker and requires less hardware resources. Key words: Graphical LCD display, Spartan 3, PicoBlaze, VHD 6 Prohlášení Prohlašuji, že svou diplomovou práci na téma Pídavný displej LCD k laboratornímu pípravku s programovatelným obvodem jsem vypracoval samostatn pod vedením vedoucího diplomové práce a s použitím odborné literatury a dalších informaních zdroj, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvoením této diplomové práce jsem neporušil autorská práva tetích osob, zejména jsem nezasáhl nedovoleným zpsobem do cizích autorských práv osobnostních a jsem si pln vdom následk porušení ustanovení § 11 a následujících autorského zákona . 121/2000 Sb., vetn možných trestnprávních dsledk vyplývajících z ustanovení § 152 trestního zákona . 140/1961 Sb. V Brn dne 30. kvtna 2008 ............................................ podpis autora Podkování Dkuji vedoucímu diplomové práce doc. Ing. Jaromíru Kolouchovi, CSc. za úinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady pi zpracování mé diplomové práce. V Brn dne 30. kvtna 2008 ............................................ podpis autora 7 Bibliografická citace PAJSKR, J. Pídavný displej LCD k laboratornímu pípravku s programovatelným obvodem. Brno: Vysoké uení technické v Brn, Fakulta elektrotechniky a komunikaních technologií, 2008. 49 s. Vedoucí diplomové práce doc. Ing. Jaromír Kolouch, CSc. 8 Obsah 1. Úvod.............................................................................................................................. 9 2. adie displej LCD.................................................................................................... 10 2.1. Druhy LCD displej ............................................................................................. 10 2.2. Zapojení LCD displej ......................................................................................... 10 2.3. Ovládání adi LCD displeje.............................................................................. 12 2.4. Algoritmus inicializace a ovládání........................................................................ 15 3. Návrh pípravku........................................................................................................... 17 3.1. Vývojový kit.......................................................................................................... 17 3.2. Napojení LCD displeje k vývojovému kitu............................................................. 17 3.3. Kompletní návrh pípravku................................................................................... 19 3.4. Návrh plošného spoje ........................................................................................... 20 4. Blok ízení displeje s procesorem PicoBlaze ................................................................ 22 4.1. Procesor PicoBlaze .............................................................................................. 22 4.2. Schéma struktury propojení procesoru s displejem ............................................... 24 4.3. Program pro procesor PicoBlaze ......................................................................... 26 5. Blok ízení displeje realizovaný stavovým automatem ................................................. 38 5.1. Schéma základní struktury.................................................................................... 39 5.2. tení znaku z pamti ROM ................................................................................... 45 5.3. Píklad použití...................................................................................................... 47 6. Závr ........................................................................................................................... 48 7. Seznam literatury ......................................................................................................... 49 9 1. Úvod Dležitou souástí íslicového zaízení je rozhraní, kterým uživatel mže kontrolovat stav zaízení, pípadn ho nastavovat. Existuje mnoho zpsob realizace takového rozhraní. Vtšinou se volí takové ešení, které postauje a je nejjednodušší. Nejastji je rozhraní realizováno pomocí displeje. Tato práce se zabývá návrhem desky pro pipojení vhodného LCD displeje k programovatelnému obvodu, návrhem ovládacího algoritmu displeje a návrhem jednoduchého rozhraní pro ovládání displeje. 10 2. adie displej LCD Ovládání displeje tvoeného maticí bod je hardwarov i asov nároné, proto se používají adie displej. Tyto adie se ovládají pomocí sbrnice jednoduchými píkazy. adie obsahují pam, do které se ukládají hodnoty. Tyto hodnoty se pak pravideln vypisují na displej. Z toho vyplývá, že adi nepotebuje pravideln nastavovat, aby se na displeji zobrazily údaje, ale jen tehdy, je-li poteba zmnit zobrazené informace. To je jejich velká výhoda. 2.1. Druhy LCD displej Podle zpsobu ovládání a následné zobrazení na displeji lze rozdlit adie do dvou základních kategorií. Alfanumerické displeje Nejrozšíenjším alfanumerickým adiem je HD44780. Jeho ekvivalent je KS0066. S tímto adiem se prodávají displeje od 8x2 znak až do 40x4 znak. Podrobnjší informace o tomto adii jsou uvedeny v [7]. Obvod obsahuje pam DDRAM o velikosti 80x8 bit. V této pamti jsou uloženy adresy symbol, které se zobrazí na displeji. Každé adrese v pamti DDRAM odpovídá pozice na displeji. Pi bžné obsluze displeje se mní pouze data v této pamti. V pamti CGROM je uložena sada symbol. Tato pam je rozdlena na 2 ásti. Vtší ást o velikosti 9920 bit je pam ROM, ve které je uložena sada symbol od výrobce. Podle oznaení adie lze poznat, jakou sadou je vybaven. Menší ást pamti o velikosti 64 byte je pam RAM. Slouží k tomu, aby mohl uživatel definovat 8 vlastních symbol. Grafické displeje Grafických adi LCD displeje je více druh. Liší se pedevším velikostí zobrazovaného pole. Pro rozmr zobrazovaného pole 122x32 bod je uren adi SED1520. Obdobný obvod, pro rozmr 128x64, je adi KS0107. Oba adie mají podobné ovládání. Obsahují stejn jako u alfanumerického adie pam DDRAM, do které se ukládají zobrazovaná data. Tyto adie nemají pam CGROM. Do pamti DDRAM se ukládají jednotlivé osmibitové sloupce, které vyjadují zobrazený údaj. To znamená, že lze pímo vykreslit body na displej. Z toho ale vyplývá jedna nevýhoda. Pokud se bude na grafický displej psát text, musí se každé písmeno popsat 5 byty. Displeje s tmito adii mají rozdíln vyvedenou sbrnici a také mají rozdílné ovládací píkazy. 2.2. Zapojení LCD displej Alfanumerický displej CM1621 s adiem HD44780 Displej s tímto adiem má vyvedeno 16 vývod. Lze ho napájet ze zdroje naptí od 4,75 V do 5,25 V. Základní zapojení displeje s napájecím zdrojem je na Obr. 1, kde k VSS a VDD se pipojí napájecí naptí, VEE slouží k nastavení kontrastu, A a K je napájení podsvtlení displeje. ídící signály jsou RS, R/W a E. Datová sbrnice je tvoena vývody D0 až D7. Podrobnjší informace jsou uvedeny v [6] a [7]. 11 Obr. 1: Základní zapojení alfanumerického displeje Grafický displej GM12321 s adiem SED1520 Tento typ displeje má 20 vývod. Význam jednotlivých vývod je na Obr. 2. Rozmezí napájení je od 4,5 V do 5,5 V. Napájení se pivádí na vývody VSS a VDD. Rezistorem R1 lze nastavovat kontrast. Obvod má vyveden reset, datovou sbrnici D0 až D7 a ídící sbrnici s vývody A0, CS1, CS2, CL, RD, WR. Vývodem A0 se rozlišují data od píkazu. Pomocí CS1 a CS2 se vybírá, se kterou ástí displeje se bude pracovat. CL je externí taktování a RD a WR urují smr penosu dat. Podrobnjší informace o displeji a adii jsou uvedeny v [8] a [9]. Obr. 2: Základní zapojení grafického displeje s adiem SED1520 Grafický displej GM12641 s adiem KS0107 Stejn jako displej s adiem SED1520 má tento displej 20 vývod. Na Obr. 3 je uveden píklad zapojení displeje. Displej potebuje napájecí naptí v rozsahu od 4,5 V do 5,5 V. Napájení displeje je na vývodech VSS a VDD. Displej má vyvedeno záporné naptí, ze kterého se napájí LCD displej. Pomocí tohoto naptí se nastavuje kontrast na vývodu V0. Datovou sbrnici tvoí vývody D0 až D7. ídící sbrnice má DI pro rozlišení píkazu od dat 12 a R/W pro rozlišení smru penášených dat. Vývod E je taktování. Výbr ásti displeje zajistí vývody CS1 a CS2. Podrobnjší informace o displeji a adii jsou uvedeny v [10] a [11]. Obr. 3: Základní zapojení grafického displeje s adiem KS0107 2.3. Ovládání adi LCD displeje adi HD44780 LCD displej s tímto adiem má vyvedeno 16 vývod. Datová sbrnice má 8 bit. K ízení dat na datové sbrnici jsou 3 vývody. Pomocí vývodu E, zmnou své hodnoty z 1 do 0, se pevezmou data ze sbrnice a vykoná se instrukce. Vývod RS rozhoduje, jestli je pijímán píkaz nebo jsou penášeny data. ídící signál R/W uruje smr toku dat. Seznam instrukcí a další informace o displeji jsou uvedeny v [6] a [7]. Seznam instrukcí je v Tab. 1. Další informace k tomuto adii lze nalézt v [3]. Tab. 1: Seznam instrukcí adie HD44780 Instrukce RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Popis Výmaz displeje 0 0 0 0 0 0 0 0 0 1 Vymaže displej a nastaví DDRAM na 0 Návrat na pozici 0 0 0 0 0 0 0 0 0 1 - Nastaví DDRAM na 0, obsah displej se nezmní Mód posunu 0 0 0 0 0 0 0 1 I/D S Nastavení smru pohybu kurzoru Mód kurzoru 0 0 0 0 0 0 1 D C B B – blikání kurzoru, C – zapnutí kurzoru, D - zapnutí displeje Posun kurzoru 0 0 0 0 0 1 S/C R/L - - Pohyb kurzoru a posun dipleje bez zmny obsahu DDRAM Nastavení funkce 0 0 0 0 1 DL N F - - bit rozhraní–DL, poet ádek-N,rozmry pole -F Nastavení CGRAM 0 0 0 1 CGRAM adresa Data jsou poslána i pijata po tomto nastavení Nastaví DDRAM 0 0 1 DDRAM adresa Data jsou poslána i pijata po tomto nastavení 13 tení píznaku BF a adresy 0 1 BF CGRAM/DDRAM adresa BF – konec provádní píkazu, nastavená adresa Zápis dat do pamti 1 0 Zapisovaná data Zápíše data do CGRAM nebo DDRAM tení dat z pamti 1 1 Petená data Pete data z CGRAM nebo DDRAM Význam zkratek: I/D: 0 – zvyšování 1 – snižování S: 0 – bez posunu displeje 1 – posun displeje pi zápisu dat D: 0 – vypnutí displeje 1 – zapnutí displeje C: 0 – vypnutí kurzoru 1 – zapnutí kurzoru B: 0 – vypnutí blikání displeje 1 – zapnutí blikání displeje S/C: 0 – posun kurzoru 1 – posun displeje R/L: 0 – posun doleva 1 – posun doprava DL: 0 – 4 bitová komunikace 1 – 8 bitová komunikace N: 0 – 1 ádek 1 – 2 ádky F: 0 – 5x8 bod 1 – 5x10 bod BF: 0 – operace je ukonena 1 – operace probíhá adi SED1520 Tento adi je uzpsoben pro napojení k mikrokontroleru. Je vybaven ídícími signály /RD, /WR, /CS1 a /CS2, které umožují displej pipojit k externí datové a ídící sbrnici procesoru ady 80. K pipojenému displeji se pak program chová jako k externí pamti. Zmnou konfigurace lze LCD displej pizpsobit procesoru ady 68. Tento adi obsahuje pam DDRAM, ve které jsou uloženy data. Tato data vyjadují body, které se zobrazí. Neprovádí se zde piazení pole bod hodnot pamti podle sady znak, ale všechny znaky se musí pímo uložit do pamti DDRAM. To je uritá nevýhoda, protože obslužný program pro ovládání bude komplikovanjší, ale díky tomuto systému lze definovat libovolné znaky. V adii lze definovat adresu prvního ádku – Display start address. Díky tomu lze jednoduše rolovat text na displeji. Protože tento adi umí ovládat maximáln 72 sloupc, musí se celý displej o rozmrech 122x32 bod rozdlit na 2 asti. Displej pak obsahuje 2 stejné adie. Aby se rozlišilo, se kterým adiem se bude pracovat, jsou z displeje vyvedeny signály /CS1 a /CS2. Seznam instrukcí adie je uveden v Tab.2. Tab. 2: Seznam instrukcí adie SED1520 Instrukce A0 RD WR D7 D6 D5 D4 D3 D2 D1 D0 Popis Vypnutí displeje 0 1 0 1 0 1 0 1 1 1 0/1 1: zapne displej 0: vypne displej Poátení ádek 0 1 0 1 1 0 Adresa poátku (0 -31) Piadí adresu první zobrazované ádky v pamti Adresa stránky 0 1 0 1 0 1 1 1 0 page (0-3) Nastaví aktuální stránku Nastavení sloupce 0 1 0 0 Adresa aktuálního sloupce (0 – 72) Vloží do Column registru adresu aktuálního sloupce Stavový registr 0 0 1 B A O R 0 0 0 0 B: 0-eká, 1-pracuje A: 0-invertované, 1-pímé O: 0-zap. diplej, 1-vyp. R: 0-dipl.mode, 1-reset 14 Zápis dat 1 1 0 Zapsaná data Zapíše data do RAM tení dat 1 0 1 Petená data Pete data z RAM Volba ADC 0 1 0 1 0 1 0 0 0 0 0/1 0: CW –invert. zobr. 1: CCW- pímé zobrazení Statické ízení 0 1 0 1 0 1 0 0 1 0 0/1 0: statické ízení 1: normální ízení Pracovního cyklu 0 1 0 1 0 1 0 1 0 0 0/1 1: 1/32 0: 1/16 tení, zápis 0 1 0 1 1 1 0 0 0 0 0 tení/zápis je povoleno Konec 0 1 0 1 1 1 0 1 1 1 0 Konec tení/zápis Reset 0 1 0 1 1 1 0 0 0 1 0 Softwarový reset Datová sbrnice má pouze 8 bit, proto se musí pole 72x32 bod rozdlit na 4 stránky o rozmrech 72x8 bod. Informace o tom, jaká stránka je vybraná je uložena v registru page. Adresa v registru Column address udává sloupec, na který se zapíší data.Tímto zpsobem lze zobrazit kterýkoliv bod na displeji o rozmrech 122x32 bod. V [8] a [9] jsou uvedeny podrobnjší informace o displeji. adi KS0107 Tento adi je urený pro LCD displeje s polem 128x64 bod. Je rozšíenou verzí adie SD1520. Displeje s tmito adii mají rozdíln zapojené vývody. Liší se i instrukce. U sadie KS0107 není podpora napojení na sbrnici procesoru ady 80. Jeho ídící signály jsou R/W – volba smru posílaných dat, D/I – rozlišení, jestli se jedná o instrukci nebo o data, E – taktování, které zajišuje tení dat ze sbrnice po sestupné hran. Obvod má mén ovládacích instrukcí. adi má podobné ovládání jako adi SD1520. Také propojením dvou stejných adi se získá displej s dvojnásobným potem bod. Proto má displej s tímto adiem vývody CS1 a CS2 pro volbu mezi jednou nebo druhou plkou displeje. Aby adi mohl ovládat 64 ádk, má celkem 8 stránek, do kterých se mže zapsat 8x64 bit dat. Seznam implementovaných instrukcí je uveden v Tab. 3. Tab. 3: Seznam instrukcí adie KS0107 Instrukce D/I R/W D7 D6 D5 D4 D3 D2 D1 D0 Popis Vypnutí displeje 0 0 0 0 1 1 1 1 1 0/1 1: zapne displej 0: vypne displej Poátení ádek 0 0 0 1 Adresa poátku (0 -63) Piadí adresu první zobrazované ádky v pamti Adresa stránky 0 0 1 0 1 1 1 page (0-7) Nastaví aktuální stránku Nastavení sloupce 0 0 1 1 Adresa aktuálního sloupce (0 - 63) Vloží do Column registru adresu aktuálního sloupce Stavový registr 0 1 B L O R 0 0 0 0 B: 0-eká, 1-pracuje O: 0-zap. diplej, 1-vyp. R: 0-dipl.mode, 1-reset Zápis dat 1 0 Zapsaná data Zapíše data do RAM tení dat 1 1 Petená data Pete data z RAM 15 2.4. Algoritmus inicializace a ovládání adi HD44780 Ped zahájením ovládání adie je vhodné po pipojení napájecího naptí pokat 15ms. Poté se musí poslat displeji tyi instrukce, které nastaví mód komunikace. Lze nastavit 4-bitovou nebo 8-bitovou komunikaci. Dále se pi inicializaci posláním instrukce displej vypne. Následuje instrukce pro vymazání displeje. Vývojový diagram inicializace je na Obr. 4. Obr. 4: Vývojový diagram inicializace displeje s adiem HD44780 Po inicializaci se do pamti DDRAM uloží hodnoty, které budou zobrazeny. Podle konfigurace se pohybuje kurzor po displeji a nastavuje se adresa zápisu. Pi vhodném nastavení lze nastavit adresu zápisu do místa, kde se má zobrazit první symbol a pak se opakovaným zápisem dat kurzor automaticky posouvá. Díky tomuto nastavení není poteba mnit pozici zápisu pi každé zapsané hodnot. adi SED1520 Tento adi nemá uvedeno v katalogovém listu potebnou dobu aktivace po pipojení napájecího naptí. Proto je zvolena tato doba 20 ms. Tato hodnota se oví pi práci s displejem. Ped zahájením jakékoliv komunikace s displejem se musí vyslat instrukce start a pro ukonení komunikace se musí vyslat instrukce konec. Po zotavení displeje se displej instrukcí zapne, další instrukcí se resetuje a poté se nastaví adresa první zobrazované ádky. Dále je vhodné nastavit zpsob automatického nastavování adresy aktuálního sloupce. Nyní je možné zahájit naítání zobrazovaných dat do displeje. Zde se nejprve musí zvolit ádek, do kterého se bude zapisovat. Dále se musí nastavit adresa sloupce, do kterého se uloží data a poté se mohou zaít posílat postupn data. Pokud se dojde na konec ádku a nezmní se adresa aktuálního ádku, dojde k postupnému pepisování už zapsaných dat. Proto se s tím musí poítat a na konci ádku nastavit adresu dalšího ádku. Po nastavení všech ádk a sloupc se ukoní komunikace instrukcí konec. Pi nastavování zobrazení se nesmí zapomenout na to, že je displej rozdlen na 2 ásti, které se rozlišují vývody CS1 a CS2. To znamená, že pokud by se mnil celý jeden ádek, tak pro nastavení první poloviny musí být aktivní CS1 a pro dokonení ádku musí být aktivní CS2. Ovládání obou polovin displeje je stejné. Vývojový diagram inicializace adie je na Obr. 5. 16 Obr. 5: Vývojový diagram inicializace displeje s adiem SED1520 adi KS0107 Hlavní rozdíl ovládání adie vi pedchozímu adii je v zahajování a ukonování komunikace. Tento adi má výrazn mén instrukcí a zde už nejsou instrukce pro zahájení a ukonení komunikace. Zde se také mže displej vypnout i nastavit adresu první zobrazované ádky, ale nelze tento adi softwarov resetovat. adi má výrazn jednodušší ovládání. Po pivedení napájení se opt musí pokat, dokud se obvod nezotaví. Po zotavení se nastaví adresa aktuálního ádku a adresa aktuálního sloupce. Dále je také možné data uložit. V katalogovém listu [10] se nepíše o tom, že by se adresa aktuálního sloupce automaticky mnila po zápisu dat. Proto se zejm musí vždy zapsat adresa sloupce ped každým zápisem dat. To je proti adii SED1520 drobná komplikace. Znamená to vtší poet penesených dat a tím i pomalejší zmnu zobrazovaných dat. Vývojový diagram inicializace je na Obr. 6. Obr. 6: Vývojový diagram inicializace displeje s adiem KS0107 17 3. Návrh pípravku 3.1. Vývojový kit SPARTAN 3 Základním obvodem vývojového kitu Spartan 3 je XC3S200. Tento obvod má nkolik ástí. Mezi nejdležitjší patí IOB – I/O bloky, CLB – funkní bloky pro obecné použití, propojovací struktura a další speciální prvky. Mezi nejdležitjší speciální prvky patí bloky pamti RAM po 18 kb, celkem až 1872 kb. Dále bloky DLL pro kompenzaci zpoždní hodinových signál. Obsahuje i hardwarové násobiky pro 18x18 bit. Mže mít maximáln 104 hardwarových násobiek. Vývojový kit obsahuje nkolik dalších komponent. Má pam PROM o velikosti 2 Mbit. Další souástí je asynchronní pam SRAM s velikostí 1 Mbyte. Pípravek je vybaven VGA portem s možností nastavení 8 barev. Umožuje také komunikaci pes rozhraní RS232 pomocí RS232 sériového portu a devíti vývody. Dále je na pípravku konektor pro pipojení klávesnice nebo myši s rozhraním PS2. Pro zobrazení jednoduchých výsledk má pípravek tyi sedmisegmentové displeje. Pípravek lze ovládat osmi spínai a má vyvedeno i 8 indikaních LED diod. Další rozšíení pípravku je možné pomocí tí port se tyiceti vývody. rozšiujících konektor. Podrobnjší informace o pípravku Spartan 3 jsou uvedeny v [4]. XC2-XL Tento vývojový kit obsahuje dva obvody CPLD. Jedním z nich je obvod CoolRunner- II XC2C256 v pouzdru TQ144 a druhým je XC9572XL v pouzdru VQ44. Vývojový kit má vyvedeny tyi 40 pinové rozšiující porty, kde jsou ti pipojeny k obvodu XC2C256 a jeden k XC9572XL. Oba obvody lze programovat rozhraním JTAG. Taktování obou obvod je zajištno oscilátorem o frekvenci 1,8432 MHz, kde zmnou taktovacího obvodu lze zvýšit frekvenci taktování až na 100 MHz. Ke každému obvodu je pipojeno tlaítko, umístné na desce kitu, které lze libovoln použít. Dále každý obvod ovládá jednu LED diodu, která je taky SW dostupná. Obvod XC2C256 je navržen pro napájecí naptí 1,8 V. Obsahuje celkem 256 makrobunk a v pouzdru TQ144 má 118 univerzálních vývod. Výstupní piny lze nakonfigurovat do nkolika mód. Pro pipojení displeje pipadá v úvahu pouze mód LVCMOS33 nebo LVTTL. Další informace o celému pípravku lze nalézt v [5]. 3.2. Napojení LCD displeje k vývojovému kitu LCD displej je možné pipojit k vývojovému kitu pouze pomocí rozšiujících konektor. Napové úrovn adie LCD displej jsou 0 V nebo 5 V. Vývojový kit s CPLD nebo FPGA nepracuje s rovní 5 V, ale mže se nastavit režim výstupu LVCMOS33, který zmní vstupní i výstupní úrovn na 3,3 V. S tím mohou být problémy, kdyby použitý LCD displej ml rozhodovací úrovn jako obvody CMOS. Pak by 3,3 V považoval za neuritý stav a displej by se nemohl ovládat. Displej s adiem SED1520 má rozhodovací úrovn jako TTL logické obvody. Zbylé dva adie mají rozhodovací úrovn jako CMOS obvody. Proto je jednodušší pipojit k programovatelnému obvodu displej GM12321 s adiem SED1520. 18 Navrhované zapojení na Obr. 7 má pipojeny ochranné odpory pouze u vývod D0 až D7, protože zbylé vývody jsou vždy vstupy. Obr. 7: Navrhované schéma zapojení Pokud by bylo poteba pipojit displej, který má rozhodovací úrovn jako CMOS obvody, musel by se pipojit mezi vývojový kit a LCD displej napový pevodník. Použitelný napový pevodník by byl 74HCT245, který je napájen z 5 V a má rozhodovací úrovn jako TTL logické obvody. Problém by mohl nastat pi obousmrné komunikaci, protože obvod umožuje penos pouze jedním nebo druhým smrem. Díky vstupu displeje R/W, kterým se petou data z displeje, lze ídit i nastavení pevodníku. Na Obr. 8 je schéma zapojení navrhovaného obvodu s pevodníky naptí pro pipojení LCD displeje s adiem KS0107. Obvod IC1 je stále nastaven tak, aby byly výstupy aktivní a smr toku dat je od vývojového kitu k displeji. Obvod IC2 slouží pro oddlení datové sbrnice. Smr dat se nastavuje podle úrovn signálu R/W, kterým se konfiguruje displej. Obr. 8: Navrhované schéma zapojení s napovým pevodníkem 19 3.3. Kompletní návrh pípravku Byl vybrán displej GM12321, který obsahuje adi SED1520. V celkovém schématu je pidán zdroj záporného naptí, tvoený obvodem 7660, který pln vyhovuje pro napájení odporového dlie pro nastavení kontrastu. Dále displej GM12321 vyžaduje externí oscilátor 2 kHz. Oscilátor je realizován obvodem LM555 a je jím realizován astabilní klopný obvod. Displej je pipojen k jednomu rozšiujícímu portu, který má 40 pin. Zapojení vývod rozšiujících port je v [12]. Na Obr. 9 je celkové navrhované schéma modulu. Obr. 9: Celkové navržené schéma zapojení Kmitoet oscilátoru je dán odpory R11 a R13 a kondenzátorem C9. Pro piblížení se stíd 1:1 byla do zapojení dodána dioda D1. Výpoet kmitotu je dán vztahem (1), kde t1 a t2 jsou dány vztahem (2) a (3). Tyto vztahy jsou odvozeny v [13]. 21 1 tt f   , [Hz; s, s] (1) )2ln(*9*111 CRt  , [s; , F] (2) ) *3 *3*2ln(*9*132 UdUcc UdUccCRt    , [s; , F, V, V] (3) Do vztahu (3) bylo za Ud zvoleno 0.6 V a Ucc 5 V. Hodnoty odpor byly vybrány z ady E24. Odpor R13 byl zvolen 2,7 k , R11 dopoítán a jeho hodnota je 3,6 k . Kapacita kondenzátoru C9 byla zvolena 100 nF. Ochranné odpory R3 až R10 byly zvoleny 330 . Maximální proud z pinu displeje je daný vztahem (4a) pi nekonfliktních úrovních a vztahem (4b) úrovových kolizích. 20 mAVUCCI 5 330 3,35 330 3,3 max       , [A; V, ] (4a) mAUCCI 15 330 5 330max    , [A; V, ] (4b) 3.4. Návrh plošného spoje Navržený plošný spoj má rozmry 100x65 mm a je na Obr. 10 s pedlohou pro osazení na stran plošného spoje na Obr. 11 a s pedlohou osazení na stran souástek na Obr. 12. Obr. 10: Navržená deska plošného spoje Obr. 11: Pedloha pro osazení souástek ze strany plošného spoje 21 Obr. 12: Pedloha pro osazení souástek 22 4. Blok ízení displeje s procesorem PicoBlaze Základním úkolem bloku ízení je propojení pin externího portu, kam je pipojen displej, s procesorem PicoBlaze. Pedpokládá se pipojení desky displeje na port B1 vývojového kitu Spartan 3. Deska displeje nevyužívá všechny piny portu B1. Využité piny jsou dány návrhem desky v kapitole 3. Dále tento blok ízení vytváí obousmrnou datovou a ídící sbrnici pipojenou k displeji. Tento blok ízení bude obsahovat rozhraní mezi procesorem PicoBlaze a okolím, které se bude monitorovat. Protože displej GM12321 nemá font symbol, je nutné v této ásti také pipojit k procesoru pam ROM, ve které budou definovány jednotlivé symboly. 4.1. Procesor PicoBlaze Jedná se o procesor osmibitový s 16 univerzálními datovými registry. Velikost programové pamti mže být až 1000 instrukcí pro obvody FPGA a 256 instrukcí u CPLD obvod. Obsahuje 8 bitovou aritmetickou jednotku s píznaky ZERO a CARRY. Dále obsahuje 64 B interní pamti RAM. Umožuje adresovat až 256 okolních osmibitových zaízení, vstupních i výstupních. Stack pointer dovoluje volat až 31 podprogram najednou. Tento procesor pi taktovací frekvenci 200 MHz v obvodu FPGA dosahuje výkonnosti 100 MIPS. Odezva na perušení není delší než 5 takt oscilátoru. Základní blokové schéma procesoru je na Obr. 13. Obr. 13: Blokové schéma procesoru PicoBlaze Implemetace procesoru PicoBlaze do CPLD Procesor PicoBlaze se skládá z nkolika modul napsaných v jazyku VHDL. Všechny moduly spojuje soubor PicoBlaze.vhd. Po natení hierarchie celého procesoru lze vygenerovat schématickou znaku. Tato schématická znaka má vyvedenu adresní a datovou sbrnici pro pipojení pamti programu. Pam programu se vygeneruje programem asm.exe, který byl stažen spolu s moduly procesoru PicoBlaze. Tato pam je v kódu VHDL. Na Obr. 14 je znázornn procesor PicoBlaze pro obvody CPLD s rozšíením pro jednoduché testování. 23 Obr. 14: Schéma procesoru PicoBlaze pro otestování funkce v obvodu CPLD Procesor má dále vyveden taktovací vstup, resetovací vstup, vstup pro volání externího perušení, vstupní port, potvrzovací signál externího perušení a bránu PORT_ID, která slouží pro urení adresy portu. Díky jednoduchému programu bylo oveno, že procesor PicoBlaze byl do obvodu CPLD peložen dobe a chová se podle zadaného programu. Program mnil rychlost blikání LED diody podle stavu pomocného tlaítka Implemetace procesoru PicoBlaze do vývojového kitu Spartan 3 Procesor PicoBlaze pro obvody FPGA má odlišný zdrojový kód. Na stránkách firmy Xilinx lze získat zdrojový kód procesoru, který už v sob obsahuje pam programu. Zdrojové soubory mají oznaení kcpsm3.vhd a MCU.vhd a soubor s pamtí programu má oznaení prog_ROM.vhd. Na Obr. 15 je znázornno schéma pro jednoduché otestování procesoru v obvodu FPGA. Obr. 15: Schéma procesoru PicoBlaze pro otestování funkce v obvodu FPGA 24 4.2. Schéma struktury propojení procesoru s displejem Pro základní ovládání LCD displeje s adiem SED1520 se vyžaduje pouze zápis dat z datové sbrnice ídícími signály. Z displeje lze íst aktuální zobrazované body, ale i registr, ve kterém jsou informace o souasném stavu. Pro jednoduché ovládání není nutné íst z displeje data. Tím se velmi zjednoduší blok ízení, protože mezi procesorem a displejem bude jen multiplexer s výstupní pamtí. Schéma jednoduché struktury propojení procesoru s displejem je na Obr. 16. Obr. 16: Schéma napojení procesoru PicoBlaze k displeji Celý návrh byl pojat jako ovlada s jednoduchým nastavením a minimální nutnou obsluhou. Program v procesoru PicoBlaze podle stav vstup VOLBA_0 až VOLBA_2 zpracuje vstupní data IN_DATA a ídící signály CONT_CS0, CONTR_CS1 a CONTR_A0 pi vzestupné hran vstupního signálu IN_DATA_CLK. Po pijetí a zahájení zpracování je programem nastaven signál BUSY_OUT. Tímto signálem se íká pedchozímu bloku, že další zapsaná data budou ignorována a pedchozí blok musí pokat na jeho sestupnou hranu. LCD displej je pipojen k procesoru datovou sbrnicí LCD_DATA_OUT a ídícími signály LCD_A0_OUT, LCD_CS0_OUT, LCD_CS1_OUT, LCD_WR_OUT a LCD_RD_OUT. Implementované funkce Použitý grafický LCD displej GM12321 vyžaduje dodržet asovou posloupnost pivedených dat tak, aby displej tyto data spolehliv a správn peetl. Protože dodržení asové posloupnosti pivedených dat by zbyten zvyšovalo nároky na zdroj dat, byly do algoritmu v procesoru zahrnuty funkce pro zápis dat dle doporuení v katalogovém listu displeje [9]. Dále LCD displej rozlišuje 2 typy dat. Jedním typem jsou konfiguraní a druhým jsou data urená pro zobrazení. Rozlišováním typ dat by opt zbyten zvyšovalo nároky na zdroj dat, a proto i toto rozlišení dat zajistí algoritmus v procesoru. LCD displej je rozdlen do dvou stejných ástí. Volba ástí je zajištna vstupy CS0 a CS1. Konfigurací displeje lze nastavit libovolný ádek a libovolný sloupec na který se zapíší data. Displej má funkci automatického posouvání sloupce. Díky této funkci není nutné zadávat íslo nového sloupce po každém odeslání dat pro zobrazení a hodnota sloupcového registru se automaticky zvýší o 1. Pi odesílání souvislých dat se musí ošetit pechody mezi jednotlivými ástmi, pípadn automaticky pejít na nový ádek. Z toho vyplývá, že algoritmus musí uchovávat informace o aktuálním ádku a sloupci, aby bylo možné urit, kdy je poteba odesílat data druhé ásti displeje. 25 Algoritmus by bylo dobré vybavit i možností nastavení nového ádku, pípadn nastavení poátku displeje, aby zdroj dat dokázal jednodušeji obsluhovat displej. Tyto funkce ukládají nastavení pímo do pamti displeje a souasn nastaví hodnoty ádku a sloupce v algoritmu, aby algoritmus ml správná data a pepínal mezi ástmi displeje podle skuteného stavu displeje. Displej nemá zabudovanou žádnou tabulku znak. Píchozí data, urená pro zobrazení se na displeji objeví v podob sloupce vysokého 8 pixel. Pokud aplikace vyžaduje zobrazit symboly, musela by pevést íslo symbolu do šestice po sob jdoucích dat, které vyobrazí požadovaný znak. Tento požadavek by zvyšoval náronost obsluhy displeje, proto by ovlada displeje ml umt pevést vstupní íslo na znak. Aby zdroj dat mohl stále displej nakonfigurovat jinak, než je pednastaveno, ml by umt pedat všechny ídící a datové signály v nezmnné podob displeji. Z pedchozího rozboru je patrné, že pro snadné obsluhování displeje je poteba, aby algoritmus ml funkci nulování, nastavení dalšího ádku, nastavení libovolného sloupce a ádku, automatický posuvník, vkládání znak z pamti ROM a pímé vkládání dat do pamti displeje. Realizace IN_MUX Procesor PicoBlaze má 8 bitový vstupní port s možností volby až 256 adres daných adresovým portem. Blok IN_MUX je brána mezi vstupem procesoru a okolím. Podle požadovaných funkcí celého bloku ízení displeje jsou vyžadovány ti 8 bitové porty. Blok IN_MUX je 8 bitový registrový multiplexer, který zachytává data pi nábžné hran vstupu PROC_READ_STROBE. První port jsou vstupní data, druhý port jsou data z pamti ROM a tetí port jsou ídící signály IN_VOLBA_0, IN_VOLBA_1, IN_VOLBA_2, IN_CONTR_CS0, IN_CONTR_CS1, IN_CONTR_A0 a IN_CLK. Na výstup bloku se pepnou data podle aktuálního stavu PROC_ADR. Protože je šíka adresové sbrnice 8 bit, písluší pro zjednodušení každému vstupnímu portu 1 vodi sbrnice. Realizace OUT_MUX Použitý procesor má 8 bitový výstupní port. Také lze volit až 256 adres pi zápisu na port. Blok OUT_MUX zajistí zapamatování výstupního portu pi dané adrese. Požadované funkce vyžadují minimáln 3 porty. První port je pro výstup dat k displeji LCD_DATA, druhý port ROM_ADR generuje adresu pro pam ROM a na tetím portu jsou ídící signály pro displej LCD_A0, LCD_CS0, LCD_CS1, LCD_WR, LCD_RD a také ídící výstup BUSY_OUT, který dává informaci pedchozímu bloku, že ovlada displeje pracuje a nemže pijímat další data. Pam ROM s fontem symbol V návrhu byla použita šablona ze systému ISE pro snadné vytvoení pamti ROM s požadovanou velikostí. V [14] je uvedeno, kde lze získat šablonu. Šíka adresní sbrnice udává maximální poet symbol v pamti. Pro ukázku byl vytvoen íselný font s písmeny A až F. Aby se mohl navrhovaný algoritmus programu co nejvíce zjednodušit, bylo pidleno jednomu symbolu 8 adresových míst. Celý znak vyžaduje jen 6 pamových míst. Sice nejsou využity 2 Byte v pamti na každý symbol a velikost pamti je proto o tetinu vtší, ale tento systém umožuje rychle oddlit adresu znaku od adresy jednotlivých sloupc znaku. Tato velká výhoda zastíní mírné zvýšení 26 velikosti ROM. Pokud by byl vyžadován vtší znakový font, je nutné rozšíit adresní sbrnici. To by znamenalo, že by modul OUT_MUX musel být rozšíen o další port, který by udával vyšší byte adresy. Implementace do obvodu CPLD Pro implementaci procesoru PicoBlaze do obvodu CPLD bylo navrženo schéma zapojení, na kterém by se ovila funkce navrženého programu. Bhem pekladu kódu pro obvod XC2C256 došlo k chyb, protože tento obvod je malý a proto nemohlo být oveno navrhované schéma s programem. 4.3. Program pro procesor PicoBlaze Procesor PicoBlaze podle navrhovaného schéma zapojení má pipojen displej na dvou osmibitových portech. Adresa datového vstupu displeje je 1 a adresa ovládacího registru je 2. Adresa pro pam ROM je 4. Díky tomuto adresování se urí, do kterého výstupu se pošlou data. Pomocný signál BUSY-OUT nesouvisí s ídícími signály pro LCD displej, ale protože je zbytené pro 1 bitový signál rezervovat další celý port, byl tento signál pidán k ídícím signálm LCD displeje. Na to je teba pamatovat pi jakékoliv zmn ídících signál LCD displeje. Funkce zápisu dat Výrobce displeje uvádí, že se displej mže pipojit ke sbrnici procesoru ady 80 nebo ke sbrnici procesoru ady 68. Pro každý typ sbrnice platí jiná pravidla komunikace. Volba sbrnice se provádí nastavením jednoho vstupu sbrnice. Byla zvolena sbrnice pro procesor ady 80. Sbrnice pro procesory ady 80 obsahuje šestnáctibitovou adresní sbrnici a osmibitovou datovou sbrnici. Dále je ídící sbrnice tvoena signály /WR, /RD a ALE. K displeji je pipojena datová sbrnice, signály /RD a /WR. Z adresní sbrnice se pomocí adresového dekodéru musí generovat signály CS1, CS2 a A0, kterými se vybírá, která ást displeje se bude mnit a jestli se budou odesílat displeji data nebo píkaz. Podrobnjší informace jsou uvedeny v [9]. Displej v módu sbrnice pro procesory ady 80 potebuje ped zahájením penosu nastavit vstupy A0 a CS. Dále se musí nastavit vstup pro tení nebo zápis pes vývody RD a WR. Aby displej byl správn nastaven, musí se po nastavení A0 a CS pokat 20 ns, než se mže nastavit signál pro zápis nebo tení. Platná data musí být nastavena na datové sbrnici minimáln 80 ns ped nábžnou hranou a 10 ns po nábžné hran signálu RD. Tento signál musí být v úrovni L po dobu 200 ns. Po nábžné hran signálu RD se mže zmnit pedvolba vývod A0 a CS, ale nemžou se zapisovat další data. Další data se mžou zapsat až za 800 ns. V této dob se nepoužívá sbrnice a proto lze zapisovat do druhé ásti displeje. Na Obr. 17 je graficky znázornna posloupnost ídících signál pi ukládání dat. 27 Obr. 17: asový diagram ídících signál pi zápisu i tení dat Funkce pro zápis musí mít zadaná data, která se budou penášet a ukládat v displeji a nastavení ídících signál A0, CS0 a CS1. Data, která se uloží v displeji se musí uložit ped voláním funkce do registru Data. V registru Predvolba musí být nastaveny bity signál A0, CS0 a CS1. Tímto registrem se uruje, zda se bude displej nastavovat a posílat píkaz nebo se data zapíší do pamti RAM displeje. V této funkci musí být realizováno zpoždní. Taktovací frekvence procesoru je ve vývojovém kitu Spartan 3 je 50 MHz. Vykonání jedné instrukce vyžaduje 2 strojové cykly. Potom vykonání jedné instrukce trvá 40 ns. Proto pro zpoždní 10 ns nebo 20 ns nebude poteba realizovat funkci zpoždní. Zpoždní 200 ns je vytvoeno nkolika instrukcemi Nop. Zpoždní 800 ns by vyžadovalo píliš mnoho instrukcí Nop, proto je vytvoena smyka, kterou se vícekrát provede stejný úsek programu. Vývojový diagram funkce je na Obr. 18. Obr. 18: Vývojový diagram funkce pro zápis dat Inicializace displeje Displej GM12321 nevyžaduje složitou inicializaci. Pokud není poteba jiné nastavení, než je automaticky nastaveno po zapnutí napájení, pak staí displej pouze smazat a píkazem aktivovat zobrazování. Displej je nutné smazat, protože se obsah interní pamti automaticky nenuluje po pipojení napájení. Pokud byl displej dlouho vypnutý, po jeho zapnutí je obsah displeje vynulován a nesvítí žádné pixely. Pokud bylo perušeno napájení jen krátce, obsah na displeji je nedefinovaný a proto je nutné ho po každém zapnutí smazat. Vývojový diagram funkce pro inicializaci displeje je na Obr. 19. 28 Obr. 19: Vývojový diagram funkce pro inicializaci displeje Detekce nábžné hrany Jedním z dležitých vstupních signál je taktovací vstup. Tímto signálem je procesoru sdleno, že na jeho vstupech jsou platná data, okamžit zahájí svou innost a podle aktuálního stavu vstup pedá vstupní data LCD displeji. Doba reakce procesoru pímo závisí na zpsobu provedení algoritmu pro detekci impulzu. Aby se zabránilo opakovanému vykonávání píkazu, kdyby zdroj dat ml pomalé reakce a nechal aktivující úrove delší dobu než ovlada potebuje k pedání dat, je vhodné, aby procesor reagoval pouze na zmnu úrovn taktovacího pulzu. Byl zvolen algoritmus detekce hrany s využitím instrukce XOR. Díky této instrukci lze urit, jestli jsou bity ve dvou registrech shodné nebo rozdílné. Když se budou porovnávat 2 bity, kde jeden bude aktuální a druhý jeden takt zpoždný, potom se touto instrukcí detekují nábžné a sestupné hrany. Proto po detekci zmny úrovn se musí provést druhý test, kterým se zjistí, jestli šlo o vzestupnou nebo sestupnou hranu. Je možné detekovat hranu i dalším zpsobem. Testovalo by se, jestli zpoždný bit je nula a aktuální je jedna. Výsledný algoritmus by bu vyšel stejn jak algoritmus s funkcí XOR nebo by vyšel s rychlejší reakcí, ale muselo by se pedpokládat, že se nezmní hodnota registru bhem vykonávání píkazu a to by mohlo vytváet záludné chyby. Proto je v návrhu algoritmus s instrukcí XOR. Na Obr. 20 je vývojový diagram detektoru vzestupné hrany. 29 Obr. 20: Vývojový diagram funkce pro detekci nábžné hrany Jedná se o blokující funkci, která pestane blokovat procesor, jakmile detekuje nábžnou hranu. Ve své blokující smyce cyklicky te ze vstupu, kam je pipojen vstupní taktovací signál. Perioda vzorkování je 5 instrukcí, pi sestupné hran probhne 7 instrukcí do dalšího tení. Ve vývojovém diagramu je malá nepesnost. Test registru RE je proveden funkcí XOR a vyhodnocen až za zkopírováním obsahu RC do RE. Logický souin registru RC a masky taktovacího pulzu se provádí pouze pro generování píznakových bitu pro následující rozhodování. Zpracování píkaz Jakmile je detekována vzestupná hrana taktovacího pulzu, znamená to, že na vstupech je platná pedvolba a jsou platná data. Tento blok programu zpracuje a vyhodnotí píkaz, který je volen vstupními signály IN_VOLBA_0, IN_VOLBA_1, IN_VOLBA_2. Je nutné, aby program v co nejkratším ase uchoval stav vstupních dat. Tím se zkracuje nutná doba udržení pedvolby od zdroje dat. Protože vstupy volby píkazu a kontrolní vstupy pro pímé ovládání displeje IN_CONTR_CS0, IN_CONTR_CS1, IN_CONTR_A0 jsou sdruženy na jednom portu, je nutné tyto nesouvisející vstupy oddlit. Nejsnáze lze toho docílit vhodnou maskou s následnou rotací registru. Když jsou kód volby a kontrolní vstupy oddleny, následuje rozvtvení algoritmu na zpracování a pedání dat displeji podle hodnoty kódu volba. Vývojový diagram bloku je na Obr. 21. 30 Obr. 21: Vývojový diagram funkce pro zpracování a vykonání píkazu Funkce automatický posuvník Tato funkce zajistí plynulý pohyb vkládaných dat po celém displeji. Pi této volb procesor automaticky pepíná ásti displeje podle aktuální polohy kurzoru a po posunutí kurzoru na konec ádku se automaticky posune na nový ádek. Aby procesor dokázal rozpoznat, kdy je poteba zapisovat do druhé ásti displeje a souasn nemusel ped každým zapsaným sloupcem íst z displeje aktuální íslo sloupce, je nutné, aby procesor uchoval tuto informaci v pamti. Tímto bohužel vzniká zdroj možný problém. Kdyby zdroj dat nevyužil pedpipravené funkce na zmnu polohy kurzoru a zmnil polohu pímým zapsáním displeji, program v procesoru by pedpokládal jiný aktuální sloupec a ádek a došlo by k chybnému pechodu z jedné ásti displeje na druhou. Správným ovládáním ovladae displeje k tomu nemže dojít, proto výhody tohoto ešení pevažují. Tento jediný problém by se dal ešit. Procesor by odposlouchával, co se posílá displeji a potebné informace by odchytil a uložil. 31 V pípad poteby je možné tuto funkci v programu realizovat. Vývojový diagram automatického posuvníku je na Obr. 22. Obr. 22: Vývojový diagram automatického posuvníku Algoritmus je koncipován tak, že LCD displej je nakonfigurován od pedchozí komunikace a je možné hned zapsat data, která se zobrazí. Podle hodnoty aktuálního ádku se urí, do které ásti displeje se má zapisovat. Po zapsání dat se automaticky zvýší hodnota registru Sloupec o 1 a následn se provádí test, jestli další data by se nezapsala mimo rozsah displeje. Pokud hodnota sloupce nezasahuje mimo rozsah displeje, slouí se aktuální pozice sloupce s píznakem rozlišujícím aktivní ást displeje. Pi pekroení rozsahu displeje se testuje, jestli je kurzor na konci ádku nebo v plce. Pokud je na konci ádku, zvýší se registr Radek o 1 a registr Sloupec se vynuluje. Nové hodnoty registr Sloupec a Radek se zapíší do jedné ásti displeje podle píznakového bitu v registru RC. Následuje slouení píznakového bitu v RC s registrem Sloupec a opuštní funkce. 32 Funkce zápisu pímých dat Pímá data se zapíší ze vstup IN_CONTR_CS0, IN_CONTR_CS1, IN_CONTR_A0 a IN_DATA na výstupy LCD_A0, LCD_CS0, LCD_CS1 a LCD_DATA. Funkce dodrží veškeré asové zpoždní pro správné uložení dat. Vývojový diagram funkce je na Obr. 23. Obr. 23: Vývojový diagram algoritmu vkládání pímých dat Algoritmus uloží do registru nutnou pedvolbu pro zachování požadovaného stavu vývod RB, WR a výstupu BUSY_OUT. Dále se provede logický souet registru RB s pedvolbou RC. Na závr se odešlou data displeji. Funkce nulový ádek a nulový sloupec Tato funkce vynuluje registry Radek a Sloupec a uloží nové hodnoty do displeje. Tím se dostane kurzor na poátek displeje, aniž by se zmnil jeho obsah. Vývojový diagram této funkce je na Obr. 24. Obr. 24: Vývojový diagram algoritmu nulování sloupce a ádku 33 Ve funkci se v úvodu vynulují promnné Radek a Sloupec a podle jejich hodnot se provede v displeji pedvolba, podle které se následující data zapíšou na poátek displeje. Dále se oddlí od promnné Sloupec píznak, který íká, do které ásti se má zapsat. Podle tohoto bitu se zvolí CS0 nebo CS1. V závru je displej nastaven na poátek prvního ádku. Funkce nový ádek Tato funkce je velmi podobná té pedchozí, protože po zmn ísla ádku s maskováním 0x03, které zajistí pi neustálém piítání jedniky postupnou zmnu ísel v intervalu 0 až 3, jsou nové hodnoty zapsány displeji. Vývojový diagram této funkce pro nastavení nového ádku je na Obr. 25. Obr. 25: Vývojový diagram algoritmu nastavení nového ádku Funkce uživatelský ádek uživatelský sloupec Tatro funkce opt zjednodušuje vkládání dat do uritého místa na displeji. Zdroj dat mže nastavit pozici, kam se mají následující data uložit. Informace o íslu sloupce se oekává na vstupu IN_DATA a ádek je uložen na vstupech IN_CONTR_CS0, IN_CONTR_CS1. Vývojový diagram je hodn podobný pedchozím dvma, rozdíl je jen v úvodním bloku, kde se nastavují hodnoty promnných Sloupec a Radek. íslo sloupce se musí upravit tak, aby íslo sloupce odpovídalo skutenosti. Jedna polovina použitého displeje má 62 sloupc. Celý algoritmus pedpokládá, že displej má 64 sloupc. Je proto nutné v pípad pekroení hodnoty 62 piíst hodnotu 2, aby nastavený poet odpovídal skutenosti. Na Obr. 26 je uveden zaátek algoritmu funkce uživatelský ádek a sloupec. 34 Obr. 26: Vývojový diagram zaátku algoritmu funkce uživatelský ádek a sloupec Vkládání znaku z pamti ROM Všechny pedchozí funkce vyžadovaly na jejich vykonání celkem krátkou dobu. Vždy šlo v ideálním pípad jen o jednu komunikaci s displejem a v nejhorším pípad bylo poteba nastavit íslo nového ádku a sloupce. Celkem nebyly pekroeny 3 komunikace s displejem. Tato funkce vyžaduje daleko vtší poet komunikací s displejem. Tím je dána i delší doba vykonání. Pi zápisu symbolu na displej by bylo výhodné, aby pi nepetržitém vkládání znak zdroj dat nemusel kontrolovat pechody mezi ástmi displeje a konce ádk. Funkce automatického posuvníku je celkem složitá, proto by v ideálním pípad ml algoritmus využívat již hotové funkce. Na Obr. 27 je vývojový diagram funkce pro vyítání znaku z pamti ROM. Aby se mohla hotová funkce posuvníku využít, je nutné vložit na konec této funkce podmínku, kterou se zajistí vracení programu zpt na funkci pro vkládání znaku z pamti ROM. Registr RD byl využit jako poítadlo již vytených a uložených sloupc znaku, proto lze jeho testováním rozlišit, jestli má program pokraovat ve funkci pro vkládání znaku nebo pejít na detekci vstupního pulzu. Registr RD je už využit pi urení vybraného píkazu. Zpsob urení píkazu zajistí jeho vynulování, proto nemže dojít k chybnému vyhodnocení pi rozhodování ve funkci posuvníku. Z toho vyplývá, že pi nulové hodnot registru RD ve funkci posuvníku se musí funkce ukonit a pejít na detekci taktovacího pulzu. Pro ukázku algoritmu pro vkládání symbol byl vytvoen znakový font ísel s písmeny A až F pro vytvoení HEX ísel. Takový font vyžaduje celkem 16 symbol. Pro každý symbol je nutné rezervovat 6 Byte. To by znamenalo velikost pamti ROM o velikosti 16*6 = 96 Byte. U takto organizované pamti by znamenalo pi adresování vrcholu každého symbolu násobit kód znaku šesti. V pípad, že by pro každý znak bylo vyhrazeno 8 Byte, potom by bylo nutné pro vygenerování vrcholové adresy symbolu násobit kód znaku osmi a to lze ve dvojkové soustav realizovat trojitou rotací. Trojitá rotace je s procesorem daleko snazší než násobení kódu znaku šesti. Proto bylo v návrhu rezervováno pro každý symbol 8 Byte. Z toho plyne, že velikost pamti ROM pro tuto znakovou sadu bude 16*8 = 128 Byte. 35 Obr. 27: Vývojový diagram algoritmu pro tení znaku z ROM Ve vývojovém diagramu je v úvodu omezeno vstupní íslo na rozsah 0 až 16 násobením maskou 0x0f. Následuje násobení 8x. Díky tomu, že lze maskou rozdlit vrcholovou adresu znaku od ísla aktuálního sloupce znaku, jde snadno testovat odeslání posledního sloupce znaku, aniž by byla poteba další pomocná promnná. Po získání ísla posledního odeslaného sloupce program otestuje, jestli už nejsou odeslány všechny sloupce znaku. Pokud jsou další sloupce na tení, odešle se adresa sloupce pamti ROM a po malém zpoždní se petou aktuální data z pamti ROM, která odpovídají nastavené adrese. Po petení dat se adresa sloupce zvýší o 1. Petená data se uloží na displej. Jak je uvedeno výše je nejvhodnjší využít již hotové funkce automatický posuvník, aby nebylo poteba ješt kontrolovat, jestli není nutné pejít na druhou plku displeje. Vývojový diagram není zcela pesný, ale s pedchozím vysvtlením zpsobu vracení z automatického posuvníku zpt do smyky vkládání znaku by to nemlo vadit. Po petení všech sloupc z pamti ROM se musí vynulovat registr RD, aby nedošlo k chybnému vyhodnocení v automatickém posuvníku. Funkce vynulování obsahu displeje Pro rychlé smazání celého obsahu displeje slouží tato funkce. Funkce je bez parametr, pouze se uloží nulovací kód do všech pozic displeje. Algoritmus je velmi podobný programu inicializace. Vývojový diagram algoritmu pro vymazání displeje je na Obr. 28. V úvodu algoritmu se nastaví promnná Radek na 3 a následn se vstoupí do smyky, kde se nejprve odešle displeji adresa ádku a poté nulová adresa sloupce. Probhne opakovaný zápis nulovacích dat, než dojde kurzor displeje na konec ádku. Následuje snížení promnné Radek o 1 a celá smyka se opakuje do vynulování této promnné. V závru funkce se vynulují promnné Radek a Sloupec a nastaví se poátek displeje. 36 Obr. 28: Vývojový diagram algoritmu pro vymazání obsahu displeje Celkový algoritmus zpracování píkaz s optimalizací Z charakteru jednotlivých funkcí je zejmé, že lze významn zjednodušit jednotlivé píkazy díky své podobnosti. Rozdíly mezi funkcemi pro vynulování ádku a sloupce, nový ádek a nastavení vlastního sloupce a ádku jsou minimální, pouze se v úvodu liší zpsob nastavení promnných Radek a Sloupec. Podobn i funkce automatický posuvník, pi pechodu z jedné ásti displeje, vyžaduje pednastavení displeje podle aktuálního ádku a sloupce. Funkce na vynulování obsahu displeje, díky své podobností s inicializací, lze realizovat skokem do ásti inicializace a po dokonení vymazání displeje program zstane ve funkci na detekci taktovacího pulzu. Navržený program Blokový vývojový diagram celého programu je celkem jednoduchý. Skládá se z inicializace a nekonené smyky. Nekonená smyka obsahuje blokující funkci pro detekci nábžné hrany vstupního taktovacího pulzu a blok pro zpracování a vykonání píkazu. Popis funkce všech blok je uveden v pedchozí kapitole. Obr. 29 znázoruje blokový diagram celého programu. 37 Obr. 29: Vývojový diagram celého programu 38 5. Blok ízení displeje realizovaný stavovým automatem Blok ízení displeje realizovaný procesorem PicoBlaze má vyšší nároky na pam a do malých obvod, pedevším obvod CPLD, je problém jej implementovat. Obvykle by už nezbylo volné místo na ladnou aplikaci, proto byl realizován blok ízení displeje i stavovým automatem, který by ml být daleko jednodušší na implementaci. Aby výsledný stavový automat nebyl píliš složitý a mohly se využít jen ty funkce, které jsou pro danou aplikaci poteba, byl blok ízení rozdlen do nkolika základních blok, které na sebe navazují. Použitý LCD displej je proti taktování FPGA obvodu pomalý. Byl tedy vytvoen jednoduchý systém komunikace mezi bloky. Pedpokládá se, že bloky budou postupn na sebe navazovat. Vznikne takový etz stavových automat. Každý blok, krom vstupního taktování, kterým se zanou zpracovávat vstupní data, musí mít i další vstup od následujícího bloku, kterým dává pedchozí blok zprávu, že práv pracuje a nemže pijímat další data. Tento signál byl pojmenován BUSY. Pak, pokud následující blok nastavil výstup BUSY a nemžou se posílat další data, aktuální blok také nastaví výstup BUSY. Postupným pedáváním signál BUSY mezi bloky dojde informace o aktivit blok až na zaátek etzce. Potom jakákoliv ást z etzce ízení displeje mže zastavit picházející data na vstupu celého etzce. Tato vlastnost je velká výhoda, protože snižuje nároky na výstup zdroje dat. Umožní zapsání potebných dat, jak nejrychleji to jde. Protože zápis každého sloupce netrvá stejnou dobu, tak by se musela pi uvažování periodického zápisu dat bez zptné vazby rychlost taktování snížit na takovou velikost, jako by každý takt byl nejhorší pípad. Pro názornost bylo vytvoeno principielní schéma etzce, které je na Obr. 30. Obr. 30: Principielní schéma navrhovaného etzce Tento systém potvrzování má i malou nevýhodu. Protože pedávání dat mezi bloky je zajištno vzestupnou hranou, dochází pi prchodu každým blokem ke zpoždní minimáln jeden takt. Taktovací pulz musí postupn dorazit až na konec etzce. Až ten mže odpovdt signálem BUSY, který se zase postupn pedává zpt na zaátek etzce. Vzniká nkolika taktové zpoždní mezi odesláním platných dat a zptného potvrzení signálu BUSY. Velikost zpoždní pímo závisí na potu blok v etzci. Proto byla snaha návrh celého stavového automatu rozdlit na co nejmén blok. Zdroj dat pak musí po odeslání dat pokat nkolik takt, než se vrátí potvrzovací signál BUSY a až po jeho sestupné hran mže odesílat další data. S podobným zpoždním musí poítat i jednotlivé bloky etzce. Zpoždní lze zkrátit tak, že každý blok po pijetí taktovacího pulzu nastaví svj výstupní signál BUSY na 1, protože díve nebo pozdji bude nastaven vstupní signál BUSY do vysoké úrovn. Takové zrychlení mže být nevýhoda. Pi vložení kruhové vyrovnávací pamti mezi bloky, která odpoví signálem BUSY až po zaplnní její celé kapacity a pedchozí bloky ekající na vzestupnou hranu signálu BUSY, dochází k poklesu rychlosti plnní takovéto pamti. Pi každém zápisu do pamti se spustí nový timeout, který není zkrácen odesláním signálu BUSY. 39 5.1. Schéma základní struktury Základní struktura zajistí inicializaci a jednoduché ovládání displeje. Struktura se skládá z modulu inicializace, modulu pro vykonávání píkaz, rozhraním blok s LCD displejem a pepínaem pro pepojení displeje po dokonení inicializace. Blok inicializace je navržen tak, že pímo komunikuje s displejem. Jakmile je displej zinicializován, pestane být modul inicializace aktivní a je nutné tento blok odpojit. Místo toho pepína vybere signály od bloku LCD brány, která zstane stále pipojena. Pepína reaguje na vstup init_fl. Protože navržené stavové automaty nepedpokládají tení dat z displeje, byl signál RD trvale pipojen na logickou úrove 1. Podobn byl signál reset trvale uzemnn pro volbu typu komunikace s displejem jako u procesor ady 80. Bylo by možné umístit pepína ped LCD bránu, ale to by se musel pepínat vtší poet spoj. Potom by musel modul inicializace pijímat signály BUSY a generovat taktovací pulzy. Byl zvolen pepína ped displejem, aby bylo možné použít modul inicializace samotný bez nutnosti pipojení dalších blok. Navržené schéma zapojení blok je na Obr. 31. Obr. 31: Navržené schéma propojení blok Blok inicializace Tento blok obsahuje pouze resetovací vstup pro optovné zahájení inicializace a taktovací vstup. Pokud bude taktovací frekvence 50 MHz, budou dodrženy všechny asové zpoždní bhem komunikace s displejem dané katalogovým listem [8]. Díky zjednodušení ve výstupním pepínai, je pro komunikaci s displejem dostaující osmibitová datová sbrnice a tybitová ídící sbrnice. Posledním výstupem bloku pro inicializaci je init_fl_out, kterým by mly být blokovány všechny ostatní funkce. Diagram stavového automatu je na Obr. 32. 40 Obr. 32: Diagram stavového automatu bloku inicializace Celý algoritmus je realizován procesem. Zde je poátení inicializace, která se provede po resetu celého programovatelného pole. Celý kód se cyklicky opakuje. Proto lze kód blokovat jen tak, že otestuje stav signálu init_fl. Pokud je nulový proces vykonává se pouze 41 jeho cyklické testování. Když tento signál má hodnotu 1, opakovan se vstupuje do stavového automatu. Ped vykonáním nastavení promnných daných aktuálním stavem automatu se vykoná zpoždní dané promnnou ZP. První zpoždní, které nastane po zapnutí napájecího naptí, je asi 1s. Bylo odzkoušeno, že displej je schopen pi takto malém zpoždní zpracovávat data. Pro vtší zpoždní by se musel zvtšit poet bit promnné ZP a tím by se zvtšila velikost výsledného kódu. V prvním stavu automatu se jen nakonfigurují porty, aby displej ml své vstupy v korektních stavech. Každá komunikace s displejem je rozdlena do dvou ástí. V jedné ásti je taktovací signál WR v nulové úrovni a v druhé ásti má tento signál vysokou úrove. Pro snížení potu stav automatu bylo této vlastnosti využito. Bhem vysoké úrovn signálu WR se mže mnit stav sbrnic. Pi prvním prchodu njakým stavem automatu je signál WR ve vysoké úrovni a provede se pouze piazení nuly WR signálu. Po uplynutí zpoždní se zmní stav automatu, pednastaví se nová data na sbrnicích a souasn se signál WR nastaví do vysoké úrovn. Tím každému stavu automatu písluší jedna dokonená komunikace. Ve stavovém automatu je ešeno vymazání celého obsahu displeje. Tuto innost má na starost stav 3. V tomto stavu se testuje, jestli displej nedošel na konec ádku. Pokud ano, inkrementuje se íslo ádku. Když íslo ádku není 3, provede se pednastavení a nastaví se stav 7, který nastaví sbrnici pro nastavení dalšího ádku. Ze stavu 7 se pejde na stav 1, který opt uloží pednastavená data a nastaví adresu nulového sloupce. Po dosažení tetího ádku se opt kurzor displeje nastaví na poátek a píkazem ZAP se zapne zobrazování displeje. Ped opuštním stavu 6 se vynulují sbrnice a signál init_fl se vynuluje, aby se celý algoritmus zablokoval. Vstupní resetovací signál je testován jen v pípad nulového signálu init_fl. Je tu opt vytvoen latchový signál pro zapamatování pedchozího stavu signálu reset a následnou detekci vzestupné hrany signálu reset. Blok zápisu dat displeji Tento blok pedstavuje rozhraní mezi displejem a ostatními bloky ovladae. Algoritmus dodržuje asovou posloupnost ukládaných dat dle doporuení katalogového listu [8]. Blok obsahuje osmibitový vstup dat dále 3 bity pro konfiguraci displeje a taktovací pulz, který potvrzuje zápis vstupních dat na displej. Pokud tento blok pracuje, nastaví svj výstup BUSY na vysokou úrove. Pedpokládá se pipojení taktovacího signálu s kmitotem 50 MHz na vstup clk50. Vstup init_fl slouží pro blokování této funkce v dob inicializace. Vývojový diagram funkce pro zápis dat displeji je na Obr. 33. Celý algoritmus je umístn v procesu. Z toho plyne, že algoritmus musí být navržen jako nekonená smyka. Blokování funkce vstupem init_fl je realizováno tak, že pokud je nenulový, opakovan se testuje, jestli se nezmnila hodnota na 0. Po odblokování funkce se testuje, jestli byl nastaven signál BUSY. Pokud ne, eká se na vzestupnou hranu. Proto byl vytvoen signál latch, který uchovává pedchozí stav signálu CLK. Pokud platí, že latch=0 a souasn CLK = 1, znamená to, že nastala vzestupná hrana a je nutné uložit vstupní data displeji. V tomto stavu je nutné nastavit signál BUSY do vysoké úrovn. Protože byla snaha o co nejjednodušší výsledný algoritmus, bylo trochu pozmnno asování. Aby nevadilo, že signál WR není ped zaátkem zápisu ve vysoké úrovni a pi zahájení zapisování nedošlo k nekorektnímu zápisu, byla doba ekání mezi pedchozím a následujícím zápisem umístna ped vlastní zápis. Proto jsou nejprve nastaveny datové a ídící sbrnice a nastavena promnná ZP na 800 ns. Zápis je proveden obdobn jako v bloku pro inicializaci. Po dokonení zápisu se musí vynulovat výstupní signál BUSY. 42 Obr. 33: Vývojový diagram bloku pro zápis dat displeji Blok zpracování píkaz Hlavní funkce bloku pro zpracování píkaz, jak je z názvu patrné, zpracuje vstupní data podle nastavené píkazu. V tomto bloku jsou zahrnuty podobné funkce, jaké jsou v návrhu s procesorem PicoBlaze. Mezi nejzajímavjší patí automatický posuvník. Dále je tu funkce pro nastavení nulového sloupce a ádku, nastavení nového ádku a nastavení libovolného ádku a sloupce. Funkce pro vymazání displeje nebyla implementována, protože lze displej vymazat resetováním bloku inicializace. Dále pro zjednodušení celého stavového automatu byla funkce pro vkládání symbol z pamti ROM realizována jako jeden samostatný blok. ízení bloku pro zpracování píkaz je pomocí vstup CLK a BUSY. Tento blok už obsahuje vstupní i výstupní CLK i BUSY signál. Jak bylo popsáno výše, je tu dodržen systém, že vstupní CLK dává informaci o tom, že na vstupu jsou platná data a výstupní CLK pedává data následujícímu bloku. Vstupní signál BUSY blokuje innost algoritmu pro zpracování signálu a výstupní signál BUSY je pro pedchozí blok, aby neposílal další data. Mezi další vstupy patí osmibitová datová sbrnice, po které se pedávají data, tíbitová sbrnice pro volbu píkazu a tíbitová sbrnice pro pedání konfigurace displeje pi pímém posílání dat. Výstup pedává pouze osmibitová data a tíbitovou konfiguraci displeje. Na Obr. 34 je vývojový diagram bloku pro zpracování píkaz. 43 Obr. 34: Vývojový diagram bloku pro zápis dat displeji Blok pro zápis dat bylo nejvýhodnjší realizovat procesem. Algoritmus je v úvodu doplnn o blokování vstupem init_fl. Algoritmus dlí své chování podle toho, v jakém stavu je vstupní signálu BUSY_IN. Pokud je nastaven, proces nesmí pedávat displeji data. Protože zde vzniká prodleva mezi nábžnou hranou výstupního taktovacího pulzu a potvrzovacím pulzem BUSY_IN, je ped každou nábžnou hranou pulzu inicializováno zpoždní zapsáním nenulové hodnoty do promnné ZP. Bhem nulové úrovn signálu BUSY_IN se místo pechodu k dalšímu kroku stavového automatu pouze snižuje promnná ZP s každým cyklem o 1. Pokud by se hodnota promnné snížila na 0 automat by odeslal další data. Proto se musí tato inicializaní hodnota volit podle množství následujících blok. Po nastavení vstupu BUSY_IN se promnná ZP vynuluje. Tento princip ekání na potvrzovací úrove signálu a blokování stavového automatu lze využít i v dalších ástech celého etzce, jen je poteba pro každý blok zvážit, jak velké zpoždní je poteba. Zbyten velkým zpoždním se zvyšuje velikost celkového kódu. Dále, v pípad pipojení k bloku bez generování signálu BUSY_IN, by docházelo ke zbytenému prodlužování komunikace, protože by stavový automat vydával data pomaleji. K dalším velkým rozvtvením dochází detekcí vzestupné hrany vstupního taktovacího signálu. Po detekci vzestupné hrany se provede pednastavení podle aktuální pedvolby dané vstupem man_command_in. Protože všechny píkazy jsou do jisté míry podobné, jejich následné vykonávání mže využít totožné funkce. Vykonávání píkaz lze provést stavovým automatem. Pak volbou stavu automatu se nastavená data zpracují. Stavový automat bude 44 generovat taktovací pulz po nastavení datové a kontrolní sbrnice. Taktovací pulz pedstavuje plku doby ve vysoké úrovni a druhou plku v nízké úrovni. Toho je využito pi zjednodušování stavového automatu, protože pro každou úrove stavového automatu je vygenerován celý taktovací pulz. V každé úrovni stavového automatu je proto test hodnoty taktovacího signálu. Stav automatu 0 zajistí pouze správné odeslání pednastavených dat následujícímu bloku s vykáním do nastavení signálu BUSY_IN na nízkou úrove. Stav automatu 2 spolu se stavem 3 slouží pro nastavení pozice kurzoru na displeji. Pedpokládá se, že ídící i datové sbrnice jsou nastaveny. Prvním vkroením do stavu 2 se vygeneruje vzestupná hrana taktovacího pulzu a souasn se pednastaví promnná ZP. Po zmn signálu BUSY_IN na nulu se pednastaví požadovaný ádek na datové sbrnici a pejde se na další stav automatu. Ten pejde na stav 0 automatu. Stav 0 pak dokoní odeslání ádku displeji. Aby vývojový diagram funkce na zpracování píkazu byl pehledný, byla ást vývojového diagramu, ve které se nastavují sbrnice podle aktuálního píkazu, oddlena. Rozpoznání píkazu s nastavením je na Obr. 35. Obr. 35: Vývojový diagram bloku pro rozpoznání píkazu 45 Funkce na rozpoznání píkazu piazuje kódu 0 funkci automatického posuvníku. Ten pouze zapisuje data na displej. Pi bžném ukládání se pednastaví úrove stavového automatu nulu a data se pouze odešlou na výstup. Když zapsaná data jsou na posledním sloupci v ádku, hodnota sloupce se vynuluje a íslo ádku se zvýší o 1. Souasn se pedvolí stavový automat na úrove 1, který data zapíše a následn posune kurzor displeje do poátku nového ádku. Píkaz s kódem 1 pesune vstupní data na výstup a pedvolbu kontrolní sbrnice použije ze vstupu. Píkaz s kódem 2 posune kurzor na poátek následujícího ádku. Obdobnou funkci má klávesa ENTER. Píkaz s kódem 3 dovolí nastavit kurzor kamkoliv na displej. Na vstupu DATA_IN íslo o novém sloupci a vstupy CS0 a CS1 pedstavují kód ádku. Ostatní kódy nastaví kurzor na poátek displeje, do levého horního rohu. 5.2. tení znaku z pamti ROM Pedchozí blok neobsahoval funkci na pevod vstupních dat na symbol. Tato funkce nemusí být vždy poteba a píliš by zvyšovala složitost pedchozího bloku. Na Obr. 36 pedstavuje blok s názvem LCD_DRIVER pedcházející popisovaný blok. Vlastní tení znak z pamti ROM zajišuje blok s názvem CharToLcd. Aby se mohly využít všechny funkce bloku LCD_DRIVER, byl do schématu pidán jednoduchý pepína, kterým se volí zdroj kontrolních a datových signál. Pepína, skoro pro všechny kódy píkazové sbrnice, propojuje vstupní data pímo k LCD ovladai. Pouze pro hodnotu 6 zane být zdrojem kontrolní i datové sbrnice blok CharToLcd. K tomuto bloku je pipojena pam ROM, kterou je dán font zobrazovaných symbol. Pedpokládá se stejná organizace pamti jaká byla použita v procesoru PicoBlaze. Obr. 36: Schématické vyjádení bloku se zápisem znak z pamti ROM 46 Blok tení dat ze znakové pamti ROM U tohoto bloku byl dodržen systém taktování CLK a systém zptné vazby signálem BUSY. Blok vyžaduje taktovací frekvenci 50MHz, vstup CLK a vstup DATA_IN, kterým se zadávají kódy znak. Dále je piveden datový vstup z pamti ROM a také generuje sedmi bitovou adresu pro pam znak. Výstupem DATA_OUT spolu s CLK_OUT (READY_OUT) se pedávají ovladai displeje jednotlivé sloupce znak. Samozejm signálem BUSY_OUT informuje bloky o své aktivit. Vývojový diagram algoritmu pro tení z pamti ROM je na Obr. 37. Obr. 37: Vývojový diagram algoritmu pro tení znak z pamti ROM Navržený algoritmus se podobá algoritmu pro zpracování píkazu, protože jeho struktura vychází z požadavk chování na taktovací pulzy CLK_IN a potvrzovací signál BUSY_IN. Ve struktue je pouze zmnna inicializace a pak následn zpsob zpracování a odeslání dalších dat. V inicializaci se nastaví poet vyítaných byte v jednom symbolu a nastaví se vrcholová adresa pamti ROM. Pi první vzestupné hran signálu CLK_O se petou data z pamti ROM a odešlou se na výstup. Souasn se nastaví velikost zpoždní ZP = 15. Hodnota ZP má vtší hodnotu proti pedchozímu bloku, protože pedchozí blok vytvoí více taktové zpoždní. Po úspšném odeslání dat až k displeji se sníží hodnota promnné COUNT o 1 a zvýší se adresa pamti ROM o 1. Následující takt opt generuje nábžnou hranu na signálu CLK_O a ten opt zapíše data displeji. Takto algoritmus pokrauje 47 až do snížení promnné COUNT na nulu. Zde se odešlou poslední petená data z pamti ROM a v závru se nastaví signál BUSY_OUT na nulu. Tím se dokoní komunikace a blok je schopen pijímat a zpracovávat další data. 5.3. Píklad použití Navržený ovlada LCD displeje pouze usnaduje a zjednodušuje komunikaci. Aby použití ovladae bylo co nejjednodušší a nejuniverzálnjší, byl vytvoen pouze ovlada s jednoduchým ovládáním. Bylo by možné ovlada rozšíit o algoritmus periodického umisování dat do uritého místa na displeji pro snadnjší sledování promnných v ladných procesech, ale to by píliš svazovalo celý ovlada na konkrétní aplikaci. Vytvoení takového algoritmu je velmi snadné pi použití struktury pro generování signálu CLK_O a BUSY_O, které jsou použity v bloku pro zpracování píkaz a bloku pro vytení znak z pamti ROM. Algoritmus neomezuje poet sériov pipojených blok, pouze s každým blokem vzniká zpoždní nkolik takt generátoru 50 MHz, se kterým se musí poítat. Pro snadné ovení implementovaných funkcí byl k celé navržené struktue pipojen blok UART, který pevádí sériová data na paralelní osmibitová slova. Další informace k použitému bloku UART je v [15]. Testování bylo provedeno na pípravku Spartan 3, který je vybaven tlaítky a led diodami. Blok UART pijímá sériovou komunikaci a po odeslání dat blok umístí data na svj výstup a souasn vygeneruje vzestupnou hranu výstupního taktovacího signálu. Data jsou pedána ovladai LCD displeje a ten je zpracuje podle pedvolby. Pedvolba ovladae je vyvedena na pepínaích. Schéma testovací struktury je na Obr. 38: Schéma testovací struktury s modulem UART. Obr. 38: Schéma testovací struktury s modulem UART Stejným zpsobem byla otestována i realizace s procesorem PicoBlaze, protože má stejné ídící i datové sbrnice. Oba zpsoby ešení jsou ekvivalentní. Pouze se liší rychlostí zpracování pijatých dat. Realizace s procesorem PicoBlaze je pomalejší, protože se vykonávají instrukce a to je daleko pomalejší než stavový automat. 48 6. Závr LCD displeje se mohou rozdlit na alfanumerické a grafické. Alfanumerické displeje mají ve vnitní pamti uloženou znakovou sadu, proto se text píše jednodušeji. Je u nich komplikovanjší zobrazovat symboly, které nejsou souástí znakové sady. Popisované grafické displeje nemají pam ve které je znaková sada. Proto se musí každý symbol definovat v ovládacím programu. Jejich výhoda zase spoívá v tom, že není problém zobrazit libovolný znak. Pídavná deska byla navržena pro displej s oznaením GM12321. Tento displej má rozhodovací úrovn jako TTL. Obvody CPLD nebo FPGA, ke kterým se pídavná deska pipojí, mají výstupní úrovn technologie LVCMOS33. Do tolerance vstupního naptí pro platnou úrove H displeje spadají i výstupní velikosti naptí technologie LVCMOS33. Proto navrhované schéma nepotebuje aktivní pevodník naptí a staí pasivní realizovaný rezistory. Dále pídavná deska musí obsahovat oscilátor s frekvencí 2 kHz a zdroj záporného naptí, aby LCD displej mohl zobrazovat údaje. Nejprve byla pídavná deska testována na vývojovém kitu XC2-XL, ale obvod XC2C256 byl píliš malý na implementaci ovládacího programu s procesorem PicoBlaze. Proto se pídavná deska testovala na vývojovém kitu Spartan 3. Do programu v procesoru PicoBlaze bylo implementováno nkolik funkcí pro základní konfiguraci displeje a pro jeho snazší ovládání. Dále byla implementována funkce automatického posuvníku, která zajistí pechod mezi ástmi displeje bez zásahu uživatele. Další implementované funkce jsou pro snadné nastavení kurzoru na displeji a vymazání obsahu displeje. Velkým pínosem je i funkce pro pevod vstupních dat na znaky. Znaky jsou uložené v externí pamti ROM, Snadnou výmnou této pamti lze zmnit znakový font. V návrhu byl vytvoen malý font pro vyjádení hexadecimálních ísel. Procesor po pijetí píkazu generuje na svém výstupu signál BUSY, kterým informuje pedchozí blok o své aktivit a proto pedchozí blok nemá odesílat další data. Program je rozdlen do tí základních ástí. Inicializace vymaže interní RAM displeje. Detektor taktovacího pulzu odblokuje celý program pi vzestupné hran taktovacího signálu a dovolí vykonání nastaveného píkazu blokem pro zpracování píkazu. Krom realizace ovladae LCD displeje procesorem PicoBlaze byl vytvoen ovlada pomocí stavového automatu v kódu vhdl. Ovládání displeje stavovým automatem je skoro totožné jako v návrhu s procesorem PicoBlaze. Liší se pouze ve funkci resetování displeje. U procesoru je reset proveden píkazem, ale u stavového automatu se reset provede vzestupnou hranou resetovacího vstupu. Byl vytvoen blok inicializace displeje, který po zapnutí napájení vymaže obsah interní pamti RAM displeje a pipraví displej pro další používání. Dále byl vytvoen blok pro komunikaci s displejem. Ten vytváí rozhraní mezi displejem a ostatními bloky návrhu. Zajistí také správné odeslání dat displeji. Byl vytvoen systém pedávání a potvrzování dat, který zjednodušuje komunikaci s displejem a zabrání píliš rychlému písunu dat díve, než je displej schopen je pijmout. Blok pro zpracování píkazu provádí základní operace s kurzorem displeje. Také je tu vytvoena funkce automatického posuvníku jako u procesoru PicoBlaze. Pro zápis symbol z pamti ROM byl vytvoen další blok CharToLcd. Ten v aktivním stavu pevede vstupní data na posloupnost dat, kterou odešle displeji. Organizace pamti ROM je stejná jako u procesoru PicoBlaze. Pro ovení implementovaných funkcí byl na vstup navržených modul pipojen UART modul, který pevádí sériová data z poítae na testovaný blok. 49 7. Seznam literatury [1] KOLOUCH, J. Programovatelné logické obvody a návrh aplikací v jazyku VHDL – Poítaové cviení. Brno: Vysoké uení technické v Brn, 2005. 85 stran. ISBN 80- 214-1997-6. [2] KOLOUCH, J. Programovatelné logické obvody. Brno: Vysoké uení technické v Brn, 2005. 97 stran. [3] MATOUŠEK, D. Práce s mikrokontrolery ATMEL AVR. BEN – Technická literature Praha, 2003. [4] XILINX. SPARTAN-3 FPGA – dokumentace. Dostupný na WWW: [5] DIGILETIC. XC2-XL – dokumentace, Dostupný na WWW: [6] DATA IMAGE CORPORATION. Katalogový list CM1621. Dostupný na WWW: [7] HITACHI. katalogový list adie HD44780. Dostupný na WWW: [8] DATA IMAGE CORPORATION. Katalogový list GM12321. Dostupný na WWW: [9] S-MOS SYSTEMS. Katalogový list adie SED1520. Dostupný na WWW: [10] DATA IMAGE CORPORATION. Katalogový list GM12641. Dostupný na WWW: [11] SAMSUNG. Katalogový list adie KS0107. Dostupný na WWW: [12] XILINX. Katalogový list vývojového kitu Spartan 3. Dostupný na WWW: [13] KOLOUCH, J., BIOLOVÁ, V., JAKUBOVÁ, I. Impulzová a íslicová technika-Laboratorní cviení Brno: Vysoké uení technické v Brn, 2005. 97 stran. [14] KOLOUCH, J. Typické postupy pi práci s obvody PLD a FPGA. Dostupný na WWW: [15] CARTON , C MiniUART IP Core. Dostupný na WWW: