主要内容

瞄准Xilinx Zynq平台

此示例演示如何使用硬件-软件协同设计工作流在Xilinx®Zynq®ZC702评估套件上以不同频率闪烁LED。

介绍

这个例子是一个循序渐进的指南,可以帮助你使用HDL编码™来生成一个定制的HDL IP核心闪烁LED在Xilinx Zynq ZC702评估工具,并展示了如何使用嵌入式程序员®生成C代码运行在ARM®处理器来控制LED闪烁频率。

您可以使用MATLAB®和Simulink®设计万博1manbetx、模拟和验证应用程序,使用算法执行假设场景,并优化参数。然后,通过确定哪些系统元件将由可编程逻辑执行,哪些系统元件将在ARM Cortex-A9上运行,您可以准备在Zynq-7000 AP SoC上实现硬件和软件的设计。

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

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

  1. 设置Zynq硬件和工具。

  2. 为硬件和软件实现对设计进行分区。

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

  4. 将IP核整合到Xilinx Vivado项目中,并为Zynq硬件编写程序。

  5. 生成软件界面模型。

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

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

有关更多信息,请参考其他更高级的示例以及HDL Coder和Embedded Coder文档。

需求

  1. Xilinx Vivado设计套件,支持的版本列在万博1manbetxHDL编码器文档

  2. Xilinx Zynq-7000 SoC ZC702评估试剂盒

  3. 用于Xilinx Z万博1manbetxynq平台的HDL编码器支持包

  4. Xilinx Zynq平台的嵌万博1manbetx入式编码器支持包

创建Zynq硬件和工具

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

1.1.确保SW16开关设置如下图所示,因此您可以从SD卡引导Linux。

1.2.确保SW10开关(JTAG链输入选择双位拨码开关)设置如下图所示,所以可以使用Digilent usb到JTAG接口(U23)。位置1:;职位2:。

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

1.4使用以太网电缆连接计算机和Zynq板。

2.如果尚未安装,请安装适用于Xilinx Zynq平台的HDL编码器和嵌入式编码器支万博1manbetx持包。要启动安装程序,请转到MATLAB toolstrip并单击附加组件>获取硬件支持包万博1manbetx.欲了解更多信息,请参阅万博1manbetx支持包安装文档

3.确保您使用的是Xilinx Zynq平台嵌入式编码器支持包提供的SD卡映像。如果需要更新SD卡映像,请参阅万博1manbetx硬件设置部分本文件的附件。

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

h = zynq

这个zynq功能通过COM口登录硬件并运行ifconfig命令获取单板的IP地址。该功能还可以测试以太网连接。

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

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

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

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

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

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

在本例中,子系统发光二极管计数器是硬件子系统。它模拟了一个计数器,使FPGA板上的led闪烁。两个输入端口,Blink_frequencyBlink_direction,是决定LED闪烁频率和方向的控制端口。子系统外的所有块发光二极管计数器是用于软件实现的。

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

open_system (“hdlcoder\u led灯闪烁”);

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

使用HDL workflow Advisor中的IP核心生成工作流,您可以从Simulink模型自动生成可共享和可重用的IP核心模块。生成的IP核设计为连接到FPGA设备上的嵌入式处理器。HDL编码器从Simulink块生成HDL代码,还为连接IP核与嵌入式处理器的AXI接口逻辑生成HDL代码。HD万博1manbetxL编码器将所有生成的文件打包到IP核心文件夹中。然后,您可以在Xilinx Vivado环境中将生成的IP核与更大的FPGA嵌入式设计集成。

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

1.1.从中打开HDL工作流顾问hdlcoder_led_blinking / led_counter通过右键单击发光二极管计数器子系统,并选择HDL代码>高密度脂蛋白工作流顾问

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

1.3.对于目标平台,选择Xilinx Zynq ZC702评估工具包. 如果没有此选项,请选择得到更多的打开支持包安装程序。万博1manbetx在Suppor万博1manbetxt Package Installer中,选择Xilinx Zynq Platform,并按照Support Package Installer提供的说明完成安装。

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

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

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

2.配置目标接口。

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

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

2.2选择通用发光二极管[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 Integrator嵌入式设计的Xilinx Vivado项目,并在对话框窗口中提供了到该项目的链接。您可以选择打开项目来查看。

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

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

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

在FPGA硬件编程之后,Zynq板上的LED开始闪烁。

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

生成软件界面模型

在HDL Workflow Advisor中,生成IP核并将其插入Vivado参考设计后,您可以在嵌入式系统集成>生成软件接口模型的任务。

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

运行生成软件接口模型任务,并查看是否生成了新模型。“任务”对话框显示指向模型的链接。

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

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

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

在构建和开发算法原型时,在算法在硬件上运行时监视和调优算法是很有用的。Simulink中的外部模式特性支持此功能。万博1manbetx在这种模式下,你的算法首先部署到Zynq硬件中的ARM处理器上,然后通过以太网连接到主机上的Simulink模型。万博1manbetx

Simulink模型的主要作用是调优和监控万博1manbetx在硬件上运行的算法。由于ARM处理器通过AXI接口连接到HDL IP核,可以使用External模式来调优参数,并从FPGA捕获数据。

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

  2. 挑选解算器并将“停止时间”设置为“inf”。

  3. 硬件窗格中,单击监视和调谐在Zynq ZC702硬件的ARM处理器上以外部模式运行模型。Embedded Coder构建模型,下载ARM可执行文件到Zynq ZC702硬件,执行它,并将模型连接到Zynq ZC702硬件上运行的可执行文件。

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

  5. 控件连接的范围Read_back输出端口,观察FPGA IP核的输出数据是否被捕获并发送回Simulink示波器。万博1manbetx

  6. 当您完成更改模型参数时,单击停止模型上的按钮。注意,在上一步中打开的系统命令窗口表明模型已经停止。此时,您可以关闭系统命令窗口。

总结

这个例子展示了硬件和软件协同设计工作流如何帮助自动部署MATLAB和Simulink设计到Zynq-7000全可编程SoC。万博1manbetx您可以通过迭代工作流来探索划分和部署设计的最佳方法。

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