47
UNIDAD 3 ARQUITECTURA DEL Z80 Microprocesadores Otoño 2011 1

UNIDAD 3 ARQUITECTURA DEL Z80galia.fc.uaslp.mx › ~rmariela › micro › unidad3.pdf · Arquitectura del Z80 3 El microprocesador Z80 fue fabricado por ZILOG en 1976, fue diseñado

  • Upload
    others

  • View
    10

  • Download
    1

Embed Size (px)

Citation preview

UNIDAD 3

ARQUITECTURA DEL Z80Microprocesadores

Otoño 2011

1

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

Datapath Simplificado13

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

Datapath del Z8024

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