1 peripheral-to-memory fly-by transfers, 2 memory-to-peripheral fly-by transfers, 3 controlling 60x bus bandwidth – Freescale Semiconductor MPC8260 User Manual

Page 655: Peripheral-to-memory fly-by transfers -11, Memory-to-peripheral fly-by transfers -11, Controlling 60x bus bandwidth -11

Advertising
background image

SDMA Channels and IDMA Emulation

MPC8260 PowerQUICC II Family Reference Manual, Rev. 2

Freescale Semiconductor

19-11

related to the dual-port RAM bus are not relevant in fly-by mode. Each DREQ assertion triggers a transfer
the size of the peripheral port. All transfers are made in single memory accesses accompanied by DACK
assertion. When DONE is asserted externally or a

STOP

_

IDMA

command is issued, the current transfer is

stopped, its BD is closed, and the IDSR[EDN] or IDSR[SC] event bits are set; see

Section 19.8.4, “IDMA

Event Register (IDSR) and Mask Register (IDMR).”

In fly-by mode, a peripheral can be configured to handle a burst per DREQ assertion if STS is programmed
to 32. The first phase of the transfer aligns the data to the burst boundary so that subsequent accesses can
be performed in bursts.

19.5.2.2.1

Peripheral-to-Memory Fly-By Transfers

During peripheral-to-memory fly-by transfers, the IDMA controller writes to memory while
simultaneously asserting DACK. The constant assertion of DACK enables the controller to write to
memory as soon as the peripheral outputs data to the bus. Thus, data is transferred from a peripheral to
memory in one data phase instead of two, increasing throughput.

For proper operation, STS must equal the peripheral port size.

19.5.2.2.2

Memory-to-Peripheral Fly-By Transfers

During memory-to-peripheral fly-by transfers, the IDMA controller reads from memory while
simultaneously asserting DACK.

The constant assertion of DACK enables the controller to read from memory as soon as the peripheral
samples the data bus. Thus, data is transferred from memory to a peripheral in one data phase instead of
two, increasing throughput.

For proper operation, DTS must equal the peripheral port size.

19.5.3

Controlling 60x Bus Bandwidth

STS, DTS, and SS_MAX can be used to control the 60x bus bandwidth occupied by the IDMA channel.
In every mode except fly-by mode, at least one transfer size parameter (STS/DTS) must be initialized to
the SS_MAX value. For memory-to-memory transfers, the other transfer size parameter can be initialized
to a smaller value used to control the 60x bus bandwidth. For example, if the transfer size is N*32 bytes,
each time the DMA controller wins arbitration, it transfers N bursts before releasing the bus. When
SS_MAX bytes have been transferred, the controller reverts to single transactions (double-word, word,
half-word, or byte).

Memory-to-memory transfer sizes must evenly divide into SS_MAX and also be a multiple of 32 (for
bursting); see

Table 19-7

.

The size of the IDMA transfer buffer in the dual-port RAM should be determined by the largest transfer
(usually SS_MAX + 32 bytes) needed by one of the buses, while the other transfer size can be programmed
to control the bandwidth of the other bus.

Summarizing the above, a larger DMA transfer size provides for greater microcode efficiency and lower
DMA bus latency, because the DMA controller does not release the 60x bus until the transfer is completed.
If the DMA priority on the 60x bus is high, however, other 60x masters may experience a high bus latency.

Advertising