Mikrořadiče eZ8 aneb potomek legendárního Z80

6. 12. 2016
Doba čtení: 18 minut

Sdílet

Další řada osmibitových mikrořadičů, kterou si v dnešním článku stručně popíšeme, nese označení eZ8. Podobnost s legendárními mikroprocesory Z80 není náhodná, protože i mikrořadiče eZ8 jsou vyráběny společností Zilog.

Obsah

1. Mikrořadiče eZ8 aneb potomek legendárního Z80

2. Mnemotechnické zkratky instrukcí inspirované instrukční sadou Z80

3. Programátorský pohled na mikrořadiče eZ8

4. Registry a adresovací režimy

5. Instrukční soubor mikrořadičů eZ8

6. Aritmetické instrukce

7. Logické instrukce

8. Aritmetické posuny, bitové posuny a rotace

9. Podmíněné i nepodmíněné skoky, skoky a návraty z podprogramů

10. Instrukce Booleovského procesoru

11. Instrukce pro přenosy dat

12. Blokové přenosy

13. Práce s příznakovými bity

14. Instrukce pro řízení CPU

15. Odkazy na Internetu

1. Mikrořadiče eZ8 aneb potomek legendárního Z80

„Certainly, 32-bit or even 16-bit MCUs are not needed for end points such as wall plugs, switches, smart ballasts, even certain lighting fixtures. When examining deployment ratios, it is apparent that there are many more end points in many of these designs, and thus a large demand for our beloved 8-bit microcontrollers. They are not gone, and they most certainly are not forgotten!“

Další řada osmibitových mikrořadičů, s níž se v seriálu o architekturách počítačů a procesorů alespoň ve stručnosti seznámíme, je postavena na jádrech Z8 a eZ8. Mikrořadiče s jádry Z8 patří do skupiny původních osmibitových mikrořadičů navržených již na konci sedmdesátých let minulého století či na samotném začátku let osmdesátých (do této skupiny můžeme zařadit i původní architektury PIC, Motorolu 68HC05/08, Intel 8048 i Intel 8051). Jádra eZ8, která jsou již novější a modernější, vznikla rozšířením osmibitových mikrořadičů Z8 o několik nových instrukcí a taktéž rozšířením adresovacích režimů. Navíc byla architektura čipu upravena takovým způsobem, že se většina strojových instrukcí provede v menším počtu hodinových cyklů a navíc dochází i k většímu překryvu instrukcí – u původních jader Z8 se překrývala pouze fáze write back (zápis výsledků) s fází instruction fetch (a to ještě pouze z toho důvodu, že paměť s programem byla oddělena od datové paměti).

pc6702

Obrázek 1: Domácí osmibitový mikropočítač ZX80. V průběhu jediného roku, kdy byl tento počítač vyráběn, se prodalo cca 70000 kusů, což je na tehdejší dobu velmi vysoké číslo.

Za vývojem mikrořadičů s jádry Z8 stojí společnost Zilog, kterou si velmi dobře pamatují zejména uživatelé domácích osmibitových mikropočítačů, protože v mnoha těchto strojích se používal mikroprocesor Zilog Z80, který byl zpětně kompatibilní s v mnoha ohledem horším čipem Intel 8080, ovšem navíc nabízel rozšířenou sadu registrů, vylepšenou sadu instrukcí, jednodušší způsob zapojení mikropočítače se Z80 (snížení počtu VLSI čipů o dva) atd. Kromě toho však Zilog Z80 můžeme najít i v dalších zařízeních, ať již se jedná o herní automaty či naopak o profesionální počítače vybavené operačním systémem CP/M. Po velkém úspěchu Z80 se firma Zilog snažila prosadit i na trhu se šestnáctibitovými mikroprocesory (což se příliš nezdařilo) a taktéž na trhu s osmibitovými mikrořadiči, pro něž vyrábí právě řadu Z8 (úspěch však není příliš oslnivý kvůli velké konkurenci), nověji řadu eZ8, ale i čipy postavené na starodávné, nicméně stále používané architektuře 8051 (mikrořadiče …).

Obrázek 2: Obal na kazetu se Zeus Assemblerem pro ZX Spectrum a tím pádem samozřejmě pro mikroprocesory Zilog Z80.

2. Mnemotechnické zkratky instrukcí inspirované instrukční sadou Z80

