主要内容

流数据从硬件到软件

本例介绍了一种使用SoC块集设计硬件逻辑(FPGA)和嵌入式处理器之间数据路径的系统方法。应用程序通常在硬件逻辑和片上系统(SoC)设备上的嵌入式处理器之间进行划分,以满足吞吐量、延迟和处理要求。您将设计和模拟整个应用程序,包括FPGA和处理器算法、内存接口和任务调度,以满足系统要求。然后,通过从模型生成代码并在SoC设备上实现,在硬件上验证设计。

万博1manbetx支持的硬件平台:

  • 赛灵思Zynq®ZC706评估套件

  • Xilinx Zynq UltraScale™+ MPSoC ZCU102评估套件

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

  • ZedBoard™ZYNQ-7000开发板

  • Altera®Cyclone®V SoC开发套件

  • Altera Arria®10 SoC开发套件

设计任务和系统要求

考虑一个应用程序,连续地处理在FPGA和嵌入式处理器的数据。在这个例子中,FPGA算法过滤输入信号和所得到的数据流提供给处理器。在实现模型soc_hwsw_stream_implementation,缓冲器块表示从FPGA到处理器的数据传输。处理器对缓冲数据进行操作,并将数据分类为高频率或低频率处理器的算法子系统。FPGA根据拨码开关设置产生低频或高频正弦波的测试数据测试数据源子系统。

应用程序的性能要求如下:

  • 吞吐量:每秒10e6个样本

  • 最大延迟:100毫秒

  • 样本下降:<1/10000

设计数据路径的挑战

的FPGA,而处理器在时间数据的帧上操作以通过样品处理数据样本。数据被FPGA和处理器之间异步传送,和软件任务的持续时间可以为每个执行而变化。因此,队列是需要保持FPGA和处理器之间的数据以防止数据丢失。这个队列在两个阶段中,一个作为在FPGA存储器数据样本的突发的FIFO和其它如在外部存储器中的一系列帧缓冲器实现。你将需要设置相关的队列三个参数:帧大小(样本的数据的帧号),帧缓冲器和FIFO大小(FIFO样本突发的数量)的数量。

这些设计参数会影响性能和资源利用率。增加帧大小可以有更多的时间执行软件任务,并以增加延迟为代价满足吞吐量要求。通常,只有在准备在硬件上实施时,才能设置这些参数,这会带来以下挑战:

  • 由于缺乏可见性,很难调试诸如在硬件中丢弃样本之类的问题。

  • 如果不先评估硬件接口的效果,就很难有效地设计应用程序。它可能需要许多设计实现迭代,因为您只能通过在硬件上实现来评估性能。

  • 因为性能和因果关系是很难通过实施以确定它是难以优化设计。

理想情况下,您希望在设计时开发应用程序时考虑到这些硬件影响,然后再在硬件上实现和运行。满足这些需求的一种方法是在设计时模拟硬件效果。如果可以模拟任务持续时间、内存缓冲区/ fifo利用率和外部内存传输延迟的变化,就可以评估它们对应用程序设计的影响,并在硬件上实现经过验证的设计。SoC Blockset允许您模拟这些效果,以便您可以在硬件上运行之前评估部署的应用程序的性能。

使用SoC模块集进行设计

创建SOC模型soc_hwsw_流_顶部从实现模型soc_hwsw_stream_implementation使用流从FPGA到处理器模板.顶部型号包括FPGA型号soc_hwsw_stream_fpga和处理器模型soc_hwsw_stream_proc实例化为模型引用。顶层模型还包括内存通道和内存控制器块,用于模拟FPGA和处理器之间的共享外部内存。这些都是在实现模型中使用缓冲块进行建模的。为了提高仿真性能,还对FPGA算法进行了基于帧的处理建模soc_hwsw_流_fpga_帧并作为模型变量子系统包含在顶层。通过从FPGA子系统的掩码中选择,您可以选择在基于帧或基于样本的处理中运行的模型。

设计,满足时延要求:从FPGA到处理器的数据路径中的延迟包括通过FPGA逻辑的延迟和通过内存通道从FPGA到处理器的数据传输时间。在本例中,FPGA时钟为10MHz,延迟约为纳秒。与内存通道内的延迟(毫秒级)相比,这可以忽略不计。因此,让我们以以下方式重点设计数据传输的延迟。

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

$FramePeriod =帧大小* FPGAOutputSampleTime

内存通道的延迟是由于帧缓冲区队列和FPGA FIFO中的采样所消耗的时间。让我们将FPGA FIFO的大小等效于一个帧缓冲区。为了保持在最大延迟要求,计算每个帧大小的帧缓冲区的数量,按照:

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

本例中允许的最大延迟为100毫秒。由于缓冲区的数量占最大延迟要求的比例,因此表1中的所有情况都满足延迟要求。软件DMA驱动程序允许的最大帧缓冲区数为64。外部存储器中至少需要3个帧缓冲区进行数据传输。其中一个帧缓冲区由FPGA写入,另一个帧缓冲区由处理器读取。因此,下表中的案例#8-10被拒绝,因为它们违反了最低缓冲要求。

以可视化的等待时间,模拟模型和开放存储通道街区,去表演选项卡并单击查看性能图. 选择下面的所有延迟选项绘图控件点击创建绘图.如图2所示,您会注意到复合延迟满足<100毫秒的要求。

设计以满足吞吐量要求:平均而言,软件任务的处理必须在一个帧周期内完成,否则,任务将溢出,导致数据的删除和违反吞吐量要求。IE。

美元FramePeriod & # 62;MeanTaskDuration美元

有获得相应的帧大小为你的算法平均持续时间任务的各种方式,这是覆盖任务执行的例子。表2显示了不同帧大小下的平均任务持续时间。

