净斜率计算
处理净斜率计算
定点设计师™软件提供了一个优化参数,使用部门定点净斜率计算,控制软件如何处理净斜率计算。学习如何启用这个优化,明白了使用整数除法来处理净斜率计算。
当一个定点斜率的变化不是一个两个,净斜率计算是必要的。通常情况下,净斜率计算使用整数乘法实现变化紧随其后。在一定条件下,净斜率计算可以使用整数除法或实现合理近似的斜率。的条件之一是,净斜率可以精确地表示为一个有理分式或作为一个整数的倒数。在这种情况下,部门实现了更精确的数值行为。根据您的编译器和嵌入式硬件,实现一个部门可能更可取比乘法和转变的实现。合理近似的生成的代码和/或整数除法的实现可能需要更少的ROM或改善模型执行时间。
何时使用部门定点净斜率计算
这种优化工作如果:
净的斜率可以近似或一小部分的倒数一个整数。
部门更有效率比乘法在目标硬件变化紧随其后。
请注意
定点设计软件不知道目标硬件。选择这个选项之前,确认部门更有效率比乘法转变你的目标硬件上紧随其后。
当不使用部门处理净斜率计算
这种优化不工作如果:
软件不能使用生产执行部门的目标
长
数据类型,因此必须使用多字操作。使用多字部门不会产生代码适合嵌入式目标。因此,不要使用部门处理净边坡计算模型,使用多字操作。如果你的模型包含块使用多字操作,改变这些块的单词长度,以避免这些操作。
净斜率为2的幂或净边坡的合理近似包含除2的幂。
Binary-point-only缩放,净斜率是2的幂,涉及移动二进制定点内词。这种扩展模式已经最小化处理器算术运算的数量。
使用部门来处理净斜率计算
使这种优化:
在配置参数对话框中,设置优化>使用部门定点净斜率计算来
在
,或使用部门进行倒数的整数
有关更多信息,请参见使用部门定点净斜率计算(万博1manbetx模型)。
在硬件实现>生产硬件窗格中,设置带符号整数除法轮配置参数
地板上
或零
适合您的目标硬件。优化不会如果发生带符号整数除法轮参数是未定义的
。请注意
必须设置该参数值适合目标硬件。未能遵守这样做可能导致部门操作的定义硬件实现窗格中,但却不适合目标硬件。
设置整数舍入模式的块,需要净斜率计算(例如,产品,获得,数据类型转换)
简单的
或匹配你的目标硬件的舍入模式。
请注意
您可以使用模型顾问提醒你如果你没有正确地配置您的模型优化。打开模型顾问和运行识别可疑定点操作检查。有关更多信息,请参见识别模块将调用净斜率计算。
提高数值精度的仿真结果合理的近似处理净斜率
这个例子说明了如何设置优化>使用部门定点净斜率计算参数在
提高数值精度。它使用以下模型。
为产品块在这个模型中,
因为没有输入或输出的偏差:
,或
7/11
。因为净斜率可以表示为一个分数值组成的小整数,可以使用在
的设置使用部门定点净斜率计算优化参数是否合适您的模型和硬件配置。有关更多信息,请参见何时使用部门定点净斜率计算。
建立模型和仿真运行:
为常数块
Vb
,设置输出数据类型来fixdt (1, 8, 0.7, 0)
。为常数块风投
,设置输出数据类型来fixdt (1 8 0)
。为产品块,设置输出数据类型来
fixdt(1, 16日,1.1,0)
。设置整数舍入模式来简单的
。设置硬件实现>生产硬件>带符号整数除法轮配置参数
零
。设置优化>使用部门定点净斜率计算来
从
。在你的模型万博1manbetx®模式窗口中,选择模拟>运行。
因为仿真使用乘法随后转向处理净斜率计算,净坡度精度损失发生。这种精度损失导致数值不准确:计算产品
306.9
,而不是308年
,你的期望。请注意
您可以设置定点设计软件提供警报时精度损失发生在定点常数。有关更多信息,请参见净斜率和偏差的精度。
设置优化>使用部门定点净斜率计算来
在
。保存您的模型,模拟了。
使用rational软件实现了净斜率计算近似代替乘法变化紧随其后。计算产品
308年
,你的期望。优化适合这个模型,因为:
净斜率表示的小整数的分数的分子和分母。
的硬件实现>生产硬件>带符号整数除法轮配置参数设置
零
。请注意
这个设置必须匹配你的目标硬件舍入模式。
的整数舍入模式的产品块在模型中设置
简单的
。该模型不使用多字操作。
提高效率与合理的近似处理生成的代码净斜率
这个例子展示了如何设置优化参数优化>使用部门定点净斜率计算来在
提高了生成的代码的效率。
请注意
生成的代码更有效率只有部门更有效率比乘法转变你的目标硬件上紧随其后。
这个示例使用以下模型。
为产品块在这个模型中,
因为没有输入或输出的偏差:
9/10
。
同样的,对数据类型转换块在这个模型中,
9/10
。
因为净斜率可以表示成一个分数,你可以设置优化>使用部门定点净斜率计算优化参数在
如果您的模型和硬件配置是合适的。有关更多信息,请参见何时使用部门定点净斜率计算。
建立模型并生成代码:
为轮廓尺寸块
弗吉尼亚州
,设置数据类型来fixdt (1 8 9/10, 0)
;为轮廓尺寸块Vb
,设置数据类型来int8
。为数据类型转换块,设置整数舍入模式来
简单的
。设置输出数据类型来int16
。为产品块,设置整数舍入模式来
简单的
。设置输出数据类型来int16
。设置硬件实现>生产硬件>带符号整数除法轮配置参数
零
。设置优化>使用部门定点净斜率计算来
从
。从仿真软件模型菜单万博1manbetx,选择代码>C / c++代码>构建模型。
从概念上讲,净斜率计算
9/10
或0.9
:Vc = 0.9 * Va;弗吉尼亚州Vm = 0.9 * * Vb;
生成的代码使用乘法与转变:
%的转换Vc = (int16_T) (Va * 115 > > 7);%的乘法Vm = (int16_T) ((Va * Vb > > 1) * 29491 > > 14);
净的理想值斜率计算
0.9
。在生成的代码中,净斜率计算的近似值29491 > > 15 = 29491/2 ^ 15 = 0.899993896484375
。这个近似介绍数值不准确。例如,使用相同的模型常数输入产生以下结果。在原始模型与输入
弗吉尼亚州
和Vb
,设置优化>使用部门定点净斜率计算参数在
再次,更新图,生成代码。生成的代码现在使用整数除法代替乘法紧随其后的变化:
%的转换Vc = (int16_T) (Va * 9/10);%的乘法Vm = (int16_T) (Va * Vb * 9/10);
在生成的代码中,净价值的斜率计算现在的理想价值
0.9
。使用部门,结果数值准确。在模型常数输入,设置优化>使用部门定点净斜率计算参数
在
和模拟模型。优化适合这个模型,因为:
净斜率表示的小整数的分数的分子和分母。
硬件实现>生产硬件>带符号整数除法轮配置参数设置
零
。请注意
这个设置必须匹配你的目标硬件舍入模式。
为产品和数据类型转换块模型,整数舍入模式被设置为
简单的
。模型不使用多字操作。
使用整数除法来处理净斜率计算
设置优化>使用部门定点净斜率计算参数使用部门进行倒数的整数
触发的情况下优化只净斜率的倒数一个整数。这个设置会导致单个整数除法处理净斜率计算。