El microprocesador 8080

Por Dario Alejandro Alpern

Historia del 8080

Durante el verano de 1971, Federico Faggin fue a Europa para realizar seminarios sobre el MCS-4 y el 8008 y para visitar clientes. Recibió una gran cantidad de críticas (algunas de ellas constructivas) acerca de la arquitectura y el rendimiento de los microprocesadores. Las compañías que estaban más orientadas hacia la computación eran las que le decían las peores críticas.

Cuando regresó a su casa, se le ocurrió una idea de cómo hacer un microprocesador de 8 bits mejor que el 8008, incorporando muchas de las características que esa gente estaba pidiendo, sobre todo, más velocidad y facilidad de implementación en el circuito.

Decidió utilizar el nuevo proceso NMOS (que utiliza transistores MOS de canal N) que se utilizaba en las últimas memorias RAM dinámicas de 4 kilobits, además le agregó una mejor estructura de interrupciones, mayor direccionamiento de memoria (16 KB en el 8008 contra 64 KB en el 8080) e instrucciones adicionales (como se puede apreciar en las descripciones de los conjuntos de instrucciones que se encuentran más abajo).

Al principio de 1972 decidió realizar el nuevo chip. Sin embargo Intel decidió esperar a que el mercado respondiera primero con el MCS-4 y luego con el MCS-8 antes de dedicar más dinero al desarrollo de nuevos diseños.

En el verano de 1972, la decisión de Intel fue comenzar con el desarrollo del nuevo microprocesador. Shima (el mismo de antes) comenzó a trabajar en el proyecto en noviembre.

La primera fabricación del 8080 se realizó en diciembre de 1973. Los miembros del grupo que hacían el desarrollo encontraron un pequeño error y el primero de abril de 1974 se pudo lanzar al mercado el microprocesador.

El 8080 realmente creó el verdadero mercado de los microprocesadores. El 4004 y el 8008 lo sugirieron, pero el 8080 lo hizo real. Muchas aplicaciones que no eran posibles de realizar con los microprocesadores previos pudieron hacerse realidad con el 8080. Este chip se usó inmediatamente en cientos de productos diferentes. En el 8080 corría el famoso sistema operativo CP/M (siglas de Control Program for Microcomputers) de la década del '70 que fue desarrollado por la compañía Digital Research.

Como detalle constructivo el 8080 tenía alrededor de 6000 transistores MOS de canal N (NMOS) de 6 micrones, se conectaba al exterior mediante 40 patas (en formato DIP) y necesitaba tres tensiones para su funcionamiento (típico de los circuitos integrados de esa época): +12V, +5V y -5V. La frecuencia máxima era de 2 MHz.

La competencia de Intel vino de Motorola. Seis meses después del lanzamiento del 8080, apareció el 6800. Este producto era mejor en varios aspectos que el primero. Sin embargo, la combinación de tiempos (el 8080 salió antes), "marketing" más agresivo, la gran cantidad de herramientas de hardware y software, y el tamaño del chip (el del 8080 era mucho menor que el del 6800 de Motorola) inclinaron la balanza hacia el 8080.

El mayor competidor del 8080 fue el microprocesador Z-80, que fue lanzado en 1976 por la empresa Zilog (fundada por Faggin). Entre las ventajas pueden citarse: mayor cantidad de instrucciones (158 contra 74), frecuencia de reloj más alta, circuito para el apoyo de refresco de memorias RAM dinámicas, compatibilidad de código objeto (los códigos de operación de las instrucciones son iguales) y una sola tensión para su funcionamiento (+5V). El Z-80 fue concebido por Federico Faggin y Masatoshi Shima como una mejora al 8080, comenzando el desarrollo a partir de noviembre de 1974 en la empresa presidida por el primero. Tal fue el éxito que tuvo esta CPU que luego varias empresas comenzaron a producir el chip: SGS-Ates, Mostek, Philips, Toshiba, NEC, Sharp, etc.

