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
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