主要内容

流数据从硬件到软件

一个系统化的方法之间的数据通路设计硬件逻辑使用SoC Blockset (FPGA)和嵌入式处理器。

应用程序经常分区之间的硬件逻辑和嵌入式处理器在芯片系统(SoC)设备来满足吞吐量、延迟和处理要求。你会设计和模拟整个应用程序由FPGA和处理器的算法,内存接口和任务调度来满足系统需求。然后,您将生成代码验证硬件设计的模型和实现SoC设备。

金宝app支持硬件平台:

  • Xilinx®Zynq®ZC706评估工具

  • Xilinx Zynq UltraScale™+ MPSoC ZCU102评估工具

  • Xilinx Zynq UltraScale™+ RFSoC ZCU111评估工具

  • ZedBoard™zynq - 7000开发板

  • 阿尔特拉®气旋®V SoC开发工具包

  • 阿尔特拉Arria®10 SoC开发工具包

设计任务和系统需求

考虑一个应用程序,该应用程序不断FPGA过程数据和嵌入式处理器。在这个例子中,FPGA算法过滤输入信号和流结果数据处理器。在实现模型soc_hwsw_stream_implementation,缓冲阻止代表传输数据处理器的FPGA。处理器运行缓冲数据和分类数据的高或低频率处理器的算法子系统。FPGA测试数据生成一个低或高频率的正弦信号基于变光开关设置测试数据来源子系统。

应用程序有以下性能要求:

  • 吞吐量:每秒10 e6样本

  • 最大延迟:100 ms

  • 10000年样本下降:< 1

挑战设计Datapath公司

FPGA过程数据样本的样本,同时处理器运行在一个框架的数据。FPGA和处理器之间的异步数据传输,和持续时间的软件可以为每个执行不同的任务。因此,一个队列需要FPGA和处理器之间的数据,以防止数据丢失。此队列中实现两个阶段,一个FIFO的的数据样本在FPGA的记忆和其他一系列的帧缓冲外部内存。您将需要设置三个参数相关的队列:帧尺寸(一帧数据的样本数量),数量的帧缓冲区和FIFO大小(FIFO)的样本数量。

这些设计参数影响性能和资源利用率。增加帧大小允许更多的时间进行软件任务执行和满足吞吐量需求的成本增加延迟。通常,您设置这些参数只有当你准备在硬件上实现,提出了以下挑战:

  • 很难调试等问题滴样本在硬件由于缺乏可见性。

  • 很难有效地设计应用程序如果不首先评估硬件接口的影响。它可以采取很多的设计实施的迭代可以评估性能只能通过硬件实现。

  • 很难优化设计性能,通过实现因果关系是很难确定的。

理想情况下你想占这些硬件的影响,而您正在开发应用程序在设计时,在实现和硬件上运行。满足这些需求的一个方法是模拟硬件的影响,在设计时。如果你能模拟任务持续时间的变化,利用内存缓冲区/ fifo和外部内存传输延迟,你可以评估其对应用程序的影响证明设计硬件设计和实现。SoC Blockset可以模拟这些影响可以评估之前部署的应用程序的性能的硬件上运行。

设计采用SoC Blockset

创建一个SoC模型soc_hwsw_stream_top从实现模型soc_hwsw_stream_implementation使用从FPGA流处理器模板。模型包括FPGA模型soc_hwsw_stream_fpga和处理器模型soc_hwsw_stream_proc实例化模型引用。顶部模型还包括AXI4-Stream软件块FPGA之间共享外部内存和处理器模式。这些都是早些时候实现模型的建模使用缓冲块。提高模拟性能,FPGA算法也为框架建模处理soc_hwsw_stream_fpga_frame和包含子系统在顶层模型变体。您可以选择框架中运行的模型或纸浆包处理通过选择的面具FPGA子系统。

设计来满足延迟的要求:延迟datapath公司从FPGA通过FPGA逻辑处理器组成的延迟和数据传输的时间从FPGA通过内存处理器。在这个例子中,FPGA时钟是10 mhz的纳秒的延迟。这是在内存与延迟相比可以忽略不计,这是在毫秒。因此,让我们专注于设计以以下的方式为数据传输延迟。

