主要内容

HDL块属性:原生浮点数

概述

块实现参数使您能够控制为特定块实现生成的代码的细节。看到设置和查看HDL模型和块参数了解如何在GUI或命令行中选择块实现和参数。

属性名称指定为字符向量。属性值的数据类型特定于该属性。本节介绍可以在中指定的每个块实现参数的语法本机浮点选项卡的HDL块属性。您可以看到指定参数如何影响生成的代码。

库块的HDL块属性

库块的HDL块属性的处理类似于掩码参数。在模型中实例化库块时,该库块的当前HDL块特性将复制到模型中该块的实例中。这些实例的HDL块属性与库块的HDL块属性不同步。也就是说,如果更改库块的HDL块特性,则更改不会传播到已添加到Simulink的库块实例金宝app®模型。如果您希望库块的HDL块属性与其模型中的实例同步,请创建子系统然后把这个方块放到里面子系统.驻留在库块中的块的HDL块属性与模型中的相应实例同步。

假设一个库包含一个子系统块,将HDL架构设置为模块. 在模型中实例化此块时,块实例使用模块作为HDL架构。的HDL架构子系统Block in the library to黑箱,现有的实例子系统块在你的模型中仍然使用模块作为HDL架构。如果现在添加子系统块,新的块实例将获得当前HDL块属性的副本,并因此使用黑箱作为HDL架构。如果您想要子系统块与模型中的实例同步,创建一个具有您想要的HDL体系结构的包装器子系统子系统

CheckResetToZero

你可以使用CheckResetToZero财产国防部雷姆的功能数学函数块在本机浮点模式。如果你有数字A.B使商a / b接近整数,此设置将A.作为B和快速眼动(a, b) = 0。计算结果与Simulink仿真结果吻合较好。金宝app但是,计算这个结果将使用额外的资源,并增加目标FPGA设备上的区域占用。

例如,对于这些数字集,当启用和禁用时,您将得到不同的模拟结果CheckResetToZero设置。

CheckResetToZero设置 描述
“开”(默认)

当你计算国防部雷姆的两个数的商更接近整数,并且精度大于您使用的浮点数据类型的精度,HDL Coder™添加所需的逻辑来输出的结果国防部雷姆当数的商接近整数时为零。

“关闭”

HDL编码器不插入额外的逻辑来计算商,这节省了目标FPGA设备上的面积。

将数学功能块的CHECKRESET设置为零

设置CheckResetToZero获取HDL块属性对话框中的块:

  1. 右键单击该块。

  2. 选择HDL代码HDL块属性

  3. 对于CheckResetToZero中,选择

设置CheckResetToZero数学函数块在子系统中,我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /数学”,'检查重置为零,'在')
另见hdlset_param

DivisionAlgorithm

你可以使用DivisionAlgorithm属性时启用本机浮点模式块和数学函数设置为倒数模式。

DivisionAlgorithm设置 描述
基2(默认)

默认的基数2模式通过在每次迭代中计算一位商来执行重复减法。

要在权衡延迟的同时设计更低的区域使用,可以结合使用Radix-2模式和LatencyStrategy着手马克斯

基四

Radix-4模式通过在每次迭代中计算商的两位来执行重复的减法。为了计算结果,Radix-4模式使用的迭代次数是Radix-2模式所需的一半。

要在设计低延迟的同时权衡区域,请结合使用Radix-4模式和LatencyStrategy着手马克斯

单精度划分资源利用率和最大时钟频率赛灵思公司Virtex-7

DivisionAlgorithm模式 LatencyStrategy 延迟 Fmax 附近地区 寄存器
基2 最小值 17 334.4兆赫 1248 1011
马克斯 32 454.5兆赫 1294 1797
基四 最小值 11 245.5兆赫 1956 865
马克斯 20. 453.1MHz 1854 1522

为数学函数或除法块指定除法算法

指定DivisionAlgorithm获取HDL块属性对话框中的块:

  1. 右键单击该块。

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

  3. 本机浮点选项卡中,指定DivisionAlgorithm

指定DivisionAlgorithm对于命令行中的代码块,请使用hdlset_param.例如,该命令为a指定Radix-4模式块在子系统中,我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /鸿沟”,算法',“Radix-4”)

HandleDenormals

你可以使用HandleDenormals中支持HDL代码生成的某些块的属性金宝app本机浮点模式。非正数是指大小小于最小浮点数的数,可以在尾数中不带前导零表示。通过此设置,您可以指定是否希望HDL Coder插入额外的逻辑来处理设计中的正常数字。有关更多信息,请参见Denormal数字

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

