De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Pinout del paquete de chips DIP40 original del Z80

El Z80 es un microprocesador de 8 bits presentado por Zilog como el primer producto de la empresa emergente . El Z80 fue concebido por Federico Faggin a finales de 1974 y desarrollado por él y sus 11 empleados a principios de 1975. Las primeras muestras de trabajo se entregaron en marzo de 1976 y se introdujo oficialmente en el mercado en julio de 1976. Con los ingresos del Z80, la compañía construyó sus propias fábricas de chips y creció a más de mil empleados durante los dos años siguientes. [3]

El Zilog Z80 es una extensión y mejora compatible con el software del Intel 8080 y, al igual que este, estaba dirigido principalmente a sistemas integrados . Aunque se usó en esa función, la Z80 también se convirtió en una de las CPU más utilizadas en computadoras de escritorio y computadoras domésticas desde la década de 1970 hasta mediados de la década de 1980. [4] [5] También era común en aplicaciones militares, equipos musicales como sintetizadores (como el Roland Jupiter-8 ) y juegos de arcade operados con monedas de finales de la década de 1970 y principios de la de 1980, incluido Pac-Man .

Zilog concedió la licencia del Z80 a Synertek y Mostek , con sede en EE. UU. , Que les habían ayudado con la producción inicial, así como a un fabricante europeo de segunda fuente , SGS . El diseño también fue copiado por varios fabricantes japoneses, de Europa del Este y soviéticos. [i] Esto ganó la aceptación del Z80 en el mercado mundial desde que grandes empresas como NEC , Toshiba , Sharp e Hitachi comenzaron a fabricar el dispositivo (o sus propios diseños o clones compatibles con Z80).

En las últimas décadas, Zilog se ha reorientado en el mercado en constante crecimiento de sistemas integrados y la familia de microcontroladores más reciente compatible con Z80 , el eZ80 de 24 bits totalmente canalizado con un rango de direcciones lineales de 16  MB , se ha introducido con éxito junto con los más simples Z80 y Z180. productos.

Historia [ editar ]

Un anuncio de mayo de 1976 para el microprocesador Zilog Z-80 de 8 bits
Foto del diseño del microprocesador Zilog Z80 original en nMOS de carga de agotamiento . El tamaño total de la matriz es 3545 × 3350 μm. (Este chip real se fabricó en 1990).
Un CMOS Z80 en un paquete plano cuádruple

El Z80 surgió cuando el físico Federico Faggin dejó Intel a finales de 1974 para fundar Zilog con Ralph Ungermann  [ it ] . En Fairchild Semiconductor , y más tarde en Intel, Faggin había estado trabajando en tecnología fundamental de fabricación de transistores y semiconductores . También desarrolló la metodología de diseño básica utilizada para memorias y microprocesadores en Intel y dirigió el trabajo en Intel 4004 , 8080 y varios otros circuitos integrados. Masatoshi Shima , el principal diseñador de niveles de lógica y transistores del 4004 y el 8080 bajo la supervisión de Faggin, se unió al equipo de Zilog.

Según los diseñadores, los objetivos principales de la CPU Z80 (y su soporte opcional y circuitos integrados periféricos [ii] ) eran productos como terminales inteligentes , impresoras de alta gama y cajas registradoras avanzadas , así como equipos de telecomunicaciones , robots industriales y otros tipos de automatización. equipo.

En marzo de 1976, Zilog había desarrollado el Z80, así como un sistema de desarrollo basado en ensamblador para sus clientes, y en julio de 1976, se lanzó formalmente al mercado. [6] Algunos de los circuitos integrados periféricos y de soporte de Z80 estaban en desarrollo en este momento, y muchos de ellos se lanzaron durante el año siguiente.

Los primeros Z80 fueron fabricados por Synertek y Mostek, antes de que Zilog tuviera su propia fábrica lista, a finales de 1976. Estas empresas fueron elegidas porque podían realizar la implantación de iones necesaria para crear los MOSFET en modo de agotamiento que el diseño del Z80 utilizaba como transistores de carga en para hacer frente a una sola fuente de alimentación de 5 voltios. [iii]

Faggin diseñó el conjunto de instrucciones para que sea binario compatible con Intel 8080 [7] [8] de modo que la mayoría del código 8080, en particular el sistema operativo CP / M y el compilador PL / M de Intel para 8080 (así como su código generado), funcionar sin modificaciones en la nueva CPU Z80. Masatoshi Shima diseñó la mayor parte de la microarquitectura , así como los niveles de puerta y transistor de la CPU Z80, con la ayuda de un pequeño número de ingenieros y personal de diseño . [9] [10]El CEO Federico Faggin estuvo muy involucrado en el trabajo de diseño del chip, junto con dos personas dedicadas al diseño. Según Faggin, trabajó 80 horas a la semana para cumplir con el apretado calendario que le dieron los inversores financieros. [11]

El Z80 ofreció muchas mejoras sobre el 8080: [8]

  • Un conjunto de instrucciones mejorado [12] que incluye direccionamiento de un solo bit, cambios / rotaciones en la memoria y registros distintos del acumulador , instrucciones de rotación para cadenas de números BCD en la memoria, bucle de programa, saltos relativos del contador de programa, copia de bloque, entrada / salida de bloque ( E / S) e instrucciones de búsqueda de bytes. [13] El Z80 incorporó una bandera de desbordamiento y tenía mejor soporte para aritmética firmada de 8 y 16 bits. [iv]
  • Nueva IX e IY registros de índice con instrucciones para su directa base + offset de direccionamiento
  • Un mejor sistema de interrupciones
    • A más automática y general sistema de interrupción vectorizado , modo 2 , destinado principalmente a la línea de Zilog de temporizadores, controladores de contadores / DMA y de comunicaciones, así como un vector fijo de interrupción del sistema, el modo 1 , para sistemas simples con hardware mínimo (con modo de 0 ser el modo compatible con 8080). [14]
    • Una interrupción no enmascarable (NMI) que se puede usar para responder a situaciones de apagado u otros eventos de alta prioridad (y que permite que un sistema Z80 minimalista implemente fácilmente un esquema de interrupción de dos niveles en el modo 1 ).
    • Dos archivos de registro separados , que podrían cambiarse rápidamente, para acelerar la respuesta a interrupciones , como controladores de eventos asíncronos rápidos o un despachador multitarea . Aunque no estaban pensados ​​como registros adicionales para el código general, se usaron de esa manera en algunas aplicaciones. [v]
  • Se requiere menos hardware para la fuente de alimentación , la generación de reloj y la interfaz a la memoria y E / S
    • Fuente de alimentación única de 5 voltios ( el 8080 necesitaba -5 V / + 5 V / + 12 V ).
    • Reloj monofásico de 5 voltios ( el 8080 necesitaba un reloj bifásico no superpuesto de alta amplitud (9 a 12 voltios) ).
    • Un mecanismo de actualización de DRAM incorporado que, de lo contrario, tendría que ser proporcionado por circuitos externos, a menos que en lugar de DRAM, se usara una SRAM más cara (pero más rápida). [vi]
    • Buses no multiplexados (el 8080 tenía señales de estado multiplexadas en el bus de datos).
  • Una función de reinicio especial que borra solo el contador del programa para que una sola CPU Z80 pueda usarse en un sistema de desarrollo como un emulador en circuito . [15]

El Z80 reemplazó al 8080 y su descendiente, el 8085 , en el mercado de los procesadores, [16] y se convirtió en una de las CPU de 8 bits más populares. [4] [5] Zilog fue unos años más tarde que Intel (con su 80C85) para producir una CPU CMOS de bajo consumo, y esto dio como resultado que el chip Intel apareciera por primera vez en uso con computadoras portátiles a batería, como Tandy. / La computadora portátil TRS-80 Modelo 100 de Radio Shack de abril de 1983, que fue diseñada y construida por Kyocera y también vendida por Kyocera, Olivetti y NEC en varias variaciones de diseño con diferentes nombres. En los años siguientes, sin embargo, el CMOS Z80 dominaría este mercado.

Algunas organizaciones, como British Telecom , se mantuvieron fieles al 8085 para aplicaciones integradas debido a su familiaridad con él y a su soporte en chip para una interfaz en serie y una arquitectura de interrupción multinivel. Quizás una clave del éxito inicial del Z80 fue la actualización de DRAM incorporada y otras características que permitieron que los sistemas se construyeran con menos chips de soporte ( los sistemas integrados Z80 generalmente usan RAM estática y, por lo tanto, no necesitan esta actualización).

Para el diseño NMOS original , el límite de frecuencia de reloj superior especificado aumentó sucesivamente desde los 2.5 MHz introductorios  , a través del conocido 4 MHz (Z80A), hasta 6 (Z80B) y 8 MHz (Z80H). [17] [18] La versión NMOS se ha producido como una pieza de 10 MHz desde finales de la década de 1980. Las versiones CMOS se desarrollaron con límites de frecuencia superior especificados que van desde 4 MHz hasta 20 MHz para la versión vendida hoy. Las versiones CMOS permitían el modo de espera de bajo consumo con el estado interno retenido, sin límite de frecuencia inferior . [vii] Los derivados totalmente compatibles HD64180 / Z180 [19] [20] y eZ80 se especifican actualmente para hasta 33 y 50 MHz respectivamente.

