通过编码实现最优化的 DSP 和算术推断 - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 简体中文

AMD 器件中的 DSP 块可以执行许多不同的功能,包括:

  • 乘法
  • 加法和减法
  • 比较器
  • 计数器
  • 一般逻辑

DSP 块属于高度流水打拍的块,具有多个寄存器阶段,能在降低资源总体功耗的情况下实现高速运行。AMD 建议将准备映射到 DSP48 中的代码完全流水打拍,这样即可利用所有的流水线阶段。为了灵活运用这一额外资源,功能中应避免使用置位条件,这样才能正确映射到该资源。

AMD 器件中的 DSP48 slice 寄存器只包含复位功能,没有置位功能。因此除非必要,应避免围绕乘法器、加法器、计数器或其他可在 DSP48 slice 中实现的逻辑进行置位编码(在施加信号的情况下,逻辑值等于 1)。此外,由于该 DSP slice 只支持同步复位操作,应避免异步复位。如果代码导致置位或异步复位,则会导致面积、性能和功耗等方面的结果不理想。

许多 DSP 设计都非常适合采用 AMD 架构。要充分利用该架构,必须熟悉底层特性和功能,以便设计输入代码能够充分利用这些资源。

DSP48 块使用符号化的算术实现方案。AMD 建议在 HDL 源代码中使用有符号的值进行编码,以便与资源功能实现最佳匹配并实现总体上最有效的映射。如果在代码中使用无符号的总线值,综合工具也许仍然能够使用该资源,但由于需要进行无符号到有符号转换,该组件可能无法实现满位精度。

如果预计目标设计将包含大量加法器,AMD 建议对设计进行评估,以便更好地利用 DSP48 slice 的预加法器和后加法器。例如在使用 FIR 滤波器的情况下,可使用加法器级联来构建脉动型滤波器,而不必使用多重连续加法功能(加法器树)。如果采用对称滤波器,那么可以使用专用预加法器进行评估,以便进一步将该功能整合到数量更少的 LUT、触发器和 DSP slice 中(大多数情况下可减少一半的资源占用)。

如果需要使用加法树,那么 6 输入 LUT 架构可以使用与简单的 2 输入加法同样多的资源来高效地完成三值加法 (A + B + C = D)。这样有助于节约和保存进位逻辑资源。不过在大多数情况下无需使用此类技巧。

在了解这些功能的基础上,就可以提前进行适当的权衡取舍,并体现在 RTL 代码当中,从而从一开始就实现更加顺畅和更加高效的实现方案。在大多数情况下,AMD 建议推断 DSP 资源。

如需了解有关 DSP48 slice 的特性和功能的更多信息以及如何最有效地利用该资源来满足您的设计需求,请参阅 7 系列 DSP48E1 slice 用户指南(UG479) UltraScale 架构 DSP slice 用户指南(UG579)