Datasheet
06 February 2012 Broadcom Europe Ltd. 406 Science Park Milton Road Cambridge CB4 0WW Page 40
© 2012 Broadcom Corporation. All rights reserved
4.2.1 DMA Channel Register Address Map
Each DMA channel has an identical register map, only the base address of each channel is
different.
There is a global enable register at the top of the Address map that can disable each DMA for
powersaving.
Only three registers in each channels register set are directly writeable (CS, CONBLK_AD
and DEBUG). The other registers (TI, SOURCE_AD, DEST_AD, TXFR_LEN, STRIDE &
NEXTCONBK), are automatically loaded from a Control Block data structure held in
external memory.
4.2.1.1 Control Block Data Structure
Control Blocks (CB) are 8 words (256 bits) in length and must start at a 256-bit aligned
address. The format of the CB data structure in memory, is shown below.
Each 32 bit word of the control block is automatically loaded into the corresponding 32 bit
DMA control block register at the start of a DMA transfer. The descriptions of these registers
also defines the corresponding bit locations in the CB data structure in memory.
32
-
bit
Word
Offset Description
Associated
Read-Only
Register
0
Transfer Information
TI
1
Source Address
SOURCE_AD
2
Destination Address
DEST_AD
3
Transfer Length
TXFR_LEN
4
2D Mode Stride
STRIDE
5
Next Control Block
Address
NEXTCONBK
6
-
7
Reserved
–
set to zero.
N/A
Table 4-2 – DMA Control Block Definition
The DMA is started by writing the address of a CB structure into the CONBLK_AD register
and then setting the ACTIVE bit. The DMA will fetch the CB from the address set in the
SCB_ADDR field of this reg and it will load it into the read-only registers described below.
It will then begin a DMA transfer according to the information in the CB.
When it has completed the current DMA transfer (length => 0) the DMA will update the
CONBLK_AD register with the contents of the NEXTCONBK register, fetch a new CB from
that address, and start the whole procedure once again.
The DMA will stop (and clear the ACTIVE bit) when it has completed a DMA transfer and
the NEXTCONBK register is set to 0x0000_0000. It will load this value into the
CONBLK_AD reg and then stop.