Z80 - Zilog Z80


z Wikipedie, otevřené encyklopedie
Z80
Zilog Z80.jpg
Časný Z80 mikroprocesor, vyrobeno v červnu 1976 v souladu s razítkem
produkoval Od března 1976 předložit
Společný výrobce (y)
Max. Procesor Taktovací frekvence 2,5, 4, 6, 8 MHz až 10 MHz, s CMOS varianty až do 20 MHz a binární kompatibilní deriváty (z Zilog) až do 33 a 50 MHz.
Květnová z roku 1976 reklama na Z-80 8-bitového mikroprocesoru Zilog

Z80 CPU je 8-bit na bázi mikroprocesor . To bylo představeno Zilog v roce 1976 jako společnost startu prvního produktu očím. Z80 byl počat Federico Faggin koncem roku 1974 a od něj a jeho tehdejších 11 zaměstnanci na Zilog od počátku roku 1975 do března 1976, kdy byl první plně funkční vzorky dodány. S příjmy z Z80, firma vybudovala vlastní čipové továrny a vzrostl na více než tisíc zaměstnanců v průběhu následujících dvou let.

Zilog Z80 byl software kompatibilní rozšíření a posílení na Intel 8080 a stejně jako to, byl především zaměřen na vestavěné systémy . Podle návrhářů, primární cíle pro Z80 CPU (a jeho volitelné podpory a periferních ICS) byly produkty, jako jsou inteligentní terminály , high-end tiskáren a pokročilé pokladen , jakož i telekomunikačních zařízení, průmyslových robotů a dalších druhů automatizační techniky. Z80 byl oficiálně uveden na trh v červenci 1976, a přišel být široce používány iv obecných stolních počítačů používajících CP / M a dalších operačních systémech stejně jako v domácí počítače v roce 1980. To bylo také obyčejné ve vojenských aplikacích, hudební vybavení , jako jsou syntezátory , a v počítačové Mincovní videoher z pozdní 1970 a na začátku roku 1980, stroje pasáže nebo videohry arkádové skříně .

Z80 byl jedním z nejčastěji používaných procesorů v domovském trhu s počítači od konce 1970 do poloviny 1980. Zilog Z80 povolil, aby se sídlem v USA Synertek na a Mostek, který jim pomohl s počátečním výroby, jakož i evropské druhého zdrojového výrobce, SGS . Design byl také zkopírován několik Japonců, východoevropský a sovětských výrobců. To vyhrál přijetí Z80 na světovém trhu, protože velké společnosti jako NEC , Toshiba , Sharp a Hitachi začala vyrábět zařízení (nebo jejich vlastní Z80 kompatibilních klonů nebo vzory). V posledních desetiletích Zilog se nyní soustředí na stále rostoucí trh pro vestavěné systémy (pro které bylo původní Z80 a Z180 byly navrženy) a Z80 kompatibilní nejnovější mikrořadičů rodině, plně pipeline 24bitové eZ80 s lineárním 16  MB adresu rozsah , byl úspěšně zaveden spolu s jednoduššími Z180 a Z80 produkty.

Dějiny

Fotografie z původního Z80 mikroprocesoru designem vyčerpání zatížení NMOS. Celková die velikost je 3545 × 3350 um. (Tento skutečný čip vyrobený v roce 1990)
Z80 Původní DIP40 chip balíček pinů

Z80 přišel o tom, kdy fyzik Federico Faggin nechal Intel na konci roku 1974 k založení Zilog s Ralphem Ungermann . Na Fairchild Semiconductor , a později na Intel , Faggin pracoval na základní tranzistoru a polovodičů výrobní technologie. On také vyvinul základní metodologii konstrukce použité pro paměti a mikroprocesory společnosti Intel a vedl práci na Intel 4004 , v 8080 a několik dalších integrovaných obvodů. Masatoshi Shima , hlavní logika a tranzistorové úrovni, návrhář 4004 a 8080 pod dohledem Faggin se připojil k týmu Zilog.

V březnu 1976, Zilog Z80 se vyvinul, stejně jako doprovodný assembler založený vývojový systém pro své zákazníky, a do července 1976, byl tento oficiálně uveden na trh. (Některé z podpůrných a periferních integrovaných obvodů Z80 byly vyvíjeny v tomto bodě, a mnoho z nich bylo v průběhu následujícího roku zahájena.)

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žívaných jako tranzistory zatížení v aby bylo možné zvládnout s jediným 5 Volt napájení.

