Edit online

寄存器描述

3 Mar 2025
Read time: 25 minute(s)
注:

本节的变量 n=0~3。

0x000 DMA_IRQ_EN_SET_STATE_1

重要: 对于本中断寄存器所有位域:
  • 写 1 打开中断
  • 写 0 忽略不作动作
  • 关闭中断参考对应 DMA_IRQ_EN_CLR

默认值:0x00000000

DMA 中断开启与开启状态 1 (DMA Interrupt Request Set State 1)

位域

类型

默认值

描述

7+8*n

R/W1S

0x0

CHn_AXIWT_ILLEGAL_IRQ_SET

通道 AXI 写非法地址错误中断开启与中断开启状态

6+8*n

R/W1S

0x0

CHn_AXIRD_ILLEGAL_IRQ_SET

通道 AXI 读非法地址错误中断开启与中断开启状态

5+8*n

R/W1S

0x0

CHn_AHBWT_ILLEGAL_IRQ_SET

通道 AHB 写非法地址错误中断开启与中断开启状态

4+8*n

R/W1S

0x0

CHn_AHBRD_ILLEGAL_IRQ_SET

通道 AHB 读非法地址错误中断开启与中断开启状态

3+8*n

R/W1S

0x0

CHn_LINKCFG_ERR_IRQ_SET

通道 LINK 地址错误与 LINK ID 错误中断开启与中断开启状态

2+8*n

R/W1S

0x0

CHn_LINK_FINISH_IRQ_SET

通道 n 完成链表中断开启与中断开启状态

1+8*n

R/W1S

0x0

CHn_TASK_FINISH_IRQ_SET

通道 n 完成一个任务中断开启与中断开启状态

0+8*n

R/W1S

0x0

CHn_TASK_HALF_IRQ_SET

通道 n 完成半个任务中断开启与中断开启状态

0x004 DMA_IRQ_EN_SET_STATE_2

重要: 对于本中断寄存器所有位域:
  • 写 1 打开中断
  • 写 0 忽略不作动作
  • 关闭中断参考对应 DMA_IRQ_EN_CLR

默认值:0x00000000

DMA 中断开启与开启状态 2(DMA Interrupt Request Set State 2)

位域

类型

默认值

描述

7+8*n

R/W1S

0x0

CH(n+4)_AXIWT_ILLEGAL_IRQ_SET

通道(n+4) AXI 写非法地址错误中断开启与中断开启状态

6+8*n

R/W1S

0x0

CH(n+4)_AXIRD_ILLEGAL_IRQ_SET

通道(n+4) AXI 读非法地址错误中断开启与中断开启状态

5+8*n

R/W1S

0x0

CH(n+4)_AHBWT_ILLEGAL_IRQ_SET

通道(n+4) AHB 写非法地址错误中断开启与中断开启状态

4+8*n

R/W1S

0x0

CH(n+4)_AHBRD_ILLEGAL_IRQ_SET

通道(n+4) AHB 读非法地址错误中断开启与中断开启状态

3+8*n

R/W1S

0x0

CH(n+4)_LINKCFG_ERR_IRQ_SET

通道(n+4) LINK 地址错误与 ID 错误中断开启与中断开启状态

2+8*n

R/W1S

0x0

CH(n+4)_LINK_FINISH_IRQ_SET

通道(n+4)完成链表中断开启与中断开启状态

1+8*n

R/W1S

0x0

CH(n+4)_TASK_FINISH_IRQ_SET

通道(n+4)完成一个任务中断开启与中断开启状态

0+8*n

R/W1S

0x0

CH(n+4)_TASK_HALF_IRQ_SET

通道(n+4)完成半个任务中断开启与中断开启状态

0x020 DMA_IRQ_EN_CLR_1

重要: 对于本中断寄存器所有位域:
  • 写 1 关闭中断
  • 写 0 忽略不作动作
  • 打开中断参考对应 DMA_IRQ_EN_SET_STATE

默认值:0x00000000

DMA 中断关闭 1 (DMA Interrupt Request Clear 1)

位域

类型

默认值

描述

7+8*n

W1C

0x0

CHn_AXIWT_ILLEGAL_IRQ_CLR

通道 AXI 写非法地址错误中断关闭

6+8*n

W1C

0x0

CHn_AXIRD_ILLEGAL_IRQ_CLR

通道 AXI 读非法地址错误中断关闭

5+8*n

W1C

0x0

CHn_AHBWT_ILLEGAL_IRQ_CLR

通道 AHB 写非法地址错误中断关闭

4+8*n

W1C

0x0

