主要内容

优化生成的代码与模型顾问

您可以使用仿真软件金宝app®模型顾问帮助您配置您的定点模型实现更高效的设计和优化生成的代码。使用模型顾问检查定点模型:

  1. 建模选项卡的你想要的模型分析,单击模型的顾问

  2. 在系统中选择器,选择系统分析。

  3. 在模型中顾问左窗格,扩大通过产品节点,然后嵌入式编码器节点。

  4. 定点代码生成,最重要的复选框来选择确定产生昂贵的定点和饱和度的代码块,识别可疑定点操作,确定生成贵舍入的代码块,检查硬件实现

    启用所有模型顾问检查与选中的节点,选中复选框的文件夹包含检查。在我们的例子中,选择嵌入式编码器复选框。

  5. 点击运行检查。任何技巧提高你的效率定点模型出现在模型顾问窗口。

以下章节将讨论定点相关检查和sub-checks发现模型中的顾问。这些部分解释检查,讨论它们的重要性在定点代码生成,并提供建议调整优化模型生成的代码。

确定产生昂贵的定点和饱和度的代码块

识别和块可疑定点操作

  • 当输入的范围总和块超过输出范围,发生错误。你可以得到任何加法或减法应用程序需要插入数据类型转换块之前和/或之后总和块。

  • 当一个总和块有一个输入和一个斜率调整因素,不等于斜率输出的调整因素,不匹配的要求总和块执行乘法操作每次输入转化为输出的数据类型和扩展。可以删除不匹配的时候,通过改变比例的输出或输入。

  • 当净之和总和块的输入偏差不等于输出的偏差,生成的代码包含一个额外的加法或减法指令正确占净偏差调整。改变输出比例的偏差会使净零偏差调整和消除需要额外的操作。

确定最小最大块可疑定点操作

  • 的输入和输出极大极小块有不同的数据类型,需要一个转换操作每次块执行。模型是更高效的使用相同的数据类型。

  • 当输入的数据类型和扩展的极大极小块不匹配的数据类型和比例输出,执行相关操作之前需要转换。这可能导致一系列错误铸造时,或每次执行转换精度的损失。改变输入或输出的扩展生成更高效的代码。

  • 当输入的极大极小块有不同坡比输出调整因素,极大极小块操作需要乘以每次执行转换的输入输出的数据类型和扩展。你可以纠正不匹配通过改变扩展的输入或输出。

确定离散集成块可疑定点操作

  • 当初始条件离散时间积分器块是用来初始化状态和输出,输出方程生成过多的代码和一个额外的全局变量是必需的。建议您设置功能块参数>初始条件设置参数状态(最有效)

确定为可疑的定点操作比较恒定的块

  • 如果输入的数据类型比较为零块不能完全代表零,输入信号相比,是最接近可表示的值为零,导致参数溢出。为了避免这种参数溢出,选择一个输入数据类型可以表示为零。

  • 如果恒定值参数的比较恒定的超出了范围,输入数据类型可以表示输入信号相比,是最接近可表示的值不变。这导致参数溢出。为了避免这种参数溢出,选择一个输入数据类型可以表示恒定值,或改变恒定值一个值,可以通过输入数据类型。

确定可疑的查找表块定点操作

效率的权衡与查找表数据中描述间距对速度的影响,错误,和内存使用。基于这些权衡,模型顾问标识块哪里有潜力提高效率,如:

  • 查找表输入数据不均匀间隔的。

  • 查找表输入数据均匀间隔的量化,但它是非常接近是等间距的。

  • 查找表输入数据是均匀间隔的,但间距不是2的幂。

查找表优化的更多信息,见查找表的优化

检查设置优化和硬件实现

  • 整数除法生成的代码包含保护算术异常如除零,INT_MIN / 1和LONG_MIN / 1。如果你构建的模型使得异常触发输入组合到一个部门操作,生成的保护代码作为部门操作的一部分是多余的。

  • 索引搜索方法等间隔点需要一个部门操作,可以计算昂贵。

