主要内容

流数据从硬件到软件

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

万博1manbetx支持硬件平台:

  • 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实例化模型引用。模型还包括内存通道和内存控制器顶部块模型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从下表被拒绝,因为他们违反最低缓冲要求。

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

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

美元FramePeriod & # 62;MeanTaskDuration美元

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

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

soc_hwsw_stream_set_parameters (2);% # 2行

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

由于数据是在从FPGA处理器通过内存下降,这反映吞吐量下降。开放内存控制器块,去性能选项卡并单击图数据吞吐量按钮下性能选项卡,查看内存吞吐量图如图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)是有效的设计选择,因为他们满足吞吐量,延迟和减少样品的要求。

实现和硬件上运行

以下产品需要这部分:s manbetx 845

  • 高密度脂蛋白编码器™

  • 嵌入式编码器®

  • SoC Blockset 万博1manbetxXilinx设备支持包,或

  • SoC Blockset为万博1manbetx英特尔设备支持包

关于支持包的更多信息,请参阅万博1manbetxSoC Blockset支万博1manbetx持硬件

实现模型支持的SoC板上使用万博1manbetxSoC建设者工具。打开的面具FPGA的子系统和选择模型变体的基于样本的处理。默认情况下,模型将实现Xilinx®Zynq®ZC706评估工具因为它是配置了董事会。打开SoC建设者点击“配置、构建和部署”按钮在将来发布和遵循这些步骤:

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

  • 点击下一个审查任务地图屏幕上。

  • 点击查看/编辑内存映射查看内存映射检查内存映射屏幕上。点击下一个

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

  • 选择构建、加载并运行选择构建操作屏幕上。点击下一个

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

  • 点击构建开始构建的模型构建模型屏幕上。外部壳FPGA合成开始时将打开。点击下一个

  • 点击测试连接连接硬件屏幕与SoC测试主机的连接板。点击下一个运行应用程序屏幕上。

FPGA合成可能需要超过30分钟才能完成。为了节省时间,你可能想要使用提供的预生成的比特流通过以下步骤:

  • 关闭外部shell终止合成。

  • 预生成的比特流复制到项目文件夹通过运行下面的命令,然后

  • 点击加载并运行按钮加载预生成的比特流在SoC董事会和运行模式

拷贝文件(fullfile (matlabshared.sup万博1manbetxportpkg.getSupportPackageRoot,“工具箱”,“soc”,“万博1manbetxsupportpackages”,“xilinxsoc”,“xilinxsocexamples”,“比特流”,“soc_hwsw_stream_top-zc706.bit”),”。/ soc_prj ');

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

实现在其他董事会:实现模型支持董事会除了Xilinx®Zynq®ZC706评万博1manbetx估工具包,您必须首先配置模型来支持董事会并设置参数如下例子。

  • 硬件选项卡上,单击硬件设置打开配置参数窗口。

  • 硬件实现选项卡上,选择你的董事会硬件板下拉列表顶部和处理器模式。

  • 导航到目标硬件资源>FPGA设计(顶级)选项卡并启用包括MATLAB作为基于主机的交互AXI主IP并设置IP核心的时钟频率(MHz)10 MHz。

  • 导航到目标硬件资源>FPGA设计(调试)选项卡并启用包括AXI互连监控

接下来,打开SoC Builder和遵循的步骤如前所述Xilinx®Zynq®ZC706以上。修改拷贝文件命令匹配相对应的比特流你的董事会。在阿尔特拉Arria®10 SoC开发工具包,阿尔特拉气旋®V SoC开发工具包使用下面拷贝文件命令对应你的董事会。在阿尔特拉Arria®10 SoC开发工具包,.periph副本”。rbf’和‘.core。rbf的文件。

拷贝文件(fullfile (matlabshared.sup万博1manbetxportpkg.getSupportPackageRoot,“工具箱”,“soc”,“万博1manbetxsupportpackages”,“intelsoc”,“intelsocexamples”,“比特流”,“soc_hwsw_stream_top-c5soc.rbf”),”。/ soc_prj ');

以下是可用的预生成的位流文件:

  • “soc_hwsw_stream_top-zc706.bit”

  • “soc_hwsw_stream_top-zedboard.bit”

  • “soc_hwsw_stream_top-zcu102.bit”

  • “soc_hwsw_stream_top-XilinxZynqUltraScale_RFSoCZCU111EvaluationKit.bit”

  • “soc_hwsw_stream_top-c5soc.rbf”

  • “soc_hwsw_stream_top-a10soc.periph.rbf”

  • “soc_hwsw_stream_top-a10soc.core.rbf”

总之,这个例子向您展示了一个系统化的方法来设计硬件逻辑之间的datapath公司使用SoC Blockset和嵌入式处理器。你选择设计参数的帧大小、数量的帧缓冲区和FIFO大小以满足系统性能要求的吞吐量,延迟放样品。通过模拟和可视化这些参数的影响在完整的模型包含硬件逻辑,处理器算法,外部内存和处理器任务持续时间,你发现了吞吐量的损失等问题,延迟和减少样本在实现硬件。这个工作流程确保设计工作在硬件实现和避免长迭代的设计实施。