Está en la página 1de 25

SISTEMAS BASADOS EN MICROPROCESADORES

CONTROLADOR DE ACCESO DIRECTO A


MEMORIA:
CDMA 8237
FASE II

Ing. Mario Urrutia Espinoza

17/06/2017 MUE 1
Introduccin

17/06/2017 MUE 2
El acceso directo a memoria es una tcnica de
diseo de hardware que permite a los
perifricos conectados a un sistema realizar
transferencias sobre memoria sin la
intervencin del MP.
De esta manera, las lentas operaciones de
entrada y salida de bloques de datos, se
pueden realizar en la sombra mientras el MP se
dedica a otras tareas ms tiles.
Como la memoria slo puede ser accedida a un
tiempo por una fuente, en el momento en que
el DMA realiza las transferencias, el MP se
desconecta de los buses, cedindole el control.

17/06/2017 MUE 3
El funcionamiento del controlador de DMA se
basa en unos registros que indican la
direccin de memoria a ser accedida y
cuntas posiciones de memoria quedan an
por transferir.
Esta transferencia de datos por DMA no
suele efectuarse de golpe, sino ms bien
poco a poco, robando algunos ciclos al MP.
Los controladores de DMA suelen disponer
de varias lneas de peticin de DMA,
pudiendo atender a varios perifricos que
soliciten una transferencia, quienes deben
haber sido diseados expresamente para
soportar DMA.
17/06/2017 MUE 4
Caractersticas

17/06/2017 MUE 5
Descripcin del integrado 8237.
El 8237 es un controlador de DMA
de 4 canales programables en 3
modos diferentes, con posibilidad
de ser conectado en cascada.
Adems de las funciones
tradicionales, el 8237 soporta
tambin transferencias memoria-
memoria, incluyendo la posibilidad
de rellenar un rea de la memoria
con cierto dato.
La arquitectura es de 16 bits, tanto
para direcciones como datos.

17/06/2017 MUE 6
Descripcin de los pines
CLK: Seal de reloj bsica.
-CS: Lnea de habilitacin del chip.

Esta seal provoca la limpieza de los registros de comando, estado, solicitud y los
RESET: temporales; borra la bandera last/first y el contador de registro de modo; el registro
de mscara se asigna para ignorar las solicitudes. El 8237 queda en Ciclo Inactivo.

Seal que puede ser empleada para extender los pulsos de lectura y escritura en
READY:
memoria del 8237 para trabajar con memorias lentas.
HLDA: Hold Acknowledge, lnea por la que el MP indica que ha liberado los buses.

DMA Request; son 4 lneas asncronas de peticin de DMA. En el modo de prioridad fija,
DREQ0..3 DREQ0 tiene la mxima y DREQ3 la mnima. Los perifricos solicitan el servicio de
: DMA en estas lneas y esperan a bajarlas hasta el correspondiente DACK. La
polaridad de DREQ es programable. Las lneas no usadas deben ser enmascaradas.

BUS de datos bidireccional y triestado. Durante los ciclos de DMA, los 8 bits ms
DB0..DB7 significativos de la direccin son colocados en el bus de datos con objeto de ser
: almacenados en un latch exterior controlado por ADSTB. En las operaciones
memoria-memoria, el bus de datos recibe y enva los bytes a transferir.

I/O Read. Lnea bidireccional de 3 estados. En el ciclo inactivo es una entrada empleada
-IOR: por la CPU para leer los registros de control; en el ciclo activo acta como lnea de
salida para que el 8237 controle la lectura de datos de los perifricos.

17/06/2017 MUE 7
I/O Write. Lnea bidireccional de 3 estados. En el ciclo inactivo es una entrada empleada
-IOW: por el MP para escribir los registros del 8237; en el ciclo activo acta como salida para
que el 8237 controle la escritura de datos en perifricos.

End Of Process. Lnea bidireccional que informa de la finalizacin del servicio DMA. El 8237
permite que un ente exterior fuerce el final de un servicio bajando esta lnea. El propio
-EOP:
8237 genera un pulso en ella cuando se alcanza un TC (Terminal Count, fin de cuenta)
en algn canal.

