主要内容

开始瞄准Zynq UltraScale+ MPSoC平台

此示例显示了如何使用硬件 - 软件共同设计工作流程以Xilinx®Zynq®UltraScale+ MPSoC的各种频率闪烁LED。

介绍

此示例是一个逐步指南,可帮助您使用HDL Coder™软件生成自定义HDL IP核心,闪烁Xilinx Zynq UltraScale + MPSoC ZCU102评估套件上的LED,并显示如何使用嵌入式码头生成C在ARM®处理器上运行的代码以控制LED闪烁频率。

您可以使用MATLAB®和Simulink®的进金宝app行设计,仿真,并验证您的应用程序中,执行假设与算法的方案,并优化参数。然后,您可以决定哪些系统元件将用可编程逻辑来进行准备的硬件和软件实现对赛灵思的UltraScale ZYNQ +片上多核的设计,以及系统的元素将在ARM的Cortex-A53运行。

使用本实施例中示出的引导工作流,则自动生成用于使用HDL编码器,生成用于使用嵌入式编码ARM处理器的C代码可编程逻辑HDL代码,并执行赛灵思ZYNQ的UltraScale +片上多核平台上使用的设计。

在此工作流程中,您执行以下步骤:

  1. 设置您的Xilinx Zynq UltraScale+ MPSoC ZCU102硬件和工具。

  2. 将您的设计划分为硬件和软件实现。

  3. 使用HDL Workflow Advisor生成HDL IP核心。

  4. 集成IP核到赛灵思Vivado项目和方案赛灵思的UltraScale ZYNQ +片上多核硬件。

  5. 生成软件界面模型。

  6. 生成软件界面模型C代码,在ARM的Cortex-A53处理器,运行它。

  7. 使用外部模式调谐参数和zynq硬件的捕获结果。

要求

  1. 赛灵思Vivado设计套件,与支持的版本在上市金宝appHDL编码文档

  2. Xilinx Zynq UltraScale + MPSOC ZCU102评估套件

  3. Xilinx Zyn金宝appq平台的HDL编码器支持包

  4. Xilinx Zynq平台的嵌金宝app入式编码器支持包

设置您的Xilinx Zynq UltraScale+ MPSoC硬件和工具

1.搭建Xilinx Zynq UltraScale+ MPSoC ZCU102评估试剂盒,如下图所示。要了解更多关于ZCU102硬件设置的信息,请参考Xilinx文档

1.1。确保这一点送回开关被设置为显示在下面的图中,这样你就可以从SD卡启动的Linux。

1.2使用Micro-USB电缆将计算机连接到ZCU102的USB UART连接器。确保您的USB设备驱动程序(例如Silicon Labs CP210x USB到UART Bridge)安装正确。如果没有,请在线搜索驱动程序并安装它们。

1.3使用以太网线将Xilinx Zynq UltraScale+ MPSoC板连接到您的计算机。

2.安装HDL编码器和赛灵思ZYNQ平台的嵌入式编码器支持包,如果你还没有准备好。金宝app

2.1在matlab上选项卡中环境部分中,单击工具>附加组件管理加载项。

2.2在附加器管理器中,通过单击“Xilinx Zynq平台的嵌入式编码器支持包的设置”按钮启动硬件安装程序。金宝app

3.确保使用嵌入式编码器支持包提供的SD卡图像,用于Xilinx Zynq平台。金宝app

4.成立了由MATLAB命令窗口输入以下命令ZYNQ硬件连接:

H = ZYNQ

ZYNQ函数通过COM端口登录硬件并运行ifconfig.命令以获得板的IP地址。该功能还测试了以太网连接。

5.您可以选择使用以下配置测试串行连接,使用Putty™等程序。波特率:115200;数据位:8;停止位:1;平价:没有任何;流控制:没有任何。当您为MPSoC板供电时,您应该能够在串行控制台上观察Linux引导日志。在使用之前,必须关闭此串行连接ZYNQ函数了。

6.在MATLAB命令窗口中使用以下命令设置Xilinx Vivado合成工具路径。运行该命令时,请使用您自己的Vivado安装路径。

