13
Ejemplo de decodificación I/O En el tercer CM de las instrucciones “IN dir” y “OUT dir”, la parte baja y la parte alta del bus de direcciones contienen la misma información (la dirección de 8-bits del puerto). Se debe tener en cuenta esto al analizar el siguiente decodificador de direcciones:

Ejemplo de decodificación I/O - UNSL

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ejemplo de decodificación I/O - UNSL

Ejemplo de decodificación I/O• En el tercer CM de las instrucciones “IN dir” y “OUT dir”, la parte baja y la parte alta del bus

de direcciones contienen la misma información (la dirección de 8-bits del puerto).

• Se debe tener en cuenta esto al analizar el siguiente decodificador de direcciones:

Page 2: Ejemplo de decodificación I/O - UNSL

Ejemplo de decodificación I/O

Ciclos de máquinainstrucción OUT:

Dirección A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

Puerto de Entrada 1 1 1 1 X 1 0 0 1 1 1 1 X 1 0 0Puerto de Salida 1 1 1 1 X 0 0 1 1 1 1 1 X 0 0 1

Parte baja bus de direcciones

(dirección del puerto)

Parte alta bus de direcciones (idem)

Page 3: Ejemplo de decodificación I/O - UNSL

Familia de chips diseñados para el P 8085

8212:Latch de 8-bits (usado para des-multiplexar el bus de direcciones/datos)

8355 / 8755:2K bytes ROM/EPROM2 puertos de 8 bits (configurables como I/O)

8155 / 8156:256 bytes de RAM estatica2 puertos de 8 bits1 puerto de 6 bits1 timer de 14 bits

8253: 3 timers independientes de 16-bits

8279:controlador de display/teclado

Existen otros chips de la familia 8XXX con mas funciones: comunicacion serial (8251), paralela (8255), controlador de floppy disk (8271), crt, interrupciones, etc.

Page 4: Ejemplo de decodificación I/O - UNSL

El P Intel 8085: sistema mínimo con chips de la familia

Page 5: Ejemplo de decodificación I/O - UNSL

Chip intel 8155/8156Contenido:

• 256 bytes de SRAM (256x8)• 2 puertos de 8 bits (PA y PB)• 1 puerto de 6 bits (PC)• 1 timer programable de 14 bits

Terminales y diagrama de bloques:

Características especiales:

• Posee Latch interno para la parte baja del bus de direcciones.

• Decodificación interna de la línea IO/M.

Page 6: Ejemplo de decodificación I/O - UNSL

Chip intel 8155/8156Diagrama interno:

Page 7: Ejemplo de decodificación I/O - UNSL

Ejemplo: determinación de la dirección

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0Dirección (en el mapa de IO)

(IO/M=1)Puertos

0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 20h Control (W) / Status (R)

0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 21h PA

0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 22h PB

0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 23h PC

0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 24h Timer (LSB)

0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 25h Timer (MSB)

2h

Page 8: Ejemplo de decodificación I/O - UNSL

Ejemplo: determinación de la dirección

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0Dirección (en el mapa de Memoria)

(IO/M=0)0 0 1 0 0 X X X 0 0 0 0 0 0 0 0 2000h SRAM del 8155

(256x8)0 0 1 0 0 X X X 1 1 1 1 1 1 1 1 20FFh

2h

Page 9: Ejemplo de decodificación I/O - UNSL

Chip intel 8155/8156Registro de control:

Page 10: Ejemplo de decodificación I/O - UNSL

Ejemplo: displays de 7 segmentosProblema:

• Conectar dos displays de 7 segmentos usando un puerto del 8155.

• Escribir las instrucciones necesarias para inicializar y escribir un dato en los displays.

Page 11: Ejemplo de decodificación I/O - UNSL

Chip intel 8155: el Timer

• Se trata de un contador descendente de 14-bits. Cuenta los pulsos de la entrada TIMER IN.

• Entrega una onda cuadrada o un pulso, cuando se alcanza el cero (Terminal Count).

• Para programar el timer, primero se debe cargar el registro de longitud de cuenta (Count Length) de dos bytes.

• En el ejemplo anterior sería en las direcciones de I/O 24h (LSB) y 25h (MSB).

• Los bits 0-13 son la longitud de cuenta, mientras que los bits 14 y 15 determinan el modo de funcionamiento del timer:

LSBT7 T6 T5 T4 T3 T2 T1 T0 (24h)

MSBM2 M1 T13 T12 T11 T10 T9 T8 (25h)

Page 12: Ejemplo de decodificación I/O - UNSL

Chip intel 8155: el Timer

Modos del Timer del 8155:

Modo 0: En este modo, la salida del timer permanece en alto por la primer mitad del conteo y va a bajo en la segunda mitad, entregando asi un ciclo de onda cuadrada. La duración del pulso esta determinada por la longitud de cuenta y por la frecuencia de clock.

Modo 1: En este modo, el valor inicial de cuenta es recargado de forma automatica al final de cada cuenta, entragando asi una onda cuadrada contínua.

Modo 2: En este modo, un pulso único es entregado al final del conteo (con una duración de un clock).

Modo 3: Similar al Modo 2, salvo que el conteo inicial es recargado al final para proveer un tren contínuo de pulsos.

N = Longitud de cuenta

Page 13: Ejemplo de decodificación I/O - UNSL

Chip intel 8155: el Timer

Registro de control:

Ejemplo: “dividir la frecuencia de entrada por 3600”

3600 = E10h

LSB = 10h = 00010000b (parte baja)MSB = 4Eh = 01001110b (parte alta, incluye modo)

INICIO: MVI A,10hOUT 24h ; cargo LSB

MVI A,4EhOUT 25h ; cargo MSB

MVI A,1100XXXXbOUT 20h ; empieza a contar…

HLT