TC1796
System Units (Vol. 1 of 2)
Direct Memory Access Controller
User’s Manual 12-19 V2.0, 2007-07
DMA, V2.0
Figure 12-12 Programmable Address Modification - Example 2
12.1.4.7 Circular Buffer
Destination and source address can be configured to build a circular buffer separately
for source and destination data. Within this circular buffer, addresses are updated as
defined in Figure 12-11 and Figure 12-12 with a wrap-around at the buffer limits. The
circular buffer length is determined by bit fields ADRCRmn.CBLS (for the source buffer)
and ADRCRmn.CBLD (for the destination buffer). These 4-bit wide bit fields determine
which bits of the 32-bit address remain unchanged at an address update. Possible buffer
sizes of the circular buffers can be 2
CBLS
or 2
CBLD
bytes (= 1, 2, 4, 8, 16, … up to 32k
bytes).
When source or destination addresses are updated (incremented or decremented) after
a DMA move, all upper bits [31:CBLS] of source address and [31:CBLD] of destination
address are frozen and remain unchanged, even if a wrap-around from the lower
address bits [CBLS:0] or [CBLD:0] occurred. This address-freezing mechanism always
causes the circular buffers to be aligned to a multiple integer value of its size.
If the circular buffer size is less or equal than the selected address offset (see
Table 12-8), the same circular buffer address will always be accessed.
MCA05691
ADRCRmn Parameters:
SMF = 000
B
INCS = 1
Source Memory Destination Memory
00
H
D0
31 01516
DMA
Moves
04
H
08
H
0C
H
10
H
14
H
18
H
1C
H
00
H
D4
31 01516
04
H
08
H
0C
H
10
H
14
H
18
H
1C
H
ADRCRmn Parameters:
DMF = 001
B
INCD = 1
D6
D1
D2D3
D4D5
D6D7
D7
D5
D3
D1
D2
D0