主要内容

高密度脂蛋白块属性:将军

概述

块实现参数使您能够控制代码生成的特定块实现的细节。看到设置和视图HDL模型和块参数学习如何选择块实现和GUI和命令行参数。

属性名称指定为特征向量。属性值的数据类型是特定于该财产。本节描述每个块的语法实现参数以及参数如何影响生成的代码。

高密度脂蛋白块库模块的属性

高密度脂蛋白块属性库块被类似于面具参数。当你实例化图书馆块模型,当前高密度脂蛋白块属性库的块复制到的实例,阻止在您的模型中。这些实例的高密度脂蛋白块属性与高密度脂蛋白不同步块的属性库。也就是说,如果你改变的高密度脂蛋白块属性库块,改变不让传播的实例库块,你已经添加到您的模型金宝app®模型。如果你想要的高密度脂蛋白块属性库块与实例的同步模型,创建一个子系统然后把这个块内子系统。高密度脂蛋白块属性的块驻留在库块同步在您的模型中相应的实例。

假设一个库包含一个子系统块与高密度脂蛋白架构设置模块。当你在模型实例化这个块,块实例使用模块随着高密度脂蛋白的架构。如果你改变的HDL架构子系统块在图书馆黑箱,现有的实例子系统阻止在您的模型中仍在使用模块随着高密度脂蛋白的架构。如果你现在添加的实例子系统块从图书馆在你的模型中,得到一个新的块实例复制当前的HDL块属性,因此使用黑箱随着高密度脂蛋白的架构。如果你想要的HDL架构子系统块在图书馆与它同步模型的实例中,创建一个包装器子系统与高密度脂蛋白架构,你想要在这个子系统

AdaptivePipelining

AdaptivePipelining子系统参数使您能够设置自适应管道内的一个子系统模型。

自适应管道设置 描述
“继承”(默认)

使用自适应管道设置父子系统。如果这个子系统是最高级别的子系统,使用自适应管道设置的模式。

“上”

插入自适应管道这个子系统。

“关闭”

不插入自适应管道这个子系统,即使父母子系统启用了自适应流水线。

禁用自适应流水线中的一个子系统模型,自适应管道参数设置,AdaptivePipelining,“关闭”子系统。

学习如何设置模型级自适应流水线,明白了自适应流水线

为一个子系统设置自适应流水线

为一个子系统设置自适应流水线的HDL块属性对话框:

  1. 右键单击该子系统和选择HDL代码>高密度脂蛋白块属性

  2. AdaptivePipelining中,选择继承,,或

为一个子系统设置自适应流水线从命令行,使用hdlset_param。例如,关闭自适应流水线的一个子系统,my_dut:

hdlset_param (“my_dut”,“AdaptivePipelining”,“关闭”)
另请参阅hdlset_param

BalanceDelays

BalanceDelays子系统参数使您能够设置延迟平衡在一个子系统模型。

BalanceDelays设置 描述
“继承”(默认)

使用延迟平衡设置父子系统。如果这个子系统是最高级别的子系统,使用延迟平衡设置模型。

“上” 平衡延迟这个子系统。
“关闭” 不平衡延迟这个子系统,即使父母子系统启用了延迟平衡。

禁用延迟平衡对于任何子系统在一个模型中,您必须设置模型级延迟平衡参数,BalanceDelays,“关闭”。当启用延迟平衡模型,延迟平衡设置个人子系统将被忽略。

学习如何设置模型级延迟平衡,明白了平衡延迟

为一个子系统设置延迟平衡

为一个子系统设置延迟平衡使用HDL块属性对话框:

  1. 右键单击该子系统。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. BalanceDelays中,选择继承,,或

为一个子系统设置延迟平衡从命令行,使用hdlset_param。例如,关闭延迟平衡子系统,my_dut:

hdlset_param (“my_dut”,“BalanceDelays”,“关闭”)
另请参阅hdlset_param

ClockRatePipelining

ClockRatePipelining子系统参数使您能够设置时钟频率流水线中的一个子系统模型。

时钟频率管道设置 描述
“继承”(默认)

使用的时钟频率管道设置父子系统。如果这个子系统是最高级别的子系统,使用时钟频率流水线的模型。

“上”

插入时钟频率管道这个子系统。

“关闭”

不插入时钟频率管道子系统,即使父母子系统启用了时钟频率流水线。

禁用时钟频率管道为模型中的一个子系统,集ClockRatePipelining子系统。

学习如何设置模型级时钟频率流水线,明白了时钟频率流水线

为一个子系统设置时钟频率流水线

为一个子系统设置时钟频率流水线使用HDL块属性对话框:

  1. 右键单击该子系统。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. ClockRatePipelining继承,,或

