主要内容

将浮点模型转换为定点

在这个例子中,学习如何:

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

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

  • 用查找表近似值替换不支持转换的块。金宝app

    在转换的准备阶段,定点工具通过将这些块放置在由其包围的子系统内,隔离不支持定点转换的任何块金宝app数据类型转换块。您可以使用查询表优化器将不支持的块替换为查询表近似值。金宝app

建立模型

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

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. 模拟输入,您可以指定金宝app仿真软件。SimulationInput对象来在其全部操作范围内练习您的设计。在本例中,set模拟输入使用默认的模型输入

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

    设置相对公差(Rel托尔)为您记录的信号的15%。

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

    设计中的子系统包含一个exp.块,它不支持定点数据类型。金宝app定点工具用数据类型转换块并将其放置在子系统内。完成将子系统的其余部分转换为固定点时,可以使用查找表近似值替换子系统经验值函数。

收集范围

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

  1. 扩大收集范围按钮箭头并选择双精度

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

定点工具使用双精度浮点数覆盖模型中的数据类型,并收集模拟期间模型中每个对象的最小值和最大值。定点工具将此范围信息存储在一个标题为的运行中BaselineRun.您可以在列表中查看采集范围SimMinSimMax列,或在结果细节窗格。

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

转换数据类型

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

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

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

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

    的,可以编辑提议设置设置按钮转换在提出类型之前,先对工具条进行分段。

  2. 该工具在ProposedDT列。

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

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

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

  4. 在检查结果并确保没有问题之后,您就可以将建议的数据类型应用到模型中了。点击应用数据类型将建议的数据类型写入模型。

    定点工具将数据类型建议应用于设计中的系统块。

验证新设置

接下来,使用新的定点设置再次模拟模型。然后使用Simulation Data Inspector绘图功能来比较来自浮点数的结果BaselineRun使用定点结果运行。

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

    之后,定点工具将显示关于记录定点数据的块的信息。的CompiledDT列显示Controller子系统块使用新的定点数据类型。

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

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

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

用查找表近似替换不支金宝app持的块

准备转换系统工作流程的步骤,固定点工具放置了exp.块,该块不支持转换,它位于包围的子系统内金宝app部数据类型转换块。在这一步中,您将用一个查找表近似值替换子系统。

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

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

    DataTypeWorkflow.findDecoupledSubsystems函数返回一个表,其中包含由定点工具创建的用于隔离不支持块的任何子系统的块路径。金宝app

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

  3. 客观的查找表优化器页面,选择金宝appSimulink模块或子系统.点击下一个

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

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

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

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

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

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

  1. 在固定点工具中,在验证部分的工具条,单击使用嵌入式类型进行模拟

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

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

相关话题