主要内容

为块指定定点属性

定点块参数

具有定点支持的工具箱块通常允许您通过块参数指定定点特征。金宝app通过为这些定点参数指定数据类型和缩放信息,您可以更接近地模拟目标硬件。

请注意

浮点继承优先于本节讨论的设置。当块具有浮点输入时,所有块数据类型都与输入匹配。

上可以找到大多数定点参数数据类型工具箱块面板。下图显示了一个典型的数据类型窗格。

所有具有定点功能的工具箱块都共享一组公共参数,但是每个块可以拥有这些定点参数的不同子集。下表提供了最常见的定点块参数的概述。

定点数据类型参数 描述

舍入模式

指定当指定的数据类型和缩放不能精确表示定点计算的结果时,块使用的舍入模式。

看到舍入模式以获取有关可用选项的更多信息。

使整数溢出饱和

当选择此参数时,块将使其定点操作的结果饱和。清除此参数时,块将包装其定点操作的结果。

有关饱和和包装的详细信息,请参见溢出处理对于定点运算。

中间产品

指定定点块的中间产品的数据类型和缩放比例。将乘法结果反馈给乘数器输入的块使用中间乘积数据类型。

请参阅特定块的参考页面,以了解该块的中间产品数据类型。

产品输出

为必须计算乘法结果的定点块指定乘积输出的数据类型和缩放比例。

请参阅特定块的参考页面,以了解该块的产品输出数据类型。对于复数-复数乘法,乘法结果是累加器数据类型。看到乘法数据类型有关工具箱软件中复杂不动点乘法的详细信息。

蓄电池

为定点块指定累加器(sum)的数据类型和缩放比例,定点块必须保存求和结果以供进一步计算。大多数这样的块在执行添加操作(求和)之前转换为累加器数据类型。

有关该块的累加器数据类型的详细信息,请参阅特定块的参考页面。

输出

指定块的输出数据类型和缩放。

使用数据类型助手

数据类型助理是否提供交互式图形工具数据类型面板的一些定点设计器™块。

要了解更多关于使用数据类型助理要帮助您指定块数据类型参数,请参见使用数据类型助手指定数据类型(金宝app模型)

检查信号范围

一些定点设计器块具有最低最大的参数。数据类型窗格。当定点数据类型具有这些参数时,您可以使用它们来指定适当的最小值和最大值,以便进行范围检查。

要了解如何指定信号范围和启用信号范围检查,请参见指定信号范围(金宝app模型)

指定系统级别设置

您可以使用定点工具在系统或子系统级别上监视和控制定点设计器块的定点设置。有关更多信息,请参见定点的工具(定点设计师)

日志记录

定点工具记录定点设计器块的溢出、饱和度以及模拟最小值和最大值。时,定点工具不会记录溢出和饱和度数据溢出诊断>数据完整性,将“配置参数”对话框的参数栏设置为没有一个

自动定量

可以使用“定点工具”自动缩放功能设置工具箱定点数据类型的缩放。

数据类型覆盖

工具箱块服从使用本地设置,模式数据类型覆盖参数在定点工具。的扩大两倍mode也支持工具箱源和字金宝app节变换块,以及一些算术块,如Difference和Normalization。

缩放双精度是一种双精度数据类型,它保留定点缩放信息。使用数据类型覆盖,可以将定点数据类型转换为缩放的双精度类型。然后可以进行模拟,以确定系统的理想浮点行为。收集这些信息后,可以关闭数据类型覆盖以返回定点数据类型,并且数量仍然具有其原始缩放信息,因为它保存在缩放后的双数据类型中。

通过内部规则继承

为模型中的定点参数选择适当的单词长度和缩放可能是一项挑战。来帮助你,安通过内部规则继承选项通常可用于定点块数据类型参数,例如蓄电池产品输出信号。以下部分描述在选择时如何为您选择单词和分数长度通过内部规则继承对于工具箱软件中的定点块数据类型参数:

请注意

在以下各节的方程中,=字长和FL=分数长度。

累加器数据类型内部规则

累加器数据类型的内部规则首先计算理想的、全精度的结果。在哪里N是加数的个数:

W l d e 一个 l 一个 c c u u l 一个 t o r W l n p u t t o 一个 c c u u l 一个 t o r + 地板上 日志 2 N 1 + 1

F l d e 一个 l 一个 c c u u l 一个 t o r F l n p u t t o 一个 c c u u l 一个 t o r

例如,考虑对长度为6且数据类型为sfix10_En8的向量的所有元素求和。理想的、全精度的结果是字长为13,分数长度为8。

累加器可以是实数,也可以是复数。上述方程用于累加器的实部和虚部。对于任何计算,在计算出全精度结果之后,由内部规则设置的最终单词和分数长度受到您的特定硬件的影响。看到硬件实现窗格对内部规则的影响了解更多信息。

产品数据类型的内部规则

产品数据类型的内部规则首先计算理想的、全精度的结果:

W l d e 一个 l p r o d u c t W l n p u t 1 + W l n p u t 2

F l d e 一个 l p r o d u c t F l n p u t 1 + F l n p u t 2

例如,将长度为2且数据类型为sfix10_En8的实向量的元素相乘。理想的全精度结果是字长为20,分数长度为16。

对于实数-复数乘法,结果的复数部分和实数部分都使用理想的字长和分数长度。对于复-复乘法,将理想字长和分数长度用于部分乘积,并将上述累加器数据类型的内部规则用于最终和。下载188bet金宝搏对于任何计算,在计算出全精度结果之后,由内部规则设置的最终单词和分数长度受到您的特定硬件的影响。看到硬件实现窗格对内部规则的影响了解更多信息。

输出数据类型的内部规则

一些工具箱块有一个通过内部规则继承可用于块输出的选项。在这些情况下使用的内部规则是特定于块的,并且在块参考页面中列出了公式。

与累加器和产品数据类型一样,由内部规则设置的最终输出字和分数长度受到您的特定硬件的影响,如硬件实现窗格对内部规则的影响

硬件实现窗格对内部规则的影响

内部规则选择适合您的硬件的单词长度和分数长度。要使用内部规则获得最佳结果,您必须指定在上使用的硬件类型硬件实现窗格中的“配置参数”对话框。若要打开此对话框,请单击建模>模型设置在Simuli金宝appnk中®将来发布。

ASIC / FPGA。在一个ASIC/FPGA目标上,采用了理想的、全精度的字长和由内部规则计算的分数长度。如果计算出的理想字长大于允许的最大字长,则会收到一个错误。

其他的目标。对于除ASIC/FPGA以外的所有目标,由内部规则计算的理想的全精度字长四舍五入到目标的下一个可用字长。使用计算出的理想分数长度,保留最低有效位。

如果计算出的产品数据类型的理想字长大于目标上的最大字长,则会收到一个错误。如果累加器或输出数据类型计算出的理想字长大于目标上的最大字长,则使用最大的目标字长。

Simulink和工具箱软件在任何目标上允许的最大字长是128位。金宝app

内部规则示例

下面的部分展示了内部规则如何与控件交互的示例硬件实现计算窗格累加器数据类型产品数据类型

Accumulator数据类型

打开ex_internalRule_accumExp模型。

区别块,蓄电池参数设置为继承:通过内部规则继承,和输出参数设置为继承:与累加器相同。因此,您可以在模型的输出信号上看到由内部规则计算的累加器数据类型。

在前面的模型中,设备类型的参数。硬件实现,将“配置参数”对话框的参数栏设置为ASIC / FPGA。因此,内部规则使用的累加器数据类型是理想的、全精度的结果。

计算模型中每个Difference块的全精度字长。

计算全精度分数长度,这是相同的每个矩阵求和块在这个例子中:

现在改变设备类型的参数。硬件实现的“配置参数”对话框中32位嵌入式处理器,修改如下图所示参数。

正如您在对话框中看到的那样,该设备有8位、16位和32位字长可用。因此,不能使用内部规则计算出的理想字长10,17,128位。相反,内部规则在每种情况下使用下一个最大可用字长。如果您重新运行模型,就可以看到这一点,如下图所示。

产品数据类型

打开ex_internalRule_prodExp模型。