CHn_AHBRD_ILLEGAL_IRQ_CLR

通道 AHB 读非法地址错误中断关闭

3+8*n

W1C

0x0

CHn_LINKCFG_ERR_IRQ_CLR

通道 LINK 地址错误与 LINK ID 错误中断关闭

2+8*n

W1C

0x0

CHn_LINK_FINISH_IRQ_CLR

通道 n 完成链表中断关闭

1+8*n

W1C

0x0

CHn_TASK_FINISH_IRQ_CLR

通道 n 完成一个任务中断关闭

0+8*n

W1C

0x0

CHn_TASK_HALF_IRQ_CLR

通道 n 完成半个任务中断关闭

0x024 DMA_IRQ_EN_CLR_2

重要: 对于本中断寄存器所有位域:
  • 写 1 关闭中断
  • 写 0 忽略不作动作
  • 打开中断参考对应 DMA_IRQ_EN_SET_STATE

默认值:0x00000000

DMA 中断关闭 2(DMA Interrupt Request Clear 2)

位域

类型

默认值

描述

7+8*n

W1C

0x0

CH(n+4)_AXIWT_ILLEGAL_IRQ_CLR

通道(n+4) AXI 写非法地址错误中断关闭

6+8*n

W1C

0x0

CH(n+4)_AXIRD_ILLEGAL_IRQ_CLR

通道(n+4) AXI 读非法地址错误中断关闭

5+8*n

W1C

0x0

CH(n+4)_AHBWT_ILLEGAL_IRQ_CLR

通道(n+4) AHB 写非法地址错误中断关闭

4+8*n

W1C

0x0

CH(n+4)_AHBRD_ILLEGAL_IRQ_CLR

通道(n+4) AHB 读非法地址错误中断关闭

3+8*n

W1C

0x0

CH(n+4)_LINKCFG_ERR_IRQ_CLR

通道(n+4) LINK 地址错误与 ID 错误中断关闭

2+8*n

W1C

0x0

CH(n+4)_LINK_FINISH_IRQ_CLR

通道(n+4)完成链表中断关闭

1+8*n

W1C

0x0

CH(n+4)_TASK_FINISH_IRQ_CLR

通道(n+4)完成一个任务中断关闭

0+8*n

W1C

0x0

CH(n+4)_TASK_HALF_IRQ_CLR

通道(n+4)完成半个任务中断关闭

0x040 DMA_IRQ_STA_1

默认值:0x00000000

DMA 中断状态 1(DMA Interrupt States 1)

位域

类型

默认值

描述

7+8*n

R/W1C

0x0

CHn_AXIWT_ILLEGAL_STA

通道 AXI 写非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AXI 写指令,接收到对象返回的 ERROR,则产生中断状态。

6+8*n

R/W1C

0x0

CHn_AXIRD_ILLEGAL_STA

通道 AXI 读非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AXI 读指令,接收到对象返回的 ERROR,则产生中断状态。

5+8*n

R/W1C

0x0

CHn_AHBWT_ILLEGAL_STA

通道 AHB 写非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AHB 写指令,接收到对象返回的 ERROR,则产生中断状态。

4+8*n

R/W1C

0x0

CHn_AHBRD_ILLEGAL_STA

通道 AHB 读非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AHB 读指令,接收到对象返回的 ERROR,则产生中断状态。

3+8*n

R/W1C

0x0

CHn_TASKCFG_ERR_STA

通道 LINK 地址错误中断与 LINK ID 错误中断状态

0: 无中断

1: 有中断

Task 中,源端地址空间或终端地址空间存在跨 0x1_ffff_ffff 边界,则产生中断状态。

Task 中,设置的 ID 与 DMA_LINK_ID_SET 不一致,则产生中断状态。

2+8*n

R/W1C

0x0

CHn_LINK_FINISH_IRQ_STA

通道 n 完成链表中断状态

0: 无中断

1: 有中断

完成 LINK 中所有 Task 传输,则产生中断状态。

1+8*n

R/W1C

0x0

CHn_TASK_FINISH_IRQ_STA

通道 n 完成一个任务中断状态

0: 无中断

1: 有中断

每完成一个 Task 传输,则产生中断状态。

0+8*n

R/W1C

0x0

CHn_TASK_HALF_IRQ_STA

通道 n 完成半个任务中断状态

0: 无中断

1: 有中断

每完成半个 Task(传输剩余字节数 ≤1/2 Task Length)传输,则产生中断状态。

