Você está na página 1de 17

Controlador de el DMA 8237 de Intel.

Indice. Controlador de el DMA. 3 Memoria Disco.. 3 Memoria Memoria . 4 Integrado del Controlador de DMA 8237 de Intel.. 7 Funcionamiento del DMA. 9 Modos de Transferencia 10 Programacion de el DMAC 8237 de Intel 12 Comandos de el DMAC 8237 de Intel 16

Equipo No. 4 Controlador del DMA 8237 de Intel. Integrantes de el Equipo. Maldonado Morales Daniel A. 07131554 Luna Araiz Alejandra E. 09130426 Muoz Lpez Lupita Damaris 09130430 Gonzales Martnez Rosa Mara 09130421

Catedrtico. Ingeniera. Carrillo Reyes Claudia Elena

Controlador del DMA(DMAC: Direct Access Memory Controler) 8237 de INTEL.


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. La transferencia de datos entre los perifricos y la memoria por DMA no suele efectuarse de golpe, sino ms bien poco a poco, robndole algunos ciclos al CPU. Los controladores de DMA suelen disponer de varias lneas de peticin de DMA, pudiendo atender las necesidades de varios perifricos que soliciten una transferencia, quienes deben haber sido diseados expresamente para soportar el DMA. 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. El controlador DMA 8237 de Intel proporciona la interfaz para realizar el acceso directo a la memoria en las computadoras basadas en procesadores de la familia 80x86. La Figura 1.1(7.14 Libro) muestra la ubicacin del controlador o modulo de DMA, cuando el modulo DMA necesita utilizar los buses (Datos, Direccin y Control) para transferir datos, enva una seal denominada HOLD(Adquisicin del control del bus) al procesador. El procesador responde con la seal HLDA(HOLD Acknowledge, reconocimiento de HOLD), para indicar al modulo del DMA que se puede utilizar los buses. Por ejemplo, si el modulo del DMA va a transferir un bloque de datos desde la memoria al disco, realiza lo siguiente :

Figura 1. Uso del bus del sistema por el DMAC.

Memoria Disco. 1) El perifrico(U controlador de disco) solicitara el DMA activando la seal DREQ(DMA REQuest, solicitud de DMA). 2) El controlador DMA activara HRQ(Hold REQuest, solicitud de HOLD) indicando al CPU, a travs de si terminal HOLD, que necesita utilizar los buces. 3) El CPU termina el ciclo de bus en el que se encuentra(no necesariamente la instruccin que se esta ejecutando) y responder a la solicitud de el DMA activando HDLA(reconocimiento de HOLD) para

indicar al 8237 que puede proseguir a utilizar los buses para llevar acabo la transferencia. 4) El controlador DMA activa DACK(Reconocimiento DMA) para indicar el perifrico que va a empezar a transferir datos. 5) DMA empieza a transferir los datos de la memoria al perifrico poniendo la direccin del primer byte del bloque en el bus de direcciones y activando MEMR, para as poner ese byte en el bus de datos. Despus activa IOW para escribir el contenido del bus de datos en el perifrico. 6) Una vez el controlador del DMA ah terminado, desactivara HRQ para indicar al CPU que puede tomar de nuevo el control de los buses.

Figura 1.2 (7.13 Libro) Configuraciones alternativas para el Controlador DMA.

Memoria Memoria. En este tipo de transferencia se emplean siempre los canales 0 y 1. La transferencia comienza activando la lnea DREQ del canal 0, bien por hardware o por software. El 8237 solicita entonces un servicio de DMA ordinario, con el que lee el byte de la memoria a travs de 4 estados y empleando el Block Transfer Mode visto con anterioridad. El registro de direccin en curso del canal 0, que indica la direccin origen en la memoria, es incrementado/decrementado (segn haya sido programado) y el dato es almacenado en el registro temporal del 8237. En otros 4 estados ms, el dato es pasado del 8237 de nuevo a la memoria, usando la direccin del registro de direccin en curso del canal 1, que indica la direccin destino en memoria, el cual es tambin incrementado/decrementado segn proceda. Adems, se decrementa el registro contador de palabras en curso del canal 1: si al decrementar se desborda (pasa de 0 a 0FFFFh) se activa el bit TC del registro de estado