数组向量相乘块,产品输出参数设置为继承:通过内部规则继承,和输出参数设置为继承:与产品输出相同。因此,您可以在模型的输出信号上看到由内部规则计算的产品输出数据类型。的设置蓄电池参数无关紧要,因为本例使用实值。

对于前面的模型,设备类型的参数。硬件实现,将“配置参数”对话框的参数栏设置为ASIC / FPGA。因此,内部规则使用的产品数据类型是理想的、全精度的结果。

计算模型中每个Array-Vector Multiply块的全精度字长。

计算全精度分数长度,这与本例中的每个数组-向量乘法块相同。

现在改变设备类型的参数。硬件实现的“配置参数”对话框中32位嵌入式处理器,如下图所示。

正如您在对话框中看到的那样,该设备有8位、16位和32位字长可用。因此,不能使用内部规则计算出的12位和31位的理想字长。相反,内部规则在每种情况下使用下一个最大可用字长。如果您重新运行模型,就可以看到这一点,如下图所示。

指定定点块的数据类型

中的定点块选择适当的数据类型ex_fixedpoint_tut模型:

准备模型

打开ex_fixedpoint_tut模型。

该模型使用Cumulative Sum块对来自定点源子系统的输入求和。定点信号源子系统输出两种数据类型不同的信号:

  • Signed源的字长度为16位,分数长度为15位。

  • 无符号源的字长度为16位,分数长度为16位。

运行模型以检查溢出。MATLAB在命令行中显示以下警告:

警告:发生溢出。这是'ex_fixedpoint_tut/Signed Cumulative Sum'。警告:发生溢出。这是'ex_fixedpoint_tut/Unsigned Cumulative Sum'

根据这些警告,在两个Cumulative Sum块中都会发生溢出。

要研究此模型中的溢出,请使用定点工具。您可以通过选择打开定点工具工具>定点>定点的工具从模型菜单中。打开模型中所有块的日志记录定点测量方式参数最小值、最大值和溢出

现在您已经打开了日志记录,通过单击Simulation按钮重新运行模型。

模拟结果显示在中心的表格中内容面板中的定点工具。回顾以下专栏:

  • 名字:提供每个信号的名称,格式如下:子系统名称/块名称:信号名称

  • SimDT:每个记录信号的模拟数据类型。

  • SpecifiedDT:在块对话框中为每个信号指定的数据类型。

  • SimMin:每个记录信号在模拟过程中获得的最小可表示值。

  • SimMax:每个记录信号在模拟过程中获得的最大可表示值。

  • OverflowWraps:模拟过程中发生溢出的次数。

你也可以看到SimMinSimMaxAccumulator数据类型的取值范围为0到0.9997。记录的结果表明,在模拟期间,有8,192个溢出被包装在Signed Cumulative Sum块的Accumulator数据类型中。类似地,Unsigned Cumulative Sum块的Accumulator数据类型在模拟期间有16,383个溢出。

要获取关于每种数据类型的更多信息,请在内容窗格,并单击显示所选结果的详细信息按钮。

假设目标硬件支持32位整数,并将两个Cumulative S金宝appum块中的Accumulator字长设置为32。为此,请执行以下步骤:

  1. 右键单击Signed Cumulative Sum:累加器在“定点工具”窗格中选择模型中的高亮块

  2. 在模型中双击块,然后选择数据类型窗格。打开数据类型助理通过单击Accumulator数据类型行中的Assistant按钮来获取Accumulator。设置模式不动点。要查看当前指定数据类型的可表示范围,请单击定点的细节链接。该工具显示当前数据类型的可表示最大值和可表示最小值。

改变字长到32,然后单击刷新的细节按钮定点的细节节查看更新后的可表示范围。的值字长参数,数据类型编辑框自动更新。

点击好吧以保存更改并关闭该窗口。

设置Unsigned Cumulative Sum块的Accumulator数据类型的字长为32位。你可以用以下两种方法之一:

  • 输入数据类型fixdt([], 32岁,0)直接进入数据类型编辑框,用于设置Accumulator数据类型参数。

  • 执行与将Signed Cumulative Sum块的Accumulator数据类型的字长设置为32位相同的步骤。

若要验证字长更改并检查溢出,请重新运行模型。要这样做,请单击模拟按钮。