Faggin navrhl instrukční sadu jako binárně kompatibilní s Intel 8080, takže většina 8080 kód, pozoruhodně CP / M operační systém a Intel PL / M kompilátor pro 8080 (stejně jako jeho generovaný kód), by běžet nemodifikované na novém Z80 PROCESOR. Masatoshi Shima navržen většinu mikroarchitektury , jakož i úrovně brány a tranzistor Z80 CPU, které bude nápomocen malým počtem inženýrů a uspořádání lidí. CEO Federico Faggin skutečně těžce zapojený do rozvržení čip práce, spolu se dvěma vyhrazenými rozložení lidí. Faggin pracovali 80 hodin týdně za účelem splnění pevného harmonogramu dán finančními investory, podle sebe.

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

  • Vylepšená sada instrukcí včetně single-bitové adresování, posuny / otáčí na paměti a registruje kromě akumulátoru , otočit pokyny pro BCD počet řetězců v paměti, programové zacyklení , programový čítač relativní skoky, blok kopií blokové vstupů / výstupů (I / O ), a byte vyhledávací pokyny. Z80 zabudovala příznak přetečení a měl lepší podporu pro podepsaných 8- a 16-bitové aritmetiky.
  • Nové IX a IY indexové registry s návodem pro přímé základny + offset adresování
  • Lepší přerušovací systém
    • Více automatický a obecný systém vektorových přerušení , režim 2 , určená především pro Zilog linii proti sobě / časovače, DMA a komunikačními kontroléry, stejně jako systém pevného vektoru přerušení, režim 1 , pro jednoduché systémy s minimálním hardware (s režim 0 bytí 8080 kompatibilní režim).
    • NMI (NMI), který může být použit v reakci na vypnutí situace nebo jiné vysoce prioritních akcí (a umožňuje minimalistický systém Z80 snadno realizovat přerušovací systém dvouúrovňový v režimu 1 ).
    • Dva samostatné registru soubory , které by mohly být rychle přešli, zrychlit reakci na přerušení , jako je rychlé asynchronní zpracování událostí nebo multitasking dispečera . Ačkoli nebyly zamýšleny jako dodatečné registry pro všeobecné kódu, byly nicméně použity tímto způsobem v některých aplikacích.
  • Méně hardware potřebný pro napájení , generování hodin a rozhraní pro paměti a I / O
    • Jeden 5 V napájecí zdroj ( 8080 potřebná -5 V / + 5 V / + 12 V ).
    • Jednofázové 5 V hodiny ( 8080 potřebuje vysokou amplitudou (9-12 V) nepřekrývajících se dvoufázový hodiny ).
    • Vestavěný DRAM refresh mechanismus, který by jinak musel být poskytnuty externích obvodů.
    • Nemultiplexovaná autobusy (8080 měli state-signály multiplexované na datovou sběrnici).
  • Funkce zvláštní resetu, který maže pouze čítač instrukcí tak, že jeden Z80 CPU by mohl být použit ve vývojovém systému, jako je emulátor v obvodu .

Z80 převzala od 8080 a jejího potomstva, v 8085 , na trhu procesorů, a se stal jedním z nejpopulárnějších 8-bitových procesorů. Možná, že klíč k počáteční úspěch Z80 bylo vestavěné DRAM obnovení a další funkce, které umožňovaly systémy, které mají být postaveny s menším počtem nosných čipy (Z80 vestavěné systémy typicky používají statické paměti RAM , a proto není třeba tuto aktualizaci).

Pro původní NMOS konstrukce, určený horní mez frekvence hodin postupně zvýšila z úvodní 2,5  MHz , prostřednictvím dobře známého 4 MHz (Z80A), až do 6 (Z80B) a 8 MHz (Z80H). Verze NMOS byl vyroben jako součást 10 MHz od pozdní 1980. CMOS verze byly vyvinuty s konkrétními horním kmitočtu v rozmezí od 4 MHz až 20 MHz pro verzi prodával dnes. Paměti CMOS verze nemá nízkou spotřebou energie spánek s vnitřní stav udržel, který nemá dolní limit 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 zápisu,

Přibližný blokové schéma Z80. Neexistuje žádný vyhrazený zmije posunů nebo samostatného incrementer na výzkum a není potřeba více než jeden 16bitové dočasné registru WZ (ačkoli incrementer západky jsou také používány jako 16bitové dočasném registru, v jiných souvislostech). Jedná se o PC a IR registry, které jsou umístěny v samostatné skupině, s odnímatelným segmentu sběrnice, aby aktualizaci těchto registrů souběžně s hlavním registrem banky.

Programovací model a zápisu, jsou poměrně běžné, nakonec založený na struktuře rejstříku DATAPOINT 2200 (což souvisejícího 8086 rodina také zděděné). Z80 byl navržen jako rozšíření 8080 , vytvořené stejnými inženýry, což bylo rozšíření 8008 . 8008 byl v podstatě PMOS realizace CPU TTL založené na DATAPOINT 2200 .

Tento originální design dovolil registr H a L, které mají být spárovány do 16bitové adresy registru HL V 8080 tato dvojice byla zobecnit do BC a DE, zatímco HL také stal použitelný jako 16bitové akumulátoru. 8080 také představil důležitou 8bitový okamžitý režim datový provoz akumulátorových a bezprostředních 16-bitových dat pro HL, BC a DE zatížení. Kromě toho přímý 16-bit kopírování mezi HL a pamětí bylo nyní možné pomocí přímého adresu. Z80 ortogonalizovány tento kousek dál tím, že všechny dvojice (včetně IX a IY) další obecné účely, 16-bitového registru s 16-bitovým kopírování přímo do a z paměti.

16-bit IX a IY registry v Z80 jsou určeny především jako základní adresa registrů, kde je konkrétní instrukce dodává konstantní posun, ale jsou také použitelné jako 16bitové akumulátorů, mimo jiné. Z80 také zavádí novou podepsanou příznak přetečení a doplňuje poměrně jednoduché 16bitové aritmetika na 8080 s vyhrazenými instrukcemi pro podepsané 16bitové aritmetiky.

Mezi 8080 kompatibilní s registry AF, BC, DE, HL jsou duplikovány jako dva samostatné banky v Z80, kde je procesor rychle přejít z jedné banky do druhé; funkce užitečné pro urychlení odezvy na single-level, s vysokou prioritou přerušení. Podobný rys byl přítomen v DATAPOINT 2200 , ale nebyl nikdy realizován ve společnosti Intel. Duální registr-set smysl jako Z80 (jako většina mikroprocesory v té době) byl ve skutečnosti určen pro vložené použití, nikoli pro osobní počítače, nebo přesto-k-být vynalezené domácí počítače . Podle jednoho z designérů, Masatoshi Shima , důraz byl trh na vysoce výkonných tiskáren, high-end pokladen a inteligentní terminály, i když Ralph Ungermann také viděl další možnosti, jako jsou počítače. Tyto dvě sady registrů také ukázalo být velmi užitečné pro silně optimalizované kódování ruční montáž jazyka, jako je plovoucí desetinnou čárkou aritmetika nebo domácí počítačové hry.

