Gain
将输入乘以常量

库:
Simulink /
Commonly Used Blocks
Simulink /
Math Operations
HDL Coder /
Commonly Used Blocks
HDL Coder /
HDL Floating Point Operations
HDL Coder /
Math Operations
描述
Gain 模块将输入乘以一个常量值(增益)。输入和增益可以是标量、向量或矩阵。
在增益参数中指定增益的值。乘法参数用于指定按元素还是矩阵乘法。对于矩阵乘法,此参数还用于指示被乘数的阶。
通过舍入到最接近的值和饱和操作将增益从双精度型离线转换为模块封装中指定的数据类型。然后将输入和增益相乘,结果通过指定的舍入和溢出模式转换为输出数据类型。
端口
输入
Port_1 — 输入信号
标量 | 向量 | 矩阵
Gain 模块接受实数或复数值标量、向量或矩阵输入。Gain 模块支持定点数据类型。如果 Gain 模块的输入为实数,增益为复数,则输出为复数。
数据类型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
输出
Port_1 — 输入乘以增益
标量 | 向量 | 矩阵
Gain 模块的输出是输入乘以常量增益值。当 Gain 模块的输入为实数且增益为复数时,输出为复数。
数据类型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
参数
常设
增益 — 要与输入相乘的值
1
(默认) | real or complex-valued scalar, vector, or matrix
指定要与输入相乘的值。增益可以是实数或复数值标量、向量或矩阵。
编程用法
模块参数:Gain |
类型:字符向量 |
值:'1' | real- or complex-valued scalar, vector, or matrix |
默认值:'1' |
乘法 — 指定乘法模式
“按元素(K.*u)
” (默认) | “矩阵(K*u)
” | “矩阵(u*K)
” | “矩阵(K*u) (u 向量)
”
指定下列乘法模式之一:
“
按元素(K.*u)
” - 输入的每个元素乘以增益的每个元素。如有必要,该模块会执行扩展,以使输入和增益具有相同的维度。“
矩阵(K*u)
” - 输入和增益按矩阵乘法方式相乘,其中输入为第二个操作数。“
矩阵(u*K)
” - 输入和增益按矩阵乘法方式相乘,其中输入为第一个操作数。“
矩阵(K*u) (u 向量)
” - 输入和增益按矩阵乘法方式相乘,其中输入为第二个操作数。除了确定维度的方式,此模式与Matrix(K*u)
相同。假设
K
是一个m-by-n
矩阵。Matrix(K*u)(u vector)
将输入设置为长度为n
的向量,将输出设置为长度为m
的向量。相比之下,Matrix(K*u)
则是使用传播来确定输入和输出的维度。对于m-by-n
增益矩阵,输入可以传播到n-by-q
矩阵,并且输出变为m-by-q
矩阵。
编程用法
参数:Multiplication
|
类型:字符向量 |
值:'Element-wise(K.*u)' | 'Matrix(K*u)' | 'Matrix(u*K)' | 'Matrix(K*u) (u vector)' |
默认值:'Element-wise(K.*u)'
|
采样时间 — -1
以外的采样时间值
-1
(默认) | 标量 | 向量
将采样时间指定为 -1
以外的值。有关详细信息,请参阅指定采样时间。
依存关系
此参数不可见,除非将其显式设置为 -1
以外的值。要了解详细信息,请参阅不建议设置采样时间的模块。
编程用法
模块参数:SampleTime |
类型:字符串标量或字符向量 |
默认值:"-1" |
信号属性
输出最小值 — 范围检查的最小输出值
[]
(默认) | 标量
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 |
类型:字符向量 |
值:'[ ]' | 标量 |
默认值:'[ ]' |
输出数据类型 — 指定输出数据类型
“Inherit: Inherit via internal rule
” (默认) | “Inherit: Keep MSB
” | “Inherit: Match scaling
” | “Inherit: Inherit via back propagation
” | “Inherit: Same as input
” | “double
” | “single
” | “half
” | “int8
” | “uint8
” | “int16
” | “uint16
” | “int32
” | “int64
” | “uint64
” | “uint32
” | “fixdt(1,16)
” | “fixdt(1,16,0)
” | “fixdt(1,16,2^0,0)
” | “<data type expression>
”
为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType
。
当您选择继承的选项时,模块的行为如下所示:
“
Inherit: Inherit via internal rule
” - Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。如果更改了嵌入式目标的设置,则依内部规则选择的数据类型可能会发生变化。例如,如果该模块将int8
类型的输入乘以int16
的增益,并且将 “ASIC/FPGA
” 指定为目标硬件类型,则输出数据类型为sfix24
。如果指定“未指定(假定通用 32 位)
”(即通用 32 位微处理器)为目标硬件,则输出数据类型为int32
。如果目标微处理器不能提供适应输出范围的字长,Simulink 软件将在诊断查看器中显示错误。“
Inherit: Keep MSB
” - Simulink 选择一种能够保持运算的完整范围的数据类型,然后将输出精度降低到适合嵌入式目标硬件的大小。提示
要获得更高效的生成代码,请取消选择对整数溢出进行饱和处理参数。
此规则从不产生溢出。
“
Inherit: Match scaling
” - Simulink 选择一种数据类型,其定标与输入类型的定标相匹配。如果该类型的完整范围不适合嵌入式目标硬件,则该范围会缩小,从而生成适合嵌入式目标硬件的类型。此规则可能产生溢出。有时软件不能同时满足优化代码效率和保证数值准确性这两个需求。如果这些内部规则不能满足您对数值准确性或性能的特定需求,请使用下列选项之一:
显式指定输出数据类型。
使用简单的选项 “
Inherit: Same as input
”。显式指定默认数据类型(例如
fixdt(1,32,16)
),然后使用定点工具为您的模型提供数据类型建议。有关详细信息,请参阅fxptdlg
(Fixed-Point Designer)。要指定您自己的继承规则,请使用 “
Inherit: Inherit via back propagation
”,然后使用 Data Type Propagation 模块。有关如何使用此模块的示例说明,请参阅 Signal Attributes 模块库中的 Data Type Propagation Examples 模块。
“
Inherit: Inherit via back propagation
” - 使用驱动模块的数据类型。“
Inherit: Same as input
” - 使用输入信号的数据类型。
依存关系
当输入是小于单精度的浮点数据类型时,“Inherit: Inherit via internal rule
” 输出数据类型取决于 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 input' | 'Inherit: Inherit via back propagation' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
锁定输出数据类型设置以防止被定点工具更改 — 防止定点工具覆盖输出数据类型
off
(默认) | on
选择此参数可防止定点工具覆盖您在模块上指定的输出数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)。
编程用法
模块参数:LockScale |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
整数舍入模式 — 定点运算的舍入模式
“向下
” (默认) | “向上
” | “收敛
” | “最邻近值
” | “舍入
” | “最简
” | “零
”
指定定点运算的舍入模式。有关详细信息,请参阅舍入 (Fixed-Point Designer)。
模块参数始终舍入到最接近的可表示值。要控制模块参数的舍入方法,请在封装字段中使用 MATLAB® 舍入函数输入表达式。
编程用法
模块参数:RndMeth |
类型:字符向量 |
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
默认值:'Floor' |
对整数溢出进行饱和处理 — 溢出操作的方法
off
(默认) | on
指定对溢出是进行饱和处理还是绕回处理。
操作 | 原理说明 | 对溢出的影响 | 示例 |
---|---|---|---|
选中此复选框 ( | 您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。 | 将溢出饱和处理为数据类型能够表示的最小值或最大值。 |
|
不选中此复选框 ( | 您需要优化所生成代码的效率。 您希望避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除。 | 溢出会绕回到由数据类型表示的适当值。 |
|
如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。通常,代码生成过程可以检测何时不会发生溢出。在这种情况下,代码生成器不会生成饱和代码。
编程用法
模块参数:SaturateOnIntegerOverflow |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
参数属性
参数最小值 — 指定增益的最小值
[]
(默认) | 标量
指定增益的最小值。默认值为 []
(未指定)。Simulink 使用此值来执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数:ParamMin |
类型:字符向量 |
值:标量 |
默认值:'[ ]' |
参数最大值 — 指定增益的最大值
[]
(默认) | 标量
指定增益的最大值。默认值为 []
(未指定)。Simulink 使用此值来执行:
参数范围检查(请参阅指定模块参数的最小值和最大值)
定点数据类型的自动定标
编程用法
模块参数:ParamMax |
类型:字符向量 |
值:标量 |
默认值:'[ ]' |
参数数据类型 — 指定 Gain 参数的数据类型
Inherit: Inherit via internal rule
(默认) | Inherit: Same as input
| Inherit: Inherit from 'Gain'
| “double
” | “single
” | “half
” | “int8
” | “uint8
” | “int16
” | “uint16
” | “int32
” | “uint32
” | “int64
” | “uint64
” | “fixdt(1,16)
” | “fixdt(1,16,0)
” | “fixdt(1,16,2^0,0)
” | “<data type expression>
”
指定增益参数的数据类型。
当参数数据类型设置为“通过内部规则继承
”时调节增益参数值
将参数数据类型设置为“继承:通过内部规则继承
”允许 Gain 模块基于内部启发式方法选择数据类型,该算法查看当前增益值,并提供全精度数据类型来表示当前增益值。当您更新图时,Simulink 会推断出一种适用于增益值 3
的高精度且无范围损失的数据类型。例如,使用这种启发式方法,如果指定的增益值是 3
,则 Gain 模块推断出 sfix32_En29
的所选数据类型。因此,这种推断出的数据类型无法保留大于 4
的值。在仿真期间,如果将增益值调节为 6
,则所选数据类型中会发生溢出,并且该行为是非预期行为。
使用此参数数据类型设置调节参数时,请指定参数最小值和参数最大值参数。这些设置指定 Simulink 在仿真期间您需要的值的范围,并允许 Simulink 提供具有足够范围的全精度数据类型,以支持在指定范围内安全调节增益值。
编程用法
模块参数: ParamDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule | 'Inherit: Same as input' | 'Inherit: Inherit via back propagation' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' , 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 Verilog 代码和 VHDL 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
您可以在 Gain 模块中使用可调参数,用于 HDL 代码生成。有关详细信息,请参阅Generate DUT Ports for Tunable Parameters (HDL Coder)。
ConstMultiplierOptimization | 描述 |
---|---|
none (默认值) | 默认情况下,HDL Coder 不执行 CSD 或 FCSD 优化。为 Gain 模块生成的代码会保留乘法器运算。 |
csd | 当您指定此选项时,生成的代码会使用正则有符号数 (CSD) 方法减少模型使用的面积,同时保持或提高时钟速度。CSD 用加减运算取代乘法器运算。 CSD 使用尽可能少的非零位来表示二进制数,从而最大程度地减少常量乘法所需的加法运算次数。 |
fcsd | 此选项使用分解的 CSD (FCSD) 方法,该方法使用对操作数的某些因子的移位相加/减运算来代替乘法器运算。这些因子通常是质数,但也可以是接近 2 的幂的数,这有利于面积缩减。您可以通过 FCSD 实现更大的面积缩减,但这会以降低时钟速度为代价。 |
auto | 当您指定此选项时,代码生成器会在 CSD 或 FCSD 优化之间进行选择。代码生成器根据所需加法器的数量选择可产生最大面积效率实现的优化。当您指定 |
通用 | |
---|---|
ConstMultiplierOptimization | 正则有符号数 (CSD) 或因子化 CSD 优化。默认值为“ |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线处理不会重新分发这些寄存器。默认值为 |
DSPStyle | 乘法器映射的综合属性。默认值为“ |
InputPipeline | 要在生成的代码中插入的输入流水线级数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线级数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
注意
对于增益参数的某些值,本机浮点以不同方式实现算法,而不是使用乘法器。例如,如果您将增益参数设置为 1
,生成的模型使用一条线将输入传递给输出。如果您将增益参数设置为 -1
,生成的模型会显示 Unary Minus 模块,该模块会反转输入信号的极性。此实现可减少目标平台上的延迟和资源使用量。
本机浮点 | |
---|---|
HandleDenormals | 指定是否希望 HDL Coder 在设计中插入额外的逻辑来处理非正规数字。非规范数是量级非常小、必须使用包含前导零的尾数才能表示的浮点数。默认值为 “ |
LatencyStrategy | 指定对于浮点运算符是否将设计中的模块映射到 |
NFPCustomLatency | 要指定值,请将 LatencyStrategy 设置为 |
MantissaMultiplyStrategy | 指定在代码生成期间如何实现尾数乘法运算。通过使用不同设置,您可以控制目标 FPGA 设备上 DSP 的使用。默认值为 “ |
此模块支持复信号的代码生成。
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)