(Terminal Count, fin de cuenta) y se genera un pulso -EOP, finalizando el proceso. En el caso de que el valor del registro contador de palabras del canal 0 pase de 0 a 0FFFFh, sin embargo, no se acta sobre TC ni sobre EOP (no finaliza el proceso) aunque este canal se auto inicializa, si as estaba programado. Si se desea una auto inicializacin total en este tipo de transferencias, los registros contadores de palabras del canal 0 y 1 han de ser programados con el mismo valor inicial; de lo contrario, slo uno de los dos canales se auto inicializar (el que primero desborde su registro contador de palabras). El canal 0 puede ser tambin programado para retener siempre la misma direccin durante todas las transferencias, lo que permite copiar un mismo byte en todo un bloque de la memoria. El 8237 puede responder a seales -EOP externas durante este tipo de transferencias, pero slo cede el control de los buses despus de completar la transferencia de la palabra que tenga entre manos. Los circuitos para comparar datos en bsquedas de bloques pueden emplear -EOP para terminar la operacin tras encontrar lo que buscan. Las operaciones memoriamemoria se pueden detectar por hardware como una combinacin de AEN activo sin que al mismo tiempo se produzcan salidas DACK. El 8273 se conoce como controlador DMA al vuelo (fly - by DMA) ya que los datos que se transfieren no pasan a travs del propio circuito controlador de DMA y no se almacenan en el mismo. Por consiguiente, solo puede controlar transferencias entre un puerto de E/S y una direccin de memoria pero no entre 2 puertos de E/S o 2 posiciones de memoria. El 8237 dispone de 4 canales de acceso directo a memoria para que realicen simultneamente sus tareas, numerados como 0, 1, 2, 3 y 4 que pueden programarse independientemente. El 8237 tiene un conjunto de cinco registros de control para programar y controlar la operacin de DMA en cada uno de los canales Tabla 1(Tabla 7.4 Libro)

Bit D0

Orden Habilitar/Deshabilitar memoria a memoria

Estado Canal 0 ha alcanzado el final de la cuenta Canal 1 ha alcanzado el final de la cuenta Canal 2 ha alcanzado el final de la cuenta Canal 3 ha alcanzado el final de la cuenta Solicitud de Canal 0 Solicitud de Canal 0

Modo Seleccin de canal

Mscara simple Seleccionar bit de mscara de canal

D1

Habilitar/Deshabilitar direccin fija para canal 0 Habilitar/Deshabilitar controlador

D2

Transferencia de lectura/escritura/ verificacin

Activar/desa ctivar Bit de mscara No usado

D3

Temporizacin norma/comprimida

D4

Prioridad fija/rotatoria Seleccin de escritura extendida

D5

D6 D7

Seal DREQ activa en alta/baja Seal SACK activa en alta/baja

Solicitud de Canal 0 Solicitud de Canal 0

Habilitar/Deshabili tar auto inicializacin Seleccin de incremento/decr emento de direccin Seleccin de modo de cascada demanda/bloqu e/un dato

Mscara completa Activar/Desactiv ar bit de mscara de canal 0 Activar/Desactiv ar bit de mscara de canal 1 Activar/Desactiv ar bit de mscara de canal 2 Activar/Desactiv ar bit de mscara de canal 3 No utilizado

Tabla 1.1 Conjunto de registros.