设置时钟频率为一个子系统从命令行管道,使用hdlset_param。例如,关闭时钟频率流水线的一个子系统,my_dut:

hdlset_param (“my_dut”,“ClockRatePipelining”,“关闭”)

另请参阅

CodingStyle

当你使用多端口切换块,用CodingStyle参数指定是否要生成HDL代码和if - else语句。默认情况下,高密度脂蛋白编码器™生成的if - else语句。如果你有几个多端口切换块在你的模型中,您可以选择指定一个不同的CodingStyle对于每个块。

CodingStyle设置 描述
“ifelse_stmt”(默认的) 生成的if - else语句Verilog代码或在别的语句在硬件描述语言(VHDL)的代码多端口切换块。
“case_stmt” 生成情况下语句Verilog代码或当语句在硬件描述语言(VHDL)代码多端口切换块。

设置CodingStyle多端口切换

设置CodingStyle多端口切换使用高密度脂蛋白块属性对话框:

  1. 右键单击多端口切换块。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. CodingStyle中,选择ifelse_stmtcase_stmt

去看CodingStyle从命令行指定一个子系统,使用hdlget_param。例如,看为一个指定的设置多端口切换块内的一个子系统,my_dut:

hdlget_param (“my_dut /多端口切换”,“CodingStyle”)
ans = ' case_stmt '
另请参阅hdlset_param

ConstMultiplierOptimization

ConstMultiplierOptimization实现参数允许您指定使用数字签名的规范(CSD)或分解CSD优化处理系数乘法器操作在生成的代码中。

下面的表显示了ConstMultiplierOptimization参数值。

ConstMultiplierOptimization设置 描述
“没有”
(默认的)
默认情况下,高密度脂蛋白编码器不执行CSD或FCSD优化。生成的代码获得块保留乘数操作。
“CSD” 当你指定这个选项,生成的代码会减少使用的区域模型,同时保持或增加时钟速度,使用规范化签名的数字(CSD)技术。CSD取代乘数与加减操作操作。CSD的加法操作所需的数量降至最低,常数乘以代表二进制数与最小的非零数字计数。
“FCSD” 这个选项使用分解CSD (FCSD)技术,取代乘数操作转变和加/减运算操作数的某些因素。这些因素通常是'但也可以接近2的乘方,这有利于面积缩小。这个选项允许您实现更大比CSD面积缩小,成本的降低时钟速度。
“汽车”

当你指定这个选项,高密度脂蛋白编码器CSD或FCSD优化之间的选择。编码器选择收益率最area-efficient实现的优化,基于条要求的数量。当你指定“汽车”编码器不使用乘数,除非条件这样CSD或FCSD优化是不可能的(例如,如果设计使用浮点运算)。

ConstMultiplierOptimization参数是用于以下模块:

  • 获得

  • Stateflow®图表

  • 真值表

  • MATLAB函数

  • MATLAB系统

ConstrainedOutputPipeline

使用ConstrainedOutputPipeline参数指定一个非负的寄存器数量在块输出。

高密度脂蛋白编码器中移动现有的延迟你的设计来满足您的约束。新注册不补充道。如果有注册少于编码器需要满足你的约束,编码器报告所需的数量之间的差异和实际输出寄存器。您可以添加使用输入或输出流水线延迟你的设计。

限制的分布式流水线不重新分配寄存器指定输出管道。

如何指定约束输出管道

为一块指定约束输出管道使用GUI:

  1. 右键单击并选择HDL代码>高密度脂蛋白块属性

  2. ConstrainedOutputPipeline,输入寄存器的数量你想要输出端口。

指定约束输出管道,在命令行输入:

hdlset_param (path_to_block“ConstrainedOutputPipeline”number_of_output_registers)
例如,约束6寄存器输出端口的一个子系统,中高在你的模型,mymodel,输入:
hdlset_param (“mymodel /中高辊”,“ConstrainedOutputPipeline”6)

另请参阅

DistributedPipelining

DistributedPipelining子系统参数使流水线寄存器分配,这是一个速度优化,增加你的时钟速度,减少关键路径在一个子系统。

DistributedPipelining设置 描述
“继承”(默认)

使用分布式管道设置父子系统。如果这个子系统是最高级别的子系统,使用分布式管道设置的模式。

“关闭” 高密度脂蛋白编码器不分配管道寄存器手动放置或使用HDL块属性InputPipelineOutputPipeline
“上” HDL编码分配寄存器内的子系统,MATLAB函数块,或Stateflow图表基于关键路径分析。这个设置分发子系统的管道已经手动放置或使用HDL块属性InputPipelineOutputPipeline