Diseño [ editar ]

Modelo de programación y conjunto de registros [ editar ]

Un diagrama de bloques aproximado del Z80. No hay un sumador dedicado para desplazamientos ni un incrementador separado para R, y no se necesita más de un único registro temporal WZ de 16 bits (aunque los pestillos de incremento también se utilizan como un registro temporal de 16 bits, en otros contextos). Son los registros de PC e IR los que se colocan en un grupo separado, con un segmento de bus desmontable, para permitir actualizaciones de estos registros en paralelo con el banco de registros principal. [21]

El modelo de programación y el conjunto de registros del Z80 son bastante convencionales y, en última instancia, se basan en la estructura de registro del Datapoint 2200 . El Z80 fue diseñado como una extensión del Intel 8080, creado por los mismos ingenieros, que a su vez fue una extensión del 8008 . El 8008 era básicamente una implementación PMOS de la CPU basada en TTL del Datapoint 2200. [viii]

El diseño 2200 permitía emparejar registros H y L de 8 bits (alto y bajo) en un registro de direcciones HL de 16 bits. [ix] En el 8080, este emparejamiento se agregó también a los pares BC y DE, mientras que HL se generalizó para permitir su uso como un acumulador de 16 bits, no solo como un registro de direcciones. El 8080 también introdujo el importante modo de datos inmediatos de 8 bits para operaciones de acumuladores y datos inmediatos de 16 bits para cargas HL, BC y DE. Además, ahora era posible la copia directa de 16 bits entre HL y la memoria, utilizando una dirección directa.

El Z80 ortogonalizó esto aún más al hacer que todos los pares de registros de 16 bits, incluidos IX e IY, fueran de uso más general, además de permitir la copia de 16 bits directamente hacia y desde la memoria para todos estos pares. Los registros IX e IY de 16 bits en el Z80 están pensados ​​principalmente como registros de direcciones base, donde una instrucción en particular proporciona un desplazamiento constante que se agrega a los valores anteriores, pero también se pueden utilizar como acumuladores de 16 bits, entre otras cosas. . El Z80 también introdujo un nuevo indicador de desbordamiento firmado y complementó la aritmética de 16 bits bastante simple del 8080 con instrucciones dedicadas para aritmética de 16 bits firmada .

Los registros AF, BC, DE, HL compatibles con 8080 se duplican como dos bancos separados en el Z80, [22] donde el procesador puede cambiar rápidamente de un banco a otro; [23] una función útil para acelerar las respuestas a interrupciones de alta prioridad de un solo nivel. Una característica similar estaba presente en el 2200, pero nunca se implementó en Intel. El conjunto de registro dual es muy útil en el rol integrado, ya que mejora el rendimiento del manejo de interrupciones, pero encontró un uso generalizado en el rol de computadora personal como un conjunto adicional de registros generales para código complejo como aritmética de punto flotante o juegos de computadora domésticos.

Registros [ editar ]

Al igual que en el 8080, los registros de 8 bits suelen estar emparejados para proporcionar versiones de 16 bits. Los registros compatibles con 8080 [24] son:

  • AF: Acumulador de 8 bits (A) y bit de bandera (F) acarreo, cero, menos, paridad / desbordamiento, medio acarreo (usado para BCD ) y un indicador de suma / resta (generalmente llamado N) también para BCD
  • BC: Registro de datos / direcciones de 16 bits o dos registros de 8 bits
  • DE: Registro de datos / direcciones de 16 bits o dos registros de 8 bits
  • HL: Acumulador de 16 bits / registro de direcciones o dos registros de 8 bits
  • SP: puntero de pila , 16 bits
  • PC: contador de programa, 16 bits

Los nuevos registros introducidos con el Z80 son:

  • IX: Índice de 16 bits o registro base para compensaciones inmediatas de 8 bits
  • IY: Índice de 16 bits o registro base para compensaciones inmediatas de 8 bits
  • I: registro base de vector de interrupción, 8 bits
  • R: Contador de actualización de DRAM, 8 bits ( msb no cuenta)
  • AF': acumulador alternativo (o sombra) y banderas ( activadas y desactivadas con EX AF, AF ' )
  • BC', DE'y HL': registros alternativos (o sombra) ( activados y desactivados con EXX )
  • Cuatro bits de estado de interrupción y estado de modo de interrupción

No hay acceso directo a los registros alternos; en cambio, dos instrucciones especiales, EX AF,AF'y EXX, [24] cada una alterna uno de los dos flip-flops del multiplexor . Esto permite cambios de contexto rápidos para las rutinas de servicio de interrupción: EX AF, AF'puede usarse solo, para rutinas de interrupción realmente simples y rápidas, o junto con EXXpara intercambiar todo el conjunto BC, DE, HL. Esto sigue siendo varias veces más rápido que insertar los mismos registros en la pila . Sin embargo, las interrupciones más lentas, de menor prioridad o de niveles múltiples normalmente usan la pila para almacenar registros.

El registro de actualización , R, incrementa cada vez que la CPU trae un código de operación (o prefijo de código de operación) y no tiene relación simple con la ejecución del programa. Esto se ha utilizado a veces para generar números pseudoaleatorios en juegos y también en esquemas de protección de software. [ cita requerida ] También se ha empleado como contador de "hardware" en algunos diseños; un ejemplo de esto es el ZX81 , que le permite realizar un seguimiento de las posiciones de los personajes en la pantalla del televisor activando una interrupción en la vuelta (conectando INT a A6).

El registro de vector de interrupción , I, se utiliza para los Z80 modo específico 2 interrupciones (seleccionados por la IM 2instrucción). Proporciona el byte alto de la dirección base para una tabla de 128 entradas de direcciones de rutina de servicio que se seleccionan mediante un índice enviado a la CPU durante un ciclo de reconocimiento de interrupciones ; este índice es simplemente la parte de byte bajo del puntero a la dirección indirecta tabulada que apunta a la rutina de servicio. [14] El puntero identifica un chip periférico en particular o una función o evento periférico, donde los chips normalmente están conectados en una llamada cadena tipo margarita.para resolución prioritaria. Al igual que el registro de actualización, este registro también se ha utilizado a veces de forma creativa; en los modos de interrupción 0 y 1 (o en un sistema que no usa interrupciones) puede usarse simplemente como otro registro de datos de 8 bits.

Las instrucciones LD A,Ry LD A,Iafectan a los indicadores del Z80 se registran, a diferencia de todas las demás LDinstrucciones (de carga). Los indicadores de signo (bit 7) y cero (bit 6) se establecen de acuerdo con los datos cargados desde los registros de fuente de actualización o interrupción. Para ambas instrucciones, el indicador de paridad / desbordamiento (bit 2) se establece de acuerdo con el estado actual del flip-flop IFF2. [25]

Lenguaje ensamblador Z80 [ editar ]

Datapoint 2200 e Intel 8008 [ editar ]

El primer lenguaje ensamblador Intel 8008 se basó en una sintaxis muy simple (pero sistemática) heredada del diseño de Datapoint 2200. Esta sintaxis original se transformó más tarde en una nueva forma de lenguaje ensamblador, algo más tradicional, para este mismo chip 8008 original. Aproximadamente al mismo tiempo, el nuevo lenguaje ensamblador también se extendió para acomodar las posibilidades de direccionamiento adicionales en el chip Intel 8080 más avanzado (el 8008 y el 8080 compartían un subconjunto de idioma sin ser compatible con binarios ; sin embargo, el 8008 era compatible con binarios con Datapoint 2200).

En este proceso, el mnemónico L, para LOAD , fue reemplazado por varias abreviaturas de las palabras LOAD , STORE y MOVE , entremezcladas con otras letras simbólicas. La letra mnemotécnica M, para memoria (referenciada por HL), se extrajo de la instrucción mnemotécnica para convertirse en un operando sintácticamente independiente , mientras que los registros y combinaciones de registros se denotaron de manera muy inconsistente; ya sea por operandos abreviados (MVI D, LXI H y así sucesivamente), dentro del mnemónico de instrucción en sí (LDA, LHLD y así sucesivamente), o ambos al mismo tiempo (LDAX B, STAX D y así sucesivamente).

Ilustración de cuatro sintaxis, usando ejemplos de instrucciones de carga y almacenamiento equivalentes o (para 8086) muy similares. [26] La sintaxis Z80 usa paréntesis alrededor de una expresión para indicar que el valor debe usarse como una dirección de memoria (como se menciona a continuación), mientras que la sintaxis 8086 usa corchetes en lugar de paréntesis ordinarios para este propósito. Tanto Z80 como 8086 usan el signo + para indicar que se agrega una constante a un registro base para formar una dirección