Instrukční soubor osmibitových mikrořadičů Z8/eZ8 se sice v mnoha ohledech odlišuje od původního mikroprocesoru Zilog Z80, ovšem mnemotechnické zkratky instrukcí zůstaly do velké míry zachovány, což znamená, že se programy psané v assembleru Z8/eZ8 do značné míry podobají například původním programům pro ZX Spectrum či pro další domácí počítače na Z80 postavené (mimochodem: firma Zilog musela z licenčních důvodů pro svůj Z80 použít odlišné zkratky instrukcí, než jaké nalezneme na zpětně kompatibilním čipu Intel 8080). Musíme však mít na paměti, že největší rozdíly mezi mikroprocesory Z80 a mikrořadiči Z8/eZ8 spočívají v použití zcela odlišného způsobu adresování pracovních registrů, což je téma, kterému se budeme více věnovat v navazujících kapitolách.

Jen pro zajímavost se podívejme na shodné i rozdílné mnemotechnické zkratky instrukcí u Z80 a Z8 (podrobnější přehled instrukcí bude opět uveden v dalších kapitolách; tabulka nezohledňuje to, že některé instrukce byly přejmenovány):

Z8             Z80
-------------------
ADC            ADC
ADCX
ADD            ADD
ADDX
AND            AND
ANDX
ATM
               BIT
BCLR
BIT
BRK
BSET
BSWAP
BTJ
BTJNZ
BTJZ
CALL           CALL
CCF            CCF
CLR
COM
CP             CP
CPC
CPCX
               CPD
               CPDR
               CPI
               CPIR
               CPL
CPX
DA
               DAA
DEC            DEC
DECW
DI             DI
DJNZ           DJNZ
EI             EI
               EX
HALT           HALT
               IM
               IN
INC            INC
INCW
               IND
               INDR
               INI
               INIR
IRET
JP             JP
JR             JR
LD             LD
LDC
LDCI
               LDD
               LDDR
LDE
LDEI
               LDI
               LDIR
LDWX
LDX
LEA
MULT
               NEG
NOP            NOP
OR             OR
ORX
               OUT
               OUTD
               OTDR
               OUTI
               OTIR
POP            POP
POP            PUSHX
PUSH
PUSHX
RCF
               RES
RET            RET
               RETI
               RETN
               RLA
RL             RL
RLC            RLC
               RLCA
               RLD
               RRA
RR             RR
               RRCA
RRC            RRC
               RRD
               RST
SBC            SBC
SBCX
SCF            SCF
               SET
               SLA
SRA            SRA
               SLL
SRL            SRL
SRP
STOP
SUB            SUB
SUBX
SWAP
TCM
TCMX
TM
TMX
TRAP
WDT
XOR            XOR
XORX

3. Programátorský pohled na mikrořadiče eZ8

Mikrořadiče eZ8 mají Harvardskou architekturu, což znamená, že paměť s uloženým programem je oddělená od datové paměti. Navíc jen velmi malé množství instrukcí dokáže pracovat s daty (konstantami) uloženými v paměti programu; naproti tomu možnosti adresování dat v datové paměti jsou nepoměrně větší, což je samozřejmě chování založené na reálných požadavcích.

Programová paměť může mít maximální kapacitu 64 kB, ovšem reálné čipy většinou obsahují FLASH s menší kapacitou, typicky od 1kB do 16kB. V prvních dvou bajtech je uložena konfigurace FLASH, za níž následuje vektor pro RESET (vektor=cílová adresa, která se použije po signálu RESET). Od adresy 0×0004 jsou uloženy vektory (cílové adresy) jednotlivých rutin přerušení (počet je proměnný) a za těmito vektory je již vlastní paměť s programem a konstantními daty.

Datová paměť je rozdělená mnohem zajímavěji. Její maximální kapacita je 4096 bajtů (4kB). Těchto 4096 adres je rozděleno do šestnácti banků (každý má velikost 256 bajtů) a každý bank je rozdělen do šestnácti skupin po šestnácti adresách. Vybraný bank lze adresovat s použitím osmibitové konstanty či osmibitového registru a vybranou skupinu procesor považuje za aktivní pracovní registry, které jsou adresovány (vybírány) pouhými čtyřmi bity v instrukci (výběr banku a skupiny se provádí instrukcí SRP). Díky tomuto rozdělení na banky a skupiny bylo možné zcela odstranit koncept klasického akumulátoru i pracovních registrů; navíc je možné pro přerušovací rutiny (či pro běžné subrutiny) vyhradit samostatné skupiny adres, což zcela odstraní nutnost manipulace se zásobníkem. Do datové paměti jsou navíc mapovány i řídicí registry, což je ovšem téma pro navazující článek.