1:CHn_LINKID_ERR_STA 主要应用场景:TASK 未配置或 TASK 空间为非法空间,启动 DMA 后, DMA 先对 LINKID 进行对比校验,不一致产生错误提示,停止工作。正常情况下,TASK 空间有效,并且 TASK 正确设置,不会产生 _LINKID_ERR_STA 中断。

2:当 DMA 进入 CHn_TASK_ADDR_ERR_STA 或 CHn_LINKID_ERR_STA 状态下, DMA 会停止(DMA 会自动回到 Idle 状态 不需要软件介入),产生中断状态。

3:Bus_stop_en=0。非 DDR 设备需要添加附加条件 AHB_resp_en=0。当 DMA 进入 CHn_AXI_ILLEGAL_STA 或 STA ,DMA 会继续完成传输,产生中断状态(推荐 enginer_clr_en=0)。

4:Bus_stop_en=0,AHB_resp_en=1。当 DMA 进入 STA ,DMA 会停止传输,产生中断状态,此时需要软件进行 DMA 通道复位(enginer_clr_en=1,dma_ch_en=0)。DDR 设备没有软件复位机制

5:Bus_stop_en=1,非 DDR 设备需要添加附加条件 AHB_resp_en=0。当 DMA 进入 CHn_AXI_ILLEGAL_STA,CHn_AHB_ILLEGAL_STA ,DMA 会停止传输,产生中断状态,DMA 通道会自动进行复位

0x044 DMA_IRQ_STA_2

默认值:0x00000000

DMA 中断状态 2(DMA Interrupt States 2)

位域

类型

默认值

描述

7+8*n

R/W1C

0x0

CH(n+4)_AXIWT_ILLEGAL_STA

通道(n+4) AXI 写非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AXI 写指令,接收到对象返回的 ERROR,则产生中断状态

6+8*n

R/W1C

0x0

CH(n+4)_AXIRD_ILLEGAL_STA

通道(n+4) AXI 读非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AXI 读指令,接收到对象返回的 ERROR,则产生中断状态

5+8*n

R/W1C

0x0

CH(n+4)_AHBWT_ILLEGAL_STA

通道(n+4) AHB 写非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AHB 写指令,接收到对象返回的 ERROR,则产生中断状态

4+8*n

R/W1C

0x0

CH(n+4)_AHBRD_ILLEGAL_STA

通道(n+4) AHB 读非法地址错误中断状态

0: 无中断

1: 有中断

DMA 发出 AHB 读指令,接收到对象返回的 ERROR,则产生中断状态

3+8*n

R/W1C

0x0

CH(n+4)_TASKCFG_ERR_STA

通道(n+4) LINK 地址错误中断与 ID 错误中断状态

0: 无中断

1: 有中断

Task 中,源端地址空间或终端地址空间存在跨 0x1_ffff_ffff 边界,则产生中断状态

Task 中,设置的 ID 与 DMA_LINK_ID_SET 不一致,则产生中断状态

2+8*n

R/W1C

0x0

CH(n+4)_LINK_FINISH_IRQ_STA

通道(n+4)完成链表中断状态

0: 无中断

1: 有中断

完成 LINK 中所有 Task 传输,则产生中断状态

1+8*n

R/W1C

0x0

CH(n+4)_TASK_FINISH_IRQ_STA

通道(n+4)完成一个任务中断状态

0: 无中断

1: 有中断

每完成一个 Task 传输,则产生中断状态

0+8*n

R/W1C

0x0

CH(n+4)_TASK_HALF_IRQ_STA

通道(n+4)完成半个任务中断状态

0: 无中断

1: 有中断

每完成半个 Task(传输剩余字节数<=1/2 Task Length)传输,则产生中断状态

1:CHn_LINKID_ERR_STA 主要应用场景:TASK 未配置或 TASK 空间为非法空间,启动 DMA 后, DMA 先对 LINKID 进行对比校验,不一致产生错误提示,停止工作。正常情况下,TASK 空间有效,并且 TASK 正确设置,不会产生 _LINKID_ERR_STA 中断。

2:当 DMA 进入 CHn_TASK_ADDR_ERR_STA 或 CHn_LINKID_ERR_STA 状态下, DMA 会停止(DMA 会自动回到 Idle 状态 不需要软件介入),产生中断状态。

3:Bus_stop_en=0。非 DDR 设备需要添加附加条件 AHB_resp_en=0。当 DMA 进入 CHn_AXI_ILLEGAL_STA 或 STA ,DMA 会继续完成传输,产生中断状态(推荐 enginer_clr_en=0)。

4:Bus_stop_en=0,AHB_resp_en=1。当 DMA 进入 STA ,DMA 会停止传输,产生中断状态,此时需要软件进行 DMA 通道复位(enginer_clr_en=1,dma_ch_en=0)。DDR 设备没有软件复位机制

