Zilog Z80 - Zilog Z80

Zilog Z80
Zilog Z80.jpg
Z80 vyrobený v červnu 1976 podle datového razítka
Obecná informace
Spuštěno Března 1976
Navrhl Federico Faggin, Masatoshi Shima
Běžní výrobci
Výkon
Max. Taktovací frekvence CPU 2,5, 4, 6, 8 MHz až 10 MHz s variantou CMOS až 20 MHz a binárně kompatibilními deriváty (od Zilogu) až 33 a 50 MHz.
Šířka dat 8 bitů
Šířka adresy 16 bitů
Fyzické specifikace
Tranzistory
Balíčky
Zásuvka
Pinout původního balíčku čipů DIP40 Z80

Z80 je 8-bitový mikroprocesor zaveden Zilog jako startovací společnost prvního produktu. Z80 byl zkonstruován Federico Fagginem na konci roku 1974 a byl vyvinut ním a jeho 11 zaměstnanci počátkem roku 1975. První pracovní vzorky byly dodány v březnu 1976 a oficiálně byly uvedeny na trh v červenci 1976. S příjmy z Společnost Z80 vybudovala vlastní továrny na čipy a během následujících dvou let se rozrostla na více než tisíc zaměstnanců.

Zilog Z80 je softwarově kompatibilní rozšíření a vylepšení Intel 8080 a stejně jako to bylo zaměřeno hlavně na vestavěné systémy . Ačkoli byl v této roli použit, Z80 se také stal jedním z nejpoužívanějších CPU ve stolních počítačích a domácích počítačích od 70. let do poloviny 80. let. To bylo také běžné ve vojenských aplikacích, hudební vybavení, jako jsou syntezátory (jako Roland Jupiter-8 ), a mince ovládané arkádové hry z pozdní 1970 a brzy 1980, včetně Pac-Man .

Zilog licencoval Z80 americkým společnostem Synertek a Mostek , které jim pomohly s počáteční výrobou, a také evropskému výrobci druhého zdroje SGS . Design byl také zkopírován několika Japonci, východoevropských a sovětských výrobců. Tím získal přijetí Z80 na světovém trhu, protože velké společnosti jako NEC , Toshiba , Sharp a Hitachi začaly vyrábět zařízení (nebo jejich vlastní klony nebo designy kompatibilní s Z80).

V posledních desetiletích Zilog se nyní soustředí na stále rostoucí trh pro embedded systémy a nejnovější Z80 kompatibilní mikrořadičů rodině, plně pipeline 24bitové eZ80 s lineárním 16  MB adresového rozsahu , byla úspěšně zavedena vedle jednoduššího Z80 a Z180 produkty.

Dějiny

Reklama z května 1976 na 8bitový mikroprocesor Zilog Z-80
Fotografie původního návrhu mikroprocesoru Zilog Z80 v vyčerpání zátěže nMOS. Celková velikost matrice je 3545 × 3350 μm. (Tento skutečný čip byl vyroben v roce 1990.)

Z80 vznikl, když fyzik a inženýr Federico Faggin na konci roku 1974 opustil Intel, aby založil Zilog s Ralphem Ungermannem  [ it ] . Ve společnosti Fairchild Semiconductor a později v Intelu pracoval Faggin na základní technologii výroby tranzistorů a polovodičů . Vyvinul také základní metodologii návrhu použitou pro paměti a mikroprocesory ve společnosti Intel a vedl práce na procesorech Intel 4004 , 8080 a několika dalších integrovaných obvodech. Masatoshi Shima , hlavní konstruktér logických a tranzistorových úrovní 4004 a 8080 pod Fagginovým dohledem, se připojil k týmu Zilog.

Podle konstruktérů byly primárními cíli pro procesor Z80 (a jeho volitelnou podporu a periferní integrované obvody) produkty jako inteligentní terminály , špičkové tiskárny a pokročilé pokladny, jakož i telekomunikační zařízení, průmyslové roboty a další druhy automatizačních zařízení.

V březnu 1976 vyvinul Zilog pro své zákazníky Z80 a doprovodný vývojový systém založený na assembleru a v červenci 1976 to bylo formálně uvedeno na trh. V tomto okamžiku byly vyvíjeny některé z podpůrných a periferních integrovaných obvodů Z80 a mnoho z nich bylo spuštěno v průběhu následujícího roku.

Early Z80s byly vyrobeny Synertek a Mostek, před Zilog měl vlastní výrobní závod připraven v pozdní 1976. Tyto společnosti byly vybrány proto, že mohl dělat implantace iontů potřebných k vytvoření vyčerpání-mode MOSFET , že design Z80 používá jako tranzistory zatížení v aby si poradil s jediným 5voltovým napájecím zdrojem.

Faggin navrhl sadu instrukcí tak, aby byla binárně kompatibilní s procesorem Intel 8080, takže většina kódu 8080, zejména operační systém CP/M a kompilátor Intel PL/M pro 8080 (stejně jako jeho generovaný kód), poběží na novém Z80 beze změny PROCESOR. Masatoshi Shima navrhl většinu mikroarchitektury , stejně jako úrovně brány a tranzistoru CPU Z80, za pomoci malého počtu techniků a lidí s uspořádáním . Generální ředitel Federico Faggin se ve skutečnosti významně podílel na práci na rozvržení čipu společně se dvěma vyhrazenými lidmi pro rozvržení. Podle Faggina pracoval 80 hodin týdně, aby splnil přísný harmonogram daný finančními investory.

Z80 nabídl oproti 8080 mnoho vylepšení:

  • Vylepšená sada instrukcí, která obsahuje:
    • Logičtější, srozumitelnější a čitelnější systém mnemotechniky instrukcí assembleru
    • flexibilnější instrukce pro pohyb 16-bitových dat (zatížení nebo LD), zásadně včetně SP ukazatele zásobníku
    • flexibilnější režimy adresování pro vstup/výstup na externí periferní porty
    • jednobitové adresování všech registrů a paměti, včetně bitového testování
    • posouvá/otáčí se v paměti a registruje jiný než akumulátor
    • vylepšená a přesnější (než předchozí 8080) aritmetika BCD
    • otáčet pokyny pro číselné řetězce BCD v paměti
    • 16bitové odčítání a 8bitová negace
    • smyčka programu
    • Relativní skoky počítadla programu
    • blokové kopírování , blokování vstupu/výstupu (I/O) a pokyny pro hledání bajtů.
  • Vlajka přetečení s lepší podporou podepsal 8- a 16-bitové aritmetiky.
  • Nové registry indexů IX a IY s pokyny pro přímé adresování + offsetové adresování
  • Lepší systém přerušení :
    • Automatičtější a obecnější vektorizovaný přerušovací systém , režim 2 , primárně určený pro řadu čítačů/časovačů Zilog, DMA a komunikačních řadičů, stejně jako pevný vektorový přerušovací systém, režim 1 , pro jednoduché systémy s minimálním hardwarem ( režim 0 je režim kompatibilní s 8080).
    • Nemaskovatelné přerušení (NMI), které lze použít k reakci na vypnutí nebo jiné události s vysokou prioritou (a umožňující minimalistickému systému Z80 snadno implementovat dvouúrovňové schéma přerušení v režimu 1 ).
  • Kompletní duplicitní soubor registru , který lze rychle přepnout, aby se zrychlila reakce na přerušení, jako jsou rychlé asynchronní obsluhy událostí nebo víceúlohový dispečer . Ačkoli nebyly určeny jako zvláštní registry pro obecný kód, v některých aplikacích byly přesto použity.
  • Méně hardwaru potřebného pro napájení , generování hodin a rozhraní pro paměť a I/O
  • Jediný 5voltový napájecí zdroj ( 8080 potřeboval -5 V/+5 V/+12 V ).
  • Jednofázové 5voltové hodiny ( 8080 potřeboval nepřekrývající se dvoufázové hodiny s vysokou amplitudou (9 až 12 voltů) ).
  • Vestavěná aktualizace DRAM, která by jinak vyžadovala externí obvody, pokud nebyl použit SRAM, dražší a méně hustý (ale rychlejší).
  • Non-multiplexované sběrnice (8080 měl stavové signály multiplexované na datovou sběrnici).
  • Funkce speciálního resetu, která vymaže pouze čítač programu, takže ve vývojovém systému, jako je emulátor v obvodu, lze použít jeden procesor Z80 .