Este microprocesador ocupó rápidamente el lugar del anterior y se usó en todo tipo de microcomputadoras (incluyendo muchas de las "home computers" de la primera mitad de la década del '80).

Arquitectura del 8080

Debe notarse la gran semejanza en la arquitectura de los microprocesadores 8008 y 8080.

Conjunto de registros del 8080

Es una ampliación del conjunto del 8008, como puede observarse a continuación:

ClasificaciónRegistroLongitudPares de registrosLongitud
AcumuladorA8 bits
Registros de uso generalB8 bitsBC16 bits
C8 bits
D8 bitsDE16 bits
E8 bits
H8 bitsHL16 bits
L8 bits
Contador de programaPC16 bits
Puntero de pilaSP16 bits
IndicadoresF8 bits

Hay cinco indicadores (Sign, Zero, Alternate Carry, Parity, Carry) ubicado en un registro de ocho bits llamado F (de Flags):

Bit 7 6 5 4 3 2 1 0
Flag S Z 0 AC 0 P 1 C

Los tres bits no usados siempre toman esos valores.

Conjunto de instrucciones del 8080

Incluye el conjunto de instrucciones del 8008. Además existen las siguientes:

SUMA 16 BITSCARGA 16 BITS
DAD BHL <- HL+BCLXI B,D16BC <- D16
DAD DHL <- HL+DELXI D,D16DE <- D16
DAD HHL <- HL+HLLXI H,D16HL <- D16
DAD SPHL <- HL+SPLXI SP,D16SP <- D16
LHLD AddrHL <- (Addr)
SHLD Addr(Addr) <- HL

INCREMENTARDECREMENTAR
INR M(HL) <- (HL)+1DCR M(HL) <- (HL)-1
INR AA <- A+1DCR AA <- A-1
INX BBC <- BC+1DCX BBC <- BC-1
INX DDE <- DE+1DCX DDE <- DE-1
INX HHL <- HL+1DCX HHL <- HL-1
INX SPSP <- SP+1DCX SPSP <- SP-1

CARGA 8 BITSESPECIALES
LDAX BA <- (BC)XCHGDE <-> HL
LDAX DA <- (DE)DAAAjuste decimal acumul.
STAX B(BC) <- ACMAA <- 0FFh - A
STAX D(DE) <- ASTCCy <- 1
LDA AddrA <- (Addr)CMCCy <- 1 - Cy
STA Addr(Addr) <- A

OPERACIONES CON LA PILACONTROL
PUSH BPush BCDIDeshabilitar interrupciones
PUSH DPush DEEIHabilitar interrupciones
PUSH HPush HL
PUSH PSWPush AFENTRADA/SALIDA
POP BPop BCIN D8A <- Port D8
POP DPop DEOUT D8Port D8 <- A
POP HPop HL
POP PSWPop AF
XTHLHL <-> (SP)
SPHLSP <- HL

donde Addr es una dirección de 16 bits.

Si bien todas las instrucciones del 8008 están incluidas en el 8080, un programa grabado en ROM para el primer procesador no correrá para el segundo ya que los códigos de operación de las instrucciones son diferentes, por lo que se deberá volver a ensamblar el código fuente para que pueda funcionar en el 8080.

Terminales (pinout) del 8080

Este microprocesador estaba encapsulado en el formato DIP (Dual Inline Package) de 40 patas (veinte de cada lado). La distancia entre las patas es de 0,1 pulgadas (2,54 milímetros), mientras que la distancia entre patas enfrentadas es de 0,6 pulgadas (15,32 milímetros).

Nótese en el gráfico el semicírculo que identifica la posición de la pata 1. Esto sirve para no insertar el chip al revés en el circuito impreso.

Las funciones de las 40 patas con las que se conecta el 8080 con el exterior son las siguientes:

PataNombreDescripción
1A10Bus de direcciones
2GNDReferencia de tierra. Todas las tensiones se miden con respecto a este punto.
3D4Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal de control que indica salida a periférico.
4D5Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal que indica si el uP está en ciclo de búsqueda de instrucción.
5D6Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal de control que indica entrada de periférico.
6D7Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal de control que indica lectura de memoria.
7D3Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal que indica que el uP se ha detenido.
8D2Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal que indica que se realiza una operación con el stack.
9D1Si SYNC = 0: Bus de datos.
Si SYNC = 1: Modo lectura/escritura.
10D0Si SYNC = 0: Bus de datos.
Si SYNC = 1: Señal de reconocimiento de interrupción.
11-5VUna de las tres patas de alimentación del 8080.
12RESETSeñal de borrado de todos los registros internos del 8080. Para ello, ponerlo a uno durante tres ciclos de reloj como mínimo.
13HOLDSirve para poner los buses en alta impedancia para el manejo de DMA (acceso directo a memoria).
14INTSeñal de pedido de interrupción.
15CLK2Señal de reloj (debe venir del generador de reloj 8224).
16INTESeñal de aceptación de interrupción.
17DBINIndica que el bus de datos está en modo lectura.
18/WRIndica que el bus de datos está en modo escritura.
19SYNCEste pin se pone a uno cuando comienza una nueva instrucción.
20+5VUna de las tres patas de alimentación del 8080.
21HLDAReconocimiento de HOLD.
22CLK1Señal de reloj (debe venir del generador de reloj 8224).
23READYSirve para sincronizar memorias o periféricos lentos (detiene al 8080 mientras se lee o escribe el dispositivo).
24WAITCuando vale "1", el 8080 está esperando al periférico lento.
25A0Bus de direcciones.
26A1
27A2
28+12VUna de las tres patas de alimentación del 8080.
29A3Bus de direcciones.
30A4
31A5
32A6
33A7
34A8
35A9
36A15
37A12
38A13
39A14
40A11

Cuando la pata SYNC está a "1" lógico, las patas D0-D7 pasan a ser señales de control, por lo que no se puede conectar directamente D0-D7 al bus de datos. Se debe intercalar un controlador y amplificador de bus 8228.

De esta manera se puede observar que el 8080 no funciona si no se agregan los circuitos integrados de soporte 8224 y 8228.

Nedstat Counter