Hradla, volty, jednočipy
  • index
  • Poděkování
  • Předmluva vydavatele
  • Předmluva mentora
  • Výmluvy místo předmluvy
  • 1 Budu velkým elektronikem a budu stavět hrozně cool obvody!
    • 1.1 Blikač
    • 1.2 „Dílna“
    • 1.3 Kde nakoupit součástky?
    • 1.4 Nákupní seznam: Součástky pro blikač
  • 2 Postavte si blikač – teď už to snad půjde lépe
    • 2.1 Který rezistor je ten pravý?
    • 2.2 Měření multimetrem
    • 2.3 LED podrobněji
  • 3 Hlava, koleno, zem…
    • 3.1 „Nemá to něco společného s atomy?“
    • 3.2 Napětí
    • 3.3 Proud
    • 3.4 Vodič a nevodič
    • 3.5 Odpor
    • 3.6 Měření, měření!
    • 3.7 Ohmův zákon
    • 3.8 Výkon
    • 3.9 … a malé opáčko
    • 3.10 Zkratky u značení
    • 3.11 Vyvolená čísla
    • 3.12 Pro lepší představu
    • 3.13 Střídavý proud
    • 3.14 Zkrat
    • 3.15 Multimetr jako zkrat?
    • 3.16 Elektromagnetická indukce
    • 3.17 Značky pro schémata
  • 4 Zdroje napětí
    • 4.1 Společná zem
  • 5 Vedle sebe, za sebou
    • 5.1 Svítilna s LEDkou
    • 5.2 Sériové zapojení
    • 5.3 Dělič napětí
    • 5.4 Paralelní zapojení
    • 5.5 Kirchhof 2
    • 5.6 Baterie sériově – paralelně
    • 5.7 Potenciometr
    • 5.8 Úbytek napětí na LED
    • 5.9 Co jsou vlastně ty diody zač?
    • 5.10 Datasheet
  • 6 Základní elektronické součástky
    • 6.1 Rezistor
    • 6.2 Kondenzátor
    • 6.3 Cívka
    • 6.4 Transformátor
  • 7 Polovodiče
    • 7.1 P-N přechod
    • 7.2 Dioda
    • 7.3 Tranzistor
    • 7.4 Rozsvítíme prstem LED!
    • 7.5 Tranzistor řízený polem (FET)
    • 7.6 Šoupejte nožkou…
    • 7.7 MOSFET
    • 7.8 A to je všechno s polovodiči?
  • 8 Pouzdra elektronických součástek
    • 8.1 Co je to SMT a THT
    • 8.2 DIP, DIL
    • 8.3 Co s těmi ostatními?
  • 9 Blikač s Arduinem
    • 9.1 Když se řekne Arduino
    • 9.2 Programování Arduina
    • 9.3 Blikání Arduinem
    • 9.4 Krok zpět k drátům
    • 9.5 Arduino a EduShield
  • 10 Fotorezistor
    • 10.1 Obrácená logika
    • 10.2 Trimry
    • 10.3 Lepší řešení detektoru tmy
    • 10.4 Fotorezistor a Arduino
  • 11 Termistor
  • 12 LM35
  • 13 „Jak naučit kámen počítat“
    • 13.1 Stavebnice
    • 13.2 Logické funkce
    • 13.3 TTL a CMOS
    • 13.4 Operace s bity
    • 13.5 Booleova algebra, výroková logika
    • 13.6 Logika v číslicové technice
    • 13.7 U-káz-ka! U-káz-ka!
    • 13.8 Tlačítko a přepínač
    • 13.9 Pull Up a Pull Down
    • 13.10 Pomalé tlačítko
    • 13.11 Schmittův obvod
    • 13.12 Blokovací kondenzátor
    • 13.13 Buzení z Arduina
  • 14 Kombinační logika
    • 14.1 De Morganův zákon
    • 14.2 XOR
    • 14.3 Logické funkce dvou proměnných
    • 14.4 Vícevstupová hradla
    • 14.5 Mimochodem, když máme NAND, co ty ostatní?
    • 14.6 Zjednodušování logických výrazů
    • 14.7 AND-OR-INVERT
    • 14.8 Multiplexor
    • 14.9 Proč slučujeme přes OR?
    • 14.10 Dekodér (demultiplexor) „1-z-N“
    • 14.11 Vícebitové varianty
    • 14.12 Otevřený kolektor, třetí stav, OE
    • 14.13 Dekodéry
    • 14.14 Pojďme, budeme už fakt něco počítat!
    • 14.15 Aritmeticko-logická jednotka (ALU)
  • 15 Sedmisegmentovky LED
    • 15.1 Víc sedmisegmentovek…
  • 16 Jak vypadá hradlo uvnitř
    • 16.1 Proč zapojovat blokovací kondenzátory k napájení
    • 16.2 Negované signály
    • 16.3 MOS, CMOS
  • 17 „Plnou parou vzad!“ – „Ale jak daleko?“
    • 17.1 Ještě pípat!
  • 18 Zpětná vazba
    • 18.1 Astabi-cože?
    • 18.2 Blikač
    • 18.3 Krystalový oscilátor DIL
    • 18.4 Monostabilní klopný obvod
    • 18.5 Detektor pohybu
    • 18.6 Bistabilní klopný obvod R-S
    • 18.7 Zakázané kombinace, zpětná vazba, …
    • 18.8 Hodiny
    • 18.9 Synchronní / Asynchronní
    • 18.10 Symbol pro klopný obvod
    • 18.11 Reálný klopný obvod D: 7474
    • 18.12 Reálný latch 7475
  • 19 Panna, nebo orel?
    • 19. 1 Náhoda? Nemyslím si…
    • 19.2 Střída
    • 19.3 PWM
    • 19.4 Dělení kmitočtů
    • 19.5 Klopný obvod T
    • 19.6 Klopný obvod J-K
  • 20 Čítače
    • 20.1 Čítač s nulováním
    • 20.2 Čítače v praxi
    • 20.3 Hrací kostka
    • 20.4 Další čítače
    • 20.5 Ještě nějaké čítače?
    • 20.6 Rotační enkodér
    • 20.7 Čítač s dekodérem 1-z-10 typu 744017
    • 20.8 Počítadlo k autodráze
  • 21 Posuvné registry
  • 22 Paralelní a sériová rozhraní
    • 22.1 Buzení displeje ze sedmisegmentovek
    • 22.2 Posuvný řadič SIPO 74HCT595
  • 23 Sériová komunikace
    • 23.1 Sériová sběrnice SPI
    • 23.2 Sériová sběrnice I2C
    • 23.3 Prakticky…
    • 23.4 EduShield a displej
    • 23.5 RS-232, UART, Serial…
    • 23.6 Převodník USB na sériové rozhraní
    • 23.7 1-Wire
  • 24 Paměti
    • 24.1 7489 – 64 bitů RAM
    • 24.2 Dynamická RAM
    • 24.3 ROM, PROM a další
    • 24.4 To nejlepší z obou světů
    • 24.5 Několik tipů k pamětem
    • 24.6 Jak se zapisuje do EEPROM či FLASH?
    • 24.7 Sériové paměti
  • 25 Sériová paměť prakticky
  • 26 Hodiny reálného času
  • 27 Paměťové karty
  • 28 Logický analyzátor, logická sonda
  • 29 Elektronika a svět kolem nás
    • 29.1 Ovládáme přírodu elektronikou
    • 29.2 Příroda ovládá elektroniku
  • 30 Meteostanice
    • 30.1 Výběr součástek
    • 30.2 Špinavej trik
    • 30.3 Stavíme z polotovarů
  • 31 Bezdrátový přenos dat
    • 31.1 Vysílání na 433 MHz
    • 31.2 nRF24L01+
  • 32 Procesory, počítače, mikrořadiče
    • 32.1 Mikroprocesor 8080A
    • 32.2 Přerušení
    • 32.3 Periferie
    • 32.4 Složitější periferie
    • 32.5 Jednočipový mikropočítač
    • 32.6 Atmel AVR
    • 32.7 Další mikrokontroléry
    • 32.8 Tak málo nožiček…
    • 32.9 Programování jednočipů
  • 33 Displeje
    • 33.1 Znakový displej 1602, 2004
    • 33.2 Grafický displej 12864
    • 33.3 Další displeje
    • 33.4 Bezdrátový displej k naší meteostanici
  • 34 Klávesnice
    • 34.1 Šetříme vývody
    • 34.2 Připojujeme klávesnici od PC
    • 34.3 Matice tlačítek
    • 34.4 Postavte si třeba… kalkulačku?
  • 35 Osm tlačítek na třech vodičích
    • 35.1 Multiplexior / Demultiplexor
    • 35.2 PISO a SPI
    • 35.3 Analogová cesta
    • 35.4 R-2R
  • 36 Joystick
  • 37 ESP8266 WiFi
    • 37.1 Moduly ESP8266
    • 37.2 Převodník napěťových úrovní
    • 37.3 WeMos D1 Mini, NodeMCU
    • 37.4 Bezdrátový teploměr s WiFi
    • 37.5 Instalace podpory ESP8266 do Arduino IDE
    • 37.6 WiFi Manager
    • 37.7 Klient / server?
  • 38 Low Power
    • 38.1 Solární články
  • 39 Sigfox
    • 39.1 Co je to Sigfox?
    • 39.2 Cloudový teploměr se Sigfoxem
    • 39.3 Co s daty v Sigfoxu?
  • 40 Šťastnou cestu…
  • Přílohy
    • Nástroje a weby
    • Nákupní seznam začínajícího hobby elektronika
    • EduShield
    • Nahrání firmware do EduShieldu
    • Turris Omnia pro experimenty s elektronikou
    • Karnaughova mapa
    • „Dobré rady nad zlato“ na jednom místě