Z80 převzal od 8080 a jeho potomků 8085 na trhu procesorů a stal se jedním z nejpopulárnějších 8bitových procesorů. Některé organizace, jako například British Telecom , zůstaly věrné 8085 pro vestavěné aplikace díky své obeznámenosti s ním a díky sériovému rozhraní a architektuře přerušení na čipu. Intel vyrobil nízkoenergetický CMOS 8085 (80C85), který se objevil v přenosných počítačích napájených bateriemi, jako například notebook navržený společností Kyocera z dubna 1983, prodávaný také společnostmi Tandy (jako TRS-80 Model 100 ), Olivetti a NEC v různých variantách. V následujících letech by ale i na tomto trhu dominovaly CMOS verze Z80 (od Zilogu i od japonských výrobců).

Možná klíčem k počátečnímu úspěchu Z80 byla vestavěná aktualizace DRAM, přinejmenším na trzích, jako jsou CP/M a další kancelářské a domácí počítače. (Většina vestavěných systémů Z80 používá statickou paměť RAM, která nepotřebuje aktualizaci.) Může to být také jeho minimalistický dvouúrovňový systém přerušení, nebo naopak jeho obecný víceúrovňový systém přerušení řetězového zapojení užitečný při obsluze více IO čipů Z80. Všechny funkce, které umožňovaly stavět systémy s méně podpůrným hardwarem a jednodušším rozložením obvodové desky. Jiní však tvrdí, že jeho popularita byla způsobena duplikovanými registry, které umožňovaly rychlé přepínání kontextu nebo efektivnější zpracování věcí, jako je matematika s pohyblivou řádovou čárkou, ve srovnání s 8bitovými CPU s menším počtem registrů. (Z80 může interně udržovat několik takových čísel pomocí HL'HL, DE'DE a BC'BC jako 32 bitových registrů, čímž se vyhne nutnosti přístupu k nim z pomalejší RAM během výpočtu.)

U původního návrhu NMOS se specifikovaná horní mezní frekvence hodin postupně zvyšovala od úvodních 2,5  MHz , přes dobře známé 4 MHz (Z80A), až 6 (Z80B) a 8 MHz (Z80H). Verze NMOS se vyrábí jako součást 10 MHz od konce 80. let minulého století. Verze CMOS byly vyvinuty se specifikovanými horními frekvenčními limity v rozmezí od 4 MHz do 20 MHz pro dnes prodávanou verzi. Verze CMOS umožňovaly pohotovostní režim s nízkým příkonem se zachováním vnitřního stavu bez omezení dolní frekvence. Plně kompatibilní deriváty HD64180 / Z180 a eZ80 jsou v současné době specifikovány pro až 33 a 50 MHz, resp.

Design

Programovací model a sada registrů

Přibližný blokový diagram Z80. Neexistuje žádný vyhrazený sčítač pro offsety nebo samostatný inkrementátor pro R a není potřeba více než jeden 16bitový dočasný registr WZ (i když západky inkrementátoru se také používají jako 16bitový dočasný registr, v jiných kontextech). Jsou to registry PC a IR, které jsou umístěny v samostatné skupině s odpojitelným segmentem sběrnice, aby bylo možné aktualizace těchto registrů souběžně s hlavní bankou registrů.

Programovací model a sada registrů Z80 jsou poměrně konvenční, nakonec založené na struktuře registru Datapoint 2200 . Z80 byl navržen jako rozšíření Intel 8080, vytvořené stejnými inženýry, což bylo rozšíření 8008 . 8008 byla v podstatě PMOS implementace CPU založeného na TTL u Datapoint 2200.

Konstrukce 2200 umožňovala spárování 8bitových registrů H a L (High a Low) do 16bitového adresního registru HL. V 8080 bylo toto párování přidáno také k párům BC a DE, zatímco HL byl zobecněn, aby umožňoval použití jako 16bitový akumulátor, nejen jako registr adres. 8080 také představil důležitý 8bitový režim okamžitých dat pro operace s akumulátorem a okamžité 16bitové údaje pro zatížení HL, BC a DE. Kromě toho bylo nyní možné přímé 16bitové kopírování mezi HL a pamětí pomocí přímé adresy.

Z80 to dále ortogonalizoval tím, že všechny 16bitové páry registrů, včetně IX a IY, byly obecnější, a také umožnilo 16bitové kopírování přímo do az paměti pro všechny tyto páry. 16bitové registry IX a IY v Z80 jsou primárně určeny jako základní adresní registry, kde konkrétní instrukce dodává konstantní offset, který se přidává k předchozím hodnotám, ale lze je mimo jiné použít také jako 16bitové akumulátory . Omezením je, že všechny odkazy na operandy zahrnující IX nebo IY vyžadují další bajt předpony instrukce, který přidá alespoň čtyři taktovací cykly přes načasování instrukce místo toho pomocí HL; to někdy činí použití IX nebo IY méně efektivní než metoda využívající pouze registry modelu 8080. Z80 také představil nový podepsaný přetokový příznak a doplnil poměrně jednoduchou 16bitovou aritmetiku 8080 o vyhrazené pokyny pro podepsanou 16bitovou aritmetiku.

Registry AF, BC, DE, HL kompatibilní s 8080 jsou duplikovány jako samostatný registrový soubor v Z80, kde procesor může rychle (čtyři
t-stavy, nejmenší možná doba provedení jakékoli instrukce Z80) přepnout z jedné banky do jiný; funkce užitečná pro zrychlení reakcí na jednoúrovňová přerušení s vysokou prioritou. Podobná funkce byla přítomna v roce 2200, ale u společnosti Intel nebyla nikdy implementována. Sada duálních registrů je velmi užitečná ve vložené roli, protože zlepšuje výkon zpracování přerušení, ale našla široké využití v roli osobního počítače jako další sada obecných registrů pro složitý kód, jako je aritmetika s pohyblivou řádovou čárkou nebo domácí počítačové hry.

Duplicitní soubor registru je často označován jako "alternativní sada registrů" (některými je soubor registru "se základním nastavením", protože znak apostrof se používá k jejich označení ve zdrojovém kódu assembleru a dokumentaci Zilog). To zdůrazňuje, že kdykoli je možné adresovat pouze jednu sadu. 8bitový akumulátor A se svým vlajkovým registrem F je však rozdvojen z párů registrů HL, DE a BC „obecného účelu“. Toho je dosaženo dvěma oddělenými instrukcemi použitými k výměně jejich přístupností: EX AF,AF'vyměňuje pouze registr párů AF s AF ', zatímco EXXinstrukce vyměňuje tři páry registrů HL, DE a BC pro obecné účely s jejich alternativami HL', DE 'a BC'. Akumulátor A tedy může komunikovat nezávisle s jakýmkoli z obecných 8bitových registrů v alternativním (nebo základním) registrovém souboru, nebo pokud HL 'obsahuje ukazatel do paměti, může tam být přenesen i nějaký byte (DE' a BC ' 8bitová data mezi pamětí a akumulátorem A).

To může být pro programátory matoucí, protože po spuštění EX AF,AF'nebo EXXdříve byly alternativní (primární) registry nyní hlavními registry a naopak. Jediný způsob, jak může programátor zjistit, které sady jsou v kontextu (při „hraní počítače“ při zkoumání zdrojového textu assembleru, v horším případě při procházení kódu ladicím programem), je vysledovat, kde se u každého provádí výměna registrů bod v programu. Je zřejmé, že pokud se v těchto segmentech kódu provádí mnoho skoků a volání, může být rychle obtížné určit, který soubor registru je v kontextu, pokud není pečlivě okomentován. Proto je vhodné, aby byly pokyny pro výměnu použity přímo a v krátkých diskrétních segmentech kódu. Instrukční sada Zilog Z280 obsahuje JAFa JARinstrukce, které přeskočí na cílovou adresu, pokud jsou alternativní registry v kontextu (čímž oficiálně rozpoznávají tuto komplikaci programování).

Registry

Registry Zilog Z80
1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bitová pozice)
Hlavní registry
A Vlajky AF (8bitový akumulátor a vlajky)
B C BC (registr dat a adres)
D E DE (registr dat a adres)
H L HL (16bitový akumulátor a registr adres)
Alternativní registry
A' Vlajky AF ' (8bitový akumulátor a vlajky)
B ' C' BC ' (registr dat a adres)
D ' E' DE ' (registr dat a adres)
H ' L ' HL ' (16bitový akumulátor a registr adres)
Rejstříkové registry
IX I ndex X
IY I ndex Y
SP S tack P ointer
Ostatní registry
  Přerušil jsem vektor
  R. R efresh čítač
