软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:ARTIX系列 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! 1.1概述FDMA是MSXBO(米联客的)基于AXI4总线协议定制的一个DMA控制器。有了这个IP我们可以统一实现用FPGA代码直接读写PL的DDR或者ZYNQ PS的DDR。 如果用过ZYNQ的都知道,要直接操作PS的DDR 通常是DMA 或者VDMA,然而用过XILINX 的DMA IP 和VDMA IP,总有一种遗憾,那就是不够灵活,还需要对寄存器配置,真是麻烦。对于我们搞FPGA的人来说,最喜欢直接了当,直接用FPGA代码搞定。现在XILINX 的总线接口是AXI4总线,那么熟练自定义AXI4 IP挂到总线上就非常方便了。基于这个目的,本小编定义了一个基于AXI4 FULL MASTER的IP,暂且取名为MSXBO_FDMA。 通过这个IP我们可以方便地进行AXI4 FULL MASTER的操作,比如我们经常要读写DDR,那么只要挂到AXI4总线上就可以利用这个IP实现。 1.2基于FDMA搭建的BD工程首先看下基于FDMA搭建的BD工程。 1.3 Setp By Step搭建FPGA BD工程Step1:任意创建一个新的空的BD工程,如下图,选择Create Block Design ,BD 的Design name 命名为system Step2: 选择下图箭头所指的+,输入关键词 MIG 双击添加并且配置 MIG 双击生成的IP核 选择Create Design 单击NEXT 选择DDR3 单击NEXT 设置MIG 内核时钟频率、内存型号、内存的数据位宽 设置MIG AXI4 最大支持的位宽 设置输入频率 系统和参考时钟时钟选择no buffer,MIG低电平复位 Step9:终端阻抗选择40hms,设置dci 选择Fixed Pin Out 根据原理图手动填写PIN 脚定义,或者选择Read XDC/UCF直接读入pin脚定义,本课程下提供了DDR 配置文件,直接读入既可。 填写完成后,先单击Validate再单击NEXT 继续单击NEXT 继续单击NEXT 继续单击NEXT 继续单击NEXT 最后单击Generate,至此MIG的配置完成 Step3:添加FDMA IP,如果要让VIVADO识别到自定义IP,需要先如下图设置IP的路径 修改FDMA IP参数,修改AXI BURST LEN 为256,其他参数默认。修改一下参数需要确保一次AXI BURST 的大小不超过4KB 比如当AXI BURST LEN 为256 数据位宽为32bit 那么256*32=4096bytes已经是一次标准的AXI最大传输的大小了。 Step4:添加时钟IP 以下配置的200M时钟输出用于MIG时钟的输入 Step4:采用自动连线 全部勾选默认(也可以有选择勾选,当然也可以不用自动连线,全部手动连线) Step5:手动修改连线最终BD设计如下 Step6:最后MIG地址默认的起始地址为0x8000_0000,改为0X0000_0000 1.4编写FDMA测试代码首先右击BD 并且单击 其次继续右击BD文件,选择Create HDL Wrapper 最后修改Wrapper并且添加测试代码,测试代码如下
1.5测试代码状态机分析
1.6测试结果可以看到上图中error 信号一直为0代表数据读写对比没有错误。再看pkg_wr_en和pkg_rd_en信号,可以看到他们是每次burst了4次每次的长度是256。证明我们的FDMA工作正常,测试程序工作正常。下面放大数据部分。 上图是写操作往内存里面写数据。 上图是读操作放大后看到的数据分别是计数器和从内存里读取到的数据。 |
XILINX 官网|站点统计|Archiver|手机版|米联客品牌主页|UISRC工程师开源站 ( 苏ICP备19046771号-2 )
GMT+8, 2025-4-5 12:53 , Processed in 0.172847 second(s), 86 queries .