提示

输出数据可能在最初一个无效的状态,如果你插入管道寄存器。为了避免试验台错误产生的无效样本,从最初的禁用输出检查这些样品。有关更多信息,请参见忽略输出数据检查(样本)

使分布式流水线为模型中的一个子系统,集DistributedPipelining子系统。

学习如何设置模型级分布式流水线,明白了分布式流水线

为一个子系统设置分布式流水线

为一个子系统设置分布式流水线使用HDL块属性对话框:

  1. 右键单击该子系统。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. DistributedPipelining继承,,或

设置分布式子系统从命令行管道,使用hdlset_param函数。例如,输入:

hdlset_param (路径/ /子系统的,“DistributedPipelining”,“上”)

另请参阅

Dot下载188bet金宝搏ProductStrategy

如果你使用产品块矩阵乘法在你的设计中,使用Dot下载188bet金宝搏ProductStrategy指定你想如何实现矩阵乘法。

Dot下载188bet金宝搏ProductStrategy下表中列出的选项。

Dot下载188bet金宝搏ProductStrategy价值 描述
完全平行的(默认)

扩展了矩阵乘法操作乘数和蛇。例如,如果你把两个2 x2矩阵相乘,实现使用四个乘数和两个蛇来计算结果。

请注意

Dot下载188bet金宝搏ProductStrategy必须设置为完全平行的当你使用本机浮点模式。

“完全平行Scalarized”

扩展了矩阵乘法操作乘数和蛇。例如,如果你把两个2 x2矩阵相乘,实现使用八个乘数和四条计算结果。使用这个选项对于小尺寸的矩阵,当你想启用共享在乘数和蛇。

“连环Multiply-Accumulate”

使用串行的架构Multiply-Accumulate块来实现矩阵乘法。

在此体系结构中,时钟频率必须超过你指定的时钟频率平行体系结构。你可以看到时钟频率的时钟代码生成报告的摘要信息。

“平行Multiply-Accumulate”

使用平行的架构Multiply-Accumulate块来实现矩阵乘法。

DSPStyle

DSPStyle允许您生成代码,包括合成属性乘数映射在你的设计。你可以选择是否要映射一个特定的块的乘数或逻辑硬件。

在Xilinx®目标,生成的代码使用use_dsp属性。为阿尔特拉®目标,生成的代码使用multstyle属性。

DSPStyle下表中列出的选项。

DSPStyle价值 描述
“没有”(默认)

不插入一个DSP映射合成属性。

“上”

插入合成属性,指导合成工具,映射到硬件。

“关闭”

插入合成属性,指导合成工具,映射到硬件逻辑。

DSPStyle参数是用于以下模块:

  • 获得

  • 产品

  • 产品的元素与体系结构树

  • 子系统

  • 原子子系统

  • 不同的子系统

  • 启用子系统

  • 触发子系统

  • 模型与体系结构设置为ModelReference

层次结构扁平化的行为

如果您指定层次扁平化也有一个默认的一个子系统DSPStyle设置,高密度脂蛋白编码器传播DSPStyle设置父子系统。

如果平子系统包含获得,产品,或产品的元素块,编码器保持默认DSPStyle设置和替换默认DSPStyle设置与扁平的子系统DSPStyle设置。

在生成的代码中合成的属性

生成的代码合成属性取决于:

  • 目标语言

  • DSPStyle价值

  • SynthesisTool价值

下面的表显示了合成属性生成的代码的例子。

DSPStyle价值 开发价值 SynthesisTool价值
“阿尔特拉第四的二世” “Xilinx ISE”
“Xilinx Vivado”
“没有” “Verilog”

线签署[32:0]m4_out1;

线签署[32:0]m4_out1;

硬件描述语言(VHDL)的

m4_out1:信号;

m4_out1:信号;

“上” “Verilog”

(* multstyle = " dsp " *)线(32:0)m4_out1签署;

(* use_dsp = " yes " *)线(32:0)m4_out1签署;

硬件描述语言(VHDL)的

属性multstyle:字符串;

属性multstyle m4_out1:信号“dsp”;

属性use_dsp:字符串;

属性use_dsp m4_out1:信号是“是”;

“关闭” “Verilog”

(* multstyle =“逻辑”*)线(32:0)m4_out1签署;

(* use_dsp =“不”*)线签署[32:0]m4_out1;

硬件描述语言(VHDL)的

属性multstyle:字符串;

属性multstyle m4_out1:信号是“逻辑”;

属性use_dsp:字符串;

属性use_dsp m4_out1:信号是“不”;

合成属性规范要求

