HDL块属性:本机浮点数
概述
块实现参数使您能够控制为特定块实现生成的代码的细节。看到设置和查看HDL模型和块参数学习如何在GUI或命令行中选择块实现和参数。
属性名被指定为字符向量。属性值的数据类型特定于属性。属性中指定的每个块实现参数的语法本机浮点数选项卡的HDL块属性。您可以看到指定参数如何影响生成的代码。
库块的HDL块属性
库块的HDL块属性处理类似于掩码参数。在模型中实例化库块时,该库块的当前HDL块属性将复制到模型中该库块的实例。这些实例的HDL块属性与库块的HDL块属性不同步。也就是说,如果更改库块的HDL块属性,则更改不会传播到已添加到Simulink的库块实例金宝app®模型。如果希望库块的HDL块属性与其在模型中的实例同步,请创建子系统然后把这个方块放在那个里面子系统.驻留在库块中的块的HDL块属性与模型中的相应实例同步。
假设一个库包含子系统块与HDL架构设置为模块
.当您在模型中实例化此块时,块实例使用模块
作为HDL架构。的HDL结构子系统块在库中黑箱
例如,已有的实例子系统块在您的模型中仍然使用模块
作为HDL架构。的实例子系统块从你的模型中的库,新的块实例获得当前HDL块属性的副本,因此使用黑箱
作为HDL架构。的HDL结构子系统块在库中与它的实例在模型中同步,创建一个包装子系统与HDL体系结构,你想在其中子系统.
CheckResetToZero
您可以使用CheckResetToZero属性。国防部而且快速眼动的功能数学函数块在本地浮点模式。如果你有数字一个
而且b
这样商数a / b
是接近一个整数,这个设置处理一个
的整数倍b
, rem(a,b)=0。计算结果与Simulink仿真结果吻合较好。金宝app但是,计算这个结果会使用额外的资源,并增加目标FPGA设备上的面积占用。
例如,对于这些数字集,在启用和禁用时将获得不同的模拟结果CheckResetToZero设置。
CheckResetToZero设置 | 描述 |
---|---|
“上” (默认) |
当你计算的时候国防部或快速眼动的商更接近整数,并且精度大于您所使用的浮点数据类型的两个数字,HDL Coder™添加所需的逻辑来输出的结果国防部或快速眼动当数的商接近整数时为零。 |
“关闭” |
HDL Coder不插入额外的逻辑来计算商数,这节省了目标FPGA设备上的面积。 |
数学函数块的checkresetto0
设置CheckResetToZero从HDL块属性对话框中获取一个块:
右键单击块。
选择HDL代码HDL块属性.
为CheckResetToZero中,选择在或从.
设置CheckResetToZero为数学函数块在子系统内,my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /数学”,“CheckResetToZero”,在')
hdlset_param
.
DivisionAlgorithm
您可以使用DivisionAlgorithm
属性时启用本机浮点数
的模式分Block和数学函数块在互惠模式。
DivisionAlgorithm设置 | 描述 |
---|---|
Radix-2 (默认) |
默认的base -2模式通过在每次迭代中计算商的一位来执行重复减法。 要设计更低的区域使用量,同时权衡延迟,请使用基数-2模式。 |
Radix-4 |
基数-4模式通过在每次迭代中计算商数的两位来执行重复减法。为了计算结果,Radix-4模式使用了Radix-2模式所需迭代次数的一半。 为了设计更低的延迟,同时权衡面积,使用基数-4模式。 |
单精度划分资源利用率和最大时钟频率赛灵思公司Virtex7
DivisionAlgorithm模式 | LatencyStrategy | 延迟 | Fmax | 附近地区 | 寄存器 |
---|---|---|---|---|---|
Radix-2 | 最小值 | 17 | 334.4兆赫 | 1248 | 1011 |
马克斯 | 32 | 454.5兆赫 | 1294 | 1797 | |
Radix-4 | 最小值 | 11 | 245.5兆赫 | 1956 | 865 |
马克斯 | 20. | 453.1兆赫 | 1854 | 1522 |
为数学函数或分割块指定分割算法
指定DivisionAlgorithm从HDL块属性对话框中获取一个块:
右键单击块。
选择HDL代码>HDL块属性.
在本机浮点数选项卡,指定DivisionAlgorithm.
指定DivisionAlgorithm对于命令行中的块,使用hdlset_param
.例如,该命令指定a的base -4模式分块在子系统内,my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /鸿沟”,DivisionAlgorithm’,“Radix-4”)
HandleDenormals
您可以使用HandleDenormals
中支持HDL代码生成的某些块的属性金宝app本机浮点数
模式。非正数是指大小小于尾数中无需前导零即可表示的最小浮点数的数。使用此设置,您可以指定是否希望HDL Coder插入额外的逻辑来处理设计中的非正规数字。有关更多信息,请参见Denormal数字.
HandleDenormals设置 | 描述 |
---|---|
“继承” (默认) |
使用父子系统的句柄规范设置。如果该子系统是最高级别的子系统,则使用模型的句柄非法线设置。 |
“上” |
如果在这些块输入处有非法数,HDL Coder将添加逻辑来规范化非法数。 |
“关闭” |
HDL Coder不会在设计中插入额外的逻辑来处理非正规数字。代码生成器在执行任何计算之前,将非正规值视为零。 |
要启用HandleDenormals
对于模型中的块,设置参数,HandleDenormals
,“上”
对于那个块。
为一个块设置句柄异常
在“HDL块属性”对话框中设置一个块的句柄不规则值:
右键单击块。
选择HDL代码>HDL块属性.
为HandleDenormals中,选择继承,在,或从.
若要从命令行为块设置句柄不规则值,请使用hdlset_param
.为对象启用自适应管道产品块在子系统内,my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,“HandleDenormals”,“上”)
hdlset_param
.
InputRangeReduction
您可以使用InputRangeReduction属性。罪,因为,棕褐色,要求,因为+ jsin的功能三角函数块在本机浮点数
模式。默认情况下,此设置为块启用,并且它假定您的输入范围是无限制的。如果您对块的输入在范围内是有限的(π-π,)
,您的设计不需要逻辑减小输入范围。在这种情况下,您可以禁用此设置,块实现将导致更低的延迟,并在目标硬件上使用更少的资源。当禁用该设置时,生成的模型将包含一个块,用于验证输入是否在范围内有界(π-π,)
如果您有无限的输入,生成的模型将在模拟期间触发断言。
InputRangeReduction设置 | 描述 |
---|---|
“上” (默认) |
假设输入范围是无界的,并插入额外的逻辑以将输入参数范围减小为 |
“关闭” |
假设输入参数在范围内是有界的 |
为三角函数块设置InputRangeReduction
设置InputRangeReduction从HDL块属性对话框中获取一个块:
右键单击块。
选择HDL代码HDL块属性.
在本机浮点数选项卡,InputRangeReduction中,选择在或从.
禁用InputRangeReduction为三角函数块在子系统内,my_trigonometric
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut / my_trigonometric”,...“InputRangeReduction”,”)
hdlset_param
.
LatencyStrategy
您可以使用LatencyStrategy
属性用于支持为定点和浮点类型生成HDL代码的某些块。金宝app使用浮点类型时,请设置浮点IP库来本机浮点数
.对于定点类型,属性指定零延迟、最大延迟或自定义延迟。对于浮点类型,该属性指定块映射到操作符的最小、最大或自定义延迟。
LatencyStrategy设置 | 描述 |
---|---|
“继承” (默认) |
使用父子系统的延迟策略设置。如果该子系统是最高级的子系统,则使用模型的延迟策略设置。 |
“马克斯” |
在代码生成期间,HDL Coder使用本机浮点运算符的最大延迟值。 |
“最小值” |
在代码生成期间,HDL Coder使用本机浮点运算符的最小延迟值。 |
“零” |
在代码生成期间,HDL Coder不会为本机浮点运算符添加任何延迟。 |
“自定义” |
在代码生成期间,HDL Coder会添加与您指定的值相等的延迟CustomLatency或NFPCustomLatency本机浮点运算符的设置。您可以对本地浮点模式中的某些块使用此设置。若要查看可指定设置的块,请参见NFPCustomLatency. |
要为模型中的块指定最小延迟选项,请设置参数,LatencyStrategy
,“最小值”
对于那个块。
要了解如何设置模型级延迟策略设置,请参见原生浮点的延迟考虑.
设置定点块的延迟策略
使用定点类型时,可以指定LatencyStrategy对于这些积木。
在HDL Block Properties对话框中设置一个子系统的延迟策略:
的工具条上金宝app应用程序选项卡上,选择高密度脂蛋白编码器.
选择块,并在HDL代码选项卡,单击HDL块属性按钮。
在一般选项卡,指定LatencyStrategy.如果你设置LatencyStrategy来自定义时,必须为CustomLatency.
要从命令行指定块的延迟策略,请使用hdlset_param
.的最小延迟时间产品子系统内的块my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“马克斯”)
hdlset_param
.
设置浮点块的延迟策略
在HDL Block Properties对话框中设置一个子系统的延迟策略:
的工具条上金宝app应用程序选项卡上,选择高密度脂蛋白编码器.
选择块,并在HDL代码选项卡,单击HDL块属性按钮。
在本机浮点数选项卡,指定LatencyStrategy.如果你设置LatencyStrategy来自定义时,必须为NFPCustomLatency.
有关详细信息,请参见每个块页面的“HDL代码生成”部分。要了解可指定自定义延迟的块,请参见NFPCustomLatency.
要从命令行指定块的延迟策略,请使用hdlset_param
.的最小延迟时间产品子系统内的块my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“最小值”)
hdlset_param
.
CustomLatency
您可以为定点类型的某些块指定自定义延迟。通过使用自定义延迟策略,您可以在时钟频率和功耗之间进行权衡。如果要指定自定义延迟策略,请设置LatencyStrategy来自定义
并为指定值CustomLatency.有关详细信息,请参见每个块页面的“HDL代码生成”部分。
您可以指定CustomLatency为这些具有定点类型的块设置。
设置块的自定义延迟值
从HDL块属性对话框中设置子系统的自定义延迟值:
的工具条上金宝app应用程序选项卡上,选择高密度脂蛋白编码器.
选择块,并在HDL代码选项卡,单击HDL块属性按钮。
在一般选项卡,设置LatencyStrategy来自定义并为指定值CustomLatency.
要从命令行指定块的延迟策略,请使用hdlset_param
.例如,为a指定一个自定义延迟为4产品子系统内的块my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“自定义”) hdlset_param (“my_design / my_dut /产品”,“CustomLatency”4)
hdlset_param
.
NFPCustomLatency
您可以在本机浮点模式中为某些块指定自定义延迟。通过使用自定义延迟策略,您可以在时钟频率和功耗之间进行权衡。如果要指定自定义延迟策略,请设置LatencyStrategy来自定义
并为指定值NFPCustomLatency.可以指定从1到的自定义延迟值马克斯
块的延迟时间。有关浮点运算符的延迟值的详细信息,请参见浮点运算符的延迟值.
您可以指定NFPCustomLatency设置这两个块单
而且双
数据类型。
也可以指定aNFPCustomLatency为这些块设置单
数据类型。
设置块的自定义延迟值
从HDL块属性对话框中设置子系统的自定义延迟值:
右键单击块。
选择HDL代码>HDL块属性.
在本机浮点数选项卡,LatencyStrategy中,选择自定义.
属性的值NFPCustomLatency.
要从命令行指定块的延迟策略,请使用hdlset_param
.例如,为a指定一个自定义延迟为4产品子系统内的块my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“自定义”) hdlset_param (“my_design / my_dut /产品”,“NFPCustomLatency”4)
hdlset_param
.
MantissaMultiplyStrategy
您可以使用MantissaMultiplyStrategy
属性用于支持在本机浮点模式下生成HDL代码的乘法器。金宝app具有此设置的块包括产品,分,数学函数(互惠模式),依此类推。通过使用此设置,您可以指定希望HDL Coder如何为块实现尾数乘法操作。
MantissaMultiplyStrategy设置 | 描述 |
---|---|
“继承” (默认) |
使用父子系统的尾数乘法策略设置。如果该子系统是最高级的子系统,则使用模型的尾数乘策略设置。 |
“FullMultiplier” |
HDL Coder使用乘数器为本机浮点运算符执行尾数乘法操作。乘数器可以利用目标设备上的DSP单元。 |
“PartMultiplierPartAddShift” |
HDL Coder将实现分为两部分。一部分是用乘法器实现的。另一部分是通过加器和移位器的组合实现的。乘法器可以利用目标设备上的DSP单元。加法器和移位器的组合不使用DSP。 |
“NoMultiplierFullAddShift” |
HDL Coder使用加法器和移位器来实现尾数乘法。此选项不利用目标设备上的DSP单元。如果目标设备不包含DSP单元,也可以使用此选项。 |
要使用加法器和移位器实现尾数乘法,请设置MantissaMultiplyStrategy
,“NoMultiplierFullAddShift”
对于那个块。
为一个方块设置尾数相乘策略
从HDL块属性对话框中为子系统设置自适应管道:
右键单击块。
选择HDL代码>HDL块属性.
在本机浮点数选项卡,MantissaMultiplyStrategy中,选择继承,FullMultiplier,PartMultiplierPartAddShift,或NoMultiplierFullAddShift.
要从命令行为块指定尾数乘策略,请使用hdlset_param
.例如,使用加法器和移位器实现尾数乘法产品子系统内的块my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,...“MantissaMultiplyStrategy”,“PartMultiplierPartAddShift”)
hdlset_param
.
MaxIterations
您可以使用MaxIterations
属性。国防部而且快速眼动的功能数学函数块在本机浮点数
模式。如果你有数字一个
而且b
是非常大的整数,你可以增加MaxIterations设置以匹配Simulink仿真结果。金宝app但是,计算这个结果会使用额外的资源,并增加目标FPGA设备上的面积占用。
MaxIterations设置 | 描述 |
---|---|
32 (默认) |
计算结果的默认迭代次数国防部而且快速眼动函数 |
64 |
指定 |
128 |
指定 |
为Math函数块设置MaxIterations
设置MaxIterations从HDL块属性对话框中获取一个块:
右键单击块。
选择HDL代码>HDL块属性.
在本机浮点数选项卡,MaxIterations中,选择32,64,或128.
若要从命令行为块设置句柄不规则值,请使用hdlset_param
.为对象启用自适应管道产品块在子系统内,my_dut
在Simulin金宝appk模型中my_design
:
hdlset_param (“my_design / my_dut /产品”,“HandleDenormals”,“上”)
hdlset_param
.