对输入执行乘法累积操作
HDL编码器/ HDL操作
的Multiply-Accumulate块对输入执行此操作一个
,b
,和偏见c
计算结果数据库
.
dataOut =(一个求和。* b) + c
默认情况下,块以向量模式操作。输入一个
和b
可以是标量、向量或二维矩阵。默认情况下,偏差值c
等于零。该块计算输入的点产品一个
和b
.可以指定一个非零值c
通过使用对话框
或者输入端口
随着源.该块将此偏置添加到DOT产品中一个
和b
.倍增操作是完全精确的,而不管输出数据类型设置。的输出数据类型和整数舍入模式设置适用于添加操作。
通过使用操作模式设置时,可以指定流的操作模式Multiply-Accumulate块。对于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
—开始积累控制信号标量
|向量
|矩阵
|数组
|公共汽车
端口提供控制信号,开始积累。建议您使用a布尔
数据类型信号作为端口的输入。开始从。获取累积输出值数据库信号,startIn和validIn信号必须高。的数据库信号产生下一个时钟周期的累积结果。
要启用该端口,请设置操作模式来流-使用开始和结束端口
.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
validIn
—有效的输入控制信号标量
|向量
|矩阵
|数组
|公共汽车
端口提供控制信号以指示输入信号有效累积。建议您使用a布尔
数据类型信号作为端口的输入。开始从。获取累积输出值数据库信号,validIn和startIn信号必须高。的数据库信号产生下一个时钟周期的累积结果。的validIn信号优先级高于startIn和endIn信号。
要启用该端口,请设置操作模式来流-使用开始和结束端口
或者流-使用样本的数量
.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
endIn
-积累控制信号结束标量
|向量
|矩阵
|数组
|公共汽车
提供控制信号以指示积累结束的端口。你可以使用startIn和endIn信号与validIn表示包含累积输出的帧的信号。
要启用该端口,请设置操作模式来流-使用开始和结束端口
然后选择结束输入和输出端口.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
数据库
——输出信号标量
|向量
|矩阵
|数组
|公共汽车
从乘积操作生成输出数据的端口。默认情况下,块使用向量
运算方式,并计算输入信号的点积,并加上偏差来产生结果。如果指定流操作模式为操作模式,值的价值数据库信号取决于您提供的控制信号。输出信号的数据类型与累加器的数据类型相同。
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
开始
—开始累积输出控制信号标量
|向量
|矩阵
|数组
|公共汽车
产生输出控制信号以指示积累开始的端口。当两个validIn和startIn高,开始信号在下一个时钟周期变得高。它的时钟周期开始变高表示框架的开始和那个数据库信号开始产生有效的累积输出。
要启用该端口,请设置操作模式来流-使用开始和结束端口
然后选择开始输出端口.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
validOut
—有效输出控制信号标量
|向量
|矩阵
|数组
|公共汽车
产生输出控制信号的端口,以指示数据库信号是有效的。当validIn信号变高,则validOut信号在下一个时钟周期变得高,表明数据库是有效的。
要启用该端口,请设置操作模式来流-使用开始和结束端口
然后选择有效的输出端口.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
endOut
- 累积输出控制信号结束标量
|向量
|矩阵
|数组
|公共汽车
产生输出控制信号以指示积累结束的端口。你可以利用时钟周期之间的时间开始信号变高,何时变高endOut信号变高以指示包含累积输出的有效帧。
要启用该端口,请设置操作模式来流-使用开始和结束端口
然后选择结束输入和输出端口.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
countOut
-计数输出控制信号标量
|向量
|矩阵
|数组
|公共汽车
产生输出控制信号的端口,以指示累积的样本数。该信号的值增加1
对您指定的值数量的样品.只要validIn信号是高的countOut增量依次1
每个时钟周期。
要启用该端口,请设置操作模式来流-使用样本的数量
然后选择计算输出端口.
数据类型:单
|双
|INT8.
|int16
|int32
|uint8
|uint16
|uint32
|固定点
操作模式
-输入的积累方式“向量”
(默认)|'流媒体-使用开始和结束端口'
|“流—使用样本数量”
您可以指定操作模式为:
向量
:您可以使用Scalar或Vectors作为输入。该块执行输入的点产品u1
和u2
并增加偏见k
产生结果。
流-使用开始和结束端口
:使用标量输入生成HDL代码。在此模式下,您可以使用startIn和endIn控制信号来确定何时开始和停止积累。输出数据是有效的validIn是很高的。
流-使用样本的数量
:使用标量输入生成HDL代码。在此模式下,可以指定数量的样品并使用countIn控制信号来确定何时开始和停止积累。输出数据是有效的validIn是很高的。
块参数:opMode |
类型:特征向量 |
价值:“向量” |'流媒体-使用开始和结束端口' |“流—使用样本数量” |
默认值:“向量” |
偏见
—加到输入点积的偏移量{' 0.0 '}
(默认)你可以指定偏差:
源作为对话框
.然后,指定价值.
源作为输入端口
.这个设置创建一个外部输入端口c
将偏置信号输入到块。
块参数:initValueSetting |
类型:特征向量 |
价值:“对话框” |输入端口的 |
默认值:“对话框” |
如果你设置了源作为对话框
,您可以使用initvalue2.
设置。
块参数:initvalue2. |
类型:特征向量 |
价值:大于或等于零的整数 |
默认值:“0.0” |
数量的样品
-有效累积输出信号的采样数{' 2 '}
(默认)您可以指定数量的样品指定包含有效累积输出样本数的帧数据库.
要启用该端口,请设置操作模式来流-使用样本的数量
.
块参数:num_samples |
类型:特征向量 |
价值:大于或等于零的整数 |
默认值:' 2 ' |
输出数据类型
—块输出的数据类型继承:通过反向传播继承
(默认)将输出数据类型设置为:
继承数据类型的规则,例如继承:与第一次输入相同
.
内置数据类型,例如单
或者int16
.
数据类型对象的名称。例如,一个金宝app仿真软件。NumericType
目的。
计算结果为有效数据类型的表达式,例如,fixdt (1 16 0)
不支持流模式金宝app继承:通过内部规则继承
.当你设置输出数据类型,你可以使用数据类型的助理.要显示助手,单击显示数据类型助手.
块参数:OutDataTypeStr |
类型:特征向量 |
默认值:{'继承:通过内部规则继承} |
要查看可为该参数指定的可能值,请参见屏蔽一些参数.
整数舍入模式
-定点操作舍入模式地板上
(默认)|天花板
|收敛
|最近的
|圆形的
|简单的
|零
指定舍入行动为:
天花板
将正数和负数舍入积极无限。等价于MATLAB®细心
函数。
收敛
四舍五入数到最接近的可表示值。如果出现平局,四舍五入到最接近的偶数。相当于定点设计器™收敛
函数。
地板上
将正数和负数取整数到负无穷。等价于MATLAB地面
函数。
最近的
将数字舍入到最接近的可代表值。如果发生扎带,则朝向积极的无限度。相当于固定点设计师最近的
函数。
圆形的
四舍五入数到最接近的可表示值。如果出现平局,将正数舍入到正无穷,将负数舍入到负无穷。相当于固定点设计师轮
函数。
简单的
在向底四舍五入和向零四舍五入之间选择,以生成尽可能有效的四舍五入代码。
零
四舍五入数接近零。等价于MATLAB修复
函数。
块参数:RndMeth |
类型:特征向量 |
默认值:{“地板”} |
要查看可为该参数指定的可能值,请参见屏蔽一些参数.
有效的输出端口
—控制validOut输出端口的生成控制生成validOut输出端口。该端口指示是否数据库是有效的。
没有显示validOut输出端口。
显示validOut输出端口。
要启用该端口,请设置操作模式来流-使用样本的数量
或者流-使用开始和结束端口
.
块参数:validOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
结束输入和输出端口
—控制输入端口endIn和输出端口endOut的生成控制生成endIn输入端口和endOut输出端口。端口表示包含有效累加输出的帧的结尾。
没有显示endIn输入端口和endOut输出端口。
显示endIn输入端口和endOut输出端口。
要启用该端口,请设置操作模式来流-使用开始和结束端口
.
块参数:endInandOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
开始输出端口
—startOut输出端口的控制生成控制生成开始输出端口。此端口生成开始表示包含有效累积输出的帧开始的信号。
没有显示开始输出端口。
显示开始输出端口。
要启用该端口,请设置操作模式来流-使用开始和结束端口
.
块参数:开始 |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
计算输出端口
- 控制倒数输出端口的生成控制生成countOut输出端口。此端口生成计数器,该计数器表示包含有效样本的帧。
没有显示countOut输出端口。
显示countOut输出端口。
要启用该端口,请设置操作模式来流-使用样本的数量
.
块参数:countOut |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
与之Multiply-Accumulate块,您可以:
执行矩阵乘法运算。例如,如果你有两个有维度的矩阵输入n-by-m
和M-by-P
,您可以通过使用来计算结果n-by-p
并行乘法累积操作。
通过在FPGA上映射到DSP片,替换滤波块中的乘加运算序列,提高硬件性能。该图显示了如何使用Multiply-Accumulate块的sfir_fixed.
模型。
你可以使用操作模式设置块以指定操作的流模式。当您选择流-使用开始和结束端口
,您将看到三个默认启用的附加设置。设置包括:
有效的输出端口
结束输入和输出端口
开始输出端口
建议您保持这些设置为启用状态。当你应用设置,三个额外的输入端口和三个额外的输出端口出现:
输入端口 | 输出端口 |
---|---|
startIn | 开始 |
validIn | validOut |
endIn | endOut |
该图演示了使用开始端口和结束端口的流操作模式。在本例中,偏差值为8
.
最初,时间validIn很低,数据库是零。在时间1
,两个startIn和validIn变高。因此,validOut在下一个时钟周期变得高数据库开始产生有效的累积输出。在积累,数据库取的值一个和b从上一个时钟周期。例如,在时间t =2 s
,数据库= 1*1 + 8 = 9。
要继续积累,就要做出startIn在下一个时钟周期低,保持validIn高。数据库继续累积输入直到validIn就低。在每一步时间里,数据库计算前一个时钟周期输入的乘积,并将结果与数据库上一个时钟周期的值。例如,在时间t = 3s时,数据库= 2*2 + 9 = 13。
当validIn变低,数据库保存时间t = 5s时的输出值。在t = 5s时,endIn和validIn是很高的。因此,endOut在下一个时钟周期中变高,表示帧的结束。因此t = 2s之间的帧(何时开始是高的),t = 6s(何时endOut很高)表示包含有效输出的帧。
如果startIn,validIn, 和endIn两者都很高,同时只有数据库与这些输入相对应的是在t = 8s时的累积。如果startIn对于多个时钟周期是高的,如果validIn高时,累加器在每个时钟周期复位,如图t = 10s和t = 11s所示。在t = 12时继续累积。
你可以使用操作模式设置块以指定操作的流模式。当您选择流-使用样本的数量
,您将看到默认启用的两个附加设置。设置包括:
有效的输出端口
计算输出端口
建议您保持这些设置为启用状态。当您应用设置时,您有一个额外的输入端口validIn和三个额外的输出端口出现:
endOut
validOut
countOut
该图显示了使用样本数量的操作流模式。在本例中,偏差值为8
和数量的样品是5
.
最初,时间validIn很低,数据库是0
和countOut是1
.在时间1
,validIn就高。因此,validOut在下一个时钟周期变得高数据库开始产生有效的累积输出。在积累,数据库取的值一个和b从上一个时钟周期。例如,在时间t =2 s
,数据库= 1 * 1 =1
.countOut增量依次1
在下一个时钟周期,也就是t =3 s
,countOut成为2
.
要继续积累,保持validIn高。数据库继续累积输入直到validIn就低。当从数据库,countOut成为5
和endOut变为高,表示帧的结束。因此,时间在何时之间countOut是1
当countOut是5表示包含有效输出的帧。
累加器计数器现在被重置countOut从1
.当validIn变得又高,数据库开始积累一组新的值countOut开始递增每个有效的递增数据库.
HDL Coder™提供了影响HDL实现和合成逻辑的其他配置选项。
高密度脂蛋白架构设置 | 描述 |
---|---|
|
此模式选择 |
平行 |
对于大小的输入向量 |
序列号 |
对于大小的输入向量
当您综合您的设计时,根据输入位宽,这个架构映射到FPGA上的一个DSP片。 |
一般 | |
---|---|
约束Outputpipine. | 通过在您的设计中移动现有延迟,在输出时放置的寄存器数量。分布式流水线不会重新分配这些寄存器。默认为 |
InputPipeline | 要插入生成代码的输入管道阶段的数目。分布式管道和受约束的输出管道可以移动这些寄存器。默认为 |
OutputPipeline | 输出流水线阶段以生成的代码插入。分布式管道和受约束的输出管道可以移动这些寄存器。默认为 |
使用复杂信号时,此块可以生成HDL代码,但不会映射到DSP切片。
为精确的映射Multiply-Accumulate块到DSP切片,使用这些复位类型设置,
对于Xilinx.®FPGA板,设置重置类型来同步
.
为阿尔特拉®FPGA板,设置重置类型来异步
.
要设置重置类型,请选择HDL代码生成>全局设置>时钟设置>重置类型.
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。