registry

Z80 registry
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ími registry
A flags AF (akumulátor a vlajky)
B C před naším letopočtem
D E DE
H L HL (nepřímá adresa)
střídavé registry
A' Flags' AF " (akumulátor a vlajky)
B‘ C' BC "
D‘ E' DE "
H‘ L‘ HL " (nepřímá adresa)
registry index
IX I ndex X
IY I ndex Y
SP S lepivost P ointer
Ostatní registry
  I nterrupt vektoru
  R R efresh čítač
programový čítač
PC P rogram C ounter
stavový registr
  S Z - H - P N C F zpoždění

Stejně jako u 8080, 8-bitové registry jsou obvykle spárován poskytovat 16-bitové verze. 8080 kompatibilní s registry jsou:

  • AF8-bitový akumulátor (A) a příznakových bitů (f) vykonává nula, minus, parita / přepadové, polovina-carry (pro BCD ), a přidáním / Odečtení příznak (obvykle nazývá N) i pro BCD
  • BC: 16-bitová data / adresa registru nebo dva 8-bitové registry
  • DE: 16-bitová data / adresa registru nebo dva 8-bitové registry
  • HL: 16-bit akumulátorové / adresa registru nebo dva 8-bitové registry
  • SP: Ukazatele zásobníku , 16 bitů
  • PC: programový čítač, 16 bitů

Nové registry představené s Z80 jsou:

  • IX: 16-bitový index nebo základ pro registr 8-bitové okamžité posuny nebo dva 8-bitových registrů
  • IY: 16-bitový index nebo základ pro registr 8-bitové okamžité posuny nebo dva 8-bitových registrů
  • I: vektor přerušení základní registr, 8 bitů
  • R: DRAM obnovovací čítač, 8 bitů ( MSB nepočítá)
  • AF': Alternativní (nebo shadow) akumulátor a vlajky ( zapínat a ven s EX AF, AF‘ )
  • BC', DE'A HL': alternativní (nebo stíny) registrů ( zapínat a ven s EXX )
  • Čtyři bity přerušení stavem a stavem přerušení režimu

Neexistuje žádný přímý přístup k alternativních registrů; Místo toho dvě zvláštní pokyny, EX AF,AF'a EXXkaždý přepíná jeden ze dvou multiplexerů sandálů . To umožňuje rychlé přepínání kontextu pro přerušení rutiny služby: EX AF, AF'může být použita samostatně, pro opravdu jednoduché a rychlé přerušení rutiny, nebo společně s EXXvyměnit celý BC, DE, HL set. To je ještě několikanásobně rychleji než tlačí stejné registry na stacku . Pomaleji, s nižší prioritou, nebo multi level přeruší normálně používat zásobník pro ukládání registrů, nicméně.

Refresh registr , R, zvýší pokaždé, když CPU načte operační kód (nebo opcode prefix) a nemá žádnou přímou souvislost s realizací programu. Toto někdy bylo použito ke generování pseudonáhodných čísel ve hrách, ale i v systémech pro ochranu software. To také bylo použito jako „hardware“ counter v některých provedeních; Příkladem toho je ZX81 , která umožňuje to sledovat znakových pozic na televizní obrazovce spouští přerušení na obalu kolem (připojením INT až A6).

Vektor přerušení registr , Ise používá pro Z80 specifický režim 2 přerušení (vybraných IM 2instrukcí). Dodává vysoké bajt základní adresu pro 128 vstupní tabulky služeb rutinních adres, které jsou vybrány pomocí indexu zaslané CPU během přerušení potvrzovacího cyklu; Tento index je prostě low byte část ukazatel na tabulkové nepřímé adresy směřující do servisního režimu. Ukazatel identifikuje konkrétní obvodovou čip nebo periferní funkce nebo událost, kde jsou čipy normálně připojen v tzv řetězu pro rozlišení priority. Stejně jako obnovovací rejstříku, tento registr také někdy byl použit tvořivě; V přerušení režimech 0 a 1 (nebo v systému bez použití přerušení) může být použit jak jednoduše další 8-bitové datové rejstříku.

Instrukce LD A, R a LD A, I ovlivnit Z80 vlajky zaregistrovat, na rozdíl od všech ostatních LD (zatížení) instrukce. Znamení (bit 7) a nula (bit 6) příznaky jsou nastaveny podle údajů načtených z zdrojových registrů aktualizaci nebo přerušení. U obou instrukcí, je parity / přetečení příznak (bit 2) je nastaven v souladu s aktuálním stavem IFF2 klopného obvodu.

Z80 assembler

Datapoint 2200 a Intel 8008

První Intel 8008 assembleru bylo založeno na velmi jednoduchém (avšak systematické) syntaxe zděděnou z Datapoint 2200 design. Tento originální skladba byla později přeměněna na nové, poněkud tradiční jazyka symbolických instrukcí formuláře stejné původní 8008 čipu. Přibližně ve stejné době, je nový jazyk byl také rozšířen o přidané adresování možnosti v pokročilejší Intel 8080 čipu (8008 a 8080 sdílí jazyk podmnožinu, aniž by byl binární kompatibilní , avšak 8008 byl binární slučitelný s datovými body 2200).

