利用蜂鸟E203搭建SoC【5】——DMA使用
队伍编号:CICC1842
前文介绍了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可以正确传输

Z1323 天前 ·
2 楼
回复 Ricardo W.Dong:
您好,请问您封装的这个AXI是AXI3还是AXI4的协议接口呢
这个不太记得了,用的都是默认,而且这个似乎也没有交织能力,3和4没区别吧
💡 请 登录 后参与讨论(微信扫码即登录/注册)
帖子信息
版块全国大学生集成电路创新创业大赛
回复3
浏览8255
发布2021-06-10 20:15