Ústav radioelektroniky Vysoké učení technické v Brně Bloková struktura mikrokontrolérů Mikroprocesorová technika, přednáška č. 1 Ing. Frýza Tomáš, Ph.D. 26. září 2007
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Mikroprocesor Definice (Mikroprocesor) Mikroprocesor (MPU Microprocessor Unit) je centrální řídicí jednotka (CPU Central Processing Unit) na samostatném čipu. První mikroprocesor vyvinula firma Intel v roce 1971 pod označením 4004 4bitová CPU, 16pinové pouzdro, hodinový signál o frekvenci 740 khz, Harvardská architektura (tj. oddělená pamět pro program a data), Jediná multiplexovaná 4bitová sběrnice přenášela 12bitovou adresu ve třech krocích ( maximální adresní prostor 4 kb), 8 bitů instrukce, 4 bity data, Instrukční sada: 46 instrukcí (41 8bitových, 5 16bitových instrukcí), 16 4bitových registrů, Původně určen pro kalkulačky.
Mikroprocesor Obrázek: Pouzdro 4004 Obrázek: Bloková struktura mikroprocesoru 4004
Mikropočítač Definice (Mikropočítač) Doplněním mikroprocesoru o podpůrné obvody, tj. vstupně/výstupní periferie a pamět (pro program i data) vznikne mikropočítač. První mikropočítače vznikaly v polovině 70tých let (logicky bezprostředně po vzniku mikroprocesorů), zpravidla bez klávesnice a displeje. Velikost paměti typicky 4 až 16 kb. Mikropočítač je obecně určen pro zpracování dat a řízení procesů. Jedním z prvních mikropočítačů byl Altair 8800 z roku 1975, obsahující 8bitový mikroprocesor Intel 8080A, hodinový signál 2 MHz, velikost paměti RAM 256 B až 64 kb, 78 instrukcí.
Počátky mikropočítačů Obsah paměti se zapisoval a četl pomocí přepínačů a LED diod. Přepínači se nastavila požadovaná adresa; následně se navolila osmice bitů (8bitový systém); LED signalizovaly obsah vybrané pamět ové buňky. Obrázek: Mikropočítač Altair 8800
Mikrokontrolér Definice (Mikrokontrolér) Mikrokontrolér (MCU Microcomputer Unit) vznikne sdružením všech částí mikropočítače (řídící jednotka, paměti RAM, ROM, vstup/výstup, čítač/časovač, a jiné periférie) na jediný čip (součástku). Vyznačují se nízkými náklady, nízkou spotřebou a dostatečnou hardwarovou výbavou pro řízení jednoduchých aplikací. Struktura a funkce mikrokontrolérů se do současnosti příliš nezměnila. Základní dělení mikrokontrolérů je podle šířky registrů a sběrnice (8bitové, 16bitové, 32bitové, příp. 64bitové).
Mikrokontrolér Obrázek: TMS1000 První mikrokontroléry vytvořila firma Texas Instruments pod označením TMS1000 v roce 1974 28pinové pouzdro, hodinový signál o frekvenci 400 khz, 4bitová sběrnice, velikost paměti RAM 32 B, ROM 1 kb, obsahovaly periférie: oscilátor, 4 vstupní piny, 11 výstupních, 8bitový výstupní paralelní port. Nyní existuje velké množství výrobců i dodávaných řad mikrokontrolérů. Některé řady mikrokontrolérů: 8048, 8051 (Intel), 68HC08, 64HC11 (Freescale), Z8 (Zilog), PIC (Microchip), H8 (Hitachi), AVR (Atmel),... Moderní mikrokontroléry mohou obsahovat velké množství periféríı (GPIO, čítač, AD převodník, analogový komparátor, I2C, USB,...).
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Realizace řídicí aplikace Libovolnou řídicí aplikaci lze zpravidla vyřešit několika způsoby. Vždy záleží na složitosti, na dosažitelných parametrech (rychlost, přesnost,...) nákladech (finance, čas), rozměrech, požadované variabilitě,... Existují tyto možnosti Použití jednotlivých logických členů (AND, OR, XOR), Programovatelné logické obvody (PLD), Specifické obvody ASIC, Mikrokontroléry.
Realizace funkce pomocí jednotlivých logických členů NAND logický součin NOR logický součet XOR - exkluzivní součet viz. předmět BICT Obrázek: Členy NAND, NOR a XOR Tabulka: Pravdivostní tabulka logických funkcí A B A A B A + B A B 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0
Realizace funkce pomocí logických členů Příklad Realizujte kombinační logickou funkci f = ((a b) + (a b)) (c d) pomocí jednotlivých hradel. Řešení Využití 3 integrovaných obvodů TTL Invertor 7404 obsahuje 6 hradel využity jen 3 (50 %), AND 7408 (logický součin): 4 členy 4 využity (100 %), OR 7432 (logický součet): 4 členy 1 využit (25 %), Z dostupných 14 hradel je využito jen 8, tj. 57,14 %.
Realizace funkce pomocí PLD Příklad Realizujte kombinační logickou funkci f = ((a b) + (a b)) (c d) pomocí programovatelného logického obvodu. Řešení Využití 1 obvodu GAL 16L8 Obvod obsahuje přibližně 150 hradel, z nichž bylo použito 12 (8 hradel logického součinu a 4 hradla logického součtu), tj. 8 % celkového počtu. Složitější struktura má za následek větší spotřebu v porovnání s obvody ASIC (Application-Specific Integrated Circuit), které jsou určeny pro konkrétní aplikace.
Realizace funkce pomocí PLD f = ((a b) + (a b)) (c d) Obrázek: Vnitřní propojení obvodu GAL 16L8
Využití obvodů ASIC Počet hradel tvořící strukturu ASIC obvodu se pohybovala od 5 000 hradel po dnešních 100 miliónů. První obvod ASIC byl vytvořen kolem roky 1980 s využitím hradlového pole. Moderní ASIC obvody obsahují 32bitové procesory, paměti RAM, ROM, EEPROM, Flash a jiné bloky. Programují se vyššími programovacími jazyky Verilog, či VHDL. Pevně definovaná jedinná činnost (například sčítání dvou čísel); z toho plyne vysoká výkonnost. Někteří výrobci obvodů ASIC: IBM, LSI Logic, Texas Instruments, Agere, Fujitsu,...
Mikrokontroléry Příklad Realizujte kombinační logickou funkci f = ((a b) + (a b)) (c d) pomocí mikrokontroléru. Řešení Použití mikrokontroléru, obsahující min. 5 vstupně/výstupních pinů (4 vstupy, 1 výstup např. ATtiny11) a korektně napsaný obslužný program. Srovnatelná fyzická velikost s PLD, ale nižší spotřeba a univerzálnost aplikace. Nižší rychlost zpracování oproti PLD.
Výhody/nevýhody použití mikrokontrolérů Méně součástek v systému způsobí nižší náklady na výrobu plošných spojů. Větší spolehlivost v důsledku menšího počtu propojení. Nižší napět ové nároky na použité obvody, tj. snadnější návrh napět ové části zařízení. Jednodušší vývoj a testování. Změnit funkci lze pouhým přeprogramováním bez nutnosti zásahu do hardware. Rozšíření, doplnění stávající funkce celé aplikace snadným přeprogramováním. Nižší rychlost zpracování než logické obvody. Nižší rychlost je způsobena sekvenční podstatou vykonávaného programu. V některých aplikacích je výhodnější použít PLD v kombinaci s mikrokontrolérem, příp. samostatné PLD.
Jednoduché aplikace řízené mikrokontroléry Typická řídicí aplikace s mikrokontroléry: neustálý sběr vstupních dat, jejich zpracování/vyhodnocování, poskytnutí výstupních informací (dat). Ultrazvukový měřič vzdálenosti, bakalářská práce (Skládaný Vojtěch). Obsahuje vysílač/přijímač ultrazvukového signálu s meřením odezvy, která závisí na vzdálenosti od překážky, Akustická výstraha při malé vzdálenosti, Zobrazení informací na LCD displeji.
Jednoduché aplikace řízené mikrokontroléry, pokračování Podvodní počítač, bakalářská práce (Charvát Jiří) Podvodní počítač pro amatérské potápění je schopen změřit hloubku v závislosti na změně hydrostatického tlaku, Měření teploty, času, Možnost uložení dat do PC pomocí USB rozhraní.
Jednoduché aplikace řízené mikrokontroléry, pokračování Řízení bezdrátové komunikace pomocí ZigBee Sériový asynchronní přenos dat na pomalých rychlostech (250 kbit/s) v pásmu 2,4 GHz. Realizace sítě snímačů (teplota, otevření oken, rozsvícení světel, požár,...), Možný bezpečnostní systém místnosti/domu.
Jednoduché aplikace řízené mikrokontroléry, pokračování Meteorologická stanice, projekt v rámci Erasmus/Sokrates (Breining Thomas, Francie) Možnost monitorování teploty, vlhkosti vzduchu, atmosférického tlaku, Ukládání vzorků v nastavitelných intervalech, Zobrazení hodnot na LCD displeji, Možnost stažení dat do počítače pro případnou archivaci.
Jednoduché aplikace řízené mikrokontroléry, dokončení Návrh harmonického generátoru využívající přímou číslicovou syntézu (DDS), diplomová práce (Macků Robert) Generování harmonického signálu 1-200 MHz pomocí obvodu AD9958, Aplikace řízena 8bitovým mikrokontrolérem 68HC908GT8 (Freescale), Možnost nastavení kmitočtu s krokem 0,1 Hz, zesílení výstupního signálu, zobrazení dat na LCD displeji.
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Základní dělení mikropočítačů podle architektury První dělení mikropočítačů iniciovala americká vláda v 70. letech, když požádala Princetonskou a Harvardskou univerzitu, aby navrhly architekturu vhodnou pro potřeby dělostřelectva. Vznikly dvě základní koncepce: Von Neumannova, Harvardská. Von Neumannova architektura Popisuje jak má číslicový systém pracovat a z jakých hlavních částí by se měl skládat: řídicí jednotka, paměti, I/O obvody, Zásadní myšlenka von Neumannovy architektury je použití pouze jedné pamět i a to pro kontrolní program (instrukce) i pro data (proměnné,...) - obojí je jedno a totéž! Nekoresponduje s vyššími programovacími jazyky; např. neumožňuje pracovat s vícerozměrnými poli. Von Neumannovu architekturu využívají dneska počítače typu PC.
von Neumannova architektura Von Neumanovy postuláty, pravidla Program je vykonáván sekvenčně, tj. instrukce se provádějí tak jak jdou za sebou - až na ně dojde řada. Změnu pořadí vykonávaní instrukcí lze provést jen podmíněným skokem, nepodmíněným skokem, či voláním podprogramu. Vnitřní architektura je nezávislá na řešené úloze. Veškeré změny mají být řešeny softwarově, tzn. počítač je řízen obsahem paměti. Původní přednost v univerzálnosti architektury je ve svém důsledku nevýhodná systém dokáže zpracovat libovolný problém, ale neefektivně.
von Neumannova architektura Von Neumanovy postuláty, pravidla, pokračování Neexistuje princip paralelismu Výhodnější a přehlednější pro tvorbu aplikací; paralelní programování je složité a špatně čitelné (viz. např. Linux), Nevýhodné pro optimalizaci výkonu jednotlivých částí systému (vždy je zatížena pouze jedna část). Pamět je rozdělena na stejně velké buňky, jejichž pořadové čísla se využívají jako identifikační adresy. Obrázek: Rozdělení pamět ového prostoru
Harvardská architektura Harvardská architektura chronologicky navazuje na architekturu von Neumannovu a odstraňuje některé její nedostatky. Zásadní rozdíl je oddělená část paměti pro program a data Program tak nemůže přepsat sám sebe, Možnost použití pamětí odlišných technologíı (EEPROM, Flash,...), Dvě sběrnice (pro instrukce, pro data) umožňují současný přístup k instrukcím i k datům, Nevyužitou část paměti pro data ovšem nelze využít pro uložení programu a naopak. Sekvenční vykonávání instrukcí zachováno, tzn. že paralelní zpracování lze provádět pouze na úrovni operačního systému.
Koncepce oddělené paměti Harvardské architektury (ATmega16) Obrázek: Typy pamětí u ATmega16 Pamět pro program v paměti typu Flash, šířka slova 16b. Pamět pro data v paměti SRAM: 32 obecných pracovních registrů, 64 vstupně/výstupních (I/O) registrů, interní/externí pamět RAM. Datová pamět EEPROM: např. pro tabulky hodnot.
Procesory CISC/RISC Dosavadní dělení procesorů výlučně podle hardwaru. Dále základní dělení procesorů z pohledu instrukční sady CISC (Complex Instruction Set Computer Počítač s komplexním souborem instrukcí), RISC (Reduced Instruction Set Computer Počítač s redukovaným souborem instrukcí). Prakticky neexistují ryzí procesory CISC nebo RICS, vždy se jedná o kompromis. CICS procesory obsahují velké množství instrukcí, které s malými obměnami vykonávají ty samé operace (např. pomocí přímého adresování, indexového adresování, apod.). Výskyt některých instrukcí je velmi nízký proč mít tyto instrukce v instrukčním souboru?
Procesory CISC/RISC Každá instrukce rozšiřuje řadič procesoru procesor musí rozpoznat všechny instrukce zvyšuje se hardwarová složitost. Tabulka: Statistická četnost typů instrukcí v programech Načítání z paměti 27,3 % Podmíněný skok 13,7 % Zápis do paměti 9,8 % 50,8 % Porovnávání hodnot 6,2 % Načtení adresy 6,1 % Odečítání 4,5 % Vložení znaku 4,1 % Sečítání 3,7 % 75,4 %
Procesory CISC/RISC Neudržitelný nárůst složitosti CISC procesorů vedl na konci 70tých let k vývoji zjednodušené struktury RISC. Statistický výzkum měl za úkol nalézt optimální instrukční soubor pro procesory typu RISC. Procesory RICS se kromě malého počtu instrukcí vyznačují také Malým počtem způsobů adresování, Používá zřetězené zpracování instrukcí, Instrukce mají pevnou délku (u AVR 16bitů) a jednotný formát, což urychluje jejich dekódování, Používají větší počet registrů (u AVR 32 reg. r0,r1,...,r31). Program u procesorů RISC Je zpravidla delší z důvodu většího počtu instrukcí s konstantním počtem bitů. Doba vykonání programu může být kratší, protože většina instrukcí se vykoná v jednom hodinové cyklu.
Procesory RISC Ukázka formátu instrukce ADD Rd,Rr (instrukce součtu u AVR; Rd=Rd+Rr) 0000 11rd dddd rrrr d {0; 31} - identifikátor registru (1. operand) r {0; 31} - identifikátor 2. operandu Ukázka formátu instrukce SUB Rd,Rr (operace rozdílu u AVR; Rd=Rd-Rr) 0001 10rd dddd rrrr d {0; 31} - identifikátor registru (1. operand) r {0; 31} - identifikátor 2. operandu
Procesory VLIW Procesory VLIW (Very Long Instruction Word Velmi dlouhé instrukční slovo) umožňují efektivnější vykonání programu, z důvodu paralelního zpracování instrukcí. Paralelismus je realizován větším počtem funkčních jednotek se specifickými funkcemi Aritmetické operace, hardwarová násobička, komunikace s pamětí, bitové operace,... Každá může pracovat nezávisle na ostatních. Podstata paralelního zpracování: zatímco se provádí např. součet dvou čísel, je možné jiné operandy násobit a z paměti si načíst další hodnoty. Zástupce VLIW architektury je signálový procesor řady TMS320C6000 (fy Texas Instruments) - viz. konec semestru.
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Obecná bloková struktura mikrokontrolérů Každý mikropočítač obsahuje podle von Neumanna 3 základních částí Centrální řídicí jednotku CPU (včetně aritmeticko/logické jednotky a řídicí jednotky), Pamět (i) pro obslužný program, příp. data, Vstupně/výstupní jednotku pro komunikaci s externími zařízeními. Obrázek: Principiální struktura mikropočítače
Centrální řídicí jednotka CPU (Central Processing Unit) představuje řídicí mozek celého systému (nejdůležitější část) Obsahuje aritmetricko/logickou jednotku a řídicí jednotku, Kombinuje obvody generující všechny řídicí signály pro výkon instrukcí s obvody pro samotný výkon volaných instrukcí, Např. instrukce add r16,r18 řídí volbu operandů a typ operace. Aritmeticko/logická jednotka (ALU Arithmetic/Logic Unit) provádí aritmetické a logické operace s daty, která jsou reprezentována dvěma binárními čísly Sčítání, odčítání, násobení, dělení, odmocnina, exponenciála, bitový posun (shift), logické operace (AND, OR,...), Pozn.: Uvedené operace nemusí být obsaženy ve všech mikropočítačích, záleží na jejich složitosti. Jednoduché mikrokontroléry umožňují jen některé z uvedených operací; ostatní lze poskládat ze stávajících instrukcí (např.: násobení bit po bitu).
Aritmeticko/logická jednotka Zdroj dat určuje řídicí jednotka; bud je jím obsah paměti (signál 1), nebo vstupní obvody (2). Akumulátor Nejvýznamnější registr; podíĺı se na většině operací ALU a ukládá většinu výsledků (např. u MCU řady 51, 68HC11,...), Některé MCU jej nahradili souborem rovnocenných registrů. Přesný typ operace oznamuje řídicí jednotka (3) pomocí řídicích signálů; výsledek operace je uložen bud do paměti (4) nebo do výstupní jednotky (5).
Aritmeticko/logická jednotka Výsledná hodnota operace uložena v registru nebo v paměti. ALU vrací dva typy výsledků Aritmickou nebo logickou hodnotu, Příznakové bity uložené ve speciálním registru (např. PSW - Processor status word) charakterizující výsledky nejpoužívanějších operací vhodné např. pro větvení programu. Mikrokontrolér Intel 8051 Obsahuje Akumulátor ACC, registr B (využitý při násobení/dělení), 4 registrové banky po 8 registrech. (Ostatní bloky později). Příznakové bity v registru PSW: přenos (CY), poloviční přenos (AC), uživatelský bit (F0), volba reg. banky (RS1, RS0), přetečení (OV), parita (P).
Bloková struktura Intel 8051 AUTOMOTIVE 80C31BH 80C51BH 87C51 Figure 1 MCS 51 Microcontroller Architectural Block Diagram 270419 1 Obrázek: Zjednodušená bloková struktura 8051 2
Aritmeticko/logická jednotka Mikrokontroléry AVR Registr Akumulátor nahrazen sadou 32 registrů (r0, r1,..., r31) pro běžné použití, 3 registrové páry (tj. 2x8bitů) X,Y,Z lze využít pro nepřímé adresování, Příznakové bity ve Stavovém registru SREG (jiný název/principiálně shodná činnost): přenos (C), nula (Z), záporné číslo (N), přetečení (V), znaménkový bit (S), 1/2 přenos (H), úložný bit (T), povolení přerušení (I).
Bloková struktura mikrokontrolérů AVR Obrázek: Zjednodušená bloková struktura AVR
Aritmeticko/logická jednotka Příklad Aritmetický součet add r16,r8 r16 : 0b00101110 46 r8 : +0b00000100 +4 r16 : 0b00110010 50 SREG: 0b00100000 Příklad Logický součin and r16,r8 r16 : 0b00101110 r8 : and 0b00000100 r16 : 0b00000100 SREG: 0b00000000
Řídicí jednotka Řídicí jednotka obsahuje logické a časovací obvody, generující signály potřebné pro výkon každé instrukce v programu. Výkon libovolného programu má následující etapy Provádí vyzvednutí (fetch) instrukce (která se má vykonat) z paměti, zapsáním adresy na adresní sběrnici (6) a vygenerováním řídicího signálu na řídící sběrnici pro čtení READ (7), Instrukce z odpovídající adresy se pomocí datové sběrnice pošle zpět do řídicí jednotky (8), Instrukce (v binárním kódu) je dekódována (decode) a podle typu instrukce generuje řídící jednotka příslušné řídicí signály pro vykonání (execute) dané instrukce. Funkce řídicí jednotky pro výkon programu tedy jsou: vyzvednutí, dekódování a vykonání instrukcí.
on This section describes the general access timing concepts for instruction execution. The AVR CPU is driven by the CPU clock clk CPU, directly generated from the selected clock ion source for the chip. No internal clock division is used. Výkon instrukcí ATmega16(L) Figure 6 shows the parallel instruction fetches and instruction executions enabled by the Harvard architecture and the fast-access Register File concept. This is the basic pipelining concept to obtain up to 1 MIPS per MHz with the corresponding unique results for This section describes the general access timing concepts for instruction execution. The functions per cost, functions per clocks, and functions per power-unit. AVR CPU is driven by the CPU clock clk CPU, directly generated from the selected clock source for the chip. No internal clock division is used. Figure 6. The Parallel Instruction Fetches and Instruction Executions Figure 6 shows the parallel instruction T1fetches and instruction T2 executions T3 enabled T4 by the Harvard architecture and the fast-access Register File concept. This is the basic pipelining concept to obtain up to 1 MIPS per MHz with the corresponding unique results for functions per cost, clk functions per clocks, and functions per power-unit. CPU Figure 1st Instruction 6. The Parallel FetchInstruction Fetches and Instruction Executions 1st Instruction Execute T1 T2 T3 T4 2nd Instruction Fetch 2nd Instruction Execute 3rd Instruction clk Fetch CPU 3rd Instruction Execute 4th 1st Instruction Fetch 1st Instruction Execute 2nd Instruction Fetch Figure 2nd Instruction 7 shows the Execute internal timing concept for the Register File. In a single clock cycle an ALU 3rd operation Instruction using Fetchtwo register operands is executed, and the result is stored back to the 3rd destination Instruction Execute register. 4th Instruction Fetch Obrázek: Paralelní načítání a výkon Figure 7. Single Cycle ALU Operation T1 T2 T3 T4 Figure 7 shows the internal timing concept for the Register File. In a single clock cycle an ALU operation using two register operands is executed, and the result is stored back to the destination register. clk CPU Figure Total 7. Execution Single Cycle Time ALU Operation T1 T2 T3 T4 Register Operands Fetch ALU Operation Execute clk CPU Total Result Execution Write Back Time Register Operands Fetch The ALU AVR Operation provides Execute several different interrupt sources. These interrupts and the separate reset vector each have a separate program vector in the program memory space. All interrupts Result are assigned Write Back individual enable bits which must be written logic one together with the Global Interrupt Enable bit in the Status Register in order to enable the interrupt. Depending on the Program Counter value, interrupts may be automatically disabled t when The AVR Boot provides Lock bits several BLB02 different or BLB12 interrupt are programmed. sources. These This interrupts feature improves and the separate software security. reset vector See each the section have a Memory separate Programming program vector on in page the 262 program for details. memory space. All The interrupts Obrázek: lowest are addresses assigned in individual the program Jednocyklová enable memory bits space which must are by be default written instrukce defined logic one as the together Reset and with Interrupt the Global Vectors. Interrupt The Enable complete bit in list the of Status vectors Register shown in order in Interrupts to enable the on interrupt. page 45. The Depending list also on determines the Program the Counter priority value, levels interrupts of the different may be interrupts. automatically The lower disabled the address when Boot the Lock higher bits is BLB02 the priority or BLB12 level. are RESET programmed. has the highest This feature priority, improves and next software is INT0 security. See the section Memory Programming on page 262 for details. The lowest addresses in the program memory space are by default defined as the Reset and Interrupt Vectors. The complete list of vectors is shown in Interrupts on page 45. 13 The list also determines the priority levels of the different interrupts. The lower the address the higher is the priority level. RESET has the highest priority, and next is INT0 Doba výkonu instrukce je řízena hodinovým signálem clk CP U. T 1, T 2,... reprezentují hodinové cykly. Zřetězené zpracování instrukcí vlastnost RISC. Obr. 1: Paralelní načítání (fetch) a výkon (execute) instrukcí v Harvardské architektuře. Obr. 2: Výkon jednocyklové instrukce; fáze výkonu 1 instrukce.
Některé typické řídicí signály Řídicí signály mohou být z pohledu mikrokontroléru chápany jako vstupní (IRQ), jiné jako výstupní (R/W, E, IO/M,...), příp. obousměrné. Output enable OE, Input enable IE. Signál R/W je generován mikrokontrolérem Informuje ostatní zařízení o směru čtení/zápisu dat z/na datovou sběrnici (R/W = 1 READ; R/W = 0 WRITE), Zajišt uje korektní komunikaci mezi pamětí, příp. I/O obvody a mikrokontrolérem. Signál IRQ (Interrupt Request) informuje mikrokontrolér o požadavku na přerušení Jedno nebo více I/O zařízení vyžaduje pozornost mikrokontroléru, Musí dojít k přerušení výkonu běžícího programu. Příklady přerušení: externí tlačítko; interní přetečení časovače, dokončení AD převodu (podrobněji později).
Způsoby určování čtení/zápisu Proces čtení nebo zápisu je řízen vždy dvěma signály. Existují dvě typické koncepce Intel zavedl použití signálů RD read, W R write (využívají např. mikrokontroléry AVR) vysoká úroveň definuje proces, Přístup do paměti trvá dva cykly. Druhý způsob používá např. Freescale, nebo řadiče LCD displeje: R/W úroveň definuje směr komunikace, E nízká úroveň aktivuje start procesu. Data Memory Access Times This section describes the general access timing concepts for internal memory access. The internal data SRAM access is performed in two clk CPU cycles as described in Figure 10. Figure 10. On-chip Data SRAM Access Cycles T1 T2 T3 clk CPU Address Compute Address Address Valid Data WR Data RD Read Write Memory Access Instruction Next Instruction EEPROM Data Memory The ATmega16 contains 512 bytes of data EEPROM memory. It is organized as a separate data space, in which single bytes can be read and written. The EEPROM has an endurance of at least 100,000 write/erase cycles. The access between the EEPROM and the CPU is described in the following, specifying the EEPROM Address Registers, the EEPROM Data Register, and the EEPROM Control Register. For a detailed description of SPI, JTAG, and Parallel data downloading to the EEPROM,
Komunikace s I/O jednotkou Mnoho mikrokontrolérů komunikuje jak s pamětí, tak i s I/O obvody shodným způsobem: Pamět ové mapování I/O Shodné adresování, Shodné signály pro směr přenosu (RD, W R), Shodný pamět ový prostor (možné adresy jsou rozděleny mezi pamět ovou část a vstupně/výstupní obvody), Použití shodných instrukcí. Druhým způsobem je použití samostatné I/O jednotky Tři řídicí signály: RD, W R, IO/M. Tabulka: Řízení odděleného adresování u 8085 Operace RD W R IO/M Adresa Čtení z paměti 0 1 0 A0-A15 Zápis do paměti 1 0 0 A0-A15 Čtení z I/O obvodu 0 1 1 A0-A7 Zápis do I/O obvodu 1 0 1 A0-A7
Komunikace s I/O jednotkou Mapování paměti a I/O zařízení u mikrokontroléru 8085 (Intel). Propojení mikrokontroléru, pamět ové součástky a I/O obvodu pomocí adresní, datové a řídicí sběrnice. Obrázek: Oddělené adresování paměti a I/O u 8085
Pamět Pamět uchovává skupiny bitů (slova), která mohou reprezentovat Instrukce, které mají být vykonány, tj. program (8) a také data, která mají být programem použita (1), Dočasné úložiště výsledků aritmeticko/logických operací (4). Zápis a čtení z paměti je řízeno signály RD a WR (příp. ekvivalenty), které generuje řídicí jednotka (7) a konkrétní data jsou vybírána podle adresy, tj. indexu pamět. buňky (6). Zdrojem zapisovaných dat může být ALU (4) nebo vstupní jednotka (9); vše je opět řízeno příslušnými signály, příp. adresou z řídicí jednotky. Čtená data mohou být přenesena do ALU (1) nebo do výstupních obvodů (10).
Paměti v mikroprocesorové technice Číslicový systém může obsahovat interní i externí pamět. Paměti interní Vždy polovodičové, Slouží k uložení programu i dat aktuálně používané CPU; proto musí být nejrychlejší v mikropočítači; v opačném případě by proces čtení/zápisu omezoval výkon programu, Patří zde paměti typu RAM i ROM. Paměti externí Slouží k uložení značného množství dat bez nutnosti stálého napájení; nemusí být extrémně rychlé, Ukládají se program i data, která nejsou aktuálně vyžadována CPU; pokud jsou tyto data vyžadována, provede se jejich přesun do interní paměti, CD, DVD, flešky,...
Vstupně/výstupní jednotka Vstupně/výstupní jednotka zajišt uje komunikaci s okolním světem. Vstupní jednotka obsahuje obvody, které umožňují přenos externích dat (klávesnice, tlakový senzor, sériová linka, A/D převodník,...) do vnitřní paměti (9), nebo do ALU (2). Výstupní jednotka obsahuje obvody, které zajišt ují přenos dat a informací z interní paměti (10) nebo ALU (5) vně systém (LED, LCD, modem,...). Podrobná struktura I/O obvodů později.
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Význam použitých instrukcí a symbolů Ukázka jednoduchého programu v jazyce symbolických adres pro mikrokontrolér ATmega16. Vývoj aplikace v prostředí AVR Studio - freeware fy Atmel. Prefix 0x identifikuje hodnotu v hexadecimální soustavě. Označení r16, r17 a r0 reprezentuje 8bitové registry; AVR jich má celkem 32. ldi a,0x0a do registru a (r16) ulož osmibitovou konstantu 0a (v 10tkové soustavě hodnota 10). mov temp,a do registru temp (r0) zkopíruj obsah registru a (r16). add temp,b k obsahu registru temp (r0) přičti obsah registru b (r17). rjmp loop skoč na návěstí loop.
Ukázka programu v asembleru pro ATmega16 registry, aritmetika.include <m16def.inc>.def a = r16.def b = r17.def temp = r0 reset: ldi a,0x0a ldi b,12 mov temp,a add temp,b loop: rjmp loop ; popisný soubor pro mikrokontrolér ATmega16 ; konstanta a nahrazuje registr r16 ; b == registr r17 ; temp == registr r0 ; naplnění registru a hodnotou 0a (hex) ; b = 12 (dek) ; přesun obsahu a do registru temp ; temp = temp + b ; skok na návěští loop, tj. nekonečná smyčka
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Zdroje informací Váňa, V. Mikrokontroléry ATMEL AVR; popis procesorů a instrukční soubor. Ben technická literatura, Praha, 2003, ISBN 80-7300-083-0. Spasov, P. Microcontroller Technology. Pearson Prentice Hall, New Jersey (USA), 2004, ISBN 0-13-112984-8. Tocci, R.J. Microprocessors and Microcomputers. Prentice Hall, New Jersey (USA), 2003, ISBN 0-13-060904-8.
Zdroje informací Peterka, J. earchiv.cz. Von Neumannova architektura, (září 2007). http://www.earchiv.cz/a93/a321c120.php3 Peterka, J. earchiv.cz. Architektura počítačů, (září 2007). http://poli.cs.vsb.cz/edu/arp/down/pocitace.pdf Wikipedia. Harvard architecture, (září 2007). http://en.wikipedia.org/wiki/harvard_architecture
Obsah přednášky Popis a použití mikrokontroléru, mikroprocesoru a mikropočítače Realizace řídicí aplikace Typy architektur v mikroprocesorové technice von Neumann, Harvardská, CISC, RISC, VLIW,... Obecná bloková struktura mikrokontrolérů Aritmeticko/logická jednotka, centrální řídicí jednotka, paměti, vstupně/výstupní obvody Ukázka programu v JSA pro ATmega16 Práce s registry, aritmetické operace Zdroje informací Otázky a příklady k procvičení
Otázky a příklady k procvičení 1. Jaké jsou hlavní rozdíly mezi architekturou CISC a RISC? 2. Může nastat situace, kdy po vykonané aritmetické operaci jsou ve stavovém registru příznaky C (přenos) a Z (nula) nastaveny na jedničku? Pokud ano, uved te příklad. 3. Jakou posloupnost signálů musí mikrokontrolér vyslat na adresní, datovou a řídicí sběrnici, aby na adresu 1 629 uložil slovo 95? (zapojení viz. obrázek na další straně). 4. Sestavte program v jazyce symbolických adres pro mikrokontrolér ATmega16, realizující součet dvou 2bytových hodnot.
Propojení mikrokontroléru s pamětí Obrázek: Propojení mikrokontroléru s pamětí