Orden(Command) : el procesador carga este registro para controlar la operacin de DMA. D0 habilita una transferencia de memoria a memoria en la que el canal 0 se utiliza para transferir un byte en un registro temporal del 8237 y el canal 1 para transferir el byte desde el registro a memoria. D2 habilita o deshabilita el DMA Estado (Status) : El procesador carga este registro para controlar la operacin de DMA . D0 habilita una transferencia de memoria a memoria en el que el canal 0 se utiliza para transferir un byte en un registro temporal del 8237 y el canal 1 para transferir el byte desde el registro a memoria. Modo(Mode) : el procesador utiliza este registro para establecer el modo de operacin del controlador DMA. Los bits D0 y D1 se utilizan para seleccionar el canal. Los otros bists establecen el modo de operacin del canal seleccionado. Los bits D2 y D3 indican si la transferencias desde un dispositivo de ES a memoria(Escritura) o desde memoria a un dispositivo de E/S(Lectura), o una operacin de verificacin. Si D4 esta activo, el registro de direccin de memoria y el registro de contador se cargan con sus valores originales al final de la transferencia de DMA. Los bits D6 y D7 establecen la forma en que se utiliza el 8237. En el modo simple (Single Mode) se transfiere

un nico byte de datos. Los modos de bloque y de demanda se utilizan para trasferir bloques, permitiendo el modo de demanda la finalizacin prematura de la transferencia. El modo en cascada permite que varios circuitos 8237 puedan ser encadenados para ampliar a mas de cuatro el numero de canales. Mascara Simple (Single Mask) : este registro se modifica por el procesador. Los bits D0 y D1 seleccionan el canal. El bit D2 borra o activa el bit de mascara correspondiente al canal seleccionado. A travs de este registro la entrada DREQ correspondiente a un canal especifico puede en mascarse (deshabilitarse). Mientras que el registro da orden puede utilizarse para deshabilitar el controlador de DMA completo, el registro de mascara simple permite que el programador habilite o deshabilite un canal especifico. Mascara completa (All Mask) : este registro es similar al registro de mascara simple, pero permite que los cuatro canales se habiliten o deshabiliten con una operacin de escritura.

Adems el, controlador 8237A dispone de ocho registros de datos : un registro de direcciones de memoria, y un registro por cada canal. El procesador utiliza estos registros para indicar la posicin y el tamao de la zona de memoria principal afectada por la transferencia.

Integrado de el controlador de DMA.

Figura 1.3 Controlador de DMA

Pin CLK: -CS: RESET:

READY: HLDA: DREQ0..3:

DB0..DB7:

-IOR:

-IOW:

-EOP:

A4..A7: HRQ:

DACK0..3:

Descripcin Seal de reloj bsica. Lnea de habilitacin del chip. Esta seal provoca la limpieza de los registros de comando, estado, solicitud y los temporales; borra el bandern 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 memoria del 8237 para trabajar con memorias lentas. Hold Acknowledge, lnea por la que el CPU indica que ha liberado los buses. DMA Request; son 4 lneas asncronas de peticin de DMA. En el modo de prioridad fija, 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 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 por el 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. I/O Write. Lnea bidireccional de 3 estados. En el ciclo inactivo es una entrada empleada por el CPU para escribir los registros del 8237; en el ciclo activo acta como lnea de salida para que el 8237 controle la escritura de datos en los 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 8237 genera un pulso en ella cuando se alcanza un TC (Terminal Count, fin de cuenta) en algn canal, salvo en el modo memoria-memoria del canal 0 (en ese caso, la seal se produce al alcanzarse el TC del canal 1). Esta patilla est conectada en el interior del chip a un transistor en colector abierto, por lo que requiere una resistencia externa. Cuando llega una seal -EOP, el 8237 finaliza el servicio aunque en el modo de autoinicializacin los registros base volvern a ser escritos en los registros en curso del canal implicado. El canal resulta enmascarado salvo en el caso del modo de autoinicializacin.A0..A3:Lneas bidireccionales triestado de direcciones. En el ciclo inactivo son entradas empleadas para direccionar los registros internos a leer o escribir. En el ciclo activo, son salidas y proveen los 4 bits menos significativos de la direccin. Lneas triestado de salida de direcciones. Proveen los 4 bits altos de la direccin durante el ciclo activo. Hold Request. Lnea de salida para solicitar los buses a el CPU, en el caso en que haya que realizar una transferencia. En los sistemas en que el 8237 controla totalmente el bus, esta patilla puede ir directamente conectada a HLDA. DMA Acknowledge. Avisa a los perifricos de que ha sido atendida su peticin. El nivel de operacin de esta lnea es programable. RESET las