hdlsetuptoolpath( '工具名称', '赛灵思Vivado', '刀具路径', 'C:\赛灵思\ Vivado \ 2019.1 \ BIN \ vivado.bat');

为硬件和软件实现进行配置

所述ZYNQ硬件软件协同设计工作流程的第一个步骤是决定哪些设计的零件对可编程逻辑,和哪些部件实现向ARM处理器上运行。

将希望在可编程逻辑上实现的所有块分组到原子子系统中。这个原子子系统是硬件-软件分区的边界。该子系统内部的所有模块将在可编程逻辑上实现,而外部的所有模块将在ARM处理器上运行。

在此示例中,子系统led_counter是硬件子系统。它模拟了一个计数器,闪烁在FPGA板上的LED。两个输入端口,blink_frquencyBlink_direction,是确定LED闪烁频率和方向的控制端口。子系统之外的所有块led_counter用于软件实现。

在Si金宝appmulink中,您可以使用滑块获得手动开关块以调节硬件子系统的输入值。在嵌入式软件,这意味着ARM处理器控制所生成的IP核心通过写入AXI接口访问的寄存器。硬件子系统的输出端口,领导将连接到LED的硬件。输出端口,回过头再读,可用于读取的数据返回到所述处理器。

open_system(“hdlcoder_led_blinking”);

使用HDL工作流顾问生成一个HDL IP核

使用HDL workflow Advisor中的IP Core Generation工作流,您可以从Simulink模型自动生成一个可共享和可重用的IP Core模块。金宝app生成的IP核被设计为连接到FPGA设备上的嵌入式处理器。HDL Coder从Simulink块生成HDL代码,也为连接IP核到嵌入式金宝app处理器的axis接口逻辑生成HDL代码。HDL编码器将所有生成的文件打包到一个IP核心文件夹中。然后可以将生成的IP核与Xilinx Vivado环境中的更大的FPGA嵌入式设计集成。

1.启动IP核心生成工作流程。

1.1。从。打开HDL工作流顾问hdlcoder_led_blinking / led_counter通过右键单击led_counter子系统,并选择HDL码>HDL工作流顾问

1.2。在里面设定目标>设置目标设备和合成工具任务,为目标工作流程中,选择IP核心生成

1.3。目标平台中,选择Xilinx Zynq UltraScale + MPSOC ZCU102评估套件。如果您没有这个选项,请选择得到更多的打开支持包安装程序。金宝app在支持包安装程金宝app序中,选择Xilinx Zynq平台,然后按照支持包安装程序提供的说明完成安装。

1.4。点击运行这个任务运行设置目标设备和合成工具任务。

1.5在里面设定目标>设定目标参考设计任务,选择默认系统

1.6。点击运行这个任务运行设定目标参考设计任务。

2.配置目标接口。

在DUT的每个端口映射到IP核心目标接口之一。在这个例子中,输入端口blink_frquencyBlink_direction映射到AXI4-Lite接口,因此HDL Coder为它们生成可访问axis接口的寄存器。的领导输出端口映射到外部接口,通用led [0:7],它连接到在ZYNQ板上的LED的硬件。

2.1在里面设定目标>设置目标接口任务,选择AXI4-Liteblink_frquencyBlink_direction, 和回过头再读

2.2选择通用led [0:7]领导

2.3在里面设定目标>设置目标频率任务,选择目标频率为50兆赫

3.生成IP核心。

要生成IP核,右键单击生成RTL代码和IP核任务和选择跑到选定的任务

4.生成并查看IP核心报告。

在您生成自定义IP核,IP核文件是在ipcore项目文件夹内的文件夹中。HTML自定义IP核报告与自定义IP核一起产生。报告中描述的行为和生成的自定义IP核的内容。

将IP核与Xilinx Vivado环境集成

在这部分工作流中,您将生成的IP核插入到嵌入式系统参考设计中,生成FPGA位流,并将位流下载到Zynq硬件。

参考设计是一个预定义的Xilinx Vivado项目。它包含了Xilinx软件将你的设计部署到Zynq平台所需的所有元素,除了你生成的定制IP核和嵌入式软件。