Powered by GitBook
On this page
  • 32.1.1 Ready / Wait
  • 32.1.2 Hold (DMA)

Was this helpful?

  1. 32 Procesory, počítače, mikrořadiče

32.1 Mikroprocesor 8080A

Previous32 Procesory, počítače, mikrořadičeNext32.2 Přerušení

Last updated 5 years ago

Was this helpful?

Původní 8080 byl záhy nahrazen vylepšeným typem 8080A, který byl rychlejší. Jeho vnitřní uspořádání ukazuje následující schéma:

CC-BY-SA, autor Appaloosa

Uprostřed vidíte aritmeticko-logickou jednotku (ALU). Nalevo od ní (samozřejmě že je řeč o tom schematickém náčrtku) je pracovní registr – akumulátor a registr pro ukládání mezivýsledků. Nad ALU je blok příznakových bitů (Flag Flip Flops), pod ní kombinační logika pro převod mezi binárními a decimálními hodnotami. Napravo je registr pro instrukci a instrukční dekodér. Pravá část schématu obsahuje blok pracovních registrů, čítač instrukcí PC a další registry. Kromě těchto částí obsahuje procesor ještě obvody pro řízení datové sběrnice, pro řízení adresové sběrnice a obvody časování a řízení běhu procesoru.

Procesor je osmibitový, to znamená, že pracuje s údaji o šířce 8 bitů. Navenek komunikuje obousměrnou datovou sběrnicí D0-D7. Směr komunikace určuje procesor podle toho, jestli potřebuje číst data, nebo je zapisovat. Procesor dokáže adresovat 64 kB paměti (k tomu sloužila adresová sběrnice s šestnácti signály A0-A15).

