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.