主要内容

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块属性对话框中获取一个块:

  1. 右键单击块。

  2. 选择HDL代码HDL块属性

  3. 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块属性对话框中获取一个块:

  1. 右键单击块。

  2. 选择HDL代码>HDL块属性

  3. 本机浮点数选项卡,指定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块属性”对话框中设置一个块的句柄不规则值:

  1. 右键单击块。

  2. 选择HDL代码>HDL块属性

  3. 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块属性对话框中获取一个块:

  1. 右键单击块。

  2. 选择HDL代码HDL块属性

  3. 本机浮点数选项卡,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会添加与您指定的值相等的延迟CustomLatencyNFPCustomLatency本机浮点运算符的设置。您可以对本地浮点模式中的某些块使用此设置。若要查看可指定设置的块,请参见NFPCustomLatency

要为模型中的块指定最小延迟选项,请设置参数,LatencyStrategy,“最小值”对于那个块。

要了解如何设置模型级延迟策略设置,请参见原生浮点的延迟考虑

设置定点块的延迟策略

使用定点类型时,可以指定LatencyStrategy对于这些积木。

  • 而且互惠block有ShiftAdd作为HDL架构。

  • √6BlockSqrtFunction作为HDL架构。

  • 三角函数Block函数设置为因为要求因为+ jsin,或量化而且近似法作为CORDIC

在HDL Block Properties对话框中设置一个子系统的延迟策略:

  1. 的工具条上金宝app应用程序选项卡上,选择高密度脂蛋白编码器

  2. 选择块,并在HDL代码选项卡,单击HDL块属性按钮。

  3. 一般选项卡,指定LatencyStrategy.如果你设置LatencyStrategy自定义时,必须为CustomLatency

要从命令行指定块的延迟策略,请使用hdlset_param.的最小延迟时间产品子系统内的块my_dut在Simulin金宝appk模型中my_design

hdlset_param (“my_design / my_dut /产品”“LatencyStategy”“马克斯”
另请参阅hdlset_param

设置浮点块的延迟策略

在HDL Block Properties对话框中设置一个子系统的延迟策略:

  1. 的工具条上金宝app应用程序选项卡上,选择高密度脂蛋白编码器

  2. 选择块,并在HDL代码选项卡,单击HDL块属性按钮。

  3. 本机浮点数选项卡,指定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为这些具有定点类型的块设置。

  • 而且互惠block有ShiftAdd作为HDL架构。

  • √6BlockSqrtFunction作为HDL架构。

  • 三角函数Block函数设置为因为要求因为+ jsin,或量化而且近似法作为CORDIC

设置块的自定义延迟值

从HDL块属性对话框中设置子系统的自定义延迟值:

  1. 的工具条上金宝app应用程序选项卡上,选择高密度脂蛋白编码器

  2. 选择块,并在HDL代码选项卡,单击HDL块属性按钮。

  3. 一般选项卡,设置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块属性对话框中设置子系统的自定义延迟值:

  1. 右键单击块。

  2. 选择HDL代码>HDL块属性

  3. 本机浮点数选项卡,LatencyStrategy中,选择自定义

  4. 属性的值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块属性对话框中为子系统设置自适应管道:

  1. 右键单击块。

  2. 选择HDL代码>HDL块属性

  3. 本机浮点数选项卡,MantissaMultiplyStrategy中,选择继承FullMultiplierPartMultiplierPartAddShift,或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(默认)

计算结果的默认迭代次数国防部而且快速眼动函数本机浮点数模式。对于大整数,此实现可能会导致数值与Simulink模拟结果不匹配。金宝app

64

指定64作为计算迭代次数的结果国防部而且快速眼动函数本机浮点数模式。在这种模式下,对于较大的整数,实现与Simulink仿真结果匹配的概率较高,但会占用更多的硬件资源。金宝app

128

指定128作为计算迭代次数的结果国防部而且快速眼动函数本机浮点数模式。在这种模式下,对于较大的整数,实现与Simulink仿真结果匹配,但是会占用更多的硬件资源金宝app。

为Math函数块设置MaxIterations

设置MaxIterations从HDL块属性对话框中获取一个块:

  1. 右键单击块。

  2. 选择HDL代码>HDL块属性

  3. 本机浮点数选项卡,MaxIterations中,选择3264,或128

若要从命令行为块设置句柄不规则值,请使用hdlset_param.为对象启用自适应管道产品块在子系统内,my_dut在Simulin金宝appk模型中my_design

hdlset_param (“my_design / my_dut /产品”“HandleDenormals”“上”
另请参阅hdlset_param

相关的例子

更多关于