主要内容

为块指定固定点属性

定点块参数

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

笔记

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

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

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

定点数据类型参数 描述

舍入模式

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

舍入模式有关可用选项的详细信息。

使整数溢出饱和

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

有关饱和和包裹的详细信息,请参见溢出处理对于定点操作。

中间产品

指定定点块的中间产品的数据类型和伸缩性。将乘法结果返回给乘法器输入的块使用中间产品数据类型。

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

产品输出

指定必须计算乘法结果的固定点块的产品输出的数据类型和缩放。

请参阅特定块的参考页,以了解该块的产品输出数据类型。对于复数-复数乘法,乘法结果以累加器数据类型为单位。看乘法的数据类型有关工具箱软件中复杂定点乘法的更多信息。

蓄电池

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

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

输出

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

使用数据类型助手

数据类型的助理是一个可提供的交互式图形工具数据类型某些定点工具箱块的窗格。

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

检查信号范围

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

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

指定系统级设置

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

记录

定点工具记录定点工具箱块的溢出、饱和和模拟最小值和最大值。定点工具不会日志溢出和饱和时数据溢出线诊断>数据完整性窗格,设置为没有一个

自动定量

您可以使用定点工具自动伸缩功能来设置工具箱定点数据类型的伸缩。

数据类型覆盖

工具箱块遵守使用本地设置,模式的数据类型覆盖在固定点工具中的参数。这扩大两倍模式也支持工具箱源代码和字金宝app节变换块,以及一些算术块,如差异和标准化。

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

通过内部规则继承

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

笔记

在以下部分中的等式中,=字长和fl=分数长度。

累加器数据类型的内部规则

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

W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = W. L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R. + 地板上 日志 2 N 1 + 1

F L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = F L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R.

例如,考虑将长度为6、数据类型为sfix10_En8的vector的所有元素相加。理想的、完全精确的结果是字长度为13,部分长度为8。

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

产品数据类型的内部规则

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

W. L. 一世 D. E. 一种 L. P. R. O. D. C T. = W. L. 一世 N P. T. 1 + W. L. 一世 N P. T. 2

F L. 一世 D. E. 一种 L. P. R. O. D. C T. = F L. 一世 N P. T. 1 + F L. 一世 N P. T. 2

例如,将长度为2的实向量的元素与数据类型为sfix10_En8的元素相乘。理想的、完全精确的结果是单词长度为20,部分长度为16。

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

输出数据类型的内部规则

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

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

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

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

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

其他的目标。对于除ASIC / FPGA以外的所有目标,由内部规则计算的理想全精度字长度舍入到目标的下一个可用字长度上。使用计算的理想分数长度,保持最小的比特。

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

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

内部规则的例子

以下部分显示内部规则如何与之交互的示例硬件实现窗格来计算蓄电池数据类型产品数据类型

蓄电池数据类型。考虑下面的模型ex_internalrule_accumexp.

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

在前面的模型中设备类型参数硬件实现窗格,设置为ASIC / FPGA..因此,内部规则使用的累加器数据类型是理想的全精度结果。

计算模型中每个差分块的全精度字长度:

W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = W. L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R. + 地板上 日志 2 N m B. E. R. O. F 一种 C C m L. 一种 T. 一世 O. N S. + 1 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = 9. + 地板上 日志 2 1 + 1 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = 9. + 0. + 1 = 10 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. 1 = W. L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R. 1 + 地板上 日志 2 N m B. E. R. O. F 一种 C C m L. 一种 T. 一世 O. N S. + 1 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. 1 = 16 + 地板上 日志 2 1 + 1 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. 1 = 16 + 0. + 1 = 17 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. 2 = W. L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R. 2 + 地板上 日志 2 N m B. E. R. O. F 一种 C C m L. 一种 T. 一世 O. N S. + 1 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. 2 = 127 + 地板上 日志 2 1 + 1 W. L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. 2 = 127 + 0. + 1 = 128

计算全精度分数长度,这与本例中每个Matrix Sum块相同:

F L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = F L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R. F L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = 4.

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

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

产品数据类型。考虑下面的模型ex_internalRule_prodExp

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

对于前面的模型,则设备类型参数硬件实现窗格,设置为ASIC / FPGA..因此,内部规则使用的产品数据类型是理想的全精度结果。

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

W. L. 一世 D. E. 一种 L. P. R. O. D. C T. = W. L. 一世 N P. T. 一种 + W. L. 一世 N P. T. B. W. L. 一世 D. E. 一种 L. P. R. O. D. C T. = 7. + 5. = 12 W. L. 一世 D. E. 一种 L. P. R. O. D. C T. 1 = W. L. 一世 N P. T. 一种 + W. L. 一世 N P. T. B. W. L. 一世 D. E. 一种 L. P. R. O. D. C T. 1 = 16 + 15 = 31

计算全精度分数长度,在这个例子中,每个数组向量乘法块都是相同的:

