主要内容

目标Zynq UltraScale + MPSOC平台入门

该示例示出了如何使用硬件软件协同设计工作流程在上赛灵思Zynq®的UltraScale +片上多核各种频率闪烁的LED。

介绍

这个例子是一个一步一步的指导,帮助您使用HDL编码器™软件来生成定制的HDL IP核心,闪烁在赛灵思ZYNQ的UltraScale +片上多核ZCU102评估套件的LED,并展示了如何使用嵌入式Coder®生成C代码,所述ARM®处理器上运行,以控制LED的闪烁频率。

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

使用本例中所示的引导工作流,您可以使用HDL Coder自动生成可编程逻辑的HDL代码,使用Embedded 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编码器文档

  2. 赛灵思的UltraScale ZYNQ +片上多核ZCU102评估套件

  3. 用于Xilinx Z金宝appynq平台的HDL编码器支持包

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

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

1。设置Xilinx Zynq UltraScale + MPSOC ZCU102评估套件,如下图所示。要了解有关ZCU102硬件设置的更多信息,请参阅Xilinx文档

1.1。确保这一点SW6.switch的设置如下图所示,因此您可以从SD卡启动Linux。

1.2将计算机连接到使用Micro-USB电缆ZCU102的USB UART接口。确保您的USB设备驱动程序,如用于Silicon Labs的USB CP210X至UART桥接,安装正确。如果不是,搜索驱动器在线安装它们。

1.3使用以太网电缆将Xilinx Zynq UltraScale + MPSOC板连接到计算机。

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

2.1在MATLAB选项卡在环境>管理Add-Ons。

2.2在加载项管理器,点击设置按钮,嵌入式编码支持包赛灵思ZYNQ平台启动硬件安装过程。金宝app

3.确保您使用由嵌入式编码支持包赛灵思ZYNQ平台提供的SD卡图像。金宝app

4.在MATLAB命令窗口中输入以下命令,建立Zynq硬件连接:

h = zynq

zynq在通过COM端口和运行在该硬件功能的日志ifconfig.命令获取单板的IP地址。该功能还可以测试以太网连接。

5。可以使用使用程序如腻子™以下配置任选测试串行连接。波特率:115200;数据位:8.;停止位:1;奇偶校验:没有一个;流控制:没有一个。您应该能够在循环MPSOC板时遵守串行控制台上的Linux启动日志。您必须在使用之前关闭此串行连接zynq再次函数。

6。使用MATLAB命令窗口中的以下命令设置Xilinx Vivado Synthesis Tool Path。运行命令时使用自己的Vivado安装路径。

C:\Xilinx\Vivado\2019.1\bin\ Vivado .bat';

您的分区设计的硬件和软件实现

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

将您想要在可编程逻辑上实现的所有块集团到原子子系统中。此原子子系统是硬件软件分区的边界。此子系统内的所有块将在可编程逻辑上实现,并且此子系统外的所有块将在ARM处理器上运行。

在该示例中,子系统LED_COUNTER.是硬件子系统。它的模型,闪烁在FPGA板上的指示灯的计数器。两个输入端口,Blink_frequencyBlink_direction,是决定LED闪烁频率和方向控制端口。所有子系统的外块LED_COUNTER.用于软件实现。

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

open_system ('hdlcoder_led_blinking');

使用HDL Workflow Advisor生成HDL IP核心

使用HDL Workflow Advisor中的IP核心生成工作流程使您可以从Simulink模型自动生成可共享和可重用的IP核心模块。金宝app生成的IP内核设计为在FPGA设备上连接到嵌入式处理器。HDL编码器从Simulink块生成HDL代码,并且还为将IP核心连接到嵌入金宝app式处理器的AXI接口逻辑的HDL代码。HDL编码器将所有生成的文件包装到IP核心文件夹中。然后,您可以将生成的IP核心集成在Xilinx Vivado环境中具有更大的FPGA嵌入式设计。

1。启动IP核生成流程。

1.1。打开HDL工作流程顾问hdlcoder_led_blinking / led_counter右键单击子系统LED_COUNTER.子系统,选择HDL代码>高密度脂蛋白工作流顾问

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

1.3。为了目标平台, 选择赛灵思的UltraScale ZYNQ +片上多核ZCU102评估套件。如果您没有此选项,请选择得到更多的打开支持包安装程序。金宝app在支持包安装程金宝app序,选择赛灵思ZYNQ平台,并按照支持包安装程序提供完成安装的说明。

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

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

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

2。配置目标接口。

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

2.1设定目标>设置目标接口任务,选择axi4-lite.为了Blink_frequencyBlink_direction,回过头再读

2.2选择LED通用[0:7]为了引领

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

3.生成IP核。

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

4.生成和查看IP核报告。

生成自定义IP核后,IP核文件在Ipcore.文件夹中的文件夹。与自定义IP核一起生成HTML自定义IP核报告。该报告描述生成的自定义IP核的行为和内容。

将IP核心与Xilinx Vivado环境集成

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

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

1。要与Xilinx Vivado环境集成,请选择创建项目任务嵌入式系统集成,然后点击运行此任务。与IP集成嵌入式设计赛灵思Vivado项目中产生,并在对话窗口提供给项目的链接。您可以选择打开该项目来看一看。

2。如果您有嵌入式编码器许可证,则可以在下一任务中生成软件界面模型,生成软件界面模型。软件界面模型的细节在这个例子中的下一节,“生成界面模型软件”。

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

4.生成比特流后,选择计划目标设备任务。选择下载为了编程方法下载FPGA比特流到上赛灵思的UltraScale ZYNQ +片上多核板上的SD卡,让您的设计将自动重新加载时,重新打开电源ZYNQ板。点击运行此任务到ZYNQ硬件编程。

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

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

生成软件界面模型

在HDL Workflow顾问中,生成IP核心后,您可以在步骤4.1中创建Vivado项目,您可以选择在“中”生成软件界面模型嵌入式系统集成>生成软件界面模型任务。

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

跑过生成软件界面模型任务并查看生成新模型。任务对话框显示了模型的链接。

在生成的软件接口模型中,将“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. 选择解算器并将“停止时间”设置为“INF”。

  3. 选择硬件实现和组“为选定硬件板功能集”到“嵌入式编码硬件支持包”。金宝app

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

  5. 双击滑块增益堵塞。改变滑块增益值和观察LED阵列闪烁在ZYNQ硬件的频率变化。双击手动开关块切换闪烁LED的方向。

  6. 控件连接的范围回过头再读输出端口并观察到捕获FPGA IP内核的输出数据并将其发送回Simulink范围。金宝app

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

概括

这个例子说明了软硬件协同设计工作流程如何帮助您的MATLAB和Simulink设计的自动部署到赛灵思ZYNQ UltraScale架构+片上多核。金宝app您可以探索的最佳途径分区,通过工作流迭代部署设计。

下面的图表显示了您在本示例中所经历的工作流的高级图。要了解更多有关硬件和软件协同设计的工作流程,请参阅HDL编码器文档