Dma

ACCESO DIRECTO A MEMORIA ♦ Utiliza los ciclos en que la CPU no accede a los buses. ♦ Transferencias entre periféricos y

Views 89 Downloads 1 File size 91KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • alan
Citation preview

ACCESO DIRECTO A MEMORIA ♦ Utiliza los ciclos en que la CPU no accede a los buses. ♦ Transferencias entre periféricos y la memoria. ♦ Transferencia de bloques de memoria a memoria. BPRI HLDA CONTROL

CPU

BPRI HLDA

DIRECCIONES

MEMORIA

PERIF. 1 CONTROL

DATOS

DMA

PERIF. 2 PERIF. 3 PERIF. 4

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A El bus de direcciones para los accesos DMA

DRAM EPROM

Subsistema de memoria

Dispositivos E/S

A3 – A36 BE0 – BE7

Lógica digital

CPU A0-A23

Bus para las transferencias DMA

ACCESO DIRECTO A MEMORIA

EOP RESET CS READY CLOCK AEN

HLDA

HOLD

IOW#

IOR#

MEMW#

MEMR#

El controlador de DMA 8237 A

4

8237-A

4

A0..A3

A4..A7 ADSTB A8..A15 D0..D7

DACK0 DACK1 DACK2 DACK3

DREQ0 DREQ1 DREQ2 DREQ3

8

• Controla hasta 4 canales de DMA • Expandible indefinidamente • Permite transferencias E/S-Memoria y Memoria-Memoria • Hasta 1,6 Mbytes/s (Reloj de 5 MHz) • Bloques de hasta 64 Kbytes

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A

Símbolo Tipo

Nombre

Función

Vcc

POWER

+5 V

Vss

GROUND

Tierra

CLK

E

CLOCK INPUT

Entrada de reloj (3 a 5 MHz)

CS

E

CHIP SELECT

Habilitación del CI para acceder a sus registros

RESET

E

RESET

Inicializa el CI

READY

E

READY

Extiende la duración del ciclo de bus

HLDA

E

HOLD ACKN.

HOLD

S

HOLD REQUEST Petición de los buses a la CPU (BPRI)

DREQ0 DREQ3

E

DMA REQUEST

DACK0 DACK3

S

DMA ACKN.

Notifica concesión de ciclo DMA a los periféricos solicitantes

A0-A3

E/S

ADDR. BUS

Entradas para direccionar regs. Internos Salida de los 4 bits más bajos de la dir. DMA

A4-A7

S

ADDR. BUS.

4 bits siguientes de la dirección DMA

Confirma que la CPU ha liberado los buses

Entradas de petición de DMA por parte de los periféricos (4 canales)

Bus de datos y direcciones multiplexado: A8-A15

ADDR. BUS (DATA BUS)

• Permite lectura y escritura en regs. internos • Salida de byte alto de la dirección en DMA • Entrada/salida de datos en memoria en las transferencias entre memoria y memoria

ADDR. STROBE

Indicación de captura de dirección en LATCH

E/S (D0-D7)

ADSTB

S

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A Símbolo Tipo

Nombre

Función

IOR

E/S

I/O READ

Entrada indica lectura en regs. Internos Salida indica ciclo DMA de escritura

IOW

E/S

I/O WRITE

Entrada indica escritura en regs. Internos Salida indica ciclo DMA de lectura

MEMR

S

MEMORY READ

MEMW

S

MEMORY WRITE Indica ciclo de escritura en memoria

EOP

E/S

END OF PROCESS

AEN

S

ADDR. ENABLE

Indica ciclo de lectura en memoria

Como entrada, detiene el ciclo DMA Como salida indica final del ciclo DMA Indica que se está produciencdo ciclo DMA

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A Hacia el bus de direcciones Estructura de un canal de DMA

SÓLO LECTURA

Contador de palabras transferidas

Contador de direcciones

SÓLO ESCRITURA

16 bits

Registro base de palabras a transferir

Registro base de direcciones

Bus interno 8 bits

Registros de 16 bits Bus interno de 8 bits Un conjunto de 4 por cada canal

UP/ DOWN

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A

Registros comunes a los 4 canales

ESTADO (8 bits)

Indica el estado actual de las transferencias DMA que están siendo atendidas

COMANDOS (8 bits)

Configura el modo de funcionamiento del controlador de DMA

TEMPORAL (8 bits)

Se utiliza para las transferencias entre memoria y memoria

MÁSCARA (4 bits)

Permite enmascarar de forma individual los diferentes canales de petición de DMA

PETICIÓN (4 bits)

Permite realizar peticiones por software, en lugar de activar la línea DREQ.

Registros replicados en cada uno de los 4 canales DIRECCIÓN BASE (16 bits)

Dirección inicial de la transferencia de datos

PALABRAS TRANSFERIDAS (16 b)

Número de palabras que van a transferirse

CONTADOR DE DIRECCIONES (16 bits)

