Edit online

设备源端和终端传输类型

3 Mar 2025
Read time: 2 minute(s)

本节介绍了设备的源端 (Source Type) 和终端 (Destination type) 传输类型配置及其工作机制。源端对象和终端对象均可以是储存或外设。

下表分别列出了存储设备和非存储设备的源端和终端传输类型配置:
1. 存储设备源端和终端传输类型配置说明
DMA_TASK_CFG_1 寄存器 含义 是否握手 设备类型
0x0: io_single

DMA 以 transfer(AHB 协议 )进行传输,每次握手进行一次 single transfer。

需要 非存储设备
0x1: io_burst

DMA 以 transfer(AHB 协议)进行传输,一次握手进行多次 single transfer。

需要 非存储设备
0x2: memory 存储传输类型 不需要 存储设备
0x3: memoryset 存储传输类型

使用 memoryset 时,task 中源端与终端参数需配置一致。

不需要 存储设备
0x4: io_fast

DMA 以 transfer(AHB 协议 )进行传输,一次握手进行多次 burst transaction。

外设支持 IO_FAST 模式需满足下列条件:
  • FIFO 地址入口是一个空间。

  • 空间需要大于等于 Block length。

需要 非存储设备
注: SRAM 与 DRAM 等存储设备仅能使用 Memory 或 memoryset 类型。对于非存储设备(外设),需按照 spec 规格选择上述适用的其中一种传输类型。

数据传输的长度对齐与传输效率

对于非存储设备类型,IO_SINGLE、IO_BURST 和 IO_FAST 的传输效率为 IO_FAST > IO_BURST > IO_SINGLE:
  • 当数据长度与 Block Length 对齐时

    如图所示,ADDR = 0x30、Date Width = 32、Type = io_burst、Burst = 4 且 Block_length = 16,DMA 传输数据总量 28(16+3*4):

    • 由于 DMA 传输数据总量 (28) ≥ Block_length (16),则第一次数据传输使用 burst 类型。

    • 由于剩余的 DMA 传输数据量 (12) < Block_length (16),不满足 burst 长度需求,尽管 Type=io_burst,硬件会自动拆分为三次 single 类型进行传输。


    1606_dma_iob_b41

    1. Type=IO_BURST 且数据长度与 Length 对齐

    dma_iob_remian31

    2. Type=IO_FAST 且数据长度与 Length 对齐

    1606_dma_iob_b41

    3. Type=IO_BURST 且数据长度与 Length 非对齐
  • 当数据长度与 Block Length 非对齐,配置为 Type=IO_FAST 时

    如图所示,ADDR = 0x30、Date Width = 32、Type = io_fast、Burst = 4 且 Block_length = 16,DMA 传输数据总量 28(16+3*4)

    • 由于 DMA 传输数据总量 (28) ≥ Block_length (16), 第一次数据传输使用 fast 类型。

    • 由于剩余的 DMA 传输数据量 (12) < Block_length (16),不满足 fast 长度需求,尽管 Type=io_fast,硬件会自动拆分为三次 single 类型进行传输。


    dma_iof_remian31

    4. Type=IO_FAST 且数据长度与 Length 非对齐