baja.

AEN:

ADSTB: -MEMR: -MEMW:

Address Enable. Habilita el latch de 8 bits que guarda la parte alta de la direccin. Sirve tambin para inhibir el acceso al bus por parte de otras fuentes. Address Strobe. Lnea que controla el almacenamiento de la parte alta de la direccin, 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 las transferencias memoria-memoria. Memory Write. Salida triestado empleada para acceder a la memoria durante la escritura o las transferencias memoria-memoria.

Tabla 1.2 Definicin de los pines de el Controlador DMA.

Funcionamiento del DMAC


Para comprender mejor el funcionamiento del 8237 es conveniente considerar los estados generados por cada ciclo. El DMA opera bsicamente en dos ciclos: el activo y el inactivo (o idle). 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 CPU 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. 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 la CPU. Para ello, las lneas A0..A3 seleccionan el registro interno y -IOR e -IOW indican si se trata de leer o escribir. Como algunos de los registros internos son de 16 bits, existe un flip-flop interno que conmuta en cada operacin de escritura sobre ellos, para que el 8237 sepa si est recibiendo el byte alto o el bajo (este flip-flop es puesto a cero en un Reset o en un comando Master Clear, existiendo tambin comandos especiales para controlarlo). 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.

Modos de Transferencia.
Single Transfer Mode (Modo de transferencia nica). El dispositivo es programado para realizar una nica transferencia. El registro contador de palabras es decrementado y el de direcciones se incrementa/decrementa segn ha sido programado. Cuando el registro contador de palabras se desborda (pasa de 0 a 0FFFFh) se activa el bit Terminal Count (fin de cuenta) en el registro de estado y la patilla -EOP genera un pulso. Si el canal estaba programado para autoinicializarse esto es lo que realiza; en caso contrario, se activa automticamente el bit de mscara para inhibir hasta nueva orden ese canal. DREQ debe permanecer activo hasta que DACK responda. Sin embargo, si DREQ permanece activo hasta que acaba el proceso de transferencia, la lnea HRQ baja y se ceden momentneamente los buses al sistema. Despus, vuelve a subir, y cuando se recibe el HLDA de el CPU se pueden realizar ms transferencias de este tipo. En la serie 8080 y 80x86, esto asegura al menos un ciclo para el CPU entre las sucesivas transferencias del DMA. Block Transfer Mode (Modo de transferencia de bloque). Se diferencia del anterior en que en lugar de transferir una sola palabra se mueven todas las necesarias hasta que el registro contador de palabras se desborda. Lgicamente, tambin se acaba el proceso si alguien acta sobre la patilla -EOP. DREQ slo es preciso activarlo hasta que DACK responde. Demand Transfer Mode (Modo de transferencia por demanda). Se diferencia del anterior en que 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. Esta modalidad permite dejar ciclos a el CPU cuando no es realmente necesario que el DMA opere. Adems, en los perodos de inactividad, los valores de direccin en curso y contador de palabras son almacenados en el Registro de direcciones en curso y en el Registro contador de palabras en curso correspondientes al canal implicado; mientras tanto, otros canales de mayor prioridad pueden ser atendidos por el 8237. Conexin en cascada. Esta conexin es empleada para conectar ms de un 8237 en el sistema. La lnea HRQ de los 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. La estructura de prioridades es por tanto preservada. 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. El -EOP

10

externo ser ignorado por el 8237 padre, pero s tendr efecto en el 8237 hijo correspondiente. 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 mostrado a continuacin Figura 3.1:

Figura 3.1 DMAC niveles.

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.

Figura 3.2 y 3.2 DMAC no esta en funcionamiento y DMA funcionando.

11