Počitadlo programů
PC P rogram C ounter
Stavový registr
  S Z - H - P / V N. C F zaostává

Stejně jako u 8080 jsou 8bitové registry obvykle spárovány, aby poskytovaly 16bitové verze. Registry kompatibilní s 8080 jsou:

  • AF: 8bitový akumulátor (A) a vlajkové bity (F) nesou, nula, minus, parita/přetečení, poloviční přenos (používá se pro BCD ) a příznak přidání/ odečtení (obvykle nazývaný N) také pro BCD
  • BC: 16bitový registr dat/adresy nebo dva 8bitové registry
  • DE: 16bitový registr dat/adresy nebo dva 8bitové registry
  • HL: 16bitový akumulátor/registr adres nebo dva 8bitové registry
  • SP: ukazatel zásobníku , 16 bitů
  • PC: programový čítač, 16 bitů

Nové registry zavedené u Z80 jsou:

  • IX: 16bitový index nebo základní registr pro 8bitové okamžité offsety
  • IY: 16bitový index nebo základní registr pro 8bitové okamžité offsety
  • I: základní vektor přerušení, 8 bitů
  • R: Počítadlo obnovení DRAM, 8 bitů ( msb se nepočítá)
  • AF': alternativní (nebo stínový) akumulátor a vlajky ( přepínatelné dovnitř a ven pomocí EX AF, AF ' )
  • BC', DE'and HL': alternate (or shadow) registers ( toggled in and out with EXX )
  • Čtyři bity stavu přerušení a stavu režimu přerušení

Refresh registr , Rpřírůstky po každém CPU načte operační kód (nebo operační kód předponu, která vnitřně vykonává jako instrukce 1 bajt) a nemá žádný jednoduchý vztah k provádění programu. To se někdy používalo ke generování pseudonáhodných čísel ve hrách a také v programech ochrany softwaru. V některých provedeních byl také použit jako čítač „hardwaru“; příkladem toho je ZX81 , který mu umožňuje sledovat pozice postav na televizní obrazovce spuštěním přerušení při obtékání (připojením INT k A6).

Vektor přerušení registr , I, se používá pro přerušení Z80 pro daný režim 2 (vybraných IM 2instrukcí). Poskytuje vysoký bajt základní adresy pro 128-záznamovou tabulku adres servisních rutin, které jsou vybrány prostřednictvím indexu odeslaného do CPU během cyklu potvrzení přerušení ; tento index je jednoduše dolní bajtová část ukazatele na nepřímou adresu v tabulce ukazující na rutinu služby. Ukazatel identifikuje konkrétní periferní čip nebo periferní funkci nebo událost, kde jsou čipy normálně spojeny v takzvaném řetězci pro prioritní rozlišení. Stejně jako obnovovací registr byl tento registr také někdy používán kreativně; v režimech přerušení 0 a 1 (nebo v systému, který nepoužívá přerušení) jej lze použít jednoduše jako další 8bitový datový registr.

Pokyny LD A,Ra LD A,Iovlivňují příznaky vlajky Z80, na rozdíl od všech ostatních LDinstrukcí (načtení). Příznaky Sign (bit 7) a Zero (bit 6) se nastavují podle dat načtených ze zdrojových registrů Refresh nebo Interrupt. U obou instrukcí je příznak parity/přetečení (bit 2) nastaven podle aktuálního stavu klopného obvodu IFF2.

Jazyk sestavení Z80

Datapoint 2200 a Intel 8008

První montážní jazyk Intel 8008 byl založen na velmi jednoduché (ale systematické) syntaxi převzaté z návrhu Datapoint 2200. Tato původní syntaxe byla později transformována do nové, poněkud tradičnější formy sestavovacího jazyka pro stejný původní čip 8008. Přibližně ve stejnou dobu byl také rozšířen nový montážní jazyk, aby vyhovoval dalším režimům adresování v pokročilejším čipu Intel 8080 (8008 a 8080 sdílely jazykovou podmnožinu, aniž by byly binárně kompatibilní ; 8008 však bylo binárně kompatibilní s Datapointem 2200).

V tomto procesu byla mnemotechnická pomůcka Lpro LOAD nahrazena různými zkratkami slov LOAD , STORE a MOVE , smíchanými s dalšími symbolickými písmeny. Mnemotechnické písmeno Mpro paměť (odkazované HL) bylo vytaženo z instrukční mnemotechnické pomůcky, aby se stalo syntakticky volně stojícím operandem , zatímco registry a kombinace registrů byly velmi nekonzistentně označovány; buď zkrácenými operandy (MVI D, LXI H a tak dále), v rámci samotné instrukční mnemotechniky (LDA, LHLD a tak dále), nebo obojí současně (LDAX B, STAX D a tak dále).

Intel 8008
Datapoint 2200
Intel 8080
Intel 8085
Zilog Z80 Intel 8086/
Intel 8088
před ca. 1973 ca. 1974 1976 1978
LBC MOV B,C LD B,C MOV BL,CL
-- LDAX B LD A,(BC) MOV AL,[BX]
LAM MOV A,M LD A,(HL) MOV AL,[BP]
LBM MOV B,M LD B,(HL) MOV BL,[BP]
-- STAX D LD (DE),A MOV [DX],AL
LMA MOV M,A LD (HL),A MOV [BP],AL
LMC MOV M,C LD (HL),C MOV [BP],CL
LDI 56 MVI D,56 LD D,56 MOV DL,56
LMI 56 MVI M,56 LD (HL),56 MOV byte ptr [BP],56
-- LDA 1234 LD A,(1234) MOV AL,[1234]
-- STA 1234 LD (1234),A MOV [1234],AL
-- -- LD B,(IX+56) MOV BL,[SI+56]
-- -- LD (IX+56),C MOV [SI+56],CL
-- -- LD (IY+56),78 MOV byte ptr [DI+56],78
-- LXI B,1234 LD BC,1234 MOV BX,1234
-- LXI H,1234 LD HL,1234 MOV BP,1234
-- SHLD 1234 LD (1234),HL MOV [1234],BP
-- LHLD 1234 LD HL,(1234) MOV BP,[1234]
-- -- LD BC,(1234) MOV BX,[1234]
-- -- LD IX,(1234) MOV SI,[1234]

Ilustrace čtyř syntaxí pomocí ukázek ekvivalentních nebo (pro 8086) velmi podobných instrukcí pro načtení a uložení. Syntaxe Z80 používá závorky kolem výrazu k označení, že hodnota by měla být použita jako adresa paměti (jak je uvedeno níže), zatímco syntaxe 8086 používá pro tento účel místo běžných závorek závorky. Z80 i 8086 používají znak + k označení, že do základního registru je přidána konstanta pro vytvoření adresy