您必须指定一个合成工具使用SynthesisTool财产。

如何指定一个合成属性

指定一个合成属性使用HDL块属性对话框:

  1. 右键单击该块。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. DSPStyle中,选择,,或没有一个

从命令行指定一个合成属性,使用hdlset_param。例如,假设您有一个模型,my_modelDUT的子系统,my_dut,包含一个。获得块,my_multiplier。插入一个合成属性映射my_multiplierDSP,输入:

hdlset_param (“my_model / my_dut / my_multiplier”,“DSPStyle”,“上”)
另请参阅hdlset_param

为合成属性限制规范

  • 当你指定一个默认的DSPStyle块属性,ConstMultiplierOptimization属性必须设置为“没有”

  • 输入乘数组件不能使用数据类型。

  • 获得定不可能是2的幂。

FlattenHierarchy

FlattenHierarchy使您可以删除子系统层次结构生成的HDL代码从你的设计。

FlattenHierarchy设置 描述
“继承”(默认) 使用层次结构扁平化设置父子系统。如果这个子系统是最高级别的子系统,不平整。
“上” 平这个子系统。
“关闭” 不要把这个子系统,即使父母子系统被夷为平地。

扁平的层次结构,你也必须有MaskParameterAsGeneric全球属性设置为“关闭”。有关更多信息,请参见从蒙面子系统生成参数化HDL代码

如何平层次结构

设置层次扁平化使用HDL块属性对话框:

  • 应用程序选项卡上,选择高密度脂蛋白编码器。的HDL代码选项卡出现了。选择子系统然后点击高密度脂蛋白块属性。为FlattenHierarchy中,选择,,或继承

  • 右键单击子系统并选择HDL代码>高密度脂蛋白块属性。为FlattenHierarchy中,选择,,或继承

从命令行设置层次扁平化、使用hdlset_param。例如,打开层次扁平化的一个子系统,my_dut:

hdlset_param (“my_dut”,“FlattenHierarchy”,“上”)
另请参阅hdlset_param

限制等级压扁

一个子系统不能被夷为平地,如果子系统是:

  • 一个同步子系统或使用国家控制块在同步模式。

  • 一个模型参考实现。

  • 当触发子系统使用触发信号作为时钟启用。

  • 一个蒙面的子系统,其中包含下列:

    • 公共汽车。

    • 枚举数据类型。

    • 查找表:一维查找表,二维查找表,余弦HDL优化,直接LookupTable(一天),Prelookup,正弦HDL优化,一天的查找表

    • MATLAB系统块。

    • Stateflow块:图表,状态转换表,顺序查看器

    • 块直通或操作来实现。看到通过,没有HDL,和级联实现

请注意

这个选项删除子系统边界之前代码生成。它不一定带来HDL代码与一个完全平坦的层次结构。

GuardIndexVariables

GuardIndexVariables使您能够指定数组下标是否提升的条件语句。当你启用某些优化内存映射等循环流,共享,等等,表达式是搬出去数组的索引。创建一个临时变量的表达式可能导致一个索引,在模拟误差范围。当您启用该选项为您的目标硬件生成的代码可能是低效的。

GuardIndexVariables设置 描述
“关闭”(默认) 将数组下标表达式的条件语句,创建一个临时变量的表达式。
“上” 不要移动数组下标的表达式的条件语句,不创建一个临时变量的表达式。

这张图片显示了生成的代码启用和禁用的选项。当GuardIndexVariable选择是数组下标变量还没有决定的条件循环,可能出去。当GuardIndexVariable选择是数组下标变量idx由条件决定循环防止在模拟一个数组下标越界错误。

如果你得到一个索引访问期间违反误差仿真,使用这个选项。

InputPipeline

InputPipeline允许您指定一个实现与所选块的输入管道。参数值指定的数量输入管道阶段(管道深度)生成的代码。分布式流水线可以移动输入管道优化设计。防止分布式流水线输入管道从一个指定的点在你的设计中,使用ConstrainedOutputPipeline参数。

下面的代码指定一个输入管道深度的两个阶段的每一笔块模型:

sblocks = find_system (gcb),“BlockType”,“和”);2 = 1:长度(sblocks) hdlset_param (sblocks {2},“InputPipeline”2),结束;

请注意

InputPipeline块上设置没有任何影响,没有一个输入端口。

为管道寄存器生成代码时,高密度脂蛋白编码器附加后缀字符串输入或输出管道寄存器的名称。默认后缀字符串_pipe。定制后缀字符串,使用管道后缀选项全局设置/一般窗格中HDL代码生成面板的配置参数对话框。另外,您可以通过所需的后缀作为特征向量makehdl财产PipelinePostfix。例如,看到的管道后缀

