指定固定点的属性块

定点块参数

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

注意

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

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

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

定点数据类型参数 描述

舍入模式

指定用于块时指定的数据类型和缩放不能精确地表示一个固定点的计算结果用舍入模式。

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

使整数溢出饱和

当您选择此参数,该块饱和的定点运算的结果。如果清除该参数,该块包装的定点运算的结果。

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

中间产品

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

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

产品输出

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

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

蓄电池

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

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

产量

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

使用数据类型助理

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

要了解更多关于使用数据类型的助理要帮助您指定块数据类型参数,请参阅使用数据类型助手指定数据类型(万博1manbetxSIMULINK)。

检查信号范围

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

要了解如何指定信号范围和使能信号范围检查,看指定信号范围(万博1manbetxSIMULINK)。

指定系统级设置

可以监视和在一个系统或子系统级别与定点工具控制工具箱模块固定点设置。欲了解更多信息,请参阅定点工具

记录

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

自动定量

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

数据类型覆盖

工具箱块遵守使用本地设置,模式的数据类型覆盖参数定点工具。该扩大两倍还支持工具箱源和字节混洗模万博1manbetx块模式,并且对于一些算术块,诸如差分和规范化。

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

内部规则继承

为您的模型中的定点参数选择适当的字长和标度可能具有挑战性。为了帮助你,安内部规则继承通常可以为定点块数据类型参数提供选择,例如蓄电池产品产量信号。下面的章节描述了字和部分长度如何选择适合你,当你选择内部规则继承对于工具箱软件中的定点块数据类型参数:

注意

在以下部分中的方程,=单词长度和FL=分数长度。

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

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

w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = w ^ 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R + 地板上 日志 2 ñ 1 + 1

F 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = F 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R

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

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

产品数据类型的内部规则

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