Na adrese 0×fc je uložen bajt obsahující příznakové bity (FLAGS):

Příznak Název
C carry
Z zero
S sign
V overflow
D decimal adjust
H half carry

Obrázek 3: Automat se hrou Pac-Man je taktéž postaven na mikroprocesorech Zilog Z80.

4. Registry a adresovací režimy

Unikátní architektura eZ8 nabízí programátorům následující adresovací režimy:

  1. Pracovní registr ve vybrané skupině (4bitový index)
  2. Registr ve vybraném banku (256 adres)
  3. Registrový pár (sudé adresy 0..254)
  4. Nepřímý pracovní registr @r
  5. Nepřímý registr ve vybraném banku @R
  6. Nepřímý registrový pár @RR
  7. Relativní adresa (8 bitů pro skoky)
  8. Rozšířená adresa (12 bitů pro datovou paměť)
  9. Absolutní adresa (16 bitů pro externí paměť či paměť programu)
  10. Pracovní registr použitý jako index

5. Instrukční soubor mikrořadičů eZ8

Instrukce mikrořadičů s jádry eZ8 obsahují 60 resp. 74 instrukcí, a to v závislosti na tom, zda instrukce s rozšířeným adresováním budeme považovat za nové instrukce či za modifikaci již existujících instrukcí. Následující kapitoly jsou pojmenovány podobně, jako tomu bylo v předminulémminulém článku, takže si můžete rozdíly mezi instrukčními sadami snadno porovnat:

6. Aritmetické instrukce

Do sady aritmetických instrukcí patří samozřejmě instrukce pro součet a rozdíl dvou operandů. V závislosti na tom, zda se při výpočtu použije příznak carry rozlišujeme instrukce ADD/ADC a SUB/SBC (zde se carry použije ve smyslu výpůjčky, tedy borrow i přesto, že se instrukce nejmenuje SBB). Následují instrukce pro zvýšení či snížení operandu o jedničku. Zde stojí za povšimnutí fakt, že můžeme inkrementovat či dekrementovat obsah registrového páru, tj. šestnáctibitového operandu, zatímco většina ostatních instrukcí pracuje jen s osmibitovými operandy (ovšem inkrementace a dekrementace se provádí i u ukazatelů, takže se tyto instrukce v praxi hodí). Následuje instrukce MULT pro vynásobení osmibitových operandů se šestnáctibitovým výsledkem, instrukce pro porovnání operandů s nastavením příznakových bitů a konečně instrukce DA pro desítkovou korekci předchozí operace součtu či rozdílu ve chvíli, kdy se pracuje v kódu BCD (korekce se provede na základě příznakového bitu H/half carry):

# Instrukce Operandy Stručný popis
1 ADD dst,src součet dst ← dst + src
2 ADC dst,src součet dst ← dst + src + C
3 SUB dst,src rozdíl dst ← dst – src
4 SBC dst,src rozdíl dst ← dst – src – C
       
5 INC dst inkrementace dst (osmibitový operand)
6 INCW dst inkrementace dst (šestnáctibitový operand)
7 DEC dst dekrementace dst (osmibitový operand)
8 DECW dst dekrementace dst (šestnáctibitový operand)
       
9 MULT dst násobení 8×8bit: dst[15:0] ← dst[15:8] × dst[7:0]
       
10 CP dst,src rozdíl dst – src (pouze se nastaví příznaky, výsledek se neuloží)
11 CPC dst,src rozdíl dst – src – C (pouze se nastaví příznaky, výsledek se neuloží)
       
11 DA dst korekce po operacích ADD a SUB, pokud jsou výpočty prováděny v BCD kódu

Některé často používané instrukce mají další varianty, které používají „rozšířené“ adresovací režimy. Operandem dst je v tomto případě dvanáctibitová adresa v rozsahu 0×000 až 0×fff, operandem src pak taktéž dvanáctibitová adresa popř. osmibitová konstanta:

# Instrukce Rozšířená varianta
1 ADD ADDX
2 ADC ADCX
3 SUB SUBX
4 SBC SBCX
5 CP CPX
6 CPC CPCX

7. Logické instrukce