Nová syntaxe

Protože si Intel nárokoval autorská práva na jejich montážní mnemotechniku, musela být pro Z80 vyvinuta nová syntaxe sestavení. Tentokrát byl použit systematičtější přístup:

  • Všechny registry a páry registrů jsou výslovně označeny jejich úplnými jmény
  • Závorky se důsledně používají k označení „obsahu paměti na“ (dereferencování konstantní adresy nebo proměnného ukazatele) s výjimkou jedné skokové instrukce JP (HL). JP (XY) je pouze variací JP (HL) načítající novou adresu PC.
  • Všechny instrukce pro načítání a ukládání používají pro LOAD stejný mnemotechnický název LD (návrat ke zjednodušené slovní zásobě Datapoint 2200); další běžné instrukce, například ADD a INC, používají stejnou mnemotechnickou pomůcku bez ohledu na režim adresování nebo velikost operandu. To je možné, protože samotní operandové nesou dostatek informací.

Díky těmto zásadám bylo snadné najít názvy a formuláře pro všechny nové instrukce Z80, stejně jako ortogonalizace starých, jako např LD BC,(1234).

Kromě rozdílů v pojmenování a navzdory určité nesrovnalosti v základní struktuře registrů jsou syntaxe Z80 a 8086 pro velkou část instrukcí prakticky izomorfní . Mezi sestavovacími jazyky 8080 a 8086 existuje pouze docela povrchní podobnost (například slovo MOV nebo písmeno X, v rozšířeném rejstříku), přestože programy 8080 lze do překladového jazyka 8086 přeložit pomocí překladatelských programů .

Sada instrukcí a kódování

Z80 používá 252 z dostupných 256 kódů jako jednobajtové operační kódy („root instrukce“, které jsou zděděny z 8080); čtyři zbývající kódy se široce používají jako předpony operačních kódů : CB a ED umožňují další instrukce a DD nebo FD volí místo HL IX+d nebo IY+d (v některých případech bez posunu d). Toto schéma dává Z80 velký počet permutací instrukcí a registrů; Zilog je kategorizuje do 158 různých „typů instrukcí“, z nichž 78 je stejných jako u Intel 8080 (což umožňuje provoz všech 8080 programů na Z80). Dokumentace Zilog dále seskupuje pokyny do následujících kategorií (většina z 8080, jiné zcela nové, jako jsou instrukce Block a Bit a další instrukce 8080 s univerzálnějšími režimy adresování, jako jsou 16bitové zátěže, I/O, rotace/posuny a relativní skoky):

  • Načíst a vyměnit
  • Blokovat přenos a vyhledávání
  • Aritmetika a logika
  • Otočit a posunout
  • Bitová manipulace (nastavení, reset, test)
  • Skok, volání a návrat
  • Vstup výstup
  • Základní ovládání CPU

V původním Z80 nejsou k dispozici žádné explicitní multiplikační instrukce, ačkoli registry A a HL lze znásobit mocninami dvou s instrukcemi ADD A, A a ADD HL, HL (podobně IX a IY také). Shift instrukce lze také znásobit nebo dělit mocninami dvou.

Různé velikosti a varianty přírůstků, posunů a otáčení mají na vlajky poněkud odlišné účinky, protože většina vlastností vlajky měnících 8080 byla zkopírována. Bit P vlajky parity 8080 (bit 2) se však v Z80 nazývá P/V (parita/přetečení), protože slouží k dalšímu účelu indikátoru přetečení dvojitého doplňku, což v 8080 chybí. Aritmetické pokyny k Z80 jej nastavil tak, aby indikoval přetečení spíše než paritu, zatímco bitové instrukce jej stále používají jako příznak parity. (To zavádí jemnou nekompatibilitu Z80 s kódem napsaným pro 8080, protože Z80 někdy indikuje podepsané přetečení, kde 8080 indikuje paritu, což může způsobit selhání logiky nějakého praktického softwaru 8080 na Z80.) Tento nový příznak přetečení používá se pro všechny nové Z80 specifické 16-bitové operace ( ADC, SBC), jakož i pro 8-bitové aritmetických operací, zatímco 16-bitové operace zděděné z 8080 ( ADD, INC, DEC) nemají vliv na to. Také bit 1 registru příznaků (náhradní bit na 8080) se používá jako příznak N, který indikuje, zda poslední provedená aritmetická instrukce byla odečtením nebo sčítáním. Verze DAAinstrukce Z80 (Decimal Adjust Accumulator for BCD aritmetic) kontroluje příznak N a chová se podle toho, takže (hypotetické) odečtení, za kterým DAAbude následovat později , přinese na starém 8080 jiný výsledek než na Z80. To by však pravděpodobně byl chybný kód na 8080, jak DAAbylo definováno pro přidání pouze na tomto procesoru.

Z80 má šest nových LDinstrukcí, které mohou načíst páry registrů DE, BC a SP z paměti a načíst paměť z těchto tří párů registrů - na rozdíl od 8080. Stejně jako u 8080, instrukce načítání neovlivňují příznaky (kromě zatížení registru I a R zvláštního účelu). Výsledkem pravidelného kódování (běžného u 8080) je, že každý z 8bitových registrů lze načíst od sebe (např. LD A,A). To je ve skutečnosti a NOP.

Nové pokyny pro přenos bloků mohou přesunout až 64 kilobajtů z paměti do paměti nebo mezi pamětí a periferními porty I/O. Blokové instrukce LDIRa LDDR(LoaD, Increment/Decrement, Repeat) používají HL k označení zdrojové adresy, DE k cílové adrese a BC jako čítač bytů. Bajty se kopírují ze zdroje do cíle, ukazatele se zvyšují nebo snižují a čítač bytů se zmenšuje, dokud BC nedosáhne nuly. Neopakující se verze LDIa LDDpřesunutí jednoho bajtu a narážení ukazatelů a počítadla bajtů, které pokud se stane nulou, resetuje příznak P/V. Odpovídající paměť-to-I / O instrukce INIR, INDR, OTIR, OTDR, INI, IND, OUTIa OUTDfungují podobně. Z80 může vstup a výstup libovolného registru na I/O port pomocí registru C k označení portu. (8080 provádí I/O pouze přes akumulátor A, přičemž používá přímou adresu portu uvedenou v instrukci; k použití proměnné adresy portu 8080 je nutná technika samočinného úpravy kódu.)

Poslední skupina blokových instrukcí provádí CPporovnávací operaci mezi bajtem na (HL) a akumulátorem A. Dvojice registrů DE se nepoužívá. Opakující verze CPIRa CPDRukončit pouze v případě BC jde k nule nebo je nalezena shoda. HL je ponecháno ukazující na bajt za ( CPIR) nebo před ( CPDR) odpovídajícím bajtem. Pokud není nalezena shoda, příznak Z se vynuluje. Existují neopakující se verze CPIa CPD.

Na rozdíl od 8080 může Z80 přeskočit na relativní adresu ( JRmísto JP) pomocí podepsaného 8bitového posunutí. Pro tyto nové dvoubajtové JRinstrukce lze testovat pouze příznaky Zero a Carry . (Všechny 8080 skoky a volání, podmíněné nebo ne, jsou tříbajtové instrukce.) Dvoubajtová instrukce specializovaná na smyčku programu je u Z80 také nová: DJNZ(Decrement Jump if Non-Zero) bere podepsaný 8bitový posun jako okamžitý operand. Registr B se sníží a pokud je výsledek nenulový, provádění programu skočí relativně k počítači; vlajky zůstávají nezměněny. Provedení ekvivalentní smyčky na 8080 vyžaduje oddělené DECrementy a instrukce podmíněného skoku (na dvoubajtovou absolutní adresu) (celkem čtyři bajty) a DECmění registr příznaků.