开始与一些潜在的帧大小和计算帧期限表1中每一帧的大小。帧之间的时间是两个连续帧从FPGA的处理器。对于这个示例,FPGA输出样本时间是10 e-6作为有效数据从FPGA输出每100个时钟周期。

FramePeriod =当前帧大小* FPGAOutputSampleTime美元

内存延迟是由于样品的时间帧缓冲区和FPGA FIFO队列。让我们FPGA FIFO相当于一帧缓冲区大小。留在最大延迟的要求,计算每一帧的帧缓冲区的数量大小按:

美元(NumFrameBuffers + 1) * FramePeriod < = MaxLatency $

允许的最大延迟这个例子中是100 ms。由于缓冲区的数量占最大延迟的要求,对所有表1的情况下,延迟满足要求。帧缓冲区所允许的最大数量的软件DMA驱动程序是64。需要至少3帧缓冲外部内存数据转移。当一个帧缓冲区的FPGA所写,另一个帧缓冲是由处理器读取。因此,案例# 8 - 10从下表被拒绝,因为他们违反最低缓冲要求。

可视化的延迟,模拟模型和开放AXI4-Stream软件块,去性能选项卡并单击查看性能的情节当地主。选择所有的延迟期权阴谋控制并点击创建图。如图- 2了,你会发现综合延迟满足< 100 ms的要求。

设计来满足吞吐量的要求:平均而言,软件处理帧时间内必须完成任务,否则,任务将泛滥导致下降的数据,违反了吞吐量的需求。即。

美元FramePeriod & # 62;MeanTaskDuration美元

有多种方法获得的意思是相应任务持续时间为你的算法,帧大小了任务执行的例子。意味着任务的持续时间为各种帧尺寸表2中捕获。