InstantiateFunctions

MATLAB函数,您可以使用InstantiateFunctions参数来生成一个硬件描述语言(VHDL)®实体或Verilog®模块为每一个函数。高密度脂蛋白编码器生成代码实体模块在一个单独的文件。

InstantiateFunctions选项MATLAB函数在下表中列出。

InstantiateFunctions设置 描述
“关闭”(默认)

为内联函数生成代码。

“上”

生成一个硬件描述语言(VHDL)实体或Verilog模块对于每一个功能,并保存模块实体在一个单独的文件。

如何生成Instantiable代码功能

设置InstantiateFunctions参数使用HDL块属性对话框:

  1. 右键单击MATLAB函数块。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. InstantiateFunctions中,选择

设置InstantiateFunctions从命令行参数,使用hdlset_param。例如,要生成instantiable代码的功能MATLAB函数块,myMatlabFcn在您的DUT子系统,myDUT,输入:

hdlset_param (“my_DUT / my_MATLABFcnBlk”、“InstantiateFunctions”,“上”)

生成代码内联的特定功能

如果你想为一些函数生成instantiable代码而不是其他人,启用的选项来生成instantiable代码功能,和使用coder.inline。看到coder.inline获取详细信息。

限制为Instantiable代码生成功能

软件生成的代码内联时:

  • 在条件代码或函数调用循环。

  • 任何与一个非常数的函数被调用结构体输入。

  • 函数的状态,如持久性变量,并多次被称为。

  • 有一个枚举函数设计的任何地方。

InstantiateStages

对于一个级联架构,您可以使用InstantiateStages参数来生成一个硬件描述语言(VHDL)实体或Verilog模块对于每一个计算阶段。高密度脂蛋白编码器生成代码实体模块在一个单独的文件。

InstantiateStages设置 描述
“关闭”(默认)

在一个硬件描述语言(VHDL)产生级联阶段实体或Verilog模块

“上”

生成一个硬件描述语言(VHDL)实体或Verilog模块对于每一个级联阶段,并保存模块实体在一个单独的文件。

LoopOptimization

LoopOptimization使您能够流或展开循环生成的代码MATLAB函数块。循环流区域的优化;循环展开优化速度。

请注意

如果你指定MATLAB Datapath公司的架构MATLAB函数块,你只能展开循环。流循环,您可以使用流优化通过指定一个StreamingFactor。看到高密度脂蛋白在MATLAB优化功能块边界使用MATLAB Datapath公司的架构

LoopOptimization设置 描述
“没有”(默认) 不优化循环。
“展开” 展开循环。
“流” 流循环。

如何优化MATLAB函数块For循环

选择一个循环优化使用HDL块属性对话框:

  1. 右键单击MATLAB函数块。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. LoopOptimization中,选择没有一个,展开,或流媒体

选择一个循环优化从命令行,使用hdlset_param。例如,打开循环流MATLAB函数块,my_mlfn:

hdlset_param (“my_mlfn”,“LoopOptimization”,“流”)
另请参阅hdlset_param

限制MATLAB函数块循环优化

高密度脂蛋白编码器不能流一个循环:

  • 循环索引项。每次迭代循环指数必须增加1。

  • 有2个或更多的在同一层级嵌套循环在另一个循环。

  • 任何特定的持久性变量是内外循环更新。

高密度脂蛋白编码器可以流循环时持久的变量:

  • 更新后的内循环和阅读外循环。

  • 读内循环和更新外循环。

LUTRegisterResetType

使用LUTRegisterResetType块参数来控制合成到一个罗在一个FPGA结构。

LUTRegisterResetType价值 描述
默认的

附近地区输出寄存器已经默认复位逻辑。当你产生高密度脂蛋白,将合成的寄存器。

没有一个

附近地区输出寄存器没有复位逻辑。当你产生高密度脂蛋白,将合成的ROM。

您可以指定LUTRegisterResetType为以下模块:

  • 伽马校正

  • 查找表

MapPersistentVarsToRAM

MapPersistentVarsToRAM实现参数,您可以使用基于ram的持久数组映射MATLAB函数块而不是映射寄存器。

MapPersistentVarsToRAM设置 映射的行为

持续的HDL代码生成的数组映射寄存器。

持续的数组变量映射到内存。限制,请参阅内存映射的限制

内存映射的限制