Instrukce indexového registru (IX/IY, často zkráceně XY) mohou být užitečné pro přístup k datům organizovaným v pevných heterogenních strukturách (jako jsou záznamy ) nebo v pevných offsetech vzhledem k proměnné základní adrese (jako v rekurzivních rámcích zásobníku ) a mohou také redukovat kód velikost odstraněním potřeby více krátkých instrukcí pomocí neindexovaných registrů. Ačkoli mohou v některých kontextech ve srovnání s dlouhými/komplexními „ekvivalentními“ sekvencemi jednodušších operací ušetřit rychlost, způsobí jim to spoustu času navíc ( např . 19 stavů T pro přístup k jednomu umístění indexované paměti vs. pouhých 11 pro přístup ke stejné paměti pomocí HL a INCpro přechod na další). Pro jednoduché nebo lineární přístupy k datům je použití IX a IY obvykle pomalejší a zabírá více paměti. Přesto mohou být užitečné v případech, kdy jsou všechny 'hlavní' registry obsazené, protože odstraní potřebu ukládat/obnovovat registry. Jejich oficiálně nezdokumentované 8bitové poloviny (viz níže) mohou být v této souvislosti obzvláště užitečné, protože způsobují menší zpomalení než jejich 16bitoví rodiče. Podobně pokyny pro 16bitové sčítání nejsou v původním Z80 nijak zvlášť rychlé (11 hodin) (jsou o 1 hodiny pomalejší než v 8080/8085); nicméně jsou přibližně dvakrát rychlejší než provádění stejných výpočtů pomocí 8bitových operací a stejně důležité jsou i snížení využití registru. Nebylo neobvyklé, že programátoři „šťourali“ různé ofsetové posunovací bajty (které se obvykle počítaly dynamicky) do indexovaných instrukcí; toto je příklad samoopravného kódu, který byl běžnou praxí na téměř všech raných 8bitových procesorech s nepipelinovanými prováděcími jednotkami.

Indexové registry mají paralelní instrukci k JP (HL), což je JP (XY). To je často vidět v jazycích orientovaných na zásobník, jako je Forth, který na konci každého slova Forth (atomové podprogramy obsahující jazyk) musí bezpodmínečně přeskočit zpět do rutin tlumočníka vláken. Tato instrukce skoku se obvykle v aplikaci objeví mnohokrát a používá se JP (XY)místo JP THREADuložení bajtu a dvou stavů T pro každý výskyt. To přirozeně činí rejstřík rejstříku nedostupným pro jakékoli jiné použití, jinak by potřeba jeho neustálého načítání negovala jeho účinnost.

O 10 let novější mikrokódovaný design Z180 si zpočátku mohl dovolit více „čipové oblasti“, což umožnilo o něco efektivnější implementaci ( mimo jiné pomocí širší ALU ); podobné věci lze říci o Z800 , Z280 a Z380 . Avšak až v roce 2001, kdy byl spuštěn plně pipeline eZ80, se tyto instrukce konečně staly přibližně tak cyklicky efektivní, jak je technicky možné je vyrobit, tj. Vzhledem k kódování Z80 v kombinaci se schopností provést 8bitové čtení nebo zapisujte každý hodinový cyklus.

Nedokumentované pokyny

Indexové registry, IX a IY, byly zamýšleny jako flexibilní 16bitové ukazatele, které zlepšovaly schopnost manipulovat s pamětí, zásobníky a datovými strukturami. Oficiálně byly považovány pouze za 16bitové. Ve skutečnosti byly realizovány jako dvojice 8-bitových registrů, a to stejným způsobem jako HL registru, která je dostupná buď jako 16 bitů nebo samostatně jako H IGH a L ow registrů. Binární operační kódy (strojový jazyk) byly identické, ale předcházela jim nová předpona operačního kódu. Zilog publikoval operační kódy a související mnemotechnické pomůcky pro zamýšlené funkce, ale nedoložil skutečnost, že každý operační kód, který umožňoval manipulaci s registry H a L, byl stejně platný pro 8bitové části registrů IX a IY. Například operační kód 26h následovaný okamžitou bajtovou hodnotou (LD H,n)načte tuto hodnotu do registru H. Předcházející této dvoubajtové instrukci s předponou operačního kódu registru IX, DD, by místo toho vedlo k načtení nejvýznamnějších 8 bitů registru IX se stejnou hodnotou. Významnou výjimkou by byly instrukce podobné těm, LD H,(IX+d)které využívají registrů HL a IX nebo IY ve stejné instrukci; v tomto případě je předpona DD použita pouze na (IX+d) část instrukce. Poloviny registrů XY mohly také obsahovat operandy pro 8bitové aritmetické, logické a porovnávací instrukce, čímž šetří běžné 8bitové registry pro jiné použití. Nezmíněná schopnost zvýšit a snížit horní polovinu rejstříkového rejstříku usnadnila rozšíření rozsahu normálních indexovaných pokynů, aniž byste se museli uchýlit k zdokumentovaným ADD/SBC XY,DEnebo ADD/SBC XY,BC.

Existuje také několik dalších nezdokumentovaných pokynů. Z80 nezjistí nezdokumentované nebo nelegální operační kódy a mají různé efekty, z nichž některé jsou užitečné. Protože však nejsou součástí formální definice sady instrukcí, není zaručeno (ani obzvláště pravděpodobné), že různé implementace Z80 budou fungovat stejným způsobem pro každý nezdokumentovaný operační kód.

Hmyz

OTDRInstrukce neodpovídá dokumentaci Z80. Obě OTDRa OTIRinstrukce mají opustit carry (C) vlajka nezměněn. OTIRInstrukce pracuje správně; během provádění OTDRinstrukce však příznak přenosu bere výsledky falešného srovnání mezi akumulátorem (A) a posledním výstupem OTDRinstrukce.

Příklad kódu

PŘÍKLAD 1: Následující zdrojový kód assembleru Z80 je pro podprogram pojmenovaný HELLO_WORLD. Jak je všeobecně známo, jedná se o úvodní program, který vytiskne zprávu na displej videa a poté skončí. Ačkoli je to jednoduché, ukazuje to, jak je zdrojový kód assembleru formátován a interaguje s hardwarem displeje prostřednictvím operačního systému počítače. To je nutně specifické pro konkrétní počítačový hardware, operační systém a software assembleru. Použitým příkladem je
TRS-80 Model 4 se systémem TRSDOS/LS-DOS 6.x, vyráběný společností Tandy/Radio Shack and Logical Systems, přičemž většinu montérů prodává společnost Radio Shack nebo Misosys Inc. (řada I/EDTASM, ALDS, EDAS nebo MRAS s přepínačem -GC). Hlavní rysy této konfigurace jsou univerzální pro montéry Z80, dokonce i pod CP/M.

            
            
            
            
            
            
            
            
            
    
  
  
  
  
  
3000 3E 69
3002 EF 
3003 21 14 30
3006 3E 0A
3008 EF
3009 0E 0D
300B 3E 02
300D EF
300E 21 00 00
3011 3E 16
3013 EF
3014 48 65 6C 6C
3018 6F 2C 20 77
301C 6F 72 6C 64
3020 21 0D 0D
3023
 ; hello_world_TRS-80 Model 4
 ; Print "Hello, world!" then exit to TRSDOS Ready
 ;
 ; Entry registers: none
 ; Return registers: none
 ;
 ; values below are decimal unless suffixed by H
 ; the term "pseudo-op" means same as "assembler directive", is not Z80 code
 ;
 @CLS         EQU     105                 ; EQU pseudo-op sets @CLS text label = TRSDOS Supervisor Code
 @DSP         EQU     2                   ; set @DSP text label = TRSDOS SVC to send char to display
 @DSPLY       EQU     10                  ; set @DSPLY text label = SVC for text string display
 @EXIT        EQU     22                  ; set @EXIT text label = SVC for returning to TRSDOS Ready
;
              ORG     3000H               ; ORG pseudo-op sets standard start address under TRSDOS 6.x
