标量和非标量的乘除运算或者矩阵的乘法和逆运算 您所在的位置:网站首页 除号用什么符号表示 标量和非标量的乘除运算或者矩阵的乘法和逆运算

标量和非标量的乘除运算或者矩阵的乘法和逆运算

2024-06-18 19:02| 来源: 网络整理| 查看: 265

Product, Matrix Multiply

标量和非标量的乘除运算或者矩阵的乘法和逆运算

全页展开

库: Simulink / Commonly Used Blocks Simulink / Math Operations Simulink / Matrix Operations HDL Coder / Commonly Used Blocks HDL Coder / HDL Floating Point Operations HDL Coder / Math Operations

描述

Product 模块输出两个输入(两个标量、一个标量和一个非标量,或者具有相同维度的两个非标量)的相乘结果。指定此行为的默认参数值包括:

乘法:按元素(.*)

输入的数目:2

下表显示了 Product 模块使用默认模块参数值的使用 Product 模块对不同维度的输入执行乘法的输出。

输入和行为示例

标量 X 标量

输出两个输入的乘积。

标量 X 非标量

输出与非标量输入具有相同维度的非标量。非标量输出中的每个元素是标量输入与非标量输入中对应元素的乘积。

非标量 X 非标量

输出与输入具有相同维度的非标量。输出中的每个元素是与输入中对应元素的乘积。

Divide 和 Product of Elements 模块是 Product 模块的变体。

有关 Divide 模块的信息,请参阅 Divide。

有关 Product of Elements 模块的信息,请参阅 Product of Elements。

Product 模块(或者经过适当配置的 Divide 模块或 Product of Elements 模块)可以:

对任意多个标量、向量或矩阵输入进行数值乘除运算

对任意多个矩阵输入执行矩阵乘除运算

Product 模块可以执行标量或矩阵乘法运算,具体取决于乘法参数的值。此模块接受一个或多个输入,具体取决于输入的数目参数。输入的数目参数还指定要对每个输入执行的运算。

Product 模块可以输入标量、向量和矩阵的任意组合,对于这些输入,执行的运算必须具有数学定义的结果。该模块对输入执行指定的运算,然后输出结果。

Product 模块有两种模式:按元素模式,按元素处理非标量输入元素;矩阵模式,以矩阵方式处理非标量输入。

按元素模式

当乘法设置为按元素(.*) 时,Product 模块即处于按元素模式,在这种模式下,模块将对任何非标量输入的单个数值元素执行运算。这相当于 MATLAB® 中的 .* 运算符。在按元素模式下,Product 模块可以执行各种乘法、除法和算术逆运算。

输入的数目参数的值控制存在多少个输入,以及是乘以还是除以每个输入以得到输出。当 Product 模块在按元素模式下且只有一个输入时,它的功能相当于 Product of Elements 模块。当模块具有多个输入时,任何非标量输入都必须具有相同的维度,而模块将输出具有这些维度的非标量。为了计算输出,模块首先将任何标量输入展开为与非标量输入具有相同维度的非标量。

下表显示了 Product 模块对于使用指定的输入的数目参数值的使用 Product 模块对不同维度的输入执行乘法的输出。

参数值示例

输入的数目:2

输入的数目:*/

输入的数目:/**/

输入的数目:**