模拟模型与参数对应于行(# 2,# 7)表中使用的函数set_hwsw_stream_set_parameters函数与行#作为参数。设置行# 2的模型参数如下:

soc_hwsw_stream_set_parameters (2);% # 2行

自1.56毫秒的平均任务持续时间超过1.0毫秒的框架内,内存中的数据被删除。开放的逻辑分析仪和注意的信号icFIFODroppedCount在仿真过程中增加捕捉到在图3中,说明积累的下降数据量。

由于数据是在从FPGA处理器通过内存下降,这反映吞吐量下降。打开AXI4-Stream软件阻止,去性能选项卡并单击查看性能的情节按钮下内存控制器查看内存吞吐量图如图4所示。注意,吞吐量小于所需的0.4 MBps。由于FPGA输出数据样本时间是10 e-6和每个样本都是4字节宽,所需的流媒体系统的吞吐量是4字节/ 10 e-6 = 400 KBps。

设计以满足样品需求下降:由于任务的持续时间可能会有所不同,原因有很多不同的代码执行路径和操作系统开关时间的变化,有可能是数据被删除记忆。指定任务执行时间和任务的持续时间的统计分布的面具任务管理器。FIFO相当于一帧缓冲区的大小。FIFO破裂的大小设置为16字节和计算FIFO的深度:

FIFO_depth = FrameSize / FIFOBurstSize美元

现在,模拟模型100秒(10 e6样本以每秒10 e-6样本)情况下# 3 - 7。打开逻辑分析仪,注意样品的数量下降信号icFIFODroppedCount

soc_hwsw_stream_set_parameters (3);% # 3的设置模型参数

打开仿真数据检查和添加信号从内存中如下图5所示。注意,使用缓冲区(信号buffAvail)增加到最大11、FIFO(信号使用isFIFOEntries)开始增加。当完全使用FIFO,样品得到了(信号isFIFODroppedCount)

仿真结果的情况下# 3 - 7和合成样品每10000人下降列表在表3。

突出显示的条目(行# 4和# 5)是有效的设计选择,因为他们满足吞吐量,延迟和减少样品的要求。

实现和硬件上运行

以下产品需要这部分:下载188bet金宝搏

  • 高密度脂蛋白编码器™

  • 嵌入式编码器®

  • SoC Blockset 金宝appXilinx设备支持包,或

  • SoC Blockset为金宝app英特尔设备支持包

关于支持包的更多信息,请参阅金宝appSoC Blockset支金宝app持硬件

实现SoC委员会支持的模型,使用金宝appSoC建设者工具。开放的面具FPGA子系统并设置模型变体基于样本的处理。默认情况下,实现了模型的例子Xilinx Zynq ZC706评估工具。打开SoC建设者,点击配置、构建和部署在将来发布和遵循这些步骤:

  1. 设置屏幕上,选择构建模型。点击下一个

  2. 选择构建操作屏幕上,选择构建、加载和运行。点击下一个

  3. 选择项目文件夹屏幕上,指定项目文件夹。点击下一个

  4. 检查硬件映射屏幕上,单击下一个

  5. 检查内存映射点击屏幕,查看内存映射查看/编辑。点击下一个

  6. 验证模型屏幕,检查模型的兼容性实现点击验证。点击下一个

  7. 构建模型通过点击屏幕,开始建立模型构建。外部壳打开当FPGA合成开始。点击下一个

  8. 连接硬件屏幕上,与SoC测试主机的连接板通过点击测试连接。去运行应用程序屏幕上,单击下一个

FPGA合成往往超过30分钟才能完成。为了节省时间,使用提供的soc_hwsw_stream_top-zc706比特流通过以下步骤:

  • 关闭外部shell终止合成。

  • 复制soc_hwsw_stream_top-zc706通过运行这个命令比特流到你的项目文件夹。

拷贝文件(fullfile (matlabshared.sup金宝appportpkg.getSupportPackageRoot,“工具箱”,“soc”,“金宝appsupportpackages”,“xilinxsoc”,“xilinxsocexamples”,“比特流”,“soc_hwsw_stream_top-zc706.bit”),”。/ soc_prj ');
  • 负载上的比特流预先生成并运行模型SoC董事会通过点击加载并运行

在硬件上运行应用程序时,肘板的变光开关改变测试数据从“低”“高”的闪烁频率和通知相应的领导在黑板上。你也可以阅读样本计数下降在模型上运行外部模式。因此,您确认您的实现从SoC Blockset模型匹配仿真和满足需求。

实现在其他董事会:实现模型支持董事会除了Xilinx Zynq ZC706评金宝app估工具包,您必须首先配置模型支持董事会通过以下步骤和设置参数。

  1. 在仿真软件将来金宝app发布,系统芯片选项卡,打开配置参数窗口点击硬件设置

  2. 在配置参数窗口中,硬件实现的,选择你的董事会硬件板列表顶部和处理器模型。

  3. 硬件板设置部分,扩大目标硬件资源。下,点击FPGA设计(顶级)。选择包括“阿喜经理”为基于主机的IP交互并指定IP核心的时钟频率(MHz)作为10

  4. ,点击FPGA设计(调试)。选择包括AXI互连监控

接下来,打开SoC建设者和遵循相同的步骤Xilinx Zynq ZC706董事会。修改拷贝文件命令匹配相对应的比特流你的董事会。例如,如果您正在使用一个阿尔特拉Arria®10 SoC开发工具包,使用此命令来复制.periph.coreRBF文件。

拷贝文件(fullfile (matlabshared.sup金宝appportpkg.getSupportPackageRoot,“工具箱”,“soc”,“金宝appsupportpackages”,“intelsoc”,“intelsocexamples”,“比特流”,“soc_hwsw_stream_top-c5soc.rbf”),”。/ soc_prj ');

这个例子包括这些比特流文件.bit.rbf扩展:

  • soc_hwsw_stream_top-zc706

  • soc_hwsw_stream_top-zedboard

  • soc_hwsw_stream_top-zcu102

  • soc_hwsw_stream_top-XilinxZynqUltraScale_RFSoCZCU111EvaluationKit

  • soc_hwsw_stream_top-c5soc

  • soc_hwsw_stream_top-a10soc.periph

  • soc_hwsw_stream_top-a10soc.core

结论

在本例中,您使用一个系统的方法来设计硬件逻辑之间的数据路径和嵌入式处理器。您可以配置的例子来满足系统性能要求吞吐量,延迟和丢失的样品数量。通过模拟和可视化这些参数的影响在完整的模型包含硬件逻辑,处理器算法,外部内存和处理器任务持续时间,可以揭示吞吐量损失等问题,延迟和减少样本之前实现模型的硬件。使用这个例子来确保你的设计作品在硬件实现,避免长迭代的设计实施。

另请参阅