主要内容

将浮点模型转换为固定点

在此示例中,了解如何:

  • 将浮点系统转换为等效的定点表示。

    定点工具可自动执行在系统中指定固定点数据类型的任务。在此示例中,该工具收集模型对象的范围数据,无论是从设计最小和最大值,都是明确指定信号和参数的最大值,或从模拟期间发生的记录的最小值和最大值。基于这些值,该工具提出了最大化精度并覆盖范围的固定点数据类型。该工具允许您查看数据类型提案,然后选择性地将它们应用于模型中的对象。

  • 用查找表近似替换不支持转换的块。万博1manbetx

    在转换的准备阶段期间,定点工具通过将这些块放置在包围的子系统内,隔离任何不支持定点转换的块万博1manbetx数据类型转换块。可以使用查找表优化器将不支持的块替换为查找表近似值。万博1manbetx

设置模型

打开模型并将其配置为定点转换。

Open_System('ex_fixed_pint_workflow')

该模型由源代码组成,您要转换为固定点的控制器子系统,以及可视化子系统输出的范围。以这种方式配置模型可帮助您确定系统上的固定点数据类型的效果。使用这种方法,您只转换子系统,因为这是感兴趣的系统。不需要将源或范围转换为固定点。

此配置允许您修改输入并为多个刺激收集模拟数据。然后,您可以使用不同的输入范围检查子系统的行为,并扩展定点数据类型,以提供最大的精度,同时容纳完整的模拟范围。

要比较转换前后的行为,请在设计下的系统输出处启用信号日志记录。

ph = get_param (“ex_fixed_point_workflow /控制器子系统”,'porthandles');set_param(ph.outport(1),'数据记录',“上”) set_param (ph.Outport (2),'数据记录',“上”)

准备转换系统

要将模型转换为固定点,请使用固定点工具。

  1. 应用程序画廊的ex_fixed_point_workflow模型,选择定点的工具

  2. 在固定点工具中新的工作流程,选择迭代定点转换

  3. 设计中的系统(SUD),选择要转换为固定点的子系统。在此示例中,选择控制器子系统

  4. 范围收集模式中,选择仿真范围作为范围收集方法。

  5. 模拟输入,您可以指定万博1manbetxsimulink.simulationInpul.在完全运行范围内锻炼设计的对象。在此示例中,设置模拟输入使用默认模型输入

  6. 要指定系统的公差,请参见下表信号公差,为启用信号记录指定模型中任何信号的公差。有关更多信息,请参见指定信号公差

    设置相对公差(rel tol.)您记录到15%的信号。

  7. 在ToolStrip中,单击准备。定点工具检查设计中的系统是否与转换过程兼容,并报告模型中发现的任何问题。在可能的情况下,定点工具会自动更改不兼容的设置。有关更多信息,请参见使用定点工具准备一个转换系统

    设计下的子系统包含一个exp.块,不支持固定点数据类型。万博1manbetx固定点工具围绕此块数据类型转换块并将其放在子系统内。完成将子系统的其余部分转换为固定点时,可以使用查找表近似值替换子系统经验值功能。

收集范围

默认情况下,定点工具使用模型上的当前数据类型覆盖集。对于本例,为范围收集运行以双精度覆盖模型中的数据类型。

  1. 展开收集范围按钮箭头和选择双精度

  2. 点击收集范围模拟模型。

定点工具使用double覆盖模型中的数据类型,并收集模拟过程中出现的模型中每个对象的最小值和最大值。定点工具将此范围信息存储在一个标题为的运行中BaselineRun。您可以查看收集的范围辛辣SimMax电子表格的列,或者结果细节窗格。

仿真数据的可视化窗格提供了模拟结果的另一个视图。选择探索选项卡的附加工具,用于排序和筛选电子表格和可视化中的数据。

转换数据类型

