Jste zde

Laboratorní výukový mikropočítač s MCS51

Laboratorní výukový mikropočítač s MCS51 (dále jen LVM – 51) vznikl pro účely laboratorní výuky mikroprocesorové techniky. Jedná se vlastně o hardwarový emulátor mikropočítače z rodiny MCS51 (konkrétně o typ AT89S8253) doplněný o různé periferie, na kterých lze demonstrovat možnosti a použití MCU (Micro Controler Unit). Byly zvoleny periferie, které se v reálných zařízeních často používají, aby student mohl případně ve své praxi využít zkušeností, které si osvojil již ve škole. MCU AT89S8253 nemá vyvedený JTAG, který by umožňoval emulaci, proto musel být použit specifický způsob řešení emulace.

Jak lze emulovat MCU

Obecně se dá říci, že existuje několik přístupů k emulaci jednočipových mikropočítačů. První je založen na použití hardwarového emulátoru. Tímto způsobem lze většinou emulovat pouze základní typy MCU z dané rodiny, typy, které obsahují speciální periferie často emulovat vůbec nelze a nebo jen v omezené míře. Dalším limitujícím Emulace MCU pomocí externí paměti RAMfaktorem použití tohoto způsobu emulace je poměrně vysoká cena nabízených hardwarových emulátorů.

Druhý způsob, nepochybně levnější, je použití při emulaci tzv. JTAG rozhranní. Emulace se provádí většinou přímo v aplikaci a na konkrétním typu jednočipového mikropočítače. Jedinou podmínkou je, aby daný mikropočítač podporoval emulaci pomocí výše zmíněného rozhraní JTAG. Uživateli potom již stačí pořídit si JTAG adaptér s příslušným softwarem pro PC. Tento způsob je velmi efektivní a cena JTAG adaptérů je pro běžného konstruktéra dostupná. Jak však přistoupit k mikropočítačům, které rozhraní JTAG nemají a přesto potřebujeme daný mikropočítač emulovat? Lze použít následující způsob.

Třetí způsob, použitý v LVM – 51, je založen na využití externí paměti RAM připojené k jednočipovému mikropočítači, viz následující obrázek (podmínkou je tedy, aby emulovaný MCU měl vyvedenou sběrnici pro externí paměť). Princip je popsán v textu níže. Jediným omezením při tomto způsobu emulace je omezení počtu použitelných I/O portů. Pokud daný MCU sdílí sběrnici pro připojení externí paměti s GPIO, nelze tyto GPIO potom použít pro účely uživatelské aplikace. Následující text již popisuje konkrétní řešení na MCU AT89S8253, principy a výsledky lze samozřejmě zobecnit a použít i na jiných typech MCU.

Princip emulace s připojenou externí pamětí RAM

Z hardwarového hlediska je k MCU připojena externí paměť RAM, obvody multiplexace sběrnice a obvody potřebné pro emulaci (viz předešlý obrázek). Jedná se o standardní paralelní paměť typu SRAM, jejíž velikost se volí s ohledem na možnosti konkrétního MCU. Pro přístup k externí paměti slouží adresní (AB – Adress Bus), datová (DB – Data Bus) a kontrolní (CB – Control Bus) sběrnice. Spodních 8 bitů adresní sběrnice je multiplexováno se sběrnicí datovou. K opětovnému rozdělení AB a DB u připojené externí paměti slouží obvod 74HCT573 (latch), ten je řízen signálem ALE (všechny signály psané tučným písmem jsou negované). Kontrolní sběrnice se skládá ze 3 vodičů aktivních v logické úrovni low (0).

Signál WE je generován při zápisu do externí paměti dat, signál RD při čtení z externí paměti dat a signál PSEN při čtení z externí paměti programu. Připojená paměť SRAM má řídící signály WE, sloužící pro zápis do paměti a signál OE sloužící pro čtení z paměti. Pokud připojíme k MCU vhodnou logiku, můžeme pomocí signálů kontrolní sběrnice MCU přistupovat k paměti SRAM buď jako k externí datové paměti, nebo jako k externí programové paměti.

Vlastní emulace pak probíhá následujícím způsobem. K paměti SRAM nejprve přistoupíme jako k externí paměti dat, IC 74HCT244 bude průchozí pro signál RD. Celý laděný program uložíme do paměti SRAM. V dalším kroku IC 74HCT244 zprůchodníme pro signál PSEN, tímto bude přístup k paměti SRAM z hlediska MCU jako k externí paměti programu. Nyní již můžeme skokem na adresní pozici externí paměti, kde je začátek laděného programu tento zpustit.