Programacin.
El 8237 puede ser programado cuando HLDA est inactivo, siendo responsabilidad del programador que esto sea as (es decir, programarlo antes de que comience a operar). En cualquier caso, puede existir el riesgo de que mientras se programa un canal, se produzca una peticin de DMA en el mismo antes de acabar la programacin, y probablemente en un punto crtico (cuando, por ejemplo, se acababa de enviar la mitad de un valor de 16 bits). Para evitar este riesgo, antes de comenzar a programar un canal puede ser necesario enmascararlo, desinhibindolo despus.

Registros internos del 8237. Current Address Register (Registro de direccin en curso). Cada canal tiene un registro de direccin en curso que almacena la direccin de memoria empleada durante las transferencias del DMA. Su contenido es incrementado/decrementado despus de cada transferencia. Este registro es inicializado por el CPU enviando dos bytes consecutivos; en modo auto inicializacin, su contenido inicial se restaura cuando sta se produce. Current Word Register (Registro contador de palabras en curso). Cada canal tiene un registro contador de palabras en curso, que determina el nmero de bytes a transferir en la operacin menos uno (para un valor inicial 100, por ejemplo, se transmiten 101 bytes). Tras cada transferencia se decrementa: cuando pasa de 0 a 0FFFFh se genera el TC (Terminal Count) y el proceso finaliza. Este registro es inicializado por el CPU enviando dos bytes consecutivos; en modo auto inicializacin, su contenido inicial se restaura cuando sta se produce; de lo contrario contina con un valor 0FFFFh. Base Address & Base Word Count Registers (Registros base de direccin y base contador de palabras). Cada canal tiene tambin un registro base de direccin y otro base contador de palabras. Estos registros almacenan el valor inicial de los registros de direccin en curso y contador de palabras en curso, ya que ambos tipos de registros se cargan simultneamente durante la programacin. El valor almacenado en estos registros se emplea en la auto inicializacin, para recargar los registros en curso.

12

Canal 0

Registro(s) Base de direccin y de direccin en curso. De direccin en curso. Base contador de palabras y contador de palabras en curso. Contador de palabras en curso. Base de direccin y de direccin en curso. De direccin en curso. Base contador de palabras y contador de palabras en curso. Contador de palabras en curso. Base de direccin y de direccin en curso. De direccin en curso. Base contador de palabras y contador de palabras en curso. Contador de palabras en curso. Base de direccin y de direccin en curso. De direccin en curso. Base contador de palabras y contador de palabras en curso. Contador de palabras en curso. Escribir Leer Escribir Leer Escribir Leer Escribir Leer Escribir Leer Escribir Leer Escribir Leer Escribir Leer

Direccin A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1

Tabla 4.2 Direcciones E/S de los registros de direcciones y contadores.

Command Register (Registro de comandos). Es un registro de 8 bits que controla el funcionamiento del 8237. Se borra tras un Reset o un comando Master Clear:

Figura 4.1 Registro de Comandos.

13

Mode Register (Registro de modo). Cada canal tiene un registro de modo asociado, de 6 bits. Cuando se escribe el registro de modo, se enva un byte al 8237 que selecciona (en los bits 0 y 1) el canal cuyo registro de modo se desea escribir, y el resto de los bits cargan el registro de modo. Cuando se lee, dichos bits estarn a 1 (para leer un registro de modo hay que utilizar antes el comando Clear Mode Register Counter, como se ver en la seccin de comandos).

Figura 4.2 Registros de Modo.

Request Register (Registro de peticin de DMA). El 8237 puede responder a peticiones de DMA tanto por hardware (lnea DREQ) como por software. En este registro posee un bit para cada canal de DMA. Las peticiones por software no se pueden enmascarar, aunque estn sujetas a la lgica de evaluacin de prioridades. Cada bit de este registro es activado o borrado selectivamente por software. Todo el registro es borrado ante un Reset.

Para modificar sus bits, se debe enviar el comando Write Request register. Si se lee el registro, los bits 0 al 3 muestran el estado de las peticiones en los canales 0 al 3 (los dems bits estn a 1). Las peticiones de DMA por software pueden serlo indistintamente en el modo single o en el block. Para operaciones memoria-memoria, hay que hacer una peticin de DMA por software en el canal 0.

