定点优化使用指定最小值和最大值
这个例子展示了如何优化定点在生成的代码中使用指定最小值和最大值的模型。
概述
最大和最小值可以表示环境限制或机械限制,如传感器的输出范围。代码生成软件可以使用这些值来创建更高效的代码通过消除不可到达的代码分支和不必要的效用函数。
注意:您必须确保指定的最小值和最大值是准确的和值得信赖的。否则,可能导致数值优化与仿真不匹配。
优化生成的代码的好处是:
减少了ROM和RAM消费。
提高了算法的执行速度。
开放模式
打开模型fxpdemo_min_max_optimization。
open_system (“fxpdemo_min_max_optimization”);
检查模型
在这个模型中,指定最小值和最大值的值的输入端口上游各定点块。利用这些值,每个定点操作模型中以某种方式进行了优化。
没有生成代码优化
首先,不使用指定的最小值和最大值,这个模型生成代码。双击蓝色按钮。
rtwbuild (“fxpdemo_min_max_optimization”);
# # #开始构建过程:fxpdemo_min_max_optimization # # #成功完成代码生成:fxpdemo_min_max_optimization模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = fxpdemo_min_max_optimization代码生成。代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米29.86秒
检查代码没有优化
打开一个HTML代码生成报告。检查对应的代码块”产品,减少部分长度输出数据类型”。右键单击这个块和选择代码生成>导航代码……。
rtwtrace (' fxpdemo_min_max_optimization /产品降低了分数长度输出数据类型的);
生成的代码是:
而无。着干活= mul_u32_u32_u32_sr10 (rtU。三机一体,rtU.In2);
实现这个定点乘法操作,代码生成软件必须生成一个效用函数mul_u32_u32_u32_sr10
。同时,实现mul_u32_u32_u32_sr10
,它必须生成一个效用函数,mul_wide_u32
。这些功能包括很多行代码,需要几个临时变量。
启用优化
双击黄色按钮打开配置参数对话框。
在这个对话框中,代码生成中,选择优化使用指定最小值和最大值。
set_param (“fxpdemo_min_max_optimization”,“UseSpecifiedMinMax”,“上”);
生成代码的优化
现在重新生成代码使用指定的最小和最大的价值。
双击蓝色按钮。
rtwbuild (“fxpdemo_min_max_optimization”);
# # #开始构建过程:fxpdemo_min_max_optimization # # #成功完成代码生成:fxpdemo_min_max_optimization模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = fxpdemo_min_max_optimization代码生成。生成的代码是过时了。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米12.034秒
检查优化的代码
右键单击块”产品,减少部分长度输出数据类型”,选择代码生成>导航代码……。
rtwtrace (' fxpdemo_min_max_optimization /产品降低了分数长度输出数据类型的);
生成的代码是:
而无。着干活= rtU。In1 * rtU。In2 > > 10;
使用指定的最大和最小值,代码生成软件确定它可以安全地实现降低分数长度在输出正确的转变,并且不产生效用函数。
检查其他操作
检查其他业务生成的代码,看看代码生成软件使用指定的最小和最大值。现在的代码生成软件实现每个定点操作简单的C操作和消除不必要的辅助函数和代码分支。