主要内容

总线数据类型映射到AXI4奴隶接口

这个例子展示了如何将总线数据类型映射到一个AXI4奴隶接口,生成一个高密度脂蛋白与AXI4主接口IP核,在高密度脂蛋白IP核心执行矩阵乘法,写出输出结果DDR内存。

在你开始之前

对于这个示例,您必须安装以下软件和硬件和设置:

  • Xilinx Vivado设计套件,支持版本中列出万博1manbetxHDL语言支持,支持第三方万博1manbetx工具和硬件

  • Xilinx Zynq Ultrascale + MPSoC ZCU102评估工具

  • 高密度脂蛋白编码器为万博1manbetxXilinx Zynq平台支持包

  • 高密度脂蛋白校验支持包Xi万博1manbetxlinx FPGA板

介绍

在本例中,您:

  1. 创建一个公共汽车元素通过总线创造者块和公共汽车元素映射到一个AXI4奴隶接口。

  2. 生成一个高密度脂蛋白与AXI4主接口IP核。

  3. 从外部访问大型矩阵DDR4内存Xilinx Zynq Ultrascale + MPSoC ZCU102评估工具包使用AXI4主界面。

  4. 执行矩阵向量乘法的HDL IP核心和输出结果写回DDR内存使用AXI4主界面。

这个示例模型矩阵向量乘法算法并实现了算法在Xilinx Zynq FPGA板上。大型矩阵可能不会有效地映射到块FPGA结构上公羊。相反,将矩阵存储在外部DDR内存FPGA板上。AXI4主界面可以通过与供应商提供的内存访问数据和DDR内存接口IP核接口。此功能使您能够模型算法,包括大型数据处理和需要高通量DDR访问,如矩阵运算,计算机视觉算法,等等。

矩阵向量乘法模块支持定点矩阵向量乘法,矩阵与一个可配置的大小2 - 4000。万博1manbetx矩阵的大小是通过AXI4访问运行时配置的寄存器。

modelname =“hdlcoder_axi_slave_bus_data_type”;open_system (modelname);%%使用HDL编码器生成一个定制的IP核心执行大型矩阵% fpga通过使用外部存储器的操作。在MATLAB中,键入:% hdladvisor (hdlcoder_axi_slave_bus_data_type / DUT的)

创建总线元素

使用总线创造者块组合Matrix_Multiplication_On,Matrix_Size,Burst_Length成一个总线数据类型元素。在公共汽车上创造者块的更多信息,看一下总线的创造者

open_system (“hdlcoder_axi_slave_bus_data_type / InputSubsystem”)%

功能仿真模型万博1manbetx

你可以模拟这个示例模型并验证通过运行这个脚本在MATLAB仿真结果:

hdlcoder_axi_slave_bus_data_type_simulation;

该脚本首先初始化参数Matrix_Size。默认情况下,Matrix_Size是64,这意味着一个64 -,- 64矩阵。默认的Matrix_Size保持小更快的模拟。DUT后到FPGA板,实现更大的Matrix_Size作为FPGA计算要快得多。在脚本中你也可以调整这些参数。

然后脚本模拟模型和验证结果通过比较仿真结果记录到期望值。

默认情况下,Matrix_Multiplication_On是正确的。脚本验证矩阵向量乘法的结果。

Matrix_Multiplication_On是假的时,脚本验证循环模式,这意味着DUT阅读Burst_Length从DDR的数据量,然后回到DDR写数据。

生成与AXI4 HDL IP核心主界面

接下来,我们开始HDL工作流顾问和使用的IP核心代工作流部署的DUT Zynq硬件。为一个更详细的一步一步的指导,请参阅开始使用针对Xilinx Zynq平台的例子。

1。设置Xilinx Vivado合成工具路径。使用自己的Vivado安装路径,当你运行该命令。在MATLAB命令窗口类型:hdlsetuptoolpath (“ToolName”、“Xilinx Vivado”、“路径”,“C: \ Xilinx \ Vivado \ 2020.1 \ bin \ vivado.bat”)

2。开始的高密度脂蛋白工作流顾问DUT子系统hdlcoder_axi_slave_bus_data_type / DUT。对模型目标接口设置保存。的目标工作流程IP核心代,目标平台Xilinx Zynq Ultrascale + MPSoC ZCU102评估工具。的参考设计默认系统与外部DDR4内存访问目标平台接口表设置如图所示

在这个例子中,总线数据类型的端口matrix_info端口和输入参数burst_from_ddr突然开始映射到AXI4接口。高密度脂蛋白编码器生成AXI4接口访问这些端口的寄存器。之后,您可以使用MATLAB优化这些参数在运行时上运行的设计FPGA板。

您可以指定总线数据类型的初始值目标平台接口表通过指定初始值直接或通过创建一个变量来存储结构体数据类型的初始值,然后使用的变量名界面选项窗口。指定初始值,单击选项界面选项目标平台接口表

直接指定初始值界面选项窗口。

存储总线数据类型变量的初始值businit运行这段代码:

businit =结构(“matrix_mul_on”Matrix_Multiplication_On,“matrix_size”Matrix_Size,“burst_len”Burst_Length)

指定businit变量界面选项窗口。

AXI4主接口有独立的读写通道。读通道端口axim_rd_data,axim_rd_s2m,axim_rd_m2s映射到AXI4主读接口。写通道端口axim_wr_data,axim_wr_s2m,axim_wr_m2s映射到AXI4大师写接口。

3所示。右键单击生成RTL代码和IP核心,然后选择选择任务运行生成IP核。你可以找到寄存器地址映射和其他文档的IP核心IP核生成报告。

报告显示单个总线元素及其地址映射:

如果你指定使用总线的初始值元素businit变量,生成的IP核心报告显示公共汽车元素初始值。

4所示。右键单击构建FPGA比特流,然后选择选择任务运行生成Vivado项目。构建FPGA比特流。

在项目创建,生成的核心是集成到DUT的IP默认系统与外部DDR4内存访问参考设计。这个引用Xilinx内存接口的设计是由发生器IP与机载外部通信DDR4内存ZCU102平台上。MATLAB作为AXI主IP也添加到使MATLAB控制DUT IP和初始化和验证DDR内存的内容。

运行在Xilinx FPGA实现Zynq Ultrascale + MPSoC ZCU102评估工具

FPGA比特流生成后,运行项目目标设备程序通过JTAG电缆FPGA板。

然后您可以运行FPGA实现和验证硬件结果在MATLAB运行这个脚本:

hdlcoder_axi_slave_bus_data_type_hw_run_ZCU102.m

该脚本首先初始化Matrix_Size到2000年,这意味着一个2000 -,- 2000矩阵。你可以调整Matrix_Size到4000。

AXI4主读写通道基本地址配置。这些地址定义DUT的基地址从外部DDR内存,读取和写入外部DDR内存。在这个脚本中,从基地址DUT读取“80000000”,和基地址写“90000000”。

MATLAB作为AXI主内存初始化外部DDR4输入向量和矩阵数据和清除输出DDR内存位置。

DUT计算开始通过控制AXI4访问寄存器。DUT的IP核心首先读取输入数据的DDR内存,执行矩阵向量乘法,然后将结果写入回DDR内存。

输出结果是读回MATLAB和期望值相比。结果验证了在MATLAB的硬件。

相关的话题