主要内容

使用基于以太网的阿喜经理访问FPGA的记忆

这个例子展示了如何使用基于以太网的AXI经理访问内部和外部的记忆FPGA通过不同的UDP端口。在Xilinx FPGA®DDR内存控制器和布拉姆访问DDR控制器存在记忆和布拉姆,分别。这些内存控制器提供一个AXI4奴隶接口读写操作由FPGA中的其他组件。基于以太网的AXI经理提供了一个阿喜manager组件,您可以使用它来访问AXI下属在FPGA ip。这个例子演示了如何将基于以太网的阿喜经理集成到一个Xilinx Vivado®项目以及如何读写DDR内存和使用MATLAB®布拉姆。

需求

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

  • Xilinx Kintex®7 KC705评估工具

  • 高密度脂蛋白校验™Xilin金宝appx FPGA板支持包

  • 以太网电缆和JTAG电缆

设置

1。建立了FPGA板。Xilinx KC705板连接到主机通过以太网和JTAG电缆。JTAG电缆是用于编程设备。

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

hdlsetuptoolpath (‘ToolName’,‘Xilinx Vivado’,……“路径”、“C: \ Xilinx \ Vivado \ 2020.2 \ bin \ vivado.bat ');

对于这个例子创建一个Vivado项目。这个项目包含IP积分器框图和约束文件。

系统(“vivado模式批源createProjectEthAxim.tcl”)

这个命令运行大约需要一分钟。当执行完成后,Vivado项目命名ethernetaximaster.xpr出现在你的当前目录。

3所示。项目配置Vivado Vivado IP。使用UDP AXI经理IP在Vivado IP积分器,文件夹,其中包含IP添加到IP库路径设置Vivado项目。添加项目的路径通过执行这个命令在MATLAB。

setupAXIManagerForVivado ethernetaximaster.xpr

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

系统(“vivado ethernetaximaster。xpr &”)

4所示。Vivado GUI,打开框图设计文件design_1.bd。你可以找到源文件好子窗口的框图。添加以太网MAC中心GMII和UDP AXI经理IPs FPGA设计。GMII IP以太网MAC中心有一个默认的期间和默认的目标IP地址192.168.0.2 UDP端口50101的价值。变化的数量AXI流的以太网MAC渠道中心2。您可以更改这些值通过双击ethernet_mac_hub_gmii_0IP块设计。修改ethernet_mac_hub_gmii_0如这个图所示的参数。

建立“诱导多能性”之间的联系,这个图所示。您可以访问DDR内存和布拉姆通过UDP端口50101和50102,分别。

设置的地址mig_7series_0(DDR控制器)axi_bram_ctrl_0(BRAM控制器)0 x0000_00000 x1000_0000在这个图分别如图所示。

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

。/ modifyDesignEthAxim.tcl

5。FPGA产生FPGA编程文件和程序。点击产生的比特流在Vivado窗口生成FPGA编程文件。Vivado可能提示您保存项目在继续下一步之前。生成比特流文件大约需要5到10分钟为Vivado生成比特流文件。

Vivado比特流生成后,验证FPGA板与Digilent®JTAG和以太网电缆。通过执行这个命令在MATLAB程序FPGA。

filProgramFPGA (“Xilinx Vivado”、“ethernetaximaster.runs \ impl_1 \ design_1.bit ', 1)

6。确保主机必须在同一子网的网络连接硬件。对于这个示例,设置主机网络IP地址来填写。x,其中x是任意数量范围在1到255年,除了2。192.168.0.2 IP地址的硬件板在这个例子。

FPGA读写操作

FPGA编程之后,可以读写的阿喜下属UDP AXI经理IP连接。这个例子将数据写入DDR内存连接到FPGA和布拉姆然后在MATLAB中检索数据。

在MATLAB中创建AXI经理对象从DDR内存读写。默认的端口地址是50101。写单一位置,然后从同一位置读取数据。在这种情况下,读回的数据是100。

hDDR = aximanager (“Xilinx”、“接口”,UDP,…期间的“DeviceAddress”、“192.168.0.2);writememory (hDDR, ' 00000000 ', 100);readmemory (hDDR, ' 00000000 ', 1);

释放AXI经理反对开放通信通过其他UDP端口。

释放(hDDR);

创建一个新的AXI经理对象与不同的UDP端口读写布拉姆。写单一位置,然后从同一位置读取数据。在这种情况下,读回的数据是1000。

hBRAM = aximanager (“Xilinx”、“接口”,UDP,…期间的“DeviceAddress”、“192.168.0.2,“端口”,“50102”);writememory (hBRAM, ' 10000000 ', 1000);readmemory (hBRAM, ' 10000000 ', 1);释放(hBRAM);

另请参阅

|||

相关的话题