Zilog Z80
Processador de 8-bits From Wikipedia, the free encyclopedia
Processador de 8-bits From Wikipedia, the free encyclopedia
El Zilog Z80 és un microprocessador de 8 bits dissenyat i venut per Zilog des del juliol de 1976. S'utilitzava àmpliament tant en microordinadors així com per a propòsits militars. El Z80 i els seus derivats i els clons constitueixen una de les famílies de CPU més comunament utilitzades de tot el temps, i, junt amb la família 6502, dominava el mercat de microordinadors de 8 bits fins a finals dels anys 1970 a mitjan anys 1980.[1][2][3]
![]() | |
---|---|
![]() ![]() | |
Fabricant | Zilog Mostek (en) ![]() Synertek (en) ![]() STMicroelectronics NEC Corporation Sharp Corporation Toshiba Rohm (en) ![]() GoldStar (en) ![]() Hitachi National Semiconductor ![]() |
Llançament | març 1976 ![]() |
Final de vida | 2024 ![]() |
Estat | Discontinuat |
Característiques de Connectors | |
Representació esquemàtica ![]() ![]() | |
Format per | |
Registres de la CPU index register (en) ![]() stack register (en) ![]() Comptador de programa ![]() | |
Zilog Z180 (en) ![]() ![]() ![]() ![]() ![]() ![]() |
El Z80 va ser dissenyat principalment per Federico Faggin, que va estar treballant a Intel com a dissenyador cap de l'Intel 4004 i de l'Intel 8080. Quan es va acabar de produir, el 1974, Federico Faggin va deixar Intel, va fundar Zilog i va començar a treballar en el disseny de Z80 basant-se en l'experiència adquirida creant l'Intel 8080 i basant-se en l'estructura d'aquest últim. Dos anys després estava a la venda el Z80.
El Z80 estava dissenyat per ser compatible a nivell de codi amb l'Intel 8080, de manera que la majoria dels programes pel 8080 poguessin funcionar en ell, especialment el sistema operatiu CP/M.
El Z80 tenia vuit millores fonamentals respecte a l'Intel 8080:
El Z80 va eliminar ràpidament a l'Intel 8080 del mercat i es va convertir en un dels processadors de 8 bits més populars. Les primeres versions funcionaven a 2,5 MHz, però la seva velocitat ha augmentat fins als 20 MHz. Així, la versió més utilitzada va ser el Z80A funcionant a 3,58 MHz (un quart de la freqüència PAL o NTSC) sent la velocitat de fàbrica de 4 MHz.[5]
En l'actualitat Zilog segueix fabricant versions del Z80 original i altres models compatibles que milloren les prestacions.
Al començament dels anys 1980 el Z80 o versions clòniques del mateix van ser usades en multitud d'ordinadors domèstics, com la gamma MSX, el Radio Shack TRS-80, el Sinclair ZX80, ZX81 i ZX Spectrum. També va ser usat en l'Osborne 1, el Kaypro i una gran quantitat d'ordinadors empresarials que dominaven el mercat per aquella època i que usaven el sistema operatiu CP/M.
A mitjan anys 1980 el Z80 va ser usat en el Tatung Einstein i la família d'ordinadors domèstics i empresarials Amstrad CPC i Amstrad PCW. El Z80 també va ser usat en els ordinadors Tiki 100, que s'empraven en els col·legis de Noruega en aquells dies.
Va ser tan gran la popularitat del Z80 i el CP/M que altres ordinadors basats en el MOS Technology 6502 o 6510 que ja estaven al mercat, com el BBC Micro, l'Apple II i el Commodore 64 podien ser ampliats mitjançant una targeta o cartutx que contenia un processador Z80. També el Commodore 128 incloïa un Z80 secundari al costat del MOS Technology 8502 principal per poder usar CP/M.
Ja en els anys 1990 el Z80 ha estat usat en les videoconsoles Sega Master System i Sega Game Gear. A més les videoconsoles SNK Neo-Geo i la Sega Mega Drive i moltes màquines arcade usen un Z80 com el processador especialitzat en so.
Les Game Boy i Game Boy Color de Nintendo utilitzen una variant del Z80 fabricada per Sharp.
En l'actualitat, part de la gamma de calculadores gràfiques programables de Texas Instruments com les TU-73 (1998), TU-73 Explorer (2003), TU-82 (només el model de 1999), TU-83 Plus (només models de 1999 i 2001),[6] i les seves successores empren una versió clònica del Z80 fabricada per NEC com a processador principal.
A més el Z80 també és un microprocessador popular per ser usat en sistemes incrustats, camp on s'empra de manera extensiva.
Mostek i SGS van ser segones fonts del Z80 (Mostek MK3880 i SGS Z8400). Sharp i NEC fabriquen clònics del Z80 (Sharp LH-0080 i NEC µPD780C). National Semiconductor va fabricar un processador clònic, el NSC800, amb tecnologia CMOS però que no era compatible pin a pin. Hitachi va fabricar una versió amb tecnologia CMOS millorada, la segona font de la qual va ser curiosament la pròpia Zilog.
A la República Democràtica Alemanya es va produir una versió clònica del Z80 anomenada U880, que va ser emprada en els sistemes informàtics de Robotron i de VEB Mikroelektronik Mühlhausen, així com les sèries KC85 i en molts ordinadors de fabricació casolana.
A Romania es va fabricar una versió clònica del Z80, el MMN80, i que segons algunes fonts va ser també fabricada a la Unió Soviètica, on es van crear diverses còpies del Z80, sent el més conegut el T34. Aquest microprocessador va ser utilitzat en la majoria d'ordinadors fabricats en aquest país, gairebé tots clons dels Sinclair ZX Spectrum: Ice Felix HC85, HC90, HC91, HC2000, Datatim/Universitat Tècnica de Timisoara TIM-S, MicroTIM i MicroTIM+ o els Intreprinderea Electrónica CIP, CIP-02, CIP-03, CIP-04.
Avui en dia existeixen dos nuclis de processador anomenats T80 i TV80 que són funcionalment equivalents al Zilog Z80 i es troben disponibles sota una llicència de tipus BSD. El codi font d'aquests nuclis està disponible tant a Verilog com a VHDL. Una vegada sintetitzada aquesta última versió pot funcionar fins a 35 MHz en una FPGA Xilinx Spartan II.
En l'actualitat la pròpia Zilog fabrica una versió millorada del Z80 anomenada eZ80, que funcionant a 50 MHz té un rendiment similar a un Z80 funcionant a 150 MHz i a més pot adreçar fins a 16 MB de memòria RAM estenent la grandària dels registres, davant dels 64 KB del Z80.
Existeixen dissenys de maquinari actuals que implementen un Z80 dins d'un xip programables programant part del xip perquè compleixi les funcions del Z80.
El Z180 és el successor del Z80. És compatible amb una llarga col·lecció de programari.[7] La família Z180 afegeix majors prestacions i funcions de perifèrics integrats com el generador de rellotge, comptadors/rellotges de 16 bits, controlador d'interrupcions, generadors d'estat d'espera, ports sèrie i un controlador DMA.[8] Usa cicles de lectura i escriptura separats, usant rellotges similars als del Z80 i als processadors Intel.[9] La MMU integrada té la capacitat d'adreçar fins a 1 MB de memòria. És possible configurar el Z180 perquè operi com un Hitachi HD64180.
Xip | Velocitat (MHz) | Rellotges | E/S | Ctrl. comunicacions | Uns altres |
---|---|---|---|---|---|
Z80180 | 6, 8, 10 | 2 | N/S | CPU | 1 MB MMU, 2xDMAs, 2xUARTs |
Z80181 | 10 | 1 | 16 | CPU | 1 MB MMU, 2xDMAs, 2xUARTs |
Z80182 | 16, 33, 20 | 0 | Rellotge sèrie, 24 | ESCC, CSIO, UART | S180 Megacell, 2xESCC channels, 16550 MIMIC |
Z80195 | 20, 33 | 4 | 7/24 | SCC, CSIO, UART | |
Z8L180 | 20 | 2 | Rellotge sèrie | CSIO, UART | 1 MB MMU, 2xDMAs, 2xUARTs, 3.3 V Operation |
Z8L182 | 20 | 0 | Rellotge sèrie | ESCC, CSIO, UART | S180 Megacell, 2x canals ESCC, 16550 MIMIC, operació a 3,3V |
Z8S180 | 10, 20, 33 | 2 | Rellotge sèrie | UART, DMA, I2C, SPI | 1 MB MMU, 2xDMAs, 2xUARTs |
El Z80182 és una versió millorada del Z80 i és part de la família Z180. Se li sobrenomena Controlador de perifèrics intel·ligents de Zilog (ZIP: Zilog Intelligent Peripheral Controller). També és completament estàtic (el rellotge pot ser parat i no es perden dades dels registres) i té una opció de baixa interferència electromagnètica que redueix el slew rate de les sortides.
El Z80182 pot operar a 33 MHz amb un oscil·lador extern operant a 5 volts, o a 20 MHz usant l'oscil·lador intern a 3,3 V.[10]
El HD64180 és un microprocessador basat en el Z80 desenvolupat per Hitachi que inclou una MMU. L'HD64180 Super Z80 va ser posteriorment llicenciat a Zilog i venut amb el nom Z64180 incloent algunes millores com les presents en el Z180.
El Z280 va ser una millora de l'arquitectura Z80 presentada al juliol de 1987. Bàsicament és una versió CMOS lleugerament millorada de l'anterior Z800. Ambdues versions, el Z280 i el Z800, van ser fracassos comercials.[11]
Malgrat ser un microprocessador de 8 bits, el Z80 pot manejar instruccions de 16 bits i pot adreçar fins a 64 KiB de RAM. Una de les característiques més ressenyables és que té les instruccions de l'Intel 8080 com a subconjunt, de manera que alguns ordinadors basats en Z80 podien executar programes dissenyats pel CP/M de l'8080. Això ha fet que els formats d'instrucció del Z80 siguin bastant complexos, ja que han de mantenir la seva compatibilitat amb el 8080. No obstant això el Z80 ha aconseguit millorar al microprocessador d'Intel en velocitat, ha afegit noves maneres d'adreçament i conté un joc d'instruccions més ampli.
L'estructura de registres del Z80 està composta per un banc principal, un altre alternatiu i finalment un banc compost per registres especials.[12] L'existència del banc alternatiu millora la velocitat davant la presència de les interrupcions, ja que permet canviar des del banc principal a l'alternatiu. Els registres són:
Els registres del banc principal són generals i de 8 bits. Es poden prendre per parelles, sent llavors IX i IY els registres índexs. El registre A serveix d'acumulador. El R emmagatzema el bloc de memòria al refresc de la qual es va a procedir. El SP és el punter de cim de pila. El PC és el comptador de programa. El F conté els flags o també anomenats bits de condició.
Registres primaris Registres alternatius +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | A |S Z - A - P N C| F | A' |S Z - A - P N C| F' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | B | C | | B' | C' | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | D | E | | D' | E' | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | H | L | | H' | L' | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Registres índex +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IX | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Punter de pila i Comptador de programa +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SP | Punter de pila +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PC | Comptador de programa +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Registre d'interrupcions i Registre de refresc de memòria +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | I | R | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
El registre utilitzat per guardar la dada que s'està usant. És el registre més important, al costat del registre F (amb el qual forma el parell de registres AF). La majoria de les operacions matemàtiques i lògiques de 8 bits es realitzen a través d'aquest registre, d'aquí la seva importància.
És el parell de registres més versàtil, utilitzat sobretot per contenir adreces de memòria. En el registre simple L es col·loca el byte més baix (LOW en anglès) de l'adreça de memòria, i en H, es col·loca el byte més alt (HIGH en anglès) de l'adreça de memòria. Així mateix, és molt utilitzat per les trucades a subrutines BIOS (CALL) per a dades d'entrada/sortida de la subrutina anomenada. Algunes instruccions Assembler són específiques d'aquest parell de registres.
S'utilitzen com a parells auxiliars d'HL en instruccions que manipulen blocs com LDI, LDIR, etc.
Són 2 registres de 16 bits. S'utilitzen com a registres basi per apuntar a una adreça de memòria d'on es va a prendre una dada. S'indica un byte addicional que implica desplaçament.
Permet l'amidament de rutines. Apunta a una zona de memòria anomenada STACK que és una estructura de pila o LIFO.
Serveix com a conjunt de banderes, que ens indiquen la informació sobre les operacions que s'estan realitzant.[13][14] [15] [16]
Els bits 3 i 5 no s'utilitzen, però certes instruccions els modifiquen, encara que no estan oficialment documentats.
Els pins del Z80. Les línies del bus de direccions es veuen en vermell, les del bus de dades en blau i les del bus de control en color verd.
+--\/--+ <-- A11 1| |40 A10 --> <-- A12 2| |39 A9 --> <-- A13 3| |38 A8 --> <-- A14 4| |37 A7 --> <-- A15 5| |36 A6 --> --> CLK 6| |35 A5 --> <-> D4 7| |34 A4 --> <-> D3 8| |33 A3 --> <-> D5 9| Z80 |32 A2 --> <-> D6 10| |31 A1 --> +5V Vcc 11| |30 A0 --> <-> D2 12| |29 GND <-> D7 13| |28 !RFSH --> <-> D0 14| |27 !M1 --> <-> D1 15| |26 !RESET <-- --> !INT 16| |25 !BUSRQ <-- --> !NMI 17| |24 !WAIT <-- <-- !HALT 18| |23 !BUSAK --> <-- !MREQ 19| |22 !WR --> <-- !IORQ 20| |21 !RD --> +------+