14

Mask Register (Registro de mscara de DMA). Cada canal tiene asociado un bit de mscara que puede ser activado para inhibir las solicitudes de DMA a travs de la lnea DREQ. Este bit es automticamente activado cada vez que se produce un -EOP (al final de la transferencia) a menos que el canal est en modo auto inicializacin. Cada bit de mscara puede ser modificado por separado, o todos a la vez, con el comando apropiado. Todo el registro es puesto a 1 a travs del comando Master Clear o debido a un Reset, lo que inhibe las solicitudes de DMA por hardware hasta que se enva un comando para limpiar el registro de mscara (o se borran los bits que se desee en el mismo). Existen tres rdenes para actuar sobre el registro de mscara; Comando Clear Mask Register, que borra todos los bits de mscara. Comando Write Single Mask Bit, modificando un solo bit. Comandos Read y Write All Mask Bits, con los que se pueden consultar y alterar todos los bits de mscara a la vez.

Status Register (Registro de estado). Contiene informacin de estado lista para ser leda por el CPU. Los bits 0 al 3 indican si los respectivos canales han alcanzado un TC (Terminal Count) o se les ha aplicado una seal -EOP externa. Estos bits se borran ante un Reset, un comando Master Clear o, simplemente, al leer el propio registro de estado. Los bits 4 al 7 indican qu canales estn solicitando servicio, con independencia de que estn enmascarados o no. De esta manera, enmascarando todos los canales y leyendo el registro de estado, por software se puede decidir qu canales conviene desenmascarar, pudiendo el sistema operativo aplicar la gestin de prioridades que desee llegado el caso. Estos bits (4 al 7) son actualizados cuando el reloj est en alto; un Reset o un comando Master Clear los borran.

Figura 4.3 Registro de Estado. Temporary Register (Registro temporal). Se emplea para contener los bytes que se transfieren en las operaciones memoria memoria. Tras completar el proceso de transferencia, el CPU puede averiguar la ltima palabra transferida leyendo este registro, a no ser que el registro haya sido borrado por un Reset o un comando Master Clear.

15

Comandos del DMAC 8237.


A continuacin se citan algunos comandos especiales que pueden ser ejecutados leyendo o escribiendo sobre el 8237. A diferencia de cuando hay que acceder a los registros de direcciones y contadores, aqu el bit A3 est activo. Por tanto, de los 16 puertos de E/S que ocupa el 8237 en cualquier sistema, los 8 ltimos estn relacionados con los comandos y los registros especiales. En la siguiente Tabla 5.1 se muestran todos, y despus se explican los ms confusos.
Comando o Registro Registro direccin canal 0 Registro de cuenta canal 0 Registro direccin canal 1 Registro de cuenta canal 1 Registro direccin canal 2 Registro de cuenta canal 2 Registro direccin canal 3 Registro de cuenta canal 3 Status Register Command Register Request Register Command Register Single Mask Bit Mode Register Set Byte Pointer F/F Clear Byte Pointer F/F Temporalry Register Master Clear Clear Mode Register Counter Clear Mask Register Read / Write All Mask bits Modo de Acceso Lectura y Escritura Lectura y Escritura Lectura y Escritura Lectura y Escritura Lectura y Escritura Lectura y Escritura Lectura y Escritura Lectura y Escritura Lectura Escritura Lectura y Escritura Lectura Escritura Lectura y Escritura Lectura Escritura Lectura Escritura Lectura Escritura Lectura y Escritura 8 bits 00 01 02 03 04 05 06 07 08 09 0A 0A 0B 0C 0C 0D 0D 0E 0E 0F 0F 16 bits C0 C2 C4 C6 C8 CA CC CE D0 D0 D2 D2 D4 D6 D8 D8 DA DA DC DC DE

Tabla 5.1 Direcciones E/S de los controladores de DMA.

16

Ejemplo de un programa en Ensamblador de trasnferencia de datos de Memoria a Memoria.

17

Você também pode gostar