块或子系统的计算延迟涉及参与执行该块或子系统的操作的数量。例如,在256样本输入的FFT块操作需要的Simulink万博1manbetx®为每一输入帧执行一定数量的乘法的软件。这些操作消耗的实际时间在很大程度上取决于计算机硬件和底层软件层(如MATLAB)的性能®环境和操作系统。因此,为一个特定的模型计算延迟可以改变从一台计算机到另一个平台。
模型状态栏上显示的模拟时间(可以通过Simulink数字时钟块访问)不提供任何关于计算延迟的信息。万博1manbetx例如,根据Simulink计时器,上面提到的FFT立即执行,万博1manbetx没有任何延迟。不管FFT算法执行了多少次操作,在模拟时间t=25.0处理FFT块的输入并在模拟时间t=25.0输出。Simu万博1manbetxlink计时器只反映算法延迟,而不反映计算延迟。
有许多方法可以减少计算延迟,而无需在更快的硬件上实际运行仿真。首先,您应该熟悉一下手动性能优化(万博1manbetx模型)描述了一些基本的策略。下面的信息讨论了几种提高性能的选项。
改进性能的第一步是分析您的模型,并消除或简化那些过度增加计算负载的元素。这些元素可能包括范围显示和数据日志记录块,它们是您为调试目的而放置的,而不再需要。除了这些特定模型的调整,还有一些更一般的步骤,你可以采取,以提高任何模型的性能:
使用基于帧的处理在可能的情况。整个模型是基于帧是有利的。看到基于框架处理的好处了解更多信息。
使用DSP Simuli万博1manbetxnk模型模板来定制Simulink进行数字信号处理建模。有关更多信息,请参见为信号处理模型配置Simul万博1manbetxink环境。
关闭Simulink状态栏万博1manbetx。在造型选项卡中,取消选择环境>状态栏。模拟速度将提高,但时间指示将不可见。
sim (gcs)
这种启动仿真的方法可以大大提高仿真速度,但也有几个限制:
你不能与模拟交互(调整参数,例如)。
你必须按Ctrl + C来停止模拟,或指定启动和停止时间。
在MATLAB s函数中没有图形更新。
使用万博1manbetx仿真软件编码器™生成通用实时(GRT)的代码生成软件代码针对您的主机平台,并使用生成的可执行文件运行模型。查看万博1manbetxSimulink的编码器文档了解更多信息。
算法延迟是一个块或子系统的算法固有的延迟,与CPU速度无关。在本指南中,块的算法延迟被简单地称为块的延迟。它通常用一个块的输出滞后于相应输入的样本数量来表示。这个延迟直接与在该块执行期间在Simulink计时器上经过的时间有关。万博1manbetx
特定块的算法延迟可能取决于块参数设置和一般的Simulink设置。万博1manbetx为了简化问题,使用以下类别对块的延迟进行分类是有帮助的:
以下主题解释延迟的不同类别,以及模拟和参数设置如何影响特定块所经历的延迟级别。
FFT块是没有算法延迟的组件的一个例子。当模块计万博1manbetx算输入的FFT时,Simulink计时器不记录任何时间流逝,并且在接收输入的同一时间步骤的输出中可用转换后的数据。还有许多其他块具有零算法延迟,例如矩阵和线性代数库中的块。这些块中的每一个都在一个单独的时间步骤中处理它的输入并生成它的输出。
归一化块是算法延迟为零的块的一个例子:
在MATLAB命令提示符键入ex_normalization_tut
。
规范化示例T1模型打开。
双击来自工作区块的信号。的源块参数:来自工作空间的信号打开对话框。
设置块参数如下:
信号=1:10 0
采样时间=1/4
每帧样本=4
保存这些参数并单击关闭对话框好吧。
运行模型。
该模型将来自数字时钟块的Simulink定时器输出的当前值前置到每个输出帧。万博1manbetx
来自工作区的信号每秒钟生成一个包含四个样本的新帧(T佛=π* 4)。前几个输出帧是:
(t=0) [1 2 3 4]' (t=1) [5 6 7 8]' (t=2) [9 10 11 12]' (t= 3)[13 14 15 16]”(t=4) [17 18 19 20]'
在MATLAB命令提示符键入挤压(dsp_examples_yout)的
。
归一化输出,dsp_examples_yout
,则转换为更易于读取的矩阵格式。结果,答
示于下图:
ans = 0 0.0333 0.0667 0.1000 0.1333 1.0000 0.0287 0.0345 0.0402 0.0460 2.0000 0.0202 0.0224 0.0247 0.0269 3.0000 0.0154 0.0165 0.0177 0.0189 4.0000 0.0124 0.0131 0.0138 0.0146 5.0000 0.0103 0.0108 0.0113 0.0118
第一列答
是由数字时钟块万博1manbetx提供的Simulink时间。你可以看到第一个输入的平方2-范数,
[1 2 3 4]'. / sum([1 2 3 4]'.平方)
出现在输出的第一行中(at time)t=0),与块接收输入的时间步长相同。这表明归一化块具有零算法延迟。
当零算法延迟数块连接在反馈回路,Simulink中可能会报告代数环错误和性能通常可能会受到影响。万博1manbetx可以通过注入延迟中的至少一个样品成的反馈回路,例如防止代数环路,通过包括具有一个延迟块延迟> 0。有关更多信息,请参见代数循环概念(万博1manbetx模型)。
可变延迟的整数块是与算法延迟一个块的一个例子。在下面的例子中,您使用此块来演示这一概念:
在MATLAB命令提示符键入ex_variableintegerdelay_tut
。
变量整数延迟示例T1打开。
双击来自工作区块的信号。的源块参数:来自工作空间的信号打开对话框。
设置块参数如下:
信号=1:10 0
采样时间=1
每帧样本=1
保存这些参数并单击关闭对话框好吧。
双击常量块。的源块参数:常量打开对话框。
设置块参数如下:
恒值=3.
解释向量参数1-d=清除此复选框
采样时间=1
请点击好吧保存这些参数并关闭对话框。
的输入延迟
可变整数延迟块的端口指定的一个输入之前应经过采样周期的数目在
端口被释放到输出。这个值表示块的算法延迟。在本例中,由于输入到延迟
端口是3.
,在In和Delay端口处的采样周期为1,那么到达block的采样时间为In端口t=0在某一时刻被释放到输出t= 3。
双击变量整型延迟块。的功能块参数:可变整数延迟打开对话框。
设置初始条件参数1
,然后单击好吧。
在调试选项卡上,选择信息覆盖>信号维度和Nonscalar信号。
运行模型。
模型应该类似于下图。
在MATLAB命令提示符键入dsp_examples_yout
输出如下:
dsp_examples_yout = 0 -1 1 -1 2 -1 3 1 4 2 5 3
第一列是由数字时钟块提供的Simulink时间。万博1manbetx第二列是延迟的输入。正如所料,输入到块的值为t=0延迟三个样本,出现为第四个输出样本,att= 3。你也可以看到,从可变整数延迟块前三输出继承块的价值初始条件参数,1
。从模拟开始到第一个输入传播到输出的这段时间,有时称为初始延迟块的。
许多DSP System Toolbox™块具有一定程度的固定或可调算法延迟。这些包括算法依赖于延迟或存储元素(如过滤器或缓冲区)的任何块。通常,但并不总是,这样的块提供初始条件参数,该参数允许您指定块在初始延迟期间生成的输出值。在其他情况下,初始条件在内部设置为0。
有关特定DSP系统工具箱块的延迟特性,请参阅块参考页。
在某些条件下,Simulink可以迫使一个块延迟输入万博1manbetx时间,超过该块算法的严格要求。这种多余的算法延迟称为任务延迟,因为它是由Simulink任务模式的同步需求引起的。万博1manbetx一个块的总体算法延迟是它的基本延迟和任务延迟的总和。
算法延迟=基本算法延迟+任务处理延迟
特定块的任务延迟可能取决于以下块和模型特征:
万博1manbetxSimulink中有两个任务模式:
单一任务
多任务处理
在造型选项卡上,单击模型设置。在解算器窗格中,选择类型>固定步
。扩大解算器的细节。若要指定多任务模式,请选择对待每个离散速率作为单独的任务。指定单一任务模式,明确对待每个离散速率作为单独的任务。
请注意
在Simulink单任务处理模式中,许多多速率块减少了延迟。万博1manbetx检查多速率块参考页面的“延迟”部分以获得详细信息。也看到基于时间的调度和代码生成(万博1manbetx仿真软件编码器)。
当其所有的输入和输出端口,在相同的帧速率操作的块被称为单速率。块被称为多速率当至少一个输入或输出端口具有不同的帧速率比其他。
许多块永久是单速率的。这意味着所有的输入和输出端口总是具有相同的帧速率。对于其他块,块参数设置确定该块是单速率还是多速率。只有多速率块受到任务延迟的影响。
请注意
万博1manbetx如果Simulink检测到一个完全由多速率块组成的反馈环路,它可能会报告一个代数环路错误。要打破这样的代数循环,插入一个具有非零延迟的单速率块,例如一个单元延迟块。有关更多信息,请参见代数循环概念(万博1manbetx模型)。
当在模型中的所有块的所有端口在一个单一的帧速率操作,该模型被称为单速率。当模型包含具有不同帧速率的块,或至少一种多速率块,该模型被称为多速率。需要注意的是Simu万博1manbetxlink中防止单速率模型从在通过产生一个错误多任务模式下运行。
许多块可以以基于样本或基于框架的处理模式进行操作。要进行选择,可以设置输入处理块的参数列作为信道(基于帧的)
或作为通道的元素(基于示例)
。
块参数和模拟设置的特定组合所产生的特定任务延迟量在块参考页面的“延迟”部分进行了讨论。在本主题中,使用Upsample块的参考页预测模型的任务延迟:
在MATLAB命令提示符键入ex_upsample_tut1
。
打开Upsample示例T1模型。
在造型选项卡上,单击模型设置。
在解算器窗格中,从类型列表中,选择固定步
。从解算器列表中,选择离散(无连续状态)
。
扩大解算器的细节。选择对待每个离散速率作为单独的任务并点击好吧。
大多数多速率块只有在Simulink多任务模式下才会经历任务延迟。万博1manbetx
双击来自工作区块的信号。的源块参数:来自工作空间的信号打开对话框。
设置块参数如下,然后单击好吧:
信号=1:10 0
采样时间=1/4
每帧样本=4
表单输出后最终数据值由=设置为零
双击上采样块。的功能块参数:上采样打开对话框。
设置块参数如下,然后单击好吧:
L Upsample因素,=4
样本偏移量(0到L-1)=0
输入处理=列作为信道(基于帧的)
率的选择=允许多重速率的处理
初始条件=1
的率的选择参数使得模型多速率,由于输入和输出的帧速率将不相等。
双击数字时钟块。的源块参数:数字时钟打开对话框。
设置采样时间参数0.25
,然后单击好吧。
这与Upsample块输出的样本周期匹配。
运行模型。
模型现在应该类似于下图。
模型将Simulink计时器的当前值(从数字时钟块)前置到每个输出帧。万博1manbetx
在本例中,来自Workspace块的信号每秒生成一个包含四个样本的新帧(T佛=π* 4)。前几个输出帧是:
(t=0) [1 2 3 4] (t=1) [5 6 7 8] (t=2) [9 10 11 12] (t= 3) (13 14 15 16) (t=4) [17 18 19 20]
Upsample块将输入向上采样4倍,在每个输入样本之间插入3个0。速率的变化是由模型中的探测块确定的,从T开始,探测块在帧周期内减小fi= 1到T佛= 0.25。
在MATLAB命令提示符键入挤压(dsp_examples_yout)的
。
仿真结果以矩阵格式显示。结果的最初几个样本,答
, 是:
“延迟和初始条件”,在上采样块的参考页表明当Simulink的是在多任务模式中,块的输入的第一采样出现在输出作为样品万博1manbetx米我L + D + 1,米我输入帧的大小,L是Upsample因素,和D采样偏移。此公式预测,在此实例中,第一输入应显示为输出样品17(即,4×4 + 0 + 1)。
第一列的输出仿真软件时间提供的数字时钟。万博1manbetx每次右侧的四个值是此时输出框中的值。您可以看到,前四个输出帧中的第一个示例继承了Upsample块的值初始条件参数。作为任务延迟的结果,第一个输入值出现在第5个输出帧的第一个样本(att= 1)。这是试样17。
现在尝试在单任务模式下运行模型。
在造型选项卡上,单击模型设置。
在解算器窗格中,从类型列表中,选择固定步
。从解算器列表中,选择离散(不连续状态)
。
清除对待每个离散速率作为单独的任务参数。
运行模型。
该模式现在运行在单任务模式。
在MATLAB命令提示符键入挤压(dsp_examples_yout)的
。
结果的最初几个样本,答
, 是:
Upsample块的引用页面中的“延迟和初始条件”表示该块在Simulink单任务处理模式下对所有多速率操作的延迟为零。万博1manbetx
第一列的输出仿真软件时间提供的数字时钟。万博1manbetx每次右侧的四个值是此时输出框中的值。第一输入值显示为第一输出帧的第一样本(在t= 0)。这是零延迟的条件预期的行为。对于在该例子中使用的特定参数的设置,运行upsample_tut1
单任务模式消除了在多任务模式下运行模型时出现的17个样本延迟。
现在,您已经成功地使用了上采样块的参考页预测模型的任务延迟。