块实现参数使您能够控制代码生成的特定块实现的细节。看到高密度脂蛋白块参数设置和视图学习如何选择块实现和GUI和命令行参数。
属性名称指定为特征向量。属性值的数据类型是特定于该财产。本节描述每个块的语法实现参数以及参数如何影响生成的代码。
的AdaptivePipelining
子系统参数使您能够设置自适应管道内的一个子系统模型。
自适应管道设置 | 描述 |
---|---|
“继承” (默认) |
使用自适应管道设置父子系统。如果这个子系统是最高级别的子系统,使用自适应管道设置的模式。 |
“上” |
插入自适应管道这个子系统。 |
“关闭” |
不插入自适应管道这个子系统,即使父母子系统启用了自适应流水线。 |
禁用自适应流水线中的一个子系统模型,自适应管道参数设置,AdaptivePipelining
,“关闭”
子系统。
学习如何设置模型级自适应流水线,明白了自适应流水线。
为一个子系统设置自适应流水线的HDL块属性对话框:
右键单击该子系统。
选择HDL代码>高密度脂蛋白块属性。
为AdaptivePipelining中,选择继承,在,或从。
为一个子系统设置自适应流水线从命令行,使用hdlset_param
。例如,关闭自适应流水线的一个子系统,my_dut
:
hdlset_param (“my_dut”、“AdaptivePipelining”、“了”)
hdlset_param
。
的BalanceDelays
子系统参数使您能够设置延迟平衡在一个子系统模型。
BalanceDelays设置 | 描述 |
---|---|
“继承” (默认) |
使用延迟平衡设置父子系统。如果这个子系统是最高级别的子系统,使用延迟平衡设置模型。 |
“上” |
平衡延迟这个子系统。 |
“关闭” |
不平衡延迟这个子系统,即使父母子系统启用了延迟平衡。 |
禁用延迟平衡对于任何子系统在一个模型中,您必须设置模型级延迟平衡参数,BalanceDelays
,“关闭”
。
学习如何设置模型级延迟平衡,明白了平衡延迟。
为一个子系统设置延迟平衡使用HDL块属性对话框:
右键单击该子系统。
选择HDL代码>高密度脂蛋白块属性。
为BalanceDelays中,选择继承,在,或从。
为一个子系统设置延迟平衡从命令行,使用hdlset_param
。例如,关闭延迟平衡子系统,my_dut
:
hdlset_param (“my_dut”、“BalanceDelays”、“了”)
hdlset_param
。
的ClockRatePipelining
子系统参数使您能够设置时钟频率流水线中的一个子系统模型。
时钟频率管道设置 | 描述 |
---|---|
“继承” (默认) |
使用的时钟频率管道设置父子系统。如果这个子系统是最高级别的子系统,使用时钟频率流水线的模型。 |
“上” |
插入时钟频率管道这个子系统。 |
“关闭” |
不插入时钟频率管道子系统,即使父母子系统启用了时钟频率流水线。 |
禁用时钟频率管道中的一个子系统模型,设置时钟频率管道参数,ClockRatePipelining
,“关闭”
子系统。
学习如何设置模型级时钟频率流水线,明白了时钟频率流水线。
为一个子系统设置时钟频率流水线使用HDL块属性对话框:
右键单击该子系统。
选择HDL代码>高密度脂蛋白块属性。
为ClockRatePipelining中,选择继承,在,或从。
设置时钟频率为一个子系统从命令行管道,使用hdlset_param
。例如,关闭时钟频率流水线的一个子系统,my_dut
:
hdlset_param (“my_dut”、“ClockRatePipelining”、“了”)
hdlset_param
。
的ConstMultiplierOptimization
实现参数允许您指定使用数字签名的规范(CSD)或分解CSD优化处理系数乘法器操作在生成的代码中。
下面的表显示了ConstMultiplierOptimization
参数值。
ConstMultiplierOptimization设置 | 描述 |
---|---|
“没有” (默认的) |
默认情况下,高密度脂蛋白编码器™不执行CSD或FCSD优化。生成的代码获得块保留乘数操作。 |
“CSD” |
当你指定这个选项,生成的代码会减少使用的区域模型,同时保持或增加时钟速度,使用规范化签名的数字(CSD)技术。CSD取代乘数与加减操作操作。CSD的加法操作所需的数量降至最低,常数乘以代表二进制数与最小的非零数字计数。 |
“FCSD” |
这个选项使用分解CSD (FCSD)技术,取代乘数操作转变和加/减运算操作数的某些因素。这些因素通常是'但也可以接近2的乘方,这有利于面积缩小。这个选项允许您实现更大比CSD面积缩小,成本的降低时钟速度。 |
“汽车” |
当你指定这个选项,高密度脂蛋白编码器CSD或FCSD优化之间的选择。编码器选择收益率最area-efficient实现的优化,基于条要求的数量。当你指定 |
的ConstMultiplierOptimization
参数是用于以下模块:
获得
Stateflow®图表
真值表
MATLAB函数
MATLAB系统
使用ConstrainedOutputPipeline
参数指定一个非负的寄存器数量在块输出。
高密度脂蛋白编码器中移动现有的延迟你的设计来满足您的约束。新注册不补充道。如果有注册少于编码器需要满足你的约束,编码器报告所需的数量之间的差异和实际输出寄存器。您可以添加使用输入或输出流水线延迟你的设计。
限制的分布式流水线不重新分配寄存器指定输出管道。
为一块指定约束输出管道使用GUI:
右键单击并选择HDL代码>高密度脂蛋白块属性。
为ConstrainedOutputPipeline,输入寄存器的数量你想要输出端口。
指定约束输出管道,在命令行输入:
hdlset_param (path_to_block ConstrainedOutputPipeline, number_of_output_registers)
中高
在你的模型,mymodel
,输入:hdlset_param (‘mymodel /中高’,‘ConstrainedOutputPipeline’, 6)
的DistributedPipelining
参数使流水线寄存器分配,速度优化,使您可以提高您的时钟速度,减少你的关键路径。
下表显示的效果DistributedPipelining
和OutputPipeline
参数。
DistributedPipelining | OutputPipeline, nStages | 结果 |
---|---|---|
“关闭” (默认) |
未指定的(nStages 默认为0) |
高密度脂蛋白编码器不插入管道寄存器。 |
nStages > 0 |
编码器插入nStages 输出寄存器的输出子系统,MATLAB函数块,或Stateflow图表。 |
|
“上” |
未指定的(nStages 默认为0) |
编码器不插入管道寄存器。DistributedPipelining 没有效果。 |
nStages > 0 |
编码器的分配nStages 寄存器内的子系统,MATLAB函数块,或Stateflow图,基于关键路径分析。 |
实现与分布式流水线,进一步优化生成的代码执行期间以RTL综合,如果可能的话。
输出数据可能在最初一个无效的状态,如果你插入管道寄存器。为了避免试验台错误产生的无效样本,从最初的禁用输出检查这些样品。有关更多信息,请参见:
如果你使用矩阵相乘块在你的设计中,使用Dots manbetx 845ProductStrategy
指定你想如何实现矩阵乘法。
的Dots manbetx 845ProductStrategy
下表中列出的选项。
Dots manbetx 845ProductStrategy价值 | 描述 |
---|---|
完全平行的 (默认) |
扩展了矩阵乘法操作乘数和蛇。例如,如果你把两个2 x2矩阵相乘,实现使用八个乘数和四条计算结果。 |
“连环Multiply-Accumulate” |
使用串行的架构Multiply-Accumulate块来实现矩阵乘法。 |
“平行Multiply-Accumulate” |
使用平行的架构Multiply-Accumulate块来实现矩阵乘法。 |
DSPStyle
允许您生成代码,包括合成属性乘数映射在你的设计。你可以选择是否要映射一个特定的块的乘数或逻辑硬件。
在Xilinx®目标,生成的代码使用use_dsp48
属性。为阿尔特拉®目标,生成的代码使用multstyle
属性。
的DSPStyle
下表中列出的选项。
DSPStyle价值 | 描述 |
---|---|
“没有” (默认) |
不插入一个DSP映射合成属性。 |
“上” |
插入合成属性,指导合成工具,映射到硬件。 |
“关闭” |
插入合成属性,指导合成工具,映射到硬件逻辑。 |
的DSPStyle
参数是用于以下模块:
获得
产品
产品的元素与体系结构树
子系统
原子子系统
不同的子系统
启用子系统
触发子系统
模型,模型变体与体系结构设置为ModelReference
如果您指定层次扁平化也有一个默认的一个子系统DSPStyle
设置,高密度脂蛋白编码器传播DSPStyle
设置父子系统。
如果平子系统包含获得,产品,或产品的元素块,编码器保持默认DSPStyle
设置和替换默认DSPStyle
设置与扁平的子系统DSPStyle
设置。
生成的代码合成属性取决于:
目标语言
DSPStyle
价值
SynthesisTool
价值
下面的表显示了合成属性生成的代码的例子。
DSPStyle价值 | 开发价值 | SynthesisTool价值 | |
---|---|---|---|
“阿尔特拉第四的二世” |
“Xilinx ISE” “Xilinx Vivado” |
||
“没有” |
“Verilog” |
|
|
硬件描述语言(VHDL)的 |
|
|
|
“上” |
“Verilog” |
|
|
硬件描述语言(VHDL)的 |
|
|
|
“关闭” |
“Verilog” |
|
|
硬件描述语言(VHDL)的 |
|
|
您必须指定一个合成工具使用SynthesisTool
财产。
指定一个合成属性使用HDL块属性对话框:
右键单击该块。
选择HDL代码>高密度脂蛋白块属性。
为DSPStyle中,选择在,从,或没有一个。
从命令行指定一个合成属性,使用hdlset_param
。例如,假设您有一个模型,my_model
DUT的子系统,my_dut
,包含一个。获得块,my_multiplier
。插入一个合成属性映射my_multiplier
DSP,输入:
hdlset_param (“my_model / my_dut my_multiplier’,‘DSPStyle’,‘上’)
hdlset_param
。
当你指定一个默认的DSPStyle
块属性,ConstMultiplierOptimization
属性必须设置为“没有”
。
输入乘数组件不能使用双
数据类型。
获得定不可能是2的幂。
FlattenHierarchy
使您可以删除子系统层次结构生成的HDL代码从你的设计。
FlattenHierarchy设置 | 描述 |
---|---|
“继承” (默认) |
使用层次结构扁平化设置父子系统。如果这个子系统是最高级别的子系统,不平整。 |
“上” |
平这个子系统。 |
“关闭” |
不要把这个子系统,即使父母子系统被夷为平地。 |
扁平的层次结构,子系统必须有以下块属性。
财产 | 要求值 |
---|---|
DistributedPipelining |
“关闭” |
StreamingFactor |
0 |
SharingFactor |
0 |
扁平的层次结构,你也必须有MaskParameterAsGeneric
全球属性设置为“关闭”
。有关更多信息,请参见MaskParameterAsGeneric
。
设置层次扁平化使用HDL块属性对话框:
右键单击该子系统。
选择HDL代码>高密度脂蛋白块属性。
为FlattenHierarchy中,选择在,从,或继承。
从命令行设置层次扁平化、使用hdlset_param
。例如,打开层次扁平化的一个子系统,my_dut
:
hdlset_param (“my_dut”、“FlattenHierarchy”,“上”)
hdlset_param
。
一个子系统不能被夷为平地,如果子系统是:
黑盒的实现或模型参考。
当触发子系统TriggerAsClock
启用。
一个蒙面的子系统,其中包含下列:
公共汽车。
枚举数据类型。
查找表块:一维查找表,二维查找表,余弦,直接LookupTable(一天),Prelookup,正弦,一天的查找表。
MATLAB函数块。
MATLAB系统块。
Stateflow块:图表,状态转换表,顺序查看器。
块直通或操作来实现。看到通过,没有HDL,和级联实现。
这个选项删除子系统边界之前代码生成。它不一定带来HDL代码与一个完全平坦的层次结构。
InputPipeline
允许您指定一个实现与所选块的输入管道。参数值指定的数量输入管道阶段(管道深度)生成的代码。
下面的代码指定一个输入管道深度的两个阶段的每一笔块模型:
sblocks = find_system (gcb BlockType, '和');2 = 1:长度(sblocks) hdlset_param (sblocks {2}, InputPipeline, 2),结束;
的InputPipeline
块上设置没有任何影响,没有一个输入端口。
为管道寄存器生成代码时,高密度脂蛋白编码器附加后缀字符串输入或输出管道寄存器的名称。默认后缀字符串_pipe
。定制后缀字符串,使用管道后缀选项全局设置/一般窗格中HDL代码生成面板的配置参数对话框。另外,您可以通过所需的后缀作为特征向量makehdl
财产PipelinePostfix
。看到PipelinePostfix
了一个例子。
MATLAB函数,您可以使用InstantiateFunctions参数来生成一个硬件描述语言(VHDL)®实体
或Verilog®模块
为每一个函数。高密度脂蛋白编码器生成代码实体
或模块
在一个单独的文件。
的InstantiateFunctions选项MATLAB函数在下表中列出。
InstantiateFunctions设置 | 描述 |
---|---|
“关闭” (默认) |
为内联函数生成代码。 |
“上” |
生成一个硬件描述语言(VHDL) |
设置InstantiateFunctions参数使用HDL块属性对话框:
右键单击MATLAB函数块。
选择HDL代码>高密度脂蛋白块属性。
为InstantiateFunctions中,选择在。
设置InstantiateFunctions从命令行参数,使用hdlset_param
。例如,要生成instantiable代码的功能MATLAB函数块,myMatlabFcn
在您的DUT子系统,myDUT
,输入:
hdlset_param (“my_DUT / my_MATLABFcnBlk”、“InstantiateFunctions”,“上”)
如果你想为一些函数生成instantiable代码而不是其他人,启用的选项来生成instantiable代码功能,和使用coder.inline
。看到coder.inline
获取详细信息。
软件生成的代码内联时:
在条件代码或函数调用为
循环。
任何与一个非常数的函数被调用结构体
输入。
函数的状态,如持久性变量,并多次被称为。
有一个枚举函数设计的任何地方。
如果你使InstantiateFunctions
,UseMatrixTypesInHDL
没有效果。
对于一个级联
架构,您可以使用InstantiateStages参数来生成一个硬件描述语言(VHDL)实体
或Verilog模块
对于每一个计算阶段。高密度脂蛋白编码器生成代码实体
或模块
在一个单独的文件。
InstantiateStages设置 | 描述 |
---|---|
“关闭” (默认) |
在一个硬件描述语言(VHDL)产生级联阶段 |
“上” |
生成一个硬件描述语言(VHDL) |
LoopOptimization
使您能够流或展开循环生成的代码MATLAB函数块。循环流区域的优化;循环展开优化速度。
LoopOptimization设置 | 描述 |
---|---|
“没有” (默认) |
不优化循环。 |
“展开” |
展开循环。 |
“流” |
流循环。 |
选择一个循环优化使用HDL块属性对话框:
右键单击MATLAB函数块。
选择HDL代码>高密度脂蛋白块属性。
为LoopOptimization中,选择没有一个
,展开
,或流媒体
。
选择一个循环优化从命令行,使用hdlset_param
。例如,打开循环流MATLAB函数块,my_mlfn
:
hdlset_param (“my_mlfn”、“LoopOptimization”、“流”)
hdlset_param
。
高密度脂蛋白编码器不能流一个循环:
循环索引项。每次迭代循环指数必须增加1。
有2个或更多的在同一层级嵌套循环在另一个循环。
任何特定的持久性变量是内外循环更新。
高密度脂蛋白编码器可以流循环时持久的变量:
更新后的内循环和阅读外循环。
读内循环和更新外循环。
使用LUTRegisterResetType
块参数来控制合成到一个罗在一个FPGA结构。
LUTRegisterResetType价值 | 描述 |
---|---|
默认的 |
附近地区输出寄存器已经默认复位逻辑。当你产生高密度脂蛋白,将合成的寄存器。 |
没有一个 |
附近地区输出寄存器没有复位逻辑。当你产生高密度脂蛋白,将合成的ROM。 |
您可以指定LUTRegisterResetType
为以下模块:
NCO HDL优化
伽马校正
查找表
与MapPersistentVarsToRAM
实现参数,您可以使用基于ram的持久数组映射MATLAB函数块而不是映射寄存器。
MapPersistentVarsToRAM设置 | 映射的行为 |
---|---|
|
持续的HDL代码生成的数组映射寄存器。 |
|
持续的数组变量映射到内存。限制,请参阅内存映射的限制。 |
当你启用内存映射,一个持久的数组或用户定义的系统对象™私有财产映射到内存块当所有下列条件是正确的:
每个读或写访问仅供单个元素。例如,子矩阵和数组副本不允许访问。
不是read-dependent地址计算逻辑。例如,计算一个读或写地址使用数据读取从数组中是不允许的。
持久变量或用户定义的系统对象私人属性初始化为0,如果他们有一个循环依赖。例如,如果你有两个持久性变量,A和B,你有一个循环依赖如果取决于B, B取决于。
如果一个访问在一个条件语句,条件语句只使用简单的逻辑表达式(& &
,| |
,~
)或关系运算符。例如,在下面的代码中,r1
没有映射到内存:
如果(mod(我,2)> 0)= r1 (u);其他r1 (i) = u;结束
重写复杂的条件,如条件,调用函数,通过将它们分配给临时变量,使用条件语句中的临时变量。例如,映射r1
RAM,重写前面的代码如下:
temp = mod(我,2);如果(临时> 0)= r1 (u);其他r1 (i) = u;结束
持续的数组或用户定义的系统对象私有财产价值取决于外部输入。
例如,在下面的代码中,bigarray
没有映射到内存,因为它不取决于什么u
:
函数z = foo (u)持续问bigarray如果isempty(问)问= fi(0, 1, 16日,10日hdlfimath);bigarray = uint8 (0 (1024 1));结束z = u +问;idx = uint8(问);temp = bigarray (idx + 1);问(:)=问+ fi(0, 1, 1, 16日hdlfimath) +温度;bigarray (idx + 1) = idx;
RAMSize
大于或等于RAMMappingThreshold
价值。RAMSize
是产品NumElements *字*的复杂性
。
NumElements
数组中元素的个数。
字
的比特数表示的数据类型数组。
复杂性
2对数组是一个复杂的基本类型;否则1。
如果上面的条件是假的,持久的数组或用户定义的系统对象私有财产在HDL代码映射到一个寄存器。
的默认值RAMMappingThreshold
是256。改变阈值,使用hdlset_param
。例如,下面的命令改变阈值的映射sfir_fixed
128位模式:
hdlset_param (' sfir_fixed ', ' RAMMappingThreshold ', 128);
您还可以更改内存映射阈值配置参数对话框。有关更多信息,请参见内存映射阈值(位)部分内存映射。
为例,展示了如何持久的数组变量映射到RAM中MATLAB函数块,看内存映射的MATLAB函数块。
OutputPipeline
允许您指定一个实现与所选块输出管道。参数值指定数量的输出管道阶段(管道深度)生成的代码。
下面的代码指定输出管道深度的两个阶段的每一笔块模型:
sblocks = find_system (gcb BlockType, '和');2 = 1:长度(sblocks) hdlset_param (sblocks {2}, OutputPipeline, 2),结束;
的OutputPipeline
块上设置没有任何影响,没有一个输出端口。
为管道寄存器生成代码时,高密度脂蛋白编码器附加后缀字符串输入或输出管道寄存器的名称。默认后缀字符串_pipe
。定制后缀字符串,使用管道后缀选择在配置参数对话框中,在HDL代码生成>全局设置>一般选项卡。或者,您可以使用PipelinePostfix
财产与makehdl
。看到PipelinePostfix
了一个例子。
另请参阅分布式管道插入MATLAB函数块。
使用ResetType
块参数生成抑制复位逻辑。
ResetType价值 | 描述 |
---|---|
默认的 |
生成复位逻辑。 |
没有一个 |
不产生复位逻辑。 重置不应用于生成的寄存器。因此,模型之间的不匹配万博1manbetx®和生成的代码出现的一些样品在初始阶段,注册时没有完全加载。 为了避免试验台错误在初始阶段,确定所需的样本数量完全加载寄存器。然后,设置忽略输出数据检查(样本)相应的选项。另请参阅IgnoreDataChecking。 |
您可以指定ResetType
为以下模块:
图表
卷积Deinterleaver
卷积的分界
延迟
延迟(DSP系统工具箱™)
一般多路复用Deinterleaver
一般多路分界
MATLAB函数
MATLAB系统
内存
利用延迟
真值表
单位延迟启用
单位延迟
当您设置ResetType来没有一个
对于一个MATLAB函数块,高密度脂蛋白编码器不为MATLAB中的持久性变量生成复位逻辑®代码。
然而,如果你指定块,其他优化编码器可能插入寄存器使用复位逻辑。编码器不抑制复位逻辑一代对这些寄存器。因此,如果你设置ResetType来没有一个
连同其他块优化,生成的代码可能有复位端口在顶层。
抑制复位逻辑生成块使用UI:
右键单击并选择HDL代码>高密度脂蛋白块属性。
为ResetType中,选择没有一个
。
抑制复位逻辑生成,在命令行,输入:
hdlset_param (path_to_block“ResetType”,“没有一个”)
例如,抑制复位逻辑单元延迟块的生成,UnitDelay1
在一个子系统,mySubsys
在命令行输入:
hdlset_param (‘mySubsys / UnitDelay1’、‘ResetType’,‘没有’);
指定一个同步或异步复位,使用ResetType
模型级参数。有关详细信息,请参见重置类型在重新设置。
使用这个参数在最小/最大块指定分区的串行级联结构。默认设置使用最小数量的分区。
产生这 架构…… |
设置SerialPartition…… |
---|---|
Cascade-serial与显式指定分区 | (p1 p2 p3…pN) :一个向量N 整数,N 是串行分区的数量。向量的每个元素指定相应的分区的长度。向量元素之和必须等于输入数据向量的长度。向量元素的值必须按照降序排列,除了最后两个元素可以相等。例如,对于一个输入8个元素,分区3 [5] 或(4 2 2) 是合法的,但分区吗[2 2 2 2] 或(3 2 3) 提高一个错误在代码生成时间。 |
Cascade-serial与自动优化分区 | 0 |
这个属性也可以用于串行滤波器架构。如何配置过滤块,看到SerialPartition。
使用SharingFactor
指定的数量的功能与资源映射到一个共享资源。缺省值是0。看到资源共享。
使用SoftReset
块参数指定是否要生成hardware-friendly同步复位逻辑,或当地复位逻辑仿真软件模拟相匹配的行为。万博1manbetx这个属性是可用的单位延迟可重调块或单位延迟启用复位块。
SoftReset价值 | 描述 |
---|---|
从 (默认) |
生成本地复位逻辑仿真软件模拟相匹配的行为。万博1manbetx |
在 |
生成同步复位逻辑块。该选项生成的代码更高效的合成,但不匹配仿真软件仿真的行为。万博1manbetx |
当SoftReset
设置为“关闭”
,下面的代码生成单位延迟可重调布洛克:
总是@ (posedge clk或posedge重置)开始:Unit_Delay_Resettable_process如果(重置= = 1 'b1)开始Unit_Delay_Resettable_zero_delay < = 1 'b1;Unit_Delay_Resettable_switch_delay < = 2 'b00;其他结束开始如果(enb)开始Unit_Delay_Resettable_zero_delay < = 1 'b0;如果('b1 UDR_reset = = 1)开始Unit_Delay_Resettable_switch_delay < = 2 'b00;其他结束开始Unit_Delay_Resettable_switch_delay < =三机一体;端端端端分配Unit_Delay_Resettable_1 = (UDR_reset | | Unit_Delay_Resettable_zero_delay吗?1 'b1: 1 'b0);分配out0 = (Unit_Delay_Resettable_1 = = 1 'b1 ?2 'b00: Unit_Delay_Resettable_switch_delay);
当SoftReset
设置为“上”
,下面的代码生成单位延迟可重调布洛克:
总是@ (posedge clk或posedge重置)开始:Unit_Delay_Resettable_process如果(重置= = 1 'b1)开始Unit_Delay_Resettable_reg < = 2 'b00;其他结束开始如果(enb)开始('b0 UDR_reset ! = 1)开始Unit_Delay_Resettable_reg < = 2 'b00;其他结束开始Unit_Delay_Resettable_reg < =三机一体;端端端端分配out0 = Unit_Delay_Resettable_reg;
并行数据路径,或向量,转变成系列,标量数据路径time-multiplexing串行数据路径和共享硬件资源。默认是0,实现完全并行数据路径。另请参阅流媒体。
的UseMatrixTypesInHDL
块属性指定是否生成二维矩阵在HDL代码当你有MATLAB矩阵中MATLAB函数块。
UseMatrixTypesInHDL设置 | 描述 |
---|---|
|
为MATLAB生成高密度脂蛋白与指数计算逻辑向量矩阵。这个选项可以使用更多的区域综合硬件。 |
|
为MATLAB矩阵生成HDL矩阵。这个选项可以在合成硬件保存区。 下列条件适用于:
|
生成二维矩阵中HDL代码:
右键单击MATLAB函数块,并选择HDL代码>高密度脂蛋白块属性。
为UseMatrixTypesInHDL中,选择在。
或者,在命令行中,使用makehdl
或hdlset_param
设置UseMatrixTypesInHDL
块属性“上”
。
例如,假设您有一个模型,myModel
一个子系统,dutSubsys
,包含一个MATLAB函数块,myMLFcn
。在myMLFcn HDL代码生成二维矩阵,输入:
hdlset_param (“myModel / dutSubsys / myMLFcn”,“UseMatrixTypesInHDL”,“上”)
的UseRAM
实现参数允许使用基于ram的映射块而不是映射到一个移位寄存器。
UseRAM设置 | 映射的行为 |
---|---|
|
延迟映射到移位寄存器在生成的HDL代码,除了一种情况。有关详细信息,请参见流和分布式管道的影响。 |
|
延迟映射到一个双端口RAM块当下列条件为真时:
如果是假的任何条件,延迟映射到移位寄存器在HDL代码,除非它与其他延迟合并映射到一个内存。有关更多信息,请参见多个延迟映射到内存。 |
这个实现参数是可用的延迟块离散模型库和万博1manbetx延迟块DSP系统工具箱信号操作库。
高密度脂蛋白编码器几个相等长度的延迟也可以合并成一个延迟,然后合并延迟映射到单个内存。这种优化提供了以下好处:
增加了一个内存的占用
地址生成逻辑的共享,减少重复相同的HDL代码
映射的延迟时一只公羊个人延迟不满足阈值
下面的规则控制多个延迟是否可以合并成一个延迟:
延迟必须:
在相同层次的子系统。
样品使用相同的编译时间。
有UseRAM
设置为在
,或者是由流或资源共享。
有相同的ResetType
不能设置没有一个
。
合并后的总字长延期不能超过128位。
的RAMSize
合并后的延迟大于或等于RAMMappingThreshold
价值。RAMSize
是产品DelayLength *字* VectorLength * ComplexLength
。
DelayLength
延迟的总数。
字
的比特数表示的数据类型合并延迟。
VectorLength
是在一个向量的元素数量。VectorLength
1是一个标量延迟。
ComplexLength
2对于复杂的延误;否则1。
RAMMappingThreshold
下列模型是100位。
延迟和Delay1块合并并映射到一个双端口RAM在生成的HDL代码通过满足下列条件:
两种延迟块:
都处于同一水平的层次结构。
样品使用相同的编译时间。
有UseRAM设置为在
在高密度脂蛋白块属性对话框。
有相同的ResetType设置默认的
。
合并后的总字长延迟是28位,128位以下限制。
的RAMSize
合并后的延迟是112位的延迟(4 * 28-bit字长),这是100位的大于阈值的映射。
生成HDL代码模型时,高密度脂蛋白编码器生成额外的文件指定内存映射。编码器将这些文件存储在相同的源位置和其他产生高密度脂蛋白文件,例如,hdlsrc
文件夹中。
当UseRAM
是从
延迟块,HDL编码默认将延迟映射到一个移位寄存器。然而,编码器的变化UseRAM
设置为在
并试图延迟映射到RAM在下列条件:
流媒体是启用的子系统延迟块。
分布式流水线禁用的子系统延迟块。
假设分布式流水线启用的子系统延迟块。
当UseRAM
是从
,延迟块参与以重。
当UseRAM
是在
,延迟块不参与以重。高密度脂蛋白编码器不分手延迟标记为内存映射。
考虑一个与两个子系统延迟三块,常数块,三产品块:
当UseRAM
是在
延迟的延迟块右边,不参与以重。
下面的总结描述是否HDL编码器试图延迟映射到内存而不是移位寄存器。
UseRAM 设置延迟块 |
与延迟块优化支持子系统 | ||
---|---|---|---|
分布式流水线只 | 只流 | 分布式管道和流 | |
在 | 是的 | 是的 | 是的 |
从 | 没有 | 是的,因为映射到内存,而不是一个移位寄存器可以提供一个area-efficient设计。 | 没有 |
VariablesToPipeline
不推荐。使用coder.hdl.pipeline
代替。
VariablesToPipeline参数允许您插入一个流水线寄存器输出的一个或多个MATLAB变量。指定一个变量列表作为特征向量,用空格分开的变量。
另请参阅管道MATLAB表达式。