输入的数目:*/*

矩阵模式

当乘法参数的值为矩阵(*) 时,Product 模块即处于矩阵模式,在这种模式下,模块按矩阵处理非标量输入。这相当于 MATLAB 中的 * 运算符。在矩阵模式下,Product 模块可以对单个方阵进行逆运算,或者对任意多个具有维度的矩阵(通过数学方式为它们定义了结果)进行乘法或除法运算。

输入的数目参数的值既控制存在多少个输入,也控制是乘以还是除以每个输入矩阵以得到输出。输入的数目的语法与按元素模式相同。这两个模式的不同之处在于发生的乘法和除法的类型。

模块输入和模式之间的交互

Product 模块输入与其乘法模式之间的交互如下:

1 或 * 或 /

模块有一个输入端口。在按元素模式下,模块按照 Product of Elements 模块说明处理输入。在矩阵模式下,如果参数值为 1 或 *,则模块将输出输入值。如果值为 /,则输入必须为方阵(包括作为简并情况的标量),模块将输出逆矩阵。有关详细信息,请参阅按元素模式和矩阵模式。

大于 1 的整数值

模块的输入的数量由整数值指定。输入依乘法参数指定的按元素模式或矩阵模式相乘。有关详细信息,请参阅按元素模式和矩阵模式。

不带引号的含有两个或更多 * 和 / 字符的字符串

模块的输入的数量由字符向量长度指定。乘以与 * 字符相对应的每个输入来得到输出。除以与 / 字符相对应的每个输入来得到输出。依乘法参数指定的按元素模式或矩阵模式进行运算。有关详细信息,请参阅按元素模式和矩阵模式。

仿真与代码生成之间的预期差异

对于复数浮点输入的按元素运算,仿真和代码生成结果在接近溢出情况下可能会有所差异。尽管在“配置参数”对话框的代码生成 > 接口窗格上选中了复数且取消选中了非有限数,代码生成器也不会为中间溢出生成特殊情况代码。此方法可以提高嵌入式运算在不含极值的一般情况下的效率。如果输入可能包含极值,必须显式处理这些情况。

如果 NaN 和 inf 值在数学上没有意义,则生成的代码可能不会为这些值生成与仿真相同的模式。例如,如果仿真输出包含 NaN,生成的代码的输出也会包含 NaN,但不一定在相同的位置。

示例

全部展开

使用 Product 模块对输入进行乘法和除法运算打开模型

此示例说明如何使用 Product 模块对多个输入信号进行乘法和除法运算。

使用 Product 模块对不同维度的输入执行乘法打开模型

此示例说明如何使用 Product 模块执行输入项的按元素 (.*) 乘法。在此示例中,Product 模块执行两个标量相乘、一个标量和一个向量相乘以及两个 2×2 矩阵相乘。

端口输入

全部展开

Port_1 — 要进行乘法或除法运算的第一个输入 标量 | 向量 | 矩阵 | N 维数组

要进行乘法或除法运算的第一个输入,作为标量、向量、矩阵或 N 维数组提供。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

Port_N — 要进行乘法或除法运算的第 N 个输入 标量 | 向量 | 矩阵 | N 维数组

要进行乘法或除法运算的第 N 个输入,作为标量、向量、矩阵或 N 维数组提供。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

X — 要相乘的输入信号 标量 | 向量 | 矩阵 | N 维数组

要与其他输入相乘的输入信号。

依存关系

要启用一个或多个 X 端口,请为输入的数目参数指定一个或多个 * 字符,并将乘法参数设置为按元素(.*)。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

÷ — 要进行除法或逆运算的输入信号 标量 | 向量 | 矩阵 | N 维数组

要进行除法或逆运算的输入信号。

依存关系

要启用一个或多个 ÷ 端口,请为输入的数目参数指定一个或多个 / 字符,并将乘法参数设置为按元素(.*)。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

* — 要相乘的输入信号 标量 | 向量 | 矩阵 | N 维数组

要与其他输入相乘的输入信号。

依存关系

要启用一个或多个 * 端口,请为输入数目参数指定一个或多个 * 字符,并将乘法参数设置为矩阵(*)。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

Inv — 要进行除法或逆运算的输入信号 标量 | 向量 | 矩阵 | N 维数组

要进行除法或逆运算的输入信号。

依存关系

要启用一个或多个 Inv 端口,请为输入数目参数指定一个或多个 / 字符,并将乘法参数设置为矩阵(*)。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

输出

全部展开

Port_1 — 通过对输入进行乘法、除法或逆运算来计算得出输出 标量 | 向量 | 矩阵 | N 维数组

通过对输入进行乘法、除法或逆运算来计算得出输出。

数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

参数

全部展开

常设输入的数目 — 控制输入的数量和运算的类型 2 (默认) | 标量 | 对每个输入端口应用 * 或 /

控制模块的两个属性:

模块上的输入端口数

是乘以还是除以每个输入来得到输出

如果您指定:

1 或 * 或 /

模块有一个输入端口。在按元素模式下,模块按照 Product of Elements 模块说明处理输入。在矩阵模式下,如果参数值为 1 或 *,则模块将输出输入值。如果值为 /,则输入必须为方阵(包括作为简并情况的标量),模块将输出逆矩阵。有关详细信息,请参阅按元素模式和矩阵模式。

大于 1 的整数值

模块的输入的数量由整数值指定。输入依乘法参数指定的按元素模式或矩阵模式相乘。有关详细信息,请参阅按元素模式和矩阵模式。

不带引号的含有两个或更多 * 和 / 字符的字符串

模块的输入的数量由字符向量长度指定。乘以与 * 字符相对应的每个输入来得到输出。除以与 / 字符相对应的每个输入来得到输出。依乘法参数指定的按元素模式或矩阵模式进行运算。有关详细信息,请参阅按元素模式和矩阵模式。

编程用法 模块参数:Inputs类型:字符向量值:'2' | '**' | '*/' | '*/*' | ...默认值:'2' 乘法 — 按元素 (.*) 或矩阵 (*) 乘法 按元素(.*) (默认) | 矩阵(*)

指定模块是执行按元素(.*) 还是矩阵(*) 乘法。

编程用法 模块参数:Multiplication类型:字符向量值:'Element-wise(.*)' | 'Matrix(*)' 默认值:'Element-wise(.*)' 应用于 — 如何沿指定维度应用函数 所有维度 (默认) | 指定的维度

指定如何沿指定维度应用函数。

所有维度 - 对所有维度的所有输入值应用函数。

指定维度 - 对指定维度的所有输入值应用函数。

例如,在此模型中,将乘法设置为按元素方式(.*),将应用于设置为所有维度。该模块返回所有维度的所有值的乘积。

依存关系

要启用此参数,请将输入的数目设置为 * 并将乘法设置为按元素(.*)。

编程用法 模块参数:CollapseMode类型:字符向量值:'All dimensions' | 'Specified dimension'默认值:'All dimensions' 维度 — 要沿其相乘的维度 1 (默认) | 正整数

指定要沿其相乘的维度,值为正整数。例如,对于二维矩阵,1 将函数应用于每列,2 将函数应用于每行。

例如,在此模型中,将乘法设置为按元素方式(.*),将应用于设置为指定的维度,将维度设置为 2。该模块返回每行中所有值的乘积。

依存关系

要启用此参数,请进行如下设置:

将输入的数目设置为 *

将乘法设置为按元素(.*)

将应用于设置为指定的维度

编程用法 模块参数:CollapseDim类型:字符向量值:'1' | '2' | ...默认值:'1' 采样时间(-1 表示继承) — 采样之间的时间间隔 -1 (默认) | 标量 | 向量

指定采样时间间隔。要继承采样时间,请将此参数设置为 -1。有关详细信息,请参阅指定采样时间。

依存关系

仅当您将此参数设置为 -1 以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块。

编程用法 模块参数:SampleTime类型:字符串标量或字符向量默认值:"-1" 信号属性要求所有输入具有相同的数据类型 — 要求所有输入具有相同的数据类型 off (默认) | on

指定输入信号是否必须全部具有相同的数据类型。如果启用此参数,则在输入信号类型不同时,仿真过程中会发生错误。

编程用法 模块参数:InputSameDT类型:字符向量值:'off' | 'on'默认值:'off' 输出最小值 — 范围检查的最小输出值 [] (默认) | 标量

Simulink® 检查的输出范围的下限值。

Simulink 使用最小值执行下列操作:

某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。

仿真范围检查(请参阅指定信号范围和启用仿真范围检查)。

定点数据类型的自动定标。

从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。

注意

输出最小值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。

编程用法 模块参数:OutMin类型:字符向量值:'[ ]'| 标量默认值:'[ ]' 输出最大值 — 范围检查的最大输出值 [] (默认) | 标量

Simulink 检查的输出范围的上限值。

Simulink 使用最大值执行下列操作:

某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。

仿真范围检查(请参阅指定信号范围和启用仿真范围检查)。

定点数据类型的自动定标。

从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。

注意

输出最大值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。

编程用法 模块参数:OutMax类型:字符向量值:'[ ]'| 标量默认值:'[ ]' 输出数据类型 — 指定输出数据类型 继承: 从内部规则继承 (默认) | 继承: Keep MSB | 继承: Match scaling | 继承: 通过反向传播继承 | 继承: 与第一个输入相同 | double | single | half | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | fixdt(1,16) | fixdt(1,16,0) | fixdt(1,16,2^0,0) |

为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType。有关详细信息,请参阅 控制信号的数据类型。

当您选择继承的选项时,模块的行为如下所示:

继承: 从内部规则继承 - Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。如果更改了嵌入式目标的设置,则依内部规则选择的数据类型可能会发生变化。例如,如果该模块将 int8 类型的输入乘以 int16 的增益,并且将 ASIC/FPGA 指定为目标硬件类型,则输出数据类型为 sfix24。如果指定未指定(假定通用 32 位)(即通用 32 位微处理器)为目标硬件,则输出数据类型为 int32。如果目标微处理器不能提供适应输出范围的字长,Simulink 软件将在诊断查看器中显示错误。

继承: Keep MSB - Simulink 选择一种能够保持运算的完整范围的数据类型,然后将输出精度降低到适合嵌入式目标硬件的大小。

提示

要获得更高效的生成代码,请取消选择对整数溢出进行饱和处理参数。

此规则从不产生溢出。

继承: Match scaling - Simulink 选择一种数据类型,其定标与输入类型的定标相匹配。如果该类型的完整范围不适合嵌入式目标硬件,则该范围会缩小,从而生成适合嵌入式目标硬件的类型。此规则可能产生溢出。此规则不支持复信号之间的乘法运算

Inherit: Keep MSB 和 Inherit: Match scaling 规则不支持复信号或非零偏差信号之间的乘法运算。这些规则仅支持两个输入之间的乘法和除法('**'、'*/'、'/*')、两个输入的矩阵乘法以及一个向量中两个元素的折叠积。

有时软件不能同时满足优化代码效率和保证数值准确性这两个需求。如果内部规则不能满足您对数值准确性或性能的特定需求,请使用下列选项之一:

显式指定输出数据类型。

使用简单的选项继承: 与输入相同。

显式指定默认数据类型(例如 fixdt(1,32,16)),然后使用定点工具为您的模型提供数据类型建议。有关详细信息,请参阅 fxptdlg (Fixed-Point Designer)。

要指定您自己的继承规则,请使用继承: 通过反向传播继承,然后使用 Data Type Propagation 模块。有关如何使用此模块的示例说明,请参阅 Signal Attributes 模块库中的 Data Type Propagation Examples 模块。

继承: 通过反向传播继承 - 使用驱动模块的数据类型。

继承: 与第一个输入相同 - 使用第一个输入信号的数据类型。

依存关系

当输入是小于单精度的浮点数据类型时,继承: 从内部规则继承输出数据类型取决于 Inherit floating-point output type smaller than single precision 配置参数的设置。当对数据类型进行编码所需的位数小于对单精度数据类型编码所需的 32 位时,数据类型小于单精度。例如,half 和 int16 小于单精度。

编程用法 模块参数:OutDataTypeStr类型:字符向量值:'Inherit: Inherit via internal rule | 'Inherit: Keep MSB'| 'Inherit: Match scaling'| 'Inherit: Same as first input' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'uint64'|'int64'|'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | ''默认值:'Inherit: Inherit via internal rule' 锁定输出数据类型设置以防止被定点工具更改 — 用于防止定点工具覆盖输出数据类型的选项 off (默认) | on

选择此参数可防止定点工具覆盖您在模块上指定的输出数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)。

编程用法 模块参数:LockScale类型:字符向量值:'off' | 'on'默认值:'off' 整数舍入模式 — 定点运算的舍入模式 向下 (默认) | 向上 | 收敛 | 最邻近值 | 舍入 | 最简 | 零

选择定点运算的舍入模式。您可以选择:

向上

朝正无穷方向舍入正数和负数。等同于 MATLAB ceil 函数。

收敛

将数值舍入到最邻近的可表示值。如果出现结值,则舍入到最邻近的偶数整数。等同于 Fixed-Point Designer™ convergent 函数。

向下

朝负无穷方向舍入正数和负数。等同于 MATLAB floor 函数。

最邻近值

将数值舍入到最邻近的可表示值。如果出现结值,则朝正无穷方向舍入。等同于 Fixed-Point Designer nearest 函数。

舍入

将数值舍入到最邻近的可表示值。如果出现结值,则将正数朝正无穷方向舍入,将负数朝负无穷方向舍入。等同于 Fixed-Point Designer round 函数。

最简

在向负无穷大方向舍入和向零舍入之间选择,以生成尽可能有效的舍入代码。

将数值向零舍入。等同于 MATLAB fix 函数。

有关详细信息,请参阅舍入 (Fixed-Point Designer)。

模块参数始终舍入到最邻近的可表示值。要控制模块参数的舍入方法,请在封装字段中使用 MATLAB 舍入函数输入表达式。

编程用法 模块参数:RndMeth类型:字符向量值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'默认值:'Floor' 对整数溢出进行饱和处理 — 溢出操作的方法 off (默认) | on

指定对溢出是进行饱和处理还是绕回处理。

操作原理说明对溢出的影响示例

选中此复选框 (on)。

您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。

将溢出饱和处理为数据类型能够表示的最小值或最大值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。

不选中此复选框 (off)。

您需要优化所生成代码的效率。

您希望避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除。

溢出会绕回到由数据类型表示的适当值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。清除该复选框时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。

如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。通常,代码生成过程可以检测何时不会发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法模块参数:SaturateOnIntegerOverflow类型:字符向量值:'off' | 'on'默认值:'off'模式 — 选择数据类型模式 Inherit (默认) | Built in | Fixed Point

选择要指定的数据类别。

继承 - 数据类型的继承规则。选择 Inherit 将在右侧启用另一个菜单/文本框,您可以在其中选择继承模式。

内置 - 内置数据类型。选择 Built in 将在右侧启用另一个菜单/文本框,您可以在其中选择内置数据类型。

定点 - 定点数据类型。选择定点将启用可用于指定定点数据类型的其他参数。

表达式 - 计算结果为数据类型的表达式。选择 Expression 将在右侧启用另一个菜单/文本框,您可以在其中输入表达式。

有关详细信息,请参阅使用数据类型助手指定数据类型。

依存关系

要启用此参数,请点击显示数据类型助手按钮。

数据类型覆盖 — 为此信号指定数据类型覆盖模式 Inherit | Off

为此信号选择数据类型覆盖模式。

当您选择 inherit 时,Simulink 从信号的上下文(即:从 Simulink 中使用该信号的模块、Simulink.Signal 对象或 Stateflow® 图)中继承数据类型覆盖设置。

当您选择 off 时,Simulink 忽略信号上下文的数据类型覆盖设置,并使用为信号指定的定点数据类型。

有关详细信息,请参阅 Simulink 文档中的使用数据类型助手指定数据类型。

依存关系

要启用此参数,请将模式设置为内置或定点。

提示

由于能够关闭单个数据类型的数据类型覆盖,您可以在应用数据类型覆盖时更好地控制模型中的数据类型。例如,您可以使用此选项确保数据类型满足下游模块的要求,而忽略数据类型覆盖设置。

符号性 — 指定有符号或无符号 Signed (默认) | Unsigned

指定定点数据是有符号还是无符号。有符号数据可以表示正值和负值,无符号数据只表示正值。

有符号,将定点数据指定为有符号数据。

无符号,将定点数据指定为无符号数据。

有关详细信息,请参阅使用数据类型助手指定数据类型。

依存关系

要启用此参数,请将模式设置为 Fixed point。

字长 — 存储量化整数的字的位大小 16 (默认) | 从 0 到 32 的整数

指定存储量化整数的字的位大小。有关详细信息,请参阅指定定点数据类型。

依存关系

要启用此参数,请将模式设置为定点。

小数长度 — 指定定点数据类型的小数长度 0 (默认) | 标量整数

将定点数据类型的小数长度指定为正整数或负整数。有关详细信息,请参阅指定定点数据类型。

依存关系

要启用此参数,请将定标设置为二进制小数点。

定标 — 定标定点数据的方法 最佳精度 (默认) | 二进制小数点 | 斜率和偏置

指定定点数据的定标方法,以避免发生溢出情况并最大限度地减少量化错误。有关详细信息,请参阅指定定点数据类型。

依存关系

要启用此参数,请将模式设置为定点。

斜率 — 指定定点数据类型的斜率。 2^0 (默认) | 正实数值标量

指定定点数据类型的斜率。有关详细信息,请参阅指定定点数据类型。

依存关系

要启用此参数,请将定标设置为斜率和偏置。

偏置 — 指定定点数据类型的偏置。 0 (默认) | 实数值标量

将定点数据类型的偏置指定为任意实数。有关详细信息,请参阅指定定点数据类型。

依存关系

要启用此参数,请将定标设置为斜率和偏置。

模块特性

数据类型

Boolean | double | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能C/C++ 代码生成 使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。HDL 代码生成 使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。

HDL 架构

默认的线性实现为 N 个输入生成包含 N 个运算(乘法器)的运算链。

架构参数描述线性默认无在生成的代码中生成乘积运算符 *。ShiftAddLatencyStrategy

通过使用多个移位相加运算对定点类型执行乘积运算。该模块具有流水线实现,这会在生成的代码中引入额外的延迟。ShiftAdd 架构可映射到 ASIC 应用中的高效电路。这种架构在没有 DSP 单元的 FPGA 目标板上的应用中非常有用。

不同字长的 MAX 延迟使用以下公式进行计算:ceil(log2(min(in1WL,in2WL)))。in1WL 是第一个输入字长,in2WL 是第二个输入字长。例如,如果两个输入的字长均为 4,则 MAX 延迟为 2。

当您使用定点数据类型时,输入的字长必须小于 63。

HDL 模块属性

如果在矩阵乘法模式下使用该模块,可以指定 DotProductStrategy。此设置决定您是要通过使用加法器和乘法器树来实现矩阵乘法,还是使用 Multiply-Accumulate 模块实现。默认值为 Fully Parallel。

注意

使用 Native Floating Point 模式时,DotProductStrategy 必须设置为 Fully Parallel。

有关详细信息,请参阅 DotProductStrategy (HDL Coder)。

另请参阅Design Considerations for Matrices and Vectors (HDL Coder)。

通用ConstrainedOutputPipeline

通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 0。有关详细信息,请参阅ConstrainedOutputPipeline (HDL Coder)。

DSPStyle

乘法器映射的综合属性。要使用此属性,请将 HDL 架构设置为线性。默认值为无。另请参阅DSPStyle (HDL Coder)。

InputPipeline

要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 0。有关详细信息,请参阅InputPipeline (HDL Coder)。

OutputPipeline

要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 0。有关详细信息,请参阅OutputPipeline (HDL Coder)。

LatencyStrategy

要启用此属性,请将 HDL 架构设置为 ShiftAdd。对于定点和浮点类型,指定是将设计中的模块映射到 MAX、Min、CUSTOM 还是 ZERO 延迟。默认值为 MAX。另请参阅LatencyStrategy (HDL Coder)。

CustomLatency

要启用此属性,请将 HDL 架构设置为 ShiftAdd。当 LatencyStrategy 设置为 CUSTOM 时,使用此属性为定点类型指定介于 ZERO 和 MAX 之间的自定义延迟值。另请参阅LatencyStrategy (HDL Coder)。

本机浮点HandleDenormals

指定是否希望 HDL Coder 在设计中插入额外的逻辑来处理非正规数字。非正规数是量级非常小、必须使用包含前导零的尾数才能表示的浮点数。默认值为 inherit。另请参阅HandleDenormals (HDL Coder)。

LatencyStrategy

指定对于浮点运算符是否将设计中的模块映射到 inherit、Max、Min、Zero 或 Custom。默认值为 inherit。另请参阅LatencyStrategy (HDL Coder)。

NFPCustomLatency

要指定值,请将 LatencyStrategy 设置为 Custom。HDL Coder 会增加延迟,其值等于您为 NFPCustomLatency 设置指定的值。另请参阅NFPCustomLatency (HDL Coder)。

MantissaMultiplyStrategy

指定在代码生成期间如何实现尾数乘法运算。通过使用不同设置,您可以控制目标 FPGA 设备上 DSP 的使用。默认值为 inherit。另请参阅MantissaMultiplyStrategy (HDL Coder)。

复数数据支持

默认(线性)实现支持复数数据。

不支持复数除法。关于在除法模式或倒数模式下 Product 模块的模块实现,请参阅 Divide 模块参考页上的 HDL 代码生成。

优化支持

您可以使用 ShiftAdd 架构对 Product、Divide 和 Reciprocal 模块应用共享或流优化。

模块(输入)资源共享流式传输产品 (*)是是除法(/* 或 */)是是倒数 (/)是否

有关详细信息,请参阅Resource Sharing (HDL Coder)和Streaming (HDL Coder)。

限制

当您在矩阵乘法模式下使用模块时,HDL 代码生成不支持模块端口上有两个以上的输入。

输入的数目模块参数值为 /* 的 Product 模块执行除法,其中第二个输入除以第一个输入。此模式的限制与适用于 Divide 模块的限制相同。请参阅HDL 代码生成。

PLC 代码生成 使用 Simulink® PLC Coder™ 生成结构化文本代码。定点转换 使用 Fixed-Point Designer™ 设计和仿真定点系统。 版本历史记录在 R2006a 之前推出

全部展开

R2024a: Product 和 Matrix Multiply 模块具有新参数名称

对于 Product 和 Matrix Multiply 模块,乘法运算维度参数已重命名为应用于。

另请参阅

Divide | Dot Product | Product of Elements



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有