5:Bus_stop_en=1,非 DDR 设备需要添加附加条件 AHB_resp_en=0。当 DMA 进入 CHn_AXI_ILLEGAL_STA,CHn_AHB_ILLEGAL_STA ,DMA 会停止传输,产生中断状态,DMA 通道会自动进行复位

0x54 DMA_BUS_ADDR_SEL

默认值:0x00000001

DMA 总线地址选择(DMA BUS ADDR SELECT )

位域

类型

默认值

描述

31:1

_

_

_

0

R/W

0x1

DMA 总线地址选择:

0:DMA BUS START ADDR and STOP ADDR 设置是 AHB 范围,在地址范围内

都会采用 AHB 访问( START ADDR=< 范围 <STOP ADDR )

1:DMA BUS START ADDR and STOP ADDR 设置是 AXI 范围,在地址范围内

都会采用 AXI 访问( START ADDR=< 范围 <STOP ADDR )

0x58 DMA_BUS_START_ADDR

默认值:0x00030000

DMA 总线起始地址(DMA BUS START ADDR )

位域

类型

默认值

描述

31:28

_

_

_

27:0

R/W

0x30000

DMA 总线起始地址(单位 4KBytes)

0x5C+N*0x80 DMA_BUS_STOP_ADDR

默认值:0x000fffff

DMA 总线结束地址(DMA BUS STOP ADDR )

位域

类型

默认值

描述

31:28

_

_

_

27:0

R/W

0xfffff

DMA 总线结束地址(单位 4KBytes)

0x080 DMA_BUS_CFG

默认值:0x00000000

DMA 总线配置(DMA BUS Config)

位域

类型

默认值

描述

31:7

_

_

-

6

R/W

0x0

AHB_hprot_auto_en

0: hprot 为 CFG_2 里面配置值

1: hprot 前面的 transaction 为 bufferable,最后一笔为 unbufferable

5

R/W

0x0

AHB_resp_enable

0: AHB 不需要等待 Signal 返回

Bus_stop_en=0:访问非法地址,会产生非法访问错误状态,DMA 通道会继续完成传输

Bus_stop_en=1:访问非法地址,会产生非法访问错误状态,DMA 通道会停止,自动复位通道。

1: AHB 需要等待 Signal 返回

访问非法地址,会产生非法访问错误状态,DMA 通道会停止。通过 Enable engine_clr_en,

并且关闭 EN,来对通道进行复位。

推荐使用复位值

4

_

_

_

3

R/W

0x0

engine_clr_en

0: Disable

1: Enable

2:0

_

_

_

0x088 DMA_LINK_ID_SET

默认值:0xa1c86688

DMA LINK ID 设置(DMA LINK ID SET)

位域

类型

默认值

描述

31:0

R/W

0xa1c86688

LINK ID 设置,任务链表中 ID 需与此处设置值一致

每个通道中 task 内的 LINK ID 需要与此处一致,否则会产生 LIND_ID_ERROR

,DMA 无法正常工作。(不同通道中,不同 Task 的 LINK ID 是一样的,需要

配置与此处值一致)

0x090 DMA_FIFO_SIZE

默认值:0x00000200

DMA FIFO 大小(DMA FIFO SIZE)

位域

类型

默认值

描述

31:0

R

0x00000200

DMA 控制器 FIFO 大小(每个通道独立 FIFO 的大小)

FIFO_SIZE = Wide x Len (单位 Bytes,Len=32)

0x0a0 DMA_ALL_CH_STATE

默认值:0x00000000

DMA 所有通道状态(DMA All Channel States)

位域

类型

默认值

描述

31:0

R

0x00000000

CH(n) State

(每个 bit 分别对应一个通道)

0: 空闲

1: 忙碌

0x100+N*0x80 DMA_CH_CTL_1

默认值:0x00000000

DMA 通道控制 1(DMA Channel Control 1)

位域

类型

默认值

描述

31:5

_

_

_

4

R/WAC

0x0

DMA_CH_REEN

DMA 重新使能

0:关闭

1:使能

当 DMA 正在传输时,使能 DMA_CH_REEN,控制器会中断当前正在传输的任务。重新获取描述符,开始新的传输,传输完成会自动清 0

3:1

-

-

-

0

R/WAC

0x0

DMA_CH_EN

DMA 通道使能

0: 关闭

1: 打开

注意 DMA 传输完成后,该位会自动清零,可以通过读取该位表示 DMA

当前状态。每个 DMA 通道执行顺序,由 DMA 控制器自动决定。

