Direct Memory Access (DMA)-Working and Implementation
The document outlines various data transfer mechanisms used in computer-based data acquisition, focusing on polling, interrupts, and DMA (Direct Memory Access). It describes the functionality of DMA controllers on PC motherboards, detailing native and bus-master DMA types, as well as their implementations and performance implications. Additionally, it provides insights into the DMA operation code flow and references for further reading on related topics.
Direct Memory Access (DMA)-Working and Implementation
1.
Data Transfer Mechanisms
➢In computer-based data acquisition applications,
data incoming or outgoing through computer I/O
devices must often be managed at high speeds
or in large quantities. The three primary data
transfer mechanisms:
➢ Polling
➢ Interrupts ( Programmed I/O)
➢ DMA
DMA Controller
The PCmotherboard has a DMA controller on the South Bridge that can
master
the I/O bus and initiate DMA to or from a peripheral.
This is usually the case for legacy ISA cards.
Can be viewed in /proc/dma on Linux machines
Native DMA
The onlypieces of legacy hardware that use
ISA DMA and are still fairly common are Super
I/O devices on motherboards that often
integrate a built-in floppy disk controller, an
IrDA infrared controller when FIR (fast infrared)
mode is selected, and a IEEE 1284 parallel port
controller when ECP mode is selected.
PCI IDE Bus-mastering
●The PCI bus also allows you to set up
compatible IDE/ATA hard disk drives to be bus
masters. Under the correct conditions this can
increase performance over the use of PIO
modes, which are the default way that IDE/ATA
hard disks transfer data to and from the system.
When PCI bus mastering is used, IDE/ATA
devices use DMA modes to transfer data
instead of PIO.
Execution of aDMA-operation (single block transfer)
1)The CPU prepares the DMA-operation by the construction
of a descriptor , containing all necessary information for the
DMAC to independently perform the DMA-operation (off-
load engine for data transfer).
2)It initializes the operation by writing a command to a
register in the DMAC (2a) or to a special assigned memory
area (command area), where the DMAC can poll for the
command and/or the descriptor (2b).
3)Then the DMAC addresses the device data register
4) and reads the data into a temporary data register .
5)In another bus transfer cycle, it addresses the memory
block and
6) writes the data from the temporary data register to the
memory block .