Lneas triestado de salida de direcciones. Proveen los 4 bits altos de la direccin durante el
A4..A7:
ciclo activo.
Hold Request. Lnea de salida para solicitar los buses al MP, en el caso en que haya que
HRQ: realizar una transferencia. En los sistemas en que el 8237 controla totalmente el bus,
puede ir directamente conectada a HLDA.
DMA Acknowledge. Avisa a los perifricos de que ha sido atendida su peticin. Esta lnea
DACK0..3:
es programable. RESET las baja.
Address Enable. Habilita el latch de 8 bits que guarda la parte alta de la direccin. Tambin
AEN:
inhibe el acceso al bus por parte de otras fuentes.
Address Strobe. Lnea que controla el almacenamiento de la parte alta de la direccin,
ADSTB:
cuando est en el bus de datos, en el latch externo.
Memory Read. Salida triestado empleada para acceder a la memoria durante la lectura o
-MEMR:
las transferencias memoria-memoria.
Memory Write. Salida triestado empleada para acceder a la memoria durante la escritura o
-MEMW:
las transferencias memoria-memoria.
17/06/2017 MUE 8
Descripcin Funcional
Los modos de operacin del 8237 estn diseados para
soportar transferencias de una sola palabra de datos y
flujos de datos discontinuos entre la memoria y los
perifricos.
El controlador de DMA es un circuito secuencial
generador de seales de control y direcciones que
permite la transferencia directa de los datos sin
necesidad de registros temporales intermedios, lo que
incrementa la tasa de transferencia de datos y libera al
MP para otras tareas.
Las operaciones memoria-memoria precisan de un
registro temporal intermedio, por lo que son
generalmente al menos dos veces ms lentas que las de
E/S

17/06/2017 MUE 9
El 8237 consta internamente de varios
bloques:
Un bloque de control de tiempos que genera las
seales de tiempo internas y las seales de control
externas
Un bloque de gestin de prioridades, que resuelve
los conflictos de prioridad cuando varios canales de
DMA son accedidos a la vez
Tambin posee un elevado nmero de registros
para gestionar el funcionamiento. Los registros
internos del 8237 estn resumidos en la siguiente
tabla.

17/06/2017 MUE 10
Distribucin de los puertos en Modo 0
Tipo de registro Tamao N registros

Registro base de direccin 16 bits 4


Registro base contador de palabras 16 bits 4
Registro de direccin en curso 16 bits 4
Registro contador de palabras en curso 16 bits 4
Registro temporal de direccin 16 bits 1
Registro temporal contador de palabras 16 bits 1
Registro de estado 8 bits 1
Registro de comandos 8 bits 1
Registro temporal 8 bits 1
Registro de modo 6 bits 4
Registro de mscara 4 bits 1
Registro de peticin 4 bits 1

17/06/2017 MUE 11
Diagrama de bloques del 8237
Operacin del DMA
En un sistema, los buses del 8237 estn conectados en
paralelo al bus general de la PC, siendo necesario un
latch externo para almacenar la parte alta de la direccin
de memoria. Cuando est inactivo, el 8237 est
desconectado de los buses; cuando se produce una
peticin de DMA pasa a controlar los buses y a generar
las seales necesarias para realizar las transferencias.
La operacin que realiza el 8237 es consecuencia de la
programacin realizada previamente en los registros de
comando, modo, base de direccin y contador de palabras
a transferir.
El DMA opera bsicamente en dos ciclos: el activo y el
inactivo (o idle).

17/06/2017 MUE 13
Tras ser programado, el DMA permanece
normalmente inactivo hasta que se produce la
solicitud de DMA en algn canal o va software.
Cuando sta llega, si ese canal no estaba
enmascarado (es decir, inhibido) el 8237 solicita
los buses al MP y se pasa al ciclo activo.
El ciclo activo se compone de varios estados
internos, en funcin de la manera en que sea
programado el chip. El 8237 puede asumir 7
diferentes estados, cada uno de ellos compuesto
de un ciclo de reloj completo.

17/06/2017 MUE 14
El estado S0 es el estado inactivo o idle. En l se
entra cuando no hay pendiente una peticin de
DMA vlida, al final de la secuencia de
transferencia, o tras un reset. El DMA est inactivo
pero puede ser programado por el
microprocesador del sistema.
El siguiente estado es el primer estado de servicio
DMA. El 8237 ha solicitado los buses a la CPU a
travs de la lnea HRQ pero la CPU an no ha
respondido a travs de HLDA. En esta situacin,
el 8237 puede an todava ser programado.

17/06/2017 MUE 15
Una vez que la CPU responde, la labor del 8237 puede
comenzar: los estados S2, S3 y S4 se suceden
entonces para realizar el servicio. Si se necesitara ms
tiempo, est prevista la posibilidad de insertar estados
de espera entre S2 S3 y S4 a travs de la patilla
READY.
Tenga en cuenta que los datos son pasados
directamente de la memoria hacia/desde los perifricos,
por lo tanto no cruzan a travs del DMA (las lneas -IOR
y -MEMW, o -IOW y -MEMR, son activadas al mismo
tiempo).
El caso de las operaciones memoria-memoria es
especial, ya que para cada palabra a mover hay que
realizar la operacin de lectura (en unos estados
denominados S11, S12, S13 y S14) y despus la de
escritura (estados S21, S22, S23, S24).

