埃里克•Cigan MathWorks
该视频是一个系列的一部分,它演示了系统的方法来设计FPGA的硬件逻辑与使用SoC Blockset™的嵌入式处理器之间的数据路径。应用程序通常在用于系统上的系统上的硬件逻辑和嵌入式处理器之间进行划分,以满足吞吐量,延迟和处理要求。
学习设计和模拟包括FPGA和处理器算法以及存储器接口的整个应用程序。您将看到如何使用SOC Soc Setset的块来模拟共享外部存储器,以及如何使用SoC SlockSet来测量不同形式的延迟,以及来自内存缓冲区的数据丢失。
通过使用模拟执行这些分析,您可以更好地了解您的设计,而不是使用硬件时使用。在在硬件上实现之前,您可以揭示吞吐量,延迟和丢弃样本的问题。
在此视频中,我们将展示SoC块集在从FPGA到处理器的数据路径时如何模拟和模拟硬件效果。
通过在开发应用程序时模拟硬件效果,您可以评估总体性能,而无需将应用程序加载到开发板上。此外,与使用开发板相比,使用模拟可以更清楚地了解应用程序,因此您可以更快地识别问题并测试潜在的解决方案。
这是我们正在设计的应用程序的初始模型。它从外部来源获取正弦数据流,将其分为低或高频信号,并照亮低或高频探测器光。
我们将通过使用Toggle开关来测试它来选择低频和高频信号。出于测试的目的,我们将在FPGA中生成测试信号。FPGA过滤输入流,然后将数据传递给缓冲区。该初始模型使用简单的理想缓冲区,这足以检查算法。处理器在数据帧上操作,检测信号,并打开相应的检测器光。
我们可以看到模型运行。在模拟中,我们可以在低频和高频测试信号之间切换,我们看到探测器发光二极管亮起来。这个模拟验证了算法,但是现在我们想在DDR内存中加入缓冲的硬件效果,就像我们在硬件中配置它一样。SoC Blockset包括帮助我们的块和模板。
考虑我们应用程序的这个图。测试信号由FPGA以100 kHz的速率采样。处理器每10毫秒处理一帧数据。由于数据从FPGA异步传输到处理器,我们在FPGA内存和DDR内存中插入一个FIFO。这里的虚线表示背压。这发生在内存缓冲区填满时,可能需要更多的数据留在FPGA的FIFO中,直到缓冲区被刷新。
以下是设计必须满足的两个要求:
当我们试图满足这些要求时,我们将关注两个参数:帧大小和缓冲区的数量。
我们使用来自SoC块集的块来更准确地建模这个设计的架构。
首先,我们使用800个样本的帧大小,每个样本消耗4个字节。我们还指定内存区域将由11个缓冲区组成。我们设置了内存通道块的参数并进行了仿真。
在仿真过程中,我们可以切换输入信号之间的低高频信号。我们可以看到来自处理器的数据输出信号,看到频率的变化,我们可以看到指示灯相应的变化。我们运行了100秒的模拟时间,这个模型已经运行完成了。
我们打开内存通道块,它被用来测量每帧的延迟时间。如图所示,进入仿真几秒钟后,延迟达到100毫秒的范围。最大允许的延迟是100毫秒,所以这个设计与延迟要求相差不大。既然我们已经接近要求了,就让我们暂时继续吧。
另一个要求是不能超过1 / 10000的样本被丢弃。使用SoC Blockset,可以对模型进行测量,以便我们能够确定是否有样本被丢弃。我们可以从顶部的图表中看到,缓冲区使用在模拟过程中3秒左右开始增加,并增加到5.5秒左右。中间的图表描绘了FIFO的使用情况,底部的图表描绘了被丢弃的样本数量。
在大约5.8秒时,先进先出开始稳定地下降样本。在100秒结束时,大约有900个样本被丢弃,我们可以看到,在每10秒的周期内,大约有100个样本被丢弃。这几乎是正确的,一万分之一。由于这个设计不能很好地满足任何规格,让我们尝试改变内存配置。
我们将增加800到1,000个样本的帧大小,并将缓冲区的数量从11到9中减少。然后我们使用新参数重新运行模拟。
一旦模拟完成,我们可以打开内存通道块。在这种情况下,延迟在模拟进行到大约23秒时达到峰值,此时达到约78毫秒的延迟。记住,允许的最大延迟是100毫秒,所以现在我们在这个限制下很安全。
然后我们再检查一下,是否在10000个样品中掉落少于1个的要求之内。当我们看三个相同的变量时,我们可以看到没有任何样本被丢弃。这意味着我们现在的设计满足了我们的两个需求。
既然我们使用SoC Sloctset使用模拟来确定帧大小和缓冲区的数量,我们已准备好在FPGA板上的硬件中实现设计,我们可以使用SoC块集进行进一步测试以验证我们的模拟结果。
总而言之,我们使用SoC Blockset来增强带有硬件效果的算法模型,这样我们就可以使用仿真来查看不同的帧大小和缓冲区数量如何影响性能。
通过使用硬件架构模拟算法,我们能够在硬件上实现之前揭示延迟和丢弃样本的问题。
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获得最佳网站性能。其他MathWorks国家网站未优化您所在地的访问。