Mezi logickými instrukcemi samozřejmě nalezneme instrukce AND (logický součin) a OR (logický součet) doplněné o instrukci XOR (nonekvivalence) a taktéž o instrukci COM určenou pro negaci všech bitů operandu. Všechny tyto instrukce pracují pouze s osmibitovými operandy:

# Instrukce Operandy Stručný popis
1 AND dst,src dst ← dst ∧ src + nastavení příznaků Z a S
2 OR dst,src dst ← dst ∨ src + nastavení příznaků Z a S
3 XOR dst,src dst ← dst ⊕ src + nastavení příznaků Z a S
4 COM dst dst ← ~dst + nastavení příznaků Z a S

Podobně jako u aritmetických instrukcí, i u instrukcí logických (přesněji řečeno u těch instrukcí, které mají dva operandy) nalezneme varianty s rozšířeným adresováním (instrukce COM však nemá rozšířený ekvivalent):

# Instrukce Rozšířená varianta
1 AND ANDX
2 OR ORX
3 XOR XORX

8. Aritmetické posuny, bitové posuny a rotace

Mikrořadiče Z8 podporují instrukce pro rotaci operandu doprava i doleva s výběrem, zda se má rotace provést bez příznaku carry (rotace osmi bitů) či naopak s příznakem carry (rotace přes devět bitů). Existují i instrukce pro aritmetický a logický posun doprava SRL a SRA, ovšem podobné instrukce pro posun doprava nenalezneme, protože je lze snadno nahradit součtem. Všechny rotace a posuny jsou provedeny vždy o jediný bit. Výjimkou je instrukce SWAP, která prohodí horní a spodní čtveřici bitů a je tedy shodná s opakováním instrukce RL či RR čtyřikrát po sobě. Instrukce BSWAP otočí všechny bity v operandů, takže do této skupiny spadá jen částečně:

# Instrukce Operandy Stručný popis
1 RL dst rotace doleva
2 RLC dst rotace doleva přes příznak carry
3 RR dst rotace doprava
4 RRC dst rotace doprava přes příznak carry
5 SRL dst logický posun doprava
6 SRA dst aritmetický posun doprava
       
7 SWAP dst prohození čtyř horních bitů se spodními čtyřmi bity
8 BSWAP dst otočení všech bitů v operandu

Instrukce RL:

+-------+
+ Carry |
+-------+
    ^
    |     +---+---+---+---+---+---+---+---+
    +---<-| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
    |     +---+---+---+---+---+---+---+---+
    |                                   ^
    v                                   |
    +-----------------------------------+

Instrukce RR:

+-------+
+ Carry |
+-------+
    ^
    |     +---+---+---+---+---+---+---+---+
    +-->--| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
    |     +---+---+---+---+---+---+---+---+
    ^                                   |
    |                                   v
    +-----------------------------------+

Instrukce RLC:

+-------+       +---+---+---+---+---+---+---+---+
+ Carry |---<---| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+-------+       +---+---+---+---+---+---+---+---+
    |                                         ^
    v                                         |
    +-----------------------------------------+

Instrukce RRC:

+-------+       +---+---+---+---+---+---+---+---+
+ Carry |--->---| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+-------+       +---+---+---+---+---+---+---+---+
    ^                                         |
    |                                         v
    +-----------------------------------------+

Instrukce SRL:

+---+       +---+---+---+---+---+---+---+---+       +-------+
+ 0 |--->---| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |--->---+ Carry |
+---+       +---+---+---+---+---+---+---+---+       +-------+

Instrukce SRA:

+---<----+
|        |
|      +-+-+---+---+---+---+---+---+---+       +-------+
+-->---| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |--->---+ Carry |
       +---+---+---+---+---+---+---+---+       +-------+

9. Podmíněné i nepodmíněné skoky, skoky a návraty z podprogramů

Mezi další skupinu instrukcí patří různé typy skoků, včetně instrukcí určených pro skok do podprogramu a návrat z podprogramu. Při popisu skokových instrukcí si musíme uvědomit, že se v nich musí použít adresovací režimy odlišné od režimů použitých při adresování operandů aritmetických a logických instrukcí. Je to vlastně očekávaná vlastnost, protože operandy běžných instrukcí jsou uloženy v datové paměti (o maximální kapacitě 4096 bajtů), kdežto paměť programu je od datové paměti oddělena a její běžný adresový rozsah je 64 kB (s možností jeho zvětšení s využitím stránkování). Základní instrukce pro podmíněné a nepodmíněné skoky se jmenuje JP (absolutní skok) a JR (relativní skok), pro skok do podprogramu a návrat z podprogramu se používají instrukce CALL a RET, Booleovský procesor je doplněn instrukcemi BTJ, BTJZ a BTJNZ a zapomenout nesmíme ani na instrukci DJNZ, kterou lze použít pro implementaci počítaných programových smyček:

# Instrukce Operandy Stručný popis
1 JP cc,dst absolutní skok (s volitelnou podmínkou)
2 JR cc,dst relativní skok (s volitelnou podmínkou)
       
3 DJNZ dst,src snížení dst o 1 a skok v případě, že je dst nenulový
       
4 BTJ p, bit, src, dst skok za podmínky, že je srcbit=p
5 BTJZ bit, src, dst skok za podmínky, že je srcbit=0
6 BTJNZ bit, src, dst skok za podmínky, že je srcbit=1
       
7 CALL dst volání podprogramu (lze použít absolutní adresu či registrový pár)
8 RET   návrat z podprogramu
9 IRET   návrat z přerušovací rutiny (obnoví FLAGS i IRQCTL)

U instrukcí skoku je v operandu dst uložena přímá či nepřímá cílová adresa skoku.

U instrukcí JP a JR je možné do pole cc specifikovat podmínku, při jejímž splnění se skok provede. Pokud podmínka není zapsána, provede se skok v každém případě (druhý řádek tabulky):

Kód (cc) Plný název Testovaná podmínka
F always false ×
(nic) always true ×
C carry C=1
NC no carry C=0
Z zero Z=1
NZ non zero Z=0
PL plus S=0
MI minus S=1
OV overflow V=1
NOV no overflow V=0
EQ equal Z=1
NE not equal Z=0
GE greater than or equal (S ⊕ V)=0
LT less than (S ⊕ V)=1
GT greater than (Z ∨ (S ⊕ V))=0
LE less than or equal (Z ∨ (S ⊕ V))=1
UGE unsigned greater than or equal C=0
ULT unsigned less than C=1
UGT unsigned greater than (C=0 ∧ Z=0)=1
ULE unsigned less than or equal (C ∨ Z)=1

Poznámka: povšimněte si, že některé kódy jsou vlastně pouze aliasy na jiné kódy. Příkladem může být kód C a UGE. Ve skutečnosti existuje pouze čtrnáct unikátních podmínek doplněných o dvě „konstantní podmínky“ always true a always false.

10. Instrukce Booleovského procesoru

Podobně jako u mnoha dalších mikrořadičů nalezneme i u jader eZ8 instrukce, které lze použít pro manipulaci s jednotlivými bity, popř. pro aplikaci nějaké masky na celý bajt. Tyto instrukce jsou vypsány v následující tabulce, navíc k nim můžeme přidat i výše popsané podmíněné skoky BTJ, BTJZ a BTJNZ:

# Instrukce Operandy Stručný popis
1 TM dst,src (NOT dst) AND src s nastavením příznaků zerosign
2 TCM dst,src (NOT dst) AND src s nastavením příznaků zerosign
       
3 BSET bit, dst nastavení bitu s indexem bit na jedničku
4 BCLR bit, dst vynulování bitu s indexem bit
5 BIT p, bit, dst nastavení bitu s indexem bit na hodnotu p

I v této skupině nalezneme instrukce s rozšířenými adresovacími režimy, které dokážou přistupovat do celé dostupné RAM:

# Instrukce Rozšířená varianta
1 TM TMX
2 TCM TCMX

11. Instrukce pro přenosy dat

Skupina instrukcí pro přenos dat je poměrně rozsáhlá, a to z toho důvodu, že je nutné rozlišit čtení/zápis do běžné datové paměti, čtení/zápis do externí datové paměti (samozřejmě pokud je připojena) a konečně čtení popř. v některém případě i zápis do paměti programu. Navíc si povšimněte, že všechny přenosové instrukce se jmenují LD (load), i když současně provádí i zápis (eZ8 má i pracovní registry uloženy v paměti):

# Instrukce Operandy Stručný popis
1 LD dst,src přenos bajtu v rámci datové paměti
2 LDC dst,src načtení konstanty z programové paměti
3 LDE dst,src přenos dat z/do externí datové paměti
4 LDWX dst,src načtení 16bitového slova
       
5 LEA dst,X(src) výpočet dst ← src + X
       