Z hlediska programátora jsou zajímavé právě pracovní registry B, C, D, E, H a L, registr A (zvaný akumulátor, to protože se v něm „akumulují“ výsledky), ve kterém se provádějí všechny aritmetické i logické instrukce, ukazatel zásobníku a registr příznaků, který říká, jak dopadla poslední operace, a který slouží k podmíněným skokům (například „skoč, pokud výsledkem předchozí operace je 0“).

Obvod 8080A se nejčastěji používal s dvojicí podpůrných obvodů 8224 a 8228. První jmenovaný se staral o správné vytváření hodinových pulsů (8080A vyžaduje dva nepřekrývající se hodinové pulsy) a synchronizaci signálů, druhý jmenovaný se staral o řízení sběrnice a vytváření základních řídicích signálů /MEMR, /MEMW, /IOR a /IOW.

Signály /MEMR a /MEMW říkají, že procesor chce číst z paměti (MEMory Read) nebo do ní zapisovat (MEMory Write). Signály IOR a IOW oznamují, že procesor chce číst nebo zapisovat do obvodů pro vstup a výstup. Takovéto rozdělení umožňovalo využít celý prostor 64 kB pro paměť, a další prostor 256 adres pro různé periferie (k nim se ještě dostaneme).

Po spuštění procesoru se většinou vnější obvody postaraly, aby ze všeho nejdřív přišel signál RESET. Tento signál uvedl procesor do výchozího stavu, což technicky znamenalo především nastavit čítač instrukcí (PC) do stavu 0x0000. Pak začal procesor provádět instrukce.