V tomto procesu je mnemotechnická pomůcka Lpro LOAD , bylo nahrazeno různými zkratkami slov LOAD , STORE a MOVE , smíchaný s jinými symbolickými písmeny. Odpovídající symbolické písmeno M, pro paměť (odkazuje HL), byla zrušena z uvnitř instrukčního mnemotechnická pomůcka, aby se stal syntakticky volně stojící operand , zatímco registry a kombinace registrů staly velice rozporuplně označeny; buď zkrácenými operandy (MVI D, LXI H a tak dále), a to v návodu mnemotechnická pomůcka sama (LDA, LHLD a tak dále), nebo oba současně (LDAX B, STAX D a tak dále).

Datapoint 2200 i8008 i8080 Z80 i8086 / i8088
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 ze čtyř syntaxí pomocí vybraných vzorků ekvivalentu, nebo (pro 8086) velmi podobné, zatížení a ukládat pokyny. Syntaxe Z80 používá závorek výraz pro indikaci, že hodnota by měla být použita jako adresa paměti (jak je uvedeno níže), zatímco syntaxe 8086 používá závorky namísto běžných kulatých závorkách pro tento účel. Oba Z80 a 8086 použít znaménko + k označení, že konstanta je přidán do základního registru, aby se vytvořila adresa

nová syntaxe

Vzhledem k tomu, Intel tvrdil autorská práva na jejich montážních mnemotechnické pomůcky, nová syntaxe sestava musela být vyvinuta pro Z80. Tentokrát bylo použito více systematický přístup:

  • Všechny registry a dvojic registrů jsou výslovně označeny svými plnými jmény
  • Závorky se běžně používá k označení „obsah paměti u“ (konstantní adresu nebo proměnný ukazatel dereferencing), s výjimkou některých instrukcí skoku.
  • Všechny pokyny zatížení a úložiště používat stejný symbolický název, LD, pro zatížení (návrat k zjednodušující Datapoint 2200 slovníku); jiné běžné pokyny, například sčítání a INC, používají stejné mnemotechnický ohledu na adresování režim nebo operand velikost. To je možné proto, že sami nesou operandy dostatek informací.

Tyto zásady dělal to jednoduché najít jména a podoby pro všechny nové instrukce Z80, stejně jako orthogonalizations z těch starých, jako je například LD BC,(1234).

Na rozdíl od pojmenování rozdíly, a to i přes určité nesrovnalosti v základním registru struktury, Z80 a 8086 syntax jsou prakticky isomorphic pro velkou část návodu. Existují jen velmi povrchní podobnosti (například slovní MOV, nebo písmenem X, pro delší rejstříku) mezi montážními jazyky 8080 a 8086, ačkoli 8080 programy mohou být sestaveny do 8086 objektového kódu pomocí speciálního assembler nebo překládán do 8086 assembleru by překladatel programu.

Soubor instrukcí a kódování

Z80 používá 252 ven z dostupných 256 kódů jako jeden byte operační kódy ( „root“) instrukce; Čtyři zbývající kódy jsou používány značně jako operační kód předponami : CB a ED umožňuje další instrukce a DD nebo FD vybere IX + D nebo iy + D, respektive (v některých případech bez posunutí d) místo HL. Toto schéma dává Z80 velké množství permutací instrukcí a registrů; Zilog roztřídí je do 158 různých „typů pokyn“, z nichž 78 jsou stejné jako u Intel 8080 (umožňující provoz většiny 8080 programů v Z80). Zilog podklady seskupuje instrukce do následujících kategorií:

  • 8-bitové aritmetické a logické operace
  • 16-bit aritmetika
  • 8-bit zatížení
  • 16-bit zatížení
  • Bit set reset a testovací
  • Volání, návrat, a restart
  • Výměna, přenos blok a vyhledávání
  • Obecný účel aritmetické a řídící CPU
  • Vstup a výstup
  • Skok
  • Otočit a shift

Žádné násobit instrukce jsou k dispozici v původním Z80. Různé velikosti a varianty přístavby, směn, a otáčí se mají poněkud rozdílnou účinky na prapory, protože většina nemovitostí vlajky se měnící v 8080 byly zkopírovány. Nicméně, paritní příznakový bit P z 8080 (bit 2), se nazývá P / V (parita / přetečení) v Z80, protože slouží dalšímu účelu, ukazatele přepadové dvojkový doplněk, je chybějící funkce v 8080. Aritmetické instrukce, Z80 nastavit tak, aby ukazují přetečení nikoli parity, zatímco instrukce bitové i nadále používat to jako příznak parity. Tato nová přetečení vlajka je používána pro všechny nové Z80 specifické 16-bitové operace (ADC, SBC), jakož i pro 8-bitové aritmetických operací, i když 16-bitové operace dědí z 8080 (ADD, INC, DEC) není ovlivní to. Také, bit 1 vlajek zaregistrovat (rezervní bit v 8080) se používá jako příznak, N, který indikuje, zda poslední aritmetická instrukce vykonán byl odčítání či sčítání. Z80 verze tohoto příkazu DAA zkontroluje N příznak a podle toho se chová, takže (hypotetický) odečítání později DAA následně přinese jiný výsledek na staré 8080 než na Z80. To by však pravděpodobně chybné kód na 8080, jak byla definována DAA pro přidávání pouze na tomto procesoru.