使用父子系统的句柄反法线设置。如果该子系统是最高级别的子系统,则使用模型的句柄dennormals设置。

“开”

如果在这些块输入处有正规数字,HDL Coder会添加逻辑对这些正规数字进行规范化。

“关闭”

在设计中,HDL编码器不插入额外的逻辑来处理普通数字。在执行任何计算之前,代码生成器将非正规值视为零。

要启用HandleDenormals对于模型中的块,设置参数,HandleDenormals,“开”块。

设置块的句柄反normals

要从“HDL块特性”对话框中设置块的句柄非规范化,请执行以下操作:

  1. 右键单击该块。

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

  3. 对于HandleDenormals中,选择继承,,或

要从命令行设置块的句柄非规范化,请使用hdlset_param. 例如,要为产品块在子系统中,我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /产品”,“HandleDenormals”,“开”)
另见hdlset_param

InputRangeReduction

你可以使用InputRangeReduction财产,因为,棕褐色,要求,因为+ jsin的功能三角函数块在本机浮点模式默认情况下,将为块启用此设置,并假定您的输入范围是无限的。如果块的输入在范围内有界[-pi,pi],您的设计不需要逻辑来减少输入范围。在这种情况下,您可以禁用此设置,并且块实现在目标硬件上产生更低的延迟和使用更少的资源。当您禁用该设置时,生成的模型将包含一个块,用于验证输入是否限定在范围内[-pi,pi]如果您有无界输入,则生成的模型会在模拟期间触发断言。

InputRangeReduction设置 描述
“开”(默认)

假设输入范围是无界的,并插入额外的逻辑将输入参数范围缩小为[-pi,pi]在计算算法之前。

“关闭”

假设输入参数限定在范围内[-pi,pi]并且没有插入额外的逻辑以减少输入参数的范围。这个实现减少了延迟并节省了目标平台上的面积。

设置三角函数块的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库本机浮点. 对于定点类型,该属性指定是要使用零延迟、最大延迟还是自定义延迟。对于浮点类型,该属性指定您希望设计中的块映射到运算符的最小、最大或自定义延迟。

后系统策略设置 描述
“继承”(默认)

使用父子系统的延迟策略设置。如果该子系统是最高级别的子系统,则使用模型的延迟策略设置。

“马克斯”

在代码生成期间,HDL编码器使用本机浮点运算符的最大延迟值。

“最小值”

在代码生成期间,HDL Coder为本机浮点运算符使用最小延迟值。

“零”

在代码生成期间,HDL编码器不会为本机浮点运算符添加任何延迟。

“自定义”

在代码生成期间,HDL Coder添加的延迟等于您指定的值CustomLatencyNFPCustomLatency本机浮点运算符的设置。您可以在本机浮点模式下对某些块使用此设置。要查看可以指定设置的块,请参见NFPCustomLatency

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

要了解如何设置模型级延迟策略设置,请参见使用本机浮点的延迟考虑

设置定点块的延迟策略块

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

  • 互惠块,希夫塔德作为HDL架构。

  • √6块,SQRTF函数作为HDL架构。

  • 三角函数块,函数着手,因为,要求,因为+ jsin,或量化近似法CORDIC

从HDL块属性对话框为子系统设置延迟策略:

  1. 在Simuli金宝appnk toolstrip中的应用程序选项卡上,选择高密度脂蛋白编码器

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

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

要从命令行指定块的延迟策略,请使用hdlset_param. 例如,指定产品分系统内部的块我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“马克斯”)
另见hdlset_param

设置浮点块的延迟策略

从HDL块属性对话框为子系统设置延迟策略:

  1. 在Simuli金宝appnk toolstrip中的应用程序选项卡上,选择高密度脂蛋白编码器

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

  3. 本机浮点选项卡中,指定LatencyStrategy.如果你设置LatencyStrategy自定义,则必须指定NFPCustomLatency

有关详细信息,请参阅每个块页面的“HDL代码生成”部分。要了解可为其指定自定义延迟的块,请参阅NFPCustomLatency

要从命令行指定块的延迟策略,请使用hdlset_param. 例如,指定产品分系统内部的块我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“最小值”)
另见hdlset_param

CustomLatency

您可以为定点类型的某些块指定自定义延迟。通过使用自定义延迟策略,您可以在时钟频率和功耗之间进行权衡。要指定自定义延迟策略,请设置LatencyStrategy风俗并指定值为CustomLatency. 有关详细信息,请参阅每个块页面的“HDL代码生成”部分。

