寄存器描述
本节的变量 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 终端数据位宽(总线上有效数据的位宽)
根据 设备重要配置信息进行选择。 |
27:25 |
R |
0x0 |
Destination Type
关于不同设备的具体传输类型配置,可查看设备源端和终端传输类型。 |
24:23 |
R |
0x0 |
Destination Burst DMA 终端突发数
当 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
|
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 |