识别模块将调用净斜率计算

当一个定点斜率的变化不是一个两个,净斜率计算是必要的。通常情况下,净斜率计算使用整数乘法实现变化紧随其后。在一些情况下,另一个整数除法的实现只需要通过一个常数。的条件之一是,净斜率可以很准确地表示为一个整数的倒数。当这个条件满足时,生产部门实现更精确的数值行为。根据您的编译器和嵌入式硬件,实现比乘法和变化可能更可取的实现。生成的代码可能会更有效的在罗大小或模型执行的大小。

模型顾问提醒你:

  • 你设置使用部门定点净斜率计算优化参数“上”,但您的模型配置不兼容这个选择。

  • 模型配置适合使用部门来处理净斜率计算,但您没有设置使用部门定点净斜率计算优化参数“上”

有关更多信息,请参见净斜率计算

确定产品块,效率较低

乘法和除法,一块执行的数量可以在精度和效率产生重大影响。模型顾问检测到一些,但不是全部,重新安排操作可以提高精度的情况下,效率,或两者兼而有之。

这样的一个情况是,当计算使用多个部门操作计算。从数值分析领域的一般指导方针是先将所有分母项相乘,然后做一个且只有一个部门。这通常提高准确性和速度在浮点和定点尤其如此。这可以通过层叠在仿真软件完成金宝app产品块。注意,多个部门分布在一系列的块模型检测到的顾问。

另一种情况是当一个单一产品块配置多个乘法或除法运算。这是支持的,但如金宝app果输出数据类型是整数或定点,然后更好的结果很可能如果这个操作是跨越几个街区每个做一个乘法或除法。使用几个街区允许用户控制中间使用的数据类型和比例计算。的数据类型选择中间的计算精度影响,错误,范围和效率。

检查昂贵饱和代码

设置浸透在整数溢出参数可以生产条件检查您的应用程序可能不需要的代码。

检查您的应用程序是否需要设置块的参数>信号的属性>浸透在整数溢出。否则,明确该参数为最有效的实现在生成的代码块。

识别可疑定点操作

这张支票识别生成多字块操作,繁琐的乘法和除法操作,昂贵的转换代码,在查找表块低效率,比较昂贵的代码。

检查多字操作

当一个操作的结果在一个数据类型大于最大的字大小的处理器,生成的代码包含多字操作。多字操作可以在硬件效率低下。为了防止多字操作,调整输入的单词长度操作,这样他们不超过最大的字大小的处理器。更多信息在生成的代码控制多字的操作,明白了定点多字操作生成的代码

检查昂贵的乘法运算的代码

  • 针对嵌入式处理器论述了嵌入式处理器的能力和局限性。设计规则建议乘操作输入单词长度不应大于基整数类型的处理器。乘法与较大的单词长度总是可以在软件处理,但这种方法需要更多的代码和慢得多。模型顾问标识块不良软件乘法是必需的。目视检查生成的代码,包括生成乘法效用函数,将明确这些操作的成本。强烈建议你调整模型来避免这些操作。

  • 算术运算规则讨论了定点乘法和除法的实现细节。显著增加的复杂性与非零偏差发生在信号参与乘法和除法。强烈建议你更改消除这些复杂操作的必要性。需要额外的步骤来实现乘法。插入一个数据类型转换块前后块做乘法的允许偏差被删除,允许用户控制数据类型和扩展为中级水平的计算。在许多情况下,数据类型转换块可以移动的“边缘”(子)系统。转换只做一次和所有块可以受益于简单偏离的数学。

检查贵部门代码

签署了整数除法的舍入行为不完全指定的C语言标准。因此,生成的代码太大分工提供bit-true协议仿真和代码生成。为了避免太大整数除法生成的代码,在配置参数对话框,硬件实现窗格中,设置带符号整数除法轮参数的推荐值。

识别查询块断点间距不均匀