F L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = F L. 一世 N P. T. T. O. 一种 C C m L. 一种 T. O. R. F L. 一世 D. E. 一种 L. 一种 C C m L. 一种 T. O. R. = 4.

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

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

指定定点块的数据类型

以下部分向您展示如何使用固定点工具选择固定点块的适当数据类型ex_fixedpoint_tut模型:

准备模型

  1. 通过键入打开模型ex_fixedpoint_tut在MATLAB®命令行。

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

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

    • Unsigned源的字长为16位,其部分长度为16位。

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

    警告:发生溢出。这源自'ex_fixedpoint_tut /签名累积总和'。警告:发生溢出。这源自'ex_fixedpoint_tut / unsigned累积uk'。

    根据这些警告,在两个累积和块中都发生溢出。

  3. 要研究这个模型中的溢出,可以使用定点工具。你可以通过选择打开定点工具工具>定点>固定点工具从模型菜单中。属性,打开模型中所有块的日志记录定点测量模式参数最小值,最大值和溢出

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

  5. 模拟的结果出现在中心的表格中内容固定点工具的窗格。查看以下列:

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

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

    • SpecifiedDT- 每个信号的块对话框上指定的数据类型。

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

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

    • OverflowWraps—模拟过程中包裹的溢出数。

    你还可以看到SimMinSimMax的值范围0..9997.记录结果表明8,192溢出在符号累积和块的累加器数据类型的仿真期间包裹。类似地,在仿真期间,无符号累积和块的累加器数据类型具有16,383溢出的包装。

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

  6. 假设目标硬件支持32位整数,并设置累加和块中的累加字长为金宝app32.为此,请执行以下步骤:

    1. 右键单击有符号累加和:累加器行,然后选择在模型中突出显示块

    2. 双击模型中的块,然后选择数据类型窗格。

    3. 打开数据类型的助理点击“助手”按钮()在“累加器”数据类型行中。

    4. 设置模式固定点.要查看当前指定数据类型的可表示范围,请单击定点的细节链接。该工具显示当前数据类型的可表示的最大值和可表示的最小值。

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

    6. 点击好吧在“块”对话框中保存更改并关闭窗口。

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

      • 输入数据类型fixdt([], 32岁,0)直接进入数据类型编辑累计数据类型参数的框。

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

  7. 要验证文字长度的更改并检查溢出,请重新运行您的模型。为此,请单击模拟按钮的定点工具。

    内容固定点工具更新的窗格,您可以看到最近的模拟中没有发生溢出。但是,你也可以看到SimMinSimMax值的范围从0.0..发生这种下溢是因为累加器数据类型的部分长度太小。这SpecifiedDT不能表示数据值的精度。下面的部分将讨论如何找到一个浮点基准并使用定点工具来提出分数长度。

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

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

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

  2. 点击运行模型运行模拟并存储活动结果按钮。

  3. 的结果内容固定点工具的窗格。因为你跑了模型覆盖模式,您可以获得准确,理想化的模拟最小值和最大值。这些值出现在SimMinSimMax参数。

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

使用固定点工具提出分数长度

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

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

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

  3. 单击提出部分长度按钮().该工具填充了所提出的数据类型ProposedDT列的内容窗格。所提出的相应的最小值和最大值显示在ProposedMinProposedMax列。

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

在接受定点工具提出的分数长度之前,查看数据类型的细节是很重要的。这样做可以让您看到建议的数据类型可以表示多少数据。要检查建议的数据类型并接受建议的伸缩,请执行以下步骤:

  1. 内容固定点工具的窗格,您可以看到模型中数据类型的提议分数长度。

    • 对于有符号和无符号累积和块的累加器数据类型,建议的分数长度为17位。

    • 控件中的数据类型突出显示该数据类型,以获得关于建议的特定数据类型伸缩的更多细节内容固定点工具的窗格。

    • 属性,打开高亮显示的数据类型的自动缩放信息窗口显示选定结果的自动缩放信息按钮().

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

  3. 若要接受建议的数据类型,请选择接受列,用于希望保留其建议伸缩性的每个数据类型。然后,单击应用可接受的分数长度按钮().该工具更新块对话框上的指定数据类型和SpecifiedDT内容窗格。

  4. 要验证新接受的伸缩,请设置数据类型覆盖参数回使用本地设置,并运行模型。看着内容固定点工具的窗格,您可以查看以下详细信息:

    • SimMinSimMax的值活跃的运行匹配SimMinSimMax来自浮点的价值参考运行。

    • 不再有任何溢出。

    • SimDT不符合SpecifiedDT用于累积和块的累加器数据类型。产生这个差异是因为累积和块总是继承它Signedness从输入信号,只允许您指定一个Signedness汽车.因此,SpecifiedDT对于两个累加器数据类型都是Fixdt([],32,17).然而,由于有符号累积和块有一个有符号的输入信号,因此SimDT对于该块的Accumulator参数也是signed (Fixdt(1,32,17)).类似地,SimDT因为Unsigned Cumulative Sum块的Accumulator参数继承了它Signedness,因此为无符号(fixdt(0, 32岁,17)).