文档

原生浮点的延迟考虑

HDL Coder™原生浮点技术可以从您的浮点设计生成HDL代码。原生浮点运算符有延迟。当您生成HDL代码时,代码生成器会计算出这种延迟,并添加匹配的延迟来平衡并行路径。

查看浮点运算符的延迟时间

打开hdlcoder_nfp_delay_allocation万博1manbetx仿真软件™模型。该模型使用数据类型并计算平方根。该模型有一个并行路径来说明代码生成器如何平衡延迟。

load_system (“hdlcoder_nfp_delay_allocation”) open_system (“hdlcoder_nfp_delay_allocation / DUT”

生成HDL代码:

  1. 右键单击DUT子系统和选择HDL代码>为子系统生成HDL

  2. 要查看生成HDL代码后生成的模型,在命令行上输入gm_hdlcoder_nfp_delay_allocation

NFP√6block是与模型中的根号块对应的浮点运算符,其延迟为28.代码生成器确定这个延迟,并添加一个长度匹配的延迟28在平行路径上。要查看平方根操作的延迟时间,双击NFP√6块。的延迟的长度Sqrt_pd1块对应于操作符延迟。

您可以自定义设计的延迟。使用自定义延迟设置来设计延迟和吞吐量之间的权衡。然后,您可以优化目标FPGA设备上的设计实现,以获得面积和速度。使用以下命令自定义延迟:

  • 延迟策略设置:指定将整个Simulink™模型或模型中的单个块映射为浮点运算符的最大、最小或零延迟。万博1manbetx

  • 过采样系数:增加过采样因子以更快的时钟速率运行设计,并利用浮点运算符的延迟吸收时钟速率管道。

  • 模型中的延迟块:如果您的Simulink模型有延迟,HDL Coder万博1manbetx™可以通过本机浮点实现吸收部分或全部延迟。

指定延迟策略设置

您可以为整个模型或模型中的单个块指定延迟策略设置。

为模型指定此设置:

  1. hdlcoder_nfp_delay_allocation模型,右键单击DUT子系统和选择HDL代码> HDL编码器属性

  2. HDL代码生成>全局设置>浮点目标选项卡,图书馆中,选择本机浮点数,然后是延迟策略中,选择马克斯最小值,或

从命令行指定此设置:

  • 创建一个hdlcoder。FloatingPointTargetConfig对象来获取本机浮点数hdlcoder.createFloatingPointTargetConfig函数。

nfpconfig = hdlcode . createfloatingpointtargetconfig (“NATIVEFLOATINGPOINT”);hdlset_param (“hdlcoder_nfp_delay_allocation”“FloatingPointTargetConfiguration”, nfpconfig);
  • 属性指定延迟策略LatencyStrategy财产nfpconfig对象。

nfpconfig.LibrarySettings.LatencyStrategy =“马克斯”
nfpconfig = FloatingPointTargetConfig属性:Library: 'NativeFloatingPoint' LibrarySettings: [1x1 fpconfig. txt]NFPLatencyDrivenMode] IPConfig: [1x1 hdlcode . floatingpointtargetconfig .IPConfig]

对于Simulink™模型中的某些块,您可以有选择地自万博1manbetx定义延迟策略。要了解如何为块指定延迟策略,请参见LatencyStrategy

指定过采样因子

在以数据速率设计Simulink™模型中的块时,请指定万博1manbetx过采样因子大于1。的过采样因子以更快的时钟速率插入管道寄存器,从而提高时钟频率并减少区域使用。要了解有关时钟速率流水线的更多信息,请参见时钟速率流水线

来看看效果过采样因子在模型上,在hdlcoder_nfp_delay_allocation模型:

  1. 添加一个延迟块延迟的长度1在Sqrt块的输出。

  2. 右键单击DUT并选择HDL代码> HDL编码器属性

  3. HDL代码生成>全局设置窗格中,输入值为40过采样因子

生成HDL代码后,生成的模型显示NFP√6块以比你模型中的根号块快40倍的时钟速率运行。的NFP√6block吸收了Simulink™模型中的Delay块。万博1manbetx延迟块现在以时钟速率运行。这种实现通过吸收额外的延迟来节省面积,并通过以更快的时钟速率运行来改善时间。

在模型中吸收延迟块

如果您的Simu万博1manbetxlink™模型具有足够的延迟块延迟的长度与操作符相邻,HDL Coder™吸收延迟作为操作符延迟的一部分。

注意:要吸收延迟,请确保将相邻块的延迟分组。

如果延迟的长度等于浮点运算符的延迟,HDL Coder™吸收延迟并且不引入任何额外的延迟。

hdlcoder_nfp_delay_allocation模型:

  1. 双击根号块输出处的延迟块,并更改延迟的长度28

  2. 生成的HDL代码DUT子系统。

  3. 在生成HDL代码之后,在命令行输入gm_hdlcoder_nfp_delay_allocation打开生成的模型。

在生成的模型中,可以看到NFP√6块吸收了原始模型中与根号块相邻的延迟块。发生这种延迟吸收是因为操作符延迟等于延迟的长度.因此,代码生成器避免了模型中的额外延迟。

如果延迟的长度HDL Coder™吸收可用的延迟,并通过添加匹配的延迟来平衡并行路径。

hdlcoder_nfp_delay_allocation模型:

  1. 双击根号块输出处的延迟块,并更改延迟的长度21

  2. 生成的HDL代码DUT子系统。

  3. 在生成HDL代码之后,在命令行输入gm_hdlcoder_nfp_delay_allocation打开生成的模型。

你可以看到NFP√6块吸收了长度延迟21并添加了匹配的长度延迟7因为平方根运算需要28延迟。

如果延迟长度大于操作符延迟,代码生成器将吸收与延迟相等的一定数量的延迟,并且多余的延迟出现在操作符之外。

hdlcoder_nfp_delay_allocation模型:

  1. 双击根号块输出处的延迟块,并更改延迟的长度34

  2. 生成的HDL代码DUT子系统。

  3. 在生成HDL代码之后,在命令行输入gm_hdlcoder_nfp_delay_allocation打开生成的模型。

NFP√6块吸收了28个延迟,因为平方根操作的延迟为28.的额外延迟6在运算符之外。

另请参阅

||

相关的例子

更多关于

这个话题有用吗?