Upload
others
View
10
Download
1
Embed Size (px)
Citation preview
Contenido2
Arquitectura interna del Z-80
Interface
Ciclos de máquina y temporización del bus de comunicación.
Conjunto de Instrucciones
Arquitectura del Z803
El microprocesador Z80 fue fabricado por ZILOG en 1976, fue diseñado para ser compatible con INTEL 8080
El Z80 es un microprocesador de 8 bits de propósito general con 16 líneas de dirección.
Empaquetado en un dual-in-line package (DIP)
Las rangos de frecuencia de la familia Z80 van de 2.5MHz a 8MHz
Modelo de Hardware Z804
Las señales de interfaz del microprocesador se
clasifican en 6 grupos
Interfaz
Bus de dirección
Bus de datos
Señales de control
Solicitud Externa
Reconocimiento de Solicitud y señales especiales
Señales de potencia y frecuencia
Modelo de Hardware del Z805
Bus de dirección
Tiene 16 líneas unidireccionales
Es capaz de direccionar 216 = 64K
Es usado para enviar las direcciones de memoria o de
los dispositivos de I/O
Bus de datos
Consiste en 8 líneas bidireccionales
Usado para transferencia de datos desde el MPU
hacia la memoria o dispositivos I/O
Señales de Control y Estado
Machine Cycle One (M1)
Indica cuando un opcode ha sido adquirido
Memory Request (MREQ)
Indica cuando el bus tiene una dirección de memoria valida
I/O Request (IORQ)
Indica cuando la parte baja del bus (A7 – A0) tiene una dirección valida asociada a un dispositivo de I/O
Read (RD)
Indica que el microprocesador
esta listo para leer datos de
memoria o de un dispositivo
de I/O
Write (WR)
Indica que el microprocesador
esta listo para escribir datos
en la memoria o en un
dispositivo de I/O
Señales de Estado Señales de Control
6
Solicitud Externa
Reset
Cuando esta señal se activa, el Program Counter (PC), Interrupt register (I) y el memory refresh register (R) son puesto a cero
El bus de dirección y datos se encuentra en el estado de alta impedancia durante el reset.
Todas las señales de control se inactivan
La señal de RESET se activa externamente por medio de un switch
Se debe activar por al menos 3 ciclos de reloj para que el proceso de reset sea finalizado
7
Solicitud Externa
Interrupt Request
Esta señal de interrupción es generada por un dispositivo de I/O
Cuando el microprocesador acepta esta solicitud, activa la señal IORQ para indicar que la solicitud ha sido reconocida
Esta interrupción es enmascarable, esto significa que puede ser desactivada por software
Nonmaskarable Interrupt
Esta interrupción no puede ser desactivada por software
Se utiliza para implementar señales de procedimientos de emergencia
8
Solicitud Externa
Bus Request
Un dispositivo de I/O puede hacer solicitud del bus de datos, dirección y control activando esta señal
El dispositivo externo puede usar el bus y cuando ha terminado su operación regresa el control al microprocesador
Wait
Esta señal es usada por la memoria y los dispositivos de I/O para extender las operaciones del Z80
Esta señal es usada cuando la memoria o los dispositivos de I/O son mas lentos que el Z80
El Z80 introduce ciclos de espera hasta que la dirección en el bus de direcciones es valida
9
Reconocimiento de Solicitud y Señales
Especiales
Solamente las señales de Bus Request e Interrupt
requieren reconocimiento.
La Interrupción es reconocida por medio de las
señales IORQ y Machine cycle one (M1)
Bus request es reconocido por Bus Acknowledge
(BUSAK)
BUSAK indica que el bus de datos, direcciones, y las
señales de control han entrado en un estado de
alta impedancia. Por lo tanto pueden ser usadas
por el dispositivo solicitante.
10
Señales especiales
HALT, indica que el MPU ha ejecutado una
instrucción para detener su operación.
Refresh, indica que el bus de direcciones A7-A0
tiene una dirección de memoria actualizada.
Esta señal se usa en conjunción con Memory Request
para refrescar el contenido de una localidad de
memoria
EL Z80 usa un reloj de una sola fase y su
alimentación es de 5V
11
Estructura Interna del Z80
Registros de propósito general
Acumulador
Banderas
Conjunto de Registros Alternativos
Registros Apuntadores a Memoria
Registros Índice
Apuntador a la Pila (Stack)
Contador del Programa
Registros de Propósito Especifico
12
Registros
Registros de Propósito General
El Z80 tiene 6 registros de propósito general llamados
B,C, D, E, H, L
Estos registros son de 8 bits y son usados para
almacenar datos durante la ejecución del programa
Puede se combinados en pares para realizar
operaciones de 16 bits o almacenar direcciones de
memoria, BC, DE, HL
Estos registros se usan para cargar o copiar datos de
la memoria.
14
Acumulador
El acumulador es un registro de 8 bits que es parte
de la ALU y se identifica como el registro A
Este registro se utiliza para almacenar datos y
para realizar operaciones matemáticas y lógicas.
El resultado de las operaciones realizadas en la
ALU es almacenado en el acumulador
15
Banderas
ALU incluye 6 flip-flops que se modifican de
acuerdo a las condiciones después de que las
operaciones de la ALU han sido ejecutadas.
Estos flip-flops se conocen como banderas
Carry (C)
Half – Carry (H)
Suma o Resta (N)
Signo (S)
Cero (Z)
Paridad, Overflow (P/V)
16
S Z H P/V N C
D7 D0
Conjunto de Registros Alternativos
El Z80 incluye un conjunto de registros alternativos
referenciados como B’, C’ ,D’, E’, H’, L’ y el
acumulador A’ y el registro de banderas F’
Estos registros no están disponibles para el
programador
Sin embargo las instrucciones de intercambio
utilizan estos registros para el intercambio de datos
17
Apuntadores de Memoria
El Z80 incluye 4 registros de 16 bits y estos registros
son usados para almacenar las direcciones de
memoria y son llamados apuntadores a memoria.
Para leer o escribir datos (o instrucciones), el MPU
debe identificar la localidad de memoria por medio
de su dirección.
Estos apuntadores se utilizan para la lectura y
escritura de datos a memoria
18
Registro Índice
El Z80 tiene dos registros de 16 bits llamados
registros índice
Los registros índice identifican direcciones de
memoria para la transferencia de datos
Los registros son referenciados como IX, IY
19
Apuntador al Stack
El apuntador al stak es un registro de 16 bits que
apunta a una sección de memoria llamada stack
El stack es una área de memoria localizada en la
RAM, el principio del stack es definido por la
dirección de memoria almacenada en el apuntador.
El stack se utiliza para pasar parámetros a las
subrutinas así como datos temporales de las
subroutinas
20
Contador de Programa
El contador del programa es un registro de 16 bit.
El microprocesador utiliza este registro para
secuenciar la ejecución de instrucciones
La función del PC es apunta a la dirección de
memoria donde el próximo byte será adquirido
El microprocesador adquiere un byte de memoria e
incrementa el PC (PC = PC + 1) para que apunte a
la siguiente instrucción.
21
Registros de Propósito Especifico
El Z80 incluye dos registros de propósito especifico
que normalmente están ausentes en otros
microprocesadores
Estos registro son
Vector de Interrupción
Registro de Refresco de Memoria
22
Conjunto de Registros
Acumulador A Banderas F
B C
D E
H L
Registro Índice (IX)
Registro Índice (IY)
Apuntador al Stack (SP)
Contador de Programa (PC)
Vector de Interrupción (I) Refresco de Memoria (R)
23
Acumulador A’ Banderas F’
B’ C’
D’ E’
H’ L’
S Z H P/V N C
D7 D0
Ciclos de Maquina
El microprocesador Z80 esta diseñado para
ejecutar 158 instrucciones diferentes
Cada instrucción tiene dos partes
Operational Code (OpCode)
Es la identificación de la instrucción
Operandos
Es el dato sobre el cual se va a realizar el comando
Puede ser un byte o el contenido de un registro
Una instrucción puede contener uno o mas bytes
25
Ciclos de Maquina
Para entender las operaciones que realiza el MPU
debemos definir tres conceptos básicos
Ciclos de Instrucción
Es el tiempo requerido para la ejecución de una instrucción
En el Z80, los ciclos de instrucción van de 1 a 6 ciclos de
máquina
Ciclos de Maquina
Es el tiempo requerido para realizar una operación de
acceso a memoria, acceso a un dispositivo de I/O o solicitud
externa
Los ciclos de maquina van de 1 a 6 estados-T
26
Ciclos de Maquina
Estados-T
Ciclo de reloj
27
Total M-
cyclesInstruction M1 M2 M3 M4 M5 M6
1 INC BC opcode
2 ADD A,n opcode n
3 ADD HL,DE opcode internal internal
4 SET b,(HL) prefix opcode R(HL), set W(HL)
5LD
(IX+d),nprefix opcode d n,add W(IX+d)
6 INC (IY+d) prefix opcode d add R(IY+d),inc W(IY+d)
Las funciones de comunicación
Las funciones de comunicación del MPU se clasifican
en tres categorías básicas
Leer y escribir memoria
Leer y escribir en dispositivos de I/O
Reconocimiento de Solicitud Externa
Cada instrucción consiste de uno o mas ciclos de
maquina
28
Ciclos de Maquina y Señales de
Control
Ciclos de Maquina M1 MREQ IORQ RD WR
Opcode Fetch 0 0 1 0 1
Memory Read 1 0 1 0 1
Memory Write 1 0 1 1 0
I/O Read 1 1 0 0 1
I/O Write 1 1 0 1 0
Interrupt Ack 0 1 0 1 1
Nonmaskarable Interrupt 0 0 1 0 1
Bus Ack 1 Z Z Z Z
29
Adquisición de Instrucción
1. El Z80 introduce el contenido del PC en el bus de
direcciones
a. Incrementa el PC a la siguiente instrucción
b. El PC siempre apunta a la siguiente instrucción a ser
ejecutada
2. La dirección es decodificada por el decodificador
externo y el registro es identificado
30
Adquisición de Instrucción
3. El Z80 envía las señales de control MREQ y RD para
habilitar el buffer de salida
4. El contenido del registro de memoria son puesto en
el bus de datos y traídos al decodificador de
instrucciones.
5. El Z80 decodifica el opcode y ejecuta la instrucción,
31
Ejemplo
La instrucción LD B,A se encuentra almacenada en la
dirección 2002H
La instrucción es adquirida de memoria
El código operacional es 47H
La instrucción copia el contenido del acumulador en
el registro B
32
Dirección Código de Maquina Instrucción Tarea
2002H 01000111 47H LD B,A Copiar A en B
Adquisición de Instrucción
ALUDecodificador
de Instrucción
B C
D E
H L
IX
IY
SP
PC
47 H
Bus de datos Interno
ControladorBus de Dirección
Bus de datos
2002H
2002H
47H
MREQ
RD
33
Dirección Código de Maquina Instrucción Tarea
2002H 01000111 47H LD B,A Copiar A en B
Adquisición de Instrucción
El MPU debe obtener
la instrucción de
memoria para poder
ejecutarla
Ejemplo:
34
T1 T2 T3 T4
clk
A15-A0 2002H
M1
MREQ
RD
47HD7 – D0
WAIT
RFSH
Dirección Código de Maquina
Instrucción Tarea
2002H 01000111 47H
LD B,A Copiar A en B
Lectura de Memoria: Ejemplo
La instrucción LD A,9FH se usa para introducir el
número 9FH en el acumulador
Esta instrucción esta compuesta por dos bytes
El MPU debe leer el opcode y decodificarlos para
darse cuenta que debe leer un segundo byte de
memoria para completar la ejecución de esta
instrucción
35
Dirección Código de Maquina Instrucción Tarea
2000H 00111110 3EH LD A, 9FH Copiar 9FH al acumulador
2001H 100111101 9FH
Lectura de Memoria
El primer ciclo de maquina se usa para leer la
instrucción de memoria
Una vez que la instrucción ha sido decodificada, el
MPU se da cuenta de que requiere hacer otra
lectura de memoria
Después de que la adquisición de instrucción ha
sido realizada y el PC se ha incrementado, la señal
M1 debe estar inactiva para diferenciar el segundo
ciclo de adquisición
36
Lectura de Memoria
Las señales MREQ y RD se activan para indicar que
se requiere una lectura de memoria
Las señales MREQ, RD y la dirección se usan para
identificar el registro a ser leído y para habilitar el
chip de memoria
37
Lectura de Memoria38
T1 T2 T3 T4
clk
A15-A0
M1
RD
MREQ
D7 – D0
2000H Refresh Address 2001H
T1 T2 T3
WR High
3EH 9FH
Frecuencia del Reloj
f = 4MHz
Periodo
(1/f) = 0.25 µs
Tiempo de Ejecución
Fetch
(4T)× 0.25µs = 1.0µs
Lectura
(3T)× 0.25µs = 0.75µs
Instrucción
(7T) )× 0.25µs = 1.75µs
Escritura de Memoria: Ejemplo
La instrucción LD (HL),A copia el contenido del
acumulador a la locación de memoria indicada por
la dirección en el registro HL
Esta instrucción se compone de dos ciclos de
maquina, Opcode Fetch y Escritura de Memoria
39
Dirección Código de Maquina Instrucción Tarea
2003H 01110111 77H LD (HL), A
Copia el contenido de A en la
memoria . La dirección donde
se almacena el dato se
encuentra en HL
Escritura de Memoria40
T1 T2 T3 T4
clk
A15-A0
M1
RD
MREQ
D7 – D0
2003H Refresh Address 2350H
T1 T2 T3
WR
77H 9FH
Reconociendo Ciclos de Maquina
El numero de ciclos de maquina y ciclos de reloj
necesarios para ejecutar una instrucción están
dados por el fabricante
Sin embargo, existen se pueden calcular una
aproximado a los ciclos de maquina siguiendo las
siguientes reglas
El primer ciclo de maquina de una instrucción siempre
es opcode fetch
41
Reconociendo Ciclos de Maquina
El procesador no puede ejecutar una instrucción hasta que
todos los bytes han sido leídos
Ejemplo, la instrucción jump tiene 3 bytes. Entonces la instrucción requiere
3 ciclos de maquina, Opcode fetch, lectura de memoria, lectura de
memoria
Si el numero de ciclos de maquina es mayor que el numero de
bytes, los ciclos extras son identificados por la función de una
instrucción.
Por ejemplo LD (HL),A es una instrucción de un byte pero requiere un
ciclo de maquina extra para escribir en memoria
42
Revision de Conceptos Importantes
Señales Acciones
M1La primera operación en un ciclo de instrucción siempre es
opcode fetch y es indicado por esta señal
M1, MREQ,
RD
Opcode fetch y lectura de memoria usan las señales MREQ y RD.
Estas operaciones se diferencian por medio de la señal M1
Opcode fetch lee instrucciones
Lectura de Memoria lee datos o direcciones
MREQ, RD Lectura de Memoria
MREQ, WR Escritura de Memoria
El microprocesador no puede escribir y leer al mismo tiempo
La lectura y escritura de memoria requiere de 3 ciclos de reloj.
Sin embargo puede tomar hasta 4 ciclos en algunas instrucciones
43
Generando Señales de Control
Señales Señales Tarea
MREQ RD Leer de una localidad de memoria
IOREQ RD Leer de un dispositivo de entrada
MREQ WR Escribir a una localidad de Memoria
IOREQ WR Escribir a un dispositivo de salida
44
RD
MREQ
WR
RD
IOREQ
WR
MEMRD
MEMWR
IORD
IOWR
DecoderMEMRD
MEMWR
RD
WR
MREQ
Resumen
Cuando el Z80 es encendido, el microprocesador
realiza el proceso de reset.
La primera operación que el MPU realiza es
Opcode Fetch
El MPU es una maquina secuencial, por lo tanto ira
de una instrucción a la otra, a menos que se le
indique lo contrario
45
Resumen
El Opcode indica cuantos bytes deben ser leídos
para completar la instrucción
La señal M1 tiene dos propósitos
Distingue el ciclo de adquisición del opcode de otra
operación
Se usa para indicar que una interrupción ha sido
reconocida
46
Resumen
Estas guías nos permiten reconocer los ciclos de
maquina
El número de ciclos de maquina en una instrucción indican
cuantas veces el microprocesador debe leer la memoria.
El primer ciclo de maquina de cualquier instrucción es
opcode fetch
El MPU debe leer todos los bytes que constituyen la
instrucción antes de poder ejecutarla
Si la instrucción requiere mas ciclos de maquina además de
los requeridos para leer la instrucción, entonces esos ciclos
están asociados a la ejecución de la instrucción
47