Dirección actual de la transferencia

CONTADOR DE PALABRAS (16 bits) MODO (4 bits)

Número de palabras que quedan por transferir

Indica el tipo de transferencia DMA que debe llevarse a cabo.

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A

Bus de direcciones de transferencias DMA (A0-A23)

Lógica de selección

CS

A8-A15

A0-A3 A4-A7 ADSTB

DREQ (x4)

AEN

STB OE

8237 A

IOWT

8 bits

IORD

MEMWT

MEMRD

DACK (x4)

LATCH 8 bit

Bus multiplexado A8-A15 (D0-D7)

Conectado a 8 bits más bajos (XBUS) Bus de datos 64 bits

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A LOS REGISTROS DE PÁGINA

Registro de Página canal 0

BUFFER

Registro de Página canal 1

BUFFER

Registro de Página canal 2

BUFFER

Registro de Página canal 3

BUFFER

A16-A23 OE

A16-A23 OE

A16-A23 OE

A16-A23 OE

AEN DACK3

8237A

A0-A15

Bus de direcciones DMA (A0 – A23)

Bus de datos (XBUS) (D0 – D7)

Controlan las líneas más altas del bus de direcciones DMA Se cargan a través de puertos de E/S

ACCESO DIRECTO A MEMORIA

Lógica digital

El controlador de DMA 8237 A

MEMRD

Periférico 1

MEMWT

Bus de control

IORD

Bus de datos

Bus de direcciones de transferencias DMA (A0 – A23)

DRAM

IOWT

Periférico 2

MEMRD MEMWT IORD IOWT

8237

DACK0 DREQ0

DACK1 DREQ1

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A

MODOS DE TRANSFERENCIA DMA

1. TRANSFERENCIA SINGLE Transfiere los datos uno a uno La CPU recupera el control entre cada transferencia

2. TRANSFERENCIA BLOQUE El controlador de DMA mantiene el control de los buses hasta que se finaliza la transferencia del bloque completo. La transferencia puede interrumpirse si se activa la señal EOP.

3. TRANSFERENCIA DEMANDA Transferencia bajo control del periférico. Se transfieren datos mientras la línea DREQ se mantenga activa. Cuando se desactiva la señal DREQ se detiene la transferencia. Los buses pertencen al controlador mientras DREQ es activa.

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A

MODO CASCADA Permite expandir indefinidamente el controlador 8237A Líneas HOLD y HLDA conectadas a DREQ y DACK 8237A DREQ0 DACK0

HOLD HLDA

8237A DREQ0 DACK0

HOLD HLDA

8237A DREQ0 DACK0

HOLD HLDA

DREQ1 DACK1 DREQ2 DACK2 DREQ3 DACK3

DREQ1 DACK1 DREQ2 DACK2

8237A

DREQ3 DACK3

DREQ0 DACK0

HOLD HLDA

DREQ1 DACK1 DREQ2 DACK2 DREQ3 DACK3

DREQ1 DACK1 DREQ2 DACK2 DREQ3 DACK3

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A TIPOS DE TRANSFERENCIA En todos los modos: SINGLE, BLOQUE y DEMANDA:

LECTURA

Lectura en memoria y escritura en periférico Activas: MEMRD e IOWT

ESCRITURA

Escritura en memoria y lectura en periférico Activas: MEMWT e IORD

VERIFY

Direcciona la memoria pero no activa ninguna de las líneas de control

Sólo en modo BLOQUE:

Copia zonas de memoria MEMORIA A MEMORIA (en desuso)

Utiliza dos canales de DMA: Canal 0 como fuente Canal 1 como destino Se inicia haciendo petición por software al canal 0 Utiliza el registro temporal como almacén El ciclo dura el doble.

AUTOINICIALIZACIÓN Los registros de base (dirección inicial y palabras a transferir) conservan su valor después de terminada la transferencia. No es necesario reinicializarlos de nuevo.

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A REGISTROS INTERNOS (todos de 8 bits) Dir. (A0-A3)

LECTURA

ESCRITURA

0

DIRECCIÓN ACTUAL

DIRECCIÓN BASE

1

CONTADOR, VALOR ACTUAL

CONTADOR BASE

2

DIRECCIÓN ACTUAL

DIRECCIÓN BASE

3

CONTADOR, VALOR ACTUAL

CONTADOR BASE

4

DIRECCIÓN ACTUAL

DIRECCIÓN BASE

5

CONTADOR, VALOR ACTUAL

CONTADOR BASE

6

DIRECCIÓN ACTUAL

DIRECCIÓN BASE

7

CONTADOR, VALOR ACTUAL

CONTADOR BASE

8

REGISTRO DE ESTADO

REGISTRO DE COMANDO

9

REGISTRO DE PETICIÓN

A

MÁSCARA SET/RESET

B

REGISTRO DE MODO

C

CLEAR FLIP FLOP

D

