dma
TRANSCRIPT
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
CPUCONTROL
DMA
MEMORIA
PERIF. 1
PERIF. 2
PERIF. 3
PERIF. 4
DAT
OS
CO
NTR
OL
DIR
ECC
ION
ES
BPRI
HLDA
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
El bus de direcciones para los accesos DMA
Subsistema dememoria
DRAM
EPROM
Dispositivos E/S
CPU
A3 – A36
BE0 – BE7
Lógica digital
A0-A23Bus para lastransferencias DMA
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
8237-A
4
4
8
DR
EQ0
DR
EQ1
DR
EQ2
DR
EQ3
DAC
K0D
ACK1
DAC
K2D
ACK3
A0..A3
A4..A7
A8..A15D0..D7
MEM
R#
MEM
W#
IOR
#
IOW
# HO
LD
HLD
A
ADSTB
EOPRESET
CSREADYCLOCK
AEN
• 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. Confirma que la CPU ha liberado los buses
HOLD S HOLD REQUEST Petición de los buses a la CPU (BPRI)
DREQ0DREQ3 E DMA REQUEST Entradas de petición de DMA por parte de los
periféricos (4 canales)
DACK0DACK3 S DMA ACKN. Notifica concesión de ciclo DMA a los
periféricos solicitantes
A8-A15
(D0-D7)E/S
ADDR. BUS
(DATA BUS)
Bus de datos y direcciones multiplexado:
• Permite lectura y escritura en regs. internos• Salida de byte alto de la dirección en DMA• Entrada/salida de datos en memoria en lastransferencias entre memoria y memoria
A0-A3 E/S ADDR. BUS Entradas para direccionar regs. InternosSalida de los 4 bits más bajos de la dir. DMA
A4-A7 S ADDR. BUS. 4 bits siguientes de la dirección DMA
ADSTB S ADDR. STROBE Indicación de captura de dirección en LATCH
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
Símbolo Tipo Nombre Función
MEMR S MEMORY READ Indica ciclo de lectura en memoria
MEMW S MEMORY WRITE Indica ciclo de escritura en memoria
EOP E/S END OFPROCESS
Como entrada, detiene el ciclo DMAComo salida indica final del ciclo DMA
IOR E/S I/O READ Entrada indica lectura en regs. InternosSalida indica ciclo DMA de escritura
IOW E/S I/O WRITE Entrada indica escritura en regs. InternosSalida indica ciclo DMA de lectura
AEN S ADDR. ENABLE Indica que se está produciencdo ciclo DMA
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
Registro basede palabrasa transferir
Registro basede direcciones
Contador depalabras
transferidas
Contador dedirecciones
16 bits
UP/DOWN
Bus interno8 bits
Estructura de un canal de DMA
SÓLO
LEC
TUR
ASÓ
LOES
CR
ITU
RA
Hacia el busde direcciones
Registros de 16 bitsBus interno de 8 bitsUn conjunto de 4 por cada canal
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
ESTADO (8 bits)
COMANDOS (8 bits)
TEMPORAL (8 bits)
MÁSCARA (4 bits)
PETICIÓN (4 bits)
Indica el estado actual de las transferencias DMA que estánsiendo atendidas
Configura el modo de funcionamiento del controlador de DMA
Se utiliza para las transferencias entre memoria y memoria
Permite enmascarar de forma individual los diferentes canalesde petición de DMA
Permite realizar peticiones por software, en lugar de activarla línea DREQ.
Registros comunes a los 4 canales
PALABRASTRANSFERIDAS (16 b)
CONTADOR DEDIRECCIONES (16 bits)
CONTADOR DEPALABRAS (16 bits)
MODO (4 bits)
Dirección inicial de la transferencia de datos
Número de palabras que van a transferirse
Dirección actual de la transferencia
Número de palabras que quedan por transferir
Indica el tipo de transferencia DMA que debe llevarse a cabo.
Registros replicados en cada uno de los 4 canales
DIRECCIÓN BASE(16 bits)
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
Bus de direcciones de transferencias DMA (A0-A23)
8237 A
Lógica deselección
CS A0-A3 A4-A7
LATCH8 bit
STB
OE
ADSTB
AEN
Bus de datos
64 bits
8 bits
Bus multiplexadoA8-A15 (D0-D7)
Conectado a 8 bitsmás bajos (XBUS)
A8-A15
MEM
RD
MEM
WT
IOR
D
IOW
T
DREQ(x4)
DACK(x4)
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
LOS REGISTROS DE PÁGINAControlan las líneas más altas del bus de direcciones DMASe cargan a través de puertos de E/S
Bus
de
dire
ccio
nes
DMA
(A0
–A2
3)
8237A A0-A15
Reg
istro
de
Pági
na c
anal
0R
egis
tro d
ePá
gina
can
al 1
Reg
istro
de
Pági
na c
anal
2R
egis
tro d
ePá
gina
can
al 3
BUFF
ERBU
FFER
BUFF
ERBU
FFER
A16-A23
A16-A23
A16-A23
A16-A23
Bus
de
dato
s (X
BU
S) (D
0 –
D7)
OE
AENDACK3
OE
OE
OE
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 A
Bus
de
dire
ccio
nes
de tr
ansf
eren
cias
DM
A (A
0 –
A23)
Bus
de
dato
s
Bus
de
cont
rol
DRAMLó
gica
digi
tal
Periférico1
Periférico2
MEMRD
MEMWT
IORD
IOWT
8237
MEMRDMEMWTIORDIOWT
DACK0DREQ0
DACK1DREQ1
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 hastaque 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 datosmientras la línea DREQ se mantenga activa. Cuando se desactivala 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
DREQ0DACK0
DREQ1DACK1
DREQ2DACK2
DREQ3DACK3
HOLDHLDA
DREQ0DACK0
DREQ1DACK1
DREQ2DACK2
DREQ3DACK3
HOLDHLDA
DREQ0DACK0
DREQ1DACK1
DREQ2DACK2
DREQ3DACK3
HOLDHLDA
DREQ0DACK0
DREQ1DACK1
DREQ2DACK2
DREQ3DACK3
HOLDHLDA
Permite expandir indefinidamente el controlador 8237A
Líneas HOLD y HLDA conectadas a DREQ y DACK
8237A
8237A
8237A
8237A
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 ATIPOS DE TRANSFERENCIA
LECTURA
ESCRITURA
VERIFY
Lectura en memoria y escritura en periféricoActivas: MEMRD e IOWT
Escritura en memoria y lectura en periféricoActivas: MEMWT e IORD
Direcciona la memoria pero no activa ninguna de las líneas de control
En todos los modos: SINGLE, BLOQUE y DEMANDA:
MEMORIAA
MEMORIA
(en desuso)
Copia zonas de memoriaUtiliza dos canales de DMA:
Canal 0 como fuenteCanal 1 como destino
Se inicia haciendo petición por software al canal 0Utiliza el registro temporal como almacénEl ciclo dura el doble.
Sólo en modo BLOQUE:
AUTOINICIALIZACIÓN
Los registros de base (dirección inicial y palabras a transferir) conservan su valor después de terminada la transferencia. No es necesarioreinicializarlos de nuevo.
ACCESO DIRECTO A MEMORIA
El controlador de DMA 8237 AREGISTROS INTERNOS
(todos de 8 bits)
Dir.(A0-A3) LECTURA ESCRITURA
0 DIRECCIÓN ACTUAL DIRECCIÓN BASE1 CONTADOR, VALOR ACTUAL CONTADOR BASE2 DIRECCIÓN ACTUAL DIRECCIÓN BASE3 CONTADOR, VALOR ACTUAL CONTADOR BASE4 DIRECCIÓN ACTUAL DIRECCIÓN BASE5 CONTADOR, VALOR ACTUAL CONTADOR BASE6 DIRECCIÓN ACTUAL DIRECCIÓN BASE7 CONTADOR, VALOR ACTUAL CONTADOR BASE
CANAL
0
1
2
3
8 REGISTRO DE ESTADO REGISTRO DE COMANDO9 REGISTRO DE PETICIÓNA MÁSCARA SET/RESETB REGISTRO DE MODOC CLEAR FLIP FLOPD REGISTRO TEMPORAL MASTER CLEARE BORRAR REG. DE MÁSCARAF MÁSCARAS INDIVIDUALES
En direcciones 0 a 7: registros de 16 bits
FLIP FLOP a 0 Se accede al byte bajoFLIP FLOP a 1 Se accede al byte alto
Conmuta automáticamente
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
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
1 Alcanzado fin de cuenta en canal 1
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
2,3
00 Transferencia en modo VERIFY
01 Transferencia modo ESCRITURA
10 Transferencia modo LECTURA
11 Ilegal
40 Deshabilita AUTOINICIALIZACIÓN
1 Habilita AUTOINICIALIZACIÓN
50 Direcciones se incrementan
1 Direcciones se decrementan
6,7
00 Modo DEMANDA
01 Modo SINGLE
10 Modo BLOQUE
11 Modo CASCADA
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
20 Activa petición por SOFTWARE
1 Desactiva petición
REGISTRO de MÁSCARA (escritura)
BIT FUNCIÓN
0,1 Selecciona el canal al que se refiere
20 Activa máscara
1 Desactiva máscara
Puede modificarse de dos formas:
A través de la dirección 0A:
BIT FUNCIÓN
0 Máscara del canal 0
A través de la dirección 0F:
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 patillacorrespondiente
REGISTRO de PUESTA A 0 DEL FLIP FLOP (escritura)
Pone a 0 el flip flop interno que habilita el acceso a losregistros de 16 bits.
ACCESO DIRECTO A MEMORIA
El DMA en los PCSe emplean dos controladores en cascada
CPU
DREQ0DACK0
DREQ1DACK1
DREQ2DACK2
DREQ3DACK3
HOLDHLDA
DREQ0DACK0
DREQ1DACK1
DREQ2DACK2
DREQ3DACK3
HOLDHLDA
DMA 2
DMA 1
CONTROLADORDEL DISKETTE
CH 0
CH 1
CH 3
CH 5
CH 6
CH 7
CH0, CH1 y CH3 Transferencias de 8 bitsCH5, CH6 y CH7 Transferencias de 16 bits
Registros de página correspondientes:
Posición de los controladores DMA en el mapa de E/S
DMA1 Puertos: 00 a 0Fh
DMA2 Puertos C0h a DFh
CANAL Puerto E/S CANAL Puerto E/S
0 87h 5 8Bh1 83h 6 89h2 81h 7 8Ah3 82h
ACCESO DIRECTO A MEMORIA
Conexión del segundo controlador (DMA2) para permitir transferencias de 16 bits
El DMA en los PC
Bus
de
dire
ccio
nes
DMA
(A0
–A2
3)
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
A22
A23
8237DMA-2
LATCHAUXILIAR
(activado porseñal ADSTB)
Registrode
página
A15 (D7)
A14 (D6)
A13 (D5)
A12 (D4)
A11 (D3)
A10 (D2)
A9 (D1)
A8 (D0)
A7
A6
A5
A4
A3
A2
A1
A0
Conectado a tierra en las transferencias DMA-2