17/06/2017 MUE 16
Ciclo Inactivo.

Este es el estado en el que el 8237 espera


pacientemente a que aparezca alguna solicitud
de DMA, comprobando las lneas DREQ en los
flancos de bajada de las seales de reloj: en esto
consisten los estados S1.
En esta situacin, el 8237 puede ser programado
por el MP.
Para ello, las lneas A0..A3 seleccionan el
registro interno y -IOR e -IOW indican si se trata
de leer o escribir.

17/06/2017 MUE 17
Ciclo activo
Cuando el 8237 est en el ciclo inactivo y se produce una
peticin por software o un canal no enmascarado solicita
servicio DMA, se pasa al estado activo y se opera en uno de los
siguientes modos:
a) Single Transfer Mode (Modo de transferencia nica):
El dispositivo es programado para realizar una nica transferencia.
b) Block Transfer Mode (Modo de transferencia de bloque).
En lugar de transferir una sola palabra se mueven todas las
necesarias hasta que el registro contador de palabras se desborda.
Tambin se acaba el proceso si se activa el pin -EOP.
c) Demand Transfer Mode (Modo de transferencia por demanda).
La transferencia se realiza slo mientras DREQ permanece activo.
Esto significa que se pueden transferir datos hasta agotar las
posibilidades del dispositivo. Cuando el dispositivo tenga ms datos
listos puede volver a activar DREQ para continuar donde lo dej.

17/06/2017 MUE 18
Conexiones

17/06/2017 MUE 19
Conexin del 8237 al MP
Los perifericos solicitan al 8237 que active la lnea
HOLD del MP a travs de la lnea HRQ (peticin
de HOLD) a travs de las 4 lneas de solicitud de
DMA, DRE0-DRE3, una para cada periferico con
diferentes prioridades
Cuando el MP cede los buses, se lo comunica al
8237 mediante la activacin de la seal HOLDA y
este transmite el reconocimiento de DMA al
perifrico al que se concede el acceso directo a
memoria por medio de las lneas DACK0-DACK3
que le corresponde

17/06/2017 MUE 20
En un servicio DMA, la direccin de
memoria que se lee o escribe la genera el
8237 mediante
Las lneas A0-A3 como salida
Las lneas A4-A7 como salida
Las lneas DB0-DB7 sacan los 8 bits de mas
peso de la direccin y la cargan en el cerrojo
8282 la cual se activa con ADSTB
Luego los datos circulan por el bus de
datos directamente entre los perifricos y la
memoria principal.
17/06/2017 MUE 21
Bus de direcciones U16
1 19 U15
2 I1 O1 18 19 1
3 I2 O2 17 18 O0 I0 2
4 I3 O3 16 17 O1 I1 3
5 I4 O4 15 16 O2 I2 4
6 I5 O5 14 15 O3 I3 5
7 I6 O6 13 14 O4 I4 6
8 I7 O7 12 13 O5 I5 7
9 I8 O8 12 O6 I6 8
11 I9 O7 I7
I10 16L8 9
OE 11
STB
8282

U7 U14
33 16 5 32
MN AD0 15 VX A0 33
22 AD1 14 6 A1 34
19 READY AD2 13 12 READY A2 35
21 CLK AD3 12 13 CLK A3 37
RESET AD4 11 11 RESET A4 38
18 AD5 10 CS A5 39
INTR AD6 9 7 A6 40
AD7 8 HLDA A7
AD8 7 19 30
AD9 6 18 DRQ0 DB0 29
AD10 5 17 DRQ1 DB1 28
U13
AD11 4 19 7 16 DRQ2 DB2 27
AD12 3 3 S0 MRD 9 DRQ3 DB3 26
AD13 2 18 S1 MWT 8 36 DB4 23
AD14 39 S2 AMW 13 1 EOP DB5 22
AD15 38 2 IOR 11 2 IOR DB6 21
A16/S3 37 15 CLK IOW 12 IOW DB7
A17/S4 36 1 CEN AIOW 14 25
A18/S5 35 6 IOB INTA DAK0 24
A19/S6 AEN 4 DAK1 14
34 DT/R 16 DAK2 15
BHE/S7 DEN 17 DAK3
26 MC/PD 5 3
DEN 27 ALE MEMR 4
DT/R 28 MEMW 10
8288
30 M/IO HRQ 9
31 HLDA 32 AEN 8
17 HOLD RD 29 ASTB
23 NMI WR 25 8237
TEST ALE 24
INTA MEMORIA
8086MIN

