Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenido
2
Arquitectura interna del Z-80 Interface Ciclos de mquina y temporizacin del bus de comunicacin. Conjunto de Instrucciones
El microprocesador Z80 fue fabricado por ZILOG en 1976, fue diseado para ser compatible con INTEL 8080 El Z80 es un microprocesador de 8 bits de propsito general con 16 lneas de direccin. Empaquetado en un dual-in-line package (DIP)
Las rangos de frecuencia de la familia Z80 van de 2.5MHz a 8MHz
Bus de direccin
Tiene
16 lneas 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 lneas bidireccionales Usado para transferencia de datos desde el MPU hacia la memoria o dispositivos I/O
Seales de Estado
Seales de Control
Indica cuando un opcode ha sido adquirido Indica cuando el bus tiene una direccin de memoria valida
Read (RD)
Indica que el microprocesador esta listo para leer datos de memoria o de un dispositivo de I/O Indica que el microprocesador esta listo para escribir datos en la memoria o en un dispositivo de I/O
Write (WR)
Indica cuando la parte baja del bus (A7 A0) tiene una direccin valida asociada a un dispositivo de I/O
Solicitud Externa
7
Reset
Cuando
esta seal se activa, el Program Counter (PC), Interrupt register (I) y el memory refresh register (R) son puesto a cero El bus de direccin y datos se encuentra en el estado de alta impedancia durante el reset. Todas las seales de control se inactivan La seal 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
Solicitud Externa
8
Interrupt Request
Esta seal de interrupcin es generada por un dispositivo de I/O Cuando el microprocesador acepta esta solicitud, activa la seal IORQ para indicar que la solicitud ha sido reconocida Esta interrupcin es enmascarable, esto significa que puede ser desactivada por software
Nonmaskarable Interrupt
Esta interrupcin no puede ser desactivada por software Se utiliza para implementar seales de procedimientos de emergencia
Solicitud Externa
9
Bus Request
Un dispositivo de I/O puede hacer solicitud del bus de datos, direccin y control activando esta seal El dispositivo externo puede usar el bus y cuando ha terminado su operacin regresa el control al microprocesador
Wait
Esta seal es usada por la memoria y los dispositivos de I/O para extender las operaciones del Z80 Esta seal 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 direccin en el bus de direcciones es valida
Solamente las seales de Bus Request e Interrupt requieren reconocimiento. La Interrupcin es reconocida por medio de las seales IORQ y Machine cycle one (M1) Bus request es reconocido por Bus Acknowledge (BUSAK) BUSAK indica que el bus de datos, direcciones, y las seales de control han entrado en un estado de alta impedancia. Por lo tanto pueden ser usadas por el dispositivo solicitante.
Seales especiales
11
HALT, indica que el MPU ha ejecutado una instruccin para detener su operacin. Refresh, indica que el bus de direcciones A7-A0 tiene una direccin de memoria actualizada.
Esta
seal se usa en conjuncin con Memory Request para refrescar el contenido de una localidad de memoria
Registros de propsito general Acumulador Banderas Conjunto de Registros Alternativos Registros Apuntadores a Memoria Registros ndice Apuntador a la Pila (Stack) Contador del Programa Registros de Propsito Especifico
Datapath Simplificado
13
Registros
14
Z80 tiene 6 registros de propsito general llamados B,C, D, E, H, L Estos registros son de 8 bits y son usados para almacenar datos durante la ejecucin 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.
Acumulador
15
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 matemticas y lgicas.
El resultado de las operaciones realizadas en la ALU es almacenado en el acumulador
Banderas
16
ALU incluye 6 flip-flops que se modifican de acuerdo a las condiciones despus 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)
D7
D0
S Z
P/V N C
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 estn disponibles para el programador Sin embargo las instrucciones de intercambio utilizan estos registros para el intercambio de datos
Apuntadores de Memoria
18
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 direccin. Estos apuntadores se utilizan para la lectura y escritura de datos a memoria
Registro ndice
19
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
Apuntador al Stack
20
El apuntador al stak es un registro de 16 bits que apunta a una seccin de memoria llamada stack El stack es una rea de memoria localizada en la RAM, el principio del stack es definido por la direccin de memoria almacenada en el apuntador.
El stack se utiliza para pasar parmetros a las subrutinas as como datos temporales de las subroutinas
Contador de Programa
21
El Z80 incluye dos registros de propsito especifico que normalmente estn ausentes en otros microprocesadores
Conjunto de Registros
23
Acumulador A B D H
Banderas F C E L
Acumulador A B D H
Banderas F C E L
Registro ndice (IX) Registro ndice (IY) Apuntador al Stack (SP) Contador de Programa (PC) Vector de Interrupcin (I) Refresco de Memoria (R)
D7 D0
S Z
P/V N C
Ciclos de Maquina
25
El microprocesador Z80 esta diseado para ejecutar 158 instrucciones diferentes Cada instruccin tiene dos partes
Operational
Es
Code (OpCode)
la identificacin de la instruccin
Operandos
Es
el dato sobre el cual se va a realizar el comando Puede ser un byte o el contenido de un registro
Ciclos de Maquina
26
Para entender las operaciones que realiza el MPU debemos definir tres conceptos bsicos
Ciclos
Es
de Instruccin
el tiempo requerido para la ejecucin de una instruccin En el Z80, los ciclos de instruccin van de 1 a 6 ciclos de mquina
Ciclos
Es
de Maquina
el tiempo requerido para realizar una operacin 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
Ciclos de Maquina
27
Estados-T
Ciclo
Total Mcycles 1 2 3 4 5
de reloj
Instruction INC BC ADD A,n M1 opcode opcode opcode prefix prefix n internal opcode opcode internal R(HL), set d W(HL) n,add W(IX+d) M2 M3 M4 M5 M6
INC (IY+d)
prefix
opcode
add
R(IY+d),inc
W(IY+d)
29
I/O Write
Interrupt Ack Nonmaskarable Interrupt Bus Ack
1
0 0 1
1
1 0 Z
0
0 1 Z
1
1 0 Z
0
1 1 Z
Adquisicin de Instruccin
30
1.
b.
2.
Adquisicin de Instruccin
31
3.
El Z80 enva las seales de control MREQ y RD para habilitar el buffer de salida El contenido del registro de memoria son puesto en el bus de datos y trados al decodificador de instrucciones.
El Z80 decodifica el opcode y ejecuta la instruccin,
4.
5.
Ejemplo
32
La instruccin LD B,A se encuentra almacenada en la direccin 2002H La instruccin es adquirida de memoria El cdigo operacional es 47H La instruccin copia el contenido del acumulador en el registro B
Cdigo de Maquina 01000111 47H Instruccin LD B,A Tarea Copiar A en B
Direccin 2002H
Adquisicin de Instruccin
33
Direccin 2002H
Instruccin LD B,A
Tarea Copiar A en B
Bus de datos
ALU
Decodificador de Instruccin
Controlador
B C D E H L IX IY SP PC
47 H
2002H
MREQ RD 47H
Adquisicin de Instruccin
34
T1 clk A15-A0
T2
T3
T4
2002H
M1
MREQ RD D7 D0 WAIT RFSH
47H
La instruccin LD A,9FH se usa para introducir el nmero 9FH en el acumulador Esta instruccin esta compuesta por dos bytes
Cdigo de Maquina
00111110 3EH 100111101 9FH
Direccin
2000H 2001H
Instruccin
LD A, 9FH
Tarea
Copiar 9FH al acumulador
El MPU debe leer el opcode y decodificarlos para darse cuenta que debe leer un segundo byte de memoria para completar la ejecucin de esta instruccin
Lectura de Memoria
36
El primer ciclo de maquina se usa para leer la instruccin de memoria Una vez que la instruccin ha sido decodificada, el MPU se da cuenta de que requiere hacer otra lectura de memoria Despus de que la adquisicin de instruccin ha sido realizada y el PC se ha incrementado, la seal M1 debe estar inactiva para diferenciar el segundo ciclo de adquisicin
Lectura de Memoria
37
Las seales MREQ y RD se activan para indicar que se requiere una lectura de memoria Las seales MREQ, RD y la direccin se usan para identificar el registro a ser ledo y para habilitar el chip de memoria
Lectura de Memoria
38
T2
T3
T4
T1
T2
T3
2000H
Refresh Address
2001H
WR D7 D0
High
3EH
9FH
Fetch (4T) 0.25s = 1.0s Lectura (3T) 0.25s = 0.75s Instruccin (7T) ) 0.25s = 1.75s
La instruccin LD (HL),A copia el contenido del acumulador a la locacin de memoria indicada por la direccin en el registro HL
Cdigo de Maquina
01110111 77H
Direccin
2003H
Instruccin
LD (HL), A
Tarea
Copia el contenido de A en la memoria . La direccin donde se almacena el dato se encuentra en HL
Esta instruccin se compone de dos ciclos de maquina, Opcode Fetch y Escritura de Memoria
Escritura de Memoria
40
T1 clk A15-A0 M1
T2
T3
T4
T1
T2
T3
2003H
Refresh Address
2350H
MREQ
RD WR D7 D0
77H
9FH
El numero de ciclos de maquina y ciclos de reloj necesarios para ejecutar una instruccin estn dados por el fabricante
Sin embargo, existen se pueden calcular una aproximado a los ciclos de maquina siguiendo las siguientes reglas
El
El procesador no puede ejecutar una instruccin hasta que todos los bytes han sido ledos
Ejemplo, la instruccin jump tiene 3 bytes. Entonces la instruccin 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 funcin de una instruccin.
Por ejemplo LD (HL),A es una instruccin de un byte pero requiere un ciclo de maquina extra para escribir en memoria
Seales
Acciones La primera operacin en un ciclo de instruccin siempre es opcode fetch y es indicado por esta seal Opcode fetch y lectura de memoria usan las seales MREQ y RD. Estas operaciones se diferencian por medio de la seal M1 Opcode fetch lee instrucciones Lectura de Memoria lee datos o direcciones Lectura de Memoria Escritura de Memoria
M1
M1, MREQ, RD MREQ, RD MREQ, WR
Seales RD RD WR WR
Tarea Leer de una localidad de memoria Leer de un dispositivo de entrada Escribir a una localidad de Memoria Escribir a un dispositivo de salida
MREQ
MEMRD MEMWR
RD IORD IOWR WR
Decoder
MEMRD
MEMWR
WR
Resumen
45
Cuando el Z80 es encendido, el microprocesador realiza el proceso de reset. La primera operacin que el MPU realiza es Opcode Fetch
El MPU es una maquina secuencial, por lo tanto ira de una instruccin a la otra, a menos que se le indique lo contrario
Resumen
46
El Opcode indica cuantos bytes deben ser ledos para completar la instruccin La seal M1 tiene dos propsitos
Distingue
el ciclo de adquisicin del opcode de otra operacin Se usa para indicar que una interrupcin ha sido reconocida
Resumen
47