Nueva sintaxis [ editar ]

Debido a que Intel reclamó derechos de autor sobre sus mnemónicos de ensamblaje, [27] se tuvo que desarrollar una nueva sintaxis de ensamblaje para el Z80. Esta vez se utilizó un enfoque más sistemático:

  • Todos los registros y pares de registros se indican explícitamente con sus nombres completos.
  • Los paréntesis se usan consistentemente para indicar "contenido de memoria en" (dirección constante o desreferenciación de puntero variable) con la excepción de algunas instrucciones de salto. [28]
  • Todas las instrucciones de carga y almacenamiento usan el mismo nombre mnemónico, LD, para LOAD (un regreso al vocabulario simplista de Datapoint 2200); otras instrucciones comunes, como ADD e INC, usan el mismo mnemónico sin importar el modo de direccionamiento o el tamaño del operando. Esto es posible porque los propios operandos contienen suficiente información.

Estos principios simplificaron la búsqueda de nombres y formas para todas las nuevas instrucciones Z80, así como ortogonalizaciones de las antiguas, como LD BC,(1234).

Aparte de las diferencias en los nombres, y a pesar de una cierta discrepancia en la estructura básica de los registros, la sintaxis de Z80 y 8086 son virtualmente isomórficas para una gran parte de las instrucciones. Solo existen similitudes bastante superficiales (como la palabra MOV, o la letra X, para registro extendido) entre los lenguajes ensambladores 8080 y 8086, aunque los programas 8080 pueden ser traducidos al lenguaje ensamblador 8086 por programas de traducción . [29] [30]

Conjunto de instrucciones y codificación [ editar ]

El Z80 usa 252 de los 256 códigos disponibles como códigos de operación de un solo byte ("instrucción raíz"); los cuatro códigos restantes se utilizan ampliamente como prefijos de código de operación : [31] CB y ED permiten instrucciones adicionales, y DD o FD seleccionan IX + do IY + d respectivamente (en algunos casos sin desplazamiento d) en lugar de HL. Este esquema le da al Z80 una gran cantidad de permutaciones de instrucciones y registros; Zilog los clasifica en 158 "tipos de instrucciones" diferentes, 78 de los cuales son los mismos que los del Intel 8080 [31] (permitiendo el funcionamiento de la mayoría de los programas 8080 en un Z80). La documentación de Zilog agrupa las instrucciones en las siguientes categorías:

  • Operaciones lógicas y aritméticas de 8 bits
  • Aritmética de 16 bits
  • Carga de 8 bits
  • Carga de 16 bits
  • Conjunto de bits, restablecimiento y prueba
  • Llamar, regresar y reiniciar
  • Intercambio, transferencia en bloque y búsqueda
  • Control de CPU y aritmética de propósito general
  • Entrada y salida
  • Saltar
  • Girar y cambiar

No hay instrucciones de multiplicación disponibles en el Z80 original. [32] Diferentes tamaños y variantes de adiciones, cambios y rotaciones tienen efectos algo diferentes en las banderas porque la mayoría de las propiedades de cambio de bandera del 8080 fueron copiadas. Sin embargo, el bit P del indicador de paridad del 8080 (bit 2) se llama P / V (paridad / desbordamiento) en el Z80, ya que cumple el propósito adicional de un indicador de desbordamiento de complemento a dos, una característica que falta en el 8080. Instrucciones aritméticas sobre el Z80 lo configuró para indicar desbordamiento en lugar de paridad, mientras que las instrucciones bit a bit aún lo usan como indicador de paridad. Este nuevo indicador de desbordamiento se utiliza para todas las operaciones de 16 bits nuevo Z80-específicos ( ADC, SBC) así como para 8 bits operaciones aritméticas, aunque las operaciones de 16 bits heredadas del 8080 ( ADD, INC,DEC) no lo afectan. Además, el bit 1 del registro de banderas (un bit de reserva en el 8080) se usa como una bandera, N, que indica si la última instrucción aritmética ejecutada fue una resta o una suma. La versión Z80 de la DAAinstrucción (Acumulador de ajuste decimal para aritmética BCD) verifica el indicador N y se comporta en consecuencia, por lo que una resta (hipotética) seguida más tarde DAAproducirá un resultado diferente en un 8080 antiguo que en el Z80. Sin embargo, esto probablemente sería un código erróneo en el 8080, como DAAse definió para agregar solo en ese procesador.

El Z80 tiene seis nuevas LDinstrucciones que pueden cargar los pares de registros DE, BC y SP desde la memoria y cargar la memoria desde estos tres pares de registros, a diferencia del 8080. [33] Como en el 8080, las instrucciones de carga no afectan los indicadores ( excepto para las cargas de registro I y R de propósito especial). Un resultado de una codificación regular (común con el 8080) es que cada uno de los registros de 8 bits se puede cargar desde sí mismos (p LD A,A. Ej .). Esto es efectivamente un NOP.

Las nuevas instrucciones de transferencia en bloque pueden mover hasta 64 kilobytes de memoria a memoria o entre la memoria y los puertos periféricos de E / S. Las instrucciones de bloque LDIRy LDDR(LoaD, Increment / Decrement, Repeat) usan HL para apuntar a la dirección de origen, DE a la dirección de destino y BC como contador de bytes. Los bytes se copian del origen al destino, los punteros aumentan o disminuyen y el contador de bytes disminuye hasta que BC llega a cero. Versiones que no se repiten LDIy LDDmueven un solo byte y golpean los punteros y el contador de bytes, que si se vuelve cero restablece el indicador P / V. Correspondiente a la memoria de E / S instrucciones INIR, INDR, OTIR, OTDR, INI, IND, OUTIyOUTDoperar de manera similar. El Z80 puede ingresar y enviar cualquier registro a un puerto de E / S usando el registro C para designar el puerto (el 8080 solo realiza E / S a través del acumulador A).

El último grupo de instrucciones de bloque realiza una CPoperación de comparación entre el byte en (HL) y el acumulador A. El par de registros DE no se utiliza. Las versiones repetidas CPIRy CPDRsolo terminan si BC llega a cero o se encuentra una coincidencia. HL se deja apuntando al byte después ( CPIR) o antes ( CPDR) del byte correspondiente. Si no se encuentra ninguna coincidencia, la bandera Z se reinicia. Hay versiones no repetidas CPIy CPD.

A diferencia del 8080, el Z80 puede saltar a una dirección relativa (en JRlugar de JP) utilizando un desplazamiento de 8 bits con signo. Solo los indicadores Zero y Carry pueden probarse para estas nuevas JRinstrucciones de dos bytes . Una instrucción de dos bytes especializada para el bucle de programas también es nueva en el Z80. DJNZ(Decrementar salto si no es cero) toma un desplazamiento de 8 bits con signo como operando inmediato. El registro B se reduce. Si el resultado es distinto de cero, la ejecución del programa salta en relación con la dirección de la PC más el desplazamiento. Las banderas permanecen inalteradas. Realizar un bucle equivalente en un 8080 requeriría instrucciones separadas de decremento y salto (a una dirección absoluta de dos bytes), y el registro de banderas se alteraría.

Las instrucciones del registro de índice (IX / IY, a menudo abreviado XY) pueden ser útiles para acceder a datos organizados en estructuras heterogéneas fijas (como registros ) o en desplazamientos fijos relativos a una dirección base variable (como en marcos de pila recursivos ) y también pueden reducir el código. size eliminando la necesidad de múltiples instrucciones breves utilizando registros no indexados. Sin embargo, aunque pueden ahorrar velocidad en algunos contextos en comparación con secuencias "equivalentes" largas / complejas de operaciones más simples, implican una gran cantidad de tiempo adicional de CPU ( por ejemplo, 19 estados T para acceder a una ubicación de memoria indexada frente a tan solo 11 para acceder a la misma memoria usando HL yINCpara apuntar al siguiente). Por lo tanto, para accesos de datos simples o lineales, el uso de IX e IY tiende a ser más lento y ocupa más memoria. Aún así, pueden ser útiles en los casos en los que los registros "principales" están ocupados, al eliminar la necesidad de guardar / restaurar registros. Sus mitades de 8 bits oficialmente indocumentadas (ver más abajo) pueden ser especialmente útiles en este contexto, ya que incurren en menos ralentización que sus padres de 16 bits. De manera similar, las instrucciones para adiciones de 16 bits no son particularmente rápidas (11 relojes) en el Z80 original; no obstante, son aproximadamente el doble de rápido que realizar los mismos cálculos utilizando operaciones de 8 bits, e igualmente importante, reducen el uso de registros. No era raro que los programadores "insertaran" diferentes bytes de desplazamiento de desplazamiento (normalmente calculados dinámicamente) en instrucciones indexadas; Esto es un ejemplo decódigo de modificación automática que era una práctica habitual en casi todos los primeros procesadores de 8 bits con unidades de ejecución sin canalización .