Z80 má šest nových LD instrukce, které lze vložit do DE, BC, a SP registr párů z paměti a paměť zatížení z těchto tří registrů párů, na rozdíl od 8080. Stejně jako u 8080, návod zatížení neovlivňují příznaky (kromě se zvláštním určením i a R registrů zatížení). Výsledkem pravidelného kódování (společné s 8080), je to, že každý z 8-bitových registrů lze načíst z sebe (např LD A, A). To je účinně NOP.

Na rozdíl od 8080, Z80 může skočit na relativní adresu (jr místo jp) za použití podepsané 8-bitový posun. Pouze Zero a pokračujte příznaky mohou být testovány na tyto nové dvoubajtových JR pokyny. Dvou-byte instrukce specializuje na programové zacyklení je také nový Z80. DJNZ (Snížit Jump-li nenulová) má podepsanou 8-bitový posun jako bezprostřední operand. Registr B je zmenšena. Pokud je výsledek nenulový potom vykonávání programu skočí vzhledem k adresu počítače plus posunutí. Vlajky zůstanou nezměněny. Chcete-li provést odpovídající smyčka na 8080 by vyžadovaly samostatné úbytek a skok (na dvoubajtový absolutní adresy) návod a vlajka rejstřík by být změněn.

Index registru (IX / IY) instrukce mohou být užitečné pro přístup k datům organizovaných ve stálých heterogenních struktur (například záznamy ), nebo v pevných posuny relativně variabilní základní adresa (stejně jako v rekurzivní zásobníku rámců ) a může také snížit velikost kódu odstraněním potřeba více krátkých pokynů s využitím non-indexovaných registrů. Nicméně, ačkoli oni mohou ušetřit rychlosti v některých kontextech, kdy ve srovnání s dlouhými / komplex „ekvivalentní“ sekvence jednodušších operací, které vznikají spoustu dalšího času CPU ( např 19 T-státy přístup k jednomu indexovaných umístění v paměti vs. pouhých 11 o přístup ke stejné paměti pomocí HL a přírůstu na bod na další). Tak, pro jednoduché nebo lineární přístupů dat, IX a IY mají tendenci být pomalejší. Přesto mohou být užitečné v případech, kdy jsou ‚hlavní‘ registruje všechny obsazené, tím, že odstraní nutnost uložení / obnovení registrů. Jejich oficiálně nezdokumentované 8-bitové poloviny (viz níže), mohou být obzvláště užitečné v této souvislosti, neboť vznikají menší zpomalení než jejich 16-bitové rodičů. Stejně tak pokyny pro 16bitové dodatky nejsou nijak zvlášť rychle (11 hodiny) v originále Z80; Nicméně, oni jsou asi dvakrát tak rychle, jak vykonávat stejné výpočty pomocí 8-bitových operací, a stejně tak důležité, že snižují zaregistrovat s nimi nakládáno.

10-rok-novější microcoded Z180 konstrukce by mohla být nejprve dovolit větší „čip oblast“, umožňující mírně účinnější provádění (pomocí širší ALU , mimo jiné); podobné věci lze říci o Z800 , Z280 a Z380 . Nicméně, to nebylo až do plně pipeline eZ80 byl zahájen v roce 2001, že tyto pokyny konečně stalo zhruba v souladu s cyklem-efektivní, jak je to technicky možné, aby se jim, tedy vzhledem k Z80 kódování v kombinaci se schopností dělat 8-bit pro čtení nebo napsat v každém hodinovém cyklu.

nedokumentované instrukce

Indexové registry, IX a IY, byly určeny jako flexibilní 16-bitových ukazatelů, zvyšuje schopnost manipulovat paměť, zásobník rámy a datových struktur. Oficiálně byly považovány za pouhých 16-bit. Ve skutečnosti, že byla provedena 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 VPN a L ow registrů. Dokonce i binární operační kódy (strojového jazyka) byly totožné, ale předchází novým operačního kódu předpony. Zilog zveřejnila opcodes a související mnemoniku pro zamýšlené funkce, ale neměl dokumentují, že každý operační kód, který umožňoval manipulaci H a L registrů byl platný i v 8-bitových částí IX a IY registrů. Jako příklad bude operační kód 26h následuje okamžité hodnoty bytu (LD H, N) načíst tuto hodnotu do H registru. Předcházející tuto dvoubajtového instrukci s IX registru se operačního kódu předpony, dd, by namísto toho mít za nejvýznamnější 8 bitů IX registru naložením se stejnou hodnotou. Výrazná výjimka k tomu by bylo instrukce podobné LD H, (IX + d), které využívají jak HL a IX nebo iy registrů ve stejné instrukce; v tomto případě je DD prefix použije pouze na (IX + d) části instrukce.

Existují také několik dalších nedokumentované instrukce. Nezdokumentované nebo nelegální operační kódy nejsou zjištěny Z80 a mají různé účinky, z nichž některé jsou užitečné. Nicméně, protože nejsou součástí formálního vymezení instrukční sady, různé implementace Z80 není zaručeno pracovat stejným způsobem pro každou nezdokumentované opcode.

Hmyz

OTDRInstrukce neodpovídá dokumentaci Z80. Obě OTDRa OTIRinstrukce mají opustit carry (C) vlajka nezměněn. OTIRInstrukce pracuje správně; Nicméně, v průběhu provádění OTDRinstrukce se carry flag bere výsledky podvržený porovnávat mezi akumulátoru (A) a poslední výstup do OTDRvýuky.

Příklad kódu

