Multiply-Accumulate
执行multiply-accumulate操作的输入
库:
高密度脂蛋白编码器/ HDL操作
描述
的Multiply-Accumulate输入块执行这个操作一个
,b
和偏见c
计算结果dataOut
。
dataOut =(一个求和。* b) + c
默认情况下,块以矢量模式运行。输入一个
和b
可以是标量、向量或二维矩阵。默认情况下,偏差值c
等于零。块计算输入的点积一个
和b
。您可以指定一个非零值c
通过使用对话框
或输入端口
随着源。块增加了这种偏见的点积一个
和b
。乘法运算精度无关的输出数据类型设置。的输出数据类型和整数舍入模式设置适用于添加操作。
通过使用操作模式设置,您可以指定流的操作模式Multiply-Accumulate块。HDL代码生成,使用流操作模式时,您必须输入标量值。块有两个流模式:流——使用开始和结束端口
和流,使用的样本数量
。当您选择这些流模式时,您可以指定要使用的控制信号的模式。控制信号指定何时开始和结束时积累和输出是有效的。
限制HDL代码生成
标量输入不支持HDL代码生成。金宝app生成的代码块,使用向量输入。对于标量输入,使用Multiply-Add块。
在块矩阵数据类型不支持端口接口。金宝app如果你有矩阵类型信号,使用产品,矩阵相乘在矩阵乘法模式。
不支持流模式操作的块内金宝app复位子系统块HDL代码生成。
港口
输入
一个- - - - - -输入信号
向量
|矩阵
|数组
|公共汽车
港口提供输入。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
b- - - - - -输入信号
标量
|向量
|矩阵
|数组
|公共汽车
港口提供输入。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|布尔
|不动点
|枚举
|公共汽车
c- - - - - -偏差信号
标量
|向量
|矩阵
|数组
|公共汽车
港口提供偏差信号。块将这种偏见添加到输入。确保偏差信号数据类型匹配输入的点积。
依赖关系
要启用这个端口,设置源来输入端口
。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
startIn- - - - - -开始积累的控制信号
标量
|向量
|矩阵
|数组
|公共汽车
港口提供控制信号开始积累。建议您使用布尔
数据类型信号的输入端口。开始获得的累计产值dataOut信号,startIn和validIn信号必须高。的dataOut信号产生下一个时钟周期内的累积结果。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
validIn- - - - - -有效的输入控制信号
标量
|向量
|矩阵
|数组
|公共汽车
港口提供控制信号,以指示输入信号是有效的积累。建议您使用布尔
数据类型信号的输入端口。开始获得的累计产值dataOut信号,validIn和startIn信号必须高。的dataOut信号产生下一个时钟周期内的累积结果。的validIn信号的优先级高于startIn和endIn信号。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
或流,使用的样本数量
。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
endIn- - - - - -积累控制信号
标量
|向量
|矩阵
|数组
|公共汽车
港口提供控制信号指示的积累。您可以使用startIn和endIn信号与validIn信号显示一帧包含累计输出。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
然后选择结束输入和输出端口。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
输出
dataOut- - - - - -输出信号
标量
|向量
|矩阵
|数组
|公共汽车
港口产生的输出数据multiply-accumulate操作。默认情况下,块使用向量
操作方式和计算输入信号的点积,并添加偏见产生的结果。如果你指定一个流的操作模式操作模式,的值dataOut信号取决于你提供的控制信号。的数据类型蓄电池输出信号是相同的。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
startOut- - - - - -开始积累输出控制信号
标量
|向量
|矩阵
|数组
|公共汽车
端口,生成输出控制信号指示积累的开始。当两个validIn和startIn高,startOut信号就会在下一个时钟周期。的时钟周期startOut成为高表示帧的开始,dataOut信号已经开始生产有效累积输出。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
然后选择开始输出端口。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
validOut- - - - - -有效的输出控制信号
标量
|向量
|矩阵
|数组
|公共汽车
港口产生的输出控制信号,以指示dataOut信号是有效的。当validIn信号变高,validOut信号变成高在下一个时钟周期和表示dataOut是有效的。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
然后选择有效的输出端口。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
endOut- - - - - -年底积累输出控制信号
标量
|向量
|矩阵
|数组
|公共汽车
港口产生的输出控制信号指示的积累。您可以使用当之间的时钟周期startOut当信号就高endOut信号变成高来表示一个有效的框架包含累积输出。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
然后选择结束输入和输出端口。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
countOut- - - - - -计算输出控制信号
标量
|向量
|矩阵
|数组
|公共汽车
港口产生的输出控制信号来表示数量的样本积累。这个信号的值增加1
您所指定的值数量的样品。只要validIn信号是高的countOut增量的1
每一个时钟周期。
依赖关系
要启用这个端口,设置操作模式来流,使用的样本数量
然后选择计算输出端口。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|不动点
参数
操作模式- - - - - -的积累方式输入
“向量”
(默认)|“流使用的开始和结束端口”
|“流使用的样本数量”
您可以指定操作模式为:
向量
:你可以使用标量或矢量作为输入。块执行输入的点积u1
和u2
并添加偏见k
产生的结果。流——使用开始和结束端口
:使用标量HDL代码生成的输入。在这种模式下,您可以使用startIn和endIn控制信号,以确定何时启动和停止积累。输出数据是有效的validIn是很高的。流,使用的样本数量
:使用标量HDL代码生成的输入。在这种模式下,你可以指定数量的样品并使用countIn控制信号,以确定何时启动和停止积累。输出数据是有效的validIn是很高的。
编程使用
块参数:opMode |
类型:特征向量 |
值:“向量” |“流使用的开始和结束端口” |“流使用的样本数量” |
默认值:“向量” |
偏见- - - - - -偏移量添加到输入点积
{' 0.0 '}
(默认)
您可以指定偏差:
源作为
对话框
。然后,指定价值。源作为
输入端口
。这个设置创建一个外部输入端口c
输入偏差信号。
编程使用
块参数:initValueSetting |
类型:特征向量 |
值:“对话框” |输入端口的 |
默认值:“对话框” |
如果你设置源作为对话框
,您可以指定使用的初始值initValue2
设置。
块参数:initValue2 |
类型:特征向量 |
值:一个整数大于或等于零 |
默认值:“0.0” |
数量的样品- - - - - -有效的样本数量累计输出信号
{' 2 '}
(默认)
您可以指定数量的样品指定一个框架包含的样本的数量积累有效的输出dataOut。
依赖关系
要启用这个端口,设置操作模式来流,使用的样本数量
。
编程使用
块参数:num_samples |
类型:特征向量 |
值:一个整数大于或等于零 |
默认值:' 2 ' |
输出数据类型- - - - - -数据类型的块的输出
通过反向传播继承:继承
(默认)
设置输出数据类型:
一个规则,继承了一个数据类型,如
继承:首先输入一样
。一个内置的数据类型,例如
单
或int16
。数据类型对象的名称。例如,一个
金宝appSimulink.NumericType
对象。一个表达式,计算一个有效的数据类型,例如,
fixdt (1 16 0)
不支持流模式金宝app继承:继承通过内部规则
。当你设置输出数据类型,你可以使用数据类型的助理。显示助理,单击显示数据类型的助理。
编程使用
块参数:OutDataTypeStr |
类型:特征向量 |
默认值:{“继承:继承通过内部规则”} |
看到可能的值,您可以指定这个参数,看看屏蔽一些参数。
整数舍入模式- - - - - -舍入为定点操作模式
地板上
(默认)|天花板
|收敛
|最近的
|轮
|简单的
|零
舍入操作指定为:
-
天花板
-
积极的和消极的数字到正无穷。相当于MATLAB®
装天花板
函数。 -
收敛
-
轮数到最近的可表示的值。如果发生领带,甚至流传到最近的整数。相当于定点设计师™
收敛
函数。 -
地板上
-
积极的和消极的数字对负无穷。相当于MATLAB
地板上
函数。 -
最近的
-
轮数量到最近的可表示的值。如果发生领带,轮正无穷。相当于定点设计师
最近的
函数。 -
轮
-
轮数到最近的可表示的值。如果发生领带,轮正数负数对正无穷和轮向负无穷。相当于定点设计师
轮
函数。 -
简单的
-
选择舍入朝地板和舍入朝着零之间产生舍入的代码尽可能的高效。
-
零
-
轮对数量为零。相当于MATLAB
修复
函数。
编程使用
块参数:RndMeth |
类型:特征向量 |
默认值:{“地板”} |
看到可能的值,您可以指定这个参数,看看屏蔽一些参数。
有效的输出端口- - - - - -控制代validOut输出端口
(默认)|
控制的一代validOut输出端口。这个端口指示是否dataOut是有效的。
-
从
-
不显示的validOut输出端口。
-
在
-
显示validOut输出端口。
依赖关系
要启用这个端口,设置操作模式来流,使用的样本数量
或流——使用开始和结束端口
。
编程使用
块参数:validOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
结束输入和输出端口- - - - - -控制代endIn输入端口和endOut输出端口
(默认)|
控制的一代endIn输入端口和endOut输出端口。港口显示包含有效积累输出帧的结束。
-
从
-
不显示的endIn输入端口和endOut输出端口。
-
在
-
显示endIn输入端口和endOut输出端口。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
。
编程使用
块参数:endInandOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
开始输出端口- - - - - -控制代startOut输出端口
(默认)|
控制的一代startOut输出端口。这个端口生成startOut信号表明包含有效积累的输出帧的开始。
-
从
-
不显示的startOut输出端口。
-
在
-
显示startOut输出端口。
依赖关系
要启用这个端口,设置操作模式来流——使用开始和结束端口
。
编程使用
块参数:startOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
计算输出端口- - - - - -控制代countOut输出端口
(默认)|
控制的一代countOut输出端口。这个端口生成柜台,表明一个框架包含有效的样本。
-
从
-
不显示的countOut输出端口。
-
在
-
显示countOut输出端口。
依赖关系
要启用这个端口,设置操作模式来流,使用的样本数量
。
编程使用
块参数:countOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
提示
与Multiply-Accumulate块,您可以:
执行矩阵乘法操作。例如,如果你有两个矩阵输入维度
n×m
和M-by-P
通过使用,你可以计算结果N-by-P
multiply-accumulate并行操作。替换一个序列的乘法和加法操作,如过滤块,和提高性能在硬件映射到DSP片FPGA。这个图显示了如何使用Multiply-Accumulate块的
sfir_fixed
模型。
算法
流模式使用开始和结束端口
您可以使用操作模式设置块指定流的操作模式。当您选择流——使用开始和结束端口
,你可以看到三个额外的设置默认启用。设置包括:
有效的输出端口
结束输入和输出端口
开始输出端口
建议你离开这些设置启用。应用设置时,三个额外的输入端口和三个额外的输出端口:
输入端口 | 输出端口 |
---|---|
startIn | startOut |
validIn | validOut |
endIn | endOut |
这幅图描绘了流媒体的操作模式使用开始和结束端口。在这个例子中,偏差值8
。
最初,当validIn很低,dataOut是零。在时间1
,两个startIn和validIn成为高。因此,validOut成为下一个时钟周期和高dataOut开始产生有效积累输出。在积累,dataOut需要的值一个和b从以前的时钟周期。例如,在时间t =2 s
,dataOut= 1 * 1 + 8 = 9。
继续积累,startIn在下一个时钟周期,保持较低validIn高。dataOut继续积累输入之前validIn就低。在每个时间步长,dataOut计算产品的输入结果与先前的时钟周期和资金dataOut从以前的时钟周期值。例如,在时间t = 3,dataOut= 2 * 2 + 9 = 13。
当validIn就低,dataOut把看到的输出值在时间t = 5 s。在t = 5 s,endIn和validIn是很高的。因此,endOut成为高在下一个时钟周期,这表示帧的结束。因此t = 2 s(当之间的帧startOut高)和t = 6 s(什么时候endOut高)表明一个框架包含有效的输出。
如果startIn,validIn,endIn都是高同时,只有吗dataOut相应的输入是积累在t = 8 s。如果startIn高为多个时钟周期,如果validIn高,看到的蓄电池是重置在每个时钟周期t = 10 s和t = 11。继续积累在t = 12。
流模式使用的样本数量
您可以使用操作模式设置块指定流的操作模式。当您选择流,使用的样本数量
,你会看到两个额外的设置默认启用。设置包括:
有效的输出端口
计算输出端口
建议你离开这些设置启用。应用设置时,你有一个额外的输入端口validIn和另外三个输出端口:
endOut
validOut
countOut
这幅图描绘了流媒体的操作模式使用样本的数量。在这个例子中,偏差值8
和数量的样品是5
。
最初,当validIn很低,dataOut是0
和countOut是1
。在时间1
,validIn就高。因此,validOut就在下一个时钟周期,高,dataOut开始产生有效积累输出。在积累,dataOut需要的值一个和b从以前的时钟周期。例如,在时间t =2 s
,dataOut= 1 * 1 =1
。countOut增量的1
在下一个时钟周期,在t =3 s
,countOut就变成了2
。
继续积累,保持validIn高。dataOut继续积累输入之前validIn就低。当五得到有效的输出dataOut,countOut就变成了5
和endOut就高,这表明帧的结束。因此,当之间的时间countOut是1
当countOut5表示帧包含有效的输出。
蓄电池计数器和将被重置countOut从1
。当validIn变得又高,dataOut积累一套新的价值观和开始countOut为每个有效开始递增dataOut。
扩展功能
C / c++代码生成
使用仿真软件生成C和c++代码®编码器™。金宝app
HDL代码生成
生成FPGA和ASIC设计的Verilog和VHDL代码使用HDL编码器™。
影响高密度脂蛋白HDL编码器™提供了额外的配置选项和合成逻辑实现。
高密度脂蛋白架构设置 | 描述 |
---|---|
|
这种模式选择 |
平行 |
为输入向量的大小 |
串行 |
为输入向量的大小
当你综合设计,根据输入宽度,这种架构映射到一个DSP片FPGA。 |
一般 | |
---|---|
ConstrainedOutputPipeline | 寄存器的数量在输出中通过移动现有的延迟你的设计。分布式流水线不重新分配这些寄存器。默认值是 |
InputPipeline | 数量的输入管道阶段生成的代码插入。分布式流水线和限制输出管道可以移动这些寄存器。默认值是 |
OutputPipeline | 数量的输出管道阶段生成的代码插入。分布式流水线和限制输出管道可以移动这些寄存器。默认值是 |
当你使用复杂的信号,这可以产生HDL代码块,但不映射到DSP片。
的映射Multiply-Accumulate块DSP片,使用这些重置类型设置:
在Xilinx®FPGA板,设置重置类型来
同步
。为阿尔特拉®FPGA板,设置重置类型来
异步
。
设置重置类型,选择HDL代码生成>全局设置>时钟设置>重置类型。
版本历史
介绍了R2017b
MATLAB-Befehl
您有窗户的链接geklickt,汪汪汪der diesem MATLAB-Befehl entspricht:
在das MATLAB-Befehlsfenster Fuhren您窝Befehl军队Eingabe来自。浏览器unterstutzen MATLAB-Befehle。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。