Los registros de índice tienen una instrucción paralela a JP (HL), que es JP (XY). Esto se ve a menudo en lenguajes orientados a pilas como Forth, que al final de cada palabra Forth (subrutinas atómicas que componen el lenguaje) deben saltar incondicionalmente a sus rutinas de intérprete de hilos. Por lo general, esta instrucción de salto aparece muchos cientos de veces en una aplicación, y usar en JP (XY)lugar de JP THREADguardar un byte y dos estados t en cada ocurrencia. Esto, naturalmente, hace que el registro de índice no esté disponible para ningún otro uso, o de lo contrario la necesidad de recargarlo constantemente anularía su eficiencia.

El diseño Z180 microcodificado de 10 años más nuevo inicialmente podría permitir más "área de chip", permitiendo una implementación un poco más eficiente (utilizando una ALU más amplia , entre otras cosas); Se pueden decir cosas similares de los modelos Z800 , Z280 y Z380 . Sin embargo, no fue hasta que se lanzó el eZ80 en 2001 que esas instrucciones finalmente se volvieron aproximadamente tan eficientes en ciclo como es técnicamente posible hacerlas, es decir, dadas las codificaciones Z80 combinadas con la capacidad de hacer una lectura o lectura de 8 bits. escribe cada ciclo de reloj. [ cita requerida ]

Instrucciones sin documentar [ editar ]

Los registros de índice, IX e IY, fueron pensados ​​como punteros flexibles de 16 bits, mejorando la capacidad de manipular la memoria, los marcos de pila y las estructuras de datos. Oficialmente, se trataron solo como de 16 bits. En realidad, se llevaron a cabo como un par de registros de 8 bits, [34] de la misma manera como el registro HL, que es accesible, ya sea como 16 bits o por separado como el H igh y L ow registros. Los códigos de operación binarios (lenguaje de máquina) eran idénticos, pero precedidos por un nuevo prefijo de código de operación. [35]Zilog publicó los códigos de operación y los mnemónicos relacionados para las funciones previstas, pero no documentó el hecho de que cada código de operación que permitía la manipulación de los registros H y L era igualmente válido para las porciones de 8 bits de los registros IX e IY. Por ejemplo, el código de operación 26h seguido de un valor de byte inmediato (LD H,n)cargará ese valor en el registro H. Si precede a esta instrucción de dos bytes con el prefijo de código de operación del registro IX, DD, en cambio, los 8 bits más significativos del registro IX se cargarían con ese mismo valor. Una excepción notable a esto serían las instrucciones similares a las LD H,(IX+d)que hacen uso de los registros HL y IX o IY en la misma instrucción; [35]en este caso, el prefijo DD solo se aplica a la parte (IX + d) de la instrucción. Las mitades de los registros XY también podrían contener operandos para instrucciones aritméticas, lógicas y de comparación de 8 bits, dejando los registros normales de 8 bits para otros usos. La capacidad indocumentada de incrementar y disminuir la mitad superior de un registro de índice facilitó la expansión del rango de las instrucciones indexadas normales, sin tener que recurrir a las instrucciones legales ADD/SBC XY,DEo ADD/SBC XY,BC.

También hay varias otras instrucciones indocumentadas. [36] Los códigos de operación ilegales o indocumentados no son detectados por el Z80 y tienen varios efectos, algunos de los cuales son útiles. Sin embargo, como no forman parte de la definición formal del conjunto de instrucciones, no se garantiza que las diferentes implementaciones del Z80 funcionen de la misma manera para cada código de operación no documentado.

Errores [ editar ]

La OTDRinstrucción no se ajusta a la documentación del Z80. Tanto los OTDRy OTIRlas instrucciones se supone que deben abandonar el acarreo (C) de la bandera sin modificar. La OTIRinstrucción funciona correctamente; sin embargo, durante la ejecución de la OTDRinstrucción, la bandera de acarreo toma los resultados de una comparación falsa entre el acumulador (A) y la última salida de la OTDRinstrucción. [ cita requerida ]

Código de ejemplo [ editar ]

El siguiente código fuente en lenguaje ensamblador Z80 es para una subrutina nombrada memcpyque copia un bloque de bytes de datos de un tamaño dado de una ubicación a otra. Importante: el código de ejemplo no maneja el caso donde el bloque de destino se superpone al origen; una limitación seria, pero que es irrelevante para algunas aplicaciones, como, especialmente, cuando la fuente está en la ROM y el destino en la RAM, por lo que nunca pueden superponerse. El código de muestra es extremadamente ineficiente y está destinado a ilustrar varios tipos de instrucciones, en lugar de las mejores prácticas para la velocidad. El bloque de datos se copia un byte a la vez, y el movimiento de datos y la lógica de bucle utilizan operaciones de 16 bits. Además, el Z80 tiene una sola instrucción que ejecutará todo el ciclo (LDIR). Tenga en cuenta que el código ensamblado es binario compatible con las CPU Intel 8080 y 8085.

Ejecución de instrucciones [ editar ]

Cada instrucción se ejecuta en pasos que generalmente se denominan ciclos de máquina ( ciclos M), cada uno de los cuales puede tomar entre tres y seis períodos de reloj (ciclos T). [37] Cada ciclo M corresponde aproximadamente a un acceso a la memoria o una operación interna. Muchas instrucciones terminan realmente durante el M1 de la siguiente instrucción, lo que se conoce como superposición de búsqueda / ejecución .

Los ciclos de la máquina Z80 son secuenciados por una máquina de estado interna que construye cada ciclo M a partir de 3, 4, 5 o 6 ciclos T según el contexto. Esto evita una lógica asincrónica engorrosa y hace que las señales de control se comporten de forma coherente en una amplia gama de frecuencias de reloj. También significa que debe usarse un cristal de frecuencia más alta que sin esta subdivisión de ciclos de máquina (aproximadamente 2 a 3 veces mayor). No implica requisitos más estrictos en los tiempos de acceso a la memoria , ya que un reloj de alta resolución permite un control más preciso de los tiempos de la memoria y, por lo tanto, la memoria puede estar activa en paralelo con la CPU en mayor medida, lo que permite un uso más eficiente del ancho de banda de memoria disponible. [ cita requerida ]

Un ejemplo central de esto es que, para la búsqueda de código de operación , el Z80 combina dos ciclos de reloj completos en un período de acceso a la memoria (la señal M1). En el Z80, esta señal dura una parte relativamente mayor del tiempo de ejecución de instrucción típico que en un diseño como el 6800 , 6502 o similar, donde este período duraría típicamente del 30 al 40% de un ciclo de reloj. [ cita requerida ] Con la asequibilidad del chip de memoria (es decir, tiempos de acceso de alrededor de 450-250 ns en la década de 1980 [ cita requerida ] ) que generalmente determinaba el tiempo de acceso más rápido posible, esto significaba que dichos diseños estaban bloqueados a un ciclo de reloj significativamente más largo (es decir, menor velocidad de reloj) que el Z80.

La memoria era generalmente lenta en comparación con los subciclos de la máquina de estado (ciclos de reloj) utilizados en los microprocesadores contemporáneos. Por lo tanto, el ciclo de máquina más corto que podría usarse de manera segura en diseños integrados a menudo ha estado limitado por los tiempos de acceso a la memoria, no por la frecuencia máxima de la CPU (especialmente durante la era de la computadora doméstica). Sin embargo, esta relación ha cambiado lentamente durante las últimas décadas, particularmente en lo que respecta a SRAM ; Por lo tanto, los diseños de ciclo único sin caché, como el eZ80, se han vuelto mucho más significativos recientemente.

El contenido del registro de actualización R se envía a la mitad inferior del bus de direcciones junto con una señal de control de actualización mientras la CPU está decodificando y ejecutando la instrucción obtenida. Durante la actualización, el contenido del registro de interrupción I se envía a la mitad superior del bus de direcciones. [44]

Periféricos compatibles [ editar ]

Zilog introdujo una serie de piezas periféricas para el Z80, que son compatibles con el sistema de manejo de interrupciones y el espacio de direcciones de E / S del Z80. Estos incluyen el Canal Contador / Temporizador (CTC), [45] el SIO (Entrada Salida en Serie), el DMA (Acceso Directo a Memoria), el PIO (Entrada-Salida Paralelo) y el DART (Transmisor Receptor Asíncrono Dual). A medida que se desarrolló la línea de productos, se introdujeron versiones CMOS de baja potencia, alta velocidad y de estos chips.

  • PIO Z84C2008

  • CTC Z84C3008

  • SIO Z84C4008

Al igual que los procesadores 8080, 8085 y 8086, pero a diferencia de los procesadores Motorola 6800 y MOS Technology 6502, el Z80 y el 8080 tienen una línea de control separada y un espacio de direcciones para las instrucciones de E / S. Mientras que algunas computadoras basadas en Z80, como la Osborne 1, usaban dispositivos de entrada / salida mapeados en memoria "estilo Motorola" , generalmente el espacio de E / S se usaba para abordar uno de los muchos chips periféricos Zilog compatibles con la Z80. Los chips de E / S Zilog admitían el nuevo modo 2 de interrupciones del Z80, que simplificaba el manejo de interrupciones para una gran cantidad de periféricos.

