从硬件到软件的数据流

本实施例中提出了一个系统的方法来设计使用的SoC模块库硬件逻辑(FPGA)和嵌入式处理器之间的数据路径。应用程序通常的硬件逻辑和嵌入式处理器之间的系统级芯片(SoC)的设备,以满足吞吐量,延迟和处理要求的分配。你将设计和模拟包括FPGA&处理器算法,存储器接口和任务调度,以满足系统的要求整个应用程序。然后,将由从模型生成代码和执行SOC器件上验证硬件设计。

金宝app支持的硬件平台:

  • 赛灵思Zynq®ZC706评估套件

  • 赛灵思的UltraScale ZYNQ™+片上多核ZCU102评估套件

  • ZedBoard™ZYNQ-7000开发板

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

  • Altera Arria®10 SoC开发工具包

设计任务和系统要求

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

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

  • 可以通过:每秒10E6样品

  • 最长延迟时间:100毫秒

  • 样品下降:<1 10000

在设计数据通路的挑战

的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从下表,因为他们违反了最低缓冲要求被拒绝。

以可视化的等待时间,模拟模型和开放内存通道块,去性能标签并点击查看性能曲线.选择下的所有延迟选项绘图控制并点击创建情节.如图捕获 - 2,你会发现,复合延迟满足<100毫秒的要求。

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

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

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

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

soc_hwsw_stream_set_parameters(2);%列#2

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

由于数据从FPGA通过存储器传输到处理器中丢弃,这反映为吞吐量的下降。打开内存控制器块,去性能标签并点击绘图数据吞吐量性能选项卡下的按钮,查看吞吐量情节记忆如图4。注意,吞吐量小于所需的0.4 Mbps的。由于FPGA的输出数据采样时间是10E-6和每个样品宽4个字节,所需的流可以通过为系统为4个字节/ 10E-6 = 400 KBps的。

设计,满足跌落样品要求:由于任务持续时间可以有很多原因象OS切换时间不同的代码的执行路径和变化而变化,可能的是,数据在存储器信道丢弃。指定在任务管理器块的面具任务持续时间平均任务执行时间和统计分布。大小的FIFO相当于一个帧缓冲器中。设置FIFO突发长度为16个字节,并计算FIFO深度:

$ FIFO_depth =框架尺寸/ FIFOBurstSize $

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

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

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

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

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

在硬件上实现和运行

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

  • HDL编码器™

  • 嵌入式编码器

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

  • SoC的模块库支持包英特尔金宝app设备

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

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

  • 选择“设置”屏幕上的“构建模式”。点击下一步'。

  • 点击“查看/编辑存储器映射”查看“回顾记忆地图”屏幕上的内存映射。点击下一步'。

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

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

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

  • 点击“生成”开始“构建模式”屏幕上的模型的构建。FPGA合成开始时的外部壳将打开。点击下一步'。

  • 点击“连接硬件”屏幕上的“测试连接”来测试主机的支持SoC板的连接。点击“下一步”进入“运行应用程序”屏幕。

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

  • 关闭外壳以终止合成。

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

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

的CopyFile(完整文件(matlabroot,'工具箱',“社会”,“socexamples”,'比特流','soc_hwsw_stream_top-zc706.bit''./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.bit'

  • 'soc_hwsw_stream_top-zedboard.bit'

  • 'soc_hwsw_stream_top-zcu102.bit'

  • 'soc_hwsw_stream_top-c5soc.sof'

  • 'soc_hwsw_stream_top-a10soc.sof'

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