[X]关闭
1

01使用fdma读写axi-bram(AXI4 FDMA数据缓存篇)

摘要: FDMA是米联客的基于AXI4总线协议定制的一个DMA控制器。有了这个IP我们可以统一实现用FPGA代码直接读写PL的DDR或者ZYNQ/ZYNQMP SOC PS的DDR或者BRAM。FDMA IP CORE 已经广泛应用于ZYNQ SOC/Artix7/Kintex7 FPGA,同样 ...

软件版本:vitis2019.2(vivado2019.2)

操作系统:WIN10 64bit

硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA(本文使用米联客(milianke))MK7160FA开发板

登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!

1.1概述    

FDMA是米联客的基于AXI4总线协议定制的一个DMA控制器。有了这个IP我们可以统一实现用FPGA代码直接读写PL的DDR或者ZYNQ/ZYNQMP SOC PS的DDR或者BRAM。FDMA IP CORE 已经广泛应用于ZYNQ SOC/Artix7/Kintex7 FPGA,同样适用于ultrascale/ultrascale+系列FPGA/SOC。

如果用过ZYNQ/ZYNQMP的都知道,要直接操作PS的DDR 通常是DMA 或者VDMA,然而用过XILINX 的DMA IP 和VDMA IP,总有一种遗憾,那就是不够灵活,还需要对寄存器配置,真是麻烦。XILINX 的总线接口是AXI4总线,自定义AXI4 IP挂到总线上就能实现对内存地址空间的读写访问。因此,我们只要掌握AXI4协议就能完成不管是PS还是PL DDR的读写操作。

米联客封装的AXI4总线协议命名位uiFDMA,自动2018年第一版本发布后,就引起了很多FPGA工程师的兴趣,并且得到了广大FPGA工程师的好评,但是FDMA1.0版本还是有一些局限和BUG,再实际的应用中被FPGA工程师发现,因此给了我们很多宝贵意见。借此2021版本教程更新发布之际,我们也对FDMA1.0版本升级到FDMA3.0版本。

uiFDMA3.0新增特性:

1:支持多个FDMA IP同时挂带AXI-interconnect总线,同时工作

2:支持自动计算AXI-Burst长度,使用起来非常简单,只需要给出需要burst的长度。

从本文开始,我们从多个应用方案来演示FDMA的用途。

 

本文实验目的:

1:掌握基于uiFDMA3.0的FPGA工程设计

2:利用uiFDMA3.0提供的接口,编写BRAM测试程序

3:对AXI-BRAM读写仿真和测试

 

我们第一入门的demo选择对BRAM仿真测试,是因为不管是仿真还是编译测试,对AXI-BRAM速度都非常快,我们在下面一个DEMO中会给出对DDR的读写仿真测试。

1.2硬件接线

1.3搭建FPGA图形化工程

1.3.1创建工程命名为fpga_prj

双击VIVADO软件图标启动VIVADO

设置工程路径,并且命名工程名为fpga_prj

以下设置FPGA或者ZYNQ或者ZYNQ-MPSOC芯片型号,必须和开发板保持一致,如果不清楚的请查阅自己开发板的硬件手册或者根据选型手册上参数确认

 

1.3.2创建Block Design并且命名为system

如下图所示,图形化system就是一个代码容器,接着我们要添加一些图像化的IP

 

1.3.3添加图形化FPGA IP

首先设置自定义IP的路径,这里读者可以把我们配套工程根路径下的uisrc文件夹复制到目前的工程根路径,单击Settings在弹出的Settings窗口选择IP->Repository 设置如下路径

添加+号添加IP

比如输入关键词FDMA就可以搜索到我们米联客uiFDMA IP

用类似的方法添加必要的IP如下图所示:

 

1.3.4完成IP之间的信号自动

这种简单的工程可以先让软件先自动化线,然后根据结果手动一些调整

可以看到连线结果

1.3.5调整IP参数

1:BRAM参数设置

首先把IP的配置参数修改下,双击需要设置的IP可以进行参数设置

FDMA设置数据位宽128bit 可以访问内存地址位宽16bit(BRAM大小有限这里设置64KB)

BRAM设置,使用BRAM Controller 为真双口RAM

2:BRAM Controller参数设置

AXI BRAM Controller设置axi4协议,数据位宽128bit 读延迟1个时钟

3:Clocking Wizard参数设置

4:AXI Interconnect IP设置

双击AXI Interconnect IP 进行设置

设置AXI Interconnect IP的性能参数,其中Enable Register Slice 用于改善时序,Enable Data FIFO用于增加FIFO大小,增加数据传输效率

1.3.6引出FPGA接口信号

分别右击下图uiFDMA IP,然后选择Make External,把需要引出到顶层的FPGA信号引出

 

为了引出时钟需先右击信号PIN脚断开连接,然后Make External,之后重新连接

 

右击pin脚,弹出菜单选择Make External

修改后重新连接时钟

1.3.7修改信号名字

默认的时钟名字不是很好,可以自己修改下

修改完成如下

6

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (6 人)

发表评论

最新评论

引用 uisrc 2021-8-12 09:49
本章节源码下载地址链接:https://pan.baidu.com/s/1NT-ArWeJuLTtPX-Fv1oGFA 提取码1111

查看全部评论(1)

本文作者
2021-8-12 08:31
  • 7
    粉丝
  • 7994
    阅读
  • 1
    回复
  • 1
  • 2
  • 3
热门评论
排行榜