START         LD      A,@CLS              ; CLS = Clear Screen, erase display and home cursor
              RST     40                  ; Z80 Restart instruction for system SVC processor, execute @CLS
              LD      HL,MSG              ; point to message string with HL (required by @DSPLY SVC)
              LD      A,@DSPLY            ; send text string to *DO Display Output device (video screen)
              RST     40                  ; execute @DSPLY SVC (13d byte needed to terminate string)
              LD      C,13                ; now send another carriage return, needed in reg C 
              LD      A,@DSP              ; to set off Hello message from TRSDOS Ready prompt
              RST     40                  ; once we exit to system
              LD      HL,0                ; indicate no error condition to Command Interpreter
              LD      A,@EXIT             ; return to TRSDOS Ready
              RST     40                  ; (stack integrity maintained, could as well have used a RET!)
 MSG          DB      'Hello, world!',13  ; DB = Define Byte pseudo-op assembles ASCII string to Z80 memory
 CR           DB      13                  ; 13d byte is ASCII carriage return char, moves cursor down
              END     START               ; END pseudo-op required by assembler 
                                          ; to produce transfer record to program entry point

PŘÍKLAD 2: Následující zdrojový kód sestavy Z80 je pro podprogram pojmenovaný, memcpykterý kopíruje blok datových bytů dané velikosti z jednoho umístění do druhého. Důležité: ukázkový kód nezpracovává případ, kdy cílový blok překrývá zdroj; vážné omezení, ale pro některé aplikace nepodstatné - například když je zdroj v ROM a cíl v RAM, takže se nikdy nemohou překrývat. Ukázkový kód je extrémně neefektivní, má spíše ilustrovat různé typy instrukcí než osvědčené postupy pro rychlost. Datový blok je kopírován po jednom bajtu a logika pohybu a smyčky dat využívá 16bitové operace. Kromě toho má Z80 jedinou instrukci, která provede celou smyčku ( LDIR). Sestavený kód je binárně kompatibilní s procesory Intel 8080 a 8085.

                     
                     
                     
                     
        
             
                     
             
                     
                     
                     
 1000            
 1000            
 1000 78         
 1001 B1         
 1002 C8         
 1003 1A         
 1004 77         
 1005 13         
 1006 23         
 1007 0B         
 1008 C3 00 10   
 100B
 ; memcpy --
 ; Copy a block of memory from one location to another.
 ;
 ; Entry registers
 ;      BC - Number of bytes to copy
 ;      DE - Address of source data block
 ;      HL - Address of target data block
 ;
 ; Return registers
 ;      BC - Zero

             org     1000h       ;Origin at 1000h
 memcpy      public
 loop        ld      a,b         ;Test BC,
             or      c           ;If BC = 0,
             ret     z           ;Return
             ld      a,(de)      ;Load A from (DE)
             ld      (hl),a      ;Store A into (HL)
             inc     de          ;Increment DE
             inc     hl          ;Increment HL
             dec     bc          ;Decrement BC
             jp      loop        ;Repeat the loop
             end

Provedení instrukce

Každá instrukce se provádí v krocích, které se obvykle nazývají strojové cykly (M-cykly), z nichž každý může trvat tři až šest hodin (T-cykly). Každý M-cyklus odpovídá zhruba jednomu přístupu do paměti nebo interní operaci. Mnoho instrukcí skutečně končí během M1 další instrukce, která je známá jako překrývání načítání/spouštění .

Příklady typických pokynů (R = čtení, W = zápis)
Celkový

M-cykly

návod M1 M2 M3 M4 M5 M6
1 INC BC operační kód
2 ADD A,n operační kód n
3 ADD HL,DE operační kód vnitřní vnitřní
4 SET b,(HL) předpona operační kód R (HL), nastav W (HL)
5 LD (IX+d),n předpona operační kód d n, přidat W (IX+d)
6 INC (IY+d) předpona operační kód d přidat R (IY+d), vč W (IY+d)

Strojové cykly Z80 jsou sekvenovány automatem s vnitřním stavem, který staví každý M-cyklus ze 3, 4, 5 nebo 6 T-cyklů v závislosti na kontextu. Tím se zabrání těžkopádné asynchronní logice a řídící signály se budou chovat konzistentně v širokém rozsahu hodinových frekvencí. To také znamená, že musí být použit krystal s vyšší frekvencí než bez tohoto rozdělení strojních cyklů (přibližně 2–3krát vyšší). Neznamená to přísnější požadavky na časy přístupu k paměti , protože hodiny s vysokým rozlišením umožňují přesnější řízení časování paměti, takže paměť může být ve větší míře aktivní souběžně s CPU, což umožňuje efektivnější využití dostupné šířky pásma paměti.

Jedním ústředním příkladem toho je, že pro načítání opcode kombinuje Z80 dva úplné hodinové cykly do periody přístupu do paměti (signál M1). V Z80 tento signál trvá relativně větší část typické doby provádění instrukce než v provedení, jako je 6800 , 6502 nebo podobné, kde tato perioda obvykle trvá typicky 30-40% hodinového cyklu. Vzhledem k cenové dostupnosti paměťových čipů (tj. Přístupových dob kolem 450–250 ns v 80. letech), které typicky určovaly nejrychlejší možnou přístupovou dobu, to znamenalo, že takové konstrukce byly uzamčeny na podstatně delší taktovací cyklus (tj. Nižší rychlost vnitřního taktu) než Z80.

Paměť byla obecně pomalá ve srovnání s dílčími cykly stavového stroje (hodinové cykly) používanými v současných mikroprocesorech. Nejkratší strojový cyklus, který by mohl být bezpečně použit ve vestavěných provedeních, byl proto často omezen dobou přístupu do paměti, nikoli maximální frekvencí CPU (zvláště v době počítačových počítačů). Tento vztah se však v posledních desetiletích pomalu mění, zejména pokud jde o SRAM ; bez cachingu, jednocyklové konstrukce, jako je eZ80, proto v poslední době získávají mnohem větší smysl.

Zatímco procesor CPU dekóduje a provádí načtenou instrukci, obsah obnovovacího registru R je odeslán na spodní polovinu adresové sběrnice spolu se signálem pro řízení obnovy. Během aktualizace je obsah registru přerušení odeslán na horní polovinu adresové sběrnice.

Kompatibilní periferie

Zilog představil pro Z80 řadu periferních částí, které všechny podporují systém zpracování přerušení Z80 a adresní prostor I/O. Patří sem kanál čítače/časovače (CTC), SIO (výstup sériového vstupu), DMA (přímý přístup do paměti), PIO (výstup paralelního vstupu) a DART (vysílač duálního asynchronního přijímače). Jak se produktová řada vyvíjela, byly zavedeny verze těchto čipů s nízkým výkonem, vysokorychlostním a CMOS .

Stejně jako procesory 8080, 8085 a 8086, ale na rozdíl od procesorů, jako jsou Motorola 6800 a MOS Technology 6502, mají Z80 a 8080 samostatnou řídicí linku a adresní prostor pro instrukce I/O. Zatímco některé počítače na bázi Z80, jako například Osborne 1, používaly paměťová mapovaná vstupní/výstupní zařízení „ve stylu Motorola“ , obvykle byl prostor I/O použit k řešení jednoho z mnoha periferních čipů Zilog kompatibilních se Z80. Čipy Zilog I/O podporovaly nový přerušení režimu Z80 2, což zjednodušilo zpracování přerušení pro velký počet periferií.

Z80 byl oficiálně popsán jako podporující 16bitové (64 kB) adresování paměti a 8bitové (256 portů) I/O adresování. Všechny I/O instrukce ve skutečnosti tvrdí celou 16bitovou adresovou sběrnici. OUT (C), reg a IN reg, (C) umístí obsah celého 16bitového BC registru na adresovou sběrnici; OUT (n), A a IN A, (n) umístí obsah registru A na b8-b15 adresové sběrnice a n na b0-b7 adresové sběrnice. Návrhář se mohl rozhodnout dekódovat celou 16bitovou adresovou sběrnici na I/O operacích, aby mohl využít této funkce, nebo použít vysokou polovinu adresové sběrnice k výběru dílčích funkcí I/O zařízení. Tato funkce byla také použita k minimalizaci požadavků na dekódování hardwaru, například v Amstrad CPC / PCW a ZX81 .

