El Z80 fue el primer microprocesador de la tercera generación, sin embargo
es uno de los microprocesadores de 8 bits más empleado hasta nuestros
días, se encuentran versiones mejores del mismo tales como Z80A,
Z80B, Z80H, éstas se caracterizan por trabajar a frecuencias superiores
de 4 Mcps, 6.5 Mcps y 8 Mcps respectivamente, las características
fundamentales del Z80 son:
-
El transporte de señales se realiza sobre tres buses, el
bus de direcciones, el bus de datos, así como el bus de control.
-
Régimen de interrupción uniforme, con la posibilidad
de encadenar las prioridades de los circuitos periféricos.
-
Alto grado de programabilidad.
-
Reloj único.
-
Fuente de voltaje única de +5 Volts.
Un sistema con Z80 se completa con el empleo de memorias
estándar de
lectura y memorias estáticas
o dinámicas de lectura y escritura, además pertenecen al
sistema, puertos de entrada y salida paralelo, interfaces de comunicación
serie, sistemas contadores temporizadores y circuitos de acceso directo
a memoria.
El funcionamiento del sistema consiste en que las instrucciones del
microprocesador, que están en la memoria ROM, se ejecutan en una
forma secuencial de operación, la fuente de datos es, la propia
CPU, los periféricos o las
memorias, la transferencia interna de datos es a través del
CPU, exceptuando la transferencia de datos en el proceso de acceso directo
a memoria.
El Z80 es una versión apreciablemente mejorada tanto en circuiteria
como en características de programación del antiguo modelo
INTEL 8080, el Z80 resulta ser un microprocesador más rápido
y sencillo en el desarrollo de sistemas ya que solo usa una fuente de alimentación
de +5 Volts, contiene íntegramente todo el conjunto de instrucciones
del 8080, lo cual le permite ejecutar todos los programas escritos para
el CPU 8080, contiene el Z80 una expansión adicional de 80 instrucciones
de ahí se deriva su nombre, su repertorio suma un total de 156
instrucciones.
El microprocesador Z80 contiene las siguientes unidades
funcionales:
-
Unidad aritmética y lógica
-
El contador de programa
-
El apuntador del stack
-
Registros de propósito general
-
Registros de indice
-
Registros de interrupciones
-
Registro de banderas
-
Registro para refrescar memorias dinámicas
LA UNIDAD ARITMÉTICA Y LÓGICA
(ALU) Las operaciones del CPU Z80 se realizan con un grupo de dispositivos
lógicos conocidos comúnmente como unidad aritmética
y lógica (ALU) esta efectúa las siguientes operaciones;
-
Suma binaria.
-
Operaciones lógicas.
-
Complementar a dos.
-
Corrimiento de un bit a la derecha o a la izquierda.
-
Registro de resultados importantes como el acarreo, signo, acarreo
auxiliar, paridad o si el resultado es zero.
-
Comparaciones.
-
Poner, Limpiar o probar un bit.
EL CONTADOR DE PROGRAMA (PC) Es un registro de 16 bits, que continuamente tiene la dirección
de la localidad de memoria siguiente que se va a accesar, de esa localidad
obtiene el código de la instrucción a ejecutarse, en la CPU
el PC se incrementa en uno, cada vez que el microprocesador lee el código
de la instrucción contenida en la localidad direccionada, de esta
forma el contador del programa direcciona secuencialmente las localidades
de la memoria ROM, donde se encuentra almacenado el programa.
EL APUNTADOR DEL STACK (SP) El microprocesador Z80 cuenta con el registro de pila (SP) o stack
pointer que contiene una dirección de memoria RAM a partir de la
cual y en forma descendente, se almacenan los contenidos de un par de registros,
o a partir del cual en forma ascendente se obtienen los últimos
dos datos de 8 bits almacenados en esa área, el SP es un registro
de 16 bits, para almacenar en el stack el contenido de un par de registros
se utiliza la instrucción PUSH y para cargar a un par de registros
con los dos últimos bytes del stack se utiliza la instrucción
POP.
REGISTROS DE PROPÓSITO GENERAL El
microprocesador Z80 contiene 14 registros de 8 bits separados en dos grupos: GRUPO 1; A, B, C, D, E, H, y L
GRUPO 2; A', B', C', D', E', H' y L
Todas las instrucciones trabajan con los registros del grupo 1, con
las instrucciones EX y EXX se logra el intercambio entre los contenidos
de los registros del grupo 1 con los contenidos de los registros del grupo
2, el grupo 2 se utiliza en cierta forma como stack del grupo 1, dentro
de la propia CPU.
Con los 14 registros de propósito general se efectuan por medio
de las instrucciones las siguientes funciones;
-
Recibir datos desde la memoria.
-
Enviar datos hacia la memoria.
-
Incrementar o decrementar en uno su contenido.
-
Formar una dirección con el contenido de un par de registros.
-
Transferir datos entre los registros.
-
Obtener un operando durante las funciones de la ALU.
REGISTROS DE ÍNDICE IX e IY.
Estos son registros de 16 bits cada uno y conservan direcciones base
que se usan para modo de direccionamiento indexado, en este modo un registro
de índice se usa como base para apuntar a una región de la
memoria. La dirección efectiva de la localidad de memoria a donde
se va a depositar el dato o de donde se va a leer, se obtiene, al sumar
el contenido del registro de índice y el valor de 8 bits contenido
en el campo de "desplazamiento" de las instrucciones que emplean direccionamiento
con índice, estos desplazamientos se especifican con números
enteros signados con el complemento a dos.
REGISTRO DE INTERRUPCIONES
El Z80 opera en modo de interrupción en el que responde como
una "llamada" indirecta en respuesta a una solicitud de interrupción.
El registro I se usa para este propósito almacenando los 8 bits
más significativos de la dirección indirecta mientras que
el dispositivo que interrumpe proporciona los 8 bits menos significativos
de la dirección índice, esta característica permite
que las rutinas servicio de las interrupciones se localicen en cualquier
parte de la memoria y que se puedan accesar en un tiempo muy corto.
BANDERAS DE ESTADO El microprocesador Z80 tiene un registro de 8 Flips Flops, para monitorear
ciertos resultados de las operaciones de la ALU, a la información
que almacenan estos flips-flops se conoce como banderas de estado, las
banderas se actualizan después de cada operación con alguno
de los registros, no todas las operaciones modifican a todas las banderas,
de los 8 bits del registro de banderas, únicamente seis registran
información útil para el programador, cuatro de estas banderas
se prueban, esto es, se usan como condiciones de salto (JP), llamada (CALL),
o regreso (RET), estas banderas son:
-
La paridad o sobreflujo (P/V). El registro "P" se utiliza para realizar
funciones auxiliares necesarias para el usuario, le sirven para interpretar
los resultados, es uno cuando el resultado de la operación lógica
del complemento a dos produce un acarreo, de otro forma es un cero lógico..
-
SIGN (S); Set if into the result of ALU operation the most significant
bit = 1, otherwise reset.
-
ZERO (Z); Set if result of ALU operation is zero otherwise it is
reset.
-
AUXILIARY CARRY; Set if carry out results b3 into b4 otherwise reset.
-
CARRY (C); Set if result of addition or subtraction operation result
in a carry or borrow of the highest order bit, otherwise reset.
Terminales del microprocesador Z80
El Z80 es un microprocesador de 8 bits y cuenta con 158 instrucciones y
10 modos de direccionamiento. El circuito integrado del microprocesador
Z80 se deposita en un encapsulado Dual In Line de 40 terminales, de las
cuales 5 son únicamente de entrada, 24 son de salida y 8 son bidireccionales,
además, existen dos que sirven para conectar la fuente de alimentación
y otra más que es la entrada del reloj.
Todas ellas tienen características eléctricas compatibles
con la tecnología TTL, el intervalo de voltajes de entrada para
un cero lógico es; 0.3 £ Vil £
0.8 volts, el intervalo del voltaje de entrada para un uno lógico
es; 2.0 £ Vih £
Vcc, el voltaje máximo de salida para un cero lógico es;
Vol=0.4Volts, y el voltaje mínimo de salida para un uno lógico
es; Voh=2.4Volts
El Z80 opera con una fuente de alimentación de +5.0 Volts conectada
a la terminal 11, (pin 11), la tierra de la fuente se conecta a la terminal
GND, (pin 29), el consumo típico de corriente para el Z80 es de
90 mA.
Cuenta con 18 registros de 8 bits y 4 registros de 16 bits, todos los
registros del Z80 se implementan con una RAM
estática, los registros incluyen 2 bancos de 6 registros de
propósito general, que se usan individualmente como registros de
8 bits, o en pares como registros de 16 bits, existen también 2
bancos de registros denominados "acumulador" y "banderas", además
cuenta con 6 registros de propósito especial, 4 registros de 16
bits, PC, SP, IX e IY, y 2 registros de 8 bits, el registro del refresh
"R" y el registro de interrupciones "I", la aritmética de 8 bits
de las funciones, y las instrucciones lógicas de la CPU se ejecutan
en la ALU, la ALU reliza las siguientes funciones son:
-
Sumar.
-
Restar.
-
Función lógica AND.
-
Función lógica OR.
-
Función lógica OR-EX.
-
Comparación.
-
DespIazamientos a la derecha y a la izquierda.
-
Incrementar bytes.
-
Decrementar bytes.
-
Poner bits en uno lógico.
-
Poner bits en zero lógico y
-
Comprobar el estado de los bits
LÍNEAS DE DIRECCIONES (A0 - A15), Pines
30-40, 1-5 respectivamente Se forman con 16 líneas de direcciones, tienen la facultad de
establecerse en tercer estado, estas señales proporcionan las direcciones
correspondientes a intercambios de datos entre la memoria, la CPU y los
puertos de los periféricos, la capacidad de direccionamiento con
16 bits es de 64 Kbytes y 256 puertos de entrada y salida, son activas
en estado alto, los 8 bits menos significativos se usan para permitirle
al usuario seleccionar los 256 puertos E/S, (A0-A7), en donde A0 es el
bit menos significativo.
LÍNEAS DE DATOS (DO - D7), Pines 14,
15, 12, 8, 7, 9, 10 y 13 Se forman con 8 líneas de datos bidireccionales con capacidad
del tercer estado, son activas en nivel alto, se utilizan para el intercambio
de datos con la memoria, y periféricos de E/S.
CICLO DE MAQUINA UNO (M1), Salida activa en nivel bajo, indica que en este ciclo de máquina
uno el microprocesador va a obtener el código operacional de una
instrucción, en las instrucciones que tienen un código operacional
de 2 bytes esta señal se opera al obtener cada uno de los bytes
del código operacional, al igual que para indicar el reconocimiento
de un ciclo de interrupción cuando ocurre (IORQ)'.
REQUERIMIENTO DE MEMORIA (MREQ)', Pin 19 Salida activa en nivel bajo, esta señal indica una petición
que interrelaciona a la memoria con la CPU, obtiene una dirección
valida de las líneas de direccionamiento, esta terminal tiene capacidad
del tercer estado.
REQUERIMIfNTO DE E/S (IORQ), Pin 20 Es salida triestado activa en nivel bajo, esta señal indica
que la mitad baja del bus de direcciones mantiene una dirección
válida de E/S, para efectuar una operación de lectura o escritura
de E/S, se genera esta señal cuando el ciclo de maquina 1 (M1) reconoce
una interrupción, indica que el vector de respuesta de la interrupción
se coloca en el bus de datos, las operaciones de reconocimiento de interrupción
ocurren durante el ciclo de maquina 1, mientras que las operaciones de
E/S nunca se producen durante este ciclo.
LECTURA (RD), Pin 21 Salida triestado activa en nivel bajo, indica que la CPU desea leer
datos desde la memoria de un dispositivo externo de E/S, el dispositivo
E/S se direcciona a la memoria o al periférico, se usa esta terminal
para dirigir los datos al bus de datos de la CPU.
ESCRITURA (WR)', pin 22 Salida triestado activa en nivel bajo, indica que el bus de datos de
la CPU va a obtener datos válidos para ser almacenados en la memoria
o en algún dispositivo de E/S.
REFRESCO DE LA MEMORIA DINÁMICA (RFSH)',
Pin 28 Salida activa en nivel bajo, indica que los siete bits inferiores de
las líneas de direccionamiento contienen una dirección válida
de refresco de memoria, se utiliza para el mantenimiento de datos en memorias
dinámicas, con esta se efectúa una lectura de refrescamiento
para todas las memorias dinámicas.
PARO (HALT), Pin 18 Salida que activa en nivel bajo, indica que la CPU realiza una instrucción
por software de paro (HALT), y que espera una interrupción (NMI)'
o (INT)' antes de que continue la operación, mientras permanezca
en este estado la CPU ejecuta operaciones NOP, para mantener activo el
refresco de las memorias dinámicas, al aplicarse un reset se continua
con la operación.
ESPERA (WAIT), Pin 24
Es una entrada activa en nivel bajo, le indica al microprocesador que
la memoria direccionada o los dispositivos periféricos de E/S no
son tan rápidos como para realizar una transferencia de datos a
la velocidad de la CPU, o no están listos para una transferencia
de información, la CPU continua con el estado de espera durante
todo el tiempo que esta terminal es activa, esto les permite a los otros
dispositivos sincronizarse con la CPU.
REQUISICIÓN DE INTERRUPCIÓN MASCARABLE
(INT), Pin 16 Entrada activa en nivel bajo, esta terminal se acciona con dispositivos
E/S externos, una requisición (INT)' se atiende al final de la instrucción
que se ejecuta, si el enable interno del Flip Flop de interrupción
IFF1 controlado por software se encuentra habilitado, y si la requisición
de bus no esta activa, al aceptar la CPU una interrupción envía
una señal de reconocimiento, la petición de E/S se realiza
durante el ciclo de máquina 1, al principio del siguiente ciclo
de instrucción, esta petición solo es valida bajo control
del programa interno, reconociendo la CPU tres modos diferentes de interrupción.
INTERRUPCIÓN NO MASCARABLE (NMI)', Pin
17 Entrada que se activa con un flanco de bajada mediante un impulso que
identifica una interrupción obligada, posiciona al contador de programa
(PC) en la dirección 0066h desde donde continua el proceso, esta
tiene una prioridad más alta que la interrupción (INT)' y
siempre se reconoce al final de la instrucción que se ejecuta, independientemente
del estado del IFF1, el contador de programa PC se almacena automáticamente
en el stack pointer externo de forma que el usuario regrese al programa
en el mismo punto del que fué interrumpido.
REHABILITACIÓN (RESET), Pin 26 Entrada que se activa con un flanco de bajada mediante un impulso,
obliga a la CPU a reiniciar su actividad, coloca al contador de programa
(PC) en la localidad de inicio de memoria 0000h, desde donde empieza el
proceso, durante este tiempo el bus de direcciones y el bus de datos adquieren
el estado de alta impedancia y todas las terminales de control de salida
adquieren el estado inactivo.
REQUERIMIENTO DE LAS TERMINALES DE LA CPU (BUSRQ),
Pin 25 Esta entrada es activa en nivel bajo, le indica a la CPU que coloque
todas sus líneas en estado de alta impedancia, (tan pronto el ciclo
de maquina 1 actual termine), a petición del periférico externo
que desea tomar el control del sistema, regresa el control a la CPU cuando
esta señal (BUSRQ)' pasa al nivel alto, se utiliza para pedir que
el bus de direcciones, el bus de datos y las terminales de salida triestado
del bus de control vayan a un estado de alta impedancia de tal forma que
otros dispositivos controlen esos buses.
ENTREGA DE LAS TERMINALES DE LA CPU (BUSAK)',
Pin 23 Salida activa en nivel bajo, es una indicación para el periférico
que efectúa una petición (BUSRQ)' de que su petición
ha sido concedida por parte del microprocesador, sirve para indicar al
dispositivo que solicita este reconocimiento, que el bus de direcciones,
el bus de datos y el bus de las terminales de control triestado han sido
puestos en su estado de alta impedancia y que el dispositivo externo puede
ahora controlar estas terminales.
RELOJ (CK), Pin
Entrada configurada por un tren de impulsos útiles, es la diferencia
que permite la secuencia de tiempos de operación, se implanta físicamente
con un oscilador de onda cuadrada cuya frecuencia depende del tipo de características
de la CPU Z80, requiere oscilación de una fase con niveles TTL,
una forma de satisfacer todos los requerimientos de voltaje es por medio
de una resistencia de activación "pull up" de 330 ohms conectada
entre +Vcc y la terminal de salida de un oscilador implantado con circuitos
TTL que generen oscilaciones.
ALIMENTACIÓN POSITIVA DE +5 VOLTS (Vcc),
Pin 11 Esta es una entrada de alimentación de tensión de +5
volts con un 5 % de tolerancia.
TIERRA (GND), Pin 29 Terminal de alimentación negativa, requiere un potencial de
0.0 volts que sirven de referencia para la interconexión de los
dispositivos. |