效率的权衡与查找表数据中描述间距对速度的影响,错误,和内存使用。基于这些权衡,模型顾问标识块哪里有潜力提高效率,和问题时一个警告:

  • 查找表输入数据不均匀间隔的。

  • 查找表输入数据均匀间隔的量化,但它是非常接近是等间距的。

  • 查找表输入数据是均匀间隔的,但间距不是2的幂。

检查昂贵pre-lookup部门

对于一个Prelookup一天的查找表块,索引搜索方法等间距的点。断点数据没有2的幂的间距。

如果nontunable断点数据,建议您调整数据,甚至,2的幂间距。否则,在块参数对话框中,指定一个不同的索引搜索方法为了避免计算密集型部门操作。

检查昂贵的数据类型转换

当一个块被配置为将生成一个数据类型的低效的代码转换,该模型顾问生成警告,并建议如何使你的模型更有效。

检查定点与预定的结果

当您选择isInf,isNaN,或isFinite的操作关系操作符块,块切换到一个输入模式。在这种模式下,如果输入的数据类型是固定的点,布尔,或一个内置的整数,输出是假的isInfisNaN,适用于isFinite。这可能导致死代码将被消除金宝app仿真软件编码器™

检查昂贵的二进制比较操作

  • 当输入的数据类型关系操作符块是不一样的,需要转换操作每次块执行。如果其中一个输入是不变的,那么改变数据类型和比例不变的输入匹配的其他改进模型的效率。

  • 当输入的关系操作符块有不同的范围,铸造时将会有一系列的错误,每次执行转换精度的损失。你可以插入数据类型转换块前关系操作符块都输入转换为一种常见的数据类型,有足够的范围和精度来表示每个输入。

  • 当输入的关系操作符块有不同斜率的调整因素,关系操作符块需要执行乘法操作每次输入正面较小范围转化为输入的数据类型和扩展更积极的范围。额外的乘法需要额外的代码,执行的速度减慢,通常引入了额外的精度损失。通过调整输入的比例,可以消除不匹配的斜坡上。

检查比较昂贵的代码

当配置您的模型代码生成的代码包含昂贵的比较,该模型顾问生成一个警告。

检查昂贵的定点数据类型生成的代码

当设计包含整数或定点单词长度,不存在在你的目标硬件,生成的代码可以包含额外的饱和代码,转移和多字操作。通过改变数据类型,支持你的目标硬件,可以提高生成的代码的效率。金宝app模型顾问旗帜这些昂贵的数据类型在您的模型中。例如,模型顾问将国旗定点数据类型的字长17如果目标硬件是32位的。

确定生成贵舍入的代码块

这张支票舍入优化可用时发出警告。检查产生昂贵的舍入的代码块,该模型顾问执行以下sub-checks:

  • 检查贵舍入操作在乘法和除法

  • 检查优化和硬件实现设置(查找块)

  • 检查贵舍入的数据类型转换

  • 检查模型中昂贵的舍入模式

传统的手写代码,特别是对于控制应用程序,几乎总是使用“不努力”舍入。例如,对于无符号整数和二进制补码签署了整数,将权利和位相当于四舍五入丢在地板上。得到结果与、或比你期望从传统的手写代码,使用最简单的舍入模式。一般来说最简单的模式提供了最低成本解决方案没有溢出。如果最简单的方式是不可用的,圆的地板上。

主要的例外是带符号整数的舍入行为。C标准的叶子这舍入行为不明,但对于大多数生产目标“不努力”的模式来为零。无符号的除法,一切都非负,所以舍入地板和舍入为零是相同的。改善舍入效率,集模型配置参数> > >设备硬件实现细节签署整数除法轮使用您的生产目标所使用的模式。

使用整数舍入模式参数模型的模拟块的舍入行为所使用的C编译器编译代码生成自模型。此设置出现在信号的属性面板的参数对话框块可以执行签署了整数运算,如产品块。获得最有效的生成的代码,改变整数舍入模式参数块的推荐设置。

有关属性的更多信息时要考虑选择一个舍入模式,明白了选择一种舍入方法