Následující Z80 montáž zdrojový kód pro podprogram s názvem memcpy, který kopíruje blok datových bajtů dané velikosti z jednoho místa na druhé. Důležité: příklad kódu nezpracovává určitý případ, kdy cílový blok překrývá zdroj; fatální chyba. Ukázkový kód je velmi neefektivní, které jsou určeny pro ilustraci různé typy výuky, spíše než nejlepších postupů pro rychlost. Zejména Z80 má jedinou instrukci, která se spustí kompletní smyčku ( LDIR). Blok dat se zkopíruje jeden byte v době, a pohyb dat a opakování logika využívá 16-bitové operace. Všimněte si, že sestavený kód je binárně kompatibilní s Intel 8080 a 8085 CPU.

                             
                 
                 
                 
                 
                 
                 
                 
                 
                 
 
 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

provádění instrukcí

Každá instrukce se provádí v krocích, které jsou obvykle označovány jako strojní cykly (M-cyklů), z nichž každá může trvat od tří do šesti hodinových period (T-cyklů). Každý M-cyklus odpovídá zhruba jeden přístup k paměti nebo vnitřní operace. Mnoho pokyny skutečně skončí v M1 na další instrukci, která je známá jako načtení / execute překrývají .

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

M-cykly

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

Stroj cykly Z80 jsou sekvenovány vnitřní stavový stroj , který navazuje každé M cyklus z 3, 4, 5 nebo 6, T-cyklů v závislosti na kontextu. Tím se zabrání těžkopádné asynchronní logiky a dává řídicí signály chovají důsledně v širokém rozsahu hodinových kmitočtů. To také znamená, že vyšší frekvence krystalu se musí použít, než bez tohoto rozdělení cyklů stroje (přibližně 2-3 krát vyšší). To neznamená, že přísnější požadavky na čas přístupu paměti , protože s vysokým rozlišením hodiny umožňuje přesnější kontrolu nad časování pamětí, takže paměť může být aktivní souběžně s CPU ve větším rozsahu, což umožňuje efektivnější využití dostupné šířky pásma paměti.

Jedním z hlavních příkladem toho je, že pro operační kód načíst , Z80 kombinuje dvě plné hodinové cykly do období v přístupu do paměti (M1-signál). V Z80 tento signál trvá poměrně větší část obvyklé doby vykonávání instrukcí, než v provedení jako je 6800 , 6502, nebo podobně, přičemž se tato doba obvykle trvají obvykle 30 až 40% z hodinového cyklu. S paměťový čip dostupnosti (tj přístupových časů kolem 450 až 250 ns v roce 1980), obvykle se stanoví co nejrychlejší přístup k času, to znamená, že tyto konstrukce byly zamčené na podstatně delší hodinovém cyklu (tj nižší rychlost vnitřního hodiny) než Z80.

Memory bylo celkově pomalé oproti stavu stroje sub-cyklů (taktů) používaných v současných mikroprocesorů. Nejkratší cyklu stroje, které by mohly být bezpečně použity v oblasti vestavěných vzorů proto často omezen době přístup do paměti, nikoli maximální frekvenci CPU (obzvláště tak v domácí počítačové éry). Nicméně, tento vztah se pomalu změnila v průběhu posledních desetiletí, a to zejména pokud jde o SRAM ; cacheless, návrhy single-cyklus jako například eZ80 proto mnohem větší smysl v poslední době.

Obsah refresh registru R je vyslán na dolní polovině adresové sběrnice společně s řídicím obnovovací signál, zatímco CPU dekóduje a provedení vyzvednuté instrukce. Při obnovování obsah přerušení zaregistrovat I jsou rozeslány na horní polovině adresové sběrnice.

kompatibilní periferie

Zilog zavedla řadu periferních částí pro Z80, které všechny podporují manipulační systém a já Z80 je přerušení / O adresového prostoru. Patří mezi ně čítač / časovač Channel (CTC), přičemž SIO (Serial Input Output), DMA (Direct Memory Access), PIO (Parallel Input-Output) a DART (Dual Asynchronous Receiver Transmitter). Vzhledem k tomu, řada výrobků vyvinuté,, s nízkou spotřebou energie vysokorychlostní CMOS byly zavedeny verze těchto čipů.

Stejně jako u procesorů 8080, 8085 a 8086, ale na rozdíl od procesorů, jako je Motorola 6800 a MOS Technology 6502, Z80 a 8080 má samostatnou kontrolní linky a adresní prostor pro I / O instrukcí. Zatímco některé počítače Z80 bázi jako je Osborne 1 použitého „Motorola ve stylu“ mapované do paměti vstupních / výstupních zařízení, obvykle I / O prostor byl použit k řešení jednoho z mnoha Zilog periferních čipů slučitelných s Z80. Zilog I / O čipy podporované nových režim 2 přerušení Z80, která zjednodušené přerušení manipulace pro velký počet periferií.

Z80 se oficiálně popsán jako podpůrný 16 bitů (64 KB) adresování paměti, a 8 bitů (256 portů) I / O adres. Všechny I / O instrukce skutečně tvrdit, kompletní 16-bitovou adresovou sběrnici. OUT (C), reg a reg IN (C) umístí obsah celého 16bitové BC registru na adresové sběrnici; OUT (n), A a IN A, (n) umístí obsah rejstříku na B8-B15 adresové sběrnice a n o b0-B7 na adresové sběrnice. Designér mohl vybrat dekódovat celý 16 bitovou adresovou sběrnici na I / O operací, aby bylo možné využít této funkce, nebo použít vysokou polovinu adresové sběrnice pro výběr dílčí funkce na I / O zařízení. Tato funkce byla použita také pro minimalizaci požadavků dekódování hardware, jako je například v Amstrad CPC / PCW a ZX81 .

Druhého zdroje a jejich deriváty

druhého zdroje

