主要内容

为块指定定点属性

定点块参数

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

请注意

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

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

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

定点数据类型参数 描述

舍入模式

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

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

饱和整数溢出

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

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

中间产品

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

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

产品输出

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

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

蓄电池

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

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

输出

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

使用数据类型助手

数据类型助手上是否有交互式图形工具数据类型一些定点工具箱块的窗格。

要了解有关使用的更多信息数据类型助手若要帮助指定块数据类型参数,请参见使用数据类型助手指定数据类型(万博1manbetx模型)

检查信号范围

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

要了解如何指定信号范围和启用信号范围检查,请参见指定信号范围(万博1manbetx模型)

指定系统级设置

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

日志记录

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

自动定量

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

数据类型覆盖

工具箱块服从使用本地设置,模式数据类型覆盖参数在定点工具。的扩大两倍mode也支持工具箱源代码万博1manbetx和字节变换块,以及一些算术块,如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。

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

输出数据类型的内部规则

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

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

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

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

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

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

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

Simulink和工具箱软件在任何目标上允许的最大字长是128位。万博1manbetx

内部规则示例

类的内部规则交互的示例如下所示硬件实现窗格进行计算累加器数据类型而且产品数据类型

累加器数据类型。考虑以下模型ex_internalRule_accumExp

区别(DSP系统工具箱)块,蓄电池参数设置为继承:通过内部规则继承,以及输出参数设置为Inherit:与累加器相同。因此,可以在模型中看到由输出信号上的内部规则计算的累加器数据类型。

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

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

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 u b e r o f 一个 c c u u l 一个 t o n 年代 + 1 W l d e 一个 l 一个 c c u u l 一个 t o r 9 + 地板上 日志 2 1 + 1 W l d e 一个 l 一个 c c u u l 一个 t o r 9 + 0 + 1 10 W l d e 一个 l 一个 c c u u l 一个 t o r 1 W l n p u t t o 一个 c c u u l 一个 t o r 1 + 地板上 日志 2 n u b e r o f 一个 c c u u l 一个 t o n 年代 + 1 W l d e 一个 l 一个 c c u u l 一个 t o r 1 16 + 地板上 日志 2 1 + 1 W l d e 一个 l 一个 c c u u l 一个 t o r 1 16 + 0 + 1 17 W l d e 一个 l 一个 c c u u l 一个 t o r 2 W l n p u t t o 一个 c c u u l 一个 t o r 2 + 地板上 日志 2 n u b e r o f 一个 c c u u l 一个 t o n 年代 + 1 W l d e 一个 l 一个 c c u u l 一个 t o r 2 127 + 地板上 日志 2 1 + 1 W l d e 一个 l 一个 c c u u l 一个 t o r 2 127 + 0 + 1 128

计算全精度分数长度,这对于本例中的每个矩阵和块是相同的:

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 F l d e 一个 l 一个 c c u u l 一个 t o r 4

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

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

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

数组向量相乘(DSP系统工具箱)块,产品输出参数设置为继承:通过内部规则继承,以及输出参数设置为继承:与产品输出相同。因此,可以在模型中看到由输出信号上的内部规则计算出的乘积输出数据类型。的设置蓄电池参数并不重要,因为本例使用实值。

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

计算模型中每个数组向量乘法块的全精度字长:

W l d e 一个 l p r o d u c t W l n p u t 一个 + W l n p u t b W l d e 一个 l p r o d u c t 7 + 5 12 W l d e 一个 l p r o d u c t 1 W l n p u t 一个 + W l n p u t b W l d e 一个 l p r o d u c t 1 16 + 15 31

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

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 F l d e 一个 l 一个 c c u u l 一个 t o r 4

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

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

指定定点块的数据类型

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

准备模型

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

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

    • 有符号源的字长为16位,分数长为15位。

    • Unsigned源的字长为16位,分数长为16位。

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

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

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

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

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

  5. 模拟结果显示在中心的表格中内容固定点工具的窗格。回顾以下栏目:

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

    • SimDT—每个日志信号的模拟数据类型。

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

    • SimMin-模拟过程中实现的每个记录信号的最小可代表值。

    • SimMax-在模拟过程中为每个记录信号实现的最大可代表值。

    • OverflowWraps-模拟过程中溢出的数量。

    你还可以看到SimMin而且SimMax累加器数据类型的值范围为0.9997。记录的结果表明,在Signed Cumulative Sum块的Accumulator数据类型中,模拟过程中封装了8,192个溢出。类似地,Unsigned Cumulative Sum块的Accumulator数据类型在模拟过程中有16,383个溢出包装。

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

  6. 假设目标硬件支持32位整数,并将两个Cumulative S万博1manbetxum块中的Accumulator字长度设置为32。为此,请执行以下步骤:

    1. 右键单击Signed Cumulative Sum:累加器在“定点工具”窗格中,选择在模型中突出显示块

    2. 双击模型中的块,并选择数据类型窗格中的对话框。

    3. 打开数据类型助手点击“助手”按钮()在Accumulator数据类型行中。

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

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

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

    7. 将Unsigned Cumulative Sum块的Accumulator数据类型的字长设置为32位。你可以通过以下两种方式之一来做到这一点:

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

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

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

    内容窗格中的定点工具更新,您可以看到在最近的模拟中没有发生溢出。然而,你也可以看到SimMin而且SimMax取值范围为00。发生这种下溢是因为Accumulator数据类型的分数长度太小。的SpecifiedDT不能表示数据值的精度。下面几节讨论如何找到浮点基准并使用定点工具来提出分数长度。

使用数据类型重写来查找浮点基准

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

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

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

  3. 检查的结果内容固定点工具的窗格。因为你把模型放进去了覆盖模式,你得到一个精确的,理想的模拟最小值和最大值的表示。这些值出现在SimMin而且SimMax参数。

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

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

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

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

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

  3. 单击提出分数长度按钮().方法中填充建议的数据类型ProposedDT的列内容窗格。相应的建议最小值和最大值显示在ProposedMin而且ProposedMax列。

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

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

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

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

    • 方法中突出显示数据类型,以获得有关特定数据类型的建议扩展的详细信息内容固定点工具的窗格。

    • 控件打开高亮显示的数据类型的“自动缩放信息”窗口显示所选结果的自动缩放信息按钮().

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

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

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

    • SimMin而且SimMax的值活跃的运行匹配SimMin而且SimMax浮点数的值参考运行。

    • 不再有任何溢出。

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