您可以指定CustomLatency用定点类型设置这些块。

  • 互惠块,希夫塔德作为HDL架构。

  • √6块,SQRTF函数作为HDL架构。

  • 三角函数块,函数着手,因为,要求,因为+ jsin,或量化近似法CORDIC

设置块的自定义延迟值

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

  1. 在Simuli金宝appnk toolstrip中的应用程序选项卡上,选择高密度脂蛋白编码器

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

  3. 一般选项卡,设置LatencyStrategy自定义并指定值为CustomLatency

要从命令行指定块的延迟策略,请使用hdlset_param. 例如,要为一个产品分系统内部的块我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /产品”,“LatencyStategy”,“自定义”) hdlset_param (“my_design / my_dut /产品”,“CustomLatency”4)
另见hdlset_param

NFPCustomLatency

可以在本机浮点模式下为某些块指定自定义延迟。通过使用自定义延迟策略,您可以在时钟频率和功耗之间进行权衡。要指定自定义延迟策略,请设置LatencyStrategy自定义并指定值为NFPCustomLatency. 有关详细信息,请参阅每个块页面的“HDL代码生成”部分。

您可以指定NFPCustomLatency设置这些块与两者数据类型。

你也可以指定NFPCustomLatency设置这些块数据类型。

设置块的自定义延迟值

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

  1. 右键单击该块。

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

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

  4. 的值NFPCustomLatency

要从命令行指定块的延迟策略,请使用hdlset_param. 例如,要为一个产品分系统内部的块我的爸爸在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编码器使用乘法器对本机浮点运算符执行尾数乘法运算。乘法器可以利用目标设备上的DSP单元。

“PartMultiplierPartAddShift”

HDL编码器将实现分为两部分。一部分是用乘数实现的。另一部分采用加法器和移位器的组合实现。乘法器可以利用目标设备上的DSP单元。加法器和移位器的组合不使用DSP。

“NoMultiplierFullAddShift”

HDL编码器采用加法器和移位器实现尾数乘法。此选项不使用目标设备上的DSP单元。如果目标设备不包含DSP单元,也可以使用此选项。

要用加法器和移位器实现尾数乘法,设置MantissaMultiplyStrategy,“NoMultiplierFullAddShift”块。

设置块的尾数乘法策略

要从“HDL块属性”对话框为子系统设置自适应管道,请执行以下操作:

  1. 右键单击该块。

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

  3. 本机浮点选项卡,MantissaMultiplyStrategy中,选择继承,FullMultiplier,PartMultiplierPartAddShift,或NoMultiplierFullAddShift

要从命令行指定块的尾数乘法策略,请使用hdlset_param.例如,使用加法器和移位器实现尾数乘法产品分系统内部的块我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /产品”,...“尾数多重系统策略”,“PartMultiplierPartAddShift”)
另见hdlset_param

最大迭代次数

你可以使用最大迭代次数财产国防部雷姆的功能数学函数块在本机浮点模式。如果你有数字A.B如果是非常大的整数,可以增加最大迭代次数设置以匹配Simulink仿真结果。金宝app但是,计算这个结果将使用额外的资源,并增加目标FPGA设备上的区域占用。

MaxIterations设置 描述
32(默认)

要计算的结果的默认迭代次数国防部雷姆作用于本机浮点模式。这种实现可能会导致与大整数的Simulink模拟结果的数值不匹配。金宝app

64

指定64作为计算结果的迭代次数国防部雷姆作用于本机浮点模式。在这种模式下,对于显著较大的整数,实现与Simulink仿真结果匹配的概率更高,但可以使用更多的硬件资源。金宝app

128

指定128作为计算结果的迭代次数国防部雷姆作用于本机浮点模式在这种模式下,实现与大整数的Simulink模拟结果相匹配,但使用更多的硬件资源。金宝app

设置数学函数块的MaxIterations

设置最大迭代次数获取HDL块属性对话框中的块:

  1. 右键单击该块。

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

  3. 本机浮点选项卡,最大迭代次数中,选择32,64,或128

要从命令行设置块的句柄非规范化,请使用hdlset_param. 例如,要为产品块在子系统中,我的爸爸在Simulin金宝appk模型中my_design:

hdlset_param (“my_design / my_dut /产品”,“HandleDenormals”,“开”)
另见hdlset_param

相关实例

更多关于