根据运行中存储的双精度模拟结果,使用定点工具为适当配置的块提出定点数据类型BaselineRun

  1. 转换单击工具条的提出数据类型按钮。

    定点工具分析所有定点块的缩放锁定输出数据类型设置根据固定点工具的更改未选择参数。

    定点工具使用默认的建议设置来建议具有16位字长和最佳精度分数长度的数据类型,并在电子表格中更新结果。

    您可以通过单击来编辑提案设置设置按钮转换建议类型之前的工具条部分。

  2. 控件中显示建议的数据类型ProposedDT电子表格中的列。

    默认情况下,它选择接受选中建议的数据类型与对象当前数据类型不同的每个结果的复选框。如果应用数据类型,该工具将把这些建议的数据类型应用到设计中的系统。

  3. 检查结果以解决任何问题,并确保您要接受每个结果的建议数据类型。的仿真数据的可视化窗格表示结果分别包含红色或黄色三角形的溢出或溢出。下面流出可以是数值问题的来源,但有时可以安全地忽略。

    定点工具以红色图标指示建议的数据类型与另一类型冲突的结果。在本例中,没有任何结果包含冲突。有关更多信息,请参见检查结果以解决冲突

  4. 查看结果并确保没有问题后,您已准备好将建议的数据类型应用于模型。点击应用数据类型将建议的数据类型写入模型。

    固定点工具将数据类型提案应用于设计下的系统中的块。

验证新设置

接下来,使用新的定点设置再次模拟模型。然后,您使用模拟数据检测器绘图功能将结果与浮点数进行比较BaselineRun使用定点结果运行。

  1. 点击用嵌入式模拟。定点工具使用新的固定点数据类型模拟模型,并将运行信息存储在标题的新运行中嵌入式运输

    之后,固定点工具显示有关记录定点数据的块的信息。的compileddt.运行列显示控制器子系统块使用新的固定点数据类型。

  2. 检查该方面的直方图仿真数据的可视化窗格验证是否没有溢出或饱和度。溢出和饱和度标有红色三角形

  3. 工作流浏览器指示您指定的公差通过的所有信号。

  4. 点击比较结果打开模拟数据检查器。在“模拟数据检查器”中,选择一个记录的信号,以查看固定点模拟行为。

用查找表近似替换不支万博1manbetx持的块

准备转换系统工作流程的步骤,固定点工具放置了exp.块,不支持转换,内部系统内部包围万博1manbetx数据类型转换块。在此步骤中,您可以使用查找表近似替换子系统。

  1. 要获得所有被定点工具解耦的子系统的列表,在命令行输入:

    解耦= DataTypeWorkflow.findDecoupledSubsystems ('ex_fixed_pint_workflow')
    解耦BlockPath = 1×2表ID  __ ____________________________________________________ 1 {' ex_fixed_point_workflow /控制器子系统/ Exp '}

    datatypeworkflow.finddecoupledsubsystems.函数返回包含由固定点工具创建的任何子系统的块路径的表,以隔离不受支持的块。万博1manbetx

  2. 打开查找表优化器。在应用程序画廊,选择查找表优化器

  3. 客观的查找表优化器页面,选择万博1manbetxSimulink模块或子系统。点击下一个

  4. 块的信息,从命令行复制并粘贴到固定点工具创建的子系统的路径。

  5. 点击从模型中收集当前值按钮更新模型图并允许查找表优化器自动收集优化过程所需的信息。点击下一个

  6. 指定在优化中使用的约束。对于此示例,请使用默认值。要创建查找表,请单击优化。点击下一个

  7. 点击替换原始功能。查找表优化器取代了数学函数经验值块与包含查找表近似的新变体子系统。

用查找表近似验证系统的行为

现在设计中的系统已经完全转换,验证系统仍然满足转换前指定的公差。

  1. 在固定点工具中,在验证ToolStrip的一部分,单击用嵌入式模拟

    定点工具模拟模型,现在包含查找表近似,并将结果保存为embeddeddrun_2.

  2. 工作流的浏览器表明,使用查找表近似,具有指定公差的信号通过模型。

相关话题