El Z80 fue descrito oficialmente como compatible con direccionamiento de memoria de 16 bits (64 KB) y direccionamiento de E / S de 8 bits (256 puertos). Todas las instrucciones de E / S afirman realmente todo el bus de direcciones de 16 bits. OUT (C), reg y IN reg, (C) coloca el contenido de todo el registro BC de 16 bits en el bus de direcciones; [46] OUT (n), A e IN A, (n) coloca el contenido del registro A en b8-b15 del bus de direcciones yn en b0-b7 del bus de direcciones. Un diseñador puede optar por decodificar todo el bus de direcciones de 16 bits en las operaciones de E / S para aprovechar esta función, o utilizar la mitad superior del bus de direcciones para seleccionar subfunciones del dispositivo de E / S. Esta función también se ha utilizado para minimizar los requisitos de hardware de decodificación, como en Amstrad CPC / PCW y ZX81 .

Segundas fuentes y derivados [ editar ]

Segundas fuentes [ editar ]

Mostek, que produjo el primer Z80 para Zilog, lo ofreció como segunda fuente como MK3880. SGS-Thomson (ahora STMicroelectronics ) también fue una segunda fuente con su Z8400. Sharp y NEC desarrollaron segundas fuentes para NMOS Z80, LH0080 y μPD780C , respectivamente. El LH0080 se utilizó en varios ordenadores domésticos y personales fabricados por Sharp y otros fabricantes japoneses, incluidos los ordenadores Sony MSX y varios ordenadores de la serie Sharp MZ . [47]

Toshiba fabricó una versión CMOS, la TMPZ84C00, que se cree [¿ por quién? ] (pero no verificado) para ser el mismo diseño que también utiliza Zilog para su propio CMOS Z84C00. También había chips Z80 fabricados por GoldStar (ahora LG ) y la serie BU18400 de clones Z80 (incluidos DMA, PIO, CTC, DART y SIO) en NMOS y CMOS fabricados por ROHM Electronics .

En Alemania Oriental , se fabricó un clon sin licencia del Z80, conocido como U880 . Fue muy popular y se utilizó en los sistemas informáticos de Robotron y VEB Mikroelektronik Mühlhausen (como la serie KC85 ) y también en muchos sistemas informáticos de fabricación propia. En Rumania, se pudo encontrar otro clon sin licencia, llamado MMN80CPU y producido por Microelectronica , utilizado en computadoras domésticas como TIM-S, HC, COBRA.

Además, se crearon varios clones de Z80 en la Unión Soviética , siendo los más notables el T34BM1 , también llamado КР1858ВМ1 (paralelo al clon 8080 soviético KR580VM80A ). El primer marcado se utilizó en series de preproducción, mientras que el segundo tuvo que utilizarse para una producción mayor. Sin embargo, debido al colapso de la microelectrónica soviética a fines de la década de 1980, hay muchos más T34BM1 que КР1858ВМ1. [ cita requerida ]

  • Mostek Z80: MK3880

  • NEC μPD780C

  • Sharp LH0080

  • Toshiba Z84C00

  • Clon soviético T34BM1 Z80

Derivados [ editar ]

Compatible con el Z80 original
  • Hitachi desarrolló el HD64180 , un Z80 microcodificado y parcialmente dinámico en CMOS, con periféricos en chip y una MMU simple que proporciona un espacio de direcciones de 1  MB . Posteriormente fue adquirido en segundo lugar por Zilog, inicialmente como el Z64180, y luego en la forma del Z180 ligeramente modificado [48] que tiene un protocolo de bus y tiempos mejor adaptados a los chips periféricos Z80. Z180 se ha mantenido y desarrollado bajo el nombre de Zilog, las versiones más nuevas se basan en el núcleo S180 / L180 totalmente estático con muy bajo consumo de energía y EMI (ruido).
  • Toshiba desarrolló la serie Z84013 / Z84C13 de 84 pines y la serie Z84015 / Z84C15 de 100 pines de "controladores periféricos inteligentes", básicamente núcleos NMOS y CMOS Z80 ordinarios con periféricos Z80, temporizador de vigilancia, reinicio de encendido y generador de estado de espera en el mismo chip . Fabricado por Sharp y Toshiba. Estos productos son hoy en día de segunda fuente por Zilog. [49]
  • El Zilog Z380 compatible con Z80 de 32 bits , introducido en 1994, se utiliza principalmente en equipos de telecomunicaciones. [ cita requerida ]
  • El eZ80 [50] totalmente compatible con Z80 de Zilog con una longitud de palabra de 8/16/24 bits y un espacio de direcciones lineal de 16 MB se introdujo en 2001. Existe en versiones con SRAM en el chip o memoria flash , así como con periféricos integrados . Una variante tiene un chip MAC (controlador de acceso a medios) y el software disponible incluye una pila TCP / IP . A diferencia de Z800 y Z280, solo hay unas pocas instrucciones adicionales (principalmente LEA , PEA, y cargas de dirección variable de 16/24 bits), pero las instrucciones se ejecutan entre 2 y 11 veces más eficiente en el ciclo de reloj que en el Z80 original (con un valor medio de alrededor de 3-5 veces). Actualmente está especificado para frecuencias de reloj de hasta 50 MHz.
  • Kawasaki desarrolló el KL5C8400 compatible con binario, que es aproximadamente 1,2-1,3 veces más eficiente en el ciclo de reloj que el Z80 original y se puede sincronizar hasta 33 MHz. Kawasaki también produce la familia KL5C80A1x, que tiene periféricos y una pequeña RAM en chip; es aproximadamente tan eficiente en ciclo de reloj como el eZ80 y se puede sincronizar hasta 10 MHz (2006). [51]
  • El NEC μPD9002 era una CPU híbrida compatible con las familias Z80 y x86 .
  • La familia de chips de procesadores de audio de China Actions Semiconductor (ATJ2085 y otros) contiene un MCU compatible con Z80 junto con un procesador DSP dedicado de 24 bits. [52] Estos chips se utilizan en muchos productos de reproductores multimedia y MP3.
  • Los núcleos de software sintetizables T80 (VHDL) y TV80 (Verilog) están disponibles en OpenCores.org. [53]
No compatible
  • La serie Toshiba TLCS 900 de microcontroladores de alto volumen (principalmente OTP ) se basa en el Z80; comparten la misma estructura básica de registro BC, DE, HL, IX, IY, y en gran parte las mismas instrucciones, pero no son compatibles con binarios, mientras que el TLCS 90 anterior es compatible con Z80. [54]
  • Los microcontroladores de la serie NEC 78K se basan en el Z80; comparten la misma estructura básica de registro BC, DE, HL y tienen instrucciones similares (pero con nombres diferentes); no compatible con binarios.
Parcialmente compatible
  • Rabbit Semiconductor 's conejo 2000/3000/4000 microprocesadores / microcontroladores [55] se basan en el HD64180 / Z180 arquitectura, aunque no son totalmente compatibles binario. [56]
Ya no se produce
  • El ASCII Corporation R800 era un procesador rápido de 16 bits utilizado en computadoras MSX TurboR ; era software, pero no hardware compatible con el Z80 (la sincronización de la señal, la distribución de pines y la función de los pines difieren del Z80).
  • NMOS Z800 y CMOS Z280 de Zilog eran implementaciones Z80 de 16 bits (antes de HD64180 / Z180 ) con un espacio de direcciones MMU paginado de 16 MB; agregaron muchas ortogonalizaciones y modos de direccionamiento al conjunto de instrucciones Z80. Las características de la minicomputadora, como los modos de usuario y sistema, la compatibilidad con multiprocesador, la MMU en el chip, la instrucción en el chip y la caché de datos, etc., se consideraron más complejas que como funcionalidad y soporte para el diseñador de sistemas integrados (generalmente orientados a la electrónica). también hizo muy difícil predecir los tiempos de ejecución de las instrucciones. [ cita requerida ]
  • Ciertos juegos de arcade como Pang / Buster Bros utilizan una CPU Z80 "Kabuki" cifrada fabricada por VLSI Technology , donde las claves de descifrado se almacenan en su memoria interna respaldada por batería , para evitar piratería y juegos ilegales de piratería. [57]
  • ASCII R800

  • Hitachi HD64180

  • Zilog Z180

  • Zilog Z280

  • Toshiba TMPZ84C015

Usos notables [ editar ]

Computadoras de escritorio [ editar ]

La Z80A se usó como CPU en varias consolas de juegos, como esta ColecoVision .