Protože MCU přistupuje k SRAM jako k paměti programu poběží laděný program standardním způsobem jako z interní paměti MCU (obvykle bývá typu FLASH). Nesporná výhoda tohoto postupu je ukládání laděného programu do paměti typu RAM, tudíž odpadají starosti s konečným počtem zápisů, jak je tomu u paměti FLASH. Z výše napsaného je patrno, že MCU musí obsahovat obslužný software, který zajistí vše potřebné pro vlastní emulaci. Tento program je uložen ve FLASH paměti programu emulovaného MCU a nazývá se Monitor.

Monitor

Jedná se o program uložený ve FLASH paměti programu emulovaného MCU. Tento software se podílí na vlastní emulaci tím, že obsluhuje připojený hardware, zajišťuje případnou interpretaci příkazů řízení emulace a umožňuje odesílání informací o stavu MCU. Podle požadavků uživatele může mít Monitor různé funkce a tudíž i různou složitost. V následujících kapitolách budou popsány možné varianty Monitoru.

Monitor umožňuje pouhé spuštění laděného programu

V nejjednodušším případě můžeme Monitor zjednodušit do takové míry, že poskytuje pouze možnost spuštění laděného programu, bez možnosti dalších nadstavbových funkcí. Tento způsob je alternativou k často používanému způsobu psaní uživatelského programu a jeho následného ověřování přímo na cílovém MCU s použitím programování v systému tzv. ISP (In System Programming). Problém je však neustálé přepisování programové paměti, která je v naprosté většině případů typu FLASH. Tato paměť má konečný počet zápisů (obvykle 10k až 100k zápisů). Pokud tedy použijeme tento způsob třeba v laboratorní výuce ve škole, můžeme se připravit na neustálé vyměňování MCU za nové.

Emulace MCU s použitím externí paměti SRAM plně odstraňuje nevýhodu konečného počtů zápisových cyklů paměti FLASH, protože uživatelský program je ukládán do paměti typu RAM, která nemá počet zápisů omezen. Pro tyto účely je Monitor zcela jednoduchý program. Jeho úkol je nejprve uložit laděný program do externí paměti SRAM. Laděný program se může zadávat přímo ve strojovém kódu pomocí klávesnice připojené k MCU. Monitor tak nejprve interpretuje kód stisknuté klávesy a potom jej uloží na příslušnou pozici do SRAM. Tento způsob je však krajně nepraktický, protože vyžaduje ruční překlad z jazyka symbolických adres (Assembler), proto je mnohem výhodnější spojit MCU s PC, které provede překlad z Assembleru do strojového kódu.

Spojení mezi MCU a PC lze nejlépe provést pomocí sériové linky (postačí pouze převodník RS232, navíc pokud PC již sériovou linku nemá lze využít dostupný převodník USB – RS232). Uživatelský software se v počítači napíše, přeloží a po sériové lince pošle do MCU, kde Monitor zajistí jeho správné uložení do paměti SRAM. Po tomto kroku následuje změna přístupu k paměti SRAM a následné spuštění uživatelského programu. Uživatelský program běží naprosto standardním způsobem, jediné omezení je v počtu použitelných vstupně/výstupních linek, protože paměť SRAM využije PORT 0, PORT 2 a část PORTU 3.

Monitor poskytuje uživateli funkce k ladění programu

Při ladění programu využijeme funkcí jako: spuštění uživatelského programu od zadané adresy, přerušení běhu programu, krokování, vkládání breakpointů, zobrazování obsahu registrů CPU, periferií a RAM, editace registrů CPU, periferií a RAM… Pro zobrazování a ovládání Monitoru je opět nejjednodušší použít nadřazený systém (např. PC nebo jiný MCU s ovládacím softwarem) spojené s MCU pomocí sériové linky. Tato varianta Monitoru je použita v LVM – 51.

Monitor musí, stejně jako v předešlé kapitole, umět měnit přístup k paměti SRAM, uložit laděný program od zadané adresy a také tento program spustit. Navíc ještě umí zobrazit veškeré informace o MCU. Toto je velmi jednoduše řešitelné pouhým vyčtením obsahu daného paměťového místa, jeho doplněním o informaci o které paměťové místo se jedná a následným odesláním po sériové lince do nadřazeného systému (např. PC, nebo jiný MCU), kde jsou informace interpretovány buď textově a nebo graficky.

