主要内容

开始瞄准Zynq UltraScale+ MPSoC平台

这个例子展示了如何使用硬件-软件协同设计工作流在Xilinx®Zynq®UltraScale+ MPSoC上以不同频率闪烁led。

简介

本示例是一个分步指南,帮助您使用HDL Coder™软件生成一个定制的HDL IP核,该核可在Xilinx Zynq UltraScale+ MPSoC ZCU102评估套件上闪烁LED,并展示如何使用Embedded Coder®生成运行在ARM®处理器上的C代码,以控制LED闪烁频率。

您可以使用MATLAB®和Simulink®来设金宝app计、模拟和验证您的应用程序,使用算法执行假设场景,并优化参数。然后,通过决定哪些系统元素将由可编程逻辑执行,哪些系统元素将在ARM Cortex-A53上运行,您可以为Xilinx Zynq UltraScale+ MPSoC上的硬件和软件实现准备设计。

使用本例中所示的指导工作流,您可以使用HDL Coder为可编程逻辑自动生成HDL代码,使用嵌入式Coder为ARM处理器生成C代码,并在Xilinx Zynq UltraScale+ MPSoC平台上实现设计。

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

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

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

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

  4. 将IP核集成到Xilinx Vivado项目中,并对Xilinx Zynq UltraScale+ MPSoC硬件进行编程。

  5. 生成一个软件接口模型。

  6. 从软件接口模型生成C代码,并在ARM Cortex-A53处理器上运行。

  7. 使用外部模式调整参数并从Zynq硬件获取结果。

需求

  1. Xilinx Vivado设计套件,其支持的版本列于金宝appHDL语言支持和支持的第三金宝app方工具和硬件

  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 to UART Bridge。如果没有,请在网上搜索并安装驱动程序。

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

2.如果你还没有安装Xilinx Zynq平台的HDL编码器和嵌入式编码器支持包。金宝app

2.1在MATLAB上首页选项卡中的环境>管理加载项。

2.2在Add-On管理器中,通过单击Xilinx Zynq平台嵌入式编码器支持包的设置按钮,启动硬件设置过程。金宝app

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

4.通过在MATLAB命令窗口中输入以下命令设置Zynq硬件连接:

H = zynq

zynq函数通过COM口登录硬件,运行ifconfig命令获取该单板的IP地址。此函数还测试以太网连接。

5.您可以选择使用以下配置,使用诸如PuTTY™等程序测试串行连接。波特率:115200;数据位:8;停止位:1;奇偶校验:没有一个;流控制:没有一个.当MPSoC板上电循环时,您应该能够在串行控制台上观察Linux引导日志。方法之前,必须关闭此串行连接zynq函数了。

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

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\bin\ Vivado .bat');

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

Zynq硬件-软件协同设计工作流程的第一步是决定设计的哪些部分要在可编程逻辑上实现,哪些部分要在ARM处理器上运行。

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

在本例中,是子系统led_counter是硬件子系统。它模拟了一个计数器,使FPGA板上的led闪烁。两个输入端口,Blink_frequency而且Blink_direction、为控制接口,决定LED闪烁频率和方向。子系统外部的所有块led_counter用于软件实现。

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

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处理器的AXI接口逻辑生成HDL代码。HDL Coder将所有生成的文件打包到一个IP core文件夹中。然后,您可以将生成的IP核与Xilinx Vivado环境中更大的FPGA嵌入式设计集成。

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

1.1.打开HDL Workflow Advisorhdlcoder_led_blinking / led_counter通过右键单击led_counter子系统和选择HDL代码>HDL工作流顾问

1.2.设定目标>设置目标装置和合成工具任务,为目标工作流程中,选择IP核生成

1.3.目标平台中,选择Xilinx Zynq UltraScale+ MPSoC ZCU102评估试剂盒.如果没有此选项,请选择得到更多的打开支持包安装程序。金宝app在Suppor金宝appt Package Installer中,选择Xilinx Zynq Platform,按照Support Package Installer提供的说明完成安装。

1.4.点击运行此任务运行设置目标装置和合成工具的任务。

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

1.6.点击运行此任务运行设定目标参考设计的任务。

2.配置目标接口。

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

2.1设定目标>设置目标接口任务,选择AXI4-LiteBlink_frequencyBlink_direction,Read_back

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

2.3设定目标>设置目标频率任务,选择目标频率为50mhz

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.要与Xilinx Vivado环境集成,请选择创建项目下任务嵌入式系统集成,单击运行此任务.生成一个具有IP Integrator嵌入式设计的Xilinx Vivado项目,并在对话框窗口中提供了该项目的链接。您可以选择打开该项目进行查看。

2.如果你有嵌入式编码器许可证,你可以在下一个任务中生成软件接口模型,生成软件接口模型.软件接口模型的细节将在本例的下一部分“生成软件接口模型”中解释。

3.构建FPGA位流构建FPGA位流的任务。确保在外部运行构建过程选项被选中,因此Xilinx合成工具将在与MATLAB不同的进程中运行。等待合成工具进程在外部命令窗口中运行完成。

4.生成比特流后,选择程序目标设备的任务。选择下载编程方法下载FPGA位流到Xilinx Zynq UltraScale+ MPSoC板上的SD卡上,这样在Zynq板通电循环时,您的设计将自动重新加载。点击运行此任务为Zynq硬件编程。

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

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

生成一个软件接口模型

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

软件接口模型包含在软件中运行的设计部分。它包含了HDL子系统之外的所有块,并用AXI驱动块替换了HDL子系统。如果您有嵌入式Coder许可证,您可以从软件接口模型自动生成嵌入式C代码,构建它,并在ARM处理器上的Linux上运行可执行程序。生成的嵌入式软件包括由AXI驱动程序块生成的控制HDL IP核的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. 在生成的模型中,单击Hardware窗格并转到硬件设置打开配置参数对话框。

  2. 选择解算器并设置停止时间

  3. 选择硬件实现并设置所选硬件板的特征集嵌入式编码器硬件支持包金宝app

  4. 硬件菜单,按监控与调优按钮,在Zynq UltraScale+ MPSoC ZCU102硬件的ARM处理器上以外部模式运行模型。Embedded Coder构建模型,下载ARM可执行文件到Xilinx Zynq UltraScale+ MPSoC ZCU102硬件,执行它,并将模型连接到运行在Zynq硬件上的可执行文件。

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

  6. 控件连接的作用域Read_back输出端口,观察FPGA IP核的输出数据被捕获并发送回Simulink作用域。金宝app

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

总结

这个例子展示了硬件-软件协同设计工作流如何帮助您将MATLAB和Simulink设计自动化部署到Xilinx Zynq Ultrascale+ MPSoC。金宝app您可以通过迭代工作流来探索划分和部署设计的最佳方法。

下面的图表显示了您在这个示例中所经历的工作流的高级图片。要了解有关硬件和软件协同设计工作流的更多信息,请参见SoC平台软硬件协同设计工作流程