主要内容

使用基于jtag的MATLAB AXI Master访问FPGA内存

这个例子展示了如何使用基于jtag的MATLAB®AXI master访问连接到FPGA的存储器。在FPGA中,Xilinx®DDR内存控制器和BRAM控制器分别用于访问DDR内存和BRAM。这些内存控制器为FPGA中的其他组件的写和读操作提供了一个AXI4从接口。基于jtag的MATLAB AXI主特性提供了一个AXI主组件,您可以使用该组件访问FPGA中的任何AXI从ip。这个例子演示了如何将MATLAB作为AXI主IP集成到Xilinx Vivado®项目中,以及如何使用MATLAB从DDR内存和BRAM写入和读取数据。本示例使用Vivado模拟器模拟设计,然后对FPGA进行编程,并从MATLAB控制台执行读写操作。

需求

  • 中列出的Xilinx Vivado设计套件的支持版本金宝app金宝app支持EDA工具和硬件

  • Artix®-7 35T Arty FPGA评估试剂盒

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

  • JTAG电缆

设置

1.搭建FPGA板。通过USB-JTAG电缆将Arty板连接到主机。

2.在MATLAB中准备示例。设置Xilinx Vivado工具路径。在执行该命令时,请使用您自己的Xilinx Vivado安装路径。

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

为这个示例创建一个Vivado项目。这个项目包含这个示例的IP Integrator框图和约束文件。

系统('vivado -mode batch -source jtagAXIMcreateproject.tcl'

执行该命令大约需要1分钟。当执行完成时,一个名为arty.xpr出现在当前目录中。

3.使用Vivado IP配置Vivado项目。要在Vivado IP Integrator中使用MATLAB作为AXI Master IP,请将包含IP的文件夹添加到Vivado项目的Vivado IP存储库路径设置中。通过在MATLAB中执行此命令来添加项目路径。

setupAXIMasterForVivadoarty.xpr

通过在文件浏览器中双击项目或在MATLAB中执行此命令,以GUI模式打开生成的Vivado项目。

系统(“vivado艺术。xpr &’

4.在FPGA设计中加入MATLAB作为AXI主IP。在Vivado GUI中,打开框图设计文件jtagAXIMdesign_1.bd.您可以在源文件子窗口中找到设计文件。

设置的地址mig_7series_0(DDR控制器)0 x0000_0000axi_bram_ctrl_0(BRAM控制器)0 xc000_0000在地址编辑器中,如图所示。

或者,您可以通过在Vivado中执行Tcl命令来完成这些步骤。

源。/ jtagAXIMmodifydesign.tcl

模拟中的写和读操作

点击运行仿真在Vivado窗口启动模拟。

当仿真开始时,需要几分钟来模拟DDR3的校准过程。

校正后,这些线在jtagAXIMtestbench.sv文件使用增量模式从地址0写入和读取256个连续单词(32位)的数据。

wdata = new [256];wdata[I] = I +1; wdata[I] = I +1;wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mast_0.inst.writememory (0 wdata hdlverifier:: HDLV_AXI_BURST_TYPE_INCR);wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mast_0.inst.readmemory(0256年,hdlverifier:: HDLV_AXI_BURST_TYPE_INCR, rdata);

这些命令使用增量模式从地址0xc000_0000写入和读取256个连续单词的数据。

wdata = new [256];wdata[I] = I +1; wdata[I] = I +1;wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mast_0.inst.writememory (3221225472, wdata hdlverifier: HDLV_AXI_BURST_TYPE_INCR);wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mast_0.inst.readmemory (3221225472, 256, hdlverifier: HDLV_AXI_BURST_TYPE_INCR, rdata);

类似地,这些行演示了如何将值为100的单个字写入地址0的内存中并将其读入。

wdata = new [1];wdata [0] = 100;wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mast_0.inst.writememory (0 wdata hdlverifier:: HDLV_AXI_BURST_TYPE_FIXED);wrapper.jtagAXIMdesign_1_i.hdlverifier_axi_mast_0.inst.readmemory (0, 1, hdlverifier:: HDLV_AXI_BURST_TYPE_FIXED, rdata);

生成FPGA比特流和程序FPGA

点击产生的比特流在Vivado窗口中生成FPGA编程文件。Vivado可能会提示您在进行下一步之前保存项目。Vivado生成bitstream文件大约需要5 ~ 10分钟。

Vivado生成比特流后,在MATLAB中执行此命令对FPGA进行编程。

filProgramFPGA (“Xilinx Vivado”“arty.runs \ impl_1 \ jtagAXIMdesign_1.bit”, 1)

FPGA的写和读操作

在FPGA编程后,可以从连接到MATLAB的AXI从机作为AXI主IP进行写入和读取。本例将数据写入连接到FPGA和BRAM的DDR内存中,然后将数据检索到MATLAB中。

在MATLAB中创建AXI主对象,以便从DDR内存中读写。写入单个位置,然后从同一位置读取数据。在本例中,读取数据为100。

h = aximaster (“Xilinx”);writememory (h,“00000000”, 100);readmemory (h,“00000000”1);

使用c000_0000到c000_1FFF范围内的任意地址从BRAM写入和读取。写入单个位置,然后从同一位置读取数据。在本例中,读取数据是1000。

writememory (h,“c0000000”, 1000);readmemory (h,“c0000000”1);

另请参阅

|

相关的话题