Mostek ‚s Z80: MK3880
NEC je μPD780C Z80 druhé původu NEC
Sharp je LH0080 ostrá verze Z80
T34BM1 , sovětský Z80 klon
Toshiba TMPZ84C015; standardní Z80 s několika Z80 rodinných periferií na čipu v QFP balení
Z80 kompatibilní s Hitachi HD64180
Z180 v PLCC balení
Z80 kompatibilní R800 v QFP
Z280 v PLCC balení

Mostek , který produkoval první Z80 pro Zilog, nabídl ji jako druhého zdroje jako MK3880. SGS-Thomson (nyní STMicroelectronics ) byla druhá-source také s jejich Z8400. Sharp a NEC vyvinul druhý zdroj pro NMOS Z80, na LH0080 a μPD780C resp. ΜPD780C byl použit v Sinclair ZX80 a ZX81 , původní verze ZX Spectrum a několik MSX počítačů, av hudebních syntezátorů, jako Oberheim OB-8 a další. LH0080 byl použit v různých domácích počítačů a osobních počítačů provedené Sharp a dalších japonských výrobců, včetně počítačů Sony MSX, a počet počítačů v Sharp MZ série.

Toshiba udělal CMOS -version, na TMPZ84C00, který se předpokládá, že (ale bez ověření), že je stejné konstrukce také používán Zilog pro vlastní CMOS Z84C00. Byly také Z80-čipy vyrobené GoldStar (nyní LG ) a série BU18400 z Z80-klonů (včetně DMA, PIO, CTC, DART a SIO) v NMOS a CMOS vyrobena ROHM Electronics .

Ve východním Německu , bezlicenčním klon Z80, známý jako U880 , byl vyroben. Bylo to velmi populární a byl použit v Robotron je a VEB Mikroelektronik Muhlhausenu své počítačové systémy (jako jsou KC85 -series) a také v mnoha vlastnoručně vyrobených počítačových systémů. V Rumunsku by mohla být nalezena jiná nelicencované klon pojmenovaný MMN80CPU a produkoval Microelectronica , který se používá v domácích počítačích jako TIM-S, HC, COBRA.

Také několik klonů Z80 bylo vytvořeno v Sovětském svazu , ty pozoruhodné bytí T34BM1 , nazývané také КР1858ВМ1 (paralelizovat Sovětský 8080-klon KR580VM80A ). První označení se použije v předvýrobní série, zatímco druhý musel být použit pro větší produkci. I když, vzhledem k rozpadu sovětského mikroelektroniky v pozdní 1980, existuje mnoho dalších T34BM1s než КР1858ВМ1s.

deriváty

Kompatibilní s původním Z80
  • Hitachi vyvinula HD64180 , centrum microcoded a částečně dynamický Z80 v CMOS se na čipové periferií a jednoduchým MMU dává 1  MB adresní prostor. To bylo později druhý zdrojů Zilog, nejprve jako Z64180, a pak ve formě mírně modifikovaného Z180 , který má sběrnicovým protokolem a časování lépe přizpůsobený Z80 periferních čipů. Z180 byl zachován a dále rozvíjen pod jménem Zilog je, nejnovější verze jsou založeny na zcela statické S180 / L180 jádra s velmi nízkým odběrem energie a rušení (hluku).
  • Toshiba vyvinula 84 pin Z84013 / Z84C13 a 100 pin Z84015 / Z84C15 série „inteligentních periferních řadiče“, v podstatě obyčejné NMOS a CMOS Z80 jádra s periferiemi Z80, Watchdog Timer, moc o resetu a počkat státní generátor na stejném čipu , Výrobce Sharp , stejně jako Toshiba. Tyto produkty jsou dnes druhý pochází Zilog.
  • 32-bitový Z80 kompatibilní Zilog Z380 , který byl zaveden 1994, se používá především v telekomunikačních zařízení.
  • Plně pipeline Z80 kompatibilní Zilog je eZ80 s 8/16/24-bit délkou slova a lineární 16 MB adresového prostoru byl představen v roce 2001. To existuje ve verzích s na čipu SRAM nebo flash paměti , stejně jako s integrovanými periferiemi. Jedna varianta má na čipu MAC (řadiče přístupu k médiu) , a je k dispozici software patří TCP / IP stack . Na rozdíl od Z800 a Z280, existuje jen málo přidané návod (především LEA , PEA , a proměnnou adresa 16/24-bit zatížení), ale instrukce jsou místo toho provedeny v rozmezí 2 až 11 krát za takt efektivní jako na originál Z80 (s průměrnou hodnotou kolem 3-5 krát). To je v současné době specifikovány pro hodinové kmitočty do 50 MHz.
  • Kawasaki vyvinul binární kompatibilní KL5C8400 což je přibližně 1,2-1,3 krát taktu efektivní jako originální Z80 a může být taktovaný až na 33 MHz. Kawasaki také produkuje rodinu KL5C80A1x, který má periferní zařízení, jakož i malou RAM na čipu; Je přibližně stejně taktu efektivní jako eZ80 a mohou být taktovaný až na 10 MHz (2006).
  • NEC uPD9002 byl hybrid CPU kompatibilní s Z80 a x86 rodin.
  • Čínští Akce Semiconductor zvukový procesor rodiny čipů (ATJ2085 a další) obsahuje Z80 kompatibilní MCU společně s 24bitové vyhrazené DSP procesoru. Tyto čipy se používají v mnoha MP3 a přehrávače médií produktů.
  • Tyto T80 (VHDL) a TV80 (Verilog) syntetizovatelné měkké jádra jsou k dispozici od OpenCores.org.
