RISC-V技术论坛
直播中

邹俩珍

8年用户 1113经验值
私信 关注
[经验]

利用蜂鸟E203搭建SoC【5】——DMA使用

前文介绍了DDR3扩展,然而,对于大块数据而言,使用CPU进行搬运速度较慢,因此可以使用DMA进行数据搬运。这里会使用到前文提到的中断与DDR3。


本例中使用了Vivado提供的AXI-DMA IP,其中需要用到的寄存器如下,需要注意的是LENGTH寄存器不为0时会立刻开启传输。此外,接收端会接收到AXI Stream格式的数据,需要对AXIS数据进行逻辑处理。


寄存器名

地址偏移量

作用

MM2S_DMACR
0x0000
使能
DMA
功能,使能
DMA
中断

MM2S_DMASR
0x0004
对相应位写
1
,可以将中断置位

MM2S_SA
0x0018
DDR
起始地址(
32
位)

MM2S_LENGTH
0x0028
DMA
写数据长度(字节为单位)




具体连接图如下,由于本次使用的总线为50MHz,DMA时钟为50M;DDR3 ui_clk为100MHz;e203这里使用了10MHz。时钟的转换完全由AXI Interconnect进行控制,具体连接如下,DMA的中断信号连接到了irq_1上,当触发中断后会立刻将中断位置零,同时开始响应操作。




本例中还设计了axis4从设备端口,用于地址转换,向BRAM中存数据。在IDE中编程如下





通过逻辑分析仪可知,DMA可以正确传输




                                                                                

更多回帖

发帖
×
20
完善资料,
赚取积分