Krokování programuPro komunikaci se používá 9-ti bitový UART (Universal Asynchronous Receiver Transmitter), přičemž 9. bit slouží k odlišení příkazu od dat. Obdobným způsobem je postupováno při editaci paměťových míst, pouze s rozdílem, že zdrojem informací je nadřazený systém. Monitor z přijaté informace zjistí o jaké paměťové místo se jedná a změní jeho obsah. Nejzajímavější však je řešení krokování, využívá se při něm následující princip.

Vhodným připojením spínače (viz následující obrázek) ke vstupu externího přerušení 0 lze docílit, že po povolení přijetí přerušení od externího přerušení 0 dojde k okamžitému vyvolání přerušení EX0 a skočí se do obslužného programu.V této obsluze se čeká na stisk spínače, jakmile k tomu dojde, čeká se na jeho následné uvolnění. Po uvolnění stisku se obsluha přerušení opustí, ale okamžitě nastanou podmínky pro nové přijetí přerušení. MCU AT89S8253 po opuštění přerušení provede vždy jednu instrukci než se zareaguje na další přerušení.

Tím je zajištěno, že po uvolnění stisku tlačítka se provede přesně jedna instrukce laděného programu. Navíc je možné při čekání na stisk a uvolnění spínače v obsluze přerušení EX0 odesílat a přijímat data po sériové lince a tudíž i sledovat a měnit obsahy jednotlivých paměťových míst. Uživatel má tak k dispozici po každém kroku kompletní informace o celém MCU.

Popis LVM - 51

Dle zadání má LVM – 51 sloužit k laboratorní výuce. Byl proto kladen velký důraz na to, aby zařízení bylo přehledné, robustní a výuka na něm byla praktická a zajímavá. Aby byl LVM – 51 přehledný, byl navržen na jedné desce plošného spoje, která není opatřena žádným krytem, student tak vidí s jakými konkrétními součástkami pracuje (zařízení netvoří tzv. „Black box“). Jednotlivé bloky a funkční celky jsou prostorově odděleny a zvýrazněny potiskem na DPS, viz následující obrázek (pro zvětšení klikněte na náhled).

LVM - 51

Aby byla výuka zajímavá a praktická, byly zvoleny periferie, které se často používají v reálných zařízeních (jejich výčet lze nalézt v v části Technické údaje). Robustnost LVM – 51 z hlediska mechanického poškození nelze úplně zajistit, protože zařízení nechrání žádný kryt, ale z hlediska opotřebení používáním ji zajistit lze. Například, jednotlivé periferie se k MCU připojují elektronicky, odpadá tak mechanické připojování pomocí konektorů, které by mohly zdrojem případných problémů s opotřebením.

Technické údaje:

  • Napájení: laboratorní zdroj nebo adaptér 12V / 1A
  • Provedení: deska plošného spoje (241 x 218 mm), bez ochranného krytu
  • Počet periferií: standardní (obsažené v AT89S8253) + 7 na DPS
  • 4kB programové paměti pro laděný program
  • 180B datové paměti pro laděný program
  • 2kB EEPROM pro data nezávislá na napájení
  • Propojení s PC: sériová linka (případně USB)

Periferie umístěné na DPS:

  • 8 přepínacích tlačítek s možností elektronického připojení a odpojení k PORTu 1
  • 8 dvoubarevných LED s možností elektronického připojení a odpojení k PORTu 1
  • 2x sedmisegmentový LED s převodníkem kódu z BCD na kód sedmisegmentového displeje, zobrazuje hexadecimálně stav PORTu 1 s možností elektronického připojení
  • Reproduktor s předzesílením
  • SS motorek řízený H můstkem pomocí PWM doplněný o zpětnou vazbu (optická závora) a možností volby směru otáčení
  • 8bitový paralelní D/A převodník typu R-2R, realizovaný obvodem DAC0832, rozsah výstupního napětí 0 – 2,5 V
  • 8bitový paralelní A/D převodník s postupnou aproximací, realizovaný obvodem ADC0804, rozsah vstupního napětí 0 – 5 V

Blokové schéma

Blokové schéma zařízení je uvedeno na následujícím obrázku.

Blokové schéma emulátoru

Z Obrázku je patrno, že LVM – 51 se skládá ze 3 částí. První část tvoří hlavní mikroprocesor AT8928253 a obvody potřebné pro jeho činnost. V této části dochází k vlastní emulaci a ladění uživatelského programu. U AT89S8253 má uživatel k dispozici celý PORT 1 a část PORTu 3, na tyto I/O linky je možné elektronicky připojit nabízené periferie. K obsluze emulace, zadávání uživatelského programu a zobrazování informací o stavu Hlavního MCU slouží část 2. Komunikace s částí 2 probíhá po sériové lince.

