Sunteți pe pagina 1din 47

1

UNIDAD 3 ARQUITECTURA DEL Z80


Microprocesadores Otoo 2011

Contenido
2

Arquitectura interna del Z-80 Interface Ciclos de mquina y temporizacin del bus de comunicacin. Conjunto de Instrucciones

Arquitectura del Z80


3

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

Modelo de Hardware Z80


4

Las seales de interfaz del microprocesador se clasifican en 6 grupos


Bus de direccin
Bus de datos Seales de control Interfaz Solicitud Externa Reconocimiento de Solicitud y seales especiales Seales de potencia y frecuencia

Modelo de Hardware del Z80


5

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 Control y Estado


6

Seales de Estado

Seales de Control

Machine Cycle One (M1)

Indica cuando un opcode ha sido adquirido Indica cuando el bus tiene una direccin de memoria valida

Read (RD)

Memory Request (MREQ)

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

I/O Request (IORQ)

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

Reconocimiento de Solicitud y Seales Especiales


10

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

EL Z80 usa un reloj de una sola fase y su alimentacin es de 5V

Estructura Interna del Z80


12

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

Registros de Propsito General


El

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

Conjunto de Registros Alternativos


17

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 contador del programa es un registro de 16 bit.


El microprocesador utiliza este registro para secuenciar la ejecucin de instrucciones La funcin del PC es apunta a la direccin de memoria donde el prximo byte ser adquirido El microprocesador adquiere un byte de memoria e incrementa el PC (PC = PC + 1) para que apunte a la siguiente instruccin.

Registros de Propsito Especifico


22

El Z80 incluye dos registros de propsito especifico que normalmente estn ausentes en otros microprocesadores

Estos registro son


Vector

de Interrupcin Registro de Refresco de Memoria

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

Datapath del Z80


24

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

Una instruccin puede contener uno o mas bytes

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

ADD HL,DE SET b,(HL) LD (IX+d),n

INC (IY+d)

prefix

opcode

add

R(IY+d),inc

W(IY+d)

Las funciones de comunicacin


28

Las funciones de comunicacin del MPU se clasifican en tres categoras bsicas


Leer

y escribir memoria Leer y escribir en dispositivos de I/O Reconocimiento de Solicitud Externa

Cada instruccin consiste de uno o mas ciclos de maquina

29

Ciclos de Maquina y Seales de Control


Ciclos de Maquina Opcode Fetch Memory Read Memory Write I/O Read M1 0 1 1 1 MREQ 0 0 0 1 IORQ 1 1 1 0 RD 0 0 1 0 WR 1 1 0 1

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.

El Z80 introduce el contenido del PC en el bus de direcciones


a.

b.

Incrementa el PC a la siguiente instruccin El PC siempre apunta a la siguiente instruccin a ser ejecutada

2.

La direccin es decodificada por el decodificador externo y el registro es identificado

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

Cdigo de Maquina 01000111 47H

Instruccin LD B,A

Tarea Copiar A en B
Bus de datos

Bus de datos Interno

ALU

Decodificador de Instruccin

Controlador

B C D E H L IX IY SP PC

47 H

2002H

2002H Bus de Direccin

MREQ RD 47H

Adquisicin de Instruccin
34

El MPU debe obtener la instruccin de memoria para poder ejecutarla Ejemplo:


Cdigo de Maquina 01000111 Tarea Copiar A en B 47H

T1 clk A15-A0

T2

T3

T4

2002H

M1
MREQ RD D7 D0 WAIT RFSH
47H

Direccin 2002H Instruccin LD B,A

Lectura de Memoria: Ejemplo


35

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

T1 clk A15-A0 M1 MREQ RD

T2

T3

T4

T1

T2

T3

2000H

Refresh Address

2001H

Frecuencia del Reloj f = 4MHz Periodo (1/f) = 0.25 s Tiempo de Ejecucin

WR D7 D0

High

3EH

9FH

Fetch (4T) 0.25s = 1.0s Lectura (3T) 0.25s = 0.75s Instruccin (7T) ) 0.25s = 1.75s

Escritura de Memoria: Ejemplo


39

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

Reconociendo Ciclos de Maquina


41

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

primer ciclo de maquina de una instruccin siempre es opcode fetch

Reconociendo Ciclos de Maquina


42

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

Revision de Conceptos Importantes


43

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

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

Generando Seales de Control


44

Seales MREQ IOREQ MREQ IOREQ


RD MREQ WR RD IOREQ

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

Estas guas nos permiten reconocer los ciclos de maquina


El nmero de ciclos de maquina en una instruccin indican cuantas veces el microprocesador debe leer la memoria. El primer ciclo de maquina de cualquier instruccin es opcode fetch El MPU debe leer todos los bytes que constituyen la instruccin antes de poder ejecutarla Si la instruccin requiere mas ciclos de maquina adems de los requeridos para leer la instruccin, entonces esos ciclos estn asociados a la ejecucin de la instruccin

S-ar putea să vă placă și