当你启用内存映射,一个持久的数组或用户定义的系统对象™私有财产映射到内存块当所有下列条件是正确的:

  • 每个读或写访问仅供单个元素。例如,子矩阵和数组副本不允许访问。

  • 不是read-dependent地址计算逻辑。例如,计算一个读或写地址使用数据读取从数组中是不允许的。

  • 持久变量或用户定义的系统对象私人属性初始化为0,如果他们有一个循环依赖。例如,如果你有两个持久性变量,A和B,你有一个循环依赖如果取决于B, B取决于。

  • 如果一个访问在一个条件语句,条件语句只使用简单的逻辑表达式(& &,| |,~)或关系运算符。例如,在下面的代码中,r1没有映射到内存:

    如果(mod(我,2)> 0)= r1 (u);其他r1 (i) = u;结束

    重写复杂的条件,如条件,调用函数,通过将它们分配给临时变量,使用条件语句中的临时变量。例如,映射r1RAM,重写前面的代码如下:

    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。

  • 访问持久性变量你映射到内存不能在一个循环,如循环,除非循环展开。有关更多信息,请参见coder.unroll

  • 访问持久性变量,你不能在一个嵌套映射到内存条件语句,如一个嵌套如果声明,或嵌套开关声明。

如果上面的条件是假的,持久的数组或用户定义的系统对象私有财产在HDL代码映射到一个寄存器。

RAMMappingThreshold

的默认值RAMMappingThreshold是256。改变阈值,使用hdlset_param。例如,下面的命令改变阈值的映射sfir_fixed128位模式:

hdlset_param (“sfir_fixed”,“RAMMappingThreshold”,128);

您还可以更改内存映射阈值配置参数对话框。有关更多信息,请参见内存映射阈值(位)部分内存映射参数

例子

为例,展示了如何持久的数组变量映射到RAM中MATLAB函数块,看内存映射的MATLAB函数块

MapToRAM

使用MapToRAM词根地图查找表(LUT) RAM。

模拟内存延迟启用。,MapToRAM房地产是禁用的正弦HDL优化和余弦HDL优化块。

MapToRAM设置 映射的行为
继承(默认)

模型设置查找表映射到内存使用行为。

块查找表(附近地区)映射到逻辑片FPGA。

块查找表(附近地区)映射到内存。

MapToRAM考虑增加延迟

当你使块属性MapToRAM或全球选项LUTMapToRAM和合成模型的工具赛灵思公司阿尔特拉,一个单位延迟没有重置后添加查找表块。由于添加单位延迟,插入额外的延迟和延迟平衡在生成的HDL代码和生成的模型。为了避免额外的延迟,你可以添加一个延迟块与高密度脂蛋白块属性ResetType设置为没有一个查找表块在原始模型。

OutputPipeline

OutputPipeline允许您指定一个实现与所选块输出管道。参数值指定数量的输出管道阶段(管道深度)生成的代码。分布式流水线可以移动输出管道优化设计。防止分布式管道将输出管道从一个指定的点在你的设计中,使用ConstrainedOutputPipeline参数。

这个代码指定输出管道深度的两个阶段的每一笔块模型:

sblocks = find_system (gcb),“BlockType”,“和”);2 = 1:长度(sblocks) hdlset_param (sblocks {2},“OutputPipeline”2),结束;

请注意

OutputPipeline块上设置没有任何影响,没有一个输出端口。

为管道寄存器生成代码时,高密度脂蛋白编码器附加后缀字符串输入或输出管道寄存器的名称。默认后缀字符串_pipe。定制后缀字符串,使用管道后缀选择在配置参数对话框中,在HDL代码生成>全局设置>一般选项卡。或者,您可以使用PipelinePostfix财产与makehdl。例如,看到的管道后缀

另请参阅分布式管道插入MATLAB函数块

PreserveUpstreamLogic

删除无关的逻辑控制。无关的逻辑是连接上游的一个逻辑《终结者》块。这个属性是可用的《终结者》块。

PreserveUpstreamLogic选项 PreserveUpstreamLogic行为
(默认)

逻辑连接的上游《终结者》块不是保存在HDL代码生成。

逻辑连接的上游《终结者》块保存在HDL代码生成。

例如,看到“上游逻辑保留未使用的端口”一节无关的优化港口HDL代码仿真软件模型金宝app

RAMDirective

使用RAMDirective,您可以指定是否要映射的随机存取存储器(RAM)模块在FPGA仿真软件模型RAM内存块。金宝app你可以等大型内存块地图从家庭和M144k Xilinx第四的®家庭。指定这些内存块RAMDirective值在你设计的基础上,合成工具。

合成工具 RAM样式属性 RAMDirective值
第四的 ramstyle

逻辑| M9K | M10K | M20K | M144K | MLAB

赛灵思公司 ram_style

块| |注册|超分布

微芯片 syn_ramstyle

block_ram |注册| lsram | uram