Část 2 je složena z pomocného mikroprocesoru AT89C51ED2, k němuž je připojena maticová klávesnice a grafický LCD displej, sloužící jako uživatelské rozhraní. K propojení s PC slouží převodník úrovní TTL/RS232.

Třetí část tvoří jednotlivé periferie. Jedná se celkem o 7 periferních zařízení. Jsou to zařízení, která se v praxi často používají, zvládnutí jejich používání, tak přinese studentovi zkušenosti, které může použít následně při konstrukci složitějších zařízení.

Možnosti a ovládání LVM – 51

Programování LVM – 51 lze provádět buď z maticové klávesnice, která je na DPS zařízení. Programování v tomto případě probíhá ve strojovém kódu (je tedy nutný ruční překlad, což ovšem z pedagogického hlediska lze využít pro osvětlení funkce MCU). Mnohem uživatelsky příjemnější je programování LVM – 51 z PC. V některém z mnoha vývojových prostředí se program napíše a zkompiluje (pro tyto účely lze použít např. prostředí Keil mVision) a po té jednoduchým programovacím softwarem, který byl pro potřeby LVM – 51 napsán, odeslat do LVM – 51.

Při vlastní emulaci, lze použít následujících funkcí. Uživatel si může zobrazit kompletní stav MCU, tedy obsah datové paměti (registrů CPU, SFR a zbylé RAM), obsah paměti EEPROM a obsah programové paměti. Jednotlivými paměťovými prostory lze procházet adresu po adrese, nebo si lze zobrazit konkrétní adresovou pozici (na LCD displeji LVM – 51 se zobrazuje vždy 7 paměťových pozic najednou, aby byly patrné případné vazby mezi jednotlivými adresovými pozicemi). Všechny zobrazitelné adresní pozice může uživatel editovat, může tedy i upravovat laděný program přímo v LVM – 51.

Pro snadnější ladění lze uživatelský program spustit buď standardním způsobem (s možností spuštění od zadané adresové pozice), nebo ho lze spustit v krokovacím režimu (po každém kroku si může uživatel zobrazit kompletní informace o stavu MCU). Pro uživatele jsou rovněž připraveny funkce zápisu na LCD displej a čtení z maticové klávesnice. Tyto funkce může využívat ve svém programu a pohodlně ho tak ovládat a zobrazovat výsledky.

Závěr

Laboratorní výukový mikropočítač s MCS51 byl zkonstruován pro potřeby výuky mikroprocesorové techniky na vysoké škole, lze ho však bez problémů použít pro výuku také na škole střední. Umožňuje seznámení studentů s problematikou programování MCU, ale zároveň také dává možnost vytvoření složitějších aplikací, s možným praktickým využitím. V rámci projektu LVM – 51, bylo vytvořeno jeho zapojení, navržena DPS, vytvořen potřebný software pro použité MCU a programovací software pro PC. Zařízení bylo realizováno a vyzkoušeno. Součástí toho článku je rovněž kompletní popis LVM – 51, podklady pro výrobu DPS, software do obou MCU a také programovací software pro PC.

Princip emulace použitý u LVM – 51, lze samozřejmě použít i pro jiné typy MCU a vytvořit si tak vlastní emulátor doplněný o periferie, které ulehčují vývoj koncové aplikace. Jediná podmínka pro použití tohoto principu emulace je přítomnost sběrnice pro externí paměť dat a programu.

Použitá literatura

  1. MATOUŠEK, D. Práce s mikrokontroléry Atmel AT89S8252 – 2.díl , 1. vydání. Praha: BEN– technická literatura, 2002. s. 206–210. ISBN 80-7300-066-0.
  2. MATOUŠEK, D. Práce s inteligentními displeji LCD, 1. vydání. Praha: BEN– technická literatura, 2006. s. 115–170. ISBN 80-7300-121-7.
  3. SKALICKÝ, P. Mikroprocesory řady 8051, 2. rozšířené vydání. Praha: BEN– technická literatura, 1998. s. 1–85. ISBN 80-86056-39-2.
  4. 8051 Architecture - Datasheet/s. www.atmel.com. Dostupné z http://www.atmel.com/dyn/products/datasheets.asp?family_id=604

Download:

  • Archív s podklady k výrobě DPS aj. (*.zip, 1,66MB)
  • Archív s potřebným firmwarem a softwarem (*.zip, 2MB)
Hodnocení článku: 

Komentáře