Non-kompatibilní
  • Toshiba TLCS 900 série vysoké množství (většinou OTP ) mikroprocesory jsou založeny na Z80; sdílejí stejné základní BC, DE, HL, IX, IY zaregistrovat strukturu, a do značné míry stejné instrukce, ale nejsou binárně kompatibilní, zatímco předchozí TLCS 90 je Z80 kompatibilní.
  • Tyto NEC 78k mikroprocesory řady jsou založeny na Z80; sdílejí stejné základní BC, DE, HL registru strukturu, a má podobné (ale jinak pojmenovaný) návod; není binární kompatibilní.
částečně kompatibilní
již nevyrábí
  • ASCII Corporation R800 byl rychlý 16-bitový procesor použitý v MSX TurboR počítačů; to software, ale ne hardware kompatibilní s Z80 (časovači signál, vývodů a funkcí kolíků lišit od Z80).
  • Zilog je NMOS Z800 a CMOS Z280 jsou 16bitové Z80-implementace (před HD64180 / Z180 ) s 16 MB stránková MMU adresového prostoru; dodali mnoho orthogonalizations a adresování režimy do instrukční sady Z80. Minipočítač funkce - například uživatele a systémových režimů, podpora více procesory, na čipu MMU, na čipové poučení a datové rychlé vyrovnávací paměti a tak dále - byli viděni spíše jako větší složitosti než jako funkčnost a podporu (obvykle elektronika orientované) vestavěné systémy, které navrhují, to také bylo velmi obtížné předpovědět dobu zpracování instrukcí.
  • Určité arkádové hry , jako Pang / Buster Bros používat šifrovaný „Kabuki“ Z80 procesor vyrobený firmou VLSI Technology , kde se dešifrovací klíče uloženého ve své vnitřní paměti zálohované baterií , aby se zabránilo pirátství a nelegální ilegální hry.

Pozoruhodné použití

Stolní počítače

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

Během pozdní 1970 a brzy 1980, Z80 byl použit ve velkém počtu docela anonymních obchodně orientované stroje s CP / M operační systém, což je kombinace, která ovládala trh v té době. Č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 . Výzkum stroje vyrobil 380Z mikropočítače a 480Z, které byly v síti pomocí tenkého typu Ethernet LAN a CP / NET v roce 1981. Další výrobci těchto systémů zahrnuty Televideo , Xerox ( 820 rozsah ), Sanyo (MBC-1000/1100/1200), Toshiba (T100) a řada méně známých firem, jako je Altos a Eagle . Některé systémy používají multi-tasking software operačního systému (jako MP / M ) sdílet jeden procesor mezi několika souběžných uživatelů .

V USA, Radio Shack TRS-80 , který byl zaveden v roce 1977, stejně jako modely II, III, 4, a navrhovaného modelu V, použít Z80. Řada TRS-80 klonů byly vyrobeny společnostmi, jako je Lobo ( Max-80 ), LNW ( LNW-80 ) a Hong Kong-založil EACA ( Video Genie a derivátů TRZ-80, PMC-80, a Dick Smith System 80 ). V Holandsku TRS-80 model III klon byl vyroben, aby měl schopnost CP / M; toto bylo Aster CT-80 . Coleco Adam hybridní počítačové / herní konzole použít Colecovision hry stejně jako CP / M. Časný Z80 domácí počítač byl Exidy Sorcerer . Ve Spojeném království, Sinclair Research použil Z80 a Z80A ve svých ZX80 , ZX81 a ZX Spectrum domácí počítače. Ty byly uvedeny na trh v USA Timex jako série Timex / Sinclair. Amstrad používal Z80A v jejich Amstrad CPC a PCW se pohybuje a časný UK počítač je Nascom 1 a 2 také použít ji. Z80 poháněl velké množství domácích počítačů ulpívající na MSX standard v Japonsku, v Asii a v menší míře, Evropa a Jižní Amerika (5 milionů v Japonsku sám). Také v Japonsku Sharp používá Z80 ve svém MZ a X1 série. Hong Kong-založený VTech dělal jeho Laser 200 domácí počítač s Z80. V Německu Apple-CP / M hybrid nazvaný základnu 108 spárování Z80 s 6502. Podobně Commodore 128 uváděný procesor Z80 podél jeho MOS Technology 8502 procesor pro kompatibilitu CP / M. Ostatní 6502 architektura počítačů na trhu v době, jako je BBC Micro , Apple II , a 6510 založené Commodore 64 , by mohly využívat Z80 s externí jednotkou, plug-in karty, nebo expanzní ROM nábojnice . Microsoft Z-80 SoftCard pro Apple II byl mimořádně úspěšný add-on karty a jednou z mála hardwarové produkty společnosti Microsoft éry.

V roce 1981, Multitech (později se stát Acer ) představil Microprofessor I , jednoduchý a levný systém školení pro mikroprocesor Z80. V současné době se stále vyrábí a prodává Flite elektroniky International Limited v Southamptonu, Anglie .

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

Vestavěných systémů a spotřební elektroniky

Z80-založené ústředny . Z80 je třetí čip z levé strany, na pravé straně čipu s ručně psaný bílém štítku na to.

Zilog Z80 je již dlouho populární mikroprocesor ve vestavěných systémů a mikroprocesorových jader, kde to zůstane v širokém užití dnes. V následujícím seznamu jsou uvedeny příklady takových aplikací Z80, včetně použití ve spotřební elektroniky produktů.

Průmysl

Spotřební elektronika

Hudební nástroje

viz též

poznámky pod čarou

Reference

Další čtení

externí odkazy