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

Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文

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

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

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

AMD 器件中的 DSP58 slice 寄存器只包含复位功能,没有置位功能。因此除非必要,应避免围绕乘法器、加法器、计数器或其他可在 DSP58 slice 中实现的逻辑进行置位编码(在施加信号的情况下,逻辑值等于 1)。

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

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

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

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