Information

DMA Controller (DMAC)
MPC8308 PowerQUICC II Pro Processor Reference Manual, Rev. 1
12-30 Freescale Semiconductor
TCD.daddr = 0x2000
TCD.doff = 4
TCD.dsize = 2
TCD.dlast_sga= –16
TCD.int_maj = 1
TCD.start = 1 (TCD.word7 should be written last after all other fields have been initialized)
All other TCD fields = 0
This would generate the following sequence of events:
1. Register interface write to the TCD.start bit requests channel service.
2. Software sets the TCD.start bit of the channel for activation. The channel is selected by arbitration
for servicing.
3. DMA engine writes: TCD.done = 0, TCD.start = 0, TCD.active = 1.
4. DMA engine reads: channel TCD data from local memory to internal register file.
5. The source to destination transfers are executed as follows:
a) read_byte(0x1000), read_byte(0x1001), read_byte(0x1002), read_byte(0x1003)
b) write_word(0x2000) -> first iteration of the minor loop
c) read_byte(0x1004), read_byte(0x1005), read_byte(0x1006), read_byte(0x1007)
d) write_word(0x2004) -> second iteration of the minor loop
e) read_byte(0x1008), read_byte(0x1009), read_byte(0x100a), read_byte(0x100b)
f) write_word(0x2008) -> third iteration of the minor loop
g) read_byte(0x100c), read_byte(0x100d), read_byte(0x100e), read_byte(0x100f)
h) write_word(0x200c) -> last iteration of the minor loop -> major loop complete
6. DMA engine writes: TCD.saddr = 0x1000, TCD.daddr = 0x2000, TCD.citer = 1 (TCD.biter).
7. DMA engine writes: TCD.active = 0, TCD.done = 1, DMAINT[n] = 1.
8. The channel retires.
The DMA goes idle or services next channel.
12.6.2 Multiple Requests
The next example is the same as previous with the exception of transferring 32 bytes by software triggered
operation. The only fields that change are the major loop iteration count and the final address offsets. The
DMA is programmed for two iterations of the major loop transferring 16 bytes per iteration.
TCD.citer = TCD.biter = 2
TCD.slast = –32
TCD.dlast_sga = –32
This generates the following sequence of events:
1. Software sets the
TCD.start bit of the channel for activation. The channel is selected by arbitration
for servicing.