0x104+N*0x80 DMA_CH_CTL_2

默认值:0x00000000

DMA 通道控制 2(DMA Channel Control 2)

位域

类型

默认值

描述

31:3

_

_

_

2

R/WAC

0x0

CH_ABANDON

通道链表丢弃

0:通道链表丢弃完成

1:通道链表丢弃使能

DMA 立即停止(不需要等待 task 完成),并且丢弃所有未完成 Task 传输

DMA 丢弃完成之后 ,才能关闭其它设备。

1

R/W

0x0

CHn_TASK_PAUSE

通道任务暂停

0: 继续

1: 通道任务暂停使能

DMA 完成当前 task 之后,才会暂停

0

R/W

0x0

CHn_PAUSE

通道链表暂停

0: 继续

1: 通道链表暂停使能

DMA 立即暂停(不需要等待 task 完成)

0x108+N*0x80 DMA_CH_TASK_ADDR_1

默认值:0x00000000

DMA 通道任务地址 1(DMA Channel Task Addr 1)

位域

类型

默认值

描述

31:0

R/W

0x0

DMA_TASK_ADDR

DMA 任务低 32bit 地址

0x10c+N*0x80 DMA_CH_TASK_ADDR_2

默认值:0x00000000

DMA 通道任务地址 2(DMA Channel Task Addr 2 )

位域

类型

默认值

描述

31:8

_

_

_

7:0

R/W

0x0

DMA_TASK_ADDR

DMA 任务高 8 位地址

0x110+N*0x80 DMA_CH_CTL_3

默认值:0x00000000

DMA 通道控制 3(DMA Channel Control 3)

位域

类型

默认值

描述

31:24

_

_

_

23:20

R/W

0x0

DMA 通道 源端阈值配置

如 Priority Config disable,则到达一定阈值,优先级自动+1

当 DMA 已进行了 n 次 AXI 读行为(n=AXI 读阈值配置,并且 n 次中无该通道)

则 DMA 内部会对 Source Fixed Priority Config 或 Source Fixed Priority Config

+1,一直到 Max,并且保持。如果期间该通道有被授予执行,则优先级恢复

到 Config 或 Source Fixed Priority Config 所配置值。

19:16

R/W

0x0

DMA 通道终端阈值配置

如 Priority Config disable,则到达一定阈值,优先级自动+1

当 DMA 已进行了 n 次 AXI 写行为(n=AXI 写阈值配置,并且 n 次中无该通道)

则 DMA 内部会对 Source Fixed Priority Config 或 Source Fixed Priority Config

+1,一直到 Max,并且保持。如果期间该通道有被授予执行,则优先级恢复

到 Config 或 Source Fixed Priority Config 所配置值。

15

_

_

_

14:13

R/W

0x0

task_bcnt_sel

DMA 剩余 Byte 数据(task_bcnt)功能选择

0x0:终端剩余字节数

0x1:源端剩余字节数

0x2:终端剩余字节数

0x3:源端剩余字节数

12

R/W

0x0

DMA FIX WORD EN

0:disable

1:enable

只有 Type=IO_FAST,并且 Width!=32,根据外设支持情况,才会 enable。

例如 Type=IO_FAST,Width=8。FIX WORD EN=0,

则 ADDR 按+1 累加,并且 AHB BUS HSIZE=0(8 bits),传输次数=block length。

FIX WORD EN=1,则 ADDR 按+4 累加(0/4/8/c),

并且 AHB BUS HSIZE=2(32 bits),有效 data=8,传输次数=block length。

11:10

_

_

_

9

R/W

0x0

DMA 通道源端 Priority Config Enable

0: disable (到一定阈值,通道优先级自动提升功能开启)

1: enable (通道固定优先级参与 DMA 内部通道之间仲裁)

8

R/W

0x0

DMA 通道终端 Priority Config Enable

0: disable (到一定阈值,通道优先级自动提升功能开启)

1: enable (通道固定优先级参与 DMA 内部通道之间仲裁)

7

R/W

0x0

Bus Stop En

0: disable

Bus Stop En=0:AHB 与 AXI 对象返回 Error,则 DMA 的行为由 AHB_resp_enable

或 enable 决定

1: enable

Bus Stop En=1:AHB 与 AXI 对象返回 Error,则 DMA 自动停止,并且自动

回到 Idle 状态(不需要软件介入)

6:5

R/W

0x0

DMA 通道内部 FIFO Priority

0x0:读优先级高

0x1:写优先级高

0x2:读写优先级循环

推荐使用默认值

4

R/W

0x0