Periferico 1

Periferico 2

Bus de datos
Conexin en cascada de varios 8237.
Esta conexin es empleada para conectar ms de un 8237 en
el sistema.
La lnea HRQ del 8237 hijo es conectada a la DREQ del 8237
padre; la HLDA lo es a la DACK.
Esto permite que las peticiones en los diversos 8237 se
propaguen de uno a otro a travs de la escala de prioridades
del 8237 del que cuelgan.
Teniendo en cuenta que el canal del 8237 padre es empleado
slo para priorizar el 8237 adicional que cuelga (hijo), no
puede emitir direcciones ni seales de control por s mismo:
esto podra causar conflictos con las salidas del canal activo
en el 8237 hijo. Por tanto, el 8237 padre se limita en el canal
del que cuelga el 8237 hijo a controlar DREQ, DACK y HRQ,
dejando inhibidas las dems seales.

17/06/2017 MUE 23
Cuando de un 8237 cuelga otro, estamos ante un
sistema DMA de dos niveles. Si del DMA hijo cuelga a
su vez otro, sera un sistema DMA de tres niveles, como
el que se muestra luego
Al programar los 8237 en cascada, se debe empezar por
el primer nivel. Tras un Reset, las salidas DACK son
programadas por defecto para ser activas a nivel bajo y
son colocadas en alto. Si estn conectadas
directamente a HLDA, el segundo nivel de 8237 no
puede ser programado hasta que la polaridad de DACK
no se cambie para que sea activa a nivel alto. Los bits
de mscara de canales del 8237 padre funcionan como
cabra esperar, permitiendo inhibir 8237's de niveles
inferiores.

17/06/2017 MUE 24
U1 U3
5 32 5 32
VX A0 33 VX A0 33
6 A1 34 6 A1 34
12 READY A2 35 12 READY A2 35
13 CLK A3 37 13 CLK A3 37
11 RESET A4 38 11 RESET A4 38
CS A5 39 CS A5 39
7 A6 40 7 A6 40
HLDA A7 HLDA A7
19 30 19 30
18 DRQ0 DB0 29 18 DRQ0 DB0 29
17 DRQ1 DB1 28 17 DRQ1 DB1 28
16 DRQ2 DB2 27 16 DRQ2 DB2 27
DRQ3 DB3 26 DRQ3 DB3 26
36 DB4 23 36 DB4 23
1 EOP DB5 22 1 EOP DB5 22
2 IOR DB6 21 2 IOR DB6 21
IOW DB7 IOW DB7
25 25
DAK0 24 DAK0 24
DAK1 14 DAK1 14
DAK2 15 DAK2 15
DAK3 DAK3
3 3
MEMR 4 MEMR 4
MEMW 10 MEMW 10
HRQ 9 HRQ 9
AEN 8 AEN 8
ASTB ASTB
8237 8237

U6
33 16 U2 U4
MN AD0 15 5 32 5 32
22 AD1 14 VX A0 33 VX A0 33
19 READY AD2 13 6 A1 34 6 A1 34
21 CLK AD3 12 12 READY A2 35 12 READY A2 35
RESET AD4 11 13 CLK A3 37 13 CLK A3 37
18 AD5 10 11 RESET A4 38 11 RESET A4 38
INTR AD6 9 CS A5 39 CS A5 39
AD7 8 7 A6 40 7 A6 40
AD8 7 HLDA A7 HLDA A7
AD9 6 19 30 19 30
AD10 5 18 DRQ0 DB0 29 18 DRQ0 DB0 29
AD11 4 17 DRQ1 DB1 28 17 DRQ1 DB1 28
AD12 3 16 DRQ2 DB2 27 16 DRQ2 DB2 27
AD13 2 DRQ3 DB3 26 DRQ3 DB3 26
AD14 39 36 DB4 23 36 DB4 23
AD15 38 1 EOP DB5 22 1 EOP DB5 22
A16/S3 37 2 IOR DB6 21 2 IOR DB6 21
A17/S4 36 IOW DB7 IOW DB7
A18/S5 35 25 25
A19/S6 DAK0 24 DAK0 24
34 DAK1 14 DAK1 14
BHE/S7 DAK2 15 DAK2 15
26 DAK3 DAK3
DEN 27 3 3
DT/R 28 MEMR 4 MEMR 4
30 M/IO MEMW 10 MEMW 10
31 HLDA 32 HRQ 9 HRQ 9
17 HOLD RD 29 AEN 8 AEN 8
23 NMI WR 25 ASTB ASTB
TEST ALE 24 8237 8237
INTA
8086MIN

También podría gustarte