6 PUSH src uložení operandu src na zásobník
7 POP dst načtení operandu ze zásobníku a uložení na dst
       
8 CLR dst vynulování dst

Poznámka: při programování FLASH paměti může být cílovým operandem LDC i paměť programu.

I v této skupině nalezneme instrukce s rozšířenými adresovacími režimy, které dokážou přistupovat do celé dostupné RAM:

# Instrukce Rozšířená varianta
1 PUSH PUSHX
2 POP POPX
3 LD LDX

12. Blokové přenosy

Předchozí skupinu instrukcí doplňují ještě dvě další instrukce pojmenované LDCI a LDEI. Tyto instrukce dokážou načíst data z programové paměti resp. z externí datové paměti a posléze inkrementují adresu, z níž bylo načtení provedeno i adresu, na níž se operand uložil. Tyto instrukce je tedy možné použít pro blokové přenosy dat, například kombinací instrukcí LDCI+DJNZ či LDEI+DJNZ:

# Instrukce Operandy Stručný popis
1 LDCI dst,src načtení konstanty z programové paměti + inkrementace adresy
2 LDEI dst,src načtení konstanty z externí datové paměti + inkrementace adresy

Poznámka: při programování FLASH paměti může být cílovým operandem LDCI i paměť programu.

13. Práce s příznaky

Mikrořadiče Z8 obsahují pouze tři instrukce, které umožňují přímou manipulaci s příznakovými bity, konkrétně pouze s příznakem carry. Všechny tyto instrukce mají délku instrukčního slova jeden bajt. Pokud je nutné manipulovat i s ostatními příznakovými bity, lze to provést přímým zápisem do registru FLAGS, který je umístěn na adrese 0×fc (ovšem zaplatíme za to nepatrně delším a pomalejším programem):

bitcoin_skoleni

# Instrukce Operandy Stručný popis
1 RCF × vynulování příznaku carry
2 SCF × nastavení příznaku carry na 1
3 CCF × negace příznaku carry

Tyto tři instrukce existují z toho důvodu, že se s carry bitem manipuluje před provedením rotací.

14. Instrukce pro řízení CPU

Poslední skupinu tvoří instrukce určené pro řízení procesoru. Nalezneme zde například instrukce pro povolení či zákaz přerušení (přerušení je však registrováno v každém případě, i když je zakázáno), nastavení aktuálně používané banky registrů, práce s watchdogem, zastavení procesoru apod.:

# Instrukce Operandy Stručný popis
1 EI   povolení přerušení
2 DI   zákaz přerušení
3 ATM   zákaz přerušení a DMA přenosů pro další tři instrukce
       
4 NOP   přeskok na následující instrukci
       
5 SRP src nastavení aktuálně používané banky registrů
6 WDT   znovunaplnění čítače watchdogu
       
7 STOP   režim STOP
8 HALT   režim HALT
9 BRK   pozastavení (v debug režimu)
10 TRAP vektor uložení PC a FLAGS na zásobník, skok na adresu uloženou na @vector