CHn Write Back Enable

DMA 通道回写使能

0: disable

1: enable

需要配合 Enable。只有同时有效,回写才会执行。

DMA 每完成一个 task 传输之后,

会自动读取 SET 与 DMA_SRC_WB_ADDR_SET 所配地址,

把该地址内容写到 Task 所对应 TASKn.DST_WB_DATA 与 DATA 空间,并且更新到

通道寄存器 DMA_DST_WB_DATA 与 DATA。 只能同时使能 WB 与 WB。

不能单独使能 WB 或 WB。

3:2

R/W

0x0

Destination Mode Config

0x0:使用握手模式

0x1:使用等待模式

0x2:握手+等待模式

推荐使用默认值(此参数仅对外设有效,储存无效),具体区别参考功能描述.握手

1:0

R/W

0x0

Source Mode Config

0x0:使用握手模式

0x1:使用等待模式

0x2:握手+等待模式

推荐使用默认值(此参数仅对外设有效,储存无效),具体区别参考功能描述.握手

0x114+N*0x80 DMA_CH_CTL_4

默认值:0x00000000

DMA 通道控制 4(DMA Channel Control 4)

位域

类型

默认值

描述

31:24

R/W

0x0

Destination Wait Cycle Set

当 Destination Mode Config=0x1,DMA 完成一笔传输之后,等待 Wait Cycle*4

周期之后,才重新开始一笔传输。

当 Destination Mode Config=0x2,DMA 完成一笔传输之后,等待握手完成之后,

再等待 Wait Cycle*4 周期之后,才重新开始一笔传输。

23:16

R/W

0x0

Source Wait Cycle Set

当 Source Mode Config=0x1,DMA 完成一笔传输之后,等待 Wait Cycle*4

周期之后,才重新开始一笔传输。

当 Source Mode Config=0x2,DMA 完成一笔传输之后,等待握手完成之后,

再等待 Wait Cycle*4 周期之后,才重新开始一笔传输。

15:14

_

_

_

13

R/W

0x0

fsm_frc_resp_memset 仅 debug 使用

0:memset 只有最后一笔等待 response

1:memset 每一笔传输都等待 Response

12

R/W

0x0

fsm_frc_resp_mem 仅 debug 使用

0:Memory 只有最后一笔等待 response,默认值

1:Memory 每一笔传输都等待 Response

注: DMA UART 实现 Byte 模式,需要置 1,其它情况下,统一使用默认值 0。

11:9

_

_

_

8

R/W

0x0

fsm_bps_resp_wb 仅 debug 使用

0:回写使用 response 机制

1:回写屏蔽 wait response 机制

7

R/W

0x0

fsm_bps_resp_memset 仅 debug 使用

0:MemorySet 使用 response 机制

1:MemorySet 屏蔽 wait response 机制

6

R/W

0x0

fsm_bps_resp_mem 仅 debug 使用

0:Memory 使用 response 机制

1:Memory 屏蔽 wait response 机制

5

R/W

0x0

fsm_bps_resp_iob_iof 仅 debug 使用

0:iob 与 iof 使用 wait response 机制

1:iob 与 iof 屏蔽 wait response 机制

4

R/W

0x0

fsm_bps_resp_ios 仅 debug 使用

0:ios 使用 response 机制

1:ios 屏蔽 wait response 机制

3:2

R/W

0x0

Destination Fixed Priority Config

Destination 请求仲裁固定优先级配置

如 Priority Config enable,则通道以此处配置优先级申请请求。

1:0

R/W

0x0

Source Fixed Priority Config

Source 请求仲裁固定优先级配置

如 Priority Config enable,则通道以此处配置优先级申请请求。

0x118+N*0x80 DMA_MEM_SET_VAL

默认值:0x76543210

DMA 内存设置(DMA Memory Set Value)

位域

类型

默认值

描述

31:0

R/W

0x76543210

Memory Set 内容配置

当 Type=memoryset,DMA 会直接把该寄存器的值,写入到终端地址空间,

而不需要从源端读取。

0x11c+N*0x80 DMA_TASK_BCNT

默认值:0x00000000

DMA 剩余传输字节数(DMA Task Byte Counter )

位域

类型

默认值

描述

31:25

_

_

_

24:0

R

0x0

DMA 任务的终端传输开始(或源端传输开始)剩余字节数

终端或源端的选择由 sel 进行决定

0x120+N*0x80 DMA_LINK_ID

默认值:0x00000000

DMA 任务链表 ID(DMA Task Link ID)

位域

类型

默认值

描述

31:0

R

0x0

当前任务链表中的 LINK ID