Durante finales de la década de 1970 y principios de la de 1980, la Z80 se utilizó en una gran cantidad de máquinas orientadas a los negocios bastante anónimas con el sistema operativo CP / M , una combinación que dominaba el mercado en ese momento. [58] [59] Cuatro ejemplos bien conocidos de computadoras empresariales Z80 que ejecutan CP / M son Heathkit H89 , la portátil Osborne 1 , la serie Kaypro y la Epson QX-10 . Menos conocido fue el costoso Otrona Attache de alta gama . [60] Algunos sistemas usaban software de sistema operativo multitarea (como MP / M o Morrow 's Micronix) para compartir un procesador entre variosusuarios concurrentes .

Un Sinclair ZX Spectrum que utilizó un Z80 con frecuencia de 3,5 MHz

Se introdujeron varias computadoras domésticas que usaban el Z80 como procesador principal o como una opción de complemento para permitir el acceso al software escrito para el Z80. Cabe destacar la serie TRS-80 , incluido el modelo original (más tarde llamado "Modelo I"), el Modelo II , el Modelo III y el Modelo 4 , que estaban equipados con un Z80 como su proveedor principal, y algunos (pero no todos) otros Modelos TRS-80 que usaban el Z80 como procesador principal o secundario. Otra máquina notable y única es la DEC Rainbow 100 , que incluía un Intel 8088 y una CPU Z80, para admitir las aplicaciones CP / M-80 de 8 bits, que se ejecutan en el Z80, o las aplicaciones CP / M-86 (o MS-DOS limitado) que se ejecutan en el 8088.

En 1981, Multitech (que luego se convertiría en Acer ) introdujo el Microprofessor I , un sistema de entrenamiento simple y económico para el microprocesador Z80. Actualmente, todavía lo fabrica y vende Flite Electronics International Limited en Southampton, Inglaterra .

Ordenadores portátiles y de mano [ editar ]

El uso del Z80 en dispositivos más livianos que funcionan con baterías se generalizó con la disponibilidad de versiones CMOS del procesador. También inspiró el desarrollo de otros procesadores basados ​​en CMOS, como el LH5801 [61] de Sharp. El SHARP PC-1500 , un BASIC -programmable ordenador de bolsillo fue lanzado en 1981, seguido por la mejora de Sharp PC-1600 en 1986 y la SHARP PC-E220 en 1991. Las computadoras portátiles que podría ejecutar el sistema operativo CP / M al igual que el escritorio siguieron con la Epson PX-8 Ginebra en 1984, y en 1985 la Epson PX-4 y Bondwell-2. Si bien el mercado de las computadoras portátiles en los años siguientes se trasladó a procesadores Intel 8086 más potentes y al sistema operativo MS-DOS, todavía se estaban introduciendo sistemas ligeros basados ​​en Z80 con una batería de mayor duración, como el Cambridge Z88 en 1988 y el Amstrad NC100. en 1992. El Z8S180 derivado del Z80 también se abrió camino en 1993 en uno de los primeros asistentes digitales personales operados con lápiz , el Amstrad PenPad PDA600 . VTech, con sede en Hong Kong, produjo una línea de pequeñas computadoras portátiles llamadas 'Láseres' basadas en un Z80. [62] [63] Los dos últimos fueron el Laser PC5 [64] y el PC6. [sesenta y cinco]El Cidco MailStation Mivo 100, lanzado por primera vez en 1999, era un dispositivo de correo electrónico portátil independiente, con un microcontrolador basado en Z80. [66]

A partir de la TI-81 en 1990, Texas Instruments ha fabricado una larga línea de calculadoras gráficas basadas en la Z80. La serie TI-84 Plus , presentada en 2004, todavía está en producción a partir de 2020. La serie TI-84 Plus CE , presentada en 2015, utiliza el procesador Zilog eZ80 derivado de Z80 y también está todavía en producción a partir de 2020. TI también produjo una línea de organizadores de bolsillo (finalizada en 2000) utilizando procesadores Toshiba construidos alrededor de un núcleo Z80; el primero de ellos fue el TI PS-6200 [67] y después de una larga producción de una docena de modelos culminó con su serie PocketMate. [68] Modelos posteriores del Sharp Wizard serie de organizadores personales se basaron en Z80.

Sistemas integrados y electrónica de consumo [ editar ]

PABX basada en Z80 . El Z80 es el tercer chip de la izquierda, a la derecha del chip con la etiqueta blanca escrita a mano.

El Zilog Z80 ha sido durante mucho tiempo un microprocesador popular en sistemas integrados y núcleos de microcontroladores , [24] donde sigue siendo de uso generalizado en la actualidad. [4] [69] Las aplicaciones del Z80 incluyen usos en electrónica de consumo , productos industriales e instrumentos musicales electrónicos. Por ejemplo, el Z80 se utilizó en el revolucionario sintetizador musical Prophet-5 , [70] así como en el primer sintetizador MIDI Prophet 600 . [71] Casio usó el Z80A en su consola de videojuegos PV-1000 .

Una buena cantidad de videojuegos de arcade de principios de la década de 1980, incluido el fenomenal Pac-Man , contienen CPU Z80.

El Z80 se usó en las consolas Sega Master System y Sega Game Gear . El Sega Genesis contiene un Z80, con sus propios 8 KB de RAM, que se ejecuta en paralelo con la CPU principal MC68000, tiene acceso directo a los chips de sonido del sistema y a los puertos de E / S (controlador), y tiene una ruta de datos conmutada al bus de memoria principal del 68000 (que proporciona acceso a la RAM principal de 64 KB, el cartucho de software y todo el chip de video); Además de proporcionar compatibilidad con versiones anteriores de los juegos de Master System, el Z80 se utiliza a menudo para controlar el audio en el software Genesis. [72]

Las CPU Z80 también se utilizaron en la pionera y popular serie TI-8x de calculadoras gráficas de Texas Instruments , a partir de 1990 con la TI-81 , que cuenta con una Z80 con frecuencia de 2 MHz. La mayoría de las calculadoras de línea superior de la serie, comenzando con la TI-82 y la TI-85 , sincronizan sus CPU Z80 a 6 MHz o más. Algunos modelos con nombres TI-8x utilizan otras CPU, como la M68000, pero la gran mayoría están basadas en Z80. En ellos, es posible ejecutar programas de usuario ensamblados o compilados en forma de código en lenguaje de máquina Z80.

A fines de la década de 1980, una serie de teléfonos fijos soviéticos llamados "AON" incluían el Z80; Estos teléfonos ampliaron el conjunto de funciones de la línea fija con identificador de llamadas , diferentes tonos de llamada basados ​​en la persona que llama, marcación rápida , etc. [73] En la segunda mitad de los años noventa, los fabricantes de estos teléfonos cambiaron a MCU compatibles con 8051 para reducir el consumo de energía y evitar el sobrecalentamiento de las verrugas compactas de la pared.

Ver también [ editar ]

  • Zilog eZ80
  • Autobús S-100
  • SymbOS
  • Z88DK
  • Micro-Professor MPF-I , sistema de entrenamiento Z80

Notas al pie [ editar ]

  1. ^ Zilog incluyó varias "trampas" en el diseño del chip para intentar retrasar esta copia. Según Faggin, un ingeniero de NEC le dijo más tarde que les había costado varios meses de trabajo antes de que pudieran hacer funcionar su μPD780.
  2. ^ Estos se denominaron Z80 CTC (contador / temporizador), Z80 DMA (acceso directo a memoria), Z80 DART (receptor-transmisor asíncrono dual), Z80 SIO (controlador de comunicación síncrona) y Z80 PIO (entrada / salida paralela)
  3. ^ Zilog fabricó el Z80, así como la mayoría de sus otros productos, durante muchos años hasta que vendieron sus plantas de fabricación y se convirtieron en la empresa " sin fábulas " que son hoy.
  4. ^ Aunque el 8080 tenía instrucciones de adición de 16 bits y de incremento y decremento de 16 bits, no tenía una resta explícita de 16 bits ni un indicador de desbordamiento. El Z80 complementó esto con las instrucciones ADC HL, rr y SBC HL, rr que configuran la nueva bandera de desbordamiento en consecuencia. (El ADD HL, rr compatible con 8080 no lo hace).
  5. ^ En particular, para manejar simultáneamente las mantisas de32 bitsde dos operandos en elformato de punto flotante de 40 bitsutilizado en lascomputadoras domésticas Sinclair . También se usaron de manera similar en algunas computadoras basadas en Z80 anteriores pero menos conocidas, como las suecas ABC 80 y ABC 800 .
  6. ^ Como esta actualización no necesita transferir ningún dato, solo generar direcciones de fila secuenciales, ocupa menos de 1.5 T-estados. La señal M1 dedicada ( ciclo de máquina uno ) en el Z80 se puede usar para permitir que los chips de memoria tengan la misma cantidad de tiempo de acceso para búsquedas de instrucciones que para acceso a datos, es decir, casi dos estados T completos delciclo de búsqueda 4T(también como fuera delciclo de lectura de datos 3T). El Z80 podría usar memoria con el mismo rango de tiempos de acceso que el 8080 (o el 8086) a la misma frecuencia de reloj. Esta larga señal M1 (relativa al reloj) también significaba que el Z80 podía emplear aproximadamente 4-5 veces la frecuencia interna de un 6800, 6502 o similar usando el mismo tipo de memoria.
  7. ^ A diferencia de la versión nMOS original, que usaba pestillos dinámicos y no podía detenerse durante más de unos pocos miles de ciclos de reloj.
  8. ^ Lafamilia 8086 relacionadatambién heredó este diseño de registro.
  9. ^ Este puntero variable HL era en realidad la única forma de acceder a la memoria (para datos) en el Datapoint 2200 y, por lo tanto, también en el Intel 8008. No se podían usar direcciones directas para acceder a los datos.
  10. ^ En realidad, no es posible codificar esta instrucción en los procesadores Intel 8086 o posteriores. Consulte los manuales de referencia de Intel.

Referencias [ editar ]

  1. ^ Solo en CMOS, National no hizo ninguna versión NMOS, según Oral History con Federico Faggin
  2. ↑ a b Zilog (2005). Manual del usuario de la CPU de la familia Z80 (PDF) . Zilog. pag. 5.
  3. ^ Fuente: Historia oral de Federico Faggin.
  4. ↑ a b c Balch, Mark (18 de junio de 2003). "Fundamentos digitales". Diseño digital completo: una guía completa de arquitectura de sistemas informáticos y electrónica digital . Ingeniería profesional. Nueva York, Nueva York : McGraw-Hill Professional . pag. 122. ISBN 0-07-140927-0.
  5. ^ a b El informe Seybold sobre informática profesional . Publicaciones Seybold. 1983. En el mundo de los 8 bits, las dos microcomputadoras más populares son los chips de computadora Z80 y 6502.
  6. ^ Anderson (1994) , p. 51.
  7. ^ Anderson (1994) , p. 57.
  8. ↑ a b Brock, Gerald W. (2003). La segunda revolución de la información . Prensa de la Universidad de Harvard. ISBN 978-0-674-01178-6.
  9. ^ "Historia de los 8 bits: viajar lejos en poco tiempo" . InfoWorld . Vol. 4 no. 47. Palo Alto, CA: Popular Computing Inc. 29/11/1982. págs. 58–60. ISSN 0199-6649 . 
  10. ^ Shima, Masatoshi ; Federico Faggin; Ralph Ungermann (19 de agosto de 1976). "El conjunto de chips Z-80 presagia la tercera generación de microprocesadores". Electrónica . Nueva York. 49 (17): 32–33 McGraw – Hill.
  11. ^ Ver Federico Faggin, historia oral.
  12. ^ Mathur (1989). Introducción a los microprocesadores . pag. 111. ISBN 978-0-07-460222-5. La arquitectura de registro del Z80 es más innovadora que la del 8085
  13. ^ Ciarcia 1981 , págs. 31, 32
  14. ↑ a b Wai-Kai Chen (2002). El manual de circuitos y filtros . Prensa CRC . pag. 1943. ISBN 978-0-8493-0912-0. El procesamiento de interrupciones comienza de acuerdo con el método de interrupción estipulado por la instrucción IM i , i = 0, 1 o 2. Si i = 1, para el método directo, la PC se carga con 0038H. Si i = 0, para el método vectorial, el dispositivo de interrupción tiene la oportunidad de colocar el código de operación para un byte. Si i = 2, para el método de vector indirecto, el dispositivo de interrupción debe colocar un byte. Luego, el Z80 usa este byte donde el byte puede seleccionar uno de los 128 vectores de interrupción.
  15. ^ "Reinicio especial Z80" .
  16. ^ Adrian, Andre. "Z80, el Cruncher de números de 8 bits" .
  17. ^ Computación popular . McGraw-Hill . 1983. p. 15.
  18. Markoff, John (18 de octubre de 1982). "El veloz Z80 de Zilog aumenta el rendimiento de 8 bits a 16 bits". InfoWorld . InfoWorld Media Group. pag. 1. ISSN 0199-6649 . 
  19. ^ Diseño electrónico . Hayden. 1988. p. 142. Además de admitir todo el conjunto de instrucciones del Z80, el Z180
  20. ^ Ganssle, Jack G. (1992). "¡El Z80 vive!" . Los diseñadores eligieron una arquitectura compatible con el Z80, lo que brinda a los usuarios del Z80 una ruta de actualización completamente compatible con el software. El procesador 64180 ejecuta cada instrucción Z80 exactamente como lo hace un Z80
  21. ^ "Hasta el silicio: cómo se implementan los registros del Z80" .
  22. ^ Kilobaud . 1001001. 1977. pág. 22.
  23. ^ Zaks, Rodnay (1982). Programación del Z80 (3ª ed.). SYBEX. pag. 62. ISBN 978-0-89588-069-7.
  24. ^ a b c Steve Heath. (2003). Diseño de sistemas empotrados . Oxford: Newnes. pag. 21. ISBN 978-0-7506-5546-0.
  25. ^ "Afecto de bandera Z80" . www.z80.info . Thomas Scherrer . Consultado el 14 de junio de 2016 .
  26. ^ Frank Durda IV. "Conjunto de instrucciones 8080 / Z80" . Archivado desde el original el 11 de febrero de 2016 . Consultado el 22 de julio de 2009 .
  27. ^ LasJPinstruccionesJump (), que cargan el contador del programa con una nueva dirección de instrucción, no acceden a la memoria por sí mismas. Las formas absolutas y relativas del salto reflejan esto al omitir los corchetes de sus operandos. Las instrucciones de salto basadas en registros como "JP (HL)" incluyen corchetes en una aparente desviación de esta convención. "Guía del usuario del ensamblador de macros de reubicación de Z80" (PDF) . pag. B – 2. Archivado desde el original (PDF) el 20 de julio de 2011 . Consultado el 4 de junio de 2009 .
  28. ^ Scanlon, Leo J. (1988). Lenguaje ensamblador 8086/8088/80286 . Libros Brady . pag. 12 . ISBN 978-0-13-246919-7. [...] El 8086 es compatible con el software del 8080 en el nivel de lenguaje ensamblador. [...]
  29. ^ Nelson, Ross P. (enero de 1989) [1988]. El libro 80386: Guía del programador en lenguaje ensamblador para el 80386 . Serie de programación de Microsoft (1 ed.). Microsoft Press . pag. 2. ISBN 978-1-55615-138-5. [...] Un programa de traducción de Intel podría convertir programas de ensamblador 8080 en programas de ensamblador 8086 [...]
  30. ^ a b "Introducción a la CPU Z80" . Zilog. 1995. Tiene un lenguaje de 252 instrucciones root y con los 4 bytes reservados como prefijos, accede a 308 instrucciones adicionales.
  31. ^ Sánchez, Julio; Cantón, Maria P. (2008). Soluciones de software para ingenieros y científicos . Taylor y Francis. pag. 65. ISBN 978-1-4200-4302-0. Los microprocesadores de 8 bits que precedieron a la familia 80x86 (como Intel 8080, Zilog Z80 y Motorola) no incluían la multiplicación.
  32. ^ "Conjuntos de instrucciones 8080 / Z80" . Ensamblador 8080 rápido y sucio . Frank Durda. Archivado desde el original el 11 de febrero de 2016 . Consultado el 25 de julio de 2016 .
  33. ^ Froehlich, Robert A. (1984). El catálogo y directorio de software libre . Editores de la Corona. pag. 133. ISBN 978-0-517-55448-7. Los códigos Z80 no documentados permiten operaciones de 8 bits con registros IX e IY.
  34. ^ a b Bot, Jacco JT "Instrucciones indocumentadas Z80" . Hogar de la CPU Z80 . Si un código de operación funciona con los registros HL, H o L, entonces si ese código de operación está precedido por #DD (o #FD), funciona en IX, IXH o IXL (o IY, IYH, IYL), con algunas excepciones. Las excepciones son instrucciones como LD H, IXH y LD L, IYH.
  35. ^ Robin Nixon The Amstrad Notepad Advanced User Guide , Robin Nixon, 1993 ISBN 1-85058-515-6 , páginas 219-223 
  36. ^ Zilog (2005). Manual del usuario de la CPU de la familia Z80 (PDF) . Zilog. pag. 11.
  37. ^ Ciarcia 1981 , p. sesenta y cinco
  38. ^ Zaks, Rodnay (1989). Programando el Z80 . Sybex. pag. 200. ISBN 978-0-89588-069-7. AGREGAR A, n Agregar acumulador con datos inmediatos n. Temporización de la MEMORIA: 2 M ciclos; 7 estados T.
  39. ^ Ciarcia 1981 , p. 63
  40. ^ Ciarcia 1981 , p. 77
  41. ^ Ciarcia 1981 , p. 36
  42. ^ Ciarcia 1981 , p. 58
  43. ^ "Manual de usuario de Z80, registros especiales pág. 3" . www.zilog.com . Zilog . Consultado el 14 de junio de 2016 .
  44. ^ "Manual de usuario de periféricos de CPU de la familia Z80" (PDF) . Hoja de datos de EEWORLD . ZiLOG. 2001. Archivado desde el original (PDF) el 2 de mayo de 2014 . Consultado el 30 de abril de 2014 .
  45. ^ Joven, Sean (1998). "Funciones no documentadas del Z80 (en el comportamiento del software)" . Las instrucciones de E / S utilizan todo el bus de direcciones, no solo los 8 bits inferiores. Entonces, de hecho, puede tener 65536 puertos de E / S en un sistema Z80 (el Spectrum usa esto). IN r, (C), OUT (C), ry todas las instrucciones del bloque de E / S colocan todo el BC en el bus de direcciones. IN A, (n) y OUT (n), A pone A * 256 + n en el bus de direcciones.
  46. ^ "Descripción general de la serie SHARP MZ" . SharpMZ.org . Archivado desde el original el 27 de marzo de 2008 . Consultado el 28 de julio de 2011 . La mayoría de los MZ utilizan la CPU de 8 bits LH0080 / Z80 [...]
  47. ^ Ganssle, Jack G. (1992). "¡El Z80 vive!" . El 64180 es un núcleo Z80 suministrado por Hitachi con numerosos "extras" en el chip. La versión de Zilog es la Z180, que es esencialmente la misma parte.
  48. ^ Ganssle, Jack G. (1992). "¡El Z80 vive!" . Tanto Toshiba como Zilog venden el 84013 y el 84015, que son núcleos Z80 con periféricos Z80 convencionales integrados a bordo.
  49. ^ "Familia de productos EZ80 ACCLAIM" . Zilog.
  50. ^ Negocios electrónicos en Asia . Cahners Asia Limited. 1997. p. 5. KL5C80A12, KL5C80A16 y KL5C8400 de Kawasaki son CPU y MCU de 8 bits de alta velocidad . Su código de CPU, KC80, es compatible con el Z80 de Zilog a nivel binario. KC80 ejecuta instrucciones cuatro veces más rápido que Z80 a la misma frecuencia de reloj
  51. ^ "Especificaciones de hardware" . S1mp3.org . 2005.
  52. ^ "Proyectos :: OpenCores" .
  53. ^ "Sección 6 MOS MPU, MCU y tendencias del mercado de periféricos" (PDF) . pag. dieciséis.
  54. ^ Axelson, enero (2003). Ethernet e Internet integrados completos . Investigación de Lakeview. pag. 93. ISBN 978-1-931448-00-0. El microprocesador Rabbit 3000 de Rabbit Semiconductor, que es un derivado muy mejorado y mejorado del venerable microprocesador Z80 de ZiLOG, Inc.
  55. ^ Hyder, Kamal; Perrin, Bob (2004). Diseño de sistemas embebidos utilizando el microprocesador Rabbit 3000 . Newnes. pag. 32. ISBN 978-0-7506-7872-8. Las partes de Rabbit se basan estrechamente en la arquitectura Zilog Z180, aunque no son compatibles binariamente con las partes de Zilog.
  56. Cruz, Eduardo (23 de noviembre de 2014). "Arcade Hacker: Capcom Kabuki CPU - Introducción" .
  57. ^ Holtz, Herman (1985). Estaciones de trabajo informático . Chapman y Hall. pag. 223. ISBN 978-0-412-00491-9. y CP / M continuó dominando el mundo de los microordenadores de 8 bits.
  58. Dvorak, John C. (10 de mayo de 1982). "Después de CP / M, los sistemas operativos orientados a objetos pueden liderar el campo". InfoWorld . Vol. 4 no. 18. InfoWorld Media Group. pag. 20. ISSN 0199-6649 . La idea de un sistema operativo genérico está todavía en pañales. En muchos sentidos, comienza con CP / M y la mezcolanza de las primeras computadoras 8080 y Z80. 
  59. ^ "Agregado de Otrona" . Museo de Computadoras Antiguas de Steve . Steven Stengel . Consultado el 5 de marzo de 2019 .
  60. ^ "Manual de referencia técnica de Sharp PC-1500" (PDF) .
  61. ^ "Laptop del pobre" . Libros de Google . Popular Mechanics, abril de 1991, pág. 120. Abril de 1991 . Consultado el 11 de abril de 2018 .
  62. ^ "Láser PC4" . Museo de la Computación Antigua . Consultado el 11 de abril de 2018 .
  63. ^ "Laser PC5 de VTech" . Larwe punto com . Consultado el 11 de abril de 2018 .
  64. ^ "Láser PC6" . Perfect Solutions punto com . Soluciones perfectas. Archivado desde el original el 21 de mayo de 2018 . Consultado el 11 de abril de 2018 .
  65. ^ "Fybertech.net - Estación de correo" . Consultado el 18 de abril de 2021 .
  66. ^ "Texas Instruments PS-6200" . Museo de la calculadora de Datamath . Joerg Woerner . Consultado el 18 de junio de 2019 .
  67. ^ "PocketMate 100 de Texas Instruments" . Museo de la calculadora de Datamath . Joerg Woerner . Consultado el 18 de junio de 2019 .
  68. ^ Ian R. Sinclair. (2000). Manual práctico de electrónica . Oxford, Angleterre: Newnes. pag. 204. ISBN 978-0-7506-4585-0.
  69. ^ "Vintage Synths de Gordon Reid - los circuitos secuenciales Prophet 5 y Prophet 10" . www.gordonreid.co.uk .
  70. ^ "Prophet 600: un sintetizador clásico obtiene una actualización del procesador" . 2014-03-19.
  71. ^ Este uso común, pero simplemente opcional y no limitante, conduce a la descripción frecuente pero incorrecta del Z80 en el Genesis como un "procesador de sonido".
  72. ^ "Realización de una demostración para un teléfono antiguo - AONDEMO" . habr.com .

Lectura adicional [ editar ]

Hojas de datos y manuales
  • Hoja de datos Z80 (NMOS) ; Zilog; 10 páginas; 1978.
  • Libro de datos Z80 (NMOS) ; Zilog; 131 páginas; 1978.
  • Hoja de datos Z80 (NMOS y CMOS) ; Zilog; 36 páginas; 2002. Fe de erratas
  • Manual de usuario de Z80 (NMOS y CMOS) ; Zilog; 332 páginas; 2016.
  • Manual de usuario del periférico Z80 (NMOS y CMOS) ; Zilog; 330 páginas; 2001.
Libros de hardware
  • Construya su propia computadora Z80 - Pautas de diseño y notas de aplicación ; 1ª Ed; Steve Ciarcia ; Libros de bytes; 332 páginas; 1981; ISBN 978-0070109629 . (archivo) 
  • Microprocesador Z80: arquitectura, interfaz, programación y diseño ; 1ª Ed; Ramesh Gaonkar; Macmillan; 674 páginas; 1988; ISBN 978-0675205405 . (archivo) 
  • Manual de uso de Z80 - Definiciones de pines, señales de control, periféricos y más ; 1ª Ed; Joseph Carr; Descansa en; 338 páginas; 1980; ISBN 978-0835995177 . (archivo) 
  • Técnicas de interconexión de microprocesadores ; 3ª Ed; Rodnay Zaks y Austin Lesea; Sybex; 466 páginas; 1979; ISBN 978-0-89588-029-1 . (archivo) 
Libros de software
  • Programación del Z80 ; 3ª Ed; Rodnay Zaks; Sybex; 630 páginas; 1980; ISBN 978-0895880949 . (archivo) 
  • Programación en lenguaje ensamblador Z80 ; 1ª Ed; Lance Leventhal; Osborne / McGraw-Hill; 642 páginas; 1979; ISBN 978-0931988219 . (archivo) 
  • Lenguaje ensamblador 8080 / Z80 - Técnicas para una programación mejorada ; 1ª Ed; Alan Miller; John Wiley & Sons; 332 páginas; 1981; ISBN 978-0471081241 . (archivo) 
  • Programación en lenguaje ensamblador Z80 y 8080 ; 1ª Ed; Kathe Spracklen; Hayden; 180 páginas; 1979; ISBN 978-0810451674 . (archivo) 
  • Programación práctica de microcomputadoras: el Z80, incluida la fuente para el ensamblador residente y el monitor de depuración ; 1ª Ed; Walter Weller; Tecnología del Norte; 501 páginas; 1978; ISBN 978-0930594053 . (archivo) 
  • Subrutinas del lenguaje ensamblador Z80 ; 1ª Ed; Lance Leventhal y Winthrop Saville; Osborne / McGraw-Hill; 512 páginas; 1983; ISBN 978-0931988912 . (archivo) 
  • Z80 indocumentado documentado ; Sean Young; v0.91; 52 páginas; 2005. (archivo)
Tarjetas de referencia
  • Tarjeta de referencia para el microprocesador Z80 ; Shirley & Nanos; Nanos Systems; 16 páginas; 1981. (archivo)
  • Tarjeta de referencia instantánea del microprocesador Z80 ; James Lewis; Micro Logic; 2 páginas; 1981. (archivo)

Enlaces externos [ editar ]