主要内容

使用HDL编码器和嵌入式编码器调试Zynq设计

这个例子展示了如何使用HDL Coder™和Embedded Coder®功能调试Zynq®设计。

需求

  • Xilinx®Zynq-7000 SoC ZC702评估试剂盒

  • Xilinx Zynq平台的HDL编码器支持包

  • Xilinx Zynq平台嵌入式编码器支持包

  • 请参考设置Zynq硬件和工具章节着眼于Xilinx Zynq平台安装ZC702硬件。

简介

当你为Zynq平台创建原型并开发算法时,在硬件上运行时监视、调优和调试算法是非常有用的。这个例子展示了如何使用外部模式、AXI接口和HDL FIFO块等功能来探索Zynq设计。使用外部模式功能,您可以探测在ARM®处理器上运行的软件中的内部数据。由于ARM处理器通过AXI接口连接到FPGA,因此也可以在FPGA上监视和调优参数。与HDL FIFO块一起,您可以捕获快速FPGA数据并将其检索回Simulink®进行分析。

首先打开示例模型。

open_system (“hdlcoder_data_capture”);

子系统DataCapture是针对FPGA结构的硬件子系统。在这个子系统中,OriginalDUT子系统包含三角函数块,它生成快速的正弦和余弦数据流。的OriginalDUT子系统代表我们的算法设计。如果我们想调试这个设计,我们如何捕获和监控这个快速的数据流?

FPGA运行的时钟频率比ARM处理器上的软件代码快得多。外部模式可以与运行在ARM处理器上的软件一起使用,以监测变化缓慢的状态参数,例如FIFO状态,但软件代码的采样速率(例如1KHz)不够快,无法捕获FPGA中快速变化的数据,例如50MHz。

本示例展示了如何使用FIFO块捕获快速FPGA数据,然后使用ARM处理器上的软件通过AXI接口和外部模式检索捕获的数据。

出于调试目的,我们添加了子系统Debug_FIFOs杜克大学。该子系统使用两个HDL FIFO块来捕获快速数据流,以便将来检索。控制信号输入到Debug_FIFOs子系统与DUT接口相连,通过AXI接口与ARM处理器相连。

在示例模型的顶层,当EnableCapture开关打开,然后RetrieveData开关一关,那Debug_FIFOs模块将捕获1000个数据样本放入高密度脂蛋白FIFO块。这是数据捕获阶段。然后,当EnableCapture开关一直开着,然后RetrieveData开关重新打开,则Debug_FIFOs模块将捕获的数据传输回ARM处理器。这是数据检索阶段。您可以使用手动开关在这两个阶段之间切换,以捕获和监视内部FPGA数据。

因此,对于想要监视的每个信号,都可以插入更多信号Debug_FIFO模块,以捕获数据并将数据检索回Simulink。您还可以使用自己的控制信号,或者使用自己的触发器或限定符来扩展这个示例。

硬件子系统的输出端口,DirectDataOut,直接将数据输出到AXI接口。相反,输出端口CapturedDataOut1而且CapturedDataOut2输出从fifo捕获的数据。我们将在最后一节中比较这两个输出的结果。

将设计部署到Zynq硬件上

接下来,我们将从模型启动HDL Workflow Advisor,并运行Zynq HW/SW协同设计工作流,将此设计部署到Zynq硬件上。有关详细的分步指南,请参阅示例着眼于Xilinx Zynq平台

1.设定目标>设置目标设备和合成工具任务,为目标工作流程中,选择IP核生成.为目标平台中,选择Xilinx Zynq ZC702评估试剂盒.运行此任务。

2.设定目标>设置目标接口任务,选择AXI4-Lite用于所有输入和输出端口。

3.然后运行所有工作流步骤,生成HDL IP,创建EDK项目,生成软件接口模型,并构建和下载FPGA比特流。生成的软件界面模型如下图所示:

4.配置和构建外部模式的软件接口模型:

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

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

  3. 在Hardware窗格中,单击监视和调优按钮。

  4. 单击运行按钮。Embedded Coder构建模型,下载ARM可执行文件到Zynq ZC702硬件,执行它,并将模型连接到运行在Zynq ZC702硬件上的可执行文件。

从Zynq硬件中获取并显示数据

现在设计的硬件和软件部分都运行在Zynq硬件上,下一步就是从Zynq板上捕获和检索数据。

一旦外部模式被连接,确保EnableCapture开关在1位置,以及RetrieveData开关在0的位置。注意到FIFONumber显示框几乎立即增加到1000个。这意味着FPGA结构内部的FIFO开始捕获数据,并迅速填充了1000个数据样本。

打开时间范围挡住并观察DirectDataOut第一行中的输出。注意,接收到的数据似乎是-1到1之间的随机波形。这是因为FPGA运行的频率比ARM处理器上运行的软件快得多。直接使用外部模式来监控快速FPGA数据意味着以非常慢的速率采样快速正弦波形,这将生成-1到1之间的随机波形。

现在双击RetrieveData开启数据读出开关。的EnableCapture开关需要一直开着。当RetrieveData开关打开后,本例中建模的内部逻辑通过AXI接口将捕获的数据样本一个一个地从FIFO发送到ARM处理器。然后这些数据样本通过外部模式从ARM处理器发送到Simulink。注意到FIFONumber显示框减少到0。

打开时间范围块,scope的第二和第三行现在显示了我们在FIFO中捕获的正弦和余弦波。下图为示波器波形。

总结

这个例子展示了如何使用外部模式,AXI接口和HDL FIFO块等功能来探测Zynq设计,捕获快速FPGA数据,并将其检索回Simulink进行分析。您还可以使用FPGA供应商工具(如ChipScope™或SignalTap™)进行类似的监控。但是这种方法的优点在于,您可以获得Simulink的所有可视化好处,比如各种作用域块,并且您还可以在Simulink中构建自己的自定义控件、触发器或限定符。

Baidu
map