0x124+N*0x80 DMA_TASK_CFG_1

默认值:0x00000000

DMA 任务配置 (DMA Task Config 1)

位域

类型

默认值

描述

31

R

0x0

Destination Security

30:28

R

0x0

Destination data Width

DMA 终端数据位宽(总线上有效数据的位宽)

  • 0x0: 8 位
  • 0x1: 16 位
  • 0x2: 32 位
  • 0x3: 64 位
  • 0x4: 128 位

根据 设备重要配置信息进行选择。

27:25

R

0x0

Destination Type

  • 0x0: io_single (需要握手)
  • 0x1: io_burst (需要握手)
  • 0x2: memory (不需要握手)
  • 0x3:memoryset (不需要握手)
  • 0x4:io_fast (需要握手)

关于不同设备的具体传输类型配置,可查看设备源端和终端传输类型

24:23

R

0x0

Destination Burst

DMA 终端突发数

  • 0x0: 1
  • 0x1: 4
  • 0x2: 8
  • 0x3: 16

当 Type=io_burst 或 fast 时,Burst 只能为 4, 8 或 16

当 Type=io_single 时,Burst 只能为 1

当 Type=memory 或 memoryset,Burst 推荐为 16

22:16

R

0x0

Destination Device ID

根据 设备重要配置信息进行选择。

15

R

0x0

Source Security

14:12

R

0x0

Source data Width

DMA 源端数据位宽(总线上有效数据的位宽)

0x0: 8 位

0x1: 16 位

0x2: 32 位

0x3: 64 位

0x4: 128 位

根据 设备重要配置信息进行选择。

11:9

R

0x0

Source Type

0x0:io_single (需要握手)

0x1:io_burst (需要握手)

0x2:memory (不需要握手)

0x3:memoryset (不需要握手)

0x4:io_fast(需要握手)

关于不同设备的具体传输类型配置,可查看设备源端和终端传输类型

8:7

R

0x0

Source Burst

DMA 源端突发数

0x0: 1

0x1: 4

0x2: 8

0x3: 16

当 Type=io_burst 或 fast 时,Burst 只能为 4, 8 或 16

当 Type=io_single 时,Burst 只能为 1

当 Type=memory 或 memoryset,Burst 推荐为 16

6:0

R

0x0

Source Device ID

DMA 源端设备 ID

根据 设备重要配置信息进行选择。

0x128+N*0x80 DMA_BLOCK_LEN

默认值:0x00000000

DMA 块长度(DMA Block Length)

位域

类型

默认值

描述

31:16

_

_

_

15:0

R

0x0

Block Length

块长度,单位 Byte
  • 当设备为存储模块时,推荐:DMA_BLOCK_LEN = DMA_FIFO_SIZE/2

  • 当设备为非存储模块时,推荐:DEVICE_FIFO_LEVEL = DMA_BLOCK_LEN

  • 当 Type = io_burst 或 fast 时,DMA_BLOCK_LEN = Width * Burst / 8

  • 当 Type = io_single 时,DMA_BLOCK_LEN = Width * 1 / 8

0x12c+N*0x80 DMA_SRC_ADDR

默认值:0x00000000

DMA 源端地址 (DMA Source Addr)

位域

类型

默认值

描述

31:0

R

0x0

DMA 任务源端地址低 32 bits[1:0]=2'b00 (4byte 对齐)

0x130+N*0x80 DMA_DST_ADDR

默认值:0x00000000

DMA 终端地址 (DMA Destination Addr)

位域

类型

默认值

描述

31:0

R

0x0

DMA 任务终端地址低 32 bits[1:0]=2'b00(4byte 对齐)

0x134+N*0x80 DMA_TASK_LEN

默认值:0x00000000

DMA 任务传输字节长度 (DMA TASK LENGTH)

位域

类型

默认值

描述

31

R

0x0

Task Write Back Enable

0: Disable

1: Enable

要与 Enable 配合使用。只有同时有效,回写才会执行。

DMA 每完成一个 task 传输之后,会自动读取 SET 与 DMA_SRC_WB_ADDR_SET 所配地址,把该地址内容写到 Task 所对应 TASKn.DST_WB_DATA 与 DATA 空间,并且更新到通道寄存器 DMA_DST_WB_DATA 与 DATA。 只能同时使能 WB 与 WB。

不能单独使能 WB 或 WB。

30

_

_

_

29:27

R

0x0

DMA 总线 qos,对应 AXI 接口 qos 信号

26

R

0x0

0:当终端 Type=io_fast,地址按照 width 进行累加跳转。