První hodinový puls se nazýval FETCH a jeho úkolem bylo vyzvednout kód instrukce z paměti. Řídicí logika v tomto cyklu přepne datovou sběrnici na vstup, na adresovou sběrnici pustí hodnotu čítače instrukcí PC a aktivuje signál /MEMR – čtení z paměti. Kdesi venku, mimo procesor, musí být připojená paměť, většinou EPROM nebo RAM, a v ní uložený program. Paměť je připojena na adresovou i datovou sběrnici, a povolovací vstup /CE je připojen právě na /MEMR. Když procesor tento signál aktivuje, paměť na výstup vystaví hodnotu, kterou má uloženou na dané adrese – v tomto případě na adrese 0000. Technicky je to prostě jen osmibitová hodnota, například 0xD3 – binárně 11010011.

Procesor tuto hodnotu vidí na datových vstupech a uloží si ho do registru instrukcí. To je zase náš známý osmibitový klopný obvod typu D. Na jeho výstupu je připojen velmi složitý kombinační obvod, který z těchto osmi bitů pozná, co má udělat, a podle toho v dalších cyklech aktivuje jednotlivé vnitřní komponenty. Například na vstupy ALU připojí akumulátor a některý z pracovních registrů, na řídicí vstup ALU nastaví operaci „sečti“, a v dalším kroku uloží výsledek opět do akumulátoru. U některých instrukcí si může vyžádat další čtení z paměti nebo zápis do ní. Když vykoná procesor vše, co daná instrukce předepisuje, zvýší hodnotu PC o 1 a celý cyklus se opakuje. U některých instrukcí (skoky) se PC nezvyšuje, místo toho je do tohoto registru zapsána nová hodnota.

32.1.1 Ready / Wait

Některé periferie, popřípadě pomalé paměti, vyžadují, aby procesor chvilku počkal, protože nemají požadovaná data hned. V takovém případě uvedou vstup READY – tedy „připraveno“ – do 0. Procesor z toho pozná, že data nejsou připravena, a čeká. Čeká do té doby, než bude signál READY zase 1. Během čekání uvede svůj výstup WAIT do 1, a tím oznamuje, že čeká na data. Jakmile má periferie data připravená, pošle je na datovou sběrnici a uvolní signál READY zpět do log. 1. Procesor tím vystoupí z čekací smyčky, přečte data a pokračuje dál v provádění instrukce.

32.1.2 Hold (DMA)

Procesor umožňuje některým periferním obvodům, aby převzaly kontrolu nad sběrnicí. Slouží k tomu signál HOLD. Jakmile je aktivovaný, dokončí procesor aktuálně prováděný cyklus a vstoupí do stavu HOLD. V tomto stavu se odpojí od adresové i datové sběrnice a aktivuje výstup HLDA (HOLD Acknowledge). Jakmile je HLDA aktivní, může periferní obvod přebrat řízení sběrnice.

Nejčastější scénář použití stavu HOLD je při takzvaném přímém přístupu do paměti (Direct Memory Access, DMA). Používá se ve chvíli, kdy některá rychlá periferie (nejčastěji to bývaly disky, zvukové obvody nebo videoobvody) potřebuje zapisovat nebo číst data. Speciální obvod (DMA Controller) obdržel např. informaci o tom, že periferie, například disk, má připravená data k přenosu. Požádal procesor o přístup na sběrnici (HOLD), a jakmile procesor potvrdil, že je odpojen, začal tento obvod číst data z periferie a zapisovat je do paměti mnohem větší rychlostí, než by to dokázal samotný procesor.

Práce s takovým obvodem pak pro programátora vypadala tak, že do DMA Controlleru nastavil adresu, kam se budou data zapisovat nebo odkud se budou číst, řekl kolik dat očekává, a oznámil periferii, že požaduje např. data z nějakého diskového sektoru. Pak pokračoval v práci. Ve chvíli, kdy periferie měla data připravená, přenesl je výše popsaným způsobem DMA Controller do paměti, a pak dal procesoru vědět, že je hotovo.

Jakým způsobem? Třeba přerušením!

355-1.png