REGISTRO TEMPORAL

MASTER CLEAR

E

BORRAR REG. DE MÁSCARA

F

MÁSCARAS INDIVIDUALES

En direcciones 0 a 7: registros de 16 bits FLIP FLOP a 0 FLIP FLOP a 1 Conmuta automáticamente

Se accede al byte bajo Se accede al byte alto

CANAL 0 1 2 3

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A REGISTRO de COMANDO (escritura) BIT

FUNCIÓN

0

Habilita / deshabilita transferencias entre memoria y memoria

1

Mantener dirección del canal 0 (Para transferir el mismo byte múltiples veces)

2

Habilita / deshabilita el controlador DMA

3

Temporización normal o comprimida

4

Prioridad fija o rotativa

5

No utilizado

6

Flanco activo de DREQ (subida / bajada)

7

Flanco activo de DACK (subida / bajada)

REGISTRO de ESTADO (lectura) BIT

FUNCIÓN

0

Alcanzado fin de cuenta en canal 0

1

Alcanzado fin de cuenta en canal 1

2

Alcanzado fin de cuenta en canal 2

3

Alcanzado fin de cuenta en canal 3

4

Petición pendiente en canal 0

5

Petición pendiente en canal 1

6

Petición pendiente en canal 2

7

Petición pendiente en canal 3

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A REGISTRO de MODO (escritura) BIT

FUNCIÓN

0,1

Selecciona el canal al que se refiere 00

Transferencia en modo VERIFY

01

Transferencia modo ESCRITURA

10

Transferencia modo LECTURA

11

Ilegal

0

Deshabilita AUTOINICIALIZACIÓN

1

Habilita AUTOINICIALIZACIÓN

0

Direcciones se incrementan

1

Direcciones se decrementan

00

Modo DEMANDA

01

Modo SINGLE

10

Modo BLOQUE

11

Modo CASCADA

2,3

4

5

6,7

REGISTRO TEMPORAL (lectura) • Usado durante las transferencias memoria a memoria • Sólo puede leerse • Almacena el último byte transferido

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A REGISTRO de PETICIÓN (escritura) BIT

FUNCIÓN

0,1

Selecciona el canal al que se refiere 0

Activa petición por SOFTWARE

1

Desactiva petición

2

REGISTRO de MÁSCARA (escritura) Puede modificarse de dos formas: A través de la dirección 0A: BIT

FUNCIÓN

0,1

Selecciona el canal al que se refiere 0

Activa máscara

1

Desactiva máscara

2

A través de la dirección 0F: BIT

FUNCIÓN

0

Máscara del canal 0

1

Máscara del canal 1

2

Máscara del canal 2

3

Máscara del canal 3

ACCESO DIRECTO A MEMORIA El controlador de DMA 8237 A REGISTRO de BORRADO DE MÁSCARA (escritura) Pone a 0 la máscara de los 4 canales al mismo tiempo

REGISTRO de MASTER CLEAR (escritura) Efectúa el RESET de la pastilla. Similar a activar la patilla correspondiente

REGISTRO de PUESTA A 0 DEL FLIP FLOP (escritura) Pone a 0 el flip flop interno que habilita el acceso a los registros de 16 bits.

ACCESO DIRECTO A MEMORIA El DMA en los PC Se emplean dos controladores en cascada DMA 1

HOLD HLDA

DMA 2 DREQ0 DACK0

HOLD HLDA

CPU

CH0, CH1 y CH3 CH5, CH6 y CH7

DREQ1 DACK1

CH 5

DREQ2 DACK2

CH 6

DREQ3 DACK3

CH 7

DREQ0 DACK0

CH 0

DREQ1 DACK1

CH 1

DREQ2 DACK2

CONTROLADOR DEL DISKETTE

DREQ3 DACK3

CH 3

Transferencias de 8 bits Transferencias de 16 bits

Registros de página correspondientes: CANAL

Puerto E/S

CANAL

Puerto E/S

0 1 2 3

87h 83h 81h 82h

5 6 7

8Bh 89h 8Ah

Posición de los controladores DMA en el mapa de E/S DMA1

Puertos: 00 a 0Fh

DMA2

Puertos C0h a DFh

ACCESO DIRECTO A MEMORIA El DMA en los PC Conexión del segundo controlador (DMA2) para permitir transferencias de 16 bits

A23 A22

Registro de página

A21 A20 A19 A18 A17

A15 (D7)

A16

A14 (D6)

A15

A13 (D5) A12 (D4) A11 (D3) A10 (D2)

LATCH AUXILIAR

A14

(activado por señal ADSTB)

A12

A13

A11

A9 (D1)

A10

A8 (D0)

A9

A7

A8

A6

A7

A5

A6

A4

A5

A3

A4

A2

A3

A1

A2

A0

A1 A0 Conectado a tierra en las transferencias DMA-2

Bus de direcciones DMA (A0 – A23)

8237 DMA-2