Druhé zdroje a deriváty

Druhé zdroje

Mostek, který vyrobil první Z80 pro Zilog, jej nabízel jako druhý zdroj jako MK3880. SGS-Thomson (nyní STMicroelectronics ) byl také druhým zdrojem se svým Z8400. Sharp a NEC vyvinuly druhé zdroje pro NMOS Z80, LH0080 a μPD780C . LH0080 byl použit v různých domácích počítačích a osobních počítačích vyrobených společností Sharp a dalšími japonskými výrobci, včetně počítačů Sony MSX , a v řadě počítačů řady Sharp MZ .

Toshiba vyrobila verzi CMOS, TMPZ84C00, o které se věří (ale není ověřena), že je to stejný design, který používá i Zilog pro vlastní CMOS Z84C00. Byly zde také čipy Z80 vyrobené společností GoldStar (nyní LG ) a řada Z80-klonů BU18400 (včetně DMA, PIO, CTC, DART a SIO) v NMOS a CMOS od společnosti ROHM Electronics .

Ve východním Německu byl vyroben nelicencovaný klon Z80, známý jako U880 . Byl velmi populární a byl používán v počítačových systémech Robotron a VEB Mikroelektronik Mühlhausen (jako jsou řady KC85 ) a také v mnoha počítačových systémech vlastní výroby. V Rumunsku byl nalezen další nelicencovaný klon s názvem MMN80CPU a produkovaný společností Microelectronica , používaný v domácích počítačích jako TIM-S, HC, COBRA.

V Sovětském svazu bylo také vytvořeno několik klonů Z80 , pozoruhodné jsou T34BM1 , také nazývané КР1858ВМ1 (rovnoběžně se sovětským 8080-klonem KR580VM80A ). První označení bylo použito v předvýrobních sériích, zatímco druhé muselo být použito pro větší produkci. Ačkoli v důsledku kolapsu sovětské mikroelektroniky na konci 80. let existuje mnohem více T34BM1 než КР1858ВМ1s.

Deriváty

Kompatibilní s originálem Z80
  • Společnost Hitachi vyvinula HD64180 , mikrokódovaný a částečně dynamický Z80 v CMOS, s čipovými periferiemi a jednoduchým MMU poskytujícím 1  MB adresního prostoru. Později byl druhým zdrojem Zilog, původně jako Z64180, a pak ve formě mírně upraveného Z180, který má protokol sběrnice a časování lépe přizpůsobené periferním čipům Z80. Z180 byl udržován a dále vyvíjen pod názvem Zilog, přičemž nejnovější verze jsou založeny na plně statickém jádru S180/L180 s velmi nízkým příkonem a EMI (hlukem).
  • Toshiba vyvinula na stejném čipu řadu 84 inteligentních periferních řadičů Z84013 / Z84C13 a 100 pinů Z84015 / Z84C15, v podstatě obyčejná jádra NMOS a CMOS Z80 s periferiemi Z80, časovač hlídání , reset a generátor stavu čekání. Výrobce Sharp a Toshiba. Tyto produkty jsou dnes druhým zdrojem od společnosti Zilog.
  • 32bitový Zilog Z380 kompatibilní se Z80 , zavedený v roce 1994, se používá hlavně v telekomunikačních zařízeních.
  • Zilog je plně pipelineovaný eZ80 kompatibilní se Z80 s délkou slova 8/16/24 bitů a lineárním adresním prostorem 16 MB byl představen v roce 2001. Existuje ve verzích s čipem SRAM nebo flash pamětí a také s integrovanými periferiemi. Jedna varianta má na čipu MAC (řadič přístupu k médiím) a dostupný software obsahuje zásobník TCP/IP . Na rozdíl od Z800 a Z280 existuje pouze několik přidaných instrukcí (primárně LEA , PEA a 16/24 bitové zatížení s proměnnou adresou), ale instrukce se místo toho provádějí 2 až 11krát tak efektivně, jako na hodinovém cyklu. původní Z80 (se střední hodnotou kolem 3–5krát). Aktuálně je specifikován pro taktovací frekvence až 50 MHz.
  • Kawasaki vyvinul binárně kompatibilní KL5C8400, který je přibližně 1,2-1,3krát účinnější než původní Z80 a lze jej taktovat až na 33 MHz. Kawasaki také vyrábí rodinu KL5C80A1x, která má periferie i malou RAM na čipu; je přibližně stejně účinný jako taktovací cyklus jako eZ80 a lze jej taktovat až na 10 MHz (2006).
  • NEC μPD9002 byl hybridní procesor kompatibilní s rodinami Z80 i x86 .
  • Řada čipů audio procesorů čínské akce Semiconductor (ATJ2085 a další) obsahuje MCU kompatibilní se Z80 společně s 24bitovým dedikovaným procesorem DSP. Tyto čipy se používají v mnoha produktech MP3 a přehrávačů médií.
  • Syntetizovatelná měkká jádra T80 (VHDL) a TV80 (Verilog) jsou k dispozici na OpenCores.org.
  • National Semiconductor NSC800 oznámený v roce 1980 se používá v mnoha elektronických šifrovacích zařízeních TeleSecurity Timmann (TST) a Canon X-07 . NSC 800 je plně kompatibilní s instrukční sadou Z-80. NSC800 používá multiplexovanou sběrnici jako 8085, ale má jiný vývod než Z80.
Nekompatibilní
  • Toshiba TLCS 900 série vysoké množství (většinou OTP ) mikroprocesory jsou založeny na Z80; sdílejí stejnou základní strukturu registrů BC, DE, HL, IX, IY a do značné míry stejné instrukce, ale nejsou binárně kompatibilní, zatímco předchozí TLCS 90 je kompatibilní se Z80.
  • Tyto NEC 78k mikroprocesory řady jsou založeny na Z80; sdílejí stejnou základní strukturu registrů BC, DE, HL a mají podobné (ale jinak pojmenované) instrukce; není binárně kompatibilní.
Částečně kompatibilní
Již se nevyrábí
  • ASCII Corporation R800 byl rychlý 16-bitový procesor použitý v MSX TurboR počítačů; byl to software, ale ne hardware kompatibilní se Z80 (časování signálu, pinout a funkce pinů se liší od Z80).
  • Zilog je NMOS Z800 a CMOS Z280 jsou 16bitové Z80-implementace (před HD64180 / Z180 ) s 16 MB vyvolávaná MMU adresního prostoru; přidali do sady instrukcí Z80 mnoho ortogonalizací a režimů adresování. Funkce minipočítače-jako jsou uživatelské a systémové režimy, podpora více procesorů, na čipu MMU, na čipových instrukcích a datové mezipaměti a podobně-byly považovány spíše za komplexnější než za funkčnost a podporu (obvykle elektronicky orientovaného) návrháře vestavěných systémů, také bylo velmi obtížné předpovědět časy provádění instrukcí.
  • Některé arkádové hry, jako je Pang / Buster Bros, používají šifrovaný procesor „Kabuki“ Z80 vyráběný společností VLSI Technology , kde jsou dešifrovací klíče uloženy ve vnitřní paměti zálohované baterií , aby se zabránilo pirátství a nelegálním bootlegům.

Pozoruhodná použití

Stolní počítače

Z80A byl použit jako CPU v řadě herních konzolí, jako je tato ColecoVision .