该设置指定一个值时,高密度脂蛋白编码器生成一个ramstyle属性在HDL代码。该属性指定的内存单元的类型你想要合成工具时使用推断内存块在你的设计。

当你不指定一个值为该设置,高密度脂蛋白编码器不生成ramstyle属性在HDL代码。合成工具决定的类型推断内存映射的内存块模型。

设置RAMDirective内存块

高密度脂蛋白公羊图书馆,除了双速率双端口RAM,你可以指定RAMDirective房地产对于所有其他内存块。

设置RAMDirective一个内存块的HDL块属性对话框:

  1. 右键单击该内存块。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. RAMDirective属性,指定表中所列的值。

你也可以设置RAMDirective通过使用hdlset_param函数。

hdlset_param (< ram_block_name >,“RAMDirective”, < attribute_value >);

在MATLAB中指定这些属性®高密度脂蛋白工作流、使用RAMDirective参数值对hdl.RAM实例化。设置该属性,使用这个命令:

hRam =高密度脂蛋白。RAM (“RAMType”、“单端口内存”,“RAMDirective”,“超”);

例如,生成一个高密度脂蛋白属性映射内存块在你的模型块内存。一个块内存FPGA是一个专用的内存单元。大小的块公羊4 kb,8 kb,16 kb,32 kb

绘制你的内存块块内存:

  • 指定合成工具。你必须Xilinx设备包含目标块内存资源。如果目标设备不包含块公羊,合成工具忽略该属性和可能推断出RAM作为分布式公羊或查找表(附近地区)片。

  • 进入RAMDirective值为你的仿真软件内存金宝app块在高密度脂蛋白块属性。

  • 生成HDL代码为您的模型。

这个生成的硬件描述语言(VHDL)显示了代码ram_style属性设置为:

属性ram_style:字符串;属性ram_style内存:信号是“块”;

这个生成的Verilog代码显示了ram_style属性设置为:

(* ram_style = "块" *)

依赖

当使用RAMDirective财产,确保为您的设计选择合成工具。

ResetType

使用ResetType块参数生成抑制复位逻辑。

ResetType价值 描述
默认的

生成复位逻辑。

没有一个

不产生复位逻辑。

重置不应用于生成的寄存器。因此,不匹配模型和生成的代码之间发生的一些样品在初始阶段,注金宝app册时没有完全加载。

为了避免试验台错误在初始阶段,确定所需的样本数量完全加载寄存器。然后,设置忽略输出数据检查(样本)相应的选项。另请参阅忽略输出数据检查(样本)试验台的刺激和输出参数

您可以指定ResetType为以下模块:

  • 图表

  • 卷积Deinterleaver

  • 卷积的分界

  • 延迟

  • 延迟(DSP系统工具箱™)

  • 一般多路复用Deinterleaver

  • 一般多路分界

  • MATLAB函数

  • MATLAB系统

  • 内存

  • 利用延迟

  • 真值表

  • 单位延迟启用

  • 单位延迟

在MATLAB函数块复位逻辑优化

当您设置ResetType没有一个对于一个MATLAB函数块,高密度脂蛋白编码器不为MATLAB中的持久性变量生成复位逻辑代码。

然而,如果你指定块,其他优化编码器可能插入寄存器使用复位逻辑。编码器不抑制复位逻辑一代对这些寄存器。因此,如果你设置ResetType没有一个连同其他块优化,生成的代码可能有复位端口在顶层。

如何抑制复位逻辑代

抑制复位逻辑生成块使用UI:

  1. 右键单击并选择HDL代码>高密度脂蛋白块属性

  2. ResetType中,选择没有一个

抑制复位逻辑生成,在命令行,输入:

hdlset_param (path_to_block“ResetType”,“没有一个”)

例如,抑制复位逻辑单元延迟块的生成,UnitDelay1在一个子系统,mySubsys在命令行输入:

hdlset_param (‘mySubsys / UnitDelay1’、‘ResetType’,‘没有’);

指定同步或异步复位

指定一个同步或异步复位,使用ResetType模型级参数。有关详细信息,请参见重置类型重置设置和参数

SerialPartition

使用这个参数在最小/最大块指定分区的串行级联结构。默认设置使用最小数量的分区。

产生这
架构……
设置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

使用SharingFactor指定的数量的功能与资源映射到一个共享资源。缺省值是0。看到资源共享

SoftReset

使用SoftReset块参数指定是否要生成hardware-friendly同步复位逻辑,或当地复位逻辑仿真软件模拟相匹配的行为。金宝app这个属性是可用的单位延迟可重调块或单位延迟启用复位块。

