从硬件到软件的数据流

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

金宝app支持硬件平台:

  • 赛灵思Zynq®ZC706评估套件

  • 锡林克斯Zynq超声仪™+MPSoC ZCU102评估工具包

  • ZedBoard™ZYNQ-7000开发板

  • Altera®Cyclone®V SoC开发工具包

  • Altera Arria®10 SoC开发工具包

设计任务和系统要求

考虑一个应用程序,连续地处理在FPGA和嵌入式处理器的数据。在这个例子中,FPGA算法过滤输入信号和所得到的数据流提供给处理器。在实现模型soc-hwsw-u流实现,和缓冲块表示从FPGA到处理器的数据传输。处理器对缓冲数据进行操作,并在处理器算法子系统。基于DIP开关的设置,现场可编程门阵列产生低频或高频正弦波的测试数据测试数据源子系统。

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

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

  • 最大延迟:100 ms

  • 样品下降:<万分之一

设计数据路径的挑战

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

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

  • 由于缺乏可视性,调试例如在硬件中删除示例之类的问题非常困难。

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

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

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

使用SoC块集设计

创建SOC模型soc_hwsw_stream_top从实现模型soc-hwsw-u流实现使用流从FPGA到处理器模板. 顶层模型包括FPGA模型soc硬件流fpga和处理器型号soc_hwsw_stream_过程实例化为模型引用。顶层模型还包括内存通道和内存控制器模块,它们在FPGA和处理器之间建立了共享外部内存的模型。这些在前面的实现模型中使用了缓冲块。为了提高仿真性能,还对FPGA算法进行了基于帧的处理建模soc_hwsw_stream_fpga_frame并作为模型变量子系统包含在顶层。您可以从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中的所有情况,延迟需求都得到了满足。在外部内存中,数据传输至少需要3个帧缓冲区。其中一个帧缓冲区由FPGA写入,另一个帧缓冲区由处理器读取。因此,下表中的案例#8-10将被拒绝,因为它们违反了最低缓冲区要求。

以可视化的等待时间,模拟模型和开放内存通道块,去性能按tab键点击查看性能的情节。选择下面的所有延迟选项绘图控件并点击创建绘图. 如图2所示,您将注意到复合延迟满足<100 ms的要求。

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

$FramePeriod>;平均任务持续时间$

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

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

soc_hwsw_stream_set_parameters (2);%第2行

由于平均任务持续时间1.06ms大于帧周期1.0ms,因此数据被丢弃在内存通道中。打开逻辑分析器并注意该信号icFIFODroppedCount数在整个模拟过程中都在增加,如图3所示,这表明丢失数据的累积量。

由于数据在通过存储器从FPGA传输到处理器的过程中丢失,这反映为吞吐量的降低。正常开放内存控制器块,去性能按tab键点击绘图数据吞吐量按钮查看内存吞吐量图,如图4所示。请注意,吞吐量小于所需的0.4 MBps。由于FPGA输出数据采样时间为10e-6,每个采样宽度为4字节,系统所需的流吞吐量为4字节/10e-6=400kbps。

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

$ FIFO_depth =框架尺寸/ FIFOBurstSize $

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

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

打开Simulation Data Inspector并添加来自内存通道的信号,如下图5所示。注意,作为缓冲使用(信号布法瓦)增加至最大11,FIFO使用量(信号isFIFOEntries)开始增加。当FIFO完全被使用时,样本会被丢弃(信号)isFIFODroppedCount)

表3列出了所有情况#3-7的模拟结果以及每10000个样本的结果。

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

在硬件上实现和运行

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

  • HDL编码器™

  • 嵌入式编码器

  • SoC的模块库支持包Xil金宝appinx器件,或

  • 为英特尔设备的SoC块集支金宝app持包

有关支持包的更多信息,请参见金宝appSoC块集支持的硬件金宝app

要在受支持的SoC板上实现该模型,请使用金宝appSoC的构建工具。打开“FPGA”分系统掩码,选择model variant为“Sample based processing”。默认情况下,模型将在赛灵思Zynq®ZC706评估套件因为它被配置成与该板。打开SoC的构建点击“配置,构建,部署和”在工具条按钮,并按照下列步骤操作:

  • 在“设置”屏幕上选择“生成模型”。单击“下一步”。

  • 点击“查看/编辑内存映射”,可以在“查看内存映射”屏幕上查看内存映射。点击下一步'。

  • 指定“选择项目文件夹”屏幕上的项目文件夹。点击下一步'。

  • 在“选择生成操作”屏幕上选择“生成、加载和运行”。单击“下一步”。

  • 点击“验证”检查模式的兼容性“验证模式”屏幕上实现。点击下一步'。

  • 点击“Build”开始在“Build model”屏幕上构建模型。当FPGA合成开始时,将打开一个外部外壳。点击下一步'。

  • 在“连接硬件”界面点击“测试连接”,测试主机与SoC板的连接情况。点击“下一步”进入“运行应用程序”界面。

完成FPGA合成可能需要30分钟以上。为了节省时间,您可能希望通过以下步骤使用提供的预生成位流:

  • 关闭外壳以终止合成。

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

  • 点击“加载并运行”按钮来预加载产生的比特流和运行上的SoC板模型

的CopyFile(完整文件(matlabroot,“工具箱”,“社会”,“socexamples”,'比特流','soc_hwsw_stream_top-zc706.位'),'./soc_prj');

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

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

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

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

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

  • 引导到目标硬件资源>FPGA设计(调试)制表符并启用包括AXI互连监视器

接下来,打开SoC Builder并按照前面针对Xilinx®Zynq®ZC706所述的步骤进行操作。修改拷贝文件命令来匹配与您的板对应的位流。可用的预生成比特流有:

  • 'soc_hwsw_stream_top-zc706.位'

  • “soc_hwsw_stream_top-zedboard.bit”

  • 'soc_hwsw_stream_top-zcu102.位'

  • “soc_hwsw_stream_top-c5soc.sof”

  • 'soc_hwsw_stream_top-a10soc.sof'

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