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).
Clasificación | Registro | Longitud | Pares de registros | Longitud |
---|---|---|---|---|
Acumulador | A | 8 bits | ||
Registros de uso general | B | 8 bits | BC | 16 bits |
C | 8 bits | |||
D | 8 bits | DE | 16 bits | |
E | 8 bits | |||
H | 8 bits | HL | 16 bits | |
L | 8 bits | |||
Contador de programa | PC | 16 bits | ||
Puntero de pila | SP | 16 bits | ||
Indicadores | F | 8 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.
SUMA 16 BITS | CARGA 16 BITS | |||
---|---|---|---|---|
DAD B | HL <- HL+BC | LXI B,D16 | BC <- D16 | |
DAD D | HL <- HL+DE | LXI D,D16 | DE <- D16 | |
DAD H | HL <- HL+HL | LXI H,D16 | HL <- D16 | |
DAD SP | HL <- HL+SP | LXI SP,D16 | SP <- D16 | |
LHLD Addr | HL <- (Addr) | |||
SHLD Addr | (Addr) <- HL |
INCREMENTAR | DECREMENTAR | |||
---|---|---|---|---|
INR M | (HL) <- (HL)+1 | DCR M | (HL) <- (HL)-1 | |
INR A | A <- A+1 | DCR A | A <- A-1 | |
INX B | BC <- BC+1 | DCX B | BC <- BC-1 | |
INX D | DE <- DE+1 | DCX D | DE <- DE-1 | |
INX H | HL <- HL+1 | DCX H | HL <- HL-1 | |
INX SP | SP <- SP+1 | DCX SP | SP <- SP-1 |
CARGA 8 BITS | ESPECIALES | |||
---|---|---|---|---|
LDAX B | A <- (BC) | XCHG | DE <-> HL | |
LDAX D | A <- (DE) | DAA | Ajuste decimal acumul. | |
STAX B | (BC) <- A | CMA | A <- 0FFh - A | |
STAX D | (DE) <- A | STC | Cy <- 1 | |
LDA Addr | A <- (Addr) | CMC | Cy <- 1 - Cy | |
STA Addr | (Addr) <- A |
OPERACIONES CON LA PILA | CONTROL | |||
---|---|---|---|---|
PUSH B | Push BC | DI | Deshabilitar interrupciones | |
PUSH D | Push DE | EI | Habilitar interrupciones | |
PUSH H | Push HL | |||
PUSH PSW | Push AF | ENTRADA/SALIDA | ||
POP B | Pop BC | IN D8 | A <- Port D8 | |
POP D | Pop DE | OUT D8 | Port D8 <- A | |
POP H | Pop HL | |||
POP PSW | Pop AF | |||
XTHL | HL <-> (SP) | |||
SPHL | SP <- 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.
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:
Pata | Nombre | Descripción |
---|---|---|
1 | A10 | Bus de direcciones |
2 | GND | Referencia de tierra. Todas las tensiones se miden con respecto a este punto. |
3 | D4 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal de control que indica salida a periférico. |
4 | D5 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal que indica si el uP está en ciclo de búsqueda de instrucción. |
5 | D6 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal de control que indica entrada de periférico. |
6 | D7 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal de control que indica lectura de memoria. |
7 | D3 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal que indica que el uP se ha detenido. |
8 | D2 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal que indica que se realiza una operación con el stack. |
9 | D1 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Modo lectura/escritura. |
10 | D0 | Si SYNC = 0: Bus de datos. Si SYNC = 1: Señal de reconocimiento de interrupción. |
11 | -5V | Una de las tres patas de alimentación del 8080. |
12 | RESET | Señal de borrado de todos los registros internos del 8080. Para ello, ponerlo a uno durante tres ciclos de reloj como mínimo. |
13 | HOLD | Sirve para poner los buses en alta impedancia para el manejo de DMA (acceso directo a memoria). |
14 | INT | Señal de pedido de interrupción. |
15 | CLK2 | Señal de reloj (debe venir del generador de reloj 8224). |
16 | INTE | Señal de aceptación de interrupción. |
17 | DBIN | Indica que el bus de datos está en modo lectura. |
18 | /WR | Indica que el bus de datos está en modo escritura. |
19 | SYNC | Este pin se pone a uno cuando comienza una nueva instrucción. |
20 | +5V | Una de las tres patas de alimentación del 8080. |
21 | HLDA | Reconocimiento de HOLD. |
22 | CLK1 | Señal de reloj (debe venir del generador de reloj 8224). |
23 | READY | Sirve para sincronizar memorias o periféricos lentos (detiene al 8080 mientras se lee o escribe el dispositivo). |
24 | WAIT | Cuando vale "1", el 8080 está esperando al periférico lento. |
25 | A0 | Bus de direcciones. |
26 | A1 | |
27 | A2 | |
28 | +12V | Una de las tres patas de alimentación del 8080. |
29 | A3 | Bus de direcciones. |
30 | A4 | |
31 | A5 | |
32 | A6 | |
33 | A7 | |
34 | A8 | |
35 | A9 | |
36 | A15 | |
37 | A12 | |
38 | A13 | |
39 | A14 | |
40 | A11 |
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.