要用表中行(#2-#7)对应的参数来模拟模型,使用该函数set_hwsw_stream_set_parameters函数以行#作为参数。设置第2行模型参数如下:

soc_hwsw_流_set_参数(2);%第2排

由于1.06 ms的Mean Task Duration大于1.0 ms的Frame Period,数据被丢弃在内存通道中。打开逻辑分析仪并注意那个信号icFIFODroppedCount在整个模拟过程中不断增加,如图3所示,这表明丢失数据的累积量。

由于数据在通过内存从FPGA传输到处理器的过程中被丢弃,这反映为吞吐量的下降内存控制器街区,去表演选项卡并单击绘图数据吞吐量单击Performance选项卡下的按钮,查看内存吞吐量图,如图4所示。请注意,吞吐量小于所需的0.4 MBps。由于FPGA输出数据采样时间为10e-6,且每个采样宽度为4字节,因此系统所需的流吞吐量为4字节/10e-6=400 KBps。

设计满足落样要求:由于许多原因,例如不同的代码执行路径和操作系统切换时间的变化,任务持续时间可能会有所不同,因此可能会将数据丢弃在内存通道中。请在任务管理器块的掩码中指定任务持续时间的平均任务执行持续时间和统计分布。将FIFO的大小设置为一帧buf将FIFO突发大小设置为16字节,并计算FIFO深度:

$ FIFO_depth =框架尺寸/ FIFOBurstSize $

现在,模拟时间100秒(10E6样本每秒10E6个样本)为例#3-7模型。打开逻辑分析仪,并注意滴在信号样本的数目icFIFODroppedCount

soc_hwsw_流_set_参数(3);%设置模型参数为#3

打开仿真数据检查器并添加来自内存通道的信号,如下图5所示。注意,作为缓冲区的使用(信号布法利)增加至最大11,FIFO使用量(信号isFIFOEntries)开始增加。当FIFO完全使用时,样本会丢失(信号isFIFODroppedCount

所有情况#3-7的模拟结果以及每10000个样本的最终掉落结果如表3所示。

突出显示的条目(第4行和第5行)是有效的设计选择,因为它们满足吞吐量、延迟和drop样例需求。

硬件实现和运行

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

  • 高密度脂蛋白编码器™

  • 嵌入式编码器®

  • SoC的模块库支持包Xil万博1manbetxinx器件,或

  • 英特尔设备的SoC块集支持万博1manbetx包

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

要在受支持的SoC板上实现该模型,请使用万博1manbetxSoC的构建工具。打开“FPGA”子系统的掩码,选择“基于样本的处理”的模型变量。默认情况下,模型将在赛灵思Zynq®ZC706评估套件因为它被配置成与该板。打开SoC的构建点击“配置,构建,部署和”在工具条按钮,并按照下列步骤操作:

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

  • 点击下一个在…上回顾任务图屏幕。

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

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

  • 选择构建、加载和运行在…上选择构建操作屏幕。单击下一个

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

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

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

FPGA综合可能需要30分钟以上的时间。为了节省时间,你可以按照以下步骤使用预先生成的比特流:

  • 关闭外壳以终止合成。

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

  • 点击加载并运行按钮加载预生成的比特流并在SoC板上运行模型

copyfile(完整文件(matlabshared.supp万博1manbetxortpkg.getSupportPackageRoot,“工具箱”“soc”...“万博1manbetxsupportpackages”“xilinxsoc”'xilinxsocexamples'“比特流”...‘soc_hwsw_stream_top-zc706.bit’),'./soc_prj');

当应用程序在硬件上运行时,拨动板上的拨码开关,将测试数据从“低”频率更改为“高”频率,并注意板上相应的LED闪烁。您还可以读取在外部模式下运行的模型中的示例丢弃计数。因此,您需要验证SoC Blockset模型的实现是否匹配仿真并满足要求。

在其他电路板上实现:为贯彻落实比赛灵思Zynq®ZC706评估板等支持的主板型万博1manbetx号,您必须首先配置模型来支持董事会和树立的榜样参数如下。

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

  • 硬件实现选项卡,选择您的主板从硬件板顶部和处理器型号上的下拉列表。

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

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

接下来,打开SoC Builder,并遵循前面提到的Xilinx®Zynq®ZC706的步骤。修改复制文件命令匹配与您的板对应的位流。在Altera Arria®10 SoC开发套件和Altera Cyclone®V SoC开发套件的情况下使用如下复制文件命令对应于您的主板。在Altera公司的Arria®10 SoC开发套件的情况下,复制“.periph.rbf”和“.core.rbf”文件。

copyfile(完整文件(matlabshared.supp万博1manbetxortpkg.getSupportPackageRoot,“工具箱”“soc”...“万博1manbetxsupportpackages”“国际电信组织”“互联网示例”“比特流”...'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-Xilinxzynkltrascale_RFSOCZCU111评估工具包.bit”

  • 'soc_hwsw_stream_top-c5soc.rbf'

  • 'soc_hwsw_stream_top-a10soc.periph.rbf'

  • 'soc_hwsw_stream_top-a10soc.core.rbf'

总之,本实施例显示用于设计使用的SoC模块库的硬件逻辑和嵌入式处理器之间数据通路的系统方法。你选择帧大小,帧缓冲器的数量和FIFO大小的设计参数,以满足吞吐量,延迟和下降样品的系统性能要求。通过模拟和可视化的完整的模型这些参数包括硬件逻辑,处理器算法,外部存储器和处理器的任务持续时间,你覆盖的问题,如吞吐量,延迟损失和执行硬件之前样品的下降的影响。这个工作流程保证了设计作品上的硬件实现之前,避免了长期的设计,实现迭代。