1:当终端 Type=io_fast,并且 FIX WORD EN=enable,地址按照 word 进行累加(0/4/8/C)跳转。

25

R

0x0

0:当源端 Type=io_fast,地址按照 width 进行累加跳转

1:当源端 Type=io_fast,并且 FIX WORD EN=enable,地址按照 word 进行累加(0/4/8/C)跳转。

24:0

R

0x0

DMA 当前 TASK 需要传输的数据长度单位 Bytes

0x138+N*0x80 DMA_TASK_CFG_2

默认值:0x00000000

DMA 已传任务数量 (DMA TASK CONFIG 2)

位域

类型

默认值

描述

31:28

R

0x0

终端访问总线 hprot,对应 AHB 接口 hprot 信号

27:24

R

0x0

源端访问总线 hprot,对应 AHB 接口 hprot 信号

23:16

R

0x0

下一任务高 8bit 地址

15:8

R

0x0

终端高 8bit 起始地址

7:0

R

0x0

源端高 8bit 起始地址

0x13c+N*0x80 DMA_NEXT_TASK_ADDR

默认值:0x00000000

DMA 下一任务地址 (Next Task Addr)

位域

类型

默认值

描述

31:0

R

0x0

下一任务低 32 bits 地址

0x140+N*0x80 DMA_SRC_WB_ADDR_SET

默认值:0x00000000

DMA 源端回写地址设置 (Source Write Back Addr Set)

位域

类型

默认值

描述

31:0

R/W

0x0

SRC_WB_ADDR_SET

读取源端 Device 状态地址的设置

任务完成之后,DMA 会读取该地址,然后把该地址里面数据回写到链表空间

,并且把数据更新到 DATA 寄存器中。

0x144+N*0x80 DMA_DST_WB_ADDR_SET

默认值:0x00000000

DMA 终端回写地址设置 (Destination Write Back Addr Set)

位域

类型

默认值

描述

31:0

R/W

0x0

DST_WB_ADDR_SET

读取终端 Device 状态地址的设置

任务完成之后,DMA 会读取该地址,然后把该地址里面数据回写到链表空间

,并且把数据更新到 DATA 寄存器中。

0x148+N*0x80 DMA_SRC_WB_DATA

默认值:0x00000001

DMA 源端回写数据 (Source Write Back Data)

位域

类型

默认值

描述

31:0

R

0x1

SRC_WB_DATA

源端 Device 状态(回写的数据)

0x14c+N*0x80 DMA_DST_WB_DATA

默认值:0x00000001

DMA 终端回写数据 (Destination Write Back Data)

位域

类型

默认值

描述

31:0

R

0x1

DST_WB_DATA

终端 Device 状态(回写的数据)

0x150+N*0x80 DMA_TASK_CNT

默认值:0x00000000

DMA 已完成任务数 (DMA Task Counter )

位域

类型

默认值

描述

31:16

_

_

_

15:0

R

0x0

DMA 已完成任务数

0x154+N*0x80 DMA_CFG_SEL

默认值:0x00000000

DMA 配置选择 (DMA CONFIG SELECT )

位域

类型

默认值

描述

31:5

_

_

_

4

R/W

0x0

任务地址更新使能

0:关闭(保持初始值)

1:使能(更新为当前 task 的地址)

3:2

-

-

-

1

R/W

0x0

LINK 地址选择

0:选择从 memory 获取描述符

1:选择从寄存器获取描述符

回环功能:NEXT_TASK_ADDR=DMA_LINK_ID 的地址

0

_

_

_

0x160+N*0x80 DMA_DEBUG

默认值:0x00000000

DMA 调试 (DMA DEBUG)

位域

类型

默认值

描述

31:26

_

_

_

25

R

0x0

终端 idle(1:idle 0:busy)

24

R

0x0

源端 idle(1:idle 0:busy)

23

_

_

_

22

R/W1C

0x0

Link_地址错误,高有效

21

R/W1C

0x0

终端状态机错误,高有效

20

R/W1C

0x0

源端状态机错误,高有效

19

R/W1C

0x0

LINK ID 错误,高有效

18

R/W1C

0x0

半个任务完成,高有效

17

R/W1C

0x0

任务完成,高有效

16

R/W1C

0x0

链表完成,高有效

15:14

_

_

_

13:8

R

0x0

终端状态机的状态

7:6

_

_

_

5:0

R

0x0

源端状态机的状态

0x0fc VERSION

默认值:0x00000200

版本号 (VERSION)

位域

类型

默认值

描述

31:0

R

0x00000200

Version(模块版本号)

采用 BCD 码显示,V2.0