主要内容

为块指定定点属性

定点块参数

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

请注意

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

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

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

定点数据类型参数 描述

舍入模式

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

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

整数溢出饱和

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

有关饱和和包装的详细信息,请参阅溢出处理为定点操作。

中间产品

指定用于固定点块的中间产品的数据类型和缩放。块递送乘法结果返回到乘法器的输入使用中间产品数据类型。

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

产品产量

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

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

累加器

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

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

输出

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

使用数据类型助手

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

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

检查信号范围

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

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

指定系统级设置

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

日志记录

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

自动播放

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

数据类型覆盖

工具箱块遵循使用本地设置双倍的, 和模式的模式数据类型覆盖参数在定点工具。的双刻度模式也支持工具箱的源代码和金宝app字节变换块,以及一些算术块,如差分和归一化。

Scaled double是一种保留定点缩放信息的双精度数据类型。使用数据类型替代,可以将定点数据类型转换为缩放双精度。然后可以进行模拟以确定系统的理想浮点行为。收集该信息后,可以禁用“数据类型替代”以返回定点数据类型,并且数量仍保留其原始缩放信息,因为它保存在缩放双精度数据类型中。

通过内部规则继承

为模型中的定点参数选择适当的字长和比例是很有挑战性的。为了帮助你,安通过内部规则继承定点块数据类型参数(例如累加器产品输出信号。以下部分描述如何在选择时为您选择单词和分数长度通过内部规则继承对于工具箱软件中的定点块数据类型参数:

请注意

在下面的公式中,WL=字长和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金宝搏硬件实现窗格对内部规则的影响了解更多信息。

输出数据类型的内部规则

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

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

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

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

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

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

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

Simulink和toolbox软件在任何目标上允许的最大字长为128位金宝app。

内部规则的例子

下面几节展示了内部规则如何与硬件实现窗格计算累加器数据类型产品数据类型

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

在里面区别块,累加器参数设置为继承:通过内部规则继承,以及输出参数设置为继承:和累加器一样.因此,您可以看到由模型中输出信号上的内部规则计算的累加器数据类型。

在前面的模型中设备类型中的参数硬件实现“配置参数”对话框的窗格设置为ASIC / FPGA。因此一个ccu米ul一个tord一个t一个 type used by the internal rule is the ideal, full-precision result.

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

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

在里面数组向量相乘块,产品产量参数设置为继承:通过内部规则继承,以及输出参数设置为继承:与产品输出相同.因此,您可以看到由模型中输出信号的内部规则计算出的产品输出数据类型。设置累加器参数并不重要,因为本示例使用的是真实值。

对于前面的模型设备类型中的参数硬件实现“配置参数”对话框的窗格设置为ASIC / FPGA。因此productd一个t一个type used by the internal rule is the ideal, full-precision result.

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

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®命令行。

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

    • 签名源的字长为16位,分数长为15位。

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

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

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

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

  3. 要调查此模型中的溢出,请使用定点工具。可以通过选择打开“定点”工具工具>固定点>定点的工具从模型菜单。通过设置通过设置模型中的所有块的记录定点仪器模式参数到最小值,最大值和溢出

  4. 现在已经打开了日志记录,请单击“模拟”按钮重新运行模型。

  5. 模拟结果出现在中央表中内容窗格的定点工具。检讨下列栏目:

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

    • 辛特—每个记录信号的仿真数据类型。

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

    • SimMin-在模拟每个记录的信号时可表示的最小值。

    • 辛马克斯-在模拟每个记录的信号时所获得的最大可表示值。

    • OverflowWraps- 在模拟期间包装的溢出数量。

    你也可以看到SimMin辛马克斯累加器数据类型的值范围从0.9997.记录的结果表明,在模拟期间,在Signed Cumulative Sum块的Accumulator数据类型中包装了8192个溢出。类似地,Unsigned Cumulative Sum块的Accumulator数据类型在模拟过程中有16,383个溢出。

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

  6. 假设有一个支持32位整数的目标硬件,并将两个Cumulati金宝appve Sum块中的Accumulator字长设置为32..为此,请执行以下步骤:

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

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

    3. 打开数据类型助手通过单击“助手”按钮查看累加器(),在累加器数据类型行。

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

    5. 改变字长32.,然后单击刷新的细节按钮在定点细节部分查看更新的可代表范围。当您更改值时字长参数,数据类型编辑框自动更新。

    6. 点击好的,以保存更改并关闭窗口。

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

      • 键入数据类型fixdt([],32,0)直接进入数据类型“累加器”数据类型参数的编辑框。

      • 执行与设置Signed Cumulative Sum块的Accumulator数据类型的单词长度相同的步骤32.比特。

  7. 要验证对单词长度的更改并检查溢出,请重新运行模型。要这样做,请单击模拟按钮。

    内容固定点工具的窗格更新,您可以看到在最近的模拟中没有发生溢出。但是,你也可以看到SimMin辛马克斯值的范围为00.这种下溢发生,因为蓄能器数据类型的分数长度太小。的指定了无法表示数据值的精度。以下各节讨论如何找到浮点基准,并使用定点工具提出分数长度。

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

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

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

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

  3. 检查表格中的结果内容窗格的定点工具。因为你把模型放进去了双倍的覆盖模式,你会得到一个精确的,理想化的模拟最大值和最小值。这些值出现在SimMin辛马克斯参数。

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

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

现在你有了你的双倍的如果覆盖保存为浮点引用的结果,则可以建议分数长度。

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

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

  3. 单击建议分数长度钮扣().工具将建议的数据类型填充到Proposeddt.栏目内容窗格。所建议的最小值和最大值显示在提议proposmax.列。

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

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

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

    • 符号和无符号累积和块的累加器数据类型的所提出的分数长度为17位。

    • 要获取关于特定数据类型的建议伸缩的更多细节,请在内容窗格的定点工具。

    • 通过单击“打开突出显示的数据类型的自动缩放信息”窗口显示所选结果的自动缩放信息钮扣().

  2. 当“自动缩放信息”窗口打开时,请检查价值百分之拟议的代表性用于仿真最短模拟最大值您可以看到,建议的数据类型可以表示100%的模拟数据范围。

  3. 要接受建议的数据类型,请选中接受列,用于要保留其建议缩放比例的每种数据类型。然后,单击应用接受的分数长度钮扣()。该工具将更新块对话框和指定了列在内容窗格。

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

    • SimMin辛马克斯价值观活跃的运行匹配匹配SimMin辛马克斯浮点数的值参考文献跑。

    • 不再有溢流。

    • 辛特不匹配指定了累加和块的累加器数据类型。出现这种差异是因为Cumulative Sum块总是继承Signedness从输入信号,只允许您指定Signedness汽车。因此指定了为这两种累加器数据类型fixdt([], 32岁,17).但是,因为符号累积总和块具有符号输入信号,所以辛特对于该块的累加器参数也被签名(fixdt(1, 32岁,17)).同样,辛特对于累加器,无符号累积和块的参数继承其Signedness,因此是无符号的(fixdt(0,32,17)).