内容窗格的更新,您可以看到在最近的模拟中没有发生溢出。但是,您也可以看到SimMinSimMax取值范围为0 ~ 0。发生这种下溢是因为Accumulator数据类型的分数长度太小。的SpecifiedDT不能表示数据值的精度。以下部分将讨论如何查找浮点基准并使用定点工具来建议分数长度。

使用数据类型覆盖查找浮点基准

数据类型覆盖定点工具的特性允许您用浮点类型覆盖模型中指定的数据类型。运行你的模型覆盖模式为您提供了一个参考范围,以帮助您为定点数据类型选择适当的分数长度。为此,请执行以下步骤:

  1. 打开定点工具并设置数据类型覆盖

  2. 控件运行您的模型运行模拟并存储活动结果按钮。

  3. 检查结果内容面板中的定点工具。因为你输入了模型覆盖模式,你得到一个准确的,理想的模拟最小值和最大值的表示。这些值出现在SimMinSimMax参数。

  4. 现在您已经有了模拟最小值和最大值的准确参考表示,您可以更容易地选择适当的分数长度。在做出这些选择之前,保存活动结果以供参考,以便将其用作浮点基准。为此,选择结果>将活动结果移动到引用从定点工具菜单中选择。中显示的状态运行列更改为活跃的参考对于模型中的所有信号。

使用定点工具建议分数长度

现在你有了你的重写保存为浮点引用的结果,您就可以提出分数长度。

  1. 要为数据类型建议分数长度,必须有一组活跃的结果可在定点工具。要生成一组活动的结果,只需重新运行模型。该工具现在显示活跃的结果和参考每个信号的结果。

  2. 选择如果设计最小/最大不可用,则使用模拟最小/最大复选框。您没有为该模型中的数据类型指定任何设计最小值或最大值。因此,该工具使用记录的信息来计算和建议分数长度。有关指定设计最小值和最大值的信息,请参见指定信号范围(金宝app模型)

  3. 单击建议分数长度按钮()。控件中填充建议的数据类型ProposedDT内容窗格。相应的建议最小值和最大值显示在ProposedMinProposedMax列。

检查结果并接受建议的缩放

在接受定点工具建议的分数长度之前,查看该数据类型的详细信息非常重要。这样做可以让您看到建议的数据类型可以表示多少数据。要检查建议的数据类型并接受建议的缩放,请执行以下步骤:

  1. 内容窗格中,您可以看到模型中数据类型的建议分数长度。

    • 有符号和无符号累积和块的Accumulator数据类型的建议分数长度都是17位。

    • 要获取有关特定数据类型的拟议缩放的详细信息,请突出显示数据类型内容面板中的定点工具。

    • 打开突出显示的数据类型的“自动缩放信息”窗口显示所选结果的自动缩放信息按钮()。

  2. 当“自动缩放信息”窗口打开时,检查价值建议可代表百分比的列模拟最小模拟最大参数。您可以看到,建议的数据类型可以表示模拟数据范围的100%。

  3. 中的复选框,以接受建议的数据类型接受要保留其建议扩展的每个数据类型的列。然后,单击应用可接受的分数长度按钮()。该工具更新块对话框上的指定数据类型SpecifiedDT列中内容窗格。

  4. 要验证新接受的缩放,请设置数据类型覆盖参数返回到使用本地设置,并运行模型。看着内容面板中,您可以看到以下详细信息:

    • SimMinSimMax的值活跃的运行matchSimMinSimMax来自浮点数的值参考运行。

    • 不再有任何溢出。

    • SimDT不匹配SpecifiedDT对于任一Cumulative Sum块的Accumulator数据类型。出现这种差异是因为Cumulative Sum块总是继承其Signedness从输入信号和只允许您指定aSignedness汽车。因此,SpecifiedDT对于这两种Accumulator数据类型都是fixdt([], 32岁,17)。但是,由于Signed Cumulative Sum块具有带符号的输入信号,因此SimDTfor该块的Accumulator参数也带有符号(fixdt(1, 32岁,17))。类似地,SimDTUnsigned Cumulative Sum块的Accumulator参数继承其Signedness从它的输入信号,因此是无符号的(fixdt(0, 32岁,17))。