1.与赛灵思Vivado环境整合,选择创建项目下任务嵌入式系统集成,然后单击运行这个任务。生成具有IP Integrator嵌入式设计的Xilinx Vivado项目,并在对话框窗口中提供对项目的链接。您可以选择打开项目以查看。

2.如果你有Embedded Coder许可证,你可以在下一个任务中生成一个软件接口模型,生成软件接口模型。软件接口模型的细节在此示例的下一部分中解释,“生成软件界面模型”。

3.中构建FPGA位流构建FPGA比特流任务。确保这一点在外部运行构建过程选项被选中,所以赛灵思综合工具将在从MATLAB单独进程中运行。等待合成工具处理到结束在外部指令窗口中运行。

4.生成比特流后,选择程序目标设备任务。选择下载编程方法要将FPGA比特流下载到Xilinx Zynq UltraScale + MPSOC板上的SD卡上,因此您的设计将在激活Zynq板时自动重新加载。点击运行这个任务编程Zynq硬件。

在FPGA硬件编程后,Xilinx Zynq UltraScale+ MPSoC ZCU102板上的LED开始闪烁。

接下来,您将生成C代码以在ARM处理器上运行,以控制LED闪烁频率和方向。

生成软件界面模型

在HDL Workflow Advisor中,在生成IP核之后,您可以在步骤4.1中创建一个vivado项目,也可以在嵌入式系统集成>生成软件接口模型任务。

软件接口模型包含在软件中运行的设计部分。它包括HDL子系统外部的所有块,并用AXI驱动程序块替换HDL子系统。如果您有Embedded Coder许可证,您可以从软件接口模型自动生成嵌入式C代码,构建它,并在ARM处理器上的Linux上运行可执行文件。生成的嵌入式软件包括从控制HDL IP核的AXI驱动程序块生成的AXI驱动程序代码。

运行生成软件接口模型任务并查看生成的新模型。任务对话框显示了到模型的链接。

在所生成的软件接口的模型中,“led_counter”子系统被替换为生成的ARM处理器和FPGA之间的接口逻辑的AXI驱动程序块。

在Zynq ZCU102硬件上运行软件接口模型

在这部分工作流中,您将配置生成的软件接口模型,自动生成嵌入式C代码,并以外部模式在Zynq硬件中的ARM处理器上运行您的模型。

当你原型设计和开发的算法,它,而它在硬件上运行,以监控和调整算法是非常有用的。在Simulink外部模式功能,能够支持此功能。金宝app在这种模式下,你的算法是先部署到ZYNQ硬件的ARM处理器,然后通过以太网连接的主机上的Simulink模型联系起来。金宝app

Simulink模型的主要作用是调谐和监视金宝app在硬件上运行的算法。由于ARM处理器通过AXI接口连接到HDL IP核心,因此可以使用外部模式调谐参数,并捕获来自FPGA的数据。

  1. 在生成的模型中,单击硬件窗格和去硬件设置打开配置参数对话框。

  2. 选择求解器将“停止时间”设置为“inf”。

  3. 选择硬件实现并将“选择硬件板”设置为“嵌入式编码器硬件支持包”。金宝app

  4. 硬件菜单,点击监视和优化在模型工具条按钮来运行在外部模式下的UltraScale ZYNQ +片上多核ZCU102硬件的ARM处理器上的模型。嵌入式编码构建模型,下载ARM可执行赛灵思的UltraScale ZYNQ +片上多核ZCU102硬件,执行它,该模型连接到在ZYNQ硬件的可执行文件运行。

  5. 双击滑块获得堵塞。更改滑块增益值并观察Zynq硬件上闪烁的LED阵列频率的变化。双击手动开关块来切换闪烁的led方向。

  6. 双击连接范围回过头再读观察FPGA IP核的输出数据被捕获并发送回Simulink示波器。金宝app

  7. 当您完成更改模型参数时,单击停止在模型上的按钮。

总结

此示例显示了硬件 - 软件协同设计工作流程如何帮助将Matlab和Simulink设计部署到Xilinx Zynq UltraScale + MPSoC。金宝app您可以通过迭代工作流程来探索分区和部署设计的最佳方法。

下图显示了工作流程的高级别画面通过你在这个例子中去。要了解有关硬件和软件协同设计工作流程,请参阅HDL编码文档