03.01.2015 Views

80C186EC/80C188EC Microprocessor User's Manual

80C186EC/80C188EC Microprocessor User's Manual

80C186EC/80C188EC Microprocessor User's Manual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

DIRECT MEMORY ACCESS UNIT<br />

10.1.1.1 DMA Transfer Directions<br />

The source and destination addresses for a DMA transfer are programmable and can be in either<br />

memory or I/O space. DMA transfers can be programmed for any of the following four directions:<br />

• from memory space to I/O space<br />

• from I/O space to memory space<br />

• from memory space to memory space<br />

• from I/O space to I/O space<br />

DMA transfers can access the Peripheral Control Block.<br />

10.1.1.2 Byte and Word Transfers<br />

DMA transfers can be programmed to handle either byte or word transfers. The handling of byte<br />

and word data is the same as that for normal bus cycles and is dependent upon the processor bus<br />

width. For example, odd-aligned word DMA transfers on a processor with a 16-bit bus requires<br />

two fetches and two deposits (all back-to-back). BIU bus cycles are covered in Chapter 3, “Bus<br />

Interface Unit.” Word transfers are illegal on the 8-bit bus device.<br />

10.1.2 Source and Destination Pointers<br />

Each DMA channel maintains a twenty-bit pointer for the source of data and a twenty-bit pointer<br />

for the destination of data. The twenty-bit pointers allow access to the full 1 Mbyte of memory<br />

space. The DMA Unit views memory as a linear (unsegmented) array.<br />

With a twenty-bit pointer, it is possible to create an I/O address that is above the CPU limit of 64<br />

Kbytes. The DMA Unit will run I/O DMA cycles above 64K, even though these addresses are<br />

not accessible through CPU instructions (e.g., IN and OUT). Some applications may wish to<br />

make use of this by swapping pages of data from I/O space above 64K to standard CPU memory.<br />

The source and destination pointers can be individually programmed to increment, decrement or<br />

remain constant after each transfer. The programmed data width (byte or word) determines the<br />

amount that a pointer is incremented or decremented. Word transfers change the pointer by two;<br />

byte transfers change the pointer by one.<br />

10.1.3 DMA Requests<br />

There are three distinct sources of DMA requests: the external DRQ pin, the internal DMA request<br />

line and the system software. In all three cases, the system software must arm a DMA channel<br />

before it recognizes DMA requests. (See “Arming the DMA Channel” on page 10-23.)<br />

10-3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!