主要内容

在PCI Express上使用MATLAB作为axis Master访问FPGA外部存储器

这个例子展示了如何使用MATLAB™作为axis Master over PCI Express (PCIe)来访问连接到FPGA的外部内存。该FPGA包括一个Xilinx DDR内存控制器,用于访问DDR内存。该内存控制器提供了一个AXI4从接口,用于FPGA中的其他组件进行读写操作。基于PCIe的MATLAB作为AXI Master特性提供了一个AXI Master对象,可以用于访问FPGA中的任何内存映射位置。这个例子展示了如何将基于PCIe的MATLAB作为AXI Master集成到Xilinx Vivado项目中,并使用MATLAB对DDR内存进行读写。

需求

  • Xilinx®Vivado®的兼容版本

  • Xilinx Kintex UltraScale+ FPGA KCU116评估试剂盒

  • 用于Xilinx FPGA板金宝app的HDL验证器™支持包

  • 带有PCIe插槽的主机(PC)

  • USB-JTAG电缆

设置

步骤1:搭建FPGA板。确认Xilinx KCU116板已通过PCI Express和JTAG线缆连接到上位机。JTAG线缆用于对设备进行编程。

第二步:用MATLAB编写示例。设置Xilinx Vivado工具路径。在执行该命令时,请使用您自己的Xilinx Vivado安装路径。例如:

> > hdlsetuptoolpath (“ToolName”“Xilinx Vivado”“路径”“C: \ Xilinx \ Vivado \ 2018.2 \ bin \ vivado.bat ');

创建一个超出MATLAB安装范围的文件夹。这个文件夹必须是可写的。这个例子假设文件夹在C: \ mytest

启动MATLAB并将MATLAB中的当前目录设置为您创建的文件夹。例如:

> > cd C: \ mytest

在MATLAB中执行此命令,将示例文件复制到当前目录。

> > copyXilinxFPGAExampleFiles (“pcieaximaster”

接下来,创建一个Vivado项目。下面的MATLAB命令创建一个名为Vivado的项目“pcieaximaster.xpr”并包含IP Integrator框图和约束文件。

> >系统('vivado -mode batch -source createproject.tcl'

步骤3:将IP添加到IP存储库。要在Vivado的IP Integrator中使用MATLAB作为AXI Master IP,请将包含IP的文件夹添加到项目的IP存储库路径设置中。你可以在MATLAB中通过下面的命令添加项目路径:

> > setupAXIMasterForVivado pcieaximaster.xpr

通过在文件浏览器中双击项目,或者在MATLAB中执行以下命令,以GUI模式打开项目:

> >系统(“vivado pcieaximaster。xpr &’

步骤4:将PCIe MATLAB作为AXI主IP添加到FPGA设计中。

在Vivado GUI中,打开框图设计文件design_1.bd。您可以在源文件子窗口中找到它。

设置xdma_0 (PCI Express的AXI Bridge子系统)和ddr4_0(内存控制器)的地址,如图所示:

或者,您可以通过在Vivado中执行Tcl命令来完成上述设置步骤。

源。/ modifydesign.tcl

步骤5:生成FPGA编程文件并对FPGA进行编程。在Vivado中单击“generate Bitstream”,生成FPGA编程文件。

通过MATLAB对FPGA进行编程,使用如下命令:

> > filProgramFPGA (“Xilinx Vivado”“pcieaximaster.runs \ impl_1 \ design_1.bit”, 1)

步骤6:FPGA编程完成后,重启主机。

FPGA的读写操作

一旦设计在FPGA板上运行,您就可以作为AXI主IP读写连接到基于MATLAB的PCIe的AXI从机。在本例中,数据被写入到连接到FPGA的DDR内存中,并返回到MATLAB中。

首先,在MATLAB中创建AXI主对象

>> h = aximaster(“Xilinx”“界面”“作为pcie”);

然后,您可以从FPGA上的内存位置进行写入和读取。下面两行代码使用AXI Master对象“h”将"100"写入地址0,然后从内存地址0读取。

>> readmemory(h, 0,1)