SoftReset价值 描述
(默认)

生成本地复位逻辑仿真软件模拟相匹配的行为。金宝app

生成同步复位逻辑块。该选项生成的代码更高效的合成,但不匹配仿真软件仿真的行为。金宝app

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;

StreamingFactor

并行数据路径,或向量,转变成系列,标量数据路径time-multiplexing串行数据路径和共享硬件资源。默认是0,实现完全并行数据路径。另请参阅流媒体

UsePipelines

您可以使用此模式产品互惠模式。这个属性设置时可用高密度脂蛋白建筑块ShiftAdd。此体系结构使用一个不复原的除法算式执行多个转变和添加操作来计算除法。的ShiftAdd体系结构提供了改进的精度比牛顿迭代逼近方法。

当你使用ShiftAdd架构,您可以使用UsePipelines实现参数指定是否使用一个管线式或爆炸的实现不复原的部门。

UsePipelines设置 映射的行为

(默认)

使用一个管线式不复原的移位和加法运算的实现互惠块。这个设置增加了更多的延迟你的设计,但达到一个更高的最高目标FPGA时钟频率设备。管道插入的数量匹配算法的迭代次数要求计算商或互惠的。

使用一个爆炸不复原的移位和加法运算的实现互惠块。这个设置不会延迟添加到您的设计。部门和互惠是资源密集型操作,实现更高的目标FPGA时钟频率,设置UsePipelines

设置UsePipelines分裂和互惠的街区

设置UsePipelines一个子系统的HDL块属性对话框:

  1. 右键单击该子系统。

  2. 选择HDL代码>高密度脂蛋白块属性

  3. UsePipelines中,选择

设置UsePipelines从命令行块,使用hdlset_param。例如,关闭UsePipelines对于一个块内的一个子系统,my_dut:

hdlset_param (“my_dut /鸿沟”,“UsePipelines”,“关闭”);
另请参阅hdlset_param

UseRAM

UseRAM实现参数允许使用基于ram的映射块而不是映射到一个移位寄存器。

UseRAM设置 映射的行为

延迟映射到移位寄存器在生成的HDL代码,除了一种情况。有关详细信息,请参见流和分布式管道的影响

延迟映射到一个双端口RAM块当下列条件为真时:

  • 延迟的初始值是零。

  • 延迟块没有外部复位或启用端口。

  • 延迟的长度> 4。

  • 延迟后的数字和数据类型属性:

    • (a)与non-floating-point真正的标量数据类型(如整数,签署无符号整数,不动点,或布尔)

    • (b)复杂的标量使用non-floating-point数据类型的实部和虚部

    • (c)向量,其中每个元素是(a)或(b)

  • RAMSize大于或等于RAMMappingThreshold价值。RAMSize是产品DelayLength *字* ComplexLength

    • DelayLength是延迟,延迟块指定的数量。

    • 的比特数表示的数据类型。

    • ComplexLength是2对复杂信号;否则1。

如果是假的任何条件,延迟映射到移位寄存器在HDL代码,除非它与其他延迟合并映射到一个内存。有关更多信息,请参见多个延迟映射到内存

这个实现参数是可用的延迟块离散模型库和金宝app延迟(DSP系统工具箱)块DSP系统工具箱信号操作库。

多个延迟映射到内存

高密度脂蛋白编码器几个相等长度的延迟也可以合并成一个延迟,然后合并延迟映射到单个内存。这种优化提供了以下好处:

  • 增加了一个内存的占用

  • 地址生成逻辑的共享,减少重复相同的HDL代码

  • 映射的延迟时一只公羊个人延迟不满足阈值

下面的规则控制多个延迟是否可以合并成一个延迟:

  • 延迟必须:

    • 在相同层次的子系统。

    • 样品使用相同的编译时间。

    • UseRAM设置为,或者是由流或资源共享。

    • 有相同的ResetType不能设置没有一个

  • 合并后的总字长延期不能超过128位。

  • RAMSize合并后的延迟大于或等于RAMMappingThreshold价值。RAMSize是产品DelayLength *字* VectorLength * ComplexLength

    • DelayLength延迟的总数。

    • 的比特数表示的数据类型合并延迟。

    • VectorLength是在一个向量的元素数量。VectorLength1是一个标量延迟。

    • ComplexLength2对于复杂的延误;否则1。

多个延迟映射块RAM的例子

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

警告

VariablesToPipeline不推荐。使用coder.hdl.pipeline代替。

VariablesToPipeline参数允许您插入一个流水线寄存器输出的一个或多个MATLAB变量。指定一个变量列表作为特征向量,用空格分开的变量。

另请参阅管道MATLAB表达式