15. Odkazy na Internetu

  1. Z80 info
    http://www.z80.info/
  2. Zilog (stránka firmy)
    http://www.zilog.com/
  3. Řada Z8 Encore
    http://www.zilog.com/index­.php?option=com_product&tas­k=product&businessLine=1&id=2&pa­rent_id=2&Itemid=56
  4. New Zilog Z8051 Microcontrollers (už ne „new“, článek je z roku 2012)
    http://microcontroller.com/new­s/Zilog_Z8051.asp
  5. Zilog: The First Decade: Z80, Z8 and the Z8000
    http://www.cpushack.com/2010/10/15/zi­log-the-first-decade-z80-z8-and-the-z8000/
  6. Docs for: Z8 Microcontroller (archivní stránka)
    http://www.oocities.org/si­liconvalley/peaks/3938/z8_ho­me.htm
  7. 8-BIT MCU Relevancy in 2011
    http://www.eeweb.com/blog/ste­ve_darrough/8-bit-mcu-relevancy-in-2011
  8. Zilog Z8 (Wikipedia)
    https://en.wikipedia.org/wi­ki/Zilog_Z8
  9. 8-bit S08
    http://www.nxp.com/produc­ts/microcontrollers-and-processors/more-processors/8–16-bit-mcus/8-bit-s08:HCS08
  10. S08QB: 8-bit QB MCUs
    http://www.nxp.com/produc­ts/microcontrollers-and-processors/more-processors/8–16-bit-mcus/8-bit-s08/8-bit-s08–3.6v-mcus/8-bit-qb-mcus:S08QB
  11. 8-bit RS08
    http://www.nxp.com/produc­ts/microcontrollers-and-processors/more-processors/8–16-bit-mcus/8-bit-rs08:RS08FAMILY
  12. Wikipedia: Motorola 68HC05
    http://en.wikipedia.org/wi­ki/Motorola_68HC05
  13. Wikipedia: Freescale 68HC08
    http://en.wikipedia.org/wiki/68HC08
  14. Wikipedia: Freescale 68HC11
    http://en.wikipedia.org/wiki/68HC11
  15. Wikipedia: Freescale 68HC12
    http://en.wikipedia.org/wi­ki/Freescale_68HC12
  16. HC05 Processor Families
    http://www.freescale.com/we­bapp/sps/site/overview.jsp?no­deId=01624684498633
  17. HC08 Processor Families
    http://www.freescale.com/we­bapp/sps/site/overview.jsp?no­deId=01624684497663
  18. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd.pl/acore.php?idcore=82
  19. Freescale 68HC11
    http://www.freescale.com/we­bapp/sps/site/taxonomy.jsp?no­deId=01624684498635
  20. Lifecycle of a CPU:
    http://www.cpushack.net/life-cycle-of-cpu.html
  21. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko.sasktelwebsi­te.net/cpu.html
  22. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  23. Serial Peripheral Interface Bus
    http://en.wikipedia.org/wi­ki/Serial_Peripheral_Inter­face_Bus
  24. What is SPI?
    http://www.fpga4fun.com/SPI1.html
  25. SPI – A simple implementation
    http://www.fpga4fun.com/SPI2.html
  26. Bit-banging
    http://en.wikipedia.org/wiki/Bit-banging
  27. Joint Test Action Group
    http://en.wikipedia.org/wiki/JTAG
  28. I2C
    http://en.wikipedia.org/wiki/I2C
  29. I2 Background
    http://www.microport.tw/blog­new.php?blog_no=7#theory
  30. H8/3802, 38002S, 38004, 38104 (manuály k čipům)
    https://www.renesas.com/en-us/document/hw-manual?hwLayerShowFlg=tru­e&prdLayerId=184&layerName=H8%252F3802%252C%2B38­002S%252C%2B38004%252C%2B38104&co­ronrService=document-prd-search&hwDocUrl=%2Fen-us%2Fdoc%2Fproducts%2Fmpum­cu%2F001%2Frej09b0024_h83802­.pdf&hashKey=c5e1fa0a18c01e6c789bc7­b5c0184ed9
  31. Addressing mode (Wikipedia)
    https://en.wikipedia.org/wi­ki/Addressing_mode
  32. Renesas SH Instruction Set Summary
    http://shared-ptr.com/sh_insns.html
  33. SH-4 RISC Processor by HITACHI
    http://www.cs.umd.edu/~me­esh/cmsc411/website/projec­ts/risc/risc.htm
  34. SH-4 RISC Processor
    http://www.cs.umd.edu/~me­esh/cmsc411/website/projec­ts/risc/sh-4.htm
  35. SuperH RISC engine Family Features
    https://www.renesas.com/en-us/products/microcontrollers-microprocessors/superh/superh-features.html
  36. Orthogonal instruction set
    https://en.wikipedia.org/wi­ki/Orthogonal_instruction_set
  37. An introduction to the TI MSP430 low-power microcontrollers
    http://mspgcc.sourceforge­.net/manual/c68.html
  38. MSP430 LaunchPad Tutorials
    http://processors.wiki.ti­.com/index.php/MSP430_Lau­nchPad_Tutorials
  39. LaunchPad MSP430 Assembly Language Tutorial
    http://robotics.hobbizine­.com/asmlau.html
  40. TI 16-bit and 32-bit microcontrollers
    http://www.ti.com/lsds/ti/mi­crocontrollers16-bit32-bit/overview.page
  41. Z86E04 Tutorial
    https://tiktakx.wordpress­.com/2010/05/04/z86e04-tutorial/
  42. Z80 Instruction Set
    http://clrhome.org/table/
  43. 8080/Z80 Instruction Set
    http://nemesis.lonestar.or­g/computers/tandy/software/ap­ps/m4/qd/opcodes.html

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.