Na konci sedmdesátých a na začátku osmdesátých let byl Z80 používán ve velkém počtu dosti anonymních obchodně orientovaných strojů s operačním systémem CP/M , což byla kombinace, která v té době dominovala trhu. Čtyři dobře známé příklady podnikových počítačů Z80 systémem CP / M jsou Heathkit H89 , přenosný Osborne 1 se Kaypro série a Epson QX-10 . Méně známý byl drahý high-end Otrona Attache. Některé systémy používaly víceúlohový software operačního systému (jako MP/M nebo Morrow 's Micronix) ke sdílení jednoho procesoru mezi několik souběžných uživatelů .

Sinclair ZX Spectrum který používal Z80 taktované na 3,5 MHz

Bylo představeno několik domácích počítačů, které používaly Z80 jako hlavní procesor nebo jako doplněk umožňující přístup k softwaru napsanému pro Z80. Pozoruhodné jsou řady TRS-80 , včetně původního modelu (později retronymed "Model I"), Model II , Model III a Model 4 , které byly vybaveny Z80 jako hlavním procesorem a některé (ale ne všechny) další Modely TRS-80, které používaly Z80 jako hlavní nebo sekundární procesor. Dalšími pozoruhodnými stroji byly DEC Rainbow 100 a Seequa Chameleon , z nichž oba obsahovaly procesor Intel 8088 a Z80, podporující buď 8bitové aplikace CP/M-80 běžící na Z80, nebo vlastní MS-DOS který nebyl plně kompatibilní s aplikacemi PC DOS běžícími na 8088.

V roce 1981 představil Multitech (později Acer ) Microprofessor I , jednoduchý a levný školicí systém pro mikroprocesor Z80. V současné době je stále vyráběn a prodáván společností Flite Electronics International Limited v Southamptonu v Anglii .

Přenosné a ruční počítače

Použití Z80 v lehčích zařízeních napájených bateriemi se rozšířilo s dostupností verzí procesoru CMOS. To také inspirovalo vývoj dalších procesorů založených na CMOS, jako je LH5801 od Sharp. Sharp PC-1500 , je BASIC -Programovatelné kapesní počítač byla vydána v roce 1981, následovaný zlepšenou Sharp PC-1600 v roce 1986 a Sharp PC-E 220 v roce 1991. pozdějších modelech Sharp Wizard řady osobních organizátorů také byly založeny Z80 . Notebooky, které mohly provozovat operační systém CP/M stejně jako stolní počítače, následovaly v roce 1984 s Epson PX-8 Geneva a v roce 1985 Epson PX-4 a Bondwell-2 . Zatímco se trh s notebooky v následujících letech přesunul k výkonnějším procesorům Intel 8086 a operačnímu systému MS-DOS, stále byly představeny lehké systémy na bázi Z80 s delší výdrží baterie, jako například Cambridge Z88 v roce 1988 a Amstrad NC100 v roce 1992. Z80 odvozený Z8S180 také našel svou cestu do rané pero-provozoval osobní digitální asistent je Amstrad PenPad PDA600 v roce 1993. Hong Kong-založený VTECH produkoval řadu malých přenosných počítačů nazývaných ‚laserů‘ na bázi Z80. Poslední dva byly Laser PC5 a PC6. Cidco MailStation Mivo 100, poprvé vydána v roce 1999, byl přenosný e-mailový zařízení stand-alone, s mikrořadičem Z80-založené. Společnost Texas Instruments vyrobila řadu kapesních organizátorů (končí v roce 2000) pomocí procesorů Toshiba postavených kolem jádra Z80; prvním z nich byl TI PS-6200 a po dlouhém výrobním cyklu několika desítek modelů vyvrcholila řada PocketMate.

Vestavěné systémy a spotřební elektronika

PABX na bázi Z80 . Z80 je třetí čip zleva, napravo od čipu s ručně psaným bílým štítkem.

Zilog Z80 je již dlouho oblíbeným mikroprocesorem ve vestavěných systémech a jádrech mikrokontrolérů , kde se dnes stále hojně používá. Aplikace Z80 zahrnují použití ve spotřební elektronice , průmyslových výrobcích a elektronických hudebních nástrojích. Například Z80 byl použit v průkopnickém hudebním syntetizátoru Prophet-5 , stejně jako v prvním MIDI syntetizátoru Prophet 600 . Casio použilo Z80A ve své herní konzoli PV-1000 .

Dobrá řada arkádových videoher z počátku 80. let, včetně arkádové hry Pac-Man , obsahuje CPU Z80.

Z80 byl použit v konzolách Sega Master System a Sega Game Gear . Sega Genesis obsahuje Z80, s vlastním 8 KB RAM, která probíhá paralelně s MC68000 hlavního procesoru, má přímý přístup k zvukové čipy systému a I / O (Controller) porty, a má zapnutý datovou cestu k hlavní paměťová sběrnice 68000 (poskytuje přístup k 64 kB hlavní RAM, softwarové kazetě a celému video čipu); kromě zajištění zpětné kompatibility s hrami Master System je Z80 často používán k ovládání zvuku v softwaru Genesis.

CPU Z80 byly také použity v průkopnické a populární sérii grafických kalkulaček TI-8x od společnosti Texas Instruments , počínaje rokem 1990 s TI-81 , který je vybaven Z80 taktovaným na 2 MHz. Většina kalkulaček vyšší řady v řadě, počínaje TI-82 a TI-85 , taktuje své procesory Z80 na 6 MHz nebo vyšší. (Několik modelů s názvy TI-8x používá jiné CPU, například M68000, ale drtivá většina je založená na Z80. Na těch je možné spouštět sestavené nebo kompilované uživatelské programy ve formě strojového jazykového kódu Z80. ) Série TI-84 Plus , představená v roce 2004, se stále vyrábí od roku 2020. Série TI-84 Plus CE , představená v roce 2015, využívá procesor Zilog eZ80 odvozený od Z80 a od roku 2020 se také stále vyrábí.

Na konci osmdesátých let představovala řada sovětských pevných telefonů s názvem „AON“ model Z80; tyto telefony rozšířily sadu funkcí pevné linky o ID volajícího , různé vyzváněcí tóny podle volajícího, rychlou volbu atd. Ve druhé polovině devadesátých let výrobci těchto telefonů přešli na 8051 kompatibilní MCU, aby snížili spotřebu energie a zabránili přehřívání kompaktních bradavic.

Viz také

Poznámky pod čarou

Reference

Další čtení

Katalogové listy a manuály
Knihy o hardwaru
Softwarové knihy
  • Programování Z80 ; 3. vydání; Rodnay Zaks; Sybex; 630 stran; 1980; ISBN  978-0895880949 . (archiv)
  • Jazykové programování sestavení Z80 ; 1. vydání; Lance Leventhal; Osborne/McGraw-Hill; 642 stran; 1979; ISBN  978-0931988219 . (archiv)
  • 8080/Z80 jazyk montáže - techniky pro vylepšené programování ; 1. vydání; Alan Miller; John Wiley & Sons; 332 stran; 1981; ISBN  978-0471081241 . (archiv)
  • Programovací jazyk sestavení Z80 a 8080 ; 1. vydání; Kathe Spracklen; Hayden; 180 stran; 1979; ISBN  978-0810451674 . (archiv)
  • Praktické programování mikropočítačů - Z80 - včetně zdroje pro Resident Assembler a Debug Monitor ; 1. vydání; Walter Weller; Severní technologie; 501 stran; 1978; ISBN  978-0930594053 . (archiv)
  • Podrutiny jazykové sestavy Z80 ; 1. vydání; Lance Leventhal a Winthrop Saville; Osborne/McGraw-Hill; 512 stran; 1983; ISBN  978-0931988912 . (archiv)
  • Nedokumentovaný dokument Z80 ; Sean Young; v0,91; 52 stran; 2005. (archiv)
Referenční karty
  • Referenční karta pro mikroprocesor Z80 ; Shirley & Nanos; Nanosystémy; 16 stran; 1981. (archiv)
  • Okamžitá referenční karta mikroprocesoru Z80 ; James Lewis; Micro Logic; 2 stránky; 1981. (archiv)

externí odkazy