w ^ 大号 一世 d Ë 一个 p [R Ø d ü C Ť = w ^ 大号 一世 ñ p ü Ť 1 + w ^ 大号 一世 ñ p ü Ť 2

F 大号 一世 d Ë 一个 p [R Ø d ü C Ť = F 大号 一世 ñ p ü Ť 1 + F 大号 一世 ñ p ü Ť 2

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

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

输出数据类型的内部规则

一些工具箱块具有内部规则继承选择可用的块输出。在这些情况下使用的内部规则是块特定的,并且该方程在块参照页列出。

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

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

内部规则选择适合您的硬件的字长和分数长度。要使用内部规则获得最佳结果,您必须指定要在上使用的硬件类型硬件实现“配置参数”对话框的窗格。可以从。打开此对话框模拟菜单中的模型。

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

其他的目标。对于除ASIC / FPGA,理想的其他所有目标,通过内部规则计算全精度的字长四舍五入到目标的下一个可用的字长。计算的理想分数长度时,保持至少-显著位。

如果一个产品的数据类型计算的理想字长比在标靶上最大的字长较大,您会收到一个错误。如果蓄压器或输出数据类型所计算的理想字长度比目标上的最大字长时,使用最大目标字长度。

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

内部规则的例子

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

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

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

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

计算全精度字长为每个模型中的差异块组成:

w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = w ^ 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R + 地板上 日志 2 ñ ü b Ë [R Ø F 一个 C C ü ü 一个 Ť 一世 Ø ñ 小号 + 1 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = 9 + 地板上 日志 2 1 + 1 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = 9 + 0 + 1 = 10 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R 1 = w ^ 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R 1 + 地板上 日志 2 ñ ü b Ë [R Ø F 一个 C C ü ü 一个 Ť 一世 Ø ñ 小号 + 1 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R 1 = 16 + 地板上 日志 2 1 + 1 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R 1 = 16 + 0 + 1 = 17 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R 2 = w ^ 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R 2 + 地板上 日志 2 ñ ü b Ë [R Ø F 一个 C C ü ü 一个 Ť 一世 Ø ñ 小号 + 1 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R 2 = 127 + 地板上 日志 2 1 + 1 w ^ 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R 2 = 127 + 0 + 1 = 128

计算全精度分数长度,在这个例子中,对于每个矩阵和块都是一样的:

F 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = F 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R F 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = 4

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

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

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

阵列向量乘块,产品输出参数设置为继承:通过内部规则继承,产量参数设置为继承:与产品输出相同。因此,可以看到通过在模型的输出信号的内部规则计算出的产品输出的数据类型。的设置蓄电池参数没有关系,因为这个例子使用的实际值。

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

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

w ^ 大号 一世 d Ë 一个 p [R Ø d ü C Ť = w ^ 大号 一世 ñ p ü Ť 一个 + w ^ 大号 一世 ñ p ü Ť b w ^ 大号 一世 d Ë 一个 p [R Ø d ü C Ť = 7 + = 12 w ^ 大号 一世 d Ë 一个 p [R Ø d ü C Ť 1 = w ^ 大号 一世 ñ p ü Ť 一个 + w ^ 大号 一世 ñ p ü Ť b w ^ 大号 一世 d Ë 一个 p [R Ø d ü C Ť 1 = 16 + 15 = 31

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

F 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = F 大号 一世 ñ p ü Ť Ť Ø 一个 C C ü ü 一个 Ť Ø [R F 大号 一世 d Ë 一个 一个 C C ü ü 一个 Ť Ø [R = 4

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

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

为定点块指定数据类型

以下部分显示如何使用定点工具选择在定点块合适的数据类型ex_fixedpoint_tut模型:

准备模型

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

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

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

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

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

    警告:发生溢出。这源于“ex_fixedpoint_tut /签名的累积总和”。警告:发生溢出。这源于“ex_fixedpoint_tut /未签名的累计总和”。

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

  3. 要研究此模型中的溢出,请使用定点工具。您可以通过选择打开定点工具工具>定点>定点工具从模型菜单。通过设置定点测量模式参数最小值、最大值和溢出

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

  5. 模拟结果显示在中央的表格中内容窗格定点工具。请查看以下栏目:

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

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

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

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

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

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

    有关此表中每个列的更多信息,请参见Simulink的一部分万博1manbetxfxptdlg功能参考页。

    你也可以看到SimMinSimMax累加器数据类型的值从0.9997。所记录的结果表明,在模拟的签名累计总和块的累加器数据类型中包裹8192溢出。类似地,无符号累积求和块的累加器数据类型仿真期间有16383溢出包裹物。

    要获得有关这些数据类型的更多信息,突出他们在内容窗格,然后单击显示选定结果的详细信息按钮(

  6. 假定一个目标硬件支持32位整数,并将设置在两个累积和块到累加万博1manbetx器字长32。要做到这一点,请执行下列步骤:

    1. 右键单击带符号的累加和:累加器“定点工具”窗格中的行,然后选择模型中的高光块

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

    3. 打开数据类型的助理如使用累加器,请按“助手”按钮()在累加器数据类型行中。

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

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

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

    7. 设置到累加器数据类型未签名累计和块的字长32位。你可以通过以下两种方式之一:

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

      • 执行与设置带符号的累加和块的累加器数据类型的字长相同的步骤32位。

  7. 为了验证字的长度和检查是否溢出的修改,重新运行模型。要做到这一点,请点击模拟按钮,在定点工具。

    内容窗格定点工具的更新,你可以看到,没有溢出发生在最近的模拟。然而,你也可以看到,SimMinSimMax值的范围从00。发生这种下溢是因为累加器数据类型的分数长度太小。该SpecifiedDT无法表示数据值的精度。下面几节将讨论如何找到浮点基准并使用定点工具来建议分数长度。

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

数据类型覆盖定点工具的功能,您可以覆盖你的模型浮点类型指定的数据类型。运行在你的模型覆盖模式使您能够帮助您选择适合您的定点数据类型的适当部分长度的参考范围。要做到这一点,请执行下列步骤:

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

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

  3. 检查结果内容窗格定点工具。因为你跑的模型超控模式下,可以模拟最小值和最大值的准确,理想化表示。这些值出现在SimMinSimMax参数。

  4. 现在,你有模拟最小值和最大值的准确的参考表示,可以更方便地选择合适的部分长度。做这些选择之前,保存您的积极结果的参考,所以你可以把它们作为你的浮点基准。要做到这一点,选择结果>移动激活的结果为参考从定点工具菜单。控件中显示的状态运行列变化活跃的参考对于模型中的所有信号。

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

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

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

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

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

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

接受由定点工具提出的部分长度之前,看一下该数据类型的细节是非常重要的。这样做可以让你看到建议的数据类型可以有多少你的数据的代表。要检查建议的数据类型,并接受建议的缩放,请执行下列步骤:

  1. 内容定点工具的窗格中,你可以看到在你的模型中的数据类型所提出的部分长度。

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

    • 要获得有关建议的比例为特定的数据类型更多的细节,突出显示的数据类型内容窗格定点工具。

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

  2. 当打开Autoscale信息窗口时,检查价值提出了可表示的百分比模拟最小模拟最大参数。可以看到,建议的数据类型可以表示100%的模拟数据范围。

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

  4. 若要验证新接受的缩放,请设置数据类型覆盖参数回使用本地设置和运行模式。看着内容窗格定点工具,你可以看到以下细节:

    • SimMinSimMax的值活跃的运行匹配SimMinSimMax从浮点值参考运行。

    • 不再有任何溢出。

    • SimDT不符合SpecifiedDT对于累加和块的累加器数据类型。出现这种差异是因为累计和块总是继承它Signedness从输入信号,并只允许您指定Signedness汽车。因此,SpecifiedDT两个累加器的数据类型是fixdt([],32,17)。但是,由于带符号的累计和块具有带符号的输入信号,因此SimDT因为该块的累加器参数也有符号(fixdt(1,32,17))。类似地,SimDT对于累加器参数的无符号累加和块继承其Signedness从它的输入信号,因此是无符号的(fixdt(0, 32岁,17))。