Procesadores y microprocesadores Intel
Microprocesador 4004
 
 
     
 

 

El Microprocesador 4004

Llamada también la familia 4000 (y después conocido como MCS-4) esta compuesta por 4 dispositivos de 16 pines: El 4001 era una ROM de dos kilobits con salida de cuatro bits de datos; el 4002 era una RAM de 320 bits con el port de entrada/salida (bus de datos) de cuatro bits; el 4003 era un registro de desplazamiento de 10 bits con entrada serie y salida paralelo; y el 4004 era la CPU de 4 bits.

Descripción Del 4004

Es un microprocesador de 4 bits de bus de datos, direcciona 32768 bits de ROM y 5120 bits de RAM. Además se pueden direccionar 16 ports de entrada (de 4 bits) y 16 ports de salida (de 4 bits). Contiene alrededor de 2300 transistores MOS de canal P de 10 micrones. El ciclo de instrucción es de 10,8 microsegundos.

Terminales del 4004

Este microprocesador estaba encapsulado en el formato DIP (Dual Inline Package) de 16 patas (ocho 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,3 pulgadas (7,68 milímetros).

Nótese en el gráfico de abajo 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.

   
Pata Nombre Descripción  
1 D0 Todas las direcciones y datos de RAM y ROM pasan por estas líneas  
2 D1
3 D2
4 D3
5 VSS Referencia de tierra. Es la tensión más positiva.
6 Clock phase 1 Son las dos fases de entrada de reloj (clock)
7 Clock phase 2
8 Sync output Señal de sincronismo generada por el procesador. Indica el comienzo de un ciclo de instrucción.
9 Reset Un "1" lógico aplicado en esta pata borra todos los flags y registros de estado y fuerza el contador de programa (PC) a cero. Para que actúe correctamente, esta línea deberá activarse por 64 ciclos de reloj (8 ciclos de máquina).
10 Test La instrucción JCN verifica el estado de esta línea.
11 CM-ROM (Control Memory Outputs) Esta señal está activa cuando el procesador necesita datos de la ROM
12 VDD Alimentación del microprocesador. La tensión debe ser de -15V +/- 5%
13 CM-RAM3 Éstas son las señales de selección de banco para indicar a cuál RAM 4002 desea acceder el microprocesador
14 CM-RAM2 Éstas son las señales de selección de banco para indicar a cuál RAM 4002 desea acceder el microprocesador
15 CM-RAM1
16 CM-RAM0
 
     
Instrucciones Del 4004

Hay instrucciones de uno o dos bytes. Los primeros tardan 8 períodos de reloj (un ciclo de instrucción). Los segundos tardan 16 períodos de reloj (dos ciclos de instrucción).

   
Mnemónico Descripción OPR             OPA
    D3 D2 D1 D0 D3 D2 D1 D0
NOP No hace nada 0 0 0 0 0 0 0 0
JCN Salta a la dirección especificada por A2 A2 A2 A2 A1 A1 A1 A1 dentro de la misma ROM que contiene esta instrucción JCN, si se cumple la condición C1 C2 C3 C4, en caso contrario continúa ejecutando la próxima instrucción. 0 0 0 1 C1 C2 C3 C4

 

 

A2

 

 

A2

 

 

A2

 

 

A2

 

 

A1

 

 

A1

 

 

A1

 

 

A1

C1=1: Invertir la condición de salto.
C2=1: Saltar si el acumulador es cero.
C3=1: Saltar si el acarreo vale uno.
C4=1: Saltar si la pata TEST está a cero.
FIM Cargar el dato D2, D1 (ocho bits) en el par de registros RRR 0 0 1 0 R R R 0
D2 D2 D2 D2 D1 D1 D1 D1
SRC Enviar la dirección (contenido del par de registros RRR) a la ROM y a la RAM en los tiempos X2 y X3 del ciclo de instrucción 0 0 1 0 R R R 1
FIN Cargar en el par de registros RRR el dato de ROM apuntado por el par de registros cero 0 0 1 1 R R R 0
JIN Salto indirecto según el par de registros RRR 0 0 1 1 R R R 1
JUN Salto incondicional a la dirección de ROM A3, A2, A1 0 1 0 0 A3 A3 A3 A3
    A2 A2 A2 A2 A1 A1 A1 A1
JMS Salvar el viejo valor del contador de programa y saltar a la dirección de ROM A3, A2, A1 0 1 0 1 A3 A3 A3 A3
    A2 A2 A2 A2 A1 A1 A1 A1
INC Incrementar el contenido del registro RRRR 0 1 1 0 R R R R
ISZ Incrementar el registro RRRR. Si el resultado no es cero, saltar a la dirección A2 A2 A2 A2 A1 A1 A1 A1 dentro de la misma ROM que contiene esta instrucción ISZ 0 1 1 1 R R R R
A2 A2 A2 A2 A1 A1 A1 A1
ADD Sumar el registro RRRR al acumulador con acarreo 1 0 0 0 R R R R
SUB Restar el registro RRRR del acumulador con préstamo 1 0 0 1 R R R R
LD Cargar el acumulador con el contenido del registro RRRR 1 0 1 0 R R R R
XCH Intercambiar los contenidos del acumulador y el registro RRRR 1 0 1 1 R R R R
BBL Retornar de subrutina y cargar el dato D D D D en el acumulador 1 1 0 0 D D D D
LDM Cargar el dato D D D D en el acumulador 1 1 0 1 D D D D
 
   
     
Las siguientes instrucciones operan sobre las direcciones de RAM y ROM especificadas en la última instrucción SRC:

Cada chip de RAM tiene cuatro registros, cada uno con veinte caracteres de 4 bits subdivididos en 16 caracteres de memoria principal y 4 de estado. El número de chip, registro de RAM y carácter de memoria principal se selecciona mediante la instrucción SCR, mientras que los caracteres de estado (dentro de un registro) se seleccionan mediante el código de instrucción (OPA)

Mnemónico Descripción OPR OPA
WRM Escribir el acumulador en RAM 1110 0
WMP Escribir el acumulador en port de salida de RAM 1110 1
WRR Escribir el acumulador en port de salida de ROM 1110 10
WPM Escribir el acumulador en el medio byte especificado de RAM (se usa en los microprocesadores 4008 y 4009 solamente) 1110 11
WR0 Escribir el acumulador en el carácter de estado de RAM 0, 1, 2, 3 1110 100
WR1 1110 101
WR2 1110 110
WR3 1110 111
SBM Restar el contenido de la posición previamente especificada de RAM del acumulador con préstamo 1110 1000
RDM Cargar en el acumulador el contenido de la posición de RAM 1110 1001
RDR Cargar en el acumulador el contenido del port de entrada de ROM 1110 1010
ADM Sumar el contenido de la posición previamente especificada de RAM al acumulador con acarreo 1110 1011
RD0 Almacenar en el acumulador el carácter de estado de RAM 0, 1, 2, 3 1110 1100
RD1 1110 1101
RD2 1110 1110
RD3 1110 1111
 
   
        La siguiente tabla muestra el grupo de instrucciones del acumulador.        
Mnemónico Descripción OPR OPA
CLB Limpiar el acumulador y el acarreo 1111 0
CLC Limpiar el indicador de acarreo 1111 1
IAC Incrementar el acumulador 1111 10
CLC Complementar el acarreo 1111 11
CMA Complementar el acumulador 1111 100
RAL Rotar acumulador y acarreo hacia la izquierda 1111 101
RAR Rotar acumulador y acarreo hacia la derecha 1111 110
TCC Sumar acarreo al acumulador y limpiar el acarreo 1111 111
DAC Decrementar el acumulador 1111 1000
TCS Restar acarreo del acumulador y limpiar el acarreo 1111 1001
STC Poner el acarreo a uno 1111 1010
DAA Ajuste decimal del acumulador 1111 1011
KBP Convierte un código 1